前置联调

This commit is contained in:
hzj
2025-05-15 08:56:28 +08:00
parent 05e71b823d
commit bcb2c08003
5 changed files with 102 additions and 35 deletions

View File

@@ -0,0 +1,16 @@
package com.njcn.device.pq.pojo.dto;
import lombok.Data;
/**
* Description:
* Date: 2025/05/14 下午 1:45【需求编号】
*
* @author clam
* @version V1.0.0
*/
@Data
public class PushResultDTO {
private String code;
private String result;
}

View File

@@ -36,6 +36,8 @@ import java.nio.charset.StandardCharsets;
import java.util.ArrayList;
import java.util.List;
import java.util.Objects;
import java.util.stream.Collectors;
import java.util.stream.Stream;
/**

View File

@@ -16,6 +16,7 @@ import com.njcn.device.pq.pojo.bo.DeviceType;
import com.njcn.device.pq.pojo.bo.excel.TerminalBaseExcel;
import com.njcn.device.pq.pojo.dto.GeneralDeviceDTO;
import com.njcn.device.pq.pojo.dto.PreCommandDTO;
import com.njcn.device.pq.pojo.dto.PushResultDTO;
import com.njcn.device.pq.pojo.param.*;
import com.njcn.device.pq.pojo.po.Line;
import com.njcn.device.pq.pojo.vo.*;
@@ -467,9 +468,9 @@ public class TerminalBaseController extends BaseController {
@ApiOperation("查询前置推送结果")
@PostMapping(value = "getPushResult")
@OperateInfo(info = LogEnum.BUSINESS_COMMON,operateType = OperateType.QUERY)
public HttpResult<String> getPushResult(@RequestParam("guid")String guid) {
public HttpResult<PushResultDTO> getPushResult(@RequestParam("guid")String guid) {
String methodDescribe = getMethodDescribe("getPushResult");
String result = terminalBaseService.getPushResult(guid);
PushResultDTO result = terminalBaseService.getPushResult(guid);
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, result, methodDescribe);
}

View File

@@ -5,6 +5,7 @@ import com.njcn.device.pq.pojo.bo.BaseLineInfo;
import com.njcn.device.pq.pojo.bo.DeviceType;
import com.njcn.device.pq.pojo.bo.excel.TerminalBaseExcel;
import com.njcn.device.pq.pojo.dto.PreCommandDTO;
import com.njcn.device.pq.pojo.dto.PushResultDTO;
import com.njcn.device.pq.pojo.param.AddTerminalParam;
import com.njcn.device.pq.pojo.param.DeviceInfoParam;
import com.njcn.device.pq.pojo.param.SyncTerminalParam;
@@ -293,7 +294,7 @@ public interface TerminalBaseService {
List<PreCommandDTO> ledgerChangePush();
String getPushResult(String guid);
PushResultDTO getPushResult(String guid);
}

View File

@@ -11,10 +11,14 @@ import cn.hutool.core.text.StrBuilder;
import cn.hutool.core.util.IdUtil;
import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.StrUtil;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.google.gson.Gson;
import com.njcn.common.pojo.dto.SimpleDTO;
import com.njcn.common.pojo.enums.common.DataStateEnum;
import com.njcn.common.pojo.enums.response.CommonResponseEnum;
@@ -38,10 +42,7 @@ import com.njcn.device.pq.pojo.bo.excel.NodeExcel;
import com.njcn.device.pq.pojo.bo.excel.OracleTerminalExcel;
import com.njcn.device.pq.pojo.bo.excel.OverLimitExcel;
import com.njcn.device.pq.pojo.bo.excel.TerminalBaseExcel;
import com.njcn.device.pq.pojo.dto.DeviceInfo;
import com.njcn.device.pq.pojo.dto.PollutionSubstationDTO;
import com.njcn.device.pq.pojo.dto.PqsTerminalPushLogDTO;
import com.njcn.device.pq.pojo.dto.PreCommandDTO;
import com.njcn.device.pq.pojo.dto.*;
import com.njcn.device.pq.pojo.param.*;
import com.njcn.device.pq.pojo.param.oracle.*;
import com.njcn.device.pq.pojo.po.*;
@@ -54,6 +55,7 @@ import com.njcn.message.constant.DeviceRebootType;
import com.njcn.message.constant.RedisKeyPrefix;
import com.njcn.message.message.DeviceRebootMessage;
import com.njcn.message.message.ProcessRebootMessage;
import com.njcn.message.messagedto.TopicReplyDTO;
import com.njcn.oss.constant.OssPath;
import com.njcn.oss.utils.FileStorageUtil;
import com.njcn.poi.excel.ExcelUtil;
@@ -1223,10 +1225,10 @@ public class TerminalBaseServiceImpl extends ServiceImpl<LineMapper, Line> imple
//decoderM3d(deviceDetail);
BeanUtils.copyProperties(deviceDetail, deviceVO);
deviceVO.setDevIndex(obj.getId());
DeviceProcess deviceProcess = deviceProcessService.lambdaQuery().eq(DeviceProcess::getId, obj.getId()).one();
if(Objects.nonNull(deviceProcess)){
deviceVO.setProcessNum(deviceProcess.getProcessNo());
}
// DeviceProcess deviceProcess = deviceProcessService.lambdaQuery().eq(DeviceProcess::getId, obj.getId()).one();
// if(Objects.nonNull(deviceProcess)){
// deviceVO.setProcessNum(deviceProcess.getProcessNo());
// }
lineLambdaQueryWrapper.clear();
lineLambdaQueryWrapper.eq(Line::getPid, obj.getId())
@@ -1323,10 +1325,10 @@ public class TerminalBaseServiceImpl extends ServiceImpl<LineMapper, Line> imple
//decoderM3d(deviceDetail);
BeanUtils.copyProperties(deviceDetail, deviceVO);
deviceVO.setDevIndex(device.getId());
DeviceProcess deviceProcess = deviceProcessService.lambdaQuery().eq(DeviceProcess::getId, device.getId()).one();
if(Objects.nonNull(deviceProcess)){
deviceVO.setProcessNum(deviceProcess.getProcessNo());
}
// DeviceProcess deviceProcess = deviceProcessService.lambdaQuery().eq(DeviceProcess::getId, device.getId()).one();
// if(Objects.nonNull(deviceProcess)){
// deviceVO.setProcessNum(deviceProcess.getProcessNo());
// }
deviceVO.setSubVoltageVOList(subvList);
@@ -1379,10 +1381,10 @@ public class TerminalBaseServiceImpl extends ServiceImpl<LineMapper, Line> imple
//decoderM3d(deviceDetail);
BeanUtils.copyProperties(deviceDetail, deviceVO);
deviceVO.setDevIndex(device.getId());
DeviceProcess deviceProcess = deviceProcessService.lambdaQuery().eq(DeviceProcess::getId, device.getId()).one();
if(Objects.nonNull(deviceProcess)){
deviceVO.setProcessNum(deviceProcess.getProcessNo());
}
// DeviceProcess deviceProcess = deviceProcessService.lambdaQuery().eq(DeviceProcess::getId, device.getId()).one();
// if(Objects.nonNull(deviceProcess)){
// deviceVO.setProcessNum(deviceProcess.getProcessNo());
// }
deviceVO.setSubVoltageVOList(subVoltageVOS);
@@ -1506,7 +1508,7 @@ public class TerminalBaseServiceImpl extends ServiceImpl<LineMapper, Line> imple
private void deleteDeviceAndChildren(String deviceId,List<PqsTerminalLogs> logsList) {
this.removeById(deviceId);
deviceMapper.deleteById(deviceId);
deviceProcessService.removeById(deviceId);
// deviceProcessService.removeById(deviceId);
@@ -3740,6 +3742,7 @@ public class TerminalBaseServiceImpl extends ServiceImpl<LineMapper, Line> imple
Map<String, Device> deviceMap = devices.stream().collect(Collectors.toMap(Device::getId, Function.identity()));
List<Node> nodes = nodeService.nodeAllList();
Map<String, Node> nodeMap = nodes.stream().collect(Collectors.toMap(Node::getId, Function.identity()));
Map<String, Node> nodeNameMap = nodes.stream().collect(Collectors.toMap(Node::getName, Function.identity()));
List<PqsTerminalPushLogDTO> pqsTerminalPushLogDTOList = new ArrayList<>();
if(!CollectionUtils.isEmpty(list)){
@@ -3747,7 +3750,12 @@ public class TerminalBaseServiceImpl extends ServiceImpl<LineMapper, Line> imple
PqsTerminalPushLogDTO pqsTerminalPushLogDTO = new PqsTerminalPushLogDTO();
if(Objects.equals(temp.getTerminalType(),6)){
pqsTerminalPushLogDTO.setId(temp.getId());
//如果不存在该设备id,说明设备也被删除,直接走下边的设备删除此处不做处理
if(!lineDeviceMap.containsKey(temp.getObjIndex())){
return;
}
String deviceId = lineDeviceMap.get(temp.getObjIndex());
pqsTerminalPushLogDTO.setDevId(deviceId);
pqsTerminalPushLogDTO.setDevName(lineMap.get(deviceId).getName());
String nodeId = deviceMap.get(deviceId).getNodeId();
@@ -3796,24 +3804,41 @@ public class TerminalBaseServiceImpl extends ServiceImpl<LineMapper, Line> imple
pqsTerminalPushLogDTO.setId(temp.getId());
String deviceId = temp.getObjIndex();
pqsTerminalPushLogDTO.setDevId(deviceId);
//设备删除找不到设备名称
pqsTerminalPushLogDTO.setDevName("设备id"+deviceId);
String nodeId = deviceMap.get(deviceId).getNodeId();
pqsTerminalPushLogDTO.setNodeId(nodeId);
pqsTerminalPushLogDTO.setNodeName(nodeMap.get(nodeId).getName());
//区分删除操作,新增和其他操作
String operate= DeviceRebootType.LEDGER_MODIFY;
if(Objects.equals(temp.getOperateType(), Param.DEL)){
operate = DeviceRebootType.DELETE_TERMINAL;
} else if (Objects.equals(temp.getOperateType(), Param.ADD)) {
operate = DeviceRebootType.ADD_TERMINAL;
}
//设备删除找不到设备名称,重日志截取
if(Objects.equals(temp.getOperateType(), Param.DEL)){
String temLos = "%s,详细信息:%s;前置信息:%s";
List<String> strings = this.parseTemplateValues(temLos, temp.getTerminalDescribe());
String devName = strings.get(1); // 设备名称
String nodeName = strings.get(2); // 进程名称
pqsTerminalPushLogDTO.setDevName(devName);
String nodeId = nodeNameMap.get(nodeName).getId();
pqsTerminalPushLogDTO.setNodeId(nodeId);
pqsTerminalPushLogDTO.setNodeName(nodeName);
}else {
pqsTerminalPushLogDTO.setDevName(lineMap.get(deviceId).getName());
String nodeId = deviceMap.get(deviceId).getNodeId();
pqsTerminalPushLogDTO.setNodeId(nodeId);
pqsTerminalPushLogDTO.setNodeName(nodeMap.get(nodeId).getName());
}
pqsTerminalPushLogDTO.setProcessUpdateFlag(false);
if(deviceProcesseMap.containsKey(deviceId)){
pqsTerminalPushLogDTO.setProcessNum(deviceProcesseMap.get(deviceId));
}else {
throw new BusinessException("存在终端未设置进程号,请在前置管理页面设置进程号在进行此操作");
}
//区分删除操作,新增和其他操作
String operate= DeviceRebootType.LEDGER_MODIFY;
if(Objects.equals(temp.getOperateType(), Param.DEL)){
operate = DeviceRebootType.DELETE_TERMINAL;
} else if (Objects.equals(temp.getOperateType(), Param.ADD)) {
operate = DeviceRebootType.ADD_TERMINAL;
}
pqsTerminalPushLogDTO.setOperateType(operate);
pqsTerminalPushLogDTOList.add(pqsTerminalPushLogDTO);
}
@@ -3835,6 +3860,7 @@ public class TerminalBaseServiceImpl extends ServiceImpl<LineMapper, Line> imple
String command = "重启前置机:"+pqsTerminalPushLogDTO.getNodeName()+"下进程:"+processId;
preCommandDTO.setGuid(guid);
preCommandDTO.setCommand(command);
preCommandDTO.setResult("2");
//调用重启进程接口
this.askRestartProcess(guid,pqsTerminalPushLogDTO.getNodeId(),processId,"delete","all");
preCommandDTOList.add(preCommandDTO);
@@ -3847,6 +3873,8 @@ public class TerminalBaseServiceImpl extends ServiceImpl<LineMapper, Line> imple
String command = "重启前置机:"+pqsTerminalPushLogDTO.getNodeName()+"下进程:"+processId;
preCommandDTO.setGuid(guid);
preCommandDTO.setCommand(command);
preCommandDTO.setResult("2");
//调用重启进程接口
this.askRestartProcess(guid,pqsTerminalPushLogDTO.getNodeId(),processId,"delete","all");
preCommandDTOList.add(preCommandDTO);
@@ -3858,13 +3886,15 @@ public class TerminalBaseServiceImpl extends ServiceImpl<LineMapper, Line> imple
if(collect.containsKey(DeviceRebootType.DELETE_TERMINAL)){
List<PqsTerminalPushLogDTO> pqsTerminalPushLogDTOList1 = collect.get(DeviceRebootType.DELETE_TERMINAL);
deleteDevIds = pqsTerminalPushLogDTOList1.stream().map(PqsTerminalPushLogDTO::getDevId).distinct().collect(Collectors.toList());
String devNameString = deleteDevIds.stream().map(temp->{return lineMap.get(temp).getName();}).collect(Collectors.joining(","));
String devNameString = pqsTerminalPushLogDTOList1.stream().map(PqsTerminalPushLogDTO::getDevName).distinct().collect(Collectors.joining(","));
PreCommandDTO preCommandDTO = new PreCommandDTO();
String guid = IdUtil.simpleUUID();
String command = "删除前置机:"+pqsTerminalPushLogDTO.getNodeName()+"下进程:"+processId+"下终端"+devNameString;
preCommandDTO.setGuid(guid);
preCommandDTO.setCommand(command);
preCommandDTO.setResult("2");
//调用重启进程接口
this.askRestartDevice(guid,pqsTerminalPushLogDTO.getNodeId(),deleteDevIds,DeviceRebootType.DELETE_TERMINAL,processId);
preCommandDTOList.add(preCommandDTO);
@@ -3879,6 +3909,7 @@ public class TerminalBaseServiceImpl extends ServiceImpl<LineMapper, Line> imple
String command = "修改前置机:"+pqsTerminalPushLogDTO.getNodeName()+"下进程:"+processId+"下终端"+devNameString;
preCommandDTO.setGuid(guid);
preCommandDTO.setCommand(command);
preCommandDTO.setResult("2");
//调用重启进程接口
this.askRestartDevice(guid,pqsTerminalPushLogDTO.getNodeId(),deleteDevIds,DeviceRebootType.LEDGER_MODIFY,processId);
preCommandDTOList.add(preCommandDTO);
@@ -3892,8 +3923,11 @@ public class TerminalBaseServiceImpl extends ServiceImpl<LineMapper, Line> imple
String command = "新增前置机:"+pqsTerminalPushLogDTO.getNodeName()+"下进程:"+processId+"下终端"+devNameString;
preCommandDTO.setGuid(guid);
preCommandDTO.setCommand(command);
preCommandDTO.setResult("2");
//调用重启进程接口
this.askRestartDevice(guid,pqsTerminalPushLogDTO.getNodeId(),deleteDevIds,DeviceRebootType.ADD_TERMINAL,processId);
preCommandDTOList.add(preCommandDTO);
}
@@ -3915,9 +3949,22 @@ public class TerminalBaseServiceImpl extends ServiceImpl<LineMapper, Line> imple
}
@Override
public String getPushResult(String guid) {
public PushResultDTO getPushResult(String guid) {
PushResultDTO pushResultDTO = new PushResultDTO();
String stringByKey = redisUtil.getStringByKey(RedisKeyPrefix.TOPIC_REPLY.concat(guid));
return stringByKey;
if(Objects.isNull(stringByKey)){
pushResultDTO.setCode("2");
pushResultDTO.setResult("");
}else {
TopicReplyDTO topicReplyDTO =JSONObject.parseObject(stringByKey,TopicReplyDTO.class);
pushResultDTO.setCode("1");
pushResultDTO.setResult(topicReplyDTO.getResult());
}
return pushResultDTO;
}
//反解析日志