diff --git a/pqs-device/pq-device/pq-device-boot/src/main/java/com/njcn/device/pq/service/impl/DataVerifyServiceImpl.java b/pqs-device/pq-device/pq-device-boot/src/main/java/com/njcn/device/pq/service/impl/DataVerifyServiceImpl.java index 92e69e07b..db25d397c 100644 --- a/pqs-device/pq-device/pq-device-boot/src/main/java/com/njcn/device/pq/service/impl/DataVerifyServiceImpl.java +++ b/pqs-device/pq-device/pq-device-boot/src/main/java/com/njcn/device/pq/service/impl/DataVerifyServiceImpl.java @@ -47,6 +47,7 @@ import com.njcn.supervision.pojo.vo.user.UserLedgerVO; import com.njcn.system.api.DicDataFeignClient; import com.njcn.system.api.DictTreeFeignClient; import com.njcn.system.enums.DicDataEnum; +import com.njcn.system.enums.DicDataTypeEnum; import com.njcn.system.pojo.po.DictData; import com.njcn.system.pojo.po.SysDicTreePO; import lombok.RequiredArgsConstructor; @@ -100,12 +101,13 @@ public class DataVerifyServiceImpl extends ServiceImpl monitorIds = commTerminalService.getRunMonitorByDept(monitorBaseParam); - if(CollUtil.isEmpty(monitorIds)){ + if (CollUtil.isEmpty(monitorIds)) { throw new BusinessException(DeviceResponseEnum.QUERY_LINE_DATA_EMPTY); } List dataVerifyList = commQuery(monitorIds, monitorBaseParam); @@ -135,9 +137,9 @@ public class DataVerifyServiceImpl extends ServiceImpl dataVerifyList = this.list(lambdaQueryWrapper); Map> dataMap = dataVerifyList.stream().collect(Collectors.groupingBy(it -> it.getTime().format(DATE_FORMAT))); @@ -160,30 +162,30 @@ public class DataVerifyServiceImpl extends ServiceImpl monitorAbnormalTableDetail(MonitorBaseParam monitorBaseParam) { - Map dtoMap = getStandRange(); + Map dtoMap = getStandRange(); List result = new ArrayList<>(); LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>(); lambdaQueryWrapper.between(DataVerify::getTime, DateUtil.beginOfDay(DateUtil.parse(monitorBaseParam.getSearchBeginTime())), DateUtil.endOfDay(DateUtil.parse(monitorBaseParam.getSearchBeginTime()))) .in(DataVerify::getLineId, monitorBaseParam.getMonitorIds()).orderByAsc(DataVerify::getTime); - if(StrUtil.isNotBlank(monitorBaseParam.getTargetKey())){ + if (StrUtil.isNotBlank(monitorBaseParam.getTargetKey())) { String[] queryTarget = monitorBaseParam.getTargetKey().split(SEPARATOR); - lambdaQueryWrapper.eq(DataVerify::getIndexCode,queryTarget[0]).eq(DataVerify::getIndexTable,queryTarget[1]); + lambdaQueryWrapper.eq(DataVerify::getIndexCode, queryTarget[0]).eq(DataVerify::getIndexTable, queryTarget[1]); } List dataVerifyList = this.list(lambdaQueryWrapper); - Map> listMap = dataVerifyList.stream().collect(Collectors.groupingBy(DataVerify::getTime,TreeMap::new, + Map> listMap = dataVerifyList.stream().collect(Collectors.groupingBy(DataVerify::getTime, TreeMap::new, Collectors.toList())); listMap.forEach((time, timeList) -> { Map> indexMap = timeList.stream().collect(Collectors.groupingBy(it -> it.getIndexCode() + SEPARATOR + it.getIndexTable() + SEPARATOR + it.getIndexName())); indexMap.forEach((target, list) -> { String[] temKey = target.split(SEPARATOR); - PqReasonableRangeDto pqReasonableRangeDto = dtoMap.get(temKey[0] +SEPARATOR+ temKey[1]); + PqReasonableRangeDto pqReasonableRangeDto = dtoMap.get(temKey[0] + SEPARATOR + temKey[1]); String unit; - if(StrUtil.isNotBlank(pqReasonableRangeDto.getUnit())){ + if (StrUtil.isNotBlank(pqReasonableRangeDto.getUnit())) { unit = pqReasonableRangeDto.getUnit(); - }else { + } else { unit = ""; } @@ -194,7 +196,7 @@ public class DataVerifyServiceImpl extends ServiceImpl { switch (it.getValueType()) { case "AVG": @@ -310,6 +312,47 @@ public class DataVerifyServiceImpl extends ServiceImpl monitorLimitTableDetail(MonitorBaseParam monitorBaseParam) { List result = new ArrayList<>(); - LineCountEvaluateParam lineCountEvaluateParam = new LineCountEvaluateParam(); - lineCountEvaluateParam.setLineId(Stream.of(monitorBaseParam.getMonitorIds().get(0)).collect(Collectors.toList())); + lineCountEvaluateParam.setLineId(Collections.singletonList(monitorBaseParam.getMonitorIds().get(0))); lineCountEvaluateParam.setStartTime(monitorBaseParam.getSearchBeginTime()); lineCountEvaluateParam.setEndTime(monitorBaseParam.getSearchBeginTime()); List dtoList = dataLimitRateDetailFeignClient.getRawData(lineCountEvaluateParam).getData(); + if (CollUtil.isEmpty(dtoList)) { + return result; + } - if (CollUtil.isNotEmpty(dtoList)) { - DataLimitRateDetailDto dto = dtoList.get(0); - JSONArray jsonArray = new JSONArray(); - List specialTargetList = new ArrayList<>(); - - if (monitorBaseParam.getTargetKey().equals(DicDataEnum.VOLTAGE_DEV.getCode())) { - //电压偏差 - jsonArray = new JSONArray(dto.getVoltageDevOvertime()); - } else if (monitorBaseParam.getTargetKey().equals(DicDataEnum.FLICKER.getCode())) { - jsonArray = new JSONArray(dto.getFlickerOvertime()); - }else if (monitorBaseParam.getTargetKey().equals(DicDataEnum.phase_Voltage.getCode())) { - jsonArray = new JSONArray(dto.getUbalanceOvertime()); - } else if (monitorBaseParam.getTargetKey().equals(DicDataEnum.FREQUENCY_DEV.getCode())) { - jsonArray = new JSONArray(dto.getFreqDevOvertime()); - } else if (monitorBaseParam.getTargetKey().equals(DicDataEnum.NEG_CURRENT.getCode())) { - jsonArray = new JSONArray(dto.getINegOvertime()); - } else if (monitorBaseParam.getTargetKey().equals(DicDataEnum.THD_V.getCode())) { - jsonArray = new JSONArray(dto.getUaberranceOvertime()); - } else if (monitorBaseParam.getTargetKey().equals(DicDataEnum.HARMONIC_VOLTAGE.getCode())) { - for (int i = 2; i <= 25; i++) { - String uHarmKey = "uharm" + i + "Overtime"; - String json = getFieldValueForDetail(dto, uHarmKey); - if (StrUtil.isNotBlank(json)) { - specialTargetList.add(json+SEPARATOR+i); - } - } - - } else if (monitorBaseParam.getTargetKey().equals(DicDataEnum.HARMONIC_CURRENT.getCode())) { - for (int i = 2; i <= 25; i++) { - String uHarmKey = "iharm" + i + "Overtime"; - String json = getFieldValueForDetail(dto, uHarmKey); - if (StrUtil.isNotBlank(json)) { - specialTargetList.add(json+SEPARATOR+i); - } - } - - } else if (monitorBaseParam.getTargetKey().equals(DicDataEnum.INTERHARMONIC_VOLTAGE.getCode())) { - for (int i = 1; i <= 16; i++) { - String uHarmKey = "inuharm" + i + "Overtime"; - String json = getFieldValueForDetail(dto, uHarmKey); - if (StrUtil.isNotBlank(json)) { - specialTargetList.add(json+SEPARATOR+i); - } - } - } - - if(CollUtil.isNotEmpty(specialTargetList)){ - for(String strJson : specialTargetList){ - String[] temStr = strJson.split(SEPARATOR); - JSONArray jsonTem = new JSONArray(temStr[0]); - dealJsonArr(jsonTem,result,monitorBaseParam,temStr[1]); - } - }else { - dealJsonArr(jsonArray,result,monitorBaseParam,null); - } + DataLimitRateDetailDto dto = dtoList.get(0); + Map targetMap = getTargetMap(); + if (StrUtil.isNotBlank(monitorBaseParam.getTargetKey())) { + processSingleTarget(dto, monitorBaseParam.getTargetKey(), targetMap, result); + } else { + processAllTargets(dto, targetMap, result); } return result; } + private Map getTargetMap() { + List dictDataList = dicDataFeignClient.getDicDataByTypeCode(DicDataTypeEnum.STEADY_STATIS.getCode()).getData(); + return dictDataList.stream().collect(Collectors.toMap(DictData::getCode, Function.identity())); + } + + private void processSingleTarget(DataLimitRateDetailDto dto, String targetKey, Map targetMap, List result) { + if (!targetMap.containsKey(targetKey)) { + throw new BusinessException("异常指标参数"); + } + + String targetName = targetMap.get(targetKey).getName(); + List specialTargetList = new ArrayList<>(); + JSONArray jsonArray = new JSONArray(); + + DicDataEnum targetEnum = DicDataEnum.getDicDataEnumValue(targetKey); + switch (Objects.requireNonNull(targetEnum)) { + case VOLTAGE_DEV: + jsonArray = new JSONArray(dto.getVoltageDevOvertime()); + break; + case FLICKER: + jsonArray = new JSONArray(dto.getFlickerOvertime()); + break; + case phase_Voltage: + jsonArray = new JSONArray(dto.getUbalanceOvertime()); + break; + case FREQUENCY_DEV: + jsonArray = new JSONArray(dto.getFreqDevOvertime()); + break; + case NEG_CURRENT: + jsonArray = new JSONArray(dto.getINegOvertime()); + break; + case THD_V: + jsonArray = new JSONArray(dto.getUaberranceOvertime()); + break; + case HARMONIC_VOLTAGE: + collectHarmonicData(dto, "uharm", 2, 25, specialTargetList); + break; + case HARMONIC_CURRENT: + collectHarmonicData(dto, "iharm", 2, 25, specialTargetList); + break; + case INTERHARMONIC_VOLTAGE: + collectHarmonicData(dto, "inuharm", 1, 16, specialTargetList); + break; + default: + throw new BusinessException("未支持的指标类型: " + targetKey); + } + if (CollUtil.isNotEmpty(specialTargetList)) { + processSpecialTargets(specialTargetList, result, targetName); + } else { + dealJsonArr(jsonArray, result, targetName, null); + } + } + + private void processAllTargets(DataLimitRateDetailDto dto, Map targetMap, + List result) { + // 处理标准指标 + processStandardTarget(dto, targetMap, DicDataEnum.VOLTAGE_DEV.getCode(), dto.getVoltageDevOvertime(), result); + processStandardTarget(dto, targetMap, DicDataEnum.FLICKER.getCode(), dto.getFlickerOvertime(), result); + processStandardTarget(dto, targetMap, DicDataEnum.phase_Voltage.getCode(), dto.getUbalanceOvertime(), result); + processStandardTarget(dto, targetMap, DicDataEnum.FREQUENCY_DEV.getCode(), dto.getFreqDevOvertime(), result); + processStandardTarget(dto, targetMap, DicDataEnum.NEG_CURRENT.getCode(), dto.getINegOvertime(), result); + processStandardTarget(dto, targetMap, DicDataEnum.THD_V.getCode(), dto.getUaberranceOvertime(), result); + + // 处理谐波类指标 + processHarmonicTarget(dto, targetMap, DicDataEnum.HARMONIC_VOLTAGE.getCode(), "uharm", 2, 25, result); + processHarmonicTarget(dto, targetMap, DicDataEnum.HARMONIC_CURRENT.getCode(), "iharm", 2, 25, result); + processHarmonicTarget(dto, targetMap, DicDataEnum.INTERHARMONIC_VOLTAGE.getCode(), "inuharm", 1, 16, result); + } + private void processStandardTarget(DataLimitRateDetailDto dto, Map targetMap, + String targetCode, String data, + List result) { + if (StrUtil.isNotBlank(data)) { + JSONArray jsonArray = new JSONArray(data); + String targetName = targetMap.get(targetCode).getName(); + dealJsonArr(jsonArray, result, targetName, null); + } + } + + private void processHarmonicTarget(DataLimitRateDetailDto dto, Map targetMap, + String targetCode, String prefix, int start, int end, + List result) { + List tempList = new ArrayList<>(); + String targetName = targetMap.get(targetCode).getName(); + collectHarmonicData(dto, prefix, start, end, tempList); + processSpecialTargets(tempList, result, targetName); + } + + private void processSpecialTargets(List specialTargetList, List result, String targetName) { + for (String strJson : specialTargetList) { + String[] temStr = strJson.split(SEPARATOR); + JSONArray jsonTem = new JSONArray(temStr[0]); + dealJsonArr(jsonTem, result, targetName, temStr[1]); + } + } /** * 处理json数组 */ - private void dealJsonArr(JSONArray jsonArray,List result,MonitorBaseParam monitorBaseParam,String count){ + private void dealJsonArr(JSONArray jsonArray, List result, String targetName, String count) { List jsonBaseVOList = jsonArray.toList(JsonBaseVO.class); Map> jsonMap = jsonBaseVOList.stream().collect(Collectors.groupingBy(JsonBaseVO::getPhasic)); jsonMap.forEach((phasic, list) -> { @@ -422,13 +512,13 @@ public class DataVerifyServiceImpl extends ServiceImpl { String[] timeArr = it.getTime().split(StrUtil.COMMA); String[] valArr = it.getValue().split(StrUtil.COMMA); - for(int i = 0;i commQuery(List monitorIds, MonitorBaseParam monitorBaseParam) { LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>(); lambdaQueryWrapper.between(DataVerify::getTime, DateUtil.beginOfDay(DateUtil.parse(monitorBaseParam.getSearchBeginTime())), DateUtil.endOfDay(DateUtil.parse(monitorBaseParam.getSearchEndTime()))) @@ -515,13 +603,24 @@ public class DataVerifyServiceImpl extends ServiceImpl result) { + for (int i = start; i <= end; i++) { + String fieldName = prefix + i + "Overtime"; + String json = getFieldValueForDetail(dto, fieldName); + if (StrUtil.isNotBlank(json)) { + result.add(json + SEPARATOR + i); + } + } + } + + private Integer getFieldValue(DataLimitTargetDto dto, String fieldName) { try { Field field = DataLimitTargetDto.class.getDeclaredField(fieldName); field.setAccessible(true); return (Integer) field.get(dto); } catch (NoSuchFieldException | IllegalAccessException e) { - logger.error("反射方法异常:{}", e.getMessage()); + logger.error("DataLimitTarget反射方法异常:{}", e.getMessage()); return null; } } @@ -532,7 +631,7 @@ public class DataVerifyServiceImpl extends ServiceImpl rangeMap = new HashMap<>(); - String time = DateUtil.format(dateTime,DATE_FORMAT); + String time = DateUtil.format(dateTime, DATE_FORMAT); rangeMap.put("time", time); rangeMap.put("val", map.getOrDefault(time, 0)); result.add(rangeMap); @@ -584,7 +683,7 @@ public class DataVerifyServiceImpl extends ServiceImpl rangeMap = new HashMap<>(); - String time = DateUtil.format(dateTime,DATE_FORMAT); + String time = DateUtil.format(dateTime, DATE_FORMAT); rangeMap.put("time", time); rangeMap.put("val", map.getOrDefault(time, 0)); result.add(rangeMap); @@ -619,8 +718,8 @@ public class DataVerifyServiceImpl extends ServiceImpl getAbnormalTarget(List dataVerifyList) { Map> dataMap = dataVerifyList.stream().collect(Collectors.groupingBy(it -> - it.getIndexCode() +SEPARATOR+ it.getIndexTable(), Collectors.mapping(DataVerify::getLineId, Collectors.toSet()))); - Map rangeMap = getStandRange(); + it.getIndexCode() + SEPARATOR + it.getIndexTable(), Collectors.mapping(DataVerify::getLineId, Collectors.toSet()))); + Map rangeMap = getStandRange(); //正序、负序和零序电压 List result = new ArrayList<>(); dataMap.forEach((key, num) -> { @@ -637,27 +736,27 @@ public class DataVerifyServiceImpl extends ServiceImpl entry = iterator.next(); if (!vMap.containsKey(entry.getKey())) { PqReasonableRangeDto dto = entry.getValue(); - assembleEntity(new HashSet<>(),dto,result); + assembleEntity(new HashSet<>(), dto, result); } } return result.stream().sorted(Comparator.comparing(VerifyTargetVO::getSort)).collect(Collectors.toList()); } /** - *组装实体 + * 组装实体 */ private void assembleEntity(Set ids, PqReasonableRangeDto dto, List result) { VerifyTargetVO verifyTargetVO = new VerifyTargetVO(); - verifyTargetVO.setKey(dto.getIndexCode() +SEPARATOR+ dto.getInfluxdbTableName()); + verifyTargetVO.setKey(dto.getIndexCode() + SEPARATOR + dto.getInfluxdbTableName()); verifyTargetVO.setTargetName(dto.getIndexName()); verifyTargetVO.setIds(ids); verifyTargetVO.setRemark(dto.getRemark()); verifyTargetVO.setSort(dto.getSort()); - String unit = ""; - if(StrUtil.isNotBlank(dto.getUnit())){ + String unit = ""; + if (StrUtil.isNotBlank(dto.getUnit())) { unit = dto.getUnit(); } - verifyTargetVO.setRangeDesc(dto.getMinValue()+unit + " ~ " + dto.getMaxValue()+unit); + verifyTargetVO.setRangeDesc(dto.getMinValue() + unit + " ~ " + dto.getMaxValue() + unit); result.add(verifyTargetVO); } @@ -665,11 +764,11 @@ public class DataVerifyServiceImpl extends ServiceImpl getStandRange(){ + private Map getStandRange() { DataCleanParam dataCleanParam = new DataCleanParam(); dataCleanParam.setSystemType(DataCleanEnum.Pqs.getCode()); List pqReasonableRangeDtoList = pqReasonableRangeFeignClient.getData(dataCleanParam).getData(); - return pqReasonableRangeDtoList.stream().collect(Collectors.toMap(it -> it.getIndexCode() +SEPARATOR+ it.getInfluxdbTableName(), Function.identity())); + return pqReasonableRangeDtoList.stream().collect(Collectors.toMap(it -> it.getIndexCode() + SEPARATOR + it.getInfluxdbTableName(), Function.identity())); } @@ -678,35 +777,29 @@ public class DataVerifyServiceImpl extends ServiceImpl> dataMap = dataVerifyList.stream().collect(Collectors.groupingBy(DataVerify::getLineId)); dataMap.forEach((key, list) -> { List dateList = list.stream().map(it -> it.getTime().toLocalDate()).distinct().sorted(Comparator.comparing(Function.identity())).collect(Collectors.toList()); - processTable(monitorBaseParam,dateList,result,key); + processTable(monitorBaseParam, dateList, result, key); }); dealTableResult(result); return result; } - - - - - public List getLimitTable(List dataVerifyList, MonitorBaseParam monitorBaseParam) { List result = new ArrayList<>(); Map> dataMap = dataVerifyList.stream().collect(Collectors.groupingBy(DataLimitTargetDto::getLineId)); dataMap.forEach((key, list) -> { List dateList = list.stream().map(DataLimitTargetDto::getTime).distinct().sorted(Comparator.comparing(Function.identity())).collect(Collectors.toList()); - processTable(monitorBaseParam,dateList,result,key); + processTable(monitorBaseParam, dateList, result, key); }); dealTableResult(result); return result; } - /** * 判断测点是否存在连续异常数据 */ - private void processTable(MonitorBaseParam monitorBaseParam,List dateList,List result,String lineId) { + private void processTable(MonitorBaseParam monitorBaseParam, List dateList, List result, String lineId) { Integer warnDay = monitorBaseParam.getWarnDayLimit(); Integer alarmDay = monitorBaseParam.getAlarmDayLimit(); //检查是否有连续指定天数的告警 @@ -725,7 +818,7 @@ public class DataVerifyServiceImpl extends ServiceImpl result){ + private void dealTableResult(List result) { if (CollUtil.isNotEmpty(result)) { List dicTreePOList = dictTreeFeignClient.queryAllByType(Integer.valueOf(DicDataEnum.Obj_Type.getCode())).getData(); Map sysDicTreePOMap = dicTreePOList.stream().collect(Collectors.toMap(SysDicTreePO::getId, Function.identity())); @@ -758,6 +851,7 @@ public class DataVerifyServiceImpl extends ServiceImpl selectDownCount(@Param("lineIds") List lineIds, @Param("startTime") String startTime, @Param("endTime") String endTime); + Integer selectDownCount(@Param("lineIds") List lineIds, @Param("startTime") String startTime, @Param("endTime") String endTime); List> selectLoadTypeCount(@Param("lineIds") List lineIds, @Param("startTime") String startTime, @Param("endTime") String endTime); diff --git a/pqs-event/event-boot/src/main/java/com/njcn/event/mapper/majornetwork/mapping/LargeScreenMapper.xml b/pqs-event/event-boot/src/main/java/com/njcn/event/mapper/majornetwork/mapping/LargeScreenMapper.xml index 7b277847b..c21cdd918 100644 --- a/pqs-event/event-boot/src/main/java/com/njcn/event/mapper/majornetwork/mapping/LargeScreenMapper.xml +++ b/pqs-event/event-boot/src/main/java/com/njcn/event/mapper/majornetwork/mapping/LargeScreenMapper.xml @@ -2,9 +2,9 @@ - select - count(ed.event_id) "count" + count(ed.event_id) "COUNT" from r_mp_event_detail ed where ed.measurement_point_id in diff --git a/pqs-event/event-boot/src/main/java/com/njcn/event/service/majornetwork/Impl/AreaLineServiceImpl.java b/pqs-event/event-boot/src/main/java/com/njcn/event/service/majornetwork/Impl/AreaLineServiceImpl.java index 6b6c697ba..ce898984d 100644 --- a/pqs-event/event-boot/src/main/java/com/njcn/event/service/majornetwork/Impl/AreaLineServiceImpl.java +++ b/pqs-event/event-boot/src/main/java/com/njcn/event/service/majornetwork/Impl/AreaLineServiceImpl.java @@ -86,83 +86,36 @@ public class AreaLineServiceImpl implements AreaLineService { List> listObject = new ArrayList<>(); // 获取暂降监测点 List generalDeviceDTOList = generalDeviceInfoClient.getPracticalAllDeviceInfo(deviceInfoParam).getData(); - List lineIndexs; + List lineIds = generalDeviceDTOList.stream().flatMap(x -> x.getLineIndexes().stream()).collect(Collectors.toList()); + List lineDetails = lineFeignClient.getBaseLineAreaInfo(lineIds).getData(); List substationDetailVOList = new ArrayList<>(); // 获取所有终端信息 for (GeneralDeviceDTO generalDeviceDTO : generalDeviceDTOList) { List objectList = new ArrayList<>(); - List subIndexs; - subIndexs = generalDeviceDTO.getSubIndexes(); - lineIndexs = generalDeviceDTO.getLineIndexes(); - // 通讯正常个数 - int stateZc = 0; - // 通讯中断个数 - int stateZd = 0; - // 总次数 - int tail = 0; - - String color = ""; - List substationDetailVOS = new ArrayList<>(); - if (subIndexs.size() > 0) { - List lineList = lineFeignClient.getAllLine(lineIndexs).getData(); - substationDetailVOS = lineFeignClient.getSubstationData(subIndexs).getData(); - for (int i = 0; i < substationDetailVOS.size(); i++) { - List list = new ArrayList<>(); - list.addAll(lineList); - Iterator iterator = list.listIterator(); - // 获取监测点 - while (iterator.hasNext()) { - LineDeviceStateVO line = iterator.next(); - String[] ids = line.getPids().split(","); - if (!ids[3].equals(substationDetailVOS.get(i).getId())) { - iterator.remove(); - } - } - List lineDataVOList = list; - // 通讯正常个数 - int stateTrue; - stateTrue = 0; - // 通讯中断个数 - int stateFalse = 0; - // 次数 - double r = 0.0035; - - int j = 0; - // 总的监测点个数 - int lineTail = lineDataVOList.size(); - for (LineDeviceStateVO lineDataVO : lineDataVOList) { - if (lineDataVO.getState() == 1) { - stateTrue++; - color = "green"; - } else { - stateFalse++; - color = "red"; - } - SubstationDetailVO substationDetail = new SubstationDetailVO(); - substationDetail.setId(lineDataVO.getId()); - substationDetail.setSrbName(lineDataVO.getName()); - substationDetail.setSubName(lineDataVO.getSubName()); - substationDetail.setCoordY(substationDetailVOS.get(i).getCoordY().floatValue() + r * Math.cos(2 * Math.PI * j / lineTail)); - substationDetail.setCoordX(substationDetailVOS.get(i).getCoordX().floatValue() + r * Math.sin(2 * Math.PI * j / lineTail)); - substationDetail.setColor(color); - substationDetailVOList.add(substationDetail); - j++; - } - stateZc += stateTrue; - stateZd += stateFalse; - tail += lineTail; + List areaLineInfoVOS = lineDetails.stream().filter(x -> generalDeviceDTO.getLineIndexes().contains(x.getLineId())).collect(Collectors.toList()); + Map> subMap = areaLineInfoVOS.stream().collect(Collectors.groupingBy(x->x.getSubId()+"_"+x.getSubName())); + subMap.forEach((key,value)->{ + int j = 0; + // 总的监测点个数 + for (AreaLineInfoVO line : value) { + SubstationDetailVO substationDetail = new SubstationDetailVO(); + substationDetail.setId(line.getLineId()); + substationDetail.setSrbName(line.getLineName()); + substationDetail.setSubName(line.getSubName()); + substationDetail.setCoordY(line.getLng().floatValue() + 0.0035 * Math.cos(2 * Math.PI * j / value.size())); + substationDetail.setCoordX(line.getLat().floatValue() + 0.0035 * Math.sin(2 * Math.PI * j / value.size())); + substationDetail.setColor(line.getComFlag() == 1?"green":"red"); + substationDetailVOList.add(substationDetail); + j++; } - } + }); // 获取变电站 - substationDetailVOList.addAll(substationDetailVOS); - if (lineIndexs.size() > 0) { - areaLineVO.setSubstationDetailVOList(substationDetailVOList); - objectList.add(generalDeviceDTO.getName()); - objectList.add(tail); - objectList.add(stateZc); - objectList.add(stateZd); - listObject.add(objectList); - } + areaLineVO.setSubstationDetailVOList(substationDetailVOList); + objectList.add(generalDeviceDTO.getName()); + objectList.add(areaLineInfoVOS.stream().filter(x->x.getComFlag()==1).count()); + objectList.add(areaLineInfoVOS.stream().filter(x->x.getComFlag()==0).count()); + objectList.add(areaLineInfoVOS.size()); + listObject.add(objectList); } areaLineVO.setAreaValue(listObject); return areaLineVO; @@ -208,8 +161,7 @@ public class AreaLineServiceImpl implements AreaLineService { List ev = new ArrayList<>(); Integer count = info.stream() .filter(obj -> obj.getMeasurementPointId().equals( areaLineInfoVO.getLineId())) - .mapToInt(RmpEventDetailPO::getFileFlag) - .sum(); + .collect(Collectors.toList()).size(); tail+=count; areaLineInfoVO.setTail(count); ev.add(areaLineInfoVO); diff --git a/pqs-event/event-boot/src/main/java/com/njcn/event/service/majornetwork/Impl/LargeScreenServiceImpl.java b/pqs-event/event-boot/src/main/java/com/njcn/event/service/majornetwork/Impl/LargeScreenServiceImpl.java index 5410fa680..b5aee028d 100644 --- a/pqs-event/event-boot/src/main/java/com/njcn/event/service/majornetwork/Impl/LargeScreenServiceImpl.java +++ b/pqs-event/event-boot/src/main/java/com/njcn/event/service/majornetwork/Impl/LargeScreenServiceImpl.java @@ -83,12 +83,10 @@ public class LargeScreenServiceImpl implements LargeScreenService { param.setSize(0); list.add(param); } else { - Map map = largeScreenMapper.selectDownCount(generalDeviceDTO.getLineIndexes(), largeScreenParam.getSearchBeginTime(), largeScreenParam.getSearchEndTime()); + int count = largeScreenMapper.selectDownCount(generalDeviceDTO.getLineIndexes(), largeScreenParam.getSearchBeginTime(), largeScreenParam.getSearchEndTime()); MonitoringPointScaleParam param = new MonitoringPointScaleParam(); param.setName(generalDeviceDTO.getName()); param.setIndex(generalDeviceDTO.getIndex()); - String s = map.get("count").toString(); - int count = Integer.parseInt(s); param.setCount(count); param.setSize(generalDeviceDTO.getLineIndexes().size()); list.add(param); @@ -96,27 +94,6 @@ public class LargeScreenServiceImpl implements LargeScreenService { } result.setParam(list); return result; - /* //获取所有监测点集合 - List lineIds = generalDeviceDTOList.stream().flatMap(dto -> dto.getLineIndexes().stream()).collect(Collectors.toList()); - List> maps = largeScreenMapper.selectDownCount(lineIds); - - Map countMap = new HashMap<>(); - for (Map map : maps) { - for (GeneralDeviceDTO generalDeviceDTO : generalDeviceDTOList) { - for (String lineIndex : generalDeviceDTO.getLineIndexes()) { - if (map.get("id").equals(lineIndex)){ - if(countMap.containsKey(generalDeviceDTO.getName())){ - countMap.put(generalDeviceDTO.getName(),countMap.get(generalDeviceDTO.getName())+1); - break; - }else { - countMap.put(generalDeviceDTO.getName(),1); - break; - } - } - } - } - }*/ - } /**