diff --git a/pqs-algorithm/algorithm-boot/src/main/java/com/njcn/algorithm/service/impl/AppTopologyDiagramServiceImpl.java b/pqs-algorithm/algorithm-boot/src/main/java/com/njcn/algorithm/service/impl/AppTopologyDiagramServiceImpl.java index d00b94012..5620c15c1 100644 --- a/pqs-algorithm/algorithm-boot/src/main/java/com/njcn/algorithm/service/impl/AppTopologyDiagramServiceImpl.java +++ b/pqs-algorithm/algorithm-boot/src/main/java/com/njcn/algorithm/service/impl/AppTopologyDiagramServiceImpl.java @@ -59,6 +59,7 @@ public class AppTopologyDiagramServiceImpl extends MppServiceImpl } @Override + @Transactional(rollbackFor = {Exception.class}) public Boolean auditEdData(CsEdDataAuditParm csEdDataAuditParm) { CsEdDataPO csEdDataPO = new CsEdDataPO (); BeanUtils.copyProperties (csEdDataAuditParm, csEdDataPO); diff --git a/pqs-common/common-core/src/main/java/com/njcn/common/utils/NjcnBeanUtil.java b/pqs-common/common-core/src/main/java/com/njcn/common/utils/NjcnBeanUtil.java index cd7907525..de8b0159f 100644 --- a/pqs-common/common-core/src/main/java/com/njcn/common/utils/NjcnBeanUtil.java +++ b/pqs-common/common-core/src/main/java/com/njcn/common/utils/NjcnBeanUtil.java @@ -40,7 +40,6 @@ public class NjcnBeanUtil { } } }); - System.out.println (target.toString ( )); return (T) target; } 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 6a5c95ab9..d13f3b1f3 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 @@ -137,6 +137,7 @@ public class LineServiceImpl extends ServiceImpl implements Li lineDetailDataVO.setDevCapacity(lineDetail.getDevCapacity()); lineDetailDataVO.setShortCapacity(lineDetail.getShortCapacity()); lineDetailDataVO.setStandardCapacity(lineDetail.getStandardCapacity()); + lineDetailDataVO.setTimeInterval (lineDetail.getTimeInterval ()); return lineDetailDataVO; } diff --git a/pqs-prepare/prepare-api/src/main/java/com/njcn/prepare/harmonic/pojo/mysql/RMpEventDetailPO.java b/pqs-prepare/prepare-api/src/main/java/com/njcn/prepare/harmonic/pojo/mysql/RMpEventDetailPO.java new file mode 100644 index 000000000..655fa13df --- /dev/null +++ b/pqs-prepare/prepare-api/src/main/java/com/njcn/prepare/harmonic/pojo/mysql/RMpEventDetailPO.java @@ -0,0 +1,166 @@ +package com.njcn.prepare.harmonic.pojo.mysql; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +import java.math.BigDecimal; +import java.util.Date; + +/** + * + * Description: + * 接口文档访问地址:http://serverIP:port/swagger-ui.html + * Date: 2023/4/23 13:50【需求编号】 + * + * @author clam + * @version V1.0.0 + */ +@Data +@TableName(value = "r_mp_event_detail") +public class RMpEventDetailPO { + /** + * 暂时事件ID + */ + @TableId(value = "event_id") + private String eventId; + + /** + * 监测点ID + */ + @TableField(value = "measurement_point_id") + private String measurementPointId; + + /** + * 统计指标类型 + */ + @TableField(value = "event_type") + private String eventType; + + /** + * 暂降原因(字典表PQS_Dicdata) + */ + @TableField(value = "advance_reason") + private String advanceReason; + + /** + * 暂降类型(字典表PQS_Dicdata) + */ + @TableField(value = "advance_type") + private String advanceType; + + /** + * 事件关联分析表Guid + */ + @TableField(value = "eventass_index") + private String eventassIndex; + + @TableField(value = "dq_time") + private Double dqTime; + + /** + * 特征值计算更新时间(外键PQS_Relevance的Time字段) + */ + @TableField(value = "deal_time") + private Date dealTime; + + /** + * 默认事件个数为0 + */ + @TableField(value = "num") + private Integer num; + + /** + * 波形文件是否从装置招到本地(0:未招,1:已招)默认值为0 + */ + @TableField(value = "file_flag") + private Boolean fileFlag; + + /** + * 特征值计算标志(0,未处理;1,已处理; 2,已处理,无结果;3,计算失败)默认值为0 + */ + @TableField(value = "deal_flag") + private Boolean dealFlag; + + /** + * 处理结果第一条事件发生时间(读comtra文件获取) + */ + @TableField(value = "first_time") + private Date firstTime; + + /** + * 处理结果第一条事件暂降类型(字典表PQS_Dicdata) + */ + @TableField(value = "first_type") + private String firstType; + + /** + * 处理结果第一条事件发生时间毫秒(读comtra文件获取) + */ + @TableField(value = "first_ms") + private BigDecimal firstMs; + + /** + * 暂降能量 + */ + @TableField(value = "energy") + private Double energy; + + /** + * 暂降严重度 + */ + @TableField(value = "severity") + private Double severity; + + /** + * 暂降源与监测位置关系 Upper:上游;Lower :下游;Unknown :未知;为空则是未计算 + */ + @TableField(value = "sagsource") + private String sagsource; + + /** + * 开始时间 + */ + @TableField(value = "start_time") + private Date startTime; + + /** + * 持续时间,单位秒 + */ + @TableField(value = "duration") + private BigDecimal duration; + + /** + * 特征幅值 + */ + @TableField(value = "feature_amplitude") + private BigDecimal featureAmplitude; + + /** + * 相别 + */ + @TableField(value = "phase") + private String phase; + + /** + * 事件描述 + */ + @TableField(value = "event_describe") + private String eventDescribe; + + /** + * 波形路径 + */ + @TableField(value = "wave_path") + private String wavePath; + + /** + * 暂态事件上送时间 + */ + @TableField(value = "create_time") + private Date createTime; + + @TableField(value = "transient_value") + private Double transientValue; +} \ No newline at end of file diff --git a/pqs-prepare/prepare-api/src/main/java/com/njcn/prepare/harmonic/pojo/mysql/RMpMonitorEvaluateDPO.java b/pqs-prepare/prepare-api/src/main/java/com/njcn/prepare/harmonic/pojo/mysql/RMpMonitorEvaluateDPO.java index 413f463e5..4f4409400 100644 --- a/pqs-prepare/prepare-api/src/main/java/com/njcn/prepare/harmonic/pojo/mysql/RMpMonitorEvaluateDPO.java +++ b/pqs-prepare/prepare-api/src/main/java/com/njcn/prepare/harmonic/pojo/mysql/RMpMonitorEvaluateDPO.java @@ -23,9 +23,9 @@ import java.util.Date; @Data @TableName(value = "r_mp_monitor_evaluate_d") public class RMpMonitorEvaluateDPO { - @MppMultiId(value = "time_id") + @MppMultiId(value = "data_date") @ApiModelProperty(value="") - private Date timeId; + private Date dataDate; /** * 监测点Id diff --git a/pqs-prepare/prepare-api/src/main/java/com/njcn/prepare/harmonic/pojo/mysql/ROperatingMonitorDPO.java b/pqs-prepare/prepare-api/src/main/java/com/njcn/prepare/harmonic/pojo/mysql/ROperatingMonitorDPO.java new file mode 100644 index 000000000..8a055f4da --- /dev/null +++ b/pqs-prepare/prepare-api/src/main/java/com/njcn/prepare/harmonic/pojo/mysql/ROperatingMonitorDPO.java @@ -0,0 +1,76 @@ +package com.njcn.prepare.harmonic.pojo.mysql; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableName; +import com.github.jeffreyning.mybatisplus.anno.MppMultiId; +import lombok.Data; + +import java.math.BigDecimal; +import java.util.Date; + +/** + * + * Description: + * 接口文档访问地址:http://serverIP:port/swagger-ui.html + * Date: 2023/4/21 10:17【需求编号】 + * + * @author clam + * @version V1.0.0 + */ +/** + * 监测点指标数据质量-日表 + */ +@Data +@TableName(value = "r_operating_monitor_d") +public class ROperatingMonitorDPO { + @MppMultiId(value = "data_date") + private Date dataDate; + + /** + * 监测点Id + */ + @MppMultiId(value = "measurement_point_id") + private String measurementPointId; + + /** + * 终端Id + */ + @TableField(value = "dev_id") + private String devId; + + /** + * 监测点状态(算法1) + */ + @TableField(value = "monitor_state") + private String monitorState; + + /** + * 有效接入分钟数 + */ + @TableField(value = "effective_minute_count") + private Integer effectiveMinuteCount; + + /** + * 数据完整率(算法2) + */ + @TableField(value = "data_integrity_rate") + private BigDecimal dataIntegrityRate; + + /** + * 数据准确率(算法3) + */ + @TableField(value = "data_right_rate") + private BigDecimal dataRightRate; + + /** + * 指标完整率(算法4) + */ + @TableField(value = "index_integrity_rate") + private BigDecimal indexIntegrityRate; + + /** + * 数据是否异常(算法5) + */ + @TableField(value = "is_unusual") + private Integer isUnusual; +} \ No newline at end of file diff --git a/pqs-prepare/prepare-api/src/main/java/com/njcn/prepare/harmonic/pojo/mysql/ROperatingMonitorMPO.java b/pqs-prepare/prepare-api/src/main/java/com/njcn/prepare/harmonic/pojo/mysql/ROperatingMonitorMPO.java new file mode 100644 index 000000000..7677b2285 --- /dev/null +++ b/pqs-prepare/prepare-api/src/main/java/com/njcn/prepare/harmonic/pojo/mysql/ROperatingMonitorMPO.java @@ -0,0 +1,76 @@ +package com.njcn.prepare.harmonic.pojo.mysql; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableName; +import com.github.jeffreyning.mybatisplus.anno.MppMultiId; +import lombok.Data; + +import java.math.BigDecimal; +import java.util.Date; + +/** + * + * Description: + * 接口文档访问地址:http://serverIP:port/swagger-ui.html + * Date: 2023/4/21 15:41【需求编号】 + * + * @author clam + * @version V1.0.0 + */ +/** + * 监测点指标数据质量-日表 + */ +@Data +@TableName(value = "r_operating_monitor_m") +public class ROperatingMonitorMPO { + @MppMultiId(value = "data_date") + private Date dataDate; + + /** + * 监测点Id + */ + @MppMultiId(value = "measurement_point_id") + private String measurementPointId; + + /** + * 终端Id + */ + @TableField(value = "dev_id") + private String devId; + + /** + * 监测点状态(算法1) + */ + @TableField(value = "monitor_state") + private String monitorState; + + /** + * 有效接入分钟数 + */ + @TableField(value = "effective_minute_count") + private Long effectiveMinuteCount; + + /** + * 数据完整率(算法2) + */ + @TableField(value = "data_integrity_rate") + private BigDecimal dataIntegrityRate; + + /** + * 数据准确率(算法3) + */ + @TableField(value = "data_right_rate") + private BigDecimal dataRightRate; + + /** + * 指标完整率(算法4) + */ + @TableField(value = "index_integrity_rate") + private BigDecimal indexIntegrityRate; + + /** + * 数据是否异常(算法5) + */ + @TableField(value = "is_unusual") + private Integer isUnusual; +} \ No newline at end of file diff --git a/pqs-prepare/prepare-api/src/main/java/com/njcn/prepare/harmonic/pojo/mysql/RStatAbnormalDPO.java b/pqs-prepare/prepare-api/src/main/java/com/njcn/prepare/harmonic/pojo/mysql/RStatAbnormalDPO.java new file mode 100644 index 000000000..6b087a1be --- /dev/null +++ b/pqs-prepare/prepare-api/src/main/java/com/njcn/prepare/harmonic/pojo/mysql/RStatAbnormalDPO.java @@ -0,0 +1,39 @@ +package com.njcn.prepare.harmonic.pojo.mysql; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableName; +import com.github.jeffreyning.mybatisplus.anno.MppMultiId; +import lombok.Data; + +import java.util.Date; + +/** + * + * Description: + * 接口文档访问地址:http://serverIP:port/swagger-ui.html + * Date: 2023/4/21 9:07【需求编号】 + * + * @author clam + * @version V1.0.0 + */ +@Data +@TableName(value = "r_stat_abnormal_d") +public class RStatAbnormalDPO { + /** + * 时间 + */ + @MppMultiId(value = "data_date") + private Date dataDate; + + /** + * 监测点ID + */ + @MppMultiId(value = "measurement_point_id") + private String measurementPointId; + + /** + * 数据是否异常(0异常,1正常) + */ + @TableField(value = "value_alarm") + private Integer valueAlarm; +} \ No newline at end of file diff --git a/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/controller/newalgorithm/RMStatAbnormalDController.java b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/controller/newalgorithm/RMStatAbnormalDController.java new file mode 100644 index 000000000..ee5d16f8d --- /dev/null +++ b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/controller/newalgorithm/RMStatAbnormalDController.java @@ -0,0 +1,63 @@ +package com.njcn.prepare.harmonic.controller.newalgorithm; + +import com.njcn.common.pojo.annotation.OperateInfo; +import com.njcn.common.pojo.enums.common.LogEnum; +import com.njcn.common.pojo.enums.response.CommonResponseEnum; +import com.njcn.common.pojo.response.HttpResult; +import com.njcn.common.utils.HttpResultUtil; +import com.njcn.device.pq.api.LineFeignClient; +import com.njcn.prepare.harmonic.pojo.param.LineParam; +import com.njcn.prepare.harmonic.service.mysql.line.RStatAbnormalDService; +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.util.CollectionUtils; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import java.time.LocalDateTime; +import java.util.ArrayList; +import java.util.List; + +/** + * Description: + * 接口文档访问地址:http://serverIP:port/swagger-ui.html + * Date: 2023/4/19 15:45【需求编号】 + * + * @author clam + * @version V1.0.0 + */ +@Slf4j +@RestController +@RequestMapping("/rmstatabnormal") +@Api(tags = "监测点异常_日统计") +@AllArgsConstructor +public class RMStatAbnormalDController extends BaseController { + private final LineFeignClient lineFeignClient; + private final RStatAbnormalDService rStatAbnormalDService; + + + @ApiOperation("监测点异常_日统计(MySQL库)") + @ApiImplicitParam(value = "jobParam",name = "jobParam",required = true) + @PostMapping("handlerMonitorAbnormal") + @OperateInfo(info = LogEnum.BUSINESS_MEDIUM) + public HttpResult handlerMonitorAbnormal(@RequestBody LineParam jobParam ){ + + log.info(LocalDateTime.now()+"handlerMonitorAbnormal开始执行"); + String methodDescribe = getMethodDescribe("handlerMonitorAbnormal"); + List indexLists = new ArrayList<> (); + if(CollectionUtils.isEmpty (jobParam.getLineIds ())){ + indexLists = lineFeignClient.getLineList ( ).getData ( ); + }else{ + indexLists = jobParam.getLineIds (); + } + + rStatAbnormalDService.handlerMonitorAbnormal (indexLists,jobParam.getDataDate ()); + return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, true, methodDescribe); + } +} diff --git a/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/controller/newalgorithm/RMpEventdetailController.java b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/controller/newalgorithm/RMpEventdetailController.java new file mode 100644 index 000000000..ed8c3c97d --- /dev/null +++ b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/controller/newalgorithm/RMpEventdetailController.java @@ -0,0 +1,64 @@ +package com.njcn.prepare.harmonic.controller.newalgorithm; + +import com.njcn.common.pojo.annotation.OperateInfo; +import com.njcn.common.pojo.enums.common.LogEnum; +import com.njcn.common.pojo.enums.response.CommonResponseEnum; +import com.njcn.common.pojo.response.HttpResult; +import com.njcn.common.utils.HttpResultUtil; +import com.njcn.device.pq.api.LineFeignClient; +import com.njcn.prepare.harmonic.pojo.param.LineParam; +import com.njcn.prepare.harmonic.service.mysql.line.RMpEventDetailService; +import com.njcn.web.controller.BaseController; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiImplicitParam; +import io.swagger.annotations.ApiOperation; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.util.CollectionUtils; +import org.springframework.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.time.LocalDateTime; +import java.util.ArrayList; +import java.util.List; + +/** + * Description: + * 接口文档访问地址:http://serverIP:port/swagger-ui.html + * Date: 2022/12/28 13:47【需求编号】 + * + * @author clam + * @version V1.0.0 + */ +@Slf4j +@Api(tags = "监测点暂态指标超标明细") +@RestController +@RequestMapping("/rmpeventdetail") +@RequiredArgsConstructor +public class RMpEventdetailController extends BaseController { + + private final LineFeignClient lineFeignClient; + + private final RMpEventDetailService rMpEventDetailService; + @OperateInfo(info = LogEnum.BUSINESS_COMMON) + @PostMapping("/eventdetailHandler") + @ApiOperation("监测点暂态指标处理") + @ApiImplicitParam(name = "lineParam", value = "参数", required = true) + public HttpResult eventdetailHandler(@RequestBody @Validated LineParam lineParam){ + log.info(LocalDateTime.now()+"eventdetailHandler始执行"); + String methodDescribe = getMethodDescribe("eventdetailHandler"); + List indexLists = new ArrayList<> (); + if(CollectionUtils.isEmpty (lineParam.getLineIds ())){ + indexLists = lineFeignClient.getLineList ( ).getData ( ); + }else{ + indexLists = lineParam.getLineIds (); + } + lineParam.setLineIds (indexLists); + + rMpEventDetailService.eventdetailHandler (lineParam); + return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, null, methodDescribe); + } +} diff --git a/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/controller/newalgorithm/RMpMonitorEvaluateDController.java b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/controller/newalgorithm/RMpMonitorEvaluateDController.java index 563edc646..657300a84 100644 --- a/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/controller/newalgorithm/RMpMonitorEvaluateDController.java +++ b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/controller/newalgorithm/RMpMonitorEvaluateDController.java @@ -46,7 +46,7 @@ public class RMpMonitorEvaluateDController extends BaseController { @ApiImplicitParam(value = "jobParam",name = "jobParam",required = true) @PostMapping("handlerMonitorEvaluate") @OperateInfo(info = LogEnum.BUSINESS_MEDIUM) - public HttpResult dataToDayHandler(@RequestBody LineParam jobParam ){ + public HttpResult handlerMonitorEvaluate(@RequestBody LineParam jobParam ){ log.info(LocalDateTime.now()+"handlerMonitorEvaluate开始执行"); String methodDescribe = getMethodDescribe("handlerMonitorEvaluate"); diff --git a/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/controller/newalgorithm/RMpPassRateController.java b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/controller/newalgorithm/RMpPassRateController.java new file mode 100644 index 000000000..40d68a835 --- /dev/null +++ b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/controller/newalgorithm/RMpPassRateController.java @@ -0,0 +1,64 @@ +package com.njcn.prepare.harmonic.controller.newalgorithm; + +import com.njcn.common.pojo.annotation.OperateInfo; +import com.njcn.common.pojo.enums.common.LogEnum; +import com.njcn.common.pojo.enums.response.CommonResponseEnum; +import com.njcn.common.pojo.response.HttpResult; +import com.njcn.common.utils.HttpResultUtil; +import com.njcn.device.pq.api.LineFeignClient; +import com.njcn.prepare.harmonic.pojo.param.LineParam; +import com.njcn.prepare.harmonic.service.mysql.line.RMpPassRateDService; +import com.njcn.web.controller.BaseController; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiImplicitParam; +import io.swagger.annotations.ApiOperation; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.util.CollectionUtils; +import org.springframework.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.time.LocalDateTime; +import java.util.ArrayList; +import java.util.List; + +/** + * Description: + * 接口文档访问地址:http://serverIP:port/swagger-ui.html + * Date: 2022/12/28 13:47【需求编号】 + * + * @author clam + * @version V1.0.0 + */ +@Slf4j +@Api(tags = "监测点稳态指标合格率统计") +@RestController +@RequestMapping("/rmppassrate") +@RequiredArgsConstructor +public class RMpPassRateController extends BaseController { + + private final LineFeignClient lineFeignClient; + + private final RMpPassRateDService rMpPassRateDService; + @OperateInfo(info = LogEnum.BUSINESS_COMMON) + @PostMapping("/passRateHandler") + @ApiOperation("监测点稳态指标合格率统计") + @ApiImplicitParam(name = "lineParam", value = "参数", required = true) + public HttpResult passRateHandler(@RequestBody @Validated LineParam lineParam){ + log.info(LocalDateTime.now()+"passRateHandler始执行"); + String methodDescribe = getMethodDescribe("passRateHandler"); + List indexLists = new ArrayList<> (); + if(CollectionUtils.isEmpty (lineParam.getLineIds ())){ + indexLists = lineFeignClient.getLineList ( ).getData ( ); + }else{ + indexLists = lineParam.getLineIds (); + } + lineParam.setLineIds (indexLists); + + rMpPassRateDService.passRateHandler (lineParam); + return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, null, methodDescribe); + } +} diff --git a/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/controller/newalgorithm/ROperatingMonitorController.java b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/controller/newalgorithm/ROperatingMonitorController.java new file mode 100644 index 000000000..55543754a --- /dev/null +++ b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/controller/newalgorithm/ROperatingMonitorController.java @@ -0,0 +1,84 @@ +package com.njcn.prepare.harmonic.controller.newalgorithm; + +import com.njcn.common.pojo.annotation.OperateInfo; +import com.njcn.common.pojo.enums.common.LogEnum; +import com.njcn.common.pojo.enums.response.CommonResponseEnum; +import com.njcn.common.pojo.response.HttpResult; +import com.njcn.common.utils.HttpResultUtil; +import com.njcn.device.pq.api.LineFeignClient; +import com.njcn.prepare.harmonic.pojo.param.LineParam; +import com.njcn.prepare.harmonic.service.mysql.line.ROperatingMonitorMService; +import com.njcn.prepare.harmonic.service.mysql.line.ROperatingMonitorService; +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.util.CollectionUtils; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import java.time.LocalDateTime; +import java.util.ArrayList; +import java.util.List; + +/** + * Description: + * 接口文档访问地址:http://serverIP:port/swagger-ui.html + * Date: 2023/4/19 15:45【需求编号】 + * + * @author clam + * @version V1.0.0 + */ +@Slf4j +@RestController +@RequestMapping("/roperatingmonitor") +@Api(tags = "监测点数据质量") +@AllArgsConstructor +public class ROperatingMonitorController extends BaseController { + private final LineFeignClient lineFeignClient; + + private final ROperatingMonitorService rOperatingMonitorService; + private final ROperatingMonitorMService rOperatingMonitorMService; + + @ApiOperation("监测点数据质量_日统计(MySQL库)") + @ApiImplicitParam(value = "jobParam",name = "jobParam",required = true) + @PostMapping("handlerMonitorOperatingD") + @OperateInfo(info = LogEnum.BUSINESS_MEDIUM) + public HttpResult handlerMonitorOperatingD(@RequestBody LineParam jobParam ){ + + log.info(LocalDateTime.now()+"handlerMonitorOperatingD开始执行"); + String methodDescribe = getMethodDescribe("handlerMonitorOperatingD"); + List indexLists = new ArrayList<> (); + if(CollectionUtils.isEmpty (jobParam.getLineIds ())){ + indexLists = lineFeignClient.getLineList ( ).getData ( ); + }else{ + indexLists = jobParam.getLineIds (); + } + + rOperatingMonitorService.handlerMonitorOperatingD (indexLists,jobParam.getDataDate ()); + return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, true, methodDescribe); + } + + @ApiOperation("监测点数据质量_月统计(MySQL库)") + @ApiImplicitParam(value = "jobParam",name = "jobParam",required = true) + @PostMapping("handlerMonitorOperatingM") + @OperateInfo(info = LogEnum.BUSINESS_MEDIUM) + public HttpResult handlerMonitorOperatingM(@RequestBody LineParam jobParam ){ + + log.info(LocalDateTime.now()+"handlerMonitorOperatingM开始执行"); + String methodDescribe = getMethodDescribe("handlerMonitorOperatingM"); + List indexLists = new ArrayList<> (); + if(CollectionUtils.isEmpty (jobParam.getLineIds ())){ + indexLists = lineFeignClient.getLineList ( ).getData ( ); + }else{ + indexLists = jobParam.getLineIds (); + } + + rOperatingMonitorMService.handlerMonitorOperatingM (indexLists,jobParam.getDataDate ()); + return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, true, methodDescribe); + } +} diff --git a/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/mapper/mysql/line/RMpEventDetailMapper.java b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/mapper/mysql/line/RMpEventDetailMapper.java new file mode 100644 index 000000000..94e53a8ca --- /dev/null +++ b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/mapper/mysql/line/RMpEventDetailMapper.java @@ -0,0 +1,16 @@ +package com.njcn.prepare.harmonic.mapper.mysql.line; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.njcn.prepare.harmonic.pojo.mysql.RMpEventDetailPO; + +/** + * + * Description: + * 接口文档访问地址:http://serverIP:port/swagger-ui.html + * Date: 2023/4/23 13:50【需求编号】 + * + * @author clam + * @version V1.0.0 + */ +public interface RMpEventDetailMapper extends BaseMapper { +} \ No newline at end of file diff --git a/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/mapper/mysql/line/ROperatingMonitorDMapper.java b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/mapper/mysql/line/ROperatingMonitorDMapper.java new file mode 100644 index 000000000..4b67de167 --- /dev/null +++ b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/mapper/mysql/line/ROperatingMonitorDMapper.java @@ -0,0 +1,16 @@ +package com.njcn.prepare.harmonic.mapper.mysql.line; + +import com.github.jeffreyning.mybatisplus.base.MppBaseMapper; +import com.njcn.prepare.harmonic.pojo.mysql.ROperatingMonitorDPO; + +/** + * + * Description: + * 接口文档访问地址:http://serverIP:port/swagger-ui.html + * Date: 2023/4/21 10:17【需求编号】 + * + * @author clam + * @version V1.0.0 + */ +public interface ROperatingMonitorDMapper extends MppBaseMapper { +} \ No newline at end of file diff --git a/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/mapper/mysql/line/ROperatingMonitorMMapper.java b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/mapper/mysql/line/ROperatingMonitorMMapper.java new file mode 100644 index 000000000..3106b6b58 --- /dev/null +++ b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/mapper/mysql/line/ROperatingMonitorMMapper.java @@ -0,0 +1,16 @@ +package com.njcn.prepare.harmonic.mapper.mysql.line; + +import com.github.jeffreyning.mybatisplus.base.MppBaseMapper; +import com.njcn.prepare.harmonic.pojo.mysql.ROperatingMonitorMPO; + +/** + * + * Description: + * 接口文档访问地址:http://serverIP:port/swagger-ui.html + * Date: 2023/4/21 15:41【需求编号】 + * + * @author clam + * @version V1.0.0 + */ +public interface ROperatingMonitorMMapper extends MppBaseMapper { +} \ No newline at end of file diff --git a/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/mapper/mysql/line/RStatAbnormalDMapper.java b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/mapper/mysql/line/RStatAbnormalDMapper.java index 2e0f6780e..74298b8ee 100644 --- a/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/mapper/mysql/line/RStatAbnormalDMapper.java +++ b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/mapper/mysql/line/RStatAbnormalDMapper.java @@ -1,14 +1,15 @@ package com.njcn.prepare.harmonic.mapper.mysql.line; -import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.njcn.device.pq.pojo.po.RStatAbnormalD; +import com.github.jeffreyning.mybatisplus.base.MppBaseMapper; +import com.njcn.prepare.harmonic.pojo.mysql.RStatAbnormalDPO; /** - * RStatAbnormalDMapper + * Description: + * 接口文档访问地址:http://serverIP:port/swagger-ui.html + * Date: 2023/4/21 9:07【需求编号】 * - * @author qijian - * @date 2022/10/26 + * @author clam + * @version V1.0.0 */ -public interface RStatAbnormalDMapper extends BaseMapper { - -} +public interface RStatAbnormalDMapper extends MppBaseMapper { +} \ No newline at end of file diff --git a/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/mapper/mysql/line/mapping/RMpEventDetailMapper.xml b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/mapper/mysql/line/mapping/RMpEventDetailMapper.xml new file mode 100644 index 000000000..a8d72f3df --- /dev/null +++ b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/mapper/mysql/line/mapping/RMpEventDetailMapper.xml @@ -0,0 +1,40 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + event_id, measurement_point_id, event_type, advance_reason, advance_type, eventass_index, + dq_time, deal_time, num, file_flag, deal_flag, first_time, first_type, first_ms, + energy, severity, sagsource, start_time, duration, feature_amplitude, phase, event_describe, + wave_path, create_time, transient_value + + \ No newline at end of file diff --git a/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/mapper/mysql/line/mapping/ROperatingMonitorDMapper.xml b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/mapper/mysql/line/mapping/ROperatingMonitorDMapper.xml new file mode 100644 index 000000000..45aa48503 --- /dev/null +++ b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/mapper/mysql/line/mapping/ROperatingMonitorDMapper.xml @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + data_date, measurement_point_id, dev_id, monitor_state, effective_minute_count, data_integrity_rate, + data_right_rate, index_integrity_rate, is_unusual + + \ No newline at end of file diff --git a/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/mapper/mysql/line/mapping/ROperatingMonitorMMapper.xml b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/mapper/mysql/line/mapping/ROperatingMonitorMMapper.xml new file mode 100644 index 000000000..84f97863e --- /dev/null +++ b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/mapper/mysql/line/mapping/ROperatingMonitorMMapper.xml @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + data_date, measurement_point_id, dev_id, monitor_state, effective_minute_count, data_integrity_rate, + data_right_rate, index_integrity_rate, is_unusual + + \ No newline at end of file diff --git a/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/mapper/mysql/line/mapping/RStatAbnormalDMapper.xml b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/mapper/mysql/line/mapping/RStatAbnormalDMapper.xml new file mode 100644 index 000000000..d89f17275 --- /dev/null +++ b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/mapper/mysql/line/mapping/RStatAbnormalDMapper.xml @@ -0,0 +1,15 @@ + + + + + + + + + + + + + data_date, measurement_point_id, value_alarm + + \ No newline at end of file diff --git a/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/influxdb/impl/DataVInfluxdbServiceImpl.java b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/influxdb/impl/DataVInfluxdbServiceImpl.java index 46f78ab31..d77d7ada5 100644 --- a/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/influxdb/impl/DataVInfluxdbServiceImpl.java +++ b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/influxdb/impl/DataVInfluxdbServiceImpl.java @@ -78,14 +78,14 @@ public class DataVInfluxdbServiceImpl implements DataVInfluxdbService { String startTime = date+" "+"00:00:00"; String endTime = date+" "+"23:59:59"; String Sql = "SELECT time, MAX(freq) as freq_max,MIN(freq) as freq_min,MAX(v_thd) as v_thd_max,MIN(v_thd) as v_thd_min,MAX(v_unbalance) as v_unbalance_max,MIN(v_unbalance) as v_unbalance_min from data_v where line_id='"+lineId+ - "'and "+ InfluxDBPublicParam.TIME+">='"+startTime+"'and "+ InfluxDBPublicParam.TIME+"<='"+endTime+"' and phasic_type ='T' group by time("+statisticalInterval+"m ) fill(none) "+InfluxDBPublicParam.TIME_ZONE; + "'and "+ InfluxDBPublicParam.TIME+">='"+startTime+"'and "+ InfluxDBPublicParam.TIME+"<='"+endTime+"' and phasic_type ='T' and value_type='AVG' group by time("+statisticalInterval+"m ) fill(none) "+InfluxDBPublicParam.TIME_ZONE; QueryResult query = influxDbUtils.query(Sql); InfluxDBResultMapper resultMapper = new InfluxDBResultMapper(); List dataVS = resultMapper.toPOJO(query, DataV.class); /*rms,rms_lvr 取ABC项数据任意一个数据*/ String Sql2 = "SELECT time, MAX(rms) as rms_max,MIN(rms) as rms_min,MAX(rms_lvr) as rms_lvr_max,MIN(rms_lvr) as rms_lvr_min from data_v where line_id='"+lineId+ - "'and "+ InfluxDBPublicParam.TIME+">='"+startTime+"'and "+ InfluxDBPublicParam.TIME+"<='"+endTime+"' and phasic_type ='A' group by time("+statisticalInterval+"m ) fill(none) "+InfluxDBPublicParam.TIME_ZONE; + "'and "+ InfluxDBPublicParam.TIME+">='"+startTime+"'and "+ InfluxDBPublicParam.TIME+"<='"+endTime+"' and phasic_type ='A' and value_type='AVG' group by time("+statisticalInterval+"m ) fill(none) "+InfluxDBPublicParam.TIME_ZONE; QueryResult query2 = influxDbUtils.query(Sql2); InfluxDBResultMapper resultMapper2 = new InfluxDBResultMapper(); List dataVS2 = resultMapper2.toPOJO(query2, DataV.class); diff --git a/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/Impl/line/DataExceptionServiceImpl.java b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/Impl/line/DataExceptionServiceImpl.java index 021ff0104..c8e4010cb 100644 --- a/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/Impl/line/DataExceptionServiceImpl.java +++ b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/Impl/line/DataExceptionServiceImpl.java @@ -3,18 +3,18 @@ package com.njcn.prepare.harmonic.service.mysql.Impl.line; import cn.hutool.core.collection.CollUtil; import cn.hutool.core.date.DateUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.njcn.device.biz.enums.DeviceResponseEnum; import com.njcn.device.pms.api.DistributionMonitorClient; import com.njcn.device.pms.api.MonitorClient; import com.njcn.device.pms.pojo.po.DistributionMonitor; import com.njcn.device.pms.pojo.po.Monitor; import com.njcn.device.pq.constant.Param; -import com.njcn.device.biz.enums.DeviceResponseEnum; import com.njcn.device.pq.pojo.po.DataV; import com.njcn.device.pq.pojo.po.PmsAbnormalRules; -import com.njcn.device.pq.pojo.po.RStatAbnormalD; import com.njcn.prepare.harmonic.constant.AlgorithmParam; import com.njcn.prepare.harmonic.mapper.mysql.line.PmsAbnormalRulesMapper; import com.njcn.prepare.harmonic.mapper.mysql.line.RStatAbnormalDMapper; +import com.njcn.prepare.harmonic.pojo.mysql.RStatAbnormalDPO; import com.njcn.prepare.harmonic.pojo.oracle.PqLinedetailPO; import com.njcn.prepare.harmonic.pojo.param.LineParam; import com.njcn.prepare.harmonic.pojo.vo.DataVOracleVO; @@ -367,11 +367,11 @@ public class DataExceptionServiceImpl implements DataExceptionService { * @date 2022/11/29 */ private void addData(String lineId, Date date) { - LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>(); - lambdaQueryWrapper.eq(RStatAbnormalD::getMeasurementPointId, lineId).eq(RStatAbnormalD::getDataDate, date); - RStatAbnormalD rStatAbnormalDOne = rStatAbnormalDMapper.selectOne(lambdaQueryWrapper); + LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>(); + lambdaQueryWrapper.eq(RStatAbnormalDPO::getMeasurementPointId, lineId).eq(RStatAbnormalDPO::getDataDate, date); + RStatAbnormalDPO rStatAbnormalDOne = rStatAbnormalDMapper.selectOne(lambdaQueryWrapper); if (Objects.isNull(rStatAbnormalDOne)){ - RStatAbnormalD rStatAbnormalD = new RStatAbnormalD(); + RStatAbnormalDPO rStatAbnormalD = new RStatAbnormalDPO(); rStatAbnormalD.setDataDate(date); rStatAbnormalD.setMeasurementPointId(lineId); rStatAbnormalD.setValueAlarm(0); diff --git a/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/Impl/line/RMpEventDetailServiceImpl.java b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/Impl/line/RMpEventDetailServiceImpl.java new file mode 100644 index 000000000..39bbcdd9e --- /dev/null +++ b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/Impl/line/RMpEventDetailServiceImpl.java @@ -0,0 +1,165 @@ +package com.njcn.prepare.harmonic.service.mysql.Impl.line; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.njcn.harmonic.pojo.po.RMpEventDetailDPO; +import com.njcn.harmonic.pojo.po.RMpEventDetailMPO; +import com.njcn.prepare.harmonic.mapper.mysql.line.RMpEventDetailMapper; +import com.njcn.prepare.harmonic.pojo.mysql.RMpEventDetailPO; +import com.njcn.prepare.harmonic.pojo.param.LineParam; +import com.njcn.prepare.harmonic.service.mysql.line.RMpEventDetailDService; +import com.njcn.prepare.harmonic.service.mysql.line.RMpEventDetailMService; +import com.njcn.prepare.harmonic.service.mysql.line.RMpEventDetailService; +import com.njcn.redis.utils.RedisUtil; +import com.njcn.system.api.DicDataFeignClient; +import com.njcn.system.enums.DicDataEnum; +import com.njcn.system.pojo.po.DictData; +import lombok.RequiredArgsConstructor; +import lombok.SneakyThrows; +import org.springframework.scheduling.annotation.Async; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.text.SimpleDateFormat; +import java.util.ArrayList; +import java.util.Date; +import java.util.List; +import java.util.Optional; + +/** + * + * Description: + * 接口文档访问地址:http://serverIP:port/swagger-ui.html + * Date: 2023/4/23 13:50【需求编号】 + * + * @author clam + * @version V1.0.0 + */ +@Service +@RequiredArgsConstructor +public class RMpEventDetailServiceImpl extends ServiceImpl implements RMpEventDetailService{ + + private final RMpEventDetailDService rMpEventDetailDService; + + private final RMpEventDetailMService rMpEventDetailMService; + + private final DicDataFeignClient dicDataFeignClient; + + private final RedisUtil redisUtil; + + @Override + @Transactional(rollbackFor = {Exception.class}) + @Async("asyncExecutor") + public void eventdetailHandler(LineParam lineParam) { + this.hanlderData(lineParam); + } + + @Override + public Integer queryByCondition(String measurementPointId, String dataDate, String eventType) { + QueryWrapper queryWrapper = new QueryWrapper ( ); + queryWrapper.select ("1"). + eq ("measurement_point_id", measurementPointId). + eq ("event_type",eventType). + eq("DATE_FORMAT( start_time ,'%Y-%m-%d')",dataDate); + + Integer integer = this.getBaseMapper ().selectCount (queryWrapper); + + return integer; + } + + /** + * @Description: hanlderOracleData + * @Param: [lineParam] + * @return: void + * @Author: clam + * @Date: 2022/12/28 + */ + private void hanlderData(LineParam lineParam) { + Integer type = lineParam.getType ( ); + switch (type) { +// case 1: +// this.hanlderYear (lineParam); +// break; +// case 2: +// this.hanlderQtr (lineParam); +// break; + case 3: + this.hanlderMonth (lineParam); + break; + case 5: + this.hanlderDay (lineParam); + break; + default: + break; + } + } + @SneakyThrows + private void hanlderMonth(LineParam lineParam) { + + + List lineIds = lineParam.getLineIds ( ); + String dataDate = lineParam.getDataDate ( ); + final Date tempDate = new SimpleDateFormat ("yyyy-MM-dd").parse (dataDate); + List rMpEventDetailMPOList = new ArrayList<> ( ); + + lineIds.forEach (measurementPointId -> { + /*查询day表数据生成月表数据*/ + List rMpEventDetailDPOList = rMpEventDetailDService.queryOneMothData(measurementPointId,dataDate); + int sagCount = rMpEventDetailDPOList.stream ( ).mapToInt (RMpEventDetailDPO::getSagTimes).sum ( ); + int riseCount = rMpEventDetailDPOList.stream ( ).mapToInt (RMpEventDetailDPO::getSwellTimes).sum ( ); + int interruptCount = rMpEventDetailDPOList.stream ( ).mapToInt (RMpEventDetailDPO::getInterruptTimes).sum ( ); + + RMpEventDetailMPO rMpEventDetailMPO = new RMpEventDetailMPO(); + rMpEventDetailMPO.setMeasurementPointId (measurementPointId); + rMpEventDetailMPO.setDataDate (tempDate); + rMpEventDetailMPO.setSagTimes (sagCount); + rMpEventDetailMPO.setSwellTimes (riseCount); + rMpEventDetailMPO.setInterruptTimes (interruptCount); + rMpEventDetailMPOList.add (rMpEventDetailMPO); + + }); + + rMpEventDetailMService.saveOrUpdateBatchByMultiId (rMpEventDetailMPOList,500); + } + + + @SneakyThrows + private void hanlderDay(LineParam lineParam) { + + List lineIds = lineParam.getLineIds ( ); + String dataDate = lineParam.getDataDate ( ); + final Date tempDate = new SimpleDateFormat ("yyyy-MM-dd").parse (dataDate); + List rMpEventDetailDPOList = new ArrayList<> ( ); + + + lineIds.forEach (measurementPointId -> { + Integer sagCount = this.queryByCondition (measurementPointId,dataDate, getEventTypeId(DicDataEnum.VOLTAGE_DIP.getCode ( ))); + Integer riseCount = this.queryByCondition (measurementPointId,dataDate,getEventTypeId(DicDataEnum.VOLTAGE_RISE.getCode ( ))); + Integer interruptCount = this.queryByCondition (measurementPointId,dataDate,getEventTypeId(DicDataEnum.SHORT_INTERRUPTIONS.getCode ( ))); + RMpEventDetailDPO rMpEventDetailDPO = new RMpEventDetailDPO(); + rMpEventDetailDPO.setMeasurementPointId (measurementPointId); + rMpEventDetailDPO.setDataDate (tempDate); + rMpEventDetailDPO.setSagTimes (sagCount); + rMpEventDetailDPO.setSwellTimes (riseCount); + rMpEventDetailDPO.setInterruptTimes (interruptCount); + + rMpEventDetailDPOList.add (rMpEventDetailDPO); + }); + + rMpEventDetailDService.saveOrUpdateBatchByMultiId (rMpEventDetailDPOList,500); + } + + public String getEventTypeId(String code){ + + String eventType =redisUtil.getStringByKey (code); + eventType = Optional.ofNullable (eventType).orElseGet (() ->{ + DictData data = dicDataFeignClient.getDicDataByCode (code).getData ( ); + redisUtil.saveByKey (data.getCode (),data.getId ()); + return data.getId (); + }); + + return eventType; + + } + +} diff --git a/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/Impl/line/RMpMonitorEvaluateDServiceImpl.java b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/Impl/line/RMpMonitorEvaluateDServiceImpl.java index 6145cc6ef..1865d9f8d 100644 --- a/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/Impl/line/RMpMonitorEvaluateDServiceImpl.java +++ b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/Impl/line/RMpMonitorEvaluateDServiceImpl.java @@ -14,14 +14,15 @@ import com.njcn.prepare.harmonic.pojo.po.DataFlicker; import com.njcn.prepare.harmonic.service.influxdb.DataIntegrityRateInfluxService; import com.njcn.prepare.harmonic.service.influxdb.DataVInfluxdbService; import com.njcn.prepare.harmonic.service.mysql.line.RMpMonitorEvaluateDService; -import com.njcn.prepare.harmonic.utils.PublicUtil; import com.njcn.system.api.DicDataFeignClient; import com.njcn.system.enums.DicDataTypeEnum; import com.njcn.system.pojo.po.DictData; import lombok.RequiredArgsConstructor; +import lombok.SneakyThrows; import org.springframework.scheduling.annotation.Async; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import org.springframework.util.CollectionUtils; import java.util.ArrayList; import java.util.Date; @@ -50,6 +51,7 @@ public class RMpMonitorEvaluateDServiceImpl extends MppServiceImpl indexLists, String dataDate) { //1、取出规则 @@ -61,19 +63,31 @@ public class RMpMonitorEvaluateDServiceImpl extends MppServiceImpl { LineDetailDataVO data = lineFeignClient.getLineDetailData (temp).getData ( ); + if(Objects.isNull (data)){ + System.out.println ( ); + return; + } /*todo 统计间隔,电压等级取值方式后期提供融合版本接口获取不然pms,pqs系统取值方式不一样*/ /*统计间隔*/ Integer statisticalInterval = data.getTimeInterval (); /*电压等级*/ - Double voltage = PublicUtil.getVoltage (temp, dictDataList); +// Double voltage = PublicUtil.getVoltage (temp, dictDataList); + Double voltage =Double.parseDouble (data.getScale ().substring (0, data.getScale ().length ()-2)); List fiveItems = dataVInfluxdbService.getFiveItems (temp, dataDate, statisticalInterval); + if(CollectionUtils.isEmpty (fiveItems)){ + return; + } RMpMonitorEvaluateDPO rMpMonitorEvaluateDPO = calculateRMpMonitorEvaluateDPO (fiveItems, pmsAbnormalRules, voltage); Date date = DateUtil.parse(dataDate); DataFlicker twoFlickerData = dataIntegrityRateInfluxService.getTwoFlickerData (temp, date, 5); + + if(Objects.isNull (twoFlickerData)){ + return; + } rMpMonitorEvaluateDPO.setAllMinuteCount (fiveItems.size ()); - rMpMonitorEvaluateDPO.setTimeId (date); + rMpMonitorEvaluateDPO.setDataDate (date); rMpMonitorEvaluateDPO.setMeasurementPointId (temp); rMpMonitorEvaluateDPO.setPltCount (twoFlickerData.getPltCount ()); rMpMonitorEvaluateDPO.setPstCount (twoFlickerData.getPstCount ()); diff --git a/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/Impl/line/RMpPassRateDServiceImpl.java b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/Impl/line/RMpPassRateDServiceImpl.java index 67f56eb6d..cc3ca8f7f 100644 --- a/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/Impl/line/RMpPassRateDServiceImpl.java +++ b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/Impl/line/RMpPassRateDServiceImpl.java @@ -1,16 +1,32 @@ package com.njcn.prepare.harmonic.service.mysql.Impl.line; +import cn.hutool.core.date.DateUtil; import com.baomidou.dynamic.datasource.annotation.DS; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.github.jeffreyning.mybatisplus.service.MppServiceImpl; +import com.njcn.device.pq.api.LineFeignClient; +import com.njcn.device.pq.pojo.vo.LineDetailDataVO; +import com.njcn.harmonic.pojo.po.RMpPartHarmonicDetailD; +import com.njcn.harmonic.pojo.po.RMpSurplusHarmonicDetailD; +import com.njcn.prepare.harmonic.mapper.mysql.line.RMpPartHarmonicDetailDMapper; import com.njcn.prepare.harmonic.mapper.mysql.line.RMpPassRateDMapper; +import com.njcn.prepare.harmonic.mapper.mysql.line.RMpSurplusHarmonicDetailDMapper; +import com.njcn.prepare.harmonic.pojo.mysql.RMpMonitorEvaluateDPO; import com.njcn.prepare.harmonic.pojo.mysql.po.line.RMpPassRateDPO; -import com.njcn.prepare.harmonic.service.mysql.line.RMpPassRateDService; +import com.njcn.prepare.harmonic.pojo.mysql.po.line.RMpPassRateMPO; +import com.njcn.prepare.harmonic.pojo.mysql.po.line.RMpPassRateQPO; +import com.njcn.prepare.harmonic.pojo.mysql.po.line.RMpPassRateYPO; +import com.njcn.prepare.harmonic.pojo.param.LineParam; +import com.njcn.prepare.harmonic.service.mysql.line.*; +import com.njcn.prepare.harmonic.utils.PublicUtil; +import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; +import java.util.ArrayList; +import java.util.Date; import java.util.List; /** - * * Description: * 接口文档访问地址:http://serverIP:port/swagger-ui.html * Date: 2023/2/28 15:39【需求编号】 @@ -19,12 +35,179 @@ import java.util.List; * @version V1.0.0 */ @Service -public class RMpPassRateDServiceImpl extends MppServiceImpl implements RMpPassRateDService{ +@RequiredArgsConstructor +public class RMpPassRateDServiceImpl extends MppServiceImpl implements RMpPassRateDService { + + private final LineFeignClient lineFeignClient; + private final RMpMonitorEvaluateDService rMpMonitorEvaluateDService; + private final RMpPartHarmonicDetailDMapper rMpPartHarmonicDetailDMapper; + private final RMpSurplusHarmonicDetailDMapper rMpSurplusHarmonicDetailDMapper; + + private final RMpPassRateMService rMpPassRateMService; + private final RMpPassRateQService rMpPassRateQService; + private final RMpPassRateYService rMpPassRateYService; + @DS("process") @Override public List getAll() { - return this.list(); + return this.list ( ); + } + + + public void passRateHandlerD(LineParam lineParam) { + List lineIds = lineParam.getLineIds ( ); + String dataDate = lineParam.getDataDate ( ); + Date date = DateUtil.parse (dataDate); + List rMpPassRateDPOList = new ArrayList<> ( ); + QueryWrapper rMpMonitorEvaluateDPOQueryWrapper = new QueryWrapper ( ); + + QueryWrapper queryWrapper = new QueryWrapper ( ); + QueryWrapper surplusHarmonicDetailDQueryWrapper = new QueryWrapper ( ); + + lineIds.forEach (temp -> { + LineDetailDataVO data = lineFeignClient.getLineDetailData (temp).getData ( ); + Integer statisticalInterval = data.getTimeInterval ( ); + rMpMonitorEvaluateDPOQueryWrapper.clear (); + rMpMonitorEvaluateDPOQueryWrapper.select ("effective_minute_count"). + eq ("measurement_point_id", temp). + eq ("DATE_FORMAT( data_date ,'%Y-%m-%d')", lineParam.getDataDate ( )); + RMpMonitorEvaluateDPO one = rMpMonitorEvaluateDService.getOne (rMpMonitorEvaluateDPOQueryWrapper); + queryWrapper.clear ( ); + queryWrapper.select ("freq_times", "v_dev_times"). + eq ("measurement_point_id", temp). + eq ("DATE_FORMAT( data_date ,'%Y-%m-%d')", lineParam.getDataDate ( )); + RMpPartHarmonicDetailD rMpPartHarmonicDetailD = rMpPartHarmonicDetailDMapper.selectOne (queryWrapper); + + surplusHarmonicDetailDQueryWrapper.clear ( ); + surplusHarmonicDetailDQueryWrapper.select ("flicker_times"). + eq ("measurement_point_id", temp). + eq ("DATE_FORMAT( data_date ,'%Y-%m-%d')", lineParam.getDataDate ( )); + RMpSurplusHarmonicDetailD rMpSurplusHarmonicDetailD = rMpSurplusHarmonicDetailDMapper.selectOne (surplusHarmonicDetailDQueryWrapper); + RMpPassRateDPO rMpPassRateDPO = new RMpPassRateDPO ( ); + rMpPassRateDPO.setMeasurementPointId (temp); + rMpPassRateDPO.setDataDate (date); + rMpPassRateDPO.setEffectiveTime (statisticalInterval *one.getEffectiveMinuteCount ()); + rMpPassRateDPO.setFreqTime (statisticalInterval * rMpPartHarmonicDetailD.getFreqTimes ( )); + rMpPassRateDPO.setvDevTime (statisticalInterval * rMpPartHarmonicDetailD.getVDevTimes ( )); + rMpPassRateDPO.setFlickerTime (statisticalInterval * rMpSurplusHarmonicDetailD.getFlickerTimes ( )); + + rMpPassRateDPOList.add (rMpPassRateDPO); + + }); + this.saveOrUpdateBatchByMultiId(rMpPassRateDPOList, 500); + } + @Override + public void passRateHandler(LineParam lineParam) { + Integer type = lineParam.getType ( ); + switch (type) { + case 1: + this.passRateHandlerY (lineParam); + break; + case 2: + this.passRateHandlerQ (lineParam); + break; + case 3: + this.passRateHandlerM (lineParam); + break; + case 5: + this.passRateHandlerD (lineParam); + break; + default: + break; + } + } + + private void passRateHandlerY(LineParam lineParam) { + List lineIds = lineParam.getLineIds ( ); + String dataDate = lineParam.getDataDate ( ); + Date date = DateUtil.parse (dataDate); + List rMpPassRateYPOList = new ArrayList<> ( ); + + lineIds.forEach (temp -> { + QueryWrapper queryWrapper = new QueryWrapper<> (); + queryWrapper.eq ("measurement_point_id", temp). + eq("YEAR( data_date )",dataDate.substring (0, 4)); + List rMpPassRateDPOList = this.getBaseMapper ( ).selectList (queryWrapper); + RMpPassRateYPO rMpPassRateYPO = new RMpPassRateYPO(); + rMpPassRateYPO.setMeasurementPointId (temp); + rMpPassRateYPO.setDataDate (date); + int sumEffectiveTime = rMpPassRateDPOList.stream ( ).mapToInt (RMpPassRateDPO::getEffectiveTime).sum ( ); + int sumFreqTime = rMpPassRateDPOList.stream ( ).mapToInt (RMpPassRateDPO::getFreqTime).sum ( ); + int sumDevTime = rMpPassRateDPOList.stream ( ).mapToInt (RMpPassRateDPO::getvDevTime).sum ( ); + int sumFlickerTime = rMpPassRateDPOList.stream ( ).mapToInt (RMpPassRateDPO::getFlickerTime).sum ( ); + + rMpPassRateYPO.setFreqPassRate (calculatePassRate(sumEffectiveTime,sumFreqTime)); + rMpPassRateYPO.setvDevPassRate (calculatePassRate(sumEffectiveTime,sumDevTime)); + rMpPassRateYPO.setFlickerPassRate (calculatePassRate(sumEffectiveTime,sumFlickerTime)); + rMpPassRateYPOList.add (rMpPassRateYPO); + }); + rMpPassRateYService.saveOrUpdateBatchByMultiId (rMpPassRateYPOList, 500); + } + + private void passRateHandlerQ(LineParam lineParam) { + + List lineIds = lineParam.getLineIds ( ); + String dataDate = lineParam.getDataDate ( ); + Date date = DateUtil.parse (dataDate); + List rMpPassRateQPOList = new ArrayList<> ( ); + + lineIds.forEach (temp -> { + QueryWrapper queryWrapper = new QueryWrapper<> (); + queryWrapper.eq ("measurement_point_id", temp). + eq("QUARTER( data_date)", PublicUtil.getNowQuarter (dataDate)); + List rMpPassRateDPOList = this.getBaseMapper ( ).selectList (queryWrapper); + RMpPassRateQPO rMpPassRateQPO = new RMpPassRateQPO(); + rMpPassRateQPO.setMeasurementPointId (temp); + rMpPassRateQPO.setDataDate (date); + int sumEffectiveTime = rMpPassRateDPOList.stream ( ).mapToInt (RMpPassRateDPO::getEffectiveTime).sum ( ); + int sumFreqTime = rMpPassRateDPOList.stream ( ).mapToInt (RMpPassRateDPO::getFreqTime).sum ( ); + int sumDevTime = rMpPassRateDPOList.stream ( ).mapToInt (RMpPassRateDPO::getvDevTime).sum ( ); + int sumFlickerTime = rMpPassRateDPOList.stream ( ).mapToInt (RMpPassRateDPO::getFlickerTime).sum ( ); + + rMpPassRateQPO.setFreqPassRate (calculatePassRate(sumEffectiveTime,sumFreqTime)); + rMpPassRateQPO.setvDevPassRate (calculatePassRate(sumEffectiveTime,sumDevTime)); + rMpPassRateQPO.setFlickerPassRate (calculatePassRate(sumEffectiveTime,sumFlickerTime)); + rMpPassRateQPOList.add (rMpPassRateQPO); + }); + rMpPassRateQService.saveOrUpdateBatchByMultiId (rMpPassRateQPOList, 500); + } + + private void passRateHandlerM(LineParam lineParam) { + + List lineIds = lineParam.getLineIds ( ); + String dataDate = lineParam.getDataDate ( ); + Date date = DateUtil.parse (dataDate); + List rMpPassRateMPOList = new ArrayList<> ( ); + + lineIds.forEach (temp -> { + QueryWrapper queryWrapper = new QueryWrapper<> (); + queryWrapper.eq ("measurement_point_id", temp). + eq("DATE_FORMAT( data_date ,'%Y-%m')",dataDate.substring (0, 7)); + List rMpPassRateDPOList = this.getBaseMapper ( ).selectList (queryWrapper); + RMpPassRateMPO rMpPassRateMPO = new RMpPassRateMPO(); + rMpPassRateMPO.setMeasurementPointId (temp); + rMpPassRateMPO.setDataDate (date); + int sumEffectiveTime = rMpPassRateDPOList.stream ( ).mapToInt (RMpPassRateDPO::getEffectiveTime).sum ( ); + int sumFreqTime = rMpPassRateDPOList.stream ( ).mapToInt (RMpPassRateDPO::getFreqTime).sum ( ); + int sumDevTime = rMpPassRateDPOList.stream ( ).mapToInt (RMpPassRateDPO::getvDevTime).sum ( ); + int sumFlickerTime = rMpPassRateDPOList.stream ( ).mapToInt (RMpPassRateDPO::getFlickerTime).sum ( ); + + rMpPassRateMPO.setFreqPassRate (calculatePassRate(sumEffectiveTime,sumFreqTime)); + rMpPassRateMPO.setvDevPassRate (calculatePassRate(sumEffectiveTime,sumDevTime)); + rMpPassRateMPO.setFlickerPassRate (calculatePassRate(sumEffectiveTime,sumFlickerTime)); + rMpPassRateMPOList.add (rMpPassRateMPO); + }); + rMpPassRateMService.saveOrUpdateBatchByMultiId (rMpPassRateMPOList, 500); + } + + private Double calculatePassRate(int sumEffectiveTime, int sumFreqTime) { + Double result =0.00; + if(sumEffectiveTime==0||sumEffectiveTime<=sumFreqTime){ + return result; + } + result = (double) ((sumEffectiveTime-sumFreqTime)/sumEffectiveTime); + return result; } } diff --git a/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/Impl/line/ROperatingMonitorDServiceImpl.java b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/Impl/line/ROperatingMonitorDServiceImpl.java new file mode 100644 index 000000000..f70e3540d --- /dev/null +++ b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/Impl/line/ROperatingMonitorDServiceImpl.java @@ -0,0 +1,104 @@ +package com.njcn.prepare.harmonic.service.mysql.Impl.line; + +import cn.hutool.core.date.DateUtil; +import com.github.jeffreyning.mybatisplus.service.MppServiceImpl; +import com.njcn.device.pq.api.LineFeignClient; +import com.njcn.device.pq.pojo.vo.LineDetailDataVO; +import com.njcn.prepare.harmonic.mapper.mysql.line.ROperatingMonitorDMapper; +import com.njcn.prepare.harmonic.pojo.mysql.RMpMonitorEvaluateDPO; +import com.njcn.prepare.harmonic.pojo.mysql.ROperatingMonitorDPO; +import com.njcn.prepare.harmonic.pojo.mysql.RStatAbnormalDPO; +import com.njcn.prepare.harmonic.service.mysql.line.RMpMonitorEvaluateDService; +import com.njcn.prepare.harmonic.service.mysql.line.ROperatingMonitorService; +import com.njcn.prepare.harmonic.service.mysql.line.RStatAbnormalDService; +import lombok.RequiredArgsConstructor; +import org.springframework.scheduling.annotation.Async; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.math.BigDecimal; +import java.util.ArrayList; +import java.util.Date; +import java.util.List; + +/** + * + * Description: + * 接口文档访问地址:http://serverIP:port/swagger-ui.html + * Date: 2023/4/21 10:17【需求编号】 + * + * @author clam + * @version V1.0.0 + */ +@Service +@RequiredArgsConstructor +public class ROperatingMonitorDServiceImpl extends MppServiceImpl implements ROperatingMonitorService { + + private final RMpMonitorEvaluateDService rMpMonitorEvaluateDService; + private final RStatAbnormalDService rStatAbnormalDService; + private final LineFeignClient lineFeignClient; + + /** + * @Description: 采用以下公式计算数据完整率: + * 〖数据完整率〗_日统计=有效值数据个数/(1440/interval)*100% + * 采用以下公式计算数据准确率 + * 〖数据准确率〗_日统计=(频率+相电压+线电压+畸变率+不平衡度)/(有效值数据个数*5)*100% + * 采用以下公式计算指标完整率 + * 〖指标完整率〗_日统计=(频率+相电压+线电压+畸变率+不平衡度)/(1440/interval*5)*100% 采用以下公式计算数据完整率: + * 〖数据完整率〗_日统计=有效值数据个数/(1440/interval)*100% + * 采用以下公式计算数据准确率 + * 〖数据准确率〗_日统计=(频率+相电压+线电压+畸变率+不平衡度)/(有效值数据个数*5)*100% + * 采用以下公式计算指标完整率 + * 〖指标完整率〗_日统计=(频率+相电压+线电压+畸变率+不平衡度)/(1440/interval*5)*100% + * @Param: [indexLists, dataDate] + * @return: void + * @Author: clam + * @Date: 2023/4/21 + */ + @Override + @Transactional(rollbackFor = {Exception.class}) + @Async("asyncExecutor") + public void handlerMonitorOperatingD(List indexLists, String dataDate) { + Date date = DateUtil.parse(dataDate); + List rOperatingMonitorDPOList = new ArrayList<> (); + indexLists.forEach (temp -> { + + LineDetailDataVO data = lineFeignClient.getLineDetailData (temp).getData ( ); + /*todo 统计间隔,电压等级取值方式,devid后期提供融合版本接口获取不然pms,pqs系统取值方式不一样*/ + /*统计间隔*/ + Integer statisticalInterval = data.getTimeInterval (); + String devid = "待获取"; + + RMpMonitorEvaluateDPO rMpMonitorEvaluateDPO = new RMpMonitorEvaluateDPO(); + rMpMonitorEvaluateDPO.setMeasurementPointId (temp); + rMpMonitorEvaluateDPO.setDataDate (date); + rMpMonitorEvaluateDPO = rMpMonitorEvaluateDService.selectByMultiId (rMpMonitorEvaluateDPO); + RStatAbnormalDPO rStatAbnormalDPO = new RStatAbnormalDPO(); + rStatAbnormalDPO.setDataDate (date); + rStatAbnormalDPO.setMeasurementPointId (temp); + rStatAbnormalDPO = rStatAbnormalDService.selectByMultiId (rStatAbnormalDPO); + ROperatingMonitorDPO rOperatingMonitorDPO = new ROperatingMonitorDPO(); + rOperatingMonitorDPO.setMeasurementPointId (temp); + rOperatingMonitorDPO.setDataDate (date); + rOperatingMonitorDPO.setIsUnusual (rStatAbnormalDPO.getValueAlarm ()); + rOperatingMonitorDPO.setEffectiveMinuteCount (rMpMonitorEvaluateDPO.getEffectiveMinuteCount ()); + rOperatingMonitorDPO.setDataIntegrityRate (BigDecimal.valueOf (rMpMonitorEvaluateDPO.getEffectiveMinuteCount ()*statisticalInterval/1440)); + rOperatingMonitorDPO.setDataRightRate (BigDecimal.valueOf( + (rMpMonitorEvaluateDPO.getFreqCount ()+ rMpMonitorEvaluateDPO.getLineVoltageCount ()+ + rMpMonitorEvaluateDPO.getPhaseVoltageCount ()+rMpMonitorEvaluateDPO.getUnbalanceCount ()+ + rMpMonitorEvaluateDPO.getVThdCount ())/(5*rMpMonitorEvaluateDPO.getEffectiveMinuteCount ()) + )); + rOperatingMonitorDPO.setIndexIntegrityRate ( + BigDecimal.valueOf( + (rMpMonitorEvaluateDPO.getFreqCount ()+ rMpMonitorEvaluateDPO.getLineVoltageCount ()+ + rMpMonitorEvaluateDPO.getPhaseVoltageCount ()+rMpMonitorEvaluateDPO.getUnbalanceCount ()+ + rMpMonitorEvaluateDPO.getVThdCount ())*statisticalInterval/(5*1440) + ) + ); + rOperatingMonitorDPO.setDevId (devid); + rOperatingMonitorDPO.setMonitorState ("待获取"); + rOperatingMonitorDPOList.add (rOperatingMonitorDPO); + }); + this.saveOrUpdateBatchByMultiId (rOperatingMonitorDPOList,500); + } +} diff --git a/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/Impl/line/ROperatingMonitorMServiceImpl.java b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/Impl/line/ROperatingMonitorMServiceImpl.java new file mode 100644 index 000000000..8ad5a63ca --- /dev/null +++ b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/Impl/line/ROperatingMonitorMServiceImpl.java @@ -0,0 +1,77 @@ +package com.njcn.prepare.harmonic.service.mysql.Impl.line; + +import cn.hutool.core.date.DateUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.github.jeffreyning.mybatisplus.service.MppServiceImpl; +import com.njcn.prepare.harmonic.mapper.mysql.line.ROperatingMonitorMMapper; +import com.njcn.prepare.harmonic.pojo.mysql.ROperatingMonitorDPO; +import com.njcn.prepare.harmonic.pojo.mysql.ROperatingMonitorMPO; +import com.njcn.prepare.harmonic.service.mysql.line.ROperatingMonitorMService; +import com.njcn.prepare.harmonic.service.mysql.line.ROperatingMonitorService; +import lombok.RequiredArgsConstructor; +import org.springframework.scheduling.annotation.Async; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.math.BigDecimal; +import java.util.ArrayList; +import java.util.Date; +import java.util.List; +import java.util.stream.Collectors; + +/** + * Description: + * 接口文档访问地址:http://serverIP:port/swagger-ui.html + * Date: 2023/4/21 15:41【需求编号】 + * + * @author clam + * @version V1.0.0 + */ +@Service +@RequiredArgsConstructor +public class ROperatingMonitorMServiceImpl extends MppServiceImpl implements ROperatingMonitorMService { + private final ROperatingMonitorService rOperatingMonitorService; + + + @Override + @Transactional(rollbackFor = {Exception.class}) + @Async("asyncExecutor") + public void handlerMonitorOperatingM(List indexLists, String dataDate) { + Date date = DateUtil.parse (dataDate); + List rOperatingMonitorMPOList = new ArrayList<> ( ); + QueryWrapper queryWrapper = new QueryWrapper<> ( ); + + indexLists.forEach (temp -> { + queryWrapper.clear ( ); + queryWrapper.eq ("measurement_point_id", temp). + eq ("DATE_FORMAT( data_date ,'%Y-%m')", dataDate.substring (0, 7)); + List list = rOperatingMonitorService.list (queryWrapper); + ROperatingMonitorMPO rOperatingMonitorMPO = new ROperatingMonitorMPO ( ); + BigDecimal dataIntegrityRate = BigDecimal.valueOf ( + list.stream ( ). + mapToDouble (po -> po.getDataIntegrityRate ( ).doubleValue ( )) + .average ( ).getAsDouble ( ) + ); + BigDecimal dataRightRate = BigDecimal.valueOf ( + list.stream ( ). + mapToDouble (po -> po.getDataRightRate ( ).doubleValue ( )) + .average ( ).getAsDouble ( ) + ); + BigDecimal indexIntegrityRate = BigDecimal.valueOf ( + list.stream ( ). + mapToDouble (po -> po.getIndexIntegrityRate ( ).doubleValue ( )) + .average ( ).getAsDouble ( ) + ); + rOperatingMonitorMPO.setMeasurementPointId (temp); + rOperatingMonitorMPO.setDataDate (date); + rOperatingMonitorMPO.setDataIntegrityRate (dataIntegrityRate); + rOperatingMonitorMPO.setDataRightRate (dataRightRate); + rOperatingMonitorMPO.setIndexIntegrityRate (indexIntegrityRate); + rOperatingMonitorMPO.setDevId (list.get (0).getDevId ( )); + List collect = list.stream ( ).map (ROperatingMonitorDPO::getIsUnusual).collect (Collectors.toList ( )); + rOperatingMonitorMPO.setIsUnusual (collect.contains (Integer.valueOf (0)) ? 0 : 1); + rOperatingMonitorMPOList.add (rOperatingMonitorMPO); + }); + this.saveOrUpdateBatchByMultiId ( rOperatingMonitorMPOList,500); + } +} diff --git a/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/Impl/line/RStatAbnormalDServiceImpl.java b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/Impl/line/RStatAbnormalDServiceImpl.java new file mode 100644 index 000000000..2c9690355 --- /dev/null +++ b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/Impl/line/RStatAbnormalDServiceImpl.java @@ -0,0 +1,54 @@ +package com.njcn.prepare.harmonic.service.mysql.Impl.line; + +import cn.hutool.core.date.DateUtil; +import com.github.jeffreyning.mybatisplus.service.MppServiceImpl; +import com.njcn.prepare.harmonic.mapper.mysql.line.RStatAbnormalDMapper; +import com.njcn.prepare.harmonic.pojo.mysql.RMpMonitorEvaluateDPO; +import com.njcn.prepare.harmonic.pojo.mysql.RStatAbnormalDPO; +import com.njcn.prepare.harmonic.service.mysql.line.RMpMonitorEvaluateDService; +import com.njcn.prepare.harmonic.service.mysql.line.RStatAbnormalDService; +import lombok.RequiredArgsConstructor; +import org.springframework.scheduling.annotation.Async; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.ArrayList; +import java.util.Date; +import java.util.List; + +/** + * + * Description: + * 接口文档访问地址:http://serverIP:port/swagger-ui.html + * Date: 2023/4/21 9:07【需求编号】 + * + * @author clam + * @version V1.0.0 + */ +@Service +@RequiredArgsConstructor +public class RStatAbnormalDServiceImpl extends MppServiceImpl implements RStatAbnormalDService{ + + + private final RMpMonitorEvaluateDService rMpMonitorEvaluateDService; + @Override + @Transactional(rollbackFor = {Exception.class}) + @Async("asyncExecutor") + public void handlerMonitorAbnormal(List indexLists, String dataDate) { + Date date = DateUtil.parse(dataDate); + List rStatAbnormalDPOS = new ArrayList<> (); + indexLists.forEach (temp -> { + RMpMonitorEvaluateDPO rMpMonitorEvaluateDPO = new RMpMonitorEvaluateDPO(); + rMpMonitorEvaluateDPO.setMeasurementPointId (temp); + rMpMonitorEvaluateDPO.setDataDate (date); + rMpMonitorEvaluateDPO = rMpMonitorEvaluateDService.selectByMultiId (rMpMonitorEvaluateDPO); + RStatAbnormalDPO rStatAbnormalDPO = new RStatAbnormalDPO(); + rStatAbnormalDPO.setDataDate (date); + rStatAbnormalDPO.setMeasurementPointId (temp); + rStatAbnormalDPO.setValueAlarm (rMpMonitorEvaluateDPO.getEffectiveMinuteCount () + { + + /** + * @Description: eventdetailHandler + * @Param: [lineParam] + * @return: void + * @Author: clam + * @Date: 2023/4/23 + */ + void eventdetailHandler(LineParam lineParam); + + Integer queryByCondition(String lineId, String dataDate, String eventType); +} diff --git a/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/line/RMpPassRateDService.java b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/line/RMpPassRateDService.java index e349877ff..bc65ab1f9 100644 --- a/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/line/RMpPassRateDService.java +++ b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/line/RMpPassRateDService.java @@ -2,6 +2,7 @@ package com.njcn.prepare.harmonic.service.mysql.line; import com.github.jeffreyning.mybatisplus.service.IMppService; import com.njcn.prepare.harmonic.pojo.mysql.po.line.RMpPassRateDPO; +import com.njcn.prepare.harmonic.pojo.param.LineParam; import java.util.List; @@ -17,4 +18,6 @@ import java.util.List; public interface RMpPassRateDService extends IMppService { List getAll(); + + void passRateHandler(LineParam lineParam); } diff --git a/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/line/ROperatingMonitorMService.java b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/line/ROperatingMonitorMService.java new file mode 100644 index 000000000..5116bb266 --- /dev/null +++ b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/line/ROperatingMonitorMService.java @@ -0,0 +1,27 @@ +package com.njcn.prepare.harmonic.service.mysql.line; + +import com.github.jeffreyning.mybatisplus.service.IMppService; +import com.njcn.prepare.harmonic.pojo.mysql.ROperatingMonitorMPO; + +import java.util.List; + +/** + * + * Description: + * 接口文档访问地址:http://serverIP:port/swagger-ui.html + * Date: 2023/4/21 15:41【需求编号】 + * + * @author clam + * @version V1.0.0 + */ +public interface ROperatingMonitorMService extends IMppService { + + /** + * @Description: handlerMonitorOperatingM + * @Param: [indexLists, dataDate] + * @return: void + * @Author: clam + * @Date: 2023/4/21 + */ + void handlerMonitorOperatingM(List indexLists, String dataDate); + } diff --git a/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/line/ROperatingMonitorService.java b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/line/ROperatingMonitorService.java new file mode 100644 index 000000000..d1dd0e470 --- /dev/null +++ b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/line/ROperatingMonitorService.java @@ -0,0 +1,27 @@ +package com.njcn.prepare.harmonic.service.mysql.line; + +import com.github.jeffreyning.mybatisplus.service.IMppService; +import com.njcn.prepare.harmonic.pojo.mysql.ROperatingMonitorDPO; + +import java.util.List; + +/** + * + * Description: + * 接口文档访问地址:http://serverIP:port/swagger-ui.html + * Date: 2023/4/21 10:17【需求编号】 + * + * @author clam + * @version V1.0.0 + */ +public interface ROperatingMonitorService extends IMppService { + + /** + * @Description: handlerMonitorOperatingD + * @Param: [indexLists, dataDate] + * @return: void + * @Author: clam + * @Date: 2023/4/21 + */ + void handlerMonitorOperatingD(List indexLists, String dataDate); + } diff --git a/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/line/RStatAbnormalDService.java b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/line/RStatAbnormalDService.java new file mode 100644 index 000000000..efb5835dd --- /dev/null +++ b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/line/RStatAbnormalDService.java @@ -0,0 +1,21 @@ +package com.njcn.prepare.harmonic.service.mysql.line; + +import com.github.jeffreyning.mybatisplus.service.IMppService; +import com.njcn.prepare.harmonic.pojo.mysql.RStatAbnormalDPO; + +import java.util.List; + +/** + * + * Description: + * 接口文档访问地址:http://serverIP:port/swagger-ui.html + * Date: 2023/4/21 9:07【需求编号】 + * + * @author clam + * @version V1.0.0 + */ +public interface RStatAbnormalDService extends IMppService { + + + void handlerMonitorAbnormal(List indexLists, String dataDate); + } diff --git a/pqs-system/system-boot/src/main/java/com/njcn/system/controller/AreaController.java b/pqs-system/system-boot/src/main/java/com/njcn/system/controller/AreaController.java index 86d7f0e5c..ae117061f 100644 --- a/pqs-system/system-boot/src/main/java/com/njcn/system/controller/AreaController.java +++ b/pqs-system/system-boot/src/main/java/com/njcn/system/controller/AreaController.java @@ -15,14 +15,13 @@ import com.njcn.system.pojo.param.AreaParam; import com.njcn.system.pojo.po.Area; import com.njcn.system.pojo.vo.AreaTreeVO; import com.njcn.system.service.IAreaService; +import com.njcn.web.controller.BaseController; import io.swagger.annotations.*; import lombok.AllArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; -import com.njcn.web.controller.BaseController; - import java.util.List; /** @@ -273,5 +272,21 @@ public class AreaController extends BaseController { Area result = areaService.areaDeptPro(id); return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, result, methodDescribe); } + + /** + * @Description: 获取省市区下拉框 + * @Param: + * @return: + * @Author: clam + * @Date: 2023/4/11 + */ + @OperateInfo(info = LogEnum.SYSTEM_COMMON) + @PostMapping("/areaSelect") + @ApiOperation("获取省市区下拉框") + public HttpResult> areaSelect() { + String methodDescribe = getMethodDescribe("areaSelect"); + List result = areaService.areaSelect(); + return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, result, methodDescribe); + } } diff --git a/pqs-system/system-boot/src/main/java/com/njcn/system/service/IAreaService.java b/pqs-system/system-boot/src/main/java/com/njcn/system/service/IAreaService.java index 4dfe8fb29..3bba90bba 100644 --- a/pqs-system/system-boot/src/main/java/com/njcn/system/service/IAreaService.java +++ b/pqs-system/system-boot/src/main/java/com/njcn/system/service/IAreaService.java @@ -4,7 +4,6 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.IService; import com.njcn.system.pojo.dto.AreaTreeDTO; import com.njcn.system.pojo.param.AreaParam; -import com.njcn.system.pojo.param.DictTypeParam; import com.njcn.system.pojo.po.Area; import com.njcn.system.pojo.vo.AreaTreeVO; @@ -105,4 +104,12 @@ public interface IAreaService extends IService { * @return 行政区域详情 */ Area selectAreaByName(String name); + /** + * @Description: areaSelect + * @Param: [] + * @return: java.util.List + * @Author: clam + * @Date: 2023/4/11 + */ + List areaSelect(); } diff --git a/pqs-system/system-boot/src/main/java/com/njcn/system/service/impl/AreaServiceImpl.java b/pqs-system/system-boot/src/main/java/com/njcn/system/service/impl/AreaServiceImpl.java index 76a6cf251..8d307beea 100644 --- a/pqs-system/system-boot/src/main/java/com/njcn/system/service/impl/AreaServiceImpl.java +++ b/pqs-system/system-boot/src/main/java/com/njcn/system/service/impl/AreaServiceImpl.java @@ -6,6 +6,7 @@ import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.njcn.common.pojo.enums.common.DataStateEnum; import com.njcn.common.pojo.exception.BusinessException; import com.njcn.system.enums.SystemResponseEnum; @@ -15,18 +16,14 @@ import com.njcn.system.pojo.param.AreaParam; import com.njcn.system.pojo.po.Area; import com.njcn.system.pojo.vo.AreaTreeVO; import com.njcn.system.service.IAreaService; -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.njcn.user.api.DeptFeignClient; -import com.njcn.user.pojo.po.Dept; import com.njcn.web.factory.PageFactory; import com.njcn.web.utils.RequestUtil; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; -import javax.annotation.Resource; import java.util.ArrayList; -import java.util.Collections; import java.util.List; import java.util.stream.Collectors; @@ -286,5 +283,16 @@ public class AreaServiceImpl extends ServiceImpl implements IA } } + @Override + public List areaSelect() { + List areaTreeVOS = this.baseMapper.getAreaAll(); + List collect = areaTreeVOS.stream ( ).filter (temp ->"0".equals(temp.getPid())) + .map ((areaFirst) -> { + //map映射方法改变结果,调用getChildrens()方法,把一级部门deptFirst和所有数据allDept作为参数传递,查询所有下级部门 + areaFirst.setChildren (getChildrens (areaFirst, areaTreeVOS)); + return areaFirst; + }).collect (Collectors.toList ( )); + return collect; + } }