Commit 07b428c9 authored by duanruiming's avatar duanruiming

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

parent 3ce3cbf3
......@@ -60,6 +60,17 @@ public class SignalStatusController {
public JsonViewObject lightStatus() throws Exception {
List<LightsStatusVO> lightsStatusVOList = signalStatusService.lightStatus();
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 {
List<LightsStatusVO> lightStatus() 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;
import com.alibaba.fastjson.JSON;
import com.fasterxml.jackson.core.type.TypeReference;
import com.fasterxml.jackson.databind.ObjectMapper;
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.CrossLightsStatusHistMapper;
import net.wanji.databus.dao.mapper.ManufacturerInfoMapper;
import net.wanji.databus.dao.mapper.SignalStatusLogMapper;
import net.wanji.databus.po.CrossInfoPO;
......@@ -21,6 +26,7 @@ import net.wanji.utc.util.ListUtil;
import net.wanji.utc.util.RedisUtil;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.CollectionUtils;
import java.util.ArrayList;
import java.util.Arrays;
......@@ -41,6 +47,7 @@ public class SignalStatusServiceImpl implements SignalStatusService {
private final RedisUtil redisUtil;
private final SignalStatusLogMapper signalStatusLogMapper;
private final WanJiCommonRunningStatusService wanJiRunningStatusService;
private final CrossLightsStatusHistMapper crossLightsStatusHistMapper;
@Override
@Transactional
......@@ -165,4 +172,20 @@ public class SignalStatusServiceImpl implements SignalStatusService {
}
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;
import lombok.extern.slf4j.Slf4j;
import net.wanji.common.framework.rest.JsonViewObject;
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.CrossLightsStatusHistMapper;
import net.wanji.databus.dao.mapper.ManufacturerInfoMapper;
import net.wanji.databus.po.CrossInfoPO;
import net.wanji.databus.po.ManufacturerInfoPO;
......@@ -27,6 +29,8 @@ import org.springframework.stereotype.Component;
import org.springframework.util.CollectionUtils;
import javax.annotation.Resource;
import java.time.LocalDateTime;
import java.time.ZoneOffset;
import java.util.*;
import java.util.concurrent.ConcurrentHashMap;
......@@ -53,6 +57,8 @@ public class SignalStatusTask {
private CrossInfoMapper crossInfoMapper;
@Resource
private UtcDTFeignClients utcDTFeignClients;
@Resource
private CrossLightsStatusHistMapper crossLightsStatusHistMapper;
private static Map<String, List<LightsStatusVO>> lightStatusCache = new HashMap<>();
private static final Map<String, Integer> runModeTimeMap = new ConcurrentHashMap<>();
......@@ -113,7 +119,9 @@ public class SignalStatusTask {
}
Constants.controlModeMap.put(crossId, lightsStatusVO.getRunMode());
try {
webSocket.sendInfo(mapper.writeValueAsString(lightsStatusVOS), crossIdStr);
String json = mapper.writeValueAsString(lightsStatusVOS);
webSocket.sendInfo(json, crossIdStr);
insertIntoHist(crossId, json);
} catch (Exception e) {
log.error("RealTimeDataWebSocket发送异常,异常信息:", e);
}
......@@ -127,4 +135,19 @@ public class SignalStatusTask {
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