Bladeren bron

故障区段列表改造

liuaini 1 maand geleden
bovenliggende
commit
5ac1565e58

+ 56 - 0
services/load-transfer-bf/src/main/java/com/hdkj/lt/bf/entity/vo/FhzgFaultPowerCutSectionVO.java

@@ -1,9 +1,15 @@
 package com.hdkj.lt.bf.entity.vo;
 
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.fasterxml.jackson.databind.annotation.JsonSerialize;
+import com.hdkj.lt.base.serializer.BigDecimalSerializer;
 import com.hdkj.lt.core.bizms.modle.dto.FhzgFaultDistMappingFileDTO;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 import lombok.experimental.Accessors;
 
+import java.math.BigDecimal;
 import java.time.LocalDateTime;
 import java.util.List;
 
@@ -13,25 +19,75 @@ import java.util.List;
  */
 @Data
 @Accessors(chain = true)
+@ApiModel(value = "故障区段信息")
 public class FhzgFaultPowerCutSectionVO  {
 
     //fhzg_fault_power_cut.fault_no
+    @ApiModelProperty("故障id")
     private String faultNo;
     //fhzg_fault_power_cut.id
+    @ApiModelProperty("id")
     private Long faultId;
     //开始开关
+    @ApiModelProperty("开始开关")
     private String startSwitch;
     //结束开关
+    @ApiModelProperty("结束开关")
     private String endSwitch;
     //开始开关名称
+    @ApiModelProperty("开始开关名称")
     private String startSwitchName;
     //结束开关名称
+    @ApiModelProperty("结束开关名称")
     private String endSwitchName;
     //故障区段状态(默认0:未确认,1:已确认)
+    @ApiModelProperty("故障区段状态(默认0:未确认,1:已确认)")
     private Integer sectionStatus;
     //线路文件列表
+    @ApiModelProperty("线路文件列表")
     private List<FhzgFaultDistMappingFileDTO> fileList;
     //创建时间
+    @ApiModelProperty("创建时间")
     private LocalDateTime createTime;
 
+    /**
+     * 方案生成时间
+     */
+    @ApiModelProperty("方案生成时间")
+    private String schemeCreateTime;
+
+    /**
+     * 方案生成时长
+     */
+    @ApiModelProperty("方案生成时长")
+    private String schemeCreateDuration;
+
+    // 光伏用户
+    @ApiModelProperty("光伏用户")
+    private Integer pvUsers;
+
+
+    //待转供用户数量
+    @ApiModelProperty("待转供用户数量")
+    private Integer userCount;
+
+    // 重要用户
+    @ApiModelProperty("重要用户")
+    private Integer transferCriticalUsers;
+
+    // 敏感用户
+    @ApiModelProperty("敏感用户")
+    private Integer transferSensitiveUsers;
+
+    //用户负荷
+    @ApiModelProperty("用户负荷")
+    @JsonSerialize(using = BigDecimalSerializer.Keep6DecimalSerializer.class)
+    private BigDecimal userLoads;
+
+
+
+    //保电用户
+    @ApiModelProperty("保电用户")
+    private Integer protectUsers;
+
 }

+ 12 - 0
services/load-transfer-bf/src/main/java/com/hdkj/lt/bf/entity/vo/FhzgFaultPowerCutVO.java

@@ -3,6 +3,7 @@ package com.hdkj.lt.bf.entity.vo;
 import com.fasterxml.jackson.databind.annotation.JsonSerialize;
 import com.hdkj.lt.base.serializer.BigDecimalSerializer;
 import com.hdkj.lt.core.bizms.modle.po.fault.FaultPowerCut;
+import io.swagger.annotations.ApiModelProperty;
 import lombok.AllArgsConstructor;
 import lombok.Data;
 import lombok.NoArgsConstructor;
