河北超高压算法调整

This commit is contained in:
2023-12-25 11:07:07 +08:00
parent f9ac0a5c45
commit b5001441f2
3 changed files with 63 additions and 53 deletions

View File

@@ -1,6 +1,5 @@
package com.njcn.prepare.harmonic.controller.line;
import cn.hutool.core.collection.CollectionUtil;
import com.njcn.common.pojo.annotation.OperateInfo;
import com.njcn.common.pojo.enums.common.LogEnum;
import com.njcn.common.pojo.enums.response.CommonResponseEnum;
@@ -8,17 +7,14 @@ import com.njcn.common.pojo.response.HttpResult;
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.bo.CalculatedParam;
import com.njcn.prepare.harmonic.pojo.param.LineParam;
import com.njcn.prepare.harmonic.service.mysql.line.IntegrityService;
import com.njcn.prepare.harmonic.utils.PublicUtil;
import com.njcn.web.controller.BaseController;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiOperation;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.util.CollectionUtils;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
@@ -53,14 +49,18 @@ public class IntegrityController extends BaseController {
public HttpResult<String> dataIntegrity(@RequestBody @Validated LineParam lineParam){
log.info(LocalDateTime.now()+"dataIntegrity开始执行");
String methodDescribe = getMethodDescribe("dataIntegrity");
CalculatedParam calculatedParam = new CalculatedParam();
calculatedParam.setDataDate(lineParam.getDataDate());
if (CollectionUtil.isNotEmpty(lineParam.getLineIds())){
calculatedParam.setIdList(lineParam.getLineIds());
} else {
calculatedParam.setIdList(commTerminalGeneralClient.getRunMonitorIds().getData());
String startTime,endTime;
if (Objects.nonNull(lineParam.getRepairFlag()) && lineParam.getRepairFlag()){
List<String> timeRange = NjcnDateUtils.findEveryDay(lineParam.getBeginTime(),lineParam.getEndTime());
for (String item : timeRange) {
log.info(item+"-->开始执行");
startTime = item+" "+"00:00:00";
endTime = item+" "+"23:59:59";
integrityService.dataIntegrity(lineParam,startTime,endTime);
}
} else {
integrityService.dataIntegrity(lineParam,lineParam.getBeginTime(),lineParam.getEndTime());
}
integrityService.dataIntegrity(calculatedParam);
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, CommonResponseEnum.SUCCESS.getMessage(), methodDescribe);
}
}

View File

@@ -1,13 +1,17 @@
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.constant.InfluxDbSqlConstant;
import com.njcn.influx.deprecated.InfluxDBPublicParam;
import com.njcn.influx.imapper.DataVMapper;
import com.njcn.influx.pojo.bo.MeasurementCount;
import com.njcn.influx.pojo.constant.InfluxDBTableConstant;
@@ -16,15 +20,21 @@ import com.njcn.influx.query.InfluxQueryWrapper;
import com.njcn.influx.utils.InfluxDbUtils;
import com.njcn.prepare.harmonic.mapper.mysql.day.RStatIntegrityDMapper;
import com.njcn.prepare.harmonic.pojo.bo.CalculatedParam;
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.apache.commons.collections4.ListUtils;
import org.influxdb.dto.QueryResult;
import org.influxdb.impl.InfluxDBResultMapper;
import org.springframework.scheduling.annotation.Async;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.CollectionUtils;
import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
import java.util.ArrayList;
import java.util.List;
import java.util.Objects;
@@ -54,37 +64,35 @@ public class IntegrityServiceImpl extends MppServiceImpl<RStatIntegrityDMapper,
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<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<>();
// 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")
@Deprecated
public void dataIntegrity(LineParam lineParam, String startTime, String endTime) {
LocalDate dateTime = LocalDate.parse(startTime, DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));
List<LineDevGetDTO> lineDevGetDTOList;
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<>();
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
@@ -144,16 +152,16 @@ public class IntegrityServiceImpl extends MppServiceImpl<RStatIntegrityDMapper,
/********************************新算法结束************************************************/
// 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();
// }
// }
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 = 'A' 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

@@ -1,6 +1,7 @@
package com.njcn.prepare.harmonic.service.mysql.line;
import com.njcn.prepare.harmonic.pojo.bo.CalculatedParam;
import com.njcn.prepare.harmonic.pojo.param.LineParam;
/**
* @author xiaoyao
@@ -9,7 +10,8 @@ import com.njcn.prepare.harmonic.pojo.bo.CalculatedParam;
*/
public interface IntegrityService {
// void dataIntegrity(LineParam lineParam,String startTime,String endTime);
@Deprecated
void dataIntegrity(LineParam lineParam, String startTime, String endTime);
/***
* 监测点数据完整性_日表