zhubaomin
2024-08-09 70d7a48cef4ebe004eb2ca411de4667e3d30f1ac
pipIrr-platform/pipIrr-web/pipIrr-web-statistics/src/main/java/com/dy/pipIrrStatistics/client/ClientSv.java
@@ -1,12 +1,22 @@
package com.dy.pipIrrStatistics.client;
import com.dy.common.webUtil.QueryResultVo;
import com.dy.pipIrrGlobal.daoRm.RmClientAmountDayLastMapper;
import com.dy.pipIrrGlobal.daoRm.RmOpenCloseValveHistoryMapper;
import com.dy.pipIrrGlobal.daoSe.SeCardOperateMapper;
import com.dy.pipIrrGlobal.voSt.VoClient;
import com.dy.pipIrrGlobal.voSt.VoDayClient;
import com.dy.pipIrrGlobal.voSt.VoMonthClient;
import com.dy.pipIrrStatistics.client.qo.AmountSpentQO;
import com.dy.pipIrrStatistics.client.qo.OpenCountQO;
import com.dy.pipIrrStatistics.client.qo.WaterConsumptionQO;
import com.dy.pipIrrStatistics.client.qo.WaterDurationQO;
import com.dy.pipIrrStatistics.intake.qo.ClientAmountQO;
import com.dy.pipIrrGlobal.voSt.VoClientOpenCardCount;
import com.dy.pipIrrGlobal.voSt.VoClientRechargeTotal;
import com.dy.pipIrrGlobal.voSt.VoICCard;
import com.dy.pipIrrStatistics.card.IcCardqo.CommonQO;
import com.dy.pipIrrStatistics.client.qo.*;
import lombok.extern.slf4j.Slf4j;
import org.apache.dubbo.common.utils.PojoUtils;
import org.springframework.beans.factory.annotation.Autowired;
@@ -29,6 +39,11 @@
public class ClientSv {
    @Autowired
    private RmOpenCloseValveHistoryMapper rmOpenCloseValveHistoryMapper;
    @Autowired
    private SeCardOperateMapper seCardOperateMapper;
    @Autowired
    private RmClientAmountDayLastMapper rmClientAmountDayLastMapper;
    /**
     * 获取指定时间段内开阀次数超过指定值的农户
@@ -219,4 +234,166 @@
        rsVo.obj = rmOpenCloseValveHistoryMapper.getLargeWaterDurationClients(params);
        return rsVo ;
    }
    /**
     * 指定时间段内开物理卡农户
     * @param qo
     * @return
     */
    public QueryResultVo<List<VoClientOpenCardCount>> getOpenIcCardClients(CommonQO qo) {
        String timeStart = qo.getTimeStart();
        String timeStop = qo.getTimeStop();
        if (timeStart != null && timeStart != ""){
            timeStart = timeStart + " 00:00:00";
        }else {
            timeStart = LocalDate.now() + " 00:00:00";
        }
        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 = seCardOperateMapper.getOpenIcCardClientsCount(params);
        QueryResultVo<List<VoClientOpenCardCount>> rsVo = new QueryResultVo<>() ;
        rsVo.pageSize = qo.pageSize ;
        rsVo.pageCurr = qo.pageCurr ;
        rsVo.calculateAndSet(itemTotal, params);
        rsVo.obj = seCardOperateMapper.getOpenIcCardClients(params);
        return rsVo ;
    }
    /**
     * 指定时间段内每个农户充值合计(物理卡)
     * @param qo
     * @return
     */
    public QueryResultVo<List<VoClientRechargeTotal>> getRechargeTotalClients(CommonQO qo) {
        String timeStart = qo.getTimeStart();
        String timeStop = qo.getTimeStop();
        if (timeStart != null && timeStart != ""){
            timeStart = timeStart + " 00:00:00";
        }else {
            timeStart = LocalDate.now() + " 00:00:00";
        }
        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 = seCardOperateMapper.getRechargeTotalClientsCount(params);
        QueryResultVo<List<VoClientRechargeTotal>> rsVo = new QueryResultVo<>() ;
        rsVo.pageSize = qo.pageSize ;
        rsVo.pageCurr = qo.pageCurr ;
        rsVo.calculateAndSet(itemTotal, params);
        rsVo.obj = seCardOperateMapper.getRechargeTotalClients(params);
        return rsVo ;
    }
    /**
     * 指定时间段内物理卡充值金额超过指定值的农户
     * @param qo
     * @return
     */
    public QueryResultVo<List<VoClientRechargeTotal>> getRechargeTotalGtValueClients(RechargeTotalGtValueQo qo) {
        String timeStart = qo.getTimeStart();
        String timeStop = qo.getTimeStop();
        if (timeStart != null && timeStart != ""){
            timeStart = timeStart + " 00:00:00";
        }else {
            timeStart = LocalDate.now() + " 00:00:00";
        }
        if (timeStop != null && timeStop != ""){
            timeStop = timeStop + " 23:59:59";
        }else {
            timeStop = LocalDateTime.now().toString();
        }
        qo.setTimeStart(timeStart);
        qo.setTimeStop(timeStop);
        if (qo.getValue() == null || qo.getValue() < 0){
            qo.setValue(0.0);
        }
        Map<String, Object> params = (Map<String, Object>) PojoUtils.generalize(qo);
        Long itemTotal = seCardOperateMapper.getRechargeTotalGtValueClientsCount(params);
        QueryResultVo<List<VoClientRechargeTotal>> rsVo = new QueryResultVo<>() ;
        rsVo.pageSize = qo.pageSize ;
        rsVo.pageCurr = qo.pageCurr ;
        rsVo.calculateAndSet(itemTotal, params);
        rsVo.obj = seCardOperateMapper.getRechargeTotalGtValueClients(params);
        return rsVo ;
    }
    /**
     * 统计指定月份各农户各天用水量及消费金额
     * @param qo
     * @return
     */
    public QueryResultVo<List<VoDayClient>> getDayAmountAndMoney(ClientAmountQO qo) throws ParseException {
        Integer year = qo.getYearMonth().getYear();
        Integer month = qo.getYearMonth().getMonthValue();
        qo.setYear(year);
        qo.setMonth(month);
        // 生成查询参数
        Map<String, Object> params = (Map<String, Object>) PojoUtils.generalize(qo) ;
        // 获取符合条件的记录数
        Long itemTotal = Optional.ofNullable(rmClientAmountDayLastMapper.getDayAmountAndMoneyCount(params)).orElse(0L);
        QueryResultVo<List<VoDayClient>> rsVo = new QueryResultVo<>() ;
        rsVo.pageSize = qo.pageSize ;
        rsVo.pageCurr = qo.pageCurr ;
        rsVo.calculateAndSet(itemTotal, params);
        rsVo.obj = rmClientAmountDayLastMapper.getDayAmountAndMoney(params);
        return rsVo ;
    }
    /**
     * 统计指定年份各农户各月用水量及消费金额
     * @param qo
     * @return
     */
    public QueryResultVo<List<VoMonthClient>> getMonthAmountAndMoney(ClientAmountQO qo) {
        Calendar calendar = Calendar.getInstance();
        Integer year = Optional.ofNullable(qo.getYear()).orElse(calendar.get(Calendar.YEAR));
        qo.setYear(year);
        // 生成查询参数
        Map<String, Object> params = (Map<String, Object>) PojoUtils.generalize(qo) ;
        // 获取符合条件的记录数
        Long itemTotal = Optional.ofNullable(rmClientAmountDayLastMapper.getMonthAmountAndMoneyCount(params)).orElse(0L);
        QueryResultVo<List<VoMonthClient>> rsVo = new QueryResultVo<>() ;
        rsVo.pageSize = qo.pageSize ;
        rsVo.pageCurr = qo.pageCurr ;
        rsVo.calculateAndSet(itemTotal, params);
        rsVo.obj = rmClientAmountDayLastMapper.getMonthAmountAndMoney(params);
        return rsVo ;
    }
}