diff --git a/pqs-device/pms-device/pms-device-api/src/main/java/com/njcn/device/pms/api/MonitorClient.java b/pqs-device/pms-device/pms-device-api/src/main/java/com/njcn/device/pms/api/MonitorClient.java index 1171746dc..9516fb2f5 100644 --- a/pqs-device/pms-device/pms-device-api/src/main/java/com/njcn/device/pms/api/MonitorClient.java +++ b/pqs-device/pms-device/pms-device-api/src/main/java/com/njcn/device/pms/api/MonitorClient.java @@ -6,10 +6,7 @@ import com.njcn.common.pojo.response.HttpResult; import com.njcn.device.pms.api.fallback.MonitorClientFallbackFactory; import com.njcn.device.pms.pojo.dto.PmsMonitorDTO; import com.njcn.device.pms.pojo.dto.PmsMonitorInfoDTO; -import com.njcn.device.pms.pojo.param.MonitorTerminalParam; -import com.njcn.device.pms.pojo.param.PmsMonitorInfoParam; -import com.njcn.device.pms.pojo.param.PmsMonitorParam; -import com.njcn.device.pms.pojo.param.TerminalQueryParam; +import com.njcn.device.pms.pojo.param.*; import com.njcn.device.pms.pojo.param.gw.TypicalSourceParam; import com.njcn.device.pms.pojo.po.Monitor; import com.njcn.device.pms.pojo.vo.MonitorVO; @@ -92,4 +89,7 @@ public interface MonitorClient { */ @PostMapping("/monitorTypicalList") HttpResult> monitorTypicalList(@RequestBody TypicalSourceParam param); + + @PostMapping("/getMonitorListByParam") + HttpResult> getMonitorListByParam(@RequestBody MonitorParam monitorParam); } diff --git a/pqs-device/pms-device/pms-device-api/src/main/java/com/njcn/device/pms/api/fallback/MonitorClientFallbackFactory.java b/pqs-device/pms-device/pms-device-api/src/main/java/com/njcn/device/pms/api/fallback/MonitorClientFallbackFactory.java index 62cd84a2e..c72f408ea 100644 --- a/pqs-device/pms-device/pms-device-api/src/main/java/com/njcn/device/pms/api/fallback/MonitorClientFallbackFactory.java +++ b/pqs-device/pms-device/pms-device-api/src/main/java/com/njcn/device/pms/api/fallback/MonitorClientFallbackFactory.java @@ -7,10 +7,7 @@ import com.njcn.common.pojo.response.HttpResult; import com.njcn.device.pms.api.MonitorClient; import com.njcn.device.pms.pojo.dto.PmsMonitorDTO; import com.njcn.device.pms.pojo.dto.PmsMonitorInfoDTO; -import com.njcn.device.pms.pojo.param.MonitorTerminalParam; -import com.njcn.device.pms.pojo.param.PmsMonitorInfoParam; -import com.njcn.device.pms.pojo.param.PmsMonitorParam; -import com.njcn.device.pms.pojo.param.TerminalQueryParam; +import com.njcn.device.pms.pojo.param.*; import com.njcn.device.pms.pojo.param.gw.TypicalSourceParam; import com.njcn.device.pms.pojo.po.Monitor; import com.njcn.device.pms.pojo.vo.MonitorVO; @@ -83,6 +80,12 @@ public class MonitorClientFallbackFactory implements FallbackFactory> getMonitorListByParam(MonitorParam monitorParam) { + log.error("{}异常,降级处理,异常为:{}", "根据条件查询监测点 ", throwable.toString()); + throw new BusinessException(finalExceptionEnum); + } }; } } diff --git a/pqs-device/pms-device/pms-device-boot/src/main/java/com/njcn/device/pms/service/majornetwork/impl/MonitorServiceImpl.java b/pqs-device/pms-device/pms-device-boot/src/main/java/com/njcn/device/pms/service/majornetwork/impl/MonitorServiceImpl.java index de375f66d..b51bc4515 100644 --- a/pqs-device/pms-device/pms-device-boot/src/main/java/com/njcn/device/pms/service/majornetwork/impl/MonitorServiceImpl.java +++ b/pqs-device/pms-device/pms-device-boot/src/main/java/com/njcn/device/pms/service/majornetwork/impl/MonitorServiceImpl.java @@ -312,6 +312,14 @@ public class MonitorServiceImpl extends ServiceImpl impl List deptIds = deptFeignClient.getDepSonSelfCodetByDeptId(monitorParam.getOrgId()).getData(); lambdaQueryWrapper.in(Monitor::getOrgId, deptIds).eq(Monitor::getStatus, DataStateEnum.ENABLE.getCode()); } + //是否上送国网测点 + if(Objects.nonNull(monitorParam.getIsUpToGrid())){ + lambdaQueryWrapper.eq(Monitor::getIsUpToGrid, DataStateEnum.ENABLE.getCode()); + } + //运行状态 + if(StrUtil.isNotBlank(monitorParam.getMonitorState())){ + lambdaQueryWrapper.eq(Monitor::getMonitorState,monitorParam.getMonitorState()); + } return this.list(lambdaQueryWrapper); } @@ -1242,7 +1250,7 @@ public class MonitorServiceImpl extends ServiceImpl impl List wireList = dicDataFeignClient.getDicDataByTypeCode(DicDataTypeEnum.DEV_CONNECT.getCode()).getData(); Map wireListMap = wireList.stream().collect(Collectors.toMap(DictData::getName, Function.identity())); - DictData potentialDic = dicDataFeignClient.getDicDataByNameAndTypeName(DicDataTypeEnum.VOLTAGE_TRANSFORMER.getName(), DicDataEnum.Cap_V.getName()).getData(); + DictData potentialDic = dicDataFeignClient.getDicDataByCodeAndType(DicDataEnum.Cap_V.getCode(),DicDataTypeEnum.VOLTAGE_TRANSFORMER.getCode()).getData(); DictData neutralDic = dicDataFeignClient.getDicDataByNameAndTypeName(DicDataTypeEnum.Neutral_Point.getName(), DicDataEnum.Ground_Res.getName()).getData(); diff --git a/pqs-harmonic/harmonic-api/src/main/java/com/njcn/harmonic/pojo/po/upload/RUploadCommPointBus.java b/pqs-harmonic/harmonic-api/src/main/java/com/njcn/harmonic/pojo/po/upload/RUploadCommPointBus.java new file mode 100644 index 000000000..5740220d1 --- /dev/null +++ b/pqs-harmonic/harmonic-api/src/main/java/com/njcn/harmonic/pojo/po/upload/RUploadCommPointBus.java @@ -0,0 +1,166 @@ +package com.njcn.harmonic.pojo.po.upload; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableName; +import com.github.jeffreyning.mybatisplus.anno.MppMultiId; +import com.njcn.db.bo.BaseEntity; +import java.io.Serializable; +import lombok.Getter; +import lombok.Setter; + +/** + *

