鞍钢鲅鱼圈能源管控系统后端代码
houzhongjian
2025-04-14 1378c9f3d77cb2dc47a43b419aacfe8c3f712aca
修改焦化各工序定时任务逻辑
已修改7个文件
已添加1个文件
270 ■■■■■ 文件已修改
ansteel-biz/src/main/java/com/iailab/module/ansteel/api/service/CokingProcessChildService.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ansteel-biz/src/main/java/com/iailab/module/ansteel/api/service/CokingProcessMainService.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ansteel-biz/src/main/java/com/iailab/module/ansteel/api/service/impl/CokingProcessChildServiceImpl.java 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ansteel-biz/src/main/java/com/iailab/module/ansteel/api/service/impl/CokingProcessMainServiceImpl.java 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ansteel-biz/src/main/java/com/iailab/module/ansteel/common/enums/ProcessIndDataTypeEnum.java 35 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ansteel-biz/src/main/java/com/iailab/module/ansteel/job/task/RunCokingChildDayTask.java 43 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ansteel-biz/src/main/java/com/iailab/module/ansteel/job/task/RunCokingMainDayTask.java 149 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ansteel-biz/src/main/java/com/iailab/module/ansteel/job/task/RunCokingProdDayTask.java 25 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ansteel-biz/src/main/java/com/iailab/module/ansteel/api/service/CokingProcessChildService.java
@@ -15,4 +15,6 @@
    List<CokingProcessChildEntity> list(Map<String, Object> params);
    void save(CokingProcessChildEntity cokingProcessChild);
    void deleteByClock(String clock);
}
ansteel-biz/src/main/java/com/iailab/module/ansteel/api/service/CokingProcessMainService.java
@@ -15,4 +15,6 @@
    List<CokingProcessMainEntity> list(Map<String, Object> params);
    void save(CokingProcessMainEntity cokingProcessMainEntity);
    void deleteByClock(String clock);
}
ansteel-biz/src/main/java/com/iailab/module/ansteel/api/service/impl/CokingProcessChildServiceImpl.java
@@ -52,4 +52,11 @@
    public void save(CokingProcessChildEntity cokingProcessChild) {
        cokingProcessChildDao.insert(cokingProcessChild);
    }
    @Override
    public void deleteByClock(String clock) {
        QueryWrapper<CokingProcessChildEntity> queryWrapper = new QueryWrapper<>();
        queryWrapper.eq("clock", clock);
        cokingProcessChildDao.delete(queryWrapper);
    }
}
ansteel-biz/src/main/java/com/iailab/module/ansteel/api/service/impl/CokingProcessMainServiceImpl.java
@@ -50,4 +50,11 @@
    public void save(CokingProcessMainEntity cokingProcessMainEntity) {
        cokingProcessMainDao.insert(cokingProcessMainEntity);
    }
    @Override
    public void deleteByClock(String clock) {
        QueryWrapper<CokingProcessMainEntity> queryWrapper = new QueryWrapper<>();
        queryWrapper.eq("clock", clock);
        cokingProcessMainDao.delete(queryWrapper);
    }
}
ansteel-biz/src/main/java/com/iailab/module/ansteel/common/enums/ProcessIndDataTypeEnum.java
对比新文件
@@ -0,0 +1,35 @@
package com.iailab.module.ansteel.common.enums;
import lombok.AllArgsConstructor;
import lombok.Getter;
/**
 * @author HouZhongjian
 * @Description
 * @createTime 2025年04月14日
 */
