Commit 751f96c3 authored by duanruiming's avatar duanruiming

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

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