bug调整

This commit is contained in:
2025-06-17 14:34:01 +08:00
parent 1415f5e64c
commit 3f24e6e311
3 changed files with 105 additions and 133 deletions

View File

@@ -1497,33 +1497,34 @@
<select id="getCustomDetailByLineId" resultType="map">
SELECT
line.id AS lineId,
concat(sub.name,'_',vo.name,'_',line.name) as lineName,
CONCAT(NVL(TO_CHAR(detail.pt1, 'FM9999999999'), 'N/A'), ':', NVL(TO_CHAR(detail.pt2, 'FM9999999999'), 'N/A')) AS pt,
CONCAT(NVL(TO_CHAR(detail.ct1, 'FM9999999999'), 'N/A'), ':', NVL(TO_CHAR(detail.ct2, 'FM9999999999'), 'N/A')) AS ct,
detail.Dev_Capacity as Dev_Capacity,
detail.Short_Capacity as Short_Capacity,
detail.Standard_Capacity as Standard_Capacity,
detail.Deal_Capacity as Deal_Capacity,
CONCAT(sub.NAME, '_', vo.NAME, '_', line.NAME) AS lineName,
CONCAT(
IFNULL(CAST(detail.pt1 AS CHAR), 'N/A'),
':',
IFNULL(CAST(detail.pt2 AS CHAR), 'N/A')
) AS pt,
CONCAT(
IFNULL(CAST(detail.ct1 AS CHAR), 'N/A'),
':',
IFNULL(CAST(detail.ct2 AS CHAR), 'N/A')
) AS ct,
detail.Dev_Capacity AS Dev_Capacity,
detail.Short_Capacity AS Short_Capacity,
detail.Standard_Capacity AS Standard_Capacity,
detail.Deal_Capacity AS Deal_Capacity,
pqd.This_Time_Check AS This_Time_Check,
dic.name AS voltageLevel
dic.NAME AS voltageLevel
FROM
pq_line line,
pq_line_detail detail,
pq_line vo,
pq_voltage vg,
pq_line dev,
pq_device pqd,
sys_dict_data dic,
pq_line sub
pq_line line
JOIN pq_line_detail detail ON line.id = detail.id
JOIN pq_line vo ON vo.id = line.pid
JOIN pq_line dev ON dev.id = vo.pid
JOIN pq_voltage vg ON vo.id = vg.id
JOIN pq_device pqd ON pqd.id = dev.id
JOIN sys_dict_data dic ON vg.scale = dic.id
JOIN pq_line sub ON sub.id = dev.pid
WHERE
line.id = detail.id
AND vo.id = line.pid
AND dev.id = vo.pid
AND vo.id = vg.id
AND pqd.id = dev.id
and vg.scale = dic.id
and sub.id = dev.pid
AND line.id = #{lineId}
line.id = #{lineId}
</select>
<select id="selectByIds" resultType="com.njcn.device.pq.pojo.vo.LineDetailVO$Detail">
SELECT DISTINCT

View File

