1.pom版本控制
2.发射特性和影响特性算法
This commit is contained in:
@@ -21,32 +21,22 @@
|
||||
<dependencies>
|
||||
|
||||
<!--pq-device-boot和pms-device-boot只能选择一个-->
|
||||
<dependency>
|
||||
<groupId>com.njcn</groupId>
|
||||
<artifactId>pq-device-boot</artifactId>
|
||||
<version>${project.version}</version>
|
||||
</dependency>
|
||||
<!-- <dependency>
|
||||
<!-- <dependency>-->
|
||||
<!-- <groupId>com.njcn</groupId>-->
|
||||
<!-- <artifactId>pq-device-boot</artifactId>-->
|
||||
<!-- <version>${project.version}</version>-->
|
||||
<!-- </dependency>-->
|
||||
<dependency>
|
||||
<groupId>com.njcn</groupId>
|
||||
<artifactId>pms-device-boot</artifactId>
|
||||
<version>${project.version}</version>
|
||||
</dependency>-->
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>com.njcn</groupId>
|
||||
<artifactId>common-swagger</artifactId>
|
||||
<version>${project.version}</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>com.squareup.okhttp3</groupId>
|
||||
<artifactId>okhttp</artifactId>
|
||||
<version>4.9.0</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>com.squareup.okhttp3</groupId>
|
||||
<artifactId>logging-interceptor</artifactId>
|
||||
<version>4.9.0</version>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
|
||||
<build>
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
package com.njcn.device.pms.pojo.po;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.TableField;
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import lombok.Data;
|
||||
|
||||
@@ -20,6 +21,7 @@ public class RMpMonitorAlarmCountM implements Serializable {
|
||||
/**
|
||||
* 单位ID
|
||||
*/
|
||||
@TableField(exist = false)
|
||||
private String orgNo;
|
||||
|
||||
/**
|
||||
|
||||
@@ -168,6 +168,14 @@
|
||||
pm.Line_Name
|
||||
FROM
|
||||
pms_monitor AS pm
|
||||
<where>
|
||||
<if test="pwPmsMonitorParam.monitorTag!=null and pwPmsMonitorParam.monitorTag.size()!=0">
|
||||
AND pm.Monitor_Tag IN
|
||||
<foreach collection="pwPmsMonitorParam.monitorTag" item="item" open="(" close=")" separator=",">
|
||||
#{item}
|
||||
</foreach>
|
||||
</if>
|
||||
</where>
|
||||
) UNION ALL
|
||||
(
|
||||
SELECT
|
||||
|
||||
@@ -224,56 +224,21 @@
|
||||
</select>
|
||||
<select id="selectListAll" resultType="com.njcn.device.pms.pojo.vo.DistributionMonitorVO">
|
||||
SELECT
|
||||
t.org_id as orgNo,
|
||||
b.org_id as orgNo,
|
||||
pss.Longitude as longitude,
|
||||
pss.Latitude as latitude,
|
||||
b.Status ,
|
||||
b.*
|
||||
FROM
|
||||
(
|
||||
( SELECT id,org_id, Operation_Id, Power_Station_Id, Line_Id FROM pms_power_client
|
||||
pms_distribution_monitor b
|
||||
LEFT JOIN pms_statation_stat pss on b.Power_Station_Id=pss.Power_Id
|
||||
<where>
|
||||
org_id IN
|
||||
b.org_id IN
|
||||
<foreach collection="orgIds" item="item" open="(" close=")" separator=",">
|
||||
#{item}
|
||||
</foreach>
|
||||
AND STATUS = 1
|
||||
AND b.STATUS = 1
|
||||
</where>
|
||||
) UNION ALL
|
||||
( SELECT id,org_id, Operation_Id, Power_Station_Id, Line_Id FROM pms_power_generation_user
|
||||
<where>
|
||||
|
||||
org_id IN
|
||||
<foreach collection="orgIds" item="item" open="(" close=")" separator=",">
|
||||
#{item}
|
||||
</foreach>
|
||||
AND STATUS = 1
|
||||
</where>
|
||||
) UNION ALL
|
||||
( SELECT id,org_id, Operation_Id, Power_Station_Id, Line_Id FROM pms_power_distributionarea
|
||||
<where>
|
||||
|
||||
org_id IN
|
||||
<foreach collection="orgIds" item="item" open="(" close=")" separator=",">
|
||||
#{item}
|
||||
</foreach>
|
||||
AND STATUS = 1
|
||||
</where>
|
||||
|
||||
) UNION ALL
|
||||
( SELECT id,org_id, Operation_Id, Powerr_Id, Line_Id FROM pms_monitor
|
||||
<where>
|
||||
|
||||
org_id IN
|
||||
<foreach collection="orgIds" item="item" open="(" close=")" separator=",">
|
||||
#{item}
|
||||
</foreach>
|
||||
AND STATUS = 1
|
||||
</where>
|
||||
|
||||
)
|
||||
) t
|
||||
INNER JOIN pms_distribution_monitor b ON t.id = b.Monitor_Id and b.Status=1
|
||||
LEFT JOIN pms_statation_stat pss on t.Power_Station_Id=pss.Power_Id
|
||||
</select>
|
||||
<select id="selectPhotovoltaicUser" resultType="com.njcn.device.pms.pojo.vo.OverviewVO$PhotoVoltaicVoltage">
|
||||
(select
|
||||
|
||||
@@ -119,6 +119,9 @@ public class IPwMonitorServiceImpl implements IPwMonitorService {
|
||||
.map(DeptDTO::getCode)
|
||||
.distinct()
|
||||
.collect(Collectors.toList());
|
||||
//获取分布式光伏字典id
|
||||
DictData data = dicDataFeignClient.getDicDataByCode(DicDataEnum.DISTRIBUTED_PHOTOVOLTAICS.getCode()).getData();
|
||||
pwPmsMonitorParam.setMonitorTag(Arrays.asList(data.getId()));
|
||||
//获取monitor详细数据
|
||||
return pwMonitorMapper.getPwPhotovoltaicMonitorList(deptIdList, pwPmsMonitorParam);
|
||||
|
||||
|
||||
@@ -142,10 +142,13 @@ public class OverviewServiceImpl implements OverviewService {
|
||||
|
||||
//数据 key:监测点类别 value:数量
|
||||
Map<String, Long> map = distributionMonitors.stream().collect(Collectors.groupingBy(dm -> dm.getMonitorSort(), Collectors.counting()));
|
||||
//获取监测点id
|
||||
List<String> ids = distributionMonitors.stream().map(DistributionMonitorVO::getMonitorId).collect(Collectors.toList());
|
||||
|
||||
|
||||
//获取数据库数据
|
||||
List<RMpMonitorAlarmCountM> list = rMpMonitorAlarmCountMService.list(new LambdaQueryWrapper<RMpMonitorAlarmCountM>()
|
||||
.in(RMpMonitorAlarmCountM::getOrgNo, deptListCode)
|
||||
.in(RMpMonitorAlarmCountM::getMeasurementPointId, ids)
|
||||
.eq(RMpMonitorAlarmCountM::getDataType,data.getId())
|
||||
.ge(StringUtils.isNotBlank(param.getStartTime()), RMpMonitorAlarmCountM::getDataDate, param.getStartTime())
|
||||
.le(StringUtils.isNotBlank(param.getEndTime()), RMpMonitorAlarmCountM::getDataDate, param.getEndTime())
|
||||
|
||||
@@ -27,9 +27,6 @@ public class RMpEmissionIExcessRateM implements Serializable {
|
||||
@TableField(value = "org_no")
|
||||
private String orgNo;
|
||||
|
||||
@MppMultiId
|
||||
@TableField(value = "measurement_point_id")
|
||||
private String measurementPointId;
|
||||
|
||||
@MppMultiId
|
||||
@TableField(value = "monitor_tag")
|
||||
|
||||
@@ -19,9 +19,6 @@ public class RMpEmissionIM implements Serializable {
|
||||
@TableField(exist = false)
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
@MppMultiId
|
||||
@TableField(value = "measurement_point_id")
|
||||
private String measurementPointId;
|
||||
|
||||
@MppMultiId
|
||||
@TableField(value = "monitor_tag")
|
||||
|
||||
@@ -30,9 +30,6 @@ public class RMpEmissionM implements Serializable {
|
||||
@TableField(value = "monitor_tag")
|
||||
private String monitorTag;
|
||||
|
||||
@MppMultiId
|
||||
@TableField(value = "measurement_point_id")
|
||||
private String measurementPointId;
|
||||
|
||||
/**
|
||||
* 生成数据的时间,每月统计一次
|
||||
|
||||
@@ -33,13 +33,6 @@ public class RMpInfluenceM implements Serializable {
|
||||
@TableField(value = "data_date")
|
||||
private Date dataDate;
|
||||
|
||||
/**
|
||||
* 监测点id
|
||||
*/
|
||||
@MppMultiId
|
||||
@TableField(value = "measurement_point_id")
|
||||
private String measurementPointId;
|
||||
|
||||
/**
|
||||
* 负序电压不平衡度
|
||||
*/
|
||||
|
||||
@@ -33,12 +33,6 @@ public class RMpInfluenceVExcessRateM implements Serializable {
|
||||
@TableField(value = "data_date")
|
||||
private Date dataDate;
|
||||
|
||||
/**
|
||||
* 监测点id
|
||||
*/
|
||||
@MppMultiId
|
||||
@TableField(value = "measurement_point_id")
|
||||
private String measurementPointId;
|
||||
|
||||
/**
|
||||
* 2次谐波电压超标占比
|
||||
|
||||
@@ -33,12 +33,6 @@ public class RMpInfluenceVM implements Serializable {
|
||||
@TableField(value = "data_date")
|
||||
private Date dataDate;
|
||||
|
||||
/**
|
||||
* 监测点id
|
||||
*/
|
||||
@MppMultiId
|
||||
@TableField(value = "measurement_point_id")
|
||||
private String measurementPointId;
|
||||
|
||||
/**
|
||||
* 2次谐波电压含有率
|
||||
|
||||
@@ -0,0 +1,54 @@
|
||||
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.prepare.harmonic.pojo.param.LineParam;
|
||||
import com.njcn.prepare.harmonic.service.mysql.newalgorithm.IRMpEmissionMService;
|
||||
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 com.njcn.web.controller.BaseController;
|
||||
|
||||
import java.time.LocalDateTime;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* 风电场发射特性-月表 前端控制器
|
||||
* </p>
|
||||
*
|
||||
* @author wr
|
||||
* @since 2023-10-16
|
||||
*/
|
||||
@Slf4j
|
||||
@Api(tags = "专项分析-发射特性算法")
|
||||
@RestController
|
||||
@RequestMapping("/rMpEmissionM")
|
||||
@RequiredArgsConstructor
|
||||
public class RMpEmissionMController extends BaseController {
|
||||
|
||||
private final IRMpEmissionMService irMpEmissionMService;
|
||||
|
||||
@ApiOperation("发射特性(r_mp_emission_m表数据)")
|
||||
@ApiImplicitParam(value = "jobParam", name = "jobParam", required = true)
|
||||
@PostMapping("rMpEmissionMHandler")
|
||||
@OperateInfo(info = LogEnum.BUSINESS_MEDIUM)
|
||||
public HttpResult<Boolean> rMpEmissionMHandler(@RequestBody LineParam jobParam) {
|
||||
log.info(LocalDateTime.now() + "rMpEmissionMHandler开始执行");
|
||||
String methodDescribe = getMethodDescribe("rMpEmissionMHandler");
|
||||
irMpEmissionMService.rMpEmissionMHandler(jobParam);
|
||||
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, true, methodDescribe);
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,54 @@
|
||||
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.prepare.harmonic.pojo.param.LineParam;
|
||||
import com.njcn.prepare.harmonic.service.mysql.newalgorithm.IRMpEmissionMService;
|
||||
import com.njcn.prepare.harmonic.service.mysql.newalgorithm.IRMpInfluenceMService;
|
||||
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 com.njcn.web.controller.BaseController;
|
||||
|
||||
import java.time.LocalDateTime;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* 影响特性-月表 前端控制器
|
||||
* </p>
|
||||
*
|
||||
* @author wr
|
||||
* @since 2023-10-17
|
||||
*/
|
||||
@Slf4j
|
||||
@Api(tags = "专项分析-影响特性算法")
|
||||
@RestController
|
||||
@RequestMapping("/rMpInfluenceM")
|
||||
@RequiredArgsConstructor
|
||||
public class RMpInfluenceMController extends BaseController {
|
||||
private final IRMpInfluenceMService irMpEmissionMService;
|
||||
|
||||
@ApiOperation("影响特性(r_mp_emission_m表数据)")
|
||||
@ApiImplicitParam(value = "jobParam", name = "jobParam", required = true)
|
||||
@PostMapping("rMpInfluenceMHandler")
|
||||
@OperateInfo(info = LogEnum.BUSINESS_MEDIUM)
|
||||
public HttpResult<Boolean> rMpInfluenceMHandler(@RequestBody LineParam jobParam) {
|
||||
log.info(LocalDateTime.now() + "rMpInfluenceMHandler开始执行");
|
||||
String methodDescribe = getMethodDescribe("rMpInfluenceMHandler");
|
||||
irMpEmissionMService.rMpInfluenceMHandler(jobParam);
|
||||
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, true, methodDescribe);
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,16 @@
|
||||
package com.njcn.prepare.harmonic.mapper.mysql.newalgorithm;
|
||||
|
||||
import com.github.jeffreyning.mybatisplus.base.MppBaseMapper;
|
||||
import com.njcn.harmonic.pojo.po.RMpEmissionIExcessRateM;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* 风电场发射特性-月表/各次谐波电流超标占比 Mapper 接口
|
||||
* </p>
|
||||
*
|
||||
* @author wr
|
||||
* @since 2023-10-16
|
||||
*/
|
||||
public interface RMpEmissionIExcessRateMMapper extends MppBaseMapper<RMpEmissionIExcessRateM> {
|
||||
|
||||
}
|
||||
@@ -0,0 +1,16 @@
|
||||
package com.njcn.prepare.harmonic.mapper.mysql.newalgorithm;
|
||||
|
||||
import com.github.jeffreyning.mybatisplus.base.MppBaseMapper;
|
||||
import com.njcn.harmonic.pojo.po.RMpEmissionIM;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* 风电场发射特性-月表/各次谐波电流含有率 Mapper 接口
|
||||
* </p>
|
||||
*
|
||||
* @author wr
|
||||
* @since 2023-10-16
|
||||
*/
|
||||
public interface RMpEmissionIMMapper extends MppBaseMapper<RMpEmissionIM> {
|
||||
|
||||
}
|
||||
@@ -0,0 +1,16 @@
|
||||
package com.njcn.prepare.harmonic.mapper.mysql.newalgorithm;
|
||||
|
||||
import com.github.jeffreyning.mybatisplus.base.MppBaseMapper;
|
||||
import com.njcn.harmonic.pojo.po.RMpEmissionM;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* 发射特性-月表 Mapper 接口
|
||||
* </p>
|
||||
*
|
||||
* @author wr
|
||||
* @since 2023-10-16
|
||||
*/
|
||||
public interface RMpEmissionMMapper extends MppBaseMapper<RMpEmissionM> {
|
||||
|
||||
}
|
||||
@@ -0,0 +1,16 @@
|
||||
package com.njcn.prepare.harmonic.mapper.mysql.newalgorithm;
|
||||
|
||||
import com.github.jeffreyning.mybatisplus.base.MppBaseMapper;
|
||||
import com.njcn.harmonic.pojo.po.RMpInfluenceM;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* 风电场影响特性-月表 Mapper 接口
|
||||
* </p>
|
||||
*
|
||||
* @author wr
|
||||
* @since 2023-10-17
|
||||
*/
|
||||
public interface RMpInfluenceMMapper extends MppBaseMapper<RMpInfluenceM> {
|
||||
|
||||
}
|
||||
@@ -0,0 +1,16 @@
|
||||
package com.njcn.prepare.harmonic.mapper.mysql.newalgorithm;
|
||||
|
||||
import com.github.jeffreyning.mybatisplus.base.MppBaseMapper;
|
||||
import com.njcn.harmonic.pojo.po.RMpInfluenceVExcessRateM;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* 风电场影响特性-月表/各次谐波电压超标占比 Mapper 接口
|
||||
* </p>
|
||||
*
|
||||
* @author wr
|
||||
* @since 2023-10-17
|
||||
*/
|
||||
public interface RMpInfluenceVExcessRateMMapper extends MppBaseMapper<RMpInfluenceVExcessRateM> {
|
||||
|
||||
}
|
||||
@@ -0,0 +1,16 @@
|
||||
package com.njcn.prepare.harmonic.mapper.mysql.newalgorithm;
|
||||
|
||||
import com.github.jeffreyning.mybatisplus.base.MppBaseMapper;
|
||||
import com.njcn.harmonic.pojo.po.RMpInfluenceVM;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* 风电场影响特性-月表/各次谐波电压含有率 Mapper 接口
|
||||
* </p>
|
||||
*
|
||||
* @author wr
|
||||
* @since 2023-10-17
|
||||
*/
|
||||
public interface RMpInfluenceVMMapper extends MppBaseMapper<RMpInfluenceVM> {
|
||||
|
||||
}
|
||||
@@ -0,0 +1,5 @@
|
||||
<?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.newalgorithm.RMpEmissionIExcessRateMMapper">
|
||||
|
||||
</mapper>
|
||||
@@ -0,0 +1,5 @@
|
||||
<?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.newalgorithm.RMpEmissionIMMapper">
|
||||
|
||||
</mapper>
|
||||
@@ -0,0 +1,5 @@
|
||||
<?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.newalgorithm.RMpEmissionMMapper">
|
||||
|
||||
</mapper>
|
||||
@@ -0,0 +1,5 @@
|
||||
<?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.newalgorithm.RMpInfluenceMMapper">
|
||||
|
||||
</mapper>
|
||||
@@ -0,0 +1,5 @@
|
||||
<?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.newalgorithm.RMpInfluenceVExcessRateMMapper">
|
||||
|
||||
</mapper>
|
||||
@@ -0,0 +1,5 @@
|
||||
<?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.newalgorithm.RMpInfluenceVMMapper">
|
||||
|
||||
</mapper>
|
||||
@@ -0,0 +1,16 @@
|
||||
package com.njcn.prepare.harmonic.service.mysql.newalgorithm;
|
||||
|
||||
import com.github.jeffreyning.mybatisplus.service.IMppService;
|
||||
import com.njcn.harmonic.pojo.po.RMpEmissionIExcessRateM;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* 发射特性-月表/各次谐波电流超标占比 服务类
|
||||
* </p>
|
||||
*
|
||||
* @author wr
|
||||
* @since 2023-10-16
|
||||
*/
|
||||
public interface IRMpEmissionIExcessRateMService extends IMppService<RMpEmissionIExcessRateM> {
|
||||
|
||||
}
|
||||
@@ -0,0 +1,17 @@
|
||||
package com.njcn.prepare.harmonic.service.mysql.newalgorithm;
|
||||
|
||||
import com.github.jeffreyning.mybatisplus.service.IMppService;
|
||||
import com.njcn.harmonic.pojo.po.RMpEmissionIM;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* 发射特性-月表/各次谐波电流含有率 服务类
|
||||
* </p>
|
||||
*
|
||||
* @author wr
|
||||
* @since 2023-10-16
|
||||
*/
|
||||
public interface IRMpEmissionIMService extends IMppService<RMpEmissionIM> {
|
||||
|
||||
|
||||
}
|
||||
@@ -0,0 +1,25 @@
|
||||
package com.njcn.prepare.harmonic.service.mysql.newalgorithm;
|
||||
|
||||
import com.github.jeffreyning.mybatisplus.service.IMppService;
|
||||
import com.njcn.harmonic.pojo.po.RMpEmissionM;
|
||||
import com.njcn.prepare.harmonic.pojo.param.LineParam;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* 发射特性-月表 服务类
|
||||
* </p>
|
||||
*
|
||||
* @author wr
|
||||
* @since 2023-10-16
|
||||
*/
|
||||
public interface IRMpEmissionMService extends IMppService<RMpEmissionM> {
|
||||
|
||||
/**
|
||||
* @Description: 发射特性算法(r_mp_emission_m)
|
||||
* @param jobParam
|
||||
* @Author: wr
|
||||
* @Date: 2023/10/16 13:30
|
||||
*/
|
||||
void rMpEmissionMHandler(LineParam jobParam);
|
||||
|
||||
}
|
||||
@@ -0,0 +1,24 @@
|
||||
package com.njcn.prepare.harmonic.service.mysql.newalgorithm;
|
||||
|
||||
import com.github.jeffreyning.mybatisplus.service.IMppService;
|
||||
import com.njcn.harmonic.pojo.po.RMpInfluenceM;
|
||||
import com.njcn.prepare.harmonic.pojo.param.LineParam;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* 影响特性-月表 服务类
|
||||
* </p>
|
||||
*
|
||||
* @author wr
|
||||
* @since 2023-10-17
|
||||
*/
|
||||
public interface IRMpInfluenceMService extends IMppService<RMpInfluenceM> {
|
||||
|
||||
/**
|
||||
* @Description: 影响特性算法(r_mp_emission_m)
|
||||
* @param jobParam
|
||||
* @Author: wr
|
||||
* @Date: 2023/10/16 13:30
|
||||
*/
|
||||
void rMpInfluenceMHandler(LineParam jobParam);
|
||||
}
|
||||
@@ -0,0 +1,16 @@
|
||||
package com.njcn.prepare.harmonic.service.mysql.newalgorithm;
|
||||
|
||||
import com.github.jeffreyning.mybatisplus.service.IMppService;
|
||||
import com.njcn.harmonic.pojo.po.RMpInfluenceVExcessRateM;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* 风电场影响特性-月表/各次谐波电压超标占比 服务类
|
||||
* </p>
|
||||
*
|
||||
* @author wr
|
||||
* @since 2023-10-17
|
||||
*/
|
||||
public interface IRMpInfluenceVExcessRateMService extends IMppService<RMpInfluenceVExcessRateM> {
|
||||
|
||||
}
|
||||
@@ -0,0 +1,16 @@
|
||||
package com.njcn.prepare.harmonic.service.mysql.newalgorithm;
|
||||
|
||||
import com.github.jeffreyning.mybatisplus.service.IMppService;
|
||||
import com.njcn.harmonic.pojo.po.RMpInfluenceVM;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* 风电场影响特性-月表/各次谐波电压含有率 服务类
|
||||
* </p>
|
||||
*
|
||||
* @author wr
|
||||
* @since 2023-10-17
|
||||
*/
|
||||
public interface IRMpInfluenceVMService extends IMppService<RMpInfluenceVM> {
|
||||
|
||||
}
|
||||
@@ -0,0 +1,20 @@
|
||||
package com.njcn.prepare.harmonic.service.mysql.newalgorithm.impl;
|
||||
|
||||
import com.github.jeffreyning.mybatisplus.service.MppServiceImpl;
|
||||
import com.njcn.harmonic.pojo.po.RMpEmissionIExcessRateM;
|
||||
import com.njcn.prepare.harmonic.mapper.mysql.newalgorithm.RMpEmissionIExcessRateMMapper;
|
||||
import com.njcn.prepare.harmonic.service.mysql.newalgorithm.IRMpEmissionIExcessRateMService;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* 发射特性-月表/各次谐波电流超标占比 服务实现类
|
||||
* </p>
|
||||
*
|
||||
* @author wr
|
||||
* @since 2023-10-16
|
||||
*/
|
||||
@Service
|
||||
public class RMpEmissionIExcessRateMServiceImpl extends MppServiceImpl<RMpEmissionIExcessRateMMapper, RMpEmissionIExcessRateM> implements IRMpEmissionIExcessRateMService {
|
||||
|
||||
}
|
||||
@@ -0,0 +1,23 @@
|
||||
package com.njcn.prepare.harmonic.service.mysql.newalgorithm.impl;
|
||||
|
||||
import com.github.jeffreyning.mybatisplus.service.MppServiceImpl;
|
||||
import com.njcn.harmonic.pojo.po.RMpEmissionIM;
|
||||
import com.njcn.prepare.harmonic.mapper.mysql.newalgorithm.RMpEmissionIMMapper;
|
||||
import com.njcn.prepare.harmonic.service.mysql.newalgorithm.IRMpEmissionIMService;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* 发射特性-月表/各次谐波电流含有率 服务实现类
|
||||
* </p>
|
||||
*
|
||||
* @author wr
|
||||
* @since 2023-10-16
|
||||
*/
|
||||
@Service
|
||||
@RequiredArgsConstructor
|
||||
public class RMpEmissionIMServiceImpl extends MppServiceImpl<RMpEmissionIMMapper, RMpEmissionIM> implements IRMpEmissionIMService {
|
||||
|
||||
}
|
||||
@@ -0,0 +1,363 @@
|
||||
package com.njcn.prepare.harmonic.service.mysql.newalgorithm.impl;
|
||||
|
||||
import cn.hutool.core.collection.CollUtil;
|
||||
import cn.hutool.core.date.DateUtil;
|
||||
import cn.hutool.core.util.NumberUtil;
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.github.jeffreyning.mybatisplus.service.MppServiceImpl;
|
||||
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.device.pq.pojo.po.DeptLine;
|
||||
import com.njcn.harmonic.pojo.po.RMpEmissionIExcessRateM;
|
||||
import com.njcn.harmonic.pojo.po.RMpEmissionIM;
|
||||
import com.njcn.harmonic.pojo.po.RMpEmissionM;
|
||||
import com.njcn.harmonic.pojo.po.day.RStatDataIDPO;
|
||||
import com.njcn.harmonic.pojo.po.day.RStatLimitRateDPO;
|
||||
import com.njcn.harmonic.pojo.po.day.RStatLimitTargetDPO;
|
||||
import com.njcn.harmonic.utils.PubUtils;
|
||||
import com.njcn.prepare.harmonic.mapper.mysql.day.RStatLimitRateDMapper;
|
||||
import com.njcn.prepare.harmonic.mapper.mysql.newalgorithm.RMpEmissionIMMapper;
|
||||
import com.njcn.prepare.harmonic.mapper.mysql.newalgorithm.RMpEmissionMMapper;
|
||||
import com.njcn.prepare.harmonic.pojo.param.LineParam;
|
||||
import com.njcn.prepare.harmonic.service.mysql.day.IRStatDataIDService;
|
||||
import com.njcn.prepare.harmonic.service.mysql.newalgorithm.IRMpEmissionIExcessRateMService;
|
||||
import com.njcn.prepare.harmonic.service.mysql.newalgorithm.IRMpEmissionIMService;
|
||||
import com.njcn.prepare.harmonic.service.mysql.newalgorithm.IRMpEmissionMService;
|
||||
import com.njcn.user.api.DeptFeignClient;
|
||||
import com.njcn.user.pojo.po.Dept;
|
||||
import java.lang.reflect.Field;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Date;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.stream.Collectors;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import org.springframework.scheduling.annotation.Async;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* 发射特性-月表 服务实现类
|
||||
* </p>
|
||||
*
|
||||
* @author wr
|
||||
* @since 2023-10-16
|
||||
*/
|
||||
@Service
|
||||
@RequiredArgsConstructor
|
||||
public class RMpEmissionMServiceImpl extends MppServiceImpl<RMpEmissionMMapper, RMpEmissionM> implements IRMpEmissionMService {
|
||||
|
||||
private final CommTerminalGeneralClient commTerminalGeneralClient;
|
||||
private final DeptFeignClient deptFeignClient;
|
||||
private final IRStatDataIDService dataIVService;
|
||||
private final RStatLimitRateDMapper rStatLimitRateDMapper;
|
||||
private final IRMpEmissionIMService irMpEmissionIMService;
|
||||
private final IRMpEmissionIExcessRateMService irMpEmissionIExcessRateMService;
|
||||
|
||||
@Override
|
||||
@Async("asyncExecutor")
|
||||
@Transactional(rollbackFor = {Exception.class})
|
||||
public void rMpEmissionMHandler(LineParam jobParam) {
|
||||
List<RMpEmissionM> rMpEmissionMS = new ArrayList<>();
|
||||
List<RMpEmissionIM> rMpEmissionIMS = new ArrayList<>();
|
||||
List<RMpEmissionIExcessRateM> rMpEmissionIExcessRateMS = new ArrayList<>();
|
||||
|
||||
Dept data = deptFeignClient.getRootDept().getData();
|
||||
DeptGetLineParam deptGetLineParam = new DeptGetLineParam();
|
||||
deptGetLineParam.setDeptId(data.getId());
|
||||
List<DeptGetChildrenMoreDTO> data1 = commTerminalGeneralClient.deptGetLine(deptGetLineParam).getData();
|
||||
//监测点id
|
||||
List<String> line;
|
||||
for (DeptGetChildrenMoreDTO deptGetChildrenMoreDTO : data1) {
|
||||
line = new ArrayList<>();
|
||||
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)) {
|
||||
line.addAll(lineBaseList.stream().filter(x -> StrUtil.isNotBlank(x.getPointId())).map(LineDevGetDTO::getPointId).collect(Collectors.toList()));
|
||||
lineBaseMap.putAll(lineBaseList.stream().filter(x -> StrUtil.isNotBlank(x.getPointId()))
|
||||
.collect(Collectors.groupingBy(LineDevGetDTO::getLineTag, Collectors.mapping(LineDevGetDTO::getPointId, Collectors.toList()))));
|
||||
|
||||
}
|
||||
|
||||
|
||||
if (CollUtil.isNotEmpty(line)) {
|
||||
//获取data_I数据
|
||||
List<RStatDataIDPO> dataIDPOList = dataIVService.list(new LambdaQueryWrapper<RStatDataIDPO>().in(RStatDataIDPO::getLineId, line).eq(RStatDataIDPO::getPhaseType, "T").eq(RStatDataIDPO::getValueType, "CP95").ge(StrUtil.isNotBlank(jobParam.getBeginTime()), RStatDataIDPO::getTime, DateUtil.beginOfDay(DateUtil.parse(jobParam.getBeginTime()))).le(StrUtil.isNotBlank(jobParam.getEndTime()), RStatDataIDPO::getTime, DateUtil.endOfDay(DateUtil.parse(jobParam.getEndTime()))));
|
||||
|
||||
//获取rStatLimitRate
|
||||
List<RStatLimitRateDPO> rStatLimitRateMS = rStatLimitRateDMapper.selectList(new LambdaQueryWrapper<RStatLimitRateDPO>().in(RStatLimitRateDPO::getLineId, line).eq(RStatLimitRateDPO::getPhasicType, "T").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()))));
|
||||
|
||||
//根据监测点进行分组
|
||||
for (String key : lineBaseMap.keySet()) {
|
||||
//rMpEmissionMS
|
||||
rMpEmissionAdd(jobParam, rMpEmissionMS, deptGetChildrenMoreDTO, lineBaseMap, dataIDPOList, rStatLimitRateMS, key);
|
||||
//rMpEmissionIMS
|
||||
rMpEmissionIAdd(jobParam, rMpEmissionIMS, deptGetChildrenMoreDTO, lineBaseMap, rStatLimitRateMS, key);
|
||||
//rMpEmissionIExcessRateMS
|
||||
rMpEmissionIExcessRateAdd(jobParam, rMpEmissionIExcessRateMS, deptGetChildrenMoreDTO, lineBaseMap, rStatLimitRateMS, key);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
if (CollUtil.isNotEmpty(rMpEmissionMS)) {
|
||||
this.saveOrUpdateBatchByMultiId(rMpEmissionMS, 500);
|
||||
}
|
||||
if (CollUtil.isNotEmpty(rMpEmissionIMS)) {
|
||||
irMpEmissionIMService.saveOrUpdateBatchByMultiId(rMpEmissionIMS, 500);
|
||||
}
|
||||
if (CollUtil.isNotEmpty(rMpEmissionIExcessRateMS)) {
|
||||
irMpEmissionIExcessRateMService.saveOrUpdateBatchByMultiId(rMpEmissionIExcessRateMS, 500);
|
||||
}
|
||||
}
|
||||
|
||||
private void rMpEmissionIExcessRateAdd(LineParam jobParam, List<RMpEmissionIExcessRateM> rMpEmissionIExcessRateMS, DeptGetChildrenMoreDTO deptGetChildrenMoreDTO, Map<String, List<String>> lineBaseMap, List<RStatLimitRateDPO> rStatLimitRateMS, String key) {
|
||||
RMpEmissionIExcessRateM rMpEmissionIExcessRateM = new RMpEmissionIExcessRateM();
|
||||
rMpEmissionIExcessRateM.setMonitorTag(key);
|
||||
rMpEmissionIExcessRateM.setOrgNo(deptGetChildrenMoreDTO.getUnitId());
|
||||
rMpEmissionIExcessRateM.setDataDate(DateUtil.parse(jobParam.getDataDate()));
|
||||
|
||||
//获取监测点
|
||||
List<String> lineIds = lineBaseMap.get(key);
|
||||
List<RStatLimitRateDPO> rStatLimitRateDPOS = rStatLimitRateMS.stream().filter(x -> lineIds.contains(x.getLineId())).collect(Collectors.toList());
|
||||
|
||||
if (CollUtil.isNotEmpty(rStatLimitRateDPOS)) {
|
||||
rMpEmissionIExcessRateM.setIExcessRate2(iExcessRateI(rStatLimitRateDPOS,"iharm2Overtime","allTime"));
|
||||
rMpEmissionIExcessRateM.setIExcessRate3(iExcessRateI(rStatLimitRateDPOS,"iharm3Overtime","allTime"));
|
||||
rMpEmissionIExcessRateM.setIExcessRate4(iExcessRateI(rStatLimitRateDPOS,"iharm4Overtime","allTime"));
|
||||
rMpEmissionIExcessRateM.setIExcessRate5(iExcessRateI(rStatLimitRateDPOS,"iharm5Overtime","allTime"));
|
||||
rMpEmissionIExcessRateM.setIExcessRate6(iExcessRateI(rStatLimitRateDPOS,"iharm6Overtime","allTime"));
|
||||
rMpEmissionIExcessRateM.setIExcessRate7(iExcessRateI(rStatLimitRateDPOS,"iharm7Overtime","allTime"));
|
||||
rMpEmissionIExcessRateM.setIExcessRate8(iExcessRateI(rStatLimitRateDPOS,"iharm8Overtime","allTime"));
|
||||
rMpEmissionIExcessRateM.setIExcessRate9(iExcessRateI(rStatLimitRateDPOS,"iharm9Overtime","allTime"));
|
||||
rMpEmissionIExcessRateM.setIExcessRate10(iExcessRateI(rStatLimitRateDPOS,"iharm10Overtime","allTime"));
|
||||
rMpEmissionIExcessRateM.setIExcessRate11(iExcessRateI(rStatLimitRateDPOS,"iharm11Overtime","allTime"));
|
||||
rMpEmissionIExcessRateM.setIExcessRate12(iExcessRateI(rStatLimitRateDPOS,"iharm12Overtime","allTime"));
|
||||
rMpEmissionIExcessRateM.setIExcessRate13(iExcessRateI(rStatLimitRateDPOS,"iharm13Overtime","allTime"));
|
||||
rMpEmissionIExcessRateM.setIExcessRate14(iExcessRateI(rStatLimitRateDPOS,"iharm14Overtime","allTime"));
|
||||
rMpEmissionIExcessRateM.setIExcessRate15(iExcessRateI(rStatLimitRateDPOS,"iharm15Overtime","allTime"));
|
||||
rMpEmissionIExcessRateM.setIExcessRate16(iExcessRateI(rStatLimitRateDPOS,"iharm16Overtime","allTime"));
|
||||
rMpEmissionIExcessRateM.setIExcessRate17(iExcessRateI(rStatLimitRateDPOS,"iharm17Overtime","allTime"));
|
||||
rMpEmissionIExcessRateM.setIExcessRate18(iExcessRateI(rStatLimitRateDPOS,"iharm18Overtime","allTime"));
|
||||
rMpEmissionIExcessRateM.setIExcessRate19(iExcessRateI(rStatLimitRateDPOS,"iharm19Overtime","allTime"));
|
||||
rMpEmissionIExcessRateM.setIExcessRate20(iExcessRateI(rStatLimitRateDPOS,"iharm20Overtime","allTime"));
|
||||
rMpEmissionIExcessRateM.setIExcessRate21(iExcessRateI(rStatLimitRateDPOS,"iharm21Overtime","allTime"));
|
||||
rMpEmissionIExcessRateM.setIExcessRate22(iExcessRateI(rStatLimitRateDPOS,"iharm22Overtime","allTime"));
|
||||
rMpEmissionIExcessRateM.setIExcessRate23(iExcessRateI(rStatLimitRateDPOS,"iharm23Overtime","allTime"));
|
||||
rMpEmissionIExcessRateM.setIExcessRate24(iExcessRateI(rStatLimitRateDPOS,"iharm24Overtime","allTime"));
|
||||
rMpEmissionIExcessRateM.setIExcessRate25(iExcessRateI(rStatLimitRateDPOS,"iharm25Overtime","allTime"));
|
||||
} else {
|
||||
rMpEmissionIExcessRateM.setIExcessRate2(0.0);
|
||||
rMpEmissionIExcessRateM.setIExcessRate3(0.0);
|
||||
rMpEmissionIExcessRateM.setIExcessRate4(0.0);
|
||||
rMpEmissionIExcessRateM.setIExcessRate5(0.0);
|
||||
rMpEmissionIExcessRateM.setIExcessRate6(0.0);
|
||||
rMpEmissionIExcessRateM.setIExcessRate7(0.0);
|
||||
rMpEmissionIExcessRateM.setIExcessRate8(0.0);
|
||||
rMpEmissionIExcessRateM.setIExcessRate9(0.0);
|
||||
rMpEmissionIExcessRateM.setIExcessRate10(0.0);
|
||||
rMpEmissionIExcessRateM.setIExcessRate11(0.0);
|
||||
rMpEmissionIExcessRateM.setIExcessRate12(0.0);
|
||||
rMpEmissionIExcessRateM.setIExcessRate13(0.0);
|
||||
rMpEmissionIExcessRateM.setIExcessRate14(0.0);
|
||||
rMpEmissionIExcessRateM.setIExcessRate15(0.0);
|
||||
rMpEmissionIExcessRateM.setIExcessRate16(0.0);
|
||||
rMpEmissionIExcessRateM.setIExcessRate17(0.0);
|
||||
rMpEmissionIExcessRateM.setIExcessRate18(0.0);
|
||||
rMpEmissionIExcessRateM.setIExcessRate19(0.0);
|
||||
rMpEmissionIExcessRateM.setIExcessRate20(0.0);
|
||||
rMpEmissionIExcessRateM.setIExcessRate21(0.0);
|
||||
rMpEmissionIExcessRateM.setIExcessRate22(0.0);
|
||||
rMpEmissionIExcessRateM.setIExcessRate23(0.0);
|
||||
rMpEmissionIExcessRateM.setIExcessRate24(0.0);
|
||||
rMpEmissionIExcessRateM.setIExcessRate25(0.0);
|
||||
|
||||
}
|
||||
rMpEmissionIExcessRateMS.add(rMpEmissionIExcessRateM);
|
||||
}
|
||||
|
||||
private void rMpEmissionIAdd(LineParam jobParam, List<RMpEmissionIM> rMpEmissionIMS, DeptGetChildrenMoreDTO deptGetChildrenMoreDTO, Map<String, List<String>> lineBaseMap, List<RStatLimitRateDPO> rStatLimitRateMS, String key) {
|
||||
RMpEmissionIM rMpEmissionIM = new RMpEmissionIM();
|
||||
rMpEmissionIM.setMonitorTag(key);
|
||||
rMpEmissionIM.setOrgNo(deptGetChildrenMoreDTO.getUnitId());
|
||||
rMpEmissionIM.setDataDate(DateUtil.parse(jobParam.getDataDate()));
|
||||
//获取监测点
|
||||
List<String> lineIds = lineBaseMap.get(key);
|
||||
List<RStatLimitRateDPO> rStatLimitRateDPOS = rStatLimitRateMS.stream().filter(x -> lineIds.contains(x.getLineId())).collect(Collectors.toList());
|
||||
if (CollUtil.isNotEmpty(rStatLimitRateDPOS)) {
|
||||
rMpEmissionIM.setIRate2(iRateI(rStatLimitRateDPOS, "iharm2Overtime"));
|
||||
rMpEmissionIM.setIRate3(iRateI(rStatLimitRateDPOS, "iharm3Overtime"));
|
||||
rMpEmissionIM.setIRate4(iRateI(rStatLimitRateDPOS, "iharm4Overtime"));
|
||||
rMpEmissionIM.setIRate5(iRateI(rStatLimitRateDPOS, "iharm5Overtime"));
|
||||
rMpEmissionIM.setIRate6(iRateI(rStatLimitRateDPOS, "iharm6Overtime"));
|
||||
rMpEmissionIM.setIRate7(iRateI(rStatLimitRateDPOS, "iharm7Overtime"));
|
||||
rMpEmissionIM.setIRate8(iRateI(rStatLimitRateDPOS, "iharm8Overtime"));
|
||||
rMpEmissionIM.setIRate9(iRateI(rStatLimitRateDPOS, "iharm9Overtime"));
|
||||
rMpEmissionIM.setIRate10(iRateI(rStatLimitRateDPOS, "iharm10Overtime"));
|
||||
rMpEmissionIM.setIRate11(iRateI(rStatLimitRateDPOS, "iharm11Overtime"));
|
||||
rMpEmissionIM.setIRate12(iRateI(rStatLimitRateDPOS, "iharm12Overtime"));
|
||||
rMpEmissionIM.setIRate13(iRateI(rStatLimitRateDPOS, "iharm13Overtime"));
|
||||
rMpEmissionIM.setIRate14(iRateI(rStatLimitRateDPOS, "iharm14Overtime"));
|
||||
rMpEmissionIM.setIRate15(iRateI(rStatLimitRateDPOS, "iharm15Overtime"));
|
||||
rMpEmissionIM.setIRate16(iRateI(rStatLimitRateDPOS, "iharm16Overtime"));
|
||||
rMpEmissionIM.setIRate17(iRateI(rStatLimitRateDPOS, "iharm17Overtime"));
|
||||
rMpEmissionIM.setIRate18(iRateI(rStatLimitRateDPOS, "iharm18Overtime"));
|
||||
rMpEmissionIM.setIRate19(iRateI(rStatLimitRateDPOS, "iharm19Overtime"));
|
||||
rMpEmissionIM.setIRate20(iRateI(rStatLimitRateDPOS, "iharm20Overtime"));
|
||||
rMpEmissionIM.setIRate21(iRateI(rStatLimitRateDPOS, "iharm21Overtime"));
|
||||
rMpEmissionIM.setIRate22(iRateI(rStatLimitRateDPOS, "iharm22Overtime"));
|
||||
rMpEmissionIM.setIRate23(iRateI(rStatLimitRateDPOS, "iharm23Overtime"));
|
||||
rMpEmissionIM.setIRate24(iRateI(rStatLimitRateDPOS, "iharm24Overtime"));
|
||||
rMpEmissionIM.setIRate25(iRateI(rStatLimitRateDPOS, "iharm25Overtime"));
|
||||
} else {
|
||||
rMpEmissionIM.setIRate2(0.0);
|
||||
rMpEmissionIM.setIRate3(0.0);
|
||||
rMpEmissionIM.setIRate4(0.0);
|
||||
rMpEmissionIM.setIRate5(0.0);
|
||||
rMpEmissionIM.setIRate6(0.0);
|
||||
rMpEmissionIM.setIRate7(0.0);
|
||||
rMpEmissionIM.setIRate8(0.0);
|
||||
rMpEmissionIM.setIRate9(0.0);
|
||||
rMpEmissionIM.setIRate10(0.0);
|
||||
rMpEmissionIM.setIRate11(0.0);
|
||||
rMpEmissionIM.setIRate12(0.0);
|
||||
rMpEmissionIM.setIRate13(0.0);
|
||||
rMpEmissionIM.setIRate14(0.0);
|
||||
rMpEmissionIM.setIRate15(0.0);
|
||||
rMpEmissionIM.setIRate16(0.0);
|
||||
rMpEmissionIM.setIRate17(0.0);
|
||||
rMpEmissionIM.setIRate18(0.0);
|
||||
rMpEmissionIM.setIRate19(0.0);
|
||||
rMpEmissionIM.setIRate20(0.0);
|
||||
rMpEmissionIM.setIRate21(0.0);
|
||||
rMpEmissionIM.setIRate22(0.0);
|
||||
rMpEmissionIM.setIRate23(0.0);
|
||||
rMpEmissionIM.setIRate24(0.0);
|
||||
rMpEmissionIM.setIRate25(0.0);
|
||||
}
|
||||
rMpEmissionIMS.add(rMpEmissionIM);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param jobParam 查询参数
|
||||
* @param rMpEmissionMS 对象
|
||||
* @param deptGetChildrenMoreDTO 部门监测点对象
|
||||
* @param lineBaseMap 监测点id-监测点标签
|
||||
* @param dataIDPOList
|
||||
* @param rStatLimitRateMS
|
||||
* @param key
|
||||
* @Description: 发电特性对象赋值
|
||||
* @Author: wr
|
||||
* @Date: 2023/10/17 11:18
|
||||
*/
|
||||
private void rMpEmissionAdd(LineParam jobParam, List<RMpEmissionM> rMpEmissionMS, DeptGetChildrenMoreDTO deptGetChildrenMoreDTO, Map<String, List<String>> lineBaseMap, List<RStatDataIDPO> dataIDPOList, List<RStatLimitRateDPO> rStatLimitRateMS, String key) {
|
||||
RMpEmissionM rMpEmissionM = new RMpEmissionM();
|
||||
rMpEmissionM.setOrgNo(deptGetChildrenMoreDTO.getUnitId());
|
||||
rMpEmissionM.setMonitorTag(key);
|
||||
rMpEmissionM.setDataDate(DateUtil.parse(jobParam.getDataDate()));
|
||||
//获取监测点
|
||||
List<String> lineIds = lineBaseMap.get(key);
|
||||
|
||||
List<RStatDataIDPO> rStatDataIDPOS = dataIDPOList.stream().filter(x -> lineIds.contains(x.getLineId())).collect(Collectors.toList());
|
||||
//获取负序电流不平衡度
|
||||
if (CollUtil.isNotEmpty(rStatDataIDPOS)) {
|
||||
double asDouble = rStatDataIDPOS.stream().filter(x -> x.getINeg() != null).mapToDouble(RStatDataIDPO::getINeg).max().getAsDouble();
|
||||
rMpEmissionM.setNegativeSequenceCurrentUnbalance(asDouble);
|
||||
} else {
|
||||
rMpEmissionM.setNegativeSequenceCurrentUnbalance(0.0);
|
||||
}
|
||||
|
||||
List<RStatLimitRateDPO> rStatLimitRateDPOS = rStatLimitRateMS.stream().filter(x -> lineIds.contains(x.getLineId())).collect(Collectors.toList());
|
||||
//获取负序电流不平衡度平均超标天数、占比,各次谐波电流平均超标天数
|
||||
if (CollUtil.isNotEmpty(rStatLimitRateDPOS)) {
|
||||
long iNegOverDay = rStatLimitRateDPOS.stream().filter(x -> x.getINegOvertime() > 0).count();
|
||||
rMpEmissionM.setNegativeSequenceCurrentUnbalanceExcessDayAvg(iNegOverDay != 0 ? NumberUtil.round(iNegOverDay / rStatLimitRateDPOS.size() * 1.0, 2).doubleValue() : 0.0);
|
||||
//获取所有超标次数
|
||||
double sum = rStatLimitRateDPOS.stream().filter(x -> x.getINegOvertime() > 0).mapToDouble(RStatLimitRateDPO::getINegOvertime).sum();
|
||||
double allSum = rStatLimitRateDPOS.stream().filter(x -> x.getAllTime() > 0).mapToDouble(RStatLimitRateDPO::getINegOvertime).sum();
|
||||
rMpEmissionM.setNegativeSequenceCurrentUnbalanceExcessRate(sum != 0 ? NumberUtil.round(allSum / allSum * 1.0, 2).doubleValue() : 0.0);
|
||||
long uHarmDay = rStatLimitRateDPOS.stream().filter(x -> filterNotQualifiedIharmData(x)).count();
|
||||
rMpEmissionM.setIExcessDayAvg(uHarmDay != 0 ? NumberUtil.round(uHarmDay / rStatLimitRateDPOS.size() * 1.0, 2).doubleValue() : 0.0);
|
||||
} else {
|
||||
rMpEmissionM.setNegativeSequenceCurrentUnbalanceExcessDayAvg(0.0);
|
||||
rMpEmissionM.setNegativeSequenceCurrentUnbalanceExcessRate(0.0);
|
||||
rMpEmissionM.setIExcessDayAvg(0.0);
|
||||
}
|
||||
rMpEmissionMS.add(rMpEmissionM);
|
||||
}
|
||||
|
||||
|
||||
private boolean filterNotQualifiedIharmData(RStatLimitRateDPO t) {
|
||||
int i = t.getIharm2Overtime() + t.getIharm3Overtime() + t.getIharm4Overtime() + t.getIharm5Overtime() + t.getIharm6Overtime() + t.getIharm7Overtime() + t.getIharm8Overtime() + t.getIharm9Overtime() + t.getIharm10Overtime() + t.getIharm11Overtime() + t.getIharm12Overtime() + t.getIharm13Overtime() + t.getIharm14Overtime() + t.getIharm15Overtime() + t.getIharm16Overtime() + t.getIharm17Overtime() + t.getIharm18Overtime() + t.getIharm19Overtime() + t.getIharm20Overtime() + t.getIharm21Overtime() + t.getIharm22Overtime() + t.getIharm23Overtime() + t.getIharm24Overtime() + t.getIharm25Overtime();
|
||||
if (i > 0) {
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
//获取平均超标天数
|
||||
private Double iRateI(List<RStatLimitRateDPO> value, String attribute) {
|
||||
int size = value.size();
|
||||
Field field;
|
||||
try {
|
||||
field = RStatLimitRateDPO.class.getDeclaredField(attribute);
|
||||
} catch (NoSuchFieldException e) {
|
||||
throw new RuntimeException(e);
|
||||
}
|
||||
field.setAccessible(true);
|
||||
List<Integer> nums = value.stream().map(temp -> {
|
||||
Integer o;
|
||||
try {
|
||||
o = (Integer) field.get(temp);
|
||||
} catch (IllegalAccessException e) {
|
||||
throw new RuntimeException(e);
|
||||
}
|
||||
return o.intValue();
|
||||
}).collect(Collectors.toList());
|
||||
long num = nums.stream().filter(x -> x > 0).count();
|
||||
return num != 0 ? NumberUtil.round(num / size * 1.0, 2).doubleValue() : 0.0;
|
||||
}
|
||||
|
||||
private Double iExcessRateI(List<RStatLimitRateDPO> value, String attribute,String allTime) {
|
||||
Field excessRateField;
|
||||
Field allTimeField;
|
||||
try {
|
||||
excessRateField = RStatLimitRateDPO.class.getDeclaredField(attribute);
|
||||
allTimeField = RStatLimitRateDPO.class.getDeclaredField(allTime);
|
||||
} catch (NoSuchFieldException e) {
|
||||
throw new RuntimeException(e);
|
||||
}
|
||||
excessRateField.setAccessible(true);
|
||||
allTimeField.setAccessible(true);
|
||||
|
||||
List<Double> nums = value.stream().map(x->{
|
||||
Double o;
|
||||
try {
|
||||
Integer rate = (Integer) excessRateField.get(x);
|
||||
Integer num = (Integer) allTimeField.get(x);
|
||||
o= rate != 0 ? NumberUtil.round(rate / num * 1.0, 2).doubleValue() : 0.0;
|
||||
} catch (IllegalAccessException e) {
|
||||
throw new RuntimeException(e);
|
||||
}
|
||||
return o.doubleValue();
|
||||
|
||||
}).collect(Collectors.toList());
|
||||
return PubUtils.dataLimits(nums.stream().collect(Collectors.averagingDouble(Double::doubleValue))*100);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,361 @@
|
||||
package com.njcn.prepare.harmonic.service.mysql.newalgorithm.impl;
|
||||
|
||||
import cn.hutool.core.collection.CollUtil;
|
||||
import cn.hutool.core.date.DateUtil;
|
||||
import cn.hutool.core.util.NumberUtil;
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.github.jeffreyning.mybatisplus.service.MppServiceImpl;
|
||||
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.*;
|
||||
import com.njcn.harmonic.pojo.po.day.RStatDataVDPO;
|
||||
import com.njcn.harmonic.pojo.po.day.RStatLimitRateDPO;
|
||||
import com.njcn.harmonic.utils.PubUtils;
|
||||
import com.njcn.prepare.harmonic.mapper.mysql.day.RStatLimitRateDMapper;
|
||||
import com.njcn.prepare.harmonic.mapper.mysql.newalgorithm.RMpInfluenceMMapper;
|
||||
import com.njcn.prepare.harmonic.pojo.param.LineParam;
|
||||
import com.njcn.prepare.harmonic.service.mysql.day.IRStatDataVDService;
|
||||
import com.njcn.prepare.harmonic.service.mysql.newalgorithm.*;
|
||||
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 java.lang.reflect.Field;
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* 影响特性-月表 服务实现类
|
||||
* </p>
|
||||
*
|
||||
* @author wr
|
||||
* @since 2023-10-17
|
||||
*/
|
||||
@Service
|
||||
@RequiredArgsConstructor
|
||||
public class RMpInfluenceMServiceImpl extends MppServiceImpl<RMpInfluenceMMapper, RMpInfluenceM> implements IRMpInfluenceMService {
|
||||
|
||||
private final CommTerminalGeneralClient commTerminalGeneralClient;
|
||||
private final DeptFeignClient deptFeignClient;
|
||||
private final IRStatDataVDService dataVDService;
|
||||
private final RStatLimitRateDMapper rStatLimitRateDMapper;
|
||||
private final IRMpInfluenceVMService irMpInfluenceVMService;
|
||||
private final IRMpInfluenceVExcessRateMService irMpInfluenceVExcessRateMService;
|
||||
|
||||
|
||||
@Override
|
||||
@Async("asyncExecutor")
|
||||
@Transactional(rollbackFor = {Exception.class})
|
||||
public void rMpInfluenceMHandler(LineParam jobParam) {
|
||||
List<RMpInfluenceM> rMpInfluenceMS = new ArrayList<>();
|
||||
List<RMpInfluenceVM> rMpInfluenceVMS = new ArrayList<>();
|
||||
List<RMpInfluenceVExcessRateM> rMpInfluenceVExcessRateMS = new ArrayList<>();
|
||||
|
||||
Dept data = deptFeignClient.getRootDept().getData();
|
||||
DeptGetLineParam deptGetLineParam = new DeptGetLineParam();
|
||||
deptGetLineParam.setDeptId(data.getId());
|
||||
List<DeptGetChildrenMoreDTO> data1 = commTerminalGeneralClient.deptGetLine(deptGetLineParam).getData();
|
||||
//监测点id
|
||||
List<String> line;
|
||||
for (DeptGetChildrenMoreDTO deptGetChildrenMoreDTO : data1) {
|
||||
line = new ArrayList<>();
|
||||
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)) {
|
||||
line.addAll(lineBaseList.stream().filter(x -> StrUtil.isNotBlank(x.getPointId())).map(LineDevGetDTO::getPointId).collect(Collectors.toList()));
|
||||
lineBaseMap.putAll(lineBaseList.stream().filter(x -> StrUtil.isNotBlank(x.getPointId()))
|
||||
.collect(Collectors.groupingBy(LineDevGetDTO::getLineTag, Collectors.mapping(LineDevGetDTO::getPointId, Collectors.toList()))));
|
||||
|
||||
}
|
||||
|
||||
|
||||
if (CollUtil.isNotEmpty(line)) {
|
||||
//获取data_v数据
|
||||
List<RStatDataVDPO> dataVDPOList = dataVDService.list(new LambdaQueryWrapper<RStatDataVDPO>()
|
||||
.in(RStatDataVDPO::getLineId, line)
|
||||
.eq(RStatDataVDPO::getPhasicType, "T")
|
||||
.eq(RStatDataVDPO::getValueType, "CP95")
|
||||
.ge(StrUtil.isNotBlank(jobParam.getBeginTime()), RStatDataVDPO::getTime, DateUtil.beginOfDay(DateUtil.parse(jobParam.getBeginTime())))
|
||||
.le(StrUtil.isNotBlank(jobParam.getEndTime()), RStatDataVDPO::getTime, DateUtil.endOfDay(DateUtil.parse(jobParam.getEndTime())))
|
||||
);
|
||||
|
||||
//获取rStatLimitRate
|
||||
List<RStatLimitRateDPO> rStatLimitRateMS = rStatLimitRateDMapper.selectList(new LambdaQueryWrapper<RStatLimitRateDPO>().in(RStatLimitRateDPO::getLineId, line).eq(RStatLimitRateDPO::getPhasicType, "T").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()))));
|
||||
|
||||
//根据监测点进行分组
|
||||
for (String key : lineBaseMap.keySet()) {
|
||||
//rMpEmissionMS
|
||||
rMpInfluenceAdd(jobParam, rMpInfluenceMS, deptGetChildrenMoreDTO, lineBaseMap, dataVDPOList, rStatLimitRateMS, key);
|
||||
//rMpEmissionIMS
|
||||
rMpInfluenceVAdd(jobParam, rMpInfluenceVMS, deptGetChildrenMoreDTO, lineBaseMap, rStatLimitRateMS, key);
|
||||
//rMpInfluenceVExcessRateMS
|
||||
rMpInfluenceRateAdd(jobParam, rMpInfluenceVExcessRateMS, deptGetChildrenMoreDTO, lineBaseMap, rStatLimitRateMS, key);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
if (CollUtil.isNotEmpty(rMpInfluenceMS)) {
|
||||
this.saveOrUpdateBatchByMultiId(rMpInfluenceMS, 500);
|
||||
}
|
||||
if (CollUtil.isNotEmpty(rMpInfluenceVMS)) {
|
||||
irMpInfluenceVMService.saveOrUpdateBatchByMultiId(rMpInfluenceVMS, 500);
|
||||
}
|
||||
if (CollUtil.isNotEmpty(rMpInfluenceVExcessRateMS)) {
|
||||
irMpInfluenceVExcessRateMService.saveOrUpdateBatchByMultiId(rMpInfluenceVExcessRateMS, 500);
|
||||
}
|
||||
}
|
||||
|
||||
private void rMpInfluenceRateAdd(LineParam jobParam, List<RMpInfluenceVExcessRateM> rMpInfluenceVExcessRateMS, DeptGetChildrenMoreDTO deptGetChildrenMoreDTO, Map<String, List<String>> lineBaseMap, List<RStatLimitRateDPO> rStatLimitRateMS, String key) {
|
||||
RMpInfluenceVExcessRateM rMpInfluenceVExcessRateM = new RMpInfluenceVExcessRateM();
|
||||
rMpInfluenceVExcessRateM.setMonitorTag(key);
|
||||
rMpInfluenceVExcessRateM.setOrgNo(deptGetChildrenMoreDTO.getUnitId());
|
||||
rMpInfluenceVExcessRateM.setDataDate(DateUtil.parse(jobParam.getDataDate()));
|
||||
|
||||
//获取监测点
|
||||
List<String> lineIds = lineBaseMap.get(key);
|
||||
List<RStatLimitRateDPO> rStatLimitRateDPOS = rStatLimitRateMS.stream().filter(x -> lineIds.contains(x.getLineId())).collect(Collectors.toList());
|
||||
|
||||
if (CollUtil.isNotEmpty(rStatLimitRateDPOS)) {
|
||||
rMpInfluenceVExcessRateM.setVExcessRate2(iExcessRateI(rStatLimitRateDPOS,"uharm2Overtime","allTime"));
|
||||
rMpInfluenceVExcessRateM.setVExcessRate3(iExcessRateI(rStatLimitRateDPOS,"uharm3Overtime","allTime"));
|
||||
rMpInfluenceVExcessRateM.setVExcessRate4(iExcessRateI(rStatLimitRateDPOS,"uharm4Overtime","allTime"));
|
||||
rMpInfluenceVExcessRateM.setVExcessRate5(iExcessRateI(rStatLimitRateDPOS,"uharm5Overtime","allTime"));
|
||||
rMpInfluenceVExcessRateM.setVExcessRate6(iExcessRateI(rStatLimitRateDPOS,"uharm6Overtime","allTime"));
|
||||
rMpInfluenceVExcessRateM.setVExcessRate7(iExcessRateI(rStatLimitRateDPOS,"uharm7Overtime","allTime"));
|
||||
rMpInfluenceVExcessRateM.setVExcessRate8(iExcessRateI(rStatLimitRateDPOS,"uharm8Overtime","allTime"));
|
||||
rMpInfluenceVExcessRateM.setVExcessRate9(iExcessRateI(rStatLimitRateDPOS,"uharm9Overtime","allTime"));
|
||||
rMpInfluenceVExcessRateM.setVExcessRate10(iExcessRateI(rStatLimitRateDPOS,"uharm10Overtime","allTime"));
|
||||
rMpInfluenceVExcessRateM.setVExcessRate11(iExcessRateI(rStatLimitRateDPOS,"uharm11Overtime","allTime"));
|
||||
rMpInfluenceVExcessRateM.setVExcessRate12(iExcessRateI(rStatLimitRateDPOS,"uharm12Overtime","allTime"));
|
||||
rMpInfluenceVExcessRateM.setVExcessRate13(iExcessRateI(rStatLimitRateDPOS,"uharm13Overtime","allTime"));
|
||||
rMpInfluenceVExcessRateM.setVExcessRate14(iExcessRateI(rStatLimitRateDPOS,"uharm14Overtime","allTime"));
|
||||
rMpInfluenceVExcessRateM.setVExcessRate15(iExcessRateI(rStatLimitRateDPOS,"uharm15Overtime","allTime"));
|
||||
rMpInfluenceVExcessRateM.setVExcessRate16(iExcessRateI(rStatLimitRateDPOS,"uharm16Overtime","allTime"));
|
||||
rMpInfluenceVExcessRateM.setVExcessRate17(iExcessRateI(rStatLimitRateDPOS,"uharm17Overtime","allTime"));
|
||||
rMpInfluenceVExcessRateM.setVExcessRate18(iExcessRateI(rStatLimitRateDPOS,"uharm18Overtime","allTime"));
|
||||
rMpInfluenceVExcessRateM.setVExcessRate19(iExcessRateI(rStatLimitRateDPOS,"uharm19Overtime","allTime"));
|
||||
rMpInfluenceVExcessRateM.setVExcessRate20(iExcessRateI(rStatLimitRateDPOS,"uharm20Overtime","allTime"));
|
||||
rMpInfluenceVExcessRateM.setVExcessRate21(iExcessRateI(rStatLimitRateDPOS,"uharm21Overtime","allTime"));
|
||||
rMpInfluenceVExcessRateM.setVExcessRate22(iExcessRateI(rStatLimitRateDPOS,"uharm22Overtime","allTime"));
|
||||
rMpInfluenceVExcessRateM.setVExcessRate23(iExcessRateI(rStatLimitRateDPOS,"uharm23Overtime","allTime"));
|
||||
rMpInfluenceVExcessRateM.setVExcessRate24(iExcessRateI(rStatLimitRateDPOS,"uharm24Overtime","allTime"));
|
||||
rMpInfluenceVExcessRateM.setVExcessRate25(iExcessRateI(rStatLimitRateDPOS,"uharm25Overtime","allTime"));
|
||||
} else {
|
||||
rMpInfluenceVExcessRateM.setVExcessRate2(0.0);
|
||||
rMpInfluenceVExcessRateM.setVExcessRate3(0.0);
|
||||
rMpInfluenceVExcessRateM.setVExcessRate4(0.0);
|
||||
rMpInfluenceVExcessRateM.setVExcessRate5(0.0);
|
||||
rMpInfluenceVExcessRateM.setVExcessRate6(0.0);
|
||||
rMpInfluenceVExcessRateM.setVExcessRate7(0.0);
|
||||
rMpInfluenceVExcessRateM.setVExcessRate8(0.0);
|
||||
rMpInfluenceVExcessRateM.setVExcessRate9(0.0);
|
||||
rMpInfluenceVExcessRateM.setVExcessRate10(0.0);
|
||||
rMpInfluenceVExcessRateM.setVExcessRate11(0.0);
|
||||
rMpInfluenceVExcessRateM.setVExcessRate12(0.0);
|
||||
rMpInfluenceVExcessRateM.setVExcessRate13(0.0);
|
||||
rMpInfluenceVExcessRateM.setVExcessRate14(0.0);
|
||||
rMpInfluenceVExcessRateM.setVExcessRate15(0.0);
|
||||
rMpInfluenceVExcessRateM.setVExcessRate16(0.0);
|
||||
rMpInfluenceVExcessRateM.setVExcessRate17(0.0);
|
||||
rMpInfluenceVExcessRateM.setVExcessRate18(0.0);
|
||||
rMpInfluenceVExcessRateM.setVExcessRate19(0.0);
|
||||
rMpInfluenceVExcessRateM.setVExcessRate20(0.0);
|
||||
rMpInfluenceVExcessRateM.setVExcessRate21(0.0);
|
||||
rMpInfluenceVExcessRateM.setVExcessRate22(0.0);
|
||||
rMpInfluenceVExcessRateM.setVExcessRate23(0.0);
|
||||
rMpInfluenceVExcessRateM.setVExcessRate24(0.0);
|
||||
rMpInfluenceVExcessRateM.setVExcessRate25(0.0);
|
||||
|
||||
}
|
||||
rMpInfluenceVExcessRateMS.add(rMpInfluenceVExcessRateM);
|
||||
}
|
||||
|
||||
private void rMpInfluenceVAdd(LineParam jobParam, List<RMpInfluenceVM> rMpInfluenceVMS, DeptGetChildrenMoreDTO deptGetChildrenMoreDTO, Map<String, List<String>> lineBaseMap, List<RStatLimitRateDPO> rStatLimitRateMS, String key) {
|
||||
RMpInfluenceVM rMpInfluenceVM = new RMpInfluenceVM();
|
||||
rMpInfluenceVM.setMonitorTag(key);
|
||||
rMpInfluenceVM.setOrgNo(deptGetChildrenMoreDTO.getUnitId());
|
||||
rMpInfluenceVM.setDataDate(DateUtil.parse(jobParam.getDataDate()));
|
||||
//获取监测点
|
||||
List<String> lineIds = lineBaseMap.get(key);
|
||||
List<RStatLimitRateDPO> rStatLimitRateDPOS = rStatLimitRateMS.stream().filter(x -> lineIds.contains(x.getLineId())).collect(Collectors.toList());
|
||||
if (CollUtil.isNotEmpty(rStatLimitRateDPOS)) {
|
||||
rMpInfluenceVM.setVRate2(iRateV(rStatLimitRateDPOS, "uharm2Overtime"));
|
||||
rMpInfluenceVM.setVRate3(iRateV(rStatLimitRateDPOS, "uharm3Overtime"));
|
||||
rMpInfluenceVM.setVRate4(iRateV(rStatLimitRateDPOS, "uharm4Overtime"));
|
||||
rMpInfluenceVM.setVRate5(iRateV(rStatLimitRateDPOS, "uharm5Overtime"));
|
||||
rMpInfluenceVM.setVRate6(iRateV(rStatLimitRateDPOS, "uharm6Overtime"));
|
||||
rMpInfluenceVM.setVRate7(iRateV(rStatLimitRateDPOS, "uharm7Overtime"));
|
||||
rMpInfluenceVM.setVRate8(iRateV(rStatLimitRateDPOS, "uharm8Overtime"));
|
||||
rMpInfluenceVM.setVRate9(iRateV(rStatLimitRateDPOS, "uharm9Overtime"));
|
||||
rMpInfluenceVM.setVRate10(iRateV(rStatLimitRateDPOS, "uharm10Overtime"));
|
||||
rMpInfluenceVM.setVRate11(iRateV(rStatLimitRateDPOS, "uharm11Overtime"));
|
||||
rMpInfluenceVM.setVRate12(iRateV(rStatLimitRateDPOS, "uharm12Overtime"));
|
||||
rMpInfluenceVM.setVRate13(iRateV(rStatLimitRateDPOS, "uharm13Overtime"));
|
||||
rMpInfluenceVM.setVRate14(iRateV(rStatLimitRateDPOS, "uharm14Overtime"));
|
||||
rMpInfluenceVM.setVRate15(iRateV(rStatLimitRateDPOS, "uharm15Overtime"));
|
||||
rMpInfluenceVM.setVRate16(iRateV(rStatLimitRateDPOS, "uharm16Overtime"));
|
||||
rMpInfluenceVM.setVRate17(iRateV(rStatLimitRateDPOS, "uharm17Overtime"));
|
||||
rMpInfluenceVM.setVRate18(iRateV(rStatLimitRateDPOS, "uharm18Overtime"));
|
||||
rMpInfluenceVM.setVRate19(iRateV(rStatLimitRateDPOS, "uharm19Overtime"));
|
||||
rMpInfluenceVM.setVRate20(iRateV(rStatLimitRateDPOS, "uharm20Overtime"));
|
||||
rMpInfluenceVM.setVRate21(iRateV(rStatLimitRateDPOS, "uharm21Overtime"));
|
||||
rMpInfluenceVM.setVRate22(iRateV(rStatLimitRateDPOS, "uharm22Overtime"));
|
||||
rMpInfluenceVM.setVRate23(iRateV(rStatLimitRateDPOS, "uharm23Overtime"));
|
||||
rMpInfluenceVM.setVRate24(iRateV(rStatLimitRateDPOS, "uharm24Overtime"));
|
||||
rMpInfluenceVM.setVRate25(iRateV(rStatLimitRateDPOS, "uharm25Overtime"));
|
||||
} else {
|
||||
rMpInfluenceVM.setVRate2(0.0);
|
||||
rMpInfluenceVM.setVRate3(0.0);
|
||||
rMpInfluenceVM.setVRate4(0.0);
|
||||
rMpInfluenceVM.setVRate5(0.0);
|
||||
rMpInfluenceVM.setVRate6(0.0);
|
||||
rMpInfluenceVM.setVRate7(0.0);
|
||||
rMpInfluenceVM.setVRate8(0.0);
|
||||
rMpInfluenceVM.setVRate9(0.0);
|
||||
rMpInfluenceVM.setVRate10(0.0);
|
||||
rMpInfluenceVM.setVRate11(0.0);
|
||||
rMpInfluenceVM.setVRate12(0.0);
|
||||
rMpInfluenceVM.setVRate13(0.0);
|
||||
rMpInfluenceVM.setVRate14(0.0);
|
||||
rMpInfluenceVM.setVRate15(0.0);
|
||||
rMpInfluenceVM.setVRate16(0.0);
|
||||
rMpInfluenceVM.setVRate17(0.0);
|
||||
rMpInfluenceVM.setVRate18(0.0);
|
||||
rMpInfluenceVM.setVRate19(0.0);
|
||||
rMpInfluenceVM.setVRate20(0.0);
|
||||
rMpInfluenceVM.setVRate21(0.0);
|
||||
rMpInfluenceVM.setVRate22(0.0);
|
||||
rMpInfluenceVM.setVRate23(0.0);
|
||||
rMpInfluenceVM.setVRate24(0.0);
|
||||
rMpInfluenceVM.setVRate25(0.0);
|
||||
}
|
||||
rMpInfluenceVMS.add(rMpInfluenceVM);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param jobParam 查询参数
|
||||
* @param rMpEmissionMS 对象
|
||||
* @param deptGetChildrenMoreDTO 部门监测点对象
|
||||
* @param lineBaseMap 监测点id-监测点标签
|
||||
* @param dataVDPOList
|
||||
* @param rStatLimitRateMS
|
||||
* @param key
|
||||
* @Description: 发电特性对象赋值
|
||||
* @Author: wr
|
||||
* @Date: 2023/10/17 11:18
|
||||
*/
|
||||
private void rMpInfluenceAdd(LineParam jobParam, List<RMpInfluenceM> rMpEmissionMS, DeptGetChildrenMoreDTO deptGetChildrenMoreDTO, Map<String, List<String>> lineBaseMap, List<RStatDataVDPO> dataVDPOList, List<RStatLimitRateDPO> rStatLimitRateMS, String key) {
|
||||
RMpInfluenceM rMpInfluenceM = new RMpInfluenceM();
|
||||
rMpInfluenceM.setOrgNo(deptGetChildrenMoreDTO.getUnitId());
|
||||
rMpInfluenceM.setMonitorTag(key);
|
||||
rMpInfluenceM.setDataDate(DateUtil.parse(jobParam.getDataDate()));
|
||||
|
||||
//获取监测点
|
||||
List<String> lineIds = lineBaseMap.get(key);
|
||||
|
||||
List<RStatDataVDPO> rStatDataVDPOS = dataVDPOList.stream().filter(x -> lineIds.contains(x.getLineId())).collect(Collectors.toList());
|
||||
//获取负序电流不平衡度
|
||||
if (CollUtil.isNotEmpty(rStatDataVDPOS)) {
|
||||
double asDouble = rStatDataVDPOS.stream().filter(x -> x.getVNeg() != null).mapToDouble(RStatDataVDPO::getVNeg).max().getAsDouble();
|
||||
rMpInfluenceM.setNegativeSequenceVoltageUnbalance(asDouble);
|
||||
} else {
|
||||
rMpInfluenceM.setNegativeSequenceVoltageUnbalance(0.0);
|
||||
}
|
||||
|
||||
List<RStatLimitRateDPO> rStatLimitRateDPOS = rStatLimitRateMS.stream().filter(x -> lineIds.contains(x.getLineId())).collect(Collectors.toList());
|
||||
//获取负序电流不平衡度平均超标天数、占比,各次谐波电流平均超标天数
|
||||
if (CollUtil.isNotEmpty(rStatLimitRateDPOS)) {
|
||||
long iNegOverDay = rStatLimitRateDPOS.stream().filter(x -> x.getVoltageDevOvertime() > 0).count();
|
||||
rMpInfluenceM.setNegativeSequenceVoltageUnbalanceExcessDayAvg(iNegOverDay != 0 ? NumberUtil.round(iNegOverDay / rStatLimitRateDPOS.size() * 1.0, 2).doubleValue() : 0.0);
|
||||
//获取所有超标次数
|
||||
double sum = rStatLimitRateDPOS.stream().filter(x -> x.getVoltageDevOvertime() > 0).mapToDouble(RStatLimitRateDPO::getVoltageDevOvertime).sum();
|
||||
double allSum = rStatLimitRateDPOS.stream().filter(x -> x.getAllTime() > 0).mapToDouble(RStatLimitRateDPO::getVoltageDevOvertime).sum();
|
||||
rMpInfluenceM.setNegativeSequenceVoltageUnbalanceExcessRate(sum != 0 ? NumberUtil.round(allSum / allSum * 1.0, 2).doubleValue() : 0.0);
|
||||
long uHarmDay = rStatLimitRateDPOS.stream().filter(x -> filterNotQualifiedUharmData(x)).count();
|
||||
rMpInfluenceM.setVExcessDayAvg(uHarmDay != 0 ? NumberUtil.round(uHarmDay / rStatLimitRateDPOS.size() * 1.0, 2).doubleValue() : 0.0);
|
||||
} else {
|
||||
rMpInfluenceM.setNegativeSequenceVoltageUnbalanceExcessDayAvg(0.0);
|
||||
rMpInfluenceM.setNegativeSequenceVoltageUnbalanceExcessRate(0.0);
|
||||
rMpInfluenceM.setVExcessDayAvg(0.0);
|
||||
}
|
||||
rMpEmissionMS.add(rMpInfluenceM);
|
||||
}
|
||||
|
||||
|
||||
private boolean filterNotQualifiedUharmData(RStatLimitRateDPO t) {
|
||||
if (t.getUharm2Overtime() != 0 || t.getUharm3Overtime() != 0 || t.getUharm4Overtime() != 0 || t.getUharm5Overtime() != 0 || t.getUharm6Overtime() != 0 || t.getUharm7Overtime() != 0 || t.getUharm8Overtime() != 0 || t.getUharm9Overtime() != 0 || t.getUharm10Overtime() != 0 || t.getUharm11Overtime() != 0 || t.getUharm12Overtime() != 0 || t.getUharm13Overtime() != 0 || t.getUharm14Overtime() != 0 || t.getUharm15Overtime() != 0 || t.getUharm16Overtime() != 0 || t.getUharm17Overtime() != 0 || t.getUharm18Overtime() != 0 || t.getUharm19Overtime() != 0 || t.getUharm20Overtime() != 0 || t.getUharm21Overtime() != 0 || t.getUharm22Overtime() != 0 || t.getUharm23Overtime() != 0 || t.getUharm24Overtime() != 0 || t.getUharm25Overtime() != 0) {
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
//获取平均超标天数
|
||||
private Double iRateV(List<RStatLimitRateDPO> value, String attribute) {
|
||||
int size = value.size();
|
||||
Field field;
|
||||
try {
|
||||
field = RStatLimitRateDPO.class.getDeclaredField(attribute);
|
||||
} catch (NoSuchFieldException e) {
|
||||
throw new RuntimeException(e);
|
||||
}
|
||||
field.setAccessible(true);
|
||||
List<Integer> nums = value.stream().map(temp -> {
|
||||
Integer o;
|
||||
try {
|
||||
o = (Integer) field.get(temp);
|
||||
} catch (IllegalAccessException e) {
|
||||
throw new RuntimeException(e);
|
||||
}
|
||||
return o.intValue();
|
||||
}).collect(Collectors.toList());
|
||||
long num = nums.stream().filter(x -> x > 0).count();
|
||||
return num != 0 ? NumberUtil.round(num / size * 1.0, 2).doubleValue() : 0.0;
|
||||
}
|
||||
|
||||
private Double iExcessRateI(List<RStatLimitRateDPO> value, String attribute,String allTime) {
|
||||
Field excessRateField;
|
||||
Field allTimeField;
|
||||
try {
|
||||
excessRateField = RStatLimitRateDPO.class.getDeclaredField(attribute);
|
||||
allTimeField = RStatLimitRateDPO.class.getDeclaredField(allTime);
|
||||
} catch (NoSuchFieldException e) {
|
||||
throw new RuntimeException(e);
|
||||
}
|
||||
excessRateField.setAccessible(true);
|
||||
allTimeField.setAccessible(true);
|
||||
|
||||
List<Double> nums = value.stream().map(x->{
|
||||
Double o;
|
||||
try {
|
||||
Integer rate = (Integer) excessRateField.get(x);
|
||||
Integer num = (Integer) allTimeField.get(x);
|
||||
o= rate != 0 ? NumberUtil.round(rate / num * 1.0, 2).doubleValue() : 0.0;
|
||||
} catch (IllegalAccessException e) {
|
||||
throw new RuntimeException(e);
|
||||
}
|
||||
return o.doubleValue();
|
||||
|
||||
}).collect(Collectors.toList());
|
||||
return PubUtils.dataLimits(nums.stream().collect(Collectors.averagingDouble(Double::doubleValue))*100);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,20 @@
|
||||
package com.njcn.prepare.harmonic.service.mysql.newalgorithm.impl;
|
||||
|
||||
import com.github.jeffreyning.mybatisplus.service.MppServiceImpl;
|
||||
import com.njcn.harmonic.pojo.po.RMpInfluenceVExcessRateM;
|
||||
import com.njcn.prepare.harmonic.mapper.mysql.newalgorithm.RMpInfluenceVExcessRateMMapper;
|
||||
import com.njcn.prepare.harmonic.service.mysql.newalgorithm.IRMpInfluenceVExcessRateMService;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* 风电场影响特性-月表/各次谐波电压超标占比 服务实现类
|
||||
* </p>
|
||||
*
|
||||
* @author wr
|
||||
* @since 2023-10-17
|
||||
*/
|
||||
@Service
|
||||
public class RMpInfluenceVExcessRateMServiceImpl extends MppServiceImpl<RMpInfluenceVExcessRateMMapper, RMpInfluenceVExcessRateM> implements IRMpInfluenceVExcessRateMService {
|
||||
|
||||
}
|
||||
@@ -0,0 +1,20 @@
|
||||
package com.njcn.prepare.harmonic.service.mysql.newalgorithm.impl;
|
||||
|
||||
import com.github.jeffreyning.mybatisplus.service.MppServiceImpl;
|
||||
import com.njcn.harmonic.pojo.po.RMpInfluenceVM;
|
||||
import com.njcn.prepare.harmonic.mapper.mysql.newalgorithm.RMpInfluenceVMMapper;
|
||||
import com.njcn.prepare.harmonic.service.mysql.newalgorithm.IRMpInfluenceVMService;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* 风电场影响特性-月表/各次谐波电压含有率 服务实现类
|
||||
* </p>
|
||||
*
|
||||
* @author wr
|
||||
* @since 2023-10-17
|
||||
*/
|
||||
@Service
|
||||
public class RMpInfluenceVMServiceImpl extends MppServiceImpl<RMpInfluenceVMMapper, RMpInfluenceVM> implements IRMpInfluenceVMService {
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user