代码提交

This commit is contained in:
huangzj
2023-04-25 10:57:26 +08:00
parent 98e9f41758
commit 5b118aed7a
38 changed files with 1549 additions and 34 deletions

View File

@@ -59,6 +59,7 @@ public class AppTopologyDiagramServiceImpl extends MppServiceImpl<AppTopologyDia
} }
@Override @Override
@Transactional(rollbackFor = {Exception.class})
public Boolean AuditAppTopologyDiagram(AppTopologyDiagramAuditParm appTopologyDiagramAuditParm) { public Boolean AuditAppTopologyDiagram(AppTopologyDiagramAuditParm appTopologyDiagramAuditParm) {
AppTopologyDiagramPO appTopologyDiagramPO = new AppTopologyDiagramPO(); AppTopologyDiagramPO appTopologyDiagramPO = new AppTopologyDiagramPO();
if(!Objects.equal (appTopologyDiagramAuditParm.getFile (),null )){ if(!Objects.equal (appTopologyDiagramAuditParm.getFile (),null )){

View File

@@ -47,6 +47,7 @@ public class CsEdDataServiceImpl extends ServiceImpl<CsEdDataMapper, CsEdDataPO>
} }
@Override @Override
@Transactional(rollbackFor = {Exception.class})
public Boolean auditEdData(CsEdDataAuditParm csEdDataAuditParm) { public Boolean auditEdData(CsEdDataAuditParm csEdDataAuditParm) {
CsEdDataPO csEdDataPO = new CsEdDataPO (); CsEdDataPO csEdDataPO = new CsEdDataPO ();
BeanUtils.copyProperties (csEdDataAuditParm, csEdDataPO); BeanUtils.copyProperties (csEdDataAuditParm, csEdDataPO);

View File

@@ -40,7 +40,6 @@ public class NjcnBeanUtil {
} }
} }
}); });
System.out.println (target.toString ( ));
return (T) target; return (T) target;
} }

View File

@@ -137,6 +137,7 @@ public class LineServiceImpl extends ServiceImpl<LineMapper, Line> implements Li
lineDetailDataVO.setDevCapacity(lineDetail.getDevCapacity()); lineDetailDataVO.setDevCapacity(lineDetail.getDevCapacity());
lineDetailDataVO.setShortCapacity(lineDetail.getShortCapacity()); lineDetailDataVO.setShortCapacity(lineDetail.getShortCapacity());
lineDetailDataVO.setStandardCapacity(lineDetail.getStandardCapacity()); lineDetailDataVO.setStandardCapacity(lineDetail.getStandardCapacity());
lineDetailDataVO.setTimeInterval (lineDetail.getTimeInterval ());
return lineDetailDataVO; return lineDetailDataVO;
} }

View File

@@ -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;
}

View File

