Commit 751f96c3 authored by duanruiming's avatar duanruiming

[update] 事件方向转向数据结构优化

parent a8d6d647
...@@ -26,106 +26,107 @@ import java.util.*; ...@@ -26,106 +26,107 @@ import java.util.*;
@Slf4j @Slf4j
public class EventDataServiceImpl implements EventDataService { public class EventDataServiceImpl implements EventDataService {
@Resource @Resource
private EventInfoMapper eventInfoMapper; private EventInfoMapper eventInfoMapper;
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
@Override @Override
public void save(String originData) { public void save(String originData) {
try { try {
Map<String, Integer> crossIdGreenIdMap = CrossGreenWaveInfoCache.crossIdGreenIdMap; Map<String, Integer> crossIdGreenIdMap = CrossGreenWaveInfoCache.crossIdGreenIdMap;
ObjectMapper mapper = JacksonUtils.getInstance(); ObjectMapper mapper = JacksonUtils.getInstance();
EventDataDTO eventDataDTO = mapper.readValue(originData, EventDataDTO.class); EventDataDTO eventDataDTO = mapper.readValue(originData, EventDataDTO.class);
String eventId = eventDataDTO.getEventId(); String eventId = eventDataDTO.getEventId();
// 如果同一时间id更新结束时间和告警状态 // 如果同一时间id更新结束时间和告警状态
if (StringUtils.isNotBlank(eventId)) { if (StringUtils.isNotBlank(eventId)) {
EventInfoPO eventInfoPO4DB = eventInfoMapper.selectByEventSerialNumber(eventId); EventInfoPO eventInfoPO4DB = eventInfoMapper.selectByEventSerialNumber(eventId);
if (Objects.nonNull(eventInfoPO4DB)) { if (Objects.nonNull(eventInfoPO4DB)) {
eventInfoPO4DB.setModifyTime(new Date()); eventInfoPO4DB.setModifyTime(new Date());
eventInfoPO4DB.setEndTime(eventDataDTO.getEventEndTime()); eventInfoPO4DB.setEndTime(eventDataDTO.getEventEndTime());
Integer eventStatus = eventDataDTO.getEventStatus(); Integer eventStatus = eventDataDTO.getEventStatus();
eventInfoPO4DB.setAlarmStatus(eventStatus); eventInfoPO4DB.setAlarmStatus(eventStatus);
if (Objects.equals(2, eventStatus) || Objects.equals(3, eventStatus)) { if (Objects.equals(2, eventStatus) || Objects.equals(3, eventStatus)) {
eventInfoPO4DB.setOptStatus(1); eventInfoPO4DB.setOptStatus(1);
} }
setGreenId(crossIdGreenIdMap, eventInfoPO4DB, eventInfoPO4DB.getCrossId()); setGreenId(crossIdGreenIdMap, eventInfoPO4DB, eventInfoPO4DB.getCrossId());
eventInfoMapper.updateOne(eventInfoPO4DB); eventInfoMapper.updateOne(eventInfoPO4DB);
} else { } else {
EventInfoPO eventInfoPO = getEventInfoPO(eventDataDTO); EventInfoPO eventInfoPO = getEventInfoPO(eventDataDTO);
eventInfoMapper.insertOne(eventInfoPO); eventInfoMapper.insertOne(eventInfoPO);
} // websocket
} }
} catch (Exception e) { }
log.error("事件保存异常:", e); } catch (Exception e) {
throw new RuntimeException(e); log.error("事件保存异常:", e);
} throw new RuntimeException(e);
} }
}
@NotNull @NotNull
private static EventInfoPO getEventInfoPO(EventDataDTO eventDataDTO) throws Exception{ private static EventInfoPO getEventInfoPO(EventDataDTO eventDataDTO) throws Exception{
ObjectMapper mapper = JacksonUtils.getInstance(); ObjectMapper mapper = JacksonUtils.getInstance();
Map<String, Integer> crossIdGreenIdMap = CrossGreenWaveInfoCache.crossIdGreenIdMap; Map<String, Integer> crossIdGreenIdMap = CrossGreenWaveInfoCache.crossIdGreenIdMap;
EventInfoPO eventInfoPO = new EventInfoPO(); EventInfoPO eventInfoPO = new EventInfoPO();
String crossId = eventDataDTO.getCrossId(); String crossId = eventDataDTO.getCrossId();
String eventTypeName = eventDataDTO.getEventType(); String eventTypeName = eventDataDTO.getEventType();
setEventType(eventInfoPO, eventTypeName); setEventType(eventInfoPO, eventTypeName);
Date eventStartTime = eventDataDTO.getEventStartTime(); Date eventStartTime = eventDataDTO.getEventStartTime();
eventInfoPO.setStartTime(eventStartTime); eventInfoPO.setStartTime(eventStartTime);
eventInfoPO.setEndTime(eventDataDTO.getEventEndTime()); eventInfoPO.setEndTime(eventDataDTO.getEventEndTime());
eventInfoPO.setEventSerialNumber(eventDataDTO.getEventId()); eventInfoPO.setEventSerialNumber(eventDataDTO.getEventId());
eventInfoPO.setCrossId(crossId); eventInfoPO.setCrossId(crossId);
eventInfoPO.setGreenId(eventDataDTO.getGreenId()); eventInfoPO.setGreenId(eventDataDTO.getGreenId());
SimpleDateFormat format = new SimpleDateFormat("yyyyMMdd"); SimpleDateFormat format = new SimpleDateFormat("yyyyMMdd");
String dateStr = format.format(eventStartTime); String dateStr = format.format(eventStartTime);
eventInfoPO.setDt(Integer.valueOf(dateStr)); eventInfoPO.setDt(Integer.valueOf(dateStr));
eventInfoPO.setLat(eventInfoPO.getLat()); eventInfoPO.setLat(eventInfoPO.getLat());
eventInfoPO.setLng(eventInfoPO.getLng()); eventInfoPO.setLng(eventInfoPO.getLng());
eventInfoPO.setCategory(eventDataDTO.getEventLevel()); eventInfoPO.setCategory(eventDataDTO.getEventLevel());
eventInfoPO.setPlaceDesc(eventDataDTO.getEventType()); eventInfoPO.setPlaceDesc(eventDataDTO.getEventType());
List<Integer> directions = eventDataDTO.getDirection(); List<Integer> directions = eventDataDTO.getDirection();
List<Integer> dirs = new ArrayList<>(); List<Integer> dirs = new ArrayList<>();
if (!CollectionUtils.isEmpty(directions)) { if (!CollectionUtils.isEmpty(directions)) {
directions.forEach(item -> { directions.forEach(item -> {
dirs.add(Integer.valueOf(item) + 1); dirs.add(Integer.valueOf(item) + 1);
}); });
} }
eventInfoPO.setDir(mapper.writeValueAsString(dirs)); eventInfoPO.setDir(mapper.writeValueAsString(dirs));
eventInfoPO.setTurn(mapper.writeValueAsString(eventDataDTO.getTurn())); eventInfoPO.setTurn(mapper.writeValueAsString(eventDataDTO.getTurn()));
eventInfoPO.setRuksj(new Date()); eventInfoPO.setRuksj(new Date());
eventInfoPO.setAlarmStatus(eventDataDTO.getEventStatus()); eventInfoPO.setAlarmStatus(eventDataDTO.getEventStatus());
// 默认未优化 // 默认未优化
eventInfoPO.setOptStatus(0); eventInfoPO.setOptStatus(0);
setGreenId(crossIdGreenIdMap, eventInfoPO, crossId); setGreenId(crossIdGreenIdMap, eventInfoPO, crossId);
return eventInfoPO; return eventInfoPO;
} }
private static void setGreenId(Map<String, Integer> crossIdGreenIdMap, EventInfoPO eventInfoPO, String crossId) { private static void setGreenId(Map<String, Integer> crossIdGreenIdMap, EventInfoPO eventInfoPO, String crossId) {
if (!crossIdGreenIdMap.isEmpty()) { if (!crossIdGreenIdMap.isEmpty()) {
Integer greenId = crossIdGreenIdMap.get(crossId); Integer greenId = crossIdGreenIdMap.get(crossId);
if (Objects.nonNull(greenId)) { if (Objects.nonNull(greenId)) {
eventInfoPO.setGreenId(String.valueOf(greenId)); eventInfoPO.setGreenId(String.valueOf(greenId));
} }
} }
} }
private static void setEventType(EventInfoPO eventInfoPO, String eventTypeName) { private static void setEventType(EventInfoPO eventInfoPO, String eventTypeName) {
if (EventAbnormalEnum.PHASE_EMPTY.getDesc().contains(eventTypeName)) { if (EventAbnormalEnum.PHASE_EMPTY.getDesc().contains(eventTypeName)) {
eventInfoPO.setType(EventAbnormalEnum.PHASE_EMPTY.getType()); eventInfoPO.setType(EventAbnormalEnum.PHASE_EMPTY.getType());
} }
if (EventAbnormalEnum.CROSS_UNBALANCE.getDesc().contains(eventTypeName)) { if (EventAbnormalEnum.CROSS_UNBALANCE.getDesc().contains(eventTypeName)) {
eventInfoPO.setType(EventAbnormalEnum.CROSS_UNBALANCE.getType()); eventInfoPO.setType(EventAbnormalEnum.CROSS_UNBALANCE.getType());
} }
if (EventAbnormalEnum.CROSS_OVERFLOW.getDesc().contains(eventTypeName)) { if (EventAbnormalEnum.CROSS_OVERFLOW.getDesc().contains(eventTypeName)) {
eventInfoPO.setType(EventAbnormalEnum.CROSS_OVERFLOW.getType()); eventInfoPO.setType(EventAbnormalEnum.CROSS_OVERFLOW.getType());
} }
if (EventAbnormalEnum.GREEN_SLOW.getDesc().contains(eventTypeName)) { if (EventAbnormalEnum.GREEN_SLOW.getDesc().contains(eventTypeName)) {
eventInfoPO.setType(EventAbnormalEnum.GREEN_SLOW.getType()); eventInfoPO.setType(EventAbnormalEnum.GREEN_SLOW.getType());
} }
if (EventAbnormalEnum.GREEN_CONGEST.getDesc().contains(eventTypeName)) { if (EventAbnormalEnum.GREEN_CONGEST.getDesc().contains(eventTypeName)) {
eventInfoPO.setType(EventAbnormalEnum.GREEN_CONGEST.getType()); eventInfoPO.setType(EventAbnormalEnum.GREEN_CONGEST.getType());
} }
if (EventAbnormalEnum.CROSS_CONGEST.getDesc().contains(eventTypeName)) { if (EventAbnormalEnum.CROSS_CONGEST.getDesc().contains(eventTypeName)) {
eventInfoPO.setType(EventAbnormalEnum.CROSS_CONGEST.getType()); eventInfoPO.setType(EventAbnormalEnum.CROSS_CONGEST.getType());
} }
} }
} }
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment