添加设备进程号字段

This commit is contained in:
hzj
2025-04-27 09:16:26 +08:00
parent cb94792a57
commit 257619a6a3
4 changed files with 58 additions and 35 deletions

View File

@@ -56,6 +56,10 @@ public class DeviceParam {
@NotNull(message = "前置机索引不能为空") @NotNull(message = "前置机索引不能为空")
private String nodeId; private String nodeId;
@ApiModelProperty(name = "nodeId",value = "所属前置机机进程",required = true)
@NotNull(message = "所属前置机机进程不能为空")
private Integer processNum;
@ApiModelProperty(name = "series",value = "装置识别码采用3ds加密") @ApiModelProperty(name = "series",value = "装置识别码采用3ds加密")
private String series; private String series;

View File

@@ -59,6 +59,13 @@ public class NodeParam {
@NotNull(message = "前置机支持最大装置数不可为空") @NotNull(message = "前置机支持最大装置数不可为空")
private Integer nodeDevNum; private Integer nodeDevNum;
/**
* 前置机支持最大进程数量
*/
@ApiModelProperty(name = "nodeDevNum",value = "前置机支持最大进程数量")
@NotNull(message = "前置机支持最大进程数量")
private Integer maxProcessNum;
/** /**
* 排序 * 排序
*/ */

View File

@@ -4,6 +4,7 @@ import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModelProperty; import io.swagger.annotations.ApiModelProperty;
import lombok.Data; import lombok.Data;
import javax.validation.constraints.NotNull;
import java.io.Serializable; import java.io.Serializable;
import java.time.LocalDate; import java.time.LocalDate;
import java.time.LocalDateTime; import java.time.LocalDateTime;
@@ -131,6 +132,8 @@ public class DeviceVO implements Serializable {
@ApiModelProperty(name = "sort",value = "排序",required = true) @ApiModelProperty(name = "sort",value = "排序",required = true)
private Integer sort; private Integer sort;
@ApiModelProperty(value = "所属前置机机进程")
private Integer processNum;
@ApiModelProperty(name = "subVoltageVOList",value = "母线集合") @ApiModelProperty(name = "subVoltageVOList",value = "母线集合")

View File

@@ -290,37 +290,37 @@ public class TerminalBaseServiceImpl extends ServiceImpl<LineMapper, Line> imple
coderM3d(deviceDetail, false); coderM3d(deviceDetail, false);
deviceMapper.insert(deviceDetail); deviceMapper.insert(deviceDetail);
//添加装置进程号 //添加装置进程号
Node nodeById = nodeService.getNodeById(deviceDetail.getNodeId()); // Node nodeById = nodeService.getNodeById(deviceDetail.getNodeId());
List<Device> devices = deviceMapper.selectList(new QueryWrapper<Device>().lambda().eq(Device::getNodeId, deviceDetail.getNodeId())); // List<Device> devices = deviceMapper.selectList(new QueryWrapper<Device>().lambda().eq(Device::getNodeId, deviceDetail.getNodeId()));
Integer maxNodeDevNum = nodeById.getNodeDevNum(); // Integer maxNodeDevNum = nodeById.getNodeDevNum();
Integer maxProcessNum = nodeById.getMaxProcessNum(); // Integer maxProcessNum = nodeById.getMaxProcessNum();
if (devices.size() >= maxNodeDevNum) { // if (devices.size() >= maxNodeDevNum) {
throw new BusinessException(PvDeviceResponseEnum.OVER_LIMIT); // throw new BusinessException(PvDeviceResponseEnum.OVER_LIMIT);
} // }
List<String> deviceIdList = devices.stream().map(Device::getId).collect(Collectors.toList()); // List<String> deviceIdList = devices.stream().map(Device::getId).collect(Collectors.toList());
List<DeviceProcess> deviceProcessList = deviceProcessService.lambdaQuery().in(DeviceProcess::getId, deviceIdList).list(); // List<DeviceProcess> deviceProcessList = deviceProcessService.lambdaQuery().in(DeviceProcess::getId, deviceIdList).list();
Map<Integer, Integer> processCountMap = null; // Map<Integer, Integer> processCountMap = null;
if (Objects.nonNull(maxProcessNum)) { // if (Objects.nonNull(maxProcessNum)) {
processCountMap = new HashMap<>(); // processCountMap = new HashMap<>();
for (int i = 0; i < maxProcessNum; i++) { // for (int i = 0; i < maxProcessNum; i++) {
Integer processNum = i + 1; // Integer processNum = i + 1;
long count = deviceProcessList.stream().filter(temp -> Objects.equals(temp.getProcessNo(), processNum)).count(); // long count = deviceProcessList.stream().filter(temp -> Objects.equals(temp.getProcessNo(), processNum)).count();
Integer processCount = Math.toIntExact(count); // Integer processCount = Math.toIntExact(count);
processCountMap.put(processNum, processCount); // processCountMap.put(processNum, processCount);
} // }
//
}else{ // }else{
processCountMap = new HashMap<>(); // processCountMap = new HashMap<>();
} // }
//
//获取数量最少的线程号 // //获取数量最少的线程号
Optional<Integer> minKey = processCountMap.entrySet() // Optional<Integer> minKey = processCountMap.entrySet()
.stream() // .stream()
.min(Comparator.comparingInt(e -> e.getValue())) // .min(Comparator.comparingInt(e -> e.getValue()))
.map(Map.Entry::getKey); // .map(Map.Entry::getKey);
DeviceProcess deviceProcess = new DeviceProcess(); DeviceProcess deviceProcess = new DeviceProcess();
deviceProcess.setId(device.getId()); deviceProcess.setId(device.getId());
deviceProcess.setProcessNo(minKey.orElse(1)); deviceProcess.setProcessNo(deviceParam.getProcessNum());
deviceProcessService.saveOrUpdate(deviceProcess); deviceProcessService.saveOrUpdate(deviceProcess);
//装置功能 //装置功能
List<DictData> funList = dicDataFeignClient.getDicDataByTypeName(DicDataTypeEnum.DEV_FUN.getName()).getData(); List<DictData> funList = dicDataFeignClient.getDicDataByTypeName(DicDataTypeEnum.DEV_FUN.getName()).getData();
@@ -469,8 +469,7 @@ public class TerminalBaseServiceImpl extends ServiceImpl<LineMapper, Line> imple
LineDetail lineDetail = new LineDetail(); LineDetail lineDetail = new LineDetail();
BeanUtils.copyProperties(lineParam, lineDetail); BeanUtils.copyProperties(lineParam, lineDetail);
lineDetail.setId(line.getId()); lineDetail.setId(line.getId());
//判断国网监测点id
//判断国网监测点id
if (StrUtil.isNotBlank(lineDetail.getMonitorId())) { if (StrUtil.isNotBlank(lineDetail.getMonitorId())) {
lineDetail.setMonitorFlag(1); lineDetail.setMonitorFlag(1);
} else { } else {
@@ -1224,6 +1223,10 @@ public class TerminalBaseServiceImpl extends ServiceImpl<LineMapper, Line> imple
//decoderM3d(deviceDetail); //decoderM3d(deviceDetail);
BeanUtils.copyProperties(deviceDetail, deviceVO); BeanUtils.copyProperties(deviceDetail, deviceVO);
deviceVO.setDevIndex(obj.getId()); deviceVO.setDevIndex(obj.getId());
DeviceProcess deviceProcess = deviceProcessService.lambdaQuery().eq(DeviceProcess::getId, obj.getId()).one();
if(Objects.nonNull(deviceProcess)){
deviceVO.setProcessNum(deviceProcess.getProcessNo());
}
lineLambdaQueryWrapper.clear(); lineLambdaQueryWrapper.clear();
lineLambdaQueryWrapper.eq(Line::getPid, obj.getId()) lineLambdaQueryWrapper.eq(Line::getPid, obj.getId())
@@ -1320,6 +1323,11 @@ public class TerminalBaseServiceImpl extends ServiceImpl<LineMapper, Line> imple
//decoderM3d(deviceDetail); //decoderM3d(deviceDetail);
BeanUtils.copyProperties(deviceDetail, deviceVO); BeanUtils.copyProperties(deviceDetail, deviceVO);
deviceVO.setDevIndex(device.getId()); deviceVO.setDevIndex(device.getId());
DeviceProcess deviceProcess = deviceProcessService.lambdaQuery().eq(DeviceProcess::getId, device.getId()).one();
if(Objects.nonNull(deviceProcess)){
deviceVO.setProcessNum(deviceProcess.getProcessNo());
}
deviceVO.setSubVoltageVOList(subvList); deviceVO.setSubVoltageVOList(subvList);
deviceVOList.add(deviceVO); deviceVOList.add(deviceVO);
@@ -1371,6 +1379,11 @@ public class TerminalBaseServiceImpl extends ServiceImpl<LineMapper, Line> imple
//decoderM3d(deviceDetail); //decoderM3d(deviceDetail);
BeanUtils.copyProperties(deviceDetail, deviceVO); BeanUtils.copyProperties(deviceDetail, deviceVO);
deviceVO.setDevIndex(device.getId()); deviceVO.setDevIndex(device.getId());
DeviceProcess deviceProcess = deviceProcessService.lambdaQuery().eq(DeviceProcess::getId, device.getId()).one();
if(Objects.nonNull(deviceProcess)){
deviceVO.setProcessNum(deviceProcess.getProcessNo());
}
deviceVO.setSubVoltageVOList(subVoltageVOS); deviceVO.setSubVoltageVOList(subVoltageVOS);
deviceVOList.add(deviceVO); deviceVOList.add(deviceVO);
@@ -1508,10 +1521,6 @@ public class TerminalBaseServiceImpl extends ServiceImpl<LineMapper, Line> imple
deleteMonitoringPoints(pointIds,logsList); deleteMonitoringPoints(pointIds,logsList);
// 2. 通知设备重启 // 2. 通知设备重启
/* String[] pids = getById(busbarId).getPids().split(",");
if (pids.length > 4) {
askRestartDevice(pids[4], DeviceRebootType.LEDGER_MODIFY);
}*/
} }
private void deleteMonitoringPoints(List<String> pointIds,List<Line> logsList) { private void deleteMonitoringPoints(List<String> pointIds,List<Line> logsList) {