Merge branch 'master' of http://dlindusit.com:53929/r/ansteel
| | |
| | | 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; |
| | | |
| | | -- ---------------------------- |
| | | -- 电力功率因数-电网拓扑 |
| | | -- ---------------------------- |
| | | DROP TABLE IF EXISTS `t_power_net_factor`; |
| | | CREATE TABLE `t_power_net_factor` ( |
| | | `id` varchar(36) NOT NULL COMMENT 'id', |
| | | `group_name` varchar(50) NULL DEFAULT NULL COMMENT '分组名称', |
| | | `node_name` varchar(50) NULL DEFAULT NULL COMMENT '节点名称', |
| | | `cur_p` varchar(50) NULL DEFAULT NULL COMMENT '当前有功', |
| | | `cur_q` varchar(50) NULL DEFAULT NULL COMMENT '当前无功', |
| | | `cur_cos` varchar(50) NULL DEFAULT NULL COMMENT '当前功率因数', |
| | | `pre_p` varchar(50) NULL DEFAULT NULL COMMENT '预测有功', |
| | | `pre_q` varchar(50) NULL DEFAULT NULL COMMENT '预测无功', |
| | | `pre_cos` varchar(50) NULL DEFAULT NULL COMMENT '预测功率因数', |
| | | `item_id` varchar(50) NULL DEFAULT NULL COMMENT '预测项ID', |
| | | `out_id` varchar(50) NULL DEFAULT NULL COMMENT '预测项输出ID', |
| | | `limit_h` decimal(6, 3) NULL DEFAULT NULL COMMENT '上限', |
| | | `limit_l` decimal(6, 3) NULL DEFAULT NULL COMMENT '下限', |
| | | `status` int DEFAULT 0 COMMENT '是否超限(0:正常,1:超限)', |
| | | `sort` int NULL DEFAULT NULL COMMENT '排序', |
| | | PRIMARY KEY (`id`) USING BTREE |
| | | ) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = DYNAMIC COMMENT '电力功率因数电网拓扑'; |
| | | |
| | | -- ---------------------------- |
| | | -- 电力功率因数-电容器投运状态 |
| | | -- ---------------------------- |
| | | DROP TABLE IF EXISTS `t_power_capacitor_status`; |
| | | CREATE TABLE `t_power_capacitor_status` ( |
| | | `id` varchar(36) NOT NULL COMMENT 'id', |
| | | `name` varchar(50) NULL DEFAULT NULL COMMENT '电容器名称', |
| | | `main_count` varchar(50) NULL DEFAULT NULL COMMENT '主变数量', |
| | | `main_point` varchar(500) NULL DEFAULT NULL COMMENT '主变测点编码', |
| | | `child_count` varchar(50) NULL DEFAULT NULL COMMENT '下属数量', |
| | | `child_point` varchar(500) NULL DEFAULT NULL COMMENT '下属测点编码', |
| | | `on_count` varchar(500) NULL DEFAULT NULL COMMENT '投运数量', |
| | | `remark` varchar(50) NULL DEFAULT NULL COMMENT '备注', |
| | | `sort` int NULL DEFAULT NULL COMMENT '排序', |
| | | PRIMARY KEY (`id`) USING BTREE |
| | | ) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = DYNAMIC COMMENT '电力功率因数电容器投运状态'; |
| | | |
| | | -- ---------------------------- |
| | | -- 电力功率因数-管控功率因数主表 |
| | | -- ---------------------------- |
| | | DROP TABLE IF EXISTS `t_power_control_main`; |
| | | CREATE TABLE `t_power_control_main` ( |
| | | `id` varchar(36) NOT NULL COMMENT 'id', |
| | | `name` varchar(50) NULL DEFAULT NULL COMMENT '名称', |
| | | `remark` varchar(50) NULL DEFAULT NULL COMMENT '备注', |
| | | `sort` int NULL DEFAULT NULL COMMENT '排序', |
| | | PRIMARY KEY (`id`) USING BTREE, |
| | | UNIQUE INDEX `uk_name` varchar(50) NULL DEFAULT NULL COMMENT '名称' |
| | | ) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = DYNAMIC COMMENT '电力功率因数管控功率因数主表'; |
| | | |
| | | -- ---------------------------- |
| | | -- 电力功率因数-管控功率因数从表 |
| | | -- ---------------------------- |
| | | DROP TABLE IF EXISTS `t_power_control_det`; |
| | | CREATE TABLE `t_power_control_det` ( |
| | | `id` varchar(36) NOT NULL COMMENT 'id', |
| | | `control_id` varchar(36) NOT NULL COMMENT '主表ID', |
| | | `name` varchar(50) NULL DEFAULT NULL COMMENT '名称', |
| | | `point` varchar(50) NULL DEFAULT NULL COMMENT '测点', |
| | | `limit_l` decimal(6, 3) NULL DEFAULT NULL COMMENT '下限', |
| | | `status` int DEFAULT 0 COMMENT '是否超限(0:正常,1:超限)', |
| | | `sort` int NULL DEFAULT NULL COMMENT '排序', |
| | | PRIMARY KEY (`id`) USING BTREE |
| | | ) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = DYNAMIC COMMENT '电力功率因数管控功率因数从表'; |
| | |
| | | package com.iailab.module.ansteel.api.controller.admin; |
| | | |
| | | import com.iailab.framework.common.pojo.CommonResult; |
| | | 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.dto.*; |
| | | 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; |
| | |
| | | return CommonResult.success(tMap); |
| | | } |
| | | |
| | | @GetMapping("/main-process-index/list") |
| | | @Operation(summary = "主工序指标") |
| | | public CommonResult<List<MainProcessIndexDTO>> getMainIndexList(@RequestParam Map<String, Object> params) { |
| | | List<MainProcessIndexDTO> list = dataApi.getIndexList(params); |
| | | return success(list); |
| | | } |
| | | |
| | | @GetMapping("/child-process-index/list") |
| | | @Operation(summary = "子工序指标") |
| | | public CommonResult<List<ChildProcessIndexDTO>> getChildIndexList(@RequestParam Map<String, Object> params) { |
| | | List<ChildProcessIndexDTO> list = new ArrayList<>(); |
| | | return success(list); |
| | | } |
| | | |
| | | @PostMapping("/schedule-suggest/use-suggest") |
| | | @Operation(summary = "采纳建议") |
| | | public CommonResult<Boolean> useSuggest(@RequestBody StAlarmAndSuggestReqVO ReqVO) { |
| | | return success(dataApi.useSuggest(ReqVO)); |
| | | } |
| | | } |
| | |
| | | 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.CommonConstant; |
| | | import io.swagger.v3.oas.annotations.Operation; |
| | | import lombok.extern.slf4j.Slf4j; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | |
| | | @Autowired |
| | | private MdkApi mdkApi; |
| | | |
| | | /** |
| | | * 负荷移植-负荷移植建议与方案 |
| | | * |
| | | * @param reqVO |
| | | * @return |
| | | */ |
| | | @PostMapping("/power-transfer") |
| | | @Operation(summary = "异常工况下的负荷移植") |
| | | @Operation(summary = "负荷移植-负荷移植建议与方案") |
| | | public CommonResult<PowerTransferRespVO> scheduleEleLoad(@RequestBody PowerTransferReqVO reqVO) { |
| | | log.info("异常工况下的负荷移植"); |
| | | PowerTransferRespVO result = new PowerTransferRespVO(); |
| | |
| | | calendar.set(Calendar.MILLISECOND,0); |
| | | MdkScheduleReqDTO dto = new MdkScheduleReqDTO(); |
| | | dto.setScheduleTime(calendar.getTime()); |
| | | dto.setScheduleCode("AnSteelpowertransfer"); |
| | | Map<String, String> dynamicSettings = new HashMap<>(); |
| | | Integer[] xiufengOrder = {reqVO.getBfg(), |
| | | reqVO.getStart(), |
| | | reqVO.getMins()}; |
| | | dynamicSettings.put("xiufeng_order", JSONArray.toJSONString(xiufengOrder)); |
| | | dynamicSettings.put("jiaohua_BFG_down", reqVO.getLimit().toString()); |
| | | dto.setDynamicSettings(dynamicSettings); |
| | | |
| | | if ("1".equals(reqVO.getType())) { |
| | | // 高炉休风 |
| | | dto.setScheduleCode("AnSteelpowertransfer"); |
| | | Map<String, String> dynamicSettings = new HashMap<>(); |
| | | Integer[] xiufengOrder = {reqVO.getBfg(), |
| | | reqVO.getStart(), |
| | | reqVO.getMins()}; |
| | | dynamicSettings.put("xiufeng_order", JSONArray.toJSONString(xiufengOrder)); |
| | | dynamicSettings.put("jiaohua_BFG_down", reqVO.getLimit().toString()); |
| | | dto.setDynamicSettings(dynamicSettings); |
| | | } else if ("2".equals(reqVO.getType())) { |
| | | // 产线检修 |
| | | |
| | | |
| | | } |
| | | log.info("调度方案开始执行," + JSONObject.toJSONString(dto)); |
| | | MdkScheduleRespDTO mdkScheduleRespDTO = mdkApi.doSchedule(dto); |
| | | log.info("调度方案执行完成," + mdkScheduleRespDTO); |
| | | |
| | | Map<String, Object> data = mdkScheduleRespDTO.getResult(); |
| | | result.setBestTotalPower(DecimalUtil.toBigDecimal(data.get("best_total_power"))); |
| | | result.setBfgAdvice(DecimalUtil.toBigDecimal(data.get("BFGAdvice"))); |
| | | result.setDemandAdvice(DecimalUtil.toBigDecimal(data.get("DemandAdvice"))); |
| | | result.setJiaohuaAdviceTime(DecimalUtil.toBigDecimal(data.get("jiaohuaAdvice"), 0).intValue()); |
| | | result.setJiaohuaAdviceAmount(DecimalUtil.toBigDecimal(data.get("jiaohuaAdvice"), 1).intValue()); |
| | | String statusCode = mdkScheduleRespDTO.getStatusCode(); |
| | | if (!CommonConstant.MDK_STATUS_100.equals(statusCode)) { |
| | | log.info("statusCode=" + statusCode); |
| | | return CommonResult.error(GlobalErrorCodeConstants.UNKNOWN.getCode(), "工序异常,无计算结果"); |
| | | } |
| | | |
| | | adviceList.add(DecimalUtil.toPowerTransferDetRespVO("中板工序", data.get("zhongabnAdvice"))); |
| | | adviceList.add(DecimalUtil.toPowerTransferDetRespVO("厚板工序", data.get("houbanAdvice"))); |
| | | adviceList.add(DecimalUtil.toPowerTransferDetRespVO("热轧工序", data.get("rezhaAdvice"))); |
| | | adviceList.add(DecimalUtil.toPowerTransferDetRespVO("白灰工序", data.get("baihuiAdvice"))); |
| | | adviceList.add(DecimalUtil.toPowerTransferDetRespVO("3#制氧机", data.get("zhiyangAdvice"))); |
| | | adviceList.add(DecimalUtil.toPowerTransferDetRespVO("1#LF炉", data.get("1LFAdvice"))); |
| | | adviceList.add(DecimalUtil.toPowerTransferDetRespVO("2#LF炉", data.get("2LFAdvice"))); |
| | | adviceList.add(DecimalUtil.toPowerTransferDetRespVO("B系列烧结", data.get("shaojieAdvice"))); |
| | | adviceList.add(DecimalUtil.toPowerTransferDetRespVO("CCPP", data.get("CCPPAdvice"))); |
| | | Map<String, Object> data = mdkScheduleRespDTO.getResult(); |
| | | if ("1".equals(reqVO.getType())) { |
| | | // 高炉休风 |
| | | result.setBestTotalPower(DecimalUtil.toBigDecimal(data.get("best_total_power"))); |
| | | result.setBfgAdvice(DecimalUtil.toBigDecimal(data.get("BFGAdvice"))); |
| | | result.setDemandAdvice(DecimalUtil.toBigDecimal(data.get("DemandAdvice"))); |
| | | result.setJiaohuaAdviceTime(DecimalUtil.toBigDecimal(data.get("jiaohuaAdvice"), 0).intValue()); |
| | | result.setJiaohuaAdviceAmount(DecimalUtil.toBigDecimal(data.get("jiaohuaAdvice"), 1).intValue()); |
| | | |
| | | adviceList.add(DecimalUtil.toPowerTransferDetRespVO("中板工序", data.get("zhongabnAdvice"))); |
| | | adviceList.add(DecimalUtil.toPowerTransferDetRespVO("厚板工序", data.get("houbanAdvice"))); |
| | | adviceList.add(DecimalUtil.toPowerTransferDetRespVO("热轧工序", data.get("rezhaAdvice"))); |
| | | adviceList.add(DecimalUtil.toPowerTransferDetRespVO("白灰工序", data.get("baihuiAdvice"))); |
| | | adviceList.add(DecimalUtil.toPowerTransferDetRespVO("3#制氧机", data.get("zhiyangAdvice"))); |
| | | adviceList.add(DecimalUtil.toPowerTransferDetRespVO("1#LF炉", data.get("1LFAdvice"))); |
| | | adviceList.add(DecimalUtil.toPowerTransferDetRespVO("2#LF炉", data.get("2LFAdvice"))); |
| | | adviceList.add(DecimalUtil.toPowerTransferDetRespVO("B系列烧结", data.get("shaojieAdvice"))); |
| | | adviceList.add(DecimalUtil.toPowerTransferDetRespVO("CCPP", data.get("CCPPAdvice"))); |
| | | |
| | | } else if ("2".equals(reqVO.getType())) { |
| | | // 产线检修 |
| | | |
| | | } |
| | | |
| | | } catch (Exception ex) { |
| | | ex.printStackTrace(); |
对比新文件 |
| | |
| | | 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> { |
| | | |
| | | } |
对比新文件 |
| | |
| | | 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> { |
| | | |
| | | } |
对比新文件 |
| | |
| | | package com.iailab.module.ansteel.api.dto; |
| | | |
| | | /** |
| | | * @author PanZhibao |
| | | * @Description |
| | | * @createTime 2025年04月09日 |
| | | */ |
| | | public class ChildProcessIndexDTO { |
| | | } |
对比新文件 |
| | |
| | | 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; |
| | | } |
| | |
| | | |
| | | import java.io.Serializable; |
| | | import java.util.Date; |
| | | import java.util.List; |
| | | |
| | | /** |
| | | * @author lirm |
| | |
| | | public class PlanDataChartReqVO implements Serializable { |
| | | private static final long serialVersionUID = 1L; |
| | | |
| | | @Schema(description = "图标编码") |
| | | @Schema(description = "图表编码") |
| | | private String chartCode; |
| | | |
| | | @Schema(description = "开始时间") |
| | |
| | | @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; |
| | | } |
对比新文件 |
| | |
| | | package com.iailab.module.ansteel.api.dto; |
| | | |
| | | import lombok.Data; |
| | | |
| | | import java.io.Serializable; |
| | | |
| | | /** |
| | | * @author PanZhibao |
| | | * @Description |
| | | * @createTime 2025年04月10日 |
| | | */ |
| | | @Data |
| | | public class PowerNetFactorDTO implements Serializable { |
| | | private static final long serialVersionUID = 1L; |
| | | |
| | | |
| | | } |
| | |
| | | @Schema(description = "X轴数据") |
| | | private List<String> categories; |
| | | |
| | | private PreDataViewRespDTO dataView; |
| | | |
| | | private PreDataViewDTO preDataView; |
| | | |
| | | } |
对比新文件 |
| | |
| | | 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; |
| | | } |
对比新文件 |
| | |
| | | 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; |
| | | } |
| | |
| | | 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; |
| | |
| | | PreDataChartRespVO getPreDataChart(PreDataSingleChartReqVO reqVO); |
| | | |
| | | Map<String, Object> getPlanDataChart(PlanDataChartReqVO reqVO); |
| | | |
| | | List<MainProcessIndexDTO> getIndexList(Map<String, Object> params); |
| | | |
| | | Boolean useSuggest(StAlarmAndSuggestReqVO ReqVO); |
| | | } |
| | |
| | | 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; |
| | |
| | | @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); |
| | |
| | | }).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 useSuggest(StAlarmAndSuggestReqVO ReqVO) { |
| | | return mcsApi.useSuggest(ReqVO); |
| | | } |
| | | |
| | | @Override |
| | |
| | | }); |
| | | preDataView.setTrendsDataL(newList); |
| | | } |
| | | MmItemOutputDTO outputDTO = mcsApi.getItemOutputByItemid(predictItem.getId(), resultStr, resultIndex); |
| | | |
| | | PreItemResultReqVO preItemResultReqVO = new PreItemResultReqVO(); |
| | | preItemResultReqVO.setOutputid(outputDTO.getId()); |
| | | preItemResultReqVO.setStartTime(startTime); |
| | | preItemResultReqVO.setEndTime(endTime); |
| | | preItemResultReqVO.setTimeFormat(timeFormat); |
| | | |
| | | preDataView.setPreData(resultOld.getDataView().getPreDataL()); |
| | | |
| | |
| | | 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; |
| | | } |
| | | /** |
| | | * 查询原始计划、修正计划数据 |
| | | */ |
| | |
| | | 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); |
| | |
| | | public class PowerTransferReqVO implements Serializable { |
| | | private static final long serialVersionUID = 1L; |
| | | |
| | | @Schema(description = "休风时间开始(901)") |
| | | @Schema(description = "异常工况类型(1:高炉休风;2:产线检修)") |
| | | private Integer type; |
| | | |
| | | @Schema(description = "休风开始时间") |
| | | private Integer start; |
| | | |
| | | @Schema(description = "休风时长") |
| | |
| | | @Schema(description = "休风高炉(1/2)") |
| | | private Integer bfg; |
| | | |
| | | @Schema(description = "上限") |
| | | @Schema(description = "焦化消耗高炉煤气下限(大于0)") |
| | | private BigDecimal limit; |
| | | } |
| | |
| | | @Schema(description = "焦化减高炉煤气-数量") |
| | | private Integer jiaohuaAdviceAmount; |
| | | |
| | | @Schema(description = "焦化减高炉煤气-数量") |
| | | @Schema(description = "建议列表") |
| | | private List<PowerTransferDetRespVO> adviceList; |
| | | } |
对比新文件 |
| | |
| | | package com.iailab.module.ansteel.job.task; |
| | | |
| | | import com.iailab.module.model.api.mdk.MdkApi; |
| | | import com.iailab.module.model.api.mdk.dto.MdkPredictReqDTO; |
| | | 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 java.util.Arrays; |
| | | import java.util.Calendar; |
| | | import java.util.Date; |
| | | import java.util.List; |
| | | |
| | | /** |
| | | * 无功优化模型 |
| | | * |
| | | * @author PanZhibao |
| | | * @Description |
| | | * @createTime 2025年04月02日 |
| | | */ |
| | | @Component("runOffPowerOptimTask") |
| | | public class RunOffPowerOptimTask implements ITask { |
| | | |
| | | private Logger logger = LoggerFactory.getLogger(getClass()); |
| | | |
| | | @Autowired |
| | | private MdkApi mdkApi; |
| | | |
| | | @Override |
| | | public void run(String params) { |
| | | logger.info("runPredictModuleTask定时任务正在执行,参数为:{}", params); |
| | | try { |
| | | Calendar calendar = Calendar.getInstance(); |
| | | calendar.set(Calendar.SECOND, 0); |
| | | calendar.set(Calendar.MILLISECOND, 0); |
| | | Date predictTime = calendar.getTime(); |
| | | if (StringUtils.isEmpty(params)) { |
| | | logger.info("参数为空"); |
| | | return; |
| | | } |
| | | List<String> moduleTypeList = Arrays.asList(params.split(",")); |
| | | moduleTypeList.forEach(type -> { |
| | | MdkPredictReqDTO dto = new MdkPredictReqDTO(); |
| | | dto.setPredictTime(predictTime); |
| | | dto.setModuleType(type); |
| | | mdkApi.predictModule(dto); |
| | | logger.info(type + "模块预测完成。"); |
| | | }); |
| | | } catch (Exception ex) { |
| | | logger.error("runPredictModuleTask运行异常",ex); |
| | | } |
| | | logger.info("runPredictModuleTask运行完成"); |
| | | } |
| | | } |
| | |
| | | name: ansteel-server |
| | | |
| | | profiles: |
| | | active: prod |
| | | active: dev |
| | | |
| | | cloud: |
| | | nacos: |
| | |
| | | - schedule_job |
| | | - schedule_job_log |
| | | - t_power_run_state |
| | | - t_main_process_index_day |
| | | - t_main_process_index_team |
| | | swagger: |
| | | title: 鞍钢鲅鱼圈能源管控系统 |
| | | description: 鞍钢鲅鱼圈能源管控系统 |