From a3061e185fe19dc3a92c134335ee55a6c75f50ae Mon Sep 17 00:00:00 2001 From: houzhongjian <houzhongyi@126.com> Date: 星期六, 12 四月 2025 17:36:55 +0800 Subject: [PATCH] 焦化指标数据采集功能开发 --- ansteel-biz/src/main/java/com/iailab/module/ansteel/api/dao/CokingProcessConfDao.java | 15 ++ ansteel-biz/src/main/java/com/iailab/module/ansteel/api/entity/CokingProdDayEntity.java | 3 ansteel-biz/src/main/java/com/iailab/module/ansteel/api/service/CokingProcessMainService.java | 2 ansteel-biz/src/main/java/com/iailab/module/ansteel/api/service/CokingProdDayService.java | 2 ansteel-biz/src/main/java/com/iailab/module/ansteel/api/entity/CokingProcessChildEntity.java | 3 ansteel-biz/src/main/java/com/iailab/module/ansteel/api/service/impl/CokingProcessMainServiceImpl.java | 5 ansteel-biz/src/main/java/com/iailab/module/ansteel/api/service/impl/CokingProcessConfServiceImpl.java | 34 +++++ ansteel-biz/src/main/java/com/iailab/module/ansteel/api/entity/CokingProcessMainEntity.java | 3 ansteel-biz/src/main/java/com/iailab/module/ansteel/job/task/RunCokingMainDayTask.java | 87 ++++++++++++++ ansteel-biz/src/main/java/com/iailab/module/ansteel/api/entity/CokingProcessConfEntity.java | 75 ++++++++++++ ansteel-biz/src/main/java/com/iailab/module/ansteel/api/service/impl/CokingProdDayServiceImpl.java | 5 ansteel-biz/src/main/java/com/iailab/module/ansteel/job/task/RunCokingProdDayTask.java | 93 +++++++++++++++ ansteel-biz/src/main/java/com/iailab/module/ansteel/api/service/CokingProcessConfService.java | 22 +++ 13 files changed, 346 insertions(+), 3 deletions(-) diff --git a/ansteel-biz/src/main/java/com/iailab/module/ansteel/api/dao/CokingProcessConfDao.java b/ansteel-biz/src/main/java/com/iailab/module/ansteel/api/dao/CokingProcessConfDao.java new file mode 100644 index 0000000..a6512c9 --- /dev/null +++ b/ansteel-biz/src/main/java/com/iailab/module/ansteel/api/dao/CokingProcessConfDao.java @@ -0,0 +1,15 @@ +package com.iailab.module.ansteel.api.dao; + +import com.iailab.framework.common.dao.BaseDao; +import com.iailab.module.ansteel.api.entity.CokingProcessConfEntity; +import org.apache.ibatis.annotations.Mapper; + +/** + * 焦化工序工序指标配置 Mapper + * + * @author iailab + */ +@Mapper +public interface CokingProcessConfDao extends BaseDao<CokingProcessConfEntity> { + +} \ No newline at end of file diff --git a/ansteel-biz/src/main/java/com/iailab/module/ansteel/api/entity/CokingProcessChildEntity.java b/ansteel-biz/src/main/java/com/iailab/module/ansteel/api/entity/CokingProcessChildEntity.java index 890e3b7..a9d422e 100644 --- a/ansteel-biz/src/main/java/com/iailab/module/ansteel/api/entity/CokingProcessChildEntity.java +++ b/ansteel-biz/src/main/java/com/iailab/module/ansteel/api/entity/CokingProcessChildEntity.java @@ -1,5 +1,6 @@ package com.iailab.module.ansteel.api.entity; +import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import lombok.Data; @@ -16,7 +17,7 @@ public class CokingProcessChildEntity implements Serializable { private static final long serialVersionUID = 1L; - @TableId + @TableId(type = IdType.ASSIGN_UUID) private String id; private String category; diff --git a/ansteel-biz/src/main/java/com/iailab/module/ansteel/api/entity/CokingProcessConfEntity.java b/ansteel-biz/src/main/java/com/iailab/module/ansteel/api/entity/CokingProcessConfEntity.java new file mode 100644 index 0000000..6c72e35 --- /dev/null +++ b/ansteel-biz/src/main/java/com/iailab/module/ansteel/api/entity/CokingProcessConfEntity.java @@ -0,0 +1,75 @@ +package com.iailab.module.ansteel.api.entity; + +import lombok.*; + +import java.io.Serializable; +import com.baomidou.mybatisplus.annotation.*; + +/** + * 焦化工序工序指标配置 DO + * + * @author iailab + */ +@TableName("t_coking_process_conf") +@Data +public class CokingProcessConfEntity implements Serializable { + + /** + * id + */ + @TableId(type = IdType.INPUT) + private String id; + /** + * 信息类型(0:生产情况,1:能源发生,2:能源消耗) + */ + private String infoType; + /** + * 指标类型(prod_day,main,child) + */ + private String indType; + /** + * 测点编码 + */ + private String pointNo; + /** + * 指标编码 + */ + private String indCode; + /** + * 指标名称 + */ + private String indName; + /** + * 指标单位 + */ + private String indUnit; + /** + * 备注 + */ + private String remark; + /** + * 拓展字段1 + */ + private String ext1; + /** + * 拓展字段2 + */ + private String ext2; + /** + * 拓展字段3 + */ + private String ext3; + /** + * 拓展字段4 + */ + private String ext4; + /** + * 拓展字段5 + */ + private String ext5; + /** + * 排序 + */ + private Integer sort; + +} \ No newline at end of file diff --git a/ansteel-biz/src/main/java/com/iailab/module/ansteel/api/entity/CokingProcessMainEntity.java b/ansteel-biz/src/main/java/com/iailab/module/ansteel/api/entity/CokingProcessMainEntity.java index 3999de6..90d11d6 100644 --- a/ansteel-biz/src/main/java/com/iailab/module/ansteel/api/entity/CokingProcessMainEntity.java +++ b/ansteel-biz/src/main/java/com/iailab/module/ansteel/api/entity/CokingProcessMainEntity.java @@ -1,5 +1,6 @@ package com.iailab.module.ansteel.api.entity; +import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import lombok.Data; @@ -16,7 +17,7 @@ public class CokingProcessMainEntity implements Serializable { private static final long serialVersionUID = 1L; - @TableId + @TableId(type = IdType.ASSIGN_UUID) private String id; private String category; diff --git a/ansteel-biz/src/main/java/com/iailab/module/ansteel/api/entity/CokingProdDayEntity.java b/ansteel-biz/src/main/java/com/iailab/module/ansteel/api/entity/CokingProdDayEntity.java index 546ef32..7e1b5a7 100644 --- a/ansteel-biz/src/main/java/com/iailab/module/ansteel/api/entity/CokingProdDayEntity.java +++ b/ansteel-biz/src/main/java/com/iailab/module/ansteel/api/entity/CokingProdDayEntity.java @@ -1,5 +1,6 @@ package com.iailab.module.ansteel.api.entity; +import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import lombok.Data; @@ -16,7 +17,7 @@ public class CokingProdDayEntity implements Serializable { private static final long serialVersionUID = 1L; - @TableId + @TableId(type = IdType.ASSIGN_UUID) private String id; private String clock; diff --git a/ansteel-biz/src/main/java/com/iailab/module/ansteel/api/service/CokingProcessConfService.java b/ansteel-biz/src/main/java/com/iailab/module/ansteel/api/service/CokingProcessConfService.java new file mode 100644 index 0000000..bab38b4 --- /dev/null +++ b/ansteel-biz/src/main/java/com/iailab/module/ansteel/api/service/CokingProcessConfService.java @@ -0,0 +1,22 @@ +package com.iailab.module.ansteel.api.service; + +import com.iailab.module.ansteel.api.entity.CokingProcessConfEntity; + +import java.util.List; +import java.util.Map; + +/** + * 焦化工序工序指标配置 Service 接口 + * + * @author iailab + */ +public interface CokingProcessConfService { + + /** + * 查询配置列表 + * @param cokingProcessConfEntity + * @return + */ + List<CokingProcessConfEntity> list(CokingProcessConfEntity cokingProcessConfEntity); + +} \ No newline at end of file diff --git a/ansteel-biz/src/main/java/com/iailab/module/ansteel/api/service/CokingProcessMainService.java b/ansteel-biz/src/main/java/com/iailab/module/ansteel/api/service/CokingProcessMainService.java index 1ebd4aa..15eb09f 100644 --- a/ansteel-biz/src/main/java/com/iailab/module/ansteel/api/service/CokingProcessMainService.java +++ b/ansteel-biz/src/main/java/com/iailab/module/ansteel/api/service/CokingProcessMainService.java @@ -13,4 +13,6 @@ public interface CokingProcessMainService { List<CokingProcessMainEntity> list(Map<String, Object> params); + + void save(CokingProcessMainEntity cokingProcessMainEntity); } \ No newline at end of file diff --git a/ansteel-biz/src/main/java/com/iailab/module/ansteel/api/service/CokingProdDayService.java b/ansteel-biz/src/main/java/com/iailab/module/ansteel/api/service/CokingProdDayService.java index 02e78c9..598b34b 100644 --- a/ansteel-biz/src/main/java/com/iailab/module/ansteel/api/service/CokingProdDayService.java +++ b/ansteel-biz/src/main/java/com/iailab/module/ansteel/api/service/CokingProdDayService.java @@ -13,4 +13,6 @@ public interface CokingProdDayService { List<CokingProdDayEntity> list(Map<String, Object> params); + + void save(CokingProdDayEntity entity); } \ No newline at end of file diff --git a/ansteel-biz/src/main/java/com/iailab/module/ansteel/api/service/impl/CokingProcessConfServiceImpl.java b/ansteel-biz/src/main/java/com/iailab/module/ansteel/api/service/impl/CokingProcessConfServiceImpl.java new file mode 100644 index 0000000..a0a653f --- /dev/null +++ b/ansteel-biz/src/main/java/com/iailab/module/ansteel/api/service/impl/CokingProcessConfServiceImpl.java @@ -0,0 +1,34 @@ +package com.iailab.module.ansteel.api.service.impl; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.iailab.module.ansteel.api.dao.CokingProcessConfDao; +import com.iailab.module.ansteel.api.entity.CokingProcessConfEntity; +import com.iailab.module.ansteel.api.entity.CokingProcessMainEntity; +import com.iailab.module.ansteel.api.service.CokingProcessConfService; +import org.springframework.stereotype.Service; +import org.springframework.validation.annotation.Validated; + +import javax.annotation.Resource; +import java.util.List; +import java.util.Map; + + +/** + * 焦化工序工序指标配置 Service 实现类 + * + * @author iailab + */ +@Service +@Validated +public class CokingProcessConfServiceImpl implements CokingProcessConfService { + + @Resource + private CokingProcessConfDao cokingProcessConfDao; + + @Override + public List<CokingProcessConfEntity> list(CokingProcessConfEntity cokingProcessConfEntity) { + LambdaQueryWrapper<CokingProcessConfEntity> queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.eq(cokingProcessConfEntity.getIndType() != null, CokingProcessConfEntity::getIndType, cokingProcessConfEntity.getIndType()); + return cokingProcessConfDao.selectList(queryWrapper); + } +} \ No newline at end of file diff --git a/ansteel-biz/src/main/java/com/iailab/module/ansteel/api/service/impl/CokingProcessMainServiceImpl.java b/ansteel-biz/src/main/java/com/iailab/module/ansteel/api/service/impl/CokingProcessMainServiceImpl.java index 60e4223..e142ffd 100644 --- a/ansteel-biz/src/main/java/com/iailab/module/ansteel/api/service/impl/CokingProcessMainServiceImpl.java +++ b/ansteel-biz/src/main/java/com/iailab/module/ansteel/api/service/impl/CokingProcessMainServiceImpl.java @@ -29,4 +29,9 @@ queryWrapper.orderByAsc("sort"); return cokingProcessMainDao.selectList(queryWrapper); } + + @Override + public void save(CokingProcessMainEntity cokingProcessMainEntity) { + cokingProcessMainDao.insert(cokingProcessMainEntity); + } } \ No newline at end of file diff --git a/ansteel-biz/src/main/java/com/iailab/module/ansteel/api/service/impl/CokingProdDayServiceImpl.java b/ansteel-biz/src/main/java/com/iailab/module/ansteel/api/service/impl/CokingProdDayServiceImpl.java index fd5889e..bec1c11 100644 --- a/ansteel-biz/src/main/java/com/iailab/module/ansteel/api/service/impl/CokingProdDayServiceImpl.java +++ b/ansteel-biz/src/main/java/com/iailab/module/ansteel/api/service/impl/CokingProdDayServiceImpl.java @@ -29,4 +29,9 @@ queryWrapper.orderByAsc("sort"); return cokingProdDayDao.selectList(queryWrapper); } + + @Override + public void save(CokingProdDayEntity entity) { + cokingProdDayDao.insert(entity); + } } \ No newline at end of file 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 new file mode 100644 index 0000000..347ebf6 --- /dev/null +++ b/ansteel-biz/src/main/java/com/iailab/module/ansteel/job/task/RunCokingMainDayTask.java @@ -0,0 +1,87 @@ +package com.iailab.module.ansteel.job.task; + +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; +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.ArrayList; +import java.util.Calendar; +import java.util.List; +import java.util.Map; + +/** + * @author HouZhongjian + * @Description + * @createTime 2025年04月12日 + */ +@Component("runCokingMainDayTask") +public class RunCokingMainDayTask implements ITask { + + private Logger logger = LoggerFactory.getLogger(getClass()); + + @Resource + private CokingProcessConfService cokingProcessConfService; + + @Resource + private CokingProcessMainService cokingProcessMainService; + + @Resource + private DataPointApi dataPointApi; + + @Override + public void run(String params) { + logger.info("RunCokingMainDayTask,参数为:{}", params); + try { + Calendar calendar = Calendar.getInstance(); + calendar.set(Calendar.MILLISECOND, 0); + calendar.set(Calendar.SECOND, 0); + CokingProcessConfEntity queryParams = new CokingProcessConfEntity(); + 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); + // 获取当前日期时间 + LocalDateTime now = LocalDateTime.now(); + // 减去一天得到昨天同一时间 + LocalDateTime yesterday = now.minusDays(1); + // 格式化输出 + 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); + } + }); + } + + } catch (Exception ex) { + logger.error("RunCokingMainDayTask运行异常"); + ex.printStackTrace(); + } + logger.info("RunCokingMainDayTask运行完成"); + + } +} \ No newline at end of file diff --git a/ansteel-biz/src/main/java/com/iailab/module/ansteel/job/task/RunCokingProdDayTask.java b/ansteel-biz/src/main/java/com/iailab/module/ansteel/job/task/RunCokingProdDayTask.java new file mode 100644 index 0000000..6edc964 --- /dev/null +++ b/ansteel-biz/src/main/java/com/iailab/module/ansteel/job/task/RunCokingProdDayTask.java @@ -0,0 +1,93 @@ +package com.iailab.module.ansteel.job.task; + +import com.iailab.module.ansteel.api.entity.CokingProcessConfEntity; +import com.iailab.module.ansteel.api.entity.CokingProdDayEntity; +import com.iailab.module.ansteel.api.service.CokingProcessConfService; +import com.iailab.module.ansteel.api.service.CokingProdDayService; +import com.iailab.module.data.api.point.DataPointApi; +import com.iailab.module.model.api.mcs.McsApi; +import com.iailab.module.model.api.mcs.dto.StScheduleSchemeDTO; +import com.iailab.module.model.api.mdk.MdkApi; +import com.iailab.module.model.api.mdk.dto.MdkScheduleReqDTO; +import com.iailab.module.model.api.mdk.dto.MdkScheduleRespDTO; +import com.iailab.module.model.enums.ScheduleTriggerMethodEnum; +import org.apache.commons.lang3.ObjectUtils; +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.util.CollectionUtils; + +import javax.annotation.Resource; +import java.time.LocalDateTime; +import java.time.format.DateTimeFormatter; +import java.util.*; +import java.util.stream.Collectors; + +/** + * @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; + + @Override + public void run(String params) { + logger.info("RunCokingProdDayTask,参数为:{}", params); + try { + Calendar calendar = Calendar.getInstance(); + calendar.set(Calendar.MILLISECOND, 0); + calendar.set(Calendar.SECOND, 0); + CokingProcessConfEntity queryParams = new CokingProcessConfEntity(); + queryParams.setIndType("prod_day"); + 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); + // 获取当前日期时间 + LocalDateTime now = LocalDateTime.now(); + // 减去一天得到昨天同一时间 + LocalDateTime yesterday = now.minusDays(1); + // 格式化输出 + 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()))) { + CokingProdDayEntity cokingProdDayEntity = new CokingProdDayEntity(); + cokingProdDayEntity.setInfoType("0"); + cokingProdDayEntity.setSort(cokingProcessConfEntity.getSort()); + cokingProdDayEntity.setIndName(cokingProcessConfEntity.getIndName()); + cokingProdDayEntity.setIndUnit(cokingProcessConfEntity.getIndUnit()); + cokingProdDayEntity.setIndValue(stringObjectMap.get(cokingProcessConfEntity.getPointNo()).toString()); + cokingProdDayEntity.setClock(formattedDateTime); + cokingProdDayService.save(cokingProdDayEntity); + } + }); + } + + } catch (Exception ex) { + logger.error("RunCokingProdDayTask运行异常"); + ex.printStackTrace(); + } + logger.info("RunCokingProdDayTask运行完成"); + + } +} \ No newline at end of file -- Gitblit v1.9.3