@@ -21,34 +22,45 @@ import java.util.List;
 public class FhzgFaultPowerCutVO extends FaultPowerCut {
 
     // 光伏用户
+    @ApiModelProperty("光伏用户")
     private Integer pvUsers;
 
     // 中压光伏用户
+    @ApiModelProperty("中压光伏用户")
     private Integer mpvUsers;
 
     // 低压光伏用户
+    @ApiModelProperty("低压光伏用户")
     private Integer lpvUsers;
 
     // 负荷用户
+    @ApiModelProperty("负荷用户")
     private Integer transferUsers;
 
     // 重要用户
+    @ApiModelProperty("重要用户")
     private Integer transferCriticalUsers;
 
     // 敏感用户
+    @ApiModelProperty("敏感用户")
     private Integer transferSensitiveUsers;
 
     //用户负荷
+    @ApiModelProperty("用户负荷")
     @JsonSerialize(using = BigDecimalSerializer.Keep6DecimalSerializer.class)
     private BigDecimal userLoads;
 
     //用户数量
+    @ApiModelProperty("用户数量")
     private Integer userCount;
 
     //保电用户
+    @ApiModelProperty("保电用户")
     private Integer protectUsers;
 
+    @ApiModelProperty("故障区段列表")
     private List<FhzgFaultPowerCutSectionVO> sectionList;
 
+    @ApiModelProperty("故障id")
     private String faultId;
 }

+ 29 - 58
services/load-transfer-bf/src/main/java/com/hdkj/lt/bf/service/impl/FaultPowerCutServiceImpl.java

@@ -89,9 +89,6 @@ public class FaultPowerCutServiceImpl extends ServiceImpl<FaultPowerCutMapper, F
             List<String> faultNoList = list2.stream().map(FhzgFaultPowerCutVO::getFaultId).collect(Collectors.toList());
             //根据faultId获取idList,fhzg_fault_power_cut.id
             List<FaultPowerCut> faultList = this.list(new LambdaQueryWrapper<FaultPowerCut>().in(FaultPowerCut::getFaultNo, faultNoList));
-            //根据FaultNo分组
-            Map<String,List<Long>> faultCollect = faultList.stream().collect(Collectors.groupingBy(FaultPowerCut::getFaultNo,
-                    Collectors.mapping(FaultPowerCut::getId,Collectors.toList())));
             List<Long> idList = faultList.stream().map(FaultPowerCut::getId).collect(Collectors.toList());
             //获取开关信息
             List<FhzgFaultPowerCutSectionVO> faultPowerCutSectionList = switchInfoListMapper.querySectionsSwitchByFaultId(idList);
@@ -112,9 +109,7 @@ public class FaultPowerCutServiceImpl extends ServiceImpl<FaultPowerCutMapper, F
                    //故障id
                    String fId = e.getFaultId();
                    List<FhzgFaultPowerCutSectionVO> faultPowerCuts = null != sectionMap.get(fId) ? sectionMap.get(fId) : new ArrayList<>();
-                   faultPowerCuts.forEach(section->{
-                       Optional.of(fileListMap).ifPresent(f->section.setFileList(Objects.nonNull(f.get(section.getFaultId()))?f.get(section.getFaultId()): Lists.newArrayList()));
-                   });
+                   faultPowerCuts.forEach(section-> Optional.of(fileListMap).ifPresent(f->section.setFileList(Objects.nonNull(f.get(section.getFaultId()))?f.get(section.getFaultId()): Lists.newArrayList())));
                    e.setSectionList(faultPowerCuts);
                });
             } else {
@@ -122,65 +117,41 @@ public class FaultPowerCutServiceImpl extends ServiceImpl<FaultPowerCutMapper, F
             }
             //查询统计,用户数量,重要用户数量,敏感用户数量,用户负荷
             List<FhzgFaultAwaitTransferUsersCountDTO> usersCountDTOList = faultAwaitTransferUsersMapper.selectAwaitUserCountByFaultId(idList);
