Commit 67165d17 authored by duanruiming's avatar duanruiming

[update] 辖区分组优化同步信号机状态优化

parent b68c6ba1
package net.wanji.web.entity; package net.wanji.web.entity;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName; import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.annotations.ApiModelProperty; import io.swagger.annotations.ApiModelProperty;
import lombok.Data; import lombok.Data;
...@@ -13,6 +15,7 @@ import java.util.Date; ...@@ -13,6 +15,7 @@ import java.util.Date;
@Data @Data
@TableName("t_device_status") @TableName("t_device_status")
public class TDeviceStatusInfo { public class TDeviceStatusInfo {
@TableId(value = "id", type = IdType.AUTO)
@ApiModelProperty(value = "id") @ApiModelProperty(value = "id")
private Integer id; private Integer id;
@ApiModelProperty(value = "设备代码") @ApiModelProperty(value = "设备代码")
......
...@@ -13,7 +13,7 @@ import java.util.Date; ...@@ -13,7 +13,7 @@ import java.util.Date;
*/ */
@Data @Data
public class TDeviceStatusLog { public class TDeviceStatusLog {
@TableId(type = IdType.AUTO) @TableId(value = "id", type = IdType.AUTO)
@ApiModelProperty(value = "id") @ApiModelProperty(value = "id")
private Integer id; private Integer id;
@ApiModelProperty(value = "设备代码") @ApiModelProperty(value = "设备代码")
......
...@@ -475,13 +475,18 @@ public class SituationDetectionServiceImpl implements SituationDetectionService ...@@ -475,13 +475,18 @@ public class SituationDetectionServiceImpl implements SituationDetectionService
jurisdictionAreaVO.setId(String.valueOf(crossInfo.getId())); jurisdictionAreaVO.setId(String.valueOf(crossInfo.getId()));
jurisdictionAreaVO.setName(crossInfo.getName()); jurisdictionAreaVO.setName(crossInfo.getName());
jurisdictionAreaVO.setType("2"); jurisdictionAreaVO.setType("2");
String name = null;
String location = null; String location = null;
for (CrossInfoOutVo crossInfoOutVo : crossInfoOutVoList) { for (TBaseCrossInfo tBaseCrossInfo : tBaseCrossInfos) {
if (StringUtils.equals(crossInfoOutVo.getId(), crossInfo.getId())) { if (StringUtils.equals(tBaseCrossInfo.getId(), crossInfo.getId())) {
location = crossInfoOutVo.getLocation(); name = tBaseCrossInfo.getName();
break; location = tBaseCrossInfo.getLocation();
if (location.contains("POINT")) {
location = location.replace("POINT(", "").replace(" ", ",").replace(")", "");
} }
} }
}
jurisdictionAreaVO.setName(name);
jurisdictionAreaVO.setPoint(location); jurisdictionAreaVO.setPoint(location);
jurisdictionAreaVO.setLevel(0); jurisdictionAreaVO.setLevel(0);
jurisdictionAreaVO.setParentCode("0"); jurisdictionAreaVO.setParentCode("0");
...@@ -502,13 +507,9 @@ public class SituationDetectionServiceImpl implements SituationDetectionService ...@@ -502,13 +507,9 @@ public class SituationDetectionServiceImpl implements SituationDetectionService
if (StringUtils.equals(tBaseCrossInfo.getId(), tBaseAreaCross.getCrossId())) { if (StringUtils.equals(tBaseCrossInfo.getId(), tBaseAreaCross.getCrossId())) {
name = tBaseCrossInfo.getName(); name = tBaseCrossInfo.getName();
location = tBaseCrossInfo.getLocation(); location = tBaseCrossInfo.getLocation();
break; if (location.contains("POINT")) {
} location = location.replace("POINT(", "").replace(" ", ",").replace(")", "");
} }
for (CrossInfoOutVo crossInfoOutVo : crossInfoOutVoList) {
if (StringUtils.equals(crossInfoOutVo.getId(), tBaseAreaCross.getCrossId())) {
location = crossInfoOutVo.getLocation();
break;
} }
} }
signalAreaVO.setName(name); signalAreaVO.setName(name);
......
...@@ -5,6 +5,8 @@ import lombok.RequiredArgsConstructor; ...@@ -5,6 +5,8 @@ import lombok.RequiredArgsConstructor;
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.BeanMapUtils; import net.wanji.common.utils.tool.BeanMapUtils;
import net.wanji.databus.dao.mapper.CrossInfoMapper;
import net.wanji.databus.po.CrossInfoPO;
import net.wanji.databus.vo.SignalStatusVO; import net.wanji.databus.vo.SignalStatusVO;
import net.wanji.feign.service.UtcFeignClients; import net.wanji.feign.service.UtcFeignClients;
import net.wanji.web.entity.TCrossControlHist; import net.wanji.web.entity.TCrossControlHist;
...@@ -22,6 +24,7 @@ import java.util.Date; ...@@ -22,6 +24,7 @@ import java.util.Date;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.Objects; import java.util.Objects;
import java.util.stream.Collectors;
/** /**
* @author duanruiming * @author duanruiming
...@@ -35,6 +38,7 @@ public class SignalStatusTask { ...@@ -35,6 +38,7 @@ public class SignalStatusTask {
private final TDeviceStatusMapper tDeviceStatusMapper; private final TDeviceStatusMapper tDeviceStatusMapper;
private final ControlHistMapper controlHistMapper; private final ControlHistMapper controlHistMapper;
private final TDeviceStatusLogMapper tDeviceStatusLogMapper; private final TDeviceStatusLogMapper tDeviceStatusLogMapper;
private final CrossInfoMapper crossInfoMapper;
@Scheduled(fixedRate = 1 * 60 * 1000) @Scheduled(fixedRate = 1 * 60 * 1000)
@Transactional @Transactional
...@@ -47,9 +51,17 @@ public class SignalStatusTask { ...@@ -47,9 +51,17 @@ public class SignalStatusTask {
} }
List<Map<String, Object>> source = (List<Map<String, Object>>) jsonViewObject.getContent(); List<Map<String, Object>> source = (List<Map<String, Object>>) jsonViewObject.getContent();
List<SignalStatusVO> content = BeanMapUtils.mapsToObjects(source, SignalStatusVO.class); List<SignalStatusVO> content = BeanMapUtils.mapsToObjects(source, SignalStatusVO.class);
List<String> crossIdList = content.stream().map(SignalStatusVO::getCrossId).collect(Collectors.toList());
List<CrossInfoPO> crossInfoPOList = crossInfoMapper.selectByCrossIds(crossIdList);
content.forEach(signalStatusVO -> { content.forEach(signalStatusVO -> {
String signalId = signalStatusVO.getSignalId();
String crossId = signalStatusVO.getCrossId(); String crossId = signalStatusVO.getCrossId();
String name = null;
for (CrossInfoPO crossInfoPO : crossInfoPOList) {
if (StringUtils.equals(crossId, crossInfoPO.getId())) {
name = crossInfoPO.getName();
break;
}
}
Integer currentSignalStatus = signalStatusVO.getStatus() == null ? 0 : signalStatusVO.getStatus(); Integer currentSignalStatus = signalStatusVO.getStatus() == null ? 0 : signalStatusVO.getStatus();
Integer currentFaultType = signalStatusVO.getFaultType() == null ? 0 : signalStatusVO.getFaultType(); Integer currentFaultType = signalStatusVO.getFaultType() == null ? 0 : signalStatusVO.getFaultType();
...@@ -58,17 +70,26 @@ public class SignalStatusTask { ...@@ -58,17 +70,26 @@ public class SignalStatusTask {
if (StringUtils.isNotEmpty(crossId)) { if (StringUtils.isNotEmpty(crossId)) {
lambdaQueryWrapper.eq(TDeviceStatusInfo::getCode, crossId); lambdaQueryWrapper.eq(TDeviceStatusInfo::getCode, crossId);
TDeviceStatusInfo tDeviceStatusInfo = tDeviceStatusMapper.selectOne(lambdaQueryWrapper); TDeviceStatusInfo tDeviceStatusInfo = tDeviceStatusMapper.selectOne(lambdaQueryWrapper);
if (Objects.nonNull(tDeviceStatusInfo)) {
if (isExucuteUpdate(currentSignalStatus, currentFaultType, tDeviceStatusInfo)) { if (isExucuteUpdate(currentSignalStatus, currentFaultType, tDeviceStatusInfo)) {
if (!Objects.equals(0, currentFaultType)) { if (currentSignalStatus == 1 && !Objects.equals(0, currentFaultType)) {
tDeviceStatusInfo.setStatus(2); currentSignalStatus = 2;
} else {
tDeviceStatusInfo.setStatus(currentFaultType);
} }
tDeviceStatusInfo.setFaultType(currentFaultType); tDeviceStatusInfo.setFaultType(currentFaultType);
tDeviceStatusInfo.setGmtCreate(new Date()); // 实时数据,创建和修改时间一致 tDeviceStatusInfo.setGmtCreate(new Date()); // 实时数据,创建和修改时间一致
tDeviceStatusMapper.updateById(tDeviceStatusInfo); tDeviceStatusMapper.updateById(tDeviceStatusInfo);
insertDeviceStatusLog(signalStatusVO, crossId, currentSignalStatus, currentFaultType); insertDeviceStatusLog(signalStatusVO, crossId, currentSignalStatus, currentFaultType, name);
}
} else {
TDeviceStatusInfo deviceStatusInfo = new TDeviceStatusInfo();
deviceStatusInfo.setCode(crossId);
deviceStatusInfo.setName(name);
deviceStatusInfo.setType(1);
deviceStatusInfo.setStatus(currentSignalStatus);
deviceStatusInfo.setFaultType(currentFaultType);
deviceStatusInfo.setGmtCreate(new Date());
deviceStatusInfo.setId(null);
tDeviceStatusMapper.insert(deviceStatusInfo);
} }
} }
insertControlHist(signalStatusVO); insertControlHist(signalStatusVO);
...@@ -101,23 +122,22 @@ public class SignalStatusTask { ...@@ -101,23 +122,22 @@ public class SignalStatusTask {
* @param currentSignalStatus * @param currentSignalStatus
* @param currentFaultType * @param currentFaultType
*/ */
private void insertDeviceStatusLog(SignalStatusVO signalStatusVO, String crossId, Integer currentSignalStatus, Integer currentFaultType) { private void insertDeviceStatusLog(SignalStatusVO signalStatusVO, String crossId, Integer currentSignalStatus, Integer currentFaultType, String name) {
// 插入日志表 // 插入日志表
TDeviceStatusLog tDeviceStatusLogInfoDB = tDeviceStatusLogMapper.selectLastOne(crossId); TDeviceStatusLog tDeviceStatusLogInfoDB = tDeviceStatusLogMapper.selectLastOne(crossId);
// DB数据是故障,如果当前正常非故障,状态为 FaultType=100 故障已处理 if (Objects.nonNull(tDeviceStatusLogInfoDB) && tDeviceStatusLogInfoDB.getFaultType() != currentFaultType) {
if (Objects.nonNull(tDeviceStatusLogInfoDB) || tDeviceStatusLogInfoDB.getFaultType() != 0 && currentFaultType == 0) {
tDeviceStatusLogInfoDB.setStatus(currentSignalStatus); tDeviceStatusLogInfoDB.setStatus(currentSignalStatus);
tDeviceStatusLogInfoDB.setFaultType(100); tDeviceStatusLogInfoDB.setFaultType(tDeviceStatusLogInfoDB.getFaultType());
tDeviceStatusLogInfoDB.setGmtCreate(new Date()); tDeviceStatusLogInfoDB.setGmtCreate(new Date());
tDeviceStatusLogInfoDB.setId(null); tDeviceStatusLogInfoDB.setId(null);
tDeviceStatusLogMapper.insert(tDeviceStatusLogInfoDB); tDeviceStatusLogMapper.insert(tDeviceStatusLogInfoDB);
} else { } else {
TDeviceStatusLog tDeviceStatusLog = new TDeviceStatusLog(); TDeviceStatusLog tDeviceStatusLog = new TDeviceStatusLog();
tDeviceStatusLog.setCode(crossId); tDeviceStatusLog.setCode(crossId);
tDeviceStatusLog.setName(signalStatusVO.getSignalId()); tDeviceStatusLog.setName(name);
tDeviceStatusLog.setType(1); tDeviceStatusLog.setType(1);
tDeviceStatusLog.setStatus(signalStatusVO.getStatus()); tDeviceStatusLog.setStatus(signalStatusVO.getStatus());
tDeviceStatusLog.setFaultType(currentFaultType); tDeviceStatusLog.setFaultType(signalStatusVO.getFaultType());
tDeviceStatusLog.setGmtCreate(new Date()); tDeviceStatusLog.setGmtCreate(new Date());
tDeviceStatusLog.setId(null); tDeviceStatusLog.setId(null);
tDeviceStatusLogMapper.insert(tDeviceStatusLog); tDeviceStatusLogMapper.insert(tDeviceStatusLog);
...@@ -125,6 +145,8 @@ public class SignalStatusTask { ...@@ -125,6 +145,8 @@ public class SignalStatusTask {
} }
private static boolean isExucuteUpdate(Integer currentSignalStatus, Integer currentFaultType, TDeviceStatusInfo tDeviceStatusInfo) { private static boolean isExucuteUpdate(Integer currentSignalStatus, Integer currentFaultType, TDeviceStatusInfo tDeviceStatusInfo) {
return Objects.nonNull(tDeviceStatusInfo) && (currentSignalStatus != tDeviceStatusInfo.getStatus() || currentFaultType != tDeviceStatusInfo.getFaultType()); // 故障自定义,当故障时,状态对应海康在线
int status = tDeviceStatusInfo.getStatus() == 2 ? 1 : tDeviceStatusInfo.getStatus();
return Objects.nonNull(tDeviceStatusInfo) && (currentSignalStatus != status || currentFaultType != tDeviceStatusInfo.getFaultType());
} }
} }
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