From 338b659d94f7e57174666c9f9a13703d4fc6f60f Mon Sep 17 00:00:00 2001 From: huangzj <826100833@qq.com> Date: Mon, 27 Feb 2023 11:24:58 +0800 Subject: [PATCH] =?UTF-8?q?=E9=A2=84=E5=A4=84=E7=90=86=E6=A8=A1=E5=9D=97?= =?UTF-8?q?=EF=BC=9A=E5=B7=A5=E5=8D=95=E9=97=AE=E9=A2=98=E7=94=9F=E6=88=90?= =?UTF-8?q?=EF=BC=8C=E4=B8=BB=E7=BD=91=E6=9C=89=E6=95=88=E7=9B=91=E6=B5=8B?= =?UTF-8?q?=E6=97=B6=E9=95=BF=E8=AE=A1=E7=AE=97=EF=BC=8C=20=E8=BF=87?= =?UTF-8?q?=E7=A8=8B=E7=9B=91=E7=9D=A3=E6=A8=A1=E5=9D=97=EF=BC=9A=E5=B7=A5?= =?UTF-8?q?=E5=8D=95=E6=A8=A1=E5=9D=97=E5=8A=9F=E8=83=BD=EF=BC=8C=E5=85=B6?= =?UTF-8?q?=E4=BB=96=E6=A8=A1=E5=9D=97=E7=9A=84=E5=AE=A1=E6=A0=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../njcn/common/pojo/constant/ServerInfo.java | 2 + .../api/PmsPowerDistributionareaClient.java | 28 ++ ...DistributionareaClientFallbackFactory.java | 43 +++ .../majornetwork/EventDetailPmsService.java | 2 - .../impl/RStatDevSignalDServiceImpl.java | 6 +- .../njcn/harmonic/utils/HarmonicEnumUtil.java | 10 +- pqs-prepare/harmonic-prepare/pom.xml | 6 + .../controller/area/AreaCountController.java | 1 - .../area/EffectiveMinuteCountController.java | 75 ++++ .../area/RStatWorkOrderCreateController.java | 79 +++++ .../mapper/oracle/DataVOraclePOMapper.java | 5 + .../oracle/mapping/DataVOraclePOMapper.xml | 29 ++ .../influxdb/DataVInfluxdbService.java | 35 ++ .../influxdb/RStatWorkOrderCreateService.java | 15 + .../impl/DataVInfluxdbServiceImpl.java | 108 ++++++ .../impl/RStatWorkOrderCreateServiceImpl.java | 265 ++++++++++++++ .../area/EffectiveMinuteCountServiceImpl.java | 327 ++++++++++++++++++ .../Impl/area/PrimaryGridDataServiceImpl.java | 85 ++++- .../area/EffectiveMinuteCountService.java | 22 ++ .../service/oracle/DataVOraclePOService.java | 10 + .../oracle/Impl/DataVOraclePOServiceImpl.java | 18 + .../Impl/PqsEventdetailServiceImpl.java | 1 - .../harmonic/pojo/dto/DataVFiveItemDTO.java | 65 ++++ .../harmonic/pojo/dto/OverLimitFlagDTO.java | 29 ++ .../pojo/param/WorkOrderCreateParam.java | 33 ++ pqs-process/process-api/pom.xml | 6 + .../api/RStatWorkOrderFeignClient.java | 25 ++ .../RStatWorkOrderFallbackFactory.java | 45 +++ .../param/ElectricityQualityCheckParam.java | 35 ++ .../pojo/param/LoadTypeUserCheckParam.java | 32 ++ .../param/RGeneralSurveyPlanChcekParm.java | 39 +++ .../param/RStatProblemAndWorkOrderParam.java | 51 +++ .../process/pojo/po/RGeneralSurveyPlanPO.java | 10 + .../process/pojo/po/RLoadTypeUserManage.java | 19 + .../pojo/po/RStatDistributionProblemPO.java | 6 +- .../po/RStatElectricQualityProblemLogPO.java | 190 ++++++++++ .../pojo/po/RStatWorkOrderDetailPO.java | 21 +- .../process/pojo/vo/RGeneralSurveyPlanVO.java | 12 +- .../pojo/vo/RStatDistributionProblemVO.java | 83 +++++ .../vo/RStatElectricQualityProblemLogVO.java | 180 ++++++++++ .../pojo/vo/RStatWorkOrderDetailVO.java | 189 ++++++++++ .../njcn/process/utils/ProcessEnumUtil.java | 46 +++ pqs-process/process-boot/pom.xml | 6 + .../ElectricityQualityIssuesController.java | 30 +- .../LoadTypeUserManageController.java | 20 ++ .../RGeneralSurveyPlanController.java | 13 +- .../controller/RStatWorkOrderController.java | 67 +++- .../RStatElectricQualityProblemLogMapper.java | 16 + .../mapper/RStatWorkOrderDetailMapper.java | 26 ++ .../RStatElectricQualityProblemLogMapper.xml | 20 ++ .../njcn/process/service/IssuesService.java | 18 + .../service/LoadTypeUserManageService.java | 16 + .../service/RGeneralSurveyPlanPOService.java | 13 +- .../RStatDistributionProblemService.java | 47 +++ .../service/impl/IssuesServiceImpl.java | 88 +++++ .../impl/LoadTypeUserManageServiceImpl.java | 51 +++ .../impl/RGeneralSurveyPlanPOServiceImpl.java | 28 +- .../RStatDistributionProblemServiceImpl.java | 242 ++++++++++++- 58 files changed, 2932 insertions(+), 57 deletions(-) create mode 100644 pqs-device/pms-device/pms-device-api/src/main/java/com/njcn/device/pms/api/PmsPowerDistributionareaClient.java create mode 100644 pqs-device/pms-device/pms-device-api/src/main/java/com/njcn/device/pms/api/fallback/PmsPowerDistributionareaClientFallbackFactory.java create mode 100644 pqs-prepare/harmonic-prepare/src/main/java/com/njcn/prepare/harmonic/controller/area/EffectiveMinuteCountController.java create mode 100644 pqs-prepare/harmonic-prepare/src/main/java/com/njcn/prepare/harmonic/controller/area/RStatWorkOrderCreateController.java create mode 100644 pqs-prepare/harmonic-prepare/src/main/java/com/njcn/prepare/harmonic/service/influxdb/DataVInfluxdbService.java create mode 100644 pqs-prepare/harmonic-prepare/src/main/java/com/njcn/prepare/harmonic/service/influxdb/RStatWorkOrderCreateService.java create mode 100644 pqs-prepare/harmonic-prepare/src/main/java/com/njcn/prepare/harmonic/service/influxdb/impl/DataVInfluxdbServiceImpl.java create mode 100644 pqs-prepare/harmonic-prepare/src/main/java/com/njcn/prepare/harmonic/service/influxdb/impl/RStatWorkOrderCreateServiceImpl.java create mode 100644 pqs-prepare/harmonic-prepare/src/main/java/com/njcn/prepare/harmonic/service/mysql/Impl/area/EffectiveMinuteCountServiceImpl.java create mode 100644 pqs-prepare/harmonic-prepare/src/main/java/com/njcn/prepare/harmonic/service/mysql/area/EffectiveMinuteCountService.java create mode 100644 pqs-prepare/prepare-api/src/main/java/com/njcn/prepare/harmonic/pojo/dto/DataVFiveItemDTO.java create mode 100644 pqs-prepare/prepare-api/src/main/java/com/njcn/prepare/harmonic/pojo/dto/OverLimitFlagDTO.java create mode 100644 pqs-prepare/prepare-api/src/main/java/com/njcn/prepare/harmonic/pojo/param/WorkOrderCreateParam.java create mode 100644 pqs-process/process-api/src/main/java/com/njcn/process/api/RStatWorkOrderFeignClient.java create mode 100644 pqs-process/process-api/src/main/java/com/njcn/process/api/fallback/RStatWorkOrderFallbackFactory.java create mode 100644 pqs-process/process-api/src/main/java/com/njcn/process/pojo/param/ElectricityQualityCheckParam.java create mode 100644 pqs-process/process-api/src/main/java/com/njcn/process/pojo/param/LoadTypeUserCheckParam.java create mode 100644 pqs-process/process-api/src/main/java/com/njcn/process/pojo/param/RGeneralSurveyPlanChcekParm.java create mode 100644 pqs-process/process-api/src/main/java/com/njcn/process/pojo/param/RStatProblemAndWorkOrderParam.java create mode 100644 pqs-process/process-api/src/main/java/com/njcn/process/pojo/po/RStatElectricQualityProblemLogPO.java create mode 100644 pqs-process/process-api/src/main/java/com/njcn/process/pojo/vo/RStatDistributionProblemVO.java create mode 100644 pqs-process/process-api/src/main/java/com/njcn/process/pojo/vo/RStatElectricQualityProblemLogVO.java create mode 100644 pqs-process/process-api/src/main/java/com/njcn/process/pojo/vo/RStatWorkOrderDetailVO.java create mode 100644 pqs-process/process-api/src/main/java/com/njcn/process/utils/ProcessEnumUtil.java create mode 100644 pqs-process/process-boot/src/main/java/com/njcn/process/mapper/RStatElectricQualityProblemLogMapper.java create mode 100644 pqs-process/process-boot/src/main/java/com/njcn/process/mapper/mapping/RStatElectricQualityProblemLogMapper.xml diff --git a/pqs-common/common-core/src/main/java/com/njcn/common/pojo/constant/ServerInfo.java b/pqs-common/common-core/src/main/java/com/njcn/common/pojo/constant/ServerInfo.java index 90d61b0d6..56349f650 100644 --- a/pqs-common/common-core/src/main/java/com/njcn/common/pojo/constant/ServerInfo.java +++ b/pqs-common/common-core/src/main/java/com/njcn/common/pojo/constant/ServerInfo.java @@ -25,5 +25,7 @@ public interface ServerInfo { String QUALITY = "quality-boot"; String HARMONIC_PREPARE = "harmonic-prepare"; String EVENT_PREPARE = "event-prepare"; + String PROCESS = "process-boot"; + } diff --git a/pqs-device/pms-device/pms-device-api/src/main/java/com/njcn/device/pms/api/PmsPowerDistributionareaClient.java b/pqs-device/pms-device/pms-device-api/src/main/java/com/njcn/device/pms/api/PmsPowerDistributionareaClient.java new file mode 100644 index 000000000..b25776e59 --- /dev/null +++ b/pqs-device/pms-device/pms-device-api/src/main/java/com/njcn/device/pms/api/PmsPowerDistributionareaClient.java @@ -0,0 +1,28 @@ +package com.njcn.device.pms.api; + +import com.njcn.common.pojo.constant.ServerInfo; +import com.njcn.common.pojo.response.HttpResult; +import com.njcn.device.pms.api.fallback.PmsPowerDistributionareaClientFallbackFactory; +import com.njcn.device.pms.pojo.param.PowerDistributionareaParam; +import com.njcn.device.pms.pojo.po.PowerDistributionarea; +import org.springframework.cloud.openfeign.FeignClient; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; + +import java.util.List; + +/** + * @author clam + * @date 2022/10/18 + */ +@FeignClient( + value = ServerInfo.DEVICE, + path = "/pms/powerDistributionarea", + contextId = "pms/powerDistributionarea", + fallbackFactory = PmsPowerDistributionareaClientFallbackFactory.class) +public interface PmsPowerDistributionareaClient { + + @PostMapping("getPowerDistributionList") + HttpResult> getPowerDistributionList(@RequestBody PowerDistributionareaParam powerDistributionareaParam); + +} diff --git a/pqs-device/pms-device/pms-device-api/src/main/java/com/njcn/device/pms/api/fallback/PmsPowerDistributionareaClientFallbackFactory.java b/pqs-device/pms-device/pms-device-api/src/main/java/com/njcn/device/pms/api/fallback/PmsPowerDistributionareaClientFallbackFactory.java new file mode 100644 index 000000000..c26eb22e5 --- /dev/null +++ b/pqs-device/pms-device/pms-device-api/src/main/java/com/njcn/device/pms/api/fallback/PmsPowerDistributionareaClientFallbackFactory.java @@ -0,0 +1,43 @@ +package com.njcn.device.pms.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.pms.api.PmsPowerDistributionareaClient; +import com.njcn.device.pms.pojo.param.PowerDistributionareaParam; +import com.njcn.device.pms.pojo.po.PowerDistributionarea; +import com.njcn.device.pms.utils.PmsDeviceEnumUtil; +import feign.hystrix.FallbackFactory; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Component; + +import java.util.List; + +/** + * @author clam + * @date 2022/10/18 + */ +@Slf4j +@Component +public class PmsPowerDistributionareaClientFallbackFactory implements FallbackFactory { + + @Override + public PmsPowerDistributionareaClient create(Throwable throwable) { + //判断抛出异常是否为解码器抛出的业务异常 + Enum exceptionEnum = CommonResponseEnum.SERVICE_FALLBACK; + if (throwable.getCause() instanceof BusinessException) { + BusinessException businessException = (BusinessException) throwable.getCause(); + exceptionEnum = PmsDeviceEnumUtil.getExceptionEnum(businessException.getResult()); + } + Enum finalExceptionEnum = exceptionEnum; + return new PmsPowerDistributionareaClient() + { + @Override + public HttpResult> getPowerDistributionList(PowerDistributionareaParam powerDistributionareaParam) { + 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/EventDetailPmsService.java b/pqs-device/pms-device/pms-device-boot/src/main/java/com/njcn/device/pms/service/majornetwork/EventDetailPmsService.java index abe852dd5..a8dc6607f 100644 --- a/pqs-device/pms-device/pms-device-boot/src/main/java/com/njcn/device/pms/service/majornetwork/EventDetailPmsService.java +++ b/pqs-device/pms-device/pms-device-boot/src/main/java/com/njcn/device/pms/service/majornetwork/EventDetailPmsService.java @@ -2,8 +2,6 @@ package com.njcn.device.pms.service.majornetwork; import com.njcn.event.pojo.po.EventDetail; -import java.util.List; - /** * @author qijian * @version 1.0.0 diff --git a/pqs-device/pms-device/pms-device-boot/src/main/java/com/njcn/device/pms/service/majornetwork/impl/RStatDevSignalDServiceImpl.java b/pqs-device/pms-device/pms-device-boot/src/main/java/com/njcn/device/pms/service/majornetwork/impl/RStatDevSignalDServiceImpl.java index 677681cca..6283ecde9 100644 --- a/pqs-device/pms-device/pms-device-boot/src/main/java/com/njcn/device/pms/service/majornetwork/impl/RStatDevSignalDServiceImpl.java +++ b/pqs-device/pms-device/pms-device-boot/src/main/java/com/njcn/device/pms/service/majornetwork/impl/RStatDevSignalDServiceImpl.java @@ -52,9 +52,9 @@ public class RStatDevSignalDServiceImpl extends ServiceImpl deptDTOList = deptFeignClient.getDeptDescendantIndexes(id, WebUtil.filterDeptType()).getData(); - /*获取下一级子部门信息*/ - List deptDTOList = deptFeignClient.getDepSonDetailByDeptId (id).getData ( ); + List deptDTOList = deptFeignClient.getDeptDescendantIndexes(id, WebUtil.filterDeptType()).getData(); +// /*获取下一级子部门信息*/ +// List deptDTOList = deptFeignClient.getDepSonDetailByDeptId (id).getData ( ); if (CollUtil.isEmpty(deptDTOList)) { throw new BusinessException(CommonResponseEnum.NO_DATA, "部门不存在"); } diff --git a/pqs-harmonic/harmonic-api/src/main/java/com/njcn/harmonic/utils/HarmonicEnumUtil.java b/pqs-harmonic/harmonic-api/src/main/java/com/njcn/harmonic/utils/HarmonicEnumUtil.java index d1e8d9ad2..91230bcc2 100644 --- a/pqs-harmonic/harmonic-api/src/main/java/com/njcn/harmonic/utils/HarmonicEnumUtil.java +++ b/pqs-harmonic/harmonic-api/src/main/java/com/njcn/harmonic/utils/HarmonicEnumUtil.java @@ -3,6 +3,7 @@ package com.njcn.harmonic.utils; import cn.hutool.core.util.StrUtil; 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.common.utils.EnumUtils; import com.njcn.harmonic.enums.HarmonicResponseEnum; @@ -32,7 +33,14 @@ public class HarmonicEnumUtil { throw new BusinessException(CommonResponseEnum.INTERNAL_ERROR); } } - + public static Enum getExceptionEnum(HttpResult result){ + //如果返回错误,且为内部错误,则直接抛出异常 + CommonResponseEnum commonResponseEnum = EnumUtils.getCommonResponseEnumByCode(result.getCode()); + if (commonResponseEnum == CommonResponseEnum.DEVICE_RESPONSE_ENUM) { + return getHarmonicEnumResponseEnumByMessage(result.getMessage()); + } + return commonResponseEnum; + } } diff --git a/pqs-prepare/harmonic-prepare/pom.xml b/pqs-prepare/harmonic-prepare/pom.xml index cd43ff66b..dc1f818f3 100644 --- a/pqs-prepare/harmonic-prepare/pom.xml +++ b/pqs-prepare/harmonic-prepare/pom.xml @@ -35,6 +35,12 @@ ${project.version} compile + + com.njcn + process-api + ${project.version} + compile + com.njcn common-influxDB diff --git a/pqs-prepare/harmonic-prepare/src/main/java/com/njcn/prepare/harmonic/controller/area/AreaCountController.java b/pqs-prepare/harmonic-prepare/src/main/java/com/njcn/prepare/harmonic/controller/area/AreaCountController.java index d18789724..9091a164d 100644 --- a/pqs-prepare/harmonic-prepare/src/main/java/com/njcn/prepare/harmonic/controller/area/AreaCountController.java +++ b/pqs-prepare/harmonic-prepare/src/main/java/com/njcn/prepare/harmonic/controller/area/AreaCountController.java @@ -58,7 +58,6 @@ public class AreaCountController extends BaseController { Boolean result = true; List orgIdList = new ArrayList<> (); if(CollectionUtils.isEmpty (primaryGridParam.getOrgIdList ())){ - /*todo 不知道是否需要补招*/ List dept = deptFeignClient.allDeptList().getData(); orgIdList = dept.stream ( ).map (PvTerminalTreeVO::getId).collect (Collectors.toList ( )); }else{ diff --git a/pqs-prepare/harmonic-prepare/src/main/java/com/njcn/prepare/harmonic/controller/area/EffectiveMinuteCountController.java b/pqs-prepare/harmonic-prepare/src/main/java/com/njcn/prepare/harmonic/controller/area/EffectiveMinuteCountController.java new file mode 100644 index 000000000..e4676d2de --- /dev/null +++ b/pqs-prepare/harmonic-prepare/src/main/java/com/njcn/prepare/harmonic/controller/area/EffectiveMinuteCountController.java @@ -0,0 +1,75 @@ +package com.njcn.prepare.harmonic.controller.area; + +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.prepare.harmonic.pojo.param.PrimaryGridParam; +import com.njcn.prepare.harmonic.service.mysql.area.EffectiveMinuteCountService; +import com.njcn.user.api.DeptFeignClient; +import com.njcn.user.pojo.vo.PvTerminalTreeVO; +import com.njcn.web.controller.BaseController; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiImplicitParam; +import io.swagger.annotations.ApiOperation; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.util.CollectionUtils; +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.time.LocalDateTime; +import java.util.ArrayList; +import java.util.List; +import java.util.stream.Collectors; + +/** + * Description: + * 接口文档访问地址:http://serverIP:port/swagger-ui.html + * Date: 2023/2/23 14:18【需求编号】 + * + * @author clam + * @version V1.0.0 + */ +@Slf4j +@Api(tags = "主网有效监测时长)") +@RestController +@RequestMapping("EffectiveCount") +@RequiredArgsConstructor +public class EffectiveMinuteCountController extends BaseController { + + private final + DeptFeignClient deptFeignClient; + + private final + EffectiveMinuteCountService effectiveMinuteCount; + + + @ApiOperation("主网有效监测时长") + @ApiImplicitParam(value = "primaryGridParam",name = "primaryGridParam",required = true) + @PostMapping("effectiveMinuteCount") + @OperateInfo(info = LogEnum.BUSINESS_MEDIUM) + public HttpResult effectiveMinuteCount(@RequestBody PrimaryGridParam primaryGridParam ){ + log.info(LocalDateTime.now()+"effectiveMinuteCount开始执行"); + String methodDescribe = getMethodDescribe("effectiveMinuteCount"); + Boolean result = true; + List orgIdList = new ArrayList<> (); + if(CollectionUtils.isEmpty (primaryGridParam.getOrgIdList ())){ + List dept = deptFeignClient.allDeptList().getData(); + orgIdList = dept.stream ( ).map (PvTerminalTreeVO::getId).collect (Collectors.toList ( )); + }else{ + orgIdList = primaryGridParam.getOrgIdList (); + } + primaryGridParam.setOrgIdList (orgIdList); + + effectiveMinuteCount.effectiveMinuteCount (primaryGridParam); + if (result){ + return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, true, methodDescribe); + } else { + return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.FAIL, false, methodDescribe); + } + } +} diff --git a/pqs-prepare/harmonic-prepare/src/main/java/com/njcn/prepare/harmonic/controller/area/RStatWorkOrderCreateController.java b/pqs-prepare/harmonic-prepare/src/main/java/com/njcn/prepare/harmonic/controller/area/RStatWorkOrderCreateController.java new file mode 100644 index 000000000..6ebbc99cd --- /dev/null +++ b/pqs-prepare/harmonic-prepare/src/main/java/com/njcn/prepare/harmonic/controller/area/RStatWorkOrderCreateController.java @@ -0,0 +1,79 @@ +package com.njcn.prepare.harmonic.controller.area; + +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.device.pms.api.PmsPowerDistributionareaClient; +import com.njcn.device.pms.pojo.param.PowerDistributionareaParam; +import com.njcn.device.pms.pojo.po.PowerDistributionarea; +import com.njcn.prepare.harmonic.pojo.param.LineParam; +import com.njcn.prepare.harmonic.service.influxdb.RStatWorkOrderCreateService; +import com.njcn.redis.utils.RedisUtil; +import com.njcn.user.api.DeptFeignClient; +import com.njcn.web.controller.BaseController; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiImplicitParam; +import io.swagger.annotations.ApiOperation; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.util.CollectionUtils; +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.time.LocalDateTime; +import java.util.ArrayList; +import java.util.List; +import java.util.stream.Collectors; + +/** + * Description: + * 接口文档访问地址:http://serverIP:port/swagger-ui.html + * Date: 2023/2/9 9:16【需求编号】 + * + * @author clam + * @version V1.0.0 + */ +@Slf4j +@Api(tags = "工单生成批处理逻辑") +@RestController +@RequestMapping("RStatWorkOrderCreate") +@RequiredArgsConstructor +public class RStatWorkOrderCreateController extends BaseController { + + + private final PmsPowerDistributionareaClient pmsPowerDistributionareaClient; + + private final RStatWorkOrderCreateService rStatWorkOrderCreateService; + private final DeptFeignClient deptFeignClient; + private final RedisUtil redisUtil; + + + @ApiOperation("工单生成批处理逻辑(台区测点)") + @ApiImplicitParam(value = "lineParam",name = "lineParam",required = true) + @PostMapping("workOrderCreate") + @OperateInfo(info = LogEnum.BUSINESS_MEDIUM) + public HttpResult workOrderCreate(@RequestBody LineParam lineParam ){ + log.info(LocalDateTime.now()+"workOrderCreate开始执行"); + String methodDescribe = getMethodDescribe("workOrderCreate"); + Boolean result = true; + List lineIds= new ArrayList<> (); + if(CollectionUtils.isEmpty (lineParam.getLineIds ())){ + PowerDistributionareaParam powerDistributionareaParam = new PowerDistributionareaParam(); + List data = pmsPowerDistributionareaClient.getPowerDistributionList (powerDistributionareaParam).getData ( ); + lineIds = data.stream ().map (PowerDistributionarea::getId).collect(Collectors.toList()); + }else{ + lineIds = lineParam.getLineIds ( ); + } + lineParam.setLineIds (lineIds); + rStatWorkOrderCreateService.workOrderCreate(lineParam); + if (result){ + return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, true, methodDescribe); + } else { + return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.FAIL, false, methodDescribe); + } + } +} diff --git a/pqs-prepare/harmonic-prepare/src/main/java/com/njcn/prepare/harmonic/mapper/oracle/DataVOraclePOMapper.java b/pqs-prepare/harmonic-prepare/src/main/java/com/njcn/prepare/harmonic/mapper/oracle/DataVOraclePOMapper.java index 00664b531..76c45e6ac 100644 --- a/pqs-prepare/harmonic-prepare/src/main/java/com/njcn/prepare/harmonic/mapper/oracle/DataVOraclePOMapper.java +++ b/pqs-prepare/harmonic-prepare/src/main/java/com/njcn/prepare/harmonic/mapper/oracle/DataVOraclePOMapper.java @@ -2,11 +2,14 @@ package com.njcn.prepare.harmonic.mapper.oracle; import cn.hutool.core.date.DateTime; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.njcn.prepare.harmonic.pojo.dto.DataVFiveItemDTO; import com.njcn.prepare.harmonic.pojo.oracle.DataVOraclePO; import com.njcn.prepare.harmonic.pojo.vo.DataVOracleVO; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; +import java.util.List; + /** * Description: * 接口文档访问地址:http://serverIP:port/swagger-ui.html @@ -21,4 +24,6 @@ public interface DataVOraclePOMapper extends BaseMapper { DataVOracleVO getFiveItemsForDataException(@Param("lineId") Integer lineId, @Param("startTime") DateTime startTime, @Param("endTime") DateTime endTime); DataVOracleVO getFiveCountForDataIntegrityRate(@Param("lineId") Integer lineId, @Param("startTime") DateTime startTime, @Param("endTime") DateTime endTime); + + List getFiveItems(@Param("lineId") Integer lineId, @Param("date") String date); } \ No newline at end of file diff --git a/pqs-prepare/harmonic-prepare/src/main/java/com/njcn/prepare/harmonic/mapper/oracle/mapping/DataVOraclePOMapper.xml b/pqs-prepare/harmonic-prepare/src/main/java/com/njcn/prepare/harmonic/mapper/oracle/mapping/DataVOraclePOMapper.xml index 6cd42b7a9..dc650965a 100644 --- a/pqs-prepare/harmonic-prepare/src/main/java/com/njcn/prepare/harmonic/mapper/oracle/mapping/DataVOraclePOMapper.xml +++ b/pqs-prepare/harmonic-prepare/src/main/java/com/njcn/prepare/harmonic/mapper/oracle/mapping/DataVOraclePOMapper.xml @@ -63,4 +63,33 @@ GROUP BY LINEID + \ No newline at end of file diff --git a/pqs-prepare/harmonic-prepare/src/main/java/com/njcn/prepare/harmonic/service/influxdb/DataVInfluxdbService.java b/pqs-prepare/harmonic-prepare/src/main/java/com/njcn/prepare/harmonic/service/influxdb/DataVInfluxdbService.java new file mode 100644 index 000000000..c7c82b79f --- /dev/null +++ b/pqs-prepare/harmonic-prepare/src/main/java/com/njcn/prepare/harmonic/service/influxdb/DataVInfluxdbService.java @@ -0,0 +1,35 @@ +package com.njcn.prepare.harmonic.service.influxdb; + +import com.njcn.prepare.harmonic.pojo.dto.DataVFiveItemDTO; + +import java.util.List; + +/** + * Description: + * 接口文档访问地址:http://serverIP:port/swagger-ui.html + * Date: 2023/2/23 10:31【需求编号】 + * + * @author clam + * @version V1.0.0 + */ +public interface DataVInfluxdbService +{ + /** + * @Description: 1.1.1.2.1. 主网单位在线监测点数日统计 :data_v表中查询phasic_type = A当天RMS数据数量,数量大于1则该监测点为在线监测点 + * @Param: + * @return: + * @Author: clam + * @Date: 2023/2/23 + */ + Integer queryTransitMeasurementPoints(List lineIds, String date, String type); + + /** + * @Description: 获取监测点当天数据 + * @Param: [lineId, date] + * @return: java.util.List + * @Author: clam + * @Date: 2023/2/23 + */ + List getFiveItems(String lineId, String date, Integer statisticalInterval); + +} diff --git a/pqs-prepare/harmonic-prepare/src/main/java/com/njcn/prepare/harmonic/service/influxdb/RStatWorkOrderCreateService.java b/pqs-prepare/harmonic-prepare/src/main/java/com/njcn/prepare/harmonic/service/influxdb/RStatWorkOrderCreateService.java new file mode 100644 index 000000000..de26810b3 --- /dev/null +++ b/pqs-prepare/harmonic-prepare/src/main/java/com/njcn/prepare/harmonic/service/influxdb/RStatWorkOrderCreateService.java @@ -0,0 +1,15 @@ +package com.njcn.prepare.harmonic.service.influxdb; + +import com.njcn.prepare.harmonic.pojo.param.LineParam; + +/** + * Description: + * 接口文档访问地址:http://serverIP:port/swagger-ui.html + * Date: 2023/2/10 15:42【需求编号】 + * + * @author clam + * @version V1.0.0 + */ +public interface RStatWorkOrderCreateService { + void workOrderCreate(LineParam lineParam); +} diff --git a/pqs-prepare/harmonic-prepare/src/main/java/com/njcn/prepare/harmonic/service/influxdb/impl/DataVInfluxdbServiceImpl.java b/pqs-prepare/harmonic-prepare/src/main/java/com/njcn/prepare/harmonic/service/influxdb/impl/DataVInfluxdbServiceImpl.java new file mode 100644 index 000000000..cea5a956c --- /dev/null +++ b/pqs-prepare/harmonic-prepare/src/main/java/com/njcn/prepare/harmonic/service/influxdb/impl/DataVInfluxdbServiceImpl.java @@ -0,0 +1,108 @@ +package com.njcn.prepare.harmonic.service.influxdb.impl; + +import cn.hutool.core.collection.CollUtil; +import com.google.common.base.Objects; +import com.njcn.device.pq.pojo.po.DataV; +import com.njcn.influxdb.param.InfluxDBPublicParam; +import com.njcn.influxdb.utils.InfluxDbUtils; +import com.njcn.prepare.harmonic.pojo.dto.DataVFiveItemDTO; +import com.njcn.prepare.harmonic.service.influxdb.DataVInfluxdbService; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.influxdb.dto.QueryResult; +import org.influxdb.impl.InfluxDBResultMapper; +import org.springframework.beans.BeanUtils; +import org.springframework.stereotype.Service; + +import java.util.List; +import java.util.stream.Collectors; + +/** + * Description: + * 接口文档访问地址:http://serverIP:port/swagger-ui.html + * Date: 2023/2/23 10:32【需求编号】 + * + * @author clam + * @version V1.0.0 + */ +@Service +@RequiredArgsConstructor +@Slf4j +public class DataVInfluxdbServiceImpl implements DataVInfluxdbService { + private final InfluxDbUtils influxDbUtils; + /** + * @param lineIds + * @param date + * @param type + * @Description: 1.1.1.2.1. 主网单位在线监测点数日统计 :data_v表中查询phasic_type = A当天RMS数据数量,数量大于1则该监测点为在线监测点 + * @Param: + * @return: + * @Author: clam + * @Date: 2023/2/23 + */ + @Override + public Integer queryTransitMeasurementPoints(List lineIds, String date, String type) { + String startTime = date+" "+"00:00:00"; + String endTime = date+" "+"23:59:59"; + Integer i =0; + for (String temp:lineIds){ + String Sql = "SELECT count(rms) FROM \"data_v\" where line_id='"+temp+ + "'and "+ InfluxDBPublicParam.TIME+">='"+startTime+"'and "+ InfluxDBPublicParam.TIME+"<='"+endTime+"' and phasic_type ='A' and rms>1 "+ InfluxDBPublicParam.TIME_ZONE; + QueryResult sqlResult4 = influxDbUtils.query(Sql); + + List series = sqlResult4.getResults().get(0).getSeries(); + Double tem =0.0; + if(CollUtil.isNotEmpty(series)){ + tem =(Double)series.get(0).getValues().get(0).get(1); + } + if(tem>0){ + i++; + } + } + return i; + } + + /** + * @param lineId + * @param date + * @Description: 获取监测点当天数据 + * @Param: [lineId, date] + * @return: java.util.List + * @Author: clam + * @Date: 2023/2/23 + */ + @Override + public List getFiveItems(String lineId, String date, Integer statisticalInterval) { + /*按时间分组每组16条,*/ + /*freq,v_thd,v_unbalance 取T项数据*/ + String startTime = date+" "+"00:00:00"; + String endTime = date+" "+"23:59:59"; + String Sql = "SELECT time, MAX(freq) as freq_max,MIN(freq) as freq_min,MAX(v_thd) as v_thd_max,MIN(v_thd) as v_thd_min,MAX(v_unbalance) as v_unbalance_max,MIN(v_unbalance) as v_unbalance_min from data_v where line_id='"+lineId+ + "'and "+ InfluxDBPublicParam.TIME+">='"+startTime+"'and "+ InfluxDBPublicParam.TIME+"<='"+endTime+"' and phasic_type ='T' group by time("+statisticalInterval+"m ) fill(none) "+InfluxDBPublicParam.TIME_ZONE; + QueryResult query = influxDbUtils.query(Sql); + InfluxDBResultMapper resultMapper = new InfluxDBResultMapper(); + List dataVS = resultMapper.toPOJO(query, DataV.class); + /*rms,rms_lvr 取ABC项数据任意一个数据*/ + + String Sql2 = "SELECT time, MAX(rms) as rms_max,MIN(rms) as rms_min,MAX(rms_lvr) as rms_lvr_max,MIN(rms_lvr) as rms_lvr_min from data_v where line_id='"+lineId+ + "'and "+ InfluxDBPublicParam.TIME+">='"+startTime+"'and "+ InfluxDBPublicParam.TIME+"<='"+endTime+"' and phasic_type ='A' group by time("+statisticalInterval+"m ) fill(none) "+InfluxDBPublicParam.TIME_ZONE; + QueryResult query2 = influxDbUtils.query(Sql2); + InfluxDBResultMapper resultMapper2 = new InfluxDBResultMapper(); + List dataVS2 = resultMapper2.toPOJO(query2, DataV.class); + + + List collect = dataVS.stream ( ).map (temp -> { + DataVFiveItemDTO dataVFiveItemDTO = new DataVFiveItemDTO ( ); + BeanUtils.copyProperties (temp, dataVFiveItemDTO); + DataV dataV = dataVS2.stream ( ).filter (temp2 -> Objects.equal (temp.getTime ( ), temp2.getTime ( ))). + collect (Collectors.toList ( )).get (0); + dataVFiveItemDTO.setRmsMax (dataV.getRmsMAX ()); + dataVFiveItemDTO.setRmsMin (dataV.getRmsMIN ( )); + dataVFiveItemDTO.setRmsLvrMax (dataV.getRmsLvrMAX ()); + dataVFiveItemDTO.setRmsLvrMin (dataV.getRmsLvrMIN ()); + + return dataVFiveItemDTO; + }).collect (Collectors.toList ( )); + return collect; + } +} diff --git a/pqs-prepare/harmonic-prepare/src/main/java/com/njcn/prepare/harmonic/service/influxdb/impl/RStatWorkOrderCreateServiceImpl.java b/pqs-prepare/harmonic-prepare/src/main/java/com/njcn/prepare/harmonic/service/influxdb/impl/RStatWorkOrderCreateServiceImpl.java new file mode 100644 index 000000000..68d027578 --- /dev/null +++ b/pqs-prepare/harmonic-prepare/src/main/java/com/njcn/prepare/harmonic/service/influxdb/impl/RStatWorkOrderCreateServiceImpl.java @@ -0,0 +1,265 @@ +package com.njcn.prepare.harmonic.service.influxdb.impl; + +import com.njcn.device.pms.api.MonitorClient; +import com.njcn.device.pq.pojo.po.Overlimit; +import com.njcn.influxdb.param.InfluxDBPublicParam; +import com.njcn.influxdb.utils.InfluxDbUtils; +import com.njcn.prepare.harmonic.pojo.dto.OverLimitFlagDTO; +import com.njcn.prepare.harmonic.pojo.influxdb.po.DataIPO; +import com.njcn.prepare.harmonic.pojo.influxdb.po.DataVPO; +import com.njcn.prepare.harmonic.pojo.param.LineParam; +import com.njcn.prepare.harmonic.service.influxdb.RStatWorkOrderCreateService; +import com.njcn.process.api.RStatWorkOrderFeignClient; +import com.njcn.system.enums.DicDataEnum; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.influxdb.dto.QueryResult; +import org.influxdb.impl.InfluxDBResultMapper; +import org.springframework.beans.BeanUtils; +import org.springframework.stereotype.Service; + +import java.lang.reflect.Field; +import java.time.LocalDateTime; +import java.time.ZoneId; +import java.util.ArrayList; +import java.util.List; +import java.util.stream.Collectors; + +/** + * Description: + * 接口文档访问地址:http://serverIP:port/swagger-ui.html + * Date: 2023/2/10 15:43【需求编号】 + * + * @author clam + * @version V1.0.0 + */ +@Service +@RequiredArgsConstructor +@Slf4j +public class RStatWorkOrderCreateServiceImpl implements RStatWorkOrderCreateService { + + private final InfluxDbUtils influxDbUtils; + private final MonitorClient monitorClient; + private final RStatWorkOrderFeignClient rStatWorkOrderFeignClient; + @Override + public void workOrderCreate(LineParam lineParam) { + List lineIds = lineParam.getLineIds ( ); + List overLimitFlagDTOList = new ArrayList(); + String startTime = lineParam.getDataDate ()+" "+"00:00:00"; + String endTime = lineParam.getDataDate ()+" "+"23:59:59"; + lineIds.stream ().forEach (lineId->{ + + Overlimit overlimit = monitorClient.getOverLimitData(lineId).getData (); + List dataV = getDataV(lineId,startTime,endTime); + List checkResultV = checkOverLimitV(dataV,overlimit); + /*Datav3分钟一条数据连续4个小时越限说明OverLimitFlagDTO.overLimtFlag要连续80个是1才生成工单*/ + List workOrderV = checkOverLimitFlag (checkResultV); + for (OverLimitFlagDTO overLimitFlagDTO : workOrderV) { + OverLimitFlagDTO result = new OverLimitFlagDTO (); + BeanUtils.copyProperties (overLimitFlagDTO, result); + result.setLineId (lineId); + result.setOverLimtType (DicDataEnum.VOLTAGE_LIMIT.getCode ()); + overLimitFlagDTOList.add (result); + } + List dataI = getDataI(lineId,startTime,endTime); + List checkResultI = checkOverLimitI(dataI,overlimit); + List workOrderI= checkOverLimitFlag (checkResultI); + for (OverLimitFlagDTO overLimitFlagDTO : workOrderI) { + OverLimitFlagDTO result = new OverLimitFlagDTO (); + BeanUtils.copyProperties (overLimitFlagDTO, result); + result.setLineId (lineId); + result.setOverLimtType (DicDataEnum.CURRENT_LIMIT.getCode ()); + overLimitFlagDTOList.add (result); + } + + }); + rStatWorkOrderFeignClient.createProblem (overLimitFlagDTOList); + } + /** + * @Description: 对比监测一天的电流是否越限,越限返回1,未越限返回0 + * @Param: [dataI, overlimit] + * @return: java.util.List + * @Author: clam + * @Date: 2023/2/13 + */ + private List checkOverLimitI(List dataI, Overlimit overlimit) { + List result = new ArrayList<> (); + dataI.stream ().forEach (datai ->{ + Integer temp = 0; + + for(int i=2 ;i<26;i++){ + + String vi = getFieldValueByFieldName("v"+i,datai); + String overLimiti= getFieldValueByFieldName("uharm"+i,overlimit); + if(Double.valueOf (vi)>Double.valueOf (overLimiti)){ + temp = 1; + break; + } + + } + OverLimitFlagDTO overLimitFlagDTO = new OverLimitFlagDTO(); + overLimitFlagDTO.setOverLimtFlag (temp); + overLimitFlagDTO.setStartTime (LocalDateTime.ofInstant(datai.getTime (), ZoneId.systemDefault())); + result.add (overLimitFlagDTO); + }); + return result; + } + + /** Datav3分钟一条数据,每天480条数据连续4个小时越限说明OverLimitFlagDTO.overLimtFlag要连续80个是1才生成工单 + * @Description: checkOverLimitFlag + * @Param: [checkResult] + * @return: java.util.List + * @Author: clam + * @Date: 2023/2/13 + */ + private List checkOverLimitFlag(List checkResult) { + List result = new ArrayList<> (); + int temp = checkResult.size ()-40; + for (int i=0;i collect = checkResult.stream ( ).skip (i).limit (80).collect (Collectors.toList ( )); + int sum = collect.stream ( ).mapToInt (OverLimitFlagDTO::getOverLimtFlag).sum ( ); + if(sum==80){ + /*sum==80连续4个小时越限生成工单,统计越限时间*/ + OverLimitFlagDTO overLimitFlagDTO = new OverLimitFlagDTO(); + overLimitFlagDTO.setStartTime (checkResult.get (i).getStartTime ()); + Integer temp2 =i+80; + while(checkResult.get (temp2).getOverLimtFlag ()==1){ + temp2++ ; + if(temp2==checkResult.size ()-1){ + break; + } + } + overLimitFlagDTO.setEndTime (checkResult.get (temp2-1).getStartTime ()); + i=temp2; + result.add (overLimitFlagDTO); + } + } + + return result; + } + + /** + * @Description: 对比监测一天的电压是否越限,越限返回1,未越限返回0 + * @Param: [dataV, overlimit] + * @return: java.lang.String[] + * @Author: clam + * @Date: 2023/2/13 + */ + private List checkOverLimitV(List dataV, Overlimit overlimit) { + List result = new ArrayList<> (); + dataV.stream ().forEach (datav ->{ + Integer temp = 0; + + for(int i=1 ;i<26;i++){ + if(i==1){ + if(datav.getVThd ()>overlimit.getUaberrance ()){ + temp = 1; + break; + } + }else { + String vi = getFieldValueByFieldName("v"+i,datav); + String overLimiti= getFieldValueByFieldName("uharm"+i,overlimit); + if(Double.valueOf (vi)>Double.valueOf (overLimiti)){ + temp = 1; + break; + } + } + } + OverLimitFlagDTO overLimitFlagDTO = new OverLimitFlagDTO(); + overLimitFlagDTO.setOverLimtFlag (temp); + overLimitFlagDTO.setStartTime (LocalDateTime.ofInstant(datav.getTime (), ZoneId.systemDefault())); + result.add (overLimitFlagDTO); + }); + return result; + } + + /** + * 功能描述:获取dataVCP95值数据 + * @author xy + * @param lineIndex 监测点集ID + * @param startTime 起始时间 + * @param endTime 结束时间 + * @date 2022/5/10 14:56 + * @return List + */ + public List getDataV(String lineIndex, String startTime, String endTime){ + List result = new ArrayList<> (); + + //CP95值 + StringBuilder stringBuilder7 = new StringBuilder(); + StringBuilder stringBuilder8 = new StringBuilder(); + stringBuilder7.append("MAX(v_thd) AS v_thd,"); + for (int i = 2; i <=25 ; i++) { + if (i==25){ + stringBuilder7.append("MAX(v_").append(i).append(") AS v_").append(i); + } else { + stringBuilder7.append("MAX(v_").append(i).append(") AS v_").append(i).append(","); + } + } + stringBuilder8.append ("line_id='").append (lineIndex).append ("' and ").append(InfluxDBPublicParam.TIME + " >= '").append(startTime).append("' and ").append(InfluxDBPublicParam.TIME).append(" <= '").append(endTime).append("' and value_type = 'CP95' group by time(3m) fill(0)").append(InfluxDBPublicParam.TIME_ZONE); + String sql4 = "select "+stringBuilder7+" from "+ InfluxDBPublicParam.DATA_V+" where "+stringBuilder8; + QueryResult sqlResult4 = influxDbUtils.query(sql4); + InfluxDBResultMapper resultMapper4 = new InfluxDBResultMapper(); + List list4 = resultMapper4.toPOJO(sqlResult4, DataVPO.class); + list4.forEach(item->{ + item.setValueType("CP95"); + }); + result.addAll(list4); + return result; + } + + /** + * 功能描述:获取dataI CP95数据 + * @author xy + * @param lineIndex 监测点ID + * @param startTime 起始时间 + * @param endTime 结束时间 + * @date 2022/5/10 14:56 + * @return List + */ + public List getDataI(String lineIndex, String startTime, String endTime){ + List result = new ArrayList<>(); + + //CP95值 + StringBuilder stringBuilder7 = new StringBuilder(); + StringBuilder stringBuilder8 = new StringBuilder(); + for (int i = 2; i <=25 ; i++) { + if (i==25){ + stringBuilder7.append("MAX(i_").append(i).append(") AS i_").append(i); + } else { + stringBuilder7.append("MAX(i_").append(i).append(") AS i_").append(i).append(","); + } + } + stringBuilder8.append ("line_id='").append (lineIndex).append ("' and ").append(InfluxDBPublicParam.TIME + " >= '").append(startTime).append("' and ").append(InfluxDBPublicParam.TIME).append(" <= '").append(endTime).append("' and value_type = 'CP95' group by time(3m) fill(0)").append(InfluxDBPublicParam.TIME_ZONE); + String sql4 = "select "+stringBuilder7+" from "+ InfluxDBPublicParam.DATA_I+" where "+stringBuilder8; + QueryResult sqlResult4 = influxDbUtils.query(sql4); + InfluxDBResultMapper resultMapper4 = new InfluxDBResultMapper(); + List list4 = resultMapper4.toPOJO(sqlResult4, DataIPO.class); + list4.forEach(item->{ + item.setValueType("CP95"); + }); + result.addAll(list4); + return result; + } + + /** + * 根据属性名获取属性值 + * + * @param fieldName + * @param object + * @return + */ + private String getFieldValueByFieldName(String fieldName, Object object) { + try { + Field field = object.getClass().getDeclaredField(fieldName); + //设置对象的访问权限,保证对private的属性的访问 + field.setAccessible(true); + return field.get(object)+""; + } catch (Exception e) { + + return null; + } + } + + +} diff --git a/pqs-prepare/harmonic-prepare/src/main/java/com/njcn/prepare/harmonic/service/mysql/Impl/area/EffectiveMinuteCountServiceImpl.java b/pqs-prepare/harmonic-prepare/src/main/java/com/njcn/prepare/harmonic/service/mysql/Impl/area/EffectiveMinuteCountServiceImpl.java new file mode 100644 index 000000000..b6f80f83a --- /dev/null +++ b/pqs-prepare/harmonic-prepare/src/main/java/com/njcn/prepare/harmonic/service/mysql/Impl/area/EffectiveMinuteCountServiceImpl.java @@ -0,0 +1,327 @@ +package com.njcn.prepare.harmonic.service.mysql.Impl.area; + +import cn.hutool.core.collection.CollectionUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.njcn.device.pq.constant.Param; +import com.njcn.device.pq.pojo.po.PmsAbnormalRules; +import com.njcn.harmonic.pojo.po.PmsMonitorPO; +import com.njcn.harmonic.pojo.po.RMpIntegrityDPO; +import com.njcn.harmonic.pojo.po.RStatAbnormalDPO; +import com.njcn.prepare.harmonic.constant.AlgorithmParam; +import com.njcn.prepare.harmonic.mapper.mysql.area.RStatAbnormalDPOMapper; +import com.njcn.prepare.harmonic.mapper.mysql.line.PmsAbnormalRulesMapper; +import com.njcn.prepare.harmonic.pojo.dto.DataVFiveItemDTO; +import com.njcn.prepare.harmonic.pojo.oracle.PqLinedetailPO; +import com.njcn.prepare.harmonic.pojo.param.PrimaryGridParam; +import com.njcn.prepare.harmonic.service.influxdb.DataVInfluxdbService; +import com.njcn.prepare.harmonic.service.mysql.area.EffectiveMinuteCountService; +import com.njcn.prepare.harmonic.service.mysql.area.PmsMonitorPOService; +import com.njcn.prepare.harmonic.service.mysql.area.RMpIntegrityDPOService; +import com.njcn.prepare.harmonic.service.oracle.DataVOraclePOService; +import com.njcn.prepare.harmonic.service.oracle.PqLinedetailPOService; +import com.njcn.system.api.DicDataFeignClient; +import com.njcn.system.enums.DicDataTypeEnum; +import com.njcn.system.pojo.po.DictData; +import lombok.RequiredArgsConstructor; +import lombok.SneakyThrows; +import org.springframework.scheduling.annotation.Async; +import org.springframework.stereotype.Service; + +import java.text.SimpleDateFormat; +import java.util.ArrayList; +import java.util.Date; +import java.util.List; +import java.util.Objects; +import java.util.stream.Collectors; + +/** + * Description: + * 接口文档访问地址:http://serverIP:port/swagger-ui.html + * Date: 2023/2/23 16:04【需求编号】 + * + * @author clam + * @version V1.0.0 + */ +@Service +@RequiredArgsConstructor +public class EffectiveMinuteCountServiceImpl implements EffectiveMinuteCountService { + + private final + PmsMonitorPOService pmsMonitorPOService; + private final + RStatAbnormalDPOMapper rStatAbnormalDPOMapper; + private final + PmsAbnormalRulesMapper pmsAbnormalRulesMapper; + private final + PqLinedetailPOService pqLinedetailPOService; + private final + DataVOraclePOService dataVOraclePOService; + private final + RMpIntegrityDPOService rMpIntegrityDPOService; + private final + DicDataFeignClient dicDataFeignClient; + private final + DataVInfluxdbService dataVInfluxdbService; + + + /** + * @param primaryGridParam + * @Description: 主网有效监测时长计算 + * @Param: [primaryGridParam] + * @return: void + * @Author: clam + * @Date: 2023/2/23 + */ + @Override + @Async("asyncExecutor") + public void effectiveMinuteCount(PrimaryGridParam primaryGridParam) { + if (Objects.equals (primaryGridParam.getDataSource ( ), AlgorithmParam.ORACLE_DATA)) { + this.hanlderOracleData (primaryGridParam); + } else if (Objects.equals (primaryGridParam.getDataSource ( ), AlgorithmParam.INFLUX_DATA)) { + this.hanlderInfludxbData (primaryGridParam); + } + } + + private void hanlderInfludxbData(PrimaryGridParam primaryGridParam) { + Integer type = primaryGridParam.getType ( ); + switch (type) { +// case 1: +// this.hanlderInfludxdbYear (primaryGridParam); +// break; +// case 2: +// this.hanlderInfludxdbQtr (primaryGridParam); +// break; +// case 3: +// this.hanlderInfludxdbMonth (primaryGridParam); +// break; + case 5: + this.hanlderInfludxdbDay (primaryGridParam); + break; + default: + break; + } + } + @SneakyThrows + private void hanlderInfludxdbDay(PrimaryGridParam primaryGridParam) { + List orgIdList = primaryGridParam.getOrgIdList ( ); + String dataDate = primaryGridParam.getDataDate ( ); + List rMpIntegrityDPOS = new ArrayList<> ( ); + + //1、取出规则 + List pmsAbnormalRules = pmsAbnormalRulesMapper.selectList (null); + //2、取出电压字典 + List dictDataList = dicDataFeignClient.getDicDataByTypeName (DicDataTypeEnum.DEV_VOLTAGE.getName ( )).getData ( ); + + + final Date tempDate = new SimpleDateFormat ("yyyy-MM-dd").parse (dataDate); + orgIdList.forEach (orgid -> { + /*主网在运监测点*/ + List pmsMonitorPOS = pmsMonitorPOService.qurymeasurementRunPoints (orgid); + List mysqlIndexList = pmsMonitorPOS.stream ( ).map (PmsMonitorPO::getId).collect (Collectors.toList ( )); + if (CollectionUtil.isEmpty (mysqlIndexList)) { + return; + } + /*过滤掉异常监测点*/ + QueryWrapper rStatAbnormalDPOLambdaQueryWrapper = new QueryWrapper ( ); + rStatAbnormalDPOLambdaQueryWrapper.select ("measurementPointId"). + in ("measurement_point_id", mysqlIndexList). + eq ("value_alarm", 1). + eq ("DATE_FORMAT( data_date ,'%Y-%m-%d')", dataDate); + List rStatAbnormalDPOS = rStatAbnormalDPOMapper.selectList (rStatAbnormalDPOLambdaQueryWrapper); + List collect = rStatAbnormalDPOS.stream ( ).map (RStatAbnormalDPO::getMeasurementPointId).collect (Collectors.toList ( )); + List collect1 = pmsMonitorPOS.stream ( ).filter (temp -> collect.contains (temp.getId ( ))).collect (Collectors.toList ( )); +// /*测试造的数据*/ +// List collect1 = new ArrayList<> (); +// PmsMonitorPO pmsMonitorPO = new PmsMonitorPO(); +// pmsMonitorPO.setVoltageLevel ("e3da890104e3c4ae1f005021411a1fd7"); +// pmsMonitorPO.setStatisticalInterval (3); +// pmsMonitorPO.setId ("8696be1d170e05b7d848accc059f4558"); +// collect1.add (pmsMonitorPO); + + collect1.forEach (temp -> { + + Double voltage = getVoltage (temp.getVoltageLevel ( ), dictDataList); + + /*2.查询DataV + measurement_point_id 监测点编号 + data_date 时间 + phasic_type = A 相别 + value_type = AVG 数据类型 + */ + /*统计间隔*/ + Integer statisticalInterval = temp.getStatisticalInterval ( ); + /*获取监测点当天的所有数据*/ + List fiveItems = dataVInfluxdbService.getFiveItems (temp.getId (), dataDate,statisticalInterval); + + /*过滤出有效接入分钟数量*/ + Integer count = calculateEffectiveMinute (fiveItems, pmsAbnormalRules, voltage); + + RMpIntegrityDPO rMpIntegrityDPO = new RMpIntegrityDPO ( ); + rMpIntegrityDPO.setEffectiveMinuteCount (count * statisticalInterval); + rMpIntegrityDPO.setDataDate (tempDate); + rMpIntegrityDPOS.add (rMpIntegrityDPO); + }); + }); + rMpIntegrityDPOService.saveOrUpdateBatch (rMpIntegrityDPOS, 500); + } + + /** + * @Description: 目前只计算日表 + * @Param: [primaryGridParam] + * @return: void + * @Author: clam + * @Date: 2023/2/23 + */ + private void hanlderOracleData(PrimaryGridParam primaryGridParam) { + Integer type = primaryGridParam.getType ( ); + switch (type) { +// case 1: +// this.hanlderOracleYear (primaryGridParam); +// break; +// case 2: +// this.hanlderOracleQtr (primaryGridParam); +// break; +// case 3: +// this.hanlderOracleMonth (primaryGridParam); +// break; + case 5: + this.hanlderOracleDay (primaryGridParam); + break; + default: + break; + } + } + + @SneakyThrows + private void hanlderOracleDay(PrimaryGridParam primaryGridParam) { + + List orgIdList = primaryGridParam.getOrgIdList ( ); + String dataDate = primaryGridParam.getDataDate ( ); + List rMpIntegrityDPOS = new ArrayList<> ( ); + + //1、取出规则 + List pmsAbnormalRules = pmsAbnormalRulesMapper.selectList (null); + //2、取出电压字典 + List dictDataList = dicDataFeignClient.getDicDataByTypeName (DicDataTypeEnum.DEV_VOLTAGE.getName ( )).getData ( ); + + + final Date tempDate = new SimpleDateFormat ("yyyy-MM-dd").parse (dataDate); + orgIdList.forEach (orgid -> { + /*主网在运监测点*/ + List pmsMonitorPOS = pmsMonitorPOService.qurymeasurementRunPoints (orgid); + List mysqlIndexList = pmsMonitorPOS.stream ( ).map (PmsMonitorPO::getId).collect (Collectors.toList ( )); + if (CollectionUtil.isEmpty (mysqlIndexList)) { + return; + } + /*过滤掉异常监测点*/ + QueryWrapper rStatAbnormalDPOLambdaQueryWrapper = new QueryWrapper ( ); + rStatAbnormalDPOLambdaQueryWrapper.select ("measurementPointId"). + in ("measurement_point_id", mysqlIndexList). + eq ("value_alarm", 1). + eq ("DATE_FORMAT( data_date ,'%Y-%m-%d')", dataDate); + List rStatAbnormalDPOS = rStatAbnormalDPOMapper.selectList (rStatAbnormalDPOLambdaQueryWrapper); + List collect = rStatAbnormalDPOS.stream ( ).map (RStatAbnormalDPO::getMeasurementPointId).collect (Collectors.toList ( )); + List collect1 = pmsMonitorPOS.stream ( ).filter (temp -> collect.contains (temp.getId ( ))).collect (Collectors.toList ( )); +/*测试造的数据*/ +// List collect1 = new ArrayList<> (); +// PmsMonitorPO pmsMonitorPO = new PmsMonitorPO(); +// pmsMonitorPO.setVoltageLevel ("e3da890104e3c4ae1f005021411a1fd7"); +// pmsMonitorPO.setId ("666f03ed54f2288090f06d957d2d7b07"); +// pmsMonitorPO.setStatisticalInterval (3); +// collect1.add (pmsMonitorPO); + collect1.forEach (temp -> { + + Double voltage = getVoltage (temp.getVoltageLevel ( ), dictDataList); + + /*2.查询DataV + measurement_point_id 监测点编号 + data_date 时间 + phasic_type = A 相别 + value_type = AVG 数据类型 + */ + + /*获取mysql与Oracle监测点id对应关系*/ + + PqLinedetailPO pqLinedetailPO = pqLinedetailPOService.getOracleIndexIdByMonitorId (temp.getId ( )); + + /*获取监测点当天的所有数据*/ + List fiveItems = dataVOraclePOService.getFiveItems (pqLinedetailPO.getLineIndex ( ), dataDate); + /*过滤出有效接入分钟数量*/ + Integer count = calculateEffectiveMinute (fiveItems, pmsAbnormalRules, voltage); + /*统计间隔*/ + Integer statisticalInterval = temp.getStatisticalInterval ( ); + RMpIntegrityDPO rMpIntegrityDPO = new RMpIntegrityDPO ( ); + rMpIntegrityDPO.setEffectiveMinuteCount (count * statisticalInterval); + rMpIntegrityDPO.setDataDate (tempDate); + rMpIntegrityDPOS.add (rMpIntegrityDPO); + }); + }); + rMpIntegrityDPOService.saveOrUpdateBatch (rMpIntegrityDPOS, 500); + + } + + /** + * @Description: 3、频率在【45,55】之间; + * 4、相电压有效值在【0.85p.u.,1.2p.u.】之间;p.u=电压等级/1.732 + * 5、线电压有效值在【0.85p.u.,1.2p.u.】之间;p.u=电压等级 + * 6、电压总谐波畸变率在【0.1%,20%】之间; + * 7、负序电压不平衡度在【0,20%】。满足以上条件则是一条有效数据 + * @Param: [fiveItems, pmsAbnormalRules, voltage] + * @return: java.lang.Integer + * @Author: clam + * @Date: 2023/2/23 + */ + private Integer calculateEffectiveMinute(List fiveItems, List pmsAbnormalRules, Double voltage) { + Integer result = 0; + + for (DataVFiveItemDTO fiveItem : fiveItems) { + Double freqMax = fiveItem.getFreqMax (); + Double freqMin = fiveItem.getFreqMin (); + + Double rmsMax = fiveItem.getRmsMax (); + Double rmsMin = fiveItem.getRmsMin (); + Double vThdMax = fiveItem.getVThdMax (); + Double vThdMin = fiveItem.getVThdMin (); + + Double vUnbalanceMax = fiveItem.getVUnbalanceMax (); + Double vUnbalanceMin = fiveItem.getVUnbalanceMin (); + Double rmsLvrMax = fiveItem.getRmsLvrMax (); + Double rmsLvrMin = fiveItem.getRmsLvrMin (); + + + PmsAbnormalRules freqLimit = pmsAbnormalRules.stream ( ).filter (temp -> Objects.equals (temp.getTarget ( ), Param.TARGET_FREQ)).collect (Collectors.toList ( )).get (0); + PmsAbnormalRules rmsLimit = pmsAbnormalRules.stream ( ).filter (temp -> Objects.equals (temp.getTarget ( ), Param.TARGET_RMS)).collect (Collectors.toList ( )).get (0); + PmsAbnormalRules rms_lvrLimit = pmsAbnormalRules.stream ( ).filter (temp -> Objects.equals (temp.getTarget ( ), Param.TARGET_RMS_LVR)).collect (Collectors.toList ( )).get (0); + PmsAbnormalRules v_thdLimit = pmsAbnormalRules.stream ( ).filter (temp -> Objects.equals (temp.getTarget ( ), Param.TARGET_V_THD)).collect (Collectors.toList ( )).get (0); + PmsAbnormalRules v_unbalanceLimit = pmsAbnormalRules.stream ( ).filter (temp -> Objects.equals (temp.getTarget ( ), Param.TARGET_V_UNBALANCE)).collect (Collectors.toList ( )).get (0); + + if (freqLimit.getLowerLimit ( ) <= freqMin&&freqMax <= freqLimit.getUpperLimit ( ) && + rmsLimit.getLowerLimit ( ) * (voltage / rmsMin) <= rmsMax&&rmsMax <= rmsLimit.getUpperLimit ( ) * (voltage / 1.732) && + rms_lvrLimit.getLowerLimit ( )*voltage <= rmsLvrMin&&rmsLvrMax <= rms_lvrLimit.getUpperLimit ( )*voltage && + v_thdLimit.getLowerLimit ( ) <= vThdMin&&vThdMax <= v_thdLimit.getUpperLimit ( ) && + v_unbalanceLimit.getLowerLimit ( ) <= vUnbalanceMin&&vUnbalanceMax <= v_unbalanceLimit.getUpperLimit ( ) + + ) { + result++; + } + } + return result; + } + + /** + * @Description: 根据电压字典获取电压等级 + * @Param: [id, dictDataList] + * @return: java.lang.Double + * @Author: clam + * @Date: 2023/2/23 + */ + private Double getVoltage(String id, List dictDataList) { + for (DictData dictData : dictDataList) { + if (dictData.getId ( ).equals (id)) { + Double result = Double.valueOf (dictData.getValue ( )); + return result; + } + } + return null; + } +} diff --git a/pqs-prepare/harmonic-prepare/src/main/java/com/njcn/prepare/harmonic/service/mysql/Impl/area/PrimaryGridDataServiceImpl.java b/pqs-prepare/harmonic-prepare/src/main/java/com/njcn/prepare/harmonic/service/mysql/Impl/area/PrimaryGridDataServiceImpl.java index 922fb84bc..c9ca122e2 100644 --- a/pqs-prepare/harmonic-prepare/src/main/java/com/njcn/prepare/harmonic/service/mysql/Impl/area/PrimaryGridDataServiceImpl.java +++ b/pqs-prepare/harmonic-prepare/src/main/java/com/njcn/prepare/harmonic/service/mysql/Impl/area/PrimaryGridDataServiceImpl.java @@ -10,6 +10,7 @@ import com.njcn.prepare.harmonic.pojo.dto.MonitorDataIntegrityDTO; import com.njcn.prepare.harmonic.pojo.oracle.PqLinedetailPO; import com.njcn.prepare.harmonic.pojo.param.PrimaryGridDataIntegrityParam; import com.njcn.prepare.harmonic.pojo.param.PrimaryGridParam; +import com.njcn.prepare.harmonic.service.influxdb.DataVInfluxdbService; import com.njcn.prepare.harmonic.service.mysql.area.*; import com.njcn.prepare.harmonic.service.oracle.DataVOraclePOService; import com.njcn.prepare.harmonic.service.oracle.PqLinedetailPOService; @@ -51,7 +52,8 @@ public class PrimaryGridDataServiceImpl implements PrimaryGridDataService { private @Autowired PmsTerminalPOService pmsTerminalPOService; - + private @Autowired + DataVInfluxdbService dataVInfluxdbService; private @Autowired PqLinedetailPOService pqLinedetailPOService; @@ -159,7 +161,88 @@ public class PrimaryGridDataServiceImpl implements PrimaryGridDataService { * @Date: 2022/11/25 */ private void hanlderInfludxbData(PrimaryGridParam primaryGridParam) { + Integer type = primaryGridParam.getType ( ); + /*月表,季表,年表都是重日表生成,不区分oralce,influxdb*/ + switch (type) { + case 1: + this.hanlderOracleYear (primaryGridParam); + break; + case 2: + this.hanlderOracleQtr (primaryGridParam); + break; + case 3: + this.hanlderOracleMonth (primaryGridParam); + break; + case 5: + this.hanlderInfluxdbDay (primaryGridParam); + break; + default: + break; + } } + @SneakyThrows + private void hanlderInfluxdbDay(PrimaryGridParam primaryGridParam) { + List orgIdList = primaryGridParam.getOrgIdList ( ); + String dataDate = primaryGridParam.getDataDate ( ); + List rOperatingIndexDPOList = new ArrayList<> ( ); + + final Date tempDate = new SimpleDateFormat ("yyyy-MM-dd").parse(dataDate); + + orgIdList.forEach (orgid -> { + + /*measurement_run_points:在运监测点个数*/ + List pmsMonitorPOS = pmsMonitorPOService.qurymeasurementRunPoints (orgid); + Integer measurement_run_points = pmsMonitorPOS.size ( ); + + List mysqlIndexList = pmsMonitorPOS.stream ( ).map (PmsMonitorPO::getId).collect (Collectors.toList ( )); + + /*主网单位在线监测点数 transit_measurement_points*/ + Integer transit_measurement_points = dataVInfluxdbService.queryTransitMeasurementPoints(mysqlIndexList,primaryGridParam.getDataDate (),"A"); + + /*主网单位有效接入监测点个数 effective_access_measurement_count*/ + Integer effective_access_measurement_count = this.queryEffectiveAccessMeasurementCount(mysqlIndexList,primaryGridParam.getDataDate ()); + + /*监测终端数量 online_measurement_points*/ + List pmsTerminalPOS = pmsTerminalPOService.queryOnlineMeasurementPoints(orgid); + Integer online_measurement_points = pmsTerminalPOS.size (); + + /*在运监测终端个数 online_measurement_count*/ + String state = redisUtil.getStringByKey (NAME_KEY+ + SPLIT_SIGN+ DicDataTypeEnum.DEV_STATUS.getCode ( )+ + SPLIT_SIGN+ DicDataEnum.RUNNING.getCode ( )); + Integer online_measurement_count = Integer.valueOf (pmsTerminalPOS.stream ( ).filter (temp -> Objects.equals (temp.getTerminalState ( ),state)).count ( )+""); + + /*主网单位数据完整率 data_integrity_rate*/ + double data_integrity_rate=0.00; + List monitorDataIntegrityDTOList = rMpIntegrityDPOService.calculateDataIntegrity (mysqlIndexList, dataDate); + /*求平均值*/ + if(!CollectionUtils.isEmpty (monitorDataIntegrityDTOList)){ + data_integrity_rate = monitorDataIntegrityDTOList.stream ( ).mapToDouble (temp -> { + return temp.getDataIntegrity ( ).doubleValue ( ); + }).average ( ).getAsDouble ( ); + } + + + /*主网单位数据异常监测点数日统计 is_unusual*/ + Integer is_unusual =this.queryIsUnusualCount(mysqlIndexList,primaryGridParam.getDataDate ()); + + ROperatingIndexDPO rOperatingIndexDPO = new ROperatingIndexDPO( ); + rOperatingIndexDPO.setOrgNo (orgid); + rOperatingIndexDPO.setDataDate (tempDate); + rOperatingIndexDPO.setMeasurementRunPoints (measurement_run_points); + rOperatingIndexDPO.setTransitMeasurementPoints (transit_measurement_points); + rOperatingIndexDPO.setEffectiveAccessMeasurementCount (effective_access_measurement_count); + rOperatingIndexDPO.setOnlineMeasurementPoints (online_measurement_points); + rOperatingIndexDPO.setOnlineMeasurementCount (online_measurement_count); + rOperatingIndexDPO.setDataIntegrityRate (data_integrity_rate); + rOperatingIndexDPO.setIsUnusual (is_unusual>0?1:0); + rOperatingIndexDPOList.add (rOperatingIndexDPO); + }); + if(!CollectionUtils.isEmpty (rOperatingIndexDPOList)){ + rOperatingIndexDPOService.saveOrUpdateBatchByMultiId (rOperatingIndexDPOList,30); + } + } + /** * @Description: 处理Oracle数据 diff --git a/pqs-prepare/harmonic-prepare/src/main/java/com/njcn/prepare/harmonic/service/mysql/area/EffectiveMinuteCountService.java b/pqs-prepare/harmonic-prepare/src/main/java/com/njcn/prepare/harmonic/service/mysql/area/EffectiveMinuteCountService.java new file mode 100644 index 000000000..04198329d --- /dev/null +++ b/pqs-prepare/harmonic-prepare/src/main/java/com/njcn/prepare/harmonic/service/mysql/area/EffectiveMinuteCountService.java @@ -0,0 +1,22 @@ +package com.njcn.prepare.harmonic.service.mysql.area; + +import com.njcn.prepare.harmonic.pojo.param.PrimaryGridParam; + +/** + * Description: + * 接口文档访问地址:http://serverIP:port/swagger-ui.html + * Date: 2023/2/23 16:04【需求编号】 + * + * @author clam + * @version V1.0.0 + */ +public interface EffectiveMinuteCountService { + /** + * @Description: 主网有效监测时长计算 + * @Param: [primaryGridParam] + * @return: void + * @Author: clam + * @Date: 2023/2/23 + */ + void effectiveMinuteCount(PrimaryGridParam primaryGridParam); +} diff --git a/pqs-prepare/harmonic-prepare/src/main/java/com/njcn/prepare/harmonic/service/oracle/DataVOraclePOService.java b/pqs-prepare/harmonic-prepare/src/main/java/com/njcn/prepare/harmonic/service/oracle/DataVOraclePOService.java index 2a7e487d6..0367bff3e 100644 --- a/pqs-prepare/harmonic-prepare/src/main/java/com/njcn/prepare/harmonic/service/oracle/DataVOraclePOService.java +++ b/pqs-prepare/harmonic-prepare/src/main/java/com/njcn/prepare/harmonic/service/oracle/DataVOraclePOService.java @@ -1,6 +1,7 @@ package com.njcn.prepare.harmonic.service.oracle; import com.baomidou.mybatisplus.extension.service.IService; +import com.njcn.prepare.harmonic.pojo.dto.DataVFiveItemDTO; import com.njcn.prepare.harmonic.pojo.oracle.DataVOraclePO; import com.njcn.prepare.harmonic.pojo.vo.DataVOracleVO; @@ -40,4 +41,13 @@ public interface DataVOraclePOService extends IService{ * @return */ Double queryVThdMax(Integer lineId,String datadate); + /** + * @Description: 获取监测点当天数据根据 + * @Param: [lineId, date] + * @return: java.util.List + * @Author: clam + * @Date: 2023/2/23 + */ + List getFiveItems(Integer lineId, String date); + } diff --git a/pqs-prepare/harmonic-prepare/src/main/java/com/njcn/prepare/harmonic/service/oracle/Impl/DataVOraclePOServiceImpl.java b/pqs-prepare/harmonic-prepare/src/main/java/com/njcn/prepare/harmonic/service/oracle/Impl/DataVOraclePOServiceImpl.java index ab0949e35..af8d11842 100644 --- a/pqs-prepare/harmonic-prepare/src/main/java/com/njcn/prepare/harmonic/service/oracle/Impl/DataVOraclePOServiceImpl.java +++ b/pqs-prepare/harmonic-prepare/src/main/java/com/njcn/prepare/harmonic/service/oracle/Impl/DataVOraclePOServiceImpl.java @@ -5,6 +5,7 @@ import com.baomidou.dynamic.datasource.annotation.DS; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.njcn.prepare.harmonic.mapper.oracle.DataVOraclePOMapper; +import com.njcn.prepare.harmonic.pojo.dto.DataVFiveItemDTO; import com.njcn.prepare.harmonic.pojo.oracle.DataVOraclePO; import com.njcn.prepare.harmonic.pojo.vo.DataVOracleVO; import com.njcn.prepare.harmonic.service.oracle.DataVOraclePOService; @@ -109,4 +110,21 @@ public class DataVOraclePOServiceImpl extends ServiceImpl + * @Author: clam + * @Date: 2023/2/23 + */ + @Override + public List getFiveItems(Integer lineId, String date) { + + List collect = dataVOraclePOMapper.getFiveItems(lineId,date); + + return collect; + } } diff --git a/pqs-prepare/harmonic-prepare/src/main/java/com/njcn/prepare/harmonic/service/oracle/Impl/PqsEventdetailServiceImpl.java b/pqs-prepare/harmonic-prepare/src/main/java/com/njcn/prepare/harmonic/service/oracle/Impl/PqsEventdetailServiceImpl.java index 2b7c71184..88d29b6f9 100644 --- a/pqs-prepare/harmonic-prepare/src/main/java/com/njcn/prepare/harmonic/service/oracle/Impl/PqsEventdetailServiceImpl.java +++ b/pqs-prepare/harmonic-prepare/src/main/java/com/njcn/prepare/harmonic/service/oracle/Impl/PqsEventdetailServiceImpl.java @@ -47,7 +47,6 @@ public class PqsEventdetailServiceImpl extends MppServiceImpl orgIdList; + + @ApiModelProperty(name = "type",value = "报表类型,1,年,2季,3月,4周,5日") + @NotNull(message = "报表类型不可为空") + private Integer type; + + @ApiModelProperty(name = "dataDate",value = "时间") + @NotBlank(message = "报表时间不可为空") + private String dataDate; + + @ApiModelProperty(name = "dataSource",value = "数据源 0:oracle;1:influxdb") + @NotBlank(message = "数据源") + private Integer dataSource; + +} diff --git a/pqs-process/process-api/pom.xml b/pqs-process/process-api/pom.xml index 51e40ab80..23cec6eb1 100644 --- a/pqs-process/process-api/pom.xml +++ b/pqs-process/process-api/pom.xml @@ -60,5 +60,11 @@ 1.5.1-RELEASE compile + + com.njcn + prepare-api + 1.0.0 + compile + diff --git a/pqs-process/process-api/src/main/java/com/njcn/process/api/RStatWorkOrderFeignClient.java b/pqs-process/process-api/src/main/java/com/njcn/process/api/RStatWorkOrderFeignClient.java new file mode 100644 index 000000000..28ddaca3d --- /dev/null +++ b/pqs-process/process-api/src/main/java/com/njcn/process/api/RStatWorkOrderFeignClient.java @@ -0,0 +1,25 @@ +package com.njcn.process.api; + +import com.njcn.common.pojo.constant.ServerInfo; +import com.njcn.common.pojo.response.HttpResult; +import com.njcn.prepare.harmonic.pojo.dto.OverLimitFlagDTO; +import com.njcn.process.api.fallback.RStatWorkOrderFallbackFactory; +import org.springframework.cloud.openfeign.FeignClient; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; + +import java.util.List; + +/** + * Description: + * 接口文档访问地址:http://serverIP:port/swagger-ui.html + * Date: 2023/2/15 14:13【需求编号】 + * + * @author clam + * @version V1.0.0 + */ +@FeignClient(value = ServerInfo.PROCESS,path = "/rStatWorkOrder",fallbackFactory = RStatWorkOrderFallbackFactory.class) +public interface RStatWorkOrderFeignClient { + @PostMapping("/createProblem") + HttpResult createProblem(@RequestBody List overLimitFlagDTOList); +} diff --git a/pqs-process/process-api/src/main/java/com/njcn/process/api/fallback/RStatWorkOrderFallbackFactory.java b/pqs-process/process-api/src/main/java/com/njcn/process/api/fallback/RStatWorkOrderFallbackFactory.java new file mode 100644 index 000000000..2fca26e61 --- /dev/null +++ b/pqs-process/process-api/src/main/java/com/njcn/process/api/fallback/RStatWorkOrderFallbackFactory.java @@ -0,0 +1,45 @@ +package com.njcn.process.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.prepare.harmonic.pojo.dto.OverLimitFlagDTO; +import com.njcn.process.api.RStatWorkOrderFeignClient; +import com.njcn.process.utils.ProcessEnumUtil; +import feign.hystrix.FallbackFactory; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Component; + +import java.util.List; + +/** + * Description: + * 接口文档访问地址:http://serverIP:port/swagger-ui.html + * Date: 2023/2/15 14:15【需求编号】 + * + * @author clam + * @version V1.0.0 + */ +@Slf4j +@Component +public class RStatWorkOrderFallbackFactory implements FallbackFactory { + + @Override + public RStatWorkOrderFeignClient create(Throwable throwable) { + //判断抛出异常是否为解码器抛出的业务异常 + Enum exceptionEnum = CommonResponseEnum.SERVICE_FALLBACK; + if (throwable.getCause() instanceof BusinessException) { + BusinessException businessException = (BusinessException) throwable.getCause(); + exceptionEnum = ProcessEnumUtil.getExceptionEnum(businessException.getResult()); + } + Enum finalExceptionEnum = exceptionEnum; + return new RStatWorkOrderFeignClient() { + + @Override + public HttpResult createProblem(List overLimitFlagDTOList) { + log.error("{}异常,降级处理,异常为:{}", "问题单插入异常", throwable.toString()); + throw new BusinessException(finalExceptionEnum); + } + }; + } +} diff --git a/pqs-process/process-api/src/main/java/com/njcn/process/pojo/param/ElectricityQualityCheckParam.java b/pqs-process/process-api/src/main/java/com/njcn/process/pojo/param/ElectricityQualityCheckParam.java new file mode 100644 index 000000000..3137ca67b --- /dev/null +++ b/pqs-process/process-api/src/main/java/com/njcn/process/pojo/param/ElectricityQualityCheckParam.java @@ -0,0 +1,35 @@ +package com.njcn.process.pojo.param; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotBlank; + + +@Data +@ApiModel +public class ElectricityQualityCheckParam { + + @ApiModelProperty(name = "id",value = "电能质量问题编号",required = true) + @NotBlank(message = "电能质量问题编号不能为空") + private String powerQualityProblemNo; + + @ApiModelProperty(value="审核是否通过(0:否 1:是)") + @NotBlank(message = "审核标志不能为空") + private String checkResult; + + @ApiModelProperty(value="审核人") + @NotBlank(message = "审核人不能为空") + private String checkPerson; + + @ApiModelProperty(value="填报进度") + @NotBlank(message = "填报进度不能为空") + private String reportProcess; + + @ApiModelProperty(value="审核意见") + @NotBlank(message = "审核意见不能为空") + private String checkComment; + + +} diff --git a/pqs-process/process-api/src/main/java/com/njcn/process/pojo/param/LoadTypeUserCheckParam.java b/pqs-process/process-api/src/main/java/com/njcn/process/pojo/param/LoadTypeUserCheckParam.java new file mode 100644 index 000000000..13cecf7f2 --- /dev/null +++ b/pqs-process/process-api/src/main/java/com/njcn/process/pojo/param/LoadTypeUserCheckParam.java @@ -0,0 +1,32 @@ +package com.njcn.process.pojo.param; + +import com.njcn.web.constant.ValidMessage; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotBlank; + + +@Data +@ApiModel +public class LoadTypeUserCheckParam { + + @ApiModelProperty(name = "id",required = true) + @NotBlank(message = ValidMessage.ID_NOT_BLANK) + private String id; + + @ApiModelProperty(value="审核是否通过(0:否 1:是)") + @NotBlank(message = "审核标志不能为空") + private String checkResult; + + @ApiModelProperty(value="审核人") + @NotBlank(message = "审核人不能为空") + private String checkPerson; + + @ApiModelProperty(value="审核意见") + @NotBlank(message = "审核意见不能为空") + private String checkComment; + + +} diff --git a/pqs-process/process-api/src/main/java/com/njcn/process/pojo/param/RGeneralSurveyPlanChcekParm.java b/pqs-process/process-api/src/main/java/com/njcn/process/pojo/param/RGeneralSurveyPlanChcekParm.java new file mode 100644 index 000000000..de6a1e672 --- /dev/null +++ b/pqs-process/process-api/src/main/java/com/njcn/process/pojo/param/RGeneralSurveyPlanChcekParm.java @@ -0,0 +1,39 @@ +package com.njcn.process.pojo.param; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotBlank; + +/** + * Description: + * 接口文档访问地址:http://serverIP:port/swagger-ui.html + * Date: 2022/11/11 15:20【需求编号】 + * + * @author clam + * @version V1.0.0 + */ +@Data +public class RGeneralSurveyPlanChcekParm { + + + @ApiModelProperty(value="普测计划编号") + @NotBlank(message = "普测计划编号不能为空") + private String planNo; + + @ApiModelProperty(value="审核是否通过(0:否 1:是)") + @NotBlank(message = "审核标志不能为空") + private String checkResult; + + @ApiModelProperty(value="审核人") + @NotBlank(message = "审核人不能为空") + private String checkPerson; + + @ApiModelProperty(value="审核意见") + @NotBlank(message = "审核意见不能为空") + private String checkComment; + + + + +} diff --git a/pqs-process/process-api/src/main/java/com/njcn/process/pojo/param/RStatProblemAndWorkOrderParam.java b/pqs-process/process-api/src/main/java/com/njcn/process/pojo/param/RStatProblemAndWorkOrderParam.java new file mode 100644 index 000000000..9616dd4c0 --- /dev/null +++ b/pqs-process/process-api/src/main/java/com/njcn/process/pojo/param/RStatProblemAndWorkOrderParam.java @@ -0,0 +1,51 @@ +package com.njcn.process.pojo.param; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.Min; +import javax.validation.constraints.NotNull; + +/** + * Description: + * 接口文档访问地址:http://serverIP:port/swagger-ui.html + * Date: 2022/11/11 15:20【需求编号】 + * + * @author clam + * @version V1.0.0 + */ +@Data +public class RStatProblemAndWorkOrderParam { + + @NotNull(message="当前页不能为空!") + @Min(value = 1, message = "当前页不能为0") + @ApiModelProperty(value = "当前页",name = "currentPage",dataType ="Integer",required = true) + private Integer currentPage; + /**显示条数*/ + @NotNull(message="显示条数不能为空!") + @ApiModelProperty(value = "显示条数",name = "pageSize",dataType ="Integer",required = true) + private Integer pageSize; + + @ApiModelProperty(value="问题类型") + private String problemType; + + @ApiModelProperty(value="审核状态") + private String checkStatus; + + @ApiModelProperty(value="台区名称") + private String distributionName; + + @ApiModelProperty(value="问题发生时间") + private String occurTime; + + @ApiModelProperty(value="工单状态") + private String workOrderStatus; + + @ApiModelProperty(value="问题编号") + private String problemNo; + + + + + +} diff --git a/pqs-process/process-api/src/main/java/com/njcn/process/pojo/po/RGeneralSurveyPlanPO.java b/pqs-process/process-api/src/main/java/com/njcn/process/pojo/po/RGeneralSurveyPlanPO.java index 5dc908edb..13362c3b4 100644 --- a/pqs-process/process-api/src/main/java/com/njcn/process/pojo/po/RGeneralSurveyPlanPO.java +++ b/pqs-process/process-api/src/main/java/com/njcn/process/pojo/po/RGeneralSurveyPlanPO.java @@ -87,6 +87,16 @@ public class RGeneralSurveyPlanPO { */ @TableField(value = "description") private String description; + /** + * 审核人 + */ + @TableField(value="check_person") + private String checkPerson; + /** + * 审核意见 + */ + @TableField(value = "check_comment") + private String checkComment; /** * 文件是否上传(0:否 1:是) diff --git a/pqs-process/process-api/src/main/java/com/njcn/process/pojo/po/RLoadTypeUserManage.java b/pqs-process/process-api/src/main/java/com/njcn/process/pojo/po/RLoadTypeUserManage.java index 5c62670a2..75ce5aefc 100644 --- a/pqs-process/process-api/src/main/java/com/njcn/process/pojo/po/RLoadTypeUserManage.java +++ b/pqs-process/process-api/src/main/java/com/njcn/process/pojo/po/RLoadTypeUserManage.java @@ -64,6 +64,15 @@ public class RLoadTypeUserManage implements Serializable { * 入网报告状态,字典ID */ private String iStatus; + /** + *入网报告审核人 + */ + private String iCheckPerson; + /** + *入网报告审核意见 + */ + private String iCheckComment; + /** * 入网报告路径 */ @@ -96,6 +105,14 @@ public class RLoadTypeUserManage implements Serializable { * 实测报告状态,字典ID */ private String aStatus; + /** + *实测报告审核人 + */ + private String aCheckPerson; + /** + *实测报告审核意见 + */ + private String aCheckComment; /** * 实测报告路径 */ @@ -120,5 +137,7 @@ public class RLoadTypeUserManage implements Serializable { * 实测详情 */ private String aDescription; + + } diff --git a/pqs-process/process-api/src/main/java/com/njcn/process/pojo/po/RStatDistributionProblemPO.java b/pqs-process/process-api/src/main/java/com/njcn/process/pojo/po/RStatDistributionProblemPO.java index 8ace724bc..780f92600 100644 --- a/pqs-process/process-api/src/main/java/com/njcn/process/pojo/po/RStatDistributionProblemPO.java +++ b/pqs-process/process-api/src/main/java/com/njcn/process/pojo/po/RStatDistributionProblemPO.java @@ -31,7 +31,8 @@ public class RStatDistributionProblemPO { @TableField(value = "org_no") private String orgNo; - + @TableField(value = "org_name") + private String orgName; /** * 问题类型(字典,两种类型:谐波电压越限、谐波电流越限) */ @@ -49,7 +50,8 @@ public class RStatDistributionProblemPO { */ @TableField(value = "distribution_id") private String distributionId; - + @TableField(value = "distribution_name") + private String distributionName; /** * 最新超标时间(超标连续大于4小时) */ diff --git a/pqs-process/process-api/src/main/java/com/njcn/process/pojo/po/RStatElectricQualityProblemLogPO.java b/pqs-process/process-api/src/main/java/com/njcn/process/pojo/po/RStatElectricQualityProblemLogPO.java new file mode 100644 index 000000000..29f125bf9 --- /dev/null +++ b/pqs-process/process-api/src/main/java/com/njcn/process/pojo/po/RStatElectricQualityProblemLogPO.java @@ -0,0 +1,190 @@ +package com.njcn.process.pojo.po; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableName; +import com.github.jeffreyning.mybatisplus.anno.MppMultiId; + +import java.util.Date; + +/** + * + * Description: + * 接口文档访问地址:http://serverIP:port/swagger-ui.html + * Date: 2023/2/22 18:59【需求编号】 + * + * @author clam + * @version V1.0.0 + */ +/** + * 电能质量问题日志表 + */ +@TableName(value = "r_stat_electric_quality_problem_log") +public class RStatElectricQualityProblemLogPO { + /** + * 电能质量问题编号 + */ + @MppMultiId(value = "power_quality_problem_no") + private String powerQualityProblemNo; + + /** + * 操作时间 + */ + @MppMultiId(value = "data_date") + private Date dataDate; + + /** + * 审核人 + */ + @TableField(value = "checker") + private String checker; + + /** + * 审核备注 + */ + @TableField(value = "description") + private String description; + + /** + * 填报进度,字典表(未填报、原因分析结果、计划整改措施、实际采取措施、治理效果评价、已归档) + */ + @TableField(value = "report_process") + private String reportProcess; + + /** + * 填报内容 + */ + @TableField(value = "report_process_content") + private String reportProcessContent; + + /** + * 审核状态 + */ + @TableField(value = "type") + private String type; + + /** + * 获取电能质量问题编号 + * + * @return power_quality_problem_no - 电能质量问题编号 + */ + public String getPowerQualityProblemNo() { + return powerQualityProblemNo; + } + + /** + * 设置电能质量问题编号 + * + * @param powerQualityProblemNo 电能质量问题编号 + */ + public void setPowerQualityProblemNo(String powerQualityProblemNo) { + this.powerQualityProblemNo = powerQualityProblemNo; + } + + /** + * 获取操作时间 + * + * @return data_date - 操作时间 + */ + public Date getDataDate() { + return dataDate; + } + + /** + * 设置操作时间 + * + * @param dataDate 操作时间 + */ + public void setDataDate(Date dataDate) { + this.dataDate = dataDate; + } + + /** + * 获取审核人 + * + * @return checker - 审核人 + */ + public String getChecker() { + return checker; + } + + /** + * 设置审核人 + * + * @param checker 审核人 + */ + public void setChecker(String checker) { + this.checker = checker; + } + + /** + * 获取审核备注 + * + * @return description - 审核备注 + */ + public String getDescription() { + return description; + } + + /** + * 设置审核备注 + * + * @param description 审核备注 + */ + public void setDescription(String description) { + this.description = description; + } + + /** + * 获取填报进度,字典表(未填报、原因分析结果、计划整改措施、实际采取措施、治理效果评价、已归档) + * + * @return report_process - 填报进度,字典表(未填报、原因分析结果、计划整改措施、实际采取措施、治理效果评价、已归档) + */ + public String getReportProcess() { + return reportProcess; + } + + /** + * 设置填报进度,字典表(未填报、原因分析结果、计划整改措施、实际采取措施、治理效果评价、已归档) + * + * @param reportProcess 填报进度,字典表(未填报、原因分析结果、计划整改措施、实际采取措施、治理效果评价、已归档) + */ + public void setReportProcess(String reportProcess) { + this.reportProcess = reportProcess; + } + + /** + * 获取填报内容 + * + * @return report_process_content - 填报内容 + */ + public String getReportProcessContent() { + return reportProcessContent; + } + + /** + * 设置填报内容 + * + * @param reportProcessContent 填报内容 + */ + public void setReportProcessContent(String reportProcessContent) { + this.reportProcessContent = reportProcessContent; + } + + /** + * 获取状态 + * + * @return type - 状态 + */ + public String getType() { + return type; + } + + /** + * 设置状态 + * + * @param type 状态 + */ + public void setType(String type) { + this.type = type; + } +} \ No newline at end of file diff --git a/pqs-process/process-api/src/main/java/com/njcn/process/pojo/po/RStatWorkOrderDetailPO.java b/pqs-process/process-api/src/main/java/com/njcn/process/pojo/po/RStatWorkOrderDetailPO.java index 37dc97362..41ae287a9 100644 --- a/pqs-process/process-api/src/main/java/com/njcn/process/pojo/po/RStatWorkOrderDetailPO.java +++ b/pqs-process/process-api/src/main/java/com/njcn/process/pojo/po/RStatWorkOrderDetailPO.java @@ -30,6 +30,13 @@ public class RStatWorkOrderDetailPO { private String problemNo; @TableField(value = "org_no") private String orgNo; + @TableField(value = "org_name") + private String orgName; + + @TableField(value = "distribution_id") + private String distributionId; + @TableField(value = "distribution_name") + private String distributionName; /** * 工单状态(字典,待派单、已派单、已关闭) */ @@ -144,6 +151,12 @@ public class RStatWorkOrderDetailPO { @TableField(value = "cause_feedback") private String causeFeedback; + /** + * 审核人ID + */ + @TableField(value = "check_person") + private String checkPerson; + /** * 审核状态(字典,两种类型:审核通过/审核不通过) */ @@ -157,7 +170,7 @@ public class RStatWorkOrderDetailPO { private String checkComments; /** - * 计划完成时间 + * 整改完成时间 */ @TableField(value = "rectify_complete_time") private Date rectifyCompleteTime; @@ -174,6 +187,12 @@ public class RStatWorkOrderDetailPO { @TableField(value = "rectify_describe") private String rectifyDescribe; + /** + * 整改人ID + */ + @TableField(value = "assess_person") + private String assessPerson; + /** * 评估完成时间 */ diff --git a/pqs-process/process-api/src/main/java/com/njcn/process/pojo/vo/RGeneralSurveyPlanVO.java b/pqs-process/process-api/src/main/java/com/njcn/process/pojo/vo/RGeneralSurveyPlanVO.java index 401cf8feb..c1f308884 100644 --- a/pqs-process/process-api/src/main/java/com/njcn/process/pojo/vo/RGeneralSurveyPlanVO.java +++ b/pqs-process/process-api/src/main/java/com/njcn/process/pojo/vo/RGeneralSurveyPlanVO.java @@ -49,28 +49,32 @@ public class RGeneralSurveyPlanVO { @ApiModelProperty(value="计划状态(0:新建 1:待审核 2:审核未通过 3:已发布 4:已完成)") private Integer status; - @TableField(value = "is_file_upload") @ApiModelProperty(value="文件是否上传(0:否 1:是)") private Integer isFileUpload; /** * 上传文件数量 */ - @TableField(value = "file_count") @ApiModelProperty(value="上传文件数量") private Integer fileCount; /** * 文件路径 */ - @TableField(value = "file_path") @ApiModelProperty(value="文件路径") private String filePath; + @ApiModelProperty(value="审核人") + private String checkPerson; + /** + * 审核意见 + */ + @ApiModelProperty(value="审核意见") + private String checkComment; + /** * 上传时间 */ - @TableField(value = "upload_time") @ApiModelProperty(value="上传时间") private Date uploadTime; diff --git a/pqs-process/process-api/src/main/java/com/njcn/process/pojo/vo/RStatDistributionProblemVO.java b/pqs-process/process-api/src/main/java/com/njcn/process/pojo/vo/RStatDistributionProblemVO.java new file mode 100644 index 000000000..00a764ffd --- /dev/null +++ b/pqs-process/process-api/src/main/java/com/njcn/process/pojo/vo/RStatDistributionProblemVO.java @@ -0,0 +1,83 @@ +package com.njcn.process.pojo.vo; + +import lombok.Data; + +import java.util.Date; + +/** + * Description: + * 接口文档访问地址:http://serverIP:port/swagger-ui.html + * Date: 2023/2/1 14:17【需求编号】 + * + * @author clam + * @version V1.0.0 + */ + +/** + * 台区测点问题表 + */ +@Data +public class RStatDistributionProblemVO { + /** + * 问题编号(有生成规则,看文档) + */ + private String problemNo; + + private String orgNo; + + private String orgName; + + /** + * 问题类型(字典,两种类型:谐波电压越限、谐波电流越限) + */ + private String problemType; + + /** + * 问题发生时间 + */ + private Date occurTime; + + /** + * 台区ID + */ + private String distributionId; + /** + * 台区名称 + */ + private String distributionName; + + /** + * 最新超标时间(超标连续大于4小时) + */ + private Date lastTime; + + /** + * 审核状态(字典,两种类型:待审核/已审核) + */ + private String checkStatus; + + /** + * 审核处理(字典,三种情况:“-”“生成工单”“无需处理”,待审核状态的审核结果为“-”,另外两种根据审核弹窗选择结果显示.这边字典存两个生成工单、无需处理,为空是替换成“-”) + */ + private String checkResult; + + /** + * 问题处理时间 + */ + private Date handleTime; + + /** + * 监测点ID + */ + private String measurementPointId; + + /** + * 问题描述 + */ + private String problemDescribe; + + /** + * 补充描述 + */ + private String supplyDescribe; +} diff --git a/pqs-process/process-api/src/main/java/com/njcn/process/pojo/vo/RStatElectricQualityProblemLogVO.java b/pqs-process/process-api/src/main/java/com/njcn/process/pojo/vo/RStatElectricQualityProblemLogVO.java new file mode 100644 index 000000000..4d1b6e5f7 --- /dev/null +++ b/pqs-process/process-api/src/main/java/com/njcn/process/pojo/vo/RStatElectricQualityProblemLogVO.java @@ -0,0 +1,180 @@ +package com.njcn.process.pojo.vo; + +import java.util.Date; + +/** + * + * Description: + * 接口文档访问地址:http://serverIP:port/swagger-ui.html + * Date: 2023/2/22 18:59【需求编号】 + * + * @author clam + * @version V1.0.0 + */ + +/** + * 电能质量问题日志表 + */ +public class RStatElectricQualityProblemLogVO { + /** + * 电能质量问题编号 + */ + private String powerQualityProblemNo; + + private String orgName; + /** + * 操作时间 + */ + private Date dataDate; + + /** + * 审核人 + */ + private String checker; + + /** + * 审核备注 + */ + private String description; + + /** + * 填报进度,字典表(未填报、原因分析结果、计划整改措施、实际采取措施、治理效果评价、已归档) + */ + private String reportProcess; + + /** + * 填报内容 + */ + private String reportProcessContent; + + /** + * 审核状态 + */ + private String type; + + /** + * 获取电能质量问题编号 + * + * @return power_quality_problem_no - 电能质量问题编号 + */ + public String getPowerQualityProblemNo() { + return powerQualityProblemNo; + } + + /** + * 设置电能质量问题编号 + * + * @param powerQualityProblemNo 电能质量问题编号 + */ + public void setPowerQualityProblemNo(String powerQualityProblemNo) { + this.powerQualityProblemNo = powerQualityProblemNo; + } + + /** + * 获取操作时间 + * + * @return data_date - 操作时间 + */ + public Date getDataDate() { + return dataDate; + } + + /** + * 设置操作时间 + * + * @param dataDate 操作时间 + */ + public void setDataDate(Date dataDate) { + this.dataDate = dataDate; + } + + /** + * 获取审核人 + * + * @return checker - 审核人 + */ + public String getChecker() { + return checker; + } + + /** + * 设置审核人 + * + * @param checker 审核人 + */ + public void setChecker(String checker) { + this.checker = checker; + } + + /** + * 获取审核备注 + * + * @return description - 审核备注 + */ + public String getDescription() { + return description; + } + + /** + * 设置审核备注 + * + * @param description 审核备注 + */ + public void setDescription(String description) { + this.description = description; + } + + /** + * 获取填报进度,字典表(未填报、原因分析结果、计划整改措施、实际采取措施、治理效果评价、已归档) + * + * @return report_process - 填报进度,字典表(未填报、原因分析结果、计划整改措施、实际采取措施、治理效果评价、已归档) + */ + public String getReportProcess() { + return reportProcess; + } + + /** + * 设置填报进度,字典表(未填报、原因分析结果、计划整改措施、实际采取措施、治理效果评价、已归档) + * + * @param reportProcess 填报进度,字典表(未填报、原因分析结果、计划整改措施、实际采取措施、治理效果评价、已归档) + */ + public void setReportProcess(String reportProcess) { + this.reportProcess = reportProcess; + } + + /** + * 获取填报内容 + * + * @return report_process_content - 填报内容 + */ + public String getReportProcessContent() { + return reportProcessContent; + } + + /** + * 设置填报内容 + * + * @param reportProcessContent 填报内容 + */ + public void setReportProcessContent(String reportProcessContent) { + this.reportProcessContent = reportProcessContent; + } + + /** + * 获取状态 + * + * @return type - 状态 + */ + public String getType() { + return type; + } + + /** + * 设置状态 + * + * @param type 状态 + */ + public void setType(String type) { + this.type = type; + } +} \ No newline at end of file diff --git a/pqs-process/process-api/src/main/java/com/njcn/process/pojo/vo/RStatWorkOrderDetailVO.java b/pqs-process/process-api/src/main/java/com/njcn/process/pojo/vo/RStatWorkOrderDetailVO.java new file mode 100644 index 000000000..a8a0f4b0b --- /dev/null +++ b/pqs-process/process-api/src/main/java/com/njcn/process/pojo/vo/RStatWorkOrderDetailVO.java @@ -0,0 +1,189 @@ +package com.njcn.process.pojo.vo; + +import lombok.Data; + +import java.util.Date; + +/** + * + * Description: + * 接口文档访问地址:http://serverIP:port/swagger-ui.html + * Date: 2023/2/1 14:13【需求编号】 + * + * @author clam + * @version V1.0.0 + */ + +/** + * 工单详情表 + */ +@Data +public class RStatWorkOrderDetailVO { + /** + * 问题编号(台区测点问题表的problem_no) + */ + private String problemNo; + private String orgNo; + private String orgName; + + + /** + * 台区ID + */ + private String distributionId; + /** + * 台区名称 + */ + private String distributionName; + /** + * 工单状态(字典,待派单、已派单、已关闭) + */ + private String workOrderStatus; + + /** + * 工单类型(字典,目前一个,整改单) + */ + private String workOrderType; + + /** + * 一级业务类型(字典,目前一个,运检业务) + */ + private String primaryBusinessType; + + /** + * 二级业务类型(字典,两种类型:谐波电压越限、谐波电流越限) + */ + private String twoBusinessType; + + /** + * 供电所 + */ + private String powerSupplyStation; + private String powerSupplyStationName; + + + /** + * 工单流程(字典,生成工单、派单、反馈、审核、整改、评估、归档,默认生成工单) + */ + private String workOrderProcess; + + /** + * 维护班组 + */ + private String whbz; + + /** + * 工单负责人 + */ + private String workOrderLeader; + + /** + * 工单完成时间 + */ + private Date workOrderOverTime; + + /** + * 要求反馈时间 + */ + private Date expectAskFeedbackTime; + + /** + * 接单人ID + */ + private String pickUpPerson; + + /** + * 下发时间 + */ + private Date distributionTime; + + /** + * 预期到期时间 + */ + private Date expirationTime; + + /** + * 关联设备主人 + */ + private String relationDevice; + + /** + * 附件 + */ + private String enclosure; + + /** + * 抄送 + */ + private String copyFor; + + /** + * 反馈时间 + */ + private Date askFeedbackTime; + + /** + * 计划完成时间 + */ + private Date plannedCompletionTime; + + /** + * 原因反馈 + */ + private String causeFeedback; + + /** + * 审核人ID + */ + private String checkPerson; + + /** + * 审核状态(字典,两种类型:审核通过/审核不通过) + */ + private String checkStatus; + + /** + * 审核意见(审核通过可为空,审核不通过时必填) + */ + private String checkComments; + + /** + * 整改完成时间 + */ + private Date rectifyCompleteTime; + + /** + * 整改人ID + */ + private String rectifyPerson; + + /** + * 整改描述 + */ + private String rectifyDescribe; + + /** + * 整改人ID + */ + private String assessPerson; + + /** + * 评估完成时间 + */ + private Date assessCompleteTime; + + /** + * 评估结果(字典,评估合格、评估不合格) + */ + private String assessResult; + + /** + * 评估描述 + */ + private String assessDescribe; + + /** + * 问题描述 + */ + private String problemDescribe; +} diff --git a/pqs-process/process-api/src/main/java/com/njcn/process/utils/ProcessEnumUtil.java b/pqs-process/process-api/src/main/java/com/njcn/process/utils/ProcessEnumUtil.java new file mode 100644 index 000000000..96312d146 --- /dev/null +++ b/pqs-process/process-api/src/main/java/com/njcn/process/utils/ProcessEnumUtil.java @@ -0,0 +1,46 @@ +package com.njcn.process.utils; + +import cn.hutool.core.util.StrUtil; +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.common.utils.EnumUtils; +import com.njcn.process.enums.ProcessResponseEnum; + +import javax.validation.constraints.NotNull; +import java.util.Objects; + +/** + * @author hongawen + * @version 1.0.0 + * @date 2021年12月20日 10:03 + */ +public class ProcessEnumUtil { + + /** + * 获取HarmonicResponseEnum实例 + */ + public static ProcessResponseEnum getHarmonicEnumResponseEnumByMessage(@NotNull Object value) { + ProcessResponseEnum harmonicResponseEnum; + try { + String message = value.toString(); + if(message.indexOf(StrUtil.C_COMMA)>0){ + value = message.substring(message.indexOf(StrUtil.C_COMMA)+1); + } + harmonicResponseEnum = EnumUtils.valueOf(ProcessResponseEnum.class, value, ProcessResponseEnum.class.getMethod(BusinessException.GET_MESSAGE_METHOD)); + return Objects.isNull(harmonicResponseEnum) ? ProcessResponseEnum.PROCESS_COMMON_ERROR : harmonicResponseEnum; + } catch (NoSuchMethodException e) { + throw new BusinessException(CommonResponseEnum.INTERNAL_ERROR); + } + } + public static Enum getExceptionEnum(HttpResult result){ + //如果返回错误,且为内部错误,则直接抛出异常 + CommonResponseEnum commonResponseEnum = EnumUtils.getCommonResponseEnumByCode(result.getCode()); + if (commonResponseEnum == CommonResponseEnum.DEVICE_RESPONSE_ENUM) { + return getHarmonicEnumResponseEnumByMessage(result.getMessage()); + } + return commonResponseEnum; + } + + +} diff --git a/pqs-process/process-boot/pom.xml b/pqs-process/process-boot/pom.xml index 83823600b..fbd19f790 100644 --- a/pqs-process/process-boot/pom.xml +++ b/pqs-process/process-boot/pom.xml @@ -108,6 +108,12 @@ pinyin4j 2.5.1 + + com.njcn + prepare-api + 1.0.0 + compile + diff --git a/pqs-process/process-boot/src/main/java/com/njcn/process/controller/ElectricityQualityIssuesController.java b/pqs-process/process-boot/src/main/java/com/njcn/process/controller/ElectricityQualityIssuesController.java index f15b6fe4a..7913d9cab 100644 --- a/pqs-process/process-boot/src/main/java/com/njcn/process/controller/ElectricityQualityIssuesController.java +++ b/pqs-process/process-boot/src/main/java/com/njcn/process/controller/ElectricityQualityIssuesController.java @@ -24,6 +24,8 @@ import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; +import java.util.List; + /** * 电能质量问题 * @author xiaoyao @@ -213,14 +215,26 @@ public class ElectricityQualityIssuesController extends BaseController { return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, null, methodDescribe); } - @OperateInfo(info = LogEnum.BUSINESS_COMMON, operateType = OperateType.DELETE) - @PostMapping("/queryIssuesAndOrder") - @ApiOperation("查询问题及工单(当前部门下)") - @ApiImplicitParam(name = "orgNo", value = "部门id", required = true) - public HttpResult queryIssuesAndOrder(@RequestParam("orgNo") String orgNo){ - String methodDescribe = getMethodDescribe("queryIssuesAndOrder"); - IssueesAndOrderVO issueesAndOrderVO =issuesService.queryIssuesAndOrder(orgNo); - return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, issueesAndOrderVO, methodDescribe); + @OperateInfo(info = LogEnum.BUSINESS_COMMON) + @PostMapping("/checkPowerQuality") + @ApiOperation("电能质量问题审核") + @ApiImplicitParam(name = "electricityQualityCheckParam", value = "电能质量问题审核参数", required = true) + public HttpResult checkPowerQuality(@Validated @RequestBody ElectricityQualityCheckParam electricityQualityCheckParam){ + String methodDescribe = getMethodDescribe("checkPowerQuality"); + + Boolean flag = issuesService.checkPowerQuality (electricityQualityCheckParam); + return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, flag, methodDescribe); + } + /*todo*/ + @OperateInfo(info = LogEnum.BUSINESS_COMMON) + @PostMapping("/queryCheckTrack") + @ApiOperation("历史审核记录查询") + @ApiImplicitParam(name = "powerQualityProblemNo", value = "历史审核记录查询参数", required = true) + public HttpResult> queryCheckTrack(@RequestParam("powerQualityProblemNo") String powerQualityProblemNo){ + String methodDescribe = getMethodDescribe("checkPowerQuality"); + + List rStatElectricQualityProblemLogVOS = issuesService.queryCheckTrack (powerQualityProblemNo); + return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, rStatElectricQualityProblemLogVOS, methodDescribe); } } diff --git a/pqs-process/process-boot/src/main/java/com/njcn/process/controller/LoadTypeUserManageController.java b/pqs-process/process-boot/src/main/java/com/njcn/process/controller/LoadTypeUserManageController.java index e208c591a..1670eec50 100644 --- a/pqs-process/process-boot/src/main/java/com/njcn/process/controller/LoadTypeUserManageController.java +++ b/pqs-process/process-boot/src/main/java/com/njcn/process/controller/LoadTypeUserManageController.java @@ -92,7 +92,27 @@ public class LoadTypeUserManageController extends BaseController { return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.FAIL, null, methodDescribe); } } + @OperateInfo(info = LogEnum.BUSINESS_COMMON) + @PostMapping("/checkLoadTypeUserI") + @ApiOperation("入网评估报告审核") + @ApiImplicitParam(name = "loadTypeUserCheckParam", value = "入网评估报告审核参数", required = true) + public HttpResult checkLoadTypeUserI(@Validated @RequestBody LoadTypeUserCheckParam loadTypeUserCheckParam){ + String methodDescribe = getMethodDescribe("checkLoadTypeUserI"); + Boolean flag = loadTypeUserManageService.checkLoadTypeUserI (loadTypeUserCheckParam); + return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, flag, methodDescribe); + } + + @OperateInfo(info = LogEnum.BUSINESS_COMMON) + @PostMapping("/checkLoadTypeUserA") + @ApiOperation("实测报告审核") + @ApiImplicitParam(name = "loadTypeUserCheckParam", value = "实测报告参数", required = true) + public HttpResult checkLoadTypeUserA(@Validated @RequestBody LoadTypeUserCheckParam loadTypeUserCheckParam){ + String methodDescribe = getMethodDescribe("checkLoadTypeUserA"); + + Boolean flag = loadTypeUserManageService.checkLoadTypeUserA (loadTypeUserCheckParam); + return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, flag, methodDescribe); + } /** * 上传干扰源用户入网报告 * @author qijian diff --git a/pqs-process/process-boot/src/main/java/com/njcn/process/controller/RGeneralSurveyPlanController.java b/pqs-process/process-boot/src/main/java/com/njcn/process/controller/RGeneralSurveyPlanController.java index db147ae3f..e99de112b 100644 --- a/pqs-process/process-boot/src/main/java/com/njcn/process/controller/RGeneralSurveyPlanController.java +++ b/pqs-process/process-boot/src/main/java/com/njcn/process/controller/RGeneralSurveyPlanController.java @@ -92,10 +92,21 @@ public class RGeneralSurveyPlanController extends BaseController { public HttpResult> queryPlanAudit(@Validated @RequestBody RGeneralSurveyPlanQueryParm rGeneralSurveyPlanQueryParm){ String methodDescribe = getMethodDescribe("queryPlanAudit"); - IPage rGeneralSurveyPlanVOS = rGeneralSurveyPlanPOService.query (rGeneralSurveyPlanQueryParm, Stream.of ("1").collect (Collectors.toList ())); + IPage rGeneralSurveyPlanVOS = rGeneralSurveyPlanPOService.query (rGeneralSurveyPlanQueryParm, Stream.of ("1","2").collect (Collectors.toList ())); return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, rGeneralSurveyPlanVOS, methodDescribe); } + @OperateInfo(info = LogEnum.BUSINESS_COMMON) + @PostMapping("/checkPlanAudit") + @ApiOperation("普测计划-审核") + @ApiImplicitParam(name = "rGeneralSurveyPlanChcekParm", value = "普测计划审核参数", required = true) + public HttpResult checkPlanAudit(@Validated @RequestBody RGeneralSurveyPlanChcekParm rGeneralSurveyPlanChcekParm){ + String methodDescribe = getMethodDescribe("checkPlanAudit"); + + Boolean flag = rGeneralSurveyPlanPOService.checkPlanAudit (rGeneralSurveyPlanChcekParm); + return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, flag, methodDescribe); + } + @OperateInfo(info = LogEnum.BUSINESS_COMMON) @PostMapping("/queryPlanResult") @ApiOperation("查询普测计划-结果页面") diff --git a/pqs-process/process-boot/src/main/java/com/njcn/process/controller/RStatWorkOrderController.java b/pqs-process/process-boot/src/main/java/com/njcn/process/controller/RStatWorkOrderController.java index c624f1b75..1b8f275bc 100644 --- a/pqs-process/process-boot/src/main/java/com/njcn/process/controller/RStatWorkOrderController.java +++ b/pqs-process/process-boot/src/main/java/com/njcn/process/controller/RStatWorkOrderController.java @@ -1,13 +1,18 @@ package com.njcn.process.controller; +import com.baomidou.mybatisplus.core.metadata.IPage; import com.njcn.common.pojo.annotation.OperateInfo; import com.njcn.common.pojo.constant.OperateType; 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.prepare.harmonic.pojo.dto.OverLimitFlagDTO; +import com.njcn.process.pojo.param.RStatProblemAndWorkOrderParam; import com.njcn.process.pojo.vo.IssueesAndOrderVO; import com.njcn.process.pojo.vo.OrderCountVO; +import com.njcn.process.pojo.vo.RStatDistributionProblemVO; +import com.njcn.process.pojo.vo.RStatWorkOrderDetailVO; import com.njcn.process.service.RStatDistributionProblemService; import com.njcn.web.controller.BaseController; import io.swagger.annotations.Api; @@ -15,10 +20,10 @@ import io.swagger.annotations.ApiImplicitParam; import io.swagger.annotations.ApiOperation; import lombok.AllArgsConstructor; import lombok.extern.slf4j.Slf4j; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RequestParam; -import org.springframework.web.bind.annotation.RestController; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import java.util.List; /** * Description: @@ -56,4 +61,58 @@ public class RStatWorkOrderController extends BaseController { OrderCountVO orderCountVO =rStatDistributionProblemService.queryOrderCount(orgNo); return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, orderCountVO, methodDescribe); } + + @OperateInfo(info = LogEnum.BUSINESS_COMMON, operateType = OperateType.DELETE) + @PostMapping("/createProblem") + @ApiOperation("创建问题接口") + @ApiImplicitParam(name = "overLimitFlagDTOList", value = "部门id", required = true) + public HttpResult createProblem(@RequestBody List overLimitFlagDTOList){ + String methodDescribe = getMethodDescribe("createProblem"); + Boolean problem = rStatDistributionProblemService.createProblem (overLimitFlagDTOList); + return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, problem, methodDescribe); + } + + @OperateInfo(info = LogEnum.BUSINESS_COMMON) + @PostMapping("/queryProblem") + @ApiOperation("查询工单问题") + @ApiImplicitParam(name = "rStatProblemAndWorkOrderParam", value = "查询工单问题参数", required = true) + public HttpResult> queryProblem(@Validated @RequestBody RStatProblemAndWorkOrderParam rStatProblemAndWorkOrderParam){ + String methodDescribe = getMethodDescribe("queryProblem"); + + IPage rStatDistributionProblemVOIPage = rStatDistributionProblemService.queryProblem (rStatProblemAndWorkOrderParam); + return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, rStatDistributionProblemVOIPage, methodDescribe); + } + @OperateInfo(info = LogEnum.BUSINESS_COMMON) + @PostMapping("/checkProblem") + @ApiOperation("审核处理") + @ApiImplicitParam(name = "rStatDistributionProblemVO", value = "审核工单问题参数", required = true) + public HttpResult checkProblem(@Validated @RequestBody RStatDistributionProblemVO rStatDistributionProblemVO){ + String methodDescribe = getMethodDescribe("checkProblem"); + + Boolean flag = rStatDistributionProblemService.checkProblem (rStatDistributionProblemVO); + return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, flag, methodDescribe); + } + @OperateInfo(info = LogEnum.BUSINESS_COMMON) + @PostMapping("/queryWorkOrder") + @ApiOperation("查询工单") + @ApiImplicitParam(name = "rStatProblemAndWorkOrderParam", value = "查询工单问题参数", required = true) + public HttpResult> queryWorkOrder(@Validated @RequestBody RStatProblemAndWorkOrderParam rStatProblemAndWorkOrderParam){ + String methodDescribe = getMethodDescribe("queryWorkOrder"); + + IPage rStatWorkOrderDetailVOIPage = rStatDistributionProblemService.queryWorkOrder (rStatProblemAndWorkOrderParam); + return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, rStatWorkOrderDetailVOIPage, methodDescribe); + } + + @OperateInfo(info = LogEnum.BUSINESS_COMMON) + @PostMapping("/updateWorkOrderStatus") + @ApiOperation("更新工单进度") + @ApiImplicitParam(name = "rStatWorkOrderDetailVO", value = "查询工单问题参数", required = true) + public HttpResult updateWorkOrderStatus(@Validated @RequestBody RStatWorkOrderDetailVO rStatWorkOrderDetailVO){ + String methodDescribe = getMethodDescribe("updateWorkOrderStatus"); + + Boolean flag = rStatDistributionProblemService.updateWorkOrderStatus (rStatWorkOrderDetailVO); + return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, flag, methodDescribe); + } + + } diff --git a/pqs-process/process-boot/src/main/java/com/njcn/process/mapper/RStatElectricQualityProblemLogMapper.java b/pqs-process/process-boot/src/main/java/com/njcn/process/mapper/RStatElectricQualityProblemLogMapper.java new file mode 100644 index 000000000..8b9155bbb --- /dev/null +++ b/pqs-process/process-boot/src/main/java/com/njcn/process/mapper/RStatElectricQualityProblemLogMapper.java @@ -0,0 +1,16 @@ +package com.njcn.process.mapper; + +import com.github.jeffreyning.mybatisplus.base.MppBaseMapper; +import com.njcn.process.pojo.po.RStatElectricQualityProblemLogPO; + +/** + * + * Description: + * 接口文档访问地址:http://serverIP:port/swagger-ui.html + * Date: 2023/2/22 18:59【需求编号】 + * + * @author clam + * @version V1.0.0 + */ +public interface RStatElectricQualityProblemLogMapper extends MppBaseMapper { +} \ No newline at end of file diff --git a/pqs-process/process-boot/src/main/java/com/njcn/process/mapper/RStatWorkOrderDetailMapper.java b/pqs-process/process-boot/src/main/java/com/njcn/process/mapper/RStatWorkOrderDetailMapper.java index 93d3e0358..9f10aae7f 100644 --- a/pqs-process/process-boot/src/main/java/com/njcn/process/mapper/RStatWorkOrderDetailMapper.java +++ b/pqs-process/process-boot/src/main/java/com/njcn/process/mapper/RStatWorkOrderDetailMapper.java @@ -1,7 +1,12 @@ package com.njcn.process.mapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.github.jeffreyning.mybatisplus.base.MppBaseMapper; +import com.njcn.process.pojo.param.RStatProblemAndWorkOrderParam; import com.njcn.process.pojo.po.RStatWorkOrderDetailPO; +import com.njcn.process.pojo.vo.RStatWorkOrderDetailVO; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; /** * @@ -13,4 +18,25 @@ import com.njcn.process.pojo.po.RStatWorkOrderDetailPO; * @version V1.0.0 */ public interface RStatWorkOrderDetailMapper extends MppBaseMapper { + @Select ({""}) + Page getPageVo(Page returnpage,@Param("temp") RStatProblemAndWorkOrderParam rStatProblemAndWorkOrderParam); } \ No newline at end of file diff --git a/pqs-process/process-boot/src/main/java/com/njcn/process/mapper/mapping/RStatElectricQualityProblemLogMapper.xml b/pqs-process/process-boot/src/main/java/com/njcn/process/mapper/mapping/RStatElectricQualityProblemLogMapper.xml new file mode 100644 index 000000000..7890bf4d6 --- /dev/null +++ b/pqs-process/process-boot/src/main/java/com/njcn/process/mapper/mapping/RStatElectricQualityProblemLogMapper.xml @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + + + + power_quality_problem_no, data_date, checker, description, report_process, report_process_content, + `type` + + \ No newline at end of file diff --git a/pqs-process/process-boot/src/main/java/com/njcn/process/service/IssuesService.java b/pqs-process/process-boot/src/main/java/com/njcn/process/service/IssuesService.java index d2ab9867f..255a1cc9a 100644 --- a/pqs-process/process-boot/src/main/java/com/njcn/process/service/IssuesService.java +++ b/pqs-process/process-boot/src/main/java/com/njcn/process/service/IssuesService.java @@ -6,6 +6,8 @@ import com.njcn.process.pojo.param.*; import com.njcn.process.pojo.vo.*; import org.springframework.web.multipart.MultipartFile; +import java.util.List; + /** * 电能质量问题接口类 * @author xiaoyao @@ -96,4 +98,20 @@ public interface IssuesService { * @Date: 2023/1/5 */ IssueesAndOrderVO queryIssuesAndOrder(String orgNo); + /** + * @Description: 电能质量问题审核 + * @Param: [electricityQualityCheckParam] + * @return: java.lang.Boolean + * @Author: clam + * @Date: 2023/2/22 + */ + Boolean checkPowerQuality(ElectricityQualityCheckParam electricityQualityCheckParam); + /** + * @Description: 历史审核记录查询 + * @Param: [powerQualityProblemNo] + * @return: java.util.List + * @Author: clam + * @Date: 2023/2/23 + */ + List queryCheckTrack(String powerQualityProblemNo); } diff --git a/pqs-process/process-boot/src/main/java/com/njcn/process/service/LoadTypeUserManageService.java b/pqs-process/process-boot/src/main/java/com/njcn/process/service/LoadTypeUserManageService.java index d9c398024..43edc2ff5 100644 --- a/pqs-process/process-boot/src/main/java/com/njcn/process/service/LoadTypeUserManageService.java +++ b/pqs-process/process-boot/src/main/java/com/njcn/process/service/LoadTypeUserManageService.java @@ -79,4 +79,20 @@ public interface LoadTypeUserManageService { * @return */ List exportLoadTypeRelationList(List list); + /** + * @Description: 入网评估报告审核 + * @Param: [loadTypeUserCheckParam] + * @return: java.lang.Boolean + * @Author: clam + * @Date: 2023/2/22 + */ + Boolean checkLoadTypeUserI(LoadTypeUserCheckParam loadTypeUserCheckParam); + /** + * @Description: 实测报告审核 + * @Param: [loadTypeUserCheckParam] + * @return: java.lang.Boolean + * @Author: clam + * @Date: 2023/2/22 + */ + Boolean checkLoadTypeUserA(LoadTypeUserCheckParam loadTypeUserCheckParam); } diff --git a/pqs-process/process-boot/src/main/java/com/njcn/process/service/RGeneralSurveyPlanPOService.java b/pqs-process/process-boot/src/main/java/com/njcn/process/service/RGeneralSurveyPlanPOService.java index c345a1a5a..eeb407748 100644 --- a/pqs-process/process-boot/src/main/java/com/njcn/process/service/RGeneralSurveyPlanPOService.java +++ b/pqs-process/process-boot/src/main/java/com/njcn/process/service/RGeneralSurveyPlanPOService.java @@ -3,10 +3,7 @@ package com.njcn.process.service; import com.baomidou.mybatisplus.core.metadata.IPage; import com.github.jeffreyning.mybatisplus.service.IMppService; import com.njcn.minio.bo.MinIoUploadResDTO; -import com.njcn.process.pojo.param.RGeneralSurveyPlanAddParm; -import com.njcn.process.pojo.param.RGeneralSurveyPlanQueryParm; -import com.njcn.process.pojo.param.SurveyPlanQuestionQueryParm; -import com.njcn.process.pojo.param.SurveyResultUploadParam; +import com.njcn.process.pojo.param.*; import com.njcn.process.pojo.po.RGeneralSurveyPlanPO; import com.njcn.process.pojo.vo.SurveyPlanExcel; import com.njcn.process.pojo.vo.RGeneralSurveyPlanDetailOnQuestionVO; @@ -81,4 +78,12 @@ public interface RGeneralSurveyPlanPOService extends IMppService querySurveyPlanName(SurveyPlanQuestionQueryParm questionQueryParm); + /** + * @Description: checkPlanAudit + * @Param: [rGeneralSurveyPlanChcekParm] + * @return: java.lang.Boolean + * @Author: clam + * @Date: 2023/2/22 + */ + Boolean checkPlanAudit(RGeneralSurveyPlanChcekParm rGeneralSurveyPlanChcekParm); } diff --git a/pqs-process/process-boot/src/main/java/com/njcn/process/service/RStatDistributionProblemService.java b/pqs-process/process-boot/src/main/java/com/njcn/process/service/RStatDistributionProblemService.java index 2245f78f3..532f59cfe 100644 --- a/pqs-process/process-boot/src/main/java/com/njcn/process/service/RStatDistributionProblemService.java +++ b/pqs-process/process-boot/src/main/java/com/njcn/process/service/RStatDistributionProblemService.java @@ -1,9 +1,16 @@ package com.njcn.process.service; +import com.baomidou.mybatisplus.core.metadata.IPage; import com.github.jeffreyning.mybatisplus.service.IMppService; +import com.njcn.prepare.harmonic.pojo.dto.OverLimitFlagDTO; +import com.njcn.process.pojo.param.RStatProblemAndWorkOrderParam; import com.njcn.process.pojo.po.RStatDistributionProblemPO; import com.njcn.process.pojo.vo.IssueesAndOrderVO; import com.njcn.process.pojo.vo.OrderCountVO; +import com.njcn.process.pojo.vo.RStatDistributionProblemVO; +import com.njcn.process.pojo.vo.RStatWorkOrderDetailVO; + +import java.util.List; /** * @@ -32,4 +39,44 @@ public interface RStatDistributionProblemService extends IMppService overLimitFlagDTOList); + /** + * @Description: 查询问题接口 + * @Param: [rStatProblemAndWorkOrderParam] + * @return: com.baomidou.mybatisplus.core.metadata.IPage + * @Author: clam + * @Date: 2023/2/16 + */ + IPage queryProblem(RStatProblemAndWorkOrderParam rStatProblemAndWorkOrderParam); + /** + * @Description: 审核处理 + * @Param: [rStatDistributionProblemVO] + * @return: java.lang.Boolean + * @Author: clam + * @Date: 2023/2/17 + */ + Boolean checkProblem(RStatDistributionProblemVO rStatDistributionProblemVO); + /** + * @Description: queryWorkOrder + * @Param: [rStatProblemAndWorkOrderParam] + * @return: com.baomidou.mybatisplus.core.metadata.IPage + * @Author: clam + * @Date: 2023/2/17 + */ + IPage queryWorkOrder(RStatProblemAndWorkOrderParam rStatProblemAndWorkOrderParam); + /** + * @Description: 更新工单进度 + * @Param: [rStatWorkOrderDetailVO] + * @return: java.lang.Boolean + * @Author: clam + * @Date: 2023/2/17 + */ + Boolean updateWorkOrderStatus(RStatWorkOrderDetailVO rStatWorkOrderDetailVO); } diff --git a/pqs-process/process-boot/src/main/java/com/njcn/process/service/impl/IssuesServiceImpl.java b/pqs-process/process-boot/src/main/java/com/njcn/process/service/impl/IssuesServiceImpl.java index dffabfd12..4495ae504 100644 --- a/pqs-process/process-boot/src/main/java/com/njcn/process/service/impl/IssuesServiceImpl.java +++ b/pqs-process/process-boot/src/main/java/com/njcn/process/service/impl/IssuesServiceImpl.java @@ -9,6 +9,7 @@ import cn.hutool.extra.pinyin.PinyinUtil; import com.alibaba.nacos.shaded.com.google.common.collect.Lists; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.njcn.common.pojo.constant.BizParamConstant; import com.njcn.common.pojo.exception.BusinessException; @@ -36,6 +37,7 @@ import javax.annotation.Resource; import java.time.LocalDateTime; import java.util.Date; import java.util.List; +import java.util.Objects; /** * 电能质量问题实现类 @@ -64,6 +66,8 @@ public class IssuesServiceImpl implements IssuesService { private final RMpElectricQualityProblemFlowDetailsMapper flowDetailsMapper; + private final RStatElectricQualityProblemLogMapper rStatElectricQualityProblemLogMapper; + @Resource private MinIoUtils minIoUtils; @@ -561,4 +565,88 @@ public class IssuesServiceImpl implements IssuesService { return issueesAndOrderVO; } + /** + * @param electricityQualityCheckParam + * @Description: 电能质量问题审核 + * @Param: [electricityQualityCheckParam] + * @return: java.lang.Boolean + * @Author: clam + * @Date: 2023/2/22 + */ + @Override + public Boolean checkPowerQuality(ElectricityQualityCheckParam electricityQualityCheckParam) { + boolean result = true; + RStatElectricQualityProblemLogPO rStatElectricQualityProblemLogPO = new RStatElectricQualityProblemLogPO(); + rStatElectricQualityProblemLogPO.setPowerQualityProblemNo (electricityQualityCheckParam.getPowerQualityProblemNo ()); + rStatElectricQualityProblemLogPO.setChecker (electricityQualityCheckParam.getCheckPerson ()); + rStatElectricQualityProblemLogPO.setDataDate ( new Date ()); + rStatElectricQualityProblemLogPO.setDescription (electricityQualityCheckParam.getCheckComment ()); + rStatElectricQualityProblemLogPO.setReportProcess (electricityQualityCheckParam.getReportProcess ()); + rStatElectricQualityProblemLogPO.setReportProcessContent (electricityQualityCheckParam.getCheckComment ()); + + rStatElectricQualityProblemLogPO.setType (Objects.equals ("1", electricityQualityCheckParam.getCheckResult ())?DicDataEnum.SUCCESS.getCode ( ):DicDataEnum.FAIL.getCode ( )); + /*插入审核日志表*/ + int insert = rStatElectricQualityProblemLogMapper.insert (rStatElectricQualityProblemLogPO); + String report_process =""; + String report_process_status =""; + String reportProcess =electricityQualityCheckParam.getReportProcess (); + String checkResult = electricityQualityCheckParam.getCheckResult ( ); + if (DicDataEnum.CAUSE_ANALYSIS.getCode ().equals(reportProcess)){ + if(Objects.equals ("1", checkResult)){ + report_process_status = DicDataEnum.AUDITT.getCode (); + report_process = DicDataEnum.PLAN_MEASURES.getCode (); + }else{ + report_process_status = DicDataEnum.FAIL.getCode (); + report_process = DicDataEnum.CAUSE_ANALYSIS.getCode (); + } + }else if (DicDataEnum.PLAN_MEASURES.getCode().equals(reportProcess)){ + if(Objects.equals ("1", checkResult)){ + report_process_status = DicDataEnum.AUDITT.getCode (); + report_process = DicDataEnum.ACTUAL_MEASURES.getCode (); + }else{ + report_process_status = DicDataEnum.FAIL.getCode (); + report_process = DicDataEnum.PLAN_MEASURES.getCode (); + } + + }else if (DicDataEnum.ACTUAL_MEASURES.getCode().equals(reportProcess)){ + if(Objects.equals ("1", checkResult)){ + report_process_status = DicDataEnum.AUDITT.getCode (); + report_process = DicDataEnum.INSIGHTS.getCode (); + }else{ + report_process_status = DicDataEnum.FAIL.getCode (); + report_process = DicDataEnum.ACTUAL_MEASURES.getCode (); + } + + }else if (DicDataEnum.INSIGHTS.getCode().equals(reportProcess)){ + + if(Objects.equals ("1", checkResult)){ + report_process_status = DicDataEnum.AUDITT.getCode (); + report_process = DicDataEnum.ARCHIVED.getCode (); + }else{ + report_process_status = DicDataEnum.FAIL.getCode (); + report_process = DicDataEnum.INSIGHTS.getCode (); + } + } + UpdateWrapper updateWrapper = new UpdateWrapper (); + updateWrapper.eq ("power_quality_problem_no", electricityQualityCheckParam.getPowerQualityProblemNo ()); + updateWrapper.set ("report_process", report_process); + updateWrapper.set ("report_process_status",report_process_status); + int i= issuesMapper.update (null,updateWrapper); + result = insert==1&&i==1; + return result; + } + + /** + * @param powerQualityProblemNo + * @Description: 历史审核记录查询 + * @Param: [powerQualityProblemNo] + * @return: java.util.List + * @Author: clam + * @Date: 2023/2/23 + */ + @Override + public List queryCheckTrack(String powerQualityProblemNo) { + return null; + } + } diff --git a/pqs-process/process-boot/src/main/java/com/njcn/process/service/impl/LoadTypeUserManageServiceImpl.java b/pqs-process/process-boot/src/main/java/com/njcn/process/service/impl/LoadTypeUserManageServiceImpl.java index 70b1d97b0..e6e8141e4 100644 --- a/pqs-process/process-boot/src/main/java/com/njcn/process/service/impl/LoadTypeUserManageServiceImpl.java +++ b/pqs-process/process-boot/src/main/java/com/njcn/process/service/impl/LoadTypeUserManageServiceImpl.java @@ -2,6 +2,7 @@ package com.njcn.process.service.impl; import cn.hutool.core.date.DateUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.njcn.common.pojo.exception.BusinessException; import com.njcn.device.pms.api.DistributionMonitorClient; @@ -342,4 +343,54 @@ public class LoadTypeUserManageServiceImpl implements LoadTypeUserManageService return resultList; } + + /** + * @param loadTypeUserCheckParam + * @Description: 入网评估报告审核 + * @Param: [loadTypeUserCheckParam] + * @return: java.lang.Boolean + * @Author: clam + * @Date: 2023/2/22 + */ + @Override + public Boolean checkLoadTypeUserI(LoadTypeUserCheckParam loadTypeUserCheckParam) { + boolean result = true; + UpdateWrapper updateWrapper = new UpdateWrapper (); + updateWrapper.eq ("id", loadTypeUserCheckParam.getId ()); + updateWrapper.set ("i_check_comment", loadTypeUserCheckParam.getCheckComment ()); + updateWrapper.set ("i_check_person",loadTypeUserCheckParam.getCheckPerson ()); + + DictData fail = dicDataFeignClient.getDicDataByCode (DicDataEnum.FAIL.getCode ( )).getData ( ); + DictData finish = dicDataFeignClient.getDicDataByCode(DicDataEnum.SUCCESS.getCode()).getData(); + + updateWrapper.set ("i_status", Objects.equals ("1", loadTypeUserCheckParam.getCheckResult ())?finish.getId ():fail.getId ()); + int i= loadTypeUserManageMapper.update (null,updateWrapper); + result = i==1; + return result; + } + + /** + * @param loadTypeUserCheckParam + * @Description: 实测报告审核 + * @Param: [loadTypeUserCheckParam] + * @return: java.lang.Boolean + * @Author: clam + * @Date: 2023/2/22 + */ + @Override + public Boolean checkLoadTypeUserA(LoadTypeUserCheckParam loadTypeUserCheckParam) { + boolean result = true; + UpdateWrapper updateWrapper = new UpdateWrapper (); + updateWrapper.eq ("id", loadTypeUserCheckParam.getId ()); + updateWrapper.set ("a_check_comment", loadTypeUserCheckParam.getCheckComment ()); + updateWrapper.set ("a_check_person",loadTypeUserCheckParam.getCheckPerson ()); + + DictData fail = dicDataFeignClient.getDicDataByCode (DicDataEnum.FAIL.getCode ( )).getData ( ); + DictData finish = dicDataFeignClient.getDicDataByCode(DicDataEnum.SUCCESS.getCode()).getData(); + + updateWrapper.set ("a_status", Objects.equals ("1", loadTypeUserCheckParam.getCheckResult ())?finish.getId ():fail.getId ()); + int i= loadTypeUserManageMapper.update (null,updateWrapper); + result = i==1; + return result; + } } diff --git a/pqs-process/process-boot/src/main/java/com/njcn/process/service/impl/RGeneralSurveyPlanPOServiceImpl.java b/pqs-process/process-boot/src/main/java/com/njcn/process/service/impl/RGeneralSurveyPlanPOServiceImpl.java index d8bf9dca5..4de804af4 100644 --- a/pqs-process/process-boot/src/main/java/com/njcn/process/service/impl/RGeneralSurveyPlanPOServiceImpl.java +++ b/pqs-process/process-boot/src/main/java/com/njcn/process/service/impl/RGeneralSurveyPlanPOServiceImpl.java @@ -2,6 +2,7 @@ package com.njcn.process.service.impl; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.github.jeffreyning.mybatisplus.service.MppServiceImpl; @@ -12,10 +13,7 @@ import com.njcn.minio.utils.MinIoUtils; import com.njcn.process.enums.ProcessResponseEnum; import com.njcn.process.mapper.RGeneralSurveyPlanDetailMapper; import com.njcn.process.mapper.RGeneralSurveyPlanPOMapper; -import com.njcn.process.pojo.param.RGeneralSurveyPlanAddParm; -import com.njcn.process.pojo.param.RGeneralSurveyPlanQueryParm; -import com.njcn.process.pojo.param.SurveyPlanQuestionQueryParm; -import com.njcn.process.pojo.param.SurveyResultUploadParam; +import com.njcn.process.pojo.param.*; import com.njcn.process.pojo.po.RGeneralSurveyPlanDetail; import com.njcn.process.pojo.po.RGeneralSurveyPlanPO; import com.njcn.process.pojo.vo.RGeneralSurveyPlanDetailOnQuestionVO; @@ -85,7 +83,7 @@ public class RGeneralSurveyPlanPOServiceImpl extends MppServiceImpl rGeneralSurveyPlanDetailAddParm = rGeneralSurveyPlanAddParm.getRGeneralSurveyPlanDetailAddParm ( ); @@ -333,6 +331,26 @@ public class RGeneralSurveyPlanPOServiceImpl extends MppServiceImpl updateWrapper = new UpdateWrapper(); + updateWrapper.eq ("plan_no", rGeneralSurveyPlanChcekParm.getPlanNo ()); + updateWrapper.set ("check_comment", rGeneralSurveyPlanChcekParm.getCheckComment ()); + updateWrapper.set ("check_person",rGeneralSurveyPlanChcekParm.getCheckPerson ()); + updateWrapper.set ("status", Objects.equals ("1", rGeneralSurveyPlanChcekParm.getCheckResult ())?3:2); + result = this.update (updateWrapper); + return result; + } + /** * 上传文件到Minio * diff --git a/pqs-process/process-boot/src/main/java/com/njcn/process/service/impl/RStatDistributionProblemServiceImpl.java b/pqs-process/process-boot/src/main/java/com/njcn/process/service/impl/RStatDistributionProblemServiceImpl.java index 84bec0903..9c76c5b84 100644 --- a/pqs-process/process-boot/src/main/java/com/njcn/process/service/impl/RStatDistributionProblemServiceImpl.java +++ b/pqs-process/process-boot/src/main/java/com/njcn/process/service/impl/RStatDistributionProblemServiceImpl.java @@ -1,25 +1,37 @@ package com.njcn.process.service.impl; +import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.github.jeffreyning.mybatisplus.service.MppServiceImpl; +import com.njcn.device.pms.api.PmsPowerDistributionareaClient; +import com.njcn.device.pms.pojo.param.PowerDistributionareaParam; +import com.njcn.device.pms.pojo.po.PowerDistributionarea; +import com.njcn.prepare.harmonic.pojo.dto.OverLimitFlagDTO; import com.njcn.process.mapper.RStatDistributionProblemMapper; import com.njcn.process.mapper.RStatWorkOrderDetailMapper; +import com.njcn.process.pojo.param.RStatProblemAndWorkOrderParam; import com.njcn.process.pojo.po.RStatDistributionProblemPO; import com.njcn.process.pojo.po.RStatWorkOrderDetailPO; import com.njcn.process.pojo.vo.IssueesAndOrderVO; import com.njcn.process.pojo.vo.OrderCountVO; +import com.njcn.process.pojo.vo.RStatDistributionProblemVO; +import com.njcn.process.pojo.vo.RStatWorkOrderDetailVO; import com.njcn.process.service.RStatDistributionProblemService; import com.njcn.system.enums.DicDataEnum; import com.njcn.user.api.DeptFeignClient; import lombok.AllArgsConstructor; +import org.springframework.beans.BeanUtils; import org.springframework.stereotype.Service; +import org.springframework.util.CollectionUtils; -import java.util.List; -import java.util.Objects; +import java.time.ZoneId; +import java.time.format.DateTimeFormatter; +import java.util.*; import java.util.stream.Collectors; /** - * * Description: * 接口文档访问地址:http://serverIP:port/swagger-ui.html * Date: 2023/2/1 14:17【需求编号】 @@ -29,10 +41,11 @@ import java.util.stream.Collectors; */ @Service @AllArgsConstructor -public class RStatDistributionProblemServiceImpl extends MppServiceImpl implements RStatDistributionProblemService{ +public class RStatDistributionProblemServiceImpl extends MppServiceImpl implements RStatDistributionProblemService { private final DeptFeignClient deptFeignClient; + private final PmsPowerDistributionareaClient pmsPowerDistributionareaClient; private final RStatDistributionProblemMapper rStatDistributionProblemMapper; @@ -48,22 +61,22 @@ public class RStatDistributionProblemServiceImpl extends MppServiceImpl deptIds = deptFeignClient.getDepSonIdtByDeptId(orgNo).getData(); + List deptIds = deptFeignClient.getDepSonIdtByDeptId (orgNo).getData ( ); /*问题个数*/ - QueryWrapper problemPOQueryWrapper = new QueryWrapper<> (); + QueryWrapper problemPOQueryWrapper = new QueryWrapper<> ( ); problemPOQueryWrapper.select ("problem_no"). - in ("org_no",deptIds); + in ("org_no", deptIds); List rStatDistributionProblemPOS = rStatDistributionProblemMapper.selectList (problemPOQueryWrapper); issueesAndOrderVO.setId (orgNo); - issueesAndOrderVO.setIssueesCount (rStatDistributionProblemPOS.size ()); + issueesAndOrderVO.setIssueesCount (rStatDistributionProblemPOS.size ( )); List problemNoList = rStatDistributionProblemPOS.stream ( ).map (RStatDistributionProblemPO::getProblemNo).collect (Collectors.toList ( )); /*已关联工单数量*/ - QueryWrapper workOrderDetailPOQueryWrapper = new QueryWrapper<> (); + QueryWrapper workOrderDetailPOQueryWrapper = new QueryWrapper<> ( ); workOrderDetailPOQueryWrapper.select ("1"). - in("problem_no",problemNoList). - in ("org_no",deptIds); + in ("problem_no", problemNoList). + in ("org_no", deptIds); Integer relatedOrderCount = rStatWorkOrderDetailMapper.selectCount (workOrderDetailPOQueryWrapper); issueesAndOrderVO.setRelatedOrderCount (relatedOrderCount); return issueesAndOrderVO; @@ -79,18 +92,209 @@ public class RStatDistributionProblemServiceImpl extends MppServiceImpl deptIds = deptFeignClient.getDepSonIdtByDeptId(orgNo).getData(); + OrderCountVO orderCountVO = new OrderCountVO ( ); + List deptIds = deptFeignClient.getDepSonIdtByDeptId (orgNo).getData ( ); /*工单数量*/ - QueryWrapper workOrderDetailPOQueryWrapper = new QueryWrapper<> (); + QueryWrapper workOrderDetailPOQueryWrapper = new QueryWrapper<> ( ); workOrderDetailPOQueryWrapper. - in ("org_no",deptIds); + in ("org_no", deptIds); List rStatWorkOrderDetailPOS = rStatWorkOrderDetailMapper.selectList (workOrderDetailPOQueryWrapper); orderCountVO.setId (orgNo); - orderCountVO.setOrderCount (rStatWorkOrderDetailPOS.size ()); + orderCountVO.setOrderCount (rStatWorkOrderDetailPOS.size ( )); /*已完成工单数量*/ - long count = rStatWorkOrderDetailPOS.stream ( ).filter (t -> Objects.equals (t.getWorkOrderStatus ( ), DicDataEnum.CLOSED.getCode ())).count ( ); - orderCountVO.setCompelteOrderCount (Integer.valueOf (count+"")); + long count = rStatWorkOrderDetailPOS.stream ( ).filter (t -> Objects.equals (t.getWorkOrderStatus ( ), DicDataEnum.CLOSED.getCode ( ))).count ( ); + orderCountVO.setCompelteOrderCount (Integer.valueOf (count + "")); return orderCountVO; } + + /** + * @param overLimitFlagDTOList + * @Description: 创建问题接口 + * @Param: [overLimitFlagDTOList] + * @return: java.lang.Boolean + * @Author: clam + * @Date: 2023/2/15 + */ + @Override + public Boolean createProblem(List overLimitFlagDTOList) { + List rStatDistributionProblemPOList = new ArrayList<> ( ); + DateTimeFormatter fmt = DateTimeFormatter.ofPattern("yyyyMMdd"); + PowerDistributionareaParam powerDistributionareaParam = new PowerDistributionareaParam(); + List data = pmsPowerDistributionareaClient.getPowerDistributionList (powerDistributionareaParam).getData ( ); + Map collect = data.stream ( ).collect (Collectors. + toMap (PowerDistributionarea::getId, + powerDistributionarea->powerDistributionarea)); + overLimitFlagDTOList.forEach (overLimitFlagDTO -> { + RStatDistributionProblemPO rStatDistributionProblemPO = new RStatDistributionProblemPO ( ); + rStatDistributionProblemPO.setProblemNo (createproblemNo(overLimitFlagDTO.getOverLimtType (),overLimitFlagDTO.getStartTime ().format(fmt))); + rStatDistributionProblemPO.setOrgNo (collect.get(overLimitFlagDTO.getLineId ()).getOrgId ()); + rStatDistributionProblemPO.setOrgName (collect.get(overLimitFlagDTO.getLineId ()).getOrgName ()); + rStatDistributionProblemPO.setProblemType (overLimitFlagDTO.getOverLimtType ()); + rStatDistributionProblemPO.setOccurTime (Date.from(overLimitFlagDTO.getStartTime ().atZone(ZoneId.systemDefault()).toInstant())); + rStatDistributionProblemPO.setLastTime (Date.from(overLimitFlagDTO.getEndTime ().atZone(ZoneId.systemDefault()).toInstant())); + rStatDistributionProblemPO.setCheckStatus (DicDataEnum.REVIEW.getCode ()); + rStatDistributionProblemPO.setDistributionId (overLimitFlagDTO.getLineId ( )); + rStatDistributionProblemPO.setDistributionName (collect.get(overLimitFlagDTO.getLineId ()).getName ()); + rStatDistributionProblemPO.setMeasurementPointId (overLimitFlagDTO.getLineId ( )); + rStatDistributionProblemPO.setProblemDescribe ("......"); + rStatDistributionProblemPOList.add (rStatDistributionProblemPO); + } + ); + boolean b = this.saveBatch (rStatDistributionProblemPOList); + return b; + } + + /** + * @param rStatProblemAndWorkOrderParam + * @Description: 查询问题接口 + * @Param: [rStatProblemAndWorkOrderParam] + * @return: com.baomidou.mybatisplus.core.metadata.IPage + * @Author: clam + * @Date: 2023/2/16 + */ + @Override + public IPage queryProblem(RStatProblemAndWorkOrderParam rStatProblemAndWorkOrderParam) { + IPage page = new Page<> (rStatProblemAndWorkOrderParam.getCurrentPage(), rStatProblemAndWorkOrderParam.getPageSize()); + IPage returnpage = new Page<> (rStatProblemAndWorkOrderParam.getCurrentPage(), rStatProblemAndWorkOrderParam.getPageSize()); + QueryWrapper queryWrapper = new QueryWrapper<> (); + queryWrapper.eq (StrUtil.isNotBlank(rStatProblemAndWorkOrderParam.getProblemType ()),"problem_type",rStatProblemAndWorkOrderParam.getProblemType ()). + eq (StrUtil.isNotBlank (rStatProblemAndWorkOrderParam.getCheckStatus ()),"check_status",rStatProblemAndWorkOrderParam.getCheckStatus ()). + eq (StrUtil.isNotBlank (rStatProblemAndWorkOrderParam.getOccurTime ()),"DATE_FORMAT( occur_time ,'%Y-%m-%d')",rStatProblemAndWorkOrderParam.getOccurTime ()). + like (StrUtil.isNotBlank (rStatProblemAndWorkOrderParam.getDistributionName ()), "distribution_name",rStatProblemAndWorkOrderParam.getDistributionName ()); + List records = rStatDistributionProblemMapper.selectPage (page, queryWrapper).getRecords ( ); + if(CollectionUtils.isEmpty (records)){ + return returnpage; + } + List list = new ArrayList<> (); + records.forEach (temp->{ + RStatDistributionProblemVO rStatDistributionProblemVO = new RStatDistributionProblemVO(); + BeanUtils.copyProperties (temp, rStatDistributionProblemVO); + list.add (rStatDistributionProblemVO); + }); + returnpage.setRecords (list); + + return returnpage; + } + + /** + * @param rStatDistributionProblemVO + * @Description: 审核处理(更新问题表,生成工单表) + * @Param: [rStatDistributionProblemVO] + * @return: java.lang.Boolean + * @Author: clam + * @Date: 2023/2/17 + */ + @Override + public Boolean checkProblem(RStatDistributionProblemVO rStatDistributionProblemVO) { + Boolean flag = true; + RStatDistributionProblemPO rStatDistributionProblemPO = new RStatDistributionProblemPO(); + BeanUtils.copyProperties (rStatDistributionProblemVO, rStatDistributionProblemPO); + flag = this.updateByMultiId (rStatDistributionProblemPO); + if(!flag){ + return flag; + } + /*生成工单表*/ + if(Objects.equals (DicDataEnum.GENERATE.getCode (),rStatDistributionProblemPO.getCheckResult ())){ + /*处理台区信息*/ + PowerDistributionareaParam powerDistributionareaParam = new PowerDistributionareaParam(); + + List data = pmsPowerDistributionareaClient.getPowerDistributionList (powerDistributionareaParam).getData ( ); + Map collect = data.stream ( ).collect (Collectors. + toMap (PowerDistributionarea::getId, + powerDistributionarea->powerDistributionarea)); + RStatWorkOrderDetailPO po = new RStatWorkOrderDetailPO(); + BeanUtils.copyProperties (rStatDistributionProblemVO, po); + po.setProblemNo (rStatDistributionProblemVO.getProblemNo ()); + po.setWorkOrderStatus (DicDataEnum.PEND_DISPATCH.getCode ()); + po.setWorkOrderType (DicDataEnum.RECT_ORDER.getCode ()); + po.setPrimaryBusinessType (DicDataEnum.TRANS_BUSINESS.getCode ()); + po.setTwoBusinessType (rStatDistributionProblemVO.getProblemType ()); + po.setPowerSupplyStation (collect.get (rStatDistributionProblemVO.getDistributionId ()).getPowerStationId ()); + po.setWorkOrderProcess (DicDataEnum.GENERATED.getCode ()); + int insert = rStatWorkOrderDetailMapper.insert (po); + if(!(insert==1)){ + flag=false; + } + } + + return flag; + } + + /** + * @param rStatProblemAndWorkOrderParam + * @Description: queryWorkOrder + * @Param: [rStatProblemAndWorkOrderParam] + * @return: com.baomidou.mybatisplus.core.metadata.IPage + * @Author: clam + * @Date: 2023/2/17 + */ + @Override + public IPage queryWorkOrder(RStatProblemAndWorkOrderParam rStatProblemAndWorkOrderParam) { + +// IPage page = new Page<> (rStatProblemAndWorkOrderParam.getCurrentPage(), rStatProblemAndWorkOrderParam.getPageSize()); + Page returnpage = new Page<> (rStatProblemAndWorkOrderParam.getCurrentPage(), rStatProblemAndWorkOrderParam.getPageSize()); +// QueryWrapper queryWrapper = new QueryWrapper<> (); +// queryWrapper.eq (StrUtil.isNotBlank(rStatProblemAndWorkOrderParam.getProblemType ()),"problem_type",rStatProblemAndWorkOrderParam.getProblemType ()). +// eq (StrUtil.isNotBlank (rStatProblemAndWorkOrderParam.getOccurTime ()),"DATE_FORMAT( occur_time ,'%Y-%m-%d')",rStatProblemAndWorkOrderParam.getOccurTime ()). +// eq (StrUtil.isNotBlank (rStatProblemAndWorkOrderParam.getWorkOrderStatus ()),"work_order_status",rStatProblemAndWorkOrderParam.getWorkOrderStatus ()). +// eq (StrUtil.isNotBlank (rStatProblemAndWorkOrderParam.getProblemNo ()), "problem_no",rStatProblemAndWorkOrderParam.getProblemNo ()); + returnpage = rStatWorkOrderDetailMapper.getPageVo (returnpage ,rStatProblemAndWorkOrderParam); + + +// List list = new ArrayList<> (); +// records.forEach (temp->{ +// RStatWorkOrderDetailVO rStatWorkOrderDetailVO = new RStatWorkOrderDetailVO(); +// BeanUtils.copyProperties (temp, rStatWorkOrderDetailVO); +// list.add (rStatWorkOrderDetailVO); +// }); +// returnpage.setRecords (list); + + return returnpage; + + } + + /** + * @param rStatWorkOrderDetailVO + * @Description: 更新工单进度 + * @Param: [rStatWorkOrderDetailVO] + * @return: java.lang.Boolean + * @Author: clam + * @Date: 2023/2/17 + */ + @Override + public Boolean updateWorkOrderStatus(RStatWorkOrderDetailVO rStatWorkOrderDetailVO) { + Boolean flag= true; + RStatWorkOrderDetailPO rStatWorkOrderDetailPO = new RStatWorkOrderDetailPO(); + BeanUtils.copyProperties (rStatWorkOrderDetailVO, rStatWorkOrderDetailPO); + int i = rStatWorkOrderDetailMapper.updateByMultiId (rStatWorkOrderDetailPO); + if(!(i==1)){ + flag=false; + } + return flag; + } + + /** + * @Description: 系统根据规则生成: + * 县公司首字母缩写+“-”+问题首字母缩写+问题上报日期+5位随机数 + * 例如:萧山公司2022年9月1日的谐波电压越限问题,编号为:XS-DY2022090200001 + * 修改需求:问题首字母缩写+问题上报日期+8位随机数 + * @Param: [OrgName, problemShortName, date] + * @return: java.lang.String + * @Author: clam + * @Date: 2023/2/15 + */ + public String createproblemNo(String problemType,String date){ + + /*生成8位随机数*/ + int i = (int) ((Math.random ( ) * 9 + 1) * 10000000); + String problemShortName = ""; + if(Objects.equals (problemType,DicDataEnum.VOLTAGE_LIMIT.getCode ())){ + problemShortName = "DY"; + }else if(Objects.equals (problemType,DicDataEnum.CURRENT_LIMIT.getCode ())){ + problemShortName = "DL"; + } + return problemShortName+date+i; + } + + }