liurunyu
2024-12-16 a8157b2445e6d17fa23fcf19143f5e1fcb179ee2
pipIrr-platform/pipIrr-web/pipIrr-web-temp/src/main/java/com/dy/pipIrrTemp/changeSome/ChSomeIntakeAmountSv.java
@@ -3,12 +3,15 @@
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 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;
/**
@@ -31,6 +34,17 @@
        this.dao = dao;
    }
    ////////////////////////////////////////
    //
    // 有关日统计
    //
    ///////////////////////////////////////
    /**
     * 调整取水口日取水量统计
     * @throws Exception
     */
    public void chIntakeAmountDay() throws Exception{
        RmIntakeAmountDay lastAd = null ;
        List<VoIntake> list = dao.selectAllPrIntakes() ;
@@ -105,7 +119,7 @@
                                    );
                                    ad.amount = 0.0 ;
                                }
                                this.doUpdateOneIntakeAmountDay(ad.id, 0.0);
                                this.doUpdateOneIntakeAmountDay(ad.id,  ad.amount);
                            }
                        }
                        lastAd = ad ;
@@ -119,4 +133,118 @@
    int doUpdateOneIntakeAmountDay(Long id, Double amount){
        return dao.updateOneIntakeAmountDay(id, amount);
    }
    ////////////////////////////////////////
    //
    // 有关月统计
    //
    ///////////////////////////////////////
    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
     */
    public void deleteAllIntakeAmountMonth(){
        dao.deleteAllIntakeAmountMonth();
    }
    /**
     * 统计取水口月取水量
     * @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 = DealStartYear; year <= nowYear; year ++){
            list = null ;
            if(year < nowYear){
                for(int month = 1 ; month <= 12 ; month ++){
                    startDt = DateTime.dateFrom_MM_dd(year + "-" + month + "-01") ;
                    endDt = DateTime.dateFrom_MM_dd(year + "-" + month + endDayOfMonth(year, month)) ;
                    list = dao.statisticAllIntakeAmountMonthFromAmountDay(startDt, endDt) ;
                    this.doStatisticsIntakeAmountMonth(year, month, list) ;
                }
            }else{
                for(int month = 1 ; month <= nowMonth ; month ++){
                    startDt = DateTime.dateFrom_MM_dd(year + "-" + month + "-01") ;
                    endDt = DateTime.dateFrom_MM_dd(year + "-" + month + endDayOfMonth(year, month)) ;
                    list = dao.statisticAllIntakeAmountMonthFromAmountDay(startDt, endDt) ;
                    this.doStatisticsIntakeAmountMonth(year, month, list) ;
                }
            }
        }
    }
    private 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
     */
    public void deleteAllIntakeAmountYear(){
        dao.deleteAllIntakeAmountYear();
    }
    /**
     * 统计取水口月取水量
     * @throws Exception
     */
    public void statisticsIntakeAmountYear() throws Exception{
        int nowYear = Integer.parseInt(DateTime.yyyy()) ;
        Date startDt ;
        Date endDt ;
        List<StIntakeAmountYear> list ;
        for(int year = DealStartYear; year <= nowYear; year ++){
            list = null ;
            startDt = DateTime.dateFrom_MM_dd(year + "-01-01") ;
            endDt = DateTime.dateFrom_MM_dd(year + "-12-31") ;
            list = dao.statisticAllIntakeAmountYearFromAmountDay(startDt, endDt) ;
            this.doStatisticsIntakeAmountYear(year, list) ;
        }
    }
    private 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) ;
            }
        }
    }
}