| | |
| | | package com.iailab.module.ansteel.job.task; |
| | | |
| | | import com.iailab.framework.common.util.date.DateUtils; |
| | | import com.iailab.module.ansteel.api.entity.CokingProcessConfEntity; |
| | | import com.iailab.module.ansteel.api.entity.CokingProcessChildEntity; |
| | | import com.iailab.module.ansteel.api.service.CokingProcessChildService; |
| | | import com.iailab.module.ansteel.api.service.CokingProcessConfService; |
| | | import com.iailab.module.ansteel.coking.entity.CokingProcessConfEntity; |
| | | import com.iailab.module.ansteel.coking.entity.CokingProcessChildEntity; |
| | | import com.iailab.module.ansteel.coking.service.CokingProcessChildService; |
| | | import com.iailab.module.ansteel.coking.service.CokingProcessConfService; |
| | | import com.iailab.module.ansteel.common.enums.ProcessIndDataTypeEnum; |
| | | import com.iailab.module.data.api.point.DataPointApi; |
| | | import org.apache.commons.lang3.ObjectUtils; |
| | | import org.slf4j.Logger; |
| | | import org.slf4j.LoggerFactory; |
| | | import org.springframework.stereotype.Component; |
| | | import org.springframework.util.CollectionUtils; |
| | | |
| | | import javax.annotation.Resource; |
| | | import java.util.*; |
| | |
| | | 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)))); |
| | | |
| | | logger.info("清理旧数据"); |
| | | cokingProcessChildService.deleteByClock(clock); |
| | | |
| | | AtomicReference<Integer> counter = new AtomicReference<>(1); |
| | | groupMap.forEach((group, confList) -> { |
| | | CokingProcessChildEntity cokingProcessChildEntity = new CokingProcessChildEntity(); |
| | | cokingProcessChildEntity.setInfoType("0"); |
| | | cokingProcessChildEntity.setSort(counter.getAndSet(counter.get() + 1)); |
| | | cokingProcessChildEntity.setCategory("day"); |
| | | cokingProcessChildEntity.setClock(clock); |
| | | CokingProcessConfEntity childConf = confList.get(0); |
| | | cokingProcessChildEntity.setIndType(childConf.getExt3()); |
| | | cokingProcessChildEntity.setIndMain(childConf.getExt4()); |
| | | cokingProcessChildEntity.setIndName(childConf.getExt5()); |
| | | confList.forEach(conf -> { |
| | | List<String> points = new ArrayList<>(); |
| | | points.add(conf.getPointNo()); |
| | | Map<String, Object> stringObjectMap = dataPointApi.queryPointsRealValue(points); |
| | | //保存数据 |
| | | Object value = stringObjectMap.get(conf.getPointNo()); |
| | | if(ObjectUtils.isNotEmpty(value)) { |
| | | if(conf.getExt2().equals(ProcessIndDataTypeEnum.LSPJ.getCode())) { |
| | | cokingProcessChildEntity.setAvgValue(value.toString()); |
| | | } else if(conf.getExt2().equals(ProcessIndDataTypeEnum.LLZ.getCode())) { |
| | | cokingProcessChildEntity.setTheoryValue(value.toString()); |
| | | } else if(conf.getExt2().equals(ProcessIndDataTypeEnum.SJZ.getCode())) { |
| | | cokingProcessChildEntity.setActualValue(value.toString()); |
| | | } else if(conf.getExt2().equals(ProcessIndDataTypeEnum.JZZ.getCode())) { |
| | | cokingProcessChildEntity.setStandValue(value.toString()); |
| | | } else if(conf.getExt2().equals(ProcessIndDataTypeEnum.SSSJ.getCode())) { |
| | | cokingProcessChildEntity.setRealValue(value.toString()); |
| | | } |
| | | } |
| | | }); |
| | | cokingProcessChildService.save(cokingProcessChildEntity); |
| | | }); |
| | | if (CollectionUtils.isEmpty(list)) { |
| | | logger.info("子工序配置为空"); |
| | | return; |
| | | } |
| | | // 先建立ext1到sort的映射关系 |
| | | Map<String, Integer> ext1ToSort = list.stream() |
| | | .collect(Collectors.toMap( |
| | | CokingProcessConfEntity::getExt1, |
| | | CokingProcessConfEntity::getSort, |
| | | (oldValue, newValue) -> oldValue)); |
| | | |
| | | // 然后按这个关系排序分组 |
| | | Map<String, List<CokingProcessConfEntity>> groupMap = list.stream() |
| | | .sorted(Comparator.comparing(CokingProcessConfEntity::getSort)) |
| | | .collect(Collectors.collectingAndThen( |
| | | Collectors.groupingBy(CokingProcessConfEntity::getExt1), |
| | | map -> map.entrySet().stream() |
| | | .sorted(Comparator.comparingInt( |
| | | e -> ext1ToSort.get(e.getKey()))) // 按ext1对应的sort值排序 |
| | | .collect(Collectors.toMap( |
| | | Map.Entry::getKey, |
| | | Map.Entry::getValue, |
| | | (a, b) -> a, |
| | | LinkedHashMap::new)))); |
| | | |
| | | logger.info("清理旧数据"); |
| | | cokingProcessChildService.deleteByClock(clock); |
| | | |
| | | AtomicReference<Integer> counter = new AtomicReference<>(1); |
| | | groupMap.forEach((group, confList) -> { |
| | | CokingProcessChildEntity cokingProcessChildEntity = new CokingProcessChildEntity(); |
| | | cokingProcessChildEntity.setInfoType("0"); |
| | | cokingProcessChildEntity.setSort(counter.getAndSet(counter.get() + 1)); |
| | | cokingProcessChildEntity.setCategory("day"); |
| | | cokingProcessChildEntity.setClock(clock); |
| | | CokingProcessConfEntity childConf = confList.get(0); |
| | | cokingProcessChildEntity.setIndType(childConf.getExt3()); |
| | | cokingProcessChildEntity.setIndMain(childConf.getExt4()); |
| | | cokingProcessChildEntity.setIndName(childConf.getExt5()); |
| | | confList.forEach(conf -> { |
| | | List<String> points = new ArrayList<>(); |
| | | points.add(conf.getPointNo()); |
| | | Map<String, Object> stringObjectMap = dataPointApi.queryPointsRealValue(points); |
| | | //保存数据 |
| | | Object value = stringObjectMap.get(conf.getPointNo()); |
| | | if(ObjectUtils.isNotEmpty(value)) { |
| | | if(conf.getExt2().equals(ProcessIndDataTypeEnum.LSPJ.getCode())) { |
| | | cokingProcessChildEntity.setAvgValue(value.toString()); |
| | | } else if(conf.getExt2().equals(ProcessIndDataTypeEnum.LLZ.getCode())) { |
| | | cokingProcessChildEntity.setTheoryValue(value.toString()); |
| | | } else if(conf.getExt2().equals(ProcessIndDataTypeEnum.SJZ.getCode())) { |
| | | cokingProcessChildEntity.setActualValue(value.toString()); |
| | | } else if(conf.getExt2().equals(ProcessIndDataTypeEnum.JZZ.getCode())) { |
| | | cokingProcessChildEntity.setStandValue(value.toString()); |
| | | } else if(conf.getExt2().equals(ProcessIndDataTypeEnum.SSSJ.getCode())) { |
| | | cokingProcessChildEntity.setRealValue(value.toString()); |
| | | } |
| | | } |
| | | }); |
| | | cokingProcessChildService.save(cokingProcessChildEntity); |
| | | }); |
| | | |
| | | } catch (Exception ex) { |
| | | logger.error("RunCokingChildDayTask运行异常"); |