| New file | 
 |  |  | 
 |  |  | 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; | 
 |  |  |     } | 
 |  |  |  | 
 |  |  | } | 
 |  |  |  |