昨天 | liriming | ![]() |
昨天 | liriming | ![]() |
昨天 | liriming | ![]() |
昨天 | liriming | ![]() |
昨天 | 潘志宝 | ![]() |
昨天 | 潘志宝 | ![]() |
昨天 | 潘志宝 | ![]() |
昨天 | 潘志宝 | ![]() |
昨天 | dengzedong | ![]() |
昨天 | 潘志宝 | ![]() |
昨天 | 潘志宝 | ![]() |
昨天 | 潘志宝 | ![]() |
昨天 | liriming | ![]() |
昨天 | liriming | ![]() |
昨天 | 潘志宝 | ![]() |
昨天 | 潘志宝 | ![]() |
昨天 | 潘志宝 | ![]() |
2 天以前 | dengzedong | ![]() |
2 天以前 | dengzedong | ![]() |
2 天以前 | 潘志宝 | ![]() |
2 天以前 | 潘志宝 | ![]() |
2 天以前 | dengzedong | ![]() |
2 天以前 | dengzedong | ![]() |
2 天以前 | dengzedong | ![]() |
ansteel-biz/src/main/java/com/iailab/module/ansteel/api/controller/admin/GasController.java
@@ -1,19 +1,25 @@ package com.iailab.module.ansteel.api.controller.admin; import com.iailab.framework.common.pojo.CommonResult; import com.iailab.module.ansteel.api.dto.PowerNetFactorDTO; import com.iailab.framework.common.util.date.DateUtils; import com.iailab.module.ansteel.api.dto.GasLdgCulRespDTO; import com.iailab.module.ansteel.api.dto.PreDataViewSimpleDTO; import com.iailab.module.ansteel.gas.entity.GasPredConfEntity; import com.iailab.module.ansteel.gas.service.GasPredConfService; import com.iailab.module.ansteel.power.entity.PowerNetFactorEntity; import com.iailab.module.ansteel.page.service.PageParamService; import com.iailab.module.model.api.mcs.McsApi; import com.iailab.module.model.api.mcs.dto.PreDataJsonReqVO; 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; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; import java.math.BigDecimal; import java.util.ArrayList; import java.util.List; import java.util.Map; @@ -32,9 +38,66 @@ @Autowired private GasPredConfService gasPredConfService; @Autowired private PageParamService pageParamService; @Autowired private McsApi mcsApi; @GetMapping("/pred-conf/list") @Operation(summary = "煤气预测配置") public CommonResult<List<PreDataViewSimpleDTO>> getGasPredConfList(@RequestParam Map<String, Object> params) { return CommonResult.success(gasPredConfService.list(params)); } @GetMapping("/ldg/cul") @Operation(summary = "获取转炉煤气回收消耗总量") public CommonResult<GasLdgCulRespDTO> getGasLdgCul(@RequestParam Map<String, Object> params) { GasLdgCulRespDTO result = new GasLdgCulRespDTO(); String type = (String) params.get("type"); String predictTime = (String) params.get("predictTime"); if (StringUtils.isBlank(type) || StringUtils.isBlank(predictTime)) { return CommonResult.success(result); } PreDataJsonReqVO reqVO = new PreDataJsonReqVO(); reqVO.setPredictTime(DateUtils.parse(predictTime, DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)); List<String> outputIdList = new ArrayList<>(); String xhOut = pageParamService.getValue("iLDG_XH_" + type); if (StringUtils.isNotBlank(xhOut)) { outputIdList.add(xhOut); } String hsOut = pageParamService.getValue("iLDG_HS_" + type); if (StringUtils.isNotBlank(hsOut)) { outputIdList.add(hsOut); } reqVO.setOutputIdList(outputIdList); if (CollectionUtils.isEmpty(outputIdList)) { return CommonResult.success(result); } log.info("getPreDataCur,reqVO={}", reqVO); Map<String, List<Object[]>> preData = mcsApi.getPreDataCur(reqVO); if (CollectionUtils.isEmpty(preData)) { return CommonResult.success(result); } if (preData.containsKey(xhOut)) { List<Object[]> data = preData.get(xhOut); double total = 0.0; for (int i = 0; i < data.size(); i++) { Object[] obj = data.get(i); total = total + new BigDecimal(obj[1].toString()).doubleValue(); } result.setXh(new BigDecimal(total).divide(new BigDecimal(60), 2, BigDecimal.ROUND_HALF_UP)); } if (preData.containsKey(hsOut)) { List<Object[]> data = preData.get(hsOut); double total = 0.0; for (int i = 0; i < data.size(); i++) { Object[] obj = data.get(i); total = total + new BigDecimal(obj[1].toString()).doubleValue(); } result.setHs(new BigDecimal(total).divide(new BigDecimal(60), 2, BigDecimal.ROUND_HALF_UP)); } return CommonResult.success(result); } } ansteel-biz/src/main/java/com/iailab/module/ansteel/api/dto/GasLdgCulRespDTO.java
对比新文件 @@ -0,0 +1,24 @@ package com.iailab.module.ansteel.api.dto; import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; import java.io.Serializable; import java.math.BigDecimal; /** * @author PanZhibao * @Description * @createTime 2025年06月26日 */ @Schema(description = "转炉煤气回收消耗总量") @Data public class GasLdgCulRespDTO implements Serializable { private static final long serialVersionUID = 1L; @Schema(description = "消耗总量") private BigDecimal xh; @Schema(description = "回收总量") private BigDecimal hs; } ansteel-biz/src/main/java/com/iailab/module/ansteel/coking/dto/CokingOverviewDTO.java
@@ -73,6 +73,10 @@ */ private BigDecimal powerC; /** * 电力产生 */ private BigDecimal powerP; /** * 电力单耗 */ private BigDecimal powerOnlyC; ansteel-biz/src/main/java/com/iailab/module/ansteel/coking/entity/CokingOverviewEntity.java
@@ -67,6 +67,10 @@ */ private BigDecimal powerC; /** * 电力产生 */ private BigDecimal powerP; /** * 电力单耗 */ private BigDecimal powerOnlyC; ansteel-biz/src/main/java/com/iailab/module/ansteel/coking/service/impl/CokingOverviewServiceImpl.java
@@ -72,7 +72,7 @@ QueryWrapper<CokingOverviewEntity> queryWrapperMonth = new QueryWrapper<>(); queryWrapperMonth.eq("process_type", processType); queryWrapperMonth.between("clock", monthStartClock,clock); queryWrapperMonth.select("sub_process_type","ROUND(AVG(steam_p)*30, 2) as steam_p","ROUND(AVG(dj_steam_p)*30, 2) as dj_steam_p","ROUND(AVG(steam_c)*30, 2) as steam_c","ROUND(AVG(steam_only_c)*30, 2) as steam_only_c","ROUND(AVG(steam_v)*30, 2) as steam_v","ROUND(AVG(gas_p)*30, 2) as gas_p","ROUND(AVG(gas_c)*30, 2) as gas_c","ROUND(AVG(power_c)*30, 2) as power_c","ROUND(AVG(power_only_c)*30, 2) as power_only_c","ROUND(AVG(power_c_standard)*30, 2) as power_c_standard","ROUND(AVG(idle_time)*30, 0) as idle_time","ROUND(AVG(bfg_c)*30, 2) as bfg_c","ROUND(AVG(cog_p)*30, 2) as cog_p","ROUND(AVG(cog_c)*30, 2) as cog_c","ROUND(AVG(bfg_only_c)*30, 2) as bfg_only_c","ROUND(AVG(cog_only_c)*30, 2) as cog_only_c","ROUND(AVG(gxls)*30, 0) as gxls","ROUND(AVG(run_time)*30, 0) as run_time","ROUND(AVG(work_ratio), 2) as work_ratio") queryWrapperMonth.select("sub_process_type","ROUND(AVG(steam_p)*30, 2) as steam_p","ROUND(AVG(dj_steam_p)*30, 2) as dj_steam_p","ROUND(AVG(steam_c)*30, 2) as steam_c","ROUND(AVG(steam_only_c)*30, 2) as steam_only_c","ROUND(AVG(steam_v)*30, 2) as steam_v","ROUND(AVG(gas_p)*30, 2) as gas_p","ROUND(AVG(gas_c)*30, 2) as gas_c","ROUND(AVG(power_c)*30, 2) as power_c","ROUND(AVG(power_p)*30, 2) as power_p","ROUND(AVG(power_only_c)*30, 2) as power_only_c","ROUND(AVG(power_c_standard)*30, 2) as power_c_standard","ROUND(AVG(idle_time)*30, 0) as idle_time","ROUND(AVG(bfg_c)*30, 2) as bfg_c","ROUND(AVG(cog_p)*30, 2) as cog_p","ROUND(AVG(cog_c)*30, 2) as cog_c","ROUND(AVG(bfg_only_c)*30, 2) as bfg_only_c","ROUND(AVG(cog_only_c)*30, 2) as cog_only_c","ROUND(AVG(gxls)*30, 0) as gxls","ROUND(AVG(run_time)*30, 0) as run_time","ROUND(AVG(work_ratio), 2) as work_ratio") .groupBy("sub_process_type"); List<CokingOverviewEntity> monthList = cokingOverviewDao.selectList(queryWrapperMonth); ansteel-biz/src/main/java/com/iailab/module/ansteel/common/enums/SubProcessTypeEnum.java
@@ -29,6 +29,8 @@ GXJ_1("GXJ_1", "1#干熄焦"), GXJ_2("GXJ_2", "2#干熄焦"), GXJ_3("GXJ_3", "3#干熄焦"), MW_15_1("MW_15_1", "1#15MW机组"), MW_15_2("MW_15_2", "2#15MW机组"), BMGX("BMGX", "备煤工序"), JLLQ("JLLQ", "焦炉炉区"), GXJ("GXJ", "干熄焦"), ansteel-biz/src/main/java/com/iailab/module/ansteel/job/task/RunCokingTraceModelGXJTask.java
@@ -62,6 +62,9 @@ private final static String SugObj = "GXJ"; @Autowired private CokingTraceChartService cokingTraceChartService; private static final String jsonStr = "{\"result\":{" + " \"steamProd\":[[0.76,0.76],[07,0.72],[0.74,0.68]]," + "\"steamRow0\":[[14.0,20.7],[14.0,30.5],[14.0,35.2],[24.0,67.9],[6.0,12.3]]," + @@ -133,6 +136,9 @@ // 保存溯源指标 cokingTraceIndService.saveTraceInd(relId, indType, clock, collectStartDate, endDate); // 保存溯源折线图 cokingTraceChartService.save(relId, clock, indType, startDate, endDate); } catch (Exception ex) { logger.error("RunCokingTraceModelGXJTask运行异常"); ex.printStackTrace(); ansteel-biz/src/main/java/com/iailab/module/ansteel/job/task/RunDayScheduleModuleTask.java
@@ -1,7 +1,5 @@ package com.iailab.module.ansteel.job.task; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONArray; import com.iailab.module.model.api.mcs.McsApi; import com.iailab.module.model.api.mcs.dto.ScheduleSuggestRespDTO; import com.iailab.module.model.api.mdk.MdkApi; @@ -13,10 +11,8 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; import java.util.ArrayList; import java.util.Calendar; import java.util.Date; import java.util.List; /** * 执行天粒度调度方案定时任务 @@ -28,11 +24,15 @@ private String AnStellCOAL = "AnStellCOAL"; //焦化备煤管控 private String AnSteelCDQTrackImplv3 = "AnSteelCDQTrackImplv3"; //焦化干熄焦产蒸汽模型 private String AnSteelChemProSteamTrack = "AnSteelChemProSteamTrack"; //焦化化产蒸汽消耗模型 private String lianjiaoguankong = "lianjiaoguankong"; //焦化炼焦管控模型 @Autowired private MdkApi mdkApi; @Autowired private McsApi mcsApi; private final String finalResultStrKey = "finalResultStr"; private final String resultListKey = "resultList"; @Override @@ -82,9 +82,9 @@ mcsApi.createScheduleSuggest(suggestDto); } } //干熄焦产蒸汽 建议保存 //焦化干熄焦产蒸汽模型 建议保存 if (AnSteelCDQTrackImplv3.equals(code)) { Object finalResultStr = mdkScheduleRespDTO.getResult().get("finalResultStr"); Object finalResultStr = mdkScheduleRespDTO.getResult().get(finalResultStrKey); if(finalResultStr != null && StringUtils.isNotBlank(finalResultStr.toString())) { ScheduleSuggestRespDTO suggestDto = new ScheduleSuggestRespDTO(); suggestDto.setTitle("干熄焦产蒸汽建议"); @@ -95,7 +95,7 @@ mcsApi.createScheduleSuggest(suggestDto); } Object resultList = mdkScheduleRespDTO.getResult().get("resultList"); Object resultList = mdkScheduleRespDTO.getResult().get(resultListKey); if(resultList != null && StringUtils.isNotBlank(resultList.toString())) { ScheduleSuggestRespDTO suggestDto = new ScheduleSuggestRespDTO(); suggestDto.setTitle("干熄焦产蒸汽异常溯源"); @@ -106,9 +106,9 @@ mcsApi.createScheduleSuggest(suggestDto); } } //化产蒸汽消耗 建议保存 //焦化化产蒸汽消耗模型 建议保存 if (AnSteelChemProSteamTrack.equals(code)) { Object finalResultStr = mdkScheduleRespDTO.getResult().get("finalResultStr"); Object finalResultStr = mdkScheduleRespDTO.getResult().get(finalResultStrKey); if(finalResultStr != null && StringUtils.isNotBlank(finalResultStr.toString())) { ScheduleSuggestRespDTO suggestDto = new ScheduleSuggestRespDTO(); suggestDto.setTitle("化产蒸汽消耗建议"); @@ -119,7 +119,7 @@ mcsApi.createScheduleSuggest(suggestDto); } Object resultList = mdkScheduleRespDTO.getResult().get("resultList"); Object resultList = mdkScheduleRespDTO.getResult().get(resultListKey); if(resultList != null && StringUtils.isNotBlank(resultList.toString())) { ScheduleSuggestRespDTO suggestDto = new ScheduleSuggestRespDTO(); suggestDto.setTitle("化产蒸汽消耗异常溯源"); @@ -130,6 +130,30 @@ mcsApi.createScheduleSuggest(suggestDto); } } //焦化炼焦管控模型 建议保存 if (lianjiaoguankong.equals(code)) { Object finalResultStr = mdkScheduleRespDTO.getResult().get(finalResultStrKey); if(finalResultStr != null && StringUtils.isNotBlank(finalResultStr.toString())) { ScheduleSuggestRespDTO suggestDto = new ScheduleSuggestRespDTO(); suggestDto.setTitle("炼焦管控建议"); suggestDto.setContent(finalResultStr.toString()); suggestDto.setScheduleObj("LJGK"); suggestDto.setScheduleTime(dto.getScheduleTime()); suggestDto.setCreateTime(new Date()); mcsApi.createScheduleSuggest(suggestDto); } Object resultList = mdkScheduleRespDTO.getResult().get(resultListKey); if(resultList != null && StringUtils.isNotBlank(resultList.toString())) { ScheduleSuggestRespDTO suggestDto = new ScheduleSuggestRespDTO(); suggestDto.setTitle("炼焦管控异常溯源"); suggestDto.setContent(resultList.toString()); suggestDto.setScheduleObj("LJGK_YCSY"); suggestDto.setScheduleTime(dto.getScheduleTime()); suggestDto.setCreateTime(new Date()); mcsApi.createScheduleSuggest(suggestDto); } } } catch (Exception ex) { logger.error("runDayScheduleModuleTask运行异常",ex); } ansteel-biz/src/main/java/com/iailab/module/ansteel/job/task/RunPowerFactorAlarmTask.java
对比新文件 @@ -0,0 +1,105 @@ package com.iailab.module.ansteel.job.task; import cn.hutool.core.bean.BeanUtil; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import com.iailab.module.ansteel.common.constant.CommonConstant; import com.iailab.module.model.api.mcs.McsApi; import com.iailab.module.model.api.mcs.dto.AlarmMessageRespDTO; 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 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 java.util.ArrayList; import java.util.Calendar; import java.util.List; import java.util.Map; /** * @author lirm * @Description 功率因数超限报警原因溯源 * @createTime 2025年06月26日 */ @Component("runPowerFactorAlarmTask") public class RunPowerFactorAlarmTask implements ITask { private Logger logger = LoggerFactory.getLogger(getClass()); private final static String ALARM_OBJ = "AnSteelPowerFactorAlarm"; private final static String substation = "substation"; @Autowired private McsApi mcsApi; @Autowired private MdkApi mdkApi; @Override public void run(String params) { /*{'status_code': 100, 'result': { 'substation2': {'66kVOverLimit': '焦化乙线功率因数下限越限', 'reason': '["煤气净化2#低于下限", "备煤2#低于下限", "大间台2#低于下限", "焦化总降#2电容器408分钟 退运", "焦化总降#2电容器1150分钟 投运", "备煤筛焦综合电气室Ⅱ段电容补偿14分钟 退运", "备煤筛焦综合电气室Ⅱ段电容补偿452分钟 投运", "备煤筛焦综合电气室Ⅱ段电容补偿570分钟 退运", "备煤筛焦综合电气室Ⅱ段电容补偿860分钟 投运", "备煤筛焦综合电气室Ⅱ段电容补偿920分钟 退运", "备煤筛焦综合电气室Ⅱ段电容补偿1207分钟 投运", "煤气净化综合电气室Ⅱ段电容补偿697分钟 退运", "煤气净化综合电气室Ⅱ段电容补偿866分钟 投运", "煤气净化综合电气室Ⅱ段电容补偿1430分钟 退运", "大间台综合电气室Ⅱ段电容补偿210分钟 退运", "大间台综合电气室Ⅱ段电容补偿319分钟 投运", "大间台综合电气室Ⅱ段电容补偿441分钟 退运", "大间台综合电气室Ⅱ段电容补偿690分钟 投运", "1#CDQ在第720分钟前后功率因数从0.8变化到0.9", "1#TRT在第720分钟前后功率因数从0.8变化到0.9"]'}, 'substation11': {'66kVOverLimit': '1#炼铁线功率因数下限越限', 'reason': '["1#CDQ在第720分钟前后功率因数从0.8变化到0.9", "1#TRT在第720分钟前后功率因数从0.8变化到0.9"]'}, 'substation12': {'66kVOverLimit': '2#炼铁线功率因数上限越限', 'reason': '["1#CDQ在第720分钟前后功率因数从0.8变化到0.9", "1#TRT在第720分钟前后功率因数从0.8变化到0.9"]'}, 'substation18': {'66kVOverLimit': '范氧甲线功率因数上限越限', 'reason': '["1#CDQ在第720分钟前后功率因数从0.8变化到0.9", "1#TRT在第720分钟前后功率因数从0.8变化到0.9"]'}}} */ logger.info("RunPowerFactorAlarmTask定时任务正在执行,参数为:{}", params); try { Calendar calendar = Calendar.getInstance(); calendar.set(Calendar.MILLISECOND, 0); calendar.set(Calendar.SECOND, 0); calendar.set(Calendar.MINUTE, 0); MdkScheduleReqDTO dto = new MdkScheduleReqDTO(); dto.setScheduleTime(calendar.getTime()); dto.setScheduleCode(ALARM_OBJ); MdkScheduleRespDTO mdkScheduleRespDTO = mdkApi.doSchedule(dto); logger.info(params + "调度方案执行完成," + mdkScheduleRespDTO); if(!CommonConstant.MDK_STATUS_100.equals(mdkScheduleRespDTO.getStatusCode())){ logger.info(params + "运行异常"); return; } JSONObject result = new JSONObject(mdkScheduleRespDTO.getResult()); List<String> rowKeys = new ArrayList<>(); result.forEach((key, value) -> { if (StringUtils.isNotBlank(key) && key.contains(substation)) { rowKeys.add(key); } }); for (String key : rowKeys) { Map<String,Object> substationMap = BeanUtil.beanToMap(result.get(key)); if (CollectionUtils.isEmpty(substationMap)) { continue; } String content = ""; JSONArray jsonArr = JSON.parseArray(substationMap.get("reason").toString()); for(int i=0; i<jsonArr.size(); i++){ Object element = jsonArr.get(i); content = content + JSON.toJSONString(element) + ";"; } AlarmMessageRespDTO alarmMessageRespDTO = new AlarmMessageRespDTO(); alarmMessageRespDTO.setTitle(substationMap.get("66kVOverLimit").toString()); alarmMessageRespDTO.setContent(content); alarmMessageRespDTO.setAlarmObj(ALARM_OBJ); alarmMessageRespDTO.setAlarmTime(mdkScheduleRespDTO.getScheduleTime()); alarmMessageRespDTO.setCreateTime(calendar.getTime()); mcsApi.createAlarmMessage(alarmMessageRespDTO); } } catch (Exception ex) { logger.error("RunPowerFactorAlarmTask运行异常"); ex.printStackTrace(); } logger.info("RunPowerFactorAlarmTask运行完成"); } } ansteel-biz/src/main/java/com/iailab/module/ansteel/job/task/RunPowerNetAlarmTask.java
@@ -11,14 +11,14 @@ /** * @author PanZhibao * @Description * @Description 无功上网报警原因溯源 * @createTime 2025年06月12日 */ @Component("runPowerNetAlarmTask") public class RunPowerNetAlarmTask implements ITask { private Logger logger = LoggerFactory.getLogger(getClass()); private final String ALARM_OBJ = "NetAlarm"; private final String ALARM_OBJ = "AnSteelReactiveAlarm"; @Autowired private McsApi mcsApi; ansteel-biz/src/main/java/com/iailab/module/ansteel/job/task/RunScheduleModuleTask.java
@@ -16,6 +16,8 @@ import java.math.BigDecimal; import java.util.Calendar; import java.util.Date; import java.util.HashMap; import java.util.Map; /** @@ -30,6 +32,9 @@ private String BfgCode = "AnSteelbfgstrategy"; //高炉实时调度 private String suggestionKey = "suggestion"; //建议key private String warningKey = "earlywarning"; //预警key private String guiweiRate = "guiweiRate"; //柜位上升下降速率key private String gas = "gas"; //煤气富余量key private String flag = "flag"; //煤气富余量key private String cogLowerKey = "lower_limit_ad_cog_guiwei"; //COG下限key private String cogUpperKey = "upper_limit_ad_cog_guiwei"; //COG上限key private String bfgLowerKey = "lower_limit_ad_bfg_guiwei"; //BFG下限key @@ -41,6 +46,17 @@ private McsApi mcsApi; @Autowired private DataPointApi dataPointApi; /** * 煤气调度调整方向 * 1:超上限;-1:超下限;0:正常 */ private static Map<String, BigDecimal> gasAdjustMode = new HashMap<>(); /** * 煤气调度建议时间 */ private static Map<String, Date> gasLastSugTime = new HashMap<>(); @Override @@ -66,43 +82,43 @@ //日平衡调度建议保存 if (GasCode.equals(params)) { Object time8 = mdkScheduleRespDTO.getResult().get("Time8"); Object time8 = mdkScheduleRespDTO.getResult().get("Time8"); Object time16 = mdkScheduleRespDTO.getResult().get("Time16"); Object time24 = mdkScheduleRespDTO.getResult().get("Time24"); Object time24 = mdkScheduleRespDTO.getResult().get("Time24"); if(time8!=null && StringUtils.isNotBlank(time8.toString())) { if (time8 != null && StringUtils.isNotBlank(time8.toString())) { ScheduleSuggestRespDTO suggestDto = new ScheduleSuggestRespDTO(); suggestDto.setTitle("日平衡建议"); suggestDto.setContent(time8.toString()); suggestDto.setScheduleObj("GAS"); suggestDto.setScheduleTime(dto.getScheduleTime()); suggestDto.setCreateTime(calendar.getTime()); suggestDto.setCreateTime(new Date()); if (mcsApi.createScheduleSuggest(suggestDto)) { logger.info("日平衡建议{" + time8 + "}保存成功"); } else { logger.error("日平衡建议保存失败"); } } if(time16!=null && StringUtils.isNotBlank(time16.toString())) { if (time16 != null && StringUtils.isNotBlank(time16.toString())) { ScheduleSuggestRespDTO suggestDto = new ScheduleSuggestRespDTO(); suggestDto.setTitle("日平衡建议"); suggestDto.setContent(time16.toString()); suggestDto.setScheduleObj("GAS"); suggestDto.setScheduleTime(dto.getScheduleTime()); suggestDto.setCreateTime(calendar.getTime()); suggestDto.setCreateTime(new Date()); if (mcsApi.createScheduleSuggest(suggestDto)) { logger.info("日平衡建议{" + time16 + "}保存成功"); } else { logger.error("日平衡建议保存失败"); } } if(time24!=null && StringUtils.isNotBlank(time24.toString())) { if (time24 != null && StringUtils.isNotBlank(time24.toString())) { ScheduleSuggestRespDTO suggestDto = new ScheduleSuggestRespDTO(); suggestDto.setTitle("日平衡建议"); suggestDto.setContent(time24.toString()); suggestDto.setScheduleObj("GAS"); suggestDto.setScheduleTime(dto.getScheduleTime()); suggestDto.setCreateTime(calendar.getTime()); suggestDto.setCreateTime(new Date()); if (mcsApi.createScheduleSuggest(suggestDto)) { logger.info("日平衡建议{" + time24 + "}保存成功"); } else { @@ -112,20 +128,33 @@ } //转炉实时调度 if (LdgCode.equals(params)) { // 建议 Object suggestion = mdkScheduleRespDTO.getResult().get(suggestionKey); if (suggestion != null && StringUtils.isNotBlank(suggestion.toString())) { ScheduleSuggestRespDTO suggestDto = new ScheduleSuggestRespDTO(); suggestDto.setTitle("转炉实时调度建议"); suggestDto.setContent(suggestion.toString()); suggestDto.setScheduleObj("LDG"); suggestDto.setScheduleTime(dto.getScheduleTime()); suggestDto.setCreateTime(calendar.getTime()); if (mcsApi.createScheduleSuggest(suggestDto)) { logger.info("转炉实时调度建议{" + suggestion + "}保存成功"); } else { logger.error("转炉实时调度建议保存失败"); // 调整速率 String scheduleObjLDG = "LDG"; BigDecimal adjustValue = new BigDecimal(mdkScheduleRespDTO.getResult().get(flag).toString()); if (adjustValue.compareTo(BigDecimal.ZERO) == 0) { logger.info("转炉实时调度建议 flag为0"); }else if (gasAdjustMode.containsKey(scheduleObjLDG) && gasAdjustMode.get(scheduleObjLDG).equals(adjustValue) && gasLastSugTime.containsKey(scheduleObjLDG) && (calendar.getTime().getTime() - gasLastSugTime.get(scheduleObjLDG).getTime() <= mdkScheduleRespDTO.getAdjustRate().longValue() * 60 * 1000)) { logger.info("转炉实时调度建议在有效期内"); } else { // 建议 Object suggestion = mdkScheduleRespDTO.getResult().get(suggestionKey); if (suggestion != null && StringUtils.isNotBlank(suggestion.toString())) { ScheduleSuggestRespDTO suggestDto = new ScheduleSuggestRespDTO(); suggestDto.setTitle("转炉实时调度建议"); suggestDto.setContent(suggestion.toString()); suggestDto.setScheduleObj(scheduleObjLDG); suggestDto.setScheduleTime(dto.getScheduleTime()); suggestDto.setCreateTime(new Date()); if (mcsApi.createScheduleSuggest(suggestDto)) { logger.info("转炉实时调度建议{" + suggestion + "}保存成功"); } else { logger.error("转炉实时调度建议保存失败"); } } // 更新调整速率 gasAdjustMode.put(scheduleObjLDG, adjustValue); gasLastSugTime.put(scheduleObjLDG, calendar.getTime()); } // 预警 Object earlywarning = mdkScheduleRespDTO.getResult().get(warningKey); @@ -133,7 +162,7 @@ AlarmMessageRespDTO alarmMessageRespDTO = new AlarmMessageRespDTO(); alarmMessageRespDTO.setContent(earlywarning.toString()); alarmMessageRespDTO.setTitle("转炉实时调度预警"); alarmMessageRespDTO.setAlarmObj("LDG"); alarmMessageRespDTO.setAlarmObj(scheduleObjLDG); alarmMessageRespDTO.setAlarmTime(dto.getScheduleTime()); alarmMessageRespDTO.setCreateTime(calendar.getTime()); @@ -143,32 +172,76 @@ logger.error("转炉实时调度预警保存失败"); } } } //焦炉实时调度 if (CogCode.equals(params)) { // 建议 Object suggestion = mdkScheduleRespDTO.getResult().get(suggestionKey); if (suggestion != null && StringUtils.isNotBlank(suggestion.toString())) { ScheduleSuggestRespDTO suggestDto = new ScheduleSuggestRespDTO(); suggestDto.setTitle("焦炉实时调度建议"); suggestDto.setContent(suggestion.toString()); suggestDto.setScheduleObj("COG"); suggestDto.setScheduleTime(dto.getScheduleTime()); suggestDto.setCreateTime(calendar.getTime()); if (mcsApi.createScheduleSuggest(suggestDto)) { logger.info("焦炉实时调度建议{" + suggestion + "}保存成功"); } else { logger.error("焦炉实时调度建议保存失败"); // 调整速率 String scheduleObjCOG = "COG"; BigDecimal adjustValue = new BigDecimal(mdkScheduleRespDTO.getResult().get(flag).toString()); if (adjustValue.compareTo(BigDecimal.ZERO) == 0) { logger.info("焦炉实时调度建议 flag为0"); }else if (gasAdjustMode.containsKey(scheduleObjCOG) && gasAdjustMode.get(scheduleObjCOG).equals(adjustValue) && gasLastSugTime.containsKey(scheduleObjCOG) && (calendar.getTime().getTime() - gasLastSugTime.get(scheduleObjCOG).getTime() <= mdkScheduleRespDTO.getAdjustRate().longValue() * 60 * 1000)) { logger.info("焦炉实时调度建议在有效期内"); }else { // 建议 Object suggestion = mdkScheduleRespDTO.getResult().get(suggestionKey); if (suggestion != null && StringUtils.isNotBlank(suggestion.toString())) { ScheduleSuggestRespDTO suggestDto = new ScheduleSuggestRespDTO(); suggestDto.setTitle("焦炉实时调度建议"); suggestDto.setContent(suggestion.toString()); suggestDto.setScheduleObj(scheduleObjCOG); suggestDto.setScheduleTime(dto.getScheduleTime()); suggestDto.setSort(1); suggestDto.setCreateTime(new Date()); if (mcsApi.createScheduleSuggest(suggestDto)) { logger.info("焦炉实时调度建议{" + suggestion + "}保存成功"); } else { logger.error("焦炉实时调度建议保存失败"); } } suggestion = mdkScheduleRespDTO.getResult().get(guiweiRate); if (suggestion != null && StringUtils.isNotBlank(suggestion.toString())) { ScheduleSuggestRespDTO suggestDto = new ScheduleSuggestRespDTO(); suggestDto.setTitle("焦炉煤气柜柜位"); suggestDto.setContent(suggestion.toString()); suggestDto.setScheduleObj(scheduleObjCOG); suggestDto.setScheduleTime(dto.getScheduleTime()); suggestDto.setSort(2); suggestDto.setCreateTime(new Date()); if (mcsApi.createScheduleSuggest(suggestDto)) { logger.info("焦炉实时调度建议{" + suggestion + "}保存成功"); } else { logger.error("焦炉实时调度建议保存失败"); } } suggestion = mdkScheduleRespDTO.getResult().get(gas); if (suggestion != null && StringUtils.isNotBlank(suggestion.toString())) { ScheduleSuggestRespDTO suggestDto = new ScheduleSuggestRespDTO(); suggestDto.setTitle("焦炉煤气富余量"); suggestDto.setContent(suggestion.toString()); suggestDto.setScheduleObj(scheduleObjCOG); suggestDto.setScheduleTime(dto.getScheduleTime()); suggestDto.setSort(3); suggestDto.setCreateTime(new Date()); if (mcsApi.createScheduleSuggest(suggestDto)) { logger.info("焦炉实时调度建议{" + suggestion + "}保存成功"); } else { logger.error("焦炉实时调度建议保存失败"); } } // 更新调整速率 gasAdjustMode.put(scheduleObjCOG, adjustValue); gasLastSugTime.put(scheduleObjCOG, calendar.getTime()); } // 预警 Object earlywarning = mdkScheduleRespDTO.getResult().get(warningKey); if (earlywarning != null && StringUtils.isNotBlank(earlywarning.toString())) { AlarmMessageRespDTO alarmMessageRespDTO = new AlarmMessageRespDTO(); alarmMessageRespDTO.setContent(earlywarning.toString()); alarmMessageRespDTO.setTitle("焦炉实时调度预警"); alarmMessageRespDTO.setAlarmObj("COG"); alarmMessageRespDTO.setAlarmObj(scheduleObjCOG); alarmMessageRespDTO.setAlarmTime(dto.getScheduleTime()); alarmMessageRespDTO.setCreateTime(calendar.getTime()); @@ -181,7 +254,7 @@ // 下发上下限 Object upper = mdkScheduleRespDTO.getResult().get(cogUpperKey); if (upper != null) { BigDecimal value = new BigDecimal(upper.toString()).setScale(2,BigDecimal.ROUND_HALF_UP); BigDecimal value = new BigDecimal(upper.toString()).setScale(2, BigDecimal.ROUND_HALF_UP); ApiPointValueWriteDTO pointValueWriteDTO = new ApiPointValueWriteDTO(); pointValueWriteDTO.setPointNo("F0000201831"); pointValueWriteDTO.setValue(value.doubleValue()); @@ -189,7 +262,7 @@ } Object lower = mdkScheduleRespDTO.getResult().get(cogLowerKey); if (lower != null) { BigDecimal value = new BigDecimal(lower.toString()).setScale(2,BigDecimal.ROUND_HALF_UP); BigDecimal value = new BigDecimal(lower.toString()).setScale(2, BigDecimal.ROUND_HALF_UP); ApiPointValueWriteDTO pointValueWriteDTO = new ApiPointValueWriteDTO(); pointValueWriteDTO.setPointNo("F0000201832"); pointValueWriteDTO.setValue(value.doubleValue()); @@ -199,20 +272,64 @@ } //高炉实时调度 if (BfgCode.equals(params)) { // 建议 Object suggestion = mdkScheduleRespDTO.getResult().get(suggestionKey); if (suggestion != null && StringUtils.isNotBlank(suggestion.toString())) { ScheduleSuggestRespDTO suggestDto = new ScheduleSuggestRespDTO(); suggestDto.setTitle("高炉实时调度建议"); suggestDto.setContent(suggestion.toString()); suggestDto.setScheduleObj("BFG"); suggestDto.setScheduleTime(dto.getScheduleTime()); suggestDto.setCreateTime(calendar.getTime()); if (mcsApi.createScheduleSuggest(suggestDto)) { logger.info("高炉实时调度建议{" + suggestion + "}保存成功"); } else { logger.error("高炉实时调度建议保存失败"); // 调整速率 String scheduleObjBFG = "BFG"; BigDecimal adjustValue = new BigDecimal(mdkScheduleRespDTO.getResult().get(flag).toString()); if (adjustValue.compareTo(BigDecimal.ZERO) == 0) { logger.info("高炉实时调度建议 flag为0"); }else if (gasAdjustMode.containsKey(scheduleObjBFG) && gasAdjustMode.get(scheduleObjBFG).equals(adjustValue) && gasLastSugTime.containsKey(scheduleObjBFG) && (calendar.getTime().getTime() - gasLastSugTime.get(scheduleObjBFG).getTime() <= mdkScheduleRespDTO.getAdjustRate().longValue() * 60 * 1000)) { logger.info("高炉实时调度建议在有效期内"); }else { // 建议 Object suggestion = mdkScheduleRespDTO.getResult().get(suggestionKey); if (suggestion != null && StringUtils.isNotBlank(suggestion.toString())) { ScheduleSuggestRespDTO suggestDto = new ScheduleSuggestRespDTO(); suggestDto.setTitle("高炉实时调度建议"); suggestDto.setContent(suggestion.toString()); suggestDto.setScheduleObj(scheduleObjBFG); suggestDto.setScheduleTime(dto.getScheduleTime()); suggestDto.setSort(1); suggestDto.setCreateTime(new Date()); if (mcsApi.createScheduleSuggest(suggestDto)) { logger.info("高炉实时调度建议{" + suggestion + "}保存成功"); } else { logger.error("高炉实时调度建议保存失败"); } } suggestion = mdkScheduleRespDTO.getResult().get(guiweiRate); if (suggestion != null && StringUtils.isNotBlank(suggestion.toString())) { ScheduleSuggestRespDTO suggestDto = new ScheduleSuggestRespDTO(); suggestDto.setTitle("高炉煤气柜柜位"); suggestDto.setContent(suggestion.toString()); suggestDto.setScheduleObj(scheduleObjBFG); suggestDto.setScheduleTime(dto.getScheduleTime()); suggestDto.setSort(2); suggestDto.setCreateTime(new Date()); if (mcsApi.createScheduleSuggest(suggestDto)) { logger.info("高炉实时调度建议{" + suggestion + "}保存成功"); } else { logger.error("高炉实时调度建议保存失败"); } } suggestion = mdkScheduleRespDTO.getResult().get(gas); if (suggestion != null && StringUtils.isNotBlank(suggestion.toString())) { ScheduleSuggestRespDTO suggestDto = new ScheduleSuggestRespDTO(); suggestDto.setTitle("高炉煤气富余量"); suggestDto.setContent(suggestion.toString()); suggestDto.setScheduleObj(scheduleObjBFG); suggestDto.setScheduleTime(dto.getScheduleTime()); suggestDto.setSort(3); suggestDto.setCreateTime(new Date()); if (mcsApi.createScheduleSuggest(suggestDto)) { logger.info("高炉实时调度建议{" + suggestion + "}保存成功"); } else { logger.error("高炉实时调度建议保存失败"); } } // 更新调整速率 gasAdjustMode.put(scheduleObjBFG, adjustValue); gasLastSugTime.put(scheduleObjBFG, calendar.getTime()); } // 预警 Object earlywarning = mdkScheduleRespDTO.getResult().get(warningKey); @@ -220,7 +337,7 @@ AlarmMessageRespDTO alarmMessageRespDTO = new AlarmMessageRespDTO(); alarmMessageRespDTO.setContent(earlywarning.toString()); alarmMessageRespDTO.setTitle("高炉实时调度预警"); alarmMessageRespDTO.setAlarmObj("BFG"); alarmMessageRespDTO.setAlarmObj(scheduleObjBFG); alarmMessageRespDTO.setAlarmTime(dto.getScheduleTime()); alarmMessageRespDTO.setCreateTime(calendar.getTime()); @@ -233,7 +350,7 @@ // 下发上下限 Object upper = mdkScheduleRespDTO.getResult().get(bfgUupperKey); if (upper != null) { BigDecimal value = new BigDecimal(upper.toString()).setScale(2,BigDecimal.ROUND_HALF_UP); BigDecimal value = new BigDecimal(upper.toString()).setScale(2, BigDecimal.ROUND_HALF_UP); ApiPointValueWriteDTO pointValueWriteDTO = new ApiPointValueWriteDTO(); pointValueWriteDTO.setPointNo("F0000201829"); pointValueWriteDTO.setValue(value.doubleValue()); @@ -241,7 +358,7 @@ } Object lower = mdkScheduleRespDTO.getResult().get(bfgLowerKey); if (lower != null) { BigDecimal value = new BigDecimal(lower.toString()).setScale(2,BigDecimal.ROUND_HALF_UP); BigDecimal value = new BigDecimal(lower.toString()).setScale(2, BigDecimal.ROUND_HALF_UP); ApiPointValueWriteDTO pointValueWriteDTO = new ApiPointValueWriteDTO(); pointValueWriteDTO.setPointNo("F0000201830"); pointValueWriteDTO.setValue(value.doubleValue()); @@ -250,7 +367,7 @@ } } catch (Exception ex) { logger.error("runScheduleModuleTask运行异常",ex); logger.error("runScheduleModuleTask运行异常", ex); } logger.info("runScheduleModuleTask运行完成"); } doc/设计文档/鲅鱼圈钢铁分公司能源管控智能化提升项目-接口设计说明书(模版).docBinary files differ
doc/设计文档/鲅鱼圈钢铁分公司能源管控智能化提升项目-详细设计说明书(模版).docBinary files differ
doc/设计文档/鲅鱼圈钢铁分公司能源管控智能化提升项目-需求分析说明书(模版).docxBinary files differ
doc/鞍钢数据接口文档_master.docBinary files differ