liurunyu
2024-12-16 a8157b2445e6d17fa23fcf19143f5e1fcb179ee2
实现临时任务功能:重新统计所有取水口月用水量和年用水量
5个文件已修改
270 ■■■■■ 已修改文件
pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoTmp/ChangeMapper.java 48 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-global/src/main/resources/mapper/Temp4ChangeMapper.xml 62 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-web/pipIrr-web-temp/src/main/java/com/dy/pipIrrTemp/changeSome/ChSomeCtrl.java 25 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-web/pipIrr-web-temp/src/main/java/com/dy/pipIrrTemp/changeSome/ChSomeIntakeAmountSv.java 129 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-web/pipIrr-web-temp/说明.txt 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoTmp/ChangeMapper.java
@@ -2,10 +2,13 @@
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
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 org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import java.util.Date;
import java.util.List;
/**
@@ -37,4 +40,49 @@
     */
    int updateOneIntakeAmountDay(@Param("id")Long id, @Param("amount")Double amount);
    /**
     * åˆ é™¤æ‰€æœ‰å–水口的月用水量统计
     * @return å½±å“å®žä½“æ•°
     */
    int deleteAllIntakeAmountMonth();
    /**
     * ç»Ÿè®¡æ‰€æœ‰å–水口的月用水量
     * @return å®žä½“集合
     */
    List<StIntakeAmountMonth> statisticAllIntakeAmountMonthFromAmountDay(@Param("startDt")Date startDt,
                                                                         @Param("endDt")Date endDt);
    /**
     * ä¿å­˜å–水口的月用水量统计
     * @return å½±å“å®žä½“æ•°
     */
    int saveOneIntakeAmountMonth(StIntakeAmountMonth pojo);
    /**
     * åˆ é™¤æ‰€æœ‰å–水口的年用水量统计
     * @return å½±å“å®žä½“æ•°
     */
    int deleteAllIntakeAmountYear();
    /**
     * ç»Ÿè®¡æ‰€æœ‰å–水口的年用水量
     * @return å®žä½“集合
     */
    List<StIntakeAmountYear> statisticAllIntakeAmountYearFromAmountDay(@Param("startDt")Date startDt,
                                                                       @Param("endDt")Date endDt);
    /**
     * ä¿å­˜å–水口的月用水量统计
     * @return å½±å“å®žä½“æ•°
     */
    int saveOneIntakeAmountYear(StIntakeAmountYear pojo);
}
pipIrr-platform/pipIrr-global/src/main/resources/mapper/Temp4ChangeMapper.xml
@@ -28,4 +28,66 @@
        set amount = #{amount, jdbcType=FLOAT}
        where id = #{id, jdbcType=BIGINT}
    </update>
    <delete id="deleteAllIntakeAmountMonth">
        delete from st_intake_amount_month
    </delete>
    <!--  -->
    <select id="statisticAllIntakeAmountMonthFromAmountDay" resultType="com.dy.pipIrrGlobal.pojoSt.StIntakeAmountMonth">
        select intake_id as intakeId ,
        sum(amount) as amount
        from  rm_intake_amount_day
        where dt <![CDATA[>=]]> #{startDt, jdbcType=DATE}
        and dt <![CDATA[<=]]> #{endDt, jdbcType=DATE}
        group by intake_id
    </select>
    <insert id="saveOneIntakeAmountMonth" parameterType="com.dy.pipIrrGlobal.pojoSt.StIntakeAmountMonth">
        <!--@mbg.generated-->
        insert into st_intake_amount_month (
        id,
        intake_id,
        year,
        month,
        amount
        )
        values (#{id,jdbcType=BIGINT},
        #{intakeId,jdbcType=BIGINT},
        #{year,jdbcType=INTEGER},
        #{month,jdbcType=INTEGER},
        #{amount,jdbcType=FLOAT}
        )
    </insert>
    <delete id="deleteAllIntakeAmountYear">
        delete from st_intake_amount_year
    </delete>
    <!--  -->
    <select id="statisticAllIntakeAmountYearFromAmountDay" resultType="com.dy.pipIrrGlobal.pojoSt.StIntakeAmountYear">
        select intake_id as intakeId ,
        sum(amount) as amount
        from  rm_intake_amount_day
        where dt <![CDATA[>=]]> #{startDt, jdbcType=DATE}
        and dt <![CDATA[<=]]> #{endDt, jdbcType=DATE}
        group by intake_id
    </select>
    <insert id="saveOneIntakeAmountYear" parameterType="com.dy.pipIrrGlobal.pojoSt.StIntakeAmountYear">
        <!--@mbg.generated-->
        insert into st_intake_amount_year (
        id,
        intake_id,
        year,
        amount
        )
        values (#{id,jdbcType=BIGINT},
        #{intakeId,jdbcType=BIGINT},
        #{year,jdbcType=INTEGER},
        #{amount,jdbcType=FLOAT}
        )
    </insert>
