//这是查询时间段内的所有数据的金额总数
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 < = #{page}*#{rows}) where rn > (#{page}-1)*#{rows} </select>