liurunyu
2024-12-12 8579b568049621bf4b91984c5a147a0e81120c66
pipIrr-platform/pipIrr-web/pipIrr-web-statistics/src/main/java/com/dy/pipIrrStatistics/loss/LossSv.java
@@ -3,7 +3,9 @@
import com.alibaba.fastjson2.JSON;
import com.dy.common.webUtil.QueryResultVo;
import com.dy.pipIrrGlobal.daoRm.RmLossDayMapper;
import com.dy.pipIrrGlobal.daoSt.StLossMonthMapper;
import com.dy.pipIrrGlobal.voSt.VoDayLoss;
import com.dy.pipIrrGlobal.voSt.VoMonthAmount;
import lombok.extern.slf4j.Slf4j;
import org.apache.dubbo.common.utils.PojoUtils;
import org.springframework.beans.factory.annotation.Autowired;
@@ -12,7 +14,6 @@
import java.text.ParseException;
import java.util.List;
import java.util.Map;
import java.util.Optional;
/**
 * @Author: liurunyu
@@ -26,6 +27,9 @@
    @Autowired
    private RmLossDayMapper rmLossDayMapper ;
    @Autowired
    private StLossMonthMapper stLossMonthMapper ;
    /**
     * 统计指定月份各天漏损量
@@ -53,7 +57,7 @@
                List<VoDayLoss> list01_05 = rmLossDayMapper.selectLossAmountOfDay01_05(params);
                if(list01_05 != null && list01_05.size() > 0){
                    //下面1到31号分了6个查询,原因是入一个查询中,非常慢,不知道什么原因,也许是子查询太多的原因
                    //下面1到31号分了6个查询,原因是在一个查询中,非常慢,不知道什么原因,也许是子查询太多的原因
                    List<VoDayLoss> list06_10 = rmLossDayMapper.selectLossAmountOfDay06_10(params);
                    List<VoDayLoss> list11_15 = rmLossDayMapper.selectLossAmountOfDay11_15(params);
                    List<VoDayLoss> list16_20 = rmLossDayMapper.selectLossAmountOfDay16_20(params);
@@ -126,7 +130,59 @@
                }
            }
        }
    }
    /**
     * 统计指定月份各月漏损量
     * @param qo
     * @return
     */
    public QueryResultVo<List<VoMonthAmount>> lossAmountOfMonth(LossQo qo) throws ParseException {
        QueryResultVo<List<VoMonthAmount>> rsVo = new QueryResultVo<>() ;
        // 生成查询参数
        Map<String, Object> params = (Map<String, Object>) PojoUtils.generalize(qo) ;
        // 获取符合条件的记录数
        Long itemTotal = stLossMonthMapper.selectIntakeCount4LossMonth(qo.intakeNum) ;
        if(itemTotal != null && itemTotal > 0){
            rsVo.pageSize = qo.pageSize ;
            rsVo.pageCurr = qo.pageCurr ;
            rsVo.calculateAndSet(itemTotal, params);
            List<VoMonthAmount> list = stLossMonthMapper.selectIntakes4LossMonth(params);
            if(list == null || list.size() == 0){
                rsVo.obj = list ;
            }else{
                String json = JSON.toJSONString(list) ;
                params.put("intakesJson", json);
                List<VoMonthAmount> list01_06 = stLossMonthMapper.selectLossAmountOfMonth01_06(params);
                if(list01_06 != null && list01_06.size() > 0){
                    //下面1到12月分了2个查询,原因是在一个查询中,非常慢,不知道什么原因,也许是子查询太多的原因
                    List<VoMonthAmount> list07_12 = stLossMonthMapper.selectLossAmountOfMonth07_12(params);
                    this.merge(list01_06, list07_12);
                }
                rsVo.obj = list01_06 ;
            }
        }
        return rsVo ;
    }
    private void merge(List<VoMonthAmount> list01_06,
                       List<VoMonthAmount> list07_12){
        for(VoMonthAmount vo01_06 : list01_06){
            for(VoMonthAmount vo07_12 : list07_12){
                if(vo01_06.intakeId.longValue() == vo07_12.intakeId.longValue()){
                    vo01_06.month7 = vo07_12.month7 ;
                    vo01_06.month8 = vo07_12.month8 ;
                    vo01_06.month9 = vo07_12.month9 ;
                    vo01_06.month10 = vo07_12.month10 ;
                    vo01_06.month11 = vo07_12.month11 ;
                    vo01_06.month12 = vo07_12.month12 ;
                    break ;
                }
            }
        }
    }
}