|
|
@@ -8,6 +8,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
|
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
|
|
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;
|
|
|
@@ -20,14 +21,14 @@ import com.hdkj.lt.core.bizms.modle.dto.FhzgFaultDistCustomerDTO;
|
|
|
import com.hdkj.lt.core.bizms.modle.dto.FhzgFaultDistMappingFileDTO;
|
|
|
import com.hdkj.lt.core.bizms.modle.po.fault.*;
|
|
|
import com.hdkj.lt.modle.dto.jsty.AllSwitchInfoListDTO;
|
|
|
+import com.ruoyi.common.core.utils.StringUtils;
|
|
|
import lombok.extern.slf4j.Slf4j;
|
|
|
+import org.apache.commons.compress.utils.Lists;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
|
|
|
import java.math.BigDecimal;
|
|
|
-import java.util.List;
|
|
|
-import java.util.Map;
|
|
|
-import java.util.Objects;
|
|
|
+import java.util.*;
|
|
|
import java.util.function.Function;
|
|
|
import java.util.stream.Collectors;
|
|
|
|
|
|
@@ -69,32 +70,78 @@ public class FaultPowerCutServiceImpl extends ServiceImpl<FaultPowerCutMapper, F
|
|
|
Page<FhzgFaultPowerCutVO> page = new Page<>();
|
|
|
page.setCurrent(obj.getPageNum());
|
|
|
page.setSize(obj.getPageSize());
|
|
|
- List<FhzgFaultPowerCutVO> list = baseMapper.selectSchemeList(page, obj);
|
|
|
-
|
|
|
- if (CollUtil.isNotEmpty(list)) {
|
|
|
+// List<FhzgFaultPowerCutVO> list = baseMapper.selectSchemeList(page, obj);
|
|
|
+ List<FhzgFaultPowerCutVO> list2 = baseMapper.selectSchemeList2(page, obj);
|
|
|
+
|
|
|
+ if (CollUtil.isNotEmpty(list2)) {
|
|
|
+ //获取故障停电主键id,grid_pd_outage_event_base.id
|
|
|
+ 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);
|
|
|
+ Map<String, List<FhzgFaultPowerCutSectionVO>> sectionMap = faultPowerCutSectionList.stream().collect(Collectors.groupingBy(
|
|
|
+ FhzgFaultPowerCutSectionVO::getFaultNo,
|
|
|
+ Collectors.collectingAndThen(
|
|
|
+ Collectors.toList(),
|
|
|
+ list->list.stream().sorted(
|
|
|
+ Comparator.comparing(FhzgFaultPowerCutSectionVO::getSectionStatus,Comparator.reverseOrder())
|
|
|
+ .thenComparing(FhzgFaultPowerCutSectionVO::getCreateTime,Comparator.reverseOrder()))
|
|
|
+ .collect(Collectors.toList())))
|
|
|
+ );
|
|
|
//查询计划对应的线路图信息
|
|
|
- List<Long> idList = list.stream().map(FhzgFaultPowerCutVO::getId).collect(Collectors.toList());
|
|
|
List<FhzgFaultDistMappingFileDTO> fileList = faultDistMappingFileMapper.getMappingFileByPlanId(idList);
|
|
|
- if (CollUtil.isNotEmpty(fileList)) {
|
|
|
- Map<Long, List<FhzgFaultDistMappingFileDTO>> fileListMap = fileList.stream().collect(Collectors.groupingBy(FhzgFaultDistMappingFileDTO::getFaultId));
|
|
|
- list.forEach(e -> {
|
|
|
- e.setFileList(fileListMap.get(e.getId()));
|
|
|
- });
|
|
|
+ if (CollUtil.isNotEmpty(faultPowerCutSectionList)) {
|
|
|
+ Map<Long, List<FhzgFaultDistMappingFileDTO>> fileListMap = fileList.stream().collect(Collectors.groupingBy(FhzgFaultDistMappingFileDTO::getFaultId));
|
|
|
+ list2.forEach(e -> {
|
|
|
+ //故障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()));
|
|
|
+ });
|
|
|
+ e.setSectionList(faultPowerCuts);
|
|
|
+ });
|
|
|
} else {
|
|
|
- log.info("未查询到故障停电文件列表faultIdList:{}", idList);
|
|
|
+ log.info("未查询到故障停电开关信息faultIdList:{}", idList);
|
|
|
}
|
|
|
//查询统计,用户数量,重要用户数量,敏感用户数量,用户负荷
|
|
|
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));
|
|
|
- list.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());//保电用户数量
|
|
|
+ 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 {
|
|
|
@@ -104,9 +151,14 @@ public class FaultPowerCutServiceImpl extends ServiceImpl<FaultPowerCutMapper, F
|
|
|
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));
|
|
|
- list.forEach(e -> {
|
|
|
- FaultPowerCutPvUsers faultPowerCutPvUsers = cutPvUsersMap.get(e.getId());
|
|
|
- Integer count = Objects.isNull(faultPowerCutPvUsers) ? 0 : Objects.isNull(faultPowerCutPvUsers.getCount()) ? 0 : faultPowerCutPvUsers.getCount();
|
|
|
+ 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);
|
|
|
});
|
|
|
} else {
|
|
|
@@ -116,8 +168,9 @@ public class FaultPowerCutServiceImpl extends ServiceImpl<FaultPowerCutMapper, F
|
|
|
} else {
|
|
|
log.info("查询故障停电数据为空condition:{}", obj);
|
|
|
}
|
|
|
- list.stream().filter(i -> i.getUserLoads() != null).forEach(i->i.setUserLoads(i.getUserLoads().multiply(new BigDecimal("1000"))));
|
|
|
- return page.setRecords(list);
|
|
|
+ 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);
|
|
|
}
|
|
|
|
|
|
@Override
|