鞍钢鲅鱼圈能源管控系统后端代码
liriming
4 天以前 9d0513b452c9aa8157588c507d94ba658c9293cd
炼焦异常溯源定时任务
已修改10个文件
455 ■■■■ 文件已修改
ansteel-biz/src/main/java/com/iailab/module/ansteel/coking/dto/CokingTraceConfDTO.java 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ansteel-biz/src/main/java/com/iailab/module/ansteel/coking/entity/CokingTraceConfEntity.java 12 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ansteel-biz/src/main/java/com/iailab/module/ansteel/coking/entity/CokingTraceIndEntity.java 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ansteel-biz/src/main/java/com/iailab/module/ansteel/coking/service/CokingTraceChartService.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ansteel-biz/src/main/java/com/iailab/module/ansteel/coking/service/impl/CokingTraceChartServiceImpl.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ansteel-biz/src/main/java/com/iailab/module/ansteel/coking/service/impl/CokingTraceConfServiceImpl.java 4 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ansteel-biz/src/main/java/com/iailab/module/ansteel/common/constant/CommonConstant.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ansteel-biz/src/main/java/com/iailab/module/ansteel/job/task/RunCokingProdDayTask.java 30 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ansteel-biz/src/main/java/com/iailab/module/ansteel/job/task/RunCokingTraceModel3Task.java 279 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ansteel-biz/src/main/java/com/iailab/module/ansteel/job/task/RunCokingTraceModelTask.java 111 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ansteel-biz/src/main/java/com/iailab/module/ansteel/coking/dto/CokingTraceConfDTO.java
@@ -23,9 +23,15 @@
    @Schema(description = "信息类型(0:生产情况,1:能源发生,2:能源消耗)")
    private String infoType;
    @Schema(description = "指标类型(prod_day,main,child)")
    @Schema(description = "指标类型")
    private String indType;
    @Schema(description = "数据类型(测点,指标)")
    private String dataType;
    @Schema(description = "测点编码")
    private String pointNo;
    @Schema(description = "指标编码")
    private String indCode;
ansteel-biz/src/main/java/com/iailab/module/ansteel/coking/entity/CokingTraceConfEntity.java
@@ -24,9 +24,17 @@
     */
    private String infoType;
    /**
     * 指标类型(prod_day,main,child)
     * 指标类型
     */
    private String indType;
    private String indType;
    /**
     * 数据类型(测点,指标)
     */
    private String dataType;
    /**
     * 测点编码
     */
    private String pointNo;
    /**
     * 指标编码
     */
