//这是查询时间段内的所有数据的金额总数
  public
JSONArray statistics(Date stateTime,Date endTime) throws CRUDException, ParseException { SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd"); if(stateTime==null){ //判断是否给出指定时间段 Cath tempCath = cathMapper.findMin();   //查询数据库中第一条处理的数据 stateTime = tempCath.getDateTime(); //如果没给开始时间,就将数据库中最开始那一条数据的处理时间赋值给开始时间 } if(endTime==null){ endTime = new Date(); //如果没给截止时间,就将当前时间赋值给截止时间 } String sTime = sdf.format(stateTime); String eTime = sdf.format(endTime); CashierType cashierType = new CashierType(); List<CashierType> typeList = cashierTypeMapper.findAll(cashierType); JSONArray jsonArray = new JSONArray(); //简单的json,没什么好说的 for(CashierType temp : typeList){ JSONObject tempObj = new JSONObject(); tempObj.put("payId", temp.getId()); tempObj.put("stateTime", sTime); tempObj.put("endTime", eTime); tempObj.put("payType", temp.getName()); tempObj.put("sumTotal", cathMapper.statistics(temp.getId(),sTime,eTime)); //统计时间段内所有数据的金额总数 jsonArray.add(tempObj); } return jsonArray; }

  //这是查询对应的数据列表
  public
List<Cath> findDetails(String stateTime,String endTime,Cath cath) throws CRUDException{ try{ List<Cath> cList = cathMapper.findList(cath); SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd"); Date staTime = sdf.parse(stateTime); Date enTime = sdf.parse(endTime); int sTime = Integer.parseInt(sdf.format(staTime)); int eTime = Integer.parseInt(sdf.format(enTime)); if(sTime>eTime){ //比较传进来的两个时间大小 int temp = 0; temp = sTime; sTime = eTime; eTime = temp; } List<Cath> delList = new ArrayList<Cath>(); //这是clist.removeAll(delList)中移除的list for(Cath temp : cList){ int cathTime = Integer.parseInt(sdf.format(temp.getDateTime())); if(cathTime<sTime||cathTime>eTime){ //数据中的处理时间不在传进来的两个时间之间,就把这条数据放在移除的list中 delList.add(temp); } } cList.removeAll(delList); //将cList中和delList数据一样的移除出cList ,这样得到的cList就是我们需要的list集合了 return cList; }catch(Exception e){ e.printStackTrace(); return null; } }

一开始查找的结果:

点击详情查看对应的数据:

输出时间段然后查找的结果:

同样的查看他的对应数据:

 

附上对应的sql:

  <!-- 数据统计 -->
    <select id="statistics" resultType="Integer">
        select COALESCE(sum(t.money),0) from T_CATH t
        <where>
            t.DATE_TIME between to_date(#{param2},'yyyy-mm-dd') and to_date(#{param3},'yyyy-mm-dd') //在之前已经给两个时间赋值,所以可以不用判断是否为空
            <if test="param1 != null and param1 != ''">
            AND t.PAYMENT_TYPE = #{param1,jdbcType=VARCHAR}
            </if>
        </where>
    </select>
    
    <!-- 查询第一个处理的数据 -->
    <select id="findMin" resultType="com.seeyoui.kensite.elder.finance.cath.domain.Cath">
        select <include refid="tableColumns"/>
        from T_CATH T where T.DATE_TIME = (select min(c.date_time) from t_cath c )
    </select>
    
    <!-- 查询数据集合 -->
    <select id="findList" resultType="com.seeyoui.kensite.elder.finance.cath.domain.Cath">
        select * from(select T.*,rownum rn from(
            SELECT
            <include refid="tableColumns"/>
            FROM T_CATH T
            <include refid="whereStr"/>
            <include refid="orderBy"/>
        ) T WHERE rownum &lt; = #{page}*#{rows}) where rn &gt; (#{page}-1)*#{rows}
    </select>

 

posted on 2017-06-30 17:15  云破月丶  阅读(1845)  评论(0编辑  收藏  举报