shasteel-biz/src/main/java/com/iailab/module/shasteel/job/task/RunPredictModuleTask.java
@@ -1,19 +1,25 @@ package com.iailab.module.shasteel.job.task; import com.iailab.module.model.api.mdk.MdkApi; import com.iailab.module.model.api.mdk.dto.MdkPredictModuleRespDTO; import com.iailab.module.model.api.mdk.dto.MdkPredictReqDTO; import com.iailab.module.shasteel.mq.common.RoutingConstant; import com.iailab.module.shasteel.mq.common.constant.RoutingConstant; import org.apache.commons.lang3.StringUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.amqp.rabbit.core.RabbitTemplate; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; import java.util.Calendar; import java.util.*; /** * 执行模块预测定时任务 * 1、高炉 * 2、焦炉 * 3、转炉 * 3.1、氧气 * 3.2、蒸汽 * 4、氮气 */ @Component("runPredictModuleTask") public class RunPredictModuleTask implements ITask { @@ -32,14 +38,23 @@ Calendar calendar = Calendar.getInstance(); calendar.set(Calendar.SECOND, 0); calendar.set(Calendar.MILLISECOND, 0); MdkPredictReqDTO dto = new MdkPredictReqDTO(); dto.setPredictTime(calendar.getTime()); dto.setModuleType(params); MdkPredictModuleRespDTO mdkPredictModuleRespDTO = mdkApi.predictModule(dto); logger.info(params + "模块预测完成," + mdkPredictModuleRespDTO); rabbitTemplate.convertAndSend(RoutingConstant.EXCHANGE, RoutingConstant.Iailab_Model_PredictFinish, mdkPredictModuleRespDTO); 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 + "模块预测完成。"); Map<String, Object> msg = new HashMap<>(); msg.put("moduleType", type); msg.put("predictTime", predictTime); rabbitTemplate.convertAndSend(RoutingConstant.EXCHANGE, RoutingConstant.Iailab_Model_PredictFinish, msg); }); } catch (Exception ex) { logger.error("runPredictModuleTask运行异常"); ex.printStackTrace(); shasteel-biz/src/main/java/com/iailab/module/shasteel/mq/common/constant/CommonConstant.java
对比新文件 @@ -0,0 +1,28 @@ package com.iailab.module.shasteel.mq.common.constant; import java.math.BigDecimal; /** * @Description: 通用常量 */ public interface CommonConstant { //压缩空气调度方案code String COMPRESSOR_CODE = "Air"; //蒸汽调度方案code String STEAM_CODE = "sha01"; //氧气班平衡计划方案code String OXYGEN_ONE_CODE = "oxygen01"; //氧气系统优化调度决策方案code String OXYGEN_TWO_CODE = "oxygen02"; //超上限 String EXCEEDING_UPPER_LIMIT = "UpperLimit"; //超下限 String EXCEEDING_LOWER_LIMIT = "LowerLimit"; } shasteel-biz/src/main/java/com/iailab/module/shasteel/mq/common/constant/RoutingConstant.java
文件名从 shasteel-biz/src/main/java/com/iailab/module/shasteel/mq/common/RoutingConstant.java 修改 @@ -1,4 +1,4 @@ package com.iailab.module.shasteel.mq.common; package com.iailab.module.shasteel.mq.common.constant; public interface RoutingConstant { shasteel-biz/src/main/java/com/iailab/module/shasteel/mq/common/enums/TriggerConditionEnum.java
对比新文件 @@ -0,0 +1,20 @@ package com.iailab.module.shasteel.mq.common.enums; import lombok.AllArgsConstructor; import lombok.Getter; /** * @author lirm * @Description * @createTime 2024年12月19日 */ @Getter @AllArgsConstructor public enum TriggerConditionEnum { EVENT("1"), REGULAR("2"); private String code; } shasteel-biz/src/main/java/com/iailab/module/shasteel/mq/config/QueueModelAlarmConfig.java
@@ -1,6 +1,6 @@ package com.iailab.module.shasteel.mq.config; import com.iailab.module.shasteel.mq.common.RoutingConstant; import com.iailab.module.shasteel.mq.common.constant.RoutingConstant; import org.springframework.amqp.core.Binding; import org.springframework.amqp.core.BindingBuilder; import org.springframework.amqp.core.Queue; shasteel-biz/src/main/java/com/iailab/module/shasteel/mq/config/QueuePredictFinishConfig.java
@@ -1,6 +1,6 @@ package com.iailab.module.shasteel.mq.config; import com.iailab.module.shasteel.mq.common.RoutingConstant; import com.iailab.module.shasteel.mq.common.constant.RoutingConstant; import org.springframework.amqp.core.Binding; import org.springframework.amqp.core.BindingBuilder; import org.springframework.amqp.core.Queue; shasteel-biz/src/main/java/com/iailab/module/shasteel/mq/consumer/ModelAlarmConsumer.java
@@ -1,20 +1,28 @@ package com.iailab.module.shasteel.mq.consumer; import com.alibaba.fastjson.JSONObject; import com.iailab.framework.common.util.date.DateUtils; import com.iailab.module.model.api.mcs.McsApi; import com.iailab.module.model.api.mcs.dto.AlarmMessageRespDTO; import com.iailab.module.model.api.mcs.dto.ScheduleSuggestRespDTO; 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.shasteel.mq.common.RoutingConstant; import com.iailab.module.model.api.mdk.dto.MdkScheduleRespDTO; import com.iailab.module.shasteel.mq.common.constant.CommonConstant; import com.iailab.module.shasteel.mq.common.enums.TriggerConditionEnum; import com.iailab.module.shasteel.mq.config.QueueModelAlarmConfig; import lombok.extern.slf4j.Slf4j; import org.springframework.amqp.core.Message; import org.springframework.amqp.rabbit.annotation.RabbitListener; import org.springframework.stereotype.Component; import org.springframework.util.CollectionUtils; import javax.annotation.Resource; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.UUID; /** * 监听报警信息 @@ -49,25 +57,104 @@ log.info("routingKey:" + routingKey); String messageBody = new String(message.getBody()); log.info("messageBody:" + messageBody); JSONObject messageJson = JSONObject.parseObject(messageBody); if (CollectionUtils.isEmpty(messageJson)) { return; } // 查找需要执行的调度方案 Map<String, Object> params = new HashMap<>(); params.put("trigger_method", TriggerConditionEnum.EVENT); params.put("trigger_condition", routingKey); List<StScheduleSchemeDTO> scheduleSchemeList = mcsApi.listScheduleScheme(params);//根据触发条件获取调度方案列表 for(StScheduleSchemeDTO stScheduleSchemeDTO : scheduleSchemeList){ MdkScheduleReqDTO mdkScheduleReqDTO = new MdkScheduleReqDTO(); mdkScheduleReqDTO.setScheduleCode(stScheduleSchemeDTO.getCode()); mdkScheduleReqDTO.setScheduleTime(stScheduleSchemeDTO.getScheduleTime()); // MdkScheduleRespDTO mdkScheduleRespDTO = mdkApi.doSchedule(mdkScheduleReqDTO);//执行调度方案 // String result = mdkScheduleRespDTO.getResult().toString(); // System.out.println(result); // AlarmMessageRespDTO alarmMessageRespDTO = new AlarmMessageRespDTO(); // mcsApi.createAlarmMessage(alarmMessageRespDTO); MdkScheduleRespDTO mdkScheduleRespDTO = mdkApi.doSchedule(mdkScheduleReqDTO);//执行调度方案 if(mdkScheduleRespDTO == null){ return; } AlarmMessageRespDTO alarmRespDTO = (AlarmMessageRespDTO)messageJson.get("AlarmMessageRespDTO"); alarmRespDTO.setId(UUID.randomUUID().toString()); alarmRespDTO.setAlarmTime(DateUtils.parse(messageJson.get("predictTime").toString(), DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)); mcsApi.createAlarmMessage(alarmRespDTO); Map<String, Object> result = mdkScheduleRespDTO.getResult(); switch (mdkScheduleRespDTO.getScheduleCode()) { case CommonConstant.OXYGEN_ONE_CODE://氧气班平衡计划方案 if(!result.containsKey("faAdvice") || !result.containsKey("yingDiAdvice") || !result.containsKey("yingZhongAdvice") || !result.containsKey("hongAdvice") || !result.containsKey("RunAdvice")){ return; } for (String key : result.keySet()) { if ("faAdvice".equals(key) && !"".equals(result.get("faAdvice").toString())) { ScheduleSuggestRespDTO suggestRespDTO = new ScheduleSuggestRespDTO(); suggestRespDTO.setId(UUID.randomUUID().toString()); suggestRespDTO.setContent(result.get("faAdvice").toString());//法夜空建议送出量建议 suggestRespDTO.setSchemeId(stScheduleSchemeDTO.getId()); mcsApi.createScheduleSuggest(suggestRespDTO); }else if ("yingDiAdvice".equals(key) && !"".equals(result.get("yingDiAdvice").toString())) { ScheduleSuggestRespDTO suggestRespDTO = new ScheduleSuggestRespDTO(); suggestRespDTO.setId(UUID.randomUUID().toString()); suggestRespDTO.setContent(result.get("yingDiAdvice").toString());//盈德低压建议送出量建议 suggestRespDTO.setSchemeId(stScheduleSchemeDTO.getId()); mcsApi.createScheduleSuggest(suggestRespDTO); }else if ("yingZhongAdvice".equals(key) && !"".equals(result.get("yingZhongAdvice").toString())) { ScheduleSuggestRespDTO suggestRespDTO = new ScheduleSuggestRespDTO(); suggestRespDTO.setId(UUID.randomUUID().toString()); suggestRespDTO.setContent(result.get("yingZhongAdvice").toString());//盈德中压建议送出量建议 suggestRespDTO.setSchemeId(stScheduleSchemeDTO.getId()); mcsApi.createScheduleSuggest(suggestRespDTO); }else if ("hongAdvice".equals(key) && !"".equals(result.get("hongAdvice").toString())) { ScheduleSuggestRespDTO suggestRespDTO = new ScheduleSuggestRespDTO(); suggestRespDTO.setId(UUID.randomUUID().toString()); suggestRespDTO.setContent(result.get("hongAdvice").toString());//宏昌建议送出量建议 suggestRespDTO.setSchemeId(stScheduleSchemeDTO.getId()); mcsApi.createScheduleSuggest(suggestRespDTO); }else if ("RunAdvice".equals(key) && !"".equals(result.get("RunAdvice").toString())) { ScheduleSuggestRespDTO suggestRespDTO = new ScheduleSuggestRespDTO(); suggestRespDTO.setId(UUID.randomUUID().toString()); suggestRespDTO.setContent(result.get("RunAdvice").toString());//润忠建议送出量建议 suggestRespDTO.setSchemeId(stScheduleSchemeDTO.getId()); mcsApi.createScheduleSuggest(suggestRespDTO); } } break; case CommonConstant.OXYGEN_TWO_CODE://氧气系统优化调度决策方案 if(!result.containsKey("yingdiAdvice") || !result.containsKey("faAdvice") || !result.containsKey("hongAdvice") || !result.containsKey("RunAdvice")){ return; } for (String key : result.keySet()) { if ("yingdiAdvice".equals(key) && !"".equals(result.get("yingdiAdvice").toString())) { ScheduleSuggestRespDTO suggestRespDTO = new ScheduleSuggestRespDTO(); suggestRespDTO.setId(UUID.randomUUID().toString()); suggestRespDTO.setContent(result.get("yingdiAdvice").toString());//盈德中压建议调整量建议 suggestRespDTO.setSchemeId(stScheduleSchemeDTO.getId()); mcsApi.createScheduleSuggest(suggestRespDTO); }else if ("faAdvice".equals(key) && !"".equals(result.get("faAdvice").toString())) { ScheduleSuggestRespDTO suggestRespDTO = new ScheduleSuggestRespDTO(); suggestRespDTO.setId(UUID.randomUUID().toString()); suggestRespDTO.setContent(result.get("faAdvice").toString());//法夜空建议调整量建议 suggestRespDTO.setSchemeId(stScheduleSchemeDTO.getId()); mcsApi.createScheduleSuggest(suggestRespDTO); }else if ("hongAdvice".equals(key) && !"".equals(result.get("hongAdvice").toString())) { ScheduleSuggestRespDTO suggestRespDTO = new ScheduleSuggestRespDTO(); suggestRespDTO.setId(UUID.randomUUID().toString()); suggestRespDTO.setContent(result.get("hongAdvice").toString());//宏昌建议调整量建议 suggestRespDTO.setSchemeId(stScheduleSchemeDTO.getId()); mcsApi.createScheduleSuggest(suggestRespDTO); }else if ("RunAdvice".equals(key) && !"".equals(result.get("RunAdvice").toString())) { ScheduleSuggestRespDTO suggestRespDTO = new ScheduleSuggestRespDTO(); suggestRespDTO.setId(UUID.randomUUID().toString()); suggestRespDTO.setContent(result.get("RunAdvice").toString());//润忠建议调整量建议 suggestRespDTO.setSchemeId(stScheduleSchemeDTO.getId()); mcsApi.createScheduleSuggest(suggestRespDTO); } } break; default: break; } } // AlarmMessageRespDTO alarmMessageRespDTO = alarmMessage.getAlarmMessageRespDTO(); // JSONObject contentJson = JSONObject.parseObject(alarmMessageRespDTO.getContent()); // String overLimitTime = contentJson.get("overLimitTime").toString(); // 根据模型返回结果,保存调度建议 } } shasteel-biz/src/main/java/com/iailab/module/shasteel/mq/consumer/ModelPredictFinish2Consumer.java
对比新文件 @@ -0,0 +1,152 @@ package com.iailab.module.shasteel.mq.consumer; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; import com.iailab.framework.common.util.date.DateUtils; import com.iailab.module.model.api.mcs.McsApi; import com.iailab.module.model.api.mcs.dto.AlarmMessageRespDTO; import com.iailab.module.model.api.mcs.dto.ScheduleSuggestRespDTO; 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.shasteel.mq.common.constant.CommonConstant; import com.iailab.module.shasteel.mq.common.enums.TriggerConditionEnum; import com.iailab.module.shasteel.mq.config.QueueModelAlarmConfig; import com.iailab.module.shasteel.mq.config.QueuePredictFinishConfig; import lombok.extern.slf4j.Slf4j; import org.springframework.amqp.core.Message; import org.springframework.amqp.rabbit.annotation.RabbitListener; import org.springframework.stereotype.Component; import org.springframework.util.CollectionUtils; import javax.annotation.Resource; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.UUID; /** * 监听报警信息 * * @author PanZhibao * @Description * @createTime 2024年12月11日 */ @Slf4j @Component public class ModelPredictFinish2Consumer { @Resource private McsApi mcsApi; @Resource private MdkApi mdkApi; /** * 监听预测完成,执行调度 * * @param message */ @RabbitListener(queues = QueuePredictFinishConfig.QUEUE_NAME) public void listen(Message message) { String routingKey = message.getMessageProperties().getReceivedRoutingKey(); log.info("routingKey:" + routingKey); String messageBody = new String(message.getBody()); log.info("messageBody:" + messageBody); JSONObject messageJson = JSONObject.parseObject(messageBody); if (CollectionUtils.isEmpty(messageJson)) { return; } // 查找需要执行的调度方案 Map<String, Object> params = new HashMap<>(); params.put("trigger_method", TriggerConditionEnum.EVENT); params.put("trigger_condition", routingKey); List<StScheduleSchemeDTO> scheduleSchemeList = mcsApi.listScheduleScheme(params);//根据触发条件获取调度方案列表 for(StScheduleSchemeDTO stScheduleSchemeDTO : scheduleSchemeList){ MdkScheduleReqDTO mdkScheduleReqDTO = new MdkScheduleReqDTO(); mdkScheduleReqDTO.setScheduleCode(stScheduleSchemeDTO.getCode()); mdkScheduleReqDTO.setScheduleTime(stScheduleSchemeDTO.getScheduleTime()); MdkScheduleRespDTO mdkScheduleRespDTO = mdkApi.doSchedule(mdkScheduleReqDTO);//执行调度方案 if(mdkScheduleRespDTO == null){ return; } Map<String, Object> result = mdkScheduleRespDTO.getResult(); switch (mdkScheduleRespDTO.getScheduleCode()) { case CommonConstant.COMPRESSOR_CODE://压缩空气调度方案 if(!result.containsKey("pressureWarning") || !result.containsKey("dispatchStart") || !result.containsKey("dispatchEnd")){ return; } for (String key : result.keySet()) { if("pressureWarning".equals(key) && !"".equals(result.get("pressureWarning").toString())){ AlarmMessageRespDTO alarmRespDTO = new AlarmMessageRespDTO(); alarmRespDTO.setId(UUID.randomUUID().toString()); alarmRespDTO.setContent(result.get("pressureWarning").toString());//压力预警信息 alarmRespDTO.setAlarmTime(DateUtils.parse(messageJson.get("predictTime").toString(), DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)); mcsApi.createAlarmMessage(alarmRespDTO); }else if("dispatchStart".equals(key) && !"".equals(result.get("dispatchStart").toString())){ ScheduleSuggestRespDTO suggestRespDTO = new ScheduleSuggestRespDTO(); suggestRespDTO.setId(UUID.randomUUID().toString()); suggestRespDTO.setContent(result.get("dispatchStart").toString());//空压机启动调度建议 suggestRespDTO.setSchemeId(stScheduleSchemeDTO.getId()); mcsApi.createScheduleSuggest(suggestRespDTO); }else if("dispatchEnd".equals(key) && !"".equals(result.get("dispatchEnd").toString())){ ScheduleSuggestRespDTO suggestRespDTO = new ScheduleSuggestRespDTO(); suggestRespDTO.setId(UUID.randomUUID().toString()); suggestRespDTO.setContent(result.get("dispatchClose").toString());//空压机关停调度建议 suggestRespDTO.setSchemeId(stScheduleSchemeDTO.getId()); mcsApi.createScheduleSuggest(suggestRespDTO); } } break; case CommonConstant.STEAM_CODE://蒸汽调度方案 if(!result.containsKey("daxinWarning") || !result.containsKey("jinfengWarning") || !result.containsKey("zhuanlu1Warning") || !result.containsKey("zhuanlu2Warning") || !result.containsKey("jinfengAdvice") || !result.containsKey("daxinAdvice")){ return; } for (String key : result.keySet()) { if ("daxinWarning".equals(key) && !"".equals(result.get("daxinWarning").toString())) { AlarmMessageRespDTO alarmRespDTO = new AlarmMessageRespDTO(); alarmRespDTO.setId(UUID.randomUUID().toString()); alarmRespDTO.setContent(result.get("daxinWarning").toString());//大新预警 alarmRespDTO.setAlarmTime(DateUtils.parse(messageJson.get("predictTime").toString(), DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)); mcsApi.createAlarmMessage(alarmRespDTO); }else if ("jinfengWarning".equals(key) && !"".equals(result.get("jinfengWarning").toString())) { AlarmMessageRespDTO alarmRespDTO = new AlarmMessageRespDTO(); alarmRespDTO.setId(UUID.randomUUID().toString()); alarmRespDTO.setContent(result.get("jinfengWarning").toString());//锦丰预警 alarmRespDTO.setAlarmTime(DateUtils.parse(messageJson.get("predictTime").toString(), DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)); mcsApi.createAlarmMessage(alarmRespDTO); }else if ("zhuanlu1Warning".equals(key) && !"".equals(result.get("zhuanlu1Warning").toString())) { AlarmMessageRespDTO alarmRespDTO = new AlarmMessageRespDTO(); alarmRespDTO.setId(UUID.randomUUID().toString()); alarmRespDTO.setContent(result.get("zhuanlu1Warning").toString());//转炉一预警 alarmRespDTO.setAlarmTime(DateUtils.parse(messageJson.get("predictTime").toString(), DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)); mcsApi.createAlarmMessage(alarmRespDTO); }else if ("zhuanlu2Warning".equals(key) && !"".equals(result.get("zhuanlu2Warning").toString())) { AlarmMessageRespDTO alarmRespDTO = new AlarmMessageRespDTO(); alarmRespDTO.setId(UUID.randomUUID().toString()); alarmRespDTO.setContent(result.get("zhuanlu2Warning").toString());//转炉二预警 alarmRespDTO.setAlarmTime(DateUtils.parse(messageJson.get("predictTime").toString(), DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)); mcsApi.createAlarmMessage(alarmRespDTO); }else if ("jinfengAdvice".equals(key) && !"".equals(result.get("jinfengAdvice").toString())) { ScheduleSuggestRespDTO suggestRespDTO = new ScheduleSuggestRespDTO(); suggestRespDTO.setId(UUID.randomUUID().toString()); suggestRespDTO.setContent(result.get("jinfengAdvice").toString());//锦丰调度建议 suggestRespDTO.setSchemeId(stScheduleSchemeDTO.getId()); mcsApi.createScheduleSuggest(suggestRespDTO); }else if ("daxinAdvice".equals(key) && !"".equals(result.get("daxinAdvice").toString())) { ScheduleSuggestRespDTO suggestRespDTO = new ScheduleSuggestRespDTO(); suggestRespDTO.setId(UUID.randomUUID().toString()); suggestRespDTO.setContent(result.get("daxinAdvice").toString());//大新调度建议 suggestRespDTO.setSchemeId(stScheduleSchemeDTO.getId()); mcsApi.createScheduleSuggest(suggestRespDTO); } } break; default: break; } } } } shasteel-biz/src/main/java/com/iailab/module/shasteel/mq/consumer/ModelPredictFinishConsumer.java
@@ -6,7 +6,8 @@ import com.iailab.module.model.api.mcs.dto.AlarmConfigRespDTO; import com.iailab.module.model.api.mcs.dto.AlarmMessageRespDTO; import com.iailab.module.model.api.mcs.dto.PreDataJsonReqVO; import com.iailab.module.shasteel.mq.common.RoutingConstant; import com.iailab.module.shasteel.mq.common.constant.CommonConstant; import com.iailab.module.shasteel.mq.common.constant.RoutingConstant; import com.iailab.module.shasteel.mq.config.QueuePredictFinishConfig; import lombok.extern.slf4j.Slf4j; import org.springframework.amqp.core.Message; @@ -84,9 +85,9 @@ AlarmMessageRespDTO alarmMessage = new AlarmMessageRespDTO(); alarmMessage.setConfigId(item.getId()); if (dataValue.compareTo(item.getLowerLimit()) < 0) { alarmMessage.setAlarmType("1");//超下限 alarmMessage.setAlarmType(CommonConstant.EXCEEDING_LOWER_LIMIT);//超下限 } else if (dataValue.compareTo(item.getUpperLimit()) > 0) { alarmMessage.setAlarmType("2");//超上限 alarmMessage.setAlarmType(CommonConstant.EXCEEDING_UPPER_LIMIT);//超上限 } alarmMessage.setAlarmTime(DateUtils.parse(data[0].toString(), DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)); StringBuffer sb = new StringBuffer(); @@ -94,9 +95,9 @@ sb.append(" "); sb.append(item.getAlarmObj()); if ("1".equals(alarmMessage.getAlarmType())) { sb.append("超下限"); sb.append(CommonConstant.EXCEEDING_LOWER_LIMIT); } else if ("2".equals(alarmMessage.getAlarmType())) { sb.append("超上限"); sb.append(CommonConstant.EXCEEDING_UPPER_LIMIT); } sb.append(dataValue); sb.append(item.getUnit());