package com.iailab.module.ansteel.job.task; import com.iailab.framework.common.util.date.DateUtils; import com.iailab.module.ansteel.coking.entity.CokingProcessConfEntity; import com.iailab.module.ansteel.coking.entity.CokingProdDayEntity; import com.iailab.module.ansteel.coking.service.CokingProcessConfService; import com.iailab.module.ansteel.coking.service.CokingProdDayService; 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 org.apache.commons.lang3.StringUtils; 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.*; /** * 生成焦化日前生产信息 * 0 5 0 * * ? * * @author HouZhongjian * @Description * @createTime 2025年04月12日 */ @Component("runCokingProdDayTask") public class RunCokingProdDayTask implements ITask { private Logger logger = LoggerFactory.getLogger(getClass()); @Resource private CokingProcessConfService cokingProcessConfService; @Resource private CokingProdDayService cokingProdDayService; @Resource private DataPointApi dataPointApi; @Resource private IndItemApi indItemApi; @Override public void run(String params) { logger.info("RunCokingProdDayTask,参数为:{}", params); try { CokingProcessConfEntity queryParams = new CokingProcessConfEntity(); queryParams.setIndType("prod_day"); List list = cokingProcessConfService.list(queryParams); if (CollectionUtils.isEmpty(list)) { logger.info("ConfLis is Empty"); return; } Calendar calendar = Calendar.getInstance(); calendar.set(Calendar.MILLISECOND, 0); calendar.set(Calendar.SECOND, 0); calendar.add(Calendar.DAY_OF_YEAR, -1); String clock = DateUtils.format(calendar.getTime(), DateUtils.FORMAT_YEAR_MONTH_DAY); logger.info("清理旧数据"); cokingProdDayService.deleteByClock(clock); for (CokingProcessConfEntity 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 points = new ArrayList<>(); points.add(conf.getPointNo()); Map pointsRealValue = dataPointApi.queryPointsRealValue(points); value = pointsRealValue.get(conf.getPointNo()).toString(); break; case IND: List indValues = indItemApi.queryIndItemDefaultValue(conf.getPointNo()); if (!CollectionUtils.isEmpty(indValues)) { value = indValues.get(indValues.size() - 1).getDataValue().toString(); } break; default: break; } this.saveProdDay(conf, value, clock); } } catch (Exception ex) { logger.error("RunCokingProdDayTask运行异常"); ex.printStackTrace(); } logger.info("RunCokingProdDayTask运行完成"); } private void saveProdDay(CokingProcessConfEntity conf, String value, String clock) { CokingProdDayEntity cokingProdDayEntity = new CokingProdDayEntity(); cokingProdDayEntity.setInfoType(conf.getInfoType()); cokingProdDayEntity.setSort(conf.getSort()); cokingProdDayEntity.setIndName(conf.getIndName()); cokingProdDayEntity.setIndUnit(conf.getIndUnit()); cokingProdDayEntity.setIndValue(value); cokingProdDayEntity.setClock(clock); cokingProdDayService.save(cokingProdDayEntity); } }