+ * 公共连接点母线电能质量统计 + *

+ * + * @author xy + * @since 2024-08-15 + */ +@Getter +@Setter +@TableName("r_upload_comm_point_bus") +public class RUploadCommPointBus implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * uuid + */ + private String objId; + + + /** + * 统计类型 + */ + @MppMultiId + private String statisticalType; + + /** + * 统计时间 + */ + @MppMultiId + private String statisticalDate; + + /** + * 母线id + */ + @MppMultiId + private String busId; + + /** + * 母线名称 + */ + private String busName; + + /** + * 所属省份,取ISC平台上的组织id + */ + private String provinceOrg; + + private String provinceOrgName; + + /** + * 所属地市,取ISC平台上的组织id + */ + private String cityOrg; + + private String cityOrgName; + + /** + * 运维单位 + */ + private String maintOrg; + + private String maintOrgName; + + /** + * 站房类型 + */ + private String stationType; + + /** + * 所属电站 + */ + private String stationId; + + /** + * 所属电站名称 + */ + private String stationName; + + private String stationVoltageLevel; + + + + /** + * 母线电压等级 + */ + private String busVoltageLevel; + + + + /** + * 总超标天数 + */ + private Integer ovDays; + + /** + * 电压有效值-平均值 + */ + private Double avgVrms; + + /** + * 电压有效值-95%概率大值 + */ + private Double gVrms; + + /** + * 谐波电压-超标天数 + */ + private Integer harmVOvDays; + + /** + * 谐波电压-超标时长(分钟) + */ + private Integer harmVOvDuration; + + /** + * 三相不平衡-超标天数 + */ + private Integer vunbanOvDays; + + /** + * 三相不平衡-超标时长(分钟) + */ + private Integer vunbanOvDuration; + + /** + * 长时闪变-超标天数 + */ + private Integer pltOvDays; + + /** + * 长时闪变-超标时长(分钟) + */ + private Integer pltOvDuration; + + /** + * 最优监测点编号 + */ + private String monitorId; + + /** + * 关联监测点集合数 + */ + private String monitorIds; + + /** + * 数据来源 + */ + private String dataSource; + + @TableField(exist = false) + private String cnMonitorId; + + +} diff --git a/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/controller/upload/RUploadCommPointBusController.java b/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/controller/upload/RUploadCommPointBusController.java new file mode 100644 index 000000000..0ceb24405 --- /dev/null +++ b/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/controller/upload/RUploadCommPointBusController.java @@ -0,0 +1,22 @@ +package com.njcn.harmonic.controller.upload; + + +import org.springframework.web.bind.annotation.RequestMapping; + +import org.springframework.web.bind.annotation.RestController; +import com.njcn.web.controller.BaseController; + +/** + *

+ * 公共连接点母线电能质量统计 前端控制器 + *

+ * + * @author xy + * @since 2024-08-15 + */ +@RestController +@RequestMapping("/upload/rUploadCommPointBus") +public class RUploadCommPointBusController extends BaseController { + +} + diff --git a/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/controller/upload/RUploadReportController.java b/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/controller/upload/RUploadReportController.java index e100955e6..23ea72bbb 100644 --- a/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/controller/upload/RUploadReportController.java +++ b/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/controller/upload/RUploadReportController.java @@ -22,6 +22,7 @@ import com.njcn.web.factory.PageFactory; import com.njcn.web.pojo.param.BaseParam; import com.njcn.web.pojo.param.SendParam; import com.njcn.web.utils.GwSendUtil; +import io.swagger.annotations.Api; import io.swagger.annotations.ApiImplicitParam; import io.swagger.annotations.ApiOperation; import lombok.RequiredArgsConstructor; @@ -45,6 +46,7 @@ import java.util.Optional; @RestController @RequestMapping("/rUploadReport") @RequiredArgsConstructor +@Api(tags = "电能质量报表上送") public class RUploadReportController extends BaseController { private final IRUploadReportService irUploadReportService; diff --git a/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/mapper/upload/RUploadCommPointBusMapper.java b/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/mapper/upload/RUploadCommPointBusMapper.java new file mode 100644 index 000000000..7bb7b8131 --- /dev/null +++ b/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/mapper/upload/RUploadCommPointBusMapper.java @@ -0,0 +1,17 @@ +package com.njcn.harmonic.mapper.upload; + + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.njcn.harmonic.pojo.po.upload.RUploadCommPointBus; + +/** + *

+ * 公共连接点母线电能质量统计 Mapper 接口 + *

+ * + * @author xy + * @since 2024-08-15 + */ +public interface RUploadCommPointBusMapper extends BaseMapper { + +} diff --git a/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/service/upload/IRUploadCommPointBusService.java b/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/service/upload/IRUploadCommPointBusService.java new file mode 100644 index 000000000..013f9c1ff --- /dev/null +++ b/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/service/upload/IRUploadCommPointBusService.java @@ -0,0 +1,14 @@ +package com.njcn.harmonic.service.upload; + + +import com.baomidou.mybatisplus.extension.service.IService; +import com.njcn.harmonic.pojo.po.upload.RUploadCommPointBus; + +/** + *

+ * 公共连接点母线电能质量统计 服务类 + *

+ */ +public interface IRUploadCommPointBusService extends IService { + +} diff --git a/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/service/upload/impl/RUploadCommPointBusServiceImpl.java b/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/service/upload/impl/RUploadCommPointBusServiceImpl.java new file mode 100644 index 000000000..b2933de07 --- /dev/null +++ b/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/service/upload/impl/RUploadCommPointBusServiceImpl.java @@ -0,0 +1,21 @@ +package com.njcn.harmonic.service.upload.impl; + + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.njcn.harmonic.mapper.upload.RUploadCommPointBusMapper; +import com.njcn.harmonic.pojo.po.upload.RUploadCommPointBus; +import com.njcn.harmonic.service.upload.IRUploadCommPointBusService; +import org.springframework.stereotype.Service; + +/** + *

+ * 公共连接点母线电能质量统计 服务实现类 + *

+ * + * @author xy + * @since 2024-08-15 + */ +@Service +public class RUploadCommPointBusServiceImpl extends ServiceImpl implements IRUploadCommPointBusService { + +} diff --git a/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/controller/upload/CommPointController.java b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/controller/upload/CommPointController.java new file mode 100644 index 000000000..482b959af --- /dev/null +++ b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/controller/upload/CommPointController.java @@ -0,0 +1,27 @@ +package com.njcn.prepare.harmonic.controller.upload; + +import com.njcn.prepare.harmonic.service.mysql.upload.IRUploadCommPointBusService; +import io.swagger.annotations.Api; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.RestController; + +/** + * 公共连接点 + */ +@RestController +@RequiredArgsConstructor +@Api(tags = "公共连接点") +public class CommPointController { + + private final IRUploadCommPointBusService irUploadCommPointBusService; + + + @GetMapping("handlerDay") + public void handlerDay(@RequestParam String date){ + irUploadCommPointBusService.handlerDay(date); + } + + +} diff --git a/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/mapper/mysql/upload/RUploadCommPointBusMapper.java b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/mapper/mysql/upload/RUploadCommPointBusMapper.java new file mode 100644 index 000000000..8affceeb7 --- /dev/null +++ b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/mapper/mysql/upload/RUploadCommPointBusMapper.java @@ -0,0 +1,15 @@ +package com.njcn.prepare.harmonic.mapper.mysql.upload; + + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.github.jeffreyning.mybatisplus.base.MppBaseMapper; +import com.njcn.harmonic.pojo.po.upload.RUploadCommPointBus; + +/** + *

+ * 公共连接点母线电能质量统计 Mapper 接口 + *

+ */ +public interface RUploadCommPointBusMapper extends MppBaseMapper { + +} diff --git a/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/upload/IRUploadCommPointBusService.java b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/upload/IRUploadCommPointBusService.java new file mode 100644 index 000000000..8bc40f077 --- /dev/null +++ b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/upload/IRUploadCommPointBusService.java @@ -0,0 +1,17 @@ +package com.njcn.prepare.harmonic.service.mysql.upload; + + +import com.baomidou.mybatisplus.extension.service.IService; +import com.njcn.harmonic.pojo.po.upload.RUploadCommPointBus; + +/** + *

+ * 公共连接点母线电能质量统计 服务类 + *

+ */ +public interface IRUploadCommPointBusService extends IService { + + + void handlerDay(String date); + +} diff --git a/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/upload/impl/RUploadCommPointBusServiceImpl.java b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/upload/impl/RUploadCommPointBusServiceImpl.java new file mode 100644 index 000000000..da8674b33 --- /dev/null +++ b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/upload/impl/RUploadCommPointBusServiceImpl.java @@ -0,0 +1,318 @@ +package com.njcn.prepare.harmonic.service.mysql.upload.impl; + + +import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.util.IdUtil; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; + +import com.github.jeffreyning.mybatisplus.service.MppServiceImpl; +import com.njcn.common.pojo.enums.common.DataStateEnum; +import com.njcn.common.pojo.exception.BusinessException; +import com.njcn.device.biz.commApi.CommLineClient; +import com.njcn.device.biz.commApi.CommTerminalGeneralClient; +import com.njcn.device.pms.api.MonitorClient; +import com.njcn.device.pms.pojo.param.MonitorParam; +import com.njcn.device.pms.pojo.po.GeneratrixWire; +import com.njcn.device.pms.pojo.po.Monitor; +import com.njcn.device.pms.pojo.po.PmsMidLedger; +import com.njcn.device.pms.pojo.po.StatationStat; +import com.njcn.device.pq.pojo.po.RStatIntegrityD; +import com.njcn.harmonic.annotaion.HarVoltage; +import com.njcn.harmonic.pojo.po.RStatDataVD; +import com.njcn.harmonic.pojo.po.day.RStatDataVDPO; +import com.njcn.harmonic.pojo.po.day.RStatLimitRateDPO; +import com.njcn.harmonic.pojo.po.upload.RUploadCommPointBus; + +import com.njcn.prepare.harmonic.mapper.mysql.day.RStatDataFlickerDMapper; +import com.njcn.prepare.harmonic.mapper.mysql.day.RStatDataVDMapper; +import com.njcn.prepare.harmonic.mapper.mysql.day.RStatIntegrityDMapper; +import com.njcn.prepare.harmonic.mapper.mysql.day.RStatLimitRateDMapper; +import com.njcn.prepare.harmonic.mapper.mysql.dim.GeneratrixWireMapper; +import com.njcn.prepare.harmonic.mapper.mysql.dim.PmsMidLedgerMapper; +import com.njcn.prepare.harmonic.mapper.mysql.upload.PmsStatationStatMapper; +import com.njcn.prepare.harmonic.mapper.mysql.upload.RUploadCommPointBusMapper; +import com.njcn.prepare.harmonic.service.mysql.upload.IRUploadCommPointBusService; +import com.njcn.system.api.DicDataFeignClient; +import com.njcn.system.enums.DicDataEnum; +import com.njcn.system.enums.DicDataTypeEnum; +import com.njcn.system.pojo.po.DictData; +import com.njcn.user.api.DeptFeignClient; +import com.njcn.user.pojo.po.Dept; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.scheduling.annotation.Async; +import org.springframework.stereotype.Service; + +import java.lang.reflect.Field; +import java.util.*; +import java.util.function.Function; +import java.util.stream.Collectors; + +/** + *

+ * 公共连接点母线电能质量统计 服务实现类 + *

+ */ +@Service +@RequiredArgsConstructor +@Slf4j +public class RUploadCommPointBusServiceImpl extends MppServiceImpl implements IRUploadCommPointBusService { + + private final MonitorClient monitorClient; + + private final DicDataFeignClient dicDataFeignClient; + + private final DeptFeignClient deptFeignClient; + + private final RStatIntegrityDMapper rStatIntegrityDMapper; + + private final GeneratrixWireMapper generatrixWireMapper; + + private final PmsMidLedgerMapper pmsMidLedgerMapper; + + private final PmsStatationStatMapper pmsStatationStatMapper; + + private final RStatDataVDMapper rStatDataVDMapper; + + private final RStatDataFlickerDMapper rStatDataFlickerDMapper; + + private final RStatLimitRateDMapper rStatLimitRateDMapper; + + + @Override + @Async("asyncExecutor") + public void handlerDay(String date){ + List poLIst = new ArrayList<>(); + + DictData dictDataStatus = dicDataFeignClient.getDicDataByCodeAndType(DicDataEnum.RUN.getCode(), DicDataTypeEnum.LINE_STATE.getCode()).getData(); + DictData dictDataType = dicDataFeignClient.getDicDataByCodeAndType(DicDataEnum.Pub_Connect_Point.getCode(), DicDataTypeEnum.LINE_TYPE.getCode()).getData(); + + //电压 + List dictDataList = dicDataFeignClient.getDicDataByTypeCode(DicDataTypeEnum.DEV_VOLTAGE.getCode()).getData(); + Map voltageMap = dictDataList.stream().collect(Collectors.toMap(DictData::getId,Function.identity())); + + String rootDeptId = deptFeignClient.getRootDept().getData().getId(); + List deptList = deptFeignClient.getDirectSonSelf(rootDeptId).getData(); + Optional optional = deptList.stream().filter(item->!item.getId().equals(rootDeptId)).findFirst(); + Dept provinceOrg; + if(optional.isPresent()){ + provinceOrg = optional.get(); + }else { + log.error("公共连接点算法执行异常,获取部门异常,请联系管理员排查"); + return; + } + + List deptL = deptFeignClient.getAllDept().getData(); + Map deptIdMap = deptL.stream().collect(Collectors.toMap(Dept::getId,Function.identity())); + Map deptCodeMap = deptL.stream().collect(Collectors.toMap(Dept::getCode,Function.identity())); + + MonitorParam monitorParam = new MonitorParam(); + monitorParam.setIsUpToGrid(DataStateEnum.ENABLE.getCode()); + monitorParam.setMonitorState(dictDataStatus.getId()); + monitorParam.setMonitorType(dictDataType.getId()); + List monitorList = monitorClient.getMonitorListByParam(monitorParam).getData(); + if(CollUtil.isNotEmpty(monitorList)){ + //筛选所有测点 + List monitorIds = monitorList.stream().map(Monitor::getId).distinct().collect(Collectors.toList()); + + //获取灿能母线 + List lineIds = monitorList.stream().map(Monitor::getLineId).distinct().collect(Collectors.toList()); + List generatrixWireList = generatrixWireMapper.selectBatchIds(lineIds); + Map cnBusMap = generatrixWireList.stream().collect(Collectors.toMap(GeneratrixWire::getId,Function.identity())); + + //获取同源母线 + List midBusIds = generatrixWireList.stream().map(GeneratrixWire::getMidBusId).distinct().collect(Collectors.toList()); + Map midMap = pmsMidLedgerMapper.selectBatchIds(midBusIds).stream().collect(Collectors.toMap(PmsMidLedger::getId,Function.identity())); + + //灿能电站 + List stationIds = monitorList.stream().map(Monitor::getPowerrId).distinct().collect(Collectors.toList()); + List stationList = pmsStatationStatMapper.selectBatchIds(stationIds); + Map cnStatMap = stationList.stream().collect(Collectors.toMap(StatationStat::getPowerId,Function.identity())); + List midStationIds = stationList.stream().map(StatationStat::getMidStationId).distinct().collect(Collectors.toList()); + Map midStationMap = pmsMidLedgerMapper.selectBatchIds(midStationIds).stream().collect(Collectors.toMap(PmsMidLedger::getId,Function.identity())); + + //监测点完整率 + List rStatIntegrityDList = rStatIntegrityDMapper.selectList(new LambdaQueryWrapper().eq(RStatIntegrityD::getTimeId,date).in(RStatIntegrityD::getLineIndex,monitorIds)); + Map inteMap = rStatIntegrityDList.stream().collect(Collectors.toMap(RStatIntegrityD::getLineIndex, Function.identity())); + + //循环母线 + Map> mapMonitor = monitorList.stream().collect(Collectors.groupingBy(Monitor::getLineId)); + + mapMonitor.forEach((busId,pointList)->{ + RUploadCommPointBus rUploadCommPointBus = new RUploadCommPointBus(); + GeneratrixWire generatrixWire = cnBusMap.get(busId); + rUploadCommPointBus.setBusId(generatrixWire.getMidBusId()); + PmsMidLedger busMid = midMap.get(generatrixWire.getMidBusId()); + rUploadCommPointBus.setBusName(busMid.getName()); + rUploadCommPointBus.setBusVoltageLevel(String.format("%02d",voltageMap.get(busMid.getVoltageLevel()).getAlgoDescribe())); + rUploadCommPointBus.setStatisticalType(DicDataEnum.STATISTICAL_TYPE_D.getCode()); + rUploadCommPointBus.setStatisticalDate(date); + + Monitor point; + //rUploadCommPointBus.setCityOrg(); + if(pointList.size()>1){ + //筛选最优测点进行数据统计 + point = goodMonitor(pointList,inteMap); + }else { + point = pointList.get(0); + } + + + rUploadCommPointBus.setProvinceOrg(provinceOrg.getCode()); + rUploadCommPointBus.setProvinceOrgName(provinceOrg.getName()); + + Dept deptTem = deptIdMap.get(deptCodeMap.get(point.getOrgId()).getPid()); + rUploadCommPointBus.setCityOrg(deptTem.getCode()); + rUploadCommPointBus.setCityOrgName(deptTem.getName()); + + rUploadCommPointBus.setMaintOrg(point.getOperationId()); + rUploadCommPointBus.setMaintOrgName(point.getOperationName()); + rUploadCommPointBus.setStationType("zf01"); + rUploadCommPointBus.setStationId(cnStatMap.get(point.getPowerrId()).getMidStationId()); + PmsMidLedger midStation = midStationMap.get(cnStatMap.get(point.getPowerrId()).getMidStationId()); + rUploadCommPointBus.setStationName(midStation.getName()); + rUploadCommPointBus.setStationVoltageLevel(String.format("%02d",voltageMap.get(midStation.getVoltageLevel()).getAlgoDescribe())); + rUploadCommPointBus.setMonitorId(point.getMonitorId()); + rUploadCommPointBus.setDataSource("01"); + rUploadCommPointBus.setCnMonitorId(point.getId()); + poLIst.add(rUploadCommPointBus); + }); + + List cnIds = poLIst.stream().map(RUploadCommPointBus::getCnMonitorId).distinct().collect(Collectors.toList()); + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.select("avg(rms) as rms,line_id").eq("time",date).in("line_id",cnIds).eq("value_type","AVG").groupBy("line_id"); + List rStatDataVDList = rStatDataVDMapper.selectList(queryWrapper); + Map avgMap = rStatDataVDList.stream().collect(Collectors.toMap(RStatDataVDPO::getLineId,Function.identity())); + + queryWrapper.clear(); + queryWrapper.select("max(rms) as rms,line_id").eq("time",date).in("line_id",cnIds).eq("value_type","CP95").groupBy("line_id"); + List cpList = rStatDataVDMapper.selectList(queryWrapper); + Map cpMap = cpList.stream().collect(Collectors.toMap(RStatDataVDPO::getLineId,Function.identity())); + + List rStatLimitRateDPOS = rStatLimitRateDMapper.selectList(new LambdaQueryWrapper().in(RStatLimitRateDPO::getLineId,cnIds).eq(RStatLimitRateDPO::getTime,date).eq(RStatLimitRateDPO::getPhasicType,"T")); + Map rStatLimitRateDPOMap = rStatLimitRateDPOS.stream().collect(Collectors.toMap(RStatLimitRateDPO::getLineId,Function.identity())); + + for(RUploadCommPointBus item: poLIst){ + item.setObjId(IdUtil.simpleUUID()); + if(avgMap.containsKey(item.getCnMonitorId())){ + RStatDataVDPO rStatDataVDPO = avgMap.get(item.getCnMonitorId()); + item.setAvgVrms(rStatDataVDPO.getRms()); + } + if(cpMap.containsKey(item.getCnMonitorId())){ + RStatDataVDPO rStatDataVDPO = cpMap.get(item.getCnMonitorId()); + item.setGVrms(rStatDataVDPO.getRms()); + } + + Integer limitDay = 0; + if(rStatLimitRateDPOMap.containsKey(item.getCnMonitorId())){ + RStatLimitRateDPO r = rStatLimitRateDPOMap.get(item.getCnMonitorId()); + int limit = maxOverTime(r, HarVoltage.class); + if(r.getAllTime()>0){ + int i= 1440/r.getAllTime(); + if(limit>0){ + item.setHarmVOvDuration(limit*i); + item.setHarmVOvDays(1); + limitDay = 1; + }else { + item.setHarmVOvDuration(0); + item.setHarmVOvDays(0); + } + + //三相不平衡 + if(r.getUbalanceOvertime()>0){ + item.setVunbanOvDuration(r.getUbalanceOvertime()*i); + item.setVunbanOvDays(1); + limitDay = 1; + }else { + item.setVunbanOvDuration(0); + item.setVunbanOvDays(0); + } + } + + if(r.getFlickerAllTime() > 0){ + int i= 1440/r.getFlickerAllTime(); + // + if(r.getFlickerOvertime()>0){ + item.setPltOvDuration(r.getFlickerOvertime()*i); + item.setPltOvDays(1); + limitDay = 1; + }else { + item.setPltOvDuration(0); + item.setPltOvDays(0); + } + } + item.setOvDays(limitDay); + + } + } + if(CollUtil.isNotEmpty(poLIst)){ + this.saveOrUpdateBatchByMultiId(poLIst); + } + } + + } + + /*** + * 获取越限最大值 + * @param object + * @param annotation + * @return + */ + private Integer maxOverTime(Object object, Class annotation) { + Integer maxValue = 0; + try { + Class objClass = object.getClass(); + Field[] fields = objClass.getDeclaredFields(); + for (Field field : fields) { + field.setAccessible(true); + boolean isAnon = field.isAnnotationPresent(annotation); + if (isAnon) { + Object objValue = field.get(object); + if (objValue instanceof Integer) { + if ((Integer) objValue > maxValue) { + maxValue = (Integer) objValue; + } + } + } + } + } catch (Exception e) { + log.error("获取越限最大值异常:{}", e.toString()); + } + return maxValue; + } + + + /** + * 选择最优测点,数据完整性最高 + * @param monitorList + * @param inteMap + * @return + */ + private Monitor goodMonitor(List monitorList,Map inteMap){ + Float val = 0.00f; + Monitor monitorRes = monitorList.get(0); + for(Monitor monitor:monitorList){ + if(inteMap.containsKey(monitor.getId())){ + RStatIntegrityD rStatIntegrityD = inteMap.get(monitor.getId()); + float tem = (float)rStatIntegrityD.getRealTime()/rStatIntegrityD.getDueTime(); + if(tem>val){ + val = tem; + monitorRes = monitor; + } + } + } + return monitorRes; + } + + public void handlerMonth(String date){ + + } + + + public void handlerYear(String date){ + + } + +} diff --git a/pqs-process/process-api/src/main/java/com/njcn/process/pojo/po/LimitRate.java b/pqs-process/process-api/src/main/java/com/njcn/process/pojo/po/LimitRate.java deleted file mode 100644 index ed3d30cf8..000000000 --- a/pqs-process/process-api/src/main/java/com/njcn/process/pojo/po/LimitRate.java +++ /dev/null @@ -1,409 +0,0 @@ -//package com.njcn.process.pojo.po; -// -//import com.baomidou.mybatisplus.annotation.TableField; -//import com.baomidou.mybatisplus.annotation.TableName; -//import com.njcn.process.annotaion.HarCurrent; -//import com.njcn.process.annotaion.HarVoltage; -//import com.njcn.process.annotaion.InterharVoltage; -//import lombok.Data; -//import lombok.ToString; -// -//import java.util.Date; -// -///** -// *

-// * -// *

-// * -// * @author lxp -// * @since 2023-03-16 -// */ -//@Data -//@TableName("limit_rate") -//@ToString -//public class LimitRate { -// -// private static final long serialVersionUID = 1L; -// -// /** -// * 创建时间 -// */ -// @TableField(value = "creat_time") -// private Date creatTime; -// -// /** -// * 数据类型,’A’表示A相,’B’表示B相,’C’表示C相,’’M’表示A -// */ -// @TableField(value = "phasic_type") -// private String phasicType; -// -// /** -// * 监测点ID合格率的变电站/装置/母线/线路序号 -// */ -// @TableField(value = "line_id") -// private String lineId; -// -// /** -// * 总计算次数 -// */ -// @TableField(value = "alltime") -// private Integer alltime; -// -// /** -// * 闪变总计算次数 -// */ -// @TableField(value = "flicket_alltime") -// private Integer flicketAlltime; -// -// /** -// * 频率偏差越限次数 -// */ -// private Integer freqDevOvertime; -// -// /** -// * 电压偏差越限次数 -// */ -// private Integer voltageDevOvertime; -// -// /** -// * 电压不平衡度越限次数 -// */ -// private Integer ubalanceOvertime; -// -// /** -// * 闪变越限次数 -// */ -// private Integer flickerOvertime; -// -// /** -// * 电压谐波畸变率越限次数 -// */ -// private Integer uaberranceOvertime; -// /** -// * 负序电流限值次数 -// */ -// private Integer iNegOvertime; -// -// /** -// * 2次电压谐波含有率越限次数 -// */ -// @HarVoltage -// @TableField(value = "uharm_2_overtime") -// private Integer uharm2Overtime; -// -// /** -// * 3次电压谐波含有率越限次数 -// */ -// @HarVoltage -// @TableField(value = "uharm_3_overtime") -// private Integer uharm3Overtime; -// -// /** -// * 4次电压谐波含有率越限次数 -// */ -// @HarVoltage -// @TableField(value = "uharm_4_overtime") -// private Integer uharm4Overtime; -// -// /** -// * 5次电压谐波含有率越限次数 -// */ -// @HarVoltage -// @TableField(value = "uharm_5_overtime") -// private Integer uharm5Overtime; -// -// /** -// * 6次电压谐波含有率越限次数 -// */ -// @HarVoltage -// @TableField(value = "uharm_6_overtime") -// private Integer uharm6Overtime; -// -// /** -// * 7次电压谐波含有率越限次数 -// */ -// @HarVoltage -// @TableField(value = "uharm_7_overtime") -// private Integer uharm7Overtime; -// -// /** -// * 8次电压谐波含有率越限次数 -// */ -// @HarVoltage -// @TableField(value = "uharm_8_overtime") -// private Integer uharm8Overtime; -// -// /** -// * 9次电压谐波含有率越限次数 -// */ -// @HarVoltage -// @TableField(value = "uharm_9_overtime") -// private Integer uharm9Overtime; -// -// /** -// * 10次电压谐波含有率越限次数 -// */ -// @HarVoltage -// @TableField(value = "uharm_10_overtime") -// private Integer uharm10Overtime; -// -// /** -// * 11次电压谐波含有率越限次数 -// */ -// @HarVoltage -// @TableField(value = "uharm_11_overtime") -// private Integer uharm11Overtime; -// -// /** -// * 12次电压谐波含有率越限次数 -// */ -// @HarVoltage -// @TableField(value = "uharm_12_overtime") -// private Integer uharm12Overtime; -// -// /** -// * 13次电压谐波含有率越限次数 -// */ -// @HarVoltage -// @TableField(value = "uharm_13_overtime") -// private Integer uharm13Overtime; -// -// /** -// * 14次电压谐波含有率越限次数 -// */ -// @HarVoltage -// @TableField(value = "uharm_14_overtime") -// private Integer uharm14Overtime; -// -// /** -// * 15次电压谐波含有率越限次数 -// */ -// @HarVoltage -// @TableField(value = "uharm_15_overtime") -// private Integer uharm15Overtime; -// -// /** -// * 16次电压谐波含有率越限次数 -// */ -// @HarVoltage -// @TableField(value = "uharm_16_overtime") -// private Integer uharm16Overtime; -// -// /** -// * 17次电压谐波含有率越限次数 -// */ -// @HarVoltage -// @TableField(value = "uharm_17_overtime") -// private Integer uharm17Overtime; -// -// /** -// * 18次电压谐波含有率越限次数 -// */ -// @HarVoltage -// @TableField(value = "uharm_18_overtime") -// private Integer uharm18Overtime; -// -// /** -// * 19次电压谐波含有率越限次数 -// */ -// @HarVoltage -// @TableField(value = "uharm_19_overtime") -// private Integer uharm19Overtime; -// -// /** -// * 20次电压谐波含有率越限次数 -// */ -// @HarVoltage -// @TableField(value = "uharm_20_overtime") -// private Integer uharm20Overtime; -// -// /** -// * 21次电压谐波含有率越限次数 -// */ -// @HarVoltage -// @TableField(value = "uharm_21_overtime") -// private Integer uharm21Overtime; -// -// /** -// * 22次电压谐波含有率越限次数 -// */ -// @HarVoltage -// @TableField(value = "uharm_22_overtime") -// private Integer uharm22Overtime; -// -// /** -// * 23次电压谐波含有率越限次数 -// */ -// @HarVoltage -// @TableField(value = "uharm_23_overtime") -// private Integer uharm23Overtime; -// -// /** -// * 24次电压谐波含有率越限次数 -// */ -// @HarVoltage -// @TableField(value = "uharm_24_overtime") -// private Integer uharm24Overtime; -// -// /** -// * 25次电压谐波含有率越限次数 -// */ -// @HarVoltage -// @TableField(value = "uharm_25_overtime") -// private Integer uharm25Overtime; -// -// /** -// * 2次电流谐波幅值越限次数 -// */ -// @HarCurrent -// @TableField(value = "iharm_2_overtime") -// private Integer iharm2Overtime; -// -// /** -// * 3次电流谐波幅值越限次数 -// */ -// @HarCurrent -// @TableField(value = "iharm_3_overtime") -// private Integer iharm3Overtime; -// -// /** -// * 4次电流谐波幅值越限次数 -// */ -// @HarCurrent -// @TableField(value = "iharm_4_overtime") -// private Integer iharm4Overtime; -// -// /** -// * 5次电流谐波幅值越限次数 -// */ -// @HarCurrent -// @TableField(value = "iharm_5_overtime") -// private Integer iharm5Overtime; -// -// /** -// * 6次电流谐波幅值越限次数 -// */ -// @HarCurrent -// @TableField(value = "iharm_6_overtime") -// private Integer iharm6Overtime; -// -// /** -// * 7次电流谐波幅值越限次数 -// */ -// @HarCurrent -// @TableField(value = "iharm_7_overtime") -// private Integer iharm7Overtime; -// -// /** -// * 8次电流谐波幅值越限次数 -// */ -// @HarCurrent -// @TableField(value = "iharm_8_overtime") -// private Integer iharm8Overtime; -// @HarCurrent -// @TableField(value = "iharm_9_overtime") -// private Integer iharm9Overtime; -// @HarCurrent -// @TableField(value = "iharm_10_overtime") -// private Integer iharm10Overtime; -// @HarCurrent -// @TableField(value = "iharm_11_overtime") -// private Integer iharm11Overtime; -// @HarCurrent -// @TableField(value = "iharm_12_overtime") -// private Integer iharm12Overtime; -// @HarCurrent -// @TableField(value = "iharm_13_overtime") -// private Integer iharm13Overtime; -// @HarCurrent -// @TableField(value = "iharm_14_overtime") -// private Integer iharm14Overtime; -// @HarCurrent -// @TableField(value = "iharm_15_overtime") -// private Integer iharm15Overtime; -// @HarCurrent -// @TableField(value = "iharm_16_overtime") -// private Integer iharm16Overtime; -// @HarCurrent -// @TableField(value = "iharm_17_overtime") -// private Integer iharm17Overtime; -// @HarCurrent -// @TableField(value = "iharm_18_overtime") -// private Integer iharm18Overtime; -// @HarCurrent -// @TableField(value = "iharm_19_overtime") -// private Integer iharm19Overtime; -// @HarCurrent -// @TableField(value = "iharm_20_overtime") -// private Integer iharm20Overtime; -// @HarCurrent -// @TableField(value = "iharm_21_overtime") -// private Integer iharm21Overtime; -// @HarCurrent -// @TableField(value = "iharm_22_overtime") -// private Integer iharm22Overtime; -// @HarCurrent -// @TableField(value = "iharm_23_overtime") -// private Integer iharm23Overtime; -// @HarCurrent -// @TableField(value = "iharm_24_overtime") -// private Integer iharm24Overtime; -// @HarCurrent -// @TableField(value = "iharm_25_overtime") -// private Integer iharm25Overtime; -// /** -// * 0.5次间谐波电压限值次数 -// */ -// @InterharVoltage -// @TableField(value = "inuharm_1_overtime") -// private Integer inuharm1Overtime; -// @InterharVoltage -// @TableField(value = "inuharm_2_overtime") -// private Integer inuharm2Overtime; -// @InterharVoltage -// @TableField(value = "inuharm_3_overtime") -// private Integer inuharm3Overtime; -// @InterharVoltage -// @TableField(value = "inuharm_4_overtime") -// private Integer inuharm4Overtime; -// @InterharVoltage -// @TableField(value = "inuharm_5_overtime") -// private Integer inuharm5Overtime; -// @InterharVoltage -// @TableField(value = "inuharm_6_overtime") -// private Integer inuharm6Overtime; -// @InterharVoltage -// @TableField(value = "inuharm_7_overtime") -// private Integer inuharm7Overtime; -// @InterharVoltage -// @TableField(value = "inuharm_8_overtime") -// private Integer inuharm8Overtime; -// @InterharVoltage -// @TableField(value = "inuharm_9_overtime") -// private Integer inuharm9Overtime; -// @InterharVoltage -// @TableField(value = "inuharm_10_overtime") -// private Integer inuharm10Overtime; -// @InterharVoltage -// @TableField(value = "inuharm_11_overtime") -// private Integer inuharm11Overtime; -// @InterharVoltage -// @TableField(value = "inuharm_12_overtime") -// private Integer inuharm12Overtime; -// @InterharVoltage -// @TableField(value = "inuharm_13_overtime") -// private Integer inuharm13Overtime; -// @InterharVoltage -// @TableField(value = "inuharm_14_overtime") -// private Integer inuharm14Overtime; -// @InterharVoltage -// @TableField(value = "inuharm_15_overtime") -// private Integer inuharm15Overtime; -// /** -// * 15.5次间谐波电压限值次数 -// */ -// @InterharVoltage -// @TableField(value = "inuharm_16_overtime") -// private Integer inuharm16Overtime; -// -//}