liurunyu
2024-12-12 74a55ea167e15526ea65c9bec39edc29f3399461
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
package com.dy.pipIrrStatistics.loss;
 
import com.alibaba.fastjson2.JSON;
import com.dy.common.webUtil.QueryResultVo;
import com.dy.pipIrrGlobal.daoRm.RmLossDayMapper;
import com.dy.pipIrrGlobal.voSt.VoDayLoss;
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.text.ParseException;
import java.util.List;
import java.util.Map;
import java.util.Optional;
 
/**
 * @Author: liurunyu
 * @Date: 2024/12/12 8:33
 * @Description
 */
 
@Slf4j
@Service
public class LossSv {
 
    @Autowired
    private RmLossDayMapper rmLossDayMapper ;
 
    /**
     * 统计指定月份各天漏损量
     * @param qo
     * @return
     */
    public QueryResultVo<List<VoDayLoss>> lossAmountOfDay(LossQo qo) throws ParseException {
        QueryResultVo<List<VoDayLoss>> rsVo = new QueryResultVo<>() ;
        // 生成查询参数
        Map<String, Object> params = (Map<String, Object>) PojoUtils.generalize(qo) ;
        // 获取符合条件的记录数
        Long itemTotal = rmLossDayMapper.selectIntakeCount4LossDay(qo.intakeNum) ;
 
        if(itemTotal != null && itemTotal > 0){
            rsVo.pageSize = qo.pageSize ;
            rsVo.pageCurr = qo.pageCurr ;
            rsVo.calculateAndSet(itemTotal, params);
 
            List<VoDayLoss> list = rmLossDayMapper.selectIntakes4LossDay(params);
            if(list == null || list.size() == 0){
                rsVo.obj = list ;
            }else{
                String json = JSON.toJSONString(list) ;
                params.put("intakesJson", json);
 
                List<VoDayLoss> list01_05 = rmLossDayMapper.selectLossAmountOfDay01_05(params);
                if(list01_05 != null && list01_05.size() > 0){
                    //下面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);
                    List<VoDayLoss> list21_25 = rmLossDayMapper.selectLossAmountOfDay21_25(params);
                    List<VoDayLoss> list26_31 = rmLossDayMapper.selectLossAmountOfDay26_31(params);
                    this.merge(list01_05, list06_10, list11_15, list16_20, list21_25, list26_31);
                }
                rsVo.obj = list01_05 ;
            }
        }
        return rsVo ;
    }
 
    private void merge(List<VoDayLoss> list01_05,
                       List<VoDayLoss> list06_10,
                       List<VoDayLoss> list11_15,
                       List<VoDayLoss> list16_20,
                       List<VoDayLoss> list21_25,
                       List<VoDayLoss> list26_31){
        for(VoDayLoss vo01_05 : list01_05){
            for(VoDayLoss vo06_10 : list06_10){
                if(vo01_05.intakeId.longValue() == vo06_10.intakeId.longValue()){
                    vo01_05.lossAmount6 = vo06_10.lossAmount6 ;
                    vo01_05.lossAmount7 = vo06_10.lossAmount7 ;
                    vo01_05.lossAmount8 = vo06_10.lossAmount8 ;
                    vo01_05.lossAmount9 = vo06_10.lossAmount9 ;
                    vo01_05.lossAmount10 = vo06_10.lossAmount10 ;
                    break ;
                }
            }
            for(VoDayLoss vo11_15 : list11_15){
                if(vo01_05.intakeId.longValue() == vo11_15.intakeId.longValue()){
                    vo01_05.lossAmount11 = vo11_15.lossAmount11 ;
                    vo01_05.lossAmount12 = vo11_15.lossAmount12 ;
                    vo01_05.lossAmount13 = vo11_15.lossAmount13 ;
                    vo01_05.lossAmount14 = vo11_15.lossAmount14 ;
                    vo01_05.lossAmount15 = vo11_15.lossAmount15 ;
                    break ;
                }
            }
            for(VoDayLoss vo16_20 : list16_20){
                if(vo01_05.intakeId.longValue() == vo16_20.intakeId.longValue()){
                    vo01_05.lossAmount16 = vo16_20.lossAmount16 ;
                    vo01_05.lossAmount17 = vo16_20.lossAmount17 ;
                    vo01_05.lossAmount18 = vo16_20.lossAmount18 ;
                    vo01_05.lossAmount19 = vo16_20.lossAmount19 ;
                    vo01_05.lossAmount20 = vo16_20.lossAmount20 ;
                    break ;
                }
            }
            for(VoDayLoss vo21_25 : list21_25){
                if(vo01_05.intakeId.longValue() == vo21_25.intakeId.longValue()){
                    vo01_05.lossAmount21 = vo21_25.lossAmount21 ;
                    vo01_05.lossAmount22 = vo21_25.lossAmount22 ;
                    vo01_05.lossAmount23 = vo21_25.lossAmount23 ;
                    vo01_05.lossAmount24 = vo21_25.lossAmount24 ;
                    vo01_05.lossAmount25 = vo21_25.lossAmount25 ;
                    break ;
                }
            }
            for(VoDayLoss vo26_31 : list26_31){
                if(vo01_05.intakeId.longValue() == vo26_31.intakeId.longValue()){
                    vo01_05.lossAmount26 = vo26_31.lossAmount26 ;
                    vo01_05.lossAmount27 = vo26_31.lossAmount27 ;
                    vo01_05.lossAmount28 = vo26_31.lossAmount28 ;
                    vo01_05.lossAmount29 = vo26_31.lossAmount29 ;
                    vo01_05.lossAmount30 = vo26_31.lossAmount30 ;
                    vo01_05.lossAmount31 = vo26_31.lossAmount31 ;
                    break ;
                }
            }
        }
 
    }
 
}