liurunyu
2024-10-25 f16c96a3bbd126dca21b254ceb018a0558f5ea1d
pipIrr-platform/pipIrr-web/pipIrr-web-statistics/src/main/java/com/dy/pipIrrStatistics/client/ClientSv.java
@@ -4,8 +4,10 @@
import com.dy.pipIrrGlobal.daoRm.RmClientAmountDayLastMapper;
import com.dy.pipIrrGlobal.daoRm.RmOpenCloseValveHistoryMapper;
import com.dy.pipIrrGlobal.daoSe.SeCardOperateMapper;
import com.dy.pipIrrGlobal.daoSe.SeClientMapper;
import com.dy.pipIrrGlobal.voSt.*;
import com.dy.pipIrrStatistics.card.IcCardqo.CommonQO;
import com.dy.pipIrrStatistics.card.qo.CardUsageQO;
import com.dy.pipIrrStatistics.client.qo.*;
import com.dy.pipIrrStatistics.intake.qo.ClientAmountQO;
import lombok.extern.slf4j.Slf4j;
@@ -13,6 +15,8 @@
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.util.Calendar;
@@ -34,9 +38,10 @@
    private RmOpenCloseValveHistoryMapper rmOpenCloseValveHistoryMapper;
    @Autowired
    private SeCardOperateMapper seCardOperateMapper;
    @Autowired
    private RmClientAmountDayLastMapper rmClientAmountDayLastMapper;
    @Autowired
    private SeClientMapper seClientMapper;
    /**
     * 获取指定时间段内开阀次数超过指定值的农户
@@ -45,16 +50,14 @@
     */
    public QueryResultVo<List<VoClient>> getLargeOpenCountClients(OpenCountQO qo) {
        /**
         * 补齐起止时间,如果开始时间为空,则默认为当前日期
         * 补齐起止时间
         */
        String timeStart = qo.getTimeStart();
        String timeStop = qo.getTimeStop();
        if(timeStart != null) {
        if(timeStart != null && timeStart != "") {
            timeStart = timeStart + " 00:00:00";
        }else {
            timeStart = LocalDate.now() + " 00:00:00";
        }
        if(timeStop != null) {
        if(timeStop != null && timeStop != "") {
            timeStop = timeStop + " 23:59:59";
        }
        qo.setTimeStart(timeStart);
@@ -83,16 +86,14 @@
     */
    public QueryResultVo<List<VoClient>> getSmallOpenCountClients(OpenCountQO qo) {
        /**
         * 补齐起止时间,如果开始时间为空,则默认为当前日期
         * 补齐起止时间
         */
        String timeStart = qo.getTimeStart();
        String timeStop = qo.getTimeStop();
        if(timeStart != null) {
        if(timeStart != null && timeStart != "") {
            timeStart = timeStart + " 00:00:00";
        }else {
            timeStart = LocalDate.now() + " 00:00:00";
        }
        if(timeStop != null) {
        if(timeStop != null && timeStop != "") {
            timeStop = timeStop + " 23:59:59";
        }
        qo.setTimeStart(timeStart);
@@ -121,16 +122,14 @@
     */
    public QueryResultVo<List<VoClient>> getLargeWaterConsumptionClients(WaterConsumptionQO qo) {
        /**
         * 补齐起止时间,如果开始时间为空,则默认为当前日期
         * 补齐起止时间
         */
        String timeStart = qo.getTimeStart();
        String timeStop = qo.getTimeStop();
        if(timeStart != null) {
        if(timeStart != null && timeStart != "") {
            timeStart = timeStart + " 00:00:00";
        }else {
            timeStart = LocalDate.now() + " 00:00:00";
        }
        if(timeStop != null) {
        if(timeStop != null && timeStop != "") {
            timeStop = timeStop + " 23:59:59";
        }
        qo.setTimeStart(timeStart);
@@ -153,6 +152,42 @@
    }
    /**
     * 获取指定时间段内用水量低于指定值的农户
     * @param qo
     * @return
     */
    public QueryResultVo<List<VoClient>> getSmallWaterConsumptionClients(WaterConsumptionQO qo) {
        /**
         * 补齐起止时间
         */
        String timeStart = qo.getTimeStart();
        String timeStop = qo.getTimeStop();
        if(timeStart != null && timeStart != "") {
            timeStart = timeStart + " 00:00:00";
        }
        if(timeStop != null && timeStop != "") {
            timeStop = timeStop + " 23:59:59";
        }
        qo.setTimeStart(timeStart);
        qo.setTimeStop(timeStop);
        // 生成查询参数
        Map<String, Object> params = (Map<String, Object>) PojoUtils.generalize(qo) ;
        // 获取符合条件的记录数
        Long itemTotal = Optional.ofNullable(rmOpenCloseValveHistoryMapper.getSmallWaterConsumptionClientsCount(params)).orElse(0L);
        QueryResultVo<List<VoClient>> rsVo = new QueryResultVo<>() ;
        rsVo.pageSize = qo.pageSize ;
        rsVo.pageCurr = qo.pageCurr ;
        rsVo.calculateAndSet(itemTotal, params);
        rsVo.obj = rmOpenCloseValveHistoryMapper.getSmallWaterConsumptionClients(params);
        return rsVo ;
    }
    /**
     * 获取指定时间段内消费金额超过指定值的农户
     * @param qo
     * @return
@@ -163,12 +198,10 @@
         */
        String timeStart = qo.getTimeStart();
        String timeStop = qo.getTimeStop();
        if(timeStart != null) {
        if(timeStart != null && timeStart != "") {
            timeStart = timeStart + " 00:00:00";
        }else {
            timeStart = LocalDate.now() + " 00:00:00";
        }
        if(timeStop != null) {
        if(timeStop != null && timeStop != "") {
            timeStop = timeStop + " 23:59:59";
        }
        qo.setTimeStart(timeStart);
@@ -191,6 +224,42 @@
    }
    /**
     * 获取指定时间段内消费金额低于指定值的农户
     * @param qo
     * @return
     */
    public QueryResultVo<List<VoClient>> getSmallAmountSpentClients(AmountSpentQO qo) {
        /**
         * 补齐起止时间,如果开始时间为空,则默认为当前日期
         */
        String timeStart = qo.getTimeStart();
        String timeStop = qo.getTimeStop();
        if(timeStart != null && timeStart != "") {
            timeStart = timeStart + " 00:00:00";
        }
        if(timeStop != null && timeStop != "") {
            timeStop = timeStop + " 23:59:59";
        }
        qo.setTimeStart(timeStart);
        qo.setTimeStop(timeStop);
        // 生成查询参数
        Map<String, Object> params = (Map<String, Object>) PojoUtils.generalize(qo) ;
        // 获取符合条件的记录数
        Long itemTotal = Optional.ofNullable(rmOpenCloseValveHistoryMapper.getSmallAmountSpentClientsCount(params)).orElse(0L);
        QueryResultVo<List<VoClient>> rsVo = new QueryResultVo<>() ;
        rsVo.pageSize = qo.pageSize ;
        rsVo.pageCurr = qo.pageCurr ;
        rsVo.calculateAndSet(itemTotal, params);
        rsVo.obj = rmOpenCloseValveHistoryMapper.getSmallAmountSpentClients(params);
        return rsVo ;
    }
    /**
     * 获取指定时间段内用水时长超过指定值的农户
     * @param qo
     * @return
@@ -201,12 +270,10 @@
         */
        String timeStart = qo.getTimeStart();
        String timeStop = qo.getTimeStop();
        if(timeStart != null) {
        if(timeStart != null && timeStart != "") {
            timeStart = timeStart + " 00:00:00";
        }else {
            timeStart = LocalDate.now() + " 00:00:00";
        }
        if(timeStop != null) {
        if(timeStop != null && timeStop != "") {
            timeStop = timeStop + " 23:59:59";
        }
        qo.setTimeStart(timeStart);
@@ -225,6 +292,42 @@
        rsVo.calculateAndSet(itemTotal, params);
        rsVo.obj = rmOpenCloseValveHistoryMapper.getLargeWaterDurationClients(params);
        return rsVo ;
    }
    /**
     * 获取指定时间段内用水时长低于指定值的农户
     * @param qo
     * @return
     */
    public QueryResultVo<List<VoClient>> getSmallWaterDurationClients(WaterDurationQO qo) {
        /**
         * 补齐起止时间,如果开始时间为空,则默认为当前日期
         */
        String timeStart = qo.getTimeStart();
        String timeStop = qo.getTimeStop();
        if(timeStart != null && timeStart != "") {
            timeStart = timeStart + " 00:00:00";
        }
        if(timeStop != null && timeStop != "") {
            timeStop = timeStop + " 23:59:59";
        }
        qo.setTimeStart(timeStart);
        qo.setTimeStop(timeStop);
        // 生成查询参数
        Map<String, Object> params = (Map<String, Object>) PojoUtils.generalize(qo) ;
        // 获取符合条件的记录数
        Long itemTotal = Optional.ofNullable(rmOpenCloseValveHistoryMapper.getSmallWaterDurationClientsCount(params)).orElse(0L);
        QueryResultVo<List<VoClient>> rsVo = new QueryResultVo<>() ;
        rsVo.pageSize = qo.pageSize ;
        rsVo.pageCurr = qo.pageCurr ;
        rsVo.calculateAndSet(itemTotal, params);
        rsVo.obj = rmOpenCloseValveHistoryMapper.getSmallWaterDurationClients(params);
        return rsVo ;
    }
@@ -342,9 +445,13 @@
     * @param qo
     * @return
     */
    public QueryResultVo<List<VoDayClient>> getDayAmountAndMoney(ClientAmountQO qo) {
        Integer year = qo.getYearMonth().getYear();
        Integer month = qo.getYearMonth().getMonthValue();
    public QueryResultVo<List<VoDayClient>> getDayAmountAndMoney(ClientAmountQO qo) throws ParseException {
        SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
        String yearMonth = qo.getYearMonth();
        yearMonth = yearMonth + "-01";
        yearMonth = dateFormat.format(dateFormat.parse(yearMonth));
        Integer year = Integer.parseInt(yearMonth.substring(0,4));
        Integer month = Integer.parseInt(yearMonth.substring(5,7));
        qo.setYear(year);
        qo.setMonth(month);
@@ -389,4 +496,68 @@
        rsVo.obj = rmClientAmountDayLastMapper.getMonthAmountAndMoney(params);
        return rsVo ;
    }
    /**
     * 最近未充值的农户
     * @param qo
     * @return
     */
    public QueryResultVo<List<VoClient>> getNotRechargeLastClients(CommonQO qo) {
        String timeStart = qo.getTimeStart();
        if (timeStart != null && timeStart != ""){
            timeStart = timeStart + " 00:00:00";
            qo.setTimeStart(timeStart);
        }
        // 生成查询参数
        Map<String, Object> params = (Map<String, Object>) PojoUtils.generalize(qo) ;
        // 获取符合条件的记录数
        Long itemTotal = Optional.ofNullable(rmClientAmountDayLastMapper.getNotRechargeLastClientsCount(params)).orElse(0L);
        QueryResultVo<List<VoClient>> rsVo = new QueryResultVo<>() ;
        rsVo.pageSize = qo.pageSize ;
        rsVo.pageCurr = qo.pageCurr ;
        rsVo.calculateAndSet(itemTotal, params);
        rsVo.obj = rmClientAmountDayLastMapper.getNotRechargeLastClients(params);
        return rsVo ;
    }
    /**
     * 获取指定时间段农户:充值合计、消费合计、余额
     * @param qo
     * @return
     */
    public QueryResultVo<List<VoCardUsage>> getClientUsages(CardUsageQO qo) {
        String timeStart = qo.getTimeStart();
        String timeStop = qo.getTimeStop();
        if (timeStart != null && timeStart != ""){
            timeStart = timeStart + " 00:00:00";
        }else {
            timeStart = LocalDateTime.now().minusYears(1).toString();
        }
        if (timeStop != null && timeStop != ""){
            timeStop = timeStop + " 23:59:59";
        }else {
            timeStop = LocalDateTime.now().toString();
        }
        qo.setTimeStart(timeStart);
        qo.setTimeStop(timeStop);
        Map<String, Object> params = (Map<String, Object>) PojoUtils.generalize(qo);
        // 获取符合条件的记录数
        Long itemTotal = Optional.ofNullable(seClientMapper.getClientUsagesCount(params)).orElse(0L);
        QueryResultVo<List<VoCardUsage>> rsVo = new QueryResultVo<>() ;
        rsVo.pageSize = qo.pageSize ;
        rsVo.pageCurr = qo.pageCurr ;
        rsVo.calculateAndSet(itemTotal, params);
        rsVo.obj = seClientMapper.getClientUsages(params);
        return rsVo ;
    }
}