diff --git a/pqs-device/common-device-biz/src/main/java/com/njcn/device/biz/commApi/CommTerminalGeneralClient.java b/pqs-device/common-device-biz/src/main/java/com/njcn/device/biz/commApi/CommTerminalGeneralClient.java index 6dbd34002..ca12d4af8 100644 --- a/pqs-device/common-device-biz/src/main/java/com/njcn/device/biz/commApi/CommTerminalGeneralClient.java +++ b/pqs-device/common-device-biz/src/main/java/com/njcn/device/biz/commApi/CommTerminalGeneralClient.java @@ -8,6 +8,7 @@ import com.njcn.common.pojo.response.HttpResult; import com.njcn.device.biz.commApi.fallback.CommTerminalGeneralClientFallbackFactory; import com.njcn.device.biz.pojo.dto.*; import com.njcn.device.biz.pojo.param.DeptGetLineParam; +import com.njcn.device.biz.pojo.param.MonitorGetParam; import com.njcn.device.biz.pojo.po.Overlimit; import com.njcn.device.biz.pojo.po.PqsDeviceUnit; import io.swagger.annotations.ApiImplicitParam; @@ -181,11 +182,17 @@ public interface CommTerminalGeneralClient { @GetMapping("/getCustomDetailByLineId") HttpResult> getCustomDetailByLineId(@RequestParam("id") String id); + /** + * pms获取指定单位下面的母线以及母线下面的监测点信息 + * @author cdf + * @date 2024/1/26 + */ @GetMapping("/getBusBarAndHisMonitor") HttpResult> getBusBarAndHisMonitor(); - + @PostMapping("/tagOrIdGetMonitorList") + HttpResult> tagOrIdGetMonitorList(@RequestBody MonitorGetParam monitorGetParam); /** * 用于返回pq 还是pms系统 * diff --git a/pqs-device/common-device-biz/src/main/java/com/njcn/device/biz/commApi/fallback/CommTerminalGeneralClientFallbackFactory.java b/pqs-device/common-device-biz/src/main/java/com/njcn/device/biz/commApi/fallback/CommTerminalGeneralClientFallbackFactory.java index 9d39e5083..3bc48ac12 100644 --- a/pqs-device/common-device-biz/src/main/java/com/njcn/device/biz/commApi/fallback/CommTerminalGeneralClientFallbackFactory.java +++ b/pqs-device/common-device-biz/src/main/java/com/njcn/device/biz/commApi/fallback/CommTerminalGeneralClientFallbackFactory.java @@ -7,6 +7,7 @@ import com.njcn.common.pojo.response.HttpResult; import com.njcn.device.biz.commApi.CommTerminalGeneralClient; import com.njcn.device.biz.pojo.dto.*; import com.njcn.device.biz.pojo.param.DeptGetLineParam; +import com.njcn.device.biz.pojo.param.MonitorGetParam; import com.njcn.device.biz.pojo.po.Overlimit; import com.njcn.device.biz.pojo.po.PqsDeviceUnit; import com.njcn.device.biz.utils.DeviceEnumUtil; @@ -151,7 +152,14 @@ public class CommTerminalGeneralClientFallbackFactory implements FallbackFactory @Override public HttpResult> getBusBarAndHisMonitor() { - return null; + log.error("{}异常,降级处理,异常为:{}", "pms获取指定单位下面的母线以及母线下面的监测点信息", throwable.toString()); + throw new BusinessException(finalExceptionEnum); + } + + @Override + public HttpResult> tagOrIdGetMonitorList(MonitorGetParam monitorGetParam) { + log.error("{}异常,降级处理,异常为:{}", "根据对象标签,监测点,获取主网监测点", throwable.toString()); + throw new BusinessException(finalExceptionEnum); } @Override diff --git a/pqs-device/common-device-biz/src/main/java/com/njcn/device/biz/pojo/dto/CommMonitorInfoDTO.java b/pqs-device/common-device-biz/src/main/java/com/njcn/device/biz/pojo/dto/CommMonitorInfoDTO.java new file mode 100644 index 000000000..c0edffd4c --- /dev/null +++ b/pqs-device/common-device-biz/src/main/java/com/njcn/device/biz/pojo/dto/CommMonitorInfoDTO.java @@ -0,0 +1,26 @@ +package com.njcn.device.biz.pojo.dto; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +/** + * pqs + * + * @author cdf + * @date 2024/2/28 + */ +@Data +@Builder +@AllArgsConstructor +@NoArgsConstructor +public class CommMonitorInfoDTO { + + private String id; + + private String name; + + private String powerStationName; + +} diff --git a/pqs-device/common-device-biz/src/main/java/com/njcn/device/biz/pojo/param/MonitorGetParam.java b/pqs-device/common-device-biz/src/main/java/com/njcn/device/biz/pojo/param/MonitorGetParam.java new file mode 100644 index 000000000..ad3582d47 --- /dev/null +++ b/pqs-device/common-device-biz/src/main/java/com/njcn/device/biz/pojo/param/MonitorGetParam.java @@ -0,0 +1,25 @@ +package com.njcn.device.biz.pojo.param; + +import lombok.Builder; +import lombok.Data; + +import javax.validation.constraints.NotEmpty; +import java.util.List; + +/** + * pqs + * + * @author cdf + * @date 2024/2/28 + */ +@Data +public class MonitorGetParam { + + private List tagList; + + + private List monitorIds; + + private List deptIds; + +} diff --git a/pqs-device/pms-device/pms-device-boot/src/main/java/com/njcn/device/pms/controller/ledgerManger/CommTerminalController.java b/pqs-device/pms-device/pms-device-boot/src/main/java/com/njcn/device/pms/controller/ledgerManger/CommTerminalController.java index 8acf05c94..7f48d5468 100644 --- a/pqs-device/pms-device/pms-device-boot/src/main/java/com/njcn/device/pms/controller/ledgerManger/CommTerminalController.java +++ b/pqs-device/pms-device/pms-device-boot/src/main/java/com/njcn/device/pms/controller/ledgerManger/CommTerminalController.java @@ -10,6 +10,7 @@ import com.njcn.common.utils.HttpResultUtil; import com.njcn.device.biz.pojo.dto.StatisticsMonitor; import com.njcn.device.biz.pojo.dto.*; import com.njcn.device.biz.pojo.param.DeptGetLineParam; +import com.njcn.device.biz.pojo.param.MonitorGetParam; import com.njcn.device.biz.pojo.po.Overlimit; import com.njcn.device.biz.pojo.po.PqsDeviceUnit; import com.njcn.device.pms.pojo.po.Monitor; @@ -391,6 +392,21 @@ public class CommTerminalController extends BaseController { } + + /** + * 根据对象标签,监测点,获取主网监测点 + * @author cdf + * @date 2024/2/28 + */ + @OperateInfo(info = LogEnum.BUSINESS_COMMON) + @PostMapping("/tagOrIdGetMonitorList") + @ApiOperation("根据对象标签,监测点,获取主网监测点") + public HttpResult> tagOrIdGetMonitorList(@RequestBody MonitorGetParam monitorGetParam) { + String methodDescribe = getMethodDescribe("tagOrIdGetMonitorList"); + List busBarAndHisMonitorDTOList = commTerminalService.tagOrIdGetMonitorList(monitorGetParam.getTagList(),monitorGetParam.getMonitorIds(),monitorGetParam.getDeptIds()); + return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, busBarAndHisMonitorDTOList, methodDescribe); + } + /** * 用于返回pq 还是pms系统 * @author cdf diff --git a/pqs-device/pms-device/pms-device-boot/src/main/java/com/njcn/device/pms/service/ledgerManger/CommTerminalService.java b/pqs-device/pms-device/pms-device-boot/src/main/java/com/njcn/device/pms/service/ledgerManger/CommTerminalService.java index e9cb14b57..abb5cdf02 100644 --- a/pqs-device/pms-device/pms-device-boot/src/main/java/com/njcn/device/pms/service/ledgerManger/CommTerminalService.java +++ b/pqs-device/pms-device/pms-device-boot/src/main/java/com/njcn/device/pms/service/ledgerManger/CommTerminalService.java @@ -5,6 +5,7 @@ import com.njcn.common.pojo.response.HttpResult; import com.njcn.device.biz.pojo.dto.StatisticsMonitor; import com.njcn.device.biz.pojo.dto.*; import com.njcn.device.biz.pojo.param.DeptGetLineParam; +import com.njcn.device.pms.pojo.po.Monitor; import org.springframework.web.bind.annotation.RequestParam; import java.util.List; @@ -109,6 +110,9 @@ public interface CommTerminalService { List getBusBarAndHisMonitor(); + + List tagOrIdGetMonitorList(List tagList,List monitorIds,List deptIds); + /** * 根据部门获取各变电站信息 * @param deptGetLineParam diff --git a/pqs-device/pms-device/pms-device-boot/src/main/java/com/njcn/device/pms/service/ledgerManger/impl/CommTerminalServiceImpl.java b/pqs-device/pms-device/pms-device-boot/src/main/java/com/njcn/device/pms/service/ledgerManger/impl/CommTerminalServiceImpl.java index f7e079892..1fdb8c060 100644 --- a/pqs-device/pms-device/pms-device-boot/src/main/java/com/njcn/device/pms/service/ledgerManger/impl/CommTerminalServiceImpl.java +++ b/pqs-device/pms-device/pms-device-boot/src/main/java/com/njcn/device/pms/service/ledgerManger/impl/CommTerminalServiceImpl.java @@ -29,9 +29,11 @@ import com.njcn.device.pq.pojo.po.LineBak; import com.njcn.system.api.DicDataFeignClient; import com.njcn.system.enums.DicDataEnum; import com.njcn.system.enums.DicDataTypeEnum; +import com.njcn.system.pojo.po.Dic; import com.njcn.system.pojo.po.DictData; import com.njcn.user.api.DeptFeignClient; import com.njcn.user.pojo.dto.DeptDTO; +import com.njcn.user.pojo.po.Dept; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; @@ -790,6 +792,23 @@ public class CommTerminalServiceImpl implements CommTerminalService { return result; } + @Override + public List tagOrIdGetMonitorList(List tagList, List monitorIds,List deptIds) { + List result = new ArrayList<>(); + + DictData dictData = dicDataFeignClient.getDicDataByCodeAndType(DicDataEnum.RUN.getCode(),DicDataTypeEnum.LINE_STATE.getCode()).getData(); + + List deptList = deptFeignClient.getDeptInfoListByIds(deptIds).getData(); + List monitorList = monitorMapper.selectList(new LambdaQueryWrapper() + + .eq(Monitor::getStatus,DataStateEnum.ENABLE.getCode()).in(Monitor::getOrgId,deptList.stream().map(Dept::getCode).collect(Collectors.toList())) + .eq(Monitor::getMonitorState,dictData.getId()) + .in(Monitor::getMonitorTag,tagList) + .or(item->item.in(Monitor::getId,monitorIds))); + monitorList.forEach(item->result.add(CommMonitorInfoDTO.builder().id(item.getId()).name(item.getName()).powerStationName(item.getPowerrName()).build())); + return result; + } + @Override public List deptSubStationInfo(DeptGetLineParam deptGetLineParam) { List result = new ArrayList<>(); diff --git a/pqs-harmonic/harmonic-api/src/main/java/com/njcn/harmonic/annotaion/HarCurrent.java b/pqs-harmonic/harmonic-api/src/main/java/com/njcn/harmonic/annotaion/HarCurrent.java new file mode 100644 index 000000000..f783c54a9 --- /dev/null +++ b/pqs-harmonic/harmonic-api/src/main/java/com/njcn/harmonic/annotaion/HarCurrent.java @@ -0,0 +1,9 @@ +package com.njcn.harmonic.annotaion; + +import java.lang.annotation.*; + +@Documented +@Retention(RetentionPolicy.RUNTIME) +@Target(ElementType.FIELD) +public @interface HarCurrent { +} diff --git a/pqs-harmonic/harmonic-api/src/main/java/com/njcn/harmonic/annotaion/HarVoltage.java b/pqs-harmonic/harmonic-api/src/main/java/com/njcn/harmonic/annotaion/HarVoltage.java new file mode 100644 index 000000000..553ede548 --- /dev/null +++ b/pqs-harmonic/harmonic-api/src/main/java/com/njcn/harmonic/annotaion/HarVoltage.java @@ -0,0 +1,9 @@ +package com.njcn.harmonic.annotaion; + +import java.lang.annotation.*; + +@Documented +@Retention(RetentionPolicy.RUNTIME) +@Target(ElementType.FIELD) +public @interface HarVoltage { +} diff --git a/pqs-harmonic/harmonic-api/src/main/java/com/njcn/harmonic/annotaion/InterharVoltage.java b/pqs-harmonic/harmonic-api/src/main/java/com/njcn/harmonic/annotaion/InterharVoltage.java new file mode 100644 index 000000000..1d8a9169d --- /dev/null +++ b/pqs-harmonic/harmonic-api/src/main/java/com/njcn/harmonic/annotaion/InterharVoltage.java @@ -0,0 +1,11 @@ +package com.njcn.harmonic.annotaion; + +import java.lang.annotation.*; + + + +@Documented +@Retention(RetentionPolicy.RUNTIME) +@Target(ElementType.FIELD) +public @interface InterharVoltage { +} diff --git a/pqs-harmonic/harmonic-api/src/main/java/com/njcn/harmonic/api/RStatLimitRateDClient.java b/pqs-harmonic/harmonic-api/src/main/java/com/njcn/harmonic/api/RStatLimitRateDClient.java new file mode 100644 index 000000000..cc23c53ca --- /dev/null +++ b/pqs-harmonic/harmonic-api/src/main/java/com/njcn/harmonic/api/RStatLimitRateDClient.java @@ -0,0 +1,34 @@ +package com.njcn.harmonic.api; + +import com.njcn.common.pojo.constant.ServerInfo; +import com.njcn.common.pojo.response.HttpResult; +import com.njcn.harmonic.api.fallback.HarmDataFeignClientFallbackFactory; +import com.njcn.harmonic.api.fallback.RStatLimitRateDFeignClientFallbackFactory; +import com.njcn.harmonic.pojo.param.HistoryHarmParam; +import com.njcn.harmonic.pojo.param.RStatLimitQueryParam; +import com.njcn.harmonic.pojo.param.StatSubstationBizBaseParam; +import com.njcn.harmonic.pojo.po.day.RStatLimitRateDPO; +import com.njcn.harmonic.pojo.po.day.RStatLimitTargetDPO; +import com.njcn.influx.pojo.dto.HarmHistoryDataDTO; +import org.springframework.cloud.openfeign.FeignClient; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; + +import java.util.List; + +@FeignClient( + value = ServerInfo.HARMONIC, + path = "/limitRateD", + fallbackFactory = RStatLimitRateDFeignClientFallbackFactory.class, + contextId = "limitRateD") +public interface RStatLimitRateDClient { + + + @PostMapping("/monitorIdsGetLimitRateInfo") + HttpResult> monitorIdsGetLimitInfo(@RequestBody RStatLimitQueryParam rStatLimitQueryParam); + + + @PostMapping("/monitorIdsGetLimitTargetInfo") + HttpResult> monitorIdsGetLimitTargetInfo(@RequestBody RStatLimitQueryParam rStatLimitQueryParam); + + } diff --git a/pqs-harmonic/harmonic-api/src/main/java/com/njcn/harmonic/api/fallback/RStatLimitRateDFeignClientFallbackFactory.java b/pqs-harmonic/harmonic-api/src/main/java/com/njcn/harmonic/api/fallback/RStatLimitRateDFeignClientFallbackFactory.java new file mode 100644 index 000000000..70e821ceb --- /dev/null +++ b/pqs-harmonic/harmonic-api/src/main/java/com/njcn/harmonic/api/fallback/RStatLimitRateDFeignClientFallbackFactory.java @@ -0,0 +1,54 @@ +package com.njcn.harmonic.api.fallback; + +import com.njcn.common.pojo.enums.response.CommonResponseEnum; +import com.njcn.common.pojo.exception.BusinessException; +import com.njcn.common.pojo.response.HttpResult; +import com.njcn.device.biz.utils.DeviceEnumUtil; +import com.njcn.harmonic.api.HarmDataFeignClient; +import com.njcn.harmonic.api.RStatLimitRateDClient; +import com.njcn.harmonic.pojo.param.HistoryHarmParam; +import com.njcn.harmonic.pojo.param.RStatLimitQueryParam; +import com.njcn.harmonic.pojo.param.StatSubstationBizBaseParam; +import com.njcn.harmonic.pojo.po.day.RStatLimitRateDPO; +import com.njcn.harmonic.pojo.po.day.RStatLimitTargetDPO; +import com.njcn.influx.pojo.dto.HarmHistoryDataDTO; +import feign.hystrix.FallbackFactory; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Component; + +import java.util.List; + +/** + * @author hongawen + * @version 1.0.0 + * @date 2023年07月21日 14:31 + */ +@Slf4j +@Component +public class RStatLimitRateDFeignClientFallbackFactory implements FallbackFactory { + @Override + public RStatLimitRateDClient create(Throwable throwable) { + //判断抛出异常是否为解码器抛出的业务异常 + Enum exceptionEnum = CommonResponseEnum.SERVICE_FALLBACK; + if (throwable.getCause() instanceof BusinessException) { + BusinessException businessException = (BusinessException) throwable.getCause(); + exceptionEnum = DeviceEnumUtil.getExceptionEnum(businessException.getResult()); + } + Enum finalExceptionEnum = exceptionEnum; + return new RStatLimitRateDClient() { + + + @Override + public HttpResult> monitorIdsGetLimitInfo(RStatLimitQueryParam rStatLimitQueryParam) { + log.error("{}异常,降级处理,异常为:{}", "获取指定日期超标监测点详细信息", throwable.toString()); + return new HttpResult<>(CommonResponseEnum.FAIL.getCode(),CommonResponseEnum.FAIL.getMessage()); + } + + @Override + public HttpResult> monitorIdsGetLimitTargetInfo(RStatLimitQueryParam rStatLimitQueryParam) { + log.error("{}异常,降级处理,异常为:{}", "获取指定日期超标监测点详细信息", throwable.toString()); + return new HttpResult<>(CommonResponseEnum.FAIL.getCode(),CommonResponseEnum.FAIL.getMessage()); + } + }; + } +} diff --git a/pqs-harmonic/harmonic-api/src/main/java/com/njcn/harmonic/pojo/param/RStatLimitQueryParam.java b/pqs-harmonic/harmonic-api/src/main/java/com/njcn/harmonic/pojo/param/RStatLimitQueryParam.java new file mode 100644 index 000000000..e257ef33a --- /dev/null +++ b/pqs-harmonic/harmonic-api/src/main/java/com/njcn/harmonic/pojo/param/RStatLimitQueryParam.java @@ -0,0 +1,25 @@ +package com.njcn.harmonic.pojo.param; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.List; + +/** + * pqs + * + * @author cdf + * @date 2024/2/28 + */ +@Data +@Builder +@AllArgsConstructor +@NoArgsConstructor +public class RStatLimitQueryParam { + + private List ids; + + private String date; +} diff --git a/pqs-harmonic/harmonic-api/src/main/java/com/njcn/harmonic/pojo/po/LimitRate.java b/pqs-harmonic/harmonic-api/src/main/java/com/njcn/harmonic/pojo/po/LimitRate.java index 06f3f24e8..4403eafdd 100644 --- a/pqs-harmonic/harmonic-api/src/main/java/com/njcn/harmonic/pojo/po/LimitRate.java +++ b/pqs-harmonic/harmonic-api/src/main/java/com/njcn/harmonic/pojo/po/LimitRate.java @@ -6,7 +6,7 @@ import org.influxdb.annotation.Measurement; /** * 类的介绍: - * + * 已经废弃需要删除。。。。。。。。。。。。。。 * @author xuyang * @version 1.0.0 * @createTime 2022/5/7 10:41 @@ -14,6 +14,7 @@ import org.influxdb.annotation.Measurement; @Data @Measurement(name = "limit_rate") @EqualsAndHashCode(callSuper = true) +@Deprecated public class LimitRate extends LimitTarget{ diff --git a/pqs-harmonic/harmonic-api/src/main/java/com/njcn/harmonic/pojo/po/day/RStatLimitRateDPO.java b/pqs-harmonic/harmonic-api/src/main/java/com/njcn/harmonic/pojo/po/day/RStatLimitRateDPO.java index 341ecc789..24d3bc3a6 100644 --- a/pqs-harmonic/harmonic-api/src/main/java/com/njcn/harmonic/pojo/po/day/RStatLimitRateDPO.java +++ b/pqs-harmonic/harmonic-api/src/main/java/com/njcn/harmonic/pojo/po/day/RStatLimitRateDPO.java @@ -4,6 +4,9 @@ import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableName; import com.fasterxml.jackson.annotation.JsonFormat; import com.github.jeffreyning.mybatisplus.anno.MppMultiId; +import com.njcn.harmonic.annotaion.HarCurrent; +import com.njcn.harmonic.annotaion.HarVoltage; +import com.njcn.harmonic.annotaion.InterharVoltage; import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; @@ -88,288 +91,336 @@ public class RStatLimitRateDPO { /** * 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; /** * 9次电流谐波幅值越限次数 */ + @HarCurrent @TableField(value = "iharm_9_overtime") private Integer iharm9Overtime; /** * 10次电流谐波幅值越限次数 */ + @HarCurrent @TableField(value = "iharm_10_overtime") private Integer iharm10Overtime; /** * 11次电流谐波幅值越限次数 */ + @HarCurrent @TableField(value = "iharm_11_overtime") private Integer iharm11Overtime; /** * 12次电流谐波幅值越限次数 */ + @HarCurrent @TableField(value = "iharm_12_overtime") private Integer iharm12Overtime; /** * 13次电流谐波幅值越限次数 */ + @HarCurrent @TableField(value = "iharm_13_overtime") private Integer iharm13Overtime; /** * 14次电流谐波幅值越限次数 */ + @HarCurrent @TableField(value = "iharm_14_overtime") private Integer iharm14Overtime; /** * 15次电流谐波幅值越限次数 */ + @HarCurrent @TableField(value = "iharm_15_overtime") private Integer iharm15Overtime; /** * 16次电流谐波幅值越限次数 */ + @HarCurrent @TableField(value = "iharm_16_overtime") private Integer iharm16Overtime; /** * 17次电流谐波幅值越限次数 */ + @HarCurrent @TableField(value = "iharm_17_overtime") private Integer iharm17Overtime; /** * 18次电流谐波幅值越限次数 */ + @HarCurrent @TableField(value = "iharm_18_overtime") private Integer iharm18Overtime; /** * 19次电流谐波幅值越限次数 */ + @HarCurrent @TableField(value = "iharm_19_overtime") private Integer iharm19Overtime; /** * 20次电流谐波幅值越限次数 */ + @HarCurrent @TableField(value = "iharm_20_overtime") private Integer iharm20Overtime; /** * 21次电流谐波幅值越限次数 */ + @HarCurrent @TableField(value = "iharm_21_overtime") private Integer iharm21Overtime; /** * 22次电流谐波幅值越限次数 */ + @HarCurrent @TableField(value = "iharm_22_overtime") private Integer iharm22Overtime; /** * 23次电流谐波幅值越限次数 */ + @HarCurrent @TableField(value = "iharm_23_overtime") private Integer iharm23Overtime; /** * 24次电流谐波幅值越限次数 */ + @HarCurrent @TableField(value = "iharm_24_overtime") private Integer iharm24Overtime; /** * 25次电流谐波幅值越限次数 */ + @HarCurrent @TableField(value = "iharm_25_overtime") private Integer iharm25Overtime; @@ -377,95 +428,111 @@ public class RStatLimitRateDPO { * 0.5次间谐波电压限值次数 */ @TableField(value = "inuharm_1_overtime") + @InterharVoltage private Integer inuharm1Overtime; /** * 1.5次间谐波电压限值次数 */ + @InterharVoltage @TableField(value = "inuharm_2_overtime") private Integer inuharm2Overtime; /** * 2.5次间谐波电压限值次数 */ + @InterharVoltage @TableField(value = "inuharm_3_overtime") private Integer inuharm3Overtime; /** * 3.5次间谐波电压限值次数 */ + @InterharVoltage @TableField(value = "inuharm_4_overtime") private Integer inuharm4Overtime; /** * 4.5次间谐波电压限值次数 */ + @InterharVoltage @TableField(value = "inuharm_5_overtime") private Integer inuharm5Overtime; /** * 5.5次间谐波电压限值次数 */ + @InterharVoltage @TableField(value = "inuharm_6_overtime") private Integer inuharm6Overtime; /** * 6.5次间谐波电压限值次数 */ + @InterharVoltage @TableField(value = "inuharm_7_overtime") private Integer inuharm7Overtime; /** * 7.5次间谐波电压限值次数 */ + @InterharVoltage @TableField(value = "inuharm_8_overtime") private Integer inuharm8Overtime; /** * 8.5次间谐波电压限值次数 */ + @InterharVoltage @TableField(value = "inuharm_9_overtime") private Integer inuharm9Overtime; /** * 9.5次间谐波电压限值次数 */ + @InterharVoltage @TableField(value = "inuharm_10_overtime") private Integer inuharm10Overtime; /** * 10.5次间谐波电压限值次数 */ + @InterharVoltage @TableField(value = "inuharm_11_overtime") private Integer inuharm11Overtime; /** * 11.5次间谐波电压限值次数 */ + @InterharVoltage @TableField(value = "inuharm_12_overtime") private Integer inuharm12Overtime; /** * 12.5次间谐波电压限值次数 */ + @InterharVoltage @TableField(value = "inuharm_13_overtime") private Integer inuharm13Overtime; /** * 13.5次间谐波电压限值次数 */ + @InterharVoltage @TableField(value = "inuharm_14_overtime") private Integer inuharm14Overtime; /** * 14.5次间谐波电压限值次数 */ + @InterharVoltage @TableField(value = "inuharm_15_overtime") private Integer inuharm15Overtime; /** * 15.5次间谐波电压限值次数 */ + @InterharVoltage @TableField(value = "inuharm_16_overtime") private Integer inuharm16Overtime; -} \ No newline at end of file +} diff --git a/pqs-harmonic/harmonic-api/src/main/java/com/njcn/harmonic/pojo/vo/SourceSteadyIndicator.java b/pqs-harmonic/harmonic-api/src/main/java/com/njcn/harmonic/pojo/vo/SourceSteadyIndicator.java index 31a4bf0a2..b2f207eba 100644 --- a/pqs-harmonic/harmonic-api/src/main/java/com/njcn/harmonic/pojo/vo/SourceSteadyIndicator.java +++ b/pqs-harmonic/harmonic-api/src/main/java/com/njcn/harmonic/pojo/vo/SourceSteadyIndicator.java @@ -39,8 +39,5 @@ public class SourceSteadyIndicator { * 类型(0:预警;1:告警) */ private Integer type; - /** - * 监测点id - */ - private String monitorId; + } diff --git a/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/controller/majornetwork/RStatLimitController.java b/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/controller/majornetwork/RStatLimitController.java new file mode 100644 index 000000000..469ed6753 --- /dev/null +++ b/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/controller/majornetwork/RStatLimitController.java @@ -0,0 +1,57 @@ +package com.njcn.harmonic.controller.majornetwork; + +import com.njcn.common.pojo.annotation.OperateInfo; +import com.njcn.common.pojo.enums.common.LogEnum; +import com.njcn.common.pojo.enums.response.CommonResponseEnum; +import com.njcn.common.pojo.response.HttpResult; +import com.njcn.common.utils.HttpResultUtil; +import com.njcn.harmonic.pojo.param.RStatLimitQueryParam; +import com.njcn.harmonic.pojo.po.day.RStatLimitRateDPO; +import com.njcn.harmonic.pojo.po.day.RStatLimitTargetDPO; +import com.njcn.harmonic.service.majornetwork.RStatLimitService; +import com.njcn.web.controller.BaseController; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import java.util.List; + +/** + * pqs + * + * @author cdf + * @date 2024/2/28 + */ +@RestController +@RequiredArgsConstructor +@Api(tags = "主网指标检测点超标明细") +@RequestMapping("/limitRateD") +public class RStatLimitController extends BaseController { + + private final RStatLimitService rStatLimitService; + + + @PostMapping("/monitorIdsGetLimitRateInfo") + @OperateInfo(info = LogEnum.BUSINESS_COMMON) + @ApiOperation("获取指定日期超标监测点详细信息") + public HttpResult> monitorIdsGetLimitRateInfo(@RequestBody RStatLimitQueryParam rStatLimitQueryParam) { + String methodDescribe = getMethodDescribe("monitorIdsGetLimitRateInfo"); + List result = rStatLimitService.monitorIdsGetLimitRateInfo(rStatLimitQueryParam.getDate(),rStatLimitQueryParam.getIds()); + return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, result, methodDescribe); + } + + + @PostMapping("/monitorIdsGetLimitTargetInfo") + @OperateInfo(info = LogEnum.BUSINESS_COMMON) + @ApiOperation("获取指定日期超标监测点详细信息") + public HttpResult> monitorIdsGetLimitTargetInfo(@RequestBody RStatLimitQueryParam rStatLimitQueryParam) { + String methodDescribe = getMethodDescribe("monitorIdsGetLimitTargetInfo"); + List result = rStatLimitService.monitorIdsGetLimitTargetInfo(rStatLimitQueryParam.getDate(),rStatLimitQueryParam.getIds()); + return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, result, methodDescribe); + } + +} diff --git a/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/service/majornetwork/RStatLimitService.java b/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/service/majornetwork/RStatLimitService.java new file mode 100644 index 000000000..981413632 --- /dev/null +++ b/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/service/majornetwork/RStatLimitService.java @@ -0,0 +1,27 @@ +package com.njcn.harmonic.service.majornetwork; + +import com.njcn.harmonic.pojo.po.day.RStatLimitRateDPO; +import com.njcn.harmonic.pojo.po.day.RStatLimitTargetDPO; + +import java.util.List; + +/** + * pqs + * + * @author cdf + * @date 2024/2/28 + */ +public interface RStatLimitService { + + /** + * 获取指定日期的监测点超标详情 + * @author cdf + * @date 2024/2/28 + */ + List monitorIdsGetLimitRateInfo(String date, List monitorIds); + + + List monitorIdsGetLimitTargetInfo(String date, List monitorIds); + + +} diff --git a/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/service/majornetwork/impl/RStatLimitServiceImpl.java b/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/service/majornetwork/impl/RStatLimitServiceImpl.java new file mode 100644 index 000000000..a1c38a51c --- /dev/null +++ b/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/service/majornetwork/impl/RStatLimitServiceImpl.java @@ -0,0 +1,46 @@ +package com.njcn.harmonic.service.majornetwork.impl; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.njcn.harmonic.mapper.RStatLimitRateDMapper; +import com.njcn.harmonic.mapper.RStatLimitTargetDMapper; +import com.njcn.harmonic.mapper.RStatLimitTargetMapper; +import com.njcn.harmonic.pojo.po.day.RStatLimitRateDPO; +import com.njcn.harmonic.pojo.po.day.RStatLimitTargetDPO; +import com.njcn.harmonic.service.majornetwork.RStatLimitService; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + * pqs + * + * @author cdf + * @date 2024/2/28 + */ +@Service +@RequiredArgsConstructor +public class RStatLimitServiceImpl implements RStatLimitService { + + + private final RStatLimitRateDMapper rStatLimitRateDMapper; + + private final RStatLimitTargetDMapper rStatLimitTargetDMapper; + + + + + + + @Override + public List monitorIdsGetLimitRateInfo(String date, List monitorIds) { + return rStatLimitRateDMapper.selectList(new LambdaQueryWrapper() + .in(RStatLimitRateDPO::getLineId,monitorIds).eq(RStatLimitRateDPO::getTime,date).eq(RStatLimitRateDPO::getPhasicType,"T")); + } + + @Override + public List monitorIdsGetLimitTargetInfo(String date, List monitorIds) { + return rStatLimitTargetDMapper.selectList(new LambdaQueryWrapper().in(RStatLimitTargetDPO::getLineId,monitorIds) + .eq(RStatLimitTargetDPO::getTime,date).gt(RStatLimitTargetDPO::getAllTime,0)); + } +} diff --git a/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/controller/line/ThsSuperviseController.java b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/controller/line/ThsSuperviseController.java index 5febf357e..074c560fc 100644 --- a/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/controller/line/ThsSuperviseController.java +++ b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/controller/line/ThsSuperviseController.java @@ -1,51 +1,51 @@ -package com.njcn.prepare.harmonic.controller.line; - - -import com.njcn.common.pojo.enums.response.CommonResponseEnum; -import com.njcn.common.pojo.response.HttpResult; -import com.njcn.common.utils.HttpResultUtil; -import com.njcn.prepare.harmonic.pojo.param.SuperviseParam; -import com.njcn.prepare.harmonic.service.mysql.line.ThsSuperviseService; -import com.njcn.web.controller.BaseController; -import io.swagger.annotations.Api; -import io.swagger.annotations.ApiImplicitParam; -import io.swagger.annotations.ApiOperation; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.validation.annotation.Validated; -import org.springframework.web.bind.annotation.*; - -/** - *

- * 前端控制器 - *

- * - * @author lxp - * @since 2023-03-16 - */ -@Api(tags = "预警-告警技术监督") -@RestController -@RequestMapping("/thsSupervise") -public class ThsSuperviseController extends BaseController { - @Autowired - private ThsSuperviseService thsSuperviseService; - - @ApiOperation("预警/告警事务手动初始化") - @ApiImplicitParam(name = "superviseParam", value = "新建技术监督参数", required = true) - @PostMapping("/initSupervise") - @ResponseBody - public HttpResult initSupervise(@RequestBody @Validated SuperviseParam superviseParam) { - return thsSuperviseService.initSupervise(superviseParam); - } - - - @ApiOperation("预警/告警事务自动生成") - @ApiImplicitParam(name = "superviseParam", value = "创建技术监督参数", required = true) - @PostMapping("/creatSupervise") - @ResponseBody - public HttpResult creatSupervise(@RequestBody @Validated SuperviseParam superviseParam) { - String methodDescribe = getMethodDescribe("creatSupervise"); - thsSuperviseService.creatSupervise(superviseParam); - return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, null, methodDescribe); - } -} - +//package com.njcn.prepare.harmonic.controller.line; +// +// +//import com.njcn.common.pojo.enums.response.CommonResponseEnum; +//import com.njcn.common.pojo.response.HttpResult; +//import com.njcn.common.utils.HttpResultUtil; +//import com.njcn.prepare.harmonic.pojo.param.SuperviseParam; +// +//import com.njcn.web.controller.BaseController; +//import io.swagger.annotations.Api; +//import io.swagger.annotations.ApiImplicitParam; +//import io.swagger.annotations.ApiOperation; +//import org.springframework.beans.factory.annotation.Autowired; +//import org.springframework.validation.annotation.Validated; +//import org.springframework.web.bind.annotation.*; +// +///** +// *

+// * 前端控制器 +// *

+// * +// * @author lxp +// * @since 2023-03-16 +// */ +//@Api(tags = "预警-告警技术监督") +//@RestController +//@RequestMapping("/thsSupervise") +//public class ThsSuperviseController extends BaseController { +// @Autowired +// private ThsSuperviseService thsSuperviseService; +// +// @ApiOperation("预警/告警事务手动初始化") +// @ApiImplicitParam(name = "superviseParam", value = "新建技术监督参数", required = true) +// @PostMapping("/initSupervise") +// @ResponseBody +// public HttpResult initSupervise(@RequestBody @Validated SuperviseParam superviseParam) { +// return thsSuperviseService.initSupervise(superviseParam); +// } +// +// +// @ApiOperation("预警/告警事务自动生成") +// @ApiImplicitParam(name = "superviseParam", value = "创建技术监督参数", required = true) +// @PostMapping("/creatSupervise") +// @ResponseBody +// public HttpResult creatSupervise(@RequestBody @Validated SuperviseParam superviseParam) { +// String methodDescribe = getMethodDescribe("creatSupervise"); +// thsSuperviseService.creatSupervise(superviseParam); +// return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, null, methodDescribe); +// } +//} +// diff --git a/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/Impl/line/ThsSuperviseServiceImpl.java b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/Impl/line/ThsSuperviseServiceImpl.java index e9b78bad7..1449d8234 100644 --- a/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/Impl/line/ThsSuperviseServiceImpl.java +++ b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/Impl/line/ThsSuperviseServiceImpl.java @@ -1,469 +1,468 @@ -package com.njcn.prepare.harmonic.service.mysql.Impl.line; - -import cn.hutool.core.collection.CollectionUtil; -import cn.hutool.core.date.DateUtil; -import cn.hutool.core.util.IdUtil; -import com.alibaba.fastjson.JSON; -import com.baomidou.dynamic.datasource.annotation.DS; -import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import com.njcn.common.pojo.enums.response.CommonResponseEnum; -import com.njcn.common.pojo.response.HttpResult; -import com.njcn.common.utils.HttpResultUtil; -import com.njcn.device.pms.pojo.po.Monitor; -import com.njcn.harmonic.pojo.po.day.RStatLimitRateDPO; -import com.njcn.harmonic.pojo.vo.SourceSteadyIndicator; -import com.njcn.harmonic.pojo.vo.ThsStrategyVo; -import com.njcn.oss.utils.FileStorageUtil; -import com.njcn.prepare.enums.*; -import com.njcn.prepare.harmonic.mapper.mysql.line.*; -import com.njcn.prepare.harmonic.pojo.param.SuperviseParam; -import com.njcn.prepare.harmonic.pojo.po.ThsOverRunLog; -import com.njcn.prepare.harmonic.pojo.po.ThsSupervise; -import com.njcn.prepare.harmonic.pojo.vo.SuperviceRunLogVo; -import com.njcn.prepare.harmonic.service.mysql.day.IRStatLimitRateDService; -import com.njcn.prepare.harmonic.service.mysql.line.ThsSuperviseService; -import com.njcn.process.annotaion.HarCurrent; -import com.njcn.process.annotaion.HarVoltage; -import com.njcn.process.annotaion.InterharVoltage; -import com.njcn.process.api.FlowableDefineFeignClient; -import com.njcn.process.pojo.po.ThsWarnStrategyAss; -import com.njcn.system.api.DicDataFeignClient; -import com.njcn.system.pojo.po.DictData; -import com.njcn.user.api.DeptFeignClient; -import com.njcn.user.pojo.po.Dept; -import com.njcn.web.utils.RequestUtil; -import lombok.RequiredArgsConstructor; -import lombok.extern.slf4j.Slf4j; -import org.apache.commons.collections.map.HashedMap; -import org.apache.commons.lang.StringUtils; -import org.springframework.scheduling.annotation.Async; -import org.springframework.stereotype.Service; -import org.springframework.transaction.annotation.Transactional; - -import java.lang.reflect.Field; -import java.time.Instant; -import java.time.LocalDate; -import java.time.LocalTime; -import java.time.ZoneId; -import java.util.*; -import java.util.stream.Collectors; - -/** - *

- * 服务实现类 - *

- * - * @author lxp - * @since 2023-03-16 - */ -@Service -@Slf4j -@RequiredArgsConstructor -public class ThsSuperviseServiceImpl extends ServiceImpl implements ThsSuperviseService { - - - - - private final ThsWarnStrategyMapper thsWarnStrategyMapper; - - private final ThsWarnStrategyAssMapper thsWarnStrategyAssMapper; - - private final PmsMonitorMapper pmsMonitorMapper; - - private final IRStatLimitRateDService rateDService; - - private final DicDataFeignClient dicDataFeignClient; - - private final ThsSuperviseMapper thsSuperviseMapper; - - private final ThsOverRunLogMapper thsOverRunLogMapper; - - private final DeptFeignClient deptFeignClient; - - private final FileStorageUtil fileStorageUtil; - private static final String DESCRIPTION = "description"; - - private final FlowableDefineFeignClient flowableDefineFeignClient; - - - @Override - @Async("asyncExecutor") - public void creatSupervise(SuperviseParam superviseParam) { - this.initSupervise(superviseParam); - } - - @Override - public HttpResult initSupervise(SuperviseParam superviseParam) { - SuperviceRunLogVo superviceRunLogVo = new SuperviceRunLogVo(); - List overRunLogList = new ArrayList<>(); - if (InitTypeEnum.MANUAL.getCode().equals(superviseParam.getInitType()) && StringUtils.isBlank(superviseParam.getDeptId())) { - return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.INVALID_PARAMETER, null, ""); - } - List thsStrategyList = this.selectStrategyList(superviseParam); - //按部门进行分组 - if (CollectionUtil.isNotEmpty(thsStrategyList)) { - Map> deptMap = thsStrategyList.stream().collect(Collectors.groupingBy(ThsStrategyVo::getDeptId)); - for (Map.Entry> entry : deptMap.entrySet()) { - String depId = entry.getKey(); - ThsSupervise thsSupervise = new ThsSupervise(); - List deptList = entry.getValue(); - List oneLevel = deptList.stream().filter(r -> !GradeEnum.THREE_LEVEL.getCode().equals(r.getGrade())).collect(Collectors.toList());//一级或二级策略集合 - List oneSourceSteadyIndicatorList = new ArrayList<>(); - if (CollectionUtil.isNotEmpty(oneLevel)) { - for (ThsStrategyVo oneStrategyVo : oneLevel) { - List oneInterferenceSourceAsses = this.queryWarnStrategyAss(oneStrategyVo.getId(), TypeEnum.SOURCE_TYPE);//干扰源列表 - List oneSteadyIndicatorAsses = this.queryWarnStrategyAss(oneStrategyVo.getId(), TypeEnum.INTERFERENCE_TYPE);//干扰源列表 - List oneSteadyIndicatorAssesIds = oneSteadyIndicatorAsses.stream().map(ThsWarnStrategyAss::getAssId).collect(Collectors.toList()); - //封装每一种干扰源和对应的指标 - for (ThsWarnStrategyAss oneWarnStrategyAss : oneInterferenceSourceAsses) { - SourceSteadyIndicator build = SourceSteadyIndicator.builder().id(oneStrategyVo.getId()).operation(oneStrategyVo.getOperation()) - .interferenceSource(oneWarnStrategyAss.getAssId()) - .steadyIndicator(oneSteadyIndicatorAssesIds) - .deptId(oneStrategyVo.getDeptId()) - .type(oneStrategyVo.getType()) - .monitorId(oneStrategyVo.getMonitorId()) - .build(); - oneSourceSteadyIndicatorList.add(build); - } - } - } - List threeLevel = deptList.stream().filter(r -> GradeEnum.THREE_LEVEL.getCode().equals(r.getGrade())).collect(Collectors.toList());//三级策略集合 - if (CollectionUtil.isNotEmpty(threeLevel)) { - for (ThsStrategyVo threeStrategyVo : threeLevel) { - Iterator iterator = oneSourceSteadyIndicatorList.iterator(); - while (iterator.hasNext()) { - SourceSteadyIndicator sourceSteady = iterator.next(); - if (sourceSteady.getType().equals(threeStrategyVo.getType())) { - if (StringUtils.equals(threeStrategyVo.getMonitorId(), sourceSteady.getMonitorId())) { - List interferenceSourceAsses = this.queryWarnStrategyAss(threeStrategyVo.getId(), TypeEnum.SOURCE_TYPE); - //干扰源类型id - List threeInterferenceSourceIds = interferenceSourceAsses.stream().map(ThsWarnStrategyAss::getAssId).collect(Collectors.toList()); - List threeSteadyIndicatorAsses = this.queryWarnStrategyAss(threeStrategyVo.getId(), TypeEnum.INTERFERENCE_TYPE); - //指标类型id - List steadyIndicatorIds = threeSteadyIndicatorAsses.stream().map(ThsWarnStrategyAss::getAssId).collect(Collectors.toList()); - for (String threeInterferenceSourceId : threeInterferenceSourceIds) { - if (OperationEnum.AND.getCode().equals(threeStrategyVo.getOperation())) {//处理三级策略的与 - if (OperationEnum.AND.getCode().equals(sourceSteady.getOperation())) { - if (StringUtils.equals(threeInterferenceSourceId, sourceSteady.getInterferenceSource()) && - steadyIndicatorIds.containsAll(sourceSteady.getSteadyIndicator())) { - iterator.remove(); - } - } - } else {//处理三级策略的或 - if (StringUtils.equals(threeInterferenceSourceId, sourceSteady.getInterferenceSource())) { - if (steadyIndicatorIds.containsAll(sourceSteady.getSteadyIndicator())) { - iterator.remove(); - } else { - List steadyIndicator = sourceSteady.getSteadyIndicator(); - steadyIndicator.removeAll(steadyIndicatorIds); - } - } - } - } - } - } - } - } - } - if (CollectionUtil.isNotEmpty(oneSourceSteadyIndicatorList)) { - oneSourceSteadyIndicatorList.forEach(steady -> { - Monitor monitor = pmsMonitorMapper.selectById(steady.getMonitorId()); - if (monitor != null) { - if (StringUtils.equals(monitor.getMonitorTag(), steady.getInterferenceSource())) {//匹配该监测点属于的干扰源类型 - //查询该监测点的检测数据 - RStatLimitRateDPO limitRate = this.queryLimitTargetData(monitor.getId()); - //判断指标是否超标 - Map limitBoolMap = this.verifyLimit(limitRate, steady); - //构建监督数据 - this.buildData(steady, limitBoolMap, monitor, limitRate, superviseParam.getInitType(), thsSupervise, overRunLogList); - - } - } - }); - //生成技术监督数据 - HttpResult deptById = deptFeignClient.getDeptById(depId); - Dept dept = deptById.getData(); - if (InitTypeEnum.AUTO.getCode().equals(superviseParam.getInitType())) { - this.creatData(dept, thsSupervise, overRunLogList); - } else { - this.buildSuperviseName(thsSupervise, overRunLogList, dept); - superviceRunLogVo.setOverRunLog(overRunLogList); - superviceRunLogVo.setThsSupervise(thsSupervise); - } - } - } - } - return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, JSON.toJSONString(superviceRunLogVo), ""); - } - - /** - * 构建技术监督名称 - * - * @param thsSupervise - * @param overRunLogList - * @param dept - */ - private void buildSuperviseName(ThsSupervise thsSupervise, List overRunLogList, Dept dept) { - if (CollectionUtil.isNotEmpty(overRunLogList)) { - thsSupervise.setDescription(overRunLogList.get(0).getDescription()); - String str = Arrays.asList(overRunLogList.get(0).getDescription().split(",")).get(0); - String overItem = str.substring(0, str.indexOf("次") - 1); - thsSupervise.setName(DateUtil.today() + dept.getName() + overRunLogList.get(0).getName() + "等" + overRunLogList.size() + "个监测点" + overItem); - } - } - - //生成技术监督数据 - @DS("process") - @Transactional(rollbackFor = Exception.class) - @Override - public void creatData(Dept dept, ThsSupervise thsSupervise, List overRunLogList) { - if (CollectionUtil.isNotEmpty(overRunLogList)) { - thsSupervise.setDescription(overRunLogList.get(0).getDescription()); - String str = Arrays.asList(overRunLogList.get(0).getDescription().split(",")).get(0); - String overItem = str.substring(0, str.indexOf("次") - 1); - thsSupervise.setName(DateUtil.today() + dept.getName() + overRunLogList.get(0).getName() + "等" + overRunLogList.size() + "个监测点" + overItem); - thsSuperviseMapper.insert(thsSupervise); - - //TODO 解决工作流写死问题 - Map mapParam = new HashMap<>(); - String proInId =""; - if(thsSupervise.getType() == 0){ - proInId = "flow_yzep99kb:1:a100b48b-da75-11ed-8335-b07b253cdad9"; - }else { - proInId = "flow_yzep99kb:2:6358e099-dcba-11ed-8026-b07b253cdad9"; - } - flowableDefineFeignClient.start(proInId,thsSupervise.getSupIndex(),mapParam); - - for (ThsOverRunLog thsOverRunLog : overRunLogList) { - thsOverRunLogMapper.insert(thsOverRunLog); - } - } - } - - - /** - * 查询策略列表 - * - * @param superviseParam - * @return - */ - @DS("process") - @Override - public List selectStrategyList(SuperviseParam superviseParam) { - return thsWarnStrategyMapper.selectStrategyList(superviseParam); - } - - /** - * 查询策略绑定的干扰源列表或指标参数列表 - * - * @param warnId - * @param typeEnum - * @return - */ - @DS("process") - @Override - public List queryWarnStrategyAss(String warnId, TypeEnum typeEnum) { - return thsWarnStrategyAssMapper.selectList(new LambdaQueryWrapper() - .eq(ThsWarnStrategyAss::getWarnId, warnId) - .eq(ThsWarnStrategyAss::getType, typeEnum.getCode())); - } - - /** - * 生成监督数据 - * - * @param limitBoolMap - */ - @Override - public void buildData(SourceSteadyIndicator steady, Map limitBoolMap, Monitor monitor, RStatLimitRateDPO limitRate, Integer initType, ThsSupervise thsSupervise, List thsOverRunLogs) { - if (CollectionUtil.isNotEmpty(limitBoolMap)) { - if (OperationEnum.AND.getCode().equals(steady.getOperation())) { - for (Map.Entry entry : limitBoolMap.entrySet()) { - if (entry.getValue() instanceof Boolean && !(boolean) entry.getValue()) { - return; - } - } - //构建监督数据 - this.buildSuperviseData(steady, monitor, limitRate, limitBoolMap, initType, thsSupervise, thsOverRunLogs); - //构建告警/预警监测点列表数据 - this.buildOverRunLog(steady, thsSupervise, monitor, limitRate, limitBoolMap, initType, thsOverRunLogs); - return; - } - if (OperationEnum.OR.getCode().equals(steady.getOperation())) { - for (Map.Entry entry : limitBoolMap.entrySet()) { - if (entry.getValue() instanceof Boolean && (boolean) entry.getValue()) { - //生成监督数据 - this.buildSuperviseData(steady, monitor, limitRate, limitBoolMap, initType, thsSupervise, thsOverRunLogs); - //生成告警/预警监测点数据 - this.buildOverRunLog(steady, thsSupervise, monitor, limitRate, limitBoolMap, initType, thsOverRunLogs); - return; - } - } - } - } - } - - - @Override - public void buildSuperviseData(SourceSteadyIndicator steady, Monitor monitor, RStatLimitRateDPO limitRate, Map limitBoolMap, Integer initType, ThsSupervise thsSupervise, List thsOverRunLogs) { - if (thsSupervise != null && StringUtils.isBlank(thsSupervise.getSupIndex())) { - thsSupervise.setSupIndex(IdUtil.simpleUUID()); - thsSupervise.setDeptId(steady.getDeptId()); - thsSupervise.setCreateTime(new Date()); - thsSupervise.setType(steady.getType()); - thsSupervise.setCreateUser(RequestUtil.getUsername()); - thsSupervise.setProgress(ProgressEnum.START.getCode()); - thsSupervise.setCreateType(initType); - } - } - - - @Override - public void buildOverRunLog(SourceSteadyIndicator steady, ThsSupervise thsSupervise, Monitor monitor, RStatLimitRateDPO limitRate, Map limitBoolMap, Integer initType, List thsOverRunLogs) { - ThsOverRunLog thsOverRunLog = new ThsOverRunLog(); - thsOverRunLog.setId(IdUtil.simpleUUID()); - thsOverRunLog.setSupIndex(thsSupervise.getSupIndex()); - thsOverRunLog.setLineIndex(monitor.getId()); - thsOverRunLog.setName(monitor.getPowerrName() + "_" + monitor.getName() + "_" + DateUtil.today() + "_" + monitor.getId()); - thsOverRunLog.setUpdateTime(Date.from(limitRate.getTime().atTime(LocalTime.MIDNIGHT).atZone(ZoneId.systemDefault()).toInstant())); - thsOverRunLog.setCreateTime(new Date()); - List descriptionList = (List) limitBoolMap.get(DESCRIPTION); - thsOverRunLog.setDescription(StringUtils.join(descriptionList, ",")); - thsOverRunLogs.add(thsOverRunLog); - } - - - @Override - @DS("pms") - public RStatLimitRateDPO queryLimitTargetData(String monitorId) { - RStatLimitRateDPO limitRate = rateDService.getOne(new LambdaQueryWrapper().eq(RStatLimitRateDPO::getLineId, monitorId) - .between(RStatLimitRateDPO::getTime, - DateUtil.beginOfDay(DateUtil.offsetDay(new Date(), -1)), - DateUtil.endOfDay(DateUtil.offsetDay(new Date(), -1))).last("limit 1")); - return limitRate; - } - - - /** - * 判断监测数据是否超标 - * - * @param limitRate - * @param steady - */ - private Map verifyLimit(RStatLimitRateDPO limitRate, SourceSteadyIndicator steady) { - if (limitRate != null) { - List steadyIndicator = steady.getSteadyIndicator(); - Map limitBoolMap = new HashedMap(); - List descriptionList = new ArrayList<>(); - steadyIndicator.forEach(id -> { - HttpResult dicDataById = dicDataFeignClient.getDicDataById(id); - if (CommonResponseEnum.SUCCESS.getCode().equals(dicDataById.getCode()) && dicDataById.getData() != null) { - SteadyIndicatorEnum steadyIndicatorEnum = SteadyIndicatorEnum.getSteadyIndicatorEnumByCode(dicDataById.getData().getCode()); - if (null != steadyIndicatorEnum) { - switch (steadyIndicatorEnum) { - case Negative_Voltage://负序电压不平衡度 - if (limitRate.getUbalanceOvertime() > 0) { - limitBoolMap.put(SteadyIndicatorEnum.Negative_Voltage.getCode(), true); - descriptionList.add(SteadyIndicatorEnum.Negative_Voltage.getMessage().concat(limitRate.getUbalanceOvertime() + "次")); - } else { - limitBoolMap.put(SteadyIndicatorEnum.Negative_Voltage.getCode(), false); - } - break; - case Interhar_Voltage://间谐波电压 - Integer interharVoltageOvertime = this.maxOverTime(limitRate, InterharVoltage.class); - if (interharVoltageOvertime > 0) { - limitBoolMap.put(SteadyIndicatorEnum.Interhar_Voltage.getCode(), true); - descriptionList.add(SteadyIndicatorEnum.Interhar_Voltage.getMessage().concat(interharVoltageOvertime + "次")); - } else { - limitBoolMap.put(SteadyIndicatorEnum.Interhar_Voltage.getCode(), false); - } - break; - case Neg_Current://负序电流 - if (limitRate.getINegOvertime() > 0) { - limitBoolMap.put(SteadyIndicatorEnum.Neg_Current.getCode(), true); - descriptionList.add(SteadyIndicatorEnum.Neg_Current.getMessage().concat(limitRate.getINegOvertime() + "次")); - } else { - limitBoolMap.put(SteadyIndicatorEnum.Neg_Current.getCode(), false); - } - break; - case Fre_Deviation://频率偏差 - if (limitRate.getFreqDevOvertime() > 0) { - limitBoolMap.put(SteadyIndicatorEnum.Fre_Deviation.getCode(), true); - descriptionList.add(SteadyIndicatorEnum.Fre_Deviation.getMessage().concat(limitRate.getFreqDevOvertime() + "次")); - } else { - limitBoolMap.put(SteadyIndicatorEnum.Fre_Deviation.getCode(), false); - } - break; - case Voltage_Dev://电压偏差 - if (limitRate.getVoltageDevOvertime() > 0) { - limitBoolMap.put(SteadyIndicatorEnum.Voltage_Dev.getCode(), true); - descriptionList.add(SteadyIndicatorEnum.Voltage_Dev.getMessage().concat(limitRate.getVoltageDevOvertime() + "次")); - } else { - limitBoolMap.put(SteadyIndicatorEnum.Voltage_Dev.getCode(), false); - } - break; - case Har_Current://谐波电流 - Integer harCurrentOvertime = this.maxOverTime(limitRate, HarCurrent.class); - if (harCurrentOvertime > 0) { - limitBoolMap.put(SteadyIndicatorEnum.Har_Current.getCode(), true); - descriptionList.add(SteadyIndicatorEnum.Har_Current.getMessage().concat(harCurrentOvertime + "次")); - } else { - limitBoolMap.put(SteadyIndicatorEnum.Har_Current.getCode(), false); - } - break; - case Voltage_Fluc://电压波动与闪变 - if (limitRate.getFlickerOvertime() > 0) { - limitBoolMap.put(SteadyIndicatorEnum.Voltage_Fluc.getCode(), true); - descriptionList.add(SteadyIndicatorEnum.Voltage_Fluc.getMessage().concat(limitRate.getFlickerOvertime() + "次")); - } else { - limitBoolMap.put(SteadyIndicatorEnum.Voltage_Fluc.getCode(), false); - } - break; - case Har_Voltage://谐波电压 - Integer harVoltageOvertime = this.maxOverTime(limitRate, HarVoltage.class); - if (harVoltageOvertime > 0) { - limitBoolMap.put(SteadyIndicatorEnum.Har_Voltage.getCode(), true); - descriptionList.add(SteadyIndicatorEnum.Har_Voltage.getMessage().concat(harVoltageOvertime + "次")); - } else { - limitBoolMap.put(SteadyIndicatorEnum.Har_Voltage.getCode(), false); - } - break; - } - } - } - }); - limitBoolMap.put(DESCRIPTION, descriptionList); - return limitBoolMap; - } - return null; - } - - /*** - * 获取越限最大值 - * @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; - } -} +//package com.njcn.prepare.harmonic.service.mysql.Impl.line; +// +//import cn.hutool.core.collection.CollectionUtil; +//import cn.hutool.core.date.DateUtil; +//import cn.hutool.core.util.IdUtil; +//import com.alibaba.fastjson.JSON; +//import com.baomidou.dynamic.datasource.annotation.DS; +//import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +//import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +//import com.njcn.common.pojo.enums.response.CommonResponseEnum; +//import com.njcn.common.pojo.response.HttpResult; +//import com.njcn.common.utils.HttpResultUtil; +//import com.njcn.device.pms.pojo.po.Monitor; +//import com.njcn.harmonic.pojo.po.day.RStatLimitRateDPO; +//import com.njcn.harmonic.pojo.vo.SourceSteadyIndicator; +//import com.njcn.harmonic.pojo.vo.ThsStrategyVo; +//import com.njcn.oss.utils.FileStorageUtil; +//import com.njcn.prepare.enums.*; +//import com.njcn.prepare.harmonic.mapper.mysql.line.*; +//import com.njcn.prepare.harmonic.pojo.param.SuperviseParam; +//import com.njcn.prepare.harmonic.pojo.po.ThsOverRunLog; +//import com.njcn.prepare.harmonic.pojo.po.ThsSupervise; +//import com.njcn.prepare.harmonic.pojo.vo.SuperviceRunLogVo; +//import com.njcn.prepare.harmonic.service.mysql.day.IRStatLimitRateDService; +//import com.njcn.prepare.harmonic.service.mysql.line.ThsSuperviseService; +//import com.njcn.process.annotaion.HarCurrent; +//import com.njcn.process.annotaion.HarVoltage; +//import com.njcn.process.annotaion.InterharVoltage; +//import com.njcn.process.api.FlowableDefineFeignClient; +//import com.njcn.process.pojo.po.ThsWarnStrategyAss; +//import com.njcn.system.api.DicDataFeignClient; +//import com.njcn.system.pojo.po.DictData; +//import com.njcn.user.api.DeptFeignClient; +//import com.njcn.user.pojo.po.Dept; +//import com.njcn.web.utils.RequestUtil; +//import lombok.RequiredArgsConstructor; +//import lombok.extern.slf4j.Slf4j; +//import org.apache.commons.collections.map.HashedMap; +//import org.apache.commons.lang.StringUtils; +//import org.springframework.scheduling.annotation.Async; +//import org.springframework.stereotype.Service; +//import org.springframework.transaction.annotation.Transactional; +// +//import java.lang.reflect.Field; +//import java.time.Instant; +//import java.time.LocalDate; +//import java.time.LocalTime; +//import java.time.ZoneId; +//import java.util.*; +//import java.util.stream.Collectors; +// +///** +// *

+// * 服务实现类 +// *

+// * +// * @author lxp +// * @since 2023-03-16 +// */ +//@Service +//@Slf4j +//@RequiredArgsConstructor +//public class ThsSuperviseServiceImpl extends ServiceImpl implements ThsSuperviseService { +// +// +// +// +// private final ThsWarnStrategyMapper thsWarnStrategyMapper; +// +// private final ThsWarnStrategyAssMapper thsWarnStrategyAssMapper; +// +// private final PmsMonitorMapper pmsMonitorMapper; +// +// private final IRStatLimitRateDService rateDService; +// +// private final DicDataFeignClient dicDataFeignClient; +// +// private final ThsSuperviseMapper thsSuperviseMapper; +// +// private final ThsOverRunLogMapper thsOverRunLogMapper; +// +// private final DeptFeignClient deptFeignClient; +// +// private final FileStorageUtil fileStorageUtil; +// private static final String DESCRIPTION = "description"; +// +// private final FlowableDefineFeignClient flowableDefineFeignClient; +// +// +// @Override +// @Async("asyncExecutor") +// public void creatSupervise(SuperviseParam superviseParam) { +// this.initSupervise(superviseParam); +// } +// +// @Override +// public HttpResult initSupervise(SuperviseParam superviseParam) { +// SuperviceRunLogVo superviceRunLogVo = new SuperviceRunLogVo(); +// List overRunLogList = new ArrayList<>(); +// if (InitTypeEnum.MANUAL.getCode().equals(superviseParam.getInitType()) && StringUtils.isBlank(superviseParam.getDeptId())) { +// return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.INVALID_PARAMETER, null, ""); +// } +// List thsStrategyList = this.selectStrategyList(superviseParam); +// //按部门进行分组 +// if (CollectionUtil.isNotEmpty(thsStrategyList)) { +// Map> deptMap = thsStrategyList.stream().collect(Collectors.groupingBy(ThsStrategyVo::getDeptId)); +// for (Map.Entry> entry : deptMap.entrySet()) { +// String depId = entry.getKey(); +// ThsSupervise thsSupervise = new ThsSupervise(); +// List deptList = entry.getValue(); +// List oneLevel = deptList.stream().filter(r -> !GradeEnum.THREE_LEVEL.getCode().equals(r.getGrade())).collect(Collectors.toList());//一级或二级策略集合 +// List oneSourceSteadyIndicatorList = new ArrayList<>(); +// if (CollectionUtil.isNotEmpty(oneLevel)) { +// for (ThsStrategyVo oneStrategyVo : oneLevel) { +// List oneInterferenceSourceAsses = this.queryWarnStrategyAss(oneStrategyVo.getId(), TypeEnum.SOURCE_TYPE);//干扰源列表 +// List oneSteadyIndicatorAsses = this.queryWarnStrategyAss(oneStrategyVo.getId(), TypeEnum.INTERFERENCE_TYPE);//干扰源列表 +// List oneSteadyIndicatorAssesIds = oneSteadyIndicatorAsses.stream().map(ThsWarnStrategyAss::getAssId).collect(Collectors.toList()); +// //封装每一种干扰源和对应的指标 +// for (ThsWarnStrategyAss oneWarnStrategyAss : oneInterferenceSourceAsses) { +// SourceSteadyIndicator build = SourceSteadyIndicator.builder().id(oneStrategyVo.getId()).operation(oneStrategyVo.getOperation()) +// .interferenceSource(oneWarnStrategyAss.getAssId()) +// .steadyIndicator(oneSteadyIndicatorAssesIds) +// .deptId(oneStrategyVo.getDeptId()) +// .type(oneStrategyVo.getType()) +// .build(); +// oneSourceSteadyIndicatorList.add(build); +// } +// } +// } +// List threeLevel = deptList.stream().filter(r -> GradeEnum.THREE_LEVEL.getCode().equals(r.getGrade())).collect(Collectors.toList());//三级策略集合 +// if (CollectionUtil.isNotEmpty(threeLevel)) { +// for (ThsStrategyVo threeStrategyVo : threeLevel) { +// Iterator iterator = oneSourceSteadyIndicatorList.iterator(); +// while (iterator.hasNext()) { +// SourceSteadyIndicator sourceSteady = iterator.next(); +// if (sourceSteady.getType().equals(threeStrategyVo.getType())) { +// if (StringUtils.equals(threeStrategyVo.getMonitorId(), sourceSteady.getMonitorId())) { +// List interferenceSourceAsses = this.queryWarnStrategyAss(threeStrategyVo.getId(), TypeEnum.SOURCE_TYPE); +// //干扰源类型id +// List threeInterferenceSourceIds = interferenceSourceAsses.stream().map(ThsWarnStrategyAss::getAssId).collect(Collectors.toList()); +// List threeSteadyIndicatorAsses = this.queryWarnStrategyAss(threeStrategyVo.getId(), TypeEnum.INTERFERENCE_TYPE); +// //指标类型id +// List steadyIndicatorIds = threeSteadyIndicatorAsses.stream().map(ThsWarnStrategyAss::getAssId).collect(Collectors.toList()); +// for (String threeInterferenceSourceId : threeInterferenceSourceIds) { +// if (OperationEnum.AND.getCode().equals(threeStrategyVo.getOperation())) {//处理三级策略的与 +// if (OperationEnum.AND.getCode().equals(sourceSteady.getOperation())) { +// if (StringUtils.equals(threeInterferenceSourceId, sourceSteady.getInterferenceSource()) && +// steadyIndicatorIds.containsAll(sourceSteady.getSteadyIndicator())) { +// iterator.remove(); +// } +// } +// } else {//处理三级策略的或 +// if (StringUtils.equals(threeInterferenceSourceId, sourceSteady.getInterferenceSource())) { +// if (steadyIndicatorIds.containsAll(sourceSteady.getSteadyIndicator())) { +// iterator.remove(); +// } else { +// List steadyIndicator = sourceSteady.getSteadyIndicator(); +// steadyIndicator.removeAll(steadyIndicatorIds); +// } +// } +// } +// } +// } +// } +// } +// } +// } +// if (CollectionUtil.isNotEmpty(oneSourceSteadyIndicatorList)) { +// oneSourceSteadyIndicatorList.forEach(steady -> { +// Monitor monitor = pmsMonitorMapper.selectById(steady.getMonitorId()); +// if (monitor != null) { +// if (StringUtils.equals(monitor.getMonitorTag(), steady.getInterferenceSource())) {//匹配该监测点属于的干扰源类型 +// //查询该监测点的检测数据 +// RStatLimitRateDPO limitRate = this.queryLimitTargetData(monitor.getId()); +// //判断指标是否超标 +// Map limitBoolMap = this.verifyLimit(limitRate, steady); +// //构建监督数据 +// this.buildData(steady, limitBoolMap, monitor, limitRate, superviseParam.getInitType(), thsSupervise, overRunLogList); +// +// } +// } +// }); +// //生成技术监督数据 +// HttpResult deptById = deptFeignClient.getDeptById(depId); +// Dept dept = deptById.getData(); +// if (InitTypeEnum.AUTO.getCode().equals(superviseParam.getInitType())) { +// this.creatData(dept, thsSupervise, overRunLogList); +// } else { +// this.buildSuperviseName(thsSupervise, overRunLogList, dept); +// superviceRunLogVo.setOverRunLog(overRunLogList); +// superviceRunLogVo.setThsSupervise(thsSupervise); +// } +// } +// } +// } +// return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, JSON.toJSONString(superviceRunLogVo), ""); +// } +// +// /** +// * 构建技术监督名称 +// * +// * @param thsSupervise +// * @param overRunLogList +// * @param dept +// */ +// private void buildSuperviseName(ThsSupervise thsSupervise, List overRunLogList, Dept dept) { +// if (CollectionUtil.isNotEmpty(overRunLogList)) { +// thsSupervise.setDescription(overRunLogList.get(0).getDescription()); +// String str = Arrays.asList(overRunLogList.get(0).getDescription().split(",")).get(0); +// String overItem = str.substring(0, str.indexOf("次") - 1); +// thsSupervise.setName(DateUtil.today() + dept.getName() + overRunLogList.get(0).getName() + "等" + overRunLogList.size() + "个监测点" + overItem); +// } +// } +// +// //生成技术监督数据 +// @DS("process") +// @Transactional(rollbackFor = Exception.class) +// @Override +// public void creatData(Dept dept, ThsSupervise thsSupervise, List overRunLogList) { +// if (CollectionUtil.isNotEmpty(overRunLogList)) { +// thsSupervise.setDescription(overRunLogList.get(0).getDescription()); +// String str = Arrays.asList(overRunLogList.get(0).getDescription().split(",")).get(0); +// String overItem = str.substring(0, str.indexOf("次") - 1); +// thsSupervise.setName(DateUtil.today() + dept.getName() + overRunLogList.get(0).getName() + "等" + overRunLogList.size() + "个监测点" + overItem); +// thsSuperviseMapper.insert(thsSupervise); +// +// //TODO 解决工作流写死问题 +// Map mapParam = new HashMap<>(); +// String proInId =""; +// if(thsSupervise.getType() == 0){ +// proInId = "flow_yzep99kb:1:a100b48b-da75-11ed-8335-b07b253cdad9"; +// }else { +// proInId = "flow_yzep99kb:2:6358e099-dcba-11ed-8026-b07b253cdad9"; +// } +// flowableDefineFeignClient.start(proInId,thsSupervise.getSupIndex(),mapParam); +// +// for (ThsOverRunLog thsOverRunLog : overRunLogList) { +// thsOverRunLogMapper.insert(thsOverRunLog); +// } +// } +// } +// +// +// /** +// * 查询策略列表 +// * +// * @param superviseParam +// * @return +// */ +// @DS("process") +// @Override +// public List selectStrategyList(SuperviseParam superviseParam) { +// return thsWarnStrategyMapper.selectStrategyList(superviseParam); +// } +// +// /** +// * 查询策略绑定的干扰源列表或指标参数列表 +// * +// * @param warnId +// * @param typeEnum +// * @return +// */ +// @DS("process") +// @Override +// public List queryWarnStrategyAss(String warnId, TypeEnum typeEnum) { +// return thsWarnStrategyAssMapper.selectList(new LambdaQueryWrapper() +// .eq(ThsWarnStrategyAss::getWarnId, warnId) +// .eq(ThsWarnStrategyAss::getType, typeEnum.getCode())); +// } +// +// /** +// * 生成监督数据 +// * +// * @param limitBoolMap +// */ +// @Override +// public void buildData(SourceSteadyIndicator steady, Map limitBoolMap, Monitor monitor, RStatLimitRateDPO limitRate, Integer initType, ThsSupervise thsSupervise, List thsOverRunLogs) { +// if (CollectionUtil.isNotEmpty(limitBoolMap)) { +// if (OperationEnum.AND.getCode().equals(steady.getOperation())) { +// for (Map.Entry entry : limitBoolMap.entrySet()) { +// if (entry.getValue() instanceof Boolean && !(boolean) entry.getValue()) { +// return; +// } +// } +// //构建监督数据 +// this.buildSuperviseData(steady, monitor, limitRate, limitBoolMap, initType, thsSupervise, thsOverRunLogs); +// //构建告警/预警监测点列表数据 +// this.buildOverRunLog(steady, thsSupervise, monitor, limitRate, limitBoolMap, initType, thsOverRunLogs); +// return; +// } +// if (OperationEnum.OR.getCode().equals(steady.getOperation())) { +// for (Map.Entry entry : limitBoolMap.entrySet()) { +// if (entry.getValue() instanceof Boolean && (boolean) entry.getValue()) { +// //生成监督数据 +// this.buildSuperviseData(steady, monitor, limitRate, limitBoolMap, initType, thsSupervise, thsOverRunLogs); +// //生成告警/预警监测点数据 +// this.buildOverRunLog(steady, thsSupervise, monitor, limitRate, limitBoolMap, initType, thsOverRunLogs); +// return; +// } +// } +// } +// } +// } +// +// +// @Override +// public void buildSuperviseData(SourceSteadyIndicator steady, Monitor monitor, RStatLimitRateDPO limitRate, Map limitBoolMap, Integer initType, ThsSupervise thsSupervise, List thsOverRunLogs) { +// if (thsSupervise != null && StringUtils.isBlank(thsSupervise.getSupIndex())) { +// thsSupervise.setSupIndex(IdUtil.simpleUUID()); +// thsSupervise.setDeptId(steady.getDeptId()); +// thsSupervise.setCreateTime(new Date()); +// thsSupervise.setType(steady.getType()); +// thsSupervise.setCreateUser(RequestUtil.getUsername()); +// thsSupervise.setProgress(ProgressEnum.START.getCode()); +// thsSupervise.setCreateType(initType); +// } +// } +// +// +// @Override +// public void buildOverRunLog(SourceSteadyIndicator steady, ThsSupervise thsSupervise, Monitor monitor, RStatLimitRateDPO limitRate, Map limitBoolMap, Integer initType, List thsOverRunLogs) { +// ThsOverRunLog thsOverRunLog = new ThsOverRunLog(); +// thsOverRunLog.setId(IdUtil.simpleUUID()); +// thsOverRunLog.setSupIndex(thsSupervise.getSupIndex()); +// thsOverRunLog.setLineIndex(monitor.getId()); +// thsOverRunLog.setName(monitor.getPowerrName() + "_" + monitor.getName() + "_" + DateUtil.today() + "_" + monitor.getId()); +// thsOverRunLog.setUpdateTime(Date.from(limitRate.getTime().atTime(LocalTime.MIDNIGHT).atZone(ZoneId.systemDefault()).toInstant())); +// thsOverRunLog.setCreateTime(new Date()); +// List descriptionList = (List) limitBoolMap.get(DESCRIPTION); +// thsOverRunLog.setDescription(StringUtils.join(descriptionList, ",")); +// thsOverRunLogs.add(thsOverRunLog); +// } +// +// +// @Override +// @DS("pms") +// public RStatLimitRateDPO queryLimitTargetData(String monitorId) { +// RStatLimitRateDPO limitRate = rateDService.getOne(new LambdaQueryWrapper().eq(RStatLimitRateDPO::getLineId, monitorId) +// .between(RStatLimitRateDPO::getTime, +// DateUtil.beginOfDay(DateUtil.offsetDay(new Date(), -1)), +// DateUtil.endOfDay(DateUtil.offsetDay(new Date(), -1))).last("limit 1")); +// return limitRate; +// } +// +// +// /** +// * 判断监测数据是否超标 +// * +// * @param limitRate +// * @param steady +// */ +// private Map verifyLimit(RStatLimitRateDPO limitRate, SourceSteadyIndicator steady) { +// if (limitRate != null) { +// List steadyIndicator = steady.getSteadyIndicator(); +// Map limitBoolMap = new HashedMap(); +// List descriptionList = new ArrayList<>(); +// steadyIndicator.forEach(id -> { +// HttpResult dicDataById = dicDataFeignClient.getDicDataById(id); +// if (CommonResponseEnum.SUCCESS.getCode().equals(dicDataById.getCode()) && dicDataById.getData() != null) { +// SteadyIndicatorEnum steadyIndicatorEnum = SteadyIndicatorEnum.getSteadyIndicatorEnumByCode(dicDataById.getData().getCode()); +// if (null != steadyIndicatorEnum) { +// switch (steadyIndicatorEnum) { +// case Negative_Voltage://负序电压不平衡度 +// if (limitRate.getUbalanceOvertime() > 0) { +// limitBoolMap.put(SteadyIndicatorEnum.Negative_Voltage.getCode(), true); +// descriptionList.add(SteadyIndicatorEnum.Negative_Voltage.getMessage().concat(limitRate.getUbalanceOvertime() + "次")); +// } else { +// limitBoolMap.put(SteadyIndicatorEnum.Negative_Voltage.getCode(), false); +// } +// break; +// case Interhar_Voltage://间谐波电压 +// Integer interharVoltageOvertime = this.maxOverTime(limitRate, InterharVoltage.class); +// if (interharVoltageOvertime > 0) { +// limitBoolMap.put(SteadyIndicatorEnum.Interhar_Voltage.getCode(), true); +// descriptionList.add(SteadyIndicatorEnum.Interhar_Voltage.getMessage().concat(interharVoltageOvertime + "次")); +// } else { +// limitBoolMap.put(SteadyIndicatorEnum.Interhar_Voltage.getCode(), false); +// } +// break; +// case Neg_Current://负序电流 +// if (limitRate.getINegOvertime() > 0) { +// limitBoolMap.put(SteadyIndicatorEnum.Neg_Current.getCode(), true); +// descriptionList.add(SteadyIndicatorEnum.Neg_Current.getMessage().concat(limitRate.getINegOvertime() + "次")); +// } else { +// limitBoolMap.put(SteadyIndicatorEnum.Neg_Current.getCode(), false); +// } +// break; +// case Fre_Deviation://频率偏差 +// if (limitRate.getFreqDevOvertime() > 0) { +// limitBoolMap.put(SteadyIndicatorEnum.Fre_Deviation.getCode(), true); +// descriptionList.add(SteadyIndicatorEnum.Fre_Deviation.getMessage().concat(limitRate.getFreqDevOvertime() + "次")); +// } else { +// limitBoolMap.put(SteadyIndicatorEnum.Fre_Deviation.getCode(), false); +// } +// break; +// case Voltage_Dev://电压偏差 +// if (limitRate.getVoltageDevOvertime() > 0) { +// limitBoolMap.put(SteadyIndicatorEnum.Voltage_Dev.getCode(), true); +// descriptionList.add(SteadyIndicatorEnum.Voltage_Dev.getMessage().concat(limitRate.getVoltageDevOvertime() + "次")); +// } else { +// limitBoolMap.put(SteadyIndicatorEnum.Voltage_Dev.getCode(), false); +// } +// break; +// case Har_Current://谐波电流 +// Integer harCurrentOvertime = this.maxOverTime(limitRate, HarCurrent.class); +// if (harCurrentOvertime > 0) { +// limitBoolMap.put(SteadyIndicatorEnum.Har_Current.getCode(), true); +// descriptionList.add(SteadyIndicatorEnum.Har_Current.getMessage().concat(harCurrentOvertime + "次")); +// } else { +// limitBoolMap.put(SteadyIndicatorEnum.Har_Current.getCode(), false); +// } +// break; +// case Voltage_Fluc://电压波动与闪变 +// if (limitRate.getFlickerOvertime() > 0) { +// limitBoolMap.put(SteadyIndicatorEnum.Voltage_Fluc.getCode(), true); +// descriptionList.add(SteadyIndicatorEnum.Voltage_Fluc.getMessage().concat(limitRate.getFlickerOvertime() + "次")); +// } else { +// limitBoolMap.put(SteadyIndicatorEnum.Voltage_Fluc.getCode(), false); +// } +// break; +// case Har_Voltage://谐波电压 +// Integer harVoltageOvertime = this.maxOverTime(limitRate, HarVoltage.class); +// if (harVoltageOvertime > 0) { +// limitBoolMap.put(SteadyIndicatorEnum.Har_Voltage.getCode(), true); +// descriptionList.add(SteadyIndicatorEnum.Har_Voltage.getMessage().concat(harVoltageOvertime + "次")); +// } else { +// limitBoolMap.put(SteadyIndicatorEnum.Har_Voltage.getCode(), false); +// } +// break; +// } +// } +// } +// }); +// limitBoolMap.put(DESCRIPTION, descriptionList); +// return limitBoolMap; +// } +// return null; +// } +// +// /*** +// * 获取越限最大值 +// * @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; +// } +//} diff --git a/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/line/ThsSuperviseService.java b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/line/ThsSuperviseService.java index 13822fbbe..9cfb7b2a7 100644 --- a/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/line/ThsSuperviseService.java +++ b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/line/ThsSuperviseService.java @@ -1,99 +1,99 @@ -package com.njcn.prepare.harmonic.service.mysql.line; - -import com.baomidou.mybatisplus.extension.service.IService; -import com.njcn.common.pojo.response.HttpResult; -import com.njcn.device.pms.pojo.po.Monitor; -import com.njcn.harmonic.pojo.po.day.RStatLimitRateDPO; -import com.njcn.harmonic.pojo.vo.SourceSteadyIndicator; -import com.njcn.harmonic.pojo.vo.ThsStrategyVo; -import com.njcn.prepare.enums.TypeEnum; -import com.njcn.prepare.harmonic.pojo.param.SuperviseParam; -import com.njcn.prepare.harmonic.pojo.po.ThsOverRunLog; -import com.njcn.prepare.harmonic.pojo.po.ThsSupervise; -import com.njcn.process.pojo.po.ThsWarnStrategyAss; -import com.njcn.user.pojo.po.Dept; - -import java.util.List; -import java.util.Map; - -/** - *

- * 服务类 - *

- * - * @author lxp - * @since 2023-03-16 - */ -public interface ThsSuperviseService extends IService { - /** - * 初始化技术监督 - */ - HttpResult initSupervise(SuperviseParam superviseParam); - - /** - * 查新策略集合 - * - * @param superviseParam - * @return - */ - List selectStrategyList(SuperviseParam superviseParam); - - /** - * 查询LimitTarget数据 - * - * @param monitorId - */ - RStatLimitRateDPO queryLimitTargetData(String monitorId); - - /** - * 生成监督数据 - * - * @param limitBoolMap - */ - void buildData(SourceSteadyIndicator steady, Map limitBoolMap, Monitor monitor, RStatLimitRateDPO limitRate, Integer initType, ThsSupervise thsSupervise, List thsOverRunLogs); - - /** - * 查询策略绑定的干扰源列表或指标参数列表 - * - * @param id - * @param typeEnum - * @return - */ - List queryWarnStrategyAss(String id, TypeEnum typeEnum); - - /** - * 生成监督数据 - * - * @param steady - * @param monitor - * @return - */ - void buildSuperviseData(SourceSteadyIndicator steady, Monitor monitor, RStatLimitRateDPO limitRate, Map limitBoolMap, Integer initType, ThsSupervise thsSupervise, List thsOverRunLogs); - - /** - * 生成 告警/预警监测点列表 数据 - * - * @param steady - * @param thsSupervise - * @param monitor - */ - void buildOverRunLog(SourceSteadyIndicator steady, ThsSupervise thsSupervise, Monitor monitor, RStatLimitRateDPO limitRate, Map limitBoolMap, Integer initType, List thsOverRunLogs); - - - /** - * 生成技术监督数据 - * - * @param thsSupervise - * @param overRunLogList - */ - void creatData(Dept dept, ThsSupervise thsSupervise, List overRunLogList); - - /** - * 创建技术监督 - * - * @param superviseParam - * @return - */ - - void creatSupervise(SuperviseParam superviseParam); -} +//package com.njcn.prepare.harmonic.service.mysql.line; +// +//import com.baomidou.mybatisplus.extension.service.IService; +//import com.njcn.common.pojo.response.HttpResult; +//import com.njcn.device.pms.pojo.po.Monitor; +//import com.njcn.harmonic.pojo.po.day.RStatLimitRateDPO; +//import com.njcn.harmonic.pojo.vo.SourceSteadyIndicator; +//import com.njcn.harmonic.pojo.vo.ThsStrategyVo; +//import com.njcn.prepare.enums.TypeEnum; +//import com.njcn.prepare.harmonic.pojo.param.SuperviseParam; +//import com.njcn.prepare.harmonic.pojo.po.ThsOverRunLog; +//import com.njcn.prepare.harmonic.pojo.po.ThsSupervise; +//import com.njcn.process.pojo.po.ThsWarnStrategyAss; +//import com.njcn.user.pojo.po.Dept; +// +//import java.util.List; +//import java.util.Map; +// +///** +// *

+// * 服务类 +// *

+// * +// * @author lxp +// * @since 2023-03-16 +// */ +//public interface ThsSuperviseService extends IService { +// /** +// * 初始化技术监督 +// */ +// HttpResult initSupervise(SuperviseParam superviseParam); +// +// /** +// * 查新策略集合 +// * +// * @param superviseParam +// * @return +// */ +// List selectStrategyList(SuperviseParam superviseParam); +// +// /** +// * 查询LimitTarget数据 +// * +// * @param monitorId +// */ +// RStatLimitRateDPO queryLimitTargetData(String monitorId); +// +// /** +// * 生成监督数据 +// * +// * @param limitBoolMap +// */ +// void buildData(SourceSteadyIndicator steady, Map limitBoolMap, Monitor monitor, RStatLimitRateDPO limitRate, Integer initType, ThsSupervise thsSupervise, List thsOverRunLogs); +// +// /** +// * 查询策略绑定的干扰源列表或指标参数列表 +// * +// * @param id +// * @param typeEnum +// * @return +// */ +// List queryWarnStrategyAss(String id, TypeEnum typeEnum); +// +// /** +// * 生成监督数据 +// * +// * @param steady +// * @param monitor +// * @return +// */ +// void buildSuperviseData(SourceSteadyIndicator steady, Monitor monitor, RStatLimitRateDPO limitRate, Map limitBoolMap, Integer initType, ThsSupervise thsSupervise, List thsOverRunLogs); +// +// /** +// * 生成 告警/预警监测点列表 数据 +// * +// * @param steady +// * @param thsSupervise +// * @param monitor +// */ +// void buildOverRunLog(SourceSteadyIndicator steady, ThsSupervise thsSupervise, Monitor monitor, RStatLimitRateDPO limitRate, Map limitBoolMap, Integer initType, List thsOverRunLogs); +// +// +// /** +// * 生成技术监督数据 +// * +// * @param thsSupervise +// * @param overRunLogList +// */ +// void creatData(Dept dept, ThsSupervise thsSupervise, List overRunLogList); +// +// /** +// * 创建技术监督 +// * +// * @param superviseParam +// * @return +// */ +// +// void creatSupervise(SuperviseParam superviseParam); +//}