前置机切操作日志推送

This commit is contained in:
hzj
2025-07-23 10:36:46 +08:00
parent 92ecb29b68
commit c2bc212e97

View File

@@ -3680,125 +3680,165 @@ public class TerminalBaseServiceImpl extends ServiceImpl<LineMapper, Line> imple
List<PqsTerminalPushLogDTO> pqsTerminalPushLogDTOList = new ArrayList<>();
List<String> addAndDelteId = new ArrayList<>();
if(!CollectionUtils.isEmpty(list)){
list.forEach(temp->{
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();
pqsTerminalPushLogDTO.setNodeId(nodeId);
//如果前置删了直接返回
if(!nodeMap.containsKey(nodeId)){
return;
}
pqsTerminalPushLogDTO.setNodeName(nodeMap.get(nodeId).getName());
pqsTerminalPushLogDTO.setProcessUpdateFlag(false);
if(deviceProcesseMap.containsKey(deviceId)){
pqsTerminalPushLogDTO.setProcessNum(deviceProcesseMap.get(deviceId));
}else {
throw new BusinessException("存在终端未设置进程号,请在前置管理页面设置进程号在进行此操作");
}
pqsTerminalPushLogDTO.setOperateType(DeviceRebootType.LEDGER_MODIFY);
pqsTerminalPushLogDTOList.add(pqsTerminalPushLogDTO);
}else if(Objects.equals(temp.getTerminalType(),4)){
//如果是修改进程操作记录2个进程日志;
if(temp.getLogsType().equals(dataDic.getId())){
String temLos = "%s进行更新终端进程操作;终端名称 %s,由进程%s修改成进程%s";
List<String> strings = this.parseTemplateValues(temLos, temp.getTerminalDescribe());
String num1 = strings.get(2); // 第一个进程
String num2 = strings.get(3); // 第二个进程
int processId1 = Integer.parseInt(num1);
int processId2 = Integer.parseInt(num2);
//前置层修改
List<PqsTerminalLogs> list1 = list.stream().filter(temp -> temp.getTerminalDescribe().contains("终端所属前置机由")).collect(Collectors.toList());
if(!CollectionUtils.isEmpty(list1)){
for (PqsTerminalLogs temp : list1) {
String temLos = "%s终端所属前置机由 %s 改为> %s;";
List<String> strings = this.parseTemplateValues(temLos, temp.getTerminalDescribe());
String node1 = strings.get(1); // 第一个前置
String node2 = strings.get(2); // 第二个前置
if(deviceProcesseMap.containsKey(temp.getObjIndex())){
Integer processNum = deviceProcesseMap.get(temp.getObjIndex());
PqsTerminalPushLogDTO pqsTerminalPushLogDTO = new PqsTerminalPushLogDTO();
pqsTerminalPushLogDTO.setId(temp.getId());
String deviceId = temp.getObjIndex();
pqsTerminalPushLogDTO.setDevId(deviceId);
pqsTerminalPushLogDTO.setDevName(lineMap.containsKey(deviceId)?lineMap.get(deviceId).getName():"删除设备");
pqsTerminalPushLogDTO.setNodeId(node1);
pqsTerminalPushLogDTO.setNodeName(nodeMap.get(node1).getName());
pqsTerminalPushLogDTO.setProcessUpdateFlag(true);
pqsTerminalPushLogDTO.setProcessNum(processNum);
pqsTerminalPushLogDTOList.add(pqsTerminalPushLogDTO);
PqsTerminalPushLogDTO pqsTerminalPushLogDTO2 = new PqsTerminalPushLogDTO();
pqsTerminalPushLogDTO2.setId(temp.getId());
pqsTerminalPushLogDTO2.setDevId(deviceId);
pqsTerminalPushLogDTO2.setDevName(lineMap.containsKey(deviceId)?lineMap.get(deviceId).getName():"删除设备");
pqsTerminalPushLogDTO2.setNodeId(node2);
pqsTerminalPushLogDTO2.setNodeName(nodeMap.get(node2).getName());
pqsTerminalPushLogDTO2.setProcessUpdateFlag(true);
pqsTerminalPushLogDTO2.setProcessNum(processNum);
pqsTerminalPushLogDTOList.add(pqsTerminalPushLogDTO2);
}
}
}
list.removeAll(list1);
if(!CollectionUtils.isEmpty(list)){
//终端层面和检测点层面修改
list.forEach(temp->{
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();
pqsTerminalPushLogDTO.setNodeId(nodeId);
//如果前置删了直接返回
if(!nodeMap.containsKey(nodeId)){
return;
}
pqsTerminalPushLogDTO.setNodeName(nodeMap.get(nodeId).getName());
pqsTerminalPushLogDTO.setProcessUpdateFlag(true);
pqsTerminalPushLogDTO.setProcessNum(processId1);
pqsTerminalPushLogDTOList.add(pqsTerminalPushLogDTO);
PqsTerminalPushLogDTO pqsTerminalPushLogDTO1 = new PqsTerminalPushLogDTO();
pqsTerminalPushLogDTO1.setId(temp.getId());
pqsTerminalPushLogDTO1.setDevId(deviceId);
pqsTerminalPushLogDTO1.setDevName(lineMap.get(deviceId).getName());
pqsTerminalPushLogDTO1.setNodeId(nodeId);
pqsTerminalPushLogDTO1.setNodeName(nodeMap.get(nodeId).getName());
pqsTerminalPushLogDTO1.setProcessUpdateFlag(true);
pqsTerminalPushLogDTO1.setProcessNum(processId2);
pqsTerminalPushLogDTOList.add(pqsTerminalPushLogDTO);
}else {
pqsTerminalPushLogDTO.setId(temp.getId());
String deviceId = temp.getObjIndex();
pqsTerminalPushLogDTO.setDevId(deviceId);
//区分删除操作,新增和其他操作
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 {
//如果存在说明设备未被删除不存在说明有一条删除日志直接return
if(lineMap.containsKey(deviceId)){
pqsTerminalPushLogDTO.setDevName(lineMap.get(deviceId).getName());
}else{
pqsTerminalPushLogDTO.setDevName("删除设备");
}
//如果新增的没有,说明该新增设备在本次也删除了,
if(deviceMap.containsKey(deviceId)){
String nodeId = deviceMap.get(deviceId).getNodeId();
pqsTerminalPushLogDTO.setNodeId(nodeId);
pqsTerminalPushLogDTO.setNodeName(nodeMap.get(nodeId).getName());
}else{
addAndDelteId.add(deviceId);
return;
}
}
pqsTerminalPushLogDTO.setProcessUpdateFlag(false);
if(deviceProcesseMap.containsKey(deviceId)){
pqsTerminalPushLogDTO.setProcessNum(deviceProcesseMap.get(deviceId));
}else {
throw new BusinessException("存在终端未设置进程号,请在前置管理页面设置进程号在进行此操作");
}
pqsTerminalPushLogDTO.setOperateType(operate);
pqsTerminalPushLogDTO.setOperateType(DeviceRebootType.LEDGER_MODIFY);
pqsTerminalPushLogDTOList.add(pqsTerminalPushLogDTO);
}else if(Objects.equals(temp.getTerminalType(),4)){
//如果是修改进程操作记录2个进程日志;
if(temp.getLogsType().equals(dataDic.getId())){
String temLos = "%s进行更新终端进程操作;终端名称 %s,由进程%s修改成进程%s";
List<String> strings = this.parseTemplateValues(temLos, temp.getTerminalDescribe());
String num1 = strings.get(2); // 第一个进程
String num2 = strings.get(3); // 第二个进程
int processId1 = Integer.parseInt(num1);
int processId2 = Integer.parseInt(num2);
pqsTerminalPushLogDTO.setId(temp.getId());
String deviceId = temp.getObjIndex();
pqsTerminalPushLogDTO.setDevId(deviceId);
pqsTerminalPushLogDTO.setDevName(lineMap.containsKey(deviceId)?lineMap.get(deviceId).getName():"删除设备");
String nodeId = deviceMap.get(deviceId).getNodeId();
pqsTerminalPushLogDTO.setNodeId(nodeId);
pqsTerminalPushLogDTO.setNodeName(nodeMap.get(nodeId).getName());
pqsTerminalPushLogDTO.setProcessUpdateFlag(true);
pqsTerminalPushLogDTO.setProcessNum(processId1);
pqsTerminalPushLogDTOList.add(pqsTerminalPushLogDTO);
PqsTerminalPushLogDTO pqsTerminalPushLogDTO1 = new PqsTerminalPushLogDTO();
pqsTerminalPushLogDTO1.setId(temp.getId());
pqsTerminalPushLogDTO1.setDevId(deviceId);
pqsTerminalPushLogDTO1.setDevName(lineMap.get(deviceId).getName());
pqsTerminalPushLogDTO1.setNodeId(nodeId);
pqsTerminalPushLogDTO1.setNodeName(nodeMap.get(nodeId).getName());
pqsTerminalPushLogDTO1.setProcessUpdateFlag(true);
pqsTerminalPushLogDTO1.setProcessNum(processId2);
pqsTerminalPushLogDTOList.add(pqsTerminalPushLogDTO);
}else {
pqsTerminalPushLogDTO.setId(temp.getId());
String deviceId = temp.getObjIndex();
pqsTerminalPushLogDTO.setDevId(deviceId);
//区分删除操作,新增和其他操作
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 {
//如果存在说明设备未被删除不存在说明有一条删除日志直接return
if(lineMap.containsKey(deviceId)){
pqsTerminalPushLogDTO.setDevName(lineMap.get(deviceId).getName());
}else{
pqsTerminalPushLogDTO.setDevName("删除设备");
}
//如果新增的没有,说明该新增设备在本次也删除了,
if(deviceMap.containsKey(deviceId)){
String nodeId = deviceMap.get(deviceId).getNodeId();
pqsTerminalPushLogDTO.setNodeId(nodeId);
pqsTerminalPushLogDTO.setNodeName(nodeMap.get(nodeId).getName());
}else{
addAndDelteId.add(deviceId);
return;
}
}
pqsTerminalPushLogDTO.setProcessUpdateFlag(false);
if(deviceProcesseMap.containsKey(deviceId)){
pqsTerminalPushLogDTO.setProcessNum(deviceProcesseMap.get(deviceId));
}else {
throw new BusinessException("存在终端未设置进程号,请在前置管理页面设置进程号在进行此操作");
}
pqsTerminalPushLogDTO.setOperateType(operate);
pqsTerminalPushLogDTOList.add(pqsTerminalPushLogDTO);
}
}
});
}
}
});
Map<String, Map<Integer, List<PqsTerminalPushLogDTO>>> collect2 = pqsTerminalPushLogDTOList.stream().filter(temp->!addAndDelteId.contains(temp.getDevId())).collect(Collectors.groupingBy(PqsTerminalPushLogDTO::getNodeId, Collectors.groupingBy(PqsTerminalPushLogDTO::getProcessNum)));
collect2.forEach((nodeId,pqsTerminalPushLogDTOMap)->{
@@ -3921,11 +3961,21 @@ public class TerminalBaseServiceImpl extends ServiceImpl<LineMapper, Line> imple
});
});
list.forEach(temp->{
temp.setIsPush(1);
if(!CollectionUtils.isEmpty(list1)){
list1.forEach(temp->{
temp.setIsPush(1);
pqsTerminalLogsMapper.updateById(temp);
});
}
if(!CollectionUtils.isEmpty(list)){
list.forEach(temp->{
temp.setIsPush(1);
pqsTerminalLogsMapper.updateById(temp);
});
}
pqsTerminalLogsMapper.updateById(temp);
});
}else {
throw new BusinessException("暂无变动的装置测点推送");