diff --git a/ems-common/src/main/java/com/xzzn/common/constant/RedisKeyConstants.java b/ems-common/src/main/java/com/xzzn/common/constant/RedisKeyConstants.java index eaab5be..5edda60 100644 --- a/ems-common/src/main/java/com/xzzn/common/constant/RedisKeyConstants.java +++ b/ems-common/src/main/java/com/xzzn/common/constant/RedisKeyConstants.java @@ -61,4 +61,10 @@ public class RedisKeyConstants public static final String TOPIC_FAILED_ALRAM_RECORD = "topic_failed_"; /** topic 内没有数据设备维度告警 */ public static final String TOPIC_EMPTY_ALARM_RECORD = "topic_empty_"; + + /** 告警匹配信息 */ + public static final String ALARM_MATCH_INFO = "alarm_message_info"; + + /** 现有的告警数据 */ + public static final String LATEST_ALARM_RECORD = "LATEST_ALARM_RECORD"; } diff --git a/ems-common/src/main/java/com/xzzn/common/core/redis/RedisCache.java b/ems-common/src/main/java/com/xzzn/common/core/redis/RedisCache.java index 99829d4..b234b47 100644 --- a/ems-common/src/main/java/com/xzzn/common/core/redis/RedisCache.java +++ b/ems-common/src/main/java/com/xzzn/common/core/redis/RedisCache.java @@ -241,6 +241,18 @@ public class RedisCache return redisTemplate.opsForHash().multiGet(key, hKeys); } + /** + * 删除Hash中的多条数据 + * + * @param key Redis键 + * @param hKey Hash键 + * @return 是否成功 + */ + public boolean deleteAllCacheMapValue(final String key, final Object[] hKey) + { + return redisTemplate.opsForHash().delete(key, hKey) > 0; + } + /** * 删除Hash中的某条数据 * @@ -253,6 +265,18 @@ public class RedisCache return redisTemplate.opsForHash().delete(key, hKey) > 0; } + + /** + * 批量往Hash中存入数据 + * + * @param key Redis键 + * @param value 值 + */ + public void setAllCacheMapValue(final String key, final Map value) + { + redisTemplate.opsForHash().putAll(key, value); + } + /** * 获得缓存的基本对象列表 * diff --git a/ems-framework/src/main/java/com/xzzn/framework/manager/ModbusConnectionManager.java b/ems-framework/src/main/java/com/xzzn/framework/manager/ModbusConnectionManager.java index 9529d6d..98e83a2 100644 --- a/ems-framework/src/main/java/com/xzzn/framework/manager/ModbusConnectionManager.java +++ b/ems-framework/src/main/java/com/xzzn/framework/manager/ModbusConnectionManager.java @@ -3,6 +3,7 @@ package com.xzzn.framework.manager; import com.ghgande.j2mod.modbus.net.TCPMasterConnection; import com.xzzn.ems.domain.EmsDevicesSetting; import com.xzzn.ems.mapper.EmsDevicesSettingMapper; +import com.xzzn.ems.service.IEmsAlarmRecordsService; import org.apache.commons.pool2.impl.GenericObjectPool; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -35,6 +36,8 @@ public class ModbusConnectionManager implements ApplicationRunner { private ScheduledExecutorService scheduler; @Autowired private EmsDevicesSettingMapper deviceRepo; + @Autowired + private IEmsAlarmRecordsService iEmsAlarmRecordsService; @Override public void run(ApplicationArguments args) throws Exception { @@ -46,8 +49,15 @@ public class ModbusConnectionManager implements ApplicationRunner { scheduler = Executors.newSingleThreadScheduledExecutor(); scheduler.scheduleAtFixedRate(this::heartbeatCheck, 1, 5, TimeUnit.MINUTES); logger.info("Modbus连接管理器已初始化"); + + // 初始数据工作 + initData(); } + private void initData() { + // 初始化-告警数据 + iEmsAlarmRecordsService.initAlarmMatchInfo(); + } /** * 获取连接(带自动创建和缓存) */ diff --git a/ems-system/src/main/java/com/xzzn/ems/domain/EmsAlarmMatchData.java b/ems-system/src/main/java/com/xzzn/ems/domain/EmsAlarmMatchData.java new file mode 100644 index 0000000..e6f03c9 --- /dev/null +++ b/ems-system/src/main/java/com/xzzn/ems/domain/EmsAlarmMatchData.java @@ -0,0 +1,117 @@ +package com.xzzn.ems.domain; + +import com.xzzn.common.core.domain.BaseEntity; +import org.apache.commons.lang3.builder.ToStringBuilder; +import org.apache.commons.lang3.builder.ToStringStyle; +import com.xzzn.common.annotation.Excel; + +/** + * 告警点位匹配数据对象 ems_alarm_match_data + * + * @author xzzn + * @date 2025-09-22 + */ +public class EmsAlarmMatchData extends BaseEntity +{ + private static final long serialVersionUID = 1L; + + /** $column.columnComment */ + private Long id; + + /** 告警点位 */ + @Excel(name = "告警点位") + private String point; + + /** 告警值 */ + @Excel(name = "告警值") + private Long alarmData; + + /** 告警描述 */ + @Excel(name = "告警描述") + private String alarmDescription; + + /** 站点id */ + @Excel(name = "站点id") + private String siteId; + + /** 设备类型 */ + @Excel(name = "设备类型") + private String deviceCategory; + + public void setId(Long id) + { + this.id = id; + } + + public Long getId() + { + return id; + } + + public void setPoint(String point) + { + this.point = point; + } + + public String getPoint() + { + return point; + } + + public void setAlarmData(Long alarmData) + { + this.alarmData = alarmData; + } + + public Long getAlarmData() + { + return alarmData; + } + + public void setAlarmDescription(String alarmDescription) + { + this.alarmDescription = alarmDescription; + } + + public String getAlarmDescription() + { + return alarmDescription; + } + + public void setSiteId(String siteId) + { + this.siteId = siteId; + } + + public String getSiteId() + { + return siteId; + } + + public void setDeviceCategory(String deviceCategory) + { + this.deviceCategory = deviceCategory; + } + + public String getDeviceCategory() + { + return deviceCategory; + } + + @Override + public String toString() { + return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE) + .append("id", getId()) + .append("point", getPoint()) + .append("alarmData", getAlarmData()) + .append("alarmDescription", getAlarmDescription()) + .append("siteId", getSiteId()) + .append("deviceCategory", getDeviceCategory()) + .append("createBy", getCreateBy()) + .append("createTime", getCreateTime()) + .append("updateBy", getUpdateBy()) + .append("updateTime", getUpdateTime()) + .append("remark", getRemark()) + .toString(); + } +} diff --git a/ems-system/src/main/java/com/xzzn/ems/domain/EmsAlarmRecords.java b/ems-system/src/main/java/com/xzzn/ems/domain/EmsAlarmRecords.java index 72ec48a..7bd68ac 100644 --- a/ems-system/src/main/java/com/xzzn/ems/domain/EmsAlarmRecords.java +++ b/ems-system/src/main/java/com/xzzn/ems/domain/EmsAlarmRecords.java @@ -24,8 +24,8 @@ public class EmsAlarmRecords extends BaseEntity @Excel(name = "设备类型") private String deviceType; - /** 告警等级 */ - @Excel(name = "告警等级") + /** 告警等级:A-提示 B-一般 C-严重 D紧急 */ + @Excel(name = "告警等级:A-提示 B-一般 C-严重 D紧急") private String alarmLevel; /** 告警内容 */ @@ -42,8 +42,12 @@ public class EmsAlarmRecords extends BaseEntity @Excel(name = "告警结束时间", width = 30, dateFormat = "yyyy-MM-dd") private Date alarmEndTime; - /** 状态 */ - @Excel(name = "状态") + /** 告警点位 */ + @Excel(name = "告警点位") + private String alarmPoint; + + /** 状态:0-待处理 1-已处理 2-处理中 */ + @Excel(name = "状态:0-待处理 1-已处理 2-处理中") private String status; /** 站点id */ @@ -118,6 +122,16 @@ public class EmsAlarmRecords extends BaseEntity return alarmEndTime; } + public void setAlarmPoint(String alarmPoint) + { + this.alarmPoint = alarmPoint; + } + + public String getAlarmPoint() + { + return alarmPoint; + } + public void setStatus(String status) { this.status = status; @@ -148,12 +162,14 @@ public class EmsAlarmRecords extends BaseEntity return deviceId; } - public String getTicketNo() { - return ticketNo; + public void setTicketNo(String ticketNo) + { + this.ticketNo = ticketNo; } - public void setTicketNo(String ticketNo) { - this.ticketNo = ticketNo; + public String getTicketNo() + { + return ticketNo; } @Override @@ -165,6 +181,7 @@ public class EmsAlarmRecords extends BaseEntity .append("alarmContent", getAlarmContent()) .append("alarmStartTime", getAlarmStartTime()) .append("alarmEndTime", getAlarmEndTime()) + .append("alarmPoint", getAlarmPoint()) .append("status", getStatus()) .append("createBy", getCreateBy()) .append("createTime", getCreateTime()) @@ -176,4 +193,4 @@ public class EmsAlarmRecords extends BaseEntity .append("ticketNo", getTicketNo()) .toString(); } -} +} \ No newline at end of file diff --git a/ems-system/src/main/java/com/xzzn/ems/mapper/EmsAlarmMatchDataMapper.java b/ems-system/src/main/java/com/xzzn/ems/mapper/EmsAlarmMatchDataMapper.java new file mode 100644 index 0000000..c4cbe65 --- /dev/null +++ b/ems-system/src/main/java/com/xzzn/ems/mapper/EmsAlarmMatchDataMapper.java @@ -0,0 +1,63 @@ +package com.xzzn.ems.mapper; + +import java.util.List; +import java.util.Map; + +import com.xzzn.ems.domain.EmsAlarmMatchData; + +/** + * 告警点位匹配数据Mapper接口 + * + * @author xzzn + * @date 2025-09-22 + */ +public interface EmsAlarmMatchDataMapper +{ + /** + * 查询告警点位匹配数据 + * + * @param id 告警点位匹配数据主键 + * @return 告警点位匹配数据 + */ + public EmsAlarmMatchData selectEmsAlarmMatchDataById(Long id); + + /** + * 查询告警点位匹配数据列表 + * + * @param emsAlarmMatchData 告警点位匹配数据 + * @return 告警点位匹配数据集合 + */ + public List selectEmsAlarmMatchDataList(EmsAlarmMatchData emsAlarmMatchData); + + /** + * 新增告警点位匹配数据 + * + * @param emsAlarmMatchData 告警点位匹配数据 + * @return 结果 + */ + public int insertEmsAlarmMatchData(EmsAlarmMatchData emsAlarmMatchData); + + /** + * 修改告警点位匹配数据 + * + * @param emsAlarmMatchData 告警点位匹配数据 + * @return 结果 + */ + public int updateEmsAlarmMatchData(EmsAlarmMatchData emsAlarmMatchData); + + /** + * 删除告警点位匹配数据 + * + * @param id 告警点位匹配数据主键 + * @return 结果 + */ + public int deleteEmsAlarmMatchDataById(Long id); + + /** + * 批量删除告警点位匹配数据 + * + * @param ids 需要删除的数据主键集合 + * @return 结果 + */ + public int deleteEmsAlarmMatchDataByIds(Long[] ids); +} diff --git a/ems-system/src/main/java/com/xzzn/ems/mapper/EmsAlarmRecordsMapper.java b/ems-system/src/main/java/com/xzzn/ems/mapper/EmsAlarmRecordsMapper.java index 09cdcd4..41751b6 100644 --- a/ems-system/src/main/java/com/xzzn/ems/mapper/EmsAlarmRecordsMapper.java +++ b/ems-system/src/main/java/com/xzzn/ems/mapper/EmsAlarmRecordsMapper.java @@ -94,4 +94,10 @@ public interface EmsAlarmRecordsMapper //获取未处理的订阅失败告警 public EmsAlarmRecords getFailedRecord(@Param("siteId")String siteId, @Param("deviceId")String deviceId, @Param("content") String content,@Param("status")String status); + + // 批量处理告警数据 + public void batchUpsert(@Param("recordsList")List recordsList); + + // 获取所有没有处理完成的告警记录 + public List getAllUnfinishedRecords(@Param("needUpdateKeys")List needUpdateKeys,@Param("siteId") String siteId); } diff --git a/ems-system/src/main/java/com/xzzn/ems/service/IEmsAlarmRecordsService.java b/ems-system/src/main/java/com/xzzn/ems/service/IEmsAlarmRecordsService.java index 94c7743..ece699c 100644 --- a/ems-system/src/main/java/com/xzzn/ems/service/IEmsAlarmRecordsService.java +++ b/ems-system/src/main/java/com/xzzn/ems/service/IEmsAlarmRecordsService.java @@ -83,4 +83,13 @@ public interface IEmsAlarmRecordsService // topic 内没有数据,按照设备维度告警 public void addEmptyDataAlarmRecord(String siteId, String deviceId); + + // 告警字段和告警信息 + public void initAlarmMatchInfo(); + + // 获取所有没有处理完成的告警记录 + public List getAllUnfinishedRecords(List needUpdateKeys, String siteId); + + // 批量处理告警数据 + public void batchProcessAlarmRecords(List recordsList); } diff --git a/ems-system/src/main/java/com/xzzn/ems/service/IFXXDataProcessService.java b/ems-system/src/main/java/com/xzzn/ems/service/IFXXDataProcessService.java index 1c8219d..bdf80fb 100644 --- a/ems-system/src/main/java/com/xzzn/ems/service/IFXXDataProcessService.java +++ b/ems-system/src/main/java/com/xzzn/ems/service/IFXXDataProcessService.java @@ -4,4 +4,5 @@ public interface IFXXDataProcessService { public void handleFxData(String message); + public void handleFxAlarmData(String message); } diff --git a/ems-system/src/main/java/com/xzzn/ems/service/impl/EmsAlarmRecordsServiceImpl.java b/ems-system/src/main/java/com/xzzn/ems/service/impl/EmsAlarmRecordsServiceImpl.java index f5ecb3b..e6aa6dc 100644 --- a/ems-system/src/main/java/com/xzzn/ems/service/impl/EmsAlarmRecordsServiceImpl.java +++ b/ems-system/src/main/java/com/xzzn/ems/service/impl/EmsAlarmRecordsServiceImpl.java @@ -2,18 +2,20 @@ package com.xzzn.ems.service.impl; import java.util.*; import java.util.concurrent.TimeUnit; +import java.util.stream.Collectors; import com.xzzn.common.constant.RedisKeyConstants; import com.xzzn.common.core.domain.entity.SysUser; -import com.xzzn.common.core.domain.model.LoginUser; import com.xzzn.common.core.redis.RedisCache; import com.xzzn.common.enums.AlarmLevelStatus; import com.xzzn.common.enums.AlarmStatus; import com.xzzn.common.utils.DateUtils; import com.xzzn.common.utils.StringUtils; +import com.xzzn.ems.domain.EmsAlarmMatchData; import com.xzzn.ems.domain.EmsTicket; import com.xzzn.ems.domain.vo.AlarmRecordListRequestVo; import com.xzzn.ems.domain.vo.AlarmRecordListResponseVo; +import com.xzzn.ems.mapper.EmsAlarmMatchDataMapper; import com.xzzn.ems.mapper.EmsTicketMapper; import com.xzzn.ems.service.IEmsTicketService; import com.xzzn.system.mapper.SysUserMapper; @@ -35,8 +37,6 @@ public class EmsAlarmRecordsServiceImpl implements IEmsAlarmRecordsService @Autowired private EmsAlarmRecordsMapper emsAlarmRecordsMapper; @Autowired - private IEmsTicketService emsTicketService; - @Autowired private EmsTicketMapper emsTicketMapper; @Autowired private SysUserMapper sysUserMapper; @@ -47,6 +47,8 @@ public class EmsAlarmRecordsServiceImpl implements IEmsAlarmRecordsService put("021_DDS_01", "PCS"); put("021_FXX_01", "PCS01"); }}; + @Autowired + private EmsAlarmMatchDataMapper emsAlarmMatchDataMapper; /** * 查询告警记录 @@ -228,7 +230,6 @@ public class EmsAlarmRecordsServiceImpl implements IEmsAlarmRecordsService redisCache.setCacheObject(RedisKeyConstants.TOPIC_EMPTY_ALARM_RECORD + siteId + "_" + topicDevice, emsAlarmRecords,1, TimeUnit.DAYS); } - private EmsAlarmRecords createAlarmAtPcs(String siteId, String deviceId,String content,String level) { EmsAlarmRecords emsAlarmRecords = new EmsAlarmRecords(); emsAlarmRecords.setSiteId(siteId); @@ -251,4 +252,28 @@ public class EmsAlarmRecordsServiceImpl implements IEmsAlarmRecordsService } + @Override + public void initAlarmMatchInfo() { + List alarmPointList = emsAlarmMatchDataMapper.selectEmsAlarmMatchDataList(null); + Map resultMap = alarmPointList.stream() + .collect(Collectors.toMap( + data->data.getDeviceCategory()+"_"+data.getPoint(), + data->data, + (existing, replacement) -> replacement + )); + // 存redis + redisCache.setCacheObject(RedisKeyConstants.ALARM_MATCH_INFO,resultMap, 1, TimeUnit.DAYS); + } + + @Override + public List getAllUnfinishedRecords(List needUpdateKeys, String siteId) { + return emsAlarmRecordsMapper.getAllUnfinishedRecords(needUpdateKeys,siteId); + } + + @Override + public void batchProcessAlarmRecords(List recordsList) { + emsAlarmRecordsMapper.batchUpsert(recordsList); + } + + } diff --git a/ems-system/src/main/java/com/xzzn/ems/service/impl/FXXDataProcessServiceImpl.java b/ems-system/src/main/java/com/xzzn/ems/service/impl/FXXDataProcessServiceImpl.java index 625d0cc..5da9227 100644 --- a/ems-system/src/main/java/com/xzzn/ems/service/impl/FXXDataProcessServiceImpl.java +++ b/ems-system/src/main/java/com/xzzn/ems/service/impl/FXXDataProcessServiceImpl.java @@ -27,6 +27,7 @@ import java.time.LocalDateTime; import java.time.format.DateTimeFormatter; import java.time.temporal.ChronoUnit; import java.util.*; +import java.util.stream.Collectors; @Service public class FXXDataProcessServiceImpl extends AbstractBatteryDataProcessor implements IFXXDataProcessService { @@ -767,6 +768,145 @@ public class FXXDataProcessServiceImpl extends AbstractBatteryDataProcessor impl return records; } + @Override + public void handleFxAlarmData(String message) { + JSONArray arraylist = JSONArray.parseArray(message); + + // 获取redis缓存-告警信息 + Map alarmMatchInfo= redisCache.getCacheObject(RedisKeyConstants.ALARM_MATCH_INFO); + + for (int i = 0; i < arraylist.size(); i++) { + JSONObject obj = JSONObject.parseObject(arraylist.get(i).toString()); + + String deviceId = obj.get("Device").toString(); + String jsonData = obj.get("Data").toString(); + + log.info("deviceId:" + deviceId); + + if (deviceId.contains("BMSD")) { + alarmDataProcess(deviceId, jsonData, alarmMatchInfo, DeviceCategory.STACK.getCode()); + } else if (deviceId.contains("BMSC")) { + alarmDataProcess(deviceId, jsonData, alarmMatchInfo, DeviceCategory.CLUSTER.getCode()); + } else if (deviceId.contains("PCS")) { + alarmDataProcess(deviceId, jsonData, alarmMatchInfo, DeviceCategory.PCS.getCode()); + } + } + } + + private void alarmDataProcess(String deviceId, String jsonData, + Map alarmInfoData, String category) { + Map obj = JSON.parseObject(jsonData, new TypeReference>() { + }); + + String redisKey = RedisKeyConstants.LATEST_ALARM_RECORD + "_" + SITE_ID +"_" + deviceId; + // 获取redis里面的当前有效告警遍历添加到已存在告警key里面 + Map currentAlarm = redisCache.getCacheMap(redisKey); + final Set currentAlarmKeys = new HashSet<>(); + if (currentAlarm != null && !currentAlarm.isEmpty()) { + currentAlarm.keySet().stream() + .filter(Objects::nonNull) + .map(Object::toString) + .forEach(currentAlarmKeys::add); + } + + // 结合同步数据,筛选簇需要更新的告警信息 + List needUpdateKeys = obj.entrySet().stream() + .filter(entry -> { + Object valueObj = entry.getValue(); + if (valueObj == null) { + return false; + } + int value = Integer.parseInt(valueObj.toString()); + return value == 0 && currentAlarmKeys.contains(entry.getKey()); + }) + .map(Map.Entry::getKey) + .collect(Collectors.toList()); + + // 批量查询数据库-需要更新的数据 + Map needUpdateMap = new HashMap<>(); + if (!needUpdateKeys.isEmpty()) { + List records = iEmsAlarmRecordsService.getAllUnfinishedRecords(needUpdateKeys,SITE_ID); + // 转为Map便于快速获取 + needUpdateMap = records.stream() + .collect(Collectors.toMap( + EmsAlarmRecords::getAlarmPoint, + record -> record + )); + } + + + List saveOrUpdateList = new ArrayList<>(); + List newAddRecordList = new ArrayList<>(); + List toRemoveFromRedis = new ArrayList<>(); + + // 遍历数据map + for (Map.Entry entry : obj.entrySet()) { + String key = entry.getKey(); + Integer value = (Integer) entry.getValue(); + Boolean isCurrentAlarm = currentAlarmKeys.contains(key); + + // 值为 1且不在当前告警里面 - 新增告警 + if (value == 1 && !isCurrentAlarm) { + String matchRedisKey = category + "_" + key; + Object cacheObj = alarmInfoData.get(matchRedisKey); + if (cacheObj == null) { + // 处理空数据逻辑 + return; + } + EmsAlarmMatchData matchInfo = JSON.toJavaObject(cacheObj, EmsAlarmMatchData.class); + EmsAlarmRecords emsAlarmRecord = convertAlarmRecord(deviceId,matchInfo); + saveOrUpdateList.add(emsAlarmRecord); + newAddRecordList.add(emsAlarmRecord); + } else if (value == 0 && isCurrentAlarm) {// 值为 0且在当前告警里面 - 更新告警已处理 + EmsAlarmRecords existingAlarm = needUpdateMap.get(key); + if (existingAlarm != null) { + existingAlarm.setStatus(AlarmStatus.DONE.getCode()); + existingAlarm.setUpdateTime(new Date()); + existingAlarm.setAlarmEndTime(new Date()); + saveOrUpdateList.add(existingAlarm); + toRemoveFromRedis.add(key); + } + } + } + + // 批量处理插入和更新操作 + if (saveOrUpdateList != null && saveOrUpdateList.size() > 0) { + iEmsAlarmRecordsService.batchProcessAlarmRecords(saveOrUpdateList); + } + // 已处理的从redis里面删除 + if (!toRemoveFromRedis.isEmpty()) { + redisCache.deleteAllCacheMapValue(RedisKeyConstants.LATEST_ALARM_RECORD + SITE_ID,toRemoveFromRedis.toArray()); + } + // 批量添加新增的告警到Redis + Map newAlarms = newAddRecordList.stream() + .filter(a -> !AlarmStatus.DONE.getCode().equals(a.getStatus())) + .collect(Collectors.toMap(EmsAlarmRecords::getAlarmPoint, a -> a)); + if (!newAlarms.isEmpty()) { + // 本次新增的放入redis + redisCache.setAllCacheMapValue(redisKey, newAlarms); + } + } + + private EmsAlarmRecords convertAlarmRecord(String deviceId, EmsAlarmMatchData matchInfo) { + EmsAlarmRecords emsAlarmRecords = new EmsAlarmRecords(); + emsAlarmRecords.setSiteId(SITE_ID); + emsAlarmRecords.setDeviceId(deviceId); + emsAlarmRecords.setDeviceType(DeviceType.TCP.toString()); + emsAlarmRecords.setAlarmLevel(AlarmLevelStatus.GENERAL.getCode()); + emsAlarmRecords.setStatus(AlarmStatus.WAITING.getCode()); + emsAlarmRecords.setAlarmStartTime(DateUtils.getNowDate()); + emsAlarmRecords.setCreateTime(DateUtils.getNowDate()); + emsAlarmRecords.setCreateBy("system"); + emsAlarmRecords.setUpdateTime(DateUtils.getNowDate()); + emsAlarmRecords.setUpdateBy("system"); + + if (matchInfo != null) { + emsAlarmRecords.setAlarmPoint(matchInfo.getPoint()); + emsAlarmRecords.setAlarmContent(matchInfo.getAlarmDescription()); + } + return emsAlarmRecords; + } + // 空数据不处理 private boolean checkJsonDataEmpty(String jsonData) { boolean flag = false; diff --git a/ems-system/src/main/resources/mapper/ems/EmsAlarmMatchDataMapper.xml b/ems-system/src/main/resources/mapper/ems/EmsAlarmMatchDataMapper.xml new file mode 100644 index 0000000..7f1bd02 --- /dev/null +++ b/ems-system/src/main/resources/mapper/ems/EmsAlarmMatchDataMapper.xml @@ -0,0 +1,100 @@ + + + + + + + + + + + + + + + + + + + + select id, point, alarm_data, alarm_description, site_id, device_category, create_by, create_time, update_by, update_time, remark from ems_alarm_match_data + + + + + + + + insert into ems_alarm_match_data + + point, + alarm_data, + alarm_description, + site_id, + device_category, + create_by, + create_time, + update_by, + update_time, + remark, + + + #{point}, + #{alarmData}, + #{alarmDescription}, + #{siteId}, + #{deviceCategory}, + #{createBy}, + #{createTime}, + #{updateBy}, + #{updateTime}, + #{remark}, + + + + + update ems_alarm_match_data + + point = #{point}, + alarm_data = #{alarmData}, + alarm_description = #{alarmDescription}, + site_id = #{siteId}, + device_category = #{deviceCategory}, + create_by = #{createBy}, + create_time = #{createTime}, + update_by = #{updateBy}, + update_time = #{updateTime}, + remark = #{remark}, + + where id = #{id} + + + + delete from ems_alarm_match_data where id = #{id} + + + + delete from ems_alarm_match_data where id in + + #{id} + + + + + \ No newline at end of file diff --git a/ems-system/src/main/resources/mapper/ems/EmsAlarmRecordsMapper.xml b/ems-system/src/main/resources/mapper/ems/EmsAlarmRecordsMapper.xml index f2d5952..8b1dcd0 100644 --- a/ems-system/src/main/resources/mapper/ems/EmsAlarmRecordsMapper.xml +++ b/ems-system/src/main/resources/mapper/ems/EmsAlarmRecordsMapper.xml @@ -11,6 +11,7 @@ + @@ -23,7 +24,7 @@ - select id, device_type, alarm_level, alarm_content, alarm_start_time, alarm_end_time, status, create_by, create_time, update_by, update_time, remark, site_id, device_id, ticket_no from ems_alarm_records + select id, device_type, alarm_level, alarm_content, alarm_start_time, alarm_end_time, alarm_point, status, create_by, create_time, update_by, update_time, remark, site_id, device_id, ticket_no from ems_alarm_records + + + + + INSERT into ems_alarm_records ( + id, + device_type, + alarm_level, + alarm_content, + alarm_start_time, + alarm_end_time, + alarm_point, + status, + create_by, + create_time, + update_by, + update_time, + remark, + site_id, + device_id, + ticket_no + ) values + + ( + #{item.id}, + #{item.deviceType}, + #{item.alarmLevel}, + #{item.alarmContent}, + #{item.alarmStartTime}, + #{item.alarmEndTime}, + #{item.alarmPoint}, + #{item.status}, + #{item.createBy}, + #{item.createTime}, + #{item.updateBy}, + #{item.updateTime}, + #{item.remark}, + #{item.siteId}, + #{item.deviceId}, + #{item.ticketNo} + ) + + on duplicate key update + alarm_end_time = values(alarm_end_time), + status = values(status), + device_id = values(device_id) + \ No newline at end of file diff --git a/ems-system/src/main/resources/mapper/ems/EmsAmmeterDataMapper.xml b/ems-system/src/main/resources/mapper/ems/EmsAmmeterDataMapper.xml index 1c69618..13bfcb9 100644 --- a/ems-system/src/main/resources/mapper/ems/EmsAmmeterDataMapper.xml +++ b/ems-system/src/main/resources/mapper/ems/EmsAmmeterDataMapper.xml @@ -984,7 +984,7 @@