ansteel-biz/src/main/java/com/iailab/module/ansteel/coking/entity/CokingTraceIndEntity.java
@@ -1,5 +1,6 @@
package com.iailab.module.ansteel.coking.entity;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
@@ -18,7 +19,7 @@
public class CokingTraceIndEntity implements Serializable {
    private static final long serialVersionUID = 1L;
    @TableId
    @TableId(type = IdType.ASSIGN_UUID)
    private String id;
    /**
ansteel-biz/src/main/java/com/iailab/module/ansteel/coking/service/CokingTraceChartService.java
@@ -13,4 +13,6 @@
 */
public interface CokingTraceChartService {
    List<CokingTraceChartEntity> list(Map<String, Object> params);
    void save(CokingTraceChartEntity cokingTraceChartEntity);
}
ansteel-biz/src/main/java/com/iailab/module/ansteel/coking/service/impl/CokingTraceChartServiceImpl.java
@@ -27,4 +27,9 @@
    public List<CokingTraceChartEntity> list(Map<String, Object> params) {
        return cokingTraceChartDao.selectList(new QueryWrapper<>());
    }
    @Override
    public void save(CokingTraceChartEntity cokingTraceChartEntity) {
        cokingTraceChartDao.insert(cokingTraceChartEntity);
    }
}
ansteel-biz/src/main/java/com/iailab/module/ansteel/coking/service/impl/CokingTraceConfServiceImpl.java
@@ -4,6 +4,8 @@
import com.iailab.module.ansteel.coking.dao.CokingTraceConfDao;
import com.iailab.module.ansteel.coking.entity.CokingTraceConfEntity;
import com.iailab.module.ansteel.coking.service.CokingTraceConfService;
import org.apache.commons.lang3.ObjectUtils;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@@ -24,6 +26,6 @@
    @Override
    public List<CokingTraceConfEntity> list(Map<String, Object> params) {
        return cokingTraceConfDao.selectList(new QueryWrapper<>());
        return cokingTraceConfDao.selectList(new QueryWrapper<CokingTraceConfEntity>().eq(ObjectUtils.isNotEmpty(params.get("indType")),"ind_type",params.get("indType")));
    }
}
ansteel-biz/src/main/java/com/iailab/module/ansteel/common/constant/CommonConstant.java
@@ -73,4 +73,5 @@
    String LDG_CHARRCODE = "LDG_PRED01";
    String STEAM_INDEX_CHARTCODE = "STEAM_INDEX";
    String COKE_INDEX_CHARTCODE = "COKE_INDEX";
}
ansteel-biz/src/main/java/com/iailab/module/ansteel/job/task/RunCokingProdDayTask.java
@@ -1,10 +1,8 @@
package com.iailab.module.ansteel.job.task;
import com.iailab.framework.common.util.date.DateUtils;
import com.iailab.module.ansteel.coking.entity.CokingAnalyIndEntity;
import com.iailab.module.ansteel.coking.entity.CokingProcessConfEntity;
import com.iailab.module.ansteel.coking.entity.CokingProdDayEntity;
import com.iailab.module.ansteel.coking.entity.CokingTraceIndEntity;
import com.iailab.module.ansteel.coking.service.CokingProcessConfService;
import com.iailab.module.ansteel.coking.service.CokingProdDayService;
import com.iailab.module.ansteel.coking.service.CokingTraceIndService;
@@ -19,7 +17,10 @@
import org.springframework.util.CollectionUtils;
import javax.annotation.Resource;
import java.util.*;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.List;
import java.util.Map;
/**
 * 生成焦化日前生产信息
@@ -66,15 +67,6 @@
            calendar.set(Calendar.SECOND, 0);
            calendar.add(Calendar.DAY_OF_YEAR, -1);
            String clock = DateUtils.format(calendar.getTime(), DateUtils.FORMAT_YEAR_MONTH_DAY);
            String clock2 = "";
            int hour = calendar.get(Calendar.HOUR_OF_DAY);
            if (hour == 0) {
                clock2 = clock.concat("-").concat("A");
            } else if (hour == 8) {
                clock2 = clock.concat("-").concat("B");
            } else if (hour == 16) {
                clock2 = clock.concat("-").concat("C");
            }
            logger.info("清理旧数据");
            cokingProdDayService.deleteByClock(clock);
            for (CokingProcessConfEntity conf : list) {
@@ -100,15 +92,11 @@
                            value = indValues.get(indValues.size() - 1).getDataValue().toString();
                        }
                        break;
                    case MODEL:
                        value = "100";
                        break;
                   default:
                        break;
                }
                saveProdDay(conf, value, clock);
                saveTraceInd(conf, value, clock2);
            }
        } catch (Exception ex) {
            logger.error("RunCokingProdDayTask运行异常");
@@ -116,16 +104,6 @@
        }
        logger.info("RunCokingProdDayTask运行完成");
    }
    private void saveTraceInd(CokingProcessConfEntity conf, String value, String clock) {
        CokingTraceIndEntity cokingTraceIndEntity = new CokingTraceIndEntity();
        cokingTraceIndEntity.setTitle(conf.getIndType());
        cokingTraceIndEntity.setClock(clock);
        cokingTraceIndEntity.setIndName(conf.getIndName());
        cokingTraceIndEntity.setIndValue(value);
        cokingTraceIndEntity.setIndUnit(conf.getIndUnit());
        cokingTraceIndService.save(cokingTraceIndEntity);
    }
    private void saveProdDay(CokingProcessConfEntity conf, String value, String clock) {
ansteel-biz/src/main/java/com/iailab/module/ansteel/job/task/RunCokingTraceModel3Task.java
@@ -1,11 +1,282 @@
package com.iailab.module.ansteel.job.task;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.iailab.framework.common.util.date.DateUtils;
import com.iailab.module.ansteel.coking.entity.*;
import com.iailab.module.ansteel.coking.service.*;
import com.iailab.module.ansteel.common.constant.CommonConstant;
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;
import com.iailab.module.data.api.point.DataPointApi;
import com.iailab.module.model.api.mcs.McsApi;
import com.iailab.module.model.api.mcs.dto.ChartParamDTO;
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.transaction.annotation.Transactional;
import org.springframework.util.CollectionUtils;
import java.util.*;
import java.util.stream.Collectors;
/**
 * 炼焦工序异常溯源
 * 炼焦工序-异常溯源
 *
 * @author PanZhibao
 * @author lirm
 * @Description
 * @createTime 2025年04月18日
 * @createTime 2025年04月21日
 */