</mapper>
pipIrr-platform/pipIrr-web/pipIrr-web-temp/src/main/java/com/dy/pipIrrTemp/changeSome/ChSomeCtrl.java
@@ -37,4 +37,29 @@
        this.intakeAmountSv.chIntakeAmountDay();
        return BaseResponseUtils.buildSuccess(true);
    }
    /**
     * é‡æ–°ç»Ÿè®¡å–水口月取水量
     * @return
     */
    @GetMapping(path = "reStatisticsAllIntakeMonthAmount")
    @SsoAop()
    public BaseResponse<Boolean> reStatisticsAllIntakeMonthAmount() throws Exception{
        this.intakeAmountSv.deleteAllIntakeAmountMonth();
        this.intakeAmountSv.statisticsIntakeAmountMonth();
        return BaseResponseUtils.buildSuccess(true);
    }
    /**
     * é‡æ–°ç»Ÿè®¡å–水口所取水量
     * @return
     */
    @GetMapping(path = "reStatisticsAllIntakeYearAmount")
    @SsoAop()
    public BaseResponse<Boolean> reStatisticsAllIntakeYearAmount() throws Exception{
        this.intakeAmountSv.deleteAllIntakeAmountYear();
        this.intakeAmountSv.statisticsIntakeAmountYear();
        return BaseResponseUtils.buildSuccess(true);
    }
}
pipIrr-platform/pipIrr-web/pipIrr-web-temp/src/main/java/com/dy/pipIrrTemp/changeSome/ChSomeIntakeAmountSv.java
@@ -3,13 +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.ArrayList;
import java.util.Date;
import java.util.List;
/**
@@ -32,6 +34,17 @@
        this.dao = dao;
    }
    ////////////////////////////////////////
    //
    // æœ‰å…³æ—¥ç»Ÿè®¡
    //
    ///////////////////////////////////////
    /**
     * è°ƒæ•´å–水口日取水量统计
     * @throws Exception
     */
    public void chIntakeAmountDay() throws Exception{
        RmIntakeAmountDay lastAd = null ;
        List<VoIntake> list = dao.selectAllPrIntakes() ;
@@ -120,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) ;
            }
        }
    }
}
pipIrr-platform/pipIrr-web/pipIrr-web-temp/˵Ã÷.txt
@@ -10,4 +10,8 @@
/temp/delSome/deleteSomeStatisticClientAmount
4、修改一些取水口日取水量统计---因RTU一天内整点报中累计流量间歇出现0值,两次上报累计流量差值会产生大值
/temp/chSome/changeSomeIntakeDayAmount
/temp/chSome/changeSomeIntakeDayAmount
5、重新统计取水口月取水量
/temp/chSome/reStatisticsAllIntakeMonthAmount
6、重新统计取水口所取水量
/temp/chSome/reStatisticsAllIntakeYearAmount