-            if (CollUtil.isNotEmpty(usersCountDTOList)) {
-                Map<Long, FhzgFaultAwaitTransferUsersCountDTO> fusersCountMap = usersCountDTOList.stream().collect(Collectors.toMap(FhzgFaultAwaitTransferUsersCountDTO::getFaultId, Function.identity(), (k1, k2) -> k2));
-                list2.forEach(e -> {
-//                    FhzgFaultAwaitTransferUsersCountDTO userCountDTO = fusersCountMap.get(e.getId());
-//                    if (!Objects.isNull(userCountDTO)) {
-//                        e.setTransferCriticalUsers(userCountDTO.getTransferCriticalUsers());//重要用户数量
-//                        e.setTransferSensitiveUsers(userCountDTO.getTransferSensitiveUsers());//敏感用户
-//                        e.setUserCount(userCountDTO.getUserCount());//用户数量
-//                        e.setUserLoads(userCountDTO.getUserLoads());//用户负荷
-//                        e.setProtectUsers(userCountDTO.getProtectUsers());//保电用户数量
-//                    }
-                    //故障id
-                    String fId = e.getFaultId();
-                    List<Long> ids = faultCollect.get(fId);
-                    List<FhzgFaultAwaitTransferUsersCountDTO> dtoList = ids.stream().map(fusersCountMap::get).filter(Objects::nonNull).collect(Collectors.toList());
-                    if(!dtoList.isEmpty()){
-                        Integer maxTransferCriticalUsers = dtoList.stream().map(FhzgFaultAwaitTransferUsersCountDTO::getTransferCriticalUsers)
-                                .filter(Objects::nonNull).max(Integer::compareTo).orElse(null);
-                        Integer maxTransferSensitiveUsers = dtoList.stream().map(FhzgFaultAwaitTransferUsersCountDTO::getTransferSensitiveUsers)
-                                .filter(Objects::nonNull).max(Integer::compareTo).orElse(null);
-                        Integer maxUserCount = dtoList.stream().map(FhzgFaultAwaitTransferUsersCountDTO::getUserCount)
-                                .filter(Objects::nonNull).max(Integer::compareTo).orElse(null);
-                        BigDecimal maxUserLoads = dtoList.stream().map(FhzgFaultAwaitTransferUsersCountDTO::getUserLoads)
-                                .filter(Objects::nonNull).max(BigDecimal::compareTo).orElse(null);
-                        Integer maxProtectUsers = dtoList.stream().map(FhzgFaultAwaitTransferUsersCountDTO::getProtectUsers)
-                                .filter(Objects::nonNull).max(Integer::compareTo).orElse(null);
-                        e.setTransferCriticalUsers(maxTransferCriticalUsers);//重要用户数量
-                        e.setTransferSensitiveUsers(maxTransferSensitiveUsers);//敏感用户
-                        e.setUserCount(maxUserCount);//用户数量
-                        e.setUserLoads(maxUserLoads);//用户负荷
-                        e.setProtectUsers(maxProtectUsers);//保电用户数量
-                    }
-                });
-            } else {
-                log.info("未查询到待转供用户数量faultIdList:{}", idList);
-            }
             //查询停电计划对应的光伏用户数量
             List<FaultPowerCutPvUsers> countCutPvUsers = faultPowerCutPvUsersService.countByFaultId(idList);
