ansteel-biz/db/mysql.sql
@@ -226,4 +226,52 @@ CREATE INDEX IDX_QRTZ_FT_J_G ON QRTZ_FIRED_TRIGGERS (SCHED_NAME, JOB_NAME, JOB_GROUP); CREATE INDEX IDX_QRTZ_FT_JG ON QRTZ_FIRED_TRIGGERS (SCHED_NAME, JOB_GROUP); CREATE INDEX IDX_QRTZ_FT_T_G ON QRTZ_FIRED_TRIGGERS (SCHED_NAME, TRIGGER_NAME, TRIGGER_GROUP); CREATE INDEX IDX_QRTZ_FT_TG ON QRTZ_FIRED_TRIGGERS (SCHED_NAME, TRIGGER_GROUP); CREATE INDEX IDX_QRTZ_FT_TG ON QRTZ_FIRED_TRIGGERS (SCHED_NAME, TRIGGER_GROUP); DROP TABLE IF EXISTS `t_main_process_index_day`; CREATE TABLE `t_main_process_index_day` ( `id` varchar(36) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT 'id', `index` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '指标', `his_avg` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '历史平均', `theory` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '理论值', `actual` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '实际值', `real_data` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '实时数据', PRIMARY KEY (`id`) USING BTREE ) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = DYNAMIC; -- ---------------------------- -- Records of t_main_process_index_day -- ---------------------------- INSERT INTO `t_main_process_index_day` VALUES ('1', 'COG消耗', NULL, NULL, NULL, NULL); INSERT INTO `t_main_process_index_day` VALUES ('2', 'COG发生', NULL, NULL, NULL, NULL); INSERT INTO `t_main_process_index_day` VALUES ('3', 'BFG消耗', NULL, NULL, NULL, NULL); INSERT INTO `t_main_process_index_day` VALUES ('4', '蒸汽消耗', NULL, NULL, NULL, NULL); INSERT INTO `t_main_process_index_day` VALUES ('5', '蒸汽产生', NULL, NULL, NULL, NULL); INSERT INTO `t_main_process_index_day` VALUES ('6', '电力消耗', NULL, NULL, NULL, NULL); SET FOREIGN_KEY_CHECKS = 1; DROP TABLE IF EXISTS `t_main_process_index_team`; CREATE TABLE `t_main_process_index_team` ( `id` varchar(36) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT 'id', `index` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '指标', `his_avg` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '历史平均', `theory` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '理论值', `actual` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '实际值', `real_data` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '实时数据', PRIMARY KEY (`id`) USING BTREE ) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = DYNAMIC; -- ---------------------------- -- Records of t_main_process_index_team -- ---------------------------- INSERT INTO `t_main_process_index_team` VALUES ('1', 'COG消耗', NULL, NULL, NULL, NULL); INSERT INTO `t_main_process_index_team` VALUES ('2', 'COG发生', NULL, NULL, NULL, NULL); INSERT INTO `t_main_process_index_team` VALUES ('3', 'BFG消耗', NULL, NULL, NULL, NULL); INSERT INTO `t_main_process_index_team` VALUES ('4', '蒸汽消耗', NULL, NULL, NULL, NULL); INSERT INTO `t_main_process_index_team` VALUES ('5', '蒸汽产生', NULL, NULL, NULL, NULL); INSERT INTO `t_main_process_index_team` VALUES ('6', '电力消耗', NULL, NULL, NULL, NULL); SET FOREIGN_KEY_CHECKS = 1; ansteel-biz/src/main/java/com/iailab/module/ansteel/api/controller/admin/DataController.java
@@ -1,11 +1,14 @@ package com.iailab.module.ansteel.api.controller.admin; import com.iailab.framework.common.pojo.CommonResult; import com.iailab.module.ansteel.api.dto.MainProcessIndexDTO; import com.iailab.module.ansteel.api.dto.PlanDataChartReqVO; import com.iailab.module.ansteel.api.dto.PowerRunStateDTO; import com.iailab.module.ansteel.api.dto.PreDataChartRespVO; import com.iailab.module.ansteel.api.service.DataApi; import com.iailab.module.model.api.mcs.dto.PreDataSingleChartReqVO; import com.iailab.module.model.api.mcs.dto.StAlarmAndSuggestReqVO; import com.iailab.module.model.api.mcs.dto.StAlarmAndSuggestRespVO; import io.swagger.v3.oas.annotations.Operation; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; @@ -48,4 +51,16 @@ return CommonResult.success(tMap); } @GetMapping("/main-process-index/list") @Operation(summary = "主工序指标") public CommonResult<List<MainProcessIndexDTO>> getIndexList(@RequestParam Map<String, Object> params) { List<MainProcessIndexDTO> list = dataApi.getIndexList(params); return success(list); } @PostMapping("/schedule-suggest/update-status") @Operation(summary = "修改建议状态") public CommonResult<Boolean> updateSuggestStatus(@RequestBody StAlarmAndSuggestReqVO ReqVO) { return success(dataApi.updateSuggestStatus(ReqVO)); } } ansteel-biz/src/main/java/com/iailab/module/ansteel/api/dao/MainProcessIndexDayDao.java
对比新文件 @@ -0,0 +1,12 @@ package com.iailab.module.ansteel.api.dao; import com.iailab.framework.common.dao.BaseDao; import com.iailab.framework.tenant.core.db.dynamic.TenantDS; import com.iailab.module.ansteel.api.entity.MainProcessIndexDayEntity; import org.apache.ibatis.annotations.Mapper; @TenantDS @Mapper public interface MainProcessIndexDayDao extends BaseDao<MainProcessIndexDayEntity> { } ansteel-biz/src/main/java/com/iailab/module/ansteel/api/dao/MainProcessIndexTeamDao.java
对比新文件 @@ -0,0 +1,12 @@ package com.iailab.module.ansteel.api.dao; import com.iailab.framework.common.dao.BaseDao; import com.iailab.framework.tenant.core.db.dynamic.TenantDS; import com.iailab.module.ansteel.api.entity.MainProcessIndexTeamEntity; import org.apache.ibatis.annotations.Mapper; @TenantDS @Mapper public interface MainProcessIndexTeamDao extends BaseDao<MainProcessIndexTeamEntity> { } ansteel-biz/src/main/java/com/iailab/module/ansteel/api/dto/MainProcessIndexDTO.java
对比新文件 @@ -0,0 +1,22 @@ package com.iailab.module.ansteel.api.dto; import lombok.Data; import java.io.Serializable; /** * @author lirm * @date 2025年03月13日 */ @Data public class MainProcessIndexDTO implements Serializable { private static final long serialVersionUID = 1L; private String id; private String indexName; private String hisAvg; private String theory; private String actual; private String realData; } ansteel-biz/src/main/java/com/iailab/module/ansteel/api/dto/PlanDataChartReqVO.java
@@ -6,6 +6,7 @@ import java.io.Serializable; import java.util.Date; import java.util.List; /** * @author lirm @@ -16,7 +17,7 @@ public class PlanDataChartReqVO implements Serializable { private static final long serialVersionUID = 1L; @Schema(description = "图标编码") @Schema(description = "图表编码") private String chartCode; @Schema(description = "开始时间") @@ -25,9 +26,9 @@ @Schema(description = "结束时间") private String endTime; @Schema(description = "预测时间") private String predictTime; @Schema(description = "计划编码集合") private List<String> planCodes; @Schema(description = "右侧长度") private int lengthRight; @Schema(description = "图表编码集合") private List<String> planPreds; } ansteel-biz/src/main/java/com/iailab/module/ansteel/api/entity/MainProcessIndexDayEntity.java
对比新文件 @@ -0,0 +1,29 @@ package com.iailab.module.ansteel.api.entity; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import lombok.Data; import java.io.Serializable; /** * @description: 主工序指标 * @author: lirm * @date: 2025/03/13 **/ @Data @TableName("t_main_process_index_day") public class MainProcessIndexDayEntity implements Serializable { private static final long serialVersionUID = 1L; /** * id */ @TableId private String id; private String indexName; private String hisAvg; private String theory; private String actual; private String realData; } ansteel-biz/src/main/java/com/iailab/module/ansteel/api/entity/MainProcessIndexTeamEntity.java
对比新文件 @@ -0,0 +1,29 @@ package com.iailab.module.ansteel.api.entity; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import lombok.Data; import java.io.Serializable; /** * @description: 主工序指标 * @author: lirm * @date: 2025/03/13 **/ @Data @TableName("t_main_process_index_day") public class MainProcessIndexTeamEntity implements Serializable { private static final long serialVersionUID = 1L; /** * id */ @TableId private String id; private String indexName; private String hisAvg; private String theory; private String actual; private String realData; } ansteel-biz/src/main/java/com/iailab/module/ansteel/api/service/DataApi.java
@@ -1,10 +1,9 @@ package com.iailab.module.ansteel.api.service; import com.iailab.module.ansteel.api.dto.PlanDataChartReqVO; import com.iailab.module.ansteel.api.dto.PlanDataChartRespVO; import com.iailab.module.ansteel.api.dto.PowerRunStateDTO; import com.iailab.module.ansteel.api.dto.PreDataChartRespVO; import com.iailab.module.ansteel.api.dto.*; import com.iailab.module.model.api.mcs.dto.PreDataSingleChartReqVO; import com.iailab.module.model.api.mcs.dto.StAlarmAndSuggestReqVO; import com.iailab.module.model.api.mcs.dto.StAlarmAndSuggestRespVO; import java.util.List; import java.util.Map; @@ -21,4 +20,8 @@ PreDataChartRespVO getPreDataChart(PreDataSingleChartReqVO reqVO); Map<String, Object> getPlanDataChart(PlanDataChartReqVO reqVO); List<MainProcessIndexDTO> getIndexList(Map<String, Object> params); Boolean updateSuggestStatus(StAlarmAndSuggestReqVO ReqVO); } ansteel-biz/src/main/java/com/iailab/module/ansteel/api/service/impl/DataServiceImpl.java
@@ -3,6 +3,8 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.iailab.framework.common.util.date.DateUtils; import com.iailab.framework.common.util.object.ConvertUtils; import com.iailab.module.ansteel.api.dao.MainProcessIndexDayDao; import com.iailab.module.ansteel.api.dao.MainProcessIndexTeamDao; import com.iailab.module.ansteel.api.dao.PowerRunStateDao; import com.iailab.module.ansteel.api.dto.*; import com.iailab.module.ansteel.api.service.DataApi; @@ -41,6 +43,12 @@ @Autowired private PowerRunStateDao powerRunStateDao; @Autowired private MainProcessIndexDayDao mainProcessIndexDayDao; @Autowired private MainProcessIndexTeamDao mainProcessIndexTeamDao; @Override public List<PowerRunStateDTO> getPowerRunState() { List<PowerRunStateDTO> list = ConvertUtils.sourceToTarget(powerRunStateDao.selectList(new QueryWrapper<>()), PowerRunStateDTO.class); @@ -77,6 +85,42 @@ }).collect(Collectors.toList()); } return list; } @Override public List<MainProcessIndexDTO> getIndexList(Map<String, Object> params) { List<MainProcessIndexDTO> list = new ArrayList<>(); if("day".equals(params.get("type"))) { list = ConvertUtils.sourceToTarget(mainProcessIndexDayDao.selectList(new QueryWrapper<>()), MainProcessIndexDTO.class); }else if("team".equals(params.get("type"))){ list = ConvertUtils.sourceToTarget(mainProcessIndexTeamDao.selectList(new QueryWrapper<>()), MainProcessIndexDTO.class); } if (!CollectionUtils.isEmpty(list)) { list.stream().map(item -> { StringBuffer sb = new StringBuffer(); sb.append(item.getHisAvg()); sb.append(","); sb.append(item.getTheory()); sb.append(","); sb.append(item.getActual()); sb.append(","); sb.append(item.getRealData()); String[] arr = sb.toString().split(","); Map<String, Object> adjValue = dataPointApi.queryPointsRealValue(Arrays.asList(arr)); item.setHisAvg(ObjectUtils.isEmpty(adjValue.get(arr[0])) ? "0" : new BigDecimal(adjValue.get(arr[0]).toString()).setScale(2, BigDecimal.ROUND_HALF_UP).toString()); item.setTheory(ObjectUtils.isEmpty(adjValue.get(arr[1])) ? "0" : new BigDecimal(adjValue.get(arr[1]).toString()).setScale(2, BigDecimal.ROUND_HALF_UP).toString()); item.setActual(ObjectUtils.isEmpty(adjValue.get(arr[2])) ? "0" : new BigDecimal(adjValue.get(arr[2]).toString()).setScale(2, BigDecimal.ROUND_HALF_UP).toString()); item.setRealData(ObjectUtils.isEmpty(adjValue.get(arr[3])) ? "0" : new BigDecimal(adjValue.get(arr[3]).toString()).setScale(2, BigDecimal.ROUND_HALF_UP).toString()); return item; }).collect(Collectors.toList()); } return list; } @Override public Boolean updateSuggestStatus(StAlarmAndSuggestReqVO ReqVO) { return mcsApi.updateSuggestStatus(ReqVO); } @Override @@ -186,33 +230,6 @@ return result; } private Date[] calResultTime2(Date predictTimeReq,String startTimeReq, String endTimeReq, int lengthLeft, int lengthRight) { Date[] result = new Date[2]; Date predictTime = predictTimeReq; Date startTime = new Date(); if (startTimeReq == null) { Calendar calendar = Calendar.getInstance(); calendar.setTime(predictTime); calendar.add(Calendar.SECOND, -1 * lengthLeft * 60); startTime = calendar.getTime(); } Date endTime = new Date(); if (endTimeReq == null) { Calendar calendar = Calendar.getInstance(); calendar.setTime(predictTime); calendar.add(Calendar.SECOND, lengthRight * 60); endTime = calendar.getTime(); } if (endTime.getTime() <= startTime.getTime()) { Calendar calendar = Calendar.getInstance(); calendar.setTime(startTime); calendar.add(Calendar.SECOND, lengthRight * 60); endTime = calendar.getTime(); } result[0] = startTime; result[1] = endTime; return result; } /** * 查询原始计划、修正计划数据 */ @@ -227,44 +244,33 @@ list.forEach(item -> { tMap.put(item.getParamCode(), item.getParamValue()); }); String planCode = tMap.get(CommonConstant.PLAN_CODE); if (planCode == null) { return null; } String itemCode = tMap.get(CommonConstant.ITEM_CODE); if (itemCode == null) { return null; } PreDataSingleChartReqVO queryDto = new PreDataSingleChartReqVO(); queryDto.setChartCode(reqVO.getChartCode()); PreDataSingleChartRespVO chartData = mcsApi.getPreDataSingleChart(queryDto); Date predictTime = chartData.getPredictTime(); int lengthLeft = new BigDecimal(tMap.get(CommonConstant.LENGTH_LEFT)).intValue(); int lengthRight = reqVO.getLengthRight(); Date[] timeArray = calResultTime2(predictTime, reqVO.getStartTime(), reqVO.getEndTime(), lengthLeft, lengthRight); Date startTime = timeArray[0]; Date endTime = timeArray[1]; Date startTime = chartData.getStartTime(); Date endTime = chartData.getEndTime(); // 原始计划数据 LinkedHashMap<String, List<String[]>> planData = getRealPlanData(planCode, startTime, endTime, predictTime); LinkedHashMap<String, List<String[]>> planData = getRealPlanData(reqVO.getPlanCodes(), startTime, endTime, predictTime); // 修正计划数据 LinkedHashMap<String, List<String[]>> predData = new LinkedHashMap<>(); predData.put(reqVO.getChartCode(), getPrePlanData(reqVO.getChartCode(), predictTime, endTime)); for (int i = 0; i < reqVO.getPlanCodes().size(); i++) { predData.put(reqVO.getPlanCodes().get(i), getPrePlanData(reqVO.getPlanPreds().get(i), predictTime, endTime)); } result.put("planData", planData); result.put("predData", predData); return result; } //原始计划 public LinkedHashMap<String, List<String[]>> getRealPlanData(String planCode, Date startTime, Date endTime, Date predictTime) { public LinkedHashMap<String, List<String[]>> getRealPlanData(List<String> planCodes, Date startTime, Date endTime, Date predictTime) { LinkedHashMap<String, List<String[]>> result = new LinkedHashMap<>(); ApiDataQueryDTO apiDataQueryDTO = new ApiDataQueryDTO(); List<String> itemList = Arrays.asList(planCode.toString().split(",")); apiDataQueryDTO.setItemNos(itemList); apiDataQueryDTO.setItemNos(planCodes); apiDataQueryDTO.setStart(startTime); apiDataQueryDTO.setEnd(endTime); LinkedHashMap<String, List<ApiPlanDataDTO>> planData = planItemApi.queryPlanItemRecordValue(apiDataQueryDTO); ansteel-biz/src/main/resources/application.yaml
@@ -4,7 +4,7 @@ name: ansteel-server profiles: active: prod active: dev cloud: nacos: @@ -151,6 +151,8 @@ - schedule_job - schedule_job_log - t_power_run_state - t_main_process_index_day - t_main_process_index_team swagger: title: 选煤厂安全管理平台 description: 选煤厂安全管理平台 doc/鞍钢数据接口文档_dev_li.docBinary files differ
doc/鞍钢数据接口文档_master.docBinary files differ