1.解决监测点超标问题

2.解决监测点终端md3加密显示
3.解决全景技术监督问题数量问题
This commit is contained in:
wr
2024-11-25 12:09:48 +08:00
parent 92ddbd34a8
commit ca32a4e3c6
8 changed files with 154 additions and 65 deletions

View File

@@ -43,11 +43,13 @@ import com.njcn.device.pq.pojo.param.oracle.*;
import com.njcn.device.pq.pojo.po.*;
import com.njcn.device.pq.pojo.vo.*;
import com.njcn.device.pq.service.*;
import com.njcn.device.pq.utils.DeviceUtil;
import com.njcn.device.pq.utils.ExcelStyleUtil;
import com.njcn.oss.constant.OssPath;
import com.njcn.oss.utils.FileStorageUtil;
import com.njcn.poi.excel.ExcelUtil;
import com.njcn.poi.util.PoiUtil;
import com.njcn.redis.utils.RedisUtil;
import com.njcn.system.api.AreaFeignClient;
import com.njcn.system.api.DicDataFeignClient;
import com.njcn.system.enums.DicDataEnum;
@@ -103,6 +105,7 @@ public class TerminalBaseServiceImpl extends ServiceImpl<LineMapper, Line> imple
private final LineBakService lineBakService;
private final DeviceBakService deviceBakService;
private final FileStorageUtil fileStorageUtil;
private final RedisUtil redisUtil;
@Value("${oracle.isSync}")
@@ -266,7 +269,7 @@ public class TerminalBaseServiceImpl extends ServiceImpl<LineMapper, Line> imple
deviceDetail.setUpdateTime(LocalDateTime.now());
//处理装置识别码秘钥
coderM3d(deviceDetail);
deviceMapper.insert(deviceDetail);
//装置功能
List<DictData> funList = dicDataFeignClient.getDicDataByTypeName(DicDataTypeEnum.DEV_FUN.getName()).getData();
@@ -625,6 +628,7 @@ public class TerminalBaseServiceImpl extends ServiceImpl<LineMapper, Line> imple
Device deviceDetail = new Device();
BeanUtils.copyProperties(updateDeviceParam, deviceDetail);
deviceDetail.setId(updateDeviceParam.getDevIndex());
coderM3d(deviceDetail);
this.updateById(device);
deviceMapper.updateById(deviceDetail);
}
@@ -804,6 +808,23 @@ public class TerminalBaseServiceImpl extends ServiceImpl<LineMapper, Line> imple
return true;
}
private void coderM3d(Device deviceDetail){
if(StrUtil.isNotBlank(deviceDetail.getDevKey())){
deviceDetail.setDevKey(DeviceUtil.encodeString(1,deviceDetail.getDevKey()));
}
if(StrUtil.isNotBlank(deviceDetail.getSeries())){
deviceDetail.setSeries(DeviceUtil.encodeString(1,deviceDetail.getSeries()));
}
}
private void decoderM3d(Device deviceDetail){
if(StrUtil.isNotBlank(deviceDetail.getDevKey())){
deviceDetail.setDevKey(DeviceUtil.decoderString(1,deviceDetail.getDevKey()));
}
if(StrUtil.isNotBlank(deviceDetail.getSeries())){
deviceDetail.setSeries(DeviceUtil.decoderString(1,deviceDetail.getSeries()));
}
}
/**
* 查询监测点信息修改处,并新增日志
*
@@ -924,6 +945,8 @@ public class TerminalBaseServiceImpl extends ServiceImpl<LineMapper, Line> imple
Device deviceDetail = deviceMapper.selectById(device.getId());
//解密
decoderM3d(deviceDetail);
BeanUtils.copyProperties(deviceDetail, deviceVO);
deviceVO.setDevIndex(device.getId());
//母线
@@ -982,6 +1005,8 @@ public class TerminalBaseServiceImpl extends ServiceImpl<LineMapper, Line> imple
deviceVO.setSort(obj.getSort());
Device deviceDetail = deviceMapper.selectById(obj.getId());
//解密
decoderM3d(deviceDetail);
BeanUtils.copyProperties(deviceDetail, deviceVO);
deviceVO.setDevIndex(obj.getId());
@@ -1076,6 +1101,8 @@ public class TerminalBaseServiceImpl extends ServiceImpl<LineMapper, Line> imple
deviceVO.setName(device.getName());
deviceVO.setSort(device.getSort());
Device deviceDetail = deviceMapper.selectById(device.getId());
//解密
decoderM3d(deviceDetail);
BeanUtils.copyProperties(deviceDetail, deviceVO);
deviceVO.setDevIndex(device.getId());
@@ -1125,6 +1152,8 @@ public class TerminalBaseServiceImpl extends ServiceImpl<LineMapper, Line> imple
BeanUtils.copyProperties(device, deviceVO);
Device deviceDetail = deviceMapper.selectById(device.getId());
//解密
decoderM3d(deviceDetail);
BeanUtils.copyProperties(deviceDetail, deviceVO);
deviceVO.setDevIndex(device.getId());
@@ -1861,6 +1890,23 @@ public class TerminalBaseServiceImpl extends ServiceImpl<LineMapper, Line> imple
Integer oracleDevId = Integer.valueOf(body.get("oracleDevId").toString());
syncTerminalParam.setOracleLineId(oracleLineId);
syncTerminalParam.setOracleDevId(oracleDevId);
Map<String, String> DevIdMapping = new HashMap<>();
Map<String, String> LineIdMapping = new HashMap<>();
List<LineBak> resultList = lineBakService.list();
for (LineBak row : resultList) {
String id = row.getId();
String lineId = row.getLineId()+"";
LineIdMapping.put(lineId,id );
}
redisUtil.saveByKey("LineIdMapping",LineIdMapping);
List<DeviceBak> list = deviceBakService.list();
for (DeviceBak row : list) {
String id = row.getId();
String devId = row.getDevId()+"";
DevIdMapping.put(devId,id );
}
redisUtil.saveByKey("DevIdMapping",DevIdMapping);
}
}
String projectIndex = null;

View File

@@ -1,5 +1,6 @@
package com.njcn.device.pq.service.impl;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.collection.CollectionUtil;
import cn.hutool.core.util.StrUtil;
@@ -330,21 +331,23 @@ public class TerminalTreeServiceImpl implements TerminalTreeService {
List<TerminalTree> subInfoList = new ArrayList<>();
lineObjNameMap.forEach((key, value)->{
final List<TerminalTree> subVLine = collect1;
List<TerminalTree> terminalTrees = Collections.unmodifiableList(collect1);
//获取变电信息
List<TerminalTree> collect = subList.stream().filter(x -> x.getName().equals(key)).collect(Collectors.toList());
//电网侧监测点
List<TerminalTree> powerFlag = value.stream().filter(x -> x.getPowerFlag().equals(LineBaseEnum.POWER_FLAG.getCode())).collect(Collectors.toList());
if(CollUtil.isEmpty(collect)){
if(CollUtil.isEmpty(powerFlag)){
//解决变电站下没有监测点显示问题(变电站-》终端-》母线)
powerFlag.addAll(collect);
}
List<TerminalTree> subChildren = getRecursionChildren(powerFlag, subVLine);
List<TerminalTree> subChildren = new ArrayList<>();
getRecursionChildren(powerFlag,subChildren, terminalTrees);
//非电网侧监测点
List<TerminalTree> powerFlagNot = value.stream().filter(x -> x.getPowerFlag().equals(LineBaseEnum.POWER_FLAG_NOT.getCode())).collect(Collectors.toList());
List<TerminalTree> notSubChildren = getRecursionChildren(powerFlagNot,subVLine);
List<TerminalTree> notSubChildren = new ArrayList<>();
getRecursionChildren(powerFlagNot,notSubChildren,terminalTrees);
if(CollUtil.isNotEmpty(collect)){
List<TerminalTree> valueList = new ArrayList<>();
@@ -434,33 +437,39 @@ public class TerminalTreeServiceImpl implements TerminalTreeService {
//todo 变电站层级处理不存在下面信息的监测点信息(默认信息就是给他当成电网侧)
List<TerminalTree> dw = new ArrayList<>();
dw.addAll(subInfoList.stream().collect(Collectors.toList()));
//暂时解决跨部门不显示电站问题(风光储)
dw.addAll(subInfoList.stream().flatMap(x -> x.getChildren().get(0).getChildren().stream()).collect(Collectors.toList()));
dw.addAll(subInfoList.stream().flatMap(x -> x.getChildren().get(1).getChildren().stream()).collect(Collectors.toList()));
List<TerminalTree> collect = subList.stream().filter(x -> !dw.stream().map(TerminalTree::getId).collect(Collectors.toList()).contains(x.getId()))
List<TerminalTree> collect = subList.stream().filter(x -> !dw.stream().map(TerminalTree::getId).collect(Collectors.toList()).contains(x.getId()) ||
x.getName().equals("220kV金阳变电站"))
.distinct().collect(Collectors.toList());
for (TerminalTree notSub : collect) {
//只显示变电站下有装置的
TerminalTree notSub1 = findParents(collect1, notSub);
List<TerminalTree> valueList = new ArrayList<>();
TerminalTree sub = new TerminalTree();
sub.setId(notSub.getId());
sub.setName(notSub.getName());
sub.setPid(notSub.getPid());
if(CollUtil.isNotEmpty(notSub1.getChildren())){
List<TerminalTree> valueList = new ArrayList<>();
TerminalTree powerTree = new TerminalTree();
powerTree.setId(notSub.getId());
powerTree.setName("电网侧");
powerTree.setChildren(Arrays.asList(notSub1));
valueList.add(powerTree);
TerminalTree sub = new TerminalTree();
sub.setId(notSub.getId());
sub.setName(notSub.getName());
sub.setPid(notSub.getPid());
TerminalTree notPowerTree = new TerminalTree();
notPowerTree.setName("非电网侧");
notPowerTree.setChildren(new ArrayList<>());
valueList.add(notPowerTree);
TerminalTree powerTree = new TerminalTree();
powerTree.setId(notSub.getId());
powerTree.setName("电网侧");
powerTree.setChildren(Arrays.asList(notSub1));
valueList.add(powerTree);
sub.setChildren(valueList);
subInfoList.add(sub);
TerminalTree notPowerTree = new TerminalTree();
notPowerTree.setName("非电网侧");
notPowerTree.setChildren(new ArrayList<>());
valueList.add(notPowerTree);
sub.setChildren(valueList);
subInfoList.add(sub);
dw.add(sub);
}
}
gdList.forEach(gd -> gd.setChildren(getChildren(gd, subInfoList)));
@@ -497,26 +506,25 @@ public class TerminalTreeServiceImpl implements TerminalTreeService {
* @param all 检测对象
* @return
*/
public List<TerminalTree> getRecursionChildren(List<TerminalTree> line, List<TerminalTree> all) {
List<TerminalTree> info=new ArrayList<>();
public void getRecursionChildren(List<TerminalTree> line, List<TerminalTree> info,List<TerminalTree> all) {
List<TerminalTree> aa=new ArrayList<>();
for (TerminalTree lineTree : line) {
findParentsRecursive(lineTree, all,aa);
aa.add(lineTree);
}
List<TerminalTree> distinctList =new ArrayList<>();
distinctList.addAll(aa.stream().distinct().collect(Collectors.toList()));
aa.addAll(all);
List<TerminalTree> distinctList =new ArrayList<>(aa.stream().distinct().collect(Collectors.toList()));
long count = line.stream().filter(x -> !x.getLevel().equals(LineBaseEnum.LINE_LEVEL.getCode())).count();
if(count>0){
aa.addAll(all);
}
List<TerminalTree> lines = aa.stream().distinct().sorted(Comparator.comparing(TerminalTree::getSort)).collect(Collectors.toList());
List<TerminalTree> collect = distinctList.stream().filter(x -> x.getLevel() == LineBaseEnum.SUB_LEVEL.getCode()).collect(Collectors.toList());
if(CollUtil.isNotEmpty(collect)){
for (TerminalTree tree : collect) {
info.add(findParents(lines,tree));
TerminalTree terminalTree = BeanUtil.copyProperties(tree, TerminalTree.class);
info.add(findParents(lines,terminalTree));
}
}
return info;
}
private static void findParentsRecursive(TerminalTree tree, List<TerminalTree> all,List<TerminalTree> newParents) {

View File

@@ -1,62 +0,0 @@
package com.njcn.device.pq.utils;
import com.njcn.common.utils.sm.Sm4Utils;
import com.njcn.common.utils.sm.ThreeDesUtil;
import org.apache.commons.codec.binary.Base64;
/**
* pqs
*
* @author cdf
* @date 2022/1/6
*/
public class DeviceUtil {
/**
* cd 系统配置的解密方式
* content 需要解密的内容
* 解密对应内容
* @author cdf
* @date 2021/10/12
*/
public static String decoderString(Integer cd,String content){
String seriesTmp = null;
if (cd == 0) {
seriesTmp = Base64.decodeBase64(content).toString();
} else if (cd == 1) {
seriesTmp = ThreeDesUtil.decryptThreeDes(content);
} else if (cd == 2) {
//SM4加密密码
String secretkey = Sm4Utils.globalSecretKey;
Sm4Utils sm4 = new Sm4Utils(secretkey);
seriesTmp = sm4.decryptData_ECB(content);
}
return seriesTmp;
}
/**
*
* cd 系统配置的加密方式
* content 需要加密的内容
* 加密对应内容
* @author cdf
* @date 2021/10/12
*/
public static String encodeString(Integer cd,String content){
String key = null;
if (cd == 0) {
key = Base64.encodeBase64String(content.getBytes());
} else if (cd == 1) {
key = ThreeDesUtil.encryptThreeDes(content);
} else if (cd == 2) {
//SM4加密密码
String secretkey = Sm4Utils.globalSecretKey;
Sm4Utils sm4 = new Sm4Utils(secretkey);
key = sm4.encryptData_ECB(content);
}
return key;
}
}