From 2f5864f98743fcc1b32d1eb94015adf70c1a9bf5 Mon Sep 17 00:00:00 2001 From: 潘志宝 <979469083@qq.com> Date: 星期一, 05 五月 2025 20:11:51 +0800 Subject: [PATCH] Merge remote-tracking branch 'origin/master' --- ansteel-biz/src/main/java/com/iailab/module/ansteel/job/task/RunCokingTraceModelGXJTask.java | 161 +-------- ansteel-biz/src/main/java/com/iailab/module/ansteel/job/task/RunCokingTraceModelHCTask.java | 164 +--------- ansteel-biz/src/main/java/com/iailab/module/ansteel/coking/service/CokingAnalyIndService.java | 4 ansteel-biz/src/main/java/com/iailab/module/ansteel/coking/service/impl/CokingTraceSuggestServiceImpl.java | 16 + ansteel-biz/src/main/java/com/iailab/module/ansteel/coking/service/impl/CokingTraceDeviationServiceImpl.java | 75 ++++ ansteel-biz/src/main/java/com/iailab/module/ansteel/coking/service/CokingTraceDeviationService.java | 3 ansteel-biz/src/main/java/com/iailab/module/ansteel/coking/service/impl/CokingTraceReportServiceImpl.java | 3 ansteel-biz/src/main/java/com/iailab/module/ansteel/coking/service/impl/CokingTraceIndServiceImpl.java | 2 ansteel-biz/src/main/resources/application.yaml | 1 ansteel-biz/src/main/java/com/iailab/module/ansteel/coking/service/impl/CokingAnalyIndServiceImpl.java | 27 + ansteel-biz/src/main/resources/application-dev.yaml | 7 ansteel-biz/src/main/java/com/iailab/module/ansteel/job/task/RunCokingTraceModelBMTask.java | 168 +--------- ansteel-biz/src/main/java/com/iailab/module/ansteel/job/task/RunCokingTraceModelLJTask.java | 172 +--------- ansteel-biz/src/main/java/com/iailab/module/ansteel/job/task/RunPeakValleyFlatTask.java | 126 ++++--- ansteel-biz/src/main/java/com/iailab/module/ansteel/coking/service/CokingTraceReportService.java | 2 ansteel-biz/src/main/java/com/iailab/module/ansteel/coking/service/CokingTraceSuggestService.java | 2 16 files changed, 283 insertions(+), 650 deletions(-) diff --git a/ansteel-biz/src/main/java/com/iailab/module/ansteel/coking/service/CokingAnalyIndService.java b/ansteel-biz/src/main/java/com/iailab/module/ansteel/coking/service/CokingAnalyIndService.java index e3ac3bd..a79086f 100644 --- a/ansteel-biz/src/main/java/com/iailab/module/ansteel/coking/service/CokingAnalyIndService.java +++ b/ansteel-biz/src/main/java/com/iailab/module/ansteel/coking/service/CokingAnalyIndService.java @@ -16,5 +16,7 @@ void save(List<CokingAnalyIndEntity> entityList); - void delete(String analyType, String analyDate, String analyClass); + void delete(String analyType, String analyDate); + + void saveAnalyInd(String relId, String process, String analyDate, String analyContent); } \ No newline at end of file diff --git a/ansteel-biz/src/main/java/com/iailab/module/ansteel/coking/service/CokingTraceDeviationService.java b/ansteel-biz/src/main/java/com/iailab/module/ansteel/coking/service/CokingTraceDeviationService.java index d71ae54..11b620a 100644 --- a/ansteel-biz/src/main/java/com/iailab/module/ansteel/coking/service/CokingTraceDeviationService.java +++ b/ansteel-biz/src/main/java/com/iailab/module/ansteel/coking/service/CokingTraceDeviationService.java @@ -1,6 +1,7 @@ package com.iailab.module.ansteel.coking.service; +import com.alibaba.fastjson.JSONObject; import com.iailab.module.ansteel.coking.entity.CokingTraceDeviationEntity; import java.util.List; @@ -16,4 +17,6 @@ List<CokingTraceDeviationEntity> list(Map<String, Object> params); void save(List<CokingTraceDeviationEntity> entityList); + + void saveTraceDeviation(String relId, String process, String clock, JSONObject result, String chartcode, String row, String sugObj); } \ No newline at end of file diff --git a/ansteel-biz/src/main/java/com/iailab/module/ansteel/coking/service/CokingTraceReportService.java b/ansteel-biz/src/main/java/com/iailab/module/ansteel/coking/service/CokingTraceReportService.java index 313e683..0ee2b53 100644 --- a/ansteel-biz/src/main/java/com/iailab/module/ansteel/coking/service/CokingTraceReportService.java +++ b/ansteel-biz/src/main/java/com/iailab/module/ansteel/coking/service/CokingTraceReportService.java @@ -14,7 +14,7 @@ public interface CokingTraceReportService { List<CokingTraceReportEntity> list(Map<String, Object> params); - String save(String process, String reportName, String analyDate, String analyClass, String clock, String analyContent); + String save(String process, String reportName, String analyDate, String clock, String analyContent); String save(CokingTraceReportEntity reportEntity); } \ No newline at end of file diff --git a/ansteel-biz/src/main/java/com/iailab/module/ansteel/coking/service/CokingTraceSuggestService.java b/ansteel-biz/src/main/java/com/iailab/module/ansteel/coking/service/CokingTraceSuggestService.java index d7ecafb..da91d79 100644 --- a/ansteel-biz/src/main/java/com/iailab/module/ansteel/coking/service/CokingTraceSuggestService.java +++ b/ansteel-biz/src/main/java/com/iailab/module/ansteel/coking/service/CokingTraceSuggestService.java @@ -20,4 +20,6 @@ void insert(List<CokingTraceSuggestEntity> suggestEntitieList); List<CokingTraceSuggestEntity> getAbnormalData(Map<String, Object> params); + + void saveTraceSuggest(String relId, String process, String clock, String total, String sugObj); } \ No newline at end of file diff --git a/ansteel-biz/src/main/java/com/iailab/module/ansteel/coking/service/impl/CokingAnalyIndServiceImpl.java b/ansteel-biz/src/main/java/com/iailab/module/ansteel/coking/service/impl/CokingAnalyIndServiceImpl.java index 756fac2..58c9d7f 100644 --- a/ansteel-biz/src/main/java/com/iailab/module/ansteel/coking/service/impl/CokingAnalyIndServiceImpl.java +++ b/ansteel-biz/src/main/java/com/iailab/module/ansteel/coking/service/impl/CokingAnalyIndServiceImpl.java @@ -9,6 +9,7 @@ import org.springframework.stereotype.Service; import javax.annotation.Resource; +import java.util.ArrayList; import java.util.List; import java.util.Map; @@ -41,13 +42,33 @@ } @Override - public void delete(String analyType, String analyDate, String analyClass) { + public void delete(String analyType, String analyDate) { QueryWrapper<CokingAnalyIndEntity> queryWrapper = new QueryWrapper<>(); queryWrapper.eq("analy_type", analyType) - .eq("analy_date", analyDate) - .eq("analy_class", analyClass); + .eq("analy_date", analyDate); cokingAnalyIndDao.delete(queryWrapper); } + + @Override + public void saveAnalyInd(String relId, String process, String analyDate, String analyContent) { + if (StringUtils.isBlank(analyContent)) { + return; + } + String[] analyContentArr = analyContent.split(";"); + List<CokingAnalyIndEntity> entityList = new ArrayList<>(); + for (int i = 0; i < analyContentArr.length; i++) { + CokingAnalyIndEntity analyIndEntity = new CokingAnalyIndEntity(); + analyIndEntity.setRelId(relId); + analyIndEntity.setAnalyType(process); + analyIndEntity.setAnalyDate(analyDate); + analyIndEntity.setAnalyContent(analyContentArr[i]); + analyIndEntity.setSort(i + 1); + entityList.add(analyIndEntity); + } + // 清理旧数据 + delete(process, analyDate); + cokingAnalyIndDao.insert(entityList); + } } \ No newline at end of file diff --git a/ansteel-biz/src/main/java/com/iailab/module/ansteel/coking/service/impl/CokingTraceDeviationServiceImpl.java b/ansteel-biz/src/main/java/com/iailab/module/ansteel/coking/service/impl/CokingTraceDeviationServiceImpl.java index df64ea1..50a8f0d 100644 --- a/ansteel-biz/src/main/java/com/iailab/module/ansteel/coking/service/impl/CokingTraceDeviationServiceImpl.java +++ b/ansteel-biz/src/main/java/com/iailab/module/ansteel/coking/service/impl/CokingTraceDeviationServiceImpl.java @@ -1,15 +1,24 @@ package com.iailab.module.ansteel.coking.service.impl; +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.iailab.module.ansteel.coking.dao.CokingTraceDeviationDao; import com.iailab.module.ansteel.coking.entity.CokingTraceDeviationEntity; import com.iailab.module.ansteel.coking.service.CokingTraceDeviationService; +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.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import org.springframework.util.CollectionUtils; +import java.math.BigDecimal; +import java.util.ArrayList; import java.util.List; import java.util.Map; +import java.util.stream.Collectors; /** * 焦化工序影响因数偏差值 @@ -22,6 +31,9 @@ @Autowired private CokingTraceDeviationDao cokingTraceDeviationDao; + + @Autowired + private McsApi mcsApi; @Override public List<CokingTraceDeviationEntity> list(Map<String, Object> params) { @@ -38,4 +50,67 @@ public void save(List<CokingTraceDeviationEntity> entityList) { cokingTraceDeviationDao.insert(entityList); } + + @Override + public void saveTraceDeviation(String relId, String process, String clock, JSONObject result, String chartcode, String row, String sugObj) { + List<ChartParamDTO> list = mcsApi.getChartParamList(chartcode); + Map<String, String> indexMaps = list.stream().collect(Collectors.toMap(ChartParamDTO::getParamCode, e -> e.getParamName())); + + List<String> rowKeys = new ArrayList<>(); + result.forEach((key, value) -> { + if (StringUtils.isNotBlank(key) && key.contains(row)) { + rowKeys.add(key); + } + + }); + + List<CokingTraceDeviationEntity> entityList = new ArrayList<>(); + for (String key : rowKeys) { + JSONArray rowArr = JSON.parseArray(result.get(key).toString()); + if (CollectionUtils.isEmpty(rowArr)) { + continue; + } + CokingTraceDeviationEntity entity = new CokingTraceDeviationEntity(); + entity.setRelId(relId); + entity.setProcess(process); + entity.setClock(clock); + entity.setSugObj(sugObj); + + entity.setInd1Name(indexMaps.get(new BigDecimal(rowArr.getJSONArray(0).get(0).toString()).setScale(0, BigDecimal.ROUND_HALF_UP).toString())); + entity.setInd1Value(rowArr.getJSONArray(0).get(1).toString()); + entity.setInd1Unit(""); + + entity.setInd2Name(indexMaps.get(new BigDecimal(rowArr.getJSONArray(1).get(0).toString()).setScale(0, BigDecimal.ROUND_HALF_UP).toString())); + entity.setInd2Value(rowArr.getJSONArray(1).get(1).toString()); + entity.setInd2Unit(""); + + if (rowArr.size() > 2) { + entity.setFac1Name(indexMaps.get(new BigDecimal(rowArr.getJSONArray(2).get(0).toString()).setScale(0, BigDecimal.ROUND_HALF_UP).toString())); + entity.setFac1Value(rowArr.getJSONArray(2).get(1).toString()); + entity.setFac1Unit(""); + } + if (rowArr.size() > 3) { + entity.setFac2Name(indexMaps.get(new BigDecimal(rowArr.getJSONArray(3).get(0).toString()).setScale(0, BigDecimal.ROUND_HALF_UP).toString())); + entity.setFac2Value(rowArr.getJSONArray(3).get(1).toString()); + entity.setFac2Unit(""); + } + if (rowArr.size() > 4) { + entity.setFac3Name(indexMaps.get(new BigDecimal(rowArr.getJSONArray(4).get(0).toString()).setScale(0, BigDecimal.ROUND_HALF_UP).toString())); + entity.setFac3Value(rowArr.getJSONArray(4).get(1).toString()); + entity.setFac3Unit(""); + } + if (rowArr.size() > 5) { + entity.setFac4Name(indexMaps.get(new BigDecimal(rowArr.getJSONArray(5).get(0).toString()).setScale(0, BigDecimal.ROUND_HALF_UP).toString())); + entity.setFac4Value(rowArr.getJSONArray(5).get(1).toString()); + entity.setFac4Unit(""); + } + if (rowArr.size() > 6) { + entity.setFac5Name(indexMaps.get(new BigDecimal(rowArr.getJSONArray(6).get(0).toString()).setScale(0, BigDecimal.ROUND_HALF_UP).toString())); + entity.setFac5Value(rowArr.getJSONArray(6).get(1).toString()); + entity.setFac5Unit(""); + } + entityList.add(entity); + } + cokingTraceDeviationDao.insert(entityList); + } } \ No newline at end of file diff --git a/ansteel-biz/src/main/java/com/iailab/module/ansteel/coking/service/impl/CokingTraceIndServiceImpl.java b/ansteel-biz/src/main/java/com/iailab/module/ansteel/coking/service/impl/CokingTraceIndServiceImpl.java index 2aeb98e..2df5eaa 100644 --- a/ansteel-biz/src/main/java/com/iailab/module/ansteel/coking/service/impl/CokingTraceIndServiceImpl.java +++ b/ansteel-biz/src/main/java/com/iailab/module/ansteel/coking/service/impl/CokingTraceIndServiceImpl.java @@ -71,7 +71,7 @@ if (StringUtils.isBlank(conf.getPointNo())) { continue; } - String value = ""; + String value = "0"; switch (ProcessConfDataTypeEnum.getEumByCode(conf.getDataType())) { case DATAPOINT: List<String> points = new ArrayList<>(); diff --git a/ansteel-biz/src/main/java/com/iailab/module/ansteel/coking/service/impl/CokingTraceReportServiceImpl.java b/ansteel-biz/src/main/java/com/iailab/module/ansteel/coking/service/impl/CokingTraceReportServiceImpl.java index 8b27957..0f3261a 100644 --- a/ansteel-biz/src/main/java/com/iailab/module/ansteel/coking/service/impl/CokingTraceReportServiceImpl.java +++ b/ansteel-biz/src/main/java/com/iailab/module/ansteel/coking/service/impl/CokingTraceReportServiceImpl.java @@ -30,7 +30,7 @@ } @Override - public String save(String process, String reportName, String analyDate, String analyClass, String clock, String analyContent) { + public String save(String process, String reportName, String analyDate, String clock, String analyContent) { // 先删除,防止重复 QueryWrapper<CokingTraceReportEntity> queryWrapper = new QueryWrapper<>(); queryWrapper.eq("process", process); @@ -43,7 +43,6 @@ entity.setProcess(process); entity.setReportName(process + "异常溯源报告"); entity.setAnalyDate(analyDate); - entity.setAnalyClass(analyClass); entity.setClock(clock); entity.setAnalyContent(analyContent); entity.setCreateDate(new Date()); diff --git a/ansteel-biz/src/main/java/com/iailab/module/ansteel/coking/service/impl/CokingTraceSuggestServiceImpl.java b/ansteel-biz/src/main/java/com/iailab/module/ansteel/coking/service/impl/CokingTraceSuggestServiceImpl.java index 6da3ddf..d9099e3 100644 --- a/ansteel-biz/src/main/java/com/iailab/module/ansteel/coking/service/impl/CokingTraceSuggestServiceImpl.java +++ b/ansteel-biz/src/main/java/com/iailab/module/ansteel/coking/service/impl/CokingTraceSuggestServiceImpl.java @@ -10,6 +10,7 @@ import org.springframework.stereotype.Service; import java.util.Calendar; +import java.util.Date; import java.util.List; import java.util.Map; @@ -63,4 +64,19 @@ .orderByAsc("create_date"); return cokingTraceSuggestDao.selectList(queryWrapper); } + + @Override + public void saveTraceSuggest(String relId, String process, String clock, String total, String sugObj) { + if (StringUtils.isBlank(total)) { + return; + } + CokingTraceSuggestEntity suggestEntity = new CokingTraceSuggestEntity(); + suggestEntity.setRelId(relId); + suggestEntity.setProcess(process); + suggestEntity.setSugObj(sugObj); + suggestEntity.setClock(clock); + suggestEntity.setContent(total); + suggestEntity.setCreateDate(new Date()); + cokingTraceSuggestDao.insert(suggestEntity); + } } \ No newline at end of file diff --git a/ansteel-biz/src/main/java/com/iailab/module/ansteel/job/task/RunCokingTraceModelBMTask.java b/ansteel-biz/src/main/java/com/iailab/module/ansteel/job/task/RunCokingTraceModelBMTask.java index 1e08094..eb1c449 100644 --- a/ansteel-biz/src/main/java/com/iailab/module/ansteel/job/task/RunCokingTraceModelBMTask.java +++ b/ansteel-biz/src/main/java/com/iailab/module/ansteel/job/task/RunCokingTraceModelBMTask.java @@ -1,28 +1,20 @@ 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.CokingAnalyIndEntity; -import com.iailab.module.ansteel.coking.entity.CokingTraceDeviationEntity; -import com.iailab.module.ansteel.coking.entity.CokingTraceSuggestEntity; import com.iailab.module.ansteel.coking.service.*; import com.iailab.module.ansteel.common.constant.CommonConstant; import com.iailab.module.model.api.mcs.McsApi; -import com.iailab.module.model.api.mcs.dto.ChartParamDTO; import com.iailab.module.model.api.mdk.MdkApi; -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.math.BigDecimal; -import java.util.*; -import java.util.stream.Collectors; +import java.util.Calendar; +import java.util.Date; +import java.util.Objects; /** * 备煤工序异常溯源 @@ -51,9 +43,6 @@ private CokingTraceIndService cokingTraceIndService; @Autowired - private CokingTraceConfService cokingTraceConfService; - - @Autowired private CokingTraceChartService cokingTraceChartService; @Autowired @@ -70,11 +59,13 @@ private final static String indType = "备煤工序异常溯源"; - private final static String coalRow = "coalRow"; + private final static String row = "coalRow"; + + private final static String total = "coalPrepElecTotal1"; private static final String jsonStr = "{\n" + " " + "\"result\": {\n" + - "\"coalHomeIndexInfo\":\"2025-04-28 甲班 备煤耗电偏高\"," + + "\"coalHomeIndexInfo\":\"备煤耗电偏高\"," + "\"coalPrepElec\":[1600.8,1613.5]," + "\"coalPrepElecTotal1\":\"备煤耗电量偏高,经模型计算,原因和调整建议如下:煤量异常,当前值2000, 建议调整煤量至区间[765.0,1020.0]\"," + "\"coalPrepElecTime\":[[0.3,0.3],[1700.31,1900.2],[120.3]]," + @@ -95,34 +86,12 @@ calendar.set(Calendar.MILLISECOND, 0); calendar.set(Calendar.SECOND, 0); calendar.set(Calendar.MINUTE, 0); - int hour = calendar.get(Calendar.HOUR_OF_DAY); - Date startDate = calendar.getTime(); + + calendar.set(Calendar.HOUR_OF_DAY, 0); Date endDate = calendar.getTime(); - String clock = ""; - String analyClass = ""; - if (hour >= 8 && hour < 16) { - calendar.set(Calendar.HOUR_OF_DAY, 0); - startDate = calendar.getTime(); - calendar.add(Calendar.HOUR_OF_DAY, 8); - endDate = calendar.getTime(); - clock = DateUtils.format(startDate).concat("-").concat("A"); - analyClass = "甲班"; - } else if (hour >= 16 && hour < 24) { - calendar.set(Calendar.HOUR_OF_DAY, 8); - startDate = calendar.getTime(); - calendar.add(Calendar.HOUR_OF_DAY, 8); - endDate = calendar.getTime(); - clock = DateUtils.format(startDate).concat("-").concat("B"); - analyClass = "乙班"; - } else if (hour >= 0 && hour < 8) { - calendar.add(Calendar.DAY_OF_YEAR, -1); - calendar.set(Calendar.HOUR_OF_DAY, 16); - startDate = calendar.getTime(); - calendar.add(Calendar.HOUR_OF_DAY, 8); - endDate = calendar.getTime(); - clock = DateUtils.format(startDate).concat("-").concat("B"); - analyClass = "丙班"; - } + calendar.add(Calendar.DAY_OF_YEAR, -1); + Date startDate = calendar.getTime(); + String clock = DateUtils.format(startDate); // 调用模型 /* MdkScheduleReqDTO dto = new MdkScheduleReqDTO(); @@ -145,17 +114,17 @@ // 保存报告 String analyDate = DateUtils.format(startDate); - String analyContent = result.getString("coalHomeIndexInfo"); - String relId = cokingTraceReportService.save(process, reportName, analyDate, analyClass, clock, analyContent); + String analyContent = clock + " " + result.getString("coalHomeIndexInfo"); + String relId = cokingTraceReportService.save(process, reportName, analyDate, clock, analyContent); // 保存一级分析指标 - saveAnalyInd(relId, process, analyDate, analyClass, analyContent); + cokingAnalyIndService.saveAnalyInd(relId, process, analyDate, analyContent); // 保存优化建议 - saveTraceSuggest(relId, process, clock, result); + cokingTraceSuggestService.saveTraceSuggest(relId, process, clock, total, SugObj); // 保存偏差值 - saveTraceDeviation(relId, process, clock, result); + cokingTraceDeviationService.saveTraceDeviation(relId, process, clock, result, CommonConstant.COKE_INDEX_CHARTCODE, row, SugObj); // 保存溯源指标 cokingTraceIndService.saveTraceInd(relId, indType, clock); @@ -168,108 +137,5 @@ ex.printStackTrace(); } logger.info("RunCokingTraceModelBMTask运行完成"); - } - - - public void saveTraceSuggest(String relId, String process, String clock, JSONObject result) { - String coalTotal = result.get("coalPrepElecTotal1").toString(); - if (StringUtils.isBlank(coalTotal)) { - logger.info("coalPrepElecTotal1 is null"); - return; - } - CokingTraceSuggestEntity suggestEntity = new CokingTraceSuggestEntity(); - suggestEntity.setRelId(relId); - suggestEntity.setProcess(process); - suggestEntity.setSugObj(SugObj); - suggestEntity.setClock(clock); - suggestEntity.setContent(coalTotal); - suggestEntity.setCreateDate(new Date()); - cokingTraceSuggestService.save(suggestEntity); - } - - @Transactional - public void saveTraceDeviation(String relId, String process, String clock, JSONObject result) { - List<ChartParamDTO> list = mcsApi.getChartParamList(CommonConstant.COAL_INDEX_CHARTCODE); - Map<String, String> steamIndexMaps = list.stream().collect(Collectors.toMap(ChartParamDTO::getParamCode, e -> e.getParamName())); - - List<String> coalRowKeys = new ArrayList<>(); - result.forEach((key, value) -> { - if (StringUtils.isNotBlank(key) && key.contains(coalRow)) { - coalRowKeys.add(key); - } - - }); - - List<CokingTraceDeviationEntity> entityList = new ArrayList<>(); - for (String key : coalRowKeys) { - JSONArray rowArr = JSON.parseArray(result.get(key).toString()); - if (CollectionUtils.isEmpty(rowArr)) { - continue; - } - CokingTraceDeviationEntity entity = new CokingTraceDeviationEntity(); - entity.setRelId(relId); - entity.setProcess(process); - entity.setClock(clock); - entity.setSugObj(SugObj); - - entity.setInd1Name(steamIndexMaps.get(new BigDecimal(rowArr.getJSONArray(0).get(0).toString()).setScale(0,BigDecimal.ROUND_HALF_UP).toString())); - entity.setInd1Value(rowArr.getJSONArray(0).get(1).toString()); - entity.setInd1Unit(""); - - entity.setInd2Name(steamIndexMaps.get(new BigDecimal(rowArr.getJSONArray(1).get(0).toString()).setScale(0,BigDecimal.ROUND_HALF_UP).toString())); - entity.setInd2Value(rowArr.getJSONArray(1).get(1).toString()); - entity.setInd2Unit(""); - - if (rowArr.size() > 2) { - entity.setFac1Name(steamIndexMaps.get(new BigDecimal(rowArr.getJSONArray(2).get(0).toString()).setScale(0,BigDecimal.ROUND_HALF_UP).toString())); - entity.setFac1Value(rowArr.getJSONArray(2).get(1).toString()); - entity.setFac1Unit(""); - } - if (rowArr.size() > 3) { - entity.setFac2Name(steamIndexMaps.get(new BigDecimal(rowArr.getJSONArray(3).get(0).toString()).setScale(0,BigDecimal.ROUND_HALF_UP).toString())); - entity.setFac2Value(rowArr.getJSONArray(3).get(1).toString()); - entity.setFac2Unit(""); - } - if (rowArr.size() > 4) { - entity.setFac3Name(steamIndexMaps.get(new BigDecimal(rowArr.getJSONArray(4).get(0).toString()).setScale(0,BigDecimal.ROUND_HALF_UP).toString())); - entity.setFac3Value(rowArr.getJSONArray(4).get(1).toString()); - entity.setFac3Unit(""); - } - if (rowArr.size() > 5) { - entity.setFac4Name(steamIndexMaps.get(new BigDecimal(rowArr.getJSONArray(5).get(0).toString()).setScale(0,BigDecimal.ROUND_HALF_UP).toString())); - entity.setFac4Value(rowArr.getJSONArray(5).get(1).toString()); - entity.setFac4Unit(""); - } - if (rowArr.size() > 6) { - entity.setFac5Name(steamIndexMaps.get(new BigDecimal(rowArr.getJSONArray(6).get(0).toString()).setScale(0,BigDecimal.ROUND_HALF_UP).toString())); - entity.setFac5Value(rowArr.getJSONArray(6).get(1).toString()); - entity.setFac5Unit(""); - } - entityList.add(entity); - } - - cokingTraceDeviationService.save(entityList); - } - - public void saveAnalyInd(String relId, String process, String analyDate, String analyClass, String analyContent) { - if (StringUtils.isBlank(analyContent)) { - logger.info("analyContent is null"); - return; - } - String[] analyContentArr = analyContent.split(";"); - List<CokingAnalyIndEntity> entityList = new ArrayList<>(); - for (int i = 0; i < analyContentArr.length; i++) { - CokingAnalyIndEntity analyIndEntity = new CokingAnalyIndEntity(); - analyIndEntity.setRelId(relId); - analyIndEntity.setAnalyType(process); - analyIndEntity.setAnalyDate(analyDate); - analyIndEntity.setAnalyClass(analyClass); - analyIndEntity.setAnalyContent(analyContentArr[i]); - analyIndEntity.setSort(i + 1); - entityList.add(analyIndEntity); - } - // 清理旧数据 - cokingAnalyIndService.delete(process, analyDate, analyClass); - cokingAnalyIndService.save(entityList); } } \ No newline at end of file diff --git a/ansteel-biz/src/main/java/com/iailab/module/ansteel/job/task/RunCokingTraceModelGXJTask.java b/ansteel-biz/src/main/java/com/iailab/module/ansteel/job/task/RunCokingTraceModelGXJTask.java index 40733e5..b9d75b8 100644 --- a/ansteel-biz/src/main/java/com/iailab/module/ansteel/job/task/RunCokingTraceModelGXJTask.java +++ b/ansteel-biz/src/main/java/com/iailab/module/ansteel/job/task/RunCokingTraceModelGXJTask.java @@ -1,28 +1,20 @@ 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.CokingAnalyIndEntity; -import com.iailab.module.ansteel.coking.entity.CokingTraceDeviationEntity; -import com.iailab.module.ansteel.coking.entity.CokingTraceSuggestEntity; import com.iailab.module.ansteel.coking.service.*; import com.iailab.module.ansteel.common.constant.CommonConstant; import com.iailab.module.model.api.mcs.McsApi; -import com.iailab.module.model.api.mcs.dto.ChartParamDTO; import com.iailab.module.model.api.mdk.MdkApi; -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.math.BigDecimal; -import java.util.*; -import java.util.stream.Collectors; +import java.util.Calendar; +import java.util.Date; +import java.util.Objects; /** * 干熄焦工序-异常溯源 @@ -63,18 +55,20 @@ private final static String indType = "干熄焦工序异常溯源"; - private final static String steamRow = "steamRow"; + private final static String row = "steamRow"; + + private final static String total = "steamTotal1"; private final static String SugObj = "GXJ"; - private static final String jsonStr="{\"result\":{" + - " \"steamProd\":[[0.038,0.036],[0.035,0.036],[0.037,0.034]]," + + private static final String jsonStr = "{\"result\":{" + + " \"steamProd\":[[0.76,0.76],[07,0.72],[0.74,0.68]]," + "\"steamRow0\":[[14.0,20.7],[14.0,30.5],[14.0,35.2],[24.0,67.9],[6.0,12.3]]," + "\"steamRow1\":[[10.0,5.5],[11.0,15.1],[21.0,20.6],[22.0,31.3],[8.0,42.5]]," + "\"steamRow2\":[[74.0,8.2],[36.0,18.2],[35.0,34.6],[9.0,62.4],[18.0,34.7]]," + "\"steamPressure\":[3.7,3.6,3.4]," + "\"steamHomePage\":[[220.4,223.5],[0.5],[673214.3]]," + - "\"steamHomeIndexInfo\":\"2025-04-28 甲班 干熄焦产蒸汽量异常\"," + + "\"steamHomeIndexInfo\":\"干熄焦产蒸汽量异常\"," + "\"steamTemperature\":[461.3,460.4,456.6]," + "\"steamElec\":[233564.3,224571.7,246120.2,603157.7]," + "\"steamIndex\":[[3.182,3.265,3.275],[1250.3,1293.1,1264.05],[890.3,886.32,901.21],[161495.2,171043.5,168533.6],[203667.2,238742.6,226731.7],[223548.3,223097.9,226733.3]]," + @@ -91,27 +85,12 @@ calendar.set(Calendar.MILLISECOND, 0); calendar.set(Calendar.SECOND, 0); calendar.set(Calendar.MINUTE, 0); - int hour = calendar.get(Calendar.HOUR_OF_DAY); + + calendar.set(Calendar.HOUR_OF_DAY, 0); + Date endDate = calendar.getTime(); + calendar.add(Calendar.DAY_OF_YEAR, -1); Date startDate = calendar.getTime(); - String clock = ""; - String analyClass = ""; - if (hour >= 8 && hour < 16) { - calendar.set(Calendar.HOUR_OF_DAY, 0); - startDate = calendar.getTime(); - clock = DateUtils.format(startDate).concat("-").concat("A"); - analyClass = "甲班"; - } else if (hour >= 16 && hour < 24) { - calendar.set(Calendar.HOUR_OF_DAY, 8); - startDate = calendar.getTime(); - clock = DateUtils.format(startDate).concat("-").concat("B"); - analyClass = "乙班"; - } else if (hour >= 0 && hour < 8) { - calendar.add(Calendar.DAY_OF_YEAR, -1); - calendar.set(Calendar.HOUR_OF_DAY, 16); - startDate = calendar.getTime(); - clock = DateUtils.format(startDate).concat("-").concat("B"); - analyClass = "丙班"; - } + String clock = DateUtils.format(startDate); // 调用模型 /* MdkScheduleReqDTO dto = new MdkScheduleReqDTO(); @@ -133,17 +112,17 @@ // 保存报告 String analyDate = DateUtils.format(startDate); - String analyContent = result.getString("steamHomeIndexInfo"); - String relId = cokingTraceReportService.save(process, reportName, analyDate, analyClass, clock, analyContent); + String analyContent = clock + " " + result.getString("steamHomeIndexInfo"); + String relId = cokingTraceReportService.save(process, reportName, analyDate, clock, analyContent); // 保存一级分析指标 - saveAnalyInd(relId, process, analyDate, analyClass, analyContent); + cokingAnalyIndService.saveAnalyInd(relId, process, analyDate, analyContent); // 保存优化建议 - saveTraceSuggest(relId, process, clock, result); + cokingTraceSuggestService.saveTraceSuggest(relId, process, clock, total, SugObj); // 保存偏差值 - saveTraceDeviation(relId, process, clock, result); + cokingTraceDeviationService.saveTraceDeviation(relId, process, clock, result, CommonConstant.COKE_INDEX_CHARTCODE, row, SugObj); // 保存溯源指标 cokingTraceIndService.saveTraceInd(relId, indType, clock); @@ -156,106 +135,4 @@ } - public void saveTraceSuggest(String relId, String process, String clock, JSONObject result) { - List<CokingTraceSuggestEntity> entityList = new ArrayList<>(); - String steamTotal = result.get("steamTotal1").toString(); - if(StringUtils.isNotBlank(steamTotal)){ - CokingTraceSuggestEntity suggestEntity = new CokingTraceSuggestEntity(); - suggestEntity.setRelId(relId); - suggestEntity.setProcess(process); - suggestEntity.setSugObj("GXJ"); - suggestEntity.setClock(clock); - suggestEntity.setContent(steamTotal); - suggestEntity.setCreateDate(new Date()); - entityList.add(suggestEntity); - } - cokingTraceSuggestService.insert(entityList); - } - - @Transactional - public void saveTraceDeviation(String relId, String process, String clock, JSONObject result) { - List<ChartParamDTO> list = mcsApi.getChartParamList(CommonConstant.STEAM_INDEX_CHARTCODE); - Map<String, String> steamIndexMaps = list.stream().collect(Collectors.toMap(ChartParamDTO::getParamCode, e -> e.getParamName())); - - List<String> coalRowKeys = new ArrayList<>(); - result.forEach((key, value) -> { - if (StringUtils.isNotBlank(key) && key.contains(steamRow)) { - coalRowKeys.add(key); - } - - }); - logger.info("coalRowKeys=" + coalRowKeys); - List<CokingTraceDeviationEntity> entityList = new ArrayList<>(); - for (String key : coalRowKeys) { - JSONArray rowArr = JSON.parseArray(result.get(key).toString()); - if (CollectionUtils.isEmpty(rowArr)) { - logger.info("rowArr is empty"); - continue; - } - CokingTraceDeviationEntity entity = new CokingTraceDeviationEntity(); - entity.setRelId(relId); - entity.setProcess(process); - entity.setClock(clock); - entity.setSugObj(SugObj); - - entity.setInd1Name(steamIndexMaps.get(new BigDecimal(rowArr.getJSONArray(0).get(0).toString()).setScale(0,BigDecimal.ROUND_HALF_UP).toString())); - entity.setInd1Value(rowArr.getJSONArray(0).get(1).toString()); - entity.setInd1Unit(""); - - entity.setInd2Name(steamIndexMaps.get(new BigDecimal(rowArr.getJSONArray(1).get(0).toString()).setScale(0,BigDecimal.ROUND_HALF_UP).toString())); - entity.setInd2Value(rowArr.getJSONArray(1).get(1).toString()); - entity.setInd2Unit(""); - - if (rowArr.size() > 2) { - entity.setFac1Name(steamIndexMaps.get(new BigDecimal(rowArr.getJSONArray(2).get(0).toString()).setScale(0,BigDecimal.ROUND_HALF_UP).toString())); - entity.setFac1Value(rowArr.getJSONArray(2).get(1).toString()); - entity.setFac1Unit(""); - } - if (rowArr.size() > 3) { - entity.setFac2Name(steamIndexMaps.get(new BigDecimal(rowArr.getJSONArray(3).get(0).toString()).setScale(0,BigDecimal.ROUND_HALF_UP).toString())); - entity.setFac2Value(rowArr.getJSONArray(3).get(1).toString()); - entity.setFac2Unit(""); - } - if (rowArr.size() > 4) { - entity.setFac3Name(steamIndexMaps.get(new BigDecimal(rowArr.getJSONArray(4).get(0).toString()).setScale(0,BigDecimal.ROUND_HALF_UP).toString())); - entity.setFac3Value(rowArr.getJSONArray(4).get(1).toString()); - entity.setFac3Unit(""); - } - if (rowArr.size() > 5) { - entity.setFac4Name(steamIndexMaps.get(new BigDecimal(rowArr.getJSONArray(5).get(0).toString()).setScale(0,BigDecimal.ROUND_HALF_UP).toString())); - entity.setFac4Value(rowArr.getJSONArray(5).get(1).toString()); - entity.setFac4Unit(""); - } - if (rowArr.size() > 6) { - entity.setFac5Name(steamIndexMaps.get(new BigDecimal(rowArr.getJSONArray(6).get(0).toString()).setScale(0,BigDecimal.ROUND_HALF_UP).toString())); - entity.setFac5Value(rowArr.getJSONArray(6).get(1).toString()); - entity.setFac5Unit(""); - } - entityList.add(entity); - } - - cokingTraceDeviationService.save(entityList); - } - - public void saveAnalyInd(String relId, String process, String analyDate, String analyClass, String analyContent) { - if (StringUtils.isBlank(analyContent)) { - logger.info("analyContent is null"); - return; - } - String[] analyContentArr = analyContent.split(";"); - List<CokingAnalyIndEntity> entityList = new ArrayList<>(); - for(int i=0;i<analyContentArr.length;i++){ - CokingAnalyIndEntity analyIndEntity = new CokingAnalyIndEntity(); - analyIndEntity.setRelId(relId); - analyIndEntity.setAnalyType(process); - analyIndEntity.setAnalyDate(analyDate); - analyIndEntity.setAnalyClass(analyClass); - analyIndEntity.setAnalyContent(analyContentArr[i]); - analyIndEntity.setSort(i+1); - entityList.add(analyIndEntity); - } - // 清理旧数据 - cokingAnalyIndService.delete(process, analyDate, analyClass); - cokingAnalyIndService.save(entityList); - } } \ No newline at end of file diff --git a/ansteel-biz/src/main/java/com/iailab/module/ansteel/job/task/RunCokingTraceModelHCTask.java b/ansteel-biz/src/main/java/com/iailab/module/ansteel/job/task/RunCokingTraceModelHCTask.java index 7582390..7a603da 100644 --- a/ansteel-biz/src/main/java/com/iailab/module/ansteel/job/task/RunCokingTraceModelHCTask.java +++ b/ansteel-biz/src/main/java/com/iailab/module/ansteel/job/task/RunCokingTraceModelHCTask.java @@ -1,28 +1,20 @@ 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.CokingAnalyIndEntity; -import com.iailab.module.ansteel.coking.entity.CokingTraceDeviationEntity; -import com.iailab.module.ansteel.coking.entity.CokingTraceSuggestEntity; import com.iailab.module.ansteel.coking.service.*; import com.iailab.module.ansteel.common.constant.CommonConstant; import com.iailab.module.model.api.mcs.McsApi; -import com.iailab.module.model.api.mcs.dto.ChartParamDTO; import com.iailab.module.model.api.mdk.MdkApi; -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.math.BigDecimal; -import java.util.*; -import java.util.stream.Collectors; +import java.util.Calendar; +import java.util.Date; +import java.util.Objects; /** * 化产工序异常溯源 @@ -67,7 +59,9 @@ private final static String indType = "化产工序异常溯源"; - private final static String chemProdRow = "chemProdRow"; + private final static String row = "chemProdRow"; + + private final static String total = "chemProdTotal"; private static final String jsonStr = "{\n" + "\"result\":{\n" + @@ -79,7 +73,7 @@ "\"chemProdRow2\":[[0.0,42.3],[12.0,23.5],[35.0,54.33]]," + "\"chemProdSteam\":[46.3]," + "\"chemProdTotal\":\"蒸汽消耗量异常,经模型计算,原因和调整建议如下:电捕绝缘箱温度异常,当前值190,建议调整电捕绝缘箱温度至区间[80,110], 蒸氨塔塔顶温度异常,当前值190,建议调整蒸氨塔塔顶温度至区间[101,103]\"," + - "\"chemProdHomeIndexInfo\":\"2025-04-28 甲班 化产蒸汽消耗量异常\""+ + "\"chemProdHomeIndexInfo\":\"化产蒸汽消耗量异常\""+ " }" + "}"; @@ -91,34 +85,12 @@ calendar.set(Calendar.MILLISECOND, 0); calendar.set(Calendar.SECOND, 0); calendar.set(Calendar.MINUTE, 0); - int hour = calendar.get(Calendar.HOUR_OF_DAY); - Date startDate = calendar.getTime(); + + calendar.set(Calendar.HOUR_OF_DAY, 0); Date endDate = calendar.getTime(); - String clock = ""; - String analyClass = ""; - if (hour >= 8 && hour < 16) { - calendar.set(Calendar.HOUR_OF_DAY, 0); - startDate = calendar.getTime(); - calendar.add(Calendar.HOUR_OF_DAY, 8); - endDate = calendar.getTime(); - clock = DateUtils.format(startDate).concat("-").concat("A"); - analyClass = "甲班"; - } else if (hour >= 16 && hour < 24) { - calendar.set(Calendar.HOUR_OF_DAY, 8); - startDate = calendar.getTime(); - calendar.add(Calendar.HOUR_OF_DAY, 8); - endDate = calendar.getTime(); - clock = DateUtils.format(startDate).concat("-").concat("B"); - analyClass = "乙班"; - } else if (hour >= 0 && hour < 8) { - calendar.add(Calendar.DAY_OF_YEAR, -1); - calendar.set(Calendar.HOUR_OF_DAY, 16); - startDate = calendar.getTime(); - calendar.add(Calendar.HOUR_OF_DAY, 8); - endDate = calendar.getTime(); - clock = DateUtils.format(startDate).concat("-").concat("B"); - analyClass = "丙班"; - } + calendar.add(Calendar.DAY_OF_YEAR, -1); + Date startDate = calendar.getTime(); + String clock = DateUtils.format(startDate); // 调用模型 JSONObject jsonObject = JSONObject.parseObject(jsonStr); @@ -131,17 +103,17 @@ // 保存报告 String analyDate = DateUtils.format(startDate); - String analyContent = result.getString("chemProdHomeIndexInfo"); - String relId = cokingTraceReportService.save(process, reportName, analyDate, analyClass, clock, analyContent); + String analyContent = clock + " " + result.getString("chemProdHomeIndexInfo"); + String relId = cokingTraceReportService.save(process, reportName, analyDate, clock, analyContent); // 保存一级分析指标 - saveAnalyInd(relId, process, analyDate, analyClass, analyContent); + cokingAnalyIndService.saveAnalyInd(relId, process, analyDate, analyContent); // 保存优化建议 - saveTraceSuggest(relId, process, clock, result); + cokingTraceSuggestService.saveTraceSuggest(relId, process, clock, total, SugObj); // 保存偏差值 - saveTraceDeviation(relId, process, clock, result); + cokingTraceDeviationService.saveTraceDeviation(relId, process, clock, result, CommonConstant.COKE_INDEX_CHARTCODE, row, SugObj); // 保存溯源指标 cokingTraceIndService.saveTraceInd(relId, indType, clock); @@ -154,107 +126,5 @@ ex.printStackTrace(); } logger.info("RunCokingTraceModelHCTask运行完成"); - } - - public void saveTraceSuggest(String relId, String process, String clock, JSONObject result) { - String chemProdTotal = result.get("chemProdTotal").toString(); - if (StringUtils.isBlank(chemProdTotal)) { - logger.info("coalPrepElecTotal1 is null"); - return; - } - CokingTraceSuggestEntity suggestEntity = new CokingTraceSuggestEntity(); - suggestEntity.setRelId(relId); - suggestEntity.setProcess(process); - suggestEntity.setSugObj(SugObj); - suggestEntity.setClock(clock); - suggestEntity.setContent(chemProdTotal); - suggestEntity.setCreateDate(new Date()); - cokingTraceSuggestService.save(suggestEntity); - } - - @Transactional - public void saveTraceDeviation(String relId, String process, String clock, JSONObject result) { - List<ChartParamDTO> list = mcsApi.getChartParamList(CommonConstant.CHEMPROD_INDEX_CHARTCODE); - Map<String, String> steamIndexMaps = list.stream().collect(Collectors.toMap(ChartParamDTO::getParamCode, e -> e.getParamName())); - - List<String> coalRowKeys = new ArrayList<>(); - result.forEach((key, value) -> { - if (StringUtils.isNotBlank(key) && key.contains(chemProdRow)) { - coalRowKeys.add(key); - } - - }); - - List<CokingTraceDeviationEntity> entityList = new ArrayList<>(); - for (String key : coalRowKeys) { - JSONArray rowArr = JSON.parseArray(result.get(key).toString()); - if (CollectionUtils.isEmpty(rowArr)) { - continue; - } - CokingTraceDeviationEntity entity = new CokingTraceDeviationEntity(); - entity.setRelId(relId); - entity.setProcess(process); - entity.setClock(clock); - entity.setSugObj(SugObj); - - entity.setInd1Name(steamIndexMaps.get(new BigDecimal(rowArr.getJSONArray(0).get(0).toString()).setScale(0,BigDecimal.ROUND_HALF_UP).toString())); - entity.setInd1Value(rowArr.getJSONArray(0).get(1).toString()); - entity.setInd1Unit(""); - - entity.setInd2Name(steamIndexMaps.get(new BigDecimal(rowArr.getJSONArray(1).get(0).toString()).setScale(0,BigDecimal.ROUND_HALF_UP).toString())); - entity.setInd2Value(rowArr.getJSONArray(1).get(1).toString()); - entity.setInd2Unit(""); - - if (rowArr.size() > 2) { - entity.setFac1Name(steamIndexMaps.get(new BigDecimal(rowArr.getJSONArray(2).get(0).toString()).setScale(0,BigDecimal.ROUND_HALF_UP).toString())); - entity.setFac1Value(rowArr.getJSONArray(2).get(1).toString()); - entity.setFac1Unit(""); - } - if (rowArr.size() > 3) { - entity.setFac2Name(steamIndexMaps.get(new BigDecimal(rowArr.getJSONArray(3).get(0).toString()).setScale(0,BigDecimal.ROUND_HALF_UP).toString())); - entity.setFac2Value(rowArr.getJSONArray(3).get(1).toString()); - entity.setFac2Unit(""); - } - if (rowArr.size() > 4) { - entity.setFac3Name(steamIndexMaps.get(new BigDecimal(rowArr.getJSONArray(4).get(0).toString()).setScale(0,BigDecimal.ROUND_HALF_UP).toString())); - entity.setFac3Value(rowArr.getJSONArray(4).get(1).toString()); - entity.setFac3Unit(""); - } - if (rowArr.size() > 5) { - entity.setFac4Name(steamIndexMaps.get(new BigDecimal(rowArr.getJSONArray(5).get(0).toString()).setScale(0,BigDecimal.ROUND_HALF_UP).toString())); - entity.setFac4Value(rowArr.getJSONArray(5).get(1).toString()); - entity.setFac4Unit(""); - } - if (rowArr.size() > 6) { - entity.setFac5Name(steamIndexMaps.get(new BigDecimal(rowArr.getJSONArray(6).get(0).toString()).setScale(0,BigDecimal.ROUND_HALF_UP).toString())); - entity.setFac5Value(rowArr.getJSONArray(6).get(1).toString()); - entity.setFac5Unit(""); - } - entityList.add(entity); - } - - cokingTraceDeviationService.save(entityList); - } - - public void saveAnalyInd(String relId, String process, String analyDate, String analyClass, String analyContent) { - if (StringUtils.isBlank(analyContent)) { - logger.info("analyContent is null"); - return; - } - String[] analyContentArr = analyContent.split(";"); - List<CokingAnalyIndEntity> entityList = new ArrayList<>(); - for (int i = 0; i < analyContentArr.length; i++) { - CokingAnalyIndEntity analyIndEntity = new CokingAnalyIndEntity(); - analyIndEntity.setRelId(relId); - analyIndEntity.setAnalyType(process); - analyIndEntity.setAnalyDate(analyDate); - analyIndEntity.setAnalyClass(analyClass); - analyIndEntity.setAnalyContent(analyContentArr[i]); - analyIndEntity.setSort(i + 1); - entityList.add(analyIndEntity); - } - // 清理旧数据 - cokingAnalyIndService.delete(process, analyDate, analyClass); - cokingAnalyIndService.save(entityList); } } \ No newline at end of file diff --git a/ansteel-biz/src/main/java/com/iailab/module/ansteel/job/task/RunCokingTraceModelLJTask.java b/ansteel-biz/src/main/java/com/iailab/module/ansteel/job/task/RunCokingTraceModelLJTask.java index 9ee62a9..2d0213a 100644 --- a/ansteel-biz/src/main/java/com/iailab/module/ansteel/job/task/RunCokingTraceModelLJTask.java +++ b/ansteel-biz/src/main/java/com/iailab/module/ansteel/job/task/RunCokingTraceModelLJTask.java @@ -1,28 +1,19 @@ 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.CokingAnalyIndEntity; -import com.iailab.module.ansteel.coking.entity.CokingTraceDeviationEntity; -import com.iailab.module.ansteel.coking.entity.CokingTraceSuggestEntity; import com.iailab.module.ansteel.coking.service.*; import com.iailab.module.ansteel.common.constant.CommonConstant; -import com.iailab.module.model.api.mcs.McsApi; -import com.iailab.module.model.api.mcs.dto.ChartParamDTO; import com.iailab.module.model.api.mdk.MdkApi; -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.math.BigDecimal; -import java.util.*; -import java.util.stream.Collectors; +import java.util.Calendar; +import java.util.Date; +import java.util.Objects; /** * 炼焦工序-异常溯源 @@ -54,9 +45,6 @@ private CokingTraceChartService cokingTraceChartService; @Autowired - private McsApi mcsApi; - - @Autowired private MdkApi mdkApi; private final static String process = "炼焦工序"; @@ -67,10 +55,12 @@ private final static String indType = "炼焦工序异常溯源"; - private final static String cokeRow = "cokeRow"; + private final static String row = "cokeRow"; - private static final String jsonStr = "{\n" + - "\"result\": {\n" + + private final static String total = "cokeTotal"; + + private static final String jsonStr = "{\n" + + "\"result\": {\n" + "\"cokeElec\":[583562.4]," + "\"cokeHeat1\":[130820.4,136710.3]," + "\"cokeRow0\":[[0.0,13.6],[2.0,10.5],[69.0,34.6]]," + @@ -80,7 +70,7 @@ "\"cokeHeat2\":[135220.3,134720.3]," + "\"cokeCOG2\":[64525.8,64824.2]," + "\"cokeHomeIndex\":[[90.4,90.2],[80.3,78.5],[103.6,100.3],[280.9,270.4]]," + - "\"cokeHomeIndexInfo\":\"2025-04-28 甲班 吨焦耗热量异常\"," + + "\"cokeHomeIndexInfo\":\"吨焦耗热量异常\"," + "\"cokeCOG1\":[64435.5,64532.6]," + "\"cokeHomePage\":[[124439.4,124428.4],[320.6],[224.3],[248305.4],[124436.2],[3.96],[0.43]]," + "\"cokeTotal\":\"炼焦吨焦耗热量因煤气流量偏高、煤气水分偏低而增加23,经模型计算,延建议调整煤气流量,预计可使吨焦耗热量指标降低17\"" + @@ -95,34 +85,12 @@ calendar.set(Calendar.MILLISECOND, 0); calendar.set(Calendar.SECOND, 0); calendar.set(Calendar.MINUTE, 0); - int hour = calendar.get(Calendar.HOUR_OF_DAY); - Date startDate = calendar.getTime(); + + calendar.set(Calendar.HOUR_OF_DAY, 0); Date endDate = calendar.getTime(); - String clock = ""; - String analyClass = ""; - if (hour >= 8 && hour < 16) { - calendar.set(Calendar.HOUR_OF_DAY, 0); - startDate = calendar.getTime(); - calendar.add(Calendar.HOUR_OF_DAY, 8); - endDate = calendar.getTime(); - clock = DateUtils.format(startDate).concat("-").concat("A"); - analyClass = "甲班"; - } else if (hour >= 16 && hour < 24) { - calendar.set(Calendar.HOUR_OF_DAY, 8); - startDate = calendar.getTime(); - calendar.add(Calendar.HOUR_OF_DAY, 8); - endDate = calendar.getTime(); - clock = DateUtils.format(startDate).concat("-").concat("B"); - analyClass = "乙班"; - } else if (hour >= 0 && hour < 8) { - calendar.add(Calendar.DAY_OF_YEAR, -1); - calendar.set(Calendar.HOUR_OF_DAY, 16); - startDate = calendar.getTime(); - calendar.add(Calendar.HOUR_OF_DAY, 8); - endDate = calendar.getTime(); - clock = DateUtils.format(startDate).concat("-").concat("B"); - analyClass = "丙班"; - } + calendar.add(Calendar.DAY_OF_YEAR, -1); + Date startDate = calendar.getTime(); + String clock = DateUtils.format(startDate); // 调用模型 JSONObject jsonObject = JSONObject.parseObject(jsonStr); @@ -135,17 +103,17 @@ // 保存报告 String analyDate = DateUtils.format(startDate); - String analyContent = result.getString("cokeHomeIndexInfo"); - String relId = cokingTraceReportService.save(process, reportName, analyDate, analyClass, clock, analyContent); + String analyContent = clock + " " + result.getString("cokeHomeIndexInfo"); + String relId = cokingTraceReportService.save(process, reportName, analyDate, clock, analyContent); // 保存一级分析指标 - saveAnalyInd(relId, process, analyDate, analyClass, analyContent); + cokingAnalyIndService.saveAnalyInd(relId, process, analyDate, analyContent); // 保存优化建议 - saveTraceSuggest(relId, process, clock, result); + cokingTraceSuggestService.saveTraceSuggest(relId, process, clock, total, SugObj); // 保存偏差值 - saveTraceDeviation(relId, process, clock, result); + cokingTraceDeviationService.saveTraceDeviation(relId, process, clock, result, CommonConstant.COKE_INDEX_CHARTCODE, row, SugObj); // 保存溯源指标 cokingTraceIndService.saveTraceInd(relId, indType, clock); @@ -158,107 +126,5 @@ ex.printStackTrace(); } logger.info("RunCokingTraceModelLJTask运行完成"); - } - - public void saveTraceSuggest(String relId, String process, String clock, JSONObject result) { - String cokeTotal = result.get("cokeTotal").toString(); - if (StringUtils.isBlank(cokeTotal)) { - logger.info("cokeTotal is null"); - return; - } - CokingTraceSuggestEntity suggestEntity = new CokingTraceSuggestEntity(); - suggestEntity.setRelId(relId); - suggestEntity.setProcess(process); - suggestEntity.setSugObj(SugObj); - suggestEntity.setClock(clock); - suggestEntity.setContent(cokeTotal); - suggestEntity.setCreateDate(new Date()); - cokingTraceSuggestService.save(suggestEntity); - } - - @Transactional - public void saveTraceDeviation(String relId, String process, String clock, JSONObject result) { - List<ChartParamDTO> list = mcsApi.getChartParamList(CommonConstant.COKE_INDEX_CHARTCODE); - Map<String, String> steamIndexMaps = list.stream().collect(Collectors.toMap(ChartParamDTO::getParamCode, e -> e.getParamName())); - - List<String> coalRowKeys = new ArrayList<>(); - result.forEach((key, value) -> { - if (StringUtils.isNotBlank(key) && key.contains(cokeRow)) { - coalRowKeys.add(key); - } - - }); - - List<CokingTraceDeviationEntity> entityList = new ArrayList<>(); - for (String key : coalRowKeys) { - JSONArray rowArr = JSON.parseArray(result.get(key).toString()); - if (CollectionUtils.isEmpty(rowArr)) { - continue; - } - CokingTraceDeviationEntity entity = new CokingTraceDeviationEntity(); - entity.setRelId(relId); - entity.setProcess(process); - entity.setClock(clock); - entity.setSugObj(SugObj); - - entity.setInd1Name(steamIndexMaps.get(new BigDecimal(rowArr.getJSONArray(0).get(0).toString()).setScale(0,BigDecimal.ROUND_HALF_UP).toString())); - entity.setInd1Value(rowArr.getJSONArray(0).get(1).toString()); - entity.setInd1Unit(""); - - entity.setInd2Name(steamIndexMaps.get(new BigDecimal(rowArr.getJSONArray(1).get(0).toString()).setScale(0,BigDecimal.ROUND_HALF_UP).toString())); - entity.setInd2Value(rowArr.getJSONArray(1).get(1).toString()); - entity.setInd2Unit(""); - - if (rowArr.size() > 2) { - entity.setFac1Name(steamIndexMaps.get(new BigDecimal(rowArr.getJSONArray(2).get(0).toString()).setScale(0,BigDecimal.ROUND_HALF_UP).toString())); - entity.setFac1Value(rowArr.getJSONArray(2).get(1).toString()); - entity.setFac1Unit(""); - } - if (rowArr.size() > 3) { - entity.setFac2Name(steamIndexMaps.get(new BigDecimal(rowArr.getJSONArray(3).get(0).toString()).setScale(0,BigDecimal.ROUND_HALF_UP).toString())); - entity.setFac2Value(rowArr.getJSONArray(3).get(1).toString()); - entity.setFac2Unit(""); - } - if (rowArr.size() > 4) { - entity.setFac3Name(steamIndexMaps.get(new BigDecimal(rowArr.getJSONArray(4).get(0).toString()).setScale(0,BigDecimal.ROUND_HALF_UP).toString())); - entity.setFac3Value(rowArr.getJSONArray(4).get(1).toString()); - entity.setFac3Unit(""); - } - if (rowArr.size() > 5) { - entity.setFac4Name(steamIndexMaps.get(new BigDecimal(rowArr.getJSONArray(5).get(0).toString()).setScale(0,BigDecimal.ROUND_HALF_UP).toString())); - entity.setFac4Value(rowArr.getJSONArray(5).get(1).toString()); - entity.setFac4Unit(""); - } - if (rowArr.size() > 6) { - entity.setFac5Name(steamIndexMaps.get(new BigDecimal(rowArr.getJSONArray(6).get(0).toString()).setScale(0,BigDecimal.ROUND_HALF_UP).toString())); - entity.setFac5Value(rowArr.getJSONArray(6).get(1).toString()); - entity.setFac5Unit(""); - } - entityList.add(entity); - } - - cokingTraceDeviationService.save(entityList); - } - - public void saveAnalyInd(String relId, String process, String analyDate, String analyClass, String analyContent) { - if (StringUtils.isBlank(analyContent)) { - logger.info("analyContent is null"); - return; - } - String[] analyContentArr = analyContent.split(";"); - List<CokingAnalyIndEntity> entityList = new ArrayList<>(); - for (int i = 0; i < analyContentArr.length; i++) { - CokingAnalyIndEntity analyIndEntity = new CokingAnalyIndEntity(); - analyIndEntity.setRelId(relId); - analyIndEntity.setAnalyType(process); - analyIndEntity.setAnalyDate(analyDate); - analyIndEntity.setAnalyClass(analyClass); - analyIndEntity.setAnalyContent(analyContentArr[i]); - analyIndEntity.setSort(i + 1); - entityList.add(analyIndEntity); - } - // 清理旧数据 - cokingAnalyIndService.delete(process, analyDate, analyClass); - cokingAnalyIndService.save(entityList); } } \ No newline at end of file diff --git a/ansteel-biz/src/main/java/com/iailab/module/ansteel/job/task/RunPeakValleyFlatTask.java b/ansteel-biz/src/main/java/com/iailab/module/ansteel/job/task/RunPeakValleyFlatTask.java index ce68ca6..ea3f8d8 100644 --- a/ansteel-biz/src/main/java/com/iailab/module/ansteel/job/task/RunPeakValleyFlatTask.java +++ b/ansteel-biz/src/main/java/com/iailab/module/ansteel/job/task/RunPeakValleyFlatTask.java @@ -1,7 +1,5 @@ package com.iailab.module.ansteel.job.task; -import cn.hutool.core.date.DateUtil; -import com.alibaba.excel.util.DateUtils; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.iailab.module.ansteel.power.dao.PeakValleyFlatDao; import com.iailab.module.ansteel.power.entity.PeakValleyFlatEntity; @@ -9,18 +7,14 @@ import com.iailab.module.data.api.point.dto.ApiPointValueDTO; import com.iailab.module.data.api.point.dto.ApiPointValueQueryDTO; import com.iailab.module.data.api.point.dto.ApiPointValueWriteDTO; -import org.checkerframework.checker.units.qual.A; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; -import java.math.BigDecimal; -import java.text.ParseException; import java.util.*; +import java.util.List; import java.util.stream.Collectors; - -import static com.alibaba.excel.util.DateUtils.DATE_FORMAT_16_FORWARD_SLASH; /** * 峰谷平累计量计算 @@ -42,6 +36,8 @@ @Override public void run(String params) { try { + Calendar calendar = Calendar.getInstance(); + //查询峰谷平配置列表 List<PeakValleyFlatEntity> list = peakValleyFlatDao.selectList(new QueryWrapper<>()); @@ -52,21 +48,45 @@ groupedByPointNo.entrySet().stream().forEach(entry -> { //计算昨日的累积量 - double value = getSumValue(entry.getValue(),1); + double value = getSumValue(entry.getValue(), 1, calendar); + + //计算昨日总电耗 + calendar.set(Calendar.MILLISECOND, 0); + calendar.set(Calendar.MINUTE, 0); + calendar.set(Calendar.HOUR_OF_DAY, 0); + Date endTime = calendar.getTime(); + calendar.add(Calendar.DAY_OF_YEAR, -1); + Date startTime = calendar.getTime(); + double totalValue = getSumValueTotal(entry.getValue().get(0).getPowerNo(), startTime,endTime); + + //下发昨日占比 ApiPointValueWriteDTO dto = new ApiPointValueWriteDTO(); dto.setPointNo(entry.getValue().get(0).getPointNo()); - dto.setValue(value); + dto.setValue(value/totalValue*100); dataPointApi.writePointRealValue(dto); - //计算前三十日累积量 - double value30 = 0 ; - for (int i = 1; i < 31; i++) { - value30 = value30 + getSumValue(entry.getValue(),i); + if(entry.getValue().get(0).getPointNoMonth()!=null){ + //计算前三十日累积量 + double value30 = 0; + for (int i = 1; i < 31; i++) { + //计算前三十日累积量 + value30 = value30 + getSumValue(entry.getValue(), i, calendar); + } + + //计算前三十日总电耗 + calendar.set(Calendar.MILLISECOND, 0); + calendar.set(Calendar.MINUTE, 0); + calendar.set(Calendar.HOUR_OF_DAY, 0); + calendar.add(Calendar.DAY_OF_YEAR, -30); + Date startTimeMonth = calendar.getTime(); + double totalValueMonth = getSumValueTotal(entry.getValue().get(0).getPowerNo(), startTimeMonth,endTime); + + //下发前三十日占比 + ApiPointValueWriteDTO monthDto = new ApiPointValueWriteDTO(); + monthDto.setPointNo(entry.getValue().get(0).getPointNoMonth()); + monthDto.setValue(value30/totalValueMonth*100); + dataPointApi.writePointRealValue(monthDto); } - ApiPointValueWriteDTO monthDto = new ApiPointValueWriteDTO(); - monthDto.setPointNo(entry.getValue().get(0).getPointNoMonth()); - monthDto.setValue(value30); - dataPointApi.writePointRealValue(monthDto); }); } catch (Exception ex) { logger.error("runPeakValleyFlatTask运行异常"); @@ -74,13 +94,13 @@ } } - private Date getTime(String timeStr , int ago) { + private Date getTime(String timeStr, int ago, Calendar calendar) { String[] timeSplit = timeStr.split(":"); if (timeSplit.length != 2) { throw new IllegalArgumentException("时间配置格式不合法"); } - //根据配置获取startTime、endTime、 - Calendar calendar = Calendar.getInstance(); + //根据配置获取startTime、endTime + calendar.set(Calendar.MILLISECOND, 0); calendar.set(Calendar.HOUR_OF_DAY, Integer.parseInt(timeSplit[0])); calendar.set(Calendar.MINUTE, Integer.parseInt(timeSplit[1])); calendar.add(Calendar.DAY_OF_YEAR, -ago); @@ -90,65 +110,62 @@ private List<ApiPointValueDTO> fillMissingData(List<ApiPointValueDTO> valueList, Date startTime, Date endTime) { - // 如果原始数据为空,返回空列表 if (valueList == null || valueList.isEmpty()) { return new ArrayList<>(); } + + // 过滤掉null元素 + valueList = valueList.stream().filter(Objects::nonNull).collect(Collectors.toList()); + if (valueList.isEmpty()) { + return new ArrayList<>(); + } + List<ApiPointValueDTO> filledList = new ArrayList<>(); ApiPointValueDTO lastValidData = null; - // 计算总分钟数 long totalMinutes = (endTime.getTime() - startTime.getTime()) / (60 * 1000); - // 遍历每分钟 for (int i = 0; i <= totalMinutes; i++) { Date currentTime = new Date(startTime.getTime() + i * 60 * 1000); - - // 查找当前分钟是否有数据 ApiPointValueDTO currentData = findDataForTime(valueList, currentTime); if (currentData != null) { - // 如果有数据,使用原始数据 filledList.add(currentData); lastValidData = currentData; } else if (lastValidData != null) { - // 如果没有数据但有最近的有效数据,则补充 - ApiPointValueDTO filledData = new ApiPointValueDTO() + filledList.add(new ApiPointValueDTO() .setT(currentTime) - .setV(lastValidData.getV()); - filledList.add(filledData); + .setV(lastValidData.getV())); } else { - // 如果既没有当前数据也没有最近数据,查找第一个有值的数据 - ApiPointValueDTO filledData = new ApiPointValueDTO() + // 使用第一个非null数据的值 + filledList.add(new ApiPointValueDTO() .setT(currentTime) - .setV(valueList.get(0).getV()); - filledList.add(filledData); - lastValidData = filledData; + .setV(valueList.get(0).getV())); } } return filledList; } - private ApiPointValueDTO findDataForTime(List<ApiPointValueDTO> valueList, Date time) { - for (ApiPointValueDTO data : valueList) { - long time1 = data.getT().getTime() / (60 * 1000); - long time2 = time.getTime() / (60 * 1000); - if (time1 == time2) { - return data; - } - } - return null; + private ApiPointValueDTO findDataForTime(List<ApiPointValueDTO> valueList, Date time) { + long targetMinute = time.getTime() / (60 * 1000); + return valueList.stream() + .filter(Objects::nonNull) + .filter(d -> d.getT() != null) + .filter(d -> d.getT().getTime() / (60 * 1000) == targetMinute) + .findFirst() + .orElse(null); } - private double getSumValue( List<PeakValleyFlatEntity> list ,int ago){ + + private double getSumValue(List<PeakValleyFlatEntity> list, int ago, Calendar calendar) { double value = 0; for (int i = 0; i < list.size(); i++) { PeakValleyFlatEntity entity = list.get(i); ApiPointValueQueryDTO dto = new ApiPointValueQueryDTO(); - Date startTime = getTime(entity.getStartTime(),ago); - Date endTime = getTime(entity.getEndTime(),ago); + Date startTime = getTime(entity.getStartTime(), ago, calendar); + Date endTime = getTime(entity.getEndTime(), ago, calendar); dto.setPointNo(entity.getPowerNo()); dto.setStart(startTime); dto.setEnd(endTime); @@ -161,7 +178,20 @@ double sum = valueList.stream().mapToDouble(ApiPointValueDTO::getV).sum(); value = value + sum; } - return value/60; + return value / 60; } + private double getSumValueTotal(String pointNo, Date startTime, Date endTime) { + ApiPointValueQueryDTO dto = new ApiPointValueQueryDTO(); + dto.setPointNo(pointNo); + dto.setStart(startTime); + dto.setEnd(endTime); + + //查找数据 + List<ApiPointValueDTO> valueList = dataPointApi.queryPointHistoryValue(dto); + //补全数据 + valueList = fillMissingData(valueList, startTime, endTime); + //累加 + return valueList.stream().mapToDouble(ApiPointValueDTO::getV).sum()/ 60; + } } diff --git a/ansteel-biz/src/main/resources/application-dev.yaml b/ansteel-biz/src/main/resources/application-dev.yaml index 5f19417..962f697 100644 --- a/ansteel-biz/src/main/resources/application-dev.yaml +++ b/ansteel-biz/src/main/resources/application-dev.yaml @@ -43,6 +43,11 @@ url: jdbc:mysql://127.0.0.1:3306/iailab_fast_tenant_ansteel?useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true&nullCatalogMeansCurrent=true username: root password: 123456 + redis: + host: 127.0.0.1 + port: 6379 + database: 0 + password: 123456 cloud: nacos: server-addr: localhost:8848 # Nacos 服务器地址 @@ -75,5 +80,5 @@ client-id: ansteel #租户OAuth2客户端id client-secret: q3vY7K9PmFjW1xLbN6rTtZz2cV4B5sD0 #租户OAuth2客户端密钥 username: ansteel - password: xY7^zW4.vU + password: 123456 diff --git a/ansteel-biz/src/main/resources/application.yaml b/ansteel-biz/src/main/resources/application.yaml index 7a959cd..e4833be 100644 --- a/ansteel-biz/src/main/resources/application.yaml +++ b/ansteel-biz/src/main/resources/application.yaml @@ -178,6 +178,7 @@ - t_power_demand - t_power_adjusted_factor - t_power_net_dropdown + - t_peak_valley_flat - t_coking_overview_ind swagger: title: 鞍钢鲅鱼圈能源管控系统 -- Gitblit v1.9.3