0918优化-告警工单逻辑优化
This commit is contained in:
@ -99,5 +99,11 @@ public interface EmsAlarmRecordsMapper
|
||||
public void batchUpsert(@Param("recordsList")List<EmsAlarmRecords> recordsList);
|
||||
|
||||
// 获取所有没有处理完成的告警记录
|
||||
public List<EmsAlarmRecords> getAllUnfinishedRecords(@Param("needUpdateKeys")List<String> needUpdateKeys,@Param("siteId") String siteId);
|
||||
public List<EmsAlarmRecords> getAllUnfinishedRecords(@Param("needUpdateKeys")List<String> needUpdateKeys,@Param("siteId") String siteId,
|
||||
@Param("deviceId") String deviceId);
|
||||
|
||||
// 根据ticketNo更新告警状态
|
||||
public EmsAlarmRecords getAlarmByTicketNo(@Param("ticketNo")String ticketNo);
|
||||
//获取指定设备未处理和处理中的告警
|
||||
public List<EmsAlarmRecords> getNeedPutRedisAlarm(@Param("siteId")String siteId, @Param("deviceId")String deviceId);
|
||||
}
|
||||
|
||||
@ -88,8 +88,11 @@ public interface IEmsAlarmRecordsService
|
||||
public void initAlarmMatchInfo();
|
||||
|
||||
// 获取所有没有处理完成的告警记录
|
||||
public List<EmsAlarmRecords> getAllUnfinishedRecords(List<String> needUpdateKeys, String siteId);
|
||||
public List<EmsAlarmRecords> getAllUnfinishedRecords(List<String> needUpdateKeys, String siteId, String deviceId);
|
||||
|
||||
// 批量处理告警数据
|
||||
public void batchProcessAlarmRecords(List<EmsAlarmRecords> recordsList);
|
||||
|
||||
// 根据site_id和deviceId更新对应的redis
|
||||
public void updateRedisAlarmRecords(String siteId, String deviceId);
|
||||
}
|
||||
|
||||
@ -9,6 +9,7 @@ import com.xzzn.common.core.domain.entity.SysUser;
|
||||
import com.xzzn.common.core.redis.RedisCache;
|
||||
import com.xzzn.common.enums.AlarmLevelStatus;
|
||||
import com.xzzn.common.enums.AlarmStatus;
|
||||
import com.xzzn.common.enums.TicketStatus;
|
||||
import com.xzzn.common.utils.DateUtils;
|
||||
import com.xzzn.common.utils.StringUtils;
|
||||
import com.xzzn.ems.domain.EmsAlarmMatchData;
|
||||
@ -159,6 +160,7 @@ public class EmsAlarmRecordsServiceImpl implements IEmsAlarmRecordsService
|
||||
emsTicket.setContent(emsAlarmRecords.getAlarmContent());
|
||||
emsTicket.setUserId(userId);
|
||||
emsTicket.setWorkUserId(userId);
|
||||
emsTicket.setStatus(Long.valueOf(TicketStatus.WAITING.getCode()));
|
||||
emsTicket.setCreateTime(DateUtils.getNowDate());
|
||||
emsTicket.setCreateBy(user.getUserName());
|
||||
emsTicket.setUpdateTime(DateUtils.getNowDate());
|
||||
@ -267,8 +269,8 @@ public class EmsAlarmRecordsServiceImpl implements IEmsAlarmRecordsService
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<EmsAlarmRecords> getAllUnfinishedRecords(List<String> needUpdateKeys, String siteId) {
|
||||
return emsAlarmRecordsMapper.getAllUnfinishedRecords(needUpdateKeys,siteId);
|
||||
public List<EmsAlarmRecords> getAllUnfinishedRecords(List<String> needUpdateKeys, String siteId, String deviceId) {
|
||||
return emsAlarmRecordsMapper.getAllUnfinishedRecords(needUpdateKeys,siteId,deviceId);
|
||||
}
|
||||
|
||||
@Override
|
||||
@ -276,5 +278,19 @@ public class EmsAlarmRecordsServiceImpl implements IEmsAlarmRecordsService
|
||||
emsAlarmRecordsMapper.batchUpsert(recordsList);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void updateRedisAlarmRecords(String siteId, String deviceId) {
|
||||
if (StringUtils.isEmpty(siteId) || StringUtils.isEmpty(deviceId)) {
|
||||
return;
|
||||
}
|
||||
String redisKey = RedisKeyConstants.LATEST_ALARM_RECORD + "_" + siteId +"_" + deviceId;
|
||||
List<EmsAlarmRecords> allDeviceRecords = emsAlarmRecordsMapper.getNeedPutRedisAlarm(siteId,deviceId);
|
||||
// 转Map
|
||||
Map<String, EmsAlarmRecords> newAlarms = allDeviceRecords.stream()
|
||||
.filter(a -> !AlarmStatus.DONE.getCode().equals(a.getStatus()))
|
||||
.collect(Collectors.toMap(EmsAlarmRecords::getAlarmPoint, a -> a));
|
||||
redisCache.setAllCacheMapValue(redisKey, newAlarms);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
@ -3,10 +3,15 @@ package com.xzzn.ems.service.impl;
|
||||
import java.util.List;
|
||||
import java.util.Random;
|
||||
|
||||
import com.xzzn.common.enums.AlarmStatus;
|
||||
import com.xzzn.common.utils.DateUtils;
|
||||
import com.xzzn.common.utils.StringUtils;
|
||||
import com.xzzn.ems.domain.EmsAlarmRecords;
|
||||
import com.xzzn.ems.domain.EmsTicket;
|
||||
import com.xzzn.ems.domain.vo.TicketListVo;
|
||||
import com.xzzn.ems.mapper.EmsAlarmRecordsMapper;
|
||||
import com.xzzn.ems.mapper.EmsTicketMapper;
|
||||
import com.xzzn.ems.service.IEmsAlarmRecordsService;
|
||||
import com.xzzn.ems.service.IEmsTicketService;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
@ -23,6 +28,10 @@ public class EmsTicketServiceImpl implements IEmsTicketService
|
||||
{
|
||||
@Autowired
|
||||
private EmsTicketMapper emsTicketMapper;
|
||||
@Autowired
|
||||
private EmsAlarmRecordsMapper emsAlarmRecordsMapper;
|
||||
@Autowired
|
||||
private IEmsAlarmRecordsService iEmsAlarmRecordsService;
|
||||
|
||||
/**
|
||||
* 查询工单主-工单详情
|
||||
@ -76,6 +85,21 @@ public class EmsTicketServiceImpl implements IEmsTicketService
|
||||
@Override
|
||||
public int updateEmsTicket(EmsTicket emsTicket)
|
||||
{
|
||||
String status = emsTicket.getStatus().toString();
|
||||
String ticketNo = emsTicket.getTicketNo();
|
||||
// 判断工单状态为:3-已完成
|
||||
if ("3".equals(status) && !StringUtils.isEmpty(ticketNo)) {
|
||||
// 处理告警数据状态-已处理
|
||||
EmsAlarmRecords emsAlarmRecords = emsAlarmRecordsMapper.getAlarmByTicketNo(ticketNo);
|
||||
if (emsAlarmRecords != null) {
|
||||
emsAlarmRecords.setStatus(AlarmStatus.DONE.getCode());
|
||||
emsAlarmRecords.setUpdateTime(DateUtils.getNowDate());
|
||||
emsAlarmRecords.setAlarmEndTime(DateUtils.getNowDate());
|
||||
emsAlarmRecordsMapper.updateEmsAlarmRecords(emsAlarmRecords);
|
||||
// 更新告警redis
|
||||
iEmsAlarmRecordsService.updateRedisAlarmRecords(emsAlarmRecords.getSiteId(),emsAlarmRecords.getDeviceId());
|
||||
}
|
||||
}
|
||||
emsTicket.setUpdateTime(DateUtils.getNowDate());
|
||||
return emsTicketMapper.updateEmsTicket(emsTicket);
|
||||
}
|
||||
|
||||
@ -866,7 +866,7 @@ public class FXXDataProcessServiceImpl extends AbstractBatteryDataProcessor impl
|
||||
// 批量查询数据库-需要更新的数据
|
||||
Map<String, EmsAlarmRecords> needUpdateMap = new HashMap<>();
|
||||
if (!needUpdateKeys.isEmpty()) {
|
||||
List<EmsAlarmRecords> records = iEmsAlarmRecordsService.getAllUnfinishedRecords(needUpdateKeys,SITE_ID);
|
||||
List<EmsAlarmRecords> records = iEmsAlarmRecordsService.getAllUnfinishedRecords(needUpdateKeys,SITE_ID, deviceId);
|
||||
// 转为Map便于快速获取
|
||||
needUpdateMap = records.stream()
|
||||
.collect(Collectors.toMap(
|
||||
|
||||
@ -192,10 +192,11 @@
|
||||
limit 1
|
||||
</select>
|
||||
|
||||
<select id="getAllUnfinishedRecords" resultType="com.xzzn.ems.domain.EmsAlarmRecords">
|
||||
<select id="getAllUnfinishedRecords" resultMap="EmsAlarmRecordsResult">
|
||||
<include refid="selectEmsAlarmRecordsVo"/>
|
||||
WHERE status <![CDATA[ != ]]> 1
|
||||
and site_id = #{siteId}
|
||||
and device_id = #{deviceId}
|
||||
and alarm_point IN
|
||||
<foreach collection="needUpdateKeys" item="key" open="(" separator="," close=")">
|
||||
#{key}
|
||||
@ -246,4 +247,18 @@
|
||||
status = values(status),
|
||||
device_id = values(device_id)
|
||||
</insert>
|
||||
|
||||
<select id="getAlarmByTicketNo" resultType="com.xzzn.ems.domain.EmsAlarmRecords">
|
||||
<include refid="selectEmsAlarmRecordsVo"/>
|
||||
WHERE ticket_no = #{ticketNo}
|
||||
limit 1
|
||||
</select>
|
||||
|
||||
<select id="getNeedPutRedisAlarm" resultType="com.xzzn.ems.domain.EmsAlarmRecords">
|
||||
<include refid="selectEmsAlarmRecordsVo"/>
|
||||
WHERE status <![CDATA[ != ]]> 1
|
||||
and site_id = #{siteId}
|
||||
and device_id = #{deviceId}
|
||||
and alarm_point is not null
|
||||
</select>
|
||||
</mapper>
|
||||
Reference in New Issue
Block a user