ansteel-biz/db/mysql.sql
@@ -553,12 +553,17 @@ ( `id` varchar(36) NOT NULL COMMENT 'id', `rel_id` varchar(36) NULL DEFAULT NULL COMMENT '关联ID', `process` varchar(20) NULL DEFAULT NULL COMMENT '工序名称', `ex_obj` varchar(20) NULL DEFAULT NULL COMMENT '异常对象', `clock` varchar(20) NULL DEFAULT NULL COMMENT '查询时间', `data_type` varchar(20) NULL DEFAULT NULL COMMENT '数据类型', `point_no` varchar(20) NULL DEFAULT NULL COMMENT '异常点位编号', `point_name` varchar(20) NULL DEFAULT NULL COMMENT '异常点位名称', `ex_date` datetime NULL DEFAULT NULL COMMENT '异常时间', `ex_type` varchar(20) NULL DEFAULT NULL COMMENT '异常原因', PRIMARY KEY (`id`) USING BTREE `ex_time` datetime NULL DEFAULT NULL COMMENT '异常时间', `ex_type` varchar(200) NULL DEFAULT NULL COMMENT '异常原因', `create_date` datetime COMMENT '创建时间', PRIMARY KEY (`id`) USING BTREE, key idx_rel_id (rel_id) ) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = DYNAMIC COMMENT '焦化工序数据异常'; -- ---------------------------- ansteel-biz/src/main/java/com/iailab/module/ansteel/api/controller/admin/CokingController.java
@@ -19,6 +19,7 @@ import com.iailab.module.data.api.point.dto.ApiPointValueQueryDTO; import io.swagger.v3.oas.annotations.Operation; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.util.CollectionUtils; import org.springframework.web.bind.annotation.GetMapping; @@ -74,6 +75,9 @@ @Autowired private CokingTraceChartService cokingTraceChartService; @Autowired private CokingTraceDataService cokingTraceDataService; @Resource private DataPointApi dataPointApi; @@ -81,38 +85,53 @@ private IndItemApi indItemApi; @GetMapping("/analy-ind/list") @Operation(summary = "焦化工序-指标分析") @Operation(summary = "焦化总图-指标分析") public CommonResult<List<CokingAnalyIndDTO>> getCokingAnalyIndList(@RequestParam Map<String, Object> params) { List<CokingAnalyIndEntity> list = cokingAnalyIndService.list(params); return success(ConvertUtils.sourceToTarget(list, CokingAnalyIndDTO.class)); } @GetMapping("/analy-trend/list") @Operation(summary = "焦化工序-趋势分析") @Operation(summary = "焦化工序-趋势分析(废弃)") public CommonResult<List<CokingAnalyTrendDTO>> getCokingAnalyTrendList(@RequestParam Map<String, Object> params) { List<CokingAnalyTrendEntity> list = cokingAnalyTrendService.list(params); return success(ConvertUtils.sourceToTarget(list, CokingAnalyTrendDTO.class)); } @GetMapping("/process-child/list") @Operation(summary = "焦化工序-子工序指标") @Operation(summary = "焦化总图-子工序指标") public CommonResult<List<CokingProcessChildDTO>> getCokingProcessChildList(@RequestParam Map<String, Object> params) { List<CokingProcessChildEntity> list = cokingProcessChildService.list(params); return success(ConvertUtils.sourceToTarget(list, CokingProcessChildDTO.class)); } @GetMapping("/process-main/list") @Operation(summary = "焦化工序-主工序指标") @Operation(summary = "焦化总图-主工序指标") public CommonResult<List<CokingProcessMainDTO>> getCokingProcessMainList(@RequestParam Map<String, Object> params) { List<CokingProcessMainEntity> list = cokingProcessMainService.list(params); return success(ConvertUtils.sourceToTarget(list, CokingProcessMainDTO.class)); } @GetMapping("/prod-day/list") @Operation(summary = "焦化工序-日生产信息") @Operation(summary = "焦化总图-日生产信息") public CommonResult<List<CokingProdDayDTO>> getCokingProdDayList(@RequestParam Map<String, Object> params) { List<CokingProdDayEntity> list = cokingProdDayService.list(params); return success(ConvertUtils.sourceToTarget(list, CokingProdDayDTO.class)); } @GetMapping("/ex-data/list") @Operation(summary = "焦化总图-异常数据") public CommonResult<List<CokingTraceDataDTO>> getExDataList(@RequestParam Map<String, Object> params) { String clock = (String) params.get("clock"); if (StringUtils.isBlank(clock)) { Calendar calendar = Calendar.getInstance(); calendar.add(Calendar.DAY_OF_YEAR, -1); clock = DateUtils.format(calendar.getTime(), "yyyy-MM-dd"); params.put("clock", clock); } List<CokingTraceDataEntity> list = cokingTraceDataService.list(params); return success(ConvertUtils.sourceToTarget(list, CokingTraceDataDTO.class)); } @@ -125,9 +144,21 @@ @GetMapping("/overview/abnormal-data") @Operation(summary = "各工序-异常数据") public CommonResult<List<CokingTraceSuggestEntity>> getAbnormalData(@RequestParam Map<String, Object> params) { List<CokingTraceSuggestEntity> result = cokingTraceSuggestService.getAbnormalData(params); return success(result); public CommonResult<List<CokingTraceDataDTO>> getAbnormalData(@RequestParam Map<String, Object> params) { String processType = (String) params.get("processType"); if (StringUtils.isBlank(processType)) { return success(new ArrayList<>()); } String clock = (String) params.get("clock"); if (StringUtils.isBlank(clock)) { Calendar calendar = Calendar.getInstance(); calendar.add(Calendar.DAY_OF_YEAR, -1); clock = DateUtils.format(calendar.getTime(), "yyyy-MM-dd"); params.put("clock", clock); } List<CokingTraceDataEntity> list = cokingTraceDataService.list(params); return success(ConvertUtils.sourceToTarget(list, CokingTraceDataDTO.class)); } @GetMapping("/trace-suggest/list") ansteel-biz/src/main/java/com/iailab/module/ansteel/coking/dto/CokingTraceDataDTO.java
@@ -24,6 +24,15 @@ @Schema(description = "关联ID") private String relId; @Schema(description = "工序名称") private String process; @Schema(description = "异常对象") private String exObj; @Schema(description = "查询时间") private String clock; @Schema(description = "数据类型") private String dataType; @@ -34,7 +43,7 @@ private String pointName; @Schema(description = "异常时间") private Date exDate; private Date exTime; @Schema(description = "异常原因") private String exType; ansteel-biz/src/main/java/com/iailab/module/ansteel/coking/entity/CokingTraceDataEntity.java
@@ -23,6 +23,21 @@ * 关联ID */ private String relId; /** * 工序名称 */ private String process; /** * 异常对象 */ private String exObj; /** * 查询时间 */ private String clock; /** * 数据类型 */ @@ -38,9 +53,14 @@ /** * 异常时间 */ private Date exDate; private Date exTime; /** * 异常原因 */ private String exType; /** * 创建时间 */ private Date createDate; } ansteel-biz/src/main/java/com/iailab/module/ansteel/coking/service/CokingTraceDataService.java
@@ -14,4 +14,6 @@ */ public interface CokingTraceDataService { List<CokingTraceDataEntity> list(Map<String, Object> params); void insertList(List<CokingTraceDataEntity> list); } ansteel-biz/src/main/java/com/iailab/module/ansteel/coking/service/impl/CokingTraceDataServiceImpl.java
@@ -4,6 +4,7 @@ import com.iailab.module.ansteel.coking.dao.CokingTraceDataDao; import com.iailab.module.ansteel.coking.entity.CokingTraceDataEntity; import com.iailab.module.ansteel.coking.service.CokingTraceDataService; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -24,6 +25,18 @@ @Override public List<CokingTraceDataEntity> list(Map<String, Object> params) { return cokingTraceDataDao.selectList(new QueryWrapper<>()); String processType = (String) params.get("processType"); String clock = (String) params.get("clock"); QueryWrapper<CokingTraceDataEntity> queryWrapper = new QueryWrapper<>(); queryWrapper.eq(StringUtils.isNotBlank(processType), "ex_obj", processType) .eq(StringUtils.isNotBlank(clock), "clock", clock) .orderByAsc("create_date"); return cokingTraceDataDao.selectList(queryWrapper); } @Override public void insertList(List<CokingTraceDataEntity> list) { cokingTraceDataDao.insert(list); } } ansteel-biz/src/main/java/com/iailab/module/ansteel/job/task/RunCokingOverviewTask.java
@@ -49,6 +49,8 @@ private CokingTraceChartService cokingTraceChartService; @Resource private CokingTraceSuggestService cokingTraceSuggestService; @Resource private CokingTraceDataService cokingTraceDataService; @Override public void run(String processTypes) { @@ -137,7 +139,8 @@ // 指标运行趋势 List<CokingProcessConfEntity> indRunTrend = list.stream().filter(e -> e.getInfoType().equals("1")).collect(Collectors.toList()); List<CokingTraceChartEntity> cokingTraceChartEntityList = new ArrayList<>(indRunTrend.size()); List<CokingTraceSuggestEntity> suggestEntitieList = new ArrayList<>(); // List<CokingTraceSuggestEntity> suggestEntitieList = new ArrayList<>(); List<CokingTraceDataEntity> exDatalist = new ArrayList<>(indRunTrend.size()); indRunTrend.forEach(e -> { CokingTraceChartEntity cokingTraceChartEntity = new CokingTraceChartEntity(); cokingTraceChartEntity.setRelId(relId); @@ -158,10 +161,11 @@ cokingTraceChartEntityList.add(cokingTraceChartEntity); // 异常数据处理 suggestEntitieList.addAll(handleAbnormalData(e, cokingTraceChartEntity.getStartTime(), cokingTraceChartEntity.getEndTime(),relId,clock)); exDatalist.addAll(handleAbnormalData(e, cokingTraceChartEntity.getStartTime(), cokingTraceChartEntity.getEndTime(),relId,clock)); }); cokingTraceChartService.insert(cokingTraceChartEntityList); cokingTraceSuggestService.insert(suggestEntitieList); // cokingTraceSuggestService.insert(suggestEntitieList); cokingTraceDataService.insertList(exDatalist); } } catch (Exception ex) { @@ -171,8 +175,8 @@ } private List<CokingTraceSuggestEntity> handleAbnormalData(CokingProcessConfEntity e, Date startTime, Date endTime, String relId, String clock) { List<CokingTraceSuggestEntity> suggestEntities = new ArrayList<>(); private List<CokingTraceDataEntity> handleAbnormalData(CokingProcessConfEntity e, Date startTime, Date endTime, String relId, String clock) { List<CokingTraceDataEntity> suggestEntities = new ArrayList<>(); switch (ProcessConfDataTypeEnum.getEumByCode(e.getDataType())) { case DATAPOINT: ApiPointValueQueryDTO queryDTO = new ApiPointValueQueryDTO(); @@ -198,7 +202,15 @@ content = DateUtils.format(calendar.getTime()) + " " + e.getIndName() + "数据异常(无数据)"; } if (StringUtils.isNotBlank(content)) { suggestEntities.add(new CokingTraceSuggestEntity(UUID.randomUUID().toString(),relId,ProcessTypeEnum.getEumByCode(e.getIndType()).getReportName(),e.getIndType()+"_AD",clock,content,new Date())); CokingTraceDataEntity ctd = new CokingTraceDataEntity(); ctd.setId(UUID.randomUUID().toString()); ctd.setRelId(relId); ctd.setProcess(ProcessTypeEnum.getEumByCode(e.getIndType()).getReportName()); ctd.setClock(clock); ctd.setExObj(e.getIndType()+"_AD"); ctd.setExTime(calendar.getTime()); ctd.setExType(content); suggestEntities.add(ctd); } calendar.add(Calendar.DAY_OF_YEAR,1); } @@ -228,7 +240,16 @@ content = time + " " + e.getIndName() + "数据异常(无数据)"; } if (StringUtils.isNotBlank(content)) { suggestEntities.add(new CokingTraceSuggestEntity(UUID.randomUUID().toString(),relId,ProcessTypeEnum.getEumByCode(e.getIndType()).getReportName(),e.getIndType()+"_AD",clock,content,new Date())); CokingTraceDataEntity ctd = new CokingTraceDataEntity(); ctd.setId(UUID.randomUUID().toString()); ctd.setRelId(relId); ctd.setProcess(ProcessTypeEnum.getEumByCode(e.getIndType()).getReportName()); ctd.setClock(clock); ctd.setExObj(e.getIndType()+"_AD"); ctd.setExTime(intCalendar.getTime()); ctd.setExType(content); suggestEntities.add(ctd); // suggestEntities.add(new CokingTraceSuggestEntity(UUID.randomUUID().toString(),relId,ProcessTypeEnum.getEumByCode(e.getIndType()).getReportName(),e.getIndType()+"_AD",clock,content,new Date())); } intCalendar.add(Calendar.DAY_OF_YEAR,1); }