liurunyu
2024-09-30 e18c4a8ac170fea6e079047a27f72032c80eee67
pipIrr-platform/pipIrr-web/pipIrr-web-statistics/src/main/java/com/dy/pipIrrStatistics/card/IcCardSv.java
@@ -1,7 +1,23 @@
package com.dy.pipIrrStatistics.card;
import com.dy.common.webUtil.QueryResultVo;
import com.dy.pipIrrGlobal.daoSe.SeCardOperateMapper;
import com.dy.pipIrrGlobal.daoSe.SeClientCardMapper;
import com.dy.pipIrrGlobal.voSt.VoCardUsage;
import com.dy.pipIrrGlobal.voSt.VoICCard;
import com.dy.pipIrrStatistics.card.IcCardqo.CommonQO;
import com.dy.pipIrrStatistics.card.qo.CardUsageQO;
import lombok.extern.slf4j.Slf4j;
import org.apache.dubbo.common.utils.PojoUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Optional;
/**
 * @author ZhuBaoMin
@@ -13,4 +29,198 @@
@Slf4j
@Service
public class IcCardSv {
    @Autowired
    private SeCardOperateMapper seCardOperateMapper;
    @Autowired
    private SeClientCardMapper seClientCardMapper;
    /**
     * 指定时间段内开卡总数量(物理卡)
     * @param qo
     * @return
     */
    public QueryResultVo<List<VoICCard>> getOpenCountIcCards(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.getOpenCountIcCardsCount(params);
        QueryResultVo<List<VoICCard>> rsVo = new QueryResultVo<>() ;
        rsVo.pageSize = qo.pageSize ;
        rsVo.pageCurr = qo.pageCurr ;
        rsVo.calculateAndSet(itemTotal, params);
        return rsVo ;
    }
    /**
     * 指定时间段内挂失总数量(物理卡)
     * @param qo
     * @return
     */
    public QueryResultVo<List<VoICCard>> getLossCountIcCards(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.getLossCountIcCardsCount(params);
        QueryResultVo<List<VoICCard>> rsVo = new QueryResultVo<>() ;
        rsVo.pageSize = qo.pageSize ;
        rsVo.pageCurr = qo.pageCurr ;
        rsVo.calculateAndSet(itemTotal, params);
        return rsVo ;
    }
    /**
     * 指定时间段内充值总数量(物理卡)
     * @param qo
     * @return
     */
    public QueryResultVo<List<VoICCard>> getRechargeCountIcCards(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.getRechargeCountIcCardsCount(params);
        QueryResultVo<List<VoICCard>> rsVo = new QueryResultVo<>() ;
        rsVo.pageSize = qo.pageSize ;
        rsVo.pageCurr = qo.pageCurr ;
        rsVo.calculateAndSet(itemTotal, params);
        return rsVo ;
    }
    /**
     * 当前余额总量(物理卡)
     * @param
     * @return
     */
    public Double getTotalMoneyIcCards() {
        Double totalMoney = seClientCardMapper.getTotalMoneyIcCards();
        return totalMoney ;
    }
    /**
     * 获取指定时间段水卡使用情况:充值合计、消费合计、余额
     * @param qo
     * @return
     */
    public QueryResultVo<List<VoCardUsage>> getCardUsages(CardUsageQO 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.getOpenCountIcCardsCount(params);
        Integer itemTotal = 0;
        List<VoCardUsage> all = seClientCardMapper.getCardUsagesCount(params);
        if(all != null && all.size() > 0) {
            itemTotal = all.size();
        }
        QueryResultVo<List<VoCardUsage>> rsVo = new QueryResultVo<>() ;
        rsVo.pageSize = qo.pageSize ;
        rsVo.pageCurr = qo.pageCurr ;
        rsVo.calculateAndSet(Long.parseLong(itemTotal.toString()), params);
        rsVo.obj = seClientCardMapper.getCardUsages(params);
        return rsVo ;
    }
    /**
     * 获取售水总计信息:充值金额总计、水表消费金额总计
     * @param qo
     * @return
     */
    public Map getTotalWaterUse(CardUsageQO 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();
        }
        Float totalRecharge = Optional.ofNullable(seClientCardMapper.getTotalRecharge(timeStart, timeStop)).orElse(0f);
        Float totalConsumption = Optional.ofNullable(seClientCardMapper.getTotalConsumption(timeStart, timeStop)).orElse(0f);
        Map mat_total = new HashMap();
        mat_total.put("totalRecharge", totalRecharge);
        mat_total.put("totalConsumption", totalConsumption);
        return mat_total;
    }
}