鞍钢鲅鱼圈能源管控系统后端代码
潘志宝
2 天以前 3420c1e93b9af68ef2b8b4de6af6e59c7b9a5e2f
生产指标增加字段 indCode
已修改5个文件
155 ■■■■ 文件已修改
ansteel-biz/db/mysql.sql 4 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ansteel-biz/src/main/java/com/iailab/module/ansteel/api/dto/CokingProdDayDTO.java 5 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ansteel-biz/src/main/java/com/iailab/module/ansteel/coking/entity/CokingProdDayEntity.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ansteel-biz/src/main/java/com/iailab/module/ansteel/job/task/RunCokingChildDayTask.java 119 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ansteel-biz/src/main/java/com/iailab/module/ansteel/job/task/RunCokingProdDayTask.java 25 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ansteel-biz/db/mysql.sql
@@ -354,11 +354,13 @@
    `id`        varchar(36) NOT NULL COMMENT 'id',
    `clock`     varchar(20) NULL DEFAULT NULL COMMENT '查询时间',
    `info_type` varchar(10) NULL DEFAULT NULL COMMENT '信息类型(0:生产情况,1:能源发生,2:能源消耗)',
    `ind_code`  varchar(50) NULL DEFAULT NULL COMMENT '数据编码',
    `ind_name`  varchar(50) NULL DEFAULT NULL COMMENT '数据名称',
    `ind_unit`  varchar(50) NULL DEFAULT NULL COMMENT '数据单位',
    `ind_value` varchar(50) NULL DEFAULT NULL COMMENT '数据值',
    `sort`      int NULL DEFAULT NULL COMMENT '排序',
    PRIMARY KEY (`id`) USING BTREE
    PRIMARY KEY (`id`) USING BTREE,
    key         idx_clock (clock)
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = DYNAMIC COMMENT '焦化工序日生产信息';
-- ----------------------------
ansteel-biz/src/main/java/com/iailab/module/ansteel/api/dto/CokingProdDayDTO.java
@@ -24,7 +24,10 @@
    @Schema(description = "信息类型(0:生产情况,1:能源发生,2:能源消耗)")
    private String infoType;
    @Schema(description = "数据名称")
    @Schema(description = "指标编码")
    private String indCode;
    @Schema(description = "指标名称")
    private String indName;
    @Schema(description = "数据单位")
ansteel-biz/src/main/java/com/iailab/module/ansteel/coking/entity/CokingProdDayEntity.java
@@ -24,6 +24,8 @@
    private String infoType;
    private String indCode;
    private String indName;
    private String indUnit;
