diff --git a/pqs-device/pq-device/pq-device-api/src/main/java/com/njcn/device/pq/pojo/dto/PushResultDTO.java b/pqs-device/pq-device/pq-device-api/src/main/java/com/njcn/device/pq/pojo/dto/PushResultDTO.java new file mode 100644 index 000000000..b0f39f91c --- /dev/null +++ b/pqs-device/pq-device/pq-device-api/src/main/java/com/njcn/device/pq/pojo/dto/PushResultDTO.java @@ -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; +} diff --git a/pqs-device/pq-device/pq-device-boot/src/main/java/com/njcn/device/pq/controller/DeviceController.java b/pqs-device/pq-device/pq-device-boot/src/main/java/com/njcn/device/pq/controller/DeviceController.java index 9669ee7b4..439234a07 100644 --- a/pqs-device/pq-device/pq-device-boot/src/main/java/com/njcn/device/pq/controller/DeviceController.java +++ b/pqs-device/pq-device/pq-device-boot/src/main/java/com/njcn/device/pq/controller/DeviceController.java @@ -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; /** diff --git a/pqs-device/pq-device/pq-device-boot/src/main/java/com/njcn/device/pq/controller/TerminalBaseController.java b/pqs-device/pq-device/pq-device-boot/src/main/java/com/njcn/device/pq/controller/TerminalBaseController.java index a4c9a9f5f..4a31c9a1c 100644 --- a/pqs-device/pq-device/pq-device-boot/src/main/java/com/njcn/device/pq/controller/TerminalBaseController.java +++ b/pqs-device/pq-device/pq-device-boot/src/main/java/com/njcn/device/pq/controller/TerminalBaseController.java @@ -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 getPushResult(@RequestParam("guid")String guid) { + public HttpResult 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); } diff --git a/pqs-device/pq-device/pq-device-boot/src/main/java/com/njcn/device/pq/service/TerminalBaseService.java b/pqs-device/pq-device/pq-device-boot/src/main/java/com/njcn/device/pq/service/TerminalBaseService.java index 4157b2816..572f83579 100644 --- a/pqs-device/pq-device/pq-device-boot/src/main/java/com/njcn/device/pq/service/TerminalBaseService.java +++ b/pqs-device/pq-device/pq-device-boot/src/main/java/com/njcn/device/pq/service/TerminalBaseService.java @@ -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 ledgerChangePush(); - String getPushResult(String guid); + PushResultDTO getPushResult(String guid); } diff --git a/pqs-device/pq-device/pq-device-boot/src/main/java/com/njcn/device/pq/service/impl/TerminalBaseServiceImpl.java b/pqs-device/pq-device/pq-device-boot/src/main/java/com/njcn/device/pq/service/impl/TerminalBaseServiceImpl.java index 5ad6e6027..cfc32fdd3 100644 --- a/pqs-device/pq-device/pq-device-boot/src/main/java/com/njcn/device/pq/service/impl/TerminalBaseServiceImpl.java +++ b/pqs-device/pq-device/pq-device-boot/src/main/java/com/njcn/device/pq/service/impl/TerminalBaseServiceImpl.java @@ -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 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 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 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 imple private void deleteDeviceAndChildren(String deviceId,List logsList) { this.removeById(deviceId); deviceMapper.deleteById(deviceId); - deviceProcessService.removeById(deviceId); +// deviceProcessService.removeById(deviceId); @@ -3740,6 +3742,7 @@ public class TerminalBaseServiceImpl extends ServiceImpl imple Map deviceMap = devices.stream().collect(Collectors.toMap(Device::getId, Function.identity())); List nodes = nodeService.nodeAllList(); Map nodeMap = nodes.stream().collect(Collectors.toMap(Node::getId, Function.identity())); + Map nodeNameMap = nodes.stream().collect(Collectors.toMap(Node::getName, Function.identity())); List pqsTerminalPushLogDTOList = new ArrayList<>(); if(!CollectionUtils.isEmpty(list)){ @@ -3747,7 +3750,12 @@ public class TerminalBaseServiceImpl extends ServiceImpl 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 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 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 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 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 imple if(collect.containsKey(DeviceRebootType.DELETE_TERMINAL)){ List 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 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 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 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; } //反解析日志