@Getter
@AllArgsConstructor
public enum ProcessIndDataTypeEnum {
    LSPJ("LSPJ", "历史平均"),
    LLZ("LLZ", "理论值"),
    SJZ("SJZ", "实际值"),
    JZZ("JZZ", "基准值"),
    SSSJ("SSSJ", "实时数据");
    private String code;
    private String desc;
    public static ProcessIndDataTypeEnum getEumByCode(String code) {
        if (code == null) {
            return null;
        }
        for (ProcessIndDataTypeEnum statusEnum : ProcessIndDataTypeEnum.values()) {
            if (statusEnum.getCode().equals(code)) {
                return statusEnum;
            }
        }
        return null;
    }
}
ansteel-biz/src/main/java/com/iailab/module/ansteel/job/task/RunCokingChildDayTask.java
@@ -1,10 +1,11 @@
package com.iailab.module.ansteel.job.task;
import com.iailab.framework.common.util.date.DateUtils;
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.ansteel.common.enums.ProcessIndDataTypeEnum;
import com.iailab.module.data.api.point.DataPointApi;
import org.apache.commons.lang3.ObjectUtils;
import org.slf4j.Logger;
@@ -12,8 +13,6 @@
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;
@@ -44,6 +43,8 @@
            Calendar calendar = Calendar.getInstance();
            calendar.set(Calendar.MILLISECOND, 0);
            calendar.set(Calendar.SECOND, 0);
            calendar.add(Calendar.DAY_OF_YEAR, -1);
            String clock = DateUtils.format(calendar.getTime(), DateUtils.FORMAT_YEAR_MONTH_DAY);
            CokingProcessConfEntity queryParams = new CokingProcessConfEntity();
            queryParams.setIndType("child");
            List<CokingProcessConfEntity> list = cokingProcessConfService.list(queryParams);
