zuoxiao
2 天以前 4513ef24bf9b188c2a77d6ce94f1a6b7e9ebf0e6
pipIrr-platform/pipIrr-web/pipIrr-web-temp/src/main/java/com/dy/pipIrrTemp/changeSome/ChSomeIntakeAmountSv.java
@@ -6,6 +6,8 @@
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;
@@ -26,8 +28,6 @@
public class ChSomeIntakeAmountSv {
    private ChangeMapper dao;
    private static final int IntakeAmountDayFlag = 800 ;//2024-12-14统计元谋数据库实时数据,发现大于800的正确的数据不存在,而小于800的基本为正确数据
    @Autowired
    private void setDao(ChangeMapper dao){
@@ -57,11 +57,11 @@
                    for(RmIntakeAmountDay ad : adList){
                        if(lastAd == null){
                            lastAd = ad ;
                            if(lastAd.amount != null && lastAd.amount > IntakeAmountDayFlag){
                            if(lastAd.amount != null && lastAd.amount > StClientAmountConstant.IntakeAmountDayFlag){
                                this.doUpdateOneIntakeAmountDay(lastAd.id, 0.0);
                            }
                        }else{
                            if(ad.amount != null && ad.amount > IntakeAmountDayFlag){
                            if(ad.amount != null && ad.amount > StClientAmountConstant.IntakeAmountDayFlag){
                                if(ad.totalAmountLast != null && lastAd.totalAmountLast != null){
                                    //重新计算日取水量
                                    ad.amount = ad.totalAmountLast - lastAd.totalAmountLast;
@@ -74,10 +74,10 @@
                                        );
                                        ad.amount = 0.0 ;
                                    }
                                    if(ad.amount > IntakeAmountDayFlag){
                                    if(ad.amount > StClientAmountConstant.IntakeAmountDayFlag){
                                        //计算日取水量后,仍大于IntakeAmountDayFlag
                                        log.info("出现调整后的日取水量仍大于"
                                                + IntakeAmountDayFlag
                                                + StClientAmountConstant.IntakeAmountDayFlag
                                                + "的情况,数据id=" + ad.id
                                                + ",取水口id=" + ad.intakeId
                                                + ",日期=" + ad.dt
@@ -87,7 +87,7 @@
                                            if(DateTime.daysBetweenyyyy_MM_dd(ad.dt, lastAd.dt) == 1){
                                                //只相差一天
                                                log.info("出现相差一天但日取水量大于"
                                                        + IntakeAmountDayFlag
                                                        + StClientAmountConstant.IntakeAmountDayFlag
                                                        + "的情况,数据id=" + ad.id
                                                        + ",取水口id=" + ad.intakeId
                                                        + ",日期=" + ad.dt
@@ -99,7 +99,7 @@
                                                //已经修改后的数值仍然大于IntakeAmountDayFlag,说明是大日未上报数据而积累下来,可以大于IntakeAmountDayFlag
                                                //ad.amount = ad.amount ;
                                                log.info("出现相差多天日取水量大于"
                                                        + IntakeAmountDayFlag
                                                        + StClientAmountConstant.IntakeAmountDayFlag
                                                        + "的情况,数据id=" + ad.id
                                                        + ",取水口id=" + ad.intakeId
                                                        + ",日期=" + ad.dt
@@ -110,7 +110,7 @@
                                    }
                                }else{
                                    log.info("出现相差多天日取水量大于"
                                            + IntakeAmountDayFlag
                                            + StClientAmountConstant.IntakeAmountDayFlag
                                            + "并且属性totalAmountLast为null的情况,数据id=" + ad.id
                                            + ",取水口id=" + ad.intakeId
                                            + ",日期=" + ad.dt
@@ -134,6 +134,62 @@
        return dao.updateOneIntakeAmountDay(id, amount);
    }
    /**
     * 删除所有取水口日取水量统计
     * @throws Exception
     */
    //@Transactional
    //public void deleteAllIntakeAmountDay(){
    //    dao.deleteAllIntakeAmountDay();
    //}
    /**
     * 删除一些取水口日取水量统计
     * @throws Exception
     */
    @Transactional
    public void deleteSomeIntakeAmountDay(){
        dao.deleteSomeIntakeAmountDay();
    }
    /**
     * 统计取水口日取水量
     * @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);
            }
        }
    }
    ////////////////////////////////////////
@@ -142,24 +198,6 @@
    //
    ///////////////////////////////////////
    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
@@ -175,23 +213,23 @@
     */
    public void statisticsIntakeAmountMonth() throws Exception{
        int nowYear = Integer.parseInt(DateTime.yyyy()) ;
        int nowMonth = Integer.parseInt(DateTime.mm()) ;
        int nowMonth = Integer.parseInt(DateTime.MM()) ;
        Date startDt ;
        Date endDt ;
        List<StIntakeAmountMonth> list ;
        for(int year = DealStartYear; year <= nowYear; year ++){
        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 + endDayOfMonth(year, month)) ;
                    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 + endDayOfMonth(year, month)) ;
                    endDt = DateTime.dateFrom_yyyy_MM_dd(year + "-" + month + "-" + DateTime.endDayOfMonth(year, month)) ;
                    list = dao.statisticAllIntakeAmountMonthFromAmountDay(startDt, endDt) ;
                    this.doStatisticsIntakeAmountMonth(year, month, list) ;
                }
@@ -233,10 +271,10 @@
        Date startDt ;
        Date endDt ;
        List<StIntakeAmountYear> list ;
        for(int year = DealStartYear; year <= nowYear; year ++){
        for(int year = StClientAmountConstant.DealStartYear; year <= nowYear; year ++){
            list = null ;
            startDt = DateTime.dateFrom_MM_dd(year + "-01-01") ;
            endDt = DateTime.dateFrom_MM_dd(year + "-12-31") ;
            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) ;
        }