Merge remote-tracking branch 'origin/master'

This commit is contained in:
wr
2023-11-13 16:10:27 +08:00
21 changed files with 1453 additions and 1518 deletions

View File

@@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.annotation.TableName;
import com.github.jeffreyning.mybatisplus.anno.MppMultiId; import com.github.jeffreyning.mybatisplus.anno.MppMultiId;
import com.njcn.db.bo.BaseEntity; import com.njcn.db.bo.BaseEntity;
import java.io.Serializable; import java.io.Serializable;
import java.time.LocalDate;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import lombok.Data; import lombok.Data;
@@ -27,7 +28,7 @@ public class RStatIntegrityD {
private static final long serialVersionUID = 1L; private static final long serialVersionUID = 1L;
@MppMultiId @MppMultiId
private LocalDateTime timeId; private LocalDate timeId;
@MppMultiId @MppMultiId
private String lineIndex; private String lineIndex;

View File

@@ -180,7 +180,7 @@ logging:
whitelist: whitelist:
urls: urls:
# - /** - /**
- /user-boot/user/generateSm2Key - /user-boot/user/generateSm2Key
- /user-boot/theme/getTheme - /user-boot/theme/getTheme
- /user-boot/user/updateFirstPassword - /user-boot/user/updateFirstPassword

View File

@@ -8,7 +8,7 @@ import lombok.AllArgsConstructor;
import lombok.Data; import lombok.Data;
import lombok.NoArgsConstructor; import lombok.NoArgsConstructor;
import java.util.Date; import java.time.LocalDate;
@Data @Data
@AllArgsConstructor @AllArgsConstructor
@@ -34,8 +34,8 @@ public class RStatLimitRateDPO {
*/ */
@MppMultiId @MppMultiId
@TableField(value = "time_id") @TableField(value = "time_id")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone="GMT+8") @JsonFormat(pattern = "yyyy-MM-dd",timezone="GMT+8")
private Date time; private LocalDate time;
/** /**
* 总计算次数 * 总计算次数

View File

@@ -1,6 +1,7 @@
package com.njcn.influx.imapper; package com.njcn.influx.imapper;
import com.njcn.influx.base.InfluxDbBaseMapper; import com.njcn.influx.base.InfluxDbBaseMapper;
import com.njcn.influx.pojo.bo.MeasurementCount;
import com.njcn.influx.pojo.po.DataV; import com.njcn.influx.pojo.po.DataV;
import com.njcn.influx.query.InfluxQueryWrapper; import com.njcn.influx.query.InfluxQueryWrapper;
@@ -18,4 +19,6 @@ public interface DataVMapper extends InfluxDbBaseMapper<DataV> {
List<DataV> getStatisticsByWraper(InfluxQueryWrapper influxQueryWrapper); List<DataV> getStatisticsByWraper(InfluxQueryWrapper influxQueryWrapper);
List<MeasurementCount> getMeasurementCount(InfluxQueryWrapper influxQueryWrapper);
} }

View File

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

View File

@@ -185,5 +185,16 @@ public interface InfluxDBTableConstant {
String AVG = "AVG"; String AVG = "AVG";
String CP95 = "CP95"; String CP95 = "CP95";
/**
* 每天固定时间分钟
*/
Integer DAY_MINUTE = 1440;
/**
* 数据是否正常 0:正常 1:异常
*/
String NORMAL = "0";
String UN_NORMAL = "1";
} }

View File

@@ -111,12 +111,23 @@
<artifactId>liteflow-spring-boot-starter</artifactId> <artifactId>liteflow-spring-boot-starter</artifactId>
<version>2.11.2</version> <version>2.11.2</version>
</dependency> </dependency>
<dependency>
<groupId>com.njcn</groupId>
<artifactId>event-api</artifactId>
<version>1.0.0</version>
<scope>compile</scope>
</dependency>
<dependency> <dependency>
<groupId>com.yomahub</groupId> <groupId>com.yomahub</groupId>
<artifactId>liteflow-rule-nacos</artifactId> <artifactId>liteflow-rule-nacos</artifactId>
<version>2.11.2</version> <version>2.11.2</version>
</dependency> </dependency>
<!-- <dependency>-->
<!-- <groupId>com.yomahub</groupId>-->
<!-- <artifactId>liteflow-rule-nacos</artifactId>-->
<!-- <version>2.11.0</version>-->
<!-- </dependency>-->
</dependencies> </dependencies>
<build> <build>