@@ -69,40 +70,36 @@
                                                (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);
                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.setIndName(group);
                    cokingProcessChildEntity.setClock(formattedDateTime);
                    CokingProcessConfEntity conf = confList.get(0);
                    cokingProcessChildEntity.setIndType(conf.getExt2());
                    cokingProcessChildEntity.setIndMain(conf.getExt1().replace(conf.getExt2(), ""));
                    confList.forEach(cokingProcessConfEntity -> {
                    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(cokingProcessConfEntity.getPointNo());
                        points.add(conf.getPointNo());
                        Map<String, Object> stringObjectMap = dataPointApi.queryPointsRealValue(points);
                        //保存数据
                        Object value = stringObjectMap.get(cokingProcessConfEntity.getPointNo());
                        Object value = stringObjectMap.get(conf.getPointNo());
                        if(ObjectUtils.isNotEmpty(value)) {
                            if(cokingProcessConfEntity.getIndCode().endsWith("LSPJ")) {
                            if(conf.getExt2().equals(ProcessIndDataTypeEnum.LSPJ.getCode())) {
                                cokingProcessChildEntity.setAvgValue(value.toString());
                            } else if(cokingProcessConfEntity.getIndCode().endsWith("LLZ")) {
                            } else if(conf.getExt2().equals(ProcessIndDataTypeEnum.LLZ.getCode())) {
                                cokingProcessChildEntity.setTheoryValue(value.toString());
                            } else if(cokingProcessConfEntity.getIndCode().endsWith("SJZ")) {
                            } else if(conf.getExt2().equals(ProcessIndDataTypeEnum.SJZ.getCode())) {
                                cokingProcessChildEntity.setActualValue(value.toString());
                            } else if(cokingProcessConfEntity.getIndCode().endsWith("JZZ")) {
                            } else if(conf.getExt2().equals(ProcessIndDataTypeEnum.JZZ.getCode())) {
                                cokingProcessChildEntity.setStandValue(value.toString());
                            } else if(cokingProcessConfEntity.getIndCode().endsWith("SSSJ")) {
                            } else if(conf.getExt2().equals(ProcessIndDataTypeEnum.SSSJ.getCode())) {
                                cokingProcessChildEntity.setRealValue(value.toString());
                            }
                        }
ansteel-biz/src/main/java/com/iailab/module/ansteel/job/task/RunCokingMainDayTask.java
@@ -1,18 +1,22 @@
package com.iailab.module.ansteel.job.task;
import com.iailab.framework.common.util.date.DateUtils;
import com.iailab.module.ansteel.api.entity.CokingProcessConfEntity;
import com.iailab.module.ansteel.api.entity.CokingProcessMainEntity;
import com.iailab.module.ansteel.api.service.CokingProcessConfService;
import com.iailab.module.ansteel.api.service.CokingProcessMainService;
import com.iailab.module.ansteel.common.enums.ProcessConfDataTypeEnum;
import com.iailab.module.ansteel.common.enums.ProcessIndDataTypeEnum;
import com.iailab.module.data.api.ind.IndItemApi;
import com.iailab.module.data.api.ind.dto.ApiIndItemValueDTO;
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 org.springframework.util.CollectionUtils;
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;
@@ -36,6 +40,9 @@
    @Resource
    private DataPointApi dataPointApi;
    @Resource
    private IndItemApi indItemApi;
    @Override
    public void run(String params) {
        logger.info("RunCokingMainDayTask,参数为:{}", params);
@@ -43,74 +50,84 @@
            Calendar calendar = Calendar.getInstance();
            calendar.set(Calendar.MILLISECOND, 0);
            calendar.set(Calendar.SECOND, 0);
            calendar.add(Calendar.DAY_OF_YEAR, -1);
            String clock = DateUtils.format(calendar.getTime(), DateUtils.FORMAT_YEAR_MONTH_DAY);
            CokingProcessConfEntity queryParams = new CokingProcessConfEntity();
            queryParams.setIndType("main");
            List<CokingProcessConfEntity> list = cokingProcessConfService.list(queryParams);
            if (ObjectUtils.isNotEmpty(list)) {
                //按照指标大类扩展字段ext1分类 并且按照sort排序
//                Map<String, List<CokingProcessConfEntity>> groupMap = list.stream().sorted(Comparator.comparing(CokingProcessConfEntity::getSort))
//                        .collect(Collectors.groupingBy(CokingProcessConfEntity::getExt1, TreeMap::new, Collectors.toList()));
                // 先建立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) -> {
                    CokingProcessMainEntity cokingProcessMainEntity = new CokingProcessMainEntity();
                    cokingProcessMainEntity.setInfoType("0");
                    cokingProcessMainEntity.setSort(counter.getAndSet(counter.get() + 1));
                    cokingProcessMainEntity.setCategory("day");
                    cokingProcessMainEntity.setIndName(group);
                    cokingProcessMainEntity.setClock(formattedDateTime);
                    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")) {
                                cokingProcessMainEntity.setAvgValue(value.toString());
                            } else if(cokingProcessConfEntity.getIndCode().endsWith("LLZ")) {
                                cokingProcessMainEntity.setTheoryValue(value.toString());
                            } else if(cokingProcessConfEntity.getIndCode().endsWith("SJZ")) {
                                cokingProcessMainEntity.setActualValue(value.toString());
                            } else if(cokingProcessConfEntity.getIndCode().endsWith("JZZ")) {
                                cokingProcessMainEntity.setStandValue(value.toString());
                            } else if(cokingProcessConfEntity.getIndCode().endsWith("SSSJ")) {
                                cokingProcessMainEntity.setRealValue(value.toString());
                            }
                        }
                    });
                    cokingProcessMainService.save(cokingProcessMainEntity);
                });
            if (CollectionUtils.isEmpty(list)) {
                logger.info("ConfLis is Empty");
                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("清理旧数据");
            cokingProcessMainService.deleteByClock(clock);
            //计数器
            AtomicReference<Integer> counter = new AtomicReference<>(1);
            groupMap.forEach((group, confList) -> {
                CokingProcessMainEntity cokingProcessMainEntity = new CokingProcessMainEntity();
                cokingProcessMainEntity.setInfoType("0");
                cokingProcessMainEntity.setSort(counter.getAndSet(counter.get() + 1));
                cokingProcessMainEntity.setCategory("day");
                CokingProcessConfEntity cokingProcessConfEntity = confList.get(0);
                cokingProcessMainEntity.setIndName(cokingProcessConfEntity.getExt3());
                cokingProcessMainEntity.setClock(clock);
                confList.forEach(conf -> {
                    String value = "";
                    switch (ProcessConfDataTypeEnum.getEumByCode(conf.getDataType())) {
                        case DATAPOINT:
                            List<String> points = new ArrayList<>();
                            points.add(conf.getPointNo());
                            Map<String, Object> pointsRealValue = dataPointApi.queryPointsRealValue(points);
                            value = pointsRealValue.get(conf.getPointNo()).toString();
                            break;
                        case IND:
                            List<ApiIndItemValueDTO> indValues = indItemApi.queryIndItemDefaultValue(conf.getPointNo());
                            if (!CollectionUtils.isEmpty(indValues)) {
                                value = indValues.get(indValues.size() - 1).getDataValue().toString();
                            }
                            break;
                        default:
                            break;
                    }
                    //保存数据
                    if(ObjectUtils.isNotEmpty(value)) {
                        if(conf.getExt2().equals(ProcessIndDataTypeEnum.LSPJ.getCode())) {
                            cokingProcessMainEntity.setAvgValue(value.toString());
                        } else if(conf.getExt2().equals(ProcessIndDataTypeEnum.LLZ.getCode())) {
                            cokingProcessMainEntity.setTheoryValue(value.toString());
                        } else if(conf.getExt2().equals(ProcessIndDataTypeEnum.SJZ.getCode())) {
                            cokingProcessMainEntity.setActualValue(value.toString());
                        } else if(conf.getExt2().equals(ProcessIndDataTypeEnum.JZZ.getCode())) {
                            cokingProcessMainEntity.setStandValue(value.toString());
                        } else if(conf.getExt2().equals(ProcessIndDataTypeEnum.SSSJ.getCode())) {
                            cokingProcessMainEntity.setRealValue(value.toString());
                        }
                    }
                });
                cokingProcessMainService.save(cokingProcessMainEntity);
            });
        } catch (Exception ex) {
            logger.error("RunCokingMainDayTask运行异常");
ansteel-biz/src/main/java/com/iailab/module/ansteel/job/task/RunCokingProdDayTask.java
@@ -9,25 +9,14 @@
import com.iailab.module.data.api.ind.IndItemApi;
import com.iailab.module.data.api.ind.dto.ApiIndItemValueDTO;
import com.iailab.module.data.api.point.DataPointApi;
import com.iailab.module.model.api.mcs.McsApi;
import com.iailab.module.model.api.mcs.dto.StScheduleSchemeDTO;
import com.iailab.module.model.api.mdk.MdkApi;
import com.iailab.module.model.api.mdk.dto.MdkScheduleReqDTO;
import com.iailab.module.model.api.mdk.dto.MdkScheduleRespDTO;
import com.iailab.module.model.enums.ScheduleTriggerMethodEnum;
import org.apache.commons.lang3.ObjectUtils;
import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import org.springframework.util.CollectionUtils;
import javax.annotation.Resource;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.*;
import java.util.stream.Collectors;
/**
 * 生成焦化日前生产信息
@@ -58,10 +47,6 @@
    public void run(String params) {
        logger.info("RunCokingProdDayTask,参数为:{}", params);
        try {
            Calendar calendar = Calendar.getInstance();
            calendar.set(Calendar.MILLISECOND, 0);
            calendar.set(Calendar.SECOND, 0);
            CokingProcessConfEntity queryParams = new CokingProcessConfEntity();
            queryParams.setIndType("prod_day");
            List<CokingProcessConfEntity> list = cokingProcessConfService.list(queryParams);
@@ -70,11 +55,11 @@
                return;
            }
            Calendar calendar1 = Calendar.getInstance();
            calendar1.set(Calendar.MILLISECOND, 0);
            calendar1.set(Calendar.SECOND, 0);
            calendar1.add(Calendar.DAY_OF_YEAR, -1);
            String clock = DateUtils.format(calendar1.getTime(), DateUtils.FORMAT_YEAR_MONTH_DAY);
            Calendar calendar = Calendar.getInstance();
            calendar.set(Calendar.MILLISECOND, 0);
            calendar.set(Calendar.SECOND, 0);
            calendar.add(Calendar.DAY_OF_YEAR, -1);
            String clock = DateUtils.format(calendar.getTime(), DateUtils.FORMAT_YEAR_MONTH_DAY);
            logger.info("清理旧数据");
            cokingProdDayService.deleteByClock(clock);
            for (CokingProcessConfEntity conf : list) {