|  |  | 
 |  |  | import com.alibaba.fastjson2.JSON; | 
 |  |  | import com.dy.common.webUtil.QueryResultVo; | 
 |  |  | import com.dy.pipIrrGlobal.daoRm.RmLossDayMapper; | 
 |  |  | import com.dy.pipIrrGlobal.daoSt.StLossMonthMapper; | 
 |  |  | import com.dy.pipIrrGlobal.voSt.VoDayLoss; | 
 |  |  | import com.dy.pipIrrGlobal.voSt.VoMonthAmount; | 
 |  |  | import lombok.extern.slf4j.Slf4j; | 
 |  |  | import org.apache.dubbo.common.utils.PojoUtils; | 
 |  |  | import org.springframework.beans.factory.annotation.Autowired; | 
 |  |  | 
 |  |  | import java.text.ParseException; | 
 |  |  | import java.util.List; | 
 |  |  | import java.util.Map; | 
 |  |  | import java.util.Optional; | 
 |  |  |  | 
 |  |  | /** | 
 |  |  |  * @Author: liurunyu | 
 |  |  | 
 |  |  | public class LossSv { | 
 |  |  |  | 
 |  |  |     @Autowired | 
 |  |  |     private RmLossDayMapper rmLossDayMapper ; | 
 |  |  |     private RmLossDayMapper dayDao; | 
 |  |  |  | 
 |  |  |     @Autowired | 
 |  |  |     private StLossMonthMapper monthDao; | 
 |  |  |  | 
 |  |  |     /** | 
 |  |  |      * 统计指定月份各天漏损量 | 
 |  |  | 
 |  |  |         // 生成查询参数 | 
 |  |  |         Map<String, Object> params = (Map<String, Object>) PojoUtils.generalize(qo) ; | 
 |  |  |         // 获取符合条件的记录数 | 
 |  |  |         Long itemTotal = rmLossDayMapper.selectIntakeCount4LossDay(qo.intakeNum) ; | 
 |  |  |         Long itemTotal = dayDao.selectIntakeCount4LossDay(qo.intakeNum) ; | 
 |  |  |  | 
 |  |  |         if(itemTotal != null && itemTotal > 0){ | 
 |  |  |             rsVo.pageSize = qo.pageSize ; | 
 |  |  |             rsVo.pageCurr = qo.pageCurr ; | 
 |  |  |             rsVo.calculateAndSet(itemTotal, params); | 
 |  |  |  | 
 |  |  |             List<VoDayLoss> list = rmLossDayMapper.selectIntakes4LossDay(params); | 
 |  |  |             List<VoDayLoss> list = dayDao.selectIntakes4LossDay(params); | 
 |  |  |             if(list == null || list.size() == 0){ | 
 |  |  |                 rsVo.obj = list ; | 
 |  |  |             }else{ | 
 |  |  |                 String json = JSON.toJSONString(list) ; | 
 |  |  |                 params.put("intakesJson", json); | 
 |  |  |  | 
 |  |  |                 List<VoDayLoss> list01_05 = rmLossDayMapper.selectLossAmountOfDay01_05(params); | 
 |  |  |                 List<VoDayLoss> list01_05 = dayDao.selectLossAmountOfDay01_05(params); | 
 |  |  |                 if(list01_05 != null && list01_05.size() > 0){ | 
 |  |  |                     //下面1到31号分了6个查询,原因是入一个查询中,非常慢,不知道什么原因,也许是子查询太多的原因 | 
 |  |  |                     List<VoDayLoss> list06_10 = rmLossDayMapper.selectLossAmountOfDay06_10(params); | 
 |  |  |                     List<VoDayLoss> list11_15 = rmLossDayMapper.selectLossAmountOfDay11_15(params); | 
 |  |  |                     List<VoDayLoss> list16_20 = rmLossDayMapper.selectLossAmountOfDay16_20(params); | 
 |  |  |                     List<VoDayLoss> list21_25 = rmLossDayMapper.selectLossAmountOfDay21_25(params); | 
 |  |  |                     List<VoDayLoss> list26_31 = rmLossDayMapper.selectLossAmountOfDay26_31(params); | 
 |  |  |                     //下面1到31号分了6个查询,原因是在一个查询中,非常慢,不知道什么原因,也许是子查询太多的原因 | 
 |  |  |                     List<VoDayLoss> list06_10 = dayDao.selectLossAmountOfDay06_10(params); | 
 |  |  |                     List<VoDayLoss> list11_15 = dayDao.selectLossAmountOfDay11_15(params); | 
 |  |  |                     List<VoDayLoss> list16_20 = dayDao.selectLossAmountOfDay16_20(params); | 
 |  |  |                     List<VoDayLoss> list21_25 = dayDao.selectLossAmountOfDay21_25(params); | 
 |  |  |                     List<VoDayLoss> list26_31 = dayDao.selectLossAmountOfDay26_31(params); | 
 |  |  |                     this.merge(list01_05, list06_10, list11_15, list16_20, list21_25, list26_31); | 
 |  |  |                 } | 
 |  |  |                 rsVo.obj = list01_05 ; | 
 |  |  | 
 |  |  |                 } | 
 |  |  |             } | 
 |  |  |         } | 
 |  |  |  | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |  | 
 |  |  |     /** | 
 |  |  |      * 统计指定月份各月漏损量 | 
 |  |  |      * @param qo | 
 |  |  |      * @return | 
 |  |  |      */ | 
 |  |  |     public QueryResultVo<List<VoMonthAmount>> lossAmountOfMonth(LossQo qo) throws ParseException { | 
 |  |  |         QueryResultVo<List<VoMonthAmount>> rsVo = new QueryResultVo<>() ; | 
 |  |  |         // 生成查询参数 | 
 |  |  |         Map<String, Object> params = (Map<String, Object>) PojoUtils.generalize(qo) ; | 
 |  |  |         // 获取符合条件的记录数 | 
 |  |  |         Long itemTotal = monthDao.selectIntakeCount4LossMonth(qo.intakeNum) ; | 
 |  |  |  | 
 |  |  |         if(itemTotal != null && itemTotal > 0){ | 
 |  |  |             rsVo.pageSize = qo.pageSize ; | 
 |  |  |             rsVo.pageCurr = qo.pageCurr ; | 
 |  |  |             rsVo.calculateAndSet(itemTotal, params); | 
 |  |  |  | 
 |  |  |             List<VoMonthAmount> list = monthDao.selectIntakes4LossMonth(params); | 
 |  |  |             if(list == null || list.size() == 0){ | 
 |  |  |                 rsVo.obj = list ; | 
 |  |  |             }else{ | 
 |  |  |                 String json = JSON.toJSONString(list) ; | 
 |  |  |                 params.put("intakesJson", json); | 
 |  |  |  | 
 |  |  |                 List<VoMonthAmount> list01_06 = monthDao.selectLossAmountOfMonth01_06(params); | 
 |  |  |                 if(list01_06 != null && list01_06.size() > 0){ | 
 |  |  |                     //下面1到12月分了2个查询,原因是在一个查询中,非常慢,不知道什么原因,也许是子查询太多的原因 | 
 |  |  |                     List<VoMonthAmount> list07_12 = monthDao.selectLossAmountOfMonth07_12(params); | 
 |  |  |                     this.merge(list01_06, list07_12); | 
 |  |  |                 } | 
 |  |  |                 rsVo.obj = list01_06 ; | 
 |  |  |             } | 
 |  |  |         } | 
 |  |  |         return rsVo ; | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |     private void merge(List<VoMonthAmount> list01_06, | 
 |  |  |                        List<VoMonthAmount> list07_12){ | 
 |  |  |         for(VoMonthAmount vo01_06 : list01_06){ | 
 |  |  |             for(VoMonthAmount vo07_12 : list07_12){ | 
 |  |  |                 if(vo01_06.intakeId.longValue() == vo07_12.intakeId.longValue()){ | 
 |  |  |                     vo01_06.month7 = vo07_12.month7 ; | 
 |  |  |                     vo01_06.month8 = vo07_12.month8 ; | 
 |  |  |                     vo01_06.month9 = vo07_12.month9 ; | 
 |  |  |                     vo01_06.month10 = vo07_12.month10 ; | 
 |  |  |                     vo01_06.month11 = vo07_12.month11 ; | 
 |  |  |                     vo01_06.month12 = vo07_12.month12 ; | 
 |  |  |                     break ; | 
 |  |  |                 } | 
 |  |  |             } | 
 |  |  |         } | 
 |  |  |     } | 
 |  |  | } |