View File

@@ -24,20 +24,19 @@ import lombok.RequiredArgsConstructor;
public class MeasurementExecutor extends BaseExecutor { public class MeasurementExecutor extends BaseExecutor {
private final RMpMonitorEvaluateDService rMpMonitorEvaluateDService; private final RMpMonitorEvaluateDService rMpMonitorEvaluateDService;
private final RMpEventDetailService rMpEventDetailService; private final RMpEventDetailService rMpEventDetailService;
private final RMpEventDetailDService rMpEventDetailDService; private final RMpEventDetailDService rMpEventDetailDService;
private final DayDataService dayDataService; private final DayDataService dayDataService;
private final RStatAbnormalDService rStatAbnormalDService; private final RStatAbnormalDService rStatAbnormalDService;
private final ROperatingMonitorService rOperatingMonitorService; private final ROperatingMonitorService rOperatingMonitorService;
private final ROperatingMonitorMService rOperatingMonitorMService; private final ROperatingMonitorMService rOperatingMonitorMService;
private final IntegrityService integrityService;
private final RMpPassRateDService rMpPassRateDService; private final RMpPassRateDService rMpPassRateDService;
private final LimitRateService limitRateService;
private final LimitTargetService limitTargetService;
/** /**
* 算法名: 3.3.1.1-----监测点评价 * 算法名: 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. 监测点数据异常_日表 * 3.3.1.2. 监测点数据异常_日表
* @param bindCmp * @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结束***********************************************************/
} }

View File