-            if (CollUtil.isNotEmpty(countCutPvUsers)) {
-                Map<Long, FaultPowerCutPvUsers> cutPvUsersMap = countCutPvUsers.stream().collect(Collectors.toMap(FaultPowerCutPvUsers::getFaultId, Function.identity(), (k1, k2) -> k2));
-                list2.forEach(e -> {
-//                    FaultPowerCutPvUsers faultPowerCutPvUsers = cutPvUsersMap.get(e.getId());
-//                    Integer count = Objects.isNull(faultPowerCutPvUsers) ? 0 : Objects.isNull(faultPowerCutPvUsers.getCount()) ? 0 : faultPowerCutPvUsers.getCount();
-//                    e.setPvUsers(count);
-                    String fId = e.getFaultId();
-                    List<Long> ids = faultCollect.get(fId);
-                    List<FaultPowerCutPvUsers> usersList = ids.stream().map(cutPvUsersMap::get).filter(Objects::nonNull).collect(Collectors.toList());
-                    Integer count = usersList.stream().map(FaultPowerCutPvUsers::getCount).filter(Objects::nonNull).max(Integer::compareTo).orElse(0);
-                    e.setPvUsers(count);
+
+            Map<Long, FhzgFaultAwaitTransferUsersCountDTO> fusersCountMap = usersCountDTOList.stream().collect(Collectors.toMap(FhzgFaultAwaitTransferUsersCountDTO::getFaultId, Function.identity(), (k1, k2) -> k2));
+            Map<Long, FaultPowerCutPvUsers> cutPvUsersMap = countCutPvUsers.stream().collect(Collectors.toMap(FaultPowerCutPvUsers::getFaultId, Function.identity(), (k1, k2) -> k2));
+
+            list2.forEach(e -> {
+            //                    FhzgFaultAwaitTransferUsersCountDTO userCountDTO = fusersCountMap.get(e.getId());
+            //                    if (!Objects.isNull(userCountDTO)) {
+            //                        e.setTransferCriticalUsers(userCountDTO.getTransferCriticalUsers());//重要用户数量
+            //                        e.setTransferSensitiveUsers(userCountDTO.getTransferSensitiveUsers());//敏感用户
+            //                        e.setUserCount(userCountDTO.getUserCount());//用户数量
+            //                        e.setUserLoads(userCountDTO.getUserLoads());//用户负荷
+            //                        e.setProtectUsers(userCountDTO.getProtectUsers());//保电用户数量
+            //                    }
+                List<FhzgFaultPowerCutSectionVO> sectionList = e.getSectionList();
+                BigDecimal multiplyNumber = new BigDecimal("1000");
+                sectionList.forEach(section->{
+                    FhzgFaultAwaitTransferUsersCountDTO userCountDTO = fusersCountMap.get(section.getFaultId());
+                    FaultPowerCutPvUsers faultPowerCutPvUsers = cutPvUsersMap.get(section.getFaultId());
+                    Integer count = Objects.isNull(faultPowerCutPvUsers) ? 0 : Objects.isNull(faultPowerCutPvUsers.getCount()) ? 0 : faultPowerCutPvUsers.getCount();
+                    section.setPvUsers(count);
+                    if (Objects.nonNull(userCountDTO)) {
+                        section.setTransferCriticalUsers(userCountDTO.getTransferCriticalUsers());//重要用户数量
+                        section.setTransferSensitiveUsers(userCountDTO.getTransferSensitiveUsers());//敏感用户
+                        section.setUserCount(userCountDTO.getUserCount());//用户数量
+                        section.setUserLoads(Objects.isNull(userCountDTO.getUserLoads())?BigDecimal.ZERO:userCountDTO.getUserLoads().multiply(multiplyNumber));//用户负荷
+                        section.setProtectUsers(userCountDTO.getProtectUsers());//保电用户数量
+                    }
                 });
-            } else {
-                log.info("未查询到光伏用户数量faultIdList:{}", idList);
-            }
+            });
 
         } else {
             log.info("查询故障停电数据为空condition:{}", obj);
         }
-        BigDecimal multiplyNumber = new BigDecimal("1000");
-        list2 = list2.stream().filter(i -> i.getUserLoads()!= null && i.getUserLoads().compareTo(BigDecimal.ZERO) != 0).peek(i->i.setUserLoads(i.getUserLoads().multiply(multiplyNumber))).collect(Collectors.toList());
         return page.setRecords(list2);
     }
 

+ 1 - 1
services/load-transfer-bf/src/main/resources/mapper/FhzgFaultSwitchInfoListMapper.xml

@@ -17,7 +17,7 @@
     <select id="querySectionsSwitchByFaultId" resultType="com.hdkj.lt.bf.entity.vo.FhzgFaultPowerCutSectionVO">
         select pc.fault_no,cs.fault_id,cs.start_switch,cs.end_switch,
                ft1.name start_switch_name,ft2.name end_switch_name,
-               pc.create_time,pc.section_status
+               pc.create_time,pc.section_status,pc.scheme_create_time,pc.scheme_create_duration
         from
             fhzg_fault_power_cut pc
                 INNER JOIN fhzg_fault_power_cut_switch cs on cs.fault_id=pc.id