Jelajahi Sumber

故障区段列表取值优化

liuaini 1 bulan lalu
induk
melakukan
5ab179fa04

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

@@ -7,16 +7,14 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.hdkj.lt.bf.mapper.*;
+import com.hdkj.lt.core.bizms.modle.po.FeederTopo;
 import com.hdkj.lt.feign.IFaultCreateClient;
 import com.hdkj.lt.modle.dto.fault.RegenerateFaultRequest;
 import com.hdkj.lt.base.exception.BusinessException;
 import com.hdkj.lt.bf.entity.dto.HasDataTagDTO;
 import com.hdkj.lt.bf.entity.vo.FhzgFaultPowerCutSectionVO;
 import com.hdkj.lt.bf.entity.vo.FhzgFaultPowerCutVO;
-import com.hdkj.lt.bf.mapper.FaultAwaitTransferUsersMapper;
-import com.hdkj.lt.bf.mapper.FaultDistMappingFileMapper;
-import com.hdkj.lt.bf.mapper.FaultPowerCutMapper;
-import com.hdkj.lt.bf.mapper.FhzgFaultSwitchInfoListMapper;
 import com.hdkj.lt.bf.service.*;
 import com.hdkj.lt.bf.service.aspect.UserCountyCodeAuto;
 import com.hdkj.lt.core.bizms.modle.dto.FhzgFaultAwaitTransferUsersCountDTO;
@@ -37,6 +35,7 @@ import java.math.BigDecimal;
 import java.util.*;
 import java.util.function.Function;
 import java.util.stream.Collectors;
+import java.util.stream.Stream;
 
 /**
  * <p>
@@ -74,6 +73,8 @@ public class FaultPowerCutServiceImpl extends ServiceImpl<FaultPowerCutMapper, F
 
     @Autowired
     IFaultCreateClient faultCreateClient;
+    @Autowired
+    private FeederTopoMapper feederTopoMapper;
 
     @Override
     @UserCountyCodeAuto(sourceFiled = "countyCode", targetFiled = "countyCodeList")
@@ -92,18 +93,23 @@ public class FaultPowerCutServiceImpl extends ServiceImpl<FaultPowerCutMapper, F
             List<Long> idList = faultList.stream().map(FaultPowerCut::getId).collect(Collectors.toList());
             //获取开关信息
             List<FhzgFaultPowerCutSectionVO> faultPowerCutSectionList = switchInfoListMapper.querySectionsSwitchByFaultId(idList);
-            Map<String, List<FhzgFaultPowerCutSectionVO>> sectionMap = faultPowerCutSectionList.stream().collect(Collectors.groupingBy(
-                    FhzgFaultPowerCutSectionVO::getFaultNo,
-                    Collectors.collectingAndThen(
-                            Collectors.toList(),
-                            ls -> ls.stream().sorted(
-                                            Comparator.comparing(FhzgFaultPowerCutSectionVO::getSectionStatus, Comparator.reverseOrder())
-                                                    .thenComparing(FhzgFaultPowerCutSectionVO::getCreateTime, Comparator.reverseOrder()))
-                                    .collect(Collectors.toList())))
-            );
             //查询计划对应的线路图信息
             List<FhzgFaultDistMappingFileDTO> fileList = faultDistMappingFileMapper.getMappingFileByPlanId(idList);
             if (CollUtil.isNotEmpty(faultPowerCutSectionList)) {
+                List<String> allSwitchIdList = faultPowerCutSectionList.stream().flatMap(i -> Stream.of(i.getStartSwitch(), i.getEndSwitch())).filter(f -> f != null && !f.isEmpty()).collect(Collectors.toList());
+                //根据开关id获取名称
+                Map<String, String> switchNameMap = feederTopoMapper.selectList(new LambdaQueryWrapper<FeederTopo>().in(FeederTopo::getPsrId, allSwitchIdList)).stream().collect(Collectors.toMap(FeederTopo::getPsrId, FeederTopo::getName));
+                Map<String, List<FhzgFaultPowerCutSectionVO>> sectionMap = faultPowerCutSectionList.stream()
+                        .peek(p->p.setStartSwitchName(switchNameMap.get(p.getStartSwitch())).setEndSwitchName(switchNameMap.get(p.getEndSwitch()))
+                        ).collect(Collectors.groupingBy(
+                                FhzgFaultPowerCutSectionVO::getFaultNo,
+                                Collectors.collectingAndThen(
+                                        Collectors.toList(),
+                                        ls -> ls.stream().sorted(
+                                                        Comparator.comparing(FhzgFaultPowerCutSectionVO::getSectionStatus, Comparator.reverseOrder())
+                                                                .thenComparing(FhzgFaultPowerCutSectionVO::getCreateTime, Comparator.reverseOrder()))
+                                                .collect(Collectors.toList())))
+                        );
                 Map<Long, List<FhzgFaultDistMappingFileDTO>> fileListMap = fileList.stream().collect(Collectors.groupingBy(FhzgFaultDistMappingFileDTO::getFaultId));
                 list.forEach(e -> {
                     Long id = e.getId();

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

@@ -15,14 +15,12 @@
         ,fault_id,all_switch_info_list_json
     </sql>
     <select id="querySectionsSwitchByFaultId" resultType="com.hdkj.lt.bf.entity.vo.FhzgFaultPowerCutSectionVO">
-        select pc.fault_no, cs.fault_id, pc.fault_source, pc.power_on_success,
-               cs.start_switch, cs.end_switch, ft1.name start_switch_name, ft2.name end_switch_name,
+        select pc.fault_no, pc.id fault_id, pc.fault_source, pc.power_on_success,
+               cs.start_switch, cs.end_switch,
                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
-                left join dwd_shb_ds_switch_base ft1 on cs.start_switch = ft1.psr_id
-                left join dwd_shb_ds_switch_base ft2 on cs.end_switch = ft2.psr_id
         <where>
             cs.fault_id in
             <foreach collection="faultIdList" open="(" item="faultId" separator="," close=")">
@@ -30,4 +28,5 @@
             </foreach>
         </where>
     </select>
+
 </mapper>