@@ -40,17 +40,6 @@ public class IntegrityController extends BaseController {
private final IntegrityService integrityService; private final IntegrityService integrityService;
/* @Deprecated
@OperateInfo(info = LogEnum.BUSINESS_COMMON)
@PostMapping("/computeDataIntegrity")
@ApiOperation("数据完整性统计")
@ApiImplicitParam(name = "lineParam", value = "参数", required = true)
public HttpResult<String> 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) @OperateInfo(info = LogEnum.BUSINESS_COMMON)
@PostMapping("/dataIntegrity") @PostMapping("/dataIntegrity")
@ApiOperation("数据完整性统计(MySQL库)") @ApiOperation("数据完整性统计(MySQL库)")
@@ -65,10 +54,10 @@ public class IntegrityController extends BaseController {
log.info(item+"-->开始执行"); log.info(item+"-->开始执行");
startTime = item+" "+"00:00:00"; startTime = item+" "+"00:00:00";
endTime = item+" "+"23:59:59"; endTime = item+" "+"23:59:59";
integrityService.dataIntegrity(lineParam,startTime,endTime); // integrityService.dataIntegrity(lineParam,startTime,endTime);
} }
} else { } else {
integrityService.dataIntegrity(lineParam,lineParam.getBeginTime(),lineParam.getEndTime()); // integrityService.dataIntegrity(lineParam,lineParam.getBeginTime(),lineParam.getEndTime());
} }
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, CommonResponseEnum.SUCCESS.getMessage(), methodDescribe); return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, CommonResponseEnum.SUCCESS.getMessage(), methodDescribe);
} }

View File

@@ -8,7 +8,8 @@ import com.njcn.common.utils.HttpResultUtil;
import com.njcn.common.utils.NjcnDateUtils; import com.njcn.common.utils.NjcnDateUtils;
import com.njcn.device.biz.commApi.CommTerminalGeneralClient; import com.njcn.device.biz.commApi.CommTerminalGeneralClient;
import com.njcn.prepare.harmonic.pojo.param.LineParam; 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 com.njcn.web.controller.BaseController;
import io.swagger.annotations.Api; import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam; import io.swagger.annotations.ApiImplicitParam;
@@ -89,10 +90,10 @@ public class LimitrateController extends BaseController {
log.info(item+"-->开始执行"); log.info(item+"-->开始执行");
startTime = item+" "+"00:00:00"; startTime = item+" "+"00:00:00";
endTime = item+" "+"23:59:59"; endTime = item+" "+"23:59:59";
limitRateService.limitRate(indexLists,startTime,endTime); // limitRateService.limitRate(indexLists,startTime,endTime);
} }
} else { } else {
limitRateService.limitRate(indexLists,jobParam.getBeginTime(),jobParam.getEndTime()); // limitRateService.limitRate(indexLists,jobParam.getBeginTime(),jobParam.getEndTime());
} }
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, true, methodDescribe); return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, true, methodDescribe);
} }

View File

@@ -25,6 +25,7 @@ import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.CollectionUtils; import org.springframework.util.CollectionUtils;
import java.text.DecimalFormat; import java.text.DecimalFormat;
import java.time.LocalDate;
import java.util.*; import java.util.*;
import java.util.concurrent.atomic.AtomicInteger; import java.util.concurrent.atomic.AtomicInteger;
import java.util.stream.Collectors; import java.util.stream.Collectors;
@@ -129,7 +130,7 @@ public class SpecialAnalysisIndexOverviewServiceImpl implements SpecialAnalysisI
collect2.forEach((lineId,rStatLimitRateDPOList)->{ collect2.forEach((lineId,rStatLimitRateDPOList)->{
Map<Date, List<RStatLimitRateDPO>> collect3 = rStatLimitRateDPOList.stream().collect(Collectors.groupingBy(RStatLimitRateDPO::getTime)); Map<LocalDate, List<RStatLimitRateDPO>> collect3 = rStatLimitRateDPOList.stream().collect(Collectors.groupingBy(RStatLimitRateDPO::getTime));
if(isOverLimit(rStatLimitRateDPOList,1)){ if(isOverLimit(rStatLimitRateDPOList,1)){
iCount.getAndIncrement(); iCount.getAndIncrement();
} }

View File

@@ -3,39 +3,29 @@ package com.njcn.prepare.harmonic.service.mysql.Impl.line;
import cn.hutool.core.date.DatePattern; import cn.hutool.core.date.DatePattern;
import cn.hutool.core.date.DateUtil; import cn.hutool.core.date.DateUtil;
import cn.hutool.core.date.LocalDateTimeUtil; import cn.hutool.core.date.LocalDateTimeUtil;
import com.alibaba.fastjson.JSON;
import com.alibaba.nacos.client.naming.utils.CollectionUtils; import com.alibaba.nacos.client.naming.utils.CollectionUtils;
import com.njcn.common.utils.HarmonicTimesUtil; import com.njcn.common.utils.HarmonicTimesUtil;
import com.njcn.harmonic.pojo.po.day.*; import com.njcn.harmonic.pojo.po.day.*;
import com.njcn.influx.constant.InfluxDbSqlConstant; import com.njcn.influx.constant.InfluxDbSqlConstant;
import com.njcn.influx.deprecated.InfluxDBPublicParam;
import com.njcn.influx.imapper.*; import com.njcn.influx.imapper.*;
import com.njcn.influx.imapper.day.*; import com.njcn.influx.imapper.day.*;
import com.njcn.influx.pojo.po.*; import com.njcn.influx.pojo.po.*;
import com.njcn.influx.pojo.po.day.*; import com.njcn.influx.pojo.po.day.*;
import com.njcn.influx.query.InfluxQueryWrapper; import com.njcn.influx.query.InfluxQueryWrapper;
import com.njcn.influx.utils.InfluxDbUtils;
import com.njcn.prepare.bo.CalculatedParam; import com.njcn.prepare.bo.CalculatedParam;
import com.njcn.prepare.harmonic.service.mysql.day.*; import com.njcn.prepare.harmonic.service.mysql.day.*;
import com.njcn.prepare.harmonic.service.mysql.line.DayDataService; import com.njcn.prepare.harmonic.service.mysql.line.DayDataService;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import net.sf.cglib.core.Local;
import org.apache.commons.collections4.ListUtils; import org.apache.commons.collections4.ListUtils;
import org.influxdb.dto.QueryResult;
import org.influxdb.impl.InfluxDBResultMapper;
import org.springframework.beans.BeanUtils; import org.springframework.beans.BeanUtils;
import org.springframework.scheduling.annotation.Async; import org.springframework.scheduling.annotation.Async;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional; 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.LocalDate;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Date;
import java.util.List; import java.util.List;
/** /**

View File

@@ -1,32 +1,33 @@
package com.njcn.prepare.harmonic.service.mysql.Impl.line; 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.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.commApi.CommTerminalGeneralClient;
import com.njcn.device.biz.pojo.dto.LineDevGetDTO; 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.api.LineFeignClient;
import com.njcn.device.pq.pojo.po.RStatIntegrityD; 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.pojo.po.DataV;
import com.njcn.influx.query.InfluxQueryWrapper;
import com.njcn.influx.utils.InfluxDbUtils; 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.mapper.mysql.day.RStatIntegrityDMapper;
import com.njcn.prepare.harmonic.pojo.param.LineParam;
import com.njcn.prepare.harmonic.service.mysql.line.IntegrityService; import com.njcn.prepare.harmonic.service.mysql.line.IntegrityService;
import com.njcn.user.api.DeptFeignClient; import com.njcn.user.api.DeptFeignClient;
import com.njcn.user.pojo.po.Dept;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.influxdb.dto.QueryResult; import org.apache.commons.collections4.ListUtils;
import org.influxdb.impl.InfluxDBResultMapper;
import org.springframework.scheduling.annotation.Async; import org.springframework.scheduling.annotation.Async;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils;
import java.time.LocalDateTime; import java.util.ArrayList;
import java.time.format.DateTimeFormatter; import java.util.List;
import java.util.*; import java.util.Objects;
import java.util.stream.Collectors;
/** /**
@@ -50,80 +51,109 @@ public class IntegrityServiceImpl extends MppServiceImpl<RStatIntegrityDMapper,
private final CommTerminalGeneralClient commTerminalGeneralClient; private final CommTerminalGeneralClient commTerminalGeneralClient;
/*@Override private final DataVMapper dataVMapper;
@Async("asyncExecutor")
public String computeDataIntegrity(LineParam lineParam) { // @Override
List<LineDetail> lineDetailList; // @Async("asyncExecutor")
if (CollUtil.isEmpty(lineParam.getLineIds())){ // @Deprecated
List<Overlimit> overLimitList = getAllLinesLimitData(); // public void dataIntegrity(LineParam lineParam,String startTime,String endTime) {
List<String> lineList = overLimitList.stream().map(Overlimit::getId).collect(Collectors.toList()); // DateTimeFormatter df = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
lineDetailList = lineFeignClient.getLineDetail(lineList).getData(); // LocalDateTime dateTime = LocalDateTime.parse(startTime,df);
}else { //
lineDetailList = lineFeignClient.getLineDetail(lineParam.getLineIds()).getData(); // List<LineDevGetDTO> lineDevGetDTOList = new ArrayList<>();
} // if (CollUtil.isEmpty(lineParam.getLineIds())){
if (CollUtil.isEmpty(lineDetailList)){ // Dept dept = deptFeignClient.getRootDept().getData();
return "未查询到监测点详情!"; //
} // DeptGetLineParam deptGetLineParam = new DeptGetLineParam();
Date dateOut = DateUtil.parse(lineParam.getDataDate()); // deptGetLineParam.setDeptId(dept.getId());
List<String> records = new ArrayList<>(); // deptGetLineParam.setServerName(ServerEnum.HARMONIC.getName());
for (LineDetail lineDetail :lineDetailList){ // List<String> monitorIds = commTerminalGeneralClient.getRunMonitorIds().getData();
Map<String, String> tags = new HashMap<>(); // lineDevGetDTOList = commTerminalGeneralClient.getMonitorDetailList(monitorIds).getData();
Map<String, Object> fields = new HashMap<>(); // }else {
tags.put("line_id",lineDetail.getId()); // lineDevGetDTOList = commTerminalGeneralClient.getMonitorDetailList(lineParam.getLineIds()).getData();
fields.put("due",DAY_MINUTE/lineDetail.getTimeInterval()); // }
int dataCount = getDataCount(lineDetail.getId(),lineParam.getDataDate()); // List<RStatIntegrityD> list = new ArrayList<>();
fields.put("real",dataCount); // for (LineDevGetDTO lineDetail :lineDevGetDTOList){
Point point = influxDbUtils.pointBuilder("pqs_integrity", dateOut.getTime(), TimeUnit.MILLISECONDS,tags, fields); // int dataCount = getDataCount(lineDetail.getPointId(),startTime,endTime);
BatchPoints batchPoints = BatchPoints.database(influxDbUtils.getDbName()).tag("line_id", lineDetail.getId()).retentionPolicy("").consistency(InfluxDB.ConsistencyLevel.ALL).build(); // RStatIntegrityD integrityDpo = new RStatIntegrityD();
batchPoints.point(point); // integrityDpo.setTimeId(dateTime);
records.add(batchPoints.lineProtocol()); // integrityDpo.setLineIndex(lineDetail.getPointId());
} // integrityDpo.setDueTime(InfluxDBPublicParam.DAY_MINUTE/lineDetail.getInterval());
//InfluxDb入表pqs_integrity // integrityDpo.setRealTime(dataCount);
influxDbUtils.batchInsert(influxDbUtils.getDbName(),"", InfluxDB.ConsistencyLevel.ALL, records); // list.add(integrityDpo);
return "成功!"; // }
} // this.saveOrUpdateBatchByMultiId(list,500);
*/ // }
/********************************新算法************************************************/
@Override @Override
@Async("asyncExecutor") @Async("asyncExecutor")
public void dataIntegrity(LineParam lineParam,String startTime,String endTime) { public void dataIntegrity(CalculatedParam calculatedParam) {
DateTimeFormatter df = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
LocalDateTime dateTime = LocalDateTime.parse(startTime,df);
List<LineDevGetDTO> 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<String> monitorIds = commTerminalGeneralClient.getRunMonitorIds().getData();
lineDevGetDTOList = commTerminalGeneralClient.getMonitorDetailList(monitorIds).getData();
}else {
lineDevGetDTOList = commTerminalGeneralClient.getMonitorDetailList(lineParam.getLineIds()).getData();
}
List<RStatIntegrityD> list = new ArrayList<>(); List<RStatIntegrityD> list = new ArrayList<>();
for (LineDevGetDTO lineDetail :lineDevGetDTOList){ List<String> lineIds = calculatedParam.getIdList();
int dataCount = getDataCount(lineDetail.getPointId(),startTime,endTime); 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<List<String>> pendingIds = ListUtils.partition(lineIds,100);
for (List<String> pendingId : pendingIds) {
List<LineDevGetDTO> lineDevGetDTOList = commTerminalGeneralClient.getMonitorDetailList(pendingId).getData();
List<MeasurementCount> countList = this.getMeasurementCount(pendingId,beginDay,endDay);
list.addAll(
lineDevGetDTOList.stream()
.map(item -> {
RStatIntegrityD integrityDpo = new RStatIntegrityD(); RStatIntegrityD integrityDpo = new RStatIntegrityD();
integrityDpo.setTimeId(dateTime); integrityDpo.setTimeId(LocalDateTimeUtil.parseDate(calculatedParam.getDataDate(), DatePattern.NORM_DATE_PATTERN));
integrityDpo.setLineIndex(lineDetail.getPointId()); integrityDpo.setLineIndex(item.getPointId());
integrityDpo.setDueTime(InfluxDBPublicParam.DAY_MINUTE/lineDetail.getInterval()); integrityDpo.setDueTime(InfluxDBTableConstant.DAY_MINUTE / item.getInterval());
integrityDpo.setRealTime(dataCount); integrityDpo.setRealTime(countList.stream()
list.add(integrityDpo); .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')"); * 获取data_v中各个监测点的数据总数
InfluxDBResultMapper resultMapper = new InfluxDBResultMapper(); * @param lineIndex
List<DataV> list = resultMapper.toPOJO(sqlResult, DataV.class); * @param startTime
if (CollectionUtils.isEmpty(list)){ * @param endTime
return 0; * @return
} else { */
return list.size(); public List<MeasurementCount> getMeasurementCount(List<String> 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<DataV> list = resultMapper.toPOJO(sqlResult, DataV.class);
// if (CollectionUtils.isEmpty(list)){
// return 0;
// } else {
// return list.size();
// }
// }
} }

View File

@@ -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.RStatLimitRateDPO;
import com.njcn.harmonic.pojo.po.day.RStatLimitTargetDPO; import com.njcn.harmonic.pojo.po.day.RStatLimitTargetDPO;
import com.njcn.influx.utils.InfluxDbUtils; 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.mapper.mysql.day.RStatLimitTargetDMapper;
import com.njcn.prepare.harmonic.pojo.param.LineParam; import com.njcn.prepare.harmonic.pojo.param.LineParam;
import com.njcn.prepare.harmonic.service.mysql.day.IRStatLimitRateDService; import com.njcn.prepare.harmonic.service.mysql.day.IRStatLimitRateDService;
@@ -89,6 +90,12 @@ public class LimitTargetServiceImpl extends MppServiceImpl<RStatLimitTargetDMapp
log.info(LocalDateTime.now()+"r_stat_limit_target_d开始执行=======》"); log.info(LocalDateTime.now()+"r_stat_limit_target_d开始执行=======》");
} }
@Override
public void limitTargetData(CalculatedParam calculatedParam) {
log.info(LocalDateTime.now()+"r_stat_limit_target_d开始执行=======》");
}
private List<LimitRate> getLimitRateData(String lineId,String date){ private List<LimitRate> getLimitRateData(String lineId,String date){
StringBuilder sql = new StringBuilder(); StringBuilder sql = new StringBuilder();
sql.append("SELECT * FROM limit_rate WHERE time >= '").append(date).append(" 00:00:00' and time <= '") sql.append("SELECT * FROM limit_rate WHERE time >= '").append(date).append(" 00:00:00' and time <= '")

View File

@@ -42,6 +42,10 @@ import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import java.lang.reflect.Field; 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.*;
import java.util.stream.Collectors; import java.util.stream.Collectors;
@@ -321,7 +325,7 @@ public class ThsSuperviseServiceImpl extends ServiceImpl<ThsSuperviseMapper, Ths
thsOverRunLog.setSupIndex(thsSupervise.getSupIndex()); thsOverRunLog.setSupIndex(thsSupervise.getSupIndex());
thsOverRunLog.setLineIndex(monitor.getId()); thsOverRunLog.setLineIndex(monitor.getId());
thsOverRunLog.setName(monitor.getPowerrName() + "_" + monitor.getName() + "_" + DateUtil.today() + "_" + monitor.getId()); thsOverRunLog.setName(monitor.getPowerrName() + "_" + monitor.getName() + "_" + DateUtil.today() + "_" + monitor.getId());
thsOverRunLog.setUpdateTime(limitRate.getTime()); thsOverRunLog.setUpdateTime(Date.from(limitRate.getTime().atTime(LocalTime.MIDNIGHT).atZone(ZoneId.systemDefault()).toInstant()));
thsOverRunLog.setCreateTime(new Date()); thsOverRunLog.setCreateTime(new Date());
List<String> descriptionList = (List) limitBoolMap.get(DESCRIPTION); List<String> descriptionList = (List) limitBoolMap.get(DESCRIPTION);
thsOverRunLog.setDescription(StringUtils.join(descriptionList, ",")); thsOverRunLog.setDescription(StringUtils.join(descriptionList, ","));

View File

@@ -18,6 +18,6 @@ public interface DayDataService {
* @date 2023/11/09 10:08 * @date 2023/11/09 10:08
* @param calculatedParam 查询条件 * @param calculatedParam 查询条件
*/ */
void dataToDayHandler(CalculatedParam calculatedParam); void dataToDayHandler(CalculatedParam<?> calculatedParam);
} }

View File

@@ -1,6 +1,6 @@
package com.njcn.prepare.harmonic.service.mysql.line; package com.njcn.prepare.harmonic.service.mysql.line;
import com.njcn.prepare.harmonic.pojo.param.LineParam; import com.njcn.prepare.bo.CalculatedParam;
/** /**
* @author xiaoyao * @author xiaoyao
@@ -9,7 +9,13 @@ import com.njcn.prepare.harmonic.pojo.param.LineParam;
*/ */
public interface IntegrityService { 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);
} }

View File

@@ -1,16 +1,17 @@
//package com.njcn.prepare.harmonic.service.mysql.line; package com.njcn.prepare.harmonic.service.mysql.line;
//
//import com.baomidou.mybatisplus.extension.service.IService; import com.njcn.prepare.bo.CalculatedParam;
//import com.njcn.process.pojo.po.LimitRate;
// import java.util.List;
///**
// * <p> /**
// * 服务类 * @author xuyang
// * </p> * @createTime 2023/11/13 10:30
// * */
// * @author lxp public interface LimitRateService {
// * @since 2023-03-16
// */ // void limitRate(List<String> indexLists,String startTime,String endTime);
//public interface LimitRateService extends IService<LimitRate> {
// void limitRate(CalculatedParam calculatedParam);
//}
}

View File

@@ -1,5 +1,6 @@
package com.njcn.prepare.harmonic.service.mysql.line; package com.njcn.prepare.harmonic.service.mysql.line;
import com.njcn.prepare.bo.CalculatedParam;
import com.njcn.prepare.harmonic.pojo.param.LineParam; import com.njcn.prepare.harmonic.pojo.param.LineParam;
import java.util.List; import java.util.List;
@@ -14,4 +15,6 @@ public interface LimitTargetService {
void getLimitTargetData(LineParam lineParam); void getLimitTargetData(LineParam lineParam);
void limitTargetData(List<String> indexLists,String startTime,String endTime); void limitTargetData(List<String> indexLists,String startTime,String endTime);
void limitTargetData(CalculatedParam calculatedParam);
} }