diff --git a/pqs-common/common-influxdb/src/main/java/com/njcn/influxdb/utils/AssembleSqlUtil.java b/pqs-common/common-influxdb/src/main/java/com/njcn/influxdb/utils/AssembleSqlUtil.java index d49b13c66..935d7be0f 100644 --- a/pqs-common/common-influxdb/src/main/java/com/njcn/influxdb/utils/AssembleSqlUtil.java +++ b/pqs-common/common-influxdb/src/main/java/com/njcn/influxdb/utils/AssembleSqlUtil.java @@ -6,6 +6,7 @@ import cn.hutool.core.map.MapUtil; import cn.hutool.core.text.StrPool; import cn.hutool.core.util.StrUtil; import com.njcn.influxdb.param.InfluxDBSqlConstant; +import com.njcn.influxdb.param.InfluxDBTableConstant; import org.springframework.stereotype.Component; import java.util.ArrayList; @@ -143,7 +144,16 @@ public class AssembleSqlUtil { List ia = new ArrayList<>(); ia.add("1"); ia.add("2"); - System.out.println(assembleSqlUtil.select("data_a").where(map,orField,ia).groupBy(orField,null).orderBy("time","desc").over()); - System.out.println(assembleSqlUtil.selectField(Stream.of("a", "d", "c", "b").collect(Collectors.toList()), "test").over()); + System.out.println(assembleSqlUtil. + select(InfluxDBTableConstant.DAY_V) + .where(map,orField,ia) + .groupBy(orField,null) + .orderBy(InfluxDBTableConstant.TIME,InfluxDBSqlConstant.DESC) + .over() + ); + System.out.println(assembleSqlUtil. + selectField(Stream.of(InfluxDBTableConstant.DUE, InfluxDBTableConstant.REAL) + .collect(Collectors.toList()), InfluxDBTableConstant.DAY_V) + .over()); } } diff --git a/pqs-device/device-boot/pom.xml b/pqs-device/device-boot/pom.xml index 4bfab5e16..84f608761 100644 --- a/pqs-device/device-boot/pom.xml +++ b/pqs-device/device-boot/pom.xml @@ -25,11 +25,11 @@ ${project.version} - - com.njcn - pms-device-boot - ${project.version} - + + + + + com.njcn diff --git a/pqs-device/pq-device/pq-device-api/src/main/java/com/njcn/device/pq/api/SubstationFeignClient.java b/pqs-device/pq-device/pq-device-api/src/main/java/com/njcn/device/pq/api/SubstationFeignClient.java new file mode 100644 index 000000000..0742ead20 --- /dev/null +++ b/pqs-device/pq-device/pq-device-api/src/main/java/com/njcn/device/pq/api/SubstationFeignClient.java @@ -0,0 +1,30 @@ +package com.njcn.device.pq.api; + +import com.njcn.common.pojo.constant.ServerInfo; +import com.njcn.common.pojo.response.HttpResult; +import com.njcn.device.pq.api.fallback.SubstationFeignClientFallbackFactory; +import com.njcn.device.pq.pojo.dto.SubstationDTO; +import org.springframework.cloud.openfeign.FeignClient; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestParam; + +import java.util.List; + +/** + * @author hongawen + * @version 1.0.0 + * @date 2022年10月13日 19:54 + */ +@FeignClient(value = ServerInfo.DEVICE, path = "/substation", fallbackFactory = SubstationFeignClientFallbackFactory.class) +public interface SubstationFeignClient { + + + /** + * 根据变电站ID获取变电站信息 + * + * @param subId 变电站ID集合 + * @return 变电站信息 + */ + @PostMapping("getSubstationById") + HttpResult> getSubstationById(@RequestParam("subId") List subId); +} diff --git a/pqs-device/pq-device/pq-device-api/src/main/java/com/njcn/device/pq/api/fallback/SubstationFeignClientFallbackFactory.java b/pqs-device/pq-device/pq-device-api/src/main/java/com/njcn/device/pq/api/fallback/SubstationFeignClientFallbackFactory.java new file mode 100644 index 000000000..d09fbea7f --- /dev/null +++ b/pqs-device/pq-device/pq-device-api/src/main/java/com/njcn/device/pq/api/fallback/SubstationFeignClientFallbackFactory.java @@ -0,0 +1,41 @@ +package com.njcn.device.pq.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.pq.api.SubstationFeignClient; +import com.njcn.device.pq.pojo.dto.SubstationDTO; +import com.njcn.device.pq.pojo.po.Substation; +import com.njcn.device.pq.utils.DeviceEnumUtil; +import feign.hystrix.FallbackFactory; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Component; + +import java.util.List; + +/** + * @author hongawen + * @version 1.0.0 + * @date 2022年10月13日 19:55 + */ +@Slf4j +@Component +public class SubstationFeignClientFallbackFactory implements FallbackFactory { + @Override + public SubstationFeignClient create(Throwable throwable) { + //判断抛出异常是否为解码器抛出的业务异常 + Enum exceptionEnum = CommonResponseEnum.SERVICE_FALLBACK; + if (throwable.getCause() instanceof BusinessException) { + BusinessException businessException = (BusinessException) throwable.getCause(); + exceptionEnum = DeviceEnumUtil.getExceptionEnum(businessException.getResult()); + } + Enum finalExceptionEnum = exceptionEnum; + return new SubstationFeignClient(){ + @Override + public HttpResult> getSubstationById(List id) { + log.error("{}异常,降级处理,异常为:{}", "根据变电站ID获取变电站信息", throwable.toString()); + throw new BusinessException(finalExceptionEnum); + } + }; + } +} diff --git a/pqs-device/pq-device/pq-device-api/src/main/java/com/njcn/device/pq/pojo/dto/SubstationDTO.java b/pqs-device/pq-device/pq-device-api/src/main/java/com/njcn/device/pq/pojo/dto/SubstationDTO.java new file mode 100644 index 000000000..14b79b380 --- /dev/null +++ b/pqs-device/pq-device/pq-device-api/src/main/java/com/njcn/device/pq/pojo/dto/SubstationDTO.java @@ -0,0 +1,46 @@ +package com.njcn.device.pq.pojo.dto; + +import lombok.Data; + +import java.io.Serializable; +import java.math.BigDecimal; + +/** + * @author hongawen + * @version 1.0.0 + * @date 2022年10月13日 20:03 + */ +@Data +public class SubstationDTO implements Serializable { + + /** + * 索引 + */ + private String id; + + /** + * 名称 + */ + private String name; + + /** + * 排序 + */ + private Integer sort; + + /** + * 电压等级Id,字典表 + */ + private String scale; + + /** + * 经度 + */ + private BigDecimal lng; + + /** + * 纬度 + */ + private BigDecimal lat; + +} diff --git a/pqs-device/pq-device/pq-device-api/src/main/java/com/njcn/device/pq/pojo/vo/DeptLineCountVO.java b/pqs-device/pq-device/pq-device-api/src/main/java/com/njcn/device/pq/pojo/vo/DeptLineCountVO.java new file mode 100644 index 000000000..73c2a6756 --- /dev/null +++ b/pqs-device/pq-device/pq-device-api/src/main/java/com/njcn/device/pq/pojo/vo/DeptLineCountVO.java @@ -0,0 +1,35 @@ +package com.njcn.device.pq.pojo.vo; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.io.Serializable; + +/** + * Description: + * 接口文档访问地址:http://serverIP:port/swagger-ui.html + * Date: 2022/10/9 15:59【需求编号】 + * + * @author clam + * @version V1.0.0 + */ +@Data +@AllArgsConstructor +@NoArgsConstructor +@ApiModel(value = "DeptLineCountVO" ,description = "部门监测点统计信息") +public class DeptLineCountVO implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty("部门索引") + private String index; + + @ApiModelProperty("部门名称") + private String name; + + @ApiModelProperty("监测点数量") + private Integer number=0; +} diff --git a/pqs-device/pq-device/pq-device-api/src/main/java/com/njcn/device/pq/pojo/vo/ExceptionDeviceInfoVO.java b/pqs-device/pq-device/pq-device-api/src/main/java/com/njcn/device/pq/pojo/vo/ExceptionDeviceInfoVO.java new file mode 100644 index 000000000..7d8713c50 --- /dev/null +++ b/pqs-device/pq-device/pq-device-api/src/main/java/com/njcn/device/pq/pojo/vo/ExceptionDeviceInfoVO.java @@ -0,0 +1,63 @@ +package com.njcn.device.pq.pojo.vo; + +import com.fasterxml.jackson.annotation.JsonFormat; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.io.Serializable; +import java.time.LocalDateTime; + +/** + * Description:通讯异常设备 + * 接口文档访问地址:http://serverIP:port/swagger-ui.html + * Date: 2022/10/14 10:45【需求编号】 + * + * @author clam + * @version V1.0.0 + */ +@Data +@AllArgsConstructor +@NoArgsConstructor +@ApiModel(value = "ExceptionDeviceInfoVO" ,description = "通讯异常设备") +public class ExceptionDeviceInfoVO implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty(name ="subIndex",value = "变电站索引") + private String subIndex; + + + + @ApiModelProperty(name ="subName",value = "变电站名称") + private String subName; + + @ApiModelProperty("设备索引") + private String devIndex; + + + @ApiModelProperty("设备名称") + private String devName; + + + @ApiModelProperty("网络参数") + private String ip; + + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @ApiModelProperty("发生时间") + private LocalDateTime updateTime; + + @ApiModelProperty("警告类型id") + private String warningId; + + @ApiModelProperty("警告类型") + private String warningType; + + @ApiModelProperty("异常描述") + private String exceptionDescription; + + + +} diff --git a/pqs-device/pq-device/pq-device-boot/src/main/java/com/njcn/device/pq/controller/GeneralDeviceInfoController.java b/pqs-device/pq-device/pq-device-boot/src/main/java/com/njcn/device/pq/controller/GeneralDeviceInfoController.java index c043e5167..cfa6e1d8b 100644 --- a/pqs-device/pq-device/pq-device-boot/src/main/java/com/njcn/device/pq/controller/GeneralDeviceInfoController.java +++ b/pqs-device/pq-device/pq-device-boot/src/main/java/com/njcn/device/pq/controller/GeneralDeviceInfoController.java @@ -9,6 +9,7 @@ import com.njcn.common.utils.HttpResultUtil; import com.njcn.device.pq.pojo.bo.BaseLineInfo; import com.njcn.device.pq.pojo.dto.GeneralDeviceDTO; import com.njcn.device.pq.pojo.param.DeviceInfoParam; +import com.njcn.device.pq.pojo.vo.ExceptionDeviceInfoVO; import com.njcn.device.pq.service.TerminalBaseService; import com.njcn.device.pq.service.impl.GeneralDeviceService; import com.njcn.web.controller.BaseController; @@ -208,5 +209,24 @@ public class GeneralDeviceInfoController extends BaseController { } + /** + * 按部门分类获取通讯异常设备警告 + */ + @OperateInfo(info = LogEnum.BUSINESS_COMMON) + @PostMapping("/getExceptionDeviceInfoAsDept") + @ApiOperation("按部门分类获取通讯异常设备警告") + @ApiImplicitParams({ + @ApiImplicitParam(name = "deviceInfoParam", value = "查询终端条件", required = true) + }) + @Deprecated + public HttpResult> getExceptionDeviceInfoAsDept(@RequestBody @Validated DeviceInfoParam deviceInfoParam) { + String methodDescribe = getMethodDescribe("getExceptionDeviceInfoAsDept"); + List exceptionDeviceInfoAsDept = generalDeviceService.getExceptionDeviceInfoAsDept(deviceInfoParam); + if (CollectionUtil.isEmpty(exceptionDeviceInfoAsDept)) { + return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.NO_DATA, null, methodDescribe); + } else { + return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, exceptionDeviceInfoAsDept, methodDescribe); + } + } } diff --git a/pqs-device/pq-device/pq-device-boot/src/main/java/com/njcn/device/pq/controller/LineController.java b/pqs-device/pq-device/pq-device-boot/src/main/java/com/njcn/device/pq/controller/LineController.java index ffea1afce..e98234640 100644 --- a/pqs-device/pq-device/pq-device-boot/src/main/java/com/njcn/device/pq/controller/LineController.java +++ b/pqs-device/pq-device/pq-device-boot/src/main/java/com/njcn/device/pq/controller/LineController.java @@ -1,5 +1,6 @@ package com.njcn.device.pq.controller; +import cn.hutool.core.collection.CollectionUtil; import com.njcn.common.pojo.annotation.OperateInfo; import com.njcn.common.pojo.enums.common.LogEnum; import com.njcn.common.pojo.enums.response.CommonResponseEnum; @@ -8,7 +9,9 @@ import com.njcn.common.pojo.response.HttpResult; import com.njcn.common.utils.HttpResultUtil; import com.njcn.common.utils.LogUtil; import com.njcn.device.pq.enums.DeviceResponseEnum; +import com.njcn.device.pq.pojo.bo.BaseLineInfo; import com.njcn.device.pq.pojo.dto.*; +import com.njcn.device.pq.pojo.param.DeviceInfoParam; import com.njcn.device.pq.pojo.param.LineBaseQueryParam; import com.njcn.device.pq.pojo.po.Device; import com.njcn.device.pq.pojo.po.Line; @@ -19,6 +22,8 @@ import com.njcn.device.pq.mapper.DeviceMapper; import com.njcn.device.pq.mapper.LineDetailMapper; import com.njcn.device.pq.mapper.LineMapper; import com.njcn.device.pq.service.LineService; +import com.njcn.device.pq.service.impl.GeneralDeviceService; +import com.njcn.user.api.DeptFeignClient; import com.njcn.web.controller.BaseController; import io.swagger.annotations.*; import lombok.RequiredArgsConstructor; @@ -27,8 +32,11 @@ import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; import springfox.documentation.annotations.ApiIgnore; +import java.util.ArrayList; import java.util.List; import java.util.Objects; +import java.util.stream.Collectors; +import java.util.stream.Stream; /** * @author denghuajun @@ -44,12 +52,16 @@ public class LineController extends BaseController { private final LineService lineService; + private final GeneralDeviceService generalDeviceService; + private final DeviceMapper deviceMapper; private final LineMapper lineMapper; private final LineDetailMapper lineDetailMapper; + private final DeptFeignClient deptFeignClient; + @OperateInfo(info = LogEnum.BUSINESS_COMMON) @PostMapping("/getLineDetailData") @@ -345,4 +357,22 @@ public class LineController extends BaseController { + + @OperateInfo(info = LogEnum.BUSINESS_COMMON) + @PostMapping("/getDeptLineCount") + @ApiOperation("根据部门索引,查询出该部门的直接子部门关联的监测点数量") + @ApiImplicitParams({ + @ApiImplicitParam(name = "deviceInfoParam", value = "监测点查询条件", required = true) + }) + public HttpResult> getDeptLineCount(@RequestBody @Validated DeviceInfoParam deviceInfoParam) { + + + String methodDescribe = getMethodDescribe("getDeptLineCount"); + List deptLineCountVOS = new ArrayList<> (); + deptLineCountVOS = lineService.getDeptLineCount(deviceInfoParam); + + return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, deptLineCountVOS, methodDescribe); + + } + } diff --git a/pqs-device/pq-device/pq-device-boot/src/main/java/com/njcn/device/pq/controller/SubstationController.java b/pqs-device/pq-device/pq-device-boot/src/main/java/com/njcn/device/pq/controller/SubstationController.java new file mode 100644 index 000000000..088b070f3 --- /dev/null +++ b/pqs-device/pq-device/pq-device-boot/src/main/java/com/njcn/device/pq/controller/SubstationController.java @@ -0,0 +1,50 @@ +package com.njcn.device.pq.controller; + +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.exception.BusinessException; +import com.njcn.common.pojo.response.HttpResult; +import com.njcn.common.utils.HttpResultUtil; +import com.njcn.device.pq.pojo.dto.SubstationDTO; +import com.njcn.device.pq.pojo.param.AlarmStrategyParam; +import com.njcn.device.pq.pojo.vo.AlarmStrategyVO; +import com.njcn.device.pq.service.AlarmStrategyService; +import com.njcn.device.pq.service.ISubstationService; +import com.njcn.web.controller.BaseController; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiImplicitParam; +import io.swagger.annotations.ApiOperation; +import lombok.AllArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * @author hongawen + * @version 1.0.0 + * @date 2022年10月13日 19:54 + */ +@Validated +@Slf4j +@RestController +@RequestMapping("/substation") +@Api(tags = "变电站管理") +@AllArgsConstructor +public class SubstationController extends BaseController { + + private final ISubstationService substationService; + + @OperateInfo(info = LogEnum.BUSINESS_COMMON) + @ApiOperation("获取变电站详情") + @PostMapping("getSubstationById") + HttpResult> getSubstationById(@RequestParam("subId") List subId){ + String methodDescribe = getMethodDescribe("getSubstationById"); + List substationDTOList = substationService.getSubstationById(subId); + return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, substationDTOList, methodDescribe); + } + + +} diff --git a/pqs-device/pq-device/pq-device-boot/src/main/java/com/njcn/device/pq/mapper/SubstationMapper.java b/pqs-device/pq-device/pq-device-boot/src/main/java/com/njcn/device/pq/mapper/SubstationMapper.java index c5b4232b6..3d66dd0d4 100644 --- a/pqs-device/pq-device/pq-device-boot/src/main/java/com/njcn/device/pq/mapper/SubstationMapper.java +++ b/pqs-device/pq-device/pq-device-boot/src/main/java/com/njcn/device/pq/mapper/SubstationMapper.java @@ -2,6 +2,7 @@ package com.njcn.device.pq.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.njcn.device.pq.pojo.dto.SubstationDTO; import com.njcn.device.pq.pojo.po.Substation; import com.njcn.device.pq.pojo.vo.SubstationDetailVO; import org.apache.ibatis.annotations.Param; @@ -23,4 +24,12 @@ public interface SubstationMapper extends BaseMapper { * @return 结果 */ List getSubstationData(@Param("id") List id); + + /** + * 根据变电站ID获取变电站信息 + * + * @param subId 变电站ID + * @return 变电站信息 + */ + List getSubstationById(@Param("id")List subId); } diff --git a/pqs-device/pq-device/pq-device-boot/src/main/java/com/njcn/device/pq/mapper/mapping/LineMapper.xml b/pqs-device/pq-device/pq-device-boot/src/main/java/com/njcn/device/pq/mapper/mapping/LineMapper.xml index e8c64fc02..72aa2f1e9 100644 --- a/pqs-device/pq-device/pq-device-boot/src/main/java/com/njcn/device/pq/mapper/mapping/LineMapper.xml +++ b/pqs-device/pq-device/pq-device-boot/src/main/java/com/njcn/device/pq/mapper/mapping/LineMapper.xml @@ -51,7 +51,7 @@ @@ -184,19 +184,19 @@ pq_device t2 WHERE t1.id = t2.id - + AND t2.Dev_Model in #{item} - + AND t2.Run_Flag in #{item} - + AND t2.Dev_Data_Type in #{item} @@ -221,19 +221,19 @@ t1.id = t2.id and t1.pid = sub.id and sub.pid = gd.id - + AND t2.Dev_Model in #{item} - + AND t2.Run_Flag in #{item} - + AND t2.Dev_Data_Type in #{item} @@ -280,7 +280,7 @@ and t2.Power_Flag = #{deviceInfoParam.powerFlag} - + AND t2.Load_Type in #{item.id} @@ -303,25 +303,25 @@ pq_device t2 WHERE t1.id = t2.id - + AND t2.Dev_Model in #{item} - + AND t2.Run_Flag in #{item} - + AND t2.Dev_Data_Type in #{item} - + AND t2.manufacturer in #{item.id} @@ -347,7 +347,7 @@ #{item} - + AND t2.scale in #{item.id} @@ -529,7 +529,7 @@ #{item} - and (line.name like CONCAT('%', #{searchValue},'%') + and (line.name like CONCAT('%', #{searchValue},'%') or voltage.name like CONCAT('%', #{searchValue},'%') or device.name like CONCAT('%', #{searchValue},'%') or substation.name like CONCAT('%', #{searchValue},'%') @@ -800,80 +800,80 @@ pq_line_detail B, pq_device C WHERE - A1.`Level` = 6 AND A1.Id = B.Id AND - A1.Pid = A2.Id AND A2.Pid = A3.Id AND A3.Id = C.Id AND - C.Dev_Model = 1 AND C.Dev_Data_Type IN (1,2) AND C.Run_Flag = 0 + A1.`Level` = 6 AND A1.Id = B.Id AND + A1.Pid = A2.Id AND A2.Pid = A3.Id AND A3.Id = C.Id AND + C.Dev_Model = 1 AND C.Dev_Data_Type IN (1,2) AND C.Run_Flag = 0 + + diff --git a/pqs-device/pq-device/pq-device-boot/src/main/java/com/njcn/device/pq/service/ISubstationService.java b/pqs-device/pq-device/pq-device-boot/src/main/java/com/njcn/device/pq/service/ISubstationService.java new file mode 100644 index 000000000..a4f983a56 --- /dev/null +++ b/pqs-device/pq-device/pq-device-boot/src/main/java/com/njcn/device/pq/service/ISubstationService.java @@ -0,0 +1,23 @@ +package com.njcn.device.pq.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.njcn.device.pq.pojo.dto.SubstationDTO; +import com.njcn.device.pq.pojo.po.Substation; + +import java.util.List; + +/** + * @author hongawen + * @version 1.0.0 + * @date 2022年10月13日 20:10 + */ +public interface ISubstationService extends IService { + + /** + * 根据变电站ID获取变电站信息 + * + * @param subId 变电站ID + * @return 变电站信息 + */ + List getSubstationById(List subId); +} diff --git a/pqs-device/pq-device/pq-device-boot/src/main/java/com/njcn/device/pq/service/LineService.java b/pqs-device/pq-device/pq-device-boot/src/main/java/com/njcn/device/pq/service/LineService.java index c3de8df4e..0a68d31b5 100644 --- a/pqs-device/pq-device/pq-device-boot/src/main/java/com/njcn/device/pq/service/LineService.java +++ b/pqs-device/pq-device/pq-device-boot/src/main/java/com/njcn/device/pq/service/LineService.java @@ -147,5 +147,12 @@ public interface LineService { * @return 结果 */ DeviceAbnormalVO getComunicateStatics(DeviceInfoParam.BusinessParam deviceInfoParam); - + /** + * @Description: 通过部门索引查询其下监测点数 + * @Param: [deviceInfoParam] 监测点查询条件 + * @return: java.util.List + * @Author: clam + * @Date: 2022/10/10 + */ + List getDeptLineCount(DeviceInfoParam deviceInfoParam); } diff --git a/pqs-device/pq-device/pq-device-boot/src/main/java/com/njcn/device/pq/service/impl/GeneralDeviceService.java b/pqs-device/pq-device/pq-device-boot/src/main/java/com/njcn/device/pq/service/impl/GeneralDeviceService.java index bc1f4bb90..e57888032 100644 --- a/pqs-device/pq-device/pq-device-boot/src/main/java/com/njcn/device/pq/service/impl/GeneralDeviceService.java +++ b/pqs-device/pq-device/pq-device-boot/src/main/java/com/njcn/device/pq/service/impl/GeneralDeviceService.java @@ -2,19 +2,26 @@ package com.njcn.device.pq.service.impl; import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.collection.CollectionUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.njcn.common.pojo.dto.SimpleDTO; import com.njcn.common.pojo.enums.common.ServerEnum; import com.njcn.common.utils.EnumUtils; import com.njcn.device.pq.enums.LineBaseEnum; +import com.njcn.device.pq.mapper.DeviceMapper; +import com.njcn.device.pq.mapper.LineMapper; +import com.njcn.device.pq.pojo.bo.BaseLineInfo; import com.njcn.device.pq.pojo.bo.DeviceType; import com.njcn.device.pq.pojo.dto.GeneralDeviceDTO; import com.njcn.device.pq.pojo.param.DeviceInfoParam; import com.njcn.device.pq.pojo.po.DeptLine; +import com.njcn.device.pq.pojo.po.Device; import com.njcn.device.pq.pojo.po.Line; +import com.njcn.device.pq.pojo.vo.ExceptionDeviceInfoVO; import com.njcn.device.pq.service.DeptLineService; import com.njcn.device.pq.service.TerminalBaseService; import com.njcn.redis.utils.RedisUtil; import com.njcn.system.api.DicDataFeignClient; +import com.njcn.system.enums.DicDataEnum; import com.njcn.system.enums.DicDataTypeEnum; import com.njcn.system.pojo.enums.StatisticsEnum; import com.njcn.system.pojo.po.DictData; @@ -25,14 +32,13 @@ import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Component; -import java.util.ArrayList; -import java.util.Collections; -import java.util.List; +import java.util.*; import java.util.stream.Collectors; +import java.util.stream.Stream; /** * 终端信息处理器,根据需求返回笼统的台账信息。 - * 包括:类别名称、类别索引、监测点索引集合、终端索引集合、变电站索引集合、供电公司索引集合。 +ii * 包括:类别名称、类别索引、监测点索引集合、终端索引集合、变电站索引集bb合、供电公司索引集合。 * PS:若后期需要比如:省会、项目时再动态添加。 * * @author hongawen @@ -54,6 +60,10 @@ public class GeneralDeviceService { private final RedisUtil redisUtil; + private final DeviceMapper deviceMapper; + + private final LineMapper lineMapper; + /** * 根据部门id、远程服务名、远程客户端类型,以部门的方式 @@ -62,6 +72,7 @@ public class GeneralDeviceService { * @param devModel 终端模型 * @return 部门分类终端信息 */ + @Deprecated public List getDeviceInfoAsDept(DeviceInfoParam deviceInfoParam, List runFlag, List devModel) { List deviceInfos = new ArrayList<>(); List deptType = WebUtil.filterDeptType(); @@ -547,5 +558,73 @@ public class GeneralDeviceService { return generalDeviceDTO; } + /** + * @Description: 按部门分类获取通讯异常设备警告 + * @Param: [deviceInfoParam] + * @return: java.util.List + * @Author: clam + * @Date: 2022/10/14 + */ + public List getExceptionDeviceInfoAsDept(DeviceInfoParam deviceInfoParam) { + List exceptionDeviceInfoVOS = new ArrayList<> (); + List deviceInfoAsSubstation = getDeviceInfoAsDept (deviceInfoParam,null, Stream.of (1).collect (Collectors.toList ( ))); + /*获取所有设备*/ + final List deviceIndexes = deviceInfoAsSubstation.stream ( ).map (GeneralDeviceDTO::getDeviceIndexes).flatMap (Collection::stream).distinct ( ).collect (Collectors.toList ( )); + + QueryWrapper wrapper = new QueryWrapper<> (); + + + + wrapper.in ("Id",deviceIndexes). + eq ("Com_Flag", 0). + eq ("Dev_Model", 1). + eq ("Dev_Data_Type", 2). + eq ("Run_Flag", 0); + + List deviceList = deviceMapper.selectList (wrapper); + + List filterDevIndexs = deviceList.stream ( ).map (Device::getId).collect (Collectors.toList ( )); + + QueryWrapper lineQueryWrapper = new QueryWrapper<> (); + lineQueryWrapper.in ("Id",filterDevIndexs). + eq ("Level", 4); + /*终端*/ + List tempDevices = lineMapper.selectList (lineQueryWrapper); + + + List subIndexList = tempDevices.stream ( ).map (Line::getPid).distinct ().collect (Collectors.toList ( )); + /*变电站*/ + QueryWrapper substationQueryWrapper = new QueryWrapper<> (); + substationQueryWrapper.in ("Id", subIndexList). + eq ("Level", 3); + List tempSubstations = lineMapper.selectList (substationQueryWrapper); + /* todo 设置警告类型*/ + DictData data = dicDataFeignClient.getDicDataByCode (DicDataEnum.COMM_ERR.getCode ( )).getData ( ); + deviceList.forEach (device -> { + + ExceptionDeviceInfoVO exceptionDeviceInfoVO = new ExceptionDeviceInfoVO(); + + exceptionDeviceInfoVO.setIp (device.getIp ()); + exceptionDeviceInfoVO.setUpdateTime (device.getUpdateTime ()); + exceptionDeviceInfoVO.setDevIndex (device.getId ()); + + Line tempdevice = tempDevices.stream ( ).filter (temp -> Objects.equals (temp.getId ( ), device.getId ( ))).collect (Collectors.toList ( )).get (0); + + exceptionDeviceInfoVO.setDevName (tempdevice.getName ()); + exceptionDeviceInfoVO.setSubIndex (tempdevice.getPid ()); + Line substation = tempSubstations.stream ( ).filter (temp -> Objects.equals (temp.getId ( ), tempdevice.getPid ( ))).collect (Collectors.toList ( )).get (0); + exceptionDeviceInfoVO.setSubName (substation.getName () ); + + + exceptionDeviceInfoVO.setWarningId (data.getId ()); + exceptionDeviceInfoVO.setWarningType (data.getName ()); + String exceptionDescription = String.format("%s变电站,%s终端于%s通讯中断",substation.getName (),tempdevice.getName (),device.getUpdateTime ()); + exceptionDeviceInfoVO.setExceptionDescription (exceptionDescription); + exceptionDeviceInfoVOS.add (exceptionDeviceInfoVO); + }); + + + return exceptionDeviceInfoVOS; + } } diff --git a/pqs-device/pq-device/pq-device-boot/src/main/java/com/njcn/device/pq/service/impl/LineServiceImpl.java b/pqs-device/pq-device/pq-device-boot/src/main/java/com/njcn/device/pq/service/impl/LineServiceImpl.java index 2f40f0077..e1bacba3b 100644 --- a/pqs-device/pq-device/pq-device-boot/src/main/java/com/njcn/device/pq/service/impl/LineServiceImpl.java +++ b/pqs-device/pq-device/pq-device-boot/src/main/java/com/njcn/device/pq/service/impl/LineServiceImpl.java @@ -22,15 +22,20 @@ import com.njcn.device.pq.pojo.param.DeviceInfoParam; import com.njcn.device.pq.pojo.po.*; import com.njcn.device.pq.pojo.vo.*; import com.njcn.device.pq.mapper.*; +import com.njcn.device.pq.service.DeptLineService; import com.njcn.device.pq.service.LineService; +import com.njcn.device.pq.service.TerminalBaseService; import com.njcn.device.pq.utils.PublicDateUtil; import com.njcn.influxdb.param.InfluxDBPublicParam; import com.njcn.influxdb.utils.InfluxDbUtils; import com.njcn.system.api.AreaFeignClient; import com.njcn.system.api.DicDataFeignClient; +import com.njcn.user.api.DeptFeignClient; +import com.njcn.user.pojo.dto.DeptDTO; import com.njcn.web.pojo.vo.LineDataVO; import com.njcn.web.utils.GeneralUtil; import com.njcn.web.utils.RequestUtil; +import com.njcn.web.utils.WebUtil; import lombok.RequiredArgsConstructor; import lombok.SneakyThrows; import lombok.extern.slf4j.Slf4j; @@ -78,6 +83,13 @@ public class LineServiceImpl extends ServiceImpl implements Li private final InfluxDbUtils influxDbUtils; + private final DeptFeignClient deptFeignClient; + + private final DeptLineService deptLineService; + + private final TerminalBaseService terminalBaseService; + + @Override public LineDetailDataVO getLineDetailData(String id) { @@ -730,6 +742,40 @@ public class LineServiceImpl extends ServiceImpl implements Li return deviceAbnormalVO; } + /** + * @Description: 通过部门索引查询其下监测点数 + * @Param: [deviceInfoParam] 监测点查询条件 + * @return: java.util.List + * @Author: clam + * @Date: 2022/10/10 + */ + @Override + public List getDeptLineCount(DeviceInfoParam deviceInfoParam) { + List deptLineCountVOList = new ArrayList<> (); + //获取所有监测点 + List generalDeviceDTOList = generalDeviceService.getDeviceInfoAsDept(deviceInfoParam, null, Stream.of(1).collect(Collectors.toList())); + for (GeneralDeviceDTO generalDeviceDTO : generalDeviceDTOList) { + //根据部门id去获取省份信息 + DeptLineCountVO deptLineCountVO = new DeptLineCountVO(); + deptLineCountVO.setIndex (generalDeviceDTO.getIndex ()); + deptLineCountVO.setName(generalDeviceDTO.getName()); + deptLineCountVO.setNumber (generalDeviceDTO.getLineIndexes().size()); + deptLineCountVOList.add(deptLineCountVO); + } + +/* Map collect = deptLineCountVOList.stream ( ).collect (Collectors.groupingBy (DeptLineCountVO::getName, Collectors.summingInt (DeptLineCountVO::getNumber))); + List result = new ArrayList(); + + for (Map.Entry entry : collect.entrySet()) { + DeptLineCountVO deptLineCountVO = new DeptLineCountVO(); + deptLineCountVO.setName (entry.getKey()); + deptLineCountVO.setNumber (entry.getValue()); + result.add(deptLineCountVO); + }*/ + deptLineCountVOList = deptLineCountVOList.stream ().sorted (Comparator.comparing (DeptLineCountVO::getNumber,Comparator.reverseOrder())).collect(Collectors.toList()); + return deptLineCountVOList; + } + /** * 根据用户选择的时间区间返回月份日期 */ diff --git a/pqs-device/pq-device/pq-device-boot/src/main/java/com/njcn/device/pq/service/impl/SubstationServiceImpl.java b/pqs-device/pq-device/pq-device-boot/src/main/java/com/njcn/device/pq/service/impl/SubstationServiceImpl.java new file mode 100644 index 000000000..bca8479eb --- /dev/null +++ b/pqs-device/pq-device/pq-device-boot/src/main/java/com/njcn/device/pq/service/impl/SubstationServiceImpl.java @@ -0,0 +1,24 @@ +package com.njcn.device.pq.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.njcn.device.pq.mapper.SubstationMapper; +import com.njcn.device.pq.pojo.dto.SubstationDTO; +import com.njcn.device.pq.pojo.po.Substation; +import com.njcn.device.pq.service.ISubstationService; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + * @author hongawen + * @version 1.0.0 + * @date 2022年10月13日 20:11 + */ +@Service +public class SubstationServiceImpl extends ServiceImpl implements ISubstationService { + + @Override + public List getSubstationById(List subId) { + return this.baseMapper.getSubstationById(subId); + } +} diff --git a/pqs-event/event-api/src/main/java/com/njcn/event/pojo/param/UniversalFrontEndParam.java b/pqs-event/event-api/src/main/java/com/njcn/event/pojo/param/UniversalFrontEndParam.java new file mode 100644 index 000000000..c50f88778 --- /dev/null +++ b/pqs-event/event-api/src/main/java/com/njcn/event/pojo/param/UniversalFrontEndParam.java @@ -0,0 +1,55 @@ +package com.njcn.event.pojo.param; + +import com.njcn.common.pojo.param.StatisticsBizBaseParam; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.io.Serializable; +import java.util.List; + +/** + * 拓展前端参数 + * + * @author yzh + * @date 2022/10/8 + */ + +@Data +@EqualsAndHashCode(callSuper = true) +public class UniversalFrontEndParam extends StatisticsBizBaseParam implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 电压等级 + */ + @ApiModelProperty(name = "voltageLevel", value = "电压等级", required = true) + private List voltageLevel; + + /** + * 监测点名称 + */ + @ApiModelProperty(name = "measurementPointId", value = "监测点名称") + private String measurementPointId; + + /** + * 暂态指标类型 + */ + @ApiModelProperty(name = "typeOfTransientIndicators", value = "暂态指标类型") + private String typeOfTransientIndicators; + + /** + * 监测点类别 + */ + @ApiModelProperty(name = "measurementPointCategory", value = "监测点类别") + private String measurementPointCategory; + + /** + * 变电站名称 + */ + @ApiModelProperty(name = "subName", value = "变电站名称") + private String subName; + + +} diff --git a/pqs-event/event-api/src/main/java/com/njcn/event/pojo/po/PmsMonitorPO.java b/pqs-event/event-api/src/main/java/com/njcn/event/pojo/po/PmsMonitorPO.java new file mode 100644 index 000000000..4076eeaa3 --- /dev/null +++ b/pqs-event/event-api/src/main/java/com/njcn/event/pojo/po/PmsMonitorPO.java @@ -0,0 +1,164 @@ +package com.njcn.event.pojo.po; + +import lombok.Data; + +import java.util.Date; +import java.io.Serializable; + +/** + * 监测点(PmsMonitor)实体类 + * + * @author yzh + * @since 2022-10-17 20:19:26 + */ + +@Data +public class PmsMonitorPO implements Serializable { + private static final long serialVersionUID = 910688608662493948L; + /** + * 监测点ID + */ + private String id; + /** + * 监测点名称 + */ + private String name; + /** + * 组织机构名称 + */ + private String orgName; + /** + * 组织机构ID(外键) + */ + private String orgId; + /** + * 运维单位名称 + */ + private String operationName; + /** + * 运维单位ID(外键) + */ + private String operationId; + /** + * 变电站名称 + */ + private String powerrName; + /** + * 电站ID(外键) + */ + private String powerrId; + /** + * 母线名称 + */ + private String generatrixName; + /** + * 母线ID(外键) + */ + private String generatrixId; + /** + * 监测线路名称 + */ + private String lineName; + /** + * 监测线路ID + */ + private String lineId; + /** + * 电压等级(字典) + */ + private String voltageLevel; + /** + * 监测点状态(字典) + */ + private String monitorState; + /** + * 监测点类型 + */ + private String monitorType; + /** + * 最小短路容量 + */ + private Double minShortCircuitCapacity; + /** + * 供电设备容量 + */ + private Double powerSupplyEqCapacity; + /** + * 用户协议容量 + */ + private Double userAgreementCapacity; + /** + * 电压偏差限值(上) + */ + private Double voltageDeviationUpperLimit; + /** + * 电压偏差限值(下) + */ + private Double voltageDeviationLowerLimit; + /** + * 电压互感器类型(字典) + */ + private String potentialTransFormerType; + /** + * 中性点接地方式(字典) + */ + private String neutralGroundingMode; + /** + * 是否用户专线(字典) + */ + private String isSpecialSupplyElectricity; + /** + * 监测点标签 + */ + private String monitorTag; + /** + * 监测对象类型(字典) + */ + private String monitorObjectType; + /** + * 监测对象编号 + */ + private String monitorObjectId; + /** + * 监测对象名称 + */ + private String monitorObjectName; + /** + * 统计间隔 + */ + private Integer statisticalInterval; + /** + * 关联的监测终端编号(外键) + */ + private String terminalId; + /** + * 监测终端接线方式(字典) + */ + private String terminalWiringMethod; + /** + * 是否是上送国网监测点,0-否 1-是 + */ + private Integer isUpToGrid; + /** + * 数据状态:0-删除;1-正常; + */ + private Integer status; + /** + * 创建用户 + */ + private String createBy; + /** + * 创建时间 + */ + private Date createTime; + /** + * 更新用户 + */ + private String updateBy; + /** + * 更新时间 + */ + private Date updateTime; + +} + diff --git a/pqs-event/event-api/src/main/java/com/njcn/event/pojo/po/RStatBusbarHarmonicPO.java b/pqs-event/event-api/src/main/java/com/njcn/event/pojo/po/RStatBusbarHarmonicPO.java new file mode 100644 index 000000000..84c33c8f6 --- /dev/null +++ b/pqs-event/event-api/src/main/java/com/njcn/event/pojo/po/RStatBusbarHarmonicPO.java @@ -0,0 +1,92 @@ +package com.njcn.event.pojo.po; + +import lombok.Data; + +import java.util.Date; +import java.io.Serializable; + +/** + * (RStatBusbarHarmonicY)实体类 + * + * @author yzh + * @since 2022-10-12 18:38:16 + */ +@Data +public class RStatBusbarHarmonicPO implements Serializable { + private static final long serialVersionUID = 398744755685851294L; + /** + * 母线ID + */ + private String busbarId; + /** + * 生成数据的时间,每年统计一次 + */ + private Date dataDate; + /** + * 电压有效值最大 + */ + private Double vEffectiveMax; + /** + * 电压有效值最小 + */ + private Double vEffectiveMin; + /** + * 电压有效值平均 + */ + private Double vEffectiveAvg; + /** + * 电压有效值95概率大值 + */ + private Double vEffective95; + /** + * 电压总谐波畸变率最大 + */ + private Double vThdMax; + /** + * 电压总谐波畸变率最小 + */ + private Double vThdMin; + /** + * 电压总谐波畸变率平均 + */ + private Double vThdAvg; + /** + * 电压总谐波畸变率95概率大值 + */ + private Double vThd95; + /** + * 三相电压不平衡最大 + */ + private Double unbalanceMax; + /** + * 三相电压不平衡最小 + */ + private Double unbalanceMin; + /** + * 三相电压不平衡平均 + */ + private Double unbalanceAvg; + /** + * 三相电压不平衡95概率大值 + */ + private Double unbalance95; + /** + * 闪变最大 + */ + private Double flickerMax; + /** + * 闪变最小 + */ + private Double flickerMin; + /** + * 闪变平均 + */ + private Double flickerAvg; + /** + * 闪变95概率大值 + */ + private Double flicker95; + + +} + diff --git a/pqs-event/event-api/src/main/java/com/njcn/event/pojo/po/RStatEventOrgPO.java b/pqs-event/event-api/src/main/java/com/njcn/event/pojo/po/RStatEventOrgPO.java new file mode 100644 index 000000000..cad4589ab --- /dev/null +++ b/pqs-event/event-api/src/main/java/com/njcn/event/pojo/po/RStatEventOrgPO.java @@ -0,0 +1,82 @@ +package com.njcn.event.pojo.po; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.util.Date; + +/** + * 监测点暂态指标数据统计表(RStatEventOrg)实体类 + * + * @author yzh + * @since 2022-10-12 18:15:26 + */ + +@Data +@ApiModel("监测点暂态指标数据统计表") +public class RStatEventOrgPO implements Serializable { + private static final long serialVersionUID = -15971491825708754L; + /** + * 单位ID + */ + @ApiModelProperty(name = "orgNo",value = "单位ID") + private String orgNo; + + /** + * 生成数据的时间,每年统计一次 + */ + @ApiModelProperty(name = "dataDate",value = "生成数据的时间,每年统计一次") + private Date dataDate; + + /** + * 稳态指标类型Id,字典表ID + */ + @ApiModelProperty(name = "eventType",value = "稳态指标类型Id,字典表ID") + private String eventType; + + /** + * 日均发生暂态监测点数(根据 发生暂态监测点数 取平均值) + */ + @ApiModelProperty(name = "eventMeasurementAverage",value = "日均发生暂态监测点数(根据 发生暂态监测点数 取平均值)") + private Integer eventMeasurementAverage; + + /** + * 累计发生暂态监测点数(监测点暂态指标超标明细日表 + */ + @ApiModelProperty(name = "eventMeasurementAccrued",value = "累计发生暂态监测点数(监测点暂态指标超标明细日表)") + private Integer eventMeasurementAccrued; + + /** + * 暂态指标发生频次(日表的暂态指标发生次数之和/日表的发生暂态监测点数之和) + */ + @ApiModelProperty(name = "eventFreq",value = "暂态指标发生频次(日表的暂态指标发生次数之和/日表的发生暂态监测点数之和)") + private Double eventFreq; + + /** + * 暂态指标发生次数(日表的暂态指标发生次数之和) + */ + @ApiModelProperty(name = "eventCount",value = "暂态指标发生次数(日表的暂态指标发生次数之和)") + private Integer eventCount; + + /** + * 日均发生暂态监测点数占比(根据 日均发生暂态监测点数占比 取平均值) + */ + @ApiModelProperty(name = "eventMeasurementRatioAverage",value = "日均发生暂态监测点数占比(根据 日均发生暂态监测点数占比 取平均值)") + private Double eventMeasurementRatioAverage; + + /** + * 累计发生暂态监测点数占比(此表的累计发生暂态监测点数/区域统计表中的区域分类统计月表中的发生暂态的监测点数) + */ + @ApiModelProperty(name = "eventMeasurementRatioAccrued",value = "累计发生暂态监测点数占比(此表的累计发生暂态监测点数/区域统计表中的区域分类统计月表中的发生暂态的监测点数)") + private Double eventMeasurementRatioAccrued; + + /** + * 数据类型,字典表(01:主网测点 02:配网测点) + */ + @ApiModelProperty(name = "dataType",value = "数据类型,字典表(01:主网测点 02:配网测点)") + private String dataType; + +} + diff --git a/pqs-event/event-api/src/main/java/com/njcn/event/pojo/po/RStatOrgPO.java b/pqs-event/event-api/src/main/java/com/njcn/event/pojo/po/RStatOrgPO.java new file mode 100644 index 000000000..bbdfbadbb --- /dev/null +++ b/pqs-event/event-api/src/main/java/com/njcn/event/pojo/po/RStatOrgPO.java @@ -0,0 +1,104 @@ +package com.njcn.event.pojo.po; + +import lombok.Data; + +import java.util.Date; +import java.io.Serializable; + +/** + * 区域分类统计年表(RStatOrgY)实体类 + * + * @author yzh + * @since 2022-10-12 18:37:24 + */ +@Data +public class RStatOrgPO implements Serializable { + private static final long serialVersionUID = -49993470994002009L; + /** + * 单位ID + */ + private String orgNo; + /** + * 生成数据的时间,每年统计一次 + */ + private Date dataDate; + /** + * 监测点类别ID、监测对象类型ID + */ + private String measurementTypeClass; + /** + * 总监测点数 + */ + private Integer allCount; + /** + * 日均有效接入监测点数 + */ + private Integer effectiveMeasurementAverage; + /** + * 累计有效接入监测点数 + */ + private Integer effectiveMeasurementAccrued; + /** + * 日均稳态超标监测点数 + */ + private Integer overLimitMeasurementAverage; + /** + * 累计稳态超标监测点数 + */ + private Integer overLimitMeasurementAccrued; + /** + * 日均稳态超标监测点数占比 + */ + private Integer harmonicMeasurementRatioAverage; + /** + * 稳态指标平均超标天数 + */ + private Double averageOverDay; + /** + * 频率偏差合格率 + */ + private Double freqPassRate; + /** + * 电压偏差合格率 + */ + private Double vDevPassRate; + /** + * 闪变合格率 + */ + private Double flickerPassRate; + /** + * 日均监测到暂态指标的监测点数 + */ + private Integer eventMeasurementAverage; + /** + * 累计监测到暂态指标的监测点数 + */ + private Integer eventMeasurementAccrued; + /** + * 日均暂态超标监测点数占比 + */ + private Integer eventMeasurementRatioAverage; + /** + * 暂态指标发生频次 + */ + private Double eventFreq; + /** + * 暂态指标发生次数 + */ + private Integer eventCount; + /** + * 应设点数 + */ + private Integer shouldCount; + /** + * 告警监测点数 + */ + private Integer warnCount; + /** + * 数据类型,字典表(01:主网测点 02:配网测点) + */ + private String dataType; + + +} + diff --git a/pqs-event/event-api/src/main/java/com/njcn/event/pojo/po/RStatSubstationPO.java b/pqs-event/event-api/src/main/java/com/njcn/event/pojo/po/RStatSubstationPO.java new file mode 100644 index 000000000..0eebdbfda --- /dev/null +++ b/pqs-event/event-api/src/main/java/com/njcn/event/pojo/po/RStatSubstationPO.java @@ -0,0 +1,103 @@ +package com.njcn.event.pojo.po; + +import lombok.Data; + +import java.util.Date; +import java.io.Serializable; + +/** + * (RStatSubstationY)实体类 + * + * @author yzh + * @since 2022-10-12 18:39:03 + */ +@Data +public class RStatSubstationPO implements Serializable { + private static final long serialVersionUID = -98896978437277100L; + /** + * 生成数据的时间,每年统计一次 + */ + private Date dataDate; + /** + * 变电站id + */ + private Integer substationId; + /** + * 日均有效接入监测点数 + */ + private Integer effectiveMeasurementAverage; + /** + * 累计有效接入监测点数 + */ + private Integer effectiveMeasurementAccrued; + /** + * 稳态平均超标天数 + */ + private Double harmonicOverDay; + /** + * 频率偏差平均超标天数 + */ + private Double freqAverageOverDay; + /** + * 电压偏差平均超标天数 + */ + private Double vDevAverageOverDay; + /** + * 谐波电压平均超标天数 + */ + private Double vAverageOverDay; + /** + * 谐波电流平均超标天数 + */ + private Double iAverageOverDay; + /** + * 三相电压不平衡平均超标天数 + */ + private Double unbalanceAverageOverDay; + /** + * 负序电流平均超标天数 + */ + private Double iNegAverageOverDay; + /** + * 闪变平均超标天数 + */ + private Double flickerAverageOverDay; + /** + * 间谐波电压平均超标天数 + */ + private Double inuharmAverageOverDay; + /** + * 暂态指标发生次数 + */ + private Integer eventCount; + /** + * 暂态指标发生频次 + */ + private Double eventFreq; + /** + * 电压暂降发生次数 + */ + private Integer sagCount; + /** + * 电压暂降发生频次 + */ + private Double sagFreq; + /** + * 电压暂升发生次数 + */ + private Integer swellCount; + /** + * 电压暂升发生频次 + */ + private Double swellFreq; + /** + * 短时中断发生次数 + */ + private Integer interruptCount; + /** + * 短时中断发生频次 + */ + private Double interruptFreq; + +} + diff --git a/pqs-event/event-api/src/main/java/com/njcn/event/pojo/po/RmpEventDetailPO.java b/pqs-event/event-api/src/main/java/com/njcn/event/pojo/po/RmpEventDetailPO.java new file mode 100644 index 000000000..2e145ffc3 --- /dev/null +++ b/pqs-event/event-api/src/main/java/com/njcn/event/pojo/po/RmpEventDetailPO.java @@ -0,0 +1,66 @@ +package com.njcn.device.pms.pojo.po; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + +/** + * (RMpEventDetail)实体类 + * + * @author yzh + * @since 2022-10-12 18:34:55 + */ +@Data +public class RmpEventDetailPO implements Serializable { + private static final long serialVersionUID = 717547299960041571L; + /** + * 暂时事件ID + */ + @ApiModelProperty(name = "eventId",value = "暂时事件ID") + private String eventId; + /** + * 监测点ID + */ + @ApiModelProperty(name = "measurementPointId",value = "监测点ID") + private String measurementPointId; + /** + * 事件类型 + */ + @ApiModelProperty(name = "eventType",value = "事件类型") + private String eventType; + /** + * 开始时间 + */ + @ApiModelProperty(name = "startTime",value = "开始时间") + private Long startTime; + /** + * 持续时间 + */ + @ApiModelProperty(name = "duration",value = "持续时间") + private Double duration; + /** + * 特征幅值 + */ + @ApiModelProperty(name = "featureAmplitude",value = "特征幅值") + private Double featureAmplitude; + /** + * 相别 + */ + @ApiModelProperty(name = "phase",value = "相别") + private String phase; + + /** + * 事件描述 + */ + @ApiModelProperty(name = "eventDescribe",value = "事件描述") + private String eventDescribe; + + /** + * 波形路径 + */ + @ApiModelProperty(name = "wavePath",value = "波形路径") + private String wavePath; + +} + diff --git a/pqs-event/event-api/src/main/java/com/njcn/event/pojo/vo/RStatBusbarHarmonicVO.java b/pqs-event/event-api/src/main/java/com/njcn/event/pojo/vo/RStatBusbarHarmonicVO.java new file mode 100644 index 000000000..de9414d09 --- /dev/null +++ b/pqs-event/event-api/src/main/java/com/njcn/event/pojo/vo/RStatBusbarHarmonicVO.java @@ -0,0 +1,186 @@ +package com.njcn.event.pojo.vo; + +import com.baomidou.mybatisplus.annotation.TableField; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + +/** + * 变电站母线电压指标年报返回前端实体类 + * + * @author yzh + * @date 2022/10/8 + */ + +@Data +@ApiModel(value = "变电站母线电压指标年报返回前端实体类") +public class RStatBusbarHarmonicVO implements Serializable { + + private static final long serialVersionUID = 835979721790264805L; + /** + * 部门id + */ + @ApiModelProperty(name = "deptId", value = "部门id") + private String deptId; + + /** + * 所属单位 + */ + @ApiModelProperty(name = "company", value = "单位") + private String company; + + /** + * 变电站id + */ + @ApiModelProperty(name = "subId", value = "变电站id") + private String subId; + + /** + * 变电站名称 + */ + @ApiModelProperty(name = "subName", value = "变电站名称") + private String subName; + + /** + * 变电站电压等级 + */ + @ApiModelProperty(name = "subVoltageLevel", value = "变电站电压等级") + private String subVoltageLevel; + + /** + * 母线名称 + */ + @ApiModelProperty(name = "busbarName", value = "母线名称") + private String busbarName; + + /** + * 母线id + */ + @ApiModelProperty(name = "busbarId", value = "母线id") + @TableField(value = "busbar_id") + private String busbarId; + + + /** + * 生成数据的时间,每年统计一次 + */ + @ApiModelProperty(name = "dataDate", value = "生成数据的时间,每年统计一次") + @TableField(value = "data_date") + private String dataDate; + + /** + * 电压有效最大值 + */ + @ApiModelProperty(name = "vEffectiveMax", value = "电压有效最大值") + @TableField(value = "v_effective_max") + private Double vEffectiveMax; + + /** + * 电压有效最小值 + */ + @ApiModelProperty(name = "vEffectiveMin", value = "电压有效最小值") + @TableField(value = "v_effective_min") + private Double vEffectiveMin; + + /** + * 电压有效平均值 + */ + @ApiModelProperty(name = "vEffectiveAvg", value = "电压有效平均值") + @TableField(value = "v_effective_avg") + private Double vEffectiveAvg; + + /** + * 电压有效值95概率大值 + */ + @ApiModelProperty(name = "vEffective95", value = "电压有效值95概率大值") + @TableField(value = "v_effective_95") + private Double vEffective95; + + /** + * 电压总谐波畸变率最大值 + */ + @ApiModelProperty(name = "vThdMax", value = "电压总谐波畸变率最大值") + @TableField(value = "v_thd_max") + private Double vThdMax; + + /** + * 电压总谐波畸变率最小值 + */ + @ApiModelProperty(name = "vThdMin", value = "电压总谐波畸变率最小值") + @TableField(value = "v_thd_min") + private Double vThdMin; + + /** + * 电压总谐波畸变率平均值 + */ + @ApiModelProperty(name = "vThdAvg", value = "电压总谐波畸变率平均值") + @TableField(value = "v_thd_avg") + private Double vThdAvg; + + /** + * 电压总谐波畸变率95概率大值 + */ + @ApiModelProperty(name = "vThd95", value = "电压总谐波畸变率95概率大值") + @TableField(value = "v_thd_95") + private Double vThd95; + + /** + * 三相电压不平衡最大值 + */ + @ApiModelProperty(name = "unbalanceMax", value = "三相电压不平衡最大值") + @TableField(value = "unbalance_max") + private Double unbalanceMax; + + /** + * 三相电压不平衡最小值 + */ + @ApiModelProperty(name = "unbalanceMin", value = "三相电压不平衡最小值") + @TableField(value = "unbalance_min") + private Double unbalanceMin; + + /** + * 三相电压不平衡平均值 + */ + @ApiModelProperty(name = "unbalanceAvg", value = "三相电压不平衡平均值") + @TableField(value = "unbalance_avg") + private Double unbalanceAvg; + + /** + * 三相电压不平衡95概率大值 + */ + @ApiModelProperty(name = "unbalance95", value = "三相电压不平衡95概率大值") + @TableField(value = "unbalance_95") + private Double unbalance95; + + /** + * 闪变最大值 + */ + @ApiModelProperty(name = "flickerMax", value = "闪变最大值") + @TableField(value = "flicker_max") + private Double flickerMax; + + /** + * 闪变最小值 + */ + @ApiModelProperty(name = "flickerMin", value = "闪变最小值") + @TableField(value = "flicker_min") + private Double flickerMin; + + /** + * 闪变平均值 + */ + @ApiModelProperty(name = "flickerAvg", value = "闪变平均值") + @TableField(value = "flicker_avg") + private Double flickerAvg; + + /** + * 闪变95概率大值 + */ + @ApiModelProperty(name = "flicker95", value = "闪变95概率大值") + @TableField(value = "flicker_95") + private Double flicker95; + + +} diff --git a/pqs-event/event-api/src/main/java/com/njcn/event/pojo/vo/RStatEventOrgVO.java b/pqs-event/event-api/src/main/java/com/njcn/event/pojo/vo/RStatEventOrgVO.java new file mode 100644 index 000000000..16d568c25 --- /dev/null +++ b/pqs-event/event-api/src/main/java/com/njcn/event/pojo/vo/RStatEventOrgVO.java @@ -0,0 +1,269 @@ +package com.njcn.event.pojo.vo; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.Date; +import java.io.Serializable; +import java.util.List; + +/** + * 监测点暂态指标数据统计表(RStatEventOrg)实体类 + * + * @author yzh + * @since 2022-10-12 18:15:26 + */ + +@Data +@ApiModel("监测点暂态指标数据统计表") +public class RStatEventOrgVO implements Serializable { + private static final long serialVersionUID = -15971491825708754L; + + public static final String SHORT_INTERRUPTIONS = "Short_Interruptions"; + public static final String VOLTAGE_DIP = "Voltage_Dip"; + public static final String VOLTAGE_RISE = "Voltage_Rise"; + + /** + * 单位ID + */ + @ApiModelProperty(name = "orgNo", value = "单位ID") + private String orgNo; + + /** + * 单位名称 + */ + @ApiModelProperty(name = "orgName", value = "单位名称") + private String orgName; + + /** + * 生成数据的时间,每年统计一次 + */ + @ApiModelProperty(name = "dataDate", value = "生成数据的时间,每年统计一次") + private Date dataDate; + + /** + * 日均有效接入监测点数 + */ + @ApiModelProperty(name = "effectiveMeasurementAverage", value = "日均有效接入监测点数") + private Integer effectiveMeasurementAverage; + + /** + * 累计有效接入监测点数 + */ + @ApiModelProperty(name = "effectiveMeasurementAccrued", value = "累计有效接入监测点数") + private Integer effectiveMeasurementAccrued; + + /** + * 日均监测到暂态指标的监测点数 + */ + @ApiModelProperty(name = "eventMeasurementAverage", value = "日均监测到暂态指标的监测点数") + private Integer eventMeasurementAverage; + + /** + * 累计监测到暂态指标的监测点数 + */ + @ApiModelProperty(name = "eventMeasurementAccrued", value = "累计监测到暂态指标的监测点数") + private Integer eventMeasurementAccrued; + + /** + * 日均暂态超标监测点数占比 + */ + @ApiModelProperty(name = "eventMeasurementRatioAverage", value = "日均暂态超标监测点数占比") + private Integer eventMeasurementRatioAverage; + + /** + * 累计暂态超标监测点数占比 + */ + @ApiModelProperty(name = "eventMeasurementRatioAccrued", value = "累计暂态超标监测点数占比") + private Integer eventMeasurementRatioAccrued; + + /** + * 暂态指标类型Id,字典表ID + */ + @ApiModelProperty(name = "eventType", value = "暂态指标类型Id,字典表ID") + private String eventType; + + /** + * 日均发生暂态监测点数(根据 发生暂态监测点数 取平均值) + */ + @ApiModelProperty(name = "eEventMeasurementAverage",value = "日均发生暂态监测点数(根据 发生暂态监测点数 取平均值)") + private Integer eEventMeasurementAverage; + + /** + * 累计发生暂态监测点数(监测点暂态指标超标明细日表 + */ + @ApiModelProperty(name = "eEventMeasurementAccrued",value = "累计发生暂态监测点数(监测点暂态指标超标明细日表)") + private Integer eEventMeasurementAccrued; + /** + * 日均发生暂态监测点数占比(根据 日均发生暂态监测点数占比 取平均值) + */ + @ApiModelProperty(name = "eEventMeasurementRatioAverage",value = "日均发生暂态监测点数占比(根据 日均发生暂态监测点数占比 取平均值)") + private Double eEventMeasurementRatioAverage; + + /** + * 累计发生暂态监测点数占比(此表的累计发生暂态监测点数/区域统计表中的区域分类统计月表中的发生暂态的监测点数) + */ + @ApiModelProperty(name = "eEventMeasurementRatioAccrued",value = "累计发生暂态监测点数占比(此表的累计发生暂态监测点数/区域统计表中的区域分类统计月表中的发生暂态的监测点数)") + private Double eEventMeasurementRatioAccrued; + + /** + * 暂态指标发生频次(日表的暂态指标发生次数之和/日表的发生暂态监测点数之和) + */ + @ApiModelProperty(name = "eEventFreq",value = "暂态指标发生频次(日表的暂态指标发生次数之和/日表的发生暂态监测点数之和)") + private Double eEventFreq; + + /** + * 暂态指标发生次数(日表的暂态指标发生次数之和) + */ + @ApiModelProperty(name = "eEventCount",value = "暂态指标发生次数(日表的暂态指标发生次数之和)") + private Integer eEventCount; + + + + + + /** + * 日均短时中断 + */ + @ApiModelProperty(name = "dayShortInterruptions", value = "日均短时中断") + private Integer dayShortInterruptions; + + /** + * 累计短时中断 + */ + @ApiModelProperty(name = "cumulativeShortInterruptions", value = "累计短时中断") + private Integer cumulativeShortInterruptions; + + /** + * 日均短时中断占比 + */ + @ApiModelProperty(name = "dayShortInterruptionsProportion", value = "日均短时中断占比") + private Double dayShortInterruptionsProportion; + + /** + * 累计短时中断占比 + */ + @ApiModelProperty(name = "cumulativeShortInterruptionsProportion", value = "累计暂态指标占比") + private Double cumulativeShortInterruptionsProportion; + + /** + * 短时中断监测点数 + */ + @ApiModelProperty(name = "shortInterruptionsMonitor", value = "短时中断监测点数") + private Integer shortInterruptionsMonitor; + + /** + * 短时中断占比 + */ + @ApiModelProperty(name = "shortInterruptionsProportion",value = "短时中断占比") + private Double shortInterruptionsProportion; + + /** + * 短时中断次数 + */ + @ApiModelProperty(name = "shortInterruptionsCount", value = "短时中断次数") + private Integer shortInterruptionsCount; + + /** + * 短时中断频次 + */ + @ApiModelProperty(name = "shortInterruptionsFrequency", value = "短时中断频次") + private Double shortInterruptionsFrequency; + + + + + + /** + * 日均电压暂升 + */ + @ApiModelProperty(name = "dayVoltageRise", value = "日均电压暂升") + private Integer dayVoltageRise; + + /** + * 累计电压暂升 + */ + @ApiModelProperty(name = "cumulativeVoltageRise", value = "累计电压暂升") + private Integer cumulativeVoltageRise; + + /** + * 日均电压暂升占比 + */ + @ApiModelProperty(name = "dayVoltageRiseProportion", value = "日均电压暂升占比") + private Double dayVoltageRiseProportion; + + /** + * 累计电压暂升占比 + */ + @ApiModelProperty(name = "cumulativeVoltageRiseProportion", value = "累计电压暂升占比") + private Double cumulativeVoltageRiseProportion; + + /** + * 电压暂升占比 + */ + @ApiModelProperty(name = "voltageRiseProportion",value = "电压暂升占比") + private Double voltageRiseProportion; + + /** + * 电压暂升次数 + */ + @ApiModelProperty(name = "voltageRiseCount", value = "电压暂升次数") + private Integer voltageRiseCount; + + /** + * 电压暂升频次 + */ + @ApiModelProperty(name = "voltageRiseFrequency", value = "电压暂升频次") + private Double voltageRiseFrequency; + + + + + + /** + * 日均电压暂降 + */ + @ApiModelProperty(name = "dayVoltageDip", value = "日均电压暂降") + private Integer dayVoltageDip; + + /** + * 累计电压暂降 + */ + @ApiModelProperty(name = "cumulativeVoltageDip", value = "累计电压暂降") + private Integer cumulativeVoltageDip; + + /** + * 日均电压暂降占比 + */ + @ApiModelProperty(name = "dayVoltageDipProportion", value = "日均电压暂降占比") + private Double dayVoltageDipProportion; + + /** + * 累计电压暂降占比 + */ + @ApiModelProperty(name = "cumulativeVoltageDipProportion", value = "累计电压暂降占比") + private Double cumulativeVoltageDipProportion; + + /** + * 电压暂降占比 + */ + @ApiModelProperty(name = "voltageDipProportion",value = "电压暂降占比") + private Double voltageDipProportion; + + /** + * 电压暂降次数 + */ + @ApiModelProperty(name = "voltageDipCount", value = "电压暂降次数") + private Integer voltageDipCount; + + + /** + * 电压暂降频次 + */ + @ApiModelProperty(name = "voltageDipFrequency", value = "电压暂降频次") + private Double voltageDipFrequency; + + +} + diff --git a/pqs-event/event-api/src/main/java/com/njcn/event/pojo/vo/RStatOrgVO.java b/pqs-event/event-api/src/main/java/com/njcn/event/pojo/vo/RStatOrgVO.java new file mode 100644 index 000000000..f9bf3ee1d --- /dev/null +++ b/pqs-event/event-api/src/main/java/com/njcn/event/pojo/vo/RStatOrgVO.java @@ -0,0 +1,87 @@ +package com.njcn.event.pojo.vo; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.util.Date; + +/** + * 区域分类统计表(RStatOrgY)实体类 + * + * @author yzh + * @date 2022/10/10 + */ + +@Data +@ApiModel(value = "区域分类统计表(RStatOrgY)实体类") +public class RStatOrgVO implements Serializable { + private static final long serialVersionUID = 642166320324597986L; + /** + * 单位ID + */ + @ApiModelProperty(name = "orgNo", value = "单位ID") + private String orgNo; + + /** + * 单位名称 + */ + @ApiModelProperty(name = "orgName", value = "单位名称") + private String orgName; + + /** + * 生成数据的时间 + */ + @ApiModelProperty(name = "dataDate", value = "生成数据的时间") + private String dataDate; + + /** + * 日均有效接入监测点数 + */ + @ApiModelProperty(name = "effectiveMeasurementAverage", value = "日均有效接入监测点数") + private Integer effectiveMeasurementAverage; + + /** + * 累计有效接入监测点数 + */ + @ApiModelProperty(name = "effectiveMeasurementAccrued", value = "累计有效接入监测点数") + private Integer effectiveMeasurementAccrued; + + /** + * 日均监测到暂态指标的监测点数 + */ + @ApiModelProperty(name = "eventMeasurementAverage", value = "日均监测到暂态指标的监测点数") + private Integer eventMeasurementAverage; + + /** + * 累计监测到暂态指标的监测点数 + */ + @ApiModelProperty(name = "eventMeasurementAccrued", value = "累计监测到暂态指标的监测点数") + private Integer eventMeasurementAccrued; + + /** + * 日均暂态超标监测点数占比 + */ + @ApiModelProperty(name = "eventMeasurementRatioAverage", value = "日均暂态超标监测点数占比") + private Integer eventMeasurementRatioAverage; + + /** + * 累计暂态超标监测点数占比 + */ + @ApiModelProperty(name = "eventMeasurementRatioAccrued", value = "累计暂态超标监测点数占比") + private Integer eventMeasurementRatioAccrued; + + /** + * 暂态指标发生频次 + */ + @ApiModelProperty(name = "eventFreq", value = "暂态指标发生频次") + private Double eventFreq; + + /** + * 暂态指标发生次数 + */ + @ApiModelProperty(name = "eventCount", value = "暂态指标发生次数") + private Integer eventCount; + +} \ No newline at end of file diff --git a/pqs-event/event-api/src/main/java/com/njcn/event/pojo/vo/RStatSubstationVO.java b/pqs-event/event-api/src/main/java/com/njcn/event/pojo/vo/RStatSubstationVO.java new file mode 100644 index 000000000..2620880ed --- /dev/null +++ b/pqs-event/event-api/src/main/java/com/njcn/event/pojo/vo/RStatSubstationVO.java @@ -0,0 +1,116 @@ +package com.njcn.event.pojo.vo; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.util.Date; + +/** + * 变电站指标统计表实体类 + * + * @author yzh + * @since 2022-10-11 16:15:48 + */ +@Data +@ApiModel(value = "变电站指标统计表实体类") +public class RStatSubstationVO implements Serializable { + private static final long serialVersionUID = 117875946877905400L; + + /** + * 单位id + */ + @ApiModelProperty(name = "deptId",value = "单位id") + private String deptId; + + /** + * 单位名称 + */ + @ApiModelProperty(name = "deptName",value = "单位名称") + private String deptName; + + /** + * 变电站id + */ + @ApiModelProperty(name = "substationId",value = "变电站id") + private String substationId; + + /** + * 变电站名称 + */ + @ApiModelProperty(name = "substationName",value = "变电站名称") + private String substationName; + + /** + * 生成数据的时间 + */ + @ApiModelProperty(name = "dataDate",value = "生成数据的时间") + private String dataDate; + + /** + * 日均有效接入监测点数 + */ + @ApiModelProperty(name = "effectiveMeasurementAverage",value = "日均有效接入监测点数") + private Integer effectiveMeasurementAverage; + + /** + * 累计有效接入监测点数 + */ + @ApiModelProperty(name = "effectiveMeasurementAccrued",value = "累计有效接入监测点数") + private Integer effectiveMeasurementAccrued; + + + /** + * 暂态指标发生次数 + */ + @ApiModelProperty(name = "eventCount",value = "暂态指标发生次数") + private Integer eventCount; + + /** + * 暂态指标发生频次 + */ + @ApiModelProperty(name = "eventFreq",value = "暂态指标发生频次") + private Double eventFreq; + + /** + * 短时中断发生次数 + */ + @ApiModelProperty(name = "interruptCount",value = "短时中断发生次数") + private Integer interruptCount; + + /** + * 短时中断发生频次 + */ + @ApiModelProperty(name = "interruptFreq",value = "短时中断发生频次") + private Double interruptFreq; + + + + /** + * 电压暂升发生次数 + */ + @ApiModelProperty(name = "swellCount",value = "电压暂升发生次数") + private Integer swellCount; + + /** + * 电压暂升发生频次 + */ + @ApiModelProperty(name = "swellFreq",value = "电压暂升发生频次") + private Double swellFreq; + + /** + * 电压暂降发生次数 + */ + @ApiModelProperty(name = "sagCount",value = "电压暂降发生次数") + private Integer sagCount; + + /** + * 电压暂降发生频次 + */ + @ApiModelProperty(name = "sagFreq",value = "电压暂降发生频次") + private Double sagFreq; + + +} + diff --git a/pqs-event/event-api/src/main/java/com/njcn/event/pojo/vo/RmpEventDetailVO.java b/pqs-event/event-api/src/main/java/com/njcn/event/pojo/vo/RmpEventDetailVO.java new file mode 100644 index 000000000..31ed314d3 --- /dev/null +++ b/pqs-event/event-api/src/main/java/com/njcn/event/pojo/vo/RmpEventDetailVO.java @@ -0,0 +1,87 @@ +package com.njcn.event.pojo.vo; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + +/** + * 监测点暂态事件明细数据(RMpEventDetail)实体类 + * + * @author yzh + * @since 2022-10-12 10:30:03 + */ + +@Data +@ApiModel("监测点暂态事件明细数据") +public class RmpEventDetailVO implements Serializable { + private static final long serialVersionUID = 544141879378917668L; + + /** + * 单位id + */ + @ApiModelProperty(name = "deptId",value = "单位id") + private String deptId; + + /** + * 单位名称 + */ + @ApiModelProperty(name = "deptName",value = "单位名称") + private String deptName; + + /** + * 暂时事件ID + */ + @ApiModelProperty(name = "eventId",value = "暂时事件ID") + private String eventId; + + /** + * 监测点ID + */ + @ApiModelProperty(name = "measurementPointId",value = "监测点ID") + private String measurementPointId; + + /** + * 监测点名称 + */ + @ApiModelProperty(name = "measurementPointName",value = "监测点名称") + private String measurementPointName; + + /** + * 事件类型 + */ + @ApiModelProperty(name = "eventType",value = "事件类型") + private String eventType; + + /** + * 相别 + */ + @ApiModelProperty(name = "phase",value = "相别") + private String phase; + + /** + * 开始时间 + */ + @ApiModelProperty(name = "startTime",value = "开始时间") + private Long startTime; + + /** + * 持续时间 + */ + @ApiModelProperty(name = "duration",value = "持续时间") + private Double duration; + /** + * 特征幅值 + */ + @ApiModelProperty(name = "featureAmplitude",value = "特征幅值") + private Double featureAmplitude; + + /** + * 波形路径 + */ + @ApiModelProperty(name = "wavePath",value = "波形路径") + private String wavePath; + +} + diff --git a/pqs-event/event-boot/src/main/java/com/njcn/event/controller/RmpEventDetailController.java b/pqs-event/event-boot/src/main/java/com/njcn/event/controller/RmpEventDetailController.java new file mode 100644 index 000000000..0cf1285b0 --- /dev/null +++ b/pqs-event/event-boot/src/main/java/com/njcn/event/controller/RmpEventDetailController.java @@ -0,0 +1,53 @@ +package com.njcn.event.controller; + + +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.event.pojo.param.UniversalFrontEndParam; +import com.njcn.event.pojo.vo.RmpEventDetailVO; +import com.njcn.event.service.RmpEventDetailService; +import com.njcn.web.controller.BaseController; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import java.util.List; + +/** + * 暂态事件明细 + * + * @author yzh + * @date 2022/10/12 + */ + +@RestController +@RequestMapping("/rmpEventDetail") +@Api(tags = "暂态事件明细") +@RequiredArgsConstructor +public class RmpEventDetailController extends BaseController { + + private final RmpEventDetailService rmpEventDetailService; + + /** + * 获取暂态事件明细 + * + * @param param 前端传入参数 + * @return 暂态事件明细 + */ + @PostMapping("/getDetailsOfTransientEvents") + @OperateInfo(info = LogEnum.SYSTEM_COMMON) + @ApiOperation("获取区域暂态指标统计") +// @ApiImplicitParam(name = "UniversalFrontEndParam", value = "前端参数", required = true) + public HttpResult> getRmpEventDetail(@RequestBody UniversalFrontEndParam param) { + String methodDescribe = getMethodDescribe("getRmpEventDetail"); + List list = rmpEventDetailService.getRmpEventDetail(param); + return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, list, methodDescribe); + } +} diff --git a/pqs-event/event-boot/src/main/java/com/njcn/event/controller/StatisticsOfTransientIndicatorsController.java b/pqs-event/event-boot/src/main/java/com/njcn/event/controller/StatisticsOfTransientIndicatorsController.java new file mode 100644 index 000000000..03ee50942 --- /dev/null +++ b/pqs-event/event-boot/src/main/java/com/njcn/event/controller/StatisticsOfTransientIndicatorsController.java @@ -0,0 +1,88 @@ +package com.njcn.event.controller; + +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.event.pojo.param.UniversalFrontEndParam; +import com.njcn.event.pojo.vo.RStatEventOrgVO; +import com.njcn.event.pojo.vo.RStatOrgVO; +import com.njcn.event.pojo.vo.RStatSubstationVO; +import com.njcn.event.service.StatisticsOfTransientIndicatorssService; +import com.njcn.web.controller.BaseController; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import java.util.List; + +/** + * 暂态指标统计 + * + * @author yzh + * @date 2022/10/10 + */ + +@RestController +@RequestMapping("/statisticsOfTransientIndicators") +@Api(tags = "暂态指标统计") +@RequiredArgsConstructor +public class StatisticsOfTransientIndicatorsController extends BaseController { + + private final StatisticsOfTransientIndicatorssService statisticsOfTransientIndicatorssService; + + /** + * 获取区域暂态指标统计 + * + * @param param 前端传入参数 + * @return 区域暂态指标统计 + */ + @PostMapping("/getRStatOrg") + @OperateInfo(info = LogEnum.SYSTEM_COMMON) + @ApiOperation("获取区域暂态指标统计") +// @ApiImplicitParam(name = "UniversalFrontEndParam", value = "前端参数", required = true) + public HttpResult> getRStatOrg(@RequestBody UniversalFrontEndParam param) { + String methodDescribe = getMethodDescribe("getRStatOrg"); + List list = statisticsOfTransientIndicatorssService.getRStatOrg(param); + return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, list, methodDescribe); + } + + /** + * 获取区域暂态指标分类统计表 + * + * @param param 前端传入参数 + * @return 区域暂态指标分类统计表 + */ + @PostMapping("/getRStatEventOrg") + @OperateInfo(info = LogEnum.SYSTEM_COMMON) + @ApiOperation("获取区域暂态指标分类统计表") +// @ApiImplicitParam(name = "UniversalFrontEndParam", value = "前端参数", required = true) + public HttpResult> getRStatEventOrg(@RequestBody UniversalFrontEndParam param) { + String methodDescribe = getMethodDescribe("getRStatEventOrg"); + List list = statisticsOfTransientIndicatorssService.getRStatEventOrg(param); + return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, list, methodDescribe); + } + + + /** + * 获取变电站暂态指标分类统计表 + * + * @param param 前端传入参数 + * @return 变电站暂态指标分类统计表 + */ + @PostMapping("/getRStatSubstation") + @OperateInfo(info = LogEnum.SYSTEM_COMMON) + @ApiOperation("获取变电站暂态指标分类统计表") +// @ApiImplicitParam(name = "UniversalFrontEndParam", value = "前端参数", required = true) + public HttpResult> getRStatSubstation(@RequestBody UniversalFrontEndParam param) { + String methodDescribe = getMethodDescribe("getRStatSubstation"); + List list = statisticsOfTransientIndicatorssService.getRStatSubstation(param); + return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, list, methodDescribe); + } + +} diff --git a/pqs-event/event-boot/src/main/java/com/njcn/event/mapper/PmsMonitorMapper.java b/pqs-event/event-boot/src/main/java/com/njcn/event/mapper/PmsMonitorMapper.java new file mode 100644 index 000000000..5faa8e243 --- /dev/null +++ b/pqs-event/event-boot/src/main/java/com/njcn/event/mapper/PmsMonitorMapper.java @@ -0,0 +1,24 @@ +package com.njcn.event.mapper; + +import com.njcn.event.pojo.po.PmsMonitorPO; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @author yzh + * @date 2022/10/17 + */ + +@Mapper +public interface PmsMonitorMapper { + + /** + * 根据部门id查询监测点id + * + * @param deptIds 部门id + * @return 监测点id + */ + List getMonitorInfo(@Param("deptIds") List deptIds); +} diff --git a/pqs-event/event-boot/src/main/java/com/njcn/event/mapper/RStatEventOrgMapper.java b/pqs-event/event-boot/src/main/java/com/njcn/event/mapper/RStatEventOrgMapper.java new file mode 100644 index 000000000..aad4073b5 --- /dev/null +++ b/pqs-event/event-boot/src/main/java/com/njcn/event/mapper/RStatEventOrgMapper.java @@ -0,0 +1,55 @@ +package com.njcn.event.mapper; + + +import com.njcn.event.pojo.vo.RStatEventOrgVO; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * 区域暂态指标分类统计表 + * + * @author yzh + * @date 2022/10/13 + */ +@Mapper +public interface RStatEventOrgMapper { + + /** + * 获取年区域暂态指标分类统计表 + * + * @param deptIds 部门id + * @param startTime 开始时间 + * @param endTime 结束时间 + * @return 年区域暂态指标分类统计表 + */ + List getYearRStatEventOrgInfo(@Param("deptIds") List deptIds, + @Param("startTime") String startTime, + @Param("endTime") String endTime); + + /** + * 获取季区域暂态指标分类统计表 + * + * @param deptIds 部门id + * @param startTime 开始时间 + * @param endTime 结束时间 + * @return 季区域暂态指标分类统计表 + */ + List getQuarterRStatEventOrgInfo(@Param("deptIds") List deptIds, + @Param("startTime") String startTime, + @Param("endTime") String endTime); + + /** + * 获取月区域暂态指标分类统计表 + * + * @param deptIds 部门id + * @param startTime 开始时间 + * @param endTime 结束时间 + * @return 月区域暂态指标分类统计表 + */ + List getMonthRStatEventOrgInfoInfo(@Param("deptIds") List deptIds, + @Param("startTime") String startTime, + @Param("endTime") String endTime); + +} diff --git a/pqs-event/event-boot/src/main/java/com/njcn/event/mapper/RStatOrgMapper.java b/pqs-event/event-boot/src/main/java/com/njcn/event/mapper/RStatOrgMapper.java new file mode 100644 index 000000000..f96bdf4d5 --- /dev/null +++ b/pqs-event/event-boot/src/main/java/com/njcn/event/mapper/RStatOrgMapper.java @@ -0,0 +1,56 @@ +package com.njcn.event.mapper; + + +import com.njcn.event.pojo.vo.RStatOrgVO; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * 暂态指标统计 + * + * @author yzh + * @date 2022/10/10 + */ + +@Mapper +public interface RStatOrgMapper { + + /** + * 获取年区域暂态指标统计 + * + * @param deptIds 单位id + * @param startTime 开始时间 + * @param endTime 结束时间 + * @return 年区域暂态指标统计 + */ + List getYearRStatOrgInfo(@Param("deptIds") List deptIds, + @Param("startTime") String startTime, + @Param("endTime") String endTime); + + /** + * 获取季区域暂态指标统计 + * + * @param deptIds 单位id + * @param startTime 开始时间 + * @param endTime 结束时间 + * @return 季区域暂态指标统计 + */ + List getQuarterRStatOrgInfo(@Param("deptIds") List deptIds, + @Param("startTime") String startTime, + @Param("endTime") String endTime); + + /** + * 获取月区域暂态指标统计 + * + * @param deptIds 单位id + * @param startTime 开始时间 + * @param endTime 结束时间 + * @return 月区域暂态指标统计 + */ + List getMonthRStatOrgInfo(@Param("deptIds") List deptIds, + @Param("startTime") String startTime, + @Param("endTime") String endTime); + +} diff --git a/pqs-event/event-boot/src/main/java/com/njcn/event/mapper/RStatSubstationMapper.java b/pqs-event/event-boot/src/main/java/com/njcn/event/mapper/RStatSubstationMapper.java new file mode 100644 index 000000000..3138135f9 --- /dev/null +++ b/pqs-event/event-boot/src/main/java/com/njcn/event/mapper/RStatSubstationMapper.java @@ -0,0 +1,56 @@ +package com.njcn.event.mapper; + + +import com.njcn.event.pojo.po.PmsMonitorPO; +import com.njcn.event.pojo.vo.RStatSubstationVO; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * 变电站暂态指标分类统计 + * + * @author yzh + * @date 2022/10/14 + */ + +@Mapper +public interface RStatSubstationMapper { + + /** + * 获取年变电站暂态指标分类统计表 + * + * @param powerrIds 变电站id + * @param startTime 开始时间 + * @param endTime 结束时间 + * @return 年变电站暂态指标分类统计表 + */ + List getYearInfo(@Param("powerrIds") List powerrIds, + @Param("startTime") String startTime, + @Param("endTime") String endTime); + + /** + * 获取季变电站暂态指标分类统计表 + * + * @param powerrIds 变电站id + * @param startTime 开始时间 + * @param endTime 结束时间 + * @return 季变电站暂态指标分类统计表 + */ + List getQuarterInfo(@Param("powerrIds") List powerrIds, + @Param("startTime") String startTime, + @Param("endTime") String endTime); + + /** + * 获取月变电站暂态指标分类统计表 + * + * @param powerrIds 变电站id + * @param startTime 开始时间 + * @param endTime 结束时间 + * @return 月变电站暂态指标分类统计表 + */ + List getMonthInfo(@Param("powerrIds") List powerrIds, + @Param("startTime") String startTime, + @Param("endTime") String endTime); +} diff --git a/pqs-event/event-boot/src/main/java/com/njcn/event/mapper/RmpEventDetailMapper.java b/pqs-event/event-boot/src/main/java/com/njcn/event/mapper/RmpEventDetailMapper.java new file mode 100644 index 000000000..50aca4d4c --- /dev/null +++ b/pqs-event/event-boot/src/main/java/com/njcn/event/mapper/RmpEventDetailMapper.java @@ -0,0 +1,16 @@ +package com.njcn.event.mapper; + + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.njcn.event.pojo.vo.RmpEventDetailVO; +import org.apache.ibatis.annotations.Mapper; + +/** + * 暂态事件明细 + * + * @author yzh + * @date 2022/10/12 + */ +@Mapper +public interface RmpEventDetailMapper extends BaseMapper { +} diff --git a/pqs-event/event-boot/src/main/java/com/njcn/event/mapper/mapping/PmsMonitorMapper.xml b/pqs-event/event-boot/src/main/java/com/njcn/event/mapper/mapping/PmsMonitorMapper.xml new file mode 100644 index 000000000..31a396cf6 --- /dev/null +++ b/pqs-event/event-boot/src/main/java/com/njcn/event/mapper/mapping/PmsMonitorMapper.xml @@ -0,0 +1,26 @@ + + + + + + + \ No newline at end of file diff --git a/pqs-event/event-boot/src/main/java/com/njcn/event/mapper/mapping/RStatEventOrgMapper.xml b/pqs-event/event-boot/src/main/java/com/njcn/event/mapper/mapping/RStatEventOrgMapper.xml new file mode 100644 index 000000000..d1c4ea607 --- /dev/null +++ b/pqs-event/event-boot/src/main/java/com/njcn/event/mapper/mapping/RStatEventOrgMapper.xml @@ -0,0 +1,70 @@ + + + + + + + rso.org_no AS orgNo, + rso.data_date AS dataDate, + rso.effective_measurement_average AS effectiveMeasurementAverage, + rso.effective_measurement_accrued AS effectiveMeasurementAccrued, + rso.event_measurement_average AS eventMeasurementAverage, + rso.event_measurement_accrued AS eventMeasurementAccrued, + rseo.event_type, + rseo.event_measurement_average AS eEventMeasurementAverage, + rseo.event_measurement_accrued AS eEventMeasurementAccrued, + rseo.event_measurement_ratio_average AS eEventMeasurementRatioAverage, + rseo.event_measurement_ratio_accrued AS eEventMeasurementRatioAccrued, + rseo.event_freq AS eventFreq, + rseo.event_count as eventCount + + + rso.org_no IN + + #{item} + + + AND DATE_FORMAT(rso.data_date, '%Y-%m-%d') >= DATE_FORMAT(#{startTime}, '%Y-%m-%d') + + + AND DATE_FORMAT(rso.data_date, '%Y-%m-%d') <= DATE_FORMAT(#{endTime}, '%Y-%m-%d') + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/pqs-event/event-boot/src/main/java/com/njcn/event/mapper/mapping/RStatOrgMapper.xml b/pqs-event/event-boot/src/main/java/com/njcn/event/mapper/mapping/RStatOrgMapper.xml new file mode 100644 index 000000000..81b80f919 --- /dev/null +++ b/pqs-event/event-boot/src/main/java/com/njcn/event/mapper/mapping/RStatOrgMapper.xml @@ -0,0 +1,60 @@ + + + + + + org_no IN + + #{item} + + + AND DATE_FORMAT(data_date, '%Y-%m-%d') >= DATE_FORMAT(#{startTime}, '%Y-%m-%d') + + + AND DATE_FORMAT(data_date, '%Y-%m-%d') <= DATE_FORMAT(#{endTime}, '%Y-%m-%d') + + + + + org_no AS orgNo, + data_date AS dataDate, + effective_measurement_average AS effectiveMeasurementAverage, + effective_measurement_accrued AS effectiveMeasurementAccrued, + event_measurement_average AS eventMeasurementAverage, + event_measurement_accrued AS eventMeasurementAccrued, + event_count AS eventCount, + event_freq AS eventFreq + + + + + + + + + + + + + \ No newline at end of file diff --git a/pqs-event/event-boot/src/main/java/com/njcn/event/mapper/mapping/RStatSubstationMapper.xml b/pqs-event/event-boot/src/main/java/com/njcn/event/mapper/mapping/RStatSubstationMapper.xml new file mode 100644 index 000000000..c762c8223 --- /dev/null +++ b/pqs-event/event-boot/src/main/java/com/njcn/event/mapper/mapping/RStatSubstationMapper.xml @@ -0,0 +1,61 @@ + + + + + + substation_id AS substationId, + data_date AS dataDate, + effective_measurement_average AS effectiveMeasurementAverage, + effective_measurement_accrued AS effectiveMeasurementAccrued, + event_count AS eventCount, + event_freq AS eventFreq, + interrupt_count AS interruptCount, + interrupt_freq AS interruptFreq, + swell_count AS swellCount, + swell_freq AS swellFreq, + sag_count AS sagCount, + sag_freq AS sagFreq + + + substation_id IN + + #{item} + + + AND DATE_FORMAT( data_date,'%Y-%m-%d') >= DATE_FORMAT(#{startTime},'%Y-%m-%d') + + + AND DATE_FORMAT( data_date,'%Y-%m-%d') <= DATE_FORMAT(#{endTime},'%Y-%m-%d') + + + + + + + + + + + + \ No newline at end of file diff --git a/pqs-event/event-boot/src/main/java/com/njcn/event/mapper/mapping/RmpEventDetailMapper.xml b/pqs-event/event-boot/src/main/java/com/njcn/event/mapper/mapping/RmpEventDetailMapper.xml new file mode 100644 index 000000000..1ba4756c7 --- /dev/null +++ b/pqs-event/event-boot/src/main/java/com/njcn/event/mapper/mapping/RmpEventDetailMapper.xml @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/pqs-event/event-boot/src/main/java/com/njcn/event/service/EventDetailService.java b/pqs-event/event-boot/src/main/java/com/njcn/event/service/EventDetailService.java index 176e08e1c..6832bad95 100644 --- a/pqs-event/event-boot/src/main/java/com/njcn/event/service/EventDetailService.java +++ b/pqs-event/event-boot/src/main/java/com/njcn/event/service/EventDetailService.java @@ -35,4 +35,4 @@ public interface EventDetailService { * 根据监测点集合以及分页信息获取暂降事件 */ List getEventDetailLimit(List lineIndexes, String startTime, String endTime, Integer pageSize, Integer pageNum); -} +} \ No newline at end of file diff --git a/pqs-event/event-boot/src/main/java/com/njcn/event/service/Impl/EventAnalysisServiceImpl.java b/pqs-event/event-boot/src/main/java/com/njcn/event/service/Impl/EventAnalysisServiceImpl.java index 10fba7cae..ac1b7c825 100644 --- a/pqs-event/event-boot/src/main/java/com/njcn/event/service/Impl/EventAnalysisServiceImpl.java +++ b/pqs-event/event-boot/src/main/java/com/njcn/event/service/Impl/EventAnalysisServiceImpl.java @@ -5,6 +5,7 @@ import cn.hutool.core.date.LocalDateTimeUtil; import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.github.abel533.echarts.code.X; import com.njcn.common.config.GeneralInfo; import com.njcn.common.pojo.dto.wave.WaveDataDTO; import com.njcn.common.pojo.exception.BusinessException; diff --git a/pqs-event/event-boot/src/main/java/com/njcn/event/service/Impl/RmpEventDetailServiceImpl.java b/pqs-event/event-boot/src/main/java/com/njcn/event/service/Impl/RmpEventDetailServiceImpl.java new file mode 100644 index 000000000..aac10b16f --- /dev/null +++ b/pqs-event/event-boot/src/main/java/com/njcn/event/service/Impl/RmpEventDetailServiceImpl.java @@ -0,0 +1,71 @@ +package com.njcn.event.service.Impl; + + +import cn.hutool.core.collection.CollectionUtil; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.njcn.event.mapper.PmsMonitorMapper; +import com.njcn.event.mapper.RmpEventDetailMapper; +import com.njcn.event.pojo.param.UniversalFrontEndParam; +import com.njcn.event.pojo.po.PmsMonitorPO; +import com.njcn.event.pojo.vo.RStatOrgVO; +import com.njcn.event.pojo.vo.RStatSubstationVO; +import com.njcn.event.pojo.vo.RmpEventDetailVO; +import com.njcn.event.service.RmpEventDetailService; +import com.njcn.user.api.DeptFeignClient; +import com.njcn.user.pojo.dto.DeptDTO; +import com.njcn.web.utils.WebUtil; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; + +import java.util.ArrayList; +import java.util.List; +import java.util.stream.Collectors; + +/** + * 暂态事件明细 + * + * @author yzh + * @date 2022/10/12 + */ +@Service +@Slf4j +@RequiredArgsConstructor +public class RmpEventDetailServiceImpl extends ServiceImpl implements RmpEventDetailService { + + private final RmpEventDetailMapper rmpEventDetailMapper; + + private final DeptFeignClient deptFeignClient; + + private final PmsMonitorMapper pmsMonitorMapper; + + /** + * 获取暂态事件明细 + * + * @param param 前端参数 + * @return 暂态事件明细 + */ + @Override + public List getRmpEventDetail(UniversalFrontEndParam param) { + + // 获取当前用户的部门的子部门信息 + List data = deptFeignClient.getDeptDescendantIndexes(param.getId(), WebUtil.filterDeptType()).getData(); + + if (CollectionUtil.isNotEmpty(data)) { + //创建返回集合 + List info = new ArrayList<>(); + + // 过滤出部门id + List deptIds = data.stream().map(DeptDTO::getId).collect(Collectors.toList()); + + // 根据部门id查询监测点id + List monitorInfo = pmsMonitorMapper.getMonitorInfo(deptIds); + + + + return info; + } else { + return new ArrayList<>(); + } + } +} diff --git a/pqs-event/event-boot/src/main/java/com/njcn/event/service/Impl/StatisticsOfTransientIndicatorssServiceImpl.java b/pqs-event/event-boot/src/main/java/com/njcn/event/service/Impl/StatisticsOfTransientIndicatorssServiceImpl.java new file mode 100644 index 000000000..fb8ce91f2 --- /dev/null +++ b/pqs-event/event-boot/src/main/java/com/njcn/event/service/Impl/StatisticsOfTransientIndicatorssServiceImpl.java @@ -0,0 +1,334 @@ +package com.njcn.event.service.Impl; + + +import cn.hutool.core.bean.BeanUtil; +import cn.hutool.core.collection.CollectionUtil; +import com.njcn.event.mapper.PmsMonitorMapper; +import com.njcn.event.mapper.RStatEventOrgMapper; +import com.njcn.event.mapper.RStatOrgMapper; +import com.njcn.event.mapper.RStatSubstationMapper; +import com.njcn.event.pojo.param.UniversalFrontEndParam; +import com.njcn.event.pojo.po.PmsMonitorPO; +import com.njcn.event.pojo.vo.RStatEventOrgVO; +import com.njcn.event.pojo.vo.RStatOrgVO; +import com.njcn.event.pojo.vo.RStatSubstationVO; +import com.njcn.event.service.StatisticsOfTransientIndicatorssService; +import com.njcn.system.api.DicDataFeignClient; +import com.njcn.system.enums.DicDataTypeEnum; +import com.njcn.system.pojo.po.DictData; +import com.njcn.user.api.DeptFeignClient; +import com.njcn.user.pojo.dto.DeptDTO; +import com.njcn.web.utils.WebUtil; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.BeanUtils; +import org.springframework.stereotype.Service; + +import java.util.ArrayList; +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; + +/** + * 暂态指标统计 + * + * @author yzh + * @date 2022/10/10 + */ +@Service +@Slf4j +@RequiredArgsConstructor +public class StatisticsOfTransientIndicatorssServiceImpl implements StatisticsOfTransientIndicatorssService { + + private final DeptFeignClient deptFeignClient; + + private final DicDataFeignClient dicDataFeignClient; + + private final RStatOrgMapper rStatOrgMapper; + + private final RStatEventOrgMapper rStatEventOrgMapper; + + private final RStatSubstationMapper rStatSubstationMapper; + + private final PmsMonitorMapper pmsMonitorMapper; + + /** + * 获取区域暂态指标统计 + * + * @param param 前端参数 + * @return 区域暂态指标统计 + */ + @Override + public List getRStatOrg(UniversalFrontEndParam param) { + + // 获取当前用户的部门的子部门信息 + List data = deptFeignClient.getDeptDescendantIndexes(param.getId(), WebUtil.filterDeptType()).getData(); + + + if (CollectionUtil.isNotEmpty(data)) { + // 创建返回集合 + List info = new ArrayList<>(); + + // 过滤出部门id + List deptIds = data.stream().map(DeptDTO::getId).collect(Collectors.toList()); + + // 类型(1年 2季度 3月份 4日 + switch (param.getType()) { + case 1: + // 获取年区域暂态指标统计 + info = rStatOrgMapper.getYearRStatOrgInfo(deptIds, param.getStartTime(), param.getEndTime()); + break; + case 2: + // 获取季区域暂态指标统计 + info = rStatOrgMapper.getQuarterRStatOrgInfo(deptIds, param.getStartTime(), param.getEndTime()); + break; + case 3: + // 获取月区域暂态指标统计 + info = rStatOrgMapper.getMonthRStatOrgInfo(deptIds, param.getStartTime(), param.getEndTime()); + break; + default: + break; + } + for (RStatOrgVO rStatOrgVO : info) { + rStatOrgVO.setEventMeasurementRatioAverage(rStatOrgVO.getEventMeasurementAverage() / rStatOrgVO.getEffectiveMeasurementAverage()); + rStatOrgVO.setEventMeasurementRatioAccrued(rStatOrgVO.getEventMeasurementAccrued() / rStatOrgVO.getEffectiveMeasurementAccrued()); + } + + // 匹配单位名称 + for (DeptDTO dto : data) { + for (RStatOrgVO vo : info) { + if (dto.getId().equals(vo.getOrgNo())) { + vo.setOrgName(dto.getName()); + } + } + } + + return info; + } else { + return new ArrayList<>(); + } + } + + /** + * 获取区域暂态指标分类统计表 + * + * @param param 前端参数 + * @return 区域暂态指标分类统计表 + */ + @Override + public List getRStatEventOrg(UniversalFrontEndParam param) { + + // 获取当前用户的部门的子部门信息 + List data = deptFeignClient.getDeptDescendantIndexes(param.getId(), WebUtil.filterDeptType()).getData(); + + if (CollectionUtil.isNotEmpty(data)) { + + //创建返回集合 + List info = new ArrayList<>(); + + // 根据暂态指标枚举查询暂态指标 + List eventStatis = dicDataFeignClient.getDicDataByTypeCode( + DicDataTypeEnum.EVENT_STATIS.getCode()).getData(); + + List temp = new ArrayList<>(); + + // 过滤出部门id + List deptIds = data.stream().map(DeptDTO::getId).collect(Collectors.toList()); + + // 类型(1年 2季度 3月份 4日 + switch (param.getType()) { + case 1: + // 获取年区域暂态指标分类统计表 + temp = rStatEventOrgMapper.getYearRStatEventOrgInfo(deptIds, param.getStartTime(), param.getEndTime()); + break; + case 2: + // 获取季区域暂态指标分类统计表 + temp = rStatEventOrgMapper.getQuarterRStatEventOrgInfo(deptIds, param.getStartTime(), param.getEndTime()); + break; + case 3: + // 获取月区域暂态指标分类统计表 + temp = rStatEventOrgMapper.getMonthRStatEventOrgInfoInfo(deptIds, param.getStartTime(), param.getEndTime()); + break; + default: + break; + } + + + Map> map = temp + .stream().collect(Collectors.groupingBy(RStatEventOrgVO::getOrgNo)); + + map.forEach((orgOn, rStatEventOrgVOs) -> { + RStatEventOrgVO rStatEventOrgVO = new RStatEventOrgVO(); + // 基础属性赋值 + for (RStatEventOrgVO tmp : rStatEventOrgVOs) { + if (rStatEventOrgVO.getOrgNo() == null) { + rStatEventOrgVO.setOrgNo(tmp.getOrgNo()); + rStatEventOrgVO.setDataDate(tmp.getDataDate()); + rStatEventOrgVO.setEffectiveMeasurementAverage(tmp.getEffectiveMeasurementAverage()); + rStatEventOrgVO.setEffectiveMeasurementAccrued(tmp.getEffectiveMeasurementAccrued()); + rStatEventOrgVO.setEventMeasurementAverage(tmp.getEventMeasurementAverage()); + rStatEventOrgVO.setEventMeasurementAccrued(tmp.getEventMeasurementAccrued()); + rStatEventOrgVO.setEventMeasurementRatioAverage(tmp.getEventMeasurementAverage() / tmp.getEffectiveMeasurementAverage()); + rStatEventOrgVO.setEventMeasurementRatioAccrued(tmp.getEventMeasurementAccrued() / tmp.getEffectiveMeasurementAccrued()); + } + + } + for (RStatEventOrgVO tmp : rStatEventOrgVOs) { + // 暂态指标赋值 + for (DictData eventStati : eventStatis) { + if (eventStati.getId().equals(tmp.getEventType())) { + if (eventStati.getCode().equals(RStatEventOrgVO.SHORT_INTERRUPTIONS)) { + // 日均短时中断 + rStatEventOrgVO.setDayShortInterruptions(tmp.getEEventMeasurementAverage()); + // 累计短时中断 + rStatEventOrgVO.setCumulativeShortInterruptions(tmp.getEventMeasurementAccrued()); + // 日均短时中断占比 + rStatEventOrgVO.setDayShortInterruptionsProportion(tmp.getEEventMeasurementRatioAverage()); + // 累计短时中断占比 + rStatEventOrgVO.setCumulativeShortInterruptionsProportion(tmp.getEEventMeasurementRatioAccrued()); + // 短时中断监测点数 + rStatEventOrgVO.setShortInterruptionsMonitor(314159); + // 短时中断占比 + rStatEventOrgVO.setShortInterruptionsProportion(3.14159); + // 短时中断次数 + rStatEventOrgVO.setShortInterruptionsCount(tmp.getEEventCount()); + // 短时中断频次 + rStatEventOrgVO.setShortInterruptionsFrequency(tmp.getEEventFreq()); + } else if (eventStati.getCode().equals(RStatEventOrgVO.VOLTAGE_RISE)) { + // 日均电压暂升 + rStatEventOrgVO.setDayVoltageRise(tmp.getEEventMeasurementAverage()); + // 累计电压暂升 + rStatEventOrgVO.setCumulativeVoltageRise(tmp.getEventMeasurementAccrued()); + // 日均电压暂升占比 + rStatEventOrgVO.setDayVoltageRiseProportion(tmp.getEEventMeasurementRatioAverage()); + // 累计电压暂升占比 + rStatEventOrgVO.setCumulativeVoltageRiseProportion(tmp.getEEventMeasurementRatioAccrued()); + // 电压暂升占比 + rStatEventOrgVO.setVoltageRiseProportion(3.14159); + // 电压暂升次数 + rStatEventOrgVO.setVoltageRiseCount(tmp.getEEventCount()); + // 电压暂升频次 + rStatEventOrgVO.setVoltageRiseFrequency(tmp.getEEventFreq()); + } else if (eventStati.getCode().equals(RStatEventOrgVO.VOLTAGE_DIP)) { + // 日均电压暂降 + rStatEventOrgVO.setDayVoltageDip(tmp.getEEventMeasurementAverage()); + // 累计电压暂降 + rStatEventOrgVO.setCumulativeVoltageDip(tmp.getEventMeasurementAccrued()); + // 日均电压暂降占比 + rStatEventOrgVO.setDayVoltageDipProportion(tmp.getEEventMeasurementRatioAverage()); + // 累计电压暂降占比 + rStatEventOrgVO.setCumulativeVoltageDipProportion(tmp.getEEventMeasurementRatioAccrued()); + // 电压暂升占比 + rStatEventOrgVO.setVoltageDipProportion(3.14159); + // 电压暂降次数 + rStatEventOrgVO.setVoltageDipCount(tmp.getEEventCount()); + // 电压暂降频次 + rStatEventOrgVO.setVoltageDipFrequency(tmp.getEEventFreq()); + } + + } + } + } + info.add(rStatEventOrgVO); + }); + + // 匹配单位名称 + for (DeptDTO dto : data) { + for (RStatEventOrgVO vo : info) { + if (dto.getId().equals(vo.getOrgNo())) { + vo.setOrgName(dto.getName()); + } + } + } + + return info; + } else { + return new ArrayList<>(); + } + } + + /** + * 获取变电站暂态指标分类统计表 + * + * @param param 前端传入参数 + * @return 变电站暂态指标分类统计表 + */ + @Override + public List getRStatSubstation + (UniversalFrontEndParam param) { + + // 获取当前用户的部门的子部门信息 + List data = deptFeignClient.getDeptDescendantIndexes(param.getId(), WebUtil.filterDeptType()).getData(); + + + if (CollectionUtil.isNotEmpty(data)) { + //创建返回集合 + List info = new ArrayList<>(); + + // 过滤出部门id + List deptIds = data.stream().map(DeptDTO::getId).collect(Collectors.toList()); + + // 创建集合用于封装查询出的监测点信息 + List mInfo = new ArrayList<>(); + + + // 根据部门id查询监测点id + List monitorInfo = pmsMonitorMapper.getMonitorInfo(deptIds); + + // 过滤出变电站id + List powerrIds = new ArrayList<>(); + + // 判断前端参数是否传入的变电站名称 + if (param.getSubName() != null) { + for (PmsMonitorPO po : monitorInfo) { + if (po.getPowerrName().contains(param.getSubName())) { + PmsMonitorPO pmsMonitor = new PmsMonitorPO(); + BeanUtils.copyProperties(po,pmsMonitor); + mInfo.add(pmsMonitor); + } + } + powerrIds = mInfo.stream().map(PmsMonitorPO::getPowerrId).collect(Collectors.toList()); + }else { + powerrIds = monitorInfo.stream().map(PmsMonitorPO::getPowerrId).collect(Collectors.toList()); + } + + + // 类型(1年 2季度 3月份 4日 + switch (param.getType()) { + case 1: + // 获取年变电站暂态指标分类统计表 + info = rStatSubstationMapper.getYearInfo(powerrIds, param.getStartTime(), param.getEndTime()); + break; + case 2: + // 获取季变电站暂态指标分类统计表 + info = rStatSubstationMapper.getQuarterInfo(powerrIds, param.getStartTime(), param.getEndTime()); + break; + case 3: + // 获取月变电站暂态指标分类统计表 + info = rStatSubstationMapper.getMonthInfo(powerrIds, param.getStartTime(), param.getEndTime()); + break; + default: + break; + } + // 匹配单位名称 + for (RStatSubstationVO vo : info) { + for (PmsMonitorPO pmsMonitor : monitorInfo) { + if (vo.getSubstationId().equals(pmsMonitor.getPowerrId())) { + vo.setDeptId(pmsMonitor.getOrgId()); + vo.setDeptName(pmsMonitor.getOrgName()); + vo.setSubstationName(pmsMonitor.getPowerrName()); + } + } + } + + + return info; + } else { + return new ArrayList<>(); + } + } + +} + + + diff --git a/pqs-event/event-boot/src/main/java/com/njcn/event/service/RmpEventDetailService.java b/pqs-event/event-boot/src/main/java/com/njcn/event/service/RmpEventDetailService.java new file mode 100644 index 000000000..f778314e7 --- /dev/null +++ b/pqs-event/event-boot/src/main/java/com/njcn/event/service/RmpEventDetailService.java @@ -0,0 +1,25 @@ +package com.njcn.event.service; + + +import com.baomidou.mybatisplus.extension.service.IService; +import com.njcn.event.pojo.param.UniversalFrontEndParam; +import com.njcn.event.pojo.vo.RmpEventDetailVO; + +import java.util.List; + +/** + * 暂态事件明细 + * + * @author yzh + * @date 2022/10/12 + */ + +public interface RmpEventDetailService extends IService { + + /** + * 获取暂态事件明细 + * @param param 前端参数 + * @return 暂态事件明细 + */ + List getRmpEventDetail(UniversalFrontEndParam param); +} diff --git a/pqs-event/event-boot/src/main/java/com/njcn/event/service/StatisticsOfTransientIndicatorssService.java b/pqs-event/event-boot/src/main/java/com/njcn/event/service/StatisticsOfTransientIndicatorssService.java new file mode 100644 index 000000000..0bafe1deb --- /dev/null +++ b/pqs-event/event-boot/src/main/java/com/njcn/event/service/StatisticsOfTransientIndicatorssService.java @@ -0,0 +1,41 @@ +package com.njcn.event.service; + +import com.njcn.event.pojo.param.UniversalFrontEndParam; +import com.njcn.event.pojo.vo.RStatEventOrgVO; +import com.njcn.event.pojo.vo.RStatOrgVO; +import com.njcn.event.pojo.vo.RStatSubstationVO; + +import java.util.List; + +/** + * 暂态指标统计 + * + * @author yzh + * @date 2022/10/10 + */ + +public interface StatisticsOfTransientIndicatorssService{ + + /** + * 获取区域暂态指标统计 + * + * @param param 前端参数 + * @return 获取区域暂态指标统计 + */ + List getRStatOrg(UniversalFrontEndParam param); + + /** + * 获取区域暂态指标分类统计表 + * @param param 前端参数 + * @return 区域暂态指标分类统计表 + */ + List getRStatEventOrg(UniversalFrontEndParam param); + + /** + * 获取变电站暂态指标分类统计表 + * + * @param param 前端传入参数 + * @return 变电站暂态指标分类统计表 + */ + List getRStatSubstation(UniversalFrontEndParam param); +} diff --git a/pqs-harmonic/harmonic-api/src/main/java/com/njcn/harmonic/pojo/param/PollutionSubstationQuryParam.java b/pqs-harmonic/harmonic-api/src/main/java/com/njcn/harmonic/pojo/param/PollutionSubstationQuryParam.java new file mode 100644 index 000000000..9c265d2d1 --- /dev/null +++ b/pqs-harmonic/harmonic-api/src/main/java/com/njcn/harmonic/pojo/param/PollutionSubstationQuryParam.java @@ -0,0 +1,37 @@ +package com.njcn.harmonic.pojo.param; + +import com.njcn.common.pojo.dto.SimpleDTO; +import com.njcn.device.pq.pojo.param.DeviceInfoParam; +import com.njcn.harmonic.constant.HarmonicValidMessage; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +import javax.validation.constraints.NotNull; + +/** + * Description: + * 接口文档访问地址:http://serverIP:port/swagger-ui.html + * Date: 2022/10/13 9:46【需求编号】 + * + * @author clam + * @version V1.0.0 + */ +@ApiModel(value="com-njcn-harmonic-pojo-po-PollutionSubstationQuryParam",description = "污染指标查询参数") +@Data +@AllArgsConstructor +@NoArgsConstructor +public class PollutionSubstationQuryParam extends DeviceInfoParam { + + @ApiModelProperty("污区图统计类型,根据Pollution_Statis查询码表接口获取所有类型选择一个即可") + @NotNull(message = HarmonicValidMessage.DATA_NOT_BLANK) + private SimpleDTO pollutionStatis; + + @ApiModelProperty("时间 格式:(yyyy-MM)") + @NotNull(message = HarmonicValidMessage.DATA_NOT_BLANK) + private String localDate; + + +} diff --git a/pqs-harmonic/harmonic-api/src/main/java/com/njcn/harmonic/pojo/po/RMpVThd.java b/pqs-harmonic/harmonic-api/src/main/java/com/njcn/harmonic/pojo/po/RMpVThd.java new file mode 100644 index 000000000..2e9e57c85 --- /dev/null +++ b/pqs-harmonic/harmonic-api/src/main/java/com/njcn/harmonic/pojo/po/RMpVThd.java @@ -0,0 +1,61 @@ +package com.njcn.harmonic.pojo.po; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.io.Serializable; +import java.util.Date; + +/** + * + * Description: + * 接口文档访问地址:http://serverIP:port/swagger-ui.html + * Date: 2022/10/10 19:59【需求编号】 + * + * @author clam + * @version V1.0.0 + */ +/** + * 谐波畸变率排名 + */ +@ApiModel(value="com-njcn-harmonic-pojo-po-RMpVThd") +@Data +@AllArgsConstructor +@NoArgsConstructor +@TableName(value = "r_mp_v_thd") +public class RMpVThd implements Serializable { + /** + * 监测点ID + */ + @TableField(value = "measurement_point_id") + @ApiModelProperty(value="监测点ID") + private String measurementPointId; + + /** + * 排名类型,字典表(1年 2季度 3月份 4周 5日) + */ + @TableField(value = "data_type") + @ApiModelProperty(value="排名类型,字典表(1年 2季度 3月份 4周 5日)") + private String dataType; + + /** + * 时间 + */ + @TableField(value = "data_date") + @ApiModelProperty(value="时间") + private Date dataDate; + + /** + * 谐波畸变率 + */ + @TableField(value = "v_thd") + @ApiModelProperty(value="谐波畸变率") + private Double vThd; + + private static final long serialVersionUID = 1L; +} \ No newline at end of file diff --git a/pqs-harmonic/harmonic-api/src/main/java/com/njcn/harmonic/pojo/po/RStatHarmonicOrgD.java b/pqs-harmonic/harmonic-api/src/main/java/com/njcn/harmonic/pojo/po/RStatHarmonicOrgD.java new file mode 100644 index 000000000..996582674 --- /dev/null +++ b/pqs-harmonic/harmonic-api/src/main/java/com/njcn/harmonic/pojo/po/RStatHarmonicOrgD.java @@ -0,0 +1,44 @@ +package com.njcn.harmonic.pojo.po; + +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +import java.io.Serializable; +import java.util.Date; + +/** + * (RStatHarmonicOrgD)实体类 + * + * @author qijian + * @since 2022-10-09 11:00:09 + */ +@Data +@TableName(value = "r_stat_harmonic_org_d") +public class RStatHarmonicOrgD implements Serializable { + private static final long serialVersionUID = -42929641369158167L; + /** + * 单位ID + */ + private String orgNo; + /** + * 生成数据的时间,每日统计一次 + */ + private Date dataDate; + /** + * 稳态指标类型Id,字典表ID + */ + private String harmonicType; + /** + * 超标监测点数(监测点指标统计明细日表 统计) + */ + private Integer overLimitMeasurementAverage; + /** + * 超标监测点数(监测点指标统计明细日表 统计) + */ + private Float overLimitMeasurementRatioAverage; + /** + * 数据类型,字典表(01:主网测点 02:配网测点) + */ + private String dataType; +} + diff --git a/pqs-harmonic/harmonic-api/src/main/java/com/njcn/harmonic/pojo/po/RStatHarmonicOrgM.java b/pqs-harmonic/harmonic-api/src/main/java/com/njcn/harmonic/pojo/po/RStatHarmonicOrgM.java new file mode 100644 index 000000000..782ffc096 --- /dev/null +++ b/pqs-harmonic/harmonic-api/src/main/java/com/njcn/harmonic/pojo/po/RStatHarmonicOrgM.java @@ -0,0 +1,56 @@ +package com.njcn.harmonic.pojo.po; + +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +import java.io.Serializable; +import java.util.Date; + +/** + * (RStatHarmonicOrgM)实体类 + * + * @author makejava + * @since 2022-10-09 11:38:21 + */ +@Data +@TableName(value = "r_stat_harmonic_org_m") +public class RStatHarmonicOrgM implements Serializable { + private static final long serialVersionUID = -57834557125584612L; + /** + * 单位ID + */ + private String orgNo; + /** + * 生成数据的时间,每月统计一次 + */ + private Date dataDate; + /** + * 稳态指标类型Id,字典表ID + */ + private String harmonicType; + /** + * 日均超标监测点数(根据 日表的超标监测点数 取平均值) + */ + private Integer overLimitMeasurementAverage; + /** + * 累计超标监测点数(监测点指标统计明细日表 统计) + */ + private Integer overLimitMeasurementAccrued; + /** + * 累计超标天数(根据 日表的超标监测点数 求和) + */ + private Integer overDay; + /** + * 日均超标监测点数占比(根据 日表的超标监测点数占比 取平均值) + */ + private Float overLimitMeasurementRatioAverage; + /** + * 累计超标监测点数占比(此表的累计超标监测点数/区域统计表中的区域分类统计月表中的累计有效接入监测点数) + */ + private Float overLimitMeasurementRatioAccrued; + /** + * 数据类型,字典表(01:主网测点 02:配网测点) + */ + private String dataType; +} + diff --git a/pqs-harmonic/harmonic-api/src/main/java/com/njcn/harmonic/pojo/po/RStatHarmonicOrgQ.java b/pqs-harmonic/harmonic-api/src/main/java/com/njcn/harmonic/pojo/po/RStatHarmonicOrgQ.java new file mode 100644 index 000000000..0f44e76ac --- /dev/null +++ b/pqs-harmonic/harmonic-api/src/main/java/com/njcn/harmonic/pojo/po/RStatHarmonicOrgQ.java @@ -0,0 +1,57 @@ +package com.njcn.harmonic.pojo.po; + +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +import java.io.Serializable; +import java.util.Date; + +/** + * (RStatHarmonicOrgQ)实体类 + * + * @author makejava + * @since 2022-10-09 11:38:30 + */ +@Data +@TableName(value = "r_stat_harmonic_org_q") +public class RStatHarmonicOrgQ implements Serializable { + private static final long serialVersionUID = -43036071975463523L; + /** + * 单位ID + */ + private String orgNo; + /** + * 生成数据的时间,每季度统计一次 + */ + private Date dataDate; + /** + * 稳态指标类型Id,字典表ID + */ + private String harmonicType; + /** + * 日均超标监测点数(根据 日表的超标监测点数 取平均值) + */ + private Integer overLimitMeasurementAverage; + /** + * 累计超标监测点数(监测点指标统计明细日表 统计) + */ + private Integer overLimitMeasurementAccrued; + /** + * 平均超标天数(月表的累计超标天数之和/月表的累计超标监测点数之和) + */ + private Float averageOverDay; + /** + * 日均超标监测点数占比(根据 日表的超标监测点数占比 取平均值) + */ + private Float overLimitMeasurementRatioAverage; + /** + * 累计超标监测点数占比(此表的累计超标监测点数/区域统计表中的区域分类统计季表中的累计有效接入监测点数) + */ + private Float overLimitMeasurementRatioAccrued; + /** + * 数据类型,字典表(01:主网测点 02:配网测点) + */ + private String dataType; + +} + diff --git a/pqs-harmonic/harmonic-api/src/main/java/com/njcn/harmonic/pojo/po/RStatHarmonicOrgY.java b/pqs-harmonic/harmonic-api/src/main/java/com/njcn/harmonic/pojo/po/RStatHarmonicOrgY.java new file mode 100644 index 000000000..a8ed4276a --- /dev/null +++ b/pqs-harmonic/harmonic-api/src/main/java/com/njcn/harmonic/pojo/po/RStatHarmonicOrgY.java @@ -0,0 +1,57 @@ +package com.njcn.harmonic.pojo.po; + +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +import java.io.Serializable; +import java.util.Date; + +/** + * (RStatHarmonicOrgY)实体类 + * + * @author makejava + * @since 2022-10-09 11:38:46 + */ +@Data +@TableName(value = "r_stat_harmonic_org_y") +public class RStatHarmonicOrgY implements Serializable { + private static final long serialVersionUID = 562563173347880887L; + /** + * 单位ID + */ + private String orgNo; + /** + * 生成数据的时间,每季度统计一次 + */ + private Date dataDate; + /** + * 稳态指标类型Id,字典表ID + */ + private String harmonicType; + /** + * 日均超标监测点数(根据 日表的超标监测点数 取平均值) + */ + private Integer overLimitMeasurementAverage; + /** + * 累计超标监测点数(监测点指标统计明细日表 统计) + */ + private Integer overLimitMeasurementAccrued; + /** + * 平均超标天数(月表的累计超标天数之和/月表的累计超标监测点数之和) + */ + private Float averageOverDay; + /** + * 日均超标监测点数占比(根据 日表的超标监测点数占比 取平均值) + */ + private Float overLimitMeasurementRatioAverage; + /** + * 累计超标监测点数占比(此表的累计超标监测点数/区域统计表中的区域分类统计季表中的累计有效接入监测点数) + */ + private Float overLimitMeasurementRatioAccrued; + /** + * 数据类型,字典表(01:主网测点 02:配网测点) + */ + private String dataType; + +} + diff --git a/pqs-harmonic/harmonic-api/src/main/java/com/njcn/harmonic/pojo/po/RStatPollutionSubstationM.java b/pqs-harmonic/harmonic-api/src/main/java/com/njcn/harmonic/pojo/po/RStatPollutionSubstationM.java new file mode 100644 index 000000000..48644cf4e --- /dev/null +++ b/pqs-harmonic/harmonic-api/src/main/java/com/njcn/harmonic/pojo/po/RStatPollutionSubstationM.java @@ -0,0 +1,62 @@ +package com.njcn.harmonic.pojo.po; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.io.Serializable; +import java.util.Date; + +/** + * + * Description: + * 接口文档访问地址:http://serverIP:port/swagger-ui.html + * Date: 2022/10/13 13:58【需求编号】 + * + * @author clam + * @version V1.0.0 + */ + +/** + * 变电站污区图统计月表 + */ +@ApiModel(value = "com-njcn-harmonic-pojo-po-RStatPollutionSubstationM") +@Data +@AllArgsConstructor +@NoArgsConstructor +@TableName(value = "r_stat_pollution_substation_m") +public class RStatPollutionSubstationM implements Serializable { + /** + * 变电站id + */ + @TableField(value = "substation_id") + @ApiModelProperty(value = "变电站id") + private String substationId; + + /** + * 时间 + */ + @TableField(value = "data_date") + @ApiModelProperty(value = "时间") + private Date dataDate; + + /** + * 污区图统计类型 + */ + @TableField(value = "pollution_type") + @ApiModelProperty(value = "污区图统计类型") + private String pollutionType; + + /** + * 统计值 + */ + @TableField(value = "value") + @ApiModelProperty(value = "统计值") + private Double value; + + private static final long serialVersionUID = 1L; +} \ No newline at end of file diff --git a/pqs-harmonic/harmonic-api/src/main/java/com/njcn/harmonic/pojo/vo/HistoryHarmOverLimitVO.java b/pqs-harmonic/harmonic-api/src/main/java/com/njcn/harmonic/pojo/vo/HistoryHarmOverLimitVO.java index 6b389cab2..c9f868e79 100644 --- a/pqs-harmonic/harmonic-api/src/main/java/com/njcn/harmonic/pojo/vo/HistoryHarmOverLimitVO.java +++ b/pqs-harmonic/harmonic-api/src/main/java/com/njcn/harmonic/pojo/vo/HistoryHarmOverLimitVO.java @@ -27,7 +27,7 @@ public class HistoryHarmOverLimitVO implements Serializable { @ApiModelProperty("指标名称") private String targetName; - @ApiModelProperty("指标类型") + @ApiModelProperty("指标类型:12-电压偏差;13-三相电压不平衡度;15-电压总谐波畸变率;22-负序电流;30-频率;40-谐波电压含有率;43-谐波电流幅值;46-间谐波电压含有率;61-长时闪变") private String targetCode; @ApiModelProperty("统计方式") @@ -43,22 +43,22 @@ public class HistoryHarmOverLimitVO implements Serializable { private String scale; @ApiModelProperty("时间") - private String time; + private String timeId; @ApiModelProperty("单位") private String unit; @ApiModelProperty("最大值") - private Float maxValue; + private Float maxData; @ApiModelProperty("最小值") - private Float minValue; + private Float minData; @ApiModelProperty("平均值") - private Float avgValue; + private Float avgData; @ApiModelProperty("95概率值") - private Float cp95Value; + private Float cp95Data; } diff --git a/pqs-harmonic/harmonic-api/src/main/java/com/njcn/harmonic/pojo/vo/PollutionSubstationVO.java b/pqs-harmonic/harmonic-api/src/main/java/com/njcn/harmonic/pojo/vo/PollutionSubstationVO.java new file mode 100644 index 000000000..16d8e326f --- /dev/null +++ b/pqs-harmonic/harmonic-api/src/main/java/com/njcn/harmonic/pojo/vo/PollutionSubstationVO.java @@ -0,0 +1,45 @@ +package com.njcn.harmonic.pojo.vo; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.math.BigDecimal; + +/** + * Description: + * 接口文档访问地址:http://serverIP:port/swagger-ui.html + * Date: 2022/10/13 9:46【需求编号】 + * + * @author clam + * @version V1.0.0 + */ +@ApiModel(value="com-njcn-harmonic-pojo-vo-PollutionSubstationVO",description = "污染指标查询参数") +@Data +@AllArgsConstructor +@NoArgsConstructor +public class PollutionSubstationVO { + + + @ApiModelProperty("变电站id") + private String substationId; + + @ApiModelProperty("变电站名称") + private String substationName; + + @ApiModelProperty("变电站经度") + private BigDecimal longitude; + + @ApiModelProperty("变电站纬度") + private BigDecimal latitude; + + @ApiModelProperty("污区图统计类型") + private String pollutionStatis; + + @ApiModelProperty("污染指标值") + private Double pollutionData = -1.0; + + +} diff --git a/pqs-harmonic/harmonic-api/src/main/java/com/njcn/harmonic/pojo/vo/RMpVThdVO.java b/pqs-harmonic/harmonic-api/src/main/java/com/njcn/harmonic/pojo/vo/RMpVThdVO.java new file mode 100644 index 000000000..55f3ca0bd --- /dev/null +++ b/pqs-harmonic/harmonic-api/src/main/java/com/njcn/harmonic/pojo/vo/RMpVThdVO.java @@ -0,0 +1,52 @@ +package com.njcn.harmonic.pojo.vo; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.Date; + +/** + * Description: + * 接口文档访问地址:http://serverIP:port/swagger-ui.html + * Date: 2022/10/10 20:24【需求编号】 + * + * @author clam + * @version V1.0.0 + */ +@ApiModel(value="com-njcn-harmonic-pojo-vo-RMpVThdVO") +@Data +@AllArgsConstructor +@NoArgsConstructor +public class RMpVThdVO { + + + @ApiModelProperty(value="监测点ID") + private String measurementPointId; + + @ApiModelProperty(value="监测点名称") + private String name; + + /** + * 排名类型,字典表(0日,1月,2季,3年) + */ + + @ApiModelProperty(value="排名类型,字典表(1年 2季度 3月份 4周 5日)") + private String dataType; + + /** + * 时间 + */ + + @ApiModelProperty(value="时间") + private Date dataDate; + + /** + * 谐波畸变率 + */ + + @ApiModelProperty(value="谐波畸变率") + private Double vThd; +} diff --git a/pqs-harmonic/harmonic-api/src/main/java/com/njcn/harmonic/pojo/vo/StatHarmonicOrgVO.java b/pqs-harmonic/harmonic-api/src/main/java/com/njcn/harmonic/pojo/vo/StatHarmonicOrgVO.java new file mode 100644 index 000000000..a8e44741a --- /dev/null +++ b/pqs-harmonic/harmonic-api/src/main/java/com/njcn/harmonic/pojo/vo/StatHarmonicOrgVO.java @@ -0,0 +1,28 @@ +package com.njcn.harmonic.pojo.vo; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * @author qijian + * @version 1.0.0 + * @createTime 2022/10/9 - 11:09 + */ +@Data +public class StatHarmonicOrgVO { + + @ApiModelProperty(name = "id", value = "id") + private String id; + + @ApiModelProperty(name = "name", value = "单位名") + private String name; + + @ApiModelProperty(name = "ratio", value = "监测点占比") + private Float ratio; + + @ApiModelProperty(name = "count", value = "监测点数") + private Integer count; + + +} + diff --git a/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/controller/HistoryResultController.java b/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/controller/HistoryResultController.java index 70e4b055e..be4c3d682 100644 --- a/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/controller/HistoryResultController.java +++ b/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/controller/HistoryResultController.java @@ -3,11 +3,13 @@ package com.njcn.harmonic.controller; 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.param.StatisticsBizBaseParam; import com.njcn.common.pojo.response.HttpResult; import com.njcn.common.utils.HttpResultUtil; import com.njcn.harmonic.pojo.param.HistoryParam; import com.njcn.harmonic.pojo.param.NormHistoryParam; import com.njcn.harmonic.pojo.vo.HistoryDataResultVO; +import com.njcn.harmonic.pojo.vo.StatHarmonicOrgVO; import com.njcn.harmonic.service.HistoryResultService; import com.njcn.web.controller.BaseController; import io.swagger.annotations.Api; @@ -16,9 +18,11 @@ import io.swagger.annotations.ApiOperation; import lombok.AllArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.validation.annotation.Validated; -import org.springframework.web.bind.annotation.*; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; -import java.util.Date; import java.util.List; /** @@ -55,4 +59,15 @@ public class HistoryResultController extends BaseController { List list = historyResultService.getHistoryLineData(normHistoryParam); return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, list, methodDescribe); } + + @OperateInfo(info = LogEnum.BUSINESS_COMMON) + @PostMapping("/getHarmonicProportion") + @ApiOperation("获取谐波越限监测点占比") + @ApiImplicitParam(name = "statisticsBizBaseParam", value = "谐波越限监测点参数", required = true) + public HttpResult> getHistoryLineData(@RequestBody @Validated StatisticsBizBaseParam statisticsBizBaseParam) { + String methodDescribe = getMethodDescribe("getHarmonicProportion"); + List list = historyResultService.getHarmonicProportion(statisticsBizBaseParam); + return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, list, methodDescribe); + + } } diff --git a/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/controller/NormLimitController.java b/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/controller/NormLimitController.java index 6c2ec53b2..ebac77074 100644 --- a/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/controller/NormLimitController.java +++ b/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/controller/NormLimitController.java @@ -43,7 +43,17 @@ public class NormLimitController extends BaseController { @ApiImplicitParam(name = "historyHarmOverLimitParam", value = "异常数据统计参数", required = true) public HttpResult> getHistoryTableData(@RequestBody @Validated HistoryHarmOverLimitParam historyHarmOverLimitParam) { String methodDescribe = getMethodDescribe("getHistoryTableData"); - List list = normLimitService.getHistoryTableData(historyHarmOverLimitParam); + List list = normLimitService.getHistoryData(historyHarmOverLimitParam,0); + return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, list, methodDescribe); + } + + @OperateInfo(info = LogEnum.BUSINESS_COMMON) + @PostMapping("/getHistoryData") + @ApiOperation("告警数据统计") + @ApiImplicitParam(name = "historyHarmOverLimitParam", value = "异常数据统计参数", required = true) + public HttpResult> getHistoryData(@RequestBody @Validated HistoryHarmOverLimitParam historyHarmOverLimitParam) { + String methodDescribe = getMethodDescribe("getHistoryTableData"); + List list = normLimitService.getHistoryData(historyHarmOverLimitParam,1); return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, list, methodDescribe); } } diff --git a/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/controller/PollutionSubstationController.java b/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/controller/PollutionSubstationController.java new file mode 100644 index 000000000..5e367db50 --- /dev/null +++ b/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/controller/PollutionSubstationController.java @@ -0,0 +1,56 @@ +package com.njcn.harmonic.controller; + +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.common.utils.LogUtil; +import com.njcn.harmonic.pojo.param.PollutionSubstationQuryParam; +import com.njcn.harmonic.pojo.vo.PollutionSubstationVO; +import com.njcn.harmonic.service.PollutionSubstationService; +import com.njcn.web.controller.BaseController; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiImplicitParam; +import io.swagger.annotations.ApiOperation; +import lombok.AllArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import java.util.List; + +/** + * Description: + * 接口文档访问地址:http://serverIP:port/swagger-ui.html + * Date: 2022/10/13 9:39【需求编号】 + * + * @author clam + * @version V1.0.0 + */ +@Validated +@Slf4j +@RestController +@RequestMapping("/PollutionSubstation") +@Api(tags = "变电站污染统计") +@AllArgsConstructor +public class PollutionSubstationController extends BaseController { + + private final PollutionSubstationService pollutionSubstationService; + + @OperateInfo(info = LogEnum.BUSINESS_COMMON) + @PostMapping("/getPollutionSubstationData") + @ApiOperation("按变电站及指标类型展示污染") + @ApiImplicitParam(name = "pollutionSubstationQuryParam", value = "污染指标查询参数", required = true) + public HttpResult> getPollutionSubstationData(@RequestBody @Validated PollutionSubstationQuryParam pollutionSubstationQuryParam) { + String methodDescribe = getMethodDescribe ("getPollutionSubstationData"); + LogUtil.njcnDebug(log, "{},实体参数:{}", methodDescribe, pollutionSubstationQuryParam); + List list = pollutionSubstationService.getPollutionSubstationData (pollutionSubstationQuryParam); + return HttpResultUtil.assembleCommonResponseResult (CommonResponseEnum.SUCCESS, list, methodDescribe); + } + + +} diff --git a/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/controller/THDController.java b/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/controller/THDController.java index 8e47c4308..0522da2df 100644 --- a/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/controller/THDController.java +++ b/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/controller/THDController.java @@ -3,9 +3,11 @@ package com.njcn.harmonic.controller; 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.param.StatisticsBizBaseParam; import com.njcn.common.pojo.response.HttpResult; import com.njcn.common.utils.HttpResultUtil; import com.njcn.device.pq.pojo.param.DeviceInfoParam; +import com.njcn.harmonic.pojo.vo.RMpVThdVO; import com.njcn.harmonic.pojo.vo.THDistortionCensusVO; import com.njcn.harmonic.pojo.vo.THDistortionVO; import com.njcn.harmonic.service.THDistortionService; @@ -58,5 +60,15 @@ public class THDController extends BaseController { return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, censusVO, methodDescribe); } + @OperateInfo(info = LogEnum.BUSINESS_COMMON) + @PostMapping("/getTHDTopTenData") + @ApiOperation("谐波总畸变率前十列表") + @ApiImplicitParam(name = "statisticsBizBaseParam", value = "业务参数", required = true) + public HttpResult> getTHDTopTenData(@RequestBody @Validated StatisticsBizBaseParam statisticsBizBaseParam){ + String methodDescribe = getMethodDescribe("getTHDTopTenData"); + List list = thDistortionService.getTHDTopTenData(statisticsBizBaseParam); + return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, list, methodDescribe); + } + } diff --git a/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/mapper/NormLimitMapper.java b/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/mapper/NormLimitMapper.java new file mode 100644 index 000000000..d518d0dbf --- /dev/null +++ b/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/mapper/NormLimitMapper.java @@ -0,0 +1,92 @@ +package com.njcn.harmonic.mapper; + +import cn.hutool.core.date.DateTime; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.njcn.harmonic.pojo.vo.HistoryHarmOverLimitVO; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @author denghuajun + * @version 1.0.0 + * @date 2022年10月13日 10:05 + */ +public interface NormLimitMapper extends BaseMapper { + /** + * 电压偏差 + * @param lineIndex 监测点 + * @param startTime 起始时间 + * @param endTime 结束时间 + * @return 结果 + */ + List getDyPc(@Param("lineIndex")List lineIndex, @Param("startTime") DateTime startTime, @Param("endTime") DateTime endTime); + /** + * 三相电压不平衡度 + * @param lineIndex 监测点 + * @param startTime 起始时间 + * @param endTime 结束时间 + * @return 结果 + */ + List getSxBpHd(@Param("lineIndex")List lineIndex, @Param("startTime") DateTime startTime, @Param("endTime") DateTime endTime); + /** + * 电压总畸变率 + * @param lineIndex 监测点 + * @param startTime 起始时间 + * @param endTime 结束时间 + * @return 结果 + */ + List getDyZjBl(@Param("lineIndex")List lineIndex, @Param("startTime") DateTime startTime, @Param("endTime") DateTime endTime); + /** + * 负序电流 + * @param lineIndex 监测点 + * @param startTime 起始时间 + * @param endTime 结束时间 + * @return 结果 + */ + List getFxDl(@Param("lineIndex")List lineIndex, @Param("startTime") DateTime startTime, @Param("endTime") DateTime endTime); + /** + * 频率 + * @param lineIndex 监测点 + * @param startTime 起始时间 + * @param endTime 结束时间 + * @return 结果 + */ + List getPl(@Param("lineIndex")List lineIndex, @Param("startTime") DateTime startTime, @Param("endTime") DateTime endTime); + /** + * 谐波电压含有率 + * @param lineIndex 监测点 + * @param startTime 起始时间 + * @param endTime 结束时间 + * @param number 次数 + * @return 结果 + */ + List getXbDyHyl(@Param("lineIndex")List lineIndex, @Param("startTime") DateTime startTime, @Param("endTime") DateTime endTime,@Param("number")Integer number); + + /** + * 谐波电流幅值 + * @param lineIndex 监测点 + * @param startTime 起始时间 + * @param endTime 结束时间 + * @param number 次数 + * @return 结果 + */ + List getXbDlFz(@Param("lineIndex")List lineIndex, @Param("startTime") DateTime startTime, @Param("endTime") DateTime endTime,@Param("number")Integer number); + /** + * 间谐波电压含有率 + * @param lineIndex 监测点 + * @param startTime 起始时间 + * @param endTime 结束时间 + * @param number 次数 + * @return 结果 + */ + List getJxbHyl(@Param("lineIndex")List lineIndex, @Param("startTime") DateTime startTime, @Param("endTime") DateTime endTime,@Param("number")Integer number); + /** + * 长时闪变 + * @param lineIndex 监测点 + * @param startTime 起始时间 + * @param endTime 结束时间 + * @return 结果 + */ + List getCsSb(@Param("lineIndex")List lineIndex, @Param("startTime") DateTime startTime, @Param("endTime") DateTime endTime); +} diff --git a/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/mapper/RMpVThdMapper.java b/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/mapper/RMpVThdMapper.java new file mode 100644 index 000000000..9bc51c15c --- /dev/null +++ b/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/mapper/RMpVThdMapper.java @@ -0,0 +1,17 @@ +package com.njcn.harmonic.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.njcn.harmonic.pojo.po.RMpVThd; + +/** + * + * Description: + * 接口文档访问地址:http://serverIP:port/swagger-ui.html + * Date: 2022/10/10 19:59【需求编号】 + * + * @author clam + * @version V1.0.0 + */ +public interface RMpVThdMapper extends BaseMapper { + +} \ No newline at end of file diff --git a/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/mapper/RStatPollutionSubstationMMapper.java b/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/mapper/RStatPollutionSubstationMMapper.java new file mode 100644 index 000000000..67afce97b --- /dev/null +++ b/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/mapper/RStatPollutionSubstationMMapper.java @@ -0,0 +1,25 @@ +package com.njcn.harmonic.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.njcn.harmonic.pojo.po.RStatPollutionSubstationM; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * Description: + * 接口文档访问地址:http://serverIP:port/swagger-ui.html + * Date: 2022/10/13 13:58【需求编号】 + * + * @author clam + * @version V1.0.0 + */ +public interface RStatPollutionSubstationMMapper extends BaseMapper { + int updateBatch(List list); + + int batchInsert(@Param("list") List list); + + int insertOrUpdate(RStatPollutionSubstationM record); + + int insertOrUpdateSelective(RStatPollutionSubstationM record); +} \ No newline at end of file diff --git a/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/mapper/StatHarmonicOrgDMapper.java b/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/mapper/StatHarmonicOrgDMapper.java new file mode 100644 index 000000000..6a28c23b4 --- /dev/null +++ b/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/mapper/StatHarmonicOrgDMapper.java @@ -0,0 +1,24 @@ +package com.njcn.harmonic.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.njcn.harmonic.pojo.po.RStatHarmonicOrgD; +import com.njcn.harmonic.pojo.vo.StatHarmonicOrgVO; +import com.njcn.user.pojo.dto.DeptDTO; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @author qijian + * @version 1.0.0 + * @createTime 2022/10/9 - 11:09 + */ +public interface StatHarmonicOrgDMapper extends BaseMapper { + + /** + * 查询谐波越限 日占比 + * @param list,startTime,endTime 参数 + * @return 结果 + */ + List listDayRatio(@Param("list") List list, @Param("startTime") String startTime, @Param("endTime") String endTime); +} diff --git a/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/mapper/StatHarmonicOrgMMapper.java b/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/mapper/StatHarmonicOrgMMapper.java new file mode 100644 index 000000000..2f5b8310d --- /dev/null +++ b/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/mapper/StatHarmonicOrgMMapper.java @@ -0,0 +1,24 @@ +package com.njcn.harmonic.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.njcn.harmonic.pojo.po.RStatHarmonicOrgM; +import com.njcn.harmonic.pojo.vo.StatHarmonicOrgVO; +import com.njcn.user.pojo.dto.DeptDTO; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @author qijian + * @version 1.0.0 + * @createTime 2022/10/9 - 11:09 + */ +public interface StatHarmonicOrgMMapper extends BaseMapper { + + /** + * 查询谐波越限 月占比 + * @param list,startTime,endTime 参数 + * @return 结果 + */ + List listMonthRatio(@Param("list") List list, @Param("startTime") String startTime, @Param("endTime") String endTime); +} diff --git a/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/mapper/StatHarmonicOrgQMapper.java b/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/mapper/StatHarmonicOrgQMapper.java new file mode 100644 index 000000000..62a9c00eb --- /dev/null +++ b/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/mapper/StatHarmonicOrgQMapper.java @@ -0,0 +1,24 @@ +package com.njcn.harmonic.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.njcn.harmonic.pojo.po.RStatHarmonicOrgQ; +import com.njcn.harmonic.pojo.vo.StatHarmonicOrgVO; +import com.njcn.user.pojo.dto.DeptDTO; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @author qijian + * @version 1.0.0 + * @createTime 2022/10/9 - 11:09 + */ +public interface StatHarmonicOrgQMapper extends BaseMapper { + + /** + * 查询谐波越限 季占比 + * @param list,startTime,endTime 参数 + * @return 结果 + */ + List listQuarterRatio(@Param("list") List list, @Param("startTime") String startTime, @Param("endTime") String endTime); +} diff --git a/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/mapper/StatHarmonicOrgYMapper.java b/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/mapper/StatHarmonicOrgYMapper.java new file mode 100644 index 000000000..c4faf70c8 --- /dev/null +++ b/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/mapper/StatHarmonicOrgYMapper.java @@ -0,0 +1,24 @@ +package com.njcn.harmonic.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.njcn.harmonic.pojo.po.RStatHarmonicOrgY; +import com.njcn.harmonic.pojo.vo.StatHarmonicOrgVO; +import com.njcn.user.pojo.dto.DeptDTO; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @author qijian + * @version 1.0.0 + * @createTime 2022/10/9 - 11:09 + */ +public interface StatHarmonicOrgYMapper extends BaseMapper { + + /** + * 查询谐波越限 年占比 + * @param list,startTime,endTime 参数 + * @return 结果 + */ + List listYearRatio(@Param("list") List list, @Param("startTime") String startTime, @Param("endTime") String endTime); +} diff --git a/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/mapper/mapping/NormLimitMapper.xml b/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/mapper/mapping/NormLimitMapper.xml new file mode 100644 index 000000000..8e58f2dc9 --- /dev/null +++ b/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/mapper/mapping/NormLimitMapper.xml @@ -0,0 +1,348 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/mapper/mapping/RMpVThdMapper.xml b/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/mapper/mapping/RMpVThdMapper.xml new file mode 100644 index 000000000..8cc78ae29 --- /dev/null +++ b/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/mapper/mapping/RMpVThdMapper.xml @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + measurement_point_id, data_type, data_date, v_thd + + \ No newline at end of file diff --git a/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/mapper/mapping/RStatPollutionSubstationMMapper.xml b/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/mapper/mapping/RStatPollutionSubstationMMapper.xml new file mode 100644 index 000000000..0ea186a40 --- /dev/null +++ b/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/mapper/mapping/RStatPollutionSubstationMMapper.xml @@ -0,0 +1,107 @@ + + + + + + + + + + + + + + substation_id, data_date, pollution_type, `value` + + + + update r_stat_pollution_substation_m + + + + when substation_id = #{item.substationId,jdbcType=VARCHAR} then #{item.pollutionType,jdbcType=VARCHAR} + + + + + when substation_id = #{item.substationId,jdbcType=VARCHAR} then #{item.value,jdbcType=FLOAT} + + + + where substation_id in + + #{item.substationId,jdbcType=VARCHAR} + + + + + insert into r_stat_pollution_substation_m + (substation_id, data_date, pollution_type, `value`) + values + + (#{item.substationId,jdbcType=VARCHAR}, #{item.dataDate,jdbcType=TIMESTAMP}, #{item.pollutionType,jdbcType=VARCHAR}, + #{item.value,jdbcType=FLOAT}) + + + + + insert into r_stat_pollution_substation_m + (substation_id, data_date, pollution_type, `value`) + values + (#{substationId,jdbcType=VARCHAR}, #{dataDate,jdbcType=TIMESTAMP}, #{pollutionType,jdbcType=VARCHAR}, + #{value,jdbcType=FLOAT}) + on duplicate key update + substation_id = #{substationId,jdbcType=VARCHAR}, + data_date = #{dataDate,jdbcType=TIMESTAMP}, + pollution_type = #{pollutionType,jdbcType=VARCHAR}, + `value` = #{value,jdbcType=FLOAT} + + + + insert into r_stat_pollution_substation_m + + + substation_id, + + + data_date, + + + pollution_type, + + + `value`, + + + values + + + #{substationId,jdbcType=VARCHAR}, + + + #{dataDate,jdbcType=TIMESTAMP}, + + + #{pollutionType,jdbcType=VARCHAR}, + + + #{value,jdbcType=FLOAT}, + + + on duplicate key update + + + substation_id = #{substationId,jdbcType=VARCHAR}, + + + data_date = #{dataDate,jdbcType=TIMESTAMP}, + + + pollution_type = #{pollutionType,jdbcType=VARCHAR}, + + + `value` = #{value,jdbcType=FLOAT}, + + + + \ No newline at end of file diff --git a/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/mapper/mapping/StatHarmonicOrgDMapper.xml b/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/mapper/mapping/StatHarmonicOrgDMapper.xml new file mode 100644 index 000000000..928be96ab --- /dev/null +++ b/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/mapper/mapping/StatHarmonicOrgDMapper.xml @@ -0,0 +1,22 @@ + + + + + + + diff --git a/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/mapper/mapping/StatHarmonicOrgMMapper.xml b/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/mapper/mapping/StatHarmonicOrgMMapper.xml new file mode 100644 index 000000000..bf02506ed --- /dev/null +++ b/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/mapper/mapping/StatHarmonicOrgMMapper.xml @@ -0,0 +1,22 @@ + + + + + + + diff --git a/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/mapper/mapping/StatHarmonicOrgQMapper.xml b/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/mapper/mapping/StatHarmonicOrgQMapper.xml new file mode 100644 index 000000000..34628a395 --- /dev/null +++ b/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/mapper/mapping/StatHarmonicOrgQMapper.xml @@ -0,0 +1,22 @@ + + + + + + + diff --git a/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/mapper/mapping/StatHarmonicOrgYMapper.xml b/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/mapper/mapping/StatHarmonicOrgYMapper.xml new file mode 100644 index 000000000..335f59227 --- /dev/null +++ b/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/mapper/mapping/StatHarmonicOrgYMapper.xml @@ -0,0 +1,21 @@ + + + + + + diff --git a/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/service/HistoryResultService.java b/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/service/HistoryResultService.java index 9bd704db9..21abaf40c 100644 --- a/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/service/HistoryResultService.java +++ b/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/service/HistoryResultService.java @@ -1,8 +1,10 @@ package com.njcn.harmonic.service; +import com.njcn.common.pojo.param.StatisticsBizBaseParam; import com.njcn.harmonic.pojo.param.HistoryParam; import com.njcn.harmonic.pojo.param.NormHistoryParam; import com.njcn.harmonic.pojo.vo.HistoryDataResultVO; +import com.njcn.harmonic.pojo.vo.StatHarmonicOrgVO; import java.util.List; @@ -27,4 +29,11 @@ public interface HistoryResultService { * @return 结果 */ List getHistoryLineData(NormHistoryParam normHistoryParam); + + /** + * 获取谐波越限监测点占比 + * @param statisticsBizBaseParam 参数 + * @return 结果 + */ + List getHarmonicProportion(StatisticsBizBaseParam statisticsBizBaseParam); } diff --git a/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/service/NormLimitService.java b/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/service/NormLimitService.java index ed8ddb612..7d88e99ba 100644 --- a/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/service/NormLimitService.java +++ b/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/service/NormLimitService.java @@ -17,5 +17,5 @@ public interface NormLimitService { * @param historyHarmOverLimitParam 参数 * @return 返回值 */ - List getHistoryTableData(HistoryHarmOverLimitParam historyHarmOverLimitParam); + List getHistoryData(HistoryHarmOverLimitParam historyHarmOverLimitParam,int type); } diff --git a/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/service/PollutionSubstationService.java b/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/service/PollutionSubstationService.java new file mode 100644 index 000000000..eaa2cc6cd --- /dev/null +++ b/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/service/PollutionSubstationService.java @@ -0,0 +1,29 @@ +package com.njcn.harmonic.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.njcn.harmonic.pojo.param.PollutionSubstationQuryParam; +import com.njcn.harmonic.pojo.po.RStatPollutionSubstationM; +import com.njcn.harmonic.pojo.vo.PollutionSubstationVO; + +import java.util.List; + /** + * + * Description: + * 接口文档访问地址:http://serverIP:port/swagger-ui.html + * Date: 2022/10/13 8:56【需求编号】 + * + * @author clam + * @version V1.0.0 + */ +public interface PollutionSubstationService extends IService{ + + + /** + * @Description: getPollutionSubstationData + * @Param: [pollutionSubstationQuryParam] + * @return: java.util.List + * @Author: clam + * @Date: 2022/10/13 + */ + List getPollutionSubstationData(PollutionSubstationQuryParam pollutionSubstationQuryParam); + } diff --git a/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/service/THDistortionService.java b/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/service/THDistortionService.java index 14b90b800..c5255e625 100644 --- a/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/service/THDistortionService.java +++ b/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/service/THDistortionService.java @@ -1,6 +1,8 @@ package com.njcn.harmonic.service; +import com.njcn.common.pojo.param.StatisticsBizBaseParam; import com.njcn.device.pq.pojo.param.DeviceInfoParam; +import com.njcn.harmonic.pojo.vo.RMpVThdVO; import com.njcn.harmonic.pojo.vo.THDistortionCensusVO; import com.njcn.harmonic.pojo.vo.THDistortionVO; @@ -27,4 +29,12 @@ public interface THDistortionService { * @return */ THDistortionCensusVO getTHDistortionCensus(DeviceInfoParam.BusinessParam thDistortionCensusParam); + /** + * @Description: 谐波总畸变率前十列表 + * @Param: [statisticsBizBaseParam] + * @return: java.util.List + * @Author: clam + * @Date: 2022/10/10 + */ + List getTHDTopTenData(StatisticsBizBaseParam statisticsBizBaseParam); } diff --git a/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/service/impl/HistoryResultServiceImpl.java b/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/service/impl/HistoryResultServiceImpl.java index 430232fd8..990dcc241 100644 --- a/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/service/impl/HistoryResultServiceImpl.java +++ b/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/service/impl/HistoryResultServiceImpl.java @@ -2,6 +2,8 @@ package com.njcn.harmonic.service.impl; import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.date.DateUtil; +import com.njcn.common.pojo.constant.BizParamConstant; +import com.njcn.common.pojo.param.StatisticsBizBaseParam; import com.njcn.common.utils.PubUtils; import com.njcn.device.pq.api.LineFeignClient; import com.njcn.device.pq.pojo.po.Overlimit; @@ -9,14 +11,22 @@ import com.njcn.device.pq.pojo.vo.LineDetailDataVO; import com.njcn.event.api.EventDetailFeignClient; import com.njcn.event.pojo.po.EventDetail; import com.njcn.harmonic.constant.Param; +import com.njcn.harmonic.mapper.StatHarmonicOrgDMapper; +import com.njcn.harmonic.mapper.StatHarmonicOrgMMapper; +import com.njcn.harmonic.mapper.StatHarmonicOrgQMapper; +import com.njcn.harmonic.mapper.StatHarmonicOrgYMapper; import com.njcn.harmonic.pojo.param.HistoryParam; import com.njcn.harmonic.pojo.param.NormHistoryParam; import com.njcn.harmonic.pojo.vo.EventDetailVO; import com.njcn.harmonic.pojo.vo.HistoryDataResultVO; import com.njcn.harmonic.pojo.vo.QueryResultLimitVO; +import com.njcn.harmonic.pojo.vo.StatHarmonicOrgVO; import com.njcn.harmonic.service.HistoryResultService; import com.njcn.influxdb.param.InfluxDBPublicParam; import com.njcn.influxdb.utils.InfluxDbUtils; +import com.njcn.user.api.DeptFeignClient; +import com.njcn.user.pojo.dto.DeptDTO; +import com.njcn.web.utils.WebUtil; import lombok.AllArgsConstructor; import lombok.SneakyThrows; import org.influxdb.dto.QueryResult; @@ -27,9 +37,9 @@ import java.math.BigDecimal; import java.text.DateFormat; import java.text.SimpleDateFormat; import java.time.Instant; -import java.time.format.DateTimeFormatter; import java.util.*; import java.util.concurrent.TimeUnit; +import java.util.stream.Collectors; /** * @author denghuajun @@ -45,6 +55,16 @@ public class HistoryResultServiceImpl implements HistoryResultService { private final EventDetailFeignClient eventDetailFeignClient; + private final DeptFeignClient deptFeignClient; + + private final StatHarmonicOrgYMapper statHarmonicOrgYMapper; + + private final StatHarmonicOrgQMapper statHarmonicOrgQMapper; + + private final StatHarmonicOrgMMapper statHarmonicOrgMMapper; + + private final StatHarmonicOrgDMapper statHarmonicOrgDMapper; + @Override public List getHistoryResult(HistoryParam historyParam) { List historyDataResultVOList = new ArrayList<>(); @@ -859,4 +879,119 @@ public class HistoryResultServiceImpl implements HistoryResultService { } return historyDataResultVO; } + + @Override + public List getHarmonicProportion(StatisticsBizBaseParam statisticsBizBaseParam){ + + List statHarmonicOrgVOS = new ArrayList<>(); + //获取子部门 + List depts = deptFeignClient.getDeptDescendantIndexes(statisticsBizBaseParam.getId(), WebUtil.filterDeptType()).getData(); + + if (depts.size() != 0) { + //根据上层id,查询子数据并返回一个顺序流 + depts = depts.stream().filter(allItem -> allItem.getPid().equals(statisticsBizBaseParam.getId())).collect(Collectors.toList()); + //根据时间区分表查询 + //年 季 月 日 + switch (statisticsBizBaseParam.getType().toString()) { + case BizParamConstant.STAT_BIZ_YEAR: + statHarmonicOrgVOS = statHarmonicOrgYMapper.listYearRatio(depts, statisticsBizBaseParam.getStartTime(),statisticsBizBaseParam.getEndTime()); + break; + case BizParamConstant.STAT_BIZ_QUARTER: + statHarmonicOrgVOS = statHarmonicOrgQMapper.listQuarterRatio(depts, statisticsBizBaseParam.getStartTime(),statisticsBizBaseParam.getEndTime()); + break; + case BizParamConstant.STAT_BIZ_MONTH: + statHarmonicOrgVOS = statHarmonicOrgMMapper.listMonthRatio(depts, statisticsBizBaseParam.getStartTime(),statisticsBizBaseParam.getEndTime()); + break; + case BizParamConstant.STAT_BIZ_DAY: + statHarmonicOrgVOS = statHarmonicOrgDMapper.listDayRatio(depts, statisticsBizBaseParam.getStartTime(),statisticsBizBaseParam.getEndTime()); + break; + default: + break; + } + } + + //使用流对象的方法插入name值 + if (statHarmonicOrgVOS.size() != 0){ + statHarmonicOrgVOS = transName(statHarmonicOrgVOS, depts); + } + + return statHarmonicOrgVOS; + } + + /** + * 使用流对象的方法插入数据 + */ + private static List transName(List statHarmonicOrgVOS, List deptDTOS) { + List list = statHarmonicOrgVOS.stream().map(e1 -> { + return deptDTOS.stream().filter(e2 -> {//条件判断 + return e1.getId().equals(e2.getId()); + }).map(e2 -> { + if (e2.getType() == 0) { + e1.setName(e2.getArea()); + } else { + e1.setName(e2.getName()); + } + return e1;//返回的结果 + }).collect(Collectors.toList()); + }).flatMap(List::stream).collect(Collectors.toList());//设置返回结果类型 + + return list; + } + +// /** +// * 获取季度时间段 +// * @param date +// * @return 结果 +// */ +// private static Map getSeasonDate(Date date) { +// Map result = new HashMap<>(); +// //根据当前时间初始化 +// Calendar start = Calendar.getInstance(); +// Calendar end = Calendar.getInstance(); +// start.setTime(date); +// end.setTime(date); +// //根据月份计算出季度时间段 +// int month = start.get(Calendar.MONTH); +// switch (month) { +// case Calendar.JANUARY: +// case Calendar.FEBRUARY: +// case Calendar.MARCH: +// start.set(Calendar.MONTH, 0); +// start.set(Calendar.DATE,1); +// end.set(Calendar.MONTH, 2); +// end.set(Calendar.DATE, 31); +// break; +// case Calendar.APRIL: +// case Calendar.MAY: +// case Calendar.JUNE: +// start.set(Calendar.MONTH, 3); +// start.set(Calendar.DATE,1); +// end.set(Calendar.MONTH, 5); +// end.set(Calendar.DATE, 30); +// break; +// case Calendar.JULY: +// case Calendar.AUGUST: +// case Calendar.SEPTEMBER: +// start.set(Calendar.MONTH, 6); +// start.set(Calendar.DATE,1); +// end.set(Calendar.MONTH, 8); +// end.set(Calendar.DATE, 30); +// break; +// case Calendar.OCTOBER: +// case Calendar.NOVEMBER: +// case Calendar.DECEMBER: +// start.set(Calendar.MONTH, 9); +// start.set(Calendar.DATE,1); +// end.set(Calendar.MONTH, 11); +// end.set(Calendar.DATE, 31); +// break; +// default: +// break; +// } +// //转换成date组装返回 +// result.put("startTime",start.getTime()); +// result.put("endTime",end.getTime()); +// return result; +// } + } diff --git a/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/service/impl/NormLimitServiceImpl.java b/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/service/impl/NormLimitServiceImpl.java index 4c91e7281..3537b4121 100644 --- a/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/service/impl/NormLimitServiceImpl.java +++ b/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/service/impl/NormLimitServiceImpl.java @@ -1,31 +1,22 @@ package com.njcn.harmonic.service.impl; -import com.njcn.common.utils.PubUtils; -import com.njcn.device.pq.api.LineFeignClient; -import com.njcn.device.pq.pojo.vo.LineDetailDataVO; -import com.njcn.harmonic.constant.Param; +import cn.hutool.core.date.DateUtil; +import com.njcn.common.pojo.dto.SimpleDTO; +import com.njcn.common.pojo.enums.common.ServerEnum; +import com.njcn.device.pq.api.GeneralDeviceInfoClient; +import com.njcn.device.pq.pojo.dto.GeneralDeviceDTO; +import com.njcn.device.pq.pojo.param.DeviceInfoParam; +import com.njcn.harmonic.mapper.NormLimitMapper; import com.njcn.harmonic.pojo.param.HistoryHarmOverLimitParam; import com.njcn.harmonic.pojo.vo.HistoryHarmOverLimitVO; import com.njcn.harmonic.service.NormLimitService; -import com.njcn.influxdb.param.InfluxDBPublicParam; -import com.njcn.influxdb.utils.InfluxDbUtils; +import com.njcn.web.utils.RequestUtil; import lombok.AllArgsConstructor; import lombok.SneakyThrows; -import org.influxdb.dto.QueryResult; import org.springframework.stereotype.Service; -import org.springframework.util.CollectionUtils; -import java.sql.Timestamp; -import java.text.SimpleDateFormat; -import java.time.Instant; -import java.time.LocalDateTime; -import java.time.ZoneId; -import java.time.format.DateTimeFormatter; import java.util.ArrayList; -import java.util.Date; import java.util.List; -import java.util.TimeZone; -import java.util.concurrent.TimeUnit; /** * 类介绍 @@ -38,23 +29,38 @@ import java.util.concurrent.TimeUnit; @AllArgsConstructor public class NormLimitServiceImpl implements NormLimitService { - private final InfluxDbUtils influxDbUtils; + private final GeneralDeviceInfoClient generalDeviceInfoClient; - private final LineFeignClient lineFeignClient; + private final NormLimitMapper normLimitMapper; - @SneakyThrows @Override - public List getHistoryTableData(HistoryHarmOverLimitParam historyHarmOverLimitParam) { + public List getHistoryData(HistoryHarmOverLimitParam historyHarmOverLimitParam, int type) { List historyHarmOverLimitVOList = new ArrayList<>(); List historyHarmOverLimitVO; - //处理接口数据 - String[] lineIds = new String[historyHarmOverLimitParam.getLineId().length]; + List lineIds = new ArrayList<>(); + if (type == 0) { + //处理接口数据 + System.arraycopy(historyHarmOverLimitParam.getLineId(), 0, lineIds, 0, historyHarmOverLimitParam.getLineId().length); + } else { + DeviceInfoParam deviceInfoParam = new DeviceInfoParam(); + deviceInfoParam.setDeptIndex(RequestUtil.getDeptIndex()); + deviceInfoParam.setPowerFlag(2); + deviceInfoParam.setMonitorFlag(2); + deviceInfoParam.setServerName(ServerEnum.HARMONIC.getName()); + SimpleDTO simpleDTO = new SimpleDTO(); + simpleDTO.setName("电网拓扑"); + simpleDTO.setSort(0); + simpleDTO.setCode("Power_Network"); + deviceInfoParam.setStatisticalType(simpleDTO); + //处理监测点 + List deviceDataList = generalDeviceInfoClient.getPracticalAllDeviceInfo(deviceInfoParam).getData(); + for (GeneralDeviceDTO generalDeviceDTO : deviceDataList) { + lineIds.addAll(generalDeviceDTO.getLineIndexes()); + } + } int[] types = new int[historyHarmOverLimitParam.getCondition().length]; int[] inde = new int[0]; int[] inharm = new int[0]; - for (int i = 0; i < historyHarmOverLimitParam.getLineId().length; i++) { - lineIds[i] = historyHarmOverLimitParam.getLineId()[i]; - } for (int i = 0; i < historyHarmOverLimitParam.getCondition().length; i++) { types[i] = Integer.parseInt(historyHarmOverLimitParam.getCondition()[i]); @@ -73,124 +79,172 @@ public class NormLimitServiceImpl implements NormLimitService { inharm[i] = Integer.parseInt(historyHarmOverLimitParam.getInHarmonics()[i]); } } - for (int i = 0; i < lineIds.length; i++) { - //查询数据 - for (int j = 0; j < types.length; j++) { - historyHarmOverLimitVO = getCondition(historyHarmOverLimitParam.getSearchBeginTime(), historyHarmOverLimitParam.getSearchEndTime(), String.valueOf(lineIds[i]), String.valueOf(types[j]), inde, inharm); - historyHarmOverLimitVOList.addAll(historyHarmOverLimitVO); - } + for (int i : types) { + historyHarmOverLimitVO = getMyCondition(historyHarmOverLimitParam.getSearchBeginTime(), historyHarmOverLimitParam.getSearchEndTime(), lineIds, String.valueOf(i), inde, inharm); + historyHarmOverLimitVOList.addAll(historyHarmOverLimitVO); } - //获取值 - //处理数据 return historyHarmOverLimitVOList; } /** - * influxDB相关操作 + * mysql相关操作 * 查询稳态数据分析 */ @SneakyThrows - private List getCondition(String startTime, String endTime, String lineId, String contion, int[] number, int[] valueType) { + private List getMyCondition(String startTime, String endTime, List lineId, String contion, int[] number, int[] inharm) { List historyHarmOverLimitVOList = new ArrayList<>(); //数据的转化 - historyHarmOverLimitVOList = getQueryResult(startTime, endTime, lineId, contion, number, valueType); - return historyHarmOverLimitVOList; - } - - private List getQueryResult(String startTime, String endTime, String lineList, String contion, int[] number, int[] inHarmNum) { - List historyHarmOverLimitVOList = new ArrayList<>(); - QueryResult queryResult = null; - if (!lineList.isEmpty()) { - //组装sql语句 - StringBuilder stringBuilder = new StringBuilder(); - stringBuilder.append(InfluxDBPublicParam.TIME + " >= '").append(startTime).append(InfluxDBPublicParam.START_TIME).append("' and ").append(InfluxDBPublicParam.TIME).append(" <= '").append(endTime).append(InfluxDBPublicParam.END_TIME).append("' and ("); - //sql语句 - stringBuilder.append(InfluxDBPublicParam.LINE_ID).append("='").append(lineList).append("')"); - String sql; + String targetName;//指标名称 + String unit;//单位 + if (!lineId.isEmpty()) { switch (Integer.parseInt(contion)) { case 12: - //电压偏差 - sql = "SELECT time as time, voltage_dev as aValue,phasic_type , value_type FROM pqs_abnormaldata WHERE " + stringBuilder.toString() + - " and (phasic_type ='A' or phasic_type ='B' or phasic_type ='C') " + - " and (value_type = 'MAX' or value_type = 'MIN' or value_type = 'AVG' or value_type = 'CP95') group by phasic_type order by time asc tz('Asia/Shanghai');"; - queryResult = influxDbUtils.query(sql); - historyHarmOverLimitVOList = getNormData(queryResult, contion, lineList, "电压偏差", "%"); + targetName = "电压偏差"; + unit = "%"; + historyHarmOverLimitVOList = normLimitMapper.getDyPc(lineId, DateUtil.beginOfDay(DateUtil.parse(startTime)), DateUtil.endOfDay(DateUtil.parse(endTime))); + for (HistoryHarmOverLimitVO historyHarmOverLimitVO : historyHarmOverLimitVOList) { + if (historyHarmOverLimitVO.getAvgData() == -3.14159 && historyHarmOverLimitVO.getMaxData() == -3.14159 && historyHarmOverLimitVO.getMinData() == -3.14159 && historyHarmOverLimitVO.getCp95Data() == -3.14159) { + historyHarmOverLimitVOList.remove(historyHarmOverLimitVO); + } else { + historyHarmOverLimitVO.setTargetName(targetName); + historyHarmOverLimitVO.setUnit(unit); + historyHarmOverLimitVO.setTargetCode(contion); + historyHarmOverLimitVO.setStatisticalType(Math.abs(historyHarmOverLimitVO.getMaxData()) > Math.abs(historyHarmOverLimitVO.getMinData()) ? 3 : 2); + } + } break; case 13: - //三相电压不平衡度 - sql = "SELECT time as time, ubalance as aValue,phasic_type , value_type FROM pqs_abnormaldata WHERE " + stringBuilder.toString() + - " and (phasic_type ='T') " + - " and (value_type = 'MAX' or value_type = 'MIN' or value_type = 'AVG' or value_type = 'CP95') group by phasic_type order by time asc tz('Asia/Shanghai');"; - queryResult = influxDbUtils.query(sql); - historyHarmOverLimitVOList = getNormData(queryResult, contion, lineList, "三相电压不平衡度", "/"); + targetName = "三相电压不平衡度"; + unit = "/"; + historyHarmOverLimitVOList = normLimitMapper.getSxBpHd(lineId, DateUtil.beginOfDay(DateUtil.parse(startTime)), DateUtil.endOfDay(DateUtil.parse(endTime))); + for (HistoryHarmOverLimitVO historyHarmOverLimitVO : historyHarmOverLimitVOList) { + if (historyHarmOverLimitVO.getAvgData() == -3.14159 && historyHarmOverLimitVO.getMaxData() == -3.14159 && historyHarmOverLimitVO.getMinData() == -3.14159 && historyHarmOverLimitVO.getCp95Data() == -3.14159) { + historyHarmOverLimitVOList.remove(historyHarmOverLimitVO); + } else { + historyHarmOverLimitVO.setTargetName(targetName); + historyHarmOverLimitVO.setUnit(unit); + historyHarmOverLimitVO.setTargetCode(contion); + historyHarmOverLimitVO.setStatisticalType(Math.abs(historyHarmOverLimitVO.getMaxData()) > Math.abs(historyHarmOverLimitVO.getCp95Data()) ? 3 : 4); + } + } break; case 15: - //电压总谐波畸变率 - sql = "SELECT time as time, uaberrance as aValue,phasic_type , value_type FROM pqs_abnormaldata WHERE " + stringBuilder.toString() + - " and (phasic_type ='A' or phasic_type ='B' or phasic_type ='C') " + - " and (value_type = 'MAX' or value_type = 'MIN' or value_type = 'AVG' or value_type = 'CP95') group by phasic_type order by time asc tz('Asia/Shanghai');"; - queryResult = influxDbUtils.query(sql); - historyHarmOverLimitVOList = getNormData(queryResult, contion, lineList, "电压总谐波畸变率", "%"); + targetName = "电压总谐波畸变率"; + unit = "%"; + historyHarmOverLimitVOList = normLimitMapper.getDyZjBl(lineId, DateUtil.beginOfDay(DateUtil.parse(startTime)), DateUtil.endOfDay(DateUtil.parse(endTime))); + for (HistoryHarmOverLimitVO historyHarmOverLimitVO : historyHarmOverLimitVOList) { + if (historyHarmOverLimitVO.getAvgData() == -3.14159 && historyHarmOverLimitVO.getMaxData() == -3.14159 && historyHarmOverLimitVO.getMinData() == -3.14159 && historyHarmOverLimitVO.getCp95Data() == -3.14159) { + historyHarmOverLimitVOList.remove(historyHarmOverLimitVO); + } else { + historyHarmOverLimitVO.setTargetName(targetName); + historyHarmOverLimitVO.setUnit(unit); + historyHarmOverLimitVO.setTargetCode(contion); + historyHarmOverLimitVO.setStatisticalType(4); + } + } break; case 22: - //负序电流 - sql = "SELECT time as time, i_neg as aValue ,phasic_type , value_type FROM pqs_abnormaldata WHERE " + stringBuilder.toString() + - " and (phasic_type ='T') " + - " and (value_type = 'MAX' or value_type = 'MIN' or value_type = 'AVG' or value_type = 'CP95') group by phasic_type order by time asc tz('Asia/Shanghai');"; - queryResult = influxDbUtils.query(sql); - historyHarmOverLimitVOList = getNormData(queryResult, contion, lineList, "负序电流", "/"); + targetName = "负序电流"; + unit = "/"; + historyHarmOverLimitVOList = normLimitMapper.getFxDl(lineId, DateUtil.beginOfDay(DateUtil.parse(startTime)), DateUtil.endOfDay(DateUtil.parse(endTime))); + for (HistoryHarmOverLimitVO historyHarmOverLimitVO : historyHarmOverLimitVOList) { + if (historyHarmOverLimitVO.getAvgData() == -3.14159 && historyHarmOverLimitVO.getMaxData() == -3.14159 && historyHarmOverLimitVO.getMinData() == -3.14159 && historyHarmOverLimitVO.getCp95Data() == -3.14159) { + historyHarmOverLimitVOList.remove(historyHarmOverLimitVO); + } else { + historyHarmOverLimitVO.setTargetName(targetName); + historyHarmOverLimitVO.setUnit(unit); + historyHarmOverLimitVO.setTargetCode(contion); + historyHarmOverLimitVO.setStatisticalType(Math.abs(historyHarmOverLimitVO.getMaxData()) > Math.abs(historyHarmOverLimitVO.getCp95Data()) ? 3 : 4); + } + } break; case 30: - //频率 V9暂时代表Freq - sql = "SELECT time as time, freq_dev as aValue ,phasic_type , value_type FROM pqs_abnormaldata WHERE " + stringBuilder.toString() + - " and (phasic_type ='T') " + - " and (value_type = 'MAX' or value_type = 'MIN' or value_type = 'AVG' or value_type = 'CP95') group by phasic_type order by time asc tz('Asia/Shanghai');"; - queryResult = influxDbUtils.query(sql); - historyHarmOverLimitVOList = getNormData(queryResult, contion, lineList, "频率", "Hz"); + targetName = "频率"; + unit = "Hz"; + historyHarmOverLimitVOList = normLimitMapper.getPl(lineId, DateUtil.beginOfDay(DateUtil.parse(startTime)), DateUtil.endOfDay(DateUtil.parse(endTime))); + for (HistoryHarmOverLimitVO historyHarmOverLimitVO : historyHarmOverLimitVOList) { + if (historyHarmOverLimitVO.getAvgData() == -3.14159 && historyHarmOverLimitVO.getMaxData() == -3.14159 && historyHarmOverLimitVO.getMinData() == -3.14159 && historyHarmOverLimitVO.getCp95Data() == -3.14159) { + historyHarmOverLimitVOList.remove(historyHarmOverLimitVO); + } else { + historyHarmOverLimitVO.setTargetName(targetName); + historyHarmOverLimitVO.setUnit(unit); + historyHarmOverLimitVO.setTargetCode(contion); + historyHarmOverLimitVO.setStatisticalType(Math.abs(historyHarmOverLimitVO.getMaxData()) > Math.abs(historyHarmOverLimitVO.getMinData()) ? 3 : 2); + } + } break; case 40: - for (int i = 0; i < number.length; i++) { - List harmOverLimitVOList; - //谐波电压含有率 - sql = "SELECT time as time, uharm_" + number[i] + " as aValue ,phasic_type , value_type FROM pqs_abnormaldata WHERE " + stringBuilder.toString() + - " and (phasic_type ='A' or phasic_type ='B' or phasic_type ='C') " + - " and (value_type = 'MAX' or value_type = 'MIN' or value_type = 'AVG' or value_type = 'CP95') group by phasic_type order by time asc tz('Asia/Shanghai');"; - queryResult = influxDbUtils.query(sql); - harmOverLimitVOList = getNormData(queryResult, contion, lineList, "谐波电压含有率", "%", number[i]); - historyHarmOverLimitVOList.addAll(harmOverLimitVOList); + targetName = "谐波电压含有率"; + unit = "%"; + for (int i : number) { + historyHarmOverLimitVOList = normLimitMapper.getXbDyHyl(lineId, DateUtil.beginOfDay(DateUtil.parse(startTime)), DateUtil.endOfDay(DateUtil.parse(endTime)), i); + for (HistoryHarmOverLimitVO historyHarmOverLimitVO : historyHarmOverLimitVOList) { + if (historyHarmOverLimitVO.getAvgData() == -3.14159 && historyHarmOverLimitVO.getMaxData() == -3.14159 && historyHarmOverLimitVO.getMinData() == -3.14159 && historyHarmOverLimitVO.getCp95Data() == -3.14159) { + historyHarmOverLimitVOList.remove(historyHarmOverLimitVO); + } else { + historyHarmOverLimitVO.setTargetName(targetName); + historyHarmOverLimitVO.setUnit(unit); + historyHarmOverLimitVO.setNumber(i); + historyHarmOverLimitVO.setTargetCode(contion); + historyHarmOverLimitVO.setStatisticalType(4); + } + } } break; case 43: - for (int i = 0; i < number.length; i++) { - List harmOverLimitVOList; - //谐波电流幅值 - sql = "SELECT time as time, iharm_" + number[i] + " as aValue ,phasic_type , value_type FROM pqs_abnormaldata WHERE " + stringBuilder.toString() + - " and (phasic_type ='A' or phasic_type ='B' or phasic_type ='C') " + - " and (value_type = 'MAX' or value_type = 'MIN' or value_type = 'AVG' or value_type = 'CP95') group by phasic_type order by time asc tz('Asia/Shanghai');"; - queryResult = influxDbUtils.query(sql); - harmOverLimitVOList = getNormData(queryResult, contion, lineList, "谐波电流幅值", "A", number[i]); - historyHarmOverLimitVOList.addAll(harmOverLimitVOList); + targetName = "谐波电流幅值"; + unit = "A"; + for (int i : number) { + historyHarmOverLimitVOList = normLimitMapper.getXbDlFz(lineId, DateUtil.beginOfDay(DateUtil.parse(startTime)), DateUtil.endOfDay(DateUtil.parse(endTime)), i); + for (HistoryHarmOverLimitVO historyHarmOverLimitVO : historyHarmOverLimitVOList) { + if (historyHarmOverLimitVO.getAvgData() == -3.14159 && historyHarmOverLimitVO.getMaxData() == -3.14159 && historyHarmOverLimitVO.getMinData() == -3.14159 && historyHarmOverLimitVO.getCp95Data() == -3.14159) { + historyHarmOverLimitVOList.remove(historyHarmOverLimitVO); + } else { + historyHarmOverLimitVO.setTargetName(targetName); + historyHarmOverLimitVO.setUnit(unit); + historyHarmOverLimitVO.setNumber(i); + historyHarmOverLimitVO.setTargetCode(contion); + historyHarmOverLimitVO.setStatisticalType(4); + } + } } break; case 46: - for (int i = 0; i < inHarmNum.length; i++) { - List harmOverLimitVOList; - //间谐波电压含有率 - sql = "SELECT time as time, inuharm_" + inHarmNum[i] + " as aValue ,phasic_type , value_type FROM pqs_abnormaldata WHERE " + stringBuilder.toString() + - " and (phasic_type ='A' or phasic_type ='B' or phasic_type ='C') " + - " and (value_type = 'MAX' or value_type = 'MIN' or value_type = 'AVG' or value_type = 'CP95') group by phasic_type order by time asc tz('Asia/Shanghai');"; - queryResult = influxDbUtils.query(sql); - harmOverLimitVOList = getNormData(queryResult, contion, lineList, "间谐波电压含有率", "%", inHarmNum[i]); - historyHarmOverLimitVOList.addAll(harmOverLimitVOList); + targetName = "间谐波电压含有率"; + unit = "%"; + for (int i : inharm) { + historyHarmOverLimitVOList = normLimitMapper.getJxbHyl(lineId, DateUtil.beginOfDay(DateUtil.parse(startTime)), DateUtil.endOfDay(DateUtil.parse(endTime)), i); + for (HistoryHarmOverLimitVO historyHarmOverLimitVO : historyHarmOverLimitVOList) { + if (historyHarmOverLimitVO.getAvgData() == -3.14159 && historyHarmOverLimitVO.getMaxData() == -3.14159 && historyHarmOverLimitVO.getMinData() == -3.14159 && historyHarmOverLimitVO.getCp95Data() == -3.14159) { + historyHarmOverLimitVOList.remove(historyHarmOverLimitVO); + } else { + historyHarmOverLimitVO.setTargetName(targetName); + historyHarmOverLimitVO.setUnit(unit); + historyHarmOverLimitVO.setNumber(i); + historyHarmOverLimitVO.setTargetCode(contion); + historyHarmOverLimitVO.setStatisticalType(4); + } + } } break; case 61: //长时闪变 - sql = "SELECT time as time, flicker as aValue ,phasic_type , value_type FROM pqs_abnormaldata WHERE " + stringBuilder.toString() + - " and (phasic_type ='A' or phasic_type ='B' or phasic_type ='C') " + - " and (value_type = 'AVG') group by phasic_type order by time asc tz('Asia/Shanghai');"; - queryResult = influxDbUtils.query(sql); - historyHarmOverLimitVOList = getNormData(queryResult, contion, lineList, "长时闪变", "/"); + targetName = "长时闪变"; + unit = "/"; + historyHarmOverLimitVOList = normLimitMapper.getCsSb(lineId, DateUtil.beginOfDay(DateUtil.parse(startTime)), DateUtil.endOfDay(DateUtil.parse(endTime))); + for (HistoryHarmOverLimitVO historyHarmOverLimitVO : historyHarmOverLimitVOList) { + if (historyHarmOverLimitVO.getAvgData() == -3.14159) { + historyHarmOverLimitVOList.remove(historyHarmOverLimitVO); + } else { + historyHarmOverLimitVO.setTargetName(targetName); + historyHarmOverLimitVO.setUnit(unit); + historyHarmOverLimitVO.setMaxData(3.14159f); + historyHarmOverLimitVO.setMinData(3.14159f); + historyHarmOverLimitVO.setCp95Data(3.14159f); + historyHarmOverLimitVO.setTargetCode(contion); + historyHarmOverLimitVO.setStatisticalType(1); + } + } break; default: break; @@ -200,328 +254,4 @@ public class NormLimitServiceImpl implements NormLimitService { } return historyHarmOverLimitVOList; } - - - //数据组装 - @SneakyThrows - private List getNormData(QueryResult queryResult, String contion, String lineList, String phaseName, String unit) { - List historyHarmOverLimitVOList = new ArrayList<>(); - List qusery = queryResult.getResults(); - SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SS'Z'"); - sdf.setTimeZone(TimeZone.getTimeZone("UTC")); - SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd"); - - //获取监测点详情 - LineDetailDataVO lineDetailDataVO = lineFeignClient.getLineDetailData(lineList).getData(); - if (!CollectionUtils.isEmpty(qusery.get(0).getSeries())) { - String time = ""; - Float aMax = 0.0f, aMin = 0.0f, aAvg = 0.0f, aCp95 = 0.0f, bMax = 0.0f, bMin = 0.0f, bAvg = 0.0f, bCp95 = 0.0f, cMax = 0.0f, cMin = 0.0f, cAvg = 0.0f, cCp95 = 0.0f; - for (int i = 0; i < qusery.get(0).getSeries().size(); i++) { - if (qusery.get(0).getSeries().get(i).getTags().get("phasic_type").equals("A")) { - HistoryHarmOverLimitVO historyDataResultVO = new HistoryHarmOverLimitVO(); - if (!CollectionUtils.isEmpty(qusery.get(0).getSeries().get(i).getValues())) { - for (int j = 0; j < qusery.get(0).getSeries().get(i).getValues().size(); j++) { - List objectList = qusery.get(0).getSeries().get(i).getValues().get(j); - String aa = String.valueOf(objectList.get(0)); - Date sd = dateFormat.parse(aa); - time = dateFormat.format(sd); - if (Integer.parseInt(contion) == 61) { - historyDataResultVO.setMaxValue((float) 3.14159); - historyDataResultVO.setMinValue((float) 3.14159); - historyDataResultVO.setCp95Value((float) 3.14159); - aAvg = Float.parseFloat(String.valueOf(objectList.get(1))); - historyDataResultVO.setAvgValue(aAvg); - } else { - if (objectList.get(3).equals("MAX")) { - aMax = Float.parseFloat(String.valueOf(objectList.get(1))); - historyDataResultVO.setMaxValue(aMax); - } else if (objectList.get(3).equals("MIN")) { - aMin = Float.parseFloat(String.valueOf(objectList.get(1))); - historyDataResultVO.setMinValue(aMin); - } else if (objectList.get(3).equals("AVG")) { - aAvg = Float.parseFloat(String.valueOf(objectList.get(1))); - historyDataResultVO.setAvgValue(aAvg); - } else if (objectList.get(3).equals("CP95")) { - aCp95 = Float.parseFloat(String.valueOf(objectList.get(1))); - historyDataResultVO.setCp95Value(aCp95); - } - } - } - } - historyDataResultVO.setTime(time); - historyDataResultVO.setLineName(lineDetailDataVO.getLineName()); - historyDataResultVO.setLineId(lineList); - historyDataResultVO.setNumber(0); - historyDataResultVO.setSubName(lineDetailDataVO.getBdName()); - historyDataResultVO.setTargetCode(contion); - historyDataResultVO.setTargetName(phaseName); - if (Integer.parseInt(contion) == 12 || Integer.parseInt(contion) == 15) { - if (PubUtils.ptTypeName(lineDetailDataVO.getPtType()) != 0) { - historyDataResultVO.setPhaseType("AB"); - } else { - historyDataResultVO.setPhaseType("A"); - } - historyDataResultVO.setStatisticalType(Math.abs(aMax) > Math.abs(aMin) ? 3 : 2); - } else if (Integer.parseInt(contion) == 13 || Integer.parseInt(contion) == 22) { - historyDataResultVO.setPhaseType("/"); - historyDataResultVO.setStatisticalType(Math.abs(aMax) > Math.abs(aCp95) ? 3 : 4); - } else { - if (PubUtils.ptTypeName(lineDetailDataVO.getPtType()) != 0) { - historyDataResultVO.setPhaseType("AB"); - } else { - historyDataResultVO.setPhaseType("A"); - } - historyDataResultVO.setStatisticalType(3); - } - historyDataResultVO.setScale(lineDetailDataVO.getScale()); - historyDataResultVO.setUnit(unit); - historyHarmOverLimitVOList.add(historyDataResultVO); - } - if ("12".equals(contion) || "15".equals(contion) || "40".equals(contion) || "61".equals(contion)) { - if (qusery.get(0).getSeries().get(i).getTags().get("phasic_type").equals("B")) { - HistoryHarmOverLimitVO historyDataResultVO = new HistoryHarmOverLimitVO(); - if (!CollectionUtils.isEmpty(qusery.get(0).getSeries().get(i).getValues())) { - for (int j = 0; j < qusery.get(0).getSeries().get(i).getValues().size(); j++) { - List objectList = qusery.get(0).getSeries().get(i).getValues().get(j); - String aa = String.valueOf(objectList.get(0)); - Date sd = dateFormat.parse(aa); - time = dateFormat.format(sd); - if (Integer.parseInt(contion) == 61) { - historyDataResultVO.setMaxValue((float) 3.14159); - historyDataResultVO.setMinValue((float) 3.14159); - historyDataResultVO.setCp95Value((float) 3.14159); - aAvg = Float.parseFloat(String.valueOf(objectList.get(1))); - historyDataResultVO.setAvgValue(aAvg); - } else { - if (objectList.get(3).equals("MAX")) { - bMax = Float.parseFloat(String.valueOf(objectList.get(1))); - historyDataResultVO.setMaxValue(bMax); - } else if (objectList.get(3).equals("MIN")) { - bMin = Float.parseFloat(String.valueOf(objectList.get(1))); - historyDataResultVO.setMinValue(bMin); - } else if (objectList.get(3).equals("AVG")) { - bAvg = Float.parseFloat(String.valueOf(objectList.get(1))); - historyDataResultVO.setAvgValue(bAvg); - } else if (objectList.get(3).equals("CP95")) { - bCp95 = Float.parseFloat(String.valueOf(objectList.get(1))); - historyDataResultVO.setCp95Value(bCp95); - } - } - } - } - historyDataResultVO.setTime(time); - historyDataResultVO.setLineName(lineDetailDataVO.getLineName()); - historyDataResultVO.setLineId(lineList); - historyDataResultVO.setNumber(0); - historyDataResultVO.setSubName(lineDetailDataVO.getBdName()); - historyDataResultVO.setTargetCode(contion); - historyDataResultVO.setTargetName(phaseName); - if (Integer.parseInt(contion) == 12 || Integer.parseInt(contion) == 15) { - if (PubUtils.ptTypeName(lineDetailDataVO.getPtType()) != 0) { - historyDataResultVO.setPhaseType("BC"); - } else { - historyDataResultVO.setPhaseType("B"); - } - historyDataResultVO.setStatisticalType(Math.abs(aMax) > Math.abs(aMin) ? 3 : 2); - } else if (Integer.parseInt(contion) == 13 || Integer.parseInt(contion) == 22) { - historyDataResultVO.setPhaseType("/"); - historyDataResultVO.setStatisticalType(Math.abs(aMax) > Math.abs(aCp95) ? 3 : 4); - } else { - if (PubUtils.ptTypeName(lineDetailDataVO.getPtType()) != 0) { - historyDataResultVO.setPhaseType("BC"); - } else { - historyDataResultVO.setPhaseType("B"); - } - historyDataResultVO.setStatisticalType(3); - } - historyDataResultVO.setScale(lineDetailDataVO.getScale()); - historyDataResultVO.setUnit(unit); - historyHarmOverLimitVOList.add(historyDataResultVO); - } else if (qusery.get(0).getSeries().get(i).getTags().get("phasic_type").equals("C")) { - if (!CollectionUtils.isEmpty(qusery.get(0).getSeries().get(i).getValues())) { - HistoryHarmOverLimitVO historyDataResultVO = new HistoryHarmOverLimitVO(); - for (int j = 0; j < qusery.get(0).getSeries().get(i).getValues().size(); j++) { - List objectList = qusery.get(0).getSeries().get(i).getValues().get(j); - String aa = String.valueOf(objectList.get(0)); - Date sd = dateFormat.parse(aa); - time = dateFormat.format(sd); - if (Integer.parseInt(contion) == 61) { - historyDataResultVO.setMaxValue((float) 3.14159); - historyDataResultVO.setMinValue((float) 3.14159); - historyDataResultVO.setCp95Value((float) 3.14159); - aAvg = Float.parseFloat(String.valueOf(objectList.get(1))); - historyDataResultVO.setAvgValue(aAvg); - } else { - if (objectList.get(3).equals("MAX")) { - cMax = Float.parseFloat(String.valueOf(objectList.get(1))); - historyDataResultVO.setMaxValue(cMax); - } else if (objectList.get(3).equals("MIN")) { - cMin = Float.parseFloat(String.valueOf(objectList.get(1))); - historyDataResultVO.setMinValue(cMin); - } else if (objectList.get(3).equals("AVG")) { - cAvg = Float.parseFloat(String.valueOf(objectList.get(1))); - historyDataResultVO.setAvgValue(cAvg); - } else if (objectList.get(3).equals("CP95")) { - cCp95 = Float.parseFloat(String.valueOf(objectList.get(1))); - historyDataResultVO.setCp95Value(cCp95); - } - } - } - historyDataResultVO.setTime(time); - historyDataResultVO.setLineName(lineDetailDataVO.getLineName()); - historyDataResultVO.setLineId(lineList); - historyDataResultVO.setNumber(0); - historyDataResultVO.setSubName(lineDetailDataVO.getBdName()); - historyDataResultVO.setTargetCode(contion); - historyDataResultVO.setTargetName(phaseName); - if (Integer.parseInt(contion) == 12 || Integer.parseInt(contion) == 15) { - if (PubUtils.ptTypeName(lineDetailDataVO.getPtType()) != 0) { - historyDataResultVO.setPhaseType("CA"); - } else { - historyDataResultVO.setPhaseType("C"); - } - historyDataResultVO.setStatisticalType(Math.abs(cMax) > Math.abs(cMin) ? 3 : 2); - } else if (Integer.parseInt(contion) == 13 || Integer.parseInt(contion) == 22) { - historyDataResultVO.setPhaseType("/"); - historyDataResultVO.setStatisticalType(Math.abs(cMax) > Math.abs(cCp95) ? 3 : 4); - } else { - if (PubUtils.ptTypeName(lineDetailDataVO.getPtType()) != 0) { - historyDataResultVO.setPhaseType("CA"); - } else { - historyDataResultVO.setPhaseType("C"); - } - historyDataResultVO.setStatisticalType(3); - } - historyDataResultVO.setScale(lineDetailDataVO.getScale()); - historyDataResultVO.setUnit(unit); - historyHarmOverLimitVOList.add(historyDataResultVO); - } - } - } - } - } - return historyHarmOverLimitVOList; - } - - @SneakyThrows - private List getNormData(QueryResult queryResult, String contion, String lineList, String phaseName, String unit, int number) { - List historyHarmOverLimitVOList = new ArrayList<>(); - List qusery = queryResult.getResults(); - SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SS'Z'"); - sdf.setTimeZone(TimeZone.getTimeZone("UTC")); - SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd"); - //获取监测点详情 - LineDetailDataVO lineDetailDataVO = lineFeignClient.getLineDetailData(lineList).getData(); - if (!CollectionUtils.isEmpty(qusery.get(0).getSeries())) { - String time = ""; - Float aMax = 0.0f, aMin = 0.0f, aAvg = 0.0f, aCp95 = 0.0f, bMax = 0.0f, bMin = 0.0f, bAvg = 0.0f, bCp95 = 0.0f, cMax = 0.0f, cMin = 0.0f, cAvg = 0.0f, cCp95 = 0.0f; - HistoryHarmOverLimitVO historyDataResultVO = new HistoryHarmOverLimitVO(); - for (int i = 0; i < qusery.get(0).getSeries().get(0).getValues().size(); i++) { - //A相的最大值 - if (!CollectionUtils.isEmpty(qusery.get(0).getSeries())) { - aMax = Float.parseFloat(qusery.get(0).getSeries().get(0).getValues().get(i).get(1).toString()); - historyDataResultVO.setMaxValue(aMax); - } - //A相的最小值 - if (!CollectionUtils.isEmpty(qusery.get(1).getSeries())) { - aMin = Float.parseFloat(qusery.get(1).getSeries().get(0).getValues().get(i).get(1).toString()); - historyDataResultVO.setMinValue(aMin); - } - //A相的评价值 - if (!CollectionUtils.isEmpty(qusery.get(2).getSeries())) { - aAvg = Float.parseFloat(qusery.get(2).getSeries().get(0).getValues().get(i).get(1).toString()); - historyDataResultVO.setAvgValue(aAvg); - } - //A相的CP95 - if (!CollectionUtils.isEmpty(qusery.get(3).getSeries())) { - time = String.valueOf(qusery.get(3).getSeries().get(0).getValues().get(i).get(0)); - aCp95 = Float.parseFloat(qusery.get(3).getSeries().get(0).getValues().get(i).get(1).toString()); - historyDataResultVO.setTime(dateFormat.format(sdf.parse(time))); - historyDataResultVO.setCp95Value(aCp95); - } - historyDataResultVO.setLineName(lineDetailDataVO.getLineName()); - historyDataResultVO.setLineId(lineList); - historyDataResultVO.setNumber(number); - historyDataResultVO.setSubName(lineDetailDataVO.getBdName()); - historyDataResultVO.setTargetCode(contion); - historyDataResultVO.setTargetName(number + "次" + phaseName); - historyDataResultVO.setPhaseType("A"); - historyDataResultVO.setStatisticalType(4); - historyDataResultVO.setScale(lineDetailDataVO.getScale()); - historyDataResultVO.setUnit(unit); - historyHarmOverLimitVOList.add(historyDataResultVO); - } - for (int i = 0; i < qusery.get(4).getSeries().get(0).getValues().size(); i++) { - HistoryHarmOverLimitVO historyDataResultVOB = new HistoryHarmOverLimitVO(); - //B相的最大值 - if (!CollectionUtils.isEmpty(qusery.get(4).getSeries())) { - bMax = Float.parseFloat(qusery.get(4).getSeries().get(0).getValues().get(i).get(1).toString()); - historyDataResultVOB.setMaxValue(bMax); - } - //B相的最小值 - if (!CollectionUtils.isEmpty(qusery.get(5).getSeries())) { - bMin = Float.parseFloat(qusery.get(5).getSeries().get(0).getValues().get(i).get(1).toString()); - historyDataResultVOB.setMinValue(bMin); - } - //B相的平均值 - if (!CollectionUtils.isEmpty(qusery.get(6).getSeries())) { - bAvg = Float.parseFloat(qusery.get(6).getSeries().get(0).getValues().get(i).get(1).toString()); - historyDataResultVOB.setAvgValue(bAvg); - } - //B相的CP95 - if (!CollectionUtils.isEmpty(qusery.get(7).getSeries())) { - time = String.valueOf(qusery.get(7).getSeries().get(0).getValues().get(i).get(0)); - bCp95 = Float.parseFloat(qusery.get(7).getSeries().get(0).getValues().get(i).get(1).toString()); - historyDataResultVOB.setTime(dateFormat.format(sdf.parse(time))); - historyDataResultVOB.setCp95Value(bCp95); - } - historyDataResultVOB.setLineName(lineDetailDataVO.getLineName()); - historyDataResultVOB.setLineId(lineList); - historyDataResultVOB.setNumber(number); - historyDataResultVOB.setSubName(lineDetailDataVO.getBdName()); - historyDataResultVOB.setTargetCode(contion); - historyDataResultVOB.setTargetName(number + "次" + phaseName); - historyDataResultVOB.setPhaseType("B"); - historyDataResultVOB.setScale(lineDetailDataVO.getScale()); - historyDataResultVOB.setUnit(unit); - historyHarmOverLimitVOList.add(historyDataResultVOB); - } - for (int i = 0; i < qusery.get(8).getSeries().get(0).getValues().size(); i++) { - HistoryHarmOverLimitVO historyDataResultVOC = new HistoryHarmOverLimitVO(); - //C相的最大值 - if (!CollectionUtils.isEmpty(qusery.get(8).getSeries())) { - cMax = Float.parseFloat(qusery.get(8).getSeries().get(0).getValues().get(i).get(1).toString()); - historyDataResultVOC.setMaxValue(cMax); - } - //C相的最小值 - if (!CollectionUtils.isEmpty(qusery.get(9).getSeries())) { - cMin = Float.parseFloat(qusery.get(9).getSeries().get(0).getValues().get(i).get(1).toString()); - historyDataResultVOC.setMinValue(cMin); - } - //C相的平均值 - if (!CollectionUtils.isEmpty(qusery.get(10).getSeries())) { - cAvg = Float.parseFloat(qusery.get(10).getSeries().get(0).getValues().get(i).get(1).toString()); - historyDataResultVOC.setAvgValue(cAvg); - } - //C相的CP95 - if (!CollectionUtils.isEmpty(qusery.get(11).getSeries())) { - time = String.valueOf(qusery.get(11).getSeries().get(0).getValues().get(i).get(0)); - cCp95 = Float.parseFloat(qusery.get(11).getSeries().get(0).getValues().get(i).get(1).toString()); - historyDataResultVOC.setTime(dateFormat.format(sdf.parse(time))); - historyDataResultVOC.setCp95Value(cCp95); - } - historyDataResultVOC.setLineName(lineDetailDataVO.getLineName()); - historyDataResultVOC.setLineId(lineList); - historyDataResultVOC.setNumber(number); - historyDataResultVOC.setSubName(lineDetailDataVO.getBdName()); - historyDataResultVOC.setTargetCode(contion); - historyDataResultVOC.setTargetName(number + "次" + phaseName); - historyDataResultVOC.setPhaseType("C"); - historyDataResultVOC.setScale(lineDetailDataVO.getScale()); - historyDataResultVOC.setUnit(unit); - historyHarmOverLimitVOList.add(historyDataResultVOC); - } - } - return historyHarmOverLimitVOList; - } } diff --git a/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/service/impl/PollutionSubstationServiceImpl.java b/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/service/impl/PollutionSubstationServiceImpl.java new file mode 100644 index 000000000..2c4c39dc6 --- /dev/null +++ b/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/service/impl/PollutionSubstationServiceImpl.java @@ -0,0 +1,111 @@ +package com.njcn.harmonic.service.impl; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.njcn.common.config.GeneralInfo; +import com.njcn.device.pq.api.GeneralDeviceInfoClient; +import com.njcn.device.pq.api.LineFeignClient; +import com.njcn.device.pq.api.SubstationFeignClient; +import com.njcn.device.pq.pojo.dto.GeneralDeviceDTO; +import com.njcn.device.pq.pojo.dto.PollutionSubstationDTO; +import com.njcn.device.pq.pojo.dto.SubstationDTO; +import com.njcn.harmonic.mapper.RStatPollutionSubstationMMapper; +import com.njcn.harmonic.pojo.param.HarmonicPublicParam; +import com.njcn.harmonic.pojo.param.PollutionSubstationQuryParam; +import com.njcn.harmonic.pojo.po.RStatPollutionSubstationM; +import com.njcn.harmonic.pojo.vo.PollutionSubstationVO; +import com.njcn.harmonic.service.PollutionSubstationService; +import lombok.AllArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.BeanUtils; +import org.springframework.stereotype.Service; + +import java.util.*; +import java.util.stream.Collectors; + +/** + * + * Description: + * 接口文档访问地址:http://serverIP:port/swagger-ui.html + * Date: 2022/10/13 8:56【需求编号】 + * + * @author clam + * @version V1.0.0 + */ +@Slf4j +@Service +@AllArgsConstructor +public class PollutionSubstationServiceImpl extends ServiceImpl implements PollutionSubstationService { + + + private final SubstationFeignClient substationFeignClient; + + private final RStatPollutionSubstationMMapper pollutionSubstationMMapper; + + private final GeneralDeviceInfoClient generalDeviceInfoClient; + + private final LineFeignClient lineFeignClient; + + private final GeneralInfo generalInfo; + + + /** + * @param pollutionSubstationQuryParam + * @Description: getPollutionSubstationData + * @Param: [pollutionSubstationQuryParam] + * @return: java.util.List + * @Author: clam + * @Date: 2022/10/13 + */ + @Override + public List getPollutionSubstationData(PollutionSubstationQuryParam pollutionSubstationQuryParam) { + + List pollutionSubstationVOList = new ArrayList<> (); + /*根据部门获取变电站详情*/ + HarmonicPublicParam harmonicPublicParam = new HarmonicPublicParam(); + BeanUtils.copyProperties (pollutionSubstationQuryParam, harmonicPublicParam); + harmonicPublicParam.setServerName(generalInfo.getMicroServiceName()); + List pollutionSubstationDTOList = new ArrayList<>(); + List sub = generalDeviceInfoClient.getPracticalRunDeviceInfoAsSubstation(harmonicPublicParam).getData(); + + sub.forEach(item->{ + PollutionSubstationDTO pollutionSubstationDTO = lineFeignClient.getSubstationInfo(item.getIndex()).getData(); + + pollutionSubstationDTOList.add(pollutionSubstationDTO); + }); + List collect = pollutionSubstationDTOList.stream ( ).map (PollutionSubstationDTO::getId).collect (Collectors.toList ( )); + List locationData = substationFeignClient.getSubstationById (collect).getData ( ); + /*todo 后期可以把locationData存入redis*/ + /*把所有的变电站的污染指数查出来*/ + QueryWrapper wrapper = new QueryWrapper<> (); + wrapper.in ("substation_id",collect). + eq ("pollution_type", pollutionSubstationQuryParam.getPollutionStatis ().getId ()). + apply("DATE_FORMAT( data_date ,'%Y-%m') = '"+pollutionSubstationQuryParam.getLocalDate ()+"'"); + List rStatPollutionSubstationMList = pollutionSubstationMMapper.selectList (wrapper); + + pollutionSubstationDTOList.forEach (substationInfo ->{ + + PollutionSubstationVO pollutionSubstationVO =new PollutionSubstationVO (); + pollutionSubstationVO.setSubstationId (substationInfo.getId ()); + pollutionSubstationVO.setSubstationName (substationInfo.getName ()); + /*todo 添加经纬度接口返回数据暂时没有*/ + SubstationDTO substationDTO = locationData.stream ().filter (temp -> Objects.equals (substationInfo.getId ( ), temp.getId ())). + collect (Collectors.toList ( )).get (0); + + pollutionSubstationVO.setLatitude (substationDTO.getLat ()); + pollutionSubstationVO.setLongitude (substationDTO.getLng ()); + + + Double value = Optional.ofNullable ( + rStatPollutionSubstationMList.stream ( ).filter (temp -> Objects.equals (substationInfo.getId ( ), temp.getSubstationId ( ))). + collect (Collectors.toList ( )).get (0).getValue ( ) + ).orElse (new Double ("0.00")); + pollutionSubstationVO.setPollutionData (value); + pollutionSubstationVO.setPollutionStatis ( pollutionSubstationQuryParam.getStatisticalType ().getName ()); + pollutionSubstationVOList.add (pollutionSubstationVO); + }); + List result = pollutionSubstationVOList.stream ( ).sorted (Comparator.comparing (PollutionSubstationVO::getPollutionData).reversed ( )).collect (Collectors.toList ( )); + + return result; + } +} diff --git a/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/service/impl/THDistortionServiceImpl.java b/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/service/impl/THDistortionServiceImpl.java index a1431122c..275c28e08 100644 --- a/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/service/impl/THDistortionServiceImpl.java +++ b/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/service/impl/THDistortionServiceImpl.java @@ -1,27 +1,33 @@ package com.njcn.harmonic.service.impl; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.njcn.common.config.GeneralInfo; +import com.njcn.common.pojo.dto.SimpleDTO; +import com.njcn.common.pojo.param.StatisticsBizBaseParam; import com.njcn.device.pq.api.GeneralDeviceInfoClient; +import com.njcn.device.pq.api.LineFeignClient; import com.njcn.device.pq.enums.LineBaseEnum; import com.njcn.device.pq.pojo.dto.GeneralDeviceDTO; import com.njcn.device.pq.pojo.param.DeviceInfoParam; +import com.njcn.device.pq.pojo.vo.LineDetailDataVO; import com.njcn.harmonic.constant.Param; +import com.njcn.harmonic.mapper.RMpVThdMapper; import com.njcn.harmonic.mapper.THDistortionMapper; import com.njcn.harmonic.pojo.dto.PublicDTO; +import com.njcn.harmonic.pojo.po.RMpVThd; +import com.njcn.harmonic.pojo.vo.RMpVThdVO; import com.njcn.harmonic.pojo.vo.THDistortionCensusVO; import com.njcn.harmonic.pojo.vo.THDistortionVO; import com.njcn.harmonic.service.THDistortionService; import com.njcn.influxdb.utils.InfluxDbUtils; import lombok.AllArgsConstructor; import org.influxdb.dto.QueryResult; +import org.springframework.beans.BeanUtils; import org.springframework.stereotype.Service; import org.springframework.util.CollectionUtils; import java.math.BigDecimal; -import java.util.ArrayList; -import java.util.List; -import java.util.Map; -import java.util.Objects; +import java.util.*; import java.util.stream.Collectors; /** @@ -41,6 +47,9 @@ public class THDistortionServiceImpl implements THDistortionService { private final InfluxDbUtils influxDbUtils; + private final RMpVThdMapper rMpVThdMapper; + private final LineFeignClient lineFeignClient; + @Override public List getTHDistortionData(DeviceInfoParam.BusinessParam thDistortionParam) { List thDistortionVOS = new ArrayList<>(); @@ -96,6 +105,47 @@ public class THDistortionServiceImpl implements THDistortionService { return distortionCensusVO; } + /** + * @param statisticsBizBaseParam + * @Description: 谐波总畸变率前十列表 + * @Param: [statisticsBizBaseParam] + * @return: java.util.List + * @Author: clam + * @Date: 2022/10/10 + */ + @Override + public List getTHDTopTenData(StatisticsBizBaseParam statisticsBizBaseParam) { + + List rMpVThdVOList = new ArrayList<> (); + DeviceInfoParam deviceInfoParam = new DeviceInfoParam (); + deviceInfoParam.setDeptIndex (statisticsBizBaseParam.getId ()); + deviceInfoParam.setStatisticalType (new SimpleDTO ()); + deviceInfoParam.setServerName (generalInfo.getMicroServiceName()); + deviceInfoParam.setPowerFlag (0); + deviceInfoParam.setMonitorFlag (0); + /*获取按部门分类的实际所有终端综合信息*/ + List deviceList = generalDeviceInfoClient.getPracticalAllDeviceInfoAsDept (deviceInfoParam).getData (); + /*监测点ID扁平化*/ + List collect = deviceList.stream ( ).map (GeneralDeviceDTO::getLineIndexes).flatMap (Collection::stream).distinct ( ).collect (Collectors.toList ( )); + QueryWrapper wrapper = new QueryWrapper<>(); + wrapper.in ("measurement_point_id",collect). + eq ("data_type", statisticsBizBaseParam.getType ()). + between ("data_date", statisticsBizBaseParam.getStartTime (), statisticsBizBaseParam.getEndTime ()). + orderByDesc ("v_thd"). + last (" limit 10"); + List rMpVThdList = rMpVThdMapper.selectList (wrapper); + rMpVThdVOList = rMpVThdList.stream ( ).map (rMpVThd -> { + RMpVThdVO rMpVThdVO = new RMpVThdVO ( ); + BeanUtils.copyProperties (rMpVThd, rMpVThdVO); + /*查询监测点详情获取名称*/ + LineDetailDataVO data = lineFeignClient.getLineDetailData (rMpVThd.getMeasurementPointId ( )).getData ( ); + rMpVThdVO.setName (data.getLineName ()); + return rMpVThdVO; + }).collect (Collectors.toList ( )); + + return rMpVThdVOList; + } + /** * 计算父级畸变率 diff --git a/pqs-system/system-api/src/main/java/com/njcn/system/api/DicDataFeignClient.java b/pqs-system/system-api/src/main/java/com/njcn/system/api/DicDataFeignClient.java index 6a8a87def..20c6fb2a2 100644 --- a/pqs-system/system-api/src/main/java/com/njcn/system/api/DicDataFeignClient.java +++ b/pqs-system/system-api/src/main/java/com/njcn/system/api/DicDataFeignClient.java @@ -28,15 +28,12 @@ public interface DicDataFeignClient { @GetMapping("/getDicDataById") HttpResult getDicDataById(@RequestParam("dicIndex") String dicIndex); - @GetMapping("/getDicDataByTypeName") - HttpResult> getDicDataByTypeName(@RequestParam("dictTypeName") String dictTypeName); - - @GetMapping("/getDicDataByTypeCode") - HttpResult> getDicDataByTypeCode(@RequestParam("dictTypeCode") String dictTypeCode); - @GetMapping("/getDicDataByName") HttpResult getDicDataByName(@RequestParam("dicName") String dicName); + @GetMapping("/getDicDataByCode") + HttpResult getDicDataByCode(@RequestParam("code") String code); + @GetMapping("/getLoadTypeBySys") HttpResult> getLoadTypeBySys(); @@ -59,4 +56,15 @@ public interface DicDataFeignClient { */ @GetMapping("/getDicDataByNameAndTypeName") HttpResult getDicDataByNameAndTypeName(@RequestParam("dicTypeName") String dicTypeName, @RequestParam("dicDataName") String dicDataName); + + + + /*** + * 字典类型 + */ + @GetMapping("/getDicDataByTypeName") + HttpResult> getDicDataByTypeName(@RequestParam("dictTypeName") String dictTypeName); + + @GetMapping("/getDicDataByTypeCode") + HttpResult> getDicDataByTypeCode(@RequestParam("dictTypeCode") String dictTypeCode); } diff --git a/pqs-system/system-api/src/main/java/com/njcn/system/api/fallback/DicDataFeignClientFallbackFactory.java b/pqs-system/system-api/src/main/java/com/njcn/system/api/fallback/DicDataFeignClientFallbackFactory.java index d4608d8d5..c1e75389e 100644 --- a/pqs-system/system-api/src/main/java/com/njcn/system/api/fallback/DicDataFeignClientFallbackFactory.java +++ b/pqs-system/system-api/src/main/java/com/njcn/system/api/fallback/DicDataFeignClientFallbackFactory.java @@ -55,6 +55,12 @@ public class DicDataFeignClientFallbackFactory implements FallbackFactory getDicDataByCode(String code) { + log.error("{}异常,降级处理,异常为:{}","根据字典code获取字典数据",cause.toString()); + throw new BusinessException(finalExceptionEnum); + } + @Override public HttpResult> getLoadTypeBySys() { log.error("{}异常,降级处理,异常为:{}","根据系统类型获取不同指标参数",cause.toString()); diff --git a/pqs-system/system-api/src/main/java/com/njcn/system/enums/DicDataEnum.java b/pqs-system/system-api/src/main/java/com/njcn/system/enums/DicDataEnum.java index a756404a7..f7c5644c2 100644 --- a/pqs-system/system-api/src/main/java/com/njcn/system/enums/DicDataEnum.java +++ b/pqs-system/system-api/src/main/java/com/njcn/system/enums/DicDataEnum.java @@ -39,6 +39,11 @@ public enum DicDataEnum { DEV_QUALITY("电能质量监测终端","Dev_Quality"), DEV_SMART("智能电表","Dev_Smart"), DEV_MIX("智能融合终端","Dev_Mix"), + + /*** + * 告警类型 + */ + COMM_ERR("通讯异常","Comm_Err") ; private final String name; diff --git a/pqs-system/system-boot/src/main/java/com/njcn/system/controller/DictDataController.java b/pqs-system/system-boot/src/main/java/com/njcn/system/controller/DictDataController.java index 0e00243a0..fd9e4b0da 100644 --- a/pqs-system/system-boot/src/main/java/com/njcn/system/controller/DictDataController.java +++ b/pqs-system/system-boot/src/main/java/com/njcn/system/controller/DictDataController.java @@ -162,6 +162,16 @@ public class DictDataController extends BaseController { return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, result, methodDescribe); } + @OperateInfo(info = LogEnum.BUSINESS_COMMON) + @GetMapping("/getDicDataByCode") + @ApiOperation("根据字典code查询字典数据") + @ApiImplicitParam(name = "code", value = "查询参数", required = true) + public HttpResult getDicDataByCode(@RequestParam("code") String code) { + String methodDescribe = getMethodDescribe("getDicDataByCode"); + DictData result = dictDataService.getDicDataByCode(code); + return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, result, methodDescribe); + } + /** * 根据系统类型获取不同指标参数 */ diff --git a/pqs-system/system-boot/src/main/java/com/njcn/system/mapper/DictDataMapper.java b/pqs-system/system-boot/src/main/java/com/njcn/system/mapper/DictDataMapper.java index b9532d743..83ef3743e 100644 --- a/pqs-system/system-boot/src/main/java/com/njcn/system/mapper/DictDataMapper.java +++ b/pqs-system/system-boot/src/main/java/com/njcn/system/mapper/DictDataMapper.java @@ -36,6 +36,7 @@ public interface DictDataMapper extends BaseMapper { DictData getDicDataByName(@Param("dicName")String dicName); + DictData getDicDataByCode(@Param("code")String code); /** * 根据字典类型名称&数据名称获取字典数据 * @@ -50,4 +51,5 @@ public interface DictDataMapper extends BaseMapper { * @return 根据字典类型名称查询字典数据 */ List getDicDataByTypeCode(@Param("dictTypeCode")String dictTypeCode); + } diff --git a/pqs-system/system-boot/src/main/java/com/njcn/system/mapper/mapping/DictDataMapper.xml b/pqs-system/system-boot/src/main/java/com/njcn/system/mapper/mapping/DictDataMapper.xml index 33f3a4844..bb29e6793 100644 --- a/pqs-system/system-boot/src/main/java/com/njcn/system/mapper/mapping/DictDataMapper.xml +++ b/pqs-system/system-boot/src/main/java/com/njcn/system/mapper/mapping/DictDataMapper.xml @@ -29,6 +29,13 @@ WHERE sys_dict_data.name = #{dicName} + + +