diff --git a/pqs-advance/advance-api/src/main/java/com/njcn/advance/pojo/bo/QtIdxArray.java b/pqs-advance/advance-api/src/main/java/com/njcn/advance/pojo/bo/QtIdxArray.java index 97ca3f10e..04dd72b7d 100644 --- a/pqs-advance/advance-api/src/main/java/com/njcn/advance/pojo/bo/QtIdxArray.java +++ b/pqs-advance/advance-api/src/main/java/com/njcn/advance/pojo/bo/QtIdxArray.java @@ -4,6 +4,8 @@ import com.njcn.advance.pojo.dto.relevent.FinalData; import com.njcn.advance.pojo.dto.relevent.QtIdx; import com.sun.jna.Structure; +import java.util.Arrays; +import java.util.Collections; import java.util.List; /** @@ -16,9 +18,11 @@ public class QtIdxArray extends Structure { public QtIdx[] qtIdxs = new QtIdx[FinalData.MAX_LINE_NUM]; + @Override - protected List getFieldOrder() { - return null; + protected List getFieldOrder() { + // 返回结构体中所有字段的名称列表(此处只有一个字段 "qtIdxs") + return Collections.singletonList("qtIdxs"); } public static class ByReference extends QtIdxArray implements Structure.ByReference { diff --git a/pqs-advance/advance-api/src/main/java/com/njcn/advance/pojo/dto/relevent/QtIdx.java b/pqs-advance/advance-api/src/main/java/com/njcn/advance/pojo/dto/relevent/QtIdx.java index d9c002a73..4d390defb 100644 --- a/pqs-advance/advance-api/src/main/java/com/njcn/advance/pojo/dto/relevent/QtIdx.java +++ b/pqs-advance/advance-api/src/main/java/com/njcn/advance/pojo/dto/relevent/QtIdx.java @@ -1,9 +1,12 @@ package com.njcn.advance.pojo.dto.relevent; +import com.alibaba.fastjson.annotation.JSONField; +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; import com.sun.jna.Structure; import lombok.Data; import lombok.EqualsAndHashCode; +import java.util.Arrays; import java.util.List; /** @@ -14,6 +17,7 @@ import java.util.List; */ @EqualsAndHashCode(callSuper = true) @Data +@JsonIgnoreProperties({"pointer", "autoAllocate", "autoRead", "autoWrite"}) // 忽略JNA内部字段 public class QtIdx extends Structure{ /** @@ -41,6 +45,9 @@ public class QtIdx extends Structure{ */ public float r_assi; + + + public static class ByReference extends QtIdx implements Structure.ByReference { } @@ -49,9 +56,16 @@ public class QtIdx extends Structure{ } + // 关键:定义字段顺序,必须与 C 结构体一致! @Override - protected List getFieldOrder() { - return null; + protected List getFieldOrder() { + return Arrays.asList( + "r_esm", + "sarfi_90", + "sarifi_50", + "r_asei", + "r_assi" + ); } diff --git a/pqs-advance/advance-boot/src/main/java/com/njcn/advance/service/impl/BalanceServiceImpl.java b/pqs-advance/advance-boot/src/main/java/com/njcn/advance/service/impl/BalanceServiceImpl.java index a2130a97d..9ec55ece4 100644 --- a/pqs-advance/advance-boot/src/main/java/com/njcn/advance/service/impl/BalanceServiceImpl.java +++ b/pqs-advance/advance-boot/src/main/java/com/njcn/advance/service/impl/BalanceServiceImpl.java @@ -1,6 +1,8 @@ package com.njcn.advance.service.impl; import cn.hutool.core.collection.CollUtil; +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.serializer.SerializerFeature; import com.njcn.advance.mapper.BalanceMapper; import com.njcn.advance.pojo.dto.AdvanceBaseDTO; import com.njcn.advance.pojo.dto.BalanceInfo; @@ -10,16 +12,19 @@ import com.njcn.advance.service.BalanceService; import com.njcn.advance.utils.GetBalanceUtils; import com.njcn.common.pojo.dto.SimpleDTO; import com.njcn.common.pojo.enums.common.ServerEnum; +import com.njcn.common.pojo.exception.BusinessException; import com.njcn.common.utils.PubUtils; import com.njcn.device.pq.api.GeneralDeviceInfoClient; import com.njcn.device.pq.pojo.dto.GeneralDeviceDTO; import com.njcn.device.pq.pojo.param.DeviceInfoParam; +import com.njcn.event.enums.EventResponseEnum; import com.njcn.system.pojo.enums.StatisticsEnum; import lombok.RequiredArgsConstructor; import org.apache.commons.collections.MapUtils; import org.springframework.stereotype.Service; import java.util.ArrayList; +import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.stream.Collectors; @@ -46,10 +51,11 @@ public class BalanceServiceImpl implements BalanceService { List balanceInfoList = new ArrayList<>(); DeviceInfoParam deviceInfoParam = new DeviceInfoParam(); - deviceInfoParam.setDeptIndex(advanceBaseParam.getDeptId()); + //统计类型 SimpleDTO simpleDTO = new SimpleDTO(); simpleDTO.setCode(String.valueOf(StatisticsEnum.POWER_NETWORK)); + deviceInfoParam.setDeptIndex(advanceBaseParam.getDeptId()); deviceInfoParam.setStatisticalType(simpleDTO); deviceInfoParam.setServerName(ServerEnum.EVENT.getName()); List generalDeviceDTOList = generalDeviceInfoClient.getPracticalRunDeviceInfo(deviceInfoParam).getData(); @@ -64,30 +70,46 @@ public class BalanceServiceImpl implements BalanceService { continue; } + Map map = new HashMap<>(); + Map map90 = new HashMap<>(); + Map map50 = new HashMap<>(); + Map aSeverityListMap = new HashMap<>(); List aList = balanceMapper.getFeatureAmplitude(PubUtils.beginTimeToLocalDateTime(advanceBaseParam.getStartTime()), PubUtils.endTimeToLocalDateTime(advanceBaseParam.getEndTime()), generalDeviceDTO.getLineIndexes()); - Map map = aList.stream().collect(Collectors.toMap(AdvanceBaseDTO::getLineId, AdvanceBaseDTO::getValueA)); + if (CollUtil.isNotEmpty(aList)) { + map = aList.stream().collect(Collectors.toMap(AdvanceBaseDTO::getLineId, AdvanceBaseDTO::getValueA)); + }else { + continue; + } List a90List = balanceMapper.getSarfi(PubUtils.beginTimeToLocalDateTime(advanceBaseParam.getStartTime()), PubUtils.endTimeToLocalDateTime(advanceBaseParam.getEndTime()), generalDeviceDTO.getLineIndexes(), 0.9f); - Map map90 = a90List.stream().collect(Collectors.toMap(AdvanceBaseDTO::getLineId, AdvanceBaseDTO::getValueB)); + if (CollUtil.isNotEmpty(a90List)) { + map90 = a90List.stream().collect(Collectors.toMap(AdvanceBaseDTO::getLineId, AdvanceBaseDTO::getValueB)); + } List a50List = balanceMapper.getSarfi(PubUtils.beginTimeToLocalDateTime(advanceBaseParam.getStartTime()), PubUtils.endTimeToLocalDateTime(advanceBaseParam.getEndTime()), generalDeviceDTO.getLineIndexes(), 0.5f); - Map map50 = a50List.stream().collect(Collectors.toMap(AdvanceBaseDTO::getLineId, AdvanceBaseDTO::getValueB)); + if (CollUtil.isNotEmpty(a50List)) { + map50 = a50List.stream().collect(Collectors.toMap(AdvanceBaseDTO::getLineId, AdvanceBaseDTO::getValueB)); + } List aSeverityList = balanceMapper.getSarfiSeverity(PubUtils.beginTimeToLocalDateTime(advanceBaseParam.getStartTime()), PubUtils.endTimeToLocalDateTime(advanceBaseParam.getEndTime()), generalDeviceDTO.getLineIndexes(), 0.5f); - Map aSeverityListMap = aSeverityList.stream().collect(Collectors.toMap(AdvanceBaseDTO::getLineId, AdvanceBaseDTO::getValueA)); + if (CollUtil.isNotEmpty(aSeverityList)) { + aSeverityListMap = aSeverityList.stream().collect(Collectors.toMap(AdvanceBaseDTO::getLineId, AdvanceBaseDTO::getValueA)); + } List listTem = new ArrayList<>(); for (String lineId : generalDeviceDTO.getLineIndexes()) { - BalanceInfo.PointInfo pointInfo = new BalanceInfo.PointInfo(); pointInfo.setPointId(lineId); QtIdx qtIdx = new QtIdx(); - qtIdx.r_esm = MapUtils.getFloat(map,lineId,0f); - qtIdx.sarfi_90 = MapUtils.getInteger(map90,lineId,0); - qtIdx.sarifi_50 = MapUtils.getInteger(map50,lineId,0); - qtIdx.r_assi = MapUtils.getInteger(aSeverityListMap,lineId,0); - qtIdx.r_asei = MapUtils.getInteger(aSeverityListMap,lineId,0); + + + + qtIdx.r_esm = map.getOrDefault(lineId,0f); + qtIdx.sarfi_90 = map90.getOrDefault(lineId, 0); + qtIdx.sarifi_50 = map50.getOrDefault(lineId, 0); + qtIdx.r_assi = aSeverityListMap.getOrDefault(lineId, 0f); + qtIdx.r_asei = aSeverityListMap.getOrDefault(lineId, 0f); pointInfo.setQtIdx(qtIdx); listTem.add(pointInfo); } @@ -95,9 +117,7 @@ public class BalanceServiceImpl implements BalanceService { balanceInfoList.add(balanceInfo); } // 打包数据传入dll/so计算结果 - getBalanceUtils.translateData(balanceInfoList); - return balanceInfoList; } } diff --git a/pqs-device/pq-device/pq-device-boot/src/main/java/com/njcn/device/pq/service/impl/LineServiceImpl.java b/pqs-device/pq-device/pq-device-boot/src/main/java/com/njcn/device/pq/service/impl/LineServiceImpl.java index 797e4ef5e..07437e576 100644 --- a/pqs-device/pq-device/pq-device-boot/src/main/java/com/njcn/device/pq/service/impl/LineServiceImpl.java +++ b/pqs-device/pq-device/pq-device-boot/src/main/java/com/njcn/device/pq/service/impl/LineServiceImpl.java @@ -891,7 +891,7 @@ public class LineServiceImpl extends ServiceImpl implements Li @Override public List getBaseLineAreaInfo(List lineIndex, String searchValue, Integer comFlag) { List resList = this.baseMapper.getBaseLineAreaInfo(lineIndex, searchValue, comFlag); - List userIds = resList.stream().filter(x -> StrUtil.isNotBlank(x.getObjId())).map(AreaLineInfoVO::getObjId).collect(Collectors.toList()); + List userIds = resList.stream().map(AreaLineInfoVO::getObjId).filter(StrUtil::isNotBlank).collect(Collectors.toList()); Map userReportVOMap = new HashMap<>(); if (CollUtil.isNotEmpty(userIds)) { List data = userLedgerFeignClient.getUserReportByIds(userIds).getData(); @@ -910,7 +910,6 @@ public class LineServiceImpl extends ServiceImpl implements Li areaLineInfoVO.setLng(newUserReportVO.getLongitude()); } } - } return resList; } 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 ce898984d..6e1a40971 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 @@ -112,9 +112,9 @@ public class AreaLineServiceImpl implements AreaLineService { // 获取变电站 areaLineVO.setSubstationDetailVOList(substationDetailVOList); objectList.add(generalDeviceDTO.getName()); + objectList.add(areaLineInfoVOS.size()); 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); @@ -130,10 +130,10 @@ public class AreaLineServiceImpl implements AreaLineService { } EventHeatMapVO eventHeatMapVO = new EventHeatMapVO(); List> eventHeatMapDetailList = new ArrayList<>(); - deviceInfoParam.setServerName(ServerEnum.EVENT.getName()); List listObject = new ArrayList<>(); // 获取暂降监测点 + deviceInfoParam.setServerName(ServerEnum.EVENT.getName()); List generalDeviceDTOList = generalDeviceInfoClient.getPracticalAllDeviceInfo(deviceInfoParam).getData(); List lineIndexs; int i = 0, generalDeviceListSize = generalDeviceDTOList.size(); @@ -148,8 +148,8 @@ public class AreaLineServiceImpl implements AreaLineService { .select("measurement_point_id as measurementPointId,count(file_flag) as fileFlag") .in("measurement_point_id", lineIndexs) .eq("event_type", voltageData.getId()) - .ge(StrUtil.isNotBlank(deviceInfoParam.getSearchBeginTime()),"start_time" ,DateUtil.beginOfDay(DateUtil.parse(deviceInfoParam.getSearchBeginTime()))) - .le(StrUtil.isNotBlank(deviceInfoParam.getSearchEndTime()), "start_time", DateUtil.endOfDay(DateUtil.parse(deviceInfoParam.getSearchEndTime()))) + .ge("start_time" ,DateUtil.beginOfDay(DateUtil.parse(deviceInfoParam.getSearchBeginTime()))) + .le("start_time", DateUtil.endOfDay(DateUtil.parse(deviceInfoParam.getSearchEndTime()))) .groupBy("measurement_point_id") );