public class RunCokingTraceModel3Task {
@Component("runCokingTraceModel3Task")
public class RunCokingTraceModel3Task implements ITask {
    private Logger logger = LoggerFactory.getLogger(getClass());
    @Autowired
    private CokingTraceReportService cokingTraceReportService;
    @Autowired
    private CokingTraceSuggestService cokingTraceSuggestService;
    @Autowired
    private CokingTraceDeviationService cokingTraceDeviationService;
    @Autowired
    private CokingAnalyIndService cokingAnalyIndService;
    @Autowired
    private CokingTraceIndService cokingTraceIndService;
    @Autowired
    private CokingTraceConfService cokingTraceConfService;
    @Autowired
    private CokingTraceChartService cokingTraceChartService;
    @Autowired
    private McsApi mcsApi;
    @Autowired
    private DataPointApi dataPointApi;
    @Autowired
    private IndItemApi indItemApi;
    private static final HashMap<String, Object> cokeColoumMap = new HashMap<String, Object>() {{
        put("cokeColoum0", "一级指标-偏差值");
        put("cokeColoum1", "二级指标-偏差值");
        put("cokeColoum2", "影响因素1-偏差值");
        put("cokeColoum3", "影响因素2-偏差值");
        put("cokeColoum4", "影响因素3-偏差值");
        put("cokeColoum5", "影响因素n-偏差值");
    }};
    private static final HashMap<String, Object> historyPointMap = new HashMap<String, Object>() {{
        put("LJSY001", "荒煤气发生");
        put("LJSY005", "耗热量");
    }};
    private static final String jsonStr="{\n" +
            "    \"result\": {\n" +
            "      \"cokeCOG\":[100.5,99.8],\n" +
            "      \"cokeHeat\":[3.7,3.8],\n" +
            "      \"cokeIndex\":[[0.8,0.7],[608,608],[1440,1460],[1346,1293],[0.8,0.7],[1372,1293]],\n" +
            "      \"cokeTotal\":\"炼焦吨焦耗热量因煤气流量偏高、煤气水分偏低而增加23,经模型计算,延建议调整煤气流量,预计可使吨焦耗热量指标降低17\",\n" +
            "      \"cokeColoum0\":[[0,13],[0,42],[0,34]],\n" +
            "      \"cokeColoum1\":[[13,12],[12,34],[24,42]],\n" +
            "      \"cokeColoum2\":[[27,45],[58,42],[70,31]],\n" +
            "      \"cokeColoum3\":[[108,56],[110,89],[185,21]],\n" +
            "      \"cokeColoum4\":[[199,13],[200,51],[197,34]],\n" +
            "      \"cokeColoum5\":[[147,33],[131,12],[122,13]],\n" +
            "      \"cokeHomePage\":[[202,42],[203,13],[204,45],[205,34],[206,17]],\n" +
            "      \"cokeHomeIndex\":[[90.4,90.2],[80.3,78],[103,100],[280,270]],\n" +
            "      \"cokeHomeIndexInfo\":\"2月18日甲班:吨焦耗热量异常\",\n" +
            "      \"cokeHomeErr\":\"2月18日煤气预热器前数据异常(无数据)\"\n" +
            "    }\n" +
            "}";
    @Override
    @Transactional
    public void run(String params) {
        logger.info("RunCokingTraceModel3Task,参数为:{}", params);
        try {
            Calendar calendar = Calendar.getInstance();
            calendar.set(Calendar.MILLISECOND, 0);
            calendar.set(Calendar.SECOND, 0);
            calendar.set(Calendar.MINUTE,0);
            calendar.add(Calendar.DAY_OF_YEAR, -1);
            String yesterday = DateUtils.format(calendar.getTime(), DateUtils.FORMAT_YEAR_MONTH_DAY);
//            int hour = calendar.get(Calendar.HOUR_OF_DAY);
            Date startDate = calendar.getTime();
            calendar.add(Calendar.HOUR, 8);
            Date endDate = calendar.getTime();
            int hour = 8;
            String clock = "";
            String analyClass = "";
            if (hour == 0) {
                clock = yesterday.concat("-").concat("A");
                analyClass = "甲班";
            } else if (hour == 8) {
                clock = yesterday.concat("-").concat("B");
                analyClass = "乙班";
            } else if (hour == 16) {
                clock = yesterday.concat("-").concat("C");
                analyClass = "丙班";
            }
            Map<String, Object> tMap = new HashMap<>();
            tMap.put("relId", UUID.randomUUID().toString());
            tMap.put("process", "炼焦工序");
            tMap.put("reportName", "炼焦工序");
            tMap.put("analyDate", yesterday);
            tMap.put("analyClass", analyClass);
            tMap.put("clock", clock);
            tMap.put("analyContent", "COG回收量异常;吨焦耗热量异常");
            tMap.put("startDate", startDate);
            tMap.put("endDate", endDate);
            JSONObject jsonObject= JSONObject.parseObject(jsonStr);
            JSONObject result = (JSONObject) JSON.toJSON(jsonObject.get("result"));
            if(!Objects.isNull(result)){
                saveTraceReport(tMap,result);
                saveTraceSuggest(tMap,result);
                saveTraceDeviation(tMap,result);
                saveAnalyInd(tMap,result);
                saveTraceInd(tMap,result);
                saveTraceChart(tMap,result,startDate,endDate);
            }
        } catch (Exception ex) {
            logger.error("RunCokingTraceModel3Task运行异常");
            ex.printStackTrace();
        }
        logger.info("RunCokingTraceModel3Task运行完成");
    }
    private void saveTraceReport(Map<String, Object> tMap,JSONObject result) {
        CokingTraceReportEntity reportEntity = new CokingTraceReportEntity();
        reportEntity.setId(tMap.get("relId").toString());
        reportEntity.setProcess(tMap.get("process").toString());
        reportEntity.setReportName(tMap.get("reportName").toString());
        reportEntity.setAnalyDate(tMap.get("analyDate").toString());
        reportEntity.setAnalyClass(tMap.get("analyClass").toString());
        reportEntity.setClock(tMap.get("clock").toString());
        reportEntity.setAnalyContent(tMap.get("analyContent").toString());
        reportEntity.setCreateDate(new Date());
        cokingTraceReportService.save(reportEntity);
    }
    private void saveTraceSuggest(Map<String, Object> tMap,JSONObject result) {
        String cokeTotal = result.get("cokeTotal").toString();
        if(StringUtils.isNotBlank(cokeTotal)){
            CokingTraceSuggestEntity suggestEntity = new CokingTraceSuggestEntity();
            suggestEntity.setRelId(tMap.get("relId").toString());
            suggestEntity.setProcess(tMap.get("process").toString());
            suggestEntity.setSugObj("LJ");
            suggestEntity.setClock(tMap.get("clock").toString());
            suggestEntity.setContent(cokeTotal);
            suggestEntity.setCreateDate(new Date());
            cokingTraceSuggestService.save(suggestEntity);
        }
    }
    private void saveTraceDeviation(Map<String, Object> tMap,JSONObject result) {
        List<ChartParamDTO> list = mcsApi.getChartParamList(CommonConstant.COKE_INDEX_CHARTCODE);
        Map<String, String> steamIndexMaps = list.stream().collect(Collectors.toMap(ChartParamDTO::getParamCode, e -> e.getParamValue()));
        for(int i=0;i<=5;i++){
            String cokeColoum = result.get("cokeColoum"+i).toString();
            if(StringUtils.isNotBlank(cokeColoum)){
                JSONArray responseArr = JSON.parseArray(cokeColoum);
                for (int j = 0; j < responseArr.size(); j++) {
                    JSONArray element = JSON.parseArray(responseArr.get(j).toString());
                    CokingTraceDeviationEntity deviationEntity = new CokingTraceDeviationEntity();
                    deviationEntity.setRelId(tMap.get("relId").toString());
                    deviationEntity.setProcess(tMap.get("process").toString());
                    deviationEntity.setClock(tMap.get("clock").toString());
                    deviationEntity.setSugObj("LJ");
                    deviationEntity.setGroupName(cokeColoumMap.get("cokeColoum"+i).toString());
                    deviationEntity.setIndName(steamIndexMaps.get(element.get(0).toString()));
//                    deviationEntity.setIndName(element.get(0).toString());
                    deviationEntity.setIndValue(element.get(1).toString());
                    deviationEntity.setCreateDate(new Date());
                    cokingTraceDeviationService.save(deviationEntity);
                }
            }
        }
    }
    private void saveAnalyInd(Map<String, Object> tMap,JSONObject result) {
        String[] analyContent = tMap.get("analyContent").toString().split(";");
        for(int i=0;i<analyContent.length;i++){
            CokingAnalyIndEntity analyIndEntity = new CokingAnalyIndEntity();
            analyIndEntity.setRelId(tMap.get("relId").toString());
            analyIndEntity.setAnalyType(tMap.get("process").toString());
            analyIndEntity.setAnalyDate(tMap.get("analyDate").toString());
            analyIndEntity.setAnalyClass(tMap.get("analyClass").toString());
            analyIndEntity.setAnalyContent(analyContent[i]);
            analyIndEntity.setSort(i+1);
            cokingAnalyIndService.save(analyIndEntity);
        }
    }
    private void saveTraceInd(Map<String, Object> tMap,JSONObject result) {
        Map<String,Object> map = new HashMap<>();
        map.put("indType","炼焦工序异常溯源");
        List<CokingTraceConfEntity> list = cokingTraceConfService.list(map);
        if (CollectionUtils.isEmpty(list)) {
            logger.info("ConfLis is Empty");
            return;
        }
        for (CokingTraceConfEntity conf : list) {
            if (StringUtils.isBlank(conf.getDataType())) {
                logger.info("DataType is Empty");
                continue;
            }
            if (StringUtils.isBlank(conf.getPointNo())) {
                logger.info("PointNo is Empty");
                continue;
            }
            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;
            }
            CokingTraceIndEntity cokingTraceIndEntity = new CokingTraceIndEntity();
            cokingTraceIndEntity.setRelId(tMap.get("relId").toString());
            cokingTraceIndEntity.setTitle(conf.getIndType());
            cokingTraceIndEntity.setClock(tMap.get("clock").toString());
            cokingTraceIndEntity.setIndName(conf.getIndName());
            cokingTraceIndEntity.setIndValue(value);
            cokingTraceIndEntity.setIndUnit(conf.getIndUnit());
            cokingTraceIndService.save(cokingTraceIndEntity);
        }
    }
    private void saveTraceChart(Map<String, Object> tMap, JSONObject result,Date startDate,Date endDate) {
        historyPointMap.forEach((key,value) ->{
            CokingTraceChartEntity cokingTraceChartEntity = new CokingTraceChartEntity();
            cokingTraceChartEntity.setRelId(tMap.get("relId").toString());
            cokingTraceChartEntity.setName(value.toString());
            cokingTraceChartEntity.setClock(tMap.get("clock").toString());
            cokingTraceChartEntity.setDataNo(key);
            cokingTraceChartEntity.setDataType("DATAPOINT");
            cokingTraceChartEntity.setStartTime(startDate);
            cokingTraceChartEntity.setEndTime(endDate);
            cokingTraceChartEntity.setCreateDate(new Date());
            cokingTraceChartService.save(cokingTraceChartEntity);
        });
    }
}
ansteel-biz/src/main/java/com/iailab/module/ansteel/job/task/RunCokingTraceModelTask.java
@@ -4,22 +4,24 @@
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.iailab.framework.common.util.date.DateUtils;
import com.iailab.module.ansteel.coking.entity.CokingAnalyIndEntity;
import com.iailab.module.ansteel.coking.entity.CokingTraceDeviationEntity;
import com.iailab.module.ansteel.coking.entity.CokingTraceReportEntity;
import com.iailab.module.ansteel.coking.entity.CokingTraceSuggestEntity;
import com.iailab.module.ansteel.coking.service.CokingAnalyIndService;
import com.iailab.module.ansteel.coking.service.CokingTraceDeviationService;
import com.iailab.module.ansteel.coking.service.CokingTraceReportService;
import com.iailab.module.ansteel.coking.service.CokingTraceSuggestService;
import com.iailab.module.ansteel.coking.entity.*;
import com.iailab.module.ansteel.coking.service.*;
import com.iailab.module.ansteel.common.constant.CommonConstant;
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;
import com.iailab.module.data.api.point.DataPointApi;
import com.iailab.module.model.api.mcs.McsApi;
import com.iailab.module.model.api.mcs.dto.ChartParamDTO;
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 java.util.*;
import java.util.stream.Collectors;
/**
 * 干熄焦工序-异常溯源
@@ -46,7 +48,19 @@
    private CokingAnalyIndService cokingAnalyIndService;
    @Autowired
    private CokingTraceIndService cokingTraceIndService;
    @Autowired
    private CokingTraceConfService cokingTraceConfService;
    @Autowired
    private McsApi mcsApi;
    @Autowired
    private DataPointApi dataPointApi;
    @Autowired
    private IndItemApi indItemApi;
    private static final HashMap<String, Object> steamFirstColoumMap = new HashMap<String, Object>() {{
        put("steamFirstColoum0", "一级指标-偏差值");
@@ -91,10 +105,11 @@
        logger.info("RunCokingTraceModelTask,参数为:{}", params);
        try {
            Calendar calendar = Calendar.getInstance();
            int hour = calendar.get(Calendar.HOUR_OF_DAY);
//            int hour = calendar.get(Calendar.HOUR_OF_DAY);
            String yesterday = DateUtils.format(DateUtils.addDateDays(new Date(), -1), DateUtils.FORMAT_YEAR_MONTH_DAY);
            String clock = "";
            String analyClass = "";
            int hour = 8;
            if (hour == 0) {
                clock = yesterday.concat("-").concat("A");
                analyClass = "甲班";
@@ -120,7 +135,8 @@
                saveTraceReport(tMap,result);
                saveTraceSuggest(tMap,result);
                saveTraceDeviation(tMap,result);
                saveTraceAnalyInd(tMap,result);
                saveAnalyInd(tMap,result);
                saveTraceInd(tMap,result);
            }
        } catch (Exception ex) {
            logger.error("RunCokingTraceModelTask运行异常");
@@ -160,9 +176,8 @@
    }
    private void saveTraceDeviation(Map<String, Object> tMap,JSONObject result) {
//        String chartCode = "STEAM_INDEX";
//        List<ChartParamDTO> list = mcsApi.getChartParamList(chartCode);
//        Map<String, String> steamIndexMaps = list.stream().collect(Collectors.toMap(ChartParamDTO::getParamCode, e -> e.getParamValue()));
        List<ChartParamDTO> list = mcsApi.getChartParamList(CommonConstant.STEAM_INDEX_CHARTCODE);
        Map<String, String> steamIndexMaps = list.stream().collect(Collectors.toMap(ChartParamDTO::getParamCode, e -> e.getParamValue()));
        for(int i=0;i<=5;i++){
            String steamFirstColoum = result.get("steamFirstColoum"+i).toString();
            if(StringUtils.isNotBlank(steamFirstColoum)){
@@ -175,8 +190,7 @@
                    deviationEntity.setClock(tMap.get("clock").toString());
                    deviationEntity.setSugObj("1#");
                    deviationEntity.setGroupName(steamFirstColoumMap.get("steamFirstColoum"+i).toString());
//                    deviationEntity.setIndName(steamIndexMaps.get(element.get(0).toString()));
                    deviationEntity.setIndName(element.get(0).toString());
                    deviationEntity.setIndName(steamIndexMaps.get(element.get(0).toString()));
                    deviationEntity.setIndValue(element.get(1).toString());
                    deviationEntity.setCreateDate(new Date());
                    cokingTraceDeviationService.save(deviationEntity);
@@ -206,13 +220,64 @@
    }
    private void saveTraceAnalyInd(Map<String, Object> tMap,JSONObject result) {
        CokingAnalyIndEntity analyIndEntity = new CokingAnalyIndEntity();
        analyIndEntity.setRelId(tMap.get("relId").toString());
        analyIndEntity.setAnalyType(tMap.get("process").toString());
        analyIndEntity.setAnalyDate(tMap.get("analyDate").toString());
        analyIndEntity.setAnalyClass(tMap.get("analyClass").toString());
        analyIndEntity.setAnalyContent(tMap.get("analyContent").toString());
        cokingAnalyIndService.save(analyIndEntity);
    private void saveAnalyInd(Map<String, Object> tMap,JSONObject result) {
        String[] analyContent = tMap.get("analyContent").toString().split(";");
        for(int i=0;i<analyContent.length;i++){
            CokingAnalyIndEntity analyIndEntity = new CokingAnalyIndEntity();
            analyIndEntity.setRelId(tMap.get("relId").toString());
            analyIndEntity.setAnalyType(tMap.get("process").toString());
            analyIndEntity.setAnalyDate(tMap.get("analyDate").toString());
            analyIndEntity.setAnalyClass(tMap.get("analyClass").toString());
            analyIndEntity.setAnalyContent(analyContent[i]);
            analyIndEntity.setSort(i+1);
            cokingAnalyIndService.save(analyIndEntity);
        }
    }
    private void saveTraceInd(Map<String, Object> tMap,JSONObject result) {
        Map<String,Object> map = new HashMap<>();
        map.put("indType","干熄焦工序异常溯源");
        List<CokingTraceConfEntity> list = cokingTraceConfService.list(map);
        if (CollectionUtils.isEmpty(list)) {
            logger.info("ConfLis is Empty");
            return;
        }
        for (CokingTraceConfEntity conf : list) {
            if (StringUtils.isBlank(conf.getDataType())) {
                logger.info("DataType is Empty");
                continue;
            }
            if (StringUtils.isBlank(conf.getPointNo())) {
                logger.info("PointNo is Empty");
                continue;
            }
            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;
            }
            CokingTraceIndEntity cokingTraceIndEntity = new CokingTraceIndEntity();
            cokingTraceIndEntity.setRelId(tMap.get("relId").toString());
            cokingTraceIndEntity.setTitle(conf.getIndType());
            cokingTraceIndEntity.setClock(tMap.get("clock").toString());
            cokingTraceIndEntity.setIndName(conf.getIndName());
            cokingTraceIndEntity.setIndValue(value);
            cokingTraceIndEntity.setIndUnit(conf.getIndUnit());
            cokingTraceIndService.save(cokingTraceIndEntity);
        }
    }
}