Commit 07b428c9 authored by duanruiming's avatar duanruiming

[add] 添加灯态历史表接口

parent 3ce3cbf3
...@@ -60,6 +60,17 @@ public class SignalStatusController { ...@@ -60,6 +60,17 @@ public class SignalStatusController {
public JsonViewObject lightStatus() throws Exception { public JsonViewObject lightStatus() throws Exception {
List<LightsStatusVO> lightsStatusVOList = signalStatusService.lightStatus(); List<LightsStatusVO> lightsStatusVOList = signalStatusService.lightStatus();
return JsonViewObject.newInstance().success(lightsStatusVOList); return JsonViewObject.newInstance().success(lightsStatusVOList);
}
@AspectLog(description = "灯态数据历史数据", operationType = BaseEnum.OperationTypeEnum.QUERY)
@PostMapping(value = "/lightStatusHist", produces = MediaType.APPLICATION_JSON)
@ApiOperation(value = "灯态数据历史数据", notes = "灯态数据历史数据", response = LightsStatusVO.class,
produces = MediaType.APPLICATION_JSON)
@ApiResponses({
@ApiResponse(code = 200, message = "OK", response = LightsStatusVO.class)
})
public JsonViewObject lightStatusHist(String crossId, Integer batchTime) throws Exception {
List<LightsStatusVO> lightsStatusVOList = signalStatusService.lightStatusHist(crossId, batchTime);
return JsonViewObject.newInstance().success(lightsStatusVOList);
} }
} }
...@@ -23,4 +23,7 @@ public interface SignalStatusService { ...@@ -23,4 +23,7 @@ public interface SignalStatusService {
List<LightsStatusVO> lightStatus() throws Exception; List<LightsStatusVO> lightStatus() throws Exception;
List<LightsStatusVO> lightStatus(String crossId) throws Exception; List<LightsStatusVO> lightStatus(String crossId) throws Exception;
List<LightsStatusVO> lightStatusHist(String crossId, Integer batchTime) throws Exception;
} }
package net.wanji.utc.service.runninginfo.impl; package net.wanji.utc.service.runninginfo.impl;
import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSON;
import com.fasterxml.jackson.core.type.TypeReference;
import com.fasterxml.jackson.databind.ObjectMapper;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import net.wanji.common.utils.tool.JacksonUtils;
import net.wanji.databus.dao.entity.CrossLightsStatusHistPO;
import net.wanji.databus.dao.mapper.CrossInfoMapper; import net.wanji.databus.dao.mapper.CrossInfoMapper;
import net.wanji.databus.dao.mapper.CrossLightsStatusHistMapper;
import net.wanji.databus.dao.mapper.ManufacturerInfoMapper; import net.wanji.databus.dao.mapper.ManufacturerInfoMapper;
import net.wanji.databus.dao.mapper.SignalStatusLogMapper; import net.wanji.databus.dao.mapper.SignalStatusLogMapper;
import net.wanji.databus.po.CrossInfoPO; import net.wanji.databus.po.CrossInfoPO;
...@@ -21,6 +26,7 @@ import net.wanji.utc.util.ListUtil; ...@@ -21,6 +26,7 @@ import net.wanji.utc.util.ListUtil;
import net.wanji.utc.util.RedisUtil; import net.wanji.utc.util.RedisUtil;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.CollectionUtils;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Arrays; import java.util.Arrays;
...@@ -41,6 +47,7 @@ public class SignalStatusServiceImpl implements SignalStatusService { ...@@ -41,6 +47,7 @@ public class SignalStatusServiceImpl implements SignalStatusService {
private final RedisUtil redisUtil; private final RedisUtil redisUtil;
private final SignalStatusLogMapper signalStatusLogMapper; private final SignalStatusLogMapper signalStatusLogMapper;
private final WanJiCommonRunningStatusService wanJiRunningStatusService; private final WanJiCommonRunningStatusService wanJiRunningStatusService;
private final CrossLightsStatusHistMapper crossLightsStatusHistMapper;
@Override @Override
@Transactional @Transactional
...@@ -165,4 +172,20 @@ public class SignalStatusServiceImpl implements SignalStatusService { ...@@ -165,4 +172,20 @@ public class SignalStatusServiceImpl implements SignalStatusService {
} }
return baseCrossInfoList; return baseCrossInfoList;
} }
@Override
public List<LightsStatusVO> lightStatusHist(String crossId, Integer batchTime) throws Exception {
CrossLightsStatusHistPO entity = new CrossLightsStatusHistPO();
entity.setCrossId(crossId);
entity.setBatchTime(batchTime);
List<CrossLightsStatusHistPO> crossLightsStatusHistPOS = crossLightsStatusHistMapper.selectList(entity);
if (!CollectionUtils.isEmpty(crossLightsStatusHistPOS)) {
for (CrossLightsStatusHistPO crossLightsStatusHistPO : crossLightsStatusHistPOS) {
String lightsStatusJson = crossLightsStatusHistPO.getLightsStatusJson();
ObjectMapper instance = JacksonUtils.getInstance();
return instance.readValue(lightsStatusJson, new TypeReference<List<LightsStatusVO>>() {});
}
}
return null;
}
} }
...@@ -5,7 +5,9 @@ import com.fasterxml.jackson.databind.ObjectMapper; ...@@ -5,7 +5,9 @@ import com.fasterxml.jackson.databind.ObjectMapper;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import net.wanji.common.framework.rest.JsonViewObject; import net.wanji.common.framework.rest.JsonViewObject;
import net.wanji.common.utils.tool.JacksonUtils; import net.wanji.common.utils.tool.JacksonUtils;
import net.wanji.databus.dao.entity.CrossLightsStatusHistPO;
import net.wanji.databus.dao.mapper.CrossInfoMapper; import net.wanji.databus.dao.mapper.CrossInfoMapper;
import net.wanji.databus.dao.mapper.CrossLightsStatusHistMapper;
import net.wanji.databus.dao.mapper.ManufacturerInfoMapper; import net.wanji.databus.dao.mapper.ManufacturerInfoMapper;
import net.wanji.databus.po.CrossInfoPO; import net.wanji.databus.po.CrossInfoPO;
import net.wanji.databus.po.ManufacturerInfoPO; import net.wanji.databus.po.ManufacturerInfoPO;
...@@ -27,6 +29,8 @@ import org.springframework.stereotype.Component; ...@@ -27,6 +29,8 @@ import org.springframework.stereotype.Component;
import org.springframework.util.CollectionUtils; import org.springframework.util.CollectionUtils;
import javax.annotation.Resource; import javax.annotation.Resource;
import java.time.LocalDateTime;
import java.time.ZoneOffset;
import java.util.*; import java.util.*;
import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.ConcurrentHashMap;
...@@ -53,6 +57,8 @@ public class SignalStatusTask { ...@@ -53,6 +57,8 @@ public class SignalStatusTask {
private CrossInfoMapper crossInfoMapper; private CrossInfoMapper crossInfoMapper;
@Resource @Resource
private UtcDTFeignClients utcDTFeignClients; private UtcDTFeignClients utcDTFeignClients;
@Resource
private CrossLightsStatusHistMapper crossLightsStatusHistMapper;
private static Map<String, List<LightsStatusVO>> lightStatusCache = new HashMap<>(); private static Map<String, List<LightsStatusVO>> lightStatusCache = new HashMap<>();
private static final Map<String, Integer> runModeTimeMap = new ConcurrentHashMap<>(); private static final Map<String, Integer> runModeTimeMap = new ConcurrentHashMap<>();
...@@ -113,7 +119,9 @@ public class SignalStatusTask { ...@@ -113,7 +119,9 @@ public class SignalStatusTask {
} }
Constants.controlModeMap.put(crossId, lightsStatusVO.getRunMode()); Constants.controlModeMap.put(crossId, lightsStatusVO.getRunMode());
try { try {
webSocket.sendInfo(mapper.writeValueAsString(lightsStatusVOS), crossIdStr); String json = mapper.writeValueAsString(lightsStatusVOS);
webSocket.sendInfo(json, crossIdStr);
insertIntoHist(crossId, json);
} catch (Exception e) { } catch (Exception e) {
log.error("RealTimeDataWebSocket发送异常,异常信息:", e); log.error("RealTimeDataWebSocket发送异常,异常信息:", e);
} }
...@@ -127,4 +135,19 @@ public class SignalStatusTask { ...@@ -127,4 +135,19 @@ public class SignalStatusTask {
log.error("实时推送灯态数据失败", e); log.error("实时推送灯态数据失败", e);
} }
} }
private void insertIntoHist(String crossId, String json) throws Exception {
try {
CrossLightsStatusHistPO crossLightsStatusHistPO = new CrossLightsStatusHistPO();
crossLightsStatusHistPO.setCrossId(crossId);
LocalDateTime now = LocalDateTime.now();
Integer batchTime = (int) now.toEpochSecond(ZoneOffset.of("+8"));
crossLightsStatusHistPO.setBatchTime(batchTime);
crossLightsStatusHistPO.setLightsStatusJson(json);
crossLightsStatusHistMapper.insertOne(crossLightsStatusHistPO);
} catch (Exception e) {
log.error("插入路口灯态历史表异常", e);
throw new Exception(e);
}
}
} }
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