From 856adce8c1915303e2c20b0023a853285501c3df Mon Sep 17 00:00:00 2001 From: xuyang <748613696@qq.com> Date: Mon, 13 Nov 2023 10:13:30 +0800 Subject: [PATCH] =?UTF-8?q?=E6=94=B9=E9=80=A0:=E7=9B=91=E6=B5=8B=E7=82=B9?= =?UTF-8?q?=E6=95=B0=E6=8D=AE=E5=AE=8C=E6=95=B4=E6=80=A7=5F=E6=97=A5?= =?UTF-8?q?=E8=A1=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../device/pq/pojo/po/RStatIntegrityD.java | 3 +- pqs-gateway/src/main/resources/bootstrap.yml | 2 +- .../com/njcn/influx/imapper/DataVMapper.java | 3 + .../njcn/influx/pojo/bo/MeasurementCount.java | 33 +++ .../pojo/constant/InfluxDBTableConstant.java | 5 + pqs-prepare/prepare-boot/pom.xml | 11 + .../prepare/executor/MeasurementExecutor.java | 65 ++++-- .../controller/line/IntegrityController.java | 15 +- .../mysql/Impl/line/DayDataServiceImpl.java | 10 - .../mysql/Impl/line/IntegrityServiceImpl.java | 188 ++++++++++-------- .../service/mysql/line/DayDataService.java | 2 +- .../service/mysql/line/IntegrityService.java | 12 +- 12 files changed, 222 insertions(+), 127 deletions(-) create mode 100644 pqs-influx/src/main/java/com/njcn/influx/pojo/bo/MeasurementCount.java 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-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..feeb1fd0b 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,10 @@ public interface InfluxDBTableConstant { String AVG = "AVG"; String CP95 = "CP95"; + /** + * 每天固定时间分钟 + */ + Integer DAY_MINUTE = 1440; + } 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..248bf0fc6 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,17 +24,13 @@ 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; @@ -81,20 +77,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 +151,49 @@ public class MeasurementExecutor extends BaseExecutor { } } } + + + /********************************************算法负责人:xy***********************************************************/ + /** + * 算法名: 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()); + } + + /** + * 算法名: 暂无-----监测点数据完整性_日表 + * + * @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()); + } + + + + + + + + /********************************************算法负责人: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/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/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); }