diff --git a/pqs-device/pq-device/pq-device-api/src/main/java/com/njcn/device/pq/pojo/param/PqsTransformerParam.java b/pqs-device/pq-device/pq-device-api/src/main/java/com/njcn/device/pq/pojo/param/PqsTransformerParam.java index df0c9555b..fd3f4b9f6 100644 --- a/pqs-device/pq-device/pq-device-api/src/main/java/com/njcn/device/pq/pojo/param/PqsTransformerParam.java +++ b/pqs-device/pq-device/pq-device-api/src/main/java/com/njcn/device/pq/pojo/param/PqsTransformerParam.java @@ -20,9 +20,11 @@ public class PqsTransformerParam implements Serializable { private String tfIndex; @ApiModelProperty(name ="upNode",value = "上节点",required = true) + @NotBlank(message = "变压器台账上节点不能为空") private String upNode; @ApiModelProperty(name ="downNode",value = "下节点",required = true) + @NotBlank(message = "变压器台下节点不能为空") private String downNode; @Data diff --git a/pqs-device/pq-device/pq-device-boot/src/main/java/com/njcn/device/pq/controller/PqsTransformerController.java b/pqs-device/pq-device/pq-device-boot/src/main/java/com/njcn/device/pq/controller/PqsTransformerController.java index 1b52d3e65..146981475 100644 --- a/pqs-device/pq-device/pq-device-boot/src/main/java/com/njcn/device/pq/controller/PqsTransformerController.java +++ b/pqs-device/pq-device/pq-device-boot/src/main/java/com/njcn/device/pq/controller/PqsTransformerController.java @@ -12,7 +12,6 @@ import com.njcn.device.pq.pojo.param.PqsTransformerParam; import com.njcn.device.pq.pojo.vo.PqsTflgassVO; import com.njcn.device.pq.pojo.vo.PqsTransformerVO; import com.njcn.device.pq.pojo.vo.TerminalTree; -import com.njcn.device.pq.pojo.vo.TransformerVO; import com.njcn.device.pq.service.IPqsTransformerService; import com.njcn.web.pojo.param.BaseParam; import io.swagger.annotations.Api; @@ -72,7 +71,7 @@ public class PqsTransformerController extends BaseController { @PostMapping("/delTransformer") @ApiOperation(value = "变压器台账删除") @OperateInfo(info = LogEnum.BUSINESS_COMMON, operateType = OperateType.DELETE) - public HttpResult delTransformer(@RequestBody List ids) { + public HttpResult delTransformer(@RequestBody List ids) { String methodDescribe = getMethodDescribe("delTransformer"); Boolean flag = iPqsTransformerService.delTransformer(ids); return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, flag, methodDescribe); @@ -90,7 +89,7 @@ public class PqsTransformerController extends BaseController { @PostMapping("/nodeMaintenance") @ApiOperation(value = "变电站节点维护") @OperateInfo(info = LogEnum.BUSINESS_COMMON) - public HttpResult nodeMaintenance(@RequestBody PqsTransformerParam param) { + public HttpResult nodeMaintenance(@RequestBody @Validated PqsTransformerParam param) { String methodDescribe = getMethodDescribe("nodeMaintenance"); Boolean flag = iPqsTransformerService.nodeMaintenance(param); return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, flag, methodDescribe); @@ -99,9 +98,9 @@ public class PqsTransformerController extends BaseController { @GetMapping("/getGeneratrix") @ApiOperation(value = "获取上下节点信息") @OperateInfo(info = LogEnum.BUSINESS_COMMON) - public HttpResult>> getGeneratrix(String id) { + public HttpResult> getGeneratrix(String subId,String id) { String methodDescribe = getMethodDescribe("getGeneratrix"); - Map> generatrix = iPqsTransformerService.getGeneratrix(id); + Map generatrix = iPqsTransformerService.getGeneratrix(subId,id); return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, generatrix, methodDescribe); } diff --git a/pqs-device/pq-device/pq-device-boot/src/main/java/com/njcn/device/pq/mapper/LineMapper.java b/pqs-device/pq-device/pq-device-boot/src/main/java/com/njcn/device/pq/mapper/LineMapper.java index e12646605..16b99179a 100644 --- a/pqs-device/pq-device/pq-device-boot/src/main/java/com/njcn/device/pq/mapper/LineMapper.java +++ b/pqs-device/pq-device/pq-device-boot/src/main/java/com/njcn/device/pq/mapper/LineMapper.java @@ -446,10 +446,10 @@ public interface LineMapper extends BaseMapper { /** - * 获取变电站下母线(变电站策略专用) + * 根据变电站获取母线信息(变电站策略专用) * @param subId - * @param type (0是跨 1是本) + * @param type (0是除了本变电站所有变电站母线信息 1是获取本变电站所有母线信息 2是根据母线获取信息) * @return */ - List getvoltage(@Param("subId") String subId,@Param("type") Integer type); + List getvoltage(@Param("id") String subId,@Param("type") Integer type); } diff --git a/pqs-device/pq-device/pq-device-boot/src/main/java/com/njcn/device/pq/mapper/mapping/LineMapper.xml b/pqs-device/pq-device/pq-device-boot/src/main/java/com/njcn/device/pq/mapper/mapping/LineMapper.xml index f68ba9a76..68b3b9a23 100644 --- a/pqs-device/pq-device/pq-device-boot/src/main/java/com/njcn/device/pq/mapper/mapping/LineMapper.xml +++ b/pqs-device/pq-device/pq-device-boot/src/main/java/com/njcn/device/pq/mapper/mapping/LineMapper.xml @@ -1164,13 +1164,15 @@ INNER JOIN pq_line sub ON dev.pid = sub.id voltage.state = 1 - - and sub.id = #{subId} + + and sub.id != #{id} - - and sub.id != #{subId} + + and sub.id = #{id} + + + and voltage.id = #{id} - diff --git a/pqs-device/pq-device/pq-device-boot/src/main/java/com/njcn/device/pq/mapper/mapping/PqsTflgassMapper.xml b/pqs-device/pq-device/pq-device-boot/src/main/java/com/njcn/device/pq/mapper/mapping/PqsTflgassMapper.xml index e374340ce..92b8f40b1 100644 --- a/pqs-device/pq-device/pq-device-boot/src/main/java/com/njcn/device/pq/mapper/mapping/PqsTflgassMapper.xml +++ b/pqs-device/pq-device/pq-device-boot/src/main/java/com/njcn/device/pq/mapper/mapping/PqsTflgassMapper.xml @@ -9,15 +9,15 @@ INNER JOIN pqs_transformer pf on pf.Tf_Index=pt.Tf_Index pf.Sub_Index = #{id} - and Logic_Before IN + and ( Logic_Before IN #{item} - and Logic_Next IN + or Logic_Next IN #{item} - + ) diff --git a/pqs-device/pq-device/pq-device-boot/src/main/java/com/njcn/device/pq/service/IPqsTransformerService.java b/pqs-device/pq-device/pq-device-boot/src/main/java/com/njcn/device/pq/service/IPqsTransformerService.java index 0526535cd..e84f29754 100644 --- a/pqs-device/pq-device/pq-device-boot/src/main/java/com/njcn/device/pq/service/IPqsTransformerService.java +++ b/pqs-device/pq-device/pq-device-boot/src/main/java/com/njcn/device/pq/service/IPqsTransformerService.java @@ -7,7 +7,6 @@ import com.njcn.device.pq.pojo.po.PqsTransformer; import com.njcn.device.pq.pojo.vo.PqsTflgassVO; import com.njcn.device.pq.pojo.vo.PqsTransformerVO; import com.njcn.device.pq.pojo.vo.TerminalTree; -import com.njcn.device.pq.pojo.vo.TransformerVO; import com.njcn.web.pojo.param.BaseParam; import java.util.List; @@ -72,11 +71,11 @@ public interface IPqsTransformerService extends IService { /** * 获取上下节点信息 + * @param subId * @param id - * @param type * @return */ - Map> getGeneratrix(String id); + Map getGeneratrix(String subId,String id); /** * 获取母线设备树层级/变压器/市/ diff --git a/pqs-device/pq-device/pq-device-boot/src/main/java/com/njcn/device/pq/service/impl/PqsTransformerServiceImpl.java b/pqs-device/pq-device/pq-device-boot/src/main/java/com/njcn/device/pq/service/impl/PqsTransformerServiceImpl.java index b87b18777..e84bab555 100644 --- a/pqs-device/pq-device/pq-device-boot/src/main/java/com/njcn/device/pq/service/impl/PqsTransformerServiceImpl.java +++ b/pqs-device/pq-device/pq-device-boot/src/main/java/com/njcn/device/pq/service/impl/PqsTransformerServiceImpl.java @@ -21,7 +21,6 @@ import com.njcn.device.pq.pojo.po.PqsTransformer; import com.njcn.device.pq.pojo.vo.PqsTflgassVO; import com.njcn.device.pq.pojo.vo.PqsTransformerVO; import com.njcn.device.pq.pojo.vo.TerminalTree; -import com.njcn.device.pq.pojo.vo.TransformerVO; import com.njcn.device.pq.service.IPqsTflgassService; import com.njcn.device.pq.service.IPqsTransformerService; import com.njcn.user.api.UserFeignClient; @@ -137,7 +136,9 @@ public class PqsTransformerServiceImpl extends ServiceImpl ids) { boolean b = this.removeByIds(ids); - return b; + LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>(); + lambdaQueryWrapper.in(PqsTflgass::getTfIndex, ids); + return iPqsTflgassService.remove(lambdaQueryWrapper); } @Override @@ -177,51 +178,186 @@ public class PqsTransformerServiceImpl extends ServiceImpl> getGeneratrix(String id) { - Map> voltage = new HashMap<>(); - + public Map getGeneratrix(String subId, String id) { + Map voltage = new HashMap<>(); + //先判断当前,变电站是否已添加了节点 + PqsTflgass one = iPqsTflgassService.getOne(new LambdaQueryWrapper() + .eq(PqsTflgass::getTfIndex, id)); //1.获取当前变电站下,所拥有的母线条数 - List downVoltage = lineMapper.getvoltage(id, 1); + List downVoltage = lineMapper.getvoltage(subId, 1); //获取母线id List ids = downVoltage.stream().map(TerminalTree::getId).collect(Collectors.toList()); //查询节点是否绑定 - List pqsTflgasses = pqsTflgassMapper.selectFlgass(id, ids); + List pqsTflgasses = pqsTflgassMapper.selectFlgass(subId, ids); + + + String dadadw = mostBefore(pqsTflgasses); +// List pqsTflgasses = pqsTflgassMapper.selectList(null); + String[][] arr = new String[pqsTflgasses.size()][2]; + if (CollUtil.isNotEmpty(pqsTflgasses) && ids.size() > 2) { + for (int i = 0; i < pqsTflgasses.size(); i++) { + arr[i][0] = pqsTflgasses.get(i).getLogicBefore(); + arr[i][1] = pqsTflgasses.get(i).getLogicNext(); + } + + } + voltage.put("bind", arr); + Stream beforeStream = pqsTflgasses.stream().map(PqsTflgass::getLogicBefore); Stream nextStream = pqsTflgasses.stream().map(PqsTflgass::getLogicNext); //合并节点,要是母线都存在,说明是跨变电站,反之是本变电站 List merge = Stream.concat(beforeStream, nextStream) + .distinct() .collect(Collectors.toList()); - //跨变电站 - if (downVoltage.size() < 2 || merge.size() == ids.size()) { - List upVoltage; - if (downVoltage.size() < 2) { - upVoltage = lineMapper.getvoltage(id, 0); + //查看已经绑定的母线 + List bindList = merge.stream().filter(x -> ids.contains(x)).collect(Collectors.toList()); + + //绑定母线,如有绑定的母线下不存在这个母线,说明是有跨变电站数据,则新增母线节点,为最底层节点往后,拼接 + List straddleList = merge.stream().filter(x -> !ids.contains(x)).collect(Collectors.toList()); + //判断当前母线下是否还存在,没绑定节点 + List not = ids.stream().filter(x -> !bindList.contains(x)).collect(Collectors.toList()); + + + /** + * 当母线节点+1等于去重之后的绑定节点说明,节点已经全部绑定了 + * + * 跨变电站 + * 1.1当母线小于俩条时为跨 + * 1.2当都所有节点都绑定时,只有最起始节点为跨 + * 本变电站 + * 1.1当有俩条时或者大于俩条时时为本 + * 1.2当已绑定有跨变电站时,则上节点为最底层节点母线,下节点为没绑定的母线信息 + */ + + + if (ObjectUtil.isNotNull(one)) { + List collect = ids.stream().filter(x -> x.equals(one.getLogicBefore())).collect(Collectors.toList()); + /** + * 本 + * 1.当母线大于俩条 + * 2.当所有母线没有绑定是 + */ + if (collect.size() > 0) { + List upVOList; + if (straddleList.size() > 0 && not.size() > 0) { + String s = mostNext(pqsTflgasses); + upVOList = downVoltage.stream().filter(x -> s.equals(x.getId())).collect(Collectors.toList()); + } else { + //上节点id + List upIDs = pqsTflgasses.stream().map(PqsTflgass::getLogicBefore).collect(Collectors.toList()); + upVOList = downVoltage.stream().filter(x -> !upIDs.contains(x.getId())).collect(Collectors.toList()); + } + + //下节点id + List downIDs = pqsTflgasses.stream().map(PqsTflgass::getLogicNext).collect(Collectors.toList()); + List downVOList = downVoltage.stream().filter(x -> !downIDs.contains(x.getId())).collect(Collectors.toList()); + + if (ObjectUtil.isNotNull(one)) { + TerminalTree beforeTree = addTree(one.getLogicBefore()); + TerminalTree nextTree = addTree(one.getLogicNext()); + upVOList.add(beforeTree); + downVOList.add(nextTree); + } + List upList = TreedChildren(upVOList, "变压器上节点设备树", subId); + voltage.put("upNode", upList); + List downList = TreedChildren(downVOList, "变压器下节点设备树", subId); + voltage.put("downNode", downList); + return voltage; } else { - List ad = iPqsTflgassService.list(); - String s = recursionSelectList(ad); - upVoltage = downVoltage.stream().filter(x -> x.getId().equals(s)).collect(Collectors.toList()); + //查询所有变电站下母线信息 + List upVoltage = lineMapper.getvoltage(subId, 0); + if (merge.size() == ids.size()) { + String s = mostBefore(pqsTflgasses); + downVoltage = downVoltage.stream().filter(x -> x.getId().equals(s)).collect(Collectors.toList()); + } + if (ObjectUtil.isNotNull(one)) { + TerminalTree beforeTree = addTree(one.getLogicBefore()); + TerminalTree nextTree = addTree(one.getLogicNext()); + upVoltage = upVoltage.stream().filter(x -> !x.getId().equals(beforeTree.getId())).collect(Collectors.toList()); + upVoltage.add(beforeTree); + + downVoltage.clear(); + downVoltage.add(nextTree); + } + List upList = TreedChildren(upVoltage, "变压器上节点设备树", null); + voltage.put("upNode", upList); + List downList = TreedChildren(downVoltage, "变压器下节点设备树", subId); + voltage.put("downNode", downList); + return voltage; } - List upList = TreedChildren(upVoltage, "变压器上节点设备树", null); - voltage.put("upNode", upList); - List downList = TreedChildren(downVoltage, "变压器下节点设备树", id); - voltage.put("downNode", downList); + } else { - //上节点id - List upIDs = pqsTflgasses.stream().map(PqsTflgass::getLogicBefore).collect(Collectors.toList()); - List upVOList = downVoltage.stream().filter(x -> !upIDs.contains(x.getId())).collect(Collectors.toList()); + //判断是否已经全部绑定 + String chain = chain(pqsTflgasses); + String chain2 = chain2(pqsTflgasses); + if (StrUtil.isNotBlank(chain) && not.size() == 0&& pqsTflgasses.size()+1!=ids.size()&&straddleList.size()==0 + || StrUtil.isNotBlank(chain2) && not.size() == 0&& pqsTflgasses.size()+1!=ids.size()&&straddleList.size()==0) { + List logicBefore = pqsTflgasses.stream().map(PqsTflgass::getLogicBefore).collect(Collectors.toList()); + List logicNext = pqsTflgasses.stream().map(PqsTflgass::getLogicNext).collect(Collectors.toList()); + List up = downVoltage.stream().filter(x -> !logicBefore.contains(x.getId())).collect(Collectors.toList()); + List upList = TreedChildren(up, "变压器上节点设备树", subId); + voltage.put("upNode", upList); - //下节点id - List downIDs = pqsTflgasses.stream().map(PqsTflgass::getLogicBefore).collect(Collectors.toList()); - List downVOList = downVoltage.stream().filter(x -> !downIDs.contains(x.getId())).collect(Collectors.toList()); + List down = downVoltage.stream().filter(x -> !logicNext.contains(x.getId())).collect(Collectors.toList()); + List downList = TreedChildren(down, "变压器下节点设备树", subId); + voltage.put("downNode", downList); + return voltage; + } else { + if (downVoltage.size() > 1 && straddleList.size() == 0 && bindList.size() != ids.size() + || straddleList.size() > 0 && not.size() > 0 - List upList = TreedChildren(upVOList, "变压器上节点设备树", id); - voltage.put("upNode", upList); - List downList = TreedChildren(downVOList, "变压器下节点设备树", id); - voltage.put("downNode", downList); + ) { + List upVOList; + if (straddleList.size() > 0 && not.size() > 0) { + String s = mostNext(pqsTflgasses); + upVOList = downVoltage.stream().filter(x -> s.equals(x.getId())).collect(Collectors.toList()); + } else { + //上节点id + List upIDs = pqsTflgasses.stream().map(PqsTflgass::getLogicBefore).collect(Collectors.toList()); + upVOList = downVoltage.stream().filter(x -> !upIDs.contains(x.getId())).collect(Collectors.toList()); + } + + //下节点id + List downIDs = pqsTflgasses.stream().map(PqsTflgass::getLogicNext).collect(Collectors.toList()); + + List downVOList = downVoltage.stream().filter(x -> !downIDs.contains(x.getId())).collect(Collectors.toList()); + if(not.size() ==1){ + List logicBefore = pqsTflgasses.stream().map(PqsTflgass::getLogicBefore).collect(Collectors.toList()); + downVOList = downVOList.stream().filter(x -> !logicBefore.contains(x.getId())).collect(Collectors.toList()); + } + List upList = TreedChildren(upVOList, "变压器上节点设备树", subId); + voltage.put("upNode", upList); + List downList = TreedChildren(downVOList, "变压器下节点设备树", subId); + voltage.put("downNode", downList); + } + + /** + * 跨 + * 1.当母线小于2条跨 + * 2.当所有母线都绑定为跨 + */ + else { + //查询所有变电站下母线信息 + List upVoltage = lineMapper.getvoltage(subId, 0); + if (merge.size() == ids.size()) { + String s = mostBefore(pqsTflgasses); + downVoltage = downVoltage.stream().filter(x -> x.getId().equals(s)).collect(Collectors.toList()); + + } + //下节点id + List downIDs = pqsTflgasses.stream().map(PqsTflgass::getLogicNext).collect(Collectors.toList()); + List downVOList = downVoltage.stream().filter(x -> !downIDs.contains(x.getId())).collect(Collectors.toList()); + + List upList = TreedChildren(upVoltage, "变压器上节点设备树", null); + voltage.put("upNode", upList); + List downList = TreedChildren(downVOList, "变压器下节点设备树", subId); + voltage.put("downNode", downList); + return voltage; + } + } } - return voltage; } @@ -244,8 +380,9 @@ public class PqsTransformerServiceImpl extends ServiceImpl TreedChildren(List children, String name, String subId) { @@ -288,26 +425,145 @@ public class PqsTransformerServiceImpl extends ServiceImpl pqsTflgasses) { + private static String mostBefore(List pqsTflgasses) { String logicBefore = null; for (PqsTflgass pqsTflgass : pqsTflgasses) { //根据获取的的上节点判断是否存在,这上节点是否是尾节点 if (ObjectUtil.isNull(logicBefore)) { logicBefore = pqsTflgass.getLogicBefore(); } else { - String logicNext = pqsTflgass.getLogicNext(); - if (logicBefore.equals(logicNext)) { - logicBefore = pqsTflgass.getLogicBefore(); + while (true) { + for (int i1 = 0; i1 < pqsTflgasses.size(); i1++) { + String logicNext = pqsTflgasses.get(i1).getLogicNext(); + if (logicBefore.equals(logicNext)) { + logicBefore = pqsTflgasses.get(i1).getLogicBefore(); + break; + } else { + if (i1 == pqsTflgasses.size()) { + break; + } + } + } + break; } } } return logicBefore; } + /** + * 查找最底层节点信息 + * + * @param pqsTflgasses + * @return + */ + private static String mostNext(List pqsTflgasses) { + String logicNext = null; + for (PqsTflgass pqsTflgass : pqsTflgasses) { + //根据获取的的上节点判断是否存在,这上节点是否是尾节点 + if (ObjectUtil.isNull(logicNext)) { + logicNext = pqsTflgass.getLogicNext(); + } else { + while (true) { + for (int i1 = 0; i1 < pqsTflgasses.size(); i1++) { + String logicBefore = pqsTflgasses.get(i1).getLogicBefore(); + if (logicNext.equals(logicBefore)) { + logicNext = pqsTflgasses.get(i1).getLogicNext(); + break; + } else { + if (i1 == pqsTflgasses.size()) { + break; + } + } + } + break; + } + } + } + return logicNext; + } + + /** + * 判断是否已经成为链行 + * + * @param pqsTflgasses + * @return + */ + private static String chain(List pqsTflgasses) { + if(pqsTflgasses.size()<2){ + return null; + } + String logicNext = null; + for (PqsTflgass pqsTflgass : pqsTflgasses) { + //根据获取的的下节点判断是否存在,这下节点是否是首节点 + if (ObjectUtil.isNull(logicNext)) { + logicNext = pqsTflgass.getLogicNext(); + } else { + while (true) { + for (int i1 = 0; i1 < pqsTflgasses.size(); i1++) { + String logicBefore = pqsTflgasses.get(i1).getLogicBefore(); + if (logicNext.equals(logicBefore)) { + logicNext = pqsTflgasses.get(i1).getLogicNext(); + break; + } else { + if (i1 == pqsTflgasses.size() - 1) { + return logicNext; + } + } + } + break; + } + + } + } + return logicNext; + } + + private static String chain2(List pqsTflgasses) { + if(pqsTflgasses.size()<2){ + return null; + } + String logicBefore = null; + for (PqsTflgass pqsTflgass : pqsTflgasses) { + //根据获取的的下节点判断是否存在,这下节点是否是首节点 + if (ObjectUtil.isNull(logicBefore)) { + logicBefore = pqsTflgass.getLogicBefore(); + } else { + while (true) { + for (int i1 = 0; i1 < pqsTflgasses.size(); i1++) { + String logicNext = pqsTflgasses.get(i1).getLogicNext(); + if (logicBefore.equals(logicNext)) { + logicBefore = pqsTflgasses.get(i1).getLogicBefore(); + break; + } else { + if (i1 == pqsTflgasses.size() - 1) { + return logicBefore; + } + } + } + break; + } + + } + } + return logicBefore; + } + + /** + * 根据母线获取信息 + * + * @param id + * @return + */ + public TerminalTree addTree(String id) { + List getvoltage = lineMapper.getvoltage(id, 2); + getvoltage.get(0).setLevel(5); + return getvoltage.get(0); + } } diff --git a/pqs-system/system-api/src/main/java/com/njcn/system/enums/DicDataEnum.java b/pqs-system/system-api/src/main/java/com/njcn/system/enums/DicDataEnum.java index bbef1914e..21e08ac12 100644 --- a/pqs-system/system-api/src/main/java/com/njcn/system/enums/DicDataEnum.java +++ b/pqs-system/system-api/src/main/java/com/njcn/system/enums/DicDataEnum.java @@ -227,6 +227,9 @@ public enum DicDataEnum { DY_10KV("交流10kV", "10kV"), DY_35KV("交流35kV", "35kV"), DY_110KV("交流110kV", "110kV"), + DY_220KV("交流220kV", "220kV"), + DY_500KV("交流500kV", "500kV"), + DY_DC_500kV("直流500kV", "DC_500kV"), /**