ansteel-biz/src/main/java/com/iailab/module/ansteel/api/service/CokingProcessChildService.java
@@ -13,4 +13,6 @@ public interface CokingProcessChildService { List<CokingProcessChildEntity> list(Map<String, Object> params); void save(CokingProcessChildEntity cokingProcessChild); } ansteel-biz/src/main/java/com/iailab/module/ansteel/api/service/impl/CokingProcessChildServiceImpl.java
@@ -29,4 +29,9 @@ queryWrapper.orderByAsc("sort"); return cokingProcessChildDao.selectList(queryWrapper); } @Override public void save(CokingProcessChildEntity cokingProcessChild) { cokingProcessChildDao.insert(cokingProcessChild); } } ansteel-biz/src/main/java/com/iailab/module/ansteel/api/service/impl/CokingProcessConfServiceImpl.java
@@ -29,6 +29,7 @@ public List<CokingProcessConfEntity> list(CokingProcessConfEntity cokingProcessConfEntity) { LambdaQueryWrapper<CokingProcessConfEntity> queryWrapper = new LambdaQueryWrapper<>(); queryWrapper.eq(cokingProcessConfEntity.getIndType() != null, CokingProcessConfEntity::getIndType, cokingProcessConfEntity.getIndType()); queryWrapper.orderByAsc(CokingProcessConfEntity::getSort); return cokingProcessConfDao.selectList(queryWrapper); } } ansteel-biz/src/main/java/com/iailab/module/ansteel/job/task/RunCokingChildDayTask.java
对比新文件 @@ -0,0 +1,121 @@ package com.iailab.module.ansteel.job.task; import com.iailab.module.ansteel.api.entity.CokingProcessConfEntity; import com.iailab.module.ansteel.api.entity.CokingProcessChildEntity; import com.iailab.module.ansteel.api.service.CokingProcessChildService; import com.iailab.module.ansteel.api.service.CokingProcessConfService; import com.iailab.module.ansteel.api.service.CokingProcessMainService; import com.iailab.module.data.api.point.DataPointApi; import org.apache.commons.lang3.ObjectUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.stereotype.Component; import javax.annotation.Resource; import java.time.LocalDateTime; import java.time.format.DateTimeFormatter; import java.util.*; import java.util.concurrent.atomic.AtomicReference; import java.util.stream.Collectors; /** * @author HouZhongjian * @Description * @createTime 2025年04月12日 */ @Component("runCokingChildDayTask") public class RunCokingChildDayTask implements ITask { private Logger logger = LoggerFactory.getLogger(getClass()); @Resource private CokingProcessConfService cokingProcessConfService; @Resource private CokingProcessChildService cokingProcessChildService; @Resource private DataPointApi dataPointApi; @Override public void run(String params) { logger.info("RunCokingChildDayTask,参数为:{}", params); try { Calendar calendar = Calendar.getInstance(); calendar.set(Calendar.MILLISECOND, 0); calendar.set(Calendar.SECOND, 0); CokingProcessConfEntity queryParams = new CokingProcessConfEntity(); queryParams.setIndType("child"); List<CokingProcessConfEntity> list = cokingProcessConfService.list(queryParams); if (ObjectUtils.isNotEmpty(list)) { // 先建立ext1到sort的映射关系 Map<String, Integer> ext1ToSort = list.stream() .collect(Collectors.toMap( CokingProcessConfEntity::getExt1, CokingProcessConfEntity::getSort, (oldValue, newValue) -> oldValue)); // 然后按这个关系排序分组 Map<String, List<CokingProcessConfEntity>> groupMap = list.stream() .sorted(Comparator.comparing(CokingProcessConfEntity::getSort)) .collect(Collectors.collectingAndThen( Collectors.groupingBy(CokingProcessConfEntity::getExt1), map -> map.entrySet().stream() .sorted(Comparator.comparingInt( e -> ext1ToSort.get(e.getKey()))) // 按ext1对应的sort值排序 .collect(Collectors.toMap( Map.Entry::getKey, Map.Entry::getValue, (a, b) -> a, LinkedHashMap::new)))); // 获取当前日期时间 LocalDateTime now = LocalDateTime.now(); // 减去一天得到昨天同一时间 LocalDateTime yesterday = now.minusDays(1); // 格式化输出 DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd"); String formattedDateTime = yesterday.format(formatter); AtomicReference<Integer> counter = new AtomicReference<>(1); groupMap.forEach((group, confList) -> { CokingProcessChildEntity cokingProcessChildEntity = new CokingProcessChildEntity(); cokingProcessChildEntity.setInfoType("0"); cokingProcessChildEntity.setSort(counter.getAndSet(counter.get() + 1)); cokingProcessChildEntity.setCategory("day"); cokingProcessChildEntity.setIndName(group); cokingProcessChildEntity.setClock(formattedDateTime); CokingProcessConfEntity conf = confList.get(0); cokingProcessChildEntity.setIndType(conf.getExt2()); cokingProcessChildEntity.setIndMain(conf.getExt1().replace(conf.getExt2(), "")); confList.forEach(cokingProcessConfEntity -> { 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")) { cokingProcessChildEntity.setAvgValue(value.toString()); } else if(cokingProcessConfEntity.getIndCode().endsWith("LLZ")) { cokingProcessChildEntity.setTheoryValue(value.toString()); } else if(cokingProcessConfEntity.getIndCode().endsWith("SJZ")) { cokingProcessChildEntity.setActualValue(value.toString()); } else if(cokingProcessConfEntity.getIndCode().endsWith("JZZ")) { cokingProcessChildEntity.setStandValue(value.toString()); } else if(cokingProcessConfEntity.getIndCode().endsWith("SSSJ")) { cokingProcessChildEntity.setRealValue(value.toString()); } } }); cokingProcessChildService.save(cokingProcessChildEntity); }); } } catch (Exception ex) { logger.error("RunCokingChildDayTask运行异常"); ex.printStackTrace(); } logger.info("RunCokingChildDayTask运行完成"); } } 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 -> { //计数器 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); //保存数据 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); 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.setActual_value(value.toString()); } else if(cokingProcessConfEntity.getIndCode().endsWith("JZZ")) { cokingProcessMainEntity.setStand_value(value.toString()); } else if(cokingProcessConfEntity.getIndCode().endsWith("SSSJ")) { cokingProcessMainEntity.setReal_value(value.toString()); } } }); cokingProcessMainService.save(cokingProcessMainEntity); }); }