算法提交
This commit is contained in:
@@ -0,0 +1,29 @@
|
||||
package com.njcn.prepare.harmonic.api.specialanalysis;
|
||||
|
||||
import com.njcn.common.pojo.annotation.OperateInfo;
|
||||
import com.njcn.common.pojo.constant.ServerInfo;
|
||||
import com.njcn.common.pojo.enums.common.LogEnum;
|
||||
import com.njcn.common.pojo.response.HttpResult;
|
||||
import com.njcn.prepare.harmonic.api.newalgorithm.fallback.RStatHarmonicFeignClientFallbackFactory;
|
||||
import com.njcn.prepare.harmonic.api.specialanalysis.fallback.SpecialAnalysisFeignClientFallbackFactory;
|
||||
import com.njcn.prepare.harmonic.pojo.param.LineParam;
|
||||
import org.springframework.cloud.openfeign.FeignClient;
|
||||
import org.springframework.web.bind.annotation.PostMapping;
|
||||
import org.springframework.web.bind.annotation.RequestBody;
|
||||
|
||||
/**
|
||||
* @author qijian
|
||||
* @version 1.0.0
|
||||
* @date 2022年10月24日 20:13
|
||||
*/
|
||||
|
||||
@FeignClient(
|
||||
value = ServerInfo.PREPARE_BOOT,//对应模块名
|
||||
path = "/specialAnalysisIndexOverview",//对应controller请求类
|
||||
fallbackFactory = SpecialAnalysisFeignClientFallbackFactory.class//服务降级处理类
|
||||
)
|
||||
public interface SpecialAnalysisFeignClient {
|
||||
|
||||
@PostMapping("hanlder")
|
||||
HttpResult<Boolean> hanlder(@RequestBody LineParam jobParam);
|
||||
}
|
||||
@@ -0,0 +1,44 @@
|
||||
package com.njcn.prepare.harmonic.api.specialanalysis.fallback;
|
||||
|
||||
import com.njcn.common.pojo.enums.response.CommonResponseEnum;
|
||||
import com.njcn.common.pojo.exception.BusinessException;
|
||||
import com.njcn.common.pojo.response.HttpResult;
|
||||
import com.njcn.prepare.harmonic.api.newalgorithm.PmsStatisticsSpecialMonitorFeignClient;
|
||||
import com.njcn.prepare.harmonic.api.newalgorithm.RStatHarmonicOrgFeignClient;
|
||||
import com.njcn.prepare.harmonic.api.specialanalysis.SpecialAnalysisFeignClient;
|
||||
import com.njcn.prepare.harmonic.pojo.param.LineParam;
|
||||
import com.njcn.prepare.harmonic.pojo.param.OrgParam;
|
||||
import com.njcn.prepare.harmonic.utils.PrepareEnumUtil;
|
||||
import feign.hystrix.FallbackFactory;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
/**
|
||||
* Description:
|
||||
* Date: 2023/11/7 9:29【需求编号】
|
||||
*
|
||||
* @author clam
|
||||
* @version V1.0.0
|
||||
*/
|
||||
@Slf4j
|
||||
@Component
|
||||
public class SpecialAnalysisFeignClientFallbackFactory implements FallbackFactory<SpecialAnalysisFeignClient> {
|
||||
@Override
|
||||
public SpecialAnalysisFeignClient create(Throwable throwable) {
|
||||
Enum<?> exceptionEnum = CommonResponseEnum.SERVICE_FALLBACK;
|
||||
if (throwable.getCause() instanceof BusinessException) {
|
||||
BusinessException businessException = (BusinessException)throwable.getCause();
|
||||
exceptionEnum = PrepareEnumUtil.getExceptionEnum(businessException.getResult());
|
||||
}
|
||||
|
||||
Enum<?> finalExceptionEnum = exceptionEnum;
|
||||
return new SpecialAnalysisFeignClient() {
|
||||
|
||||
@Override
|
||||
public HttpResult<Boolean> hanlder(LineParam jobParam) {
|
||||
log.error("{}异常,降级处理,异常为:{}", "专项分析指标总览: ", throwable.toString());
|
||||
throw new BusinessException(finalExceptionEnum);
|
||||
}
|
||||
};
|
||||
}
|
||||
}
|
||||
@@ -6,6 +6,7 @@ import com.github.jeffreyning.mybatisplus.anno.MppMultiId;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
|
||||
import java.time.LocalDate;
|
||||
import java.util.Date;
|
||||
|
||||
/**
|
||||
@@ -31,7 +32,7 @@ public class RMpMonitorEvaluateDPO {
|
||||
private String measurementPointId;
|
||||
|
||||
@MppMultiId(value = "data_date")
|
||||
private Date dataDate;
|
||||
private LocalDate dataDate;
|
||||
|
||||
@TableField(value = "device_id")
|
||||
private String deviceId;
|
||||
|
||||
@@ -6,6 +6,7 @@ import com.github.jeffreyning.mybatisplus.anno.MppMultiId;
|
||||
import lombok.Data;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.time.LocalDate;
|
||||
import java.util.Date;
|
||||
|
||||
/**
|
||||
@@ -24,7 +25,7 @@ import java.util.Date;
|
||||
@TableName(value = "r_operating_monitor_d")
|
||||
public class ROperatingMonitorDPO {
|
||||
@MppMultiId(value = "data_date")
|
||||
private Date dataDate;
|
||||
private LocalDate dataDate;
|
||||
|
||||
/**
|
||||
* 监测点Id
|
||||
|
||||
@@ -6,6 +6,7 @@ import com.github.jeffreyning.mybatisplus.anno.MppMultiId;
|
||||
import lombok.Data;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.time.LocalDate;
|
||||
import java.util.Date;
|
||||
|
||||
/**
|
||||
@@ -24,7 +25,7 @@ import java.util.Date;
|
||||
@TableName(value = "r_operating_monitor_m")
|
||||
public class ROperatingMonitorMPO {
|
||||
@MppMultiId(value = "data_date")
|
||||
private Date dataDate;
|
||||
private LocalDate dataDate;
|
||||
|
||||
/**
|
||||
* 监测点Id
|
||||
|
||||
@@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import com.github.jeffreyning.mybatisplus.anno.MppMultiId;
|
||||
import lombok.Data;
|
||||
|
||||
import java.time.LocalDate;
|
||||
import java.util.Date;
|
||||
|
||||
/**
|
||||
@@ -23,7 +24,7 @@ public class RStatAbnormalDPO {
|
||||
* 时间
|
||||
*/
|
||||
@MppMultiId(value = "data_date")
|
||||
private Date dataDate;
|
||||
private LocalDate dataDate;
|
||||
|
||||
/**
|
||||
* 监测点ID
|
||||
|
||||
@@ -0,0 +1,88 @@
|
||||
package com.njcn.prepare.harmonic.pojo.po;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.IdType;
|
||||
import com.baomidou.mybatisplus.annotation.TableField;
|
||||
import com.baomidou.mybatisplus.annotation.TableId;
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import java.util.Date;
|
||||
|
||||
import com.github.jeffreyning.mybatisplus.anno.MppMultiId;
|
||||
import lombok.Data;
|
||||
|
||||
/**
|
||||
*
|
||||
* Description:
|
||||
* Date: 2023/11/1 15:08【需求编号】
|
||||
*
|
||||
* @author clam
|
||||
* @version V1.0.0
|
||||
*/
|
||||
@Data
|
||||
@TableName(value = "special_analysis_index_overview_detailed")
|
||||
public class SpecialAnalysisIndexOverviewDetailedPO {
|
||||
/**
|
||||
* 单位id
|
||||
*/
|
||||
@MppMultiId(value = "org_no")
|
||||
private String orgNo;
|
||||
|
||||
/**
|
||||
* 数据统计日期
|
||||
*/
|
||||
@MppMultiId(value = "data_date")
|
||||
private Date dataDate;
|
||||
|
||||
/**
|
||||
* 监测点标签(字典,区分风电场、光伏电站等)
|
||||
*/
|
||||
@MppMultiId(value = "monitor_tag")
|
||||
private String monitorTag;
|
||||
|
||||
/**
|
||||
* 谐波电流超标点占比
|
||||
*/
|
||||
@TableField(value = "monitor_harmonic_electric_exceeds_proportion")
|
||||
private Double monitorHarmonicElectricExceedsProportion;
|
||||
|
||||
/**
|
||||
* 谐波电流平均超标天数
|
||||
*/
|
||||
@TableField(value = "monitor_harmonic_electric_exceeds_avg_days")
|
||||
private Double monitorHarmonicElectricExceedsAvgDays;
|
||||
|
||||
/**
|
||||
* 谐波电压含有率超标点占比
|
||||
*/
|
||||
@TableField(value = "monitor_harmonic_voltage_content_exceeds_proportion")
|
||||
private Double monitorHarmonicVoltageContentExceedsProportion;
|
||||
|
||||
/**
|
||||
* 谐波电压含有率平均超标天数
|
||||
*/
|
||||
@TableField(value = "monitor_harmonic_voltage_content_exceeds_avg_days")
|
||||
private Double monitorHarmonicVoltageContentExceedsAvgDays;
|
||||
|
||||
/**
|
||||
* 各地市电压指标超标点数占比
|
||||
*/
|
||||
@TableField(value = "voltage_index_exceeds_proportion")
|
||||
private Double voltageIndexExceedsProportion;
|
||||
|
||||
/**
|
||||
* 各地市电压指标平均超标天数
|
||||
*/
|
||||
@TableField(value = "voltage_index_exceeds_avg_days")
|
||||
private Double voltageIndexExceedsAvgDays;
|
||||
|
||||
/**
|
||||
* 各地市电流指标超标点数占比
|
||||
*/
|
||||
@TableField(value = "electric_index_exceeds_proportion")
|
||||
private Double electricIndexExceedsProportion;
|
||||
|
||||
/**
|
||||
* 各地市电流指标平均超标天数
|
||||
*/
|
||||
@TableField(value = "electric_index_exceeds_avg_days")
|
||||
private Double electricIndexExceedsAvgDays;
|
||||
}
|
||||
@@ -0,0 +1,63 @@
|
||||
package com.njcn.prepare.harmonic.pojo.po;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.IdType;
|
||||
import com.baomidou.mybatisplus.annotation.TableField;
|
||||
import com.baomidou.mybatisplus.annotation.TableId;
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import java.util.Date;
|
||||
|
||||
import com.github.jeffreyning.mybatisplus.anno.MppMultiId;
|
||||
import lombok.Data;
|
||||
|
||||
/**
|
||||
* Description:
|
||||
* Date: 2023/11/1 15:07【需求编号】
|
||||
*
|
||||
* @author clam
|
||||
* @version V1.0.0
|
||||
*/
|
||||
@Data
|
||||
@TableName(value = "special_analysis_index_overview")
|
||||
public class SpecialAnalysisIndexOverviewPO {
|
||||
/**
|
||||
* 单位id
|
||||
*/
|
||||
@MppMultiId(value = "org_no")
|
||||
private String orgNo;
|
||||
|
||||
/**
|
||||
* 数据统计日期
|
||||
*/
|
||||
@MppMultiId(value = "data_date")
|
||||
private Date dataDate;
|
||||
|
||||
/**
|
||||
* 监测点标签(字典,区分风电场、光伏电站等)
|
||||
*/
|
||||
@MppMultiId(value = "monitor_tag")
|
||||
private String monitorTag;
|
||||
|
||||
/**
|
||||
* 谐波电流超标监测点数
|
||||
*/
|
||||
@TableField(value = "monitor_harmonic_electric_exceeds_num")
|
||||
private Integer monitorHarmonicElectricExceedsNum;
|
||||
|
||||
/**
|
||||
* 谐波电压含有率超标监测点数
|
||||
*/
|
||||
@TableField(value = "monitor_harmonic_voltage_content_exceeds_num")
|
||||
private Integer monitorHarmonicVoltageContentExceedsNum;
|
||||
|
||||
/**
|
||||
* 各地市电压指标超标点数
|
||||
*/
|
||||
@TableField(value = "voltage_index_exceeds_num")
|
||||
private Integer voltageIndexExceedsNum;
|
||||
|
||||
/**
|
||||
* 各地市电流指标超标点数
|
||||
*/
|
||||
@TableField(value = "electric_index_exceeds_num")
|
||||
private Integer electricIndexExceedsNum;
|
||||
}
|
||||
@@ -1,9 +1,7 @@
|
||||
package com.njcn.prepare.executor;
|
||||
|
||||
import com.njcn.prepare.bo.CalculatedParam;
|
||||
import com.njcn.prepare.harmonic.service.mysql.line.RMpEventDetailDService;
|
||||
import com.njcn.prepare.harmonic.service.mysql.line.RMpEventDetailService;
|
||||
import com.njcn.prepare.harmonic.service.mysql.line.RMpMonitorEvaluateDService;
|
||||
import com.njcn.prepare.harmonic.service.mysql.line.*;
|
||||
import com.yomahub.liteflow.annotation.LiteflowComponent;
|
||||
import com.yomahub.liteflow.annotation.LiteflowMethod;
|
||||
import com.yomahub.liteflow.core.NodeComponent;
|
||||
@@ -27,7 +25,10 @@ public class MeasurementExecutor extends BaseExecutor {
|
||||
|
||||
private final RMpEventDetailDService rMpEventDetailDService;
|
||||
|
||||
private final RStatAbnormalDService rStatAbnormalDService;
|
||||
private final ROperatingMonitorService rOperatingMonitorService;
|
||||
|
||||
private final ROperatingMonitorMService rOperatingMonitorMService;
|
||||
/**
|
||||
* 算法名: 3.3.1.1-----监测点评价
|
||||
*
|
||||
@@ -70,5 +71,42 @@ public class MeasurementExecutor extends BaseExecutor {
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 3.3.1.2. 监测点数据异常_日表
|
||||
* @param bindCmp
|
||||
*/
|
||||
@LiteflowMethod(value = LiteFlowMethodEnum.IS_ACCESS, nodeId = "rStatAbnormalD", nodeType = NodeTypeEnum.COMMON)
|
||||
public boolean processRStatAbnormalDAccess(NodeComponent bindCmp) {
|
||||
return isAccess(bindCmp);
|
||||
}
|
||||
@LiteflowMethod(value = LiteFlowMethodEnum.PROCESS, nodeId = "rStatAbnormalD", nodeType = NodeTypeEnum.COMMON)
|
||||
public void processRStatAbnormalDProcess(NodeComponent bindCmp) {
|
||||
CalculatedParam calculatedParam = bindCmp.getRequestData();
|
||||
|
||||
rStatAbnormalDService.handlerMonitorAbnormal(calculatedParam);
|
||||
}
|
||||
|
||||
/**
|
||||
*3.3.1.3. 监测点指标数据质量_日表 3.3.1.4. 监测点指标数据质量_月表
|
||||
*/
|
||||
|
||||
@LiteflowMethod(value = LiteFlowMethodEnum.IS_ACCESS, nodeId = "rOperatingMonitor", nodeType = NodeTypeEnum.COMMON)
|
||||
public boolean processOperatingMonitorAccess(NodeComponent bindCmp) {
|
||||
return isAccess(bindCmp);
|
||||
}
|
||||
@LiteflowMethod(value = LiteFlowMethodEnum.PROCESS, nodeId = "rOperatingMonitor", nodeType = NodeTypeEnum.COMMON)
|
||||
public void processOperatingMonitorProcess(NodeComponent bindCmp) {
|
||||
String tag = bindCmp.getTag();
|
||||
CalculatedParam calculatedParam = bindCmp.getRequestData();
|
||||
if (tag.equalsIgnoreCase("r_operating_monitor_d")) {
|
||||
//日表
|
||||
rOperatingMonitorService.handleDay(calculatedParam);
|
||||
} else if (tag.equalsIgnoreCase("r_operating_monitor_m")) {
|
||||
//数据补招不执行非日表算法
|
||||
if (!calculatedParam.isRepair()) {
|
||||
//月表
|
||||
rOperatingMonitorMService.handleMonth(calculatedParam);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -46,6 +46,7 @@ import java.util.stream.Collectors;
|
||||
@RestController
|
||||
@RequestMapping("primaryGridData")
|
||||
@RequiredArgsConstructor
|
||||
@Deprecated
|
||||
public class PrimaryGridDataController extends BaseController {
|
||||
|
||||
private @Autowired
|
||||
|
||||
@@ -0,0 +1,54 @@
|
||||
package com.njcn.prepare.harmonic.controller.specialloadanalysis;
|
||||
|
||||
|
||||
import com.njcn.common.pojo.annotation.OperateInfo;
|
||||
import com.njcn.common.pojo.enums.common.LogEnum;
|
||||
import com.njcn.common.pojo.enums.response.CommonResponseEnum;
|
||||
import com.njcn.common.pojo.response.HttpResult;
|
||||
import com.njcn.common.utils.HttpResultUtil;
|
||||
import com.njcn.prepare.harmonic.pojo.param.LineParam;
|
||||
import com.njcn.prepare.harmonic.service.mysql.SpecialAnalysisIndexOverviewService;
|
||||
import com.njcn.prepare.harmonic.service.mysql.newalgorithm.IRMpEmissionMService;
|
||||
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.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;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* 风电场发射特性-月表 前端控制器
|
||||
* </p>
|
||||
*
|
||||
* @author wr
|
||||
* @since 2023-10-16
|
||||
*/
|
||||
@Slf4j
|
||||
@Api(tags = "专项分析指标总览(按月来算)")
|
||||
@RestController
|
||||
@RequestMapping("/specialAnalysisIndexOverview")
|
||||
@RequiredArgsConstructor
|
||||
public class SpecialAnalysisIndexOverviewController extends BaseController {
|
||||
|
||||
private final SpecialAnalysisIndexOverviewService specialAnalysisIndexOverviewService;
|
||||
|
||||
@ApiOperation("指标总览")
|
||||
@ApiImplicitParam(value = "jobParam", name = "jobParam", required = true)
|
||||
@PostMapping("hanlder")
|
||||
@OperateInfo(info = LogEnum.BUSINESS_MEDIUM)
|
||||
public HttpResult<Boolean> hanlder(@RequestBody LineParam jobParam) {
|
||||
log.info(LocalDateTime.now() + "专项分析-指标总览开始执行");
|
||||
String methodDescribe = getMethodDescribe("hanlder");
|
||||
specialAnalysisIndexOverviewService.hanlder(jobParam);
|
||||
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, true, methodDescribe);
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,16 @@
|
||||
package com.njcn.prepare.harmonic.mapper.mysql.area;
|
||||
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
import com.github.jeffreyning.mybatisplus.base.MppBaseMapper;
|
||||
import com.njcn.prepare.harmonic.pojo.po.SpecialAnalysisIndexOverviewDetailedPO;
|
||||
|
||||
/**
|
||||
*
|
||||
* Description:
|
||||
* Date: 2023/11/1 15:08【需求编号】
|
||||
*
|
||||
* @author clam
|
||||
* @version V1.0.0
|
||||
*/
|
||||
public interface SpecialAnalysisIndexOverviewDetailedPOMapper extends MppBaseMapper<SpecialAnalysisIndexOverviewDetailedPO> {
|
||||
}
|
||||
@@ -0,0 +1,19 @@
|
||||
package com.njcn.prepare.harmonic.mapper.mysql.area;
|
||||
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
import com.github.jeffreyning.mybatisplus.base.MppBaseMapper;
|
||||
import com.njcn.prepare.harmonic.pojo.po.SpecialAnalysisIndexOverviewPO;
|
||||
import org.apache.ibatis.annotations.Param;
|
||||
|
||||
import java.util.Date;
|
||||
|
||||
/**
|
||||
* Description:
|
||||
* Date: 2023/11/1 15:07【需求编号】
|
||||
*
|
||||
* @author clam
|
||||
* @version V1.0.0
|
||||
*/
|
||||
public interface SpecialAnalysisIndexOverviewPOMapper extends MppBaseMapper<SpecialAnalysisIndexOverviewPO> {
|
||||
|
||||
}
|
||||
@@ -0,0 +1,26 @@
|
||||
<?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.area.SpecialAnalysisIndexOverviewDetailedPOMapper">
|
||||
<resultMap id="BaseResultMap" type="com.njcn.prepare.harmonic.pojo.po.SpecialAnalysisIndexOverviewDetailedPO">
|
||||
<!--@mbg.generated-->
|
||||
<!--@Table special_analysis_index_overview_detailed-->
|
||||
<id column="org_no" jdbcType="VARCHAR" property="orgNo" />
|
||||
<id column="data_date" jdbcType="DATE" property="dataDate" />
|
||||
<id column="monitor_tag" jdbcType="VARCHAR" property="monitorTag" />
|
||||
<result column="monitor_harmonic_electric_exceeds_proportion" jdbcType="REAL" property="monitorHarmonicElectricExceedsProportion" />
|
||||
<result column="monitor_harmonic_electric_exceeds_avg_days" jdbcType="INTEGER" property="monitorHarmonicElectricExceedsAvgDays" />
|
||||
<result column="monitor_harmonic_voltage_content_exceeds_proportion" jdbcType="REAL" property="monitorHarmonicVoltageContentExceedsProportion" />
|
||||
<result column="monitor_harmonic_voltage_content_exceeds_avg_days" jdbcType="INTEGER" property="monitorHarmonicVoltageContentExceedsAvgDays" />
|
||||
<result column="voltage_index_exceeds_proportion" jdbcType="REAL" property="voltageIndexExceedsProportion" />
|
||||
<result column="voltage_index_exceeds_avg_days" jdbcType="INTEGER" property="voltageIndexExceedsAvgDays" />
|
||||
<result column="electric_index_exceeds_proportion" jdbcType="REAL" property="electricIndexExceedsProportion" />
|
||||
<result column="electric_index_exceeds_avg_days" jdbcType="INTEGER" property="electricIndexExceedsAvgDays" />
|
||||
</resultMap>
|
||||
<sql id="Base_Column_List">
|
||||
<!--@mbg.generated-->
|
||||
org_no, data_date, monitor_tag, monitor_harmonic_electric_exceeds_proportion, monitor_harmonic_electric_exceeds_avg_days,
|
||||
monitor_harmonic_voltage_content_exceeds_proportion, monitor_harmonic_voltage_content_exceeds_avg_days,
|
||||
voltage_index_exceeds_proportion, voltage_index_exceeds_avg_days, electric_index_exceeds_proportion,
|
||||
electric_index_exceeds_avg_days
|
||||
</sql>
|
||||
</mapper>
|
||||
@@ -0,0 +1,20 @@
|
||||
<?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.area.SpecialAnalysisIndexOverviewPOMapper">
|
||||
<resultMap id="BaseResultMap" type="com.njcn.prepare.harmonic.pojo.po.SpecialAnalysisIndexOverviewPO">
|
||||
<!--@mbg.generated-->
|
||||
<!--@Table special_analysis_index_overview-->
|
||||
<id column="org_no" jdbcType="VARCHAR" property="orgNo" />
|
||||
<id column="data_date" jdbcType="DATE" property="dataDate" />
|
||||
<id column="monitor_tag" jdbcType="VARCHAR" property="monitorTag" />
|
||||
<result column="monitor_harmonic_electric_exceeds_num" jdbcType="INTEGER" property="monitorHarmonicElectricExceedsNum" />
|
||||
<result column="monitor_harmonic_voltage_content_exceeds_num" jdbcType="INTEGER" property="monitorHarmonicVoltageContentExceedsNum" />
|
||||
<result column="voltage_index_exceeds_num" jdbcType="INTEGER" property="voltageIndexExceedsNum" />
|
||||
<result column="electric_index_exceeds_num" jdbcType="INTEGER" property="electricIndexExceedsNum" />
|
||||
</resultMap>
|
||||
<sql id="Base_Column_List">
|
||||
<!--@mbg.generated-->
|
||||
org_no, data_date, monitor_tag, monitor_harmonic_electric_exceeds_num, monitor_harmonic_voltage_content_exceeds_num,
|
||||
voltage_index_exceeds_num, electric_index_exceeds_num
|
||||
</sql>
|
||||
</mapper>
|
||||
@@ -2,6 +2,9 @@ package com.njcn.prepare.harmonic.mapper.mysql.line;
|
||||
|
||||
import com.github.jeffreyning.mybatisplus.base.MppBaseMapper;
|
||||
import com.njcn.prepare.harmonic.pojo.mysql.RStatAbnormalDPO;
|
||||
import org.apache.ibatis.annotations.Param;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* Description:
|
||||
@@ -12,4 +15,5 @@ import com.njcn.prepare.harmonic.pojo.mysql.RStatAbnormalDPO;
|
||||
* @version V1.0.0
|
||||
*/
|
||||
public interface RStatAbnormalDMapper extends MppBaseMapper<RStatAbnormalDPO> {
|
||||
List<RStatAbnormalDPO> handlerMonitorAbnormal(@Param("pendingId") List<String> pendingId, @Param("format") String format, @Param("beginDay") String beginDay, @Param("endDay") String endDay);
|
||||
}
|
||||
@@ -12,4 +12,25 @@
|
||||
<!--@mbg.generated-->
|
||||
data_date, measurement_point_id, value_alarm
|
||||
</sql>
|
||||
|
||||
<select id="handlerMonitorAbnormal" resultType="com.njcn.prepare.harmonic.pojo.mysql.RStatAbnormalDPO">
|
||||
SELECT
|
||||
#{format} dataDate,
|
||||
measurement_point_id,
|
||||
CASE
|
||||
WHEN a.effective_minute_count<a.all_minute_count then
|
||||
0
|
||||
ELSE
|
||||
1
|
||||
END value_alarm
|
||||
FROM
|
||||
r_mp_monitor_evaluate_d a where
|
||||
a.data_date between #{beginDay} and #{endDay}
|
||||
AND a.measurement_point_id
|
||||
IN
|
||||
<foreach collection="pendingId" item="lineId" separator="," open="(" close=")">
|
||||
#{lineId}
|
||||
</foreach>
|
||||
|
||||
</select>
|
||||
</mapper>
|
||||
@@ -0,0 +1,21 @@
|
||||
package com.njcn.prepare.harmonic.service.mysql.Impl;
|
||||
|
||||
import com.github.jeffreyning.mybatisplus.service.MppServiceImpl;
|
||||
import org.springframework.stereotype.Service;
|
||||
import java.util.List;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import com.njcn.prepare.harmonic.mapper.mysql.area.SpecialAnalysisIndexOverviewDetailedPOMapper;
|
||||
import com.njcn.prepare.harmonic.pojo.po.SpecialAnalysisIndexOverviewDetailedPO;
|
||||
import com.njcn.prepare.harmonic.service.mysql.SpecialAnalysisIndexOverviewDetailedPOService;
|
||||
/**
|
||||
*
|
||||
* Description:
|
||||
* Date: 2023/11/1 15:08【需求编号】
|
||||
*
|
||||
* @author clam
|
||||
* @version V1.0.0
|
||||
*/
|
||||
@Service
|
||||
public class SpecialAnalysisIndexOverviewDetailedPOServiceImpl extends MppServiceImpl<SpecialAnalysisIndexOverviewDetailedPOMapper, SpecialAnalysisIndexOverviewDetailedPO> implements SpecialAnalysisIndexOverviewDetailedPOService{
|
||||
|
||||
}
|
||||
@@ -0,0 +1,25 @@
|
||||
package com.njcn.prepare.harmonic.service.mysql.Impl;
|
||||
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import com.github.jeffreyning.mybatisplus.service.MppServiceImpl;
|
||||
import com.njcn.prepare.harmonic.mapper.mysql.area.SpecialAnalysisIndexOverviewDetailedPOMapper;
|
||||
import com.njcn.prepare.harmonic.pojo.po.SpecialAnalysisIndexOverviewDetailedPO;
|
||||
import org.springframework.stereotype.Service;
|
||||
import com.njcn.prepare.harmonic.mapper.mysql.area.SpecialAnalysisIndexOverviewPOMapper;
|
||||
import java.util.Date;
|
||||
import com.njcn.prepare.harmonic.pojo.po.SpecialAnalysisIndexOverviewPO;
|
||||
import com.njcn.prepare.harmonic.service.mysql.SpecialAnalysisIndexOverviewPOService;
|
||||
/**
|
||||
*
|
||||
* Description:
|
||||
* Date: 2023/11/1 15:06【需求编号】
|
||||
*
|
||||
* @author clam
|
||||
* @version V1.0.0
|
||||
*/
|
||||
@Service
|
||||
public class SpecialAnalysisIndexOverviewPOServiceImpl extends MppServiceImpl<SpecialAnalysisIndexOverviewPOMapper, SpecialAnalysisIndexOverviewPO> implements SpecialAnalysisIndexOverviewPOService{
|
||||
|
||||
|
||||
|
||||
}
|
||||
@@ -0,0 +1,392 @@
|
||||
package com.njcn.prepare.harmonic.service.mysql.Impl;
|
||||
|
||||
import cn.hutool.core.collection.CollUtil;
|
||||
import cn.hutool.core.date.DateUtil;
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.njcn.device.biz.commApi.CommTerminalGeneralClient;
|
||||
import com.njcn.device.biz.pojo.dto.DeptGetChildrenMoreDTO;
|
||||
import com.njcn.device.biz.pojo.dto.LineDevGetDTO;
|
||||
import com.njcn.device.biz.pojo.param.DeptGetLineParam;
|
||||
import com.njcn.harmonic.pojo.po.day.RStatLimitRateDPO;
|
||||
import com.njcn.prepare.harmonic.mapper.mysql.day.RStatLimitRateDMapper;
|
||||
import com.njcn.prepare.harmonic.pojo.param.LineParam;
|
||||
import com.njcn.prepare.harmonic.pojo.po.SpecialAnalysisIndexOverviewDetailedPO;
|
||||
import com.njcn.prepare.harmonic.pojo.po.SpecialAnalysisIndexOverviewPO;
|
||||
import com.njcn.prepare.harmonic.service.mysql.SpecialAnalysisIndexOverviewDetailedPOService;
|
||||
import com.njcn.prepare.harmonic.service.mysql.SpecialAnalysisIndexOverviewPOService;
|
||||
import com.njcn.prepare.harmonic.service.mysql.SpecialAnalysisIndexOverviewService;
|
||||
import com.njcn.user.api.DeptFeignClient;
|
||||
import com.njcn.user.pojo.po.Dept;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import org.springframework.scheduling.annotation.Async;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
import org.springframework.util.CollectionUtils;
|
||||
|
||||
import java.text.DecimalFormat;
|
||||
import java.util.*;
|
||||
import java.util.concurrent.atomic.AtomicInteger;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
* Description:
|
||||
* Date: 2023/11/1 15:14【需求编号】
|
||||
*
|
||||
* @author clam
|
||||
* @version V1.0.0
|
||||
*/
|
||||
@RequiredArgsConstructor
|
||||
@Service
|
||||
public class SpecialAnalysisIndexOverviewServiceImpl implements SpecialAnalysisIndexOverviewService {
|
||||
|
||||
private final CommTerminalGeneralClient commTerminalGeneralClient;
|
||||
private final DeptFeignClient deptFeignClient;
|
||||
private final RStatLimitRateDMapper rStatLimitRateDMapper;
|
||||
private final SpecialAnalysisIndexOverviewPOService specialAnalysisIndexOverviewPOService;
|
||||
private final SpecialAnalysisIndexOverviewDetailedPOService specialAnalysisIndexOverviewDetailedPOService;
|
||||
@Override
|
||||
@Async("asyncExecutor")
|
||||
@Transactional(rollbackFor = {Exception.class})
|
||||
public void hanlder(LineParam jobParam) {
|
||||
|
||||
List<SpecialAnalysisIndexOverviewPO> specialAnalysisIndexOverviewPOList = new ArrayList<>();
|
||||
List<SpecialAnalysisIndexOverviewDetailedPO> specialAnalysisIndexOverviewDetailedPOList = new ArrayList<>();
|
||||
|
||||
|
||||
Dept data = deptFeignClient.getRootDept().getData();
|
||||
DeptGetLineParam deptGetLineParam = new DeptGetLineParam();
|
||||
deptGetLineParam.setDeptId(data.getId());
|
||||
List<DeptGetChildrenMoreDTO> data1 = commTerminalGeneralClient.deptGetLine(deptGetLineParam).getData();
|
||||
Date date = DateUtil.parse(jobParam.getDataDate());
|
||||
|
||||
for (DeptGetChildrenMoreDTO deptGetChildrenMoreDTO : data1) {
|
||||
Map<String, List<String>> lineBaseMap = new HashMap<>();
|
||||
|
||||
List<LineDevGetDTO> lineBaseList = new ArrayList<>();
|
||||
if(CollUtil.isNotEmpty(deptGetChildrenMoreDTO.getLineBaseList())){
|
||||
lineBaseList.addAll(deptGetChildrenMoreDTO.getLineBaseList());
|
||||
}
|
||||
if(CollUtil.isNotEmpty(deptGetChildrenMoreDTO.getPwMonitorIds())){
|
||||
lineBaseList.addAll(deptGetChildrenMoreDTO.getPwMonitorIds());
|
||||
}
|
||||
|
||||
if (CollUtil.isNotEmpty(lineBaseList)) {
|
||||
Map<String, List<LineDevGetDTO>> collect = lineBaseList.stream().collect(Collectors.groupingBy(LineDevGetDTO::getLineTag));
|
||||
|
||||
|
||||
|
||||
collect.forEach((k, v) -> {
|
||||
|
||||
SpecialAnalysisIndexOverviewPO specialAnalysisIndexOverviewPO = new SpecialAnalysisIndexOverviewPO();
|
||||
SpecialAnalysisIndexOverviewDetailedPO specialAnalysisIndexOverviewDetailedPO = new SpecialAnalysisIndexOverviewDetailedPO();
|
||||
|
||||
specialAnalysisIndexOverviewPO.setOrgNo(deptGetChildrenMoreDTO.getUnitId());
|
||||
specialAnalysisIndexOverviewPO.setDataDate(date);
|
||||
specialAnalysisIndexOverviewPO.setMonitorTag(k);
|
||||
|
||||
specialAnalysisIndexOverviewDetailedPO.setOrgNo(deptGetChildrenMoreDTO.getUnitId());
|
||||
specialAnalysisIndexOverviewDetailedPO.setDataDate(date);
|
||||
specialAnalysisIndexOverviewDetailedPO.setMonitorTag(k);
|
||||
|
||||
|
||||
List<String> collect1 = v.stream().map(LineDevGetDTO::getPointId).collect(Collectors.toList());
|
||||
List<RStatLimitRateDPO> rStatLimitRateMS = rStatLimitRateDMapper.selectList(new LambdaQueryWrapper<RStatLimitRateDPO>().
|
||||
in(RStatLimitRateDPO::getLineId, collect1).
|
||||
ge(StrUtil.isNotBlank(jobParam.getBeginTime()), RStatLimitRateDPO::getTime, DateUtil.beginOfDay(DateUtil.parse(jobParam.getBeginTime()))).
|
||||
le(StrUtil.isNotBlank(jobParam.getEndTime()), RStatLimitRateDPO::getTime, DateUtil.endOfDay(DateUtil.parse(jobParam.getEndTime()))));
|
||||
if (CollectionUtils.isEmpty(rStatLimitRateMS)){
|
||||
//单位下没数据不补0,0,0的数据
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
Map<String, List<RStatLimitRateDPO>> collect2 = rStatLimitRateMS.stream().collect(Collectors.groupingBy(RStatLimitRateDPO::getLineId));
|
||||
|
||||
//谐波电流超标监测点数
|
||||
AtomicInteger iCount = new AtomicInteger();
|
||||
//谐波电压含有率超标监测点数
|
||||
AtomicInteger vCount = new AtomicInteger();
|
||||
//电流指标超标点数
|
||||
AtomicInteger iIndexCount = new AtomicInteger();
|
||||
//电压指标超标点数
|
||||
AtomicInteger vIndexCount = new AtomicInteger();
|
||||
|
||||
|
||||
//谐波电流超标监测点天数
|
||||
AtomicInteger iDayCount = new AtomicInteger();
|
||||
|
||||
//谐波电压含有率超标监测点天数
|
||||
AtomicInteger vDayCount = new AtomicInteger();
|
||||
|
||||
//电流指标超标点天数
|
||||
AtomicInteger iDayIndexCount = new AtomicInteger();
|
||||
|
||||
//电压指标超标点天数
|
||||
AtomicInteger vDayIndexCount = new AtomicInteger();
|
||||
|
||||
|
||||
|
||||
|
||||
collect2.forEach((lineId,rStatLimitRateDPOList)->{
|
||||
Map<Date, List<RStatLimitRateDPO>> collect3 = rStatLimitRateDPOList.stream().collect(Collectors.groupingBy(RStatLimitRateDPO::getTime));
|
||||
if(isOverLimit(rStatLimitRateDPOList,1)){
|
||||
iCount.getAndIncrement();
|
||||
}
|
||||
if(isOverLimit(rStatLimitRateDPOList,2)){
|
||||
vCount.getAndIncrement();
|
||||
}
|
||||
if(isOverLimit(rStatLimitRateDPOList,3)){
|
||||
iIndexCount.getAndIncrement();
|
||||
}
|
||||
if(isOverLimit(rStatLimitRateDPOList,4)){
|
||||
vIndexCount.getAndIncrement();
|
||||
}
|
||||
collect3.forEach((day, temp) -> {
|
||||
if(isOverLimit(rStatLimitRateDPOList,1)){
|
||||
iDayCount.getAndIncrement();
|
||||
}
|
||||
if(isOverLimit(rStatLimitRateDPOList,2)){
|
||||
iDayCount.getAndIncrement();
|
||||
}
|
||||
if(isOverLimit(rStatLimitRateDPOList,3)){
|
||||
iDayCount.getAndIncrement();
|
||||
}
|
||||
if(isOverLimit(rStatLimitRateDPOList,4)){
|
||||
iDayCount.getAndIncrement();
|
||||
}
|
||||
|
||||
});
|
||||
});
|
||||
|
||||
|
||||
specialAnalysisIndexOverviewPO.setMonitorHarmonicElectricExceedsNum(iCount.get());
|
||||
specialAnalysisIndexOverviewPO.setMonitorHarmonicVoltageContentExceedsNum(vCount.get());
|
||||
specialAnalysisIndexOverviewPO.setElectricIndexExceedsNum(iIndexCount.get());
|
||||
specialAnalysisIndexOverviewPO.setVoltageIndexExceedsNum(vIndexCount.get());
|
||||
|
||||
specialAnalysisIndexOverviewDetailedPO.setMonitorHarmonicElectricExceedsProportion(
|
||||
this.divideAndKeepTwoDecimalPlaces(iCount.get(),collect2.size())
|
||||
);
|
||||
specialAnalysisIndexOverviewDetailedPO.setMonitorHarmonicElectricExceedsAvgDays(
|
||||
this.divideAndKeepTwoDecimalPlaces(iDayCount.get(),iCount.get())
|
||||
);
|
||||
specialAnalysisIndexOverviewDetailedPO.setMonitorHarmonicVoltageContentExceedsProportion(
|
||||
this.divideAndKeepTwoDecimalPlaces(vCount.get(),collect2.size())
|
||||
);
|
||||
specialAnalysisIndexOverviewDetailedPO.setMonitorHarmonicVoltageContentExceedsAvgDays(
|
||||
this.divideAndKeepTwoDecimalPlaces(vDayCount.get(),vCount.get())
|
||||
);
|
||||
|
||||
specialAnalysisIndexOverviewDetailedPO.setElectricIndexExceedsProportion(
|
||||
this.divideAndKeepTwoDecimalPlaces(iIndexCount.get(),collect2.size())
|
||||
);
|
||||
specialAnalysisIndexOverviewDetailedPO.setElectricIndexExceedsAvgDays(
|
||||
this.divideAndKeepTwoDecimalPlaces(iCount.get(),iIndexCount.get())
|
||||
);
|
||||
specialAnalysisIndexOverviewDetailedPO.setVoltageIndexExceedsProportion(
|
||||
this.divideAndKeepTwoDecimalPlaces(iDayIndexCount.get(),collect2.size())
|
||||
);
|
||||
specialAnalysisIndexOverviewDetailedPO.setVoltageIndexExceedsAvgDays(
|
||||
this.divideAndKeepTwoDecimalPlaces(vDayIndexCount.get(),vIndexCount.get())
|
||||
);
|
||||
|
||||
specialAnalysisIndexOverviewPOList.add(specialAnalysisIndexOverviewPO);
|
||||
specialAnalysisIndexOverviewDetailedPOList.add(specialAnalysisIndexOverviewDetailedPO);
|
||||
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
if (CollUtil.isNotEmpty(specialAnalysisIndexOverviewPOList)) {
|
||||
specialAnalysisIndexOverviewPOService.saveOrUpdateBatchByMultiId(specialAnalysisIndexOverviewPOList, 500);
|
||||
}
|
||||
if (CollUtil.isNotEmpty(specialAnalysisIndexOverviewDetailedPOList)) {
|
||||
specialAnalysisIndexOverviewDetailedPOService.saveOrUpdateBatchByMultiId(specialAnalysisIndexOverviewDetailedPOList, 500);
|
||||
}
|
||||
}
|
||||
/**
|
||||
* @Description: isOverLimit
|
||||
* @Param: i代表指标,1,:谐波电流超标 ,2,:谐波电压含有率超标 ,3,:电流指标,4,:电压指标
|
||||
* @return: void
|
||||
* @Author: clam
|
||||
* @Date: 2023/11/2
|
||||
*/
|
||||
private boolean isOverLimit(List<RStatLimitRateDPO> temp, int i) {
|
||||
boolean flag = false;
|
||||
switch (i) {
|
||||
case 1:
|
||||
int sum = temp.stream().mapToInt(rStatLimitRateDPO -> {
|
||||
return rStatLimitRateDPO.getIharm2Overtime() +
|
||||
rStatLimitRateDPO.getIharm3Overtime() +
|
||||
rStatLimitRateDPO.getIharm4Overtime() +
|
||||
rStatLimitRateDPO.getIharm5Overtime() +
|
||||
rStatLimitRateDPO.getIharm6Overtime() +
|
||||
rStatLimitRateDPO.getIharm7Overtime() +
|
||||
rStatLimitRateDPO.getIharm8Overtime() +
|
||||
rStatLimitRateDPO.getIharm9Overtime() +
|
||||
rStatLimitRateDPO.getIharm10Overtime() +
|
||||
rStatLimitRateDPO.getIharm11Overtime() +
|
||||
rStatLimitRateDPO.getIharm12Overtime() +
|
||||
rStatLimitRateDPO.getIharm13Overtime() +
|
||||
rStatLimitRateDPO.getIharm14Overtime() +
|
||||
rStatLimitRateDPO.getIharm15Overtime() +
|
||||
rStatLimitRateDPO.getIharm16Overtime() +
|
||||
rStatLimitRateDPO.getIharm17Overtime() +
|
||||
rStatLimitRateDPO.getIharm18Overtime() +
|
||||
rStatLimitRateDPO.getIharm19Overtime() +
|
||||
rStatLimitRateDPO.getIharm20Overtime() +
|
||||
rStatLimitRateDPO.getIharm21Overtime() +
|
||||
rStatLimitRateDPO.getIharm22Overtime() +
|
||||
rStatLimitRateDPO.getIharm23Overtime() +
|
||||
rStatLimitRateDPO.getIharm24Overtime() +
|
||||
rStatLimitRateDPO.getIharm25Overtime()
|
||||
;
|
||||
}).sum();
|
||||
if (sum>0){
|
||||
flag =true;
|
||||
}
|
||||
break;
|
||||
case 2:
|
||||
int sum2 = temp.stream().mapToInt(rStatLimitRateDPO -> {
|
||||
return rStatLimitRateDPO.getUharm2Overtime()+
|
||||
rStatLimitRateDPO.getUharm3Overtime()+
|
||||
rStatLimitRateDPO.getUharm4Overtime()+
|
||||
rStatLimitRateDPO.getUharm5Overtime()+
|
||||
rStatLimitRateDPO.getUharm6Overtime()+
|
||||
rStatLimitRateDPO.getUharm7Overtime()+
|
||||
rStatLimitRateDPO.getUharm8Overtime()+
|
||||
rStatLimitRateDPO.getUharm9Overtime()+
|
||||
rStatLimitRateDPO.getUharm10Overtime() +
|
||||
rStatLimitRateDPO.getUharm11Overtime() +
|
||||
rStatLimitRateDPO.getUharm12Overtime() +
|
||||
rStatLimitRateDPO.getUharm13Overtime() +
|
||||
rStatLimitRateDPO.getUharm14Overtime() +
|
||||
rStatLimitRateDPO.getUharm15Overtime() +
|
||||
rStatLimitRateDPO.getUharm16Overtime() +
|
||||
rStatLimitRateDPO.getUharm17Overtime() +
|
||||
rStatLimitRateDPO.getUharm18Overtime() +
|
||||
rStatLimitRateDPO.getUharm19Overtime() +
|
||||
rStatLimitRateDPO.getUharm20Overtime() +
|
||||
rStatLimitRateDPO.getUharm21Overtime() +
|
||||
rStatLimitRateDPO.getUharm22Overtime() +
|
||||
rStatLimitRateDPO.getUharm23Overtime() +
|
||||
rStatLimitRateDPO.getUharm24Overtime() +
|
||||
rStatLimitRateDPO.getUharm25Overtime()
|
||||
;
|
||||
}).sum();
|
||||
if (sum2>0){
|
||||
flag =true;
|
||||
}
|
||||
|
||||
break;
|
||||
|
||||
case 3:
|
||||
int sum3 = temp.stream().mapToInt(rStatLimitRateDPO -> {
|
||||
return rStatLimitRateDPO.getIharm2Overtime() +
|
||||
rStatLimitRateDPO.getIharm3Overtime() +
|
||||
rStatLimitRateDPO.getIharm4Overtime() +
|
||||
rStatLimitRateDPO.getIharm5Overtime() +
|
||||
rStatLimitRateDPO.getIharm6Overtime() +
|
||||
rStatLimitRateDPO.getIharm7Overtime() +
|
||||
rStatLimitRateDPO.getIharm8Overtime() +
|
||||
rStatLimitRateDPO.getIharm9Overtime() +
|
||||
rStatLimitRateDPO.getIharm10Overtime() +
|
||||
rStatLimitRateDPO.getIharm11Overtime() +
|
||||
rStatLimitRateDPO.getIharm12Overtime() +
|
||||
rStatLimitRateDPO.getIharm13Overtime() +
|
||||
rStatLimitRateDPO.getIharm14Overtime() +
|
||||
rStatLimitRateDPO.getIharm15Overtime() +
|
||||
rStatLimitRateDPO.getIharm16Overtime() +
|
||||
rStatLimitRateDPO.getIharm17Overtime() +
|
||||
rStatLimitRateDPO.getIharm18Overtime() +
|
||||
rStatLimitRateDPO.getIharm19Overtime() +
|
||||
rStatLimitRateDPO.getIharm20Overtime() +
|
||||
rStatLimitRateDPO.getIharm21Overtime() +
|
||||
rStatLimitRateDPO.getIharm22Overtime() +
|
||||
rStatLimitRateDPO.getIharm23Overtime() +
|
||||
rStatLimitRateDPO.getIharm24Overtime() +
|
||||
rStatLimitRateDPO.getIharm25Overtime() +
|
||||
rStatLimitRateDPO.getINegOvertime()
|
||||
;
|
||||
}).sum();
|
||||
if (sum3>0){
|
||||
flag =true;
|
||||
}
|
||||
break;
|
||||
case 4:
|
||||
|
||||
int sum4 = temp.stream().mapToInt(rStatLimitRateDPO -> {
|
||||
return rStatLimitRateDPO.getUharm2Overtime()+
|
||||
rStatLimitRateDPO.getUharm3Overtime()+
|
||||
rStatLimitRateDPO.getUharm4Overtime()+
|
||||
rStatLimitRateDPO.getUharm5Overtime()+
|
||||
rStatLimitRateDPO.getUharm6Overtime()+
|
||||
rStatLimitRateDPO.getUharm7Overtime()+
|
||||
rStatLimitRateDPO.getUharm8Overtime()+
|
||||
rStatLimitRateDPO.getUharm9Overtime()+
|
||||
rStatLimitRateDPO.getUharm10Overtime() +
|
||||
rStatLimitRateDPO.getUharm11Overtime() +
|
||||
rStatLimitRateDPO.getUharm12Overtime() +
|
||||
rStatLimitRateDPO.getUharm13Overtime() +
|
||||
rStatLimitRateDPO.getUharm14Overtime() +
|
||||
rStatLimitRateDPO.getUharm15Overtime() +
|
||||
rStatLimitRateDPO.getUharm16Overtime() +
|
||||
rStatLimitRateDPO.getUharm17Overtime() +
|
||||
rStatLimitRateDPO.getUharm18Overtime() +
|
||||
rStatLimitRateDPO.getUharm19Overtime() +
|
||||
rStatLimitRateDPO.getUharm20Overtime() +
|
||||
rStatLimitRateDPO.getUharm21Overtime() +
|
||||
rStatLimitRateDPO.getUharm22Overtime() +
|
||||
rStatLimitRateDPO.getUharm23Overtime() +
|
||||
rStatLimitRateDPO.getUharm24Overtime() +
|
||||
rStatLimitRateDPO.getUharm2Overtime()+
|
||||
rStatLimitRateDPO.getInuharm1Overtime()+
|
||||
rStatLimitRateDPO.getInuharm2Overtime()+
|
||||
rStatLimitRateDPO.getInuharm3Overtime()+
|
||||
rStatLimitRateDPO.getInuharm4Overtime()+
|
||||
rStatLimitRateDPO.getInuharm5Overtime()+
|
||||
rStatLimitRateDPO.getInuharm6Overtime()+
|
||||
rStatLimitRateDPO.getInuharm7Overtime()+
|
||||
rStatLimitRateDPO.getInuharm8Overtime() +
|
||||
rStatLimitRateDPO.getInuharm9Overtime() +
|
||||
rStatLimitRateDPO.getInuharm10Overtime() +
|
||||
rStatLimitRateDPO.getInuharm11Overtime() +
|
||||
rStatLimitRateDPO.getInuharm12Overtime() +
|
||||
rStatLimitRateDPO.getInuharm13Overtime() +
|
||||
rStatLimitRateDPO.getInuharm14Overtime() +
|
||||
rStatLimitRateDPO.getInuharm15Overtime() +
|
||||
rStatLimitRateDPO.getInuharm16Overtime() +
|
||||
rStatLimitRateDPO.getUbalanceOvertime() +
|
||||
rStatLimitRateDPO.getUaberranceOvertime()+
|
||||
rStatLimitRateDPO.getVoltageDevOvertime();
|
||||
}).sum();
|
||||
if (sum4>0){
|
||||
flag =true;
|
||||
}
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
return flag;
|
||||
}
|
||||
/**
|
||||
* @Description: divideAndKeepTwoDecimalPlaces
|
||||
* @Param:
|
||||
* @return: double
|
||||
* @Author: clam
|
||||
* @Date: 2023/11/2
|
||||
*/
|
||||
public double divideAndKeepTwoDecimalPlaces(int a, int b) {
|
||||
if (b == 0) {
|
||||
return 0.00;
|
||||
}
|
||||
double result = (double) a / b;
|
||||
DecimalFormat df = new DecimalFormat("#.00");
|
||||
return Double.parseDouble(df.format(result));
|
||||
}
|
||||
|
||||
}
|
||||
@@ -30,6 +30,7 @@ import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.scheduling.annotation.Async;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.time.ZoneId;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
import java.util.Objects;
|
||||
@@ -372,7 +373,7 @@ public class DataExceptionServiceImpl implements DataExceptionService {
|
||||
RStatAbnormalDPO rStatAbnormalDOne = rStatAbnormalDMapper.selectOne(lambdaQueryWrapper);
|
||||
if (Objects.isNull(rStatAbnormalDOne)){
|
||||
RStatAbnormalDPO rStatAbnormalD = new RStatAbnormalDPO();
|
||||
rStatAbnormalD.setDataDate(date);
|
||||
rStatAbnormalD.setDataDate( date.toInstant().atZone(ZoneId.systemDefault()).toLocalDate());
|
||||
rStatAbnormalD.setMeasurementPointId(lineId);
|
||||
rStatAbnormalD.setValueAlarm(0);
|
||||
rStatAbnormalDMapper.insert(rStatAbnormalD);
|
||||
|
||||
@@ -28,6 +28,7 @@ import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
import org.springframework.util.CollectionUtils;
|
||||
|
||||
import java.time.LocalDate;
|
||||
import java.time.LocalDateTime;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Date;
|
||||
@@ -75,6 +76,8 @@ public class RMpMonitorEvaluateDServiceImpl extends MppServiceImpl<RMpMonitorEva
|
||||
|
||||
rMpMonitorEvaluateDPO = calculateRMpMonitorEvaluateDPO(rMpMonitorEvaluateDPO, fiveItems, pmsAbnormalRules, voltage, data);
|
||||
Date date = DateUtil.parse(beginTime);
|
||||
LocalDate localDate = LocalDateTimeUtil.parseDate(beginTime, DatePattern.NORM_DATE_PATTERN);
|
||||
|
||||
|
||||
DataFlicker twoFlickerData = dataIntegrityRateInfluxService.getTwoFlickerData(temp, date, 5);
|
||||
|
||||
@@ -87,7 +90,7 @@ public class RMpMonitorEvaluateDServiceImpl extends MppServiceImpl<RMpMonitorEva
|
||||
}
|
||||
rMpMonitorEvaluateDPO.setAllMinuteCount(fiveItems.size());
|
||||
rMpMonitorEvaluateDPO.setDeviceId(data.getDevId());
|
||||
rMpMonitorEvaluateDPO.setDataDate(date);
|
||||
rMpMonitorEvaluateDPO.setDataDate(localDate);
|
||||
rMpMonitorEvaluateDPO.setMeasurementPointId(temp);
|
||||
|
||||
rMpMonitorEvaluateDPOS.add(rMpMonitorEvaluateDPO);
|
||||
@@ -127,6 +130,7 @@ public class RMpMonitorEvaluateDServiceImpl extends MppServiceImpl<RMpMonitorEva
|
||||
rMpMonitorEvaluateDPO = calculateRMpMonitorEvaluateDPO(rMpMonitorEvaluateDPO, fiveItems, pmsAbnormalRules, voltage, lineDTO);
|
||||
Date date = DateUtil.parse(beginDay);
|
||||
DataFlicker twoFlickerData = dataIntegrityRateInfluxService.getTwoFlickerData(lineDTO.getLineId(), date, 5);
|
||||
LocalDate localDate = LocalDateTimeUtil.parseDate(beginDay, DatePattern.NORM_DATE_PATTERN);
|
||||
|
||||
if (Objects.isNull(twoFlickerData)) {
|
||||
rMpMonitorEvaluateDPO.setPltCount(0);
|
||||
@@ -137,7 +141,7 @@ public class RMpMonitorEvaluateDServiceImpl extends MppServiceImpl<RMpMonitorEva
|
||||
}
|
||||
rMpMonitorEvaluateDPO.setAllMinuteCount(fiveItems.size());
|
||||
rMpMonitorEvaluateDPO.setDeviceId(lineDTO.getDevId());
|
||||
rMpMonitorEvaluateDPO.setDataDate(date);
|
||||
rMpMonitorEvaluateDPO.setDataDate(localDate);
|
||||
rMpMonitorEvaluateDPO.setMeasurementPointId(lineDTO.getLineId());
|
||||
rMpMonitorEvaluateDPOS.add(rMpMonitorEvaluateDPO);
|
||||
}
|
||||
|
||||
@@ -1,10 +1,16 @@
|
||||
package com.njcn.prepare.harmonic.service.mysql.Impl.line;
|
||||
|
||||
import cn.hutool.core.date.DatePattern;
|
||||
import cn.hutool.core.date.DateUtil;
|
||||
import cn.hutool.core.date.LocalDateTimeUtil;
|
||||
import com.github.jeffreyning.mybatisplus.service.MppServiceImpl;
|
||||
import com.njcn.device.biz.commApi.CommLineClient;
|
||||
import com.njcn.device.biz.pojo.dto.LineDTO;
|
||||
import com.njcn.device.pq.pojo.po.RStatAbnormalD;
|
||||
import com.njcn.prepare.bo.CalculatedParam;
|
||||
import com.njcn.prepare.harmonic.mapper.mysql.line.RMpMonitorEvaluateDMapper;
|
||||
import com.njcn.prepare.harmonic.mapper.mysql.line.ROperatingMonitorDMapper;
|
||||
import com.njcn.prepare.harmonic.mapper.mysql.line.RStatAbnormalDMapper;
|
||||
import com.njcn.prepare.harmonic.pojo.mysql.RMpMonitorEvaluateDPO;
|
||||
import com.njcn.prepare.harmonic.pojo.mysql.ROperatingMonitorDPO;
|
||||
import com.njcn.prepare.harmonic.pojo.mysql.RStatAbnormalDPO;
|
||||
@@ -12,11 +18,13 @@ 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.apache.commons.collections4.ListUtils;
|
||||
import org.springframework.scheduling.annotation.Async;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.time.LocalDate;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
@@ -35,8 +43,8 @@ import java.util.Objects;
|
||||
@RequiredArgsConstructor
|
||||
public class ROperatingMonitorDServiceImpl extends MppServiceImpl<ROperatingMonitorDMapper, ROperatingMonitorDPO> implements ROperatingMonitorService {
|
||||
|
||||
private final RMpMonitorEvaluateDService rMpMonitorEvaluateDService;
|
||||
private final RStatAbnormalDService rStatAbnormalDService;
|
||||
private final RMpMonitorEvaluateDMapper rMpMonitorEvaluateDMapper;
|
||||
private final RStatAbnormalDMapper rStatAbnormalDMapper;
|
||||
private final CommLineClient commLineClient;
|
||||
|
||||
/**
|
||||
@@ -60,33 +68,89 @@ public class ROperatingMonitorDServiceImpl extends MppServiceImpl<ROperatingMoni
|
||||
@Transactional(rollbackFor = {Exception.class})
|
||||
@Async("asyncExecutor")
|
||||
public void handlerMonitorOperatingD(List<String> indexLists, String dataDate) {
|
||||
Date date = DateUtil.parse(dataDate);
|
||||
|
||||
// Date date = DateUtil.parse(dataDate);
|
||||
// List<ROperatingMonitorDPO> rOperatingMonitorDPOList = new ArrayList<> ();
|
||||
// indexLists.forEach (temp -> {
|
||||
// ROperatingMonitorDPO rOperatingMonitorDPO = new ROperatingMonitorDPO();
|
||||
//
|
||||
// LineDTO data = commLineClient.getLineDetail(temp).getData();
|
||||
//
|
||||
// /*todo 统计间隔,电压等级取值方式,devid后期提供融合版本接口获取不然pms,pqs系统取值方式不一样*/
|
||||
// /*统计间隔*/
|
||||
// Integer statisticalInterval = data.getTimeInterval ();
|
||||
//
|
||||
// RMpMonitorEvaluateDPO rMpMonitorEvaluateDPO = new RMpMonitorEvaluateDPO();
|
||||
// rMpMonitorEvaluateDPO.setMeasurementPointId (temp);
|
||||
// rMpMonitorEvaluateDPO.setDataDate (date);
|
||||
// rMpMonitorEvaluateDPO = rMpMonitorEvaluateDMapper.selectByMultiId (rMpMonitorEvaluateDPO);
|
||||
// if (Objects.isNull(rMpMonitorEvaluateDPO)) {
|
||||
// return;
|
||||
// }
|
||||
// RStatAbnormalDPO rStatAbnormalDPO = new RStatAbnormalDPO();
|
||||
// rStatAbnormalDPO.setDataDate (date);
|
||||
// rStatAbnormalDPO.setMeasurementPointId (temp);
|
||||
// rStatAbnormalDPO = rStatAbnormalDMapper.selectByMultiId (rStatAbnormalDPO);
|
||||
// if (Objects.isNull(rStatAbnormalDPO)) {
|
||||
// return;
|
||||
// }
|
||||
// rOperatingMonitorDPO.setMeasurementPointId (temp);
|
||||
// rOperatingMonitorDPO.setDataDate (date);
|
||||
// rOperatingMonitorDPO.setIsUnusual (rStatAbnormalDPO.getValueAlarm ());
|
||||
// rOperatingMonitorDPO.setEffectiveMinuteCount (rMpMonitorEvaluateDPO.getEffectiveMinuteCount ());
|
||||
// rOperatingMonitorDPO.setDataIntegrityRate (BigDecimal.valueOf (rMpMonitorEvaluateDPO.getEffectiveMinuteCount ()*statisticalInterval/1440));
|
||||
// if(rMpMonitorEvaluateDPO.getEffectiveMinuteCount ()==0){
|
||||
// rOperatingMonitorDPO.setDataRightRate(BigDecimal.valueOf(0.00));
|
||||
// }else{
|
||||
// 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 (data.getDevId());
|
||||
// rOperatingMonitorDPO.setMonitorState("0");
|
||||
// rOperatingMonitorDPOList.add (rOperatingMonitorDPO);
|
||||
// });
|
||||
// this.saveOrUpdateBatchByMultiId (rOperatingMonitorDPOList,500);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void handleDay(CalculatedParam calculatedParam) {
|
||||
LocalDate localDate = LocalDateTimeUtil.parseDate(calculatedParam.getDataDate(), DatePattern.NORM_DATE_PATTERN);
|
||||
List<ROperatingMonitorDPO> rOperatingMonitorDPOList = new ArrayList<> ();
|
||||
indexLists.forEach (temp -> {
|
||||
List<List<String>> pendingIds = ListUtils.partition(calculatedParam.getIdList(), 1000);
|
||||
for (List<String> pendingId : pendingIds) {
|
||||
List<LineDTO> lineDTOList = commLineClient.getLineDetailBatch(pendingId).getData();
|
||||
List<RMpMonitorEvaluateDPO> rMpMonitorEvaluateDPOS = new ArrayList<>();
|
||||
for (LineDTO lineDTO : lineDTOList) {
|
||||
ROperatingMonitorDPO rOperatingMonitorDPO = new ROperatingMonitorDPO();
|
||||
|
||||
LineDTO data = commLineClient.getLineDetail(temp).getData();
|
||||
|
||||
/*todo 统计间隔,电压等级取值方式,devid后期提供融合版本接口获取不然pms,pqs系统取值方式不一样*/
|
||||
/*统计间隔*/
|
||||
Integer statisticalInterval = data.getTimeInterval ();
|
||||
|
||||
Integer statisticalInterval = lineDTO.getTimeInterval ();
|
||||
RMpMonitorEvaluateDPO rMpMonitorEvaluateDPO = new RMpMonitorEvaluateDPO();
|
||||
rMpMonitorEvaluateDPO.setMeasurementPointId (temp);
|
||||
rMpMonitorEvaluateDPO.setDataDate (date);
|
||||
rMpMonitorEvaluateDPO = rMpMonitorEvaluateDService.selectByMultiId (rMpMonitorEvaluateDPO);
|
||||
rMpMonitorEvaluateDPO.setMeasurementPointId (lineDTO.getLineId());
|
||||
rMpMonitorEvaluateDPO.setDataDate (localDate);
|
||||
rMpMonitorEvaluateDPO = rMpMonitorEvaluateDMapper.selectByMultiId (rMpMonitorEvaluateDPO);
|
||||
if (Objects.isNull(rMpMonitorEvaluateDPO)) {
|
||||
return;
|
||||
}
|
||||
RStatAbnormalDPO rStatAbnormalDPO = new RStatAbnormalDPO();
|
||||
rStatAbnormalDPO.setDataDate (date);
|
||||
rStatAbnormalDPO.setMeasurementPointId (temp);
|
||||
rStatAbnormalDPO = rStatAbnormalDService.selectByMultiId (rStatAbnormalDPO);
|
||||
rStatAbnormalDPO.setDataDate (localDate);
|
||||
rStatAbnormalDPO.setMeasurementPointId (lineDTO.getLineId());
|
||||
rStatAbnormalDPO = rStatAbnormalDMapper.selectByMultiId (rStatAbnormalDPO);
|
||||
if (Objects.isNull(rStatAbnormalDPO)) {
|
||||
return;
|
||||
}
|
||||
rOperatingMonitorDPO.setMeasurementPointId (temp);
|
||||
rOperatingMonitorDPO.setDataDate (date);
|
||||
rOperatingMonitorDPO.setMeasurementPointId (lineDTO.getLineId());
|
||||
rOperatingMonitorDPO.setDataDate (localDate);
|
||||
rOperatingMonitorDPO.setIsUnusual (rStatAbnormalDPO.getValueAlarm ());
|
||||
rOperatingMonitorDPO.setEffectiveMinuteCount (rMpMonitorEvaluateDPO.getEffectiveMinuteCount ());
|
||||
rOperatingMonitorDPO.setDataIntegrityRate (BigDecimal.valueOf (rMpMonitorEvaluateDPO.getEffectiveMinuteCount ()*statisticalInterval/1440));
|
||||
@@ -107,10 +171,13 @@ public class ROperatingMonitorDServiceImpl extends MppServiceImpl<ROperatingMoni
|
||||
rMpMonitorEvaluateDPO.getVThdCount ())*statisticalInterval/(5*1440)
|
||||
)
|
||||
);
|
||||
rOperatingMonitorDPO.setDevId (data.getDevId());
|
||||
rOperatingMonitorDPO.setDevId (lineDTO.getDevId());
|
||||
rOperatingMonitorDPO.setMonitorState("0");
|
||||
rOperatingMonitorDPOList.add (rOperatingMonitorDPO);
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
this.saveOrUpdateBatchByMultiId (rOperatingMonitorDPOList,500);
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,9 +1,14 @@
|
||||
package com.njcn.prepare.harmonic.service.mysql.Impl.line;
|
||||
|
||||
import cn.hutool.core.date.DatePattern;
|
||||
import cn.hutool.core.date.DateTime;
|
||||
import cn.hutool.core.date.DateUtil;
|
||||
import cn.hutool.core.date.LocalDateTimeUtil;
|
||||
import com.alibaba.nacos.client.naming.utils.CollectionUtils;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||
import com.github.jeffreyning.mybatisplus.service.MppServiceImpl;
|
||||
import com.njcn.prepare.bo.CalculatedParam;
|
||||
import com.njcn.prepare.harmonic.mapper.mysql.line.ROperatingMonitorDMapper;
|
||||
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;
|
||||
@@ -16,6 +21,8 @@ import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.time.LocalDate;
|
||||
import java.time.LocalDateTime;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
@@ -32,21 +39,56 @@ import java.util.stream.Collectors;
|
||||
@Service
|
||||
@RequiredArgsConstructor
|
||||
public class ROperatingMonitorMServiceImpl extends MppServiceImpl<ROperatingMonitorMMapper, ROperatingMonitorMPO> implements ROperatingMonitorMService {
|
||||
private final ROperatingMonitorService rOperatingMonitorService;
|
||||
private final ROperatingMonitorDMapper rOperatingMonitorDMapper;
|
||||
|
||||
|
||||
@Override
|
||||
@Transactional(rollbackFor = {Exception.class})
|
||||
@Async("asyncExecutor")
|
||||
public void handlerMonitorOperatingM(List<String> indexLists,LineParam jobParam) {
|
||||
// List<ROperatingMonitorMPO> rOperatingMonitorMPOList = new ArrayList<>();
|
||||
// QueryWrapper<ROperatingMonitorDPO> queryWrapper = new QueryWrapper<>();
|
||||
// indexLists.forEach(temp -> {
|
||||
// queryWrapper.clear();
|
||||
// queryWrapper.eq("measurement_point_id", temp)
|
||||
// .ge("data_date", jobParam.getBeginTime())
|
||||
// .le("data_date", jobParam.getEndTime());
|
||||
// List<ROperatingMonitorDPO> list = rOperatingMonitorService.list(queryWrapper);
|
||||
//
|
||||
// if (CollectionUtils.isEmpty(list)) {
|
||||
// return;
|
||||
// }
|
||||
// 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(DateUtil.parse(jobParam.getDataDate()));
|
||||
// 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);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void handleMonth(CalculatedParam calculatedParam) {
|
||||
DateTime beginMonth = DateUtil.beginOfMonth(DateUtil.parse(calculatedParam.getDataDate(), DatePattern.NORM_DATE_PATTERN));
|
||||
DateTime endMonth = DateUtil.endOfMonth(DateUtil.parse(calculatedParam.getDataDate(), DatePattern.NORM_DATE_PATTERN));
|
||||
LocalDate localDate = LocalDateTimeUtil.parseDate( DateUtil.format(beginMonth, DatePattern.NORM_DATE_PATTERN), DatePattern.NORM_DATE_PATTERN);
|
||||
|
||||
List<ROperatingMonitorMPO> rOperatingMonitorMPOList = new ArrayList<>();
|
||||
QueryWrapper<ROperatingMonitorDPO> queryWrapper = new QueryWrapper<>();
|
||||
indexLists.forEach(temp -> {
|
||||
calculatedParam.getIdList().forEach(temp -> {
|
||||
queryWrapper.clear();
|
||||
queryWrapper.eq("measurement_point_id", temp)
|
||||
.ge("data_date", jobParam.getBeginTime())
|
||||
.le("data_date", jobParam.getEndTime());
|
||||
List<ROperatingMonitorDPO> list = rOperatingMonitorService.list(queryWrapper);
|
||||
.between("data_date",beginMonth,endMonth);
|
||||
|
||||
List<ROperatingMonitorDPO> list = rOperatingMonitorDMapper.selectList(queryWrapper);
|
||||
|
||||
if (CollectionUtils.isEmpty(list)) {
|
||||
return;
|
||||
@@ -56,7 +98,7 @@ public class ROperatingMonitorMServiceImpl extends MppServiceImpl<ROperatingMoni
|
||||
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(DateUtil.parse(jobParam.getDataDate()));
|
||||
rOperatingMonitorMPO.setDataDate(localDate);
|
||||
rOperatingMonitorMPO.setDataIntegrityRate(dataIntegrityRate);
|
||||
rOperatingMonitorMPO.setDataRightRate(dataRightRate);
|
||||
rOperatingMonitorMPO.setIndexIntegrityRate(indexIntegrityRate);
|
||||
|
||||
@@ -1,17 +1,24 @@
|
||||
package com.njcn.prepare.harmonic.service.mysql.Impl.line;
|
||||
|
||||
import cn.hutool.core.date.DatePattern;
|
||||
import cn.hutool.core.date.DateUtil;
|
||||
import cn.hutool.core.date.LocalDateTimeUtil;
|
||||
import com.github.jeffreyning.mybatisplus.service.MppServiceImpl;
|
||||
import com.njcn.harmonic.pojo.po.RMpEventDetailDPO;
|
||||
import com.njcn.prepare.bo.CalculatedParam;
|
||||
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 com.njcn.system.enums.DicDataEnum;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import org.apache.commons.collections4.ListUtils;
|
||||
import org.springframework.scheduling.annotation.Async;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
import java.time.LocalDateTime;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
@@ -31,31 +38,49 @@ import java.util.Objects;
|
||||
public class RStatAbnormalDServiceImpl extends MppServiceImpl<RStatAbnormalDMapper, RStatAbnormalDPO> implements RStatAbnormalDService{
|
||||
|
||||
|
||||
private final RMpMonitorEvaluateDService rMpMonitorEvaluateDService;
|
||||
// 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();
|
||||
|
||||
if(Objects.isNull (rMpMonitorEvaluateDPO)){
|
||||
rStatAbnormalDPO.setValueAlarm(0);
|
||||
}else {
|
||||
rStatAbnormalDPO.setValueAlarm (rMpMonitorEvaluateDPO.getEffectiveMinuteCount ()
|
||||
<rMpMonitorEvaluateDPO.getAllMinuteCount ()?0:1);
|
||||
// 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();
|
||||
//
|
||||
// if(Objects.isNull (rMpMonitorEvaluateDPO)){
|
||||
// rStatAbnormalDPO.setValueAlarm(0);
|
||||
// }else {
|
||||
// rStatAbnormalDPO.setValueAlarm (rMpMonitorEvaluateDPO.getEffectiveMinuteCount ()
|
||||
// <rMpMonitorEvaluateDPO.getAllMinuteCount ()?0:1);
|
||||
// }
|
||||
// rStatAbnormalDPO.setDataDate (date);
|
||||
// rStatAbnormalDPO.setMeasurementPointId (temp);
|
||||
//
|
||||
// rStatAbnormalDPOS.add (rStatAbnormalDPO);
|
||||
// });
|
||||
// this.saveOrUpdateBatchByMultiId (rStatAbnormalDPOS,500);
|
||||
}
|
||||
rStatAbnormalDPO.setDataDate (date);
|
||||
rStatAbnormalDPO.setMeasurementPointId (temp);
|
||||
|
||||
rStatAbnormalDPOS.add (rStatAbnormalDPO);
|
||||
});
|
||||
this.saveOrUpdateBatchByMultiId (rStatAbnormalDPOS,500);
|
||||
@Override
|
||||
public void handlerMonitorAbnormal(CalculatedParam calculatedParam) {
|
||||
String beginDay = LocalDateTimeUtil.format(LocalDateTimeUtil.beginOfDay(LocalDateTimeUtil.parse(calculatedParam.getDataDate(), DatePattern.NORM_DATE_PATTERN)),DatePattern.NORM_DATETIME_PATTERN);
|
||||
String endDay = LocalDateTimeUtil.format(LocalDateTimeUtil.endOfDay(LocalDateTimeUtil.parse(calculatedParam.getDataDate(), DatePattern.NORM_DATE_PATTERN)),DatePattern.NORM_DATETIME_PATTERN);
|
||||
//以尺寸1000分片
|
||||
List<List<String>> pendingIds = ListUtils.partition(calculatedParam.getIdList(), 1000);
|
||||
for (List<String> pendingId : pendingIds) {
|
||||
//查询
|
||||
List<RStatAbnormalDPO> rMpEventDetailDPOList = this.baseMapper.handlerMonitorAbnormal(
|
||||
pendingId
|
||||
,calculatedParam.getDataDate()
|
||||
,beginDay
|
||||
,endDay);
|
||||
//入库
|
||||
this.saveOrUpdateBatchByMultiId(rMpEventDetailDPOList);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,17 @@
|
||||
package com.njcn.prepare.harmonic.service.mysql;
|
||||
|
||||
import com.github.jeffreyning.mybatisplus.service.IMppService;
|
||||
import com.njcn.prepare.harmonic.pojo.po.SpecialAnalysisIndexOverviewDetailedPO;
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
/**
|
||||
*
|
||||
* Description:
|
||||
* Date: 2023/11/1 15:08【需求编号】
|
||||
*
|
||||
* @author clam
|
||||
* @version V1.0.0
|
||||
*/
|
||||
public interface SpecialAnalysisIndexOverviewDetailedPOService extends IMppService<SpecialAnalysisIndexOverviewDetailedPO> {
|
||||
|
||||
|
||||
}
|
||||
@@ -0,0 +1,22 @@
|
||||
package com.njcn.prepare.harmonic.service.mysql;
|
||||
|
||||
import java.util.Date;
|
||||
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
import com.github.jeffreyning.mybatisplus.service.IMppService;
|
||||
import com.njcn.prepare.harmonic.pojo.po.SpecialAnalysisIndexOverviewDetailedPO;
|
||||
import com.njcn.prepare.harmonic.pojo.po.SpecialAnalysisIndexOverviewPO;
|
||||
/**
|
||||
*
|
||||
* Description:
|
||||
* Date: 2023/11/1 15:06【需求编号】
|
||||
*
|
||||
* @author clam
|
||||
* @version V1.0.0
|
||||
*/
|
||||
public interface SpecialAnalysisIndexOverviewPOService extends IMppService<SpecialAnalysisIndexOverviewPO> {
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
@@ -0,0 +1,14 @@
|
||||
package com.njcn.prepare.harmonic.service.mysql;
|
||||
|
||||
import com.njcn.prepare.harmonic.pojo.param.LineParam;
|
||||
|
||||
/**
|
||||
* Description:
|
||||
* Date: 2023/11/1 15:14【需求编号】
|
||||
*
|
||||
* @author clam
|
||||
* @version V1.0.0
|
||||
*/
|
||||
public interface SpecialAnalysisIndexOverviewService {
|
||||
void hanlder(LineParam jobParam);
|
||||
}
|
||||
@@ -1,6 +1,7 @@
|
||||
package com.njcn.prepare.harmonic.service.mysql.line;
|
||||
|
||||
import com.github.jeffreyning.mybatisplus.service.IMppService;
|
||||
import com.njcn.prepare.bo.CalculatedParam;
|
||||
import com.njcn.prepare.harmonic.pojo.mysql.ROperatingMonitorMPO;
|
||||
import com.njcn.prepare.harmonic.pojo.param.LineParam;
|
||||
|
||||
@@ -24,4 +25,6 @@ public interface ROperatingMonitorMService extends IMppService<ROperatingMonitor
|
||||
* @Date: 2023/4/21
|
||||
*/
|
||||
void handlerMonitorOperatingM(List<String> indexLists, LineParam jobParam);
|
||||
|
||||
void handleMonth(CalculatedParam calculatedParam);
|
||||
}
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
package com.njcn.prepare.harmonic.service.mysql.line;
|
||||
|
||||
import com.github.jeffreyning.mybatisplus.service.IMppService;
|
||||
import com.njcn.prepare.bo.CalculatedParam;
|
||||
import com.njcn.prepare.harmonic.pojo.mysql.ROperatingMonitorDPO;
|
||||
|
||||
import java.util.List;
|
||||
@@ -23,4 +24,6 @@ public interface ROperatingMonitorService extends IMppService<ROperatingMonitorD
|
||||
* @Date: 2023/4/21
|
||||
*/
|
||||
void handlerMonitorOperatingD(List<String> indexLists, String dataDate);
|
||||
|
||||
void handleDay(CalculatedParam calculatedParam);
|
||||
}
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
package com.njcn.prepare.harmonic.service.mysql.line;
|
||||
|
||||
import com.github.jeffreyning.mybatisplus.service.IMppService;
|
||||
import com.njcn.prepare.bo.CalculatedParam;
|
||||
import com.njcn.prepare.harmonic.pojo.mysql.RStatAbnormalDPO;
|
||||
|
||||
import java.util.List;
|
||||
@@ -17,4 +18,6 @@ public interface RStatAbnormalDService extends IMppService<RStatAbnormalDPO> {
|
||||
|
||||
|
||||
void handlerMonitorAbnormal(List<String> indexLists, String dataDate);
|
||||
|
||||
void handlerMonitorAbnormal(CalculatedParam calculatedParam);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user