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 list = stClientAmountMonthDao.statisticsByClient(statisticsYear) ; if(list != null && list.size() > 0){ List 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 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; } }