ansteel-biz/src/main/java/com/iailab/module/ansteel/job/task/RunCokingChildDayTask.java
@@ -11,6 +11,7 @@
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Component;
import org.springframework.util.CollectionUtils;
import javax.annotation.Resource;
import java.util.*;
@@ -48,65 +49,67 @@
            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))));
                logger.info("清理旧数据");
                cokingProcessChildService.deleteByClock(clock);
                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.setClock(clock);
                    CokingProcessConfEntity childConf = confList.get(0);
                    cokingProcessChildEntity.setIndType(childConf.getExt3());
                    cokingProcessChildEntity.setIndMain(childConf.getExt4());
                    cokingProcessChildEntity.setIndName(childConf.getExt5());
                    confList.forEach(conf -> {
                        List<String> points = new ArrayList<>();
                        points.add(conf.getPointNo());
                        Map<String, Object> stringObjectMap = dataPointApi.queryPointsRealValue(points);
                        //保存数据
                        Object value = stringObjectMap.get(conf.getPointNo());
                        if(ObjectUtils.isNotEmpty(value)) {
                            if(conf.getExt2().equals(ProcessIndDataTypeEnum.LSPJ.getCode())) {
                                cokingProcessChildEntity.setAvgValue(value.toString());
                            } else if(conf.getExt2().equals(ProcessIndDataTypeEnum.LLZ.getCode())) {
                                cokingProcessChildEntity.setTheoryValue(value.toString());
                            } else if(conf.getExt2().equals(ProcessIndDataTypeEnum.SJZ.getCode())) {
                                cokingProcessChildEntity.setActualValue(value.toString());
                            } else if(conf.getExt2().equals(ProcessIndDataTypeEnum.JZZ.getCode())) {
                                cokingProcessChildEntity.setStandValue(value.toString());
                            } else if(conf.getExt2().equals(ProcessIndDataTypeEnum.SSSJ.getCode())) {
                                cokingProcessChildEntity.setRealValue(value.toString());
                            }
                        }
                    });
                    cokingProcessChildService.save(cokingProcessChildEntity);
                });
            if (CollectionUtils.isEmpty(list)) {
                logger.info("子工序配置为空");
                return;
            }
            // 先建立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))));
            logger.info("清理旧数据");
            cokingProcessChildService.deleteByClock(clock);
            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.setClock(clock);
                CokingProcessConfEntity childConf = confList.get(0);
                cokingProcessChildEntity.setIndType(childConf.getExt3());
                cokingProcessChildEntity.setIndMain(childConf.getExt4());
                cokingProcessChildEntity.setIndName(childConf.getExt5());
                confList.forEach(conf -> {
                    List<String> points = new ArrayList<>();
                    points.add(conf.getPointNo());
                    Map<String, Object> stringObjectMap = dataPointApi.queryPointsRealValue(points);
                    //保存数据
                    Object value = stringObjectMap.get(conf.getPointNo());
                    if(ObjectUtils.isNotEmpty(value)) {
                        if(conf.getExt2().equals(ProcessIndDataTypeEnum.LSPJ.getCode())) {
                            cokingProcessChildEntity.setAvgValue(value.toString());
                        } else if(conf.getExt2().equals(ProcessIndDataTypeEnum.LLZ.getCode())) {
                            cokingProcessChildEntity.setTheoryValue(value.toString());
                        } else if(conf.getExt2().equals(ProcessIndDataTypeEnum.SJZ.getCode())) {
                            cokingProcessChildEntity.setActualValue(value.toString());
                        } else if(conf.getExt2().equals(ProcessIndDataTypeEnum.JZZ.getCode())) {
                            cokingProcessChildEntity.setStandValue(value.toString());
                        } else if(conf.getExt2().equals(ProcessIndDataTypeEnum.SSSJ.getCode())) {
                            cokingProcessChildEntity.setRealValue(value.toString());
                        }
                    }
                });
                cokingProcessChildService.save(cokingProcessChildEntity);
            });
        } catch (Exception ex) {
            logger.error("RunCokingChildDayTask运行异常");
ansteel-biz/src/main/java/com/iailab/module/ansteel/job/task/RunCokingProdDayTask.java
@@ -5,7 +5,6 @@
import com.iailab.module.ansteel.coking.entity.CokingProdDayEntity;
import com.iailab.module.ansteel.coking.service.CokingProcessConfService;
import com.iailab.module.ansteel.coking.service.CokingProdDayService;
import com.iailab.module.ansteel.coking.service.CokingTraceIndService;
import com.iailab.module.ansteel.common.enums.ProcessConfDataTypeEnum;
import com.iailab.module.data.api.ind.IndItemApi;
import com.iailab.module.data.api.ind.dto.ApiIndItemValueDTO;
@@ -40,9 +39,6 @@
    @Resource
    private CokingProdDayService cokingProdDayService;
    @Resource
    private CokingTraceIndService cokingTraceIndService;
    @Resource
    private DataPointApi dataPointApi;
@@ -96,7 +92,7 @@
                        break;
                }
                saveProdDay(conf, value, clock);
                saveProdDay(conf, value, clock, conf.getIndCode());
            }
        } catch (Exception ex) {
            logger.error("RunCokingProdDayTask运行异常");
@@ -106,14 +102,15 @@
    }
    private void saveProdDay(CokingProcessConfEntity conf, String value, String clock) {
        CokingProdDayEntity cokingProdDayEntity = new CokingProdDayEntity();
        cokingProdDayEntity.setInfoType(conf.getInfoType());
        cokingProdDayEntity.setSort(conf.getSort());
        cokingProdDayEntity.setIndName(conf.getIndName());
        cokingProdDayEntity.setIndUnit(conf.getIndUnit());
        cokingProdDayEntity.setIndValue(value);
        cokingProdDayEntity.setClock(clock);
        cokingProdDayService.save(cokingProdDayEntity);
    private void saveProdDay(CokingProcessConfEntity conf, String value, String clock, String indCode) {
        CokingProdDayEntity entity = new CokingProdDayEntity();
        entity.setInfoType(conf.getInfoType());
        entity.setSort(conf.getSort());
        entity.setIndCode(indCode);
        entity.setIndName(conf.getIndName());
        entity.setIndUnit(conf.getIndUnit());
        entity.setIndValue(value);
        entity.setClock(clock);
        cokingProdDayService.save(entity);
    }
}