From 4513ef24bf9b188c2a77d6ce94f1a6b7e9ebf0e6 Mon Sep 17 00:00:00 2001 From: zuoxiao <470321431@qq.com> Date: 星期日, 27 四月 2025 20:40:19 +0800 Subject: [PATCH] fix(irrigatePlan): 修正灌溉计划开始时间逻辑 --- pipIrr-platform/pipIrr-web/pipIrr-web-temp/src/main/java/com/dy/pipIrrTemp/changeSome/ChSomeIntakeAmountSv.java | 292 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 292 insertions(+), 0 deletions(-) diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-temp/src/main/java/com/dy/pipIrrTemp/changeSome/ChSomeIntakeAmountSv.java b/pipIrr-platform/pipIrr-web/pipIrr-web-temp/src/main/java/com/dy/pipIrrTemp/changeSome/ChSomeIntakeAmountSv.java new file mode 100644 index 0000000..f7c8286 --- /dev/null +++ b/pipIrr-platform/pipIrr-web/pipIrr-web-temp/src/main/java/com/dy/pipIrrTemp/changeSome/ChSomeIntakeAmountSv.java @@ -0,0 +1,292 @@ +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.pojoSt.StIntakeAmountMonth; +import com.dy.pipIrrGlobal.pojoSt.StIntakeAmountYear; +import com.dy.pipIrrGlobal.voSt.VoIntake; +import com.dy.pipIrrGlobal.voTmp.VoRmIntakeAmountDay; +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/14 9:25 + * @Description + */ + + +@Slf4j +@Service +public class ChSomeIntakeAmountSv { + + private ChangeMapper dao; + + @Autowired + private void setDao(ChangeMapper dao){ + this.dao = dao; + } + + + //////////////////////////////////////// + // + // 鏈夊叧鏃ョ粺璁� + // + /////////////////////////////////////// + + /** + * 璋冩暣鍙栨按鍙f棩鍙栨按閲忕粺璁� + * @throws Exception + */ + public void chIntakeAmountDay() throws Exception{ + RmIntakeAmountDay lastAd = null ; + List<VoIntake> list = dao.selectAllPrIntakes() ; + if(list != null && list.size() > 0){ + for(VoIntake vo : list){ + lastAd = null ; + List<RmIntakeAmountDay> adList = dao.selectOneIntakeAllAmountDay(vo.getIntakeId()) ; + if(adList != null && adList.size() > 0){ + //adList涓暟鎹互id鍗囧簭鎺掑垪 + for(RmIntakeAmountDay ad : adList){ + if(lastAd == null){ + lastAd = ad ; + if(lastAd.amount != null && lastAd.amount > StClientAmountConstant.IntakeAmountDayFlag){ + this.doUpdateOneIntakeAmountDay(lastAd.id, 0.0); + } + }else{ + if(ad.amount != null && ad.amount > StClientAmountConstant.IntakeAmountDayFlag){ + if(ad.totalAmountLast != null && lastAd.totalAmountLast != null){ + //閲嶆柊璁$畻鏃ュ彇姘撮噺 + ad.amount = ad.totalAmountLast - lastAd.totalAmountLast; + if(ad.amount < 0){//璁$畻鏃ュ彇姘撮噺鍚庯紝鍙兘浼氭湁杩欑鎯呭喌鍙戠敓锛堣礋鍊硷級 + log.info("鍑虹幇璋冩暣鍚庣殑鏃ュ彇姘撮噺鍑虹幇璐熷��" + ad.amount + + "鎯呭喌锛屾暟鎹甶d=" + ad.id + + "锛屽彇姘村彛id=" + ad.intakeId + + "锛屾棩鏈�=" + ad.dt + + "锛岃缃按閲�=0.0" + ); + ad.amount = 0.0 ; + } + if(ad.amount > StClientAmountConstant.IntakeAmountDayFlag){ + //璁$畻鏃ュ彇姘撮噺鍚庯紝浠嶅ぇ浜嶪ntakeAmountDayFlag + log.info("鍑虹幇璋冩暣鍚庣殑鏃ュ彇姘撮噺浠嶅ぇ浜�" + + StClientAmountConstant.IntakeAmountDayFlag + + "鐨勬儏鍐碉紝鏁版嵁id=" + ad.id + + "锛屽彇姘村彛id=" + ad.intakeId + + "锛屾棩鏈�=" + ad.dt + + ad.amount + ); + if(ad.dt != null && lastAd.dt != null){ + if(DateTime.daysBetweenyyyy_MM_dd(ad.dt, lastAd.dt) == 1){ + //鍙浉宸竴澶� + log.info("鍑虹幇鐩稿樊涓�澶╀絾鏃ュ彇姘撮噺澶т簬" + + StClientAmountConstant.IntakeAmountDayFlag + + "鐨勬儏鍐碉紝鏁版嵁id=" + ad.id + + "锛屽彇姘村彛id=" + ad.intakeId + + "锛屾棩鏈�=" + ad.dt + + "锛岃缃按閲�=0.0" + + "锛岃缃墠姘撮噺= " + ad.amount + ); + ad.amount = 0.0 ; + }else{ + //宸茬粡淇敼鍚庣殑鏁板�间粛鐒跺ぇ浜嶪ntakeAmountDayFlag锛岃鏄庢槸澶ф棩鏈笂鎶ユ暟鎹�岀Н绱笅鏉�,鍙互澶т簬IntakeAmountDayFlag + //ad.amount = ad.amount ; + log.info("鍑虹幇鐩稿樊澶氬ぉ鏃ュ彇姘撮噺澶т簬" + + StClientAmountConstant.IntakeAmountDayFlag + + "鐨勬儏鍐碉紝鏁版嵁id=" + ad.id + + "锛屽彇姘村彛id=" + ad.intakeId + + "锛屾棩鏈�=" + ad.dt + + "锛屾按閲忎繚鎸佷笉鍙�=" + ad.amount + ); + } + } + } + }else{ + log.info("鍑虹幇鐩稿樊澶氬ぉ鏃ュ彇姘撮噺澶т簬" + + StClientAmountConstant.IntakeAmountDayFlag + + "骞朵笖灞炴�otalAmountLast涓簄ull鐨勬儏鍐碉紝鏁版嵁id=" + ad.id + + "锛屽彇姘村彛id=" + ad.intakeId + + "锛屾棩鏈�=" + ad.dt + + "锛岃缃按閲�=0.0" + + "锛岃缃墠姘撮噺= " + ad.amount + ); + ad.amount = 0.0 ; + } + this.doUpdateOneIntakeAmountDay(ad.id, ad.amount); + } + } + lastAd = ad ; + } + } + } + } + } + + @Transactional + protected int doUpdateOneIntakeAmountDay(Long id, Double amount){ + return dao.updateOneIntakeAmountDay(id, amount); + } + + /** + * 鍒犻櫎鎵�鏈夊彇姘村彛鏃ュ彇姘撮噺缁熻 + * @throws Exception + */ + //@Transactional + //public void deleteAllIntakeAmountDay(){ + // dao.deleteAllIntakeAmountDay(); + //} + /** + * 鍒犻櫎涓�浜涘彇姘村彛鏃ュ彇姘撮噺缁熻 + * @throws Exception + */ + @Transactional + public void deleteSomeIntakeAmountDay(){ + dao.deleteSomeIntakeAmountDay(); + } + + + /** + * 缁熻鍙栨按鍙f棩鍙栨按閲� + * @throws Exception + */ + public void statisticsIntakeAmountDay() throws Exception{ + int nowYear = Integer.parseInt(DateTime.yyyy()) ; + int nowMonth = Integer.parseInt(DateTime.MM()) ; + int nowDay = Integer.parseInt(DateTime.dd()) ; + Date startDt ; + Date endDt ; + List<VoRmIntakeAmountDay> list ; + boolean stop = false ; + for(int[] ym : StClientAmountConstant.yearMonthGrp) { + int[] dates = DateTime.dayGrpInMonth(ym[0], ym[1]); + for(int day: dates){ + if(ym[0] == nowYear && ym[1] == nowMonth && day > nowDay){ + stop = true ; + } + if(!stop){ + startDt = DateTime.dateFrom_yyyy_MM_dd_HH_mm_ss(ym[0] + "-" + ym[1] + "-" + day + " 00:00:00") ; + endDt = DateTime.dateFrom_yyyy_MM_dd_HH_mm_ss(ym[0] + "-" + ym[1] + "-" + day + " 23:59:59") ; + list = dao.statisticAllIntakeAmountDayFromOpenCloseValveHistory(startDt, endDt) ; + this.doStatisticsIntakeAmountDay(ym[0], ym[1], day, list) ; + }else{ + break ; + } + } + } + } + @Transactional + protected void doStatisticsIntakeAmountDay(int year, int month, int day, List<VoRmIntakeAmountDay> list) throws Exception{ + if(list != null && list.size() > 0){ + Date date = DateTime.dateFrom_yyyy_MM_dd(year + "-" + month + "-" + day) ; + for(VoRmIntakeAmountDay vo : list){ + dao.updateOneIntakeAmountDay1(vo.intakeId, date, vo.amount, vo.money, vo.times); + } + } + } + + + //////////////////////////////////////// + // + // 鏈夊叧鏈堢粺璁� + // + /////////////////////////////////////// + + /** + * 鍒犻櫎鎵�鏈夊彇姘村彛鏈堝彇姘撮噺缁熻 + * @throws Exception + */ + @Transactional + public void deleteAllIntakeAmountMonth(){ + dao.deleteAllIntakeAmountMonth(); + } + + /** + * 缁熻鍙栨按鍙f湀鍙栨按閲� + * @throws Exception + */ + public void statisticsIntakeAmountMonth() throws Exception{ + int nowYear = Integer.parseInt(DateTime.yyyy()) ; + int nowMonth = Integer.parseInt(DateTime.MM()) ; + Date startDt ; + Date endDt ; + List<StIntakeAmountMonth> list ; + for(int year = StClientAmountConstant.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 + "-" + DateTime.endDayOfMonth(year, month)) ; + list = dao.statisticAllIntakeAmountMonthFromAmountDay(startDt, endDt) ; + this.doStatisticsIntakeAmountMonth(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 + "-" + DateTime.endDayOfMonth(year, month)) ; + list = dao.statisticAllIntakeAmountMonthFromAmountDay(startDt, endDt) ; + this.doStatisticsIntakeAmountMonth(year, month, list) ; + } + } + } + } + @Transactional + protected void doStatisticsIntakeAmountMonth(int year, int month, List<StIntakeAmountMonth> list) throws Exception{ + if(list != null && list.size() > 0){ + for(StIntakeAmountMonth po : list){ + po.year = year ; + po.month = month ; + dao.saveOneIntakeAmountMonth(po) ; + } + } + } + + + //////////////////////////////////////// + // + // 鏈夊叧骞寸粺璁� + // + /////////////////////////////////////// + /** + * 鍒犻櫎鎵�鏈夊彇姘村彛骞村彇姘撮噺缁熻 + * @throws Exception + */ + @Transactional + public void deleteAllIntakeAmountYear(){ + dao.deleteAllIntakeAmountYear(); + } + + /** + * 缁熻鍙栨按鍙f湀鍙栨按閲� + * @throws Exception + */ + public void statisticsIntakeAmountYear() throws Exception{ + int nowYear = Integer.parseInt(DateTime.yyyy()) ; + Date startDt ; + Date endDt ; + List<StIntakeAmountYear> list ; + for(int year = StClientAmountConstant.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.statisticAllIntakeAmountYearFromAmountDay(startDt, endDt) ; + this.doStatisticsIntakeAmountYear(year, list) ; + } + } + @Transactional + protected void doStatisticsIntakeAmountYear(int year, List<StIntakeAmountYear> list) throws Exception{ + if(list != null && list.size() > 0){ + for(StIntakeAmountYear po : list){ + po.year = year ; + dao.saveOneIntakeAmountYear(po) ; + } + } + } + +} -- Gitblit v1.8.0