@@ -188,7 +188,6 @@ public class TerminalBaseServiceImpl extends ServiceImpl<LineMapper, Line> imple
}
}
//项目
if (Objects.nonNull(addTerminalParam.getProjectParam())) {
if (StrUtil.isBlank(projectIndex)) {
@@ -296,35 +295,6 @@ public class TerminalBaseServiceImpl extends ServiceImpl<LineMapper, Line> imple
//处理装置识别码秘钥
coderM3d(deviceDetail, false);
deviceMapper.insert(deviceDetail);
//添加装置进程号
// Node nodeById = nodeService.getNodeById(deviceDetail.getNodeId());
// List<Device> devices = deviceMapper.selectList(new QueryWrapper<Device>().lambda().eq(Device::getNodeId, deviceDetail.getNodeId()));
// Integer maxNodeDevNum = nodeById.getNodeDevNum();
// Integer maxProcessNum = nodeById.getMaxProcessNum();
// if (devices.size() >= maxNodeDevNum) {
// throw new BusinessException(PvDeviceResponseEnum.OVER_LIMIT);
// }
// List<String> deviceIdList = devices.stream().map(Device::getId).collect(Collectors.toList());
// List<DeviceProcess> deviceProcessList = deviceProcessService.lambdaQuery().in(DeviceProcess::getId, deviceIdList).list();
// Map<Integer, Integer> processCountMap = null;
// if (Objects.nonNull(maxProcessNum)) {
// processCountMap = new HashMap<>();
// for (int i = 0; i < maxProcessNum; i++) {
// Integer processNum = i + 1;
// long count = deviceProcessList.stream().filter(temp -> Objects.equals(temp.getProcessNo(), processNum)).count();
// Integer processCount = Math.toIntExact(count);
// processCountMap.put(processNum, processCount);
// }
//
// }else{
// processCountMap = new HashMap<>();
// }
//
// //获取数量最少的线程号
// Optional<Integer> minKey = processCountMap.entrySet()
// .stream()
// .min(Comparator.comparingInt(e -> e.getValue()))
// .map(Map.Entry::getKey);
DeviceProcess deviceProcess = new DeviceProcess();
deviceProcess.setId(device.getId());
deviceProcess.setProcessNo(1);
@@ -476,7 +446,7 @@ public class TerminalBaseServiceImpl extends ServiceImpl<LineMapper, Line> imple
LineDetail lineDetail = new LineDetail();
BeanUtils.copyProperties(lineParam, lineDetail);
lineDetail.setId(line.getId());
//判断国网监测点id
//判断国网监测点id
if (StrUtil.isNotBlank(lineDetail.getMonitorId())) {
lineDetail.setMonitorFlag(1);
} else {
@@ -493,17 +463,7 @@ public class TerminalBaseServiceImpl extends ServiceImpl<LineMapper, Line> imple
throw new BusinessException(DeviceResponseEnum.LINE_NO_USER_EMPTY);
}
}
lineDetailMapper.insert(lineDetail);
/* if(StrUtil.isNotBlank(lineDetail.getObjId())){
UserLedgerVO userLedgerVO = userLedgerFeignClient.selectUserInfo(lineDetail.getObjId()).getData();
if(StrUtil.isNotBlank(userLedgerVO.getStationId())){
if(!userLedgerVO.getStationId().equals(subIndex)){
throw new BusinessException(DeviceResponseEnum.STATION_USER_HAS_BIND);
}
}
userLedgerFeignClient.bindUserStation(lineDetail.getObjId(),subIndex);
}*/
//通过监测点id获取母线电压等级
Voltage voltage = lineMapper.getVoltageByLineId(line.getId());
//监测点限值
@@ -537,9 +497,8 @@ public class TerminalBaseServiceImpl extends ServiceImpl<LineMapper, Line> imple
}
if(CollUtil.isNotEmpty(logsList)){
DictData dataDic = dicDataFeignClient.getDicDataByCodeAndType(DicDataEnum.LINE_PARAMETER.getCode(),DicDataTypeEnum.DEV_OPS.getCode()).getData();
List<PqsTerminalLogs> pqsTerminalLogsList = new ArrayList<>();
terminalLogsCat(logsList,Param.ADD,dataDic.getId(),pqsTerminalLogsList);
terminalLogsCat(logsList,Param.ADD,pqsTerminalLogsList);
for(PqsTerminalLogs pqsTerminalLogs : pqsTerminalLogsList){
pqsTerminalLogsMapper.insert(pqsTerminalLogs);
}
@@ -604,6 +563,7 @@ public class TerminalBaseServiceImpl extends ServiceImpl<LineMapper, Line> imple
}
Line province = new Line();
province.setId(updateTerminalParam.getProvinceUpdateParam().getProvinceIndex());
province.setName(updateTerminalParam.getProvinceUpdateParam().getName());
province.setSort(updateTerminalParam.getProvinceUpdateParam().getSort());
this.updateById(province);
}
@@ -1406,7 +1366,7 @@ public class TerminalBaseServiceImpl extends ServiceImpl<LineMapper, Line> imple
}
private void deleteProjectAndChildren(Line project,List<PqsTerminalLogs> logsList) {
private void deleteProjectAndChildren(Line project,List<Line> ledgerList,List<PqsTerminalLogs> logsList) {
// 1. 删除项目本身
this.removeById(project.getId());
@@ -1423,10 +1383,10 @@ public class TerminalBaseServiceImpl extends ServiceImpl<LineMapper, Line> imple
this.removeByIds(provinceIds);
// 3. 对每个省份删除其下级
provinceIds.forEach(it-> deleteProvinceAndChildren(it,logsList));
provinceIds.forEach(it-> deleteProvinceAndChildren(it,ledgerList,logsList));
}
private void deleteProvinceAndChildren(String provinceId,List<PqsTerminalLogs> logsList) {
private void deleteProvinceAndChildren(String provinceId,List<Line> ledgerList,List<PqsTerminalLogs> logsList) {
this.removeById(provinceId);
// 1. 查询并删除所有供电公司
@@ -1442,30 +1402,32 @@ public class TerminalBaseServiceImpl extends ServiceImpl<LineMapper, Line> imple
this.removeByIds(companyIds);
// 2. 对每个供电公司删除其下级
companyIds.forEach(it-> deletePowerCompanyAndChildren(it,logsList));
companyIds.forEach(it-> deletePowerCompanyAndChildren(it,ledgerList,logsList));
}
private void deletePowerCompanyAndChildren(String companyId,List<PqsTerminalLogs> logsList) {
private void deletePowerCompanyAndChildren(String companyId,List<Line> ledgerList,List<PqsTerminalLogs> logsList) {
this.removeById(companyId);
// 1. 查询并删除所有变电站
List<Line> substations = findChildren(companyId);
if (CollectionUtil.isEmpty(substations)) {
return;
}
ledgerList.addAll(substations);
List<String> substationIds = substations.stream()
.map(Line::getId)
.collect(Collectors.toList());
this.removeByIds(substationIds);
substationMapper.deleteBatchIds(substationIds);
// 2. 对每个变电站删除其下级
substationIds.forEach(it-> deleteSubstationAndChildren(it,logsList));
substationIds.forEach(it-> deleteSubstationAndChildren(it,ledgerList,logsList));
}
private void deleteSubstationAndChildren(String substationId,List<PqsTerminalLogs> logsList) {
private void deleteSubstationAndChildren(String substationId,List<Line> ledgerList,List<PqsTerminalLogs> logsList) {
this.removeById(substationId);
substationMapper.deleteById(substationId);
// 1. 查询并删除所有装置
@@ -1473,8 +1435,8 @@ public class TerminalBaseServiceImpl extends ServiceImpl<LineMapper, Line> imple
if (CollectionUtil.isEmpty(devices)) {
return;
}
ledgerList.addAll(devices);
Map<String,Line> devMap = devices.stream().collect(Collectors.toMap(Line::getId,Function.identity()));
List<String> deviceIds = devices.stream()
.map(Line::getId)
@@ -1484,27 +1446,25 @@ public class TerminalBaseServiceImpl extends ServiceImpl<LineMapper, Line> imple
deviceMapper.deleteBatchIds(deviceIds);
devFuctionMapper.deleteBatchIds(deviceIds);
Map<String,Line> devMap = devices.stream().collect(Collectors.toMap(Line::getId,Function.identity()));
List<Device> deviceList = deviceMapper.selectList(new LambdaQueryWrapper<Device>().select(Device::getId,Device::getNodeId).in(Device::getId,deviceIds));
Line sub = this.getById(substationId);
String userName= RequestUtil.getUserNickname();
Map<String,DictData> dictDataMap = dicDataFeignClient.getDicDataByTypeCode(DicDataTypeEnum.DEV_TYPE.getCode()).getData().stream().collect(Collectors.toMap(DictData::getId, Function.identity()));
DictData dicDataByCode = dicDataFeignClient.getDicDataByCode(DicDataEnum.DEV_PARAMETER.getCode()).getData();
List<PqsTerminalLogs> pqsTerminalLogsList = new ArrayList<>();
//
/* List<PqsTerminalLogs> pqsTerminalLogsList = new ArrayList<>();
deviceList.forEach(dev->{
Line devicePO = devMap.get(dev.getId());
devLogsCat(Param.DEL_ZN,null,devicePO,sub,dev,pqsTerminalLogsList,dictDataMap,dicDataByCode,userName);
});
devLogsCat(Param.DEL_ZN,null,devicePO,ledgerList.get(0),dev,pqsTerminalLogsList,dictDataMap,dicDataByCode,userName);
});*/
// 2. 对每个装置删除其下级
deviceIds.forEach(it-> deleteDeviceAndChildren(it,logsList));
deviceIds.forEach(it-> deleteDeviceAndChildren(it,ledgerList,logsList));
}
private void deleteDeviceAndChildren(String deviceId,List<PqsTerminalLogs> logsList) {
private void deleteDeviceAndChildren(String deviceId,List<Line> ledgerList,List<PqsTerminalLogs> logsList) {
this.removeById(deviceId);
deviceMapper.deleteById(deviceId);
// deviceProcessService.removeById(deviceId);
// 1. 查询并删除所有母线
List<Line> busbars = findChildren(deviceId);
@@ -1520,20 +1480,22 @@ public class TerminalBaseServiceImpl extends ServiceImpl<LineMapper, Line> imple
voltageMapper.deleteBatchIds(busbarIds);
// 2. 对每条母线删除其下级
busbarIds.forEach(it-> deleteBusbarAndChildren(it,logsList));
busbarIds.forEach(it-> deleteBusbarAndChildren(it,ledgerList,logsList));
}
private void deleteBusbarAndChildren(String busbarId,List<PqsTerminalLogs> logsList) {
private void deleteBusbarAndChildren(String busbarId,List<Line> ledgerList,List<PqsTerminalLogs> logsList) {
this.removeById(busbarId);
voltageMapper.deleteById(busbarId);
// 1. 查询并删除所有监测点
List<Line> monitoringPoints = findChildren(busbarId);
DictData dataDic = dicDataFeignClient.getDicDataByCodeAndType(DicDataEnum.LINE_PARAMETER.getCode(),DicDataTypeEnum.DEV_OPS.getCode()).getData();
terminalLogsCat(monitoringPoints,Param.DEL,dataDic.getId(),logsList);
if (CollectionUtil.isEmpty(monitoringPoints)) {
return;
}
ledgerList.addAll(monitoringPoints);
List<String> pointIds = monitoringPoints.stream()
.map(Line::getId)
@@ -1575,26 +1537,29 @@ public class TerminalBaseServiceImpl extends ServiceImpl<LineMapper, Line> imple
@Override
@Transactional(rollbackFor = Exception.class)
public Boolean delTerminal(String id) {
//存放所有需要记录日志的台账信息
List<Line> logsLedger = new ArrayList<>();
//用于存放最终日志信息
List<PqsTerminalLogs> allLogs = new ArrayList<>();
Line obj = this.getById(id);
if (Objects.isNull(obj)) {
throw new BusinessException(CommonResponseEnum.FAIL);
}
List<PqsTerminalLogs> pqsTerminalLogsList = new ArrayList<>();
logsLedger.add(obj);
LineBaseEnum lineBaseEnum = LineBaseEnum.getLineBaseEnumByCode(obj.getLevel());
// 根据层级选择删除策略
switch (lineBaseEnum) {
case PROJECT_LEVEL:
deleteProjectAndChildren(obj,pqsTerminalLogsList);
deleteProjectAndChildren(obj,logsLedger,allLogs);
break;
case PROVINCE_LEVEL:
deleteProvinceAndChildren(obj.getId(),pqsTerminalLogsList);
deleteProvinceAndChildren(obj.getId(),logsLedger,allLogs);
break;
case GD_LEVEL:
deletePowerCompanyAndChildren(obj.getId(),pqsTerminalLogsList);
deletePowerCompanyAndChildren(obj.getId(),logsLedger,allLogs);
break;
case SUB_LEVEL:
deleteSubstationAndChildren(obj.getId(),pqsTerminalLogsList);
deleteSubstationAndChildren(obj.getId(),logsLedger,allLogs);
break;
case DEVICE_LEVEL:
Line sub = this.getById(obj.getPid());
@@ -1602,27 +1567,26 @@ public class TerminalBaseServiceImpl extends ServiceImpl<LineMapper, Line> imple
String userName= RequestUtil.getUserNickname();
Map<String,DictData> dictDataMap = dicDataFeignClient.getDicDataByTypeCode(DicDataTypeEnum.DEV_TYPE.getCode()).getData().stream().collect(Collectors.toMap(DictData::getId, Function.identity()));
DictData dicDataByCode = dicDataFeignClient.getDicDataByCode(DicDataEnum.DEV_PARAMETER.getCode()).getData();
devLogsCat(Param.DEL_ZN,null,obj,sub,dev,pqsTerminalLogsList,dictDataMap,dicDataByCode,userName);
deleteDeviceAndChildren(obj.getId(),pqsTerminalLogsList);
// devLogsCat(Param.DEL_ZN,null,obj,sub,dev,pqsTerminalLogsList,dictDataMap,dicDataByCode,userName);
deleteDeviceAndChildren(obj.getId(),logsLedger,allLogs);
break;
case SUB_V_LEVEL:
deleteBusbarAndChildren(obj.getId(),pqsTerminalLogsList);
deleteBusbarAndChildren(obj.getId(),logsLedger,allLogs);
break;
case LINE_LEVEL:
deleteMonitoringPoint(obj.getId());
DictData dataDic = dicDataFeignClient.getDicDataByCodeAndType(DicDataEnum.LINE_PARAMETER.getCode(),DicDataTypeEnum.DEV_OPS.getCode()).getData();
terminalLogsCat(Stream.of(obj).collect(Collectors.toList()), Param.DEL,dataDic.getId(),pqsTerminalLogsList);
break;
default:
throw new BusinessException(CommonResponseEnum.FAIL);
}
if(CollUtil.isNotEmpty(pqsTerminalLogsList)){
for(PqsTerminalLogs pqsTerminalLogs: pqsTerminalLogsList){
if(CollUtil.isNotEmpty(logsLedger)){
terminalLogsCat(logsLedger,Param.DEL,allLogs);
for(PqsTerminalLogs pqsTerminalLogs: allLogs){
pqsTerminalLogsMapper.insert(pqsTerminalLogs);
}
}
return true;
}
@@ -1630,11 +1594,6 @@ public class TerminalBaseServiceImpl extends ServiceImpl<LineMapper, Line> imple
@Override
public List<Line> getSubstationByIds(List<String> substationIds, List<String> scale) {
return this.baseMapper.getSubStations(substationIds, scale);
// .in(Line::getId, substationIds)
// .eq(Line::getLevel, 3)
// .in(CollUtil.isNotEmpty(scale),Line::getLevel)
// .eq(Line::getState, DataStateEnum.ENABLE.getCode())
// .list();
}
@Override
@@ -4054,40 +4013,43 @@ public class TerminalBaseServiceImpl extends ServiceImpl<LineMapper, Line> imple
/**
* 终端日志记录
* 终端日志记录(只记录新增删除)
*/
private void terminalLogsCat(List<Line> logsList,String operateType,String logsType,List<PqsTerminalLogs> pqsTerminalLogsList){
private void terminalLogsCat(List<Line> logsList,String operateType,List<PqsTerminalLogs> pqsTerminalLogsList){
String op;
Map<String,Line> subMap = new HashMap<>();
List<Line> temList = logsList.stream().filter(it-> it.getLevel().equals(LINE_LEVEL.getCode()) ||it.getLevel().equals(DEVICE_LEVEL.getCode())).collect(Collectors.toList());
if(CollUtil.isEmpty(temList)){
return;
}
switch (operateType){
case Param.ADD:
op = Param.ADD_ZN;
break;
case Param.UPDATE:
op = Param.UPDATE_ZN;
List<String> stationIds = temList.stream().map(it->it.getPids().split(StrUtil.COMMA)[SUB_LEVEL.getCode()]).distinct().collect(Collectors.toList());
List<Line> subList = this.listByIds(stationIds);
subMap = subList.stream().collect(Collectors.toMap(Line::getId,Function.identity()));
break;
case Param.DEL:
op = Param.DEL_ZN;
List<Line> stationList = logsList.stream().filter(it->it.getLevel().equals(SUB_LEVEL.getCode())).collect(Collectors.toList());
subMap = stationList.stream().collect(Collectors.toMap(Line::getId,Function.identity()));
break;
default:
op=Param.UNKONOW;
break;
}
DictData monitorDataDic = dicDataFeignClient.getDicDataByCodeAndType(DicDataEnum.LINE_PARAMETER.getCode(),DicDataTypeEnum.DEV_OPS.getCode()).getData();
DictData devDataDic = dicDataFeignClient.getDicDataByCodeAndType(DicDataEnum.DEV_PARAMETER.getCode(),DicDataTypeEnum.DEV_OPS.getCode()).getData();
String name = RequestUtil.getUserNickname();
if(CollUtil.isNotEmpty(logsList)){
List<String> lineSubIds = logsList.stream().filter(it->it.getLevel().equals(LINE_LEVEL.getCode())).map(it->it.getPids().split(StrUtil.COMMA)[SUB_LEVEL.getCode()]).distinct().collect(Collectors.toList());
List<String> devSubIds = logsList.stream().filter(it->it.getLevel().equals(DEVICE_LEVEL.getCode())).map(it->it.getPids().split(StrUtil.COMMA)[SUB_LEVEL.getCode()]).distinct().collect(Collectors.toList());
lineSubIds.addAll(devSubIds);
List<String> ids = lineSubIds.stream().distinct().collect(Collectors.toList());
List<Line> subList = this.listByIds(ids);
Map<String,Line> subMap = subList.stream().collect(Collectors.toMap(Line::getId,Function.identity()));
for(Line line : logsList){
if(CollUtil.isNotEmpty(temList)){
for(Line line : temList){
PqsTerminalLogs pqsTerminalLogs = new PqsTerminalLogs();
pqsTerminalLogs.setLogsType(logsType);
pqsTerminalLogs.setTerminalType(line.getLevel());
if(line.getLevel().equals(LINE_LEVEL.getCode())){
pqsTerminalLogs.setLogsType(monitorDataDic.getId());
}else if(line.getLevel().equals(DEVICE_LEVEL.getCode())){
pqsTerminalLogs.setLogsType(devDataDic.getId());
}
String subName;
String levelOperate;
String nodeName = "";
@@ -4095,9 +4057,6 @@ public class TerminalBaseServiceImpl extends ServiceImpl<LineMapper, Line> imple
levelOperate = LINE_LEVEL.getMessage();
}else{
levelOperate = DEVICE_LEVEL.getMessage();
if(Param.DEL_ZN.equals(op)){
// nodeName = "; 前置名称:"+node.getName();
}
}
subName = subMap.get(line.getPids().split(StrUtil.COMMA)[SUB_LEVEL.getCode()]).getName();
String temLos = "%s进行%s%s操作; %s名称: %s";
@@ -4114,6 +4073,18 @@ public class TerminalBaseServiceImpl extends ServiceImpl<LineMapper, Line> imple
}
/**
* 终端日志记录(记录修改)
* @param op
* @param updateDeviceParam
* @param devicePO
* @param sub
* @param devDetail
* @param pqsTerminalLogsList
* @param dictDataMap
* @param dicDataByCode
* @param userName
*/
public void devLogsCat(String op,DeviceParam updateDeviceParam,Line devicePO,Line sub,Device devDetail, List<PqsTerminalLogs> pqsTerminalLogsList, Map<String, DictData> dictDataMap, DictData dicDataByCode, String userName) {
StringBuilder stringBuilder = new StringBuilder(String.format("%s进行%s装置(%s_%s)操作,详细信息:", userName,op,sub.getName(), devicePO.getName()));