package com.dy.pipIrrTemp.changeSome; import com.dy.common.util.DateTime; import com.dy.pipIrrGlobal.daoTmp.ChangeMapper; import com.dy.pipIrrGlobal.pojoRm.RmIntakeAmountDay; import com.dy.pipIrrGlobal.pojoRm.RmLossDay; import com.dy.pipIrrGlobal.pojoSt.StIntakeAmountMonth; import com.dy.pipIrrGlobal.pojoSt.StIntakeAmountYear; import com.dy.pipIrrGlobal.pojoSt.StLossMonth; import com.dy.pipIrrGlobal.pojoSt.StLossYear; import com.dy.pipIrrGlobal.voSt.VoIntake; 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.Date; import java.util.List; /** * @Author: liurunyu * @Date: 2024/12/24 8:47 * @Description */ @Slf4j @Service public class ChSomeIntakeLossSv { private ChangeMapper dao; @Autowired private void setDao(ChangeMapper dao){ this.dao = dao; } //////////////////////////////////////// // // 有关日统计 // /////////////////////////////////////// /** * 调整取水口日漏损量统计 * @throws Exception */ public void chIntakeLossDay() throws Exception{ List list = dao.selectAllPrIntakes() ; if(list != null && list.size() > 0){ for(VoIntake vo : list){ List adList = dao.selectOneIntakeAllLossDay(vo.getIntakeId()) ; if(adList != null && adList.size() > 0){ //adList中数据以id升序排列 for(RmLossDay ad : adList){ if(ad.lossAmount != null && ad.lossAmount > StClientAmountConstant.IntakeLossDayFlag){ this.doUpdateOneIntakeLossDay(ad.id, 0.0); } } } } } } @Transactional protected int doUpdateOneIntakeLossDay(Long id, Double loss){ return dao.updateOneIntakeLossDay(id, loss); } //////////////////////////////////////// // // 有关月统计 // /////////////////////////////////////// private static final int DealStartYear = 2024 ; private static final int DealStartMonth = 8 ; private static final String endDayOfMonth(int year, int month){ if(month == 1 || month == 3 || month == 5 || month == 7 || month == 8 || month == 10 || month == 12){ return "31" ; }else{ if(month == 2){ if(DateTime.isLeapYear(year)){ return "29" ; }else{ return "28" ; } }else{ return "30" ; } } } /** * 删除所有取水口月漏损量统计 * @throws Exception */ @Transactional public void deleteAllIntakeLossMonth(){ dao.deleteAllIntakeLossMonth(); } /** * 统计取水口月漏损量 * @throws Exception */ public void statisticsIntakeLossMonth() throws Exception{ int nowYear = Integer.parseInt(DateTime.yyyy()) ; int nowMonth = Integer.parseInt(DateTime.MM()) ; Date startDt ; Date endDt ; List list ; for(int year = DealStartYear; year <= nowYear; year ++){ list = null ; if(year < nowYear){ for(int month = 1 ; month <= 12 ; month ++){ startDt = DateTime.dateFrom_yyyy_MM_dd(year + "-" + month + "-01") ; endDt = DateTime.dateFrom_yyyy_MM_dd(year + "-" + month + "-" + endDayOfMonth(year, month)) ; list = dao.statisticAllIntakeLossMonthFromLossDay(startDt, endDt) ; this.doStatisticsIntakeLossMonth(year, month, list) ; } }else{ for(int month = 1 ; month <= nowMonth ; month ++){ startDt = DateTime.dateFrom_yyyy_MM_dd(year + "-" + month + "-01") ; endDt = DateTime.dateFrom_yyyy_MM_dd(year + "-" + month + "-" + endDayOfMonth(year, month)) ; list = dao.statisticAllIntakeLossMonthFromLossDay(startDt, endDt) ; this.doStatisticsIntakeLossMonth(year, month, list) ; } } } } @Transactional protected void doStatisticsIntakeLossMonth(int year, int month, List list) throws Exception{ if(list != null && list.size() > 0){ for(StLossMonth po : list){ po.year = year ; po.month = month ; dao.saveOneIntakeLossMonth(po) ; } } } //////////////////////////////////////// // // 有关年统计 // /////////////////////////////////////// /** * 删除所有取水口年漏损量统计 * @throws Exception */ @Transactional public void deleteAllIntakeLossYear(){ dao.deleteAllIntakeLossYear(); } /** * 统计取水口月漏损量 * @throws Exception */ public void statisticsIntakeLossYear() throws Exception{ int nowYear = Integer.parseInt(DateTime.yyyy()) ; Date startDt ; Date endDt ; List list ; for(int year = DealStartYear; year <= nowYear; year ++){ list = null ; startDt = DateTime.dateFrom_yyyy_MM_dd(year + "-01-01") ; endDt = DateTime.dateFrom_yyyy_MM_dd(year + "-12-31") ; list = dao.statisticAllIntakeLossYearFromLossDay(startDt, endDt) ; this.doStatisticsIntakeLossYear(year, list) ; } } @Transactional protected void doStatisticsIntakeLossYear(int year, List list) throws Exception{ if(list != null && list.size() > 0){ for(StLossYear po : list){ po.year = year ; dao.saveOneIntakeLossYear(po) ; } } } }