| package com.dy.pipIrrTemp.statistics; | 
|   | 
| import com.dy.common.util.DateTime; | 
| import com.dy.pipIrrGlobal.daoSt.StClientAmountDayMapper; | 
| import com.dy.pipIrrGlobal.daoSt.StClientAmountMonthMapper; | 
| import com.dy.pipIrrGlobal.daoSt.StClientAmountYearMapper; | 
| import com.dy.pipIrrGlobal.pojoSt.StClientAmountYear; | 
| import com.dy.pipIrrGlobal.voSt.VoClientAmountStatistics; | 
| import com.dy.pipIrrTemp.util.StClientAmountConstant; | 
| import lombok.extern.slf4j.Slf4j; | 
| import org.springframework.beans.factory.annotation.Autowired; | 
| import org.springframework.stereotype.Service; | 
| import org.springframework.transaction.annotation.Transactional; | 
|   | 
| import java.util.List; | 
|   | 
| /** | 
|  * @Author: liurunyu | 
|  * @Date: 2024/12/30 09:52 | 
|  * @Description | 
|  */ | 
|   | 
| @Slf4j | 
| @Service | 
| public class StClientAmountYearSv { | 
|   | 
|     protected StClientAmountDayMapper stClientAmountDayDao; | 
|   | 
|     protected StClientAmountMonthMapper stClientAmountMonthDao; | 
|   | 
|     protected StClientAmountYearMapper stClientAmountYearDao; | 
|   | 
|     @Autowired | 
|     private void setDao(StClientAmountDayMapper dao) { | 
|         this.stClientAmountDayDao = dao; | 
|     } | 
|   | 
|     @Autowired | 
|     private void setDao(StClientAmountMonthMapper dao) { | 
|         this.stClientAmountMonthDao = dao; | 
|     } | 
|   | 
|     @Autowired | 
|     private void setDao(StClientAmountYearMapper dao) { | 
|         this.stClientAmountYearDao = dao; | 
|     } | 
|   | 
|     /** | 
|      * 删除所有 | 
|      * @throws Exception | 
|      */ | 
|     public void deleteAllStClientAmountYear() throws Exception { | 
|         stClientAmountYearDao.deleteAll() ; | 
|     } | 
|   | 
|     /** | 
|      * 转存农户年取水量 | 
|      * | 
|      * @throws Exception | 
|      */ | 
|     public void statisticsClientAmountYear() throws Exception { | 
|         //统计到昨天,今天的统计明日零晨定时任务统计 | 
|         Long curY = Long.parseLong(DateTime.yyyy().replaceAll("-", "")); | 
|         Long atYear ; | 
|         for(int[] ym : StClientAmountConstant.yearMonthGrp) { | 
|             atYear = ym[0] + 0L ; | 
|             if(atYear <= curY) { | 
|                 this.doSome(ym[0]); | 
|             } | 
|         } | 
|     } | 
|   | 
|   | 
|     @Transactional | 
|     protected void doSome(Integer statisticsYear){ | 
|         List<VoClientAmountStatistics> list = stClientAmountMonthDao.statisticsByClient(statisticsYear) ; | 
|         if(list != null && list.size() > 0){ | 
|             List<StClientAmountYear> listOfYear = stClientAmountYearDao.selectByYear(statisticsYear) ; | 
|             for(VoClientAmountStatistics vo : list){ | 
|                 StClientAmountYear po = this.getDataOfClient(listOfYear, vo.clientId) ; | 
|                 if(po == null){ | 
|                     po = new StClientAmountYear() ; | 
|                     po.clientId = vo.clientId ; | 
|                     po.year = statisticsYear ; | 
|                 } | 
|                 this.setValue(vo, po); | 
|                 if(po.id == null) { | 
|                     stClientAmountYearDao.insert(po); | 
|                 }else{ | 
|                     stClientAmountYearDao.updateByPrimaryKeySelective(po) ; | 
|                 } | 
|             } | 
|         } | 
|     } | 
|   | 
|   | 
|     private StClientAmountYear getDataOfClient(List<StClientAmountYear> list, Long clientId){ | 
|         if(list != null && list.size() > 0){ | 
|             for(StClientAmountYear vo : list){ | 
|                 if(vo.clientId.longValue() == clientId.longValue()){ | 
|                     //程序逻辑控制上,集合中只有一个对象 | 
|                     return vo ; | 
|                 } | 
|             } | 
|         } | 
|         return null ; | 
|     } | 
|   | 
|     private void setValue(VoClientAmountStatistics vo, StClientAmountYear po){ | 
|         po.amount = vo.amount; | 
|         po.money = vo.money; | 
|         po.times = vo.times; | 
|     } | 
|   | 
| } |