| package com.dy.pipIrrStatistics.intaker; | 
|   | 
| import com.alibaba.fastjson2.JSON; | 
| import com.dy.common.webUtil.QueryResultVo; | 
| import com.dy.pipIrrGlobal.daoRm.RmIntakeAmountDayMapper; | 
| import com.dy.pipIrrGlobal.daoSt.StIntakeAmountMonthMapper; | 
| import com.dy.pipIrrGlobal.voSt.VoDayIntakeAmount; | 
| 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 org.springframework.stereotype.Service; | 
|   | 
| import java.text.ParseException; | 
| import java.util.List; | 
| import java.util.Map; | 
|   | 
| /** | 
|  * @Author: liurunyu | 
|  * @Date: 2024/12/12 16:24 | 
|  * @Description | 
|  */ | 
| @Slf4j | 
| @Service | 
| public class IntakerSv { | 
|   | 
|     @Autowired | 
|     private RmIntakeAmountDayMapper dayDao ; | 
|   | 
|     @Autowired | 
|     private StIntakeAmountMonthMapper monthDao ; | 
|   | 
|   | 
|     /** | 
|      * 统计指定月份各天用水量 | 
|      * @param qo | 
|      * @return | 
|      */ | 
|     public QueryResultVo<List<VoDayIntakeAmount>> amountOfDay(IntakerQo qo) throws ParseException { | 
|         QueryResultVo<List<VoDayIntakeAmount>> rsVo = new QueryResultVo<>() ; | 
|         // 生成查询参数 | 
|         Map<String, Object> params = (Map<String, Object>) PojoUtils.generalize(qo) ; | 
|         // 获取符合条件的记录数 | 
|         Long itemTotal = dayDao.selectIntakeCount4AmountDay(qo.intakeNum) ; | 
|   | 
|         if(itemTotal != null && itemTotal > 0){ | 
|             rsVo.pageSize = qo.pageSize ; | 
|             rsVo.pageCurr = qo.pageCurr ; | 
|             rsVo.calculateAndSet(itemTotal, params); | 
|   | 
|             List<VoDayIntakeAmount> list = dayDao.selectIntakes4AmountDay(params); | 
|             if(list == null || list.size() == 0){ | 
|                 rsVo.obj = list ; | 
|             }else{ | 
|                 String json = JSON.toJSONString(list) ; | 
|                 params.put("intakesJson", json); | 
|   | 
|                 List<VoDayIntakeAmount> list01_05 = dayDao.selectIntakeAmountOfDay01_05(params); | 
|                 if(list01_05 != null && list01_05.size() > 0){ | 
|                     //下面1到31号分了6个查询,原因是在一个查询中,非常慢,不知道什么原因,也许是子查询太多的原因 | 
|                     List<VoDayIntakeAmount> list06_10 = dayDao.selectIntakeAmountOfDay06_10(params); | 
|                     List<VoDayIntakeAmount> list11_15 = dayDao.selectIntakeAmountOfDay11_15(params); | 
|                     List<VoDayIntakeAmount> list16_20 = dayDao.selectIntakeAmountOfDay16_20(params); | 
|                     List<VoDayIntakeAmount> list21_25 = dayDao.selectIntakeAmountOfDay21_25(params); | 
|                     List<VoDayIntakeAmount> list26_31 = dayDao.selectIntakeAmountOfDay26_31(params); | 
|                     this.merge(list01_05, list06_10, list11_15, list16_20, list21_25, list26_31); | 
|                 } | 
|                 rsVo.obj = list01_05 ; | 
|             } | 
|         } | 
|         return rsVo ; | 
|     } | 
|   | 
|     private void merge(List<VoDayIntakeAmount> list01_05, | 
|                        List<VoDayIntakeAmount> list06_10, | 
|                        List<VoDayIntakeAmount> list11_15, | 
|                        List<VoDayIntakeAmount> list16_20, | 
|                        List<VoDayIntakeAmount> list21_25, | 
|                        List<VoDayIntakeAmount> list26_31){ | 
|         for(VoDayIntakeAmount vo01_05 : list01_05){ | 
|             for(VoDayIntakeAmount vo06_10 : list06_10){ | 
|                 if(vo01_05.intakeId.longValue() == vo06_10.intakeId.longValue()){ | 
|                     vo01_05.amount6 = vo06_10.amount6 ; | 
|                     vo01_05.amount7 = vo06_10.amount7 ; | 
|                     vo01_05.amount8 = vo06_10.amount8 ; | 
|                     vo01_05.amount9 = vo06_10.amount9 ; | 
|                     vo01_05.amount10 = vo06_10.amount10 ; | 
|                     break ; | 
|                 } | 
|             } | 
|             for(VoDayIntakeAmount vo11_15 : list11_15){ | 
|                 if(vo01_05.intakeId.longValue() == vo11_15.intakeId.longValue()){ | 
|                     vo01_05.amount11 = vo11_15.amount11 ; | 
|                     vo01_05.amount12 = vo11_15.amount12 ; | 
|                     vo01_05.amount13 = vo11_15.amount13 ; | 
|                     vo01_05.amount14 = vo11_15.amount14 ; | 
|                     vo01_05.amount15 = vo11_15.amount15 ; | 
|                     break ; | 
|                 } | 
|             } | 
|             for(VoDayIntakeAmount vo16_20 : list16_20){ | 
|                 if(vo01_05.intakeId.longValue() == vo16_20.intakeId.longValue()){ | 
|                     vo01_05.amount16 = vo16_20.amount16 ; | 
|                     vo01_05.amount17 = vo16_20.amount17 ; | 
|                     vo01_05.amount18 = vo16_20.amount18 ; | 
|                     vo01_05.amount19 = vo16_20.amount19 ; | 
|                     vo01_05.amount20 = vo16_20.amount20 ; | 
|                     break ; | 
|                 } | 
|             } | 
|             for(VoDayIntakeAmount vo21_25 : list21_25){ | 
|                 if(vo01_05.intakeId.longValue() == vo21_25.intakeId.longValue()){ | 
|                     vo01_05.amount21 = vo21_25.amount21 ; | 
|                     vo01_05.amount22 = vo21_25.amount22 ; | 
|                     vo01_05.amount23 = vo21_25.amount23 ; | 
|                     vo01_05.amount24 = vo21_25.amount24 ; | 
|                     vo01_05.amount25 = vo21_25.amount25 ; | 
|                     break ; | 
|                 } | 
|             } | 
|             for(VoDayIntakeAmount vo26_31 : list26_31){ | 
|                 if(vo01_05.intakeId.longValue() == vo26_31.intakeId.longValue()){ | 
|                     vo01_05.amount26 = vo26_31.amount26 ; | 
|                     vo01_05.amount27 = vo26_31.amount27 ; | 
|                     vo01_05.amount28 = vo26_31.amount28 ; | 
|                     vo01_05.amount29 = vo26_31.amount29 ; | 
|                     vo01_05.amount30 = vo26_31.amount30 ; | 
|                     vo01_05.amount31 = vo26_31.amount31 ; | 
|                     break ; | 
|                 } | 
|             } | 
|         } | 
|     } | 
|   | 
|   | 
|     /** | 
|      * 统计指定月份各月用水量 | 
|      * @param qo | 
|      * @return | 
|      */ | 
|     public QueryResultVo<List<VoMonthAmount>> amountOfMonth(IntakerQo qo) throws ParseException { | 
|         QueryResultVo<List<VoMonthAmount>> rsVo = new QueryResultVo<>() ; | 
|         // 生成查询参数 | 
|         Map<String, Object> params = (Map<String, Object>) PojoUtils.generalize(qo) ; | 
|         // 获取符合条件的记录数 | 
|         Long itemTotal = monthDao.selectIntakeCount4AmountMonth(qo.intakeNum) ; | 
|   | 
|         if(itemTotal != null && itemTotal > 0){ | 
|             rsVo.pageSize = qo.pageSize ; | 
|             rsVo.pageCurr = qo.pageCurr ; | 
|             rsVo.calculateAndSet(itemTotal, params); | 
|   | 
|             List<VoMonthAmount> list = monthDao.selectIntakes4AmountMonth(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.selectIntakeAmountOfMonth01_06(params); | 
|                 if(list01_06 != null && list01_06.size() > 0){ | 
|                     //下面1到12月分了2个查询,原因是在一个查询中,非常慢,不知道什么原因,也许是子查询太多的原因 | 
|                     List<VoMonthAmount> list07_12 = monthDao.selectIntakeAmountOfMonth07_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 ; | 
|                 } | 
|             } | 
|         } | 
|     } | 
| } |