@@ -23,9 +23,9 @@ import java.util.Date;
@Data @Data
@TableName(value = "r_mp_monitor_evaluate_d") @TableName(value = "r_mp_monitor_evaluate_d")
public class RMpMonitorEvaluateDPO { public class RMpMonitorEvaluateDPO {
@MppMultiId(value = "time_id") @MppMultiId(value = "data_date")
@ApiModelProperty(value="") @ApiModelProperty(value="")
private Date timeId; private Date dataDate;
/** /**
* 监测点Id * 监测点Id

View File

@@ -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;
}

View File

@@ -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;
}

View File

@@ -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;
}

View File

@@ -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<Boolean> handlerMonitorAbnormal(@RequestBody LineParam jobParam ){
log.info(LocalDateTime.now()+"handlerMonitorAbnormal开始执行");
String methodDescribe = getMethodDescribe("handlerMonitorAbnormal");
List<String> 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);
}
}

View File

@@ -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<String> eventdetailHandler(@RequestBody @Validated LineParam lineParam){
log.info(LocalDateTime.now()+"eventdetailHandler始执行");
String methodDescribe = getMethodDescribe("eventdetailHandler");
List<String> 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);
}
}

View File

@@ -46,7 +46,7 @@ public class RMpMonitorEvaluateDController extends BaseController {
@ApiImplicitParam(value = "jobParam",name = "jobParam",required = true) @ApiImplicitParam(value = "jobParam",name = "jobParam",required = true)
@PostMapping("handlerMonitorEvaluate") @PostMapping("handlerMonitorEvaluate")
@OperateInfo(info = LogEnum.BUSINESS_MEDIUM) @OperateInfo(info = LogEnum.BUSINESS_MEDIUM)
public HttpResult<Boolean> dataToDayHandler(@RequestBody LineParam jobParam ){ public HttpResult<Boolean> handlerMonitorEvaluate(@RequestBody LineParam jobParam ){
log.info(LocalDateTime.now()+"handlerMonitorEvaluate开始执行"); log.info(LocalDateTime.now()+"handlerMonitorEvaluate开始执行");
String methodDescribe = getMethodDescribe("handlerMonitorEvaluate"); String methodDescribe = getMethodDescribe("handlerMonitorEvaluate");

View File

@@ -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<String> passRateHandler(@RequestBody @Validated LineParam lineParam){
log.info(LocalDateTime.now()+"passRateHandler始执行");
String methodDescribe = getMethodDescribe("passRateHandler");
List<String> 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);
}
}

View File

@@ -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<Boolean> handlerMonitorOperatingD(@RequestBody LineParam jobParam ){
log.info(LocalDateTime.now()+"handlerMonitorOperatingD开始执行");
String methodDescribe = getMethodDescribe("handlerMonitorOperatingD");
List<String> 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<Boolean> handlerMonitorOperatingM(@RequestBody LineParam jobParam ){
log.info(LocalDateTime.now()+"handlerMonitorOperatingM开始执行");
String methodDescribe = getMethodDescribe("handlerMonitorOperatingM");
List<String> 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);
}
}

View File

@@ -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<RMpEventDetailPO> {
}

View File

@@ -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<ROperatingMonitorDPO> {
}

View File

@@ -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<ROperatingMonitorMPO> {
}

View File

@@ -1,14 +1,15 @@
package com.njcn.prepare.harmonic.mapper.mysql.line; package com.njcn.prepare.harmonic.mapper.mysql.line;
import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.github.jeffreyning.mybatisplus.base.MppBaseMapper;
import com.njcn.device.pq.pojo.po.RStatAbnormalD; import com.njcn.prepare.harmonic.pojo.mysql.RStatAbnormalDPO;
/** /**
* RStatAbnormalDMapper * Description:
* 接口文档访问地址http://serverIP:port/swagger-ui.html
* Date: 2023/4/21 9:07【需求编号】
* *
* @author qijian * @author clam
* @date 2022/10/26 * @version V1.0.0
*/ */
public interface RStatAbnormalDMapper extends BaseMapper<RStatAbnormalD> { public interface RStatAbnormalDMapper extends MppBaseMapper<RStatAbnormalDPO> {
} }

View File

@@ -0,0 +1,40 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.njcn.prepare.harmonic.mapper.mysql.line.RMpEventDetailMapper">
<resultMap id="BaseResultMap" type="com.njcn.prepare.harmonic.pojo.mysql.RMpEventDetailPO">
<!--@mbg.generated-->
<!--@Table r_mp_event_detail-->
<id column="event_id" jdbcType="CHAR" property="eventId" />
<result column="measurement_point_id" jdbcType="VARCHAR" property="measurementPointId" />
<result column="event_type" jdbcType="CHAR" property="eventType" />
<result column="advance_reason" jdbcType="CHAR" property="advanceReason" />
<result column="advance_type" jdbcType="CHAR" property="advanceType" />
<result column="eventass_index" jdbcType="VARCHAR" property="eventassIndex" />
<result column="dq_time" jdbcType="DOUBLE" property="dqTime" />
<result column="deal_time" jdbcType="TIMESTAMP" property="dealTime" />
<result column="num" jdbcType="INTEGER" property="num" />
<result column="file_flag" jdbcType="BOOLEAN" property="fileFlag" />
<result column="deal_flag" jdbcType="BOOLEAN" property="dealFlag" />
<result column="first_time" jdbcType="TIMESTAMP" property="firstTime" />
<result column="first_type" jdbcType="VARCHAR" property="firstType" />
<result column="first_ms" jdbcType="DECIMAL" property="firstMs" />
<result column="energy" jdbcType="DOUBLE" property="energy" />
<result column="severity" jdbcType="DOUBLE" property="severity" />
<result column="sagsource" jdbcType="VARCHAR" property="sagsource" />
<result column="start_time" jdbcType="TIMESTAMP" property="startTime" />
<result column="duration" jdbcType="DECIMAL" property="duration" />
<result column="feature_amplitude" jdbcType="DECIMAL" property="featureAmplitude" />
<result column="phase" jdbcType="VARCHAR" property="phase" />
<result column="event_describe" jdbcType="VARCHAR" property="eventDescribe" />
<result column="wave_path" jdbcType="VARCHAR" property="wavePath" />
<result column="create_time" jdbcType="TIMESTAMP" property="createTime" />
<result column="transient_value" jdbcType="DOUBLE" property="transientValue" />
</resultMap>
<sql id="Base_Column_List">
<!--@mbg.generated-->
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
</sql>
</mapper>

View File

@@ -0,0 +1,22 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.njcn.prepare.harmonic.mapper.mysql.line.ROperatingMonitorDMapper">
<resultMap id="BaseResultMap" type="com.njcn.prepare.harmonic.pojo.mysql.ROperatingMonitorDPO">
<!--@mbg.generated-->
<!--@Table r_operating_monitor_d-->
<id column="data_date" jdbcType="TIMESTAMP" property="dataDate" />
<id column="measurement_point_id" jdbcType="VARCHAR" property="measurementPointId" />
<result column="dev_id" jdbcType="VARCHAR" property="devId" />
<result column="monitor_state" jdbcType="VARCHAR" property="monitorState" />
<result column="effective_minute_count" jdbcType="DECIMAL" property="effectiveMinuteCount" />
<result column="data_integrity_rate" jdbcType="DECIMAL" property="dataIntegrityRate" />
<result column="data_right_rate" jdbcType="DECIMAL" property="dataRightRate" />
<result column="index_integrity_rate" jdbcType="DECIMAL" property="indexIntegrityRate" />
<result column="is_unusual" jdbcType="INTEGER" property="isUnusual" />
</resultMap>
<sql id="Base_Column_List">
<!--@mbg.generated-->
data_date, measurement_point_id, dev_id, monitor_state, effective_minute_count, data_integrity_rate,
data_right_rate, index_integrity_rate, is_unusual
</sql>
</mapper>

View File

@@ -0,0 +1,22 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.njcn.prepare.harmonic.mapper.mysql.line.ROperatingMonitorMMapper">
<resultMap id="BaseResultMap" type="com.njcn.prepare.harmonic.pojo.mysql.ROperatingMonitorMPO">
<!--@mbg.generated-->
<!--@Table r_operating_monitor_m-->
<id column="data_date" jdbcType="TIMESTAMP" property="dataDate" />
<id column="measurement_point_id" jdbcType="VARCHAR" property="measurementPointId" />
<result column="dev_id" jdbcType="VARCHAR" property="devId" />
<result column="monitor_state" jdbcType="VARCHAR" property="monitorState" />
<result column="effective_minute_count" jdbcType="DECIMAL" property="effectiveMinuteCount" />
<result column="data_integrity_rate" jdbcType="DECIMAL" property="dataIntegrityRate" />
<result column="data_right_rate" jdbcType="DECIMAL" property="dataRightRate" />
<result column="index_integrity_rate" jdbcType="DECIMAL" property="indexIntegrityRate" />
<result column="is_unusual" jdbcType="INTEGER" property="isUnusual" />
</resultMap>
<sql id="Base_Column_List">
<!--@mbg.generated-->
data_date, measurement_point_id, dev_id, monitor_state, effective_minute_count, data_integrity_rate,
data_right_rate, index_integrity_rate, is_unusual
</sql>
</mapper>

View File

@@ -0,0 +1,15 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.njcn.prepare.harmonic.mapper.mysql.line.RStatAbnormalDMapper">
<resultMap id="BaseResultMap" type="com.njcn.prepare.harmonic.pojo.mysql.RStatAbnormalDPO">
<!--@mbg.generated-->
<!--@Table r_stat_abnormal_d-->
<id column="data_date" jdbcType="DATE" property="dataDate" />
<id column="measurement_point_id" jdbcType="VARCHAR" property="measurementPointId" />
<result column="value_alarm" jdbcType="INTEGER" property="valueAlarm" />
</resultMap>
<sql id="Base_Column_List">
<!--@mbg.generated-->
data_date, measurement_point_id, value_alarm
</sql>
</mapper>

View File

@@ -78,14 +78,14 @@ public class DataVInfluxdbServiceImpl implements DataVInfluxdbService {
String startTime = date+" "+"00:00:00"; String startTime = date+" "+"00:00:00";
String endTime = date+" "+"23:59:59"; 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+ 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); QueryResult query = influxDbUtils.query(Sql);
InfluxDBResultMapper resultMapper = new InfluxDBResultMapper(); InfluxDBResultMapper resultMapper = new InfluxDBResultMapper();
List<DataV> dataVS = resultMapper.toPOJO(query, DataV.class); List<DataV> dataVS = resultMapper.toPOJO(query, DataV.class);
/*rms,rms_lvr 取ABC项数据任意一个数据*/ /*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+ 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); QueryResult query2 = influxDbUtils.query(Sql2);
InfluxDBResultMapper resultMapper2 = new InfluxDBResultMapper(); InfluxDBResultMapper resultMapper2 = new InfluxDBResultMapper();
List<DataV> dataVS2 = resultMapper2.toPOJO(query2, DataV.class); List<DataV> dataVS2 = resultMapper2.toPOJO(query2, DataV.class);

View File

@@ -3,18 +3,18 @@ package com.njcn.prepare.harmonic.service.mysql.Impl.line;
import cn.hutool.core.collection.CollUtil; import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.date.DateUtil; import cn.hutool.core.date.DateUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; 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.DistributionMonitorClient;
import com.njcn.device.pms.api.MonitorClient; import com.njcn.device.pms.api.MonitorClient;
import com.njcn.device.pms.pojo.po.DistributionMonitor; import com.njcn.device.pms.pojo.po.DistributionMonitor;
import com.njcn.device.pms.pojo.po.Monitor; import com.njcn.device.pms.pojo.po.Monitor;
import com.njcn.device.pq.constant.Param; 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.DataV;
import com.njcn.device.pq.pojo.po.PmsAbnormalRules; 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.constant.AlgorithmParam;
import com.njcn.prepare.harmonic.mapper.mysql.line.PmsAbnormalRulesMapper; import com.njcn.prepare.harmonic.mapper.mysql.line.PmsAbnormalRulesMapper;
import com.njcn.prepare.harmonic.mapper.mysql.line.RStatAbnormalDMapper; 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.oracle.PqLinedetailPO;
import com.njcn.prepare.harmonic.pojo.param.LineParam; import com.njcn.prepare.harmonic.pojo.param.LineParam;
import com.njcn.prepare.harmonic.pojo.vo.DataVOracleVO; import com.njcn.prepare.harmonic.pojo.vo.DataVOracleVO;
@@ -367,11 +367,11 @@ public class DataExceptionServiceImpl implements DataExceptionService {
* @date 2022/11/29 * @date 2022/11/29
*/ */
private void addData(String lineId, Date date) { private void addData(String lineId, Date date) {
LambdaQueryWrapper<RStatAbnormalD> lambdaQueryWrapper = new LambdaQueryWrapper<>(); LambdaQueryWrapper<RStatAbnormalDPO> lambdaQueryWrapper = new LambdaQueryWrapper<>();
lambdaQueryWrapper.eq(RStatAbnormalD::getMeasurementPointId, lineId).eq(RStatAbnormalD::getDataDate, date); lambdaQueryWrapper.eq(RStatAbnormalDPO::getMeasurementPointId, lineId).eq(RStatAbnormalDPO::getDataDate, date);
RStatAbnormalD rStatAbnormalDOne = rStatAbnormalDMapper.selectOne(lambdaQueryWrapper); RStatAbnormalDPO rStatAbnormalDOne = rStatAbnormalDMapper.selectOne(lambdaQueryWrapper);
if (Objects.isNull(rStatAbnormalDOne)){ if (Objects.isNull(rStatAbnormalDOne)){
RStatAbnormalD rStatAbnormalD = new RStatAbnormalD(); RStatAbnormalDPO rStatAbnormalD = new RStatAbnormalDPO();
rStatAbnormalD.setDataDate(date); rStatAbnormalD.setDataDate(date);
rStatAbnormalD.setMeasurementPointId(lineId); rStatAbnormalD.setMeasurementPointId(lineId);
rStatAbnormalD.setValueAlarm(0); rStatAbnormalD.setValueAlarm(0);

View File

@@ -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<RMpEventDetailMapper, RMpEventDetailPO> 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<RMpEventDetailPO> 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<String> lineIds = lineParam.getLineIds ( );
String dataDate = lineParam.getDataDate ( );
final Date tempDate = new SimpleDateFormat ("yyyy-MM-dd").parse (dataDate);
List<RMpEventDetailMPO> rMpEventDetailMPOList = new ArrayList<> ( );
lineIds.forEach (measurementPointId -> {
/*查询day表数据生成月表数据*/
List<RMpEventDetailDPO> 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<String> lineIds = lineParam.getLineIds ( );
String dataDate = lineParam.getDataDate ( );
final Date tempDate = new SimpleDateFormat ("yyyy-MM-dd").parse (dataDate);
List<RMpEventDetailDPO> 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;
}
}

View File

@@ -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.DataIntegrityRateInfluxService;
import com.njcn.prepare.harmonic.service.influxdb.DataVInfluxdbService; import com.njcn.prepare.harmonic.service.influxdb.DataVInfluxdbService;
import com.njcn.prepare.harmonic.service.mysql.line.RMpMonitorEvaluateDService; 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.api.DicDataFeignClient;
import com.njcn.system.enums.DicDataTypeEnum; import com.njcn.system.enums.DicDataTypeEnum;
import com.njcn.system.pojo.po.DictData; import com.njcn.system.pojo.po.DictData;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import lombok.SneakyThrows;
import org.springframework.scheduling.annotation.Async; import org.springframework.scheduling.annotation.Async;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.CollectionUtils;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Date; import java.util.Date;
@@ -50,6 +51,7 @@ public class RMpMonitorEvaluateDServiceImpl extends MppServiceImpl<RMpMonitorEva
@Override @Override
@Transactional(rollbackFor = {Exception.class}) @Transactional(rollbackFor = {Exception.class})
@Async("asyncExecutor") @Async("asyncExecutor")
@SneakyThrows
public void dayDataJobHandler(List<String> indexLists, String dataDate) { public void dayDataJobHandler(List<String> indexLists, String dataDate) {
//1、取出规则 //1、取出规则
@@ -61,19 +63,31 @@ public class RMpMonitorEvaluateDServiceImpl extends MppServiceImpl<RMpMonitorEva
indexLists.forEach (temp -> { indexLists.forEach (temp -> {
LineDetailDataVO data = lineFeignClient.getLineDetailData (temp).getData ( ); LineDetailDataVO data = lineFeignClient.getLineDetailData (temp).getData ( );
if(Objects.isNull (data)){
System.out.println ( );
return;
}
/*todo 统计间隔电压等级取值方式后期提供融合版本接口获取不然pmspqs系统取值方式不一样*/ /*todo 统计间隔电压等级取值方式后期提供融合版本接口获取不然pmspqs系统取值方式不一样*/
/*统计间隔*/ /*统计间隔*/
Integer statisticalInterval = data.getTimeInterval (); 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<DataVFiveItemDTO> fiveItems = dataVInfluxdbService.getFiveItems (temp, dataDate, statisticalInterval); List<DataVFiveItemDTO> fiveItems = dataVInfluxdbService.getFiveItems (temp, dataDate, statisticalInterval);
if(CollectionUtils.isEmpty (fiveItems)){
return;
}
RMpMonitorEvaluateDPO rMpMonitorEvaluateDPO = calculateRMpMonitorEvaluateDPO (fiveItems, pmsAbnormalRules, voltage); RMpMonitorEvaluateDPO rMpMonitorEvaluateDPO = calculateRMpMonitorEvaluateDPO (fiveItems, pmsAbnormalRules, voltage);
Date date = DateUtil.parse(dataDate); Date date = DateUtil.parse(dataDate);
DataFlicker twoFlickerData = dataIntegrityRateInfluxService.getTwoFlickerData (temp, date, 5); DataFlicker twoFlickerData = dataIntegrityRateInfluxService.getTwoFlickerData (temp, date, 5);
if(Objects.isNull (twoFlickerData)){
return;
}
rMpMonitorEvaluateDPO.setAllMinuteCount (fiveItems.size ()); rMpMonitorEvaluateDPO.setAllMinuteCount (fiveItems.size ());
rMpMonitorEvaluateDPO.setTimeId (date); rMpMonitorEvaluateDPO.setDataDate (date);
rMpMonitorEvaluateDPO.setMeasurementPointId (temp); rMpMonitorEvaluateDPO.setMeasurementPointId (temp);
rMpMonitorEvaluateDPO.setPltCount (twoFlickerData.getPltCount ()); rMpMonitorEvaluateDPO.setPltCount (twoFlickerData.getPltCount ());
rMpMonitorEvaluateDPO.setPstCount (twoFlickerData.getPstCount ()); rMpMonitorEvaluateDPO.setPstCount (twoFlickerData.getPstCount ());

View File

@@ -1,16 +1,32 @@
package com.njcn.prepare.harmonic.service.mysql.Impl.line; 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.dynamic.datasource.annotation.DS;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.github.jeffreyning.mybatisplus.service.MppServiceImpl; 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.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.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 org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.Date;
import java.util.List; import java.util.List;
/** /**
*
* Description: * Description:
* 接口文档访问地址http://serverIP:port/swagger-ui.html * 接口文档访问地址http://serverIP:port/swagger-ui.html
* Date: 2023/2/28 15:39【需求编号】 * Date: 2023/2/28 15:39【需求编号】
@@ -19,12 +35,179 @@ import java.util.List;
* @version V1.0.0 * @version V1.0.0
*/ */
@Service @Service
public class RMpPassRateDServiceImpl extends MppServiceImpl<RMpPassRateDMapper, RMpPassRateDPO> implements RMpPassRateDService{ @RequiredArgsConstructor
public class RMpPassRateDServiceImpl extends MppServiceImpl<RMpPassRateDMapper, RMpPassRateDPO> 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") @DS("process")
@Override @Override
public List<RMpPassRateDPO> getAll() { public List<RMpPassRateDPO> getAll() {
return this.list(); return this.list ( );
}
public void passRateHandlerD(LineParam lineParam) {
List<String> lineIds = lineParam.getLineIds ( );
String dataDate = lineParam.getDataDate ( );
Date date = DateUtil.parse (dataDate);
List<RMpPassRateDPO> rMpPassRateDPOList = new ArrayList<> ( );
QueryWrapper<RMpMonitorEvaluateDPO> rMpMonitorEvaluateDPOQueryWrapper = new QueryWrapper ( );
QueryWrapper<RMpPartHarmonicDetailD> queryWrapper = new QueryWrapper ( );
QueryWrapper<RMpSurplusHarmonicDetailD> 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<String> lineIds = lineParam.getLineIds ( );
String dataDate = lineParam.getDataDate ( );
Date date = DateUtil.parse (dataDate);
List<RMpPassRateYPO> rMpPassRateYPOList = new ArrayList<> ( );
lineIds.forEach (temp -> {
QueryWrapper<RMpPassRateDPO> queryWrapper = new QueryWrapper<> ();
queryWrapper.eq ("measurement_point_id", temp).
eq("YEAR( data_date )",dataDate.substring (0, 4));
List<RMpPassRateDPO> 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<String> lineIds = lineParam.getLineIds ( );
String dataDate = lineParam.getDataDate ( );
Date date = DateUtil.parse (dataDate);
List<RMpPassRateQPO> rMpPassRateQPOList = new ArrayList<> ( );
lineIds.forEach (temp -> {
QueryWrapper<RMpPassRateDPO> queryWrapper = new QueryWrapper<> ();
queryWrapper.eq ("measurement_point_id", temp).
eq("QUARTER( data_date)", PublicUtil.getNowQuarter (dataDate));
List<RMpPassRateDPO> 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<String> lineIds = lineParam.getLineIds ( );
String dataDate = lineParam.getDataDate ( );
Date date = DateUtil.parse (dataDate);
List<RMpPassRateMPO> rMpPassRateMPOList = new ArrayList<> ( );
lineIds.forEach (temp -> {
QueryWrapper<RMpPassRateDPO> queryWrapper = new QueryWrapper<> ();
queryWrapper.eq ("measurement_point_id", temp).
eq("DATE_FORMAT( data_date ,'%Y-%m')",dataDate.substring (0, 7));
List<RMpPassRateDPO> 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;
} }
} }

View File

@@ -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<ROperatingMonitorDMapper, ROperatingMonitorDPO> 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<String> indexLists, String dataDate) {
Date date = DateUtil.parse(dataDate);
List<ROperatingMonitorDPO> rOperatingMonitorDPOList = new ArrayList<> ();
indexLists.forEach (temp -> {
LineDetailDataVO data = lineFeignClient.getLineDetailData (temp).getData ( );
/*todo 统计间隔,电压等级取值方式,devid后期提供融合版本接口获取不然pmspqs系统取值方式不一样*/
/*统计间隔*/
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);
}
}

View File

@@ -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<ROperatingMonitorMMapper, ROperatingMonitorMPO> implements ROperatingMonitorMService {
private final ROperatingMonitorService rOperatingMonitorService;
@Override
@Transactional(rollbackFor = {Exception.class})
@Async("asyncExecutor")
public void handlerMonitorOperatingM(List<String> indexLists, String dataDate) {
Date date = DateUtil.parse (dataDate);
List<ROperatingMonitorMPO> rOperatingMonitorMPOList = new ArrayList<> ( );
QueryWrapper<ROperatingMonitorDPO> 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<ROperatingMonitorDPO> 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<Integer> 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);
}
}

View File

@@ -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<RStatAbnormalDMapper, RStatAbnormalDPO> implements RStatAbnormalDService{
private final RMpMonitorEvaluateDService rMpMonitorEvaluateDService;
@Override
@Transactional(rollbackFor = {Exception.class})
@Async("asyncExecutor")
public void handlerMonitorAbnormal(List<String> indexLists, String dataDate) {
Date date = DateUtil.parse(dataDate);
List<RStatAbnormalDPO> 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 ()
<rMpMonitorEvaluateDPO.getAllMinuteCount ()?0:1);
rStatAbnormalDPOS.add (rStatAbnormalDPO);
});
this.saveOrUpdateBatchByMultiId (rStatAbnormalDPOS,500);
}
}

View File

@@ -0,0 +1,28 @@
package com.njcn.prepare.harmonic.service.mysql.line;
import com.njcn.prepare.harmonic.pojo.mysql.RMpEventDetailPO;
import com.baomidou.mybatisplus.extension.service.IService;
import com.njcn.prepare.harmonic.pojo.param.LineParam;
/**
*
* Description:
* 接口文档访问地址http://serverIP:port/swagger-ui.html
* Date: 2023/4/23 13:50【需求编号】
*
* @author clam
* @version V1.0.0
*/
public interface RMpEventDetailService extends IService<RMpEventDetailPO>{
/**
* @Description: eventdetailHandler
* @Param: [lineParam]
* @return: void
* @Author: clam
* @Date: 2023/4/23
*/
void eventdetailHandler(LineParam lineParam);
Integer queryByCondition(String lineId, String dataDate, String eventType);
}

View File

@@ -2,6 +2,7 @@ package com.njcn.prepare.harmonic.service.mysql.line;
import com.github.jeffreyning.mybatisplus.service.IMppService; import com.github.jeffreyning.mybatisplus.service.IMppService;
import com.njcn.prepare.harmonic.pojo.mysql.po.line.RMpPassRateDPO; import com.njcn.prepare.harmonic.pojo.mysql.po.line.RMpPassRateDPO;
import com.njcn.prepare.harmonic.pojo.param.LineParam;
import java.util.List; import java.util.List;
@@ -17,4 +18,6 @@ import java.util.List;
public interface RMpPassRateDService extends IMppService<RMpPassRateDPO> { public interface RMpPassRateDService extends IMppService<RMpPassRateDPO> {
List<RMpPassRateDPO> getAll(); List<RMpPassRateDPO> getAll();
void passRateHandler(LineParam lineParam);
} }

View File

@@ -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<ROperatingMonitorMPO> {
/**
* @Description: handlerMonitorOperatingM
* @Param: [indexLists, dataDate]
* @return: void
* @Author: clam
* @Date: 2023/4/21
*/
void handlerMonitorOperatingM(List<String> indexLists, String dataDate);
}

View File

@@ -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<ROperatingMonitorDPO> {
/**
* @Description: handlerMonitorOperatingD
* @Param: [indexLists, dataDate]
* @return: void
* @Author: clam
* @Date: 2023/4/21
*/
void handlerMonitorOperatingD(List<String> indexLists, String dataDate);
}

View File

@@ -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<RStatAbnormalDPO> {
void handlerMonitorAbnormal(List<String> indexLists, String dataDate);
}

View File

@@ -15,14 +15,13 @@ import com.njcn.system.pojo.param.AreaParam;
import com.njcn.system.pojo.po.Area; import com.njcn.system.pojo.po.Area;
import com.njcn.system.pojo.vo.AreaTreeVO; import com.njcn.system.pojo.vo.AreaTreeVO;
import com.njcn.system.service.IAreaService; import com.njcn.system.service.IAreaService;
import com.njcn.web.controller.BaseController;
import io.swagger.annotations.*; import io.swagger.annotations.*;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.validation.annotation.Validated; import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import com.njcn.web.controller.BaseController;
import java.util.List; import java.util.List;
/** /**
@@ -273,5 +272,21 @@ public class AreaController extends BaseController {
Area result = areaService.areaDeptPro(id); Area result = areaService.areaDeptPro(id);
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, result, methodDescribe); 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<List<AreaTreeVO>> areaSelect() {
String methodDescribe = getMethodDescribe("areaSelect");
List<AreaTreeVO> result = areaService.areaSelect();
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, result, methodDescribe);
}
} }

View File

@@ -4,7 +4,6 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService; import com.baomidou.mybatisplus.extension.service.IService;
import com.njcn.system.pojo.dto.AreaTreeDTO; import com.njcn.system.pojo.dto.AreaTreeDTO;
import com.njcn.system.pojo.param.AreaParam; 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.po.Area;
import com.njcn.system.pojo.vo.AreaTreeVO; import com.njcn.system.pojo.vo.AreaTreeVO;
@@ -105,4 +104,12 @@ public interface IAreaService extends IService<Area> {
* @return 行政区域详情 * @return 行政区域详情
*/ */
Area selectAreaByName(String name); Area selectAreaByName(String name);
/**
* @Description: areaSelect
* @Param: []
* @return: java.util.List<com.njcn.system.pojo.vo.AreaTreeVO>
* @Author: clam
* @Date: 2023/4/11
*/
List<AreaTreeVO> areaSelect();
} }

View File

@@ -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.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; 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.enums.common.DataStateEnum;
import com.njcn.common.pojo.exception.BusinessException; import com.njcn.common.pojo.exception.BusinessException;
import com.njcn.system.enums.SystemResponseEnum; 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.po.Area;
import com.njcn.system.pojo.vo.AreaTreeVO; import com.njcn.system.pojo.vo.AreaTreeVO;
import com.njcn.system.service.IAreaService; import com.njcn.system.service.IAreaService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.njcn.user.api.DeptFeignClient; import com.njcn.user.api.DeptFeignClient;
import com.njcn.user.pojo.po.Dept;
import com.njcn.web.factory.PageFactory; import com.njcn.web.factory.PageFactory;
import com.njcn.web.utils.RequestUtil; import com.njcn.web.utils.RequestUtil;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Collections;
import java.util.List; import java.util.List;
import java.util.stream.Collectors; import java.util.stream.Collectors;
@@ -286,5 +283,16 @@ public class AreaServiceImpl extends ServiceImpl<AreaMapper, Area> implements IA
} }
} }
@Override
public List<AreaTreeVO> areaSelect() {
List<AreaTreeVO> areaTreeVOS = this.baseMapper.getAreaAll();
List<AreaTreeVO> 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;
}
} }