From a4fd9799b2212c1e69b995e96bb5e5f45b6fb163 Mon Sep 17 00:00:00 2001 From: houzhongjian <houzhongyi@126.com> Date: 星期一, 14 四月 2025 08:57:38 +0800 Subject: [PATCH] Merge branch 'master' of http://dlindusit.com:53929/r/ansteel --- ansteel-biz/src/main/java/com/iailab/module/ansteel/job/task/RunCokingMainDayTask.java | 81 +++++++++++++++++++++++++++++----------- 1 files changed, 58 insertions(+), 23 deletions(-) diff --git a/ansteel-biz/src/main/java/com/iailab/module/ansteel/job/task/RunCokingMainDayTask.java b/ansteel-biz/src/main/java/com/iailab/module/ansteel/job/task/RunCokingMainDayTask.java index 347ebf6..4080513 100644 --- a/ansteel-biz/src/main/java/com/iailab/module/ansteel/job/task/RunCokingMainDayTask.java +++ b/ansteel-biz/src/main/java/com/iailab/module/ansteel/job/task/RunCokingMainDayTask.java @@ -2,10 +2,8 @@ import com.iailab.module.ansteel.api.entity.CokingProcessConfEntity; import com.iailab.module.ansteel.api.entity.CokingProcessMainEntity; -import com.iailab.module.ansteel.api.entity.CokingProdDayEntity; import com.iailab.module.ansteel.api.service.CokingProcessConfService; import com.iailab.module.ansteel.api.service.CokingProcessMainService; -import com.iailab.module.ansteel.api.service.CokingProdDayService; import com.iailab.module.data.api.point.DataPointApi; import org.apache.commons.lang3.ObjectUtils; import org.slf4j.Logger; @@ -15,10 +13,9 @@ import javax.annotation.Resource; import java.time.LocalDateTime; import java.time.format.DateTimeFormatter; -import java.util.ArrayList; -import java.util.Calendar; -import java.util.List; -import java.util.Map; +import java.util.*; +import java.util.concurrent.atomic.AtomicReference; +import java.util.stream.Collectors; /** * @author HouZhongjian @@ -50,8 +47,31 @@ queryParams.setIndType("main"); List<CokingProcessConfEntity> list = cokingProcessConfService.list(queryParams); if (ObjectUtils.isNotEmpty(list)) { -// List<String> points = list.stream().map(CokingProcessConfEntity::getIndCode).collect(Collectors.toList()); -// Map<String, Object> stringObjectMap = dataPointApi.queryPointsRealValue(points); + //按照指标大类扩展字段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(); // 减去一天得到昨天同一时间 @@ -59,21 +79,36 @@ // 格式化输出 DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd"); String formattedDateTime = yesterday.format(formatter); - - list.stream().forEach(cokingProcessConfEntity -> { - List<String> points = new ArrayList<>(); - points.add(cokingProcessConfEntity.getPointNo()); - Map<String, Object> stringObjectMap = dataPointApi.queryPointsRealValue(points); - //保存数据 - if(ObjectUtils.isNotEmpty(stringObjectMap.get(cokingProcessConfEntity.getPointNo()))) { - CokingProcessMainEntity cokingProcessMainEntity = new CokingProcessMainEntity(); - cokingProcessMainEntity.setInfoType("0"); - cokingProcessMainEntity.setSort(cokingProcessConfEntity.getSort()); - cokingProcessMainEntity.setIndName(cokingProcessConfEntity.getIndName()); - - cokingProcessMainEntity.setClock(formattedDateTime); - cokingProcessMainService.save(cokingProcessMainEntity); - } + //计数器 + 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); }); } -- Gitblit v1.9.3