liurunyu
3 天以前 cdc35c146d7054d58e273aec3035387f324d6ac3
pipIrr-platform/pipIrr-web/pipIrr-web-temp/src/main/java/com/dy/pipIrrTemp/changeSome/ChSomeIntakeLossSv.java
New file
@@ -0,0 +1,186 @@
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<VoIntake> list = dao.selectAllPrIntakes() ;
        if(list != null && list.size() > 0){
            for(VoIntake vo : list){
                List<RmLossDay> 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<StLossMonth> 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<StLossMonth> 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<StLossYear> 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<StLossYear> list) throws Exception{
        if(list != null && list.size() > 0){
            for(StLossYear po : list){
                po.year = year ;
                dao.saveOneIntakeLossYear(po) ;
            }
        }
    }
}