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.pojoSt.StClientAmountMonth; 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 StClientAmountMonthSv { protected StClientAmountDayMapper stClientAmountDayDao; protected StClientAmountMonthMapper stClientAmountMonthDao; @Autowired private void setDao(StClientAmountDayMapper dao) { this.stClientAmountDayDao = dao; } @Autowired private void setDao(StClientAmountMonthMapper dao) { this.stClientAmountMonthDao = dao; } /** * 删除所有 * @throws Exception */ public void deleteAllStClientAmountMonth() throws Exception { stClientAmountMonthDao.deleteAll() ; } /** * 转存农户月取水量 * * @throws Exception */ public void statisticsClientAmountMonth() throws Exception { //统计到昨天,今天的统计明日零晨定时任务统计 Long curYm = Long.parseLong(DateTime.yyyy_MM().replaceAll("-", "")); Long atMonth ; for(int[] ym : StClientAmountConstant.yearMonthGrp) { atMonth = Long.parseLong(ym[0] + "" + (ym[1] < 10?("0" + ym[1]):ym[1]) ) ; if(atMonth <= curYm) { this.doSome(ym[0], ym[1]); } } } @Transactional protected void doSome(Integer statisticsYear, Integer statisticsMonth){ List list = stClientAmountDayDao.statisticsByClient(statisticsYear, statisticsMonth) ; if(list != null && list.size() > 0){ List listOfMonth = stClientAmountMonthDao.selectByYear(statisticsYear) ; for(VoClientAmountStatistics vo : list){ StClientAmountMonth po = this.getDataOfClient(listOfMonth, vo.clientId) ; if(po == null){ po = new StClientAmountMonth() ; po.clientId = vo.clientId ; po.year = statisticsYear ; } this.setValue(statisticsMonth, vo, po); if(po.id == null) { stClientAmountMonthDao.insert(po); }else{ stClientAmountMonthDao.updateByPrimaryKeySelective(po) ; } } } } private StClientAmountMonth getDataOfClient(List list, Long clientId){ if(list != null && list.size() > 0){ for(StClientAmountMonth vo : list){ if(vo.clientId.longValue() == clientId.longValue()){ //程序逻辑控制上,集合中只有一个对象 return vo ; } } } return null ; } private void setValue(Integer statisticsMonth, VoClientAmountStatistics vo, StClientAmountMonth po){ switch (statisticsMonth) { case 1: po.amount1 = vo.amount; po.money1 = vo.money; po.times1 = vo.times; break; case 2: po.amount2 = vo.amount; po.money2 = vo.money; po.times2 = vo.times; break; case 3: po.amount3 = vo.amount; po.money3 = vo.money; po.times3 = vo.times; break; case 4: po.amount4 = vo.amount; po.money4 = vo.money; po.times4 = vo.times; break; case 5: po.amount5 = vo.amount; po.money5 = vo.money; po.times5 = vo.times; break; case 6: po.amount6 = vo.amount; po.money6 = vo.money; po.times6 = vo.times; break; case 7: po.amount7 = vo.amount; po.money7 = vo.money; po.times7 = vo.times; break; case 8: po.amount8 = vo.amount; po.money8 = vo.money; po.times8 = vo.times; break; case 9: po.amount9 = vo.amount; po.money9 = vo.money; po.times9 = vo.times; break; case 10: po.amount10 = vo.amount; po.money10 = vo.money; po.times10 = vo.times; break; case 11: po.amount11 = vo.amount; po.money11 = vo.money; po.times11 = vo.times; break; case 12: po.amount12 = vo.amount; po.money12 = vo.money; po.times12 = vo.times; break; } } }