鞍钢鲅鱼圈能源管控系统后端代码
潘志宝
2025-04-13 fc0cd9cb4452d86c47c362f849d3643d23d01d67
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
package com.iailab.module.ansteel.job.task;
 
import com.iailab.module.ansteel.api.entity.CokingProcessConfEntity;
import com.iailab.module.ansteel.api.entity.CokingProcessChildEntity;
import com.iailab.module.ansteel.api.service.CokingProcessChildService;
import com.iailab.module.ansteel.api.service.CokingProcessConfService;
import com.iailab.module.ansteel.api.service.CokingProcessMainService;
import com.iailab.module.data.api.point.DataPointApi;
import org.apache.commons.lang3.ObjectUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Component;
 
import javax.annotation.Resource;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.*;
import java.util.concurrent.atomic.AtomicReference;
import java.util.stream.Collectors;
 
/**
 * @author HouZhongjian
 * @Description
 * @createTime 2025年04月12日
 */
@Component("runCokingChildDayTask")
public class RunCokingChildDayTask implements ITask {
 
    private Logger logger = LoggerFactory.getLogger(getClass());
 
    @Resource
    private CokingProcessConfService cokingProcessConfService;
 
    @Resource
    private CokingProcessChildService cokingProcessChildService;
 
    @Resource
    private DataPointApi dataPointApi;
 
    @Override
    public void run(String params) {
        logger.info("RunCokingChildDayTask,参数为:{}", params);
        try {
            Calendar calendar = Calendar.getInstance();
            calendar.set(Calendar.MILLISECOND, 0);
            calendar.set(Calendar.SECOND, 0);
            CokingProcessConfEntity queryParams = new CokingProcessConfEntity();
            queryParams.setIndType("child");
            List<CokingProcessConfEntity> list = cokingProcessConfService.list(queryParams);
            if (ObjectUtils.isNotEmpty(list)) {
                // 先建立ext1到sort的映射关系
                Map<String, Integer> ext1ToSort = list.stream()
                        .collect(Collectors.toMap(
                                CokingProcessConfEntity::getExt1,
                                CokingProcessConfEntity::getSort,
                                (oldValue, newValue) -> oldValue));
 
                // 然后按这个关系排序分组
                Map<String, List<CokingProcessConfEntity>> groupMap = list.stream()
                        .sorted(Comparator.comparing(CokingProcessConfEntity::getSort))
                        .collect(Collectors.collectingAndThen(
                                Collectors.groupingBy(CokingProcessConfEntity::getExt1),
                                map -> map.entrySet().stream()
                                        .sorted(Comparator.comparingInt(
                                                e -> ext1ToSort.get(e.getKey())))  // 按ext1对应的sort值排序
                                        .collect(Collectors.toMap(
                                                Map.Entry::getKey,
                                                Map.Entry::getValue,
                                                (a, b) -> a,
                                                LinkedHashMap::new))));
 
                // 获取当前日期时间
                LocalDateTime now = LocalDateTime.now();
                // 减去一天得到昨天同一时间
                LocalDateTime yesterday = now.minusDays(1);
                // 格式化输出
                DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
                String formattedDateTime = yesterday.format(formatter);
                AtomicReference<Integer> counter = new AtomicReference<>(1);
                groupMap.forEach((group, confList) -> {
                    CokingProcessChildEntity cokingProcessChildEntity = new CokingProcessChildEntity();
                    cokingProcessChildEntity.setInfoType("0");
                    cokingProcessChildEntity.setSort(counter.getAndSet(counter.get() + 1));
                    cokingProcessChildEntity.setCategory("day");
                    cokingProcessChildEntity.setIndName(group);
                    cokingProcessChildEntity.setClock(formattedDateTime);
                    CokingProcessConfEntity conf = confList.get(0);
                    cokingProcessChildEntity.setIndType(conf.getExt2());
                    cokingProcessChildEntity.setIndMain(conf.getExt1().replace(conf.getExt2(), ""));
                    confList.forEach(cokingProcessConfEntity -> {
                        List<String> points = new ArrayList<>();
                        points.add(cokingProcessConfEntity.getPointNo());
                        Map<String, Object> stringObjectMap = dataPointApi.queryPointsRealValue(points);
                        //保存数据
                        Object value = stringObjectMap.get(cokingProcessConfEntity.getPointNo());
                        if(ObjectUtils.isNotEmpty(value)) {
                            if(cokingProcessConfEntity.getIndCode().endsWith("LSPJ")) {
                                cokingProcessChildEntity.setAvgValue(value.toString());
                            } else if(cokingProcessConfEntity.getIndCode().endsWith("LLZ")) {
                                cokingProcessChildEntity.setTheoryValue(value.toString());
                            } else if(cokingProcessConfEntity.getIndCode().endsWith("SJZ")) {
                                cokingProcessChildEntity.setActualValue(value.toString());
                            } else if(cokingProcessConfEntity.getIndCode().endsWith("JZZ")) {
                                cokingProcessChildEntity.setStandValue(value.toString());
                            } else if(cokingProcessConfEntity.getIndCode().endsWith("SSSJ")) {
                                cokingProcessChildEntity.setRealValue(value.toString());
                            }
                        }
                    });
                    cokingProcessChildService.save(cokingProcessChildEntity);
                });
            }
 
        } catch (Exception ex) {
            logger.error("RunCokingChildDayTask运行异常");
            ex.printStackTrace();
        }
        logger.info("RunCokingChildDayTask运行完成");
 
    }
}