diff --git a/pqs-device/pq-device/pq-device-api/src/main/java/com/njcn/device/pq/pojo/po/RStatIntegrityD.java b/pqs-device/pq-device/pq-device-api/src/main/java/com/njcn/device/pq/pojo/po/RStatIntegrityD.java index a640476b7..17719b516 100644 --- a/pqs-device/pq-device/pq-device-api/src/main/java/com/njcn/device/pq/pojo/po/RStatIntegrityD.java +++ b/pqs-device/pq-device/pq-device-api/src/main/java/com/njcn/device/pq/pojo/po/RStatIntegrityD.java @@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.annotation.TableName; import com.github.jeffreyning.mybatisplus.anno.MppMultiId; import com.njcn.db.bo.BaseEntity; import java.io.Serializable; +import java.time.LocalDate; import java.time.LocalDateTime; import lombok.Data; @@ -27,7 +28,7 @@ public class RStatIntegrityD { private static final long serialVersionUID = 1L; @MppMultiId - private LocalDateTime timeId; + private LocalDate timeId; @MppMultiId private String lineIndex; diff --git a/pqs-gateway/src/main/resources/bootstrap.yml b/pqs-gateway/src/main/resources/bootstrap.yml index 5bd71af23..7bb87ba0f 100644 --- a/pqs-gateway/src/main/resources/bootstrap.yml +++ b/pqs-gateway/src/main/resources/bootstrap.yml @@ -180,7 +180,7 @@ logging: whitelist: urls: -# - /** + - /** - /user-boot/user/generateSm2Key - /user-boot/theme/getTheme - /user-boot/user/updateFirstPassword diff --git a/pqs-harmonic/harmonic-api/src/main/java/com/njcn/harmonic/pojo/po/day/RStatLimitRateDPO.java b/pqs-harmonic/harmonic-api/src/main/java/com/njcn/harmonic/pojo/po/day/RStatLimitRateDPO.java index 226f6eaf8..341ecc789 100644 --- a/pqs-harmonic/harmonic-api/src/main/java/com/njcn/harmonic/pojo/po/day/RStatLimitRateDPO.java +++ b/pqs-harmonic/harmonic-api/src/main/java/com/njcn/harmonic/pojo/po/day/RStatLimitRateDPO.java @@ -8,7 +8,7 @@ import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; -import java.util.Date; +import java.time.LocalDate; @Data @AllArgsConstructor @@ -34,8 +34,8 @@ public class RStatLimitRateDPO { */ @MppMultiId @TableField(value = "time_id") - @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone="GMT+8") - private Date time; + @JsonFormat(pattern = "yyyy-MM-dd",timezone="GMT+8") + private LocalDate time; /** * 总计算次数 diff --git a/pqs-influx/src/main/java/com/njcn/influx/imapper/DataVMapper.java b/pqs-influx/src/main/java/com/njcn/influx/imapper/DataVMapper.java index 6dced26e7..38184a2ca 100644 --- a/pqs-influx/src/main/java/com/njcn/influx/imapper/DataVMapper.java +++ b/pqs-influx/src/main/java/com/njcn/influx/imapper/DataVMapper.java @@ -1,6 +1,7 @@ package com.njcn.influx.imapper; import com.njcn.influx.base.InfluxDbBaseMapper; +import com.njcn.influx.pojo.bo.MeasurementCount; import com.njcn.influx.pojo.po.DataV; import com.njcn.influx.query.InfluxQueryWrapper; @@ -18,4 +19,6 @@ public interface DataVMapper extends InfluxDbBaseMapper { List getStatisticsByWraper(InfluxQueryWrapper influxQueryWrapper); + List getMeasurementCount(InfluxQueryWrapper influxQueryWrapper); + } diff --git a/pqs-influx/src/main/java/com/njcn/influx/pojo/bo/MeasurementCount.java b/pqs-influx/src/main/java/com/njcn/influx/pojo/bo/MeasurementCount.java new file mode 100644 index 000000000..35b2fac32 --- /dev/null +++ b/pqs-influx/src/main/java/com/njcn/influx/pojo/bo/MeasurementCount.java @@ -0,0 +1,33 @@ +package com.njcn.influx.pojo.bo; + +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.njcn.common.utils.serializer.InstantDateSerializer; +import lombok.Data; +import org.influxdb.annotation.Column; +import org.influxdb.annotation.Measurement; + +import java.io.Serializable; +import java.time.Instant; + +/** + * 类的介绍: + * + * @author xuyang + * @version 1.0.0 + * @createTime 2023/11/10 16:17 + */ +@Data +@Measurement(name = "data_v") +public class MeasurementCount implements Serializable { + + @Column(name = "time") + @JsonSerialize(using = InstantDateSerializer.class) + private Instant time; + + @Column(name = "line_id") + private String lineId; + + @Column(name = "freq") + private String freq; + +} diff --git a/pqs-influx/src/main/java/com/njcn/influx/pojo/constant/InfluxDBTableConstant.java b/pqs-influx/src/main/java/com/njcn/influx/pojo/constant/InfluxDBTableConstant.java index 5275833b8..21358dc9e 100644 --- a/pqs-influx/src/main/java/com/njcn/influx/pojo/constant/InfluxDBTableConstant.java +++ b/pqs-influx/src/main/java/com/njcn/influx/pojo/constant/InfluxDBTableConstant.java @@ -185,5 +185,16 @@ public interface InfluxDBTableConstant { String AVG = "AVG"; String CP95 = "CP95"; + /** + * 每天固定时间分钟 + */ + Integer DAY_MINUTE = 1440; + + /** + * 数据是否正常 0:正常 1:异常 + */ + String NORMAL = "0"; + String UN_NORMAL = "1"; + } diff --git a/pqs-prepare/prepare-boot/pom.xml b/pqs-prepare/prepare-boot/pom.xml index 6dddeea32..12018df7f 100644 --- a/pqs-prepare/prepare-boot/pom.xml +++ b/pqs-prepare/prepare-boot/pom.xml @@ -111,12 +111,23 @@ liteflow-spring-boot-starter 2.11.2 + + com.njcn + event-api + 1.0.0 + compile + com.yomahub liteflow-rule-nacos 2.11.2 + + + + + diff --git a/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/executor/MeasurementExecutor.java b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/executor/MeasurementExecutor.java index f655ca4e5..0efaa373a 100644 --- a/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/executor/MeasurementExecutor.java +++ b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/executor/MeasurementExecutor.java @@ -24,20 +24,19 @@ import lombok.RequiredArgsConstructor; public class MeasurementExecutor extends BaseExecutor { private final RMpMonitorEvaluateDService rMpMonitorEvaluateDService; - private final RMpEventDetailService rMpEventDetailService; - private final RMpEventDetailDService rMpEventDetailDService; - private final DayDataService dayDataService; - private final RStatAbnormalDService rStatAbnormalDService; private final ROperatingMonitorService rOperatingMonitorService; - private final ROperatingMonitorMService rOperatingMonitorMService; + private final IntegrityService integrityService; private final RMpPassRateDService rMpPassRateDService; + private final LimitRateService limitRateService; + private final LimitTargetService limitTargetService; + /** * 算法名: 3.3.1.1-----监测点评价 @@ -81,20 +80,6 @@ public class MeasurementExecutor extends BaseExecutor { } } - /** - * 算法名: 3.4.1.1-----监测点报表_日表 - * - * @author xuyang - * @date 2023年11月09日 10:08 - */ - @LiteflowMethod(value = LiteFlowMethodEnum.IS_ACCESS, nodeId = "dataToDay", nodeType = NodeTypeEnum.COMMON) - public boolean dataToDayAccess(NodeComponent bindCmp) { - return isAccess(bindCmp); - } - @LiteflowMethod(value = LiteFlowMethodEnum.PROCESS, nodeId = "dataToDay", nodeType = NodeTypeEnum.COMMON) - public void dataToDayProcess(NodeComponent bindCmp) { - dayDataService.dataToDayHandler(bindCmp.getRequestData()); - } /** * 3.3.1.2. 监测点数据异常_日表 * @param bindCmp @@ -169,4 +154,75 @@ public class MeasurementExecutor extends BaseExecutor { } } } + + + /********************************************算法负责人:xy***********************************************************/ + /** + * 算法名: 3.4.1.1-----监测点报表_日表((r_stat_data_*_d)) + * + * @author xuyang + * @date 2023年11月09日 10:08 + */ + @LiteflowMethod(value = LiteFlowMethodEnum.IS_ACCESS, nodeId = "dataToDay", nodeType = NodeTypeEnum.COMMON) + public boolean dataToDayAccess(NodeComponent bindCmp) { + return isAccess(bindCmp); + } + @LiteflowMethod(value = LiteFlowMethodEnum.PROCESS, nodeId = "dataToDay", nodeType = NodeTypeEnum.COMMON) + public void dataToDayProcess(NodeComponent bindCmp) { + dayDataService.dataToDayHandler(bindCmp.getRequestData()); + } + + /** + * 算法名: 暂无-----监测点数据完整性_日表(r_stat_integrity_d) + * + * @author xuyang + * @date 2023年11月09日 10:08 + */ + @LiteflowMethod(value = LiteFlowMethodEnum.IS_ACCESS, nodeId = "measurementIntegrity", nodeType = NodeTypeEnum.COMMON) + public boolean measurementIntegrityAccess(NodeComponent bindCmp) { + return isAccess(bindCmp); + } + @LiteflowMethod(value = LiteFlowMethodEnum.PROCESS, nodeId = "measurementIntegrity", nodeType = NodeTypeEnum.COMMON) + public void measurementIntegrityProcess(NodeComponent bindCmp) { + integrityService.dataIntegrity(bindCmp.getRequestData()); + } + + /** + * 算法名: 3.4.1.1-----监测点稳态指标越限次数_日表(r_stat_limit_rate_d) + * + * @author xuyang + * @date 2023年11月13日 10:16 + */ + @LiteflowMethod(value = LiteFlowMethodEnum.IS_ACCESS, nodeId = "limitRate", nodeType = NodeTypeEnum.COMMON) + public boolean limitRateAccess(NodeComponent bindCmp) { + return isAccess(bindCmp); + } + @LiteflowMethod(value = LiteFlowMethodEnum.PROCESS, nodeId = "limitRate", nodeType = NodeTypeEnum.COMMON) + public void limitRateProcess(NodeComponent bindCmp) { + limitRateService.limitRate(bindCmp.getRequestData()); + } + + /** + * 算法名: 暂无-----合格率统计日表(是否越限)(r_stat_limit_target_d) + * + * @author xuyang + * @date 2023年11月13日 13:38 + */ + @LiteflowMethod(value = LiteFlowMethodEnum.IS_ACCESS, nodeId = "limitTarget", nodeType = NodeTypeEnum.COMMON) + public boolean limitTargetAccess(NodeComponent bindCmp) { + return isAccess(bindCmp); + } + @LiteflowMethod(value = LiteFlowMethodEnum.PROCESS, nodeId = "limitTarget", nodeType = NodeTypeEnum.COMMON) + public void limitTargetProcess(NodeComponent bindCmp) { + limitTargetService.limitTargetData(bindCmp.getRequestData()); + } + + + + /********************************************算法负责人:xy结束***********************************************************/ + + + + + } diff --git a/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/controller/line/IntegrityController.java b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/controller/line/IntegrityController.java index a09a16127..6eec84de5 100644 --- a/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/controller/line/IntegrityController.java +++ b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/controller/line/IntegrityController.java @@ -40,17 +40,6 @@ public class IntegrityController extends BaseController { private final IntegrityService integrityService; - /* @Deprecated - @OperateInfo(info = LogEnum.BUSINESS_COMMON) - @PostMapping("/computeDataIntegrity") - @ApiOperation("数据完整性统计") - @ApiImplicitParam(name = "lineParam", value = "参数", required = true) - public HttpResult computeDataIntegrity(@RequestBody @Validated LineParam lineParam){ - String methodDescribe = getMethodDescribe("computeDataIntegrity"); - String out = integrityService.computeDataIntegrity(lineParam); - return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, out, methodDescribe); - }*/ - @OperateInfo(info = LogEnum.BUSINESS_COMMON) @PostMapping("/dataIntegrity") @ApiOperation("数据完整性统计(MySQL库)") @@ -65,10 +54,10 @@ public class IntegrityController extends BaseController { log.info(item+"-->开始执行"); startTime = item+" "+"00:00:00"; endTime = item+" "+"23:59:59"; - integrityService.dataIntegrity(lineParam,startTime,endTime); +// integrityService.dataIntegrity(lineParam,startTime,endTime); } } else { - integrityService.dataIntegrity(lineParam,lineParam.getBeginTime(),lineParam.getEndTime()); +// integrityService.dataIntegrity(lineParam,lineParam.getBeginTime(),lineParam.getEndTime()); } return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, CommonResponseEnum.SUCCESS.getMessage(), methodDescribe); } diff --git a/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/controller/line/LimitrateController.java b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/controller/line/LimitrateController.java index 3175e4274..498b8dc6b 100644 --- a/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/controller/line/LimitrateController.java +++ b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/controller/line/LimitrateController.java @@ -8,7 +8,8 @@ import com.njcn.common.utils.HttpResultUtil; import com.njcn.common.utils.NjcnDateUtils; import com.njcn.device.biz.commApi.CommTerminalGeneralClient; import com.njcn.prepare.harmonic.pojo.param.LineParam; -import com.njcn.prepare.harmonic.service.mysql.Impl.line.LimitRateService; +import com.njcn.prepare.harmonic.service.mysql.Impl.line.LimitRateServiceImpl; +import com.njcn.prepare.harmonic.service.mysql.line.LimitRateService; import com.njcn.web.controller.BaseController; import io.swagger.annotations.Api; import io.swagger.annotations.ApiImplicitParam; @@ -89,10 +90,10 @@ public class LimitrateController extends BaseController { log.info(item+"-->开始执行"); startTime = item+" "+"00:00:00"; endTime = item+" "+"23:59:59"; - limitRateService.limitRate(indexLists,startTime,endTime); +// limitRateService.limitRate(indexLists,startTime,endTime); } } else { - limitRateService.limitRate(indexLists,jobParam.getBeginTime(),jobParam.getEndTime()); +// limitRateService.limitRate(indexLists,jobParam.getBeginTime(),jobParam.getEndTime()); } return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, true, methodDescribe); } diff --git a/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/Impl/SpecialAnalysisIndexOverviewServiceImpl.java b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/Impl/SpecialAnalysisIndexOverviewServiceImpl.java index 9bd90d649..03cd90ce7 100644 --- a/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/Impl/SpecialAnalysisIndexOverviewServiceImpl.java +++ b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/Impl/SpecialAnalysisIndexOverviewServiceImpl.java @@ -25,6 +25,7 @@ import org.springframework.transaction.annotation.Transactional; import org.springframework.util.CollectionUtils; import java.text.DecimalFormat; +import java.time.LocalDate; import java.util.*; import java.util.concurrent.atomic.AtomicInteger; import java.util.stream.Collectors; @@ -129,7 +130,7 @@ public class SpecialAnalysisIndexOverviewServiceImpl implements SpecialAnalysisI collect2.forEach((lineId,rStatLimitRateDPOList)->{ - Map> collect3 = rStatLimitRateDPOList.stream().collect(Collectors.groupingBy(RStatLimitRateDPO::getTime)); + Map> collect3 = rStatLimitRateDPOList.stream().collect(Collectors.groupingBy(RStatLimitRateDPO::getTime)); if(isOverLimit(rStatLimitRateDPOList,1)){ iCount.getAndIncrement(); } diff --git a/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/Impl/line/DayDataServiceImpl.java b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/Impl/line/DayDataServiceImpl.java index 8c60f77a2..13700ab30 100644 --- a/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/Impl/line/DayDataServiceImpl.java +++ b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/Impl/line/DayDataServiceImpl.java @@ -3,39 +3,29 @@ 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.alibaba.fastjson.JSON; import com.alibaba.nacos.client.naming.utils.CollectionUtils; import com.njcn.common.utils.HarmonicTimesUtil; import com.njcn.harmonic.pojo.po.day.*; import com.njcn.influx.constant.InfluxDbSqlConstant; -import com.njcn.influx.deprecated.InfluxDBPublicParam; import com.njcn.influx.imapper.*; import com.njcn.influx.imapper.day.*; import com.njcn.influx.pojo.po.*; import com.njcn.influx.pojo.po.day.*; import com.njcn.influx.query.InfluxQueryWrapper; -import com.njcn.influx.utils.InfluxDbUtils; import com.njcn.prepare.bo.CalculatedParam; import com.njcn.prepare.harmonic.service.mysql.day.*; import com.njcn.prepare.harmonic.service.mysql.line.DayDataService; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; -import net.sf.cglib.core.Local; import org.apache.commons.collections4.ListUtils; -import org.influxdb.dto.QueryResult; -import org.influxdb.impl.InfluxDBResultMapper; import org.springframework.beans.BeanUtils; import org.springframework.scheduling.annotation.Async; import org.springframework.stereotype.Component; import org.springframework.transaction.annotation.Transactional; -import java.text.ParseException; -import java.text.SimpleDateFormat; -import java.time.Instant; import java.time.LocalDate; import java.time.LocalDateTime; import java.util.ArrayList; -import java.util.Date; import java.util.List; /** diff --git a/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/Impl/line/IntegrityServiceImpl.java b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/Impl/line/IntegrityServiceImpl.java index 0522480c1..1f599fad9 100644 --- a/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/Impl/line/IntegrityServiceImpl.java +++ b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/Impl/line/IntegrityServiceImpl.java @@ -1,32 +1,33 @@ package com.njcn.prepare.harmonic.service.mysql.Impl.line; -import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.date.DatePattern; +import cn.hutool.core.date.LocalDateTimeUtil; import com.github.jeffreyning.mybatisplus.service.MppServiceImpl; -import com.njcn.common.pojo.enums.common.ServerEnum; import com.njcn.device.biz.commApi.CommTerminalGeneralClient; import com.njcn.device.biz.pojo.dto.LineDevGetDTO; -import com.njcn.device.biz.pojo.param.DeptGetLineParam; import com.njcn.device.pq.api.LineFeignClient; import com.njcn.device.pq.pojo.po.RStatIntegrityD; -import com.njcn.influx.deprecated.InfluxDBPublicParam; +import com.njcn.influx.constant.InfluxDbSqlConstant; +import com.njcn.influx.imapper.DataVMapper; +import com.njcn.influx.pojo.bo.MeasurementCount; +import com.njcn.influx.pojo.constant.InfluxDBTableConstant; import com.njcn.influx.pojo.po.DataV; +import com.njcn.influx.query.InfluxQueryWrapper; import com.njcn.influx.utils.InfluxDbUtils; +import com.njcn.prepare.bo.CalculatedParam; import com.njcn.prepare.harmonic.mapper.mysql.day.RStatIntegrityDMapper; -import com.njcn.prepare.harmonic.pojo.param.LineParam; import com.njcn.prepare.harmonic.service.mysql.line.IntegrityService; import com.njcn.user.api.DeptFeignClient; -import com.njcn.user.pojo.po.Dept; import lombok.AllArgsConstructor; import lombok.extern.slf4j.Slf4j; -import org.influxdb.dto.QueryResult; -import org.influxdb.impl.InfluxDBResultMapper; +import org.apache.commons.collections4.ListUtils; import org.springframework.scheduling.annotation.Async; import org.springframework.stereotype.Service; -import org.springframework.util.CollectionUtils; -import java.time.LocalDateTime; -import java.time.format.DateTimeFormatter; -import java.util.*; +import java.util.ArrayList; +import java.util.List; +import java.util.Objects; +import java.util.stream.Collectors; /** @@ -50,80 +51,109 @@ public class IntegrityServiceImpl extends MppServiceImpl lineDetailList; - if (CollUtil.isEmpty(lineParam.getLineIds())){ - List overLimitList = getAllLinesLimitData(); - List lineList = overLimitList.stream().map(Overlimit::getId).collect(Collectors.toList()); - lineDetailList = lineFeignClient.getLineDetail(lineList).getData(); - }else { - lineDetailList = lineFeignClient.getLineDetail(lineParam.getLineIds()).getData(); - } - if (CollUtil.isEmpty(lineDetailList)){ - return "未查询到监测点详情!"; - } - Date dateOut = DateUtil.parse(lineParam.getDataDate()); - List records = new ArrayList<>(); - for (LineDetail lineDetail :lineDetailList){ - Map tags = new HashMap<>(); - Map fields = new HashMap<>(); - tags.put("line_id",lineDetail.getId()); - fields.put("due",DAY_MINUTE/lineDetail.getTimeInterval()); - int dataCount = getDataCount(lineDetail.getId(),lineParam.getDataDate()); - fields.put("real",dataCount); - Point point = influxDbUtils.pointBuilder("pqs_integrity", dateOut.getTime(), TimeUnit.MILLISECONDS,tags, fields); - BatchPoints batchPoints = BatchPoints.database(influxDbUtils.getDbName()).tag("line_id", lineDetail.getId()).retentionPolicy("").consistency(InfluxDB.ConsistencyLevel.ALL).build(); - batchPoints.point(point); - records.add(batchPoints.lineProtocol()); - } - //InfluxDb入表pqs_integrity - influxDbUtils.batchInsert(influxDbUtils.getDbName(),"", InfluxDB.ConsistencyLevel.ALL, records); - return "成功!"; - } -*/ + private final DataVMapper dataVMapper; + +// @Override +// @Async("asyncExecutor") +// @Deprecated +// public void dataIntegrity(LineParam lineParam,String startTime,String endTime) { +// DateTimeFormatter df = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"); +// LocalDateTime dateTime = LocalDateTime.parse(startTime,df); +// +// List lineDevGetDTOList = new ArrayList<>(); +// if (CollUtil.isEmpty(lineParam.getLineIds())){ +// Dept dept = deptFeignClient.getRootDept().getData(); +// +// DeptGetLineParam deptGetLineParam = new DeptGetLineParam(); +// deptGetLineParam.setDeptId(dept.getId()); +// deptGetLineParam.setServerName(ServerEnum.HARMONIC.getName()); +// List monitorIds = commTerminalGeneralClient.getRunMonitorIds().getData(); +// lineDevGetDTOList = commTerminalGeneralClient.getMonitorDetailList(monitorIds).getData(); +// }else { +// lineDevGetDTOList = commTerminalGeneralClient.getMonitorDetailList(lineParam.getLineIds()).getData(); +// } +// List list = new ArrayList<>(); +// for (LineDevGetDTO lineDetail :lineDevGetDTOList){ +// int dataCount = getDataCount(lineDetail.getPointId(),startTime,endTime); +// RStatIntegrityD integrityDpo = new RStatIntegrityD(); +// integrityDpo.setTimeId(dateTime); +// integrityDpo.setLineIndex(lineDetail.getPointId()); +// integrityDpo.setDueTime(InfluxDBPublicParam.DAY_MINUTE/lineDetail.getInterval()); +// integrityDpo.setRealTime(dataCount); +// list.add(integrityDpo); +// } +// this.saveOrUpdateBatchByMultiId(list,500); +// } + + /********************************新算法************************************************/ @Override @Async("asyncExecutor") - public void dataIntegrity(LineParam lineParam,String startTime,String endTime) { - DateTimeFormatter df = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"); - LocalDateTime dateTime = LocalDateTime.parse(startTime,df); - - List lineDevGetDTOList = new ArrayList<>(); - if (CollUtil.isEmpty(lineParam.getLineIds())){ - Dept dept = deptFeignClient.getRootDept().getData(); - - DeptGetLineParam deptGetLineParam = new DeptGetLineParam(); - deptGetLineParam.setDeptId(dept.getId()); - deptGetLineParam.setServerName(ServerEnum.HARMONIC.getName()); - List monitorIds = commTerminalGeneralClient.getRunMonitorIds().getData(); - lineDevGetDTOList = commTerminalGeneralClient.getMonitorDetailList(monitorIds).getData(); - }else { - lineDevGetDTOList = commTerminalGeneralClient.getMonitorDetailList(lineParam.getLineIds()).getData(); - } + public void dataIntegrity(CalculatedParam calculatedParam) { List list = new ArrayList<>(); - for (LineDevGetDTO lineDetail :lineDevGetDTOList){ - int dataCount = getDataCount(lineDetail.getPointId(),startTime,endTime); - RStatIntegrityD integrityDpo = new RStatIntegrityD(); - integrityDpo.setTimeId(dateTime); - integrityDpo.setLineIndex(lineDetail.getPointId()); - integrityDpo.setDueTime(InfluxDBPublicParam.DAY_MINUTE/lineDetail.getInterval()); - integrityDpo.setRealTime(dataCount); - list.add(integrityDpo); + List lineIds = calculatedParam.getIdList(); + 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 + ); + //以尺寸100分片 + List> pendingIds = ListUtils.partition(lineIds,100); + for (List pendingId : pendingIds) { + List lineDevGetDTOList = commTerminalGeneralClient.getMonitorDetailList(pendingId).getData(); + List countList = this.getMeasurementCount(pendingId,beginDay,endDay); + list.addAll( + lineDevGetDTOList.stream() + .map(item -> { + RStatIntegrityD integrityDpo = new RStatIntegrityD(); + integrityDpo.setTimeId(LocalDateTimeUtil.parseDate(calculatedParam.getDataDate(), DatePattern.NORM_DATE_PATTERN)); + integrityDpo.setLineIndex(item.getPointId()); + integrityDpo.setDueTime(InfluxDBTableConstant.DAY_MINUTE / item.getInterval()); + integrityDpo.setRealTime(countList.stream() + .filter(item2 -> Objects.equals(item.getPointId(), item2.getLineId())) + .map(item2 -> (int) Double.parseDouble(item2.getFreq())) + .findFirst().orElse(0) + ); + return integrityDpo; + }) + .collect(Collectors.toList()) + ); } - this.saveOrUpdateBatchByMultiId(list,500); + this.saveOrUpdateBatchByMultiId(list,1000); } - private int getDataCount(String lineId,String startTime,String endTime){ - QueryResult sqlResult = influxDbUtils.query("SELECT * FROM data_v WHERE time >= '" + startTime + "' and time <= '" + endTime + "' and line_id = '" + lineId + "' and phasic_type = 'T' and value_type = 'MAX' tz('Asia/Shanghai')"); - InfluxDBResultMapper resultMapper = new InfluxDBResultMapper(); - List list = resultMapper.toPOJO(sqlResult, DataV.class); - if (CollectionUtils.isEmpty(list)){ - return 0; - } else { - return list.size(); - } + /** + * 获取data_v中各个监测点的数据总数 + * @param lineIndex + * @param startTime + * @param endTime + * @return + */ + public List getMeasurementCount(List lineIndex, String startTime, String endTime) { + InfluxQueryWrapper influxQueryWrapper = new InfluxQueryWrapper(DataV.class,MeasurementCount.class); + influxQueryWrapper.regular(DataV::getLineId, lineIndex) + .eq(DataV::getValueType, InfluxDbSqlConstant.MAX) + .eq(DataV::getPhasicType, InfluxDBTableConstant.PHASE_TYPE_T) + .count(DataV::getFreq) + .groupBy(DataV::getLineId) + .between(DataV::getTime, startTime, endTime); + return dataVMapper.getMeasurementCount(influxQueryWrapper); } + /********************************新算法结束************************************************/ + +// private int getDataCount(String lineId,String startTime,String endTime){ +// QueryResult sqlResult = influxDbUtils.query("SELECT * FROM data_v WHERE time >= '" + startTime + "' and time <= '" + endTime + "' and line_id = '" + lineId + "' and phasic_type = 'T' and value_type = 'MAX' tz('Asia/Shanghai')"); +// InfluxDBResultMapper resultMapper = new InfluxDBResultMapper(); +// List list = resultMapper.toPOJO(sqlResult, DataV.class); +// if (CollectionUtils.isEmpty(list)){ +// return 0; +// } else { +// return list.size(); +// } +// } + } diff --git a/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/Impl/line/LimitRateService.java b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/Impl/line/LimitRateService.java deleted file mode 100644 index b3a169839..000000000 --- a/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/Impl/line/LimitRateService.java +++ /dev/null @@ -1,1347 +0,0 @@ -package com.njcn.prepare.harmonic.service.mysql.Impl.line; - -import com.github.jeffreyning.mybatisplus.service.MppServiceImpl; -import com.njcn.common.utils.NjcnBeanUtil; -import com.njcn.device.biz.commApi.CommTerminalGeneralClient; -import com.njcn.device.biz.pojo.po.Overlimit; -import com.njcn.harmonic.pojo.po.LimitRate; -import com.njcn.harmonic.pojo.po.LimitRatePO; -import com.njcn.harmonic.pojo.po.day.RStatLimitRateDPO; -import com.njcn.influx.deprecated.InfluxDBPublicParam; -import com.njcn.influx.pojo.po.*; -import com.njcn.influx.utils.InfluxDbUtils; -import com.njcn.prepare.harmonic.mapper.mysql.line.LimitRatePOMapper; -import com.njcn.prepare.harmonic.service.mysql.day.IRStatLimitRateDService; -import lombok.AllArgsConstructor; -import lombok.SneakyThrows; -import lombok.extern.slf4j.Slf4j; -import org.influxdb.InfluxDB; -import org.influxdb.dto.BatchPoints; -import org.influxdb.dto.Point; -import org.influxdb.dto.QueryResult; -import org.influxdb.impl.InfluxDBResultMapper; -import org.springframework.beans.BeanUtils; -import org.springframework.scheduling.annotation.Async; -import org.springframework.stereotype.Component; -import org.springframework.transaction.annotation.Transactional; -import org.springframework.util.CollectionUtils; - -import java.text.ParseException; -import java.text.SimpleDateFormat; -import java.time.Instant; -import java.time.LocalDateTime; -import java.util.*; -import java.util.concurrent.TimeUnit; -import java.util.stream.Collectors; - -/** - * Description: - * 接口文档访问地址:http://serverIP:port/swagger-ui.html - * Date: 2022/10/18 10:00【需求编号】 - * - * @author clam - * @version V1.0.0 - */ - -@Slf4j -@Component -@AllArgsConstructor -public class LimitRateService extends MppServiceImpl { - - private final InfluxDbUtils influxDbUtils; - - private final CommTerminalGeneralClient commTerminalGeneralClient; - - private final IRStatLimitRateDService statLimitRateDService; - - /** - * @Description: 处理 limitrate批处理逻辑 - * @Param: [lineList:监测点index集合, startTime统计开始时间, endTime统计结束时间] - * @return: void - * @Author: clam - * @Date: 2022/10/18 - */ - /* @Transactional( - rollbackFor = {Exception.class} - ) - @SneakyThrows - @Async("asyncExecutor") - public void limitRateJobHandler(List lineList, String startTime, String endTime) { - List limitRates = new ArrayList<> (); - List limitRateList = new ArrayList<> (); - Instant instant = new SimpleDateFormat ("yyyy-MM-dd").parse (startTime).toInstant ( ); - Long time= instant.toEpochMilli(); - for (int i = 0; i map1 = getAllTime(lineIndex,startTime,endTime); - List map2 = getFlickerAllTime(lineIndex,startTime,endTime); - List map3 = getDataHarmRateV(lineIndex,startTime,endTime); - List map4 = getDataI(lineIndex,startTime,endTime); - List map5 = getDataInHarmV(lineIndex,startTime,endTime); - List map6 = getDataV(lineIndex,startTime,endTime); - List map7 = getDataVUnbalance(lineIndex,startTime,endTime); - List map8 = getDataINeg(lineIndex,startTime,endTime); - List map9 = getDataVFreq(lineIndex,startTime,endTime); - List map10 = getDataVDev(lineIndex,startTime,endTime); - List map11 = getDataPlt(lineIndex,startTime,endTime); - - List result = getData(overlimit,map1,map2,map3,map4,map5,map6,map7,map8,map9,map10,map11); - limitRateList.addAll (result); - List collect = result.stream ( ).map (t -> { - LimitRatePO limitRatePO = new LimitRatePO ( ); - NjcnBeanUtil.copyPropertiesIgnoreCase (t,limitRatePO); - limitRatePO.setTime (instant); - return limitRatePO; - }).collect (Collectors.toList ( )); - limitRates.addAll (collect); - } - if (!CollectionUtils.isEmpty(limitRateList)){ - *//*插入influxdb*//* - insert(limitRateList,time); - *//*插入mysql*//* - this.saveOrUpdateBatchByMultiId (limitRates,50); - } - }*/ - - @Transactional(rollbackFor = {Exception.class}) - @SneakyThrows - @Async("asyncExecutor") - public void limitRate(List lineList, String startTime, String endTime) { - log.info(LocalDateTime.now()+"r_stat_limit_rate_d开始执行=======》"); - List list = new ArrayList<>(); - List limitRateList = new ArrayList<> (); - Date date = null; - SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); - try { - date = simpleDateFormat.parse(startTime); - } catch (ParseException e) { - e.printStackTrace(); - } - for (int i = 0; i map1 = getAllTime(lineIndex,startTime,endTime); - List map2 = getFlickerAllTime(lineIndex,startTime,endTime); - List map3 = getDataHarmRateV(lineIndex,startTime,endTime); - List map4 = getDataI(lineIndex,startTime,endTime); - List map5 = getDataInHarmV(lineIndex,startTime,endTime); - List map6 = getDataV(lineIndex,startTime,endTime); - List map7 = getDataVUnbalance(lineIndex,startTime,endTime); - List map8 = getDataINeg(lineIndex,startTime,endTime); - List map9 = getDataVFreq(lineIndex,startTime,endTime); - List map10 = getDataVDev(lineIndex,startTime,endTime); - List map11 = getDataPlt(lineIndex,startTime,endTime); - - List result = getData(overlimit,map1,map2,map3,map4,map5,map6,map7,map8,map9,map10,map11); - limitRateList.addAll (result); - Date finalDate = date; - List collect = result.stream ( ).map (t -> { - RStatLimitRateDPO po = new RStatLimitRateDPO ( ); - NjcnBeanUtil.copyPropertiesIgnoreCase (t,po); - po.setTime(finalDate); - return po; - }).collect (Collectors.toList ( )); - list.addAll(collect); - } - if (!CollectionUtils.isEmpty(limitRateList)){ - /*插入mysql*/ - statLimitRateDService.insert(list); - } - - log.info(LocalDateTime.now()+"r_stat_limit_rate_d执行结束《======="); - } - - - - /** - * 功能描述:获取influxDB -> data_v -> 总计算次数(用data_v中phasic_type=A,quality_flag=0来参与统计) - * - * @param lineIndex 监测点index - * @param startTime 开始时间 - * @param endTime 结束时间 - * @return - * @date 2022/5/23 10:51 - */ - public List getAllTime(String lineIndex, String startTime, String endTime) { - StringBuilder stringBuilder = new StringBuilder ( ); - stringBuilder.append ("line_id='").append (lineIndex).append ("' and ").append (InfluxDBPublicParam.TIME + " >= '").append (startTime). - append ("' and ").append (InfluxDBPublicParam.TIME). - append (" <= '").append (endTime). - append ("' and phasic_type = 'A' and value_type = 'AVG' and quality_flag = '0' "). - append (InfluxDBPublicParam.TIME_ZONE); - String sql = "SELECT count(freq) AS all_time FROM " + InfluxDBPublicParam.DATA_V + " where " + stringBuilder; - QueryResult sqlResult = influxDbUtils.query (sql); - InfluxDBResultMapper resultMapper = new InfluxDBResultMapper ( ); - List list = resultMapper.toPOJO (sqlResult, DataV.class); - - return list; - } - - - /** - * @Description: getFlickerAllTime - * @Param: [lineIndex, startTime, endTime] - * @return: java.util.Map> - * @Author: clam - * @Date: 2022/10/18 - */ - public List getFlickerAllTime(String lineIndex, String startTime, String endTime) { - StringBuilder stringBuilder = new StringBuilder ( ); - - stringBuilder.append ("line_id='").append (lineIndex).append ("' and ").append (InfluxDBPublicParam.TIME + " >= '"). - append (startTime).append ("' and ").append (InfluxDBPublicParam.TIME). - append (" <= '").append (endTime). - append ("' and phasic_type = 'A' and quality_flag = '0' "). - append (InfluxDBPublicParam.TIME_ZONE); - String sql = "SELECT count(plt) AS flicker_all_time FROM " + InfluxDBPublicParam.DATA_PLT + " where " + stringBuilder; - QueryResult sqlResult = influxDbUtils.query (sql); - InfluxDBResultMapper resultMapper = new InfluxDBResultMapper ( ); - List list = resultMapper.toPOJO (sqlResult, DataPlt.class); - - return list; - } - - /** - * 功能描述:获取influxDB -> data_harmrate_v -> 2-25次谐波电压含有率 -> 日95%概率值 - * - * @param lineIndex 监测点index - * @param startTime 开始时间 - * @param endTime 结束时间 - * @return - * @date 2022/5/23 10:51 - */ - public List getDataHarmRateV(String lineIndex, String startTime, String endTime) { - StringBuilder stringBuilder = new StringBuilder ( ); - stringBuilder.append ("line_id='").append (lineIndex).append ("' and ").append (InfluxDBPublicParam.TIME + " >= '").append (startTime).append ("' and "). - append (InfluxDBPublicParam.TIME).append (" <= '"). - append (endTime). - append ("' and (phasic_type = 'A' or phasic_type = 'B' or phasic_type = 'C') and value_type = 'CP95' and quality_flag = '0' "). - append (InfluxDBPublicParam.TIME_ZONE); - String sql = "SELECT * FROM " + InfluxDBPublicParam.DATA_HARM_RATE_V + " WHERE " + stringBuilder; - QueryResult sqlResult = influxDbUtils.query (sql); - InfluxDBResultMapper resultMapper = new InfluxDBResultMapper ( ); - List list = resultMapper.toPOJO (sqlResult, DataHarmRateV.class); - - return list; - } - - /** - * 功能描述:获取influxDB -> data_i -> 2-25次谐波电流 -> 日95%概率值 - * - * @param lineIndex 监测点Index - * @param startTime 开始时间 - * @param endTime 结束时间 - * @Date: 2022/10/18 - */ - public List getDataI(String lineIndex, String startTime, String endTime) { - StringBuilder stringBuilder = new StringBuilder ( ); - stringBuilder.append ("line_id='").append (lineIndex).append ("' and ").append (InfluxDBPublicParam.TIME + " >= '").append (startTime). - append ("' and ").append (InfluxDBPublicParam.TIME).append (" <= '"). - append (endTime). - append ("' and (phasic_type = 'A' or phasic_type = 'B' or phasic_type = 'C') and value_type = 'CP95' and quality_flag = '0' "). - append (InfluxDBPublicParam.TIME_ZONE); - String sql = "SELECT * FROM " + InfluxDBPublicParam.DATA_I + " WHERE " + stringBuilder; - QueryResult sqlResult = influxDbUtils.query (sql); - InfluxDBResultMapper resultMapper = new InfluxDBResultMapper ( ); - List list = resultMapper.toPOJO (sqlResult, DataI.class); - - return list; - } - - /** - * 功能描述:获取influxDB -> data_inharm_v -> 0.5-15.5次间谐波电压含有率 -> 日95%概率值 - * - * @param lineIndex 监测点index - * @param startTime 开始时间 - * @param endTime 结束时间 - * @return - * @date 2022/5/23 10:51 - */ - public List getDataInHarmV(String lineIndex, String startTime, String endTime) { - StringBuilder stringBuilder = new StringBuilder ( ); - stringBuilder.append ("line_id='").append (lineIndex).append ("' and ").append (InfluxDBPublicParam.TIME + " >= '").append (startTime). - append ("' and ").append (InfluxDBPublicParam.TIME).append (" <= '").append (endTime). - append ("' and (phasic_type = 'A' or phasic_type = 'B' or phasic_type = 'C') and value_type = 'CP95' and quality_flag = '0' "). - append (InfluxDBPublicParam.TIME_ZONE); - String sql = "SELECT * FROM " + InfluxDBPublicParam.DATA_IN_HARM_V + " WHERE " + stringBuilder; - QueryResult sqlResult = influxDbUtils.query (sql); - InfluxDBResultMapper resultMapper = new InfluxDBResultMapper ( ); - List list = resultMapper.toPOJO (sqlResult, DataInHarmV.class); - - return list; - } - - /** - * 功能描述:获取influxDB -> data_v -> 电压总谐波畸变率 -> 日95%概率值 - * - * @param lineIndex 监测点Index - * @param startTime 开始时间 - * @param endTime 结束时间 - * @return - * @date 2022/5/23 10:51 - */ - public List getDataV(String lineIndex, String startTime, String endTime) { - StringBuilder stringBuilder = new StringBuilder ( ); - stringBuilder.append ("line_id='").append (lineIndex).append ("' and ").append (InfluxDBPublicParam.TIME + " >= '").append (startTime). - append ("' and ").append (InfluxDBPublicParam.TIME).append (" <= '").append (endTime). - append ("' and (phasic_type = 'A' or phasic_type = 'B' or phasic_type = 'C') and value_type = 'CP95' and quality_flag = '0' "). - append (InfluxDBPublicParam.TIME_ZONE); - String sql = "SELECT * FROM " + InfluxDBPublicParam.DATA_V + " WHERE " + stringBuilder; - QueryResult sqlResult = influxDbUtils.query (sql); - InfluxDBResultMapper resultMapper = new InfluxDBResultMapper ( ); - List list = resultMapper.toPOJO (sqlResult, DataV.class); - - return list; - } - - /** - * 功能描述:获取influxDB -> data_v -> 负序电压不平衡度 -> 最大值 && 日95%概率值 - * - * @param lineIndex 监测点lineIndex - * @param startTime 开始时间 - * @param endTime 结束时间 - * @return - * @date 2022/5/23 10:51 - */ - public List getDataVUnbalance(String lineIndex, String startTime, String endTime) { - - StringBuilder stringBuilder = new StringBuilder ( ); - stringBuilder.append ("line_id='").append (lineIndex).append ("' and ").append (InfluxDBPublicParam.TIME + " >= '").append (startTime). - append ("' and ").append (InfluxDBPublicParam.TIME).append (" <= '").append (endTime). - append ("' and phasic_type = 'T' and (value_type = 'CP95' or value_type = 'MAX') and quality_flag = '0' "). - append (InfluxDBPublicParam.TIME_ZONE); - String sql = "SELECT * FROM " + InfluxDBPublicParam.DATA_V + " WHERE " + stringBuilder; - QueryResult sqlResult = influxDbUtils.query (sql); - InfluxDBResultMapper resultMapper = new InfluxDBResultMapper ( ); - List list = resultMapper.toPOJO (sqlResult, DataV.class); - - return list; - } - - /** - * 功能描述:获取influxDB -> data_i -> 负序电流 -> 最大值 && 日95%概率值 - * - * @param lineIndex 监测点lineIndex - * @param startTime 开始时间 - * @param endTime 结束时间 - * @return - * @date 2022/5/23 10:51 - */ - public List getDataINeg(String lineIndex, String startTime, String endTime) { - Map> map = new HashMap<> ( ); - StringBuilder stringBuilder = new StringBuilder ( ); - stringBuilder.append ("line_id='").append (lineIndex).append ("' and ").append (InfluxDBPublicParam.TIME + " >= '"). - append (startTime).append ("' and ").append (InfluxDBPublicParam.TIME).append (" <= '").append (endTime). - append ("' and phasic_type = 'T' and (value_type = 'CP95' or value_type = 'MAX') and quality_flag = '0' "). - append (InfluxDBPublicParam.TIME_ZONE); - String sql = "SELECT * FROM " + InfluxDBPublicParam.DATA_I + " WHERE " + stringBuilder; - QueryResult sqlResult = influxDbUtils.query (sql); - InfluxDBResultMapper resultMapper = new InfluxDBResultMapper ( ); - List list = resultMapper.toPOJO (sqlResult, DataI.class); - - return list; - } - - /** - * 功能描述:获取influxDB -> data_v -> 频率偏差 -> 最大值 && 最小值 - * - * @param lineIndex 监测点lineIndex - * @param startTime 开始时间 - * @param endTime 结束时间 - * @return - * @date 2022/5/23 10:51 - */ - public List getDataVFreq(String lineIndex, String startTime, String endTime) { - StringBuilder stringBuilder = new StringBuilder ( ); - stringBuilder.append ("line_id='").append (lineIndex).append ("' and ").append (InfluxDBPublicParam.TIME + " >= '").append (startTime).append ("' and "). - append (InfluxDBPublicParam.TIME).append (" <= '"). - append (endTime). - append ("' and phasic_type = 'T' and (value_type = 'MIN' or value_type = 'MAX') and quality_flag = '0' "). - append (InfluxDBPublicParam.TIME_ZONE); - String sql = "SELECT * FROM " + InfluxDBPublicParam.DATA_V + " WHERE " + stringBuilder; - QueryResult sqlResult = influxDbUtils.query (sql); - InfluxDBResultMapper resultMapper = new InfluxDBResultMapper ( ); - List list = resultMapper.toPOJO (sqlResult, DataV.class); - - return list; - } - - /** - * 功能描述:获取influxDB -> data_v -> 电压偏差 -> 最大值 - * - * @param lineIndex 监测点lineIndex - * @param startTime 开始时间 - * @param endTime 结束时间 - * @return - * @date 2022/5/23 10:51 - */ - public List getDataVDev(String lineIndex, String startTime, String endTime) { - StringBuilder stringBuilder = new StringBuilder ( ); - stringBuilder.append ("line_id='").append (lineIndex).append ("' and ").append (InfluxDBPublicParam.TIME + " >= '"). - append (startTime).append ("' and ").append (InfluxDBPublicParam.TIME).append (" <= '").append (endTime). - append ("' and (phasic_type = 'A' or phasic_type = 'B' or phasic_type = 'C') and value_type = 'MAX' and quality_flag = '0' "). - append (InfluxDBPublicParam.TIME_ZONE); - String sql = "SELECT * FROM " + InfluxDBPublicParam.DATA_V + " WHERE " + stringBuilder; - QueryResult sqlResult = influxDbUtils.query (sql); - InfluxDBResultMapper resultMapper = new InfluxDBResultMapper ( ); - List list = resultMapper.toPOJO (sqlResult, DataV.class); - - return list; - } - - /** - * 功能描述:获取influxDB -> data_plt -> 长时间闪变 -> 最大值 - * - * @param lineIndex 监测点lineIndex - * @param startTime 开始时间 - * @param endTime 结束时间 - * @return - * @date 2022/5/23 10:51 - */ - public List getDataPlt(String lineIndex, String startTime, String endTime) { - StringBuilder stringBuilder = new StringBuilder ( ); - stringBuilder.append ("line_id='").append (lineIndex).append ("' and ").append (InfluxDBPublicParam.TIME + " >= '").append (startTime). - append ("' and ").append (InfluxDBPublicParam.TIME).append (" <= '").append (endTime). - append ("' and (phasic_type = 'A' or phasic_type = 'B' or phasic_type = 'C') and quality_flag = '0' "). - append (InfluxDBPublicParam.TIME_ZONE); - String sql = "SELECT * FROM " + InfluxDBPublicParam.DATA_PLT + " WHERE " + stringBuilder; - QueryResult sqlResult = influxDbUtils.query (sql); - InfluxDBResultMapper resultMapper = new InfluxDBResultMapper ( ); - List list = resultMapper.toPOJO (sqlResult, DataPlt.class); - - return list; - } - - /** - * @Description: getData - * @Param: [overlimit, allTimeList, flickerAllTimeList, dataHarmRateVPOList, dataIPOList, dataInHarmVPOList, dataVPOList, dataVPOUnbalanceList, dataIPONegList, dataVPOFreqList, dataVPODevList, dataPltPOList] - * @return: java.util.List - * @Author: clam - * @Date: 2022/10/18 - */ - private List getData(Overlimit overlimit, List allTimeList, - List flickerAllTimeList, List dataHarmRateVPOList, - List dataIPOList, List dataInHarmVPOList, - List dataVPOList, List dataVPOUnbalanceList, List dataIPONegList, - List dataVPOFreqList, List dataVPODevList, List dataPltPOList) { - List result = new ArrayList<> ( ); - - Map> harmRateVByPhaseType = new HashMap<> ( ); - Map> dataIByPhaseType = new HashMap<> ( ); - Map> dataInHarmVPhaseType = new HashMap<> ( ); - Map> dataVPhaseType = new HashMap<> ( ); - Map> dataVDevPhaseType = new HashMap<> ( ); - Map> dataPltPhaseType = new HashMap<> ( ); - Map> harmRateVByTime = new HashMap<> ( ); - Map> dataIByTime = new HashMap<> ( ); - Map> dataInHarmVByTime = new HashMap<> ( ); - Map> dataVByTime = new HashMap<> ( ); - Map> dataVUnbalanceByTime = new HashMap<> ( ); - Map> dataINegByTime = new HashMap<> ( ); - Map> dataVFreqByTime = new HashMap<> ( ); - Map> dataVDevByTime = new HashMap<> ( ); - Map> dataPltByTime = new HashMap<> ( ); - Integer allTime = 0; - Integer flickerAllTime = 0; - if (!CollectionUtils.isEmpty (allTimeList)) { - allTime = allTimeList.get (0).getAllTime ( ); - } - if (!CollectionUtils.isEmpty (flickerAllTimeList)) { - flickerAllTime = flickerAllTimeList.get (0).getFlickerAllTime (); } - - - - if (!CollectionUtils.isEmpty (dataHarmRateVPOList)) { - harmRateVByPhaseType = dataHarmRateVPOList.stream ( ).collect (Collectors.groupingBy (DataHarmRateV::getPhaseType)); - harmRateVByTime = dataHarmRateVPOList.stream ( ).collect (Collectors.groupingBy (DataHarmRateV::getTime)); - } - if (!CollectionUtils.isEmpty (dataIPOList)) { - dataIByPhaseType = dataIPOList.stream ( ).collect (Collectors.groupingBy (DataI::getPhaseType)); - dataIByTime = dataIPOList.stream ( ).collect (Collectors.groupingBy (DataI::getTime)); - } - if (!CollectionUtils.isEmpty (dataInHarmVPOList)) { - dataInHarmVPhaseType = dataInHarmVPOList.stream ( ).collect (Collectors.groupingBy (DataInHarmV::getPhaseType)); - dataInHarmVByTime = dataInHarmVPOList.stream ( ).collect (Collectors.groupingBy (DataInHarmV::getTime)); - } - if (!CollectionUtils.isEmpty (dataVPOList)) { - dataVPhaseType = dataVPOList.stream ( ).collect (Collectors.groupingBy (DataV::getPhasicType)); - dataVByTime = dataVPOList.stream ( ).collect (Collectors.groupingBy (DataV::getTime)); - } - if (!CollectionUtils.isEmpty (dataVPOUnbalanceList)) { - dataVUnbalanceByTime = dataVPOUnbalanceList.stream ( ).collect (Collectors.groupingBy (DataV::getTime)); - } - if (!CollectionUtils.isEmpty (dataIPONegList)) { - dataINegByTime = dataIPONegList.stream ( ).collect (Collectors.groupingBy (DataI::getTime)); - } - if (!CollectionUtils.isEmpty (dataVPOFreqList)) { - dataVFreqByTime = dataVPOFreqList.stream ( ).collect (Collectors.groupingBy (DataV::getTime)); - } - if (!CollectionUtils.isEmpty (dataVPODevList)) { - dataVDevPhaseType = dataVPODevList.stream ( ).collect (Collectors.groupingBy (DataV::getPhasicType)); - dataVDevByTime = dataVPODevList.stream ( ).collect (Collectors.groupingBy (DataV::getTime)); - } - if (!CollectionUtils.isEmpty (dataPltPOList)) { - dataPltPhaseType = dataPltPOList.stream ( ).collect (Collectors.groupingBy (DataPlt::getPhaseType)); - dataPltByTime = dataPltPOList.stream ( ).collect (Collectors.groupingBy (DataPlt::getTime)); - } - LimitRate a = limitRateData (overlimit, allTime, flickerAllTime, "A", overlimit.getId (), harmRateVByPhaseType.get ("A"), dataIByPhaseType.get ("A"), dataInHarmVPhaseType.get ("A"), dataVPhaseType.get ("A"), dataVDevPhaseType.get ("A"), dataPltPhaseType.get ("A")); - LimitRate b = limitRateData (overlimit, allTime, flickerAllTime, "B", overlimit.getId (), harmRateVByPhaseType.get ("B"), dataIByPhaseType.get ("B"), dataInHarmVPhaseType.get ("B"), dataVPhaseType.get ("B"), dataVDevPhaseType.get ("B"), dataPltPhaseType.get ("B")); - LimitRate c = limitRateData (overlimit, allTime, flickerAllTime, "C", overlimit.getId (), harmRateVByPhaseType.get ("C"), dataIByPhaseType.get ("C"), dataInHarmVPhaseType.get ("C"), dataVPhaseType.get ("C"), dataVDevPhaseType.get ("C"), dataPltPhaseType.get ("C")); - LimitRate t = limitRateDataT (overlimit, allTime, flickerAllTime, overlimit.getId (), harmRateVByTime, dataIByTime, dataInHarmVByTime, dataVByTime, dataVUnbalanceByTime, dataINegByTime, dataVFreqByTime, dataVDevByTime, dataPltByTime); - result.add (a); - result.add (b); - result.add (c); - result.add (t); - - return result; - } - - - /** - * @Description: limitRateData - * @Param: [overlimit, allTime, flickerAllTime, phasicType, lineId, dataHarmRateVPOList, dataIPOList, dataInHarmVPOList, dataVPOList, dataVUnbalanceList, dataINegList] - * @return: com.njcn.harmonic.pojo.po.LimitRate - * @Author: clam - * @Date: 2022/10/18 - */ - public LimitRate limitRateData(Overlimit overlimit, Integer allTime, Integer - flickerAllTime, String phasicType, String lineId, - List dataHarmRateVPOList, - List dataIPOList, List dataInHarmVPOList, - List dataVPOList, List dataVPODevList, List dataPltPOList) { - LimitRate limitRate = new LimitRate ( ); - int v2 = 0, v3 = 0, v4 = 0, v5 = 0, v6 = 0, v7 = 0, v8 = 0, v9 = 0, v10 = 0, v11 = 0, v12 = 0, v13 = 0, v14 = 0, v15 = 0, v16 = 0, v17 = 0, v18 = 0, v19 = 0, v20 = 0, v21 = 0, v22 = 0, v23 = 0, v24 = 0, v25 = 0; - int i2 = 0, i3 = 0, i4 = 0, i5 = 0, i6 = 0, i7 = 0, i8 = 0, i9 = 0, i10 = 0, i11 = 0, i12 = 0, i13 = 0, i14 = 0, i15 = 0, i16 = 0, i17 = 0, i18 = 0, i19 = 0, i20 = 0, i21 = 0, i22 = 0, i23 = 0, i24 = 0, i25 = 0; - int uHarm1 = 0, uHarm2 = 0, uHarm3 = 0, uHarm4 = 0, uHarm5 = 0, uHarm6 = 0, uHarm7 = 0, uHarm8 = 0, uHarm9 = 0, uHarm10 = 0, uHarm11 = 0, uHarm12 = 0, uHarm13 = 0, uHarm14 = 0, uHarm15 = 0, uHarm16 = 0; - int thd = 0, uDev = 0, flicker = 0; - //2-25次谐波电压含有率 - - if (!CollectionUtils.isEmpty (dataHarmRateVPOList)) { - for (DataHarmRateV item : dataHarmRateVPOList) { - if (item.getV2 ( ) > overlimit.getUharm2 ( )) { - v2++; - } - if (item.getV3 ( ) > overlimit.getUharm3 ( )) { - v3++; - } - if (item.getV4 ( ) > overlimit.getUharm4 ( )) { - v4++; - } - if (item.getV5 ( ) > overlimit.getUharm5 ( )) { - v5++; - } - if (item.getV6 ( ) > overlimit.getUharm6 ( )) { - v6++; - } - if (item.getV7 ( ) > overlimit.getUharm7 ( )) { - v7++; - } - if (item.getV8 ( ) > overlimit.getUharm8 ( )) { - v8++; - } - if (item.getV9 ( ) > overlimit.getUharm9 ( )) { - v9++; - } - if (item.getV10 ( ) > overlimit.getUharm10 ( )) { - v10++; - } - if (item.getV11 ( ) > overlimit.getUharm11 ( )) { - v11++; - } - if (item.getV12 ( ) > overlimit.getUharm12 ( )) { - v12++; - } - if (item.getV13 ( ) > overlimit.getUharm13 ( )) { - v13++; - } - if (item.getV14 ( ) > overlimit.getUharm14 ( )) { - v14++; - } - if (item.getV15 ( ) > overlimit.getUharm15 ( )) { - v15++; - } - if (item.getV16 ( ) > overlimit.getUharm16 ( )) { - v16++; - } - if (item.getV17 ( ) > overlimit.getUharm17 ( )) { - v17++; - } - if (item.getV18 ( ) > overlimit.getUharm18 ( )) { - v18++; - } - if (item.getV19 ( ) > overlimit.getUharm19 ( )) { - v19++; - } - if (item.getV20 ( ) > overlimit.getUharm20 ( )) { - v20++; - } - if (item.getV21 ( ) > overlimit.getUharm21 ( )) { - v21++; - } - if (item.getV22 ( ) > overlimit.getUharm22 ( )) { - v22++; - } - if (item.getV23 ( ) > overlimit.getUharm23 ( )) { - v23++; - } - if (item.getV24 ( ) > overlimit.getUharm24 ( )) { - v24++; - } - if (item.getV25 ( ) > overlimit.getUharm25 ( )) { - v25++; - } - } - } - //2-25次谐波电流 - if (!CollectionUtils.isEmpty (dataIPOList)) { - for (DataI item : dataIPOList) { - if (item.getI2 ( ) > overlimit.getIharm2 ( )) { - i2++; - } - if (item.getI3 ( ) > overlimit.getIharm3 ( )) { - i3++; - } - if (item.getI4 ( ) > overlimit.getIharm4 ( )) { - i4++; - } - if (item.getI5 ( ) > overlimit.getIharm5 ( )) { - i5++; - } - if (item.getI6 ( ) > overlimit.getIharm6 ( )) { - i6++; - } - if (item.getI7 ( ) > overlimit.getIharm7 ( )) { - i7++; - } - if (item.getI8 ( ) > overlimit.getIharm8 ( )) { - i8++; - } - if (item.getI9 ( ) > overlimit.getIharm9 ( )) { - i9++; - } - if (item.getI10 ( ) > overlimit.getIharm10 ( )) { - i10++; - } - if (item.getI11 ( ) > overlimit.getIharm11 ( )) { - i11++; - } - if (item.getI12 ( ) > overlimit.getIharm12 ( )) { - i12++; - } - if (item.getI13 ( ) > overlimit.getIharm13 ( )) { - i13++; - } - if (item.getI14 ( ) > overlimit.getIharm14 ( )) { - i14++; - } - if (item.getI15 ( ) > overlimit.getIharm15 ( )) { - i15++; - } - if (item.getI16 ( ) > overlimit.getIharm16 ( )) { - i16++; - } - if (item.getI17 ( ) > overlimit.getIharm17 ( )) { - i17++; - } - if (item.getI18 ( ) > overlimit.getIharm18 ( )) { - i18++; - } - if (item.getI19 ( ) > overlimit.getIharm19 ( )) { - i19++; - } - if (item.getI20 ( ) > overlimit.getIharm20 ( )) { - i20++; - } - if (item.getI21 ( ) > overlimit.getIharm21 ( )) { - i21++; - } - if (item.getI22 ( ) > overlimit.getIharm22 ( )) { - i22++; - } - if (item.getI23 ( ) > overlimit.getIharm23 ( )) { - i23++; - } - if (item.getI24 ( ) > overlimit.getIharm24 ( )) { - i24++; - } - if (item.getI25 ( ) > overlimit.getIharm25 ( )) { - i25++; - } - } - } - //0.5-15.5次间谐波电压含有率 - if (!CollectionUtils.isEmpty (dataInHarmVPOList)) { - for (DataInHarmV item : dataInHarmVPOList) { - if (item.getV1 ( ) > overlimit.getInuharm1 ( )) { - uHarm1++; - } - if (item.getV2 ( ) > overlimit.getInuharm2 ( )) { - uHarm2++; - } - if (item.getV3 ( ) > overlimit.getInuharm3 ( )) { - uHarm3++; - } - if (item.getV4 ( ) > overlimit.getInuharm4 ( )) { - uHarm4++; - } - if (item.getV5 ( ) > overlimit.getInuharm5 ( )) { - uHarm5++; - } - if (item.getV6 ( ) > overlimit.getInuharm6 ( )) { - uHarm6++; - } - if (item.getV7 ( ) > overlimit.getInuharm7 ( )) { - uHarm7++; - } - if (item.getV8 ( ) > overlimit.getInuharm8 ( )) { - uHarm8++; - } - if (item.getV9 ( ) > overlimit.getInuharm9 ( )) { - uHarm9++; - } - if (item.getV10 ( ) > overlimit.getInuharm10 ( )) { - uHarm10++; - } - if (item.getV11 ( ) > overlimit.getInuharm11 ( )) { - uHarm11++; - } - if (item.getV12 ( ) > overlimit.getInuharm12 ( )) { - uHarm12++; - } - if (item.getV13 ( ) > overlimit.getInuharm13 ( )) { - uHarm13++; - } - if (item.getV14 ( ) > overlimit.getInuharm14 ( )) { - uHarm14++; - } - if (item.getV15 ( ) > overlimit.getInuharm15 ( )) { - uHarm15++; - } - if (item.getV16 ( ) > overlimit.getInuharm16 ( )) { - uHarm16++; - } - } - } - //电压总谐波畸变率 - if (!CollectionUtils.isEmpty (dataVPOList)) { - for (DataV item : dataVPOList) { - if (item.getVThd ( ) > overlimit.getUaberrance ( )) { - thd++; - } - } - } - //电压上偏差、电压下偏差(根据vl_dev的正负判断是用哪个值判断越限) - if (!CollectionUtils.isEmpty (dataVPODevList)) { - for (DataV item : dataVPODevList) { - if (item.getVlDev() >= 0){ - if (item.getVlDev() > overlimit.getVoltageDev()){ - uDev++; - } - } else { - if (Math.abs(item.getVlDev()) > Math.abs(overlimit.getUvoltageDev())){ - uDev++; - } - } - } - } - //长时间闪变 - if (!CollectionUtils.isEmpty (dataPltPOList)) { - for (DataPlt item : dataPltPOList) { - if (item.getPlt ( ) > overlimit.getFlicker ( )) { - flicker++; - } - } - } - limitRate.setLineId (lineId); - limitRate.setPhasicType (phasicType); - limitRate.setAllTime (allTime); - limitRate.setFlickerAllTime (flickerAllTime); - limitRate.setUAberranceOverTime (0); - limitRate.setINegOverTime (0); - limitRate.setFreqDevOverTime (0); - limitRate.setUHarm2OverTime (v2); - limitRate.setUHarm3OverTime (v3); - limitRate.setUHarm4OverTime (v4); - limitRate.setUHarm5OverTime (v5); - limitRate.setUHarm6OverTime (v6); - limitRate.setUHarm7OverTime (v7); - limitRate.setUHarm8OverTime (v8); - limitRate.setUHarm9OverTime (v9); - limitRate.setUHarm10OverTime (v10); - limitRate.setUHarm11OverTime (v11); - limitRate.setUHarm12OverTime (v12); - limitRate.setUHarm13OverTime (v13); - limitRate.setUHarm14OverTime (v14); - limitRate.setUHarm15OverTime (v15); - limitRate.setUHarm16OverTime (v16); - limitRate.setUHarm17OverTime (v17); - limitRate.setUHarm18OverTime (v18); - limitRate.setUHarm19OverTime (v19); - limitRate.setUHarm20OverTime (v20); - limitRate.setUHarm21OverTime (v21); - limitRate.setUHarm22OverTime (v22); - limitRate.setUHarm23OverTime (v23); - limitRate.setUHarm24OverTime (v24); - limitRate.setUHarm25OverTime (v25); - limitRate.setIHarm2OverTime (i2); - limitRate.setIHarm3OverTime (i3); - limitRate.setIHarm4OverTime (i4); - limitRate.setIHarm5OverTime (i5); - limitRate.setIHarm6OverTime (i6); - limitRate.setIHarm7OverTime (i7); - limitRate.setIHarm8OverTime (i8); - limitRate.setIHarm9OverTime (i9); - limitRate.setIHarm10OverTime (i10); - limitRate.setIHarm11OverTime (i11); - limitRate.setIHarm12OverTime (i12); - limitRate.setIHarm13OverTime (i13); - limitRate.setIHarm14OverTime (i14); - limitRate.setIHarm15OverTime (i15); - limitRate.setIHarm16OverTime (i16); - limitRate.setIHarm17OverTime (i17); - limitRate.setIHarm18OverTime (i18); - limitRate.setIHarm19OverTime (i19); - limitRate.setIHarm20OverTime (i20); - limitRate.setIHarm21OverTime (i21); - limitRate.setIHarm22OverTime (i22); - limitRate.setIHarm23OverTime (i23); - limitRate.setIHarm24OverTime (i24); - limitRate.setIHarm25OverTime (i25); - limitRate.setInuHarm1OverTime (uHarm1); - limitRate.setInuHarm2OverTime (uHarm2); - limitRate.setInuHarm3OverTime (uHarm3); - limitRate.setInuHarm4OverTime (uHarm4); - limitRate.setInuHarm5OverTime (uHarm5); - limitRate.setInuHarm6OverTime (uHarm6); - limitRate.setInuHarm7OverTime (uHarm7); - limitRate.setInuHarm8OverTime (uHarm8); - limitRate.setInuHarm9OverTime (uHarm9); - limitRate.setInuHarm10OverTime (uHarm10); - limitRate.setInuHarm11OverTime (uHarm11); - limitRate.setInuHarm12OverTime (uHarm12); - limitRate.setInuHarm13OverTime (uHarm13); - limitRate.setInuHarm14OverTime (uHarm14); - limitRate.setInuHarm15OverTime (uHarm15); - limitRate.setInuHarm16OverTime (uHarm16); - limitRate.setUBalanceOverTime (thd); - limitRate.setVoltageDevOverTime (uDev); - limitRate.setFlickerOverTime (flicker); - return limitRate; - } - - - public LimitRate limitRateDataT(Overlimit overlimit, Integer allTime, Integer flickerAllTime, String lineId, Map> map1, Map> map2, Map> map3, Map> map4, Map> map5, Map> map6, Map> map7, Map> map8, Map> map9){ - LimitRate limitRate = new LimitRate(); - int v2 = 0,v3 = 0,v4 = 0,v5 = 0,v6 = 0,v7 = 0,v8 = 0,v9 = 0,v10 = 0,v11 = 0,v12 = 0,v13 = 0,v14 = 0,v15 = 0,v16 = 0,v17 = 0,v18 = 0,v19 = 0,v20 = 0,v21 = 0,v22 = 0,v23 = 0,v24 = 0,v25 = 0; - int i2 = 0,i3 = 0,i4 = 0,i5 = 0,i6 = 0,i7 = 0,i8 = 0,i9 = 0,i10 = 0,i11 = 0,i12 = 0,i13 = 0,i14 = 0,i15 = 0,i16 = 0,i17 = 0,i18 = 0,i19 = 0,i20 = 0,i21 = 0,i22 = 0,i23 = 0,i24 = 0,i25 = 0; - int uHarm1 = 0,uHarm2 = 0,uHarm3 = 0,uHarm4 = 0,uHarm5 = 0,uHarm6 = 0,uHarm7 = 0,uHarm8 = 0,uHarm9 = 0,uHarm10 = 0,uHarm11 = 0,uHarm12 = 0,uHarm13 = 0,uHarm14 = 0,uHarm15 = 0,uHarm16 = 0; - int thd = 0,uDev = 0,flicker = 0,freqDev = 0,uAberrance = 0,iNeg = 0; - //2-25次谐波电压含有率 - for (Instant time:map1.keySet()) { - List list = map1.get(time); - List l2 = list.stream().filter(s->s.getV2()>overlimit.getUharm2()).collect(Collectors.toList()); - if (!CollectionUtils.isEmpty(l2)){ - v2++; - } - List l3 = list.stream().filter(s->s.getV3()>overlimit.getUharm3()).collect(Collectors.toList()); - if (!CollectionUtils.isEmpty(l3)){ - v3++; - } - List l4 = list.stream().filter(s->s.getV4()>overlimit.getUharm4()).collect(Collectors.toList()); - if (!CollectionUtils.isEmpty(l4)){ - v4++; - } - List l5 = list.stream().filter(s->s.getV5()>overlimit.getUharm5()).collect(Collectors.toList()); - if (!CollectionUtils.isEmpty(l5)){ - v5++; - } - List l6 = list.stream().filter(s->s.getV6()>overlimit.getUharm6()).collect(Collectors.toList()); - if (!CollectionUtils.isEmpty(l6)){ - v6++; - } - List l7 = list.stream().filter(s->s.getV7()>overlimit.getUharm7()).collect(Collectors.toList()); - if (!CollectionUtils.isEmpty(l7)){ - v7++; - } - List l8 = list.stream().filter(s->s.getV8()>overlimit.getUharm8()).collect(Collectors.toList()); - if (!CollectionUtils.isEmpty(l8)){ - v8++; - } - List l9 = list.stream().filter(s->s.getV9()>overlimit.getUharm9()).collect(Collectors.toList()); - if (!CollectionUtils.isEmpty(l9)){ - v9++; - } - List l10 = list.stream().filter(s->s.getV10()>overlimit.getUharm10()).collect(Collectors.toList()); - if (!CollectionUtils.isEmpty(l10)){ - v10++; - } - List l11 = list.stream().filter(s->s.getV11()>overlimit.getUharm11()).collect(Collectors.toList()); - if (!CollectionUtils.isEmpty(l11)){ - v11++; - } - List l12 = list.stream().filter(s->s.getV12()>overlimit.getUharm12()).collect(Collectors.toList()); - if (!CollectionUtils.isEmpty(l12)){ - v12++; - } - List l13 = list.stream().filter(s->s.getV13()>overlimit.getUharm13()).collect(Collectors.toList()); - if (!CollectionUtils.isEmpty(l13)){ - v13++; - } - List l14 = list.stream().filter(s->s.getV14()>overlimit.getUharm14()).collect(Collectors.toList()); - if (!CollectionUtils.isEmpty(l14)){ - v14++; - } - List l15 = list.stream().filter(s->s.getV15()>overlimit.getUharm15()).collect(Collectors.toList()); - if (!CollectionUtils.isEmpty(l15)){ - v15++; - } - List l16 = list.stream().filter(s->s.getV16()>overlimit.getUharm16()).collect(Collectors.toList()); - if (!CollectionUtils.isEmpty(l16)){ - v16++; - } - List l17 = list.stream().filter(s->s.getV17()>overlimit.getUharm17()).collect(Collectors.toList()); - if (!CollectionUtils.isEmpty(l17)){ - v17++; - } - List l18 = list.stream().filter(s->s.getV18()>overlimit.getUharm18()).collect(Collectors.toList()); - if (!CollectionUtils.isEmpty(l18)){ - v18++; - } - List l19 = list.stream().filter(s->s.getV19()>overlimit.getUharm19()).collect(Collectors.toList()); - if (!CollectionUtils.isEmpty(l19)){ - v19++; - } - List l20 = list.stream().filter(s->s.getV20()>overlimit.getUharm20()).collect(Collectors.toList()); - if (!CollectionUtils.isEmpty(l20)){ - v20++; - } - List l21 = list.stream().filter(s->s.getV21()>overlimit.getUharm21()).collect(Collectors.toList()); - if (!CollectionUtils.isEmpty(l21)){ - v21++; - } - List l22 = list.stream().filter(s->s.getV22()>overlimit.getUharm22()).collect(Collectors.toList()); - if (!CollectionUtils.isEmpty(l22)){ - v22++; - } - List l23 = list.stream().filter(s->s.getV23()>overlimit.getUharm23()).collect(Collectors.toList()); - if (!CollectionUtils.isEmpty(l23)){ - v23++; - } - List l24 = list.stream().filter(s->s.getV24()>overlimit.getUharm24()).collect(Collectors.toList()); - if (!CollectionUtils.isEmpty(l24)){ - v24++; - } - List l25 = list.stream().filter(s->s.getV25()>overlimit.getUharm25()).collect(Collectors.toList()); - if (!CollectionUtils.isEmpty(l25)){ - v25++; - } - } - //2-25次谐波电流 - for (Instant time:map2.keySet()) { - List list = map2.get(time); - List l2 = list.stream().filter(s->s.getI2()>overlimit.getIharm2()).collect(Collectors.toList()); - if (!CollectionUtils.isEmpty(l2)){ - i2++; - } - List l3 = list.stream().filter(s->s.getI3()>overlimit.getIharm3()).collect(Collectors.toList()); - if (!CollectionUtils.isEmpty(l3)){ - i3++; - } - List l4 = list.stream().filter(s->s.getI4()>overlimit.getIharm4()).collect(Collectors.toList()); - if (!CollectionUtils.isEmpty(l4)){ - i4++; - } - List l5 = list.stream().filter(s->s.getI5()>overlimit.getIharm5()).collect(Collectors.toList()); - if (!CollectionUtils.isEmpty(l5)){ - i5++; - } - List l6 = list.stream().filter(s->s.getI6()>overlimit.getIharm6()).collect(Collectors.toList()); - if (!CollectionUtils.isEmpty(l6)){ - i6++; - } - List l7 = list.stream().filter(s->s.getI7()>overlimit.getIharm7()).collect(Collectors.toList()); - if (!CollectionUtils.isEmpty(l7)){ - i7++; - } - List l8 = list.stream().filter(s->s.getI8()>overlimit.getIharm8()).collect(Collectors.toList()); - if (!CollectionUtils.isEmpty(l8)){ - i8++; - } - List l9 = list.stream().filter(s->s.getI9()>overlimit.getIharm9()).collect(Collectors.toList()); - if (!CollectionUtils.isEmpty(l9)){ - i9++; - } - List l10 = list.stream().filter(s->s.getI10()>overlimit.getIharm10()).collect(Collectors.toList()); - if (!CollectionUtils.isEmpty(l10)){ - i10++; - } - List l11 = list.stream().filter(s->s.getI11()>overlimit.getIharm11()).collect(Collectors.toList()); - if (!CollectionUtils.isEmpty(l11)){ - i11++; - } - List l12 = list.stream().filter(s->s.getI12()>overlimit.getIharm12()).collect(Collectors.toList()); - if (!CollectionUtils.isEmpty(l12)){ - i12++; - } - List l13 = list.stream().filter(s->s.getI13()>overlimit.getIharm13()).collect(Collectors.toList()); - if (!CollectionUtils.isEmpty(l13)){ - i13++; - } - List l14 = list.stream().filter(s->s.getI14()>overlimit.getIharm14()).collect(Collectors.toList()); - if (!CollectionUtils.isEmpty(l14)){ - i14++; - } - List l15 = list.stream().filter(s->s.getI15()>overlimit.getIharm15()).collect(Collectors.toList()); - if (!CollectionUtils.isEmpty(l15)){ - i15++; - } - List l16 = list.stream().filter(s->s.getI16()>overlimit.getIharm16()).collect(Collectors.toList()); - if (!CollectionUtils.isEmpty(l16)){ - i16++; - } - List l17 = list.stream().filter(s->s.getI17()>overlimit.getIharm17()).collect(Collectors.toList()); - if (!CollectionUtils.isEmpty(l17)){ - i17++; - } - List l18 = list.stream().filter(s->s.getI18()>overlimit.getIharm18()).collect(Collectors.toList()); - if (!CollectionUtils.isEmpty(l18)){ - i18++; - } - List l19 = list.stream().filter(s->s.getI19()>overlimit.getIharm19()).collect(Collectors.toList()); - if (!CollectionUtils.isEmpty(l19)){ - i19++; - } - List l20 = list.stream().filter(s->s.getI20()>overlimit.getIharm20()).collect(Collectors.toList()); - if (!CollectionUtils.isEmpty(l20)){ - i20++; - } - List l21 = list.stream().filter(s->s.getI21()>overlimit.getIharm21()).collect(Collectors.toList()); - if (!CollectionUtils.isEmpty(l21)){ - i21++; - } - List l22 = list.stream().filter(s->s.getI22()>overlimit.getIharm22()).collect(Collectors.toList()); - if (!CollectionUtils.isEmpty(l22)){ - i22++; - } - List l23 = list.stream().filter(s->s.getI23()>overlimit.getIharm23()).collect(Collectors.toList()); - if (!CollectionUtils.isEmpty(l23)){ - i23++; - } - List l24 = list.stream().filter(s->s.getI24()>overlimit.getIharm24()).collect(Collectors.toList()); - if (!CollectionUtils.isEmpty(l24)){ - i24++; - } - List l25 = list.stream().filter(s->s.getI25()>overlimit.getIharm25()).collect(Collectors.toList()); - if (!CollectionUtils.isEmpty(l25)){ - i25++; - } - } - //0.5-15.5次间谐波电压含有率 - for (Instant time:map3.keySet()) { - List list3 = map3.get(time); - List l2 = list3.stream().filter(s->s.getV1()>overlimit.getInuharm1()).collect(Collectors.toList()); - if (!CollectionUtils.isEmpty(l2)){ - uHarm1++; - } - List l3 = list3.stream().filter(s->s.getV2()>overlimit.getInuharm2()).collect(Collectors.toList()); - if (!CollectionUtils.isEmpty(l3)){ - uHarm2++; - } - List l4 = list3.stream().filter(s->s.getV3()>overlimit.getInuharm3()).collect(Collectors.toList()); - if (!CollectionUtils.isEmpty(l4)){ - uHarm3++; - } - List l5 = list3.stream().filter(s->s.getV4()>overlimit.getInuharm4()).collect(Collectors.toList()); - if (!CollectionUtils.isEmpty(l5)){ - uHarm4++; - } - List l6 = list3.stream().filter(s->s.getV5()>overlimit.getInuharm5()).collect(Collectors.toList()); - if (!CollectionUtils.isEmpty(l6)){ - uHarm5++; - } - List l7 = list3.stream().filter(s->s.getV6()>overlimit.getInuharm6()).collect(Collectors.toList()); - if (!CollectionUtils.isEmpty(l7)){ - uHarm6++; - } - List l8 = list3.stream().filter(s->s.getV7()>overlimit.getInuharm7()).collect(Collectors.toList()); - if (!CollectionUtils.isEmpty(l8)){ - uHarm7++; - } - List l9 = list3.stream().filter(s->s.getV8()>overlimit.getInuharm8()).collect(Collectors.toList()); - if (!CollectionUtils.isEmpty(l9)){ - uHarm8++; - } - List l10 = list3.stream().filter(s->s.getV9()>overlimit.getInuharm9()).collect(Collectors.toList()); - if (!CollectionUtils.isEmpty(l10)){ - uHarm9++; - } - List l11 = list3.stream().filter(s->s.getV10()>overlimit.getInuharm10()).collect(Collectors.toList()); - if (!CollectionUtils.isEmpty(l11)){ - uHarm10++; - } - List l12 = list3.stream().filter(s->s.getV11()>overlimit.getInuharm11()).collect(Collectors.toList()); - if (!CollectionUtils.isEmpty(l12)){ - uHarm11++; - } - List l13 = list3.stream().filter(s->s.getV12()>overlimit.getInuharm12()).collect(Collectors.toList()); - if (!CollectionUtils.isEmpty(l13)){ - uHarm12++; - } - List l14 = list3.stream().filter(s->s.getV13()>overlimit.getInuharm13()).collect(Collectors.toList()); - if (!CollectionUtils.isEmpty(l14)){ - uHarm13++; - } - List l15 = list3.stream().filter(s->s.getV14()>overlimit.getInuharm14()).collect(Collectors.toList()); - if (!CollectionUtils.isEmpty(l15)){ - uHarm14++; - } - List l16 = list3.stream().filter(s->s.getV15()>overlimit.getInuharm15()).collect(Collectors.toList()); - if (!CollectionUtils.isEmpty(l16)){ - uHarm15++; - } - List l17 = list3.stream().filter(s->s.getV16()>overlimit.getInuharm16()).collect(Collectors.toList()); - if (!CollectionUtils.isEmpty(l17)){ - uHarm16++; - } - } - //电压总谐波畸变率 - for (Instant time:map4.keySet()) { - List list = map4.get(time); - List l = list.stream().filter(s->s.getVThd()>overlimit.getUaberrance()).collect(Collectors.toList()); - if (!CollectionUtils.isEmpty(l)){ - thd++; - } - } - //三相电压不平衡度 - for (Instant time:map5.keySet()) { - List list = map5.get(time); - List l = list.stream().filter(s->s.getVUnbalance()>overlimit.getUbalance()).collect(Collectors.toList()); - if (!CollectionUtils.isEmpty(l)){ - uAberrance++; - } - } - //负序电流 - for (Instant time:map6.keySet()) { - List list = map6.get(time); - List l = list.stream().filter(s->s.getINeg()>overlimit.getINeg()).collect(Collectors.toList()); - if (!CollectionUtils.isEmpty(l)){ - iNeg++; - } - } - //频率偏差 - for (Instant time:map7.keySet()) { - List list = map7.get(time); - List l = list.stream().filter(s->s.getFreqDev()>overlimit.getFreqDev()).collect(Collectors.toList()); - if (!CollectionUtils.isEmpty(l)){ - freqDev++; - } - } - //电压上偏差、电压下偏差 - for (Instant time:map8.keySet()) { - List list = map8.get(time); - List l1 = list.stream().filter(s->s.getVlDev()>=0&&s.getVlDev()>overlimit.getVoltageDev()).collect(Collectors.toList()); - List l2 = list.stream().filter(s->s.getVlDev()<0&&Math.abs(s.getVlDev())>Math.abs(overlimit.getUvoltageDev())).collect(Collectors.toList()); - if (!CollectionUtils.isEmpty(l1) || !CollectionUtils.isEmpty(l2)){ - uDev++; - } - } - //长时间闪变 - for (Instant time:map9.keySet()) { - List list = map9.get(time); - List l = list.stream().filter(s->s.getPlt()>overlimit.getFlicker()).collect(Collectors.toList()); - if (!CollectionUtils.isEmpty(l)){ - flicker++; - } - } - limitRate.setLineId(lineId); - limitRate.setPhasicType("T"); - limitRate.setAllTime(allTime); - limitRate.setFlickerAllTime(flickerAllTime); - limitRate.setUAberranceOverTime(uAberrance); - limitRate.setINegOverTime(iNeg); - limitRate.setFreqDevOverTime(freqDev); - limitRate.setUHarm2OverTime(v2); - limitRate.setUHarm3OverTime(v3); - limitRate.setUHarm4OverTime(v4); - limitRate.setUHarm5OverTime(v5); - limitRate.setUHarm6OverTime(v6); - limitRate.setUHarm7OverTime(v7); - limitRate.setUHarm8OverTime(v8); - limitRate.setUHarm9OverTime(v9); - limitRate.setUHarm10OverTime(v10); - limitRate.setUHarm11OverTime(v11); - limitRate.setUHarm12OverTime(v12); - limitRate.setUHarm13OverTime(v13); - limitRate.setUHarm14OverTime(v14); - limitRate.setUHarm15OverTime(v15); - limitRate.setUHarm16OverTime(v16); - limitRate.setUHarm17OverTime(v17); - limitRate.setUHarm18OverTime(v18); - limitRate.setUHarm19OverTime(v19); - limitRate.setUHarm20OverTime(v20); - limitRate.setUHarm21OverTime(v21); - limitRate.setUHarm22OverTime(v22); - limitRate.setUHarm23OverTime(v23); - limitRate.setUHarm24OverTime(v24); - limitRate.setUHarm25OverTime(v25); - limitRate.setIHarm2OverTime(i2); - limitRate.setIHarm3OverTime(i3); - limitRate.setIHarm4OverTime(i4); - limitRate.setIHarm5OverTime(i5); - limitRate.setIHarm6OverTime(i6); - limitRate.setIHarm7OverTime(i7); - limitRate.setIHarm8OverTime(i8); - limitRate.setIHarm9OverTime(i9); - limitRate.setIHarm10OverTime(i10); - limitRate.setIHarm11OverTime(i11); - limitRate.setIHarm12OverTime(i12); - limitRate.setIHarm13OverTime(i13); - limitRate.setIHarm14OverTime(i14); - limitRate.setIHarm15OverTime(i15); - limitRate.setIHarm16OverTime(i16); - limitRate.setIHarm17OverTime(i17); - limitRate.setIHarm18OverTime(i18); - limitRate.setIHarm19OverTime(i19); - limitRate.setIHarm20OverTime(i20); - limitRate.setIHarm21OverTime(i21); - limitRate.setIHarm22OverTime(i22); - limitRate.setIHarm23OverTime(i23); - limitRate.setIHarm24OverTime(i24); - limitRate.setIHarm25OverTime(i25); - limitRate.setInuHarm1OverTime(uHarm1); - limitRate.setInuHarm2OverTime(uHarm2); - limitRate.setInuHarm3OverTime(uHarm3); - limitRate.setInuHarm4OverTime(uHarm4); - limitRate.setInuHarm5OverTime(uHarm5); - limitRate.setInuHarm6OverTime(uHarm6); - limitRate.setInuHarm7OverTime(uHarm7); - limitRate.setInuHarm8OverTime(uHarm8); - limitRate.setInuHarm9OverTime(uHarm9); - limitRate.setInuHarm10OverTime(uHarm10); - limitRate.setInuHarm11OverTime(uHarm11); - limitRate.setInuHarm12OverTime(uHarm12); - limitRate.setInuHarm13OverTime(uHarm13); - limitRate.setInuHarm14OverTime(uHarm14); - limitRate.setInuHarm15OverTime(uHarm15); - limitRate.setInuHarm16OverTime(uHarm16); - limitRate.setUBalanceOverTime(thd); - limitRate.setVoltageDevOverTime(uDev); - limitRate.setFlickerOverTime(flicker); - return limitRate; - } - - - /** - * @Description: 插入influxdb - * @Param: [list, time] - * @return: void - * @Author: clam - * @Date: 2022/10/21 - */ - private void insert(List list, long time){ - List records = new ArrayList<>(); - list.forEach(item->{ - Map tags = new HashMap<>(); - Map fields = new HashMap<>(); - tags.put("line_id",item.getLineId()); - tags.put("phasic_type",item.getPhasicType()); - fields.put("all_time",item.getAllTime()); - fields.put("flicker_all_time",item.getFlickerAllTime()); - fields.put("flicker_overtime",item.getFlickerOverTime()); - fields.put("freq_dev_overtime",item.getFreqDevOverTime()); - fields.put("ubalance_overtime",item.getUBalanceOverTime()); - fields.put("uaberrance_overtime",item.getUAberranceOverTime()); - fields.put("i_neg_overtime",item.getINegOverTime()); - fields.put("voltage_dev_overtime",item.getVoltageDevOverTime()); - fields.put("uharm_2_overtime",item.getUHarm2OverTime()); - fields.put("uharm_3_overtime",item.getUHarm3OverTime()); - fields.put("uharm_4_overtime",item.getUHarm4OverTime()); - fields.put("uharm_5_overtime",item.getUHarm5OverTime()); - fields.put("uharm_6_overtime",item.getUHarm6OverTime()); - fields.put("uharm_7_overtime",item.getUHarm7OverTime()); - fields.put("uharm_8_overtime",item.getUHarm8OverTime()); - fields.put("uharm_9_overtime",item.getUHarm9OverTime()); - fields.put("uharm_10_overtime",item.getUHarm10OverTime()); - fields.put("uharm_11_overtime",item.getUHarm11OverTime()); - fields.put("uharm_12_overtime",item.getUHarm12OverTime()); - fields.put("uharm_13_overtime",item.getUHarm13OverTime()); - fields.put("uharm_14_overtime",item.getUHarm14OverTime()); - fields.put("uharm_15_overtime",item.getUHarm15OverTime()); - fields.put("uharm_16_overtime",item.getUHarm16OverTime()); - fields.put("uharm_17_overtime",item.getUHarm17OverTime()); - fields.put("uharm_18_overtime",item.getUHarm18OverTime()); - fields.put("uharm_19_overtime",item.getUHarm19OverTime()); - fields.put("uharm_20_overtime",item.getUHarm20OverTime()); - fields.put("uharm_21_overtime",item.getUHarm21OverTime()); - fields.put("uharm_22_overtime",item.getUHarm22OverTime()); - fields.put("uharm_23_overtime",item.getUHarm23OverTime()); - fields.put("uharm_24_overtime",item.getUHarm24OverTime()); - fields.put("uharm_25_overtime",item.getUHarm25OverTime()); - fields.put("iharm_2_overtime",item.getIHarm2OverTime()); - fields.put("iharm_3_overtime",item.getIHarm3OverTime()); - fields.put("iharm_4_overtime",item.getIHarm4OverTime()); - fields.put("iharm_5_overtime",item.getIHarm5OverTime()); - fields.put("iharm_6_overtime",item.getIHarm6OverTime()); - fields.put("iharm_7_overtime",item.getIHarm7OverTime()); - fields.put("iharm_8_overtime",item.getIHarm8OverTime()); - fields.put("iharm_9_overtime",item.getIHarm9OverTime()); - fields.put("iharm_10_overtime",item.getIHarm10OverTime()); - fields.put("iharm_11_overtime",item.getIHarm11OverTime()); - fields.put("iharm_12_overtime",item.getIHarm12OverTime()); - fields.put("iharm_13_overtime",item.getIHarm13OverTime()); - fields.put("iharm_14_overtime",item.getIHarm14OverTime()); - fields.put("iharm_15_overtime",item.getIHarm15OverTime()); - fields.put("iharm_16_overtime",item.getIHarm16OverTime()); - fields.put("iharm_17_overtime",item.getIHarm17OverTime()); - fields.put("iharm_18_overtime",item.getIHarm18OverTime()); - fields.put("iharm_19_overtime",item.getIHarm19OverTime()); - fields.put("iharm_20_overtime",item.getIHarm20OverTime()); - fields.put("iharm_21_overtime",item.getIHarm21OverTime()); - fields.put("iharm_22_overtime",item.getIHarm22OverTime()); - fields.put("iharm_23_overtime",item.getIHarm23OverTime()); - fields.put("iharm_24_overtime",item.getIHarm24OverTime()); - fields.put("iharm_25_overtime",item.getIHarm25OverTime()); - fields.put("inuharm_1_overtime",item.getInuHarm1OverTime()); - fields.put("inuharm_2_overtime",item.getInuHarm2OverTime()); - fields.put("inuharm_3_overtime",item.getInuHarm3OverTime()); - fields.put("inuharm_4_overtime",item.getInuHarm4OverTime()); - fields.put("inuharm_5_overtime",item.getInuHarm5OverTime()); - fields.put("inuharm_6_overtime",item.getInuHarm6OverTime()); - fields.put("inuharm_7_overtime",item.getInuHarm7OverTime()); - fields.put("inuharm_8_overtime",item.getInuHarm8OverTime()); - fields.put("inuharm_9_overtime",item.getInuHarm9OverTime()); - fields.put("inuharm_10_overtime",item.getInuHarm10OverTime()); - fields.put("inuharm_11_overtime",item.getInuHarm11OverTime()); - fields.put("inuharm_12_overtime",item.getInuHarm12OverTime()); - fields.put("inuharm_13_overtime",item.getInuHarm13OverTime()); - fields.put("inuharm_14_overtime",item.getInuHarm14OverTime()); - fields.put("inuharm_15_overtime",item.getInuHarm15OverTime()); - fields.put("inuharm_16_overtime",item.getInuHarm16OverTime()); - Point point = influxDbUtils.pointBuilder(InfluxDBPublicParam.LIMIT_RATE, time, TimeUnit.MILLISECONDS, tags, fields); - BatchPoints batchPoints = BatchPoints.database(influxDbUtils.getDbName ()).tag(InfluxDBPublicParam.LINE_ID, item.getLineId()).tag(InfluxDBPublicParam.PHASIC_TYPE,item.getPhasicType()).retentionPolicy("").consistency(InfluxDB.ConsistencyLevel.ALL).build(); - batchPoints.point(point); - records.add(batchPoints.lineProtocol()); - }); - influxDbUtils.batchInsert(influxDbUtils.getDbName (),"", InfluxDB.ConsistencyLevel.ALL, records); - } - - public static void main(String[] args) { - LimitRate limitRate = new LimitRate(); - limitRate.setAllTime (0); - limitRate.setFlickerAllTime (0); - LimitRatePO limitRatePO = new LimitRatePO (); - BeanUtils.copyProperties (limitRate, limitRatePO); - System.out.println ("limitRatePO:"+ limitRatePO.getAllTime ()); - } - - - -} diff --git a/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/Impl/line/LimitRateServiceImpl.java b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/Impl/line/LimitRateServiceImpl.java index fa3d2b327..98a5c323e 100644 --- a/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/Impl/line/LimitRateServiceImpl.java +++ b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/Impl/line/LimitRateServiceImpl.java @@ -1,20 +1,1155 @@ -//package com.njcn.prepare.harmonic.service.mysql.Impl.line; -// -//import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -//import com.njcn.prepare.harmonic.mapper.mysql.line.LimitRateMapper; -//import com.njcn.prepare.harmonic.service.mysql.line.LimitRateService; -//import com.njcn.process.pojo.po.LimitRate; -//import org.springframework.stereotype.Service; -// -///** -// *

-// * 服务实现类 -// *

-// * -// * @author lxp -// * @since 2023-03-16 -// */ -//@Service -//public class LimitRateServiceImpl extends ServiceImpl implements LimitRateService { -// -//} +package com.njcn.prepare.harmonic.service.mysql.Impl.line; + +import cn.hutool.core.date.DatePattern; +import cn.hutool.core.date.LocalDateTimeUtil; +import com.github.jeffreyning.mybatisplus.service.MppServiceImpl; +import com.njcn.common.utils.NjcnBeanUtil; +import com.njcn.device.biz.commApi.CommTerminalGeneralClient; +import com.njcn.device.biz.pojo.po.Overlimit; +import com.njcn.harmonic.pojo.po.LimitRate; +import com.njcn.harmonic.pojo.po.LimitRatePO; +import com.njcn.harmonic.pojo.po.day.RStatLimitRateDPO; +import com.njcn.influx.constant.InfluxDbSqlConstant; +import com.njcn.influx.imapper.*; +import com.njcn.influx.pojo.constant.InfluxDBTableConstant; +import com.njcn.influx.pojo.po.*; +import com.njcn.influx.query.InfluxQueryWrapper; +import com.njcn.prepare.bo.CalculatedParam; +import com.njcn.prepare.harmonic.mapper.mysql.line.LimitRatePOMapper; +import com.njcn.prepare.harmonic.service.mysql.day.IRStatLimitRateDService; +import com.njcn.prepare.harmonic.service.mysql.line.LimitRateService; +import lombok.AllArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.collections4.ListUtils; +import org.springframework.scheduling.annotation.Async; +import org.springframework.stereotype.Component; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.util.CollectionUtils; + +import java.time.Instant; +import java.time.LocalDateTime; +import java.util.*; +import java.util.stream.Collectors; + +/** + * Description: + * 接口文档访问地址:http://serverIP:port/swagger-ui.html + * Date: 2022/10/18 10:00【需求编号】 + * + * @author clam + * @version V1.0.0 + */ + +@Slf4j +@Component +@AllArgsConstructor +public class LimitRateServiceImpl extends MppServiceImpl implements LimitRateService { + private final CommTerminalGeneralClient commTerminalGeneralClient; + private final IRStatLimitRateDService statLimitRateDService; + private final DataVMapper dataVMapper; + private final DataPltMapper dataPltMapper; + private final DataHarmRateVMapper dataHarmRateVMapper; + private final IDataIMapper dataIMapper; + private final DataInHarmVMapper dataInHarmVMapper; + + /*********************************************新算法***********************************************************/ + @Override + @Transactional(rollbackFor = {Exception.class}) + @Async("asyncExecutor") + public void limitRate(CalculatedParam calculatedParam) { + log.info(LocalDateTime.now()+"r_stat_limit_rate_d开始执行=======》"); + List list = new ArrayList<>(); + List list1 = new ArrayList<>(); + List list2 = new ArrayList<>(); + List list3 = new ArrayList<>(); + List list4 = new ArrayList<>(); + List list5 = new ArrayList<>(); + List list6 = new ArrayList<>(); + List list7 = new ArrayList<>(); + List list8 = new ArrayList<>(); + List list9 = new ArrayList<>(); + List list10 = new ArrayList<>(); + List list11 = new ArrayList<>(); + List lineIds = calculatedParam.getIdList(); + String startTime = LocalDateTimeUtil.format( + LocalDateTimeUtil.beginOfDay(LocalDateTimeUtil.parse(calculatedParam.getDataDate(), DatePattern.NORM_DATE_PATTERN)), + DatePattern.NORM_DATETIME_PATTERN + ); + String endTime = LocalDateTimeUtil.format( + LocalDateTimeUtil.endOfDay(LocalDateTimeUtil.parse(calculatedParam.getDataDate(), DatePattern.NORM_DATE_PATTERN)), + DatePattern.NORM_DATETIME_PATTERN + ); + //获取所有监测点的限值 + List overLimitList = commTerminalGeneralClient.getAllLineOverLimit().getData(); + Map> overLimitMap = overLimitList.stream().collect(Collectors.groupingBy(Overlimit::getId)); + //以尺寸100分片,查询数据 + List> pendingIds = ListUtils.partition(lineIds,100); + for (List pendingId : pendingIds) { + list1.addAll(getAllTime(pendingId, startTime, endTime)); + list2.addAll(getFlickerAllTime(pendingId, startTime, endTime)); + list3.addAll(getDataHarmRateV(pendingId, startTime, endTime)); + list4.addAll(getDataI(pendingId, startTime, endTime)); + list5.addAll(getDataInHarmV(pendingId, startTime, endTime)); + list6.addAll(getDataVThd(pendingId, startTime, endTime)); + list7.addAll(getDataVUnbalance(pendingId, startTime, endTime)); + list8.addAll(getDataINeg(pendingId, startTime, endTime)); + list9.addAll(getDataVFreq(pendingId, startTime, endTime)); + list10.addAll(getDataVDev(pendingId, startTime, endTime)); + list11.addAll(getDataPlt(pendingId, startTime, endTime)); + } + //数据处理,按监测点分组 + Map> map1 = list1.stream().collect(Collectors.groupingBy(DataV::getLineId)); + Map> map2 = list2.stream().collect(Collectors.groupingBy(DataPlt::getLineId)); + Map> map3 = list3.stream().collect(Collectors.groupingBy(DataHarmRateV::getLineId)); + Map> map4 = list4.stream().collect(Collectors.groupingBy(DataI::getLineId)); + Map> map5 = list5.stream().collect(Collectors.groupingBy(DataInHarmV::getLineId)); + Map> map6 = list6.stream().collect(Collectors.groupingBy(DataV::getLineId)); + Map> map7 = list7.stream().collect(Collectors.groupingBy(DataV::getLineId)); + Map> map8 = list8.stream().collect(Collectors.groupingBy(DataI::getLineId)); + Map> map9 = list9.stream().collect(Collectors.groupingBy(DataV::getLineId)); + Map> map10 = list10.stream().collect(Collectors.groupingBy(DataV::getLineId)); + Map> map11 = list11.stream().collect(Collectors.groupingBy(DataPlt::getLineId)); + for (String item : lineIds) { + List result = getData(overLimitMap.get(item).get(0), map1.get(item), map2.get(item), map3.get(item), map4.get(item), map5.get(item), map6.get(item), map7.get(item), map8.get(item), map9.get(item), map10.get(item), map11.get(item)); + List collect = result.stream().map(t -> { + RStatLimitRateDPO po = new RStatLimitRateDPO(); + NjcnBeanUtil.copyPropertiesIgnoreCase(t, po); + po.setTime(LocalDateTimeUtil.parseDate(calculatedParam.getDataDate(), DatePattern.NORM_DATE_PATTERN)); + return po; + }).collect(Collectors.toList()); + list.addAll(collect); + } + if (!CollectionUtils.isEmpty(list)){ + /*插入mysql*/ + statLimitRateDService.saveOrUpdateBatchByMultiId(list,1000); + } + } + + /** + * 功能描述:获取influxDB -> data_v -> 总计算次数(用data_v中phasic_type=A,value_type=avg,quality_flag=0来参与统计) + * + * @param lineIndex 监测点 + * @param startTime 开始时间 + * @param endTime 结束时间 + * @return + * @date 2022/5/23 10:51 + */ + public List getAllTime(List lineIndex, String startTime, String endTime) { + InfluxQueryWrapper influxQueryWrapper = new InfluxQueryWrapper(DataV.class); + influxQueryWrapper.regular(DataV::getLineId, lineIndex) + .eq(DataV::getValueType, InfluxDbSqlConstant.AVG_WEB) + .eq(DataV::getPhasicType, InfluxDBTableConstant.PHASE_TYPE_A) + .eq(DataV::getQualityFlag, InfluxDBTableConstant.NORMAL) + .count(DataV::getFreq,DataV::getAllTime) + .groupBy(DataV::getLineId) + .between(DataV::getTime, startTime, endTime); + return dataVMapper.getStatisticsByWraper(influxQueryWrapper); + } + + /** + * 功能描述:获取influxDB -> data_plt -> 闪变总计算次数(用data_plt中phasic_type=A,quality_flag=0来参与统计) + * + * @param lineIndex 监测点 + * @param startTime 开始时间 + * @param endTime 结束时间 + * @return + * @date 2022/5/23 10:51 + */ + public List getFlickerAllTime(List lineIndex, String startTime, String endTime) { + InfluxQueryWrapper influxQueryWrapper = new InfluxQueryWrapper(DataPlt.class); + influxQueryWrapper.regular(DataPlt::getLineId, lineIndex) + .eq(DataPlt::getPhaseType, InfluxDBTableConstant.PHASE_TYPE_A) + .eq(DataPlt::getQualityFlag, InfluxDBTableConstant.NORMAL) + .count(DataPlt::getPlt,DataPlt::getFlickerAllTime) + .groupBy(DataPlt::getLineId) + .between(DataPlt::getTime, startTime, endTime); + return dataPltMapper.getStatisticsByWraper(influxQueryWrapper); + } + + /** + * 功能描述:获取influxDB -> data_harmrate_v -> 2-25次谐波电压含有率 -> A相||B相||C相的日95%概率值 + * + * @param lineIndex 监测点 + * @param startTime 开始时间 + * @param endTime 结束时间 + * @return + * @date 2022/5/23 10:51 + */ + public List getDataHarmRateV(List lineIndex, String startTime, String endTime) { + InfluxQueryWrapper influxQueryWrapper = new InfluxQueryWrapper(DataHarmRateV.class); + influxQueryWrapper.regular(DataHarmRateV::getLineId, lineIndex) + .regular(DataHarmRateV::getPhaseType, Arrays.asList(InfluxDBTableConstant.PHASE_TYPE_A,InfluxDBTableConstant.PHASE_TYPE_B,InfluxDBTableConstant.PHASE_TYPE_C)) + .eq(DataHarmRateV::getValueType, InfluxDBTableConstant.CP95) + .eq(DataHarmRateV::getQualityFlag, InfluxDBTableConstant.NORMAL) + .between(DataHarmRateV::getTime, startTime, endTime); + return dataHarmRateVMapper.getStatisticsByWraper(influxQueryWrapper); + } + + /** + * 功能描述:获取influxDB -> data_i -> 2-25次谐波电流 -> 日95%概率值 + * + * @param lineIndex 监测点Index + * @param startTime 开始时间 + * @param endTime 结束时间 + * @Date: 2022/10/18 + */ + public List getDataI(List lineIndex, String startTime, String endTime) { + InfluxQueryWrapper influxQueryWrapper = new InfluxQueryWrapper(DataI.class); + influxQueryWrapper.regular(DataI::getLineId, lineIndex) + .regular(DataI::getPhaseType, Arrays.asList(InfluxDBTableConstant.PHASE_TYPE_A,InfluxDBTableConstant.PHASE_TYPE_B,InfluxDBTableConstant.PHASE_TYPE_C)) + .eq(DataI::getValueType, InfluxDBTableConstant.CP95) + .eq(DataI::getQualityFlag, InfluxDBTableConstant.NORMAL) + .between(DataI::getTime, startTime, endTime); + return dataIMapper.getStatisticsByWraper(influxQueryWrapper); + } + + /** + * 功能描述:获取influxDB -> data_inharm_v -> 0.5-15.5次间谐波电压含有率 -> 日95%概率值 + * + * @param lineIndex 监测点index + * @param startTime 开始时间 + * @param endTime 结束时间 + * @return + * @date 2022/5/23 10:51 + */ + public List getDataInHarmV(List lineIndex, String startTime, String endTime) { + InfluxQueryWrapper influxQueryWrapper = new InfluxQueryWrapper(DataInHarmV.class); + influxQueryWrapper.regular(DataInHarmV::getLineId, lineIndex) + .regular(DataInHarmV::getPhaseType, Arrays.asList(InfluxDBTableConstant.PHASE_TYPE_A,InfluxDBTableConstant.PHASE_TYPE_B,InfluxDBTableConstant.PHASE_TYPE_C)) + .eq(DataInHarmV::getValueType, InfluxDBTableConstant.CP95) + .eq(DataInHarmV::getQualityFlag, InfluxDBTableConstant.NORMAL) + .between(DataInHarmV::getTime, startTime, endTime); + return dataInHarmVMapper.getStatisticsByWraper(influxQueryWrapper); + } + + /** + * 功能描述:获取influxDB -> data_v -> 电压总谐波畸变率 -> 日95%概率值 + * + * @param lineIndex 监测点Index + * @param startTime 开始时间 + * @param endTime 结束时间 + * @return + * @date 2022/5/23 10:51 + */ + public List getDataVThd(List lineIndex, String startTime, String endTime) { + InfluxQueryWrapper influxQueryWrapper = new InfluxQueryWrapper(DataV.class); + influxQueryWrapper.regular(DataV::getLineId, lineIndex) + .eq(DataV::getValueType, InfluxDbSqlConstant.CP95) + .regular(DataV::getPhasicType, Arrays.asList(InfluxDBTableConstant.PHASE_TYPE_A,InfluxDBTableConstant.PHASE_TYPE_B,InfluxDBTableConstant.PHASE_TYPE_C)) + .eq(DataV::getQualityFlag, InfluxDBTableConstant.NORMAL) + .between(DataV::getTime, startTime, endTime); + return dataVMapper.getStatisticsByWraper(influxQueryWrapper); + } + + /** + * 功能描述:获取influxDB -> data_v -> 负序电压不平衡度 -> 最大值 && 日95%概率值 + * + * @param lineIndex 监测点lineIndex + * @param startTime 开始时间 + * @param endTime 结束时间 + * @return + * @date 2022/5/23 10:51 + */ + public List getDataVUnbalance(List lineIndex, String startTime, String endTime) { + InfluxQueryWrapper influxQueryWrapper = new InfluxQueryWrapper(DataV.class); + influxQueryWrapper.regular(DataV::getLineId, lineIndex) + .regular(DataV::getValueType, Arrays.asList(InfluxDbSqlConstant.CP95,InfluxDbSqlConstant.MAX)) + .eq(DataV::getPhasicType, InfluxDBTableConstant.PHASE_TYPE_T) + .eq(DataV::getQualityFlag, InfluxDBTableConstant.NORMAL) + .between(DataV::getTime, startTime, endTime); + return dataVMapper.getStatisticsByWraper(influxQueryWrapper); + } + + /** + * 功能描述:获取influxDB -> data_i -> 负序电流 -> 最大值 && 日95%概率值 + * + * @param lineIndex 监测点lineIndex + * @param startTime 开始时间 + * @param endTime 结束时间 + * @return + * @date 2022/5/23 10:51 + */ + public List getDataINeg(List lineIndex, String startTime, String endTime) { + InfluxQueryWrapper influxQueryWrapper = new InfluxQueryWrapper(DataI.class); + influxQueryWrapper.regular(DataI::getLineId, lineIndex) + .eq(DataI::getPhaseType, InfluxDBTableConstant.PHASE_TYPE_T) + .regular(DataI::getValueType, Arrays.asList(InfluxDbSqlConstant.CP95,InfluxDbSqlConstant.MAX)) + .eq(DataI::getQualityFlag, InfluxDBTableConstant.NORMAL) + .between(DataI::getTime, startTime, endTime); + return dataIMapper.getStatisticsByWraper(influxQueryWrapper); + } + + /** + * 功能描述:获取influxDB -> data_v -> 频率偏差 -> 最大值 && 最小值 + * + * @param lineIndex 监测点lineIndex + * @param startTime 开始时间 + * @param endTime 结束时间 + * @return + * @date 2022/5/23 10:51 + */ + public List getDataVFreq(List lineIndex, String startTime, String endTime) { + InfluxQueryWrapper influxQueryWrapper = new InfluxQueryWrapper(DataV.class); + influxQueryWrapper.regular(DataV::getLineId, lineIndex) + .regular(DataV::getValueType, Arrays.asList(InfluxDbSqlConstant.MIN,InfluxDbSqlConstant.MAX)) + .eq(DataV::getPhasicType, InfluxDBTableConstant.PHASE_TYPE_T) + .eq(DataV::getQualityFlag, InfluxDBTableConstant.NORMAL) + .between(DataV::getTime, startTime, endTime); + return dataVMapper.getStatisticsByWraper(influxQueryWrapper); + } + + /** + * 功能描述:获取influxDB -> data_v -> 电压偏差 -> 最大值 + * + * @param lineIndex 监测点lineIndex + * @param startTime 开始时间 + * @param endTime 结束时间 + * @return + * @date 2022/5/23 10:51 + */ + public List getDataVDev(List lineIndex, String startTime, String endTime) { + InfluxQueryWrapper influxQueryWrapper = new InfluxQueryWrapper(DataV.class); + influxQueryWrapper.regular(DataV::getLineId, lineIndex) + .eq(DataV::getValueType, InfluxDbSqlConstant.MAX) + .regular(DataV::getPhasicType, Arrays.asList(InfluxDBTableConstant.PHASE_TYPE_A,InfluxDBTableConstant.PHASE_TYPE_B,InfluxDBTableConstant.PHASE_TYPE_C)) + .eq(DataV::getQualityFlag, InfluxDBTableConstant.NORMAL) + .between(DataV::getTime, startTime, endTime); + return dataVMapper.getStatisticsByWraper(influxQueryWrapper); + } + + /** + * 功能描述:获取influxDB -> data_plt -> 长时间闪变 -> 最大值 + * + * @param lineIndex 监测点lineIndex + * @param startTime 开始时间 + * @param endTime 结束时间 + * @return + * @date 2022/5/23 10:51 + */ + public List getDataPlt(List lineIndex, String startTime, String endTime) { + InfluxQueryWrapper influxQueryWrapper = new InfluxQueryWrapper(DataPlt.class); + influxQueryWrapper.regular(DataPlt::getLineId, lineIndex) + .regular(DataPlt::getPhaseType, Arrays.asList(InfluxDBTableConstant.PHASE_TYPE_A,InfluxDBTableConstant.PHASE_TYPE_B,InfluxDBTableConstant.PHASE_TYPE_C)) + .eq(DataPlt::getQualityFlag, InfluxDBTableConstant.NORMAL) + .between(DataPlt::getTime, startTime, endTime); + return dataPltMapper.getStatisticsByWraper(influxQueryWrapper); + } + /*********************************************新算法结束***********************************************************/ + + + /** + * @Description: getData + * @Param: [overlimit, allTimeList, flickerAllTimeList, dataHarmRateVPOList, dataIPOList, dataInHarmVPOList, dataVPOList, dataVPOUnbalanceList, dataIPONegList, dataVPOFreqList, dataVPODevList, dataPltPOList] + * @return: java.util.List + * @Author: clam + * @Date: 2022/10/18 + */ + private List getData(Overlimit overlimit, List allTimeList, + List flickerAllTimeList, List dataHarmRateVPOList, + List dataIPOList, List dataInHarmVPOList, + List dataVPOList, List dataVPOUnbalanceList, List dataIPONegList, + List dataVPOFreqList, List dataVPODevList, List dataPltPOList) { + List result = new ArrayList<> ( ); + + Map> harmRateVByPhaseType = new HashMap<> ( ); + Map> dataIByPhaseType = new HashMap<> ( ); + Map> dataInHarmVPhaseType = new HashMap<> ( ); + Map> dataVPhaseType = new HashMap<> ( ); + Map> dataVDevPhaseType = new HashMap<> ( ); + Map> dataPltPhaseType = new HashMap<> ( ); + Map> harmRateVByTime = new HashMap<> ( ); + Map> dataIByTime = new HashMap<> ( ); + Map> dataInHarmVByTime = new HashMap<> ( ); + Map> dataVByTime = new HashMap<> ( ); + Map> dataVUnbalanceByTime = new HashMap<> ( ); + Map> dataINegByTime = new HashMap<> ( ); + Map> dataVFreqByTime = new HashMap<> ( ); + Map> dataVDevByTime = new HashMap<> ( ); + Map> dataPltByTime = new HashMap<> ( ); + Integer allTime = 0; + Integer flickerAllTime = 0; + if (!CollectionUtils.isEmpty (allTimeList)) { + allTime = allTimeList.get (0).getAllTime ( ); + } + if (!CollectionUtils.isEmpty (flickerAllTimeList)) { + flickerAllTime = flickerAllTimeList.get (0).getFlickerAllTime (); + } + if (!CollectionUtils.isEmpty (dataHarmRateVPOList)) { + harmRateVByPhaseType = dataHarmRateVPOList.stream ( ).collect (Collectors.groupingBy (DataHarmRateV::getPhaseType)); + harmRateVByTime = dataHarmRateVPOList.stream ( ).collect (Collectors.groupingBy (DataHarmRateV::getTime)); + } + if (!CollectionUtils.isEmpty (dataIPOList)) { + dataIByPhaseType = dataIPOList.stream ( ).collect (Collectors.groupingBy (DataI::getPhaseType)); + dataIByTime = dataIPOList.stream ( ).collect (Collectors.groupingBy (DataI::getTime)); + } + if (!CollectionUtils.isEmpty (dataInHarmVPOList)) { + dataInHarmVPhaseType = dataInHarmVPOList.stream ( ).collect (Collectors.groupingBy (DataInHarmV::getPhaseType)); + dataInHarmVByTime = dataInHarmVPOList.stream ( ).collect (Collectors.groupingBy (DataInHarmV::getTime)); + } + if (!CollectionUtils.isEmpty (dataVPOList)) { + dataVPhaseType = dataVPOList.stream ( ).collect (Collectors.groupingBy (DataV::getPhasicType)); + dataVByTime = dataVPOList.stream ( ).collect (Collectors.groupingBy (DataV::getTime)); + } + if (!CollectionUtils.isEmpty (dataVPOUnbalanceList)) { + dataVUnbalanceByTime = dataVPOUnbalanceList.stream ( ).collect (Collectors.groupingBy (DataV::getTime)); + } + if (!CollectionUtils.isEmpty (dataIPONegList)) { + dataINegByTime = dataIPONegList.stream ( ).collect (Collectors.groupingBy (DataI::getTime)); + } + if (!CollectionUtils.isEmpty (dataVPOFreqList)) { + dataVFreqByTime = dataVPOFreqList.stream ( ).collect (Collectors.groupingBy (DataV::getTime)); + } + if (!CollectionUtils.isEmpty (dataVPODevList)) { + dataVDevPhaseType = dataVPODevList.stream ( ).collect (Collectors.groupingBy (DataV::getPhasicType)); + dataVDevByTime = dataVPODevList.stream ( ).collect (Collectors.groupingBy (DataV::getTime)); + } + if (!CollectionUtils.isEmpty (dataPltPOList)) { + dataPltPhaseType = dataPltPOList.stream ( ).collect (Collectors.groupingBy (DataPlt::getPhaseType)); + dataPltByTime = dataPltPOList.stream ( ).collect (Collectors.groupingBy (DataPlt::getTime)); + } + LimitRate a = limitRateData (overlimit, allTime, flickerAllTime, "A", overlimit.getId (), harmRateVByPhaseType.get ("A"), dataIByPhaseType.get ("A"), dataInHarmVPhaseType.get ("A"), dataVPhaseType.get ("A"), dataVDevPhaseType.get ("A"), dataPltPhaseType.get ("A")); + LimitRate b = limitRateData (overlimit, allTime, flickerAllTime, "B", overlimit.getId (), harmRateVByPhaseType.get ("B"), dataIByPhaseType.get ("B"), dataInHarmVPhaseType.get ("B"), dataVPhaseType.get ("B"), dataVDevPhaseType.get ("B"), dataPltPhaseType.get ("B")); + LimitRate c = limitRateData (overlimit, allTime, flickerAllTime, "C", overlimit.getId (), harmRateVByPhaseType.get ("C"), dataIByPhaseType.get ("C"), dataInHarmVPhaseType.get ("C"), dataVPhaseType.get ("C"), dataVDevPhaseType.get ("C"), dataPltPhaseType.get ("C")); + LimitRate t = limitRateDataT (overlimit, allTime, flickerAllTime, overlimit.getId (), harmRateVByTime, dataIByTime, dataInHarmVByTime, dataVByTime, dataVUnbalanceByTime, dataINegByTime, dataVFreqByTime, dataVDevByTime, dataPltByTime); + result.add (a); + result.add (b); + result.add (c); + result.add (t); + + return result; + } + + + /** + * @Description: limitRateData + * @Param: [overlimit, allTime, flickerAllTime, phasicType, lineId, dataHarmRateVPOList, dataIPOList, dataInHarmVPOList, dataVPOList, dataVUnbalanceList, dataINegList] + * @return: com.njcn.harmonic.pojo.po.LimitRate + * @Author: clam + * @Date: 2022/10/18 + */ + public LimitRate limitRateData(Overlimit overlimit, Integer allTime, Integer + flickerAllTime, String phasicType, String lineId, + List dataHarmRateVPOList, + List dataIPOList, List dataInHarmVPOList, + List dataVPOList, List dataVPODevList, List dataPltPOList) { + LimitRate limitRate = new LimitRate ( ); + int v2 = 0, v3 = 0, v4 = 0, v5 = 0, v6 = 0, v7 = 0, v8 = 0, v9 = 0, v10 = 0, v11 = 0, v12 = 0, v13 = 0, v14 = 0, v15 = 0, v16 = 0, v17 = 0, v18 = 0, v19 = 0, v20 = 0, v21 = 0, v22 = 0, v23 = 0, v24 = 0, v25 = 0; + int i2 = 0, i3 = 0, i4 = 0, i5 = 0, i6 = 0, i7 = 0, i8 = 0, i9 = 0, i10 = 0, i11 = 0, i12 = 0, i13 = 0, i14 = 0, i15 = 0, i16 = 0, i17 = 0, i18 = 0, i19 = 0, i20 = 0, i21 = 0, i22 = 0, i23 = 0, i24 = 0, i25 = 0; + int uHarm1 = 0, uHarm2 = 0, uHarm3 = 0, uHarm4 = 0, uHarm5 = 0, uHarm6 = 0, uHarm7 = 0, uHarm8 = 0, uHarm9 = 0, uHarm10 = 0, uHarm11 = 0, uHarm12 = 0, uHarm13 = 0, uHarm14 = 0, uHarm15 = 0, uHarm16 = 0; + int thd = 0, uDev = 0, flicker = 0; + //2-25次谐波电压含有率 + + if (!CollectionUtils.isEmpty (dataHarmRateVPOList)) { + for (DataHarmRateV item : dataHarmRateVPOList) { + if (item.getV2 ( ) > overlimit.getUharm2 ( )) { + v2++; + } + if (item.getV3 ( ) > overlimit.getUharm3 ( )) { + v3++; + } + if (item.getV4 ( ) > overlimit.getUharm4 ( )) { + v4++; + } + if (item.getV5 ( ) > overlimit.getUharm5 ( )) { + v5++; + } + if (item.getV6 ( ) > overlimit.getUharm6 ( )) { + v6++; + } + if (item.getV7 ( ) > overlimit.getUharm7 ( )) { + v7++; + } + if (item.getV8 ( ) > overlimit.getUharm8 ( )) { + v8++; + } + if (item.getV9 ( ) > overlimit.getUharm9 ( )) { + v9++; + } + if (item.getV10 ( ) > overlimit.getUharm10 ( )) { + v10++; + } + if (item.getV11 ( ) > overlimit.getUharm11 ( )) { + v11++; + } + if (item.getV12 ( ) > overlimit.getUharm12 ( )) { + v12++; + } + if (item.getV13 ( ) > overlimit.getUharm13 ( )) { + v13++; + } + if (item.getV14 ( ) > overlimit.getUharm14 ( )) { + v14++; + } + if (item.getV15 ( ) > overlimit.getUharm15 ( )) { + v15++; + } + if (item.getV16 ( ) > overlimit.getUharm16 ( )) { + v16++; + } + if (item.getV17 ( ) > overlimit.getUharm17 ( )) { + v17++; + } + if (item.getV18 ( ) > overlimit.getUharm18 ( )) { + v18++; + } + if (item.getV19 ( ) > overlimit.getUharm19 ( )) { + v19++; + } + if (item.getV20 ( ) > overlimit.getUharm20 ( )) { + v20++; + } + if (item.getV21 ( ) > overlimit.getUharm21 ( )) { + v21++; + } + if (item.getV22 ( ) > overlimit.getUharm22 ( )) { + v22++; + } + if (item.getV23 ( ) > overlimit.getUharm23 ( )) { + v23++; + } + if (item.getV24 ( ) > overlimit.getUharm24 ( )) { + v24++; + } + if (item.getV25 ( ) > overlimit.getUharm25 ( )) { + v25++; + } + } + } + //2-25次谐波电流 + if (!CollectionUtils.isEmpty (dataIPOList)) { + for (DataI item : dataIPOList) { + if (item.getI2 ( ) > overlimit.getIharm2 ( )) { + i2++; + } + if (item.getI3 ( ) > overlimit.getIharm3 ( )) { + i3++; + } + if (item.getI4 ( ) > overlimit.getIharm4 ( )) { + i4++; + } + if (item.getI5 ( ) > overlimit.getIharm5 ( )) { + i5++; + } + if (item.getI6 ( ) > overlimit.getIharm6 ( )) { + i6++; + } + if (item.getI7 ( ) > overlimit.getIharm7 ( )) { + i7++; + } + if (item.getI8 ( ) > overlimit.getIharm8 ( )) { + i8++; + } + if (item.getI9 ( ) > overlimit.getIharm9 ( )) { + i9++; + } + if (item.getI10 ( ) > overlimit.getIharm10 ( )) { + i10++; + } + if (item.getI11 ( ) > overlimit.getIharm11 ( )) { + i11++; + } + if (item.getI12 ( ) > overlimit.getIharm12 ( )) { + i12++; + } + if (item.getI13 ( ) > overlimit.getIharm13 ( )) { + i13++; + } + if (item.getI14 ( ) > overlimit.getIharm14 ( )) { + i14++; + } + if (item.getI15 ( ) > overlimit.getIharm15 ( )) { + i15++; + } + if (item.getI16 ( ) > overlimit.getIharm16 ( )) { + i16++; + } + if (item.getI17 ( ) > overlimit.getIharm17 ( )) { + i17++; + } + if (item.getI18 ( ) > overlimit.getIharm18 ( )) { + i18++; + } + if (item.getI19 ( ) > overlimit.getIharm19 ( )) { + i19++; + } + if (item.getI20 ( ) > overlimit.getIharm20 ( )) { + i20++; + } + if (item.getI21 ( ) > overlimit.getIharm21 ( )) { + i21++; + } + if (item.getI22 ( ) > overlimit.getIharm22 ( )) { + i22++; + } + if (item.getI23 ( ) > overlimit.getIharm23 ( )) { + i23++; + } + if (item.getI24 ( ) > overlimit.getIharm24 ( )) { + i24++; + } + if (item.getI25 ( ) > overlimit.getIharm25 ( )) { + i25++; + } + } + } + //0.5-15.5次间谐波电压含有率 + if (!CollectionUtils.isEmpty (dataInHarmVPOList)) { + for (DataInHarmV item : dataInHarmVPOList) { + if (item.getV1 ( ) > overlimit.getInuharm1 ( )) { + uHarm1++; + } + if (item.getV2 ( ) > overlimit.getInuharm2 ( )) { + uHarm2++; + } + if (item.getV3 ( ) > overlimit.getInuharm3 ( )) { + uHarm3++; + } + if (item.getV4 ( ) > overlimit.getInuharm4 ( )) { + uHarm4++; + } + if (item.getV5 ( ) > overlimit.getInuharm5 ( )) { + uHarm5++; + } + if (item.getV6 ( ) > overlimit.getInuharm6 ( )) { + uHarm6++; + } + if (item.getV7 ( ) > overlimit.getInuharm7 ( )) { + uHarm7++; + } + if (item.getV8 ( ) > overlimit.getInuharm8 ( )) { + uHarm8++; + } + if (item.getV9 ( ) > overlimit.getInuharm9 ( )) { + uHarm9++; + } + if (item.getV10 ( ) > overlimit.getInuharm10 ( )) { + uHarm10++; + } + if (item.getV11 ( ) > overlimit.getInuharm11 ( )) { + uHarm11++; + } + if (item.getV12 ( ) > overlimit.getInuharm12 ( )) { + uHarm12++; + } + if (item.getV13 ( ) > overlimit.getInuharm13 ( )) { + uHarm13++; + } + if (item.getV14 ( ) > overlimit.getInuharm14 ( )) { + uHarm14++; + } + if (item.getV15 ( ) > overlimit.getInuharm15 ( )) { + uHarm15++; + } + if (item.getV16 ( ) > overlimit.getInuharm16 ( )) { + uHarm16++; + } + } + } + //电压总谐波畸变率 + if (!CollectionUtils.isEmpty (dataVPOList)) { + for (DataV item : dataVPOList) { + if (item.getVThd ( ) > overlimit.getUaberrance ( )) { + thd++; + } + } + } + //电压上偏差、电压下偏差(根据vl_dev的正负判断是用哪个值判断越限) + if (!CollectionUtils.isEmpty (dataVPODevList)) { + for (DataV item : dataVPODevList) { + if (item.getVlDev() >= 0){ + if (item.getVlDev() > overlimit.getVoltageDev()){ + uDev++; + } + } else { + if (Math.abs(item.getVlDev()) > Math.abs(overlimit.getUvoltageDev())){ + uDev++; + } + } + } + } + //长时间闪变 + if (!CollectionUtils.isEmpty (dataPltPOList)) { + for (DataPlt item : dataPltPOList) { + if (item.getPlt ( ) > overlimit.getFlicker ( )) { + flicker++; + } + } + } + limitRate.setLineId (lineId); + limitRate.setPhasicType (phasicType); + limitRate.setAllTime (allTime); + limitRate.setFlickerAllTime (flickerAllTime); + limitRate.setUAberranceOverTime (0); + limitRate.setINegOverTime (0); + limitRate.setFreqDevOverTime (0); + limitRate.setUHarm2OverTime (v2); + limitRate.setUHarm3OverTime (v3); + limitRate.setUHarm4OverTime (v4); + limitRate.setUHarm5OverTime (v5); + limitRate.setUHarm6OverTime (v6); + limitRate.setUHarm7OverTime (v7); + limitRate.setUHarm8OverTime (v8); + limitRate.setUHarm9OverTime (v9); + limitRate.setUHarm10OverTime (v10); + limitRate.setUHarm11OverTime (v11); + limitRate.setUHarm12OverTime (v12); + limitRate.setUHarm13OverTime (v13); + limitRate.setUHarm14OverTime (v14); + limitRate.setUHarm15OverTime (v15); + limitRate.setUHarm16OverTime (v16); + limitRate.setUHarm17OverTime (v17); + limitRate.setUHarm18OverTime (v18); + limitRate.setUHarm19OverTime (v19); + limitRate.setUHarm20OverTime (v20); + limitRate.setUHarm21OverTime (v21); + limitRate.setUHarm22OverTime (v22); + limitRate.setUHarm23OverTime (v23); + limitRate.setUHarm24OverTime (v24); + limitRate.setUHarm25OverTime (v25); + limitRate.setIHarm2OverTime (i2); + limitRate.setIHarm3OverTime (i3); + limitRate.setIHarm4OverTime (i4); + limitRate.setIHarm5OverTime (i5); + limitRate.setIHarm6OverTime (i6); + limitRate.setIHarm7OverTime (i7); + limitRate.setIHarm8OverTime (i8); + limitRate.setIHarm9OverTime (i9); + limitRate.setIHarm10OverTime (i10); + limitRate.setIHarm11OverTime (i11); + limitRate.setIHarm12OverTime (i12); + limitRate.setIHarm13OverTime (i13); + limitRate.setIHarm14OverTime (i14); + limitRate.setIHarm15OverTime (i15); + limitRate.setIHarm16OverTime (i16); + limitRate.setIHarm17OverTime (i17); + limitRate.setIHarm18OverTime (i18); + limitRate.setIHarm19OverTime (i19); + limitRate.setIHarm20OverTime (i20); + limitRate.setIHarm21OverTime (i21); + limitRate.setIHarm22OverTime (i22); + limitRate.setIHarm23OverTime (i23); + limitRate.setIHarm24OverTime (i24); + limitRate.setIHarm25OverTime (i25); + limitRate.setInuHarm1OverTime (uHarm1); + limitRate.setInuHarm2OverTime (uHarm2); + limitRate.setInuHarm3OverTime (uHarm3); + limitRate.setInuHarm4OverTime (uHarm4); + limitRate.setInuHarm5OverTime (uHarm5); + limitRate.setInuHarm6OverTime (uHarm6); + limitRate.setInuHarm7OverTime (uHarm7); + limitRate.setInuHarm8OverTime (uHarm8); + limitRate.setInuHarm9OverTime (uHarm9); + limitRate.setInuHarm10OverTime (uHarm10); + limitRate.setInuHarm11OverTime (uHarm11); + limitRate.setInuHarm12OverTime (uHarm12); + limitRate.setInuHarm13OverTime (uHarm13); + limitRate.setInuHarm14OverTime (uHarm14); + limitRate.setInuHarm15OverTime (uHarm15); + limitRate.setInuHarm16OverTime (uHarm16); + limitRate.setUBalanceOverTime (thd); + limitRate.setVoltageDevOverTime (uDev); + limitRate.setFlickerOverTime (flicker); + return limitRate; + } + + + public LimitRate limitRateDataT(Overlimit overlimit, Integer allTime, Integer flickerAllTime, String lineId, Map> map1, Map> map2, Map> map3, Map> map4, Map> map5, Map> map6, Map> map7, Map> map8, Map> map9){ + LimitRate limitRate = new LimitRate(); + int v2 = 0,v3 = 0,v4 = 0,v5 = 0,v6 = 0,v7 = 0,v8 = 0,v9 = 0,v10 = 0,v11 = 0,v12 = 0,v13 = 0,v14 = 0,v15 = 0,v16 = 0,v17 = 0,v18 = 0,v19 = 0,v20 = 0,v21 = 0,v22 = 0,v23 = 0,v24 = 0,v25 = 0; + int i2 = 0,i3 = 0,i4 = 0,i5 = 0,i6 = 0,i7 = 0,i8 = 0,i9 = 0,i10 = 0,i11 = 0,i12 = 0,i13 = 0,i14 = 0,i15 = 0,i16 = 0,i17 = 0,i18 = 0,i19 = 0,i20 = 0,i21 = 0,i22 = 0,i23 = 0,i24 = 0,i25 = 0; + int uHarm1 = 0,uHarm2 = 0,uHarm3 = 0,uHarm4 = 0,uHarm5 = 0,uHarm6 = 0,uHarm7 = 0,uHarm8 = 0,uHarm9 = 0,uHarm10 = 0,uHarm11 = 0,uHarm12 = 0,uHarm13 = 0,uHarm14 = 0,uHarm15 = 0,uHarm16 = 0; + int thd = 0,uDev = 0,flicker = 0,freqDev = 0,uAberrance = 0,iNeg = 0; + //2-25次谐波电压含有率 + for (Instant time:map1.keySet()) { + List list = map1.get(time); + List l2 = list.stream().filter(s->s.getV2()>overlimit.getUharm2()).collect(Collectors.toList()); + if (!CollectionUtils.isEmpty(l2)){ + v2++; + } + List l3 = list.stream().filter(s->s.getV3()>overlimit.getUharm3()).collect(Collectors.toList()); + if (!CollectionUtils.isEmpty(l3)){ + v3++; + } + List l4 = list.stream().filter(s->s.getV4()>overlimit.getUharm4()).collect(Collectors.toList()); + if (!CollectionUtils.isEmpty(l4)){ + v4++; + } + List l5 = list.stream().filter(s->s.getV5()>overlimit.getUharm5()).collect(Collectors.toList()); + if (!CollectionUtils.isEmpty(l5)){ + v5++; + } + List l6 = list.stream().filter(s->s.getV6()>overlimit.getUharm6()).collect(Collectors.toList()); + if (!CollectionUtils.isEmpty(l6)){ + v6++; + } + List l7 = list.stream().filter(s->s.getV7()>overlimit.getUharm7()).collect(Collectors.toList()); + if (!CollectionUtils.isEmpty(l7)){ + v7++; + } + List l8 = list.stream().filter(s->s.getV8()>overlimit.getUharm8()).collect(Collectors.toList()); + if (!CollectionUtils.isEmpty(l8)){ + v8++; + } + List l9 = list.stream().filter(s->s.getV9()>overlimit.getUharm9()).collect(Collectors.toList()); + if (!CollectionUtils.isEmpty(l9)){ + v9++; + } + List l10 = list.stream().filter(s->s.getV10()>overlimit.getUharm10()).collect(Collectors.toList()); + if (!CollectionUtils.isEmpty(l10)){ + v10++; + } + List l11 = list.stream().filter(s->s.getV11()>overlimit.getUharm11()).collect(Collectors.toList()); + if (!CollectionUtils.isEmpty(l11)){ + v11++; + } + List l12 = list.stream().filter(s->s.getV12()>overlimit.getUharm12()).collect(Collectors.toList()); + if (!CollectionUtils.isEmpty(l12)){ + v12++; + } + List l13 = list.stream().filter(s->s.getV13()>overlimit.getUharm13()).collect(Collectors.toList()); + if (!CollectionUtils.isEmpty(l13)){ + v13++; + } + List l14 = list.stream().filter(s->s.getV14()>overlimit.getUharm14()).collect(Collectors.toList()); + if (!CollectionUtils.isEmpty(l14)){ + v14++; + } + List l15 = list.stream().filter(s->s.getV15()>overlimit.getUharm15()).collect(Collectors.toList()); + if (!CollectionUtils.isEmpty(l15)){ + v15++; + } + List l16 = list.stream().filter(s->s.getV16()>overlimit.getUharm16()).collect(Collectors.toList()); + if (!CollectionUtils.isEmpty(l16)){ + v16++; + } + List l17 = list.stream().filter(s->s.getV17()>overlimit.getUharm17()).collect(Collectors.toList()); + if (!CollectionUtils.isEmpty(l17)){ + v17++; + } + List l18 = list.stream().filter(s->s.getV18()>overlimit.getUharm18()).collect(Collectors.toList()); + if (!CollectionUtils.isEmpty(l18)){ + v18++; + } + List l19 = list.stream().filter(s->s.getV19()>overlimit.getUharm19()).collect(Collectors.toList()); + if (!CollectionUtils.isEmpty(l19)){ + v19++; + } + List l20 = list.stream().filter(s->s.getV20()>overlimit.getUharm20()).collect(Collectors.toList()); + if (!CollectionUtils.isEmpty(l20)){ + v20++; + } + List l21 = list.stream().filter(s->s.getV21()>overlimit.getUharm21()).collect(Collectors.toList()); + if (!CollectionUtils.isEmpty(l21)){ + v21++; + } + List l22 = list.stream().filter(s->s.getV22()>overlimit.getUharm22()).collect(Collectors.toList()); + if (!CollectionUtils.isEmpty(l22)){ + v22++; + } + List l23 = list.stream().filter(s->s.getV23()>overlimit.getUharm23()).collect(Collectors.toList()); + if (!CollectionUtils.isEmpty(l23)){ + v23++; + } + List l24 = list.stream().filter(s->s.getV24()>overlimit.getUharm24()).collect(Collectors.toList()); + if (!CollectionUtils.isEmpty(l24)){ + v24++; + } + List l25 = list.stream().filter(s->s.getV25()>overlimit.getUharm25()).collect(Collectors.toList()); + if (!CollectionUtils.isEmpty(l25)){ + v25++; + } + } + //2-25次谐波电流 + for (Instant time:map2.keySet()) { + List list = map2.get(time); + List l2 = list.stream().filter(s->s.getI2()>overlimit.getIharm2()).collect(Collectors.toList()); + if (!CollectionUtils.isEmpty(l2)){ + i2++; + } + List l3 = list.stream().filter(s->s.getI3()>overlimit.getIharm3()).collect(Collectors.toList()); + if (!CollectionUtils.isEmpty(l3)){ + i3++; + } + List l4 = list.stream().filter(s->s.getI4()>overlimit.getIharm4()).collect(Collectors.toList()); + if (!CollectionUtils.isEmpty(l4)){ + i4++; + } + List l5 = list.stream().filter(s->s.getI5()>overlimit.getIharm5()).collect(Collectors.toList()); + if (!CollectionUtils.isEmpty(l5)){ + i5++; + } + List l6 = list.stream().filter(s->s.getI6()>overlimit.getIharm6()).collect(Collectors.toList()); + if (!CollectionUtils.isEmpty(l6)){ + i6++; + } + List l7 = list.stream().filter(s->s.getI7()>overlimit.getIharm7()).collect(Collectors.toList()); + if (!CollectionUtils.isEmpty(l7)){ + i7++; + } + List l8 = list.stream().filter(s->s.getI8()>overlimit.getIharm8()).collect(Collectors.toList()); + if (!CollectionUtils.isEmpty(l8)){ + i8++; + } + List l9 = list.stream().filter(s->s.getI9()>overlimit.getIharm9()).collect(Collectors.toList()); + if (!CollectionUtils.isEmpty(l9)){ + i9++; + } + List l10 = list.stream().filter(s->s.getI10()>overlimit.getIharm10()).collect(Collectors.toList()); + if (!CollectionUtils.isEmpty(l10)){ + i10++; + } + List l11 = list.stream().filter(s->s.getI11()>overlimit.getIharm11()).collect(Collectors.toList()); + if (!CollectionUtils.isEmpty(l11)){ + i11++; + } + List l12 = list.stream().filter(s->s.getI12()>overlimit.getIharm12()).collect(Collectors.toList()); + if (!CollectionUtils.isEmpty(l12)){ + i12++; + } + List l13 = list.stream().filter(s->s.getI13()>overlimit.getIharm13()).collect(Collectors.toList()); + if (!CollectionUtils.isEmpty(l13)){ + i13++; + } + List l14 = list.stream().filter(s->s.getI14()>overlimit.getIharm14()).collect(Collectors.toList()); + if (!CollectionUtils.isEmpty(l14)){ + i14++; + } + List l15 = list.stream().filter(s->s.getI15()>overlimit.getIharm15()).collect(Collectors.toList()); + if (!CollectionUtils.isEmpty(l15)){ + i15++; + } + List l16 = list.stream().filter(s->s.getI16()>overlimit.getIharm16()).collect(Collectors.toList()); + if (!CollectionUtils.isEmpty(l16)){ + i16++; + } + List l17 = list.stream().filter(s->s.getI17()>overlimit.getIharm17()).collect(Collectors.toList()); + if (!CollectionUtils.isEmpty(l17)){ + i17++; + } + List l18 = list.stream().filter(s->s.getI18()>overlimit.getIharm18()).collect(Collectors.toList()); + if (!CollectionUtils.isEmpty(l18)){ + i18++; + } + List l19 = list.stream().filter(s->s.getI19()>overlimit.getIharm19()).collect(Collectors.toList()); + if (!CollectionUtils.isEmpty(l19)){ + i19++; + } + List l20 = list.stream().filter(s->s.getI20()>overlimit.getIharm20()).collect(Collectors.toList()); + if (!CollectionUtils.isEmpty(l20)){ + i20++; + } + List l21 = list.stream().filter(s->s.getI21()>overlimit.getIharm21()).collect(Collectors.toList()); + if (!CollectionUtils.isEmpty(l21)){ + i21++; + } + List l22 = list.stream().filter(s->s.getI22()>overlimit.getIharm22()).collect(Collectors.toList()); + if (!CollectionUtils.isEmpty(l22)){ + i22++; + } + List l23 = list.stream().filter(s->s.getI23()>overlimit.getIharm23()).collect(Collectors.toList()); + if (!CollectionUtils.isEmpty(l23)){ + i23++; + } + List l24 = list.stream().filter(s->s.getI24()>overlimit.getIharm24()).collect(Collectors.toList()); + if (!CollectionUtils.isEmpty(l24)){ + i24++; + } + List l25 = list.stream().filter(s->s.getI25()>overlimit.getIharm25()).collect(Collectors.toList()); + if (!CollectionUtils.isEmpty(l25)){ + i25++; + } + } + //0.5-15.5次间谐波电压含有率 + for (Instant time:map3.keySet()) { + List list3 = map3.get(time); + List l2 = list3.stream().filter(s->s.getV1()>overlimit.getInuharm1()).collect(Collectors.toList()); + if (!CollectionUtils.isEmpty(l2)){ + uHarm1++; + } + List l3 = list3.stream().filter(s->s.getV2()>overlimit.getInuharm2()).collect(Collectors.toList()); + if (!CollectionUtils.isEmpty(l3)){ + uHarm2++; + } + List l4 = list3.stream().filter(s->s.getV3()>overlimit.getInuharm3()).collect(Collectors.toList()); + if (!CollectionUtils.isEmpty(l4)){ + uHarm3++; + } + List l5 = list3.stream().filter(s->s.getV4()>overlimit.getInuharm4()).collect(Collectors.toList()); + if (!CollectionUtils.isEmpty(l5)){ + uHarm4++; + } + List l6 = list3.stream().filter(s->s.getV5()>overlimit.getInuharm5()).collect(Collectors.toList()); + if (!CollectionUtils.isEmpty(l6)){ + uHarm5++; + } + List l7 = list3.stream().filter(s->s.getV6()>overlimit.getInuharm6()).collect(Collectors.toList()); + if (!CollectionUtils.isEmpty(l7)){ + uHarm6++; + } + List l8 = list3.stream().filter(s->s.getV7()>overlimit.getInuharm7()).collect(Collectors.toList()); + if (!CollectionUtils.isEmpty(l8)){ + uHarm7++; + } + List l9 = list3.stream().filter(s->s.getV8()>overlimit.getInuharm8()).collect(Collectors.toList()); + if (!CollectionUtils.isEmpty(l9)){ + uHarm8++; + } + List l10 = list3.stream().filter(s->s.getV9()>overlimit.getInuharm9()).collect(Collectors.toList()); + if (!CollectionUtils.isEmpty(l10)){ + uHarm9++; + } + List l11 = list3.stream().filter(s->s.getV10()>overlimit.getInuharm10()).collect(Collectors.toList()); + if (!CollectionUtils.isEmpty(l11)){ + uHarm10++; + } + List l12 = list3.stream().filter(s->s.getV11()>overlimit.getInuharm11()).collect(Collectors.toList()); + if (!CollectionUtils.isEmpty(l12)){ + uHarm11++; + } + List l13 = list3.stream().filter(s->s.getV12()>overlimit.getInuharm12()).collect(Collectors.toList()); + if (!CollectionUtils.isEmpty(l13)){ + uHarm12++; + } + List l14 = list3.stream().filter(s->s.getV13()>overlimit.getInuharm13()).collect(Collectors.toList()); + if (!CollectionUtils.isEmpty(l14)){ + uHarm13++; + } + List l15 = list3.stream().filter(s->s.getV14()>overlimit.getInuharm14()).collect(Collectors.toList()); + if (!CollectionUtils.isEmpty(l15)){ + uHarm14++; + } + List l16 = list3.stream().filter(s->s.getV15()>overlimit.getInuharm15()).collect(Collectors.toList()); + if (!CollectionUtils.isEmpty(l16)){ + uHarm15++; + } + List l17 = list3.stream().filter(s->s.getV16()>overlimit.getInuharm16()).collect(Collectors.toList()); + if (!CollectionUtils.isEmpty(l17)){ + uHarm16++; + } + } + //电压总谐波畸变率 + for (Instant time:map4.keySet()) { + List list = map4.get(time); + List l = list.stream().filter(s->s.getVThd()>overlimit.getUaberrance()).collect(Collectors.toList()); + if (!CollectionUtils.isEmpty(l)){ + thd++; + } + } + //三相电压不平衡度 + for (Instant time:map5.keySet()) { + List list = map5.get(time); + List l = list.stream().filter(s->s.getVUnbalance()>overlimit.getUbalance()).collect(Collectors.toList()); + if (!CollectionUtils.isEmpty(l)){ + uAberrance++; + } + } + //负序电流 + for (Instant time:map6.keySet()) { + List list = map6.get(time); + List l = list.stream().filter(s->s.getINeg()>overlimit.getINeg()).collect(Collectors.toList()); + if (!CollectionUtils.isEmpty(l)){ + iNeg++; + } + } + //频率偏差 + for (Instant time:map7.keySet()) { + List list = map7.get(time); + List l = list.stream().filter(s->s.getFreqDev()>overlimit.getFreqDev()).collect(Collectors.toList()); + if (!CollectionUtils.isEmpty(l)){ + freqDev++; + } + } + //电压上偏差、电压下偏差 + for (Instant time:map8.keySet()) { + List list = map8.get(time); + List l1 = list.stream().filter(s->s.getVlDev()>=0&&s.getVlDev()>overlimit.getVoltageDev()).collect(Collectors.toList()); + List l2 = list.stream().filter(s->s.getVlDev()<0&&Math.abs(s.getVlDev())>Math.abs(overlimit.getUvoltageDev())).collect(Collectors.toList()); + if (!CollectionUtils.isEmpty(l1) || !CollectionUtils.isEmpty(l2)){ + uDev++; + } + } + //长时间闪变 + for (Instant time:map9.keySet()) { + List list = map9.get(time); + List l = list.stream().filter(s->s.getPlt()>overlimit.getFlicker()).collect(Collectors.toList()); + if (!CollectionUtils.isEmpty(l)){ + flicker++; + } + } + limitRate.setLineId(lineId); + limitRate.setPhasicType("T"); + limitRate.setAllTime(allTime); + limitRate.setFlickerAllTime(flickerAllTime); + limitRate.setUAberranceOverTime(uAberrance); + limitRate.setINegOverTime(iNeg); + limitRate.setFreqDevOverTime(freqDev); + limitRate.setUHarm2OverTime(v2); + limitRate.setUHarm3OverTime(v3); + limitRate.setUHarm4OverTime(v4); + limitRate.setUHarm5OverTime(v5); + limitRate.setUHarm6OverTime(v6); + limitRate.setUHarm7OverTime(v7); + limitRate.setUHarm8OverTime(v8); + limitRate.setUHarm9OverTime(v9); + limitRate.setUHarm10OverTime(v10); + limitRate.setUHarm11OverTime(v11); + limitRate.setUHarm12OverTime(v12); + limitRate.setUHarm13OverTime(v13); + limitRate.setUHarm14OverTime(v14); + limitRate.setUHarm15OverTime(v15); + limitRate.setUHarm16OverTime(v16); + limitRate.setUHarm17OverTime(v17); + limitRate.setUHarm18OverTime(v18); + limitRate.setUHarm19OverTime(v19); + limitRate.setUHarm20OverTime(v20); + limitRate.setUHarm21OverTime(v21); + limitRate.setUHarm22OverTime(v22); + limitRate.setUHarm23OverTime(v23); + limitRate.setUHarm24OverTime(v24); + limitRate.setUHarm25OverTime(v25); + limitRate.setIHarm2OverTime(i2); + limitRate.setIHarm3OverTime(i3); + limitRate.setIHarm4OverTime(i4); + limitRate.setIHarm5OverTime(i5); + limitRate.setIHarm6OverTime(i6); + limitRate.setIHarm7OverTime(i7); + limitRate.setIHarm8OverTime(i8); + limitRate.setIHarm9OverTime(i9); + limitRate.setIHarm10OverTime(i10); + limitRate.setIHarm11OverTime(i11); + limitRate.setIHarm12OverTime(i12); + limitRate.setIHarm13OverTime(i13); + limitRate.setIHarm14OverTime(i14); + limitRate.setIHarm15OverTime(i15); + limitRate.setIHarm16OverTime(i16); + limitRate.setIHarm17OverTime(i17); + limitRate.setIHarm18OverTime(i18); + limitRate.setIHarm19OverTime(i19); + limitRate.setIHarm20OverTime(i20); + limitRate.setIHarm21OverTime(i21); + limitRate.setIHarm22OverTime(i22); + limitRate.setIHarm23OverTime(i23); + limitRate.setIHarm24OverTime(i24); + limitRate.setIHarm25OverTime(i25); + limitRate.setInuHarm1OverTime(uHarm1); + limitRate.setInuHarm2OverTime(uHarm2); + limitRate.setInuHarm3OverTime(uHarm3); + limitRate.setInuHarm4OverTime(uHarm4); + limitRate.setInuHarm5OverTime(uHarm5); + limitRate.setInuHarm6OverTime(uHarm6); + limitRate.setInuHarm7OverTime(uHarm7); + limitRate.setInuHarm8OverTime(uHarm8); + limitRate.setInuHarm9OverTime(uHarm9); + limitRate.setInuHarm10OverTime(uHarm10); + limitRate.setInuHarm11OverTime(uHarm11); + limitRate.setInuHarm12OverTime(uHarm12); + limitRate.setInuHarm13OverTime(uHarm13); + limitRate.setInuHarm14OverTime(uHarm14); + limitRate.setInuHarm15OverTime(uHarm15); + limitRate.setInuHarm16OverTime(uHarm16); + limitRate.setUBalanceOverTime(thd); + limitRate.setVoltageDevOverTime(uDev); + limitRate.setFlickerOverTime(flicker); + return limitRate; + } +} diff --git a/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/Impl/line/LimitTargetServiceImpl.java b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/Impl/line/LimitTargetServiceImpl.java index ea36e77ac..e896bb8df 100644 --- a/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/Impl/line/LimitTargetServiceImpl.java +++ b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/Impl/line/LimitTargetServiceImpl.java @@ -8,6 +8,7 @@ import com.njcn.harmonic.pojo.po.LimitRate; import com.njcn.harmonic.pojo.po.day.RStatLimitRateDPO; import com.njcn.harmonic.pojo.po.day.RStatLimitTargetDPO; import com.njcn.influx.utils.InfluxDbUtils; +import com.njcn.prepare.bo.CalculatedParam; import com.njcn.prepare.harmonic.mapper.mysql.day.RStatLimitTargetDMapper; import com.njcn.prepare.harmonic.pojo.param.LineParam; import com.njcn.prepare.harmonic.service.mysql.day.IRStatLimitRateDService; @@ -89,6 +90,12 @@ public class LimitTargetServiceImpl extends MppServiceImpl getLimitRateData(String lineId,String date){ StringBuilder sql = new StringBuilder(); sql.append("SELECT * FROM limit_rate WHERE time >= '").append(date).append(" 00:00:00' and time <= '") diff --git a/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/Impl/line/ThsSuperviseServiceImpl.java b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/Impl/line/ThsSuperviseServiceImpl.java index 86ed6074a..e9b78bad7 100644 --- a/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/Impl/line/ThsSuperviseServiceImpl.java +++ b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/Impl/line/ThsSuperviseServiceImpl.java @@ -42,6 +42,10 @@ import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.lang.reflect.Field; +import java.time.Instant; +import java.time.LocalDate; +import java.time.LocalTime; +import java.time.ZoneId; import java.util.*; import java.util.stream.Collectors; @@ -321,7 +325,7 @@ public class ThsSuperviseServiceImpl extends ServiceImpl descriptionList = (List) limitBoolMap.get(DESCRIPTION); thsOverRunLog.setDescription(StringUtils.join(descriptionList, ",")); diff --git a/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/line/DayDataService.java b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/line/DayDataService.java index d09641fc3..507148155 100644 --- a/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/line/DayDataService.java +++ b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/line/DayDataService.java @@ -18,6 +18,6 @@ public interface DayDataService { * @date 2023/11/09 10:08 * @param calculatedParam 查询条件 */ - void dataToDayHandler(CalculatedParam calculatedParam); + void dataToDayHandler(CalculatedParam calculatedParam); } diff --git a/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/line/IntegrityService.java b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/line/IntegrityService.java index b58388fe7..ecd3eef4b 100644 --- a/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/line/IntegrityService.java +++ b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/line/IntegrityService.java @@ -1,6 +1,6 @@ package com.njcn.prepare.harmonic.service.mysql.line; -import com.njcn.prepare.harmonic.pojo.param.LineParam; +import com.njcn.prepare.bo.CalculatedParam; /** * @author xiaoyao @@ -9,7 +9,13 @@ import com.njcn.prepare.harmonic.pojo.param.LineParam; */ public interface IntegrityService { - //String computeDataIntegrity(LineParam lineParam); +// void dataIntegrity(LineParam lineParam,String startTime,String endTime); - void dataIntegrity(LineParam lineParam,String startTime,String endTime); + /*** + * 监测点数据完整性_日表 + * @author xuyang + * @date 2023/11/09 10:08 + * @param calculatedParam 查询条件 + */ + void dataIntegrity(CalculatedParam calculatedParam); } diff --git a/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/line/LimitRateService.java b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/line/LimitRateService.java index 0c349fe42..0be17060b 100644 --- a/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/line/LimitRateService.java +++ b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/line/LimitRateService.java @@ -1,16 +1,17 @@ -//package com.njcn.prepare.harmonic.service.mysql.line; -// -//import com.baomidou.mybatisplus.extension.service.IService; -//import com.njcn.process.pojo.po.LimitRate; -// -///** -// *

-// * 服务类 -// *

-// * -// * @author lxp -// * @since 2023-03-16 -// */ -//public interface LimitRateService extends IService { -// -//} +package com.njcn.prepare.harmonic.service.mysql.line; + +import com.njcn.prepare.bo.CalculatedParam; + +import java.util.List; + +/** + * @author xuyang + * @createTime 2023/11/13 10:30 + */ +public interface LimitRateService { + +// void limitRate(List indexLists,String startTime,String endTime); + + void limitRate(CalculatedParam calculatedParam); + +} diff --git a/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/line/LimitTargetService.java b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/line/LimitTargetService.java index b05fcc9c3..acff39478 100644 --- a/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/line/LimitTargetService.java +++ b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/line/LimitTargetService.java @@ -1,5 +1,6 @@ package com.njcn.prepare.harmonic.service.mysql.line; +import com.njcn.prepare.bo.CalculatedParam; import com.njcn.prepare.harmonic.pojo.param.LineParam; import java.util.List; @@ -14,4 +15,6 @@ public interface LimitTargetService { void getLimitTargetData(LineParam lineParam); void limitTargetData(List indexLists,String startTime,String endTime); + + void limitTargetData(CalculatedParam calculatedParam); }