1.地市数据完整性
2.监测点稳态指标合格率
This commit is contained in:
@@ -58,5 +58,6 @@ public class BaseParam implements Serializable {
|
||||
@ApiModelProperty(name = "idList",value = "索引集合")
|
||||
private List<String> idList;
|
||||
|
||||
|
||||
@ApiModelProperty(name = "type",value = "0:通用 1:省级平台 ")
|
||||
private Integer type;
|
||||
}
|
||||
|
||||
@@ -231,45 +231,45 @@ public class ExecutionCenter extends BaseController {
|
||||
dealResponse(calculatedParam, liteflowResponse, methodDescribe);
|
||||
}
|
||||
}
|
||||
//
|
||||
// @OperateInfo(info = LogEnum.BUSINESS_COMMON)
|
||||
// @ApiOperation("单位监测点算法执行链")
|
||||
// @PostMapping("/orgPointExecutor")
|
||||
// @Async("asyncExecutor")
|
||||
// public void orgPointExecutor(@RequestBody BaseParam baseParam) {
|
||||
// String methodDescribe = getMethodDescribe("OrgPointExecutor");
|
||||
// //手动判断参数是否合法,
|
||||
// CalculatedParam<DeptGetChildrenMoreDTO> calculatedParam = judgeExecuteParam(baseParam);
|
||||
// // 测点索引
|
||||
// DeptGetLineParam deptGetLineParam = new DeptGetLineParam();
|
||||
//
|
||||
// if (CollectionUtils.isEmpty(calculatedParam.getIdList())) {
|
||||
// Dept data = deptFeignClient.getRootDept().getData();
|
||||
// deptGetLineParam.setDeptId(data.getId());
|
||||
// calculatedParam.setIdList(commTerminalGeneralClient.deptGetLine(deptGetLineParam).getData());
|
||||
// }
|
||||
// LiteflowResponse liteflowResponse;
|
||||
// if (baseParam.isRepair()) {
|
||||
// //补招时,起始日期、截止日期必填
|
||||
// DateTime startDate = DateUtil.parse(baseParam.getBeginTime(), DatePattern.NORM_DATE_FORMAT);
|
||||
// DateTime endDate = DateUtil.parse(baseParam.getEndTime(), DatePattern.NORM_DATE_FORMAT);
|
||||
// long betweenDay = DateUtil.betweenDay(startDate, endDate, true);
|
||||
// //递增日期执行算法链
|
||||
// for (int i = 0; i < betweenDay; i++) {
|
||||
// if (i != 0) {
|
||||
// startDate = DateUtil.offsetDay(startDate, 1);
|
||||
// }
|
||||
// calculatedParam.setDataDate(DateUtil.format(startDate, DatePattern.NORM_DATE_PATTERN));
|
||||
// liteflowResponse = flowExecutor.execute2Resp("org_point", calculatedParam);
|
||||
// dealResponse(calculatedParam, liteflowResponse, methodDescribe);
|
||||
// }
|
||||
// } else {
|
||||
// //非补招
|
||||
// liteflowResponse = flowExecutor.execute2Resp("org_point", calculatedParam);
|
||||
// dealResponse(calculatedParam, liteflowResponse, methodDescribe);
|
||||
// }
|
||||
//
|
||||
// }
|
||||
|
||||
@OperateInfo(info = LogEnum.BUSINESS_COMMON)
|
||||
@ApiOperation("单位监测点算法执行链")
|
||||
@PostMapping("/orgPointExecutor")
|
||||
@Async("asyncExecutor")
|
||||
public void orgPointExecutor(@RequestBody BaseParam baseParam) {
|
||||
String methodDescribe = getMethodDescribe("OrgPointExecutor");
|
||||
//手动判断参数是否合法,
|
||||
CalculatedParam<DeptGetChildrenMoreDTO> calculatedParam = judgeExecuteParam(baseParam);
|
||||
// 测点索引
|
||||
DeptGetLineParam deptGetLineParam = new DeptGetLineParam();
|
||||
|
||||
if (CollectionUtils.isEmpty(calculatedParam.getIdList())) {
|
||||
Dept data = deptFeignClient.getRootDept().getData();
|
||||
deptGetLineParam.setDeptId(data.getId());
|
||||
calculatedParam.setIdList(commTerminalGeneralClient.deptGetLine(deptGetLineParam).getData());
|
||||
}
|
||||
LiteflowResponse liteflowResponse;
|
||||
if (baseParam.isRepair()) {
|
||||
//补招时,起始日期、截止日期必填
|
||||
DateTime startDate = DateUtil.parse(baseParam.getBeginTime(), DatePattern.NORM_DATE_FORMAT);
|
||||
DateTime endDate = DateUtil.parse(baseParam.getEndTime(), DatePattern.NORM_DATE_FORMAT);
|
||||
long betweenDay = DateUtil.betweenDay(startDate, endDate, true);
|
||||
//递增日期执行算法链
|
||||
for (int i = 0; i < betweenDay; i++) {
|
||||
if (i != 0) {
|
||||
startDate = DateUtil.offsetDay(startDate, 1);
|
||||
}
|
||||
calculatedParam.setDataDate(DateUtil.format(startDate, DatePattern.NORM_DATE_PATTERN));
|
||||
liteflowResponse = flowExecutor.execute2Resp("org_point", calculatedParam);
|
||||
dealResponse(calculatedParam, liteflowResponse, methodDescribe);
|
||||
}
|
||||
} else {
|
||||
//非补招
|
||||
liteflowResponse = flowExecutor.execute2Resp("org_point", calculatedParam);
|
||||
dealResponse(calculatedParam, liteflowResponse, methodDescribe);
|
||||
}
|
||||
|
||||
}
|
||||
//
|
||||
// @OperateInfo(info = LogEnum.BUSINESS_COMMON)
|
||||
// @ApiOperation("pms国网上送单位层级算法执行链")
|
||||
|
||||
@@ -39,5 +39,13 @@ public class DeviceExecutor extends BaseExecutor {
|
||||
onlineRateService.dataOnlineRate(bindCmp.getRequestData());
|
||||
}
|
||||
|
||||
@LiteflowMethod(value = LiteFlowMethodEnum.IS_ACCESS, nodeId = "deviceOnlineRateMonth", nodeType = NodeTypeEnum.COMMON)
|
||||
public boolean dataOnlineRateMonthAccess(NodeComponent bindCmp) {
|
||||
return isAccess(bindCmp);
|
||||
}
|
||||
@LiteflowMethod(value = LiteFlowMethodEnum.PROCESS, nodeId = "deviceOnlineRateMonth", nodeType = NodeTypeEnum.COMMON)
|
||||
public void deviceOnlineRateMonthProcess(NodeComponent bindCmp) {
|
||||
onlineRateService.dataOnlineRateMonth(bindCmp.getRequestData());
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -2,6 +2,7 @@ package com.njcn.algorithm.executor;
|
||||
|
||||
import com.njcn.algorithm.service.line.IDataCleanService;
|
||||
import com.njcn.algorithm.service.line.IDataCrossingService;
|
||||
import com.njcn.algorithm.service.line.IDataIntegrityService;
|
||||
import com.njcn.algorithm.service.line.IDayDataService;
|
||||
import com.yomahub.liteflow.annotation.LiteflowComponent;
|
||||
import com.yomahub.liteflow.annotation.LiteflowMethod;
|
||||
@@ -28,9 +29,12 @@ public class MeasurementExecutor extends BaseExecutor {
|
||||
private IDayDataService dayDataService;
|
||||
@Resource
|
||||
private IDataCleanService dataCleanService;
|
||||
|
||||
@Resource
|
||||
private IDataCrossingService dataCrossingService;
|
||||
@Resource
|
||||
private IDataIntegrityService dataIntegrityService;
|
||||
|
||||
|
||||
/**
|
||||
* 数据清洗 电压表
|
||||
* dataV表
|
||||
@@ -307,4 +311,16 @@ public class MeasurementExecutor extends BaseExecutor {
|
||||
public void dataLimitTargetProcess(NodeComponent bindCmp) {
|
||||
dataCrossingService.limitTargetHandler(bindCmp.getRequestData());
|
||||
}
|
||||
|
||||
@LiteflowMethod(value = LiteFlowMethodEnum.IS_ACCESS, nodeId = "dataIntegrity", nodeType = NodeTypeEnum.COMMON)
|
||||
public boolean dataIntegrityAccess(NodeComponent bindCmp) {
|
||||
return isAccess(bindCmp);
|
||||
}
|
||||
@LiteflowMethod(value = LiteFlowMethodEnum.PROCESS, nodeId = "dataIntegrity", nodeType = NodeTypeEnum.COMMON)
|
||||
public void dataIntegrityProcess(NodeComponent bindCmp) {
|
||||
dataIntegrityService.dataIntegrity(bindCmp.getRequestData());
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
@@ -0,0 +1,39 @@
|
||||
package com.njcn.algorithm.executor;
|
||||
|
||||
import com.njcn.algorithm.service.line.IDataIntegrityService;
|
||||
import com.njcn.algorithm.service.line.IDataOrgPointService;
|
||||
import com.yomahub.liteflow.annotation.LiteflowComponent;
|
||||
import com.yomahub.liteflow.annotation.LiteflowMethod;
|
||||
import com.yomahub.liteflow.core.NodeComponent;
|
||||
import com.yomahub.liteflow.enums.LiteFlowMethodEnum;
|
||||
import com.yomahub.liteflow.enums.NodeTypeEnum;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
|
||||
/**
|
||||
* Description:
|
||||
* Date: 2023/11/10 10:39【需求编号】
|
||||
*
|
||||
* @author clam
|
||||
* @version V1.0.0
|
||||
*/
|
||||
@LiteflowComponent
|
||||
@RequiredArgsConstructor
|
||||
public class OrgPointExecutor extends BaseExecutor{
|
||||
|
||||
|
||||
@Resource
|
||||
private IDataOrgPointService dataOrgPointService;
|
||||
|
||||
|
||||
@LiteflowMethod(value = LiteFlowMethodEnum.IS_ACCESS, nodeId = "dataOrgIntegrity", nodeType = NodeTypeEnum.COMMON)
|
||||
public boolean dataOrgIntegrityAccess(NodeComponent bindCmp) {
|
||||
return isAccess(bindCmp);
|
||||
}
|
||||
@LiteflowMethod(value = LiteFlowMethodEnum.PROCESS, nodeId = "dataOrgIntegrity", nodeType = NodeTypeEnum.COMMON)
|
||||
public void dataOrgIntegrityProcess(NodeComponent bindCmp) {
|
||||
dataOrgPointService.dataOrgIntegrity(bindCmp.getRequestData());
|
||||
}
|
||||
|
||||
}
|
||||
@@ -34,4 +34,13 @@ public interface IDataCrossingService {
|
||||
* @Date: 2025/3/12 16:03
|
||||
*/
|
||||
List<QualifiedDetail> limitQualifiedDayHandler(CalculatedParam calculatedParam);
|
||||
|
||||
|
||||
/**
|
||||
* 监测点稳态指标合格率(月)
|
||||
* @param calculatedParam
|
||||
* @Author: wr
|
||||
* @Date: 2025/3/12 16:03
|
||||
*/
|
||||
List<QualifiedDetail> limitQualifiedMonthHandler(CalculatedParam calculatedParam);
|
||||
}
|
||||
|
||||
@@ -2,6 +2,9 @@ package com.njcn.algorithm.service.line;
|
||||
|
||||
|
||||
import com.njcn.algorithm.pojo.bo.CalculatedParam;
|
||||
import com.njcn.dataProcess.pojo.dto.DataIntegrityDto;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @author xiaoyao
|
||||
@@ -17,4 +20,13 @@ public interface IDataIntegrityService {
|
||||
* @param calculatedParam 查询条件
|
||||
*/
|
||||
void dataIntegrity(CalculatedParam<String> calculatedParam);
|
||||
|
||||
|
||||
/***
|
||||
* 监测点数据完整性_月表
|
||||
* @author xuyang
|
||||
* @date 2023/11/09 10:08
|
||||
* @param calculatedParam 查询条件
|
||||
*/
|
||||
List<DataIntegrityDto> dataIntegrityMonth(CalculatedParam<String> calculatedParam);
|
||||
}
|
||||
|
||||
@@ -0,0 +1,32 @@
|
||||
package com.njcn.algorithm.service.line;
|
||||
|
||||
|
||||
import com.njcn.algorithm.pojo.bo.CalculatedParam;
|
||||
import com.njcn.dataProcess.pojo.dto.DataOrgIntegrityDto;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @author xiaoyao
|
||||
* @version 1.0.0
|
||||
* @createTime 2022/10/24 20:06
|
||||
*/
|
||||
public interface IDataOrgPointService {
|
||||
|
||||
/***
|
||||
* 地区数据完整性_日表
|
||||
* @author xuyang
|
||||
* @date 2023/11/09 10:08
|
||||
* @param calculatedParam 查询条件
|
||||
*/
|
||||
void dataOrgIntegrity(CalculatedParam calculatedParam);
|
||||
|
||||
|
||||
/***
|
||||
* 地区点数据完整性_月表
|
||||
* @author xuyang
|
||||
* @date 2023/11/09 10:08
|
||||
* @param calculatedParam 查询条件
|
||||
*/
|
||||
List<DataOrgIntegrityDto> dataOrgIntegrityMonth(CalculatedParam calculatedParam);
|
||||
}
|
||||
@@ -24,6 +24,7 @@ import com.njcn.influx.pojo.constant.InfluxDBTableConstant;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.apache.commons.collections4.ListUtils;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
import org.springframework.stereotype.Component;
|
||||
@@ -260,13 +261,26 @@ public class IDataCrossingServiceImpl implements IDataCrossingService {
|
||||
|
||||
@Override
|
||||
public List<QualifiedDetail> limitQualifiedDayHandler(CalculatedParam calculatedParam) {
|
||||
LineCountEvaluateParam lineParam = new LineCountEvaluateParam();
|
||||
lineParam.setStartTime(TimeUtils.getBeginOfDay(calculatedParam.getDataDate()));
|
||||
lineParam.setEndTime(TimeUtils.getEndOfDay(calculatedParam.getDataDate()));
|
||||
List<String> lineIdList = calculatedParam.getIdList();
|
||||
return getQualifiedDetails(calculatedParam, lineParam, lineIdList);
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public List<QualifiedDetail> limitQualifiedMonthHandler(CalculatedParam calculatedParam) {
|
||||
LineCountEvaluateParam lineParam = new LineCountEvaluateParam();
|
||||
lineParam.setStartTime(TimeUtils.getBeginOfMonth(calculatedParam.getDataDate()));
|
||||
lineParam.setEndTime(TimeUtils.getEndOfMonth(calculatedParam.getDataDate()));
|
||||
List<String> devIdList = calculatedParam.getIdList();
|
||||
List<String> lineIdList = calculatedParam.getIdList();
|
||||
return getQualifiedDetails(calculatedParam, lineParam, lineIdList);
|
||||
}
|
||||
|
||||
private List<QualifiedDetail> getQualifiedDetails(CalculatedParam calculatedParam, LineCountEvaluateParam lineParam, List<String> lineIdList) {
|
||||
List<QualifiedDetail> info = new ArrayList<>();
|
||||
List<List<String>> pendingIds = ListUtils.partition(devIdList, NUM);
|
||||
List<List<String>> pendingIds = ListUtils.partition(lineIdList, NUM);
|
||||
for (List<String> pendingId : pendingIds) {
|
||||
lineParam.setLineId(pendingId);
|
||||
List<DataLimitRateDto> data = dataLimitRateFeignClient.getRawData(lineParam).getData();
|
||||
@@ -277,43 +291,52 @@ public class IDataCrossingServiceImpl implements IDataCrossingService {
|
||||
qualified.setTime(calculatedParam.getDataDate());
|
||||
int all = value.stream().mapToInt(DataLimitRateDto::getAllTime).sum();
|
||||
if (all > 0) {
|
||||
qualified.setFreqDevOvertime(PubUtils.doubleRound(2, 100.0 - (value.stream().mapToInt(DataLimitRateDto::getFreqDevOvertime).sum() * 100.0 / all)));
|
||||
qualified.setVoltageDevOvertime(PubUtils.doubleRound(2, 100.0 - (value.stream().mapToInt(DataLimitRateDto::getVoltageDevOvertime).sum() * 100.0 / all)));
|
||||
qualified.setUbalanceOvertime(PubUtils.doubleRound(2, 100.0 - (value.stream().mapToInt(DataLimitRateDto::getUbalanceOvertime).sum() * 100.0 / all)));
|
||||
qualified.setUaberranceOvertime(PubUtils.doubleRound(2, 100.0 - (value.stream().mapToInt(DataLimitRateDto::getUaberranceOvertime).sum() * 100.0 / all)));
|
||||
qualified.setINegOvertime(PubUtils.doubleRound(2, 100.0 - (value.stream().mapToInt(DataLimitRateDto::getINegOvertime).sum() * 100.0 / all)));
|
||||
setOverTime(2,25,"getUharm",value, qualified, all);
|
||||
setOverTime(2,25,"getIharm",value, qualified, all);
|
||||
setOverTime(1,16,"getInuharm",value, qualified, all);
|
||||
qualified.setFreqDevOvertime(PubUtils.doubleRound(2, 100.0 - getaDouble(value.stream().mapToInt(DataLimitRateDto::getFreqDevOvertime).sum() * 100.0, all)));
|
||||
qualified.setVoltageDevOvertime(PubUtils.doubleRound(2, 100.0 - getaDouble(value.stream().mapToInt(DataLimitRateDto::getVoltageDevOvertime).sum() * 100.0, all)));
|
||||
qualified.setUbalanceOvertime(PubUtils.doubleRound(2, 100.0 - getaDouble(value.stream().mapToInt(DataLimitRateDto::getUbalanceOvertime).sum() * 100.0, all)));
|
||||
qualified.setUaberranceOvertime(PubUtils.doubleRound(2, 100.0 - getaDouble(value.stream().mapToInt(DataLimitRateDto::getUaberranceOvertime).sum() * 100.0, all)));
|
||||
qualified.setINegOvertime(PubUtils.doubleRound(2, 100.0 - getaDouble(value.stream().mapToInt(DataLimitRateDto::getINegOvertime).sum() * 100.0, all)));
|
||||
setOverTime(2, 25, "uharm", value, qualified, all);
|
||||
setOverTime(2, 25, "iharm", value, qualified, all);
|
||||
setOverTime(1, 16, "inuharm", value, qualified, all);
|
||||
}
|
||||
int flickerAll = value.stream().mapToInt(DataLimitRateDto::getFlickerAllTime).sum();
|
||||
if (flickerAll > 0) {
|
||||
qualified.setFlickerOvertime(PubUtils.doubleRound(2, 100.0 - (value.stream().mapToInt(DataLimitRateDto::getFlickerOvertime).sum() * 100.0 / flickerAll)));
|
||||
qualified.setFlickerOvertime(PubUtils.doubleRound(2, 100.0 - getaDouble(value.stream().mapToInt(DataLimitRateDto::getFlickerOvertime).sum() * 100.0, flickerAll)));
|
||||
}
|
||||
info.add(qualified);
|
||||
|
||||
});
|
||||
}
|
||||
if (CollUtil.isNotEmpty(info)) {
|
||||
|
||||
}
|
||||
return info;
|
||||
}
|
||||
|
||||
private static void setOverTime(Integer start, Integer end, String targetName,List<DataLimitRateDto> value, QualifiedDetail qualified, int all) {
|
||||
private double getaDouble(double value, int all) {
|
||||
return value * 100.0 / all;
|
||||
}
|
||||
|
||||
private void setOverTime(Integer start, Integer end, String targetName, List<DataLimitRateDto> value, QualifiedDetail qualified, int all) {
|
||||
for (int i = start; i <= end; i++) {
|
||||
// 构造方法名
|
||||
String methodName = targetName + i + "Overtime";
|
||||
try {
|
||||
Field finalField = DataLimitRateDto.class.getDeclaredField(methodName);
|
||||
finalField.setAccessible(true);
|
||||
finalField.set(qualified, PubUtils.doubleRound(2, 100.0 - (value.stream().mapToInt(temp -> {
|
||||
Integer o;
|
||||
try {
|
||||
o = (Integer) finalField.get(temp);
|
||||
} catch (IllegalAccessException e) {
|
||||
throw new RuntimeException(e);
|
||||
}
|
||||
return o.intValue();
|
||||
}).sum() * 100.0 / all)));
|
||||
double v = PubUtils.doubleRound(2, 100.0 - getaDouble(value.stream().mapToInt(temp -> {
|
||||
Integer o;
|
||||
try {
|
||||
o = (Integer) finalField.get(temp);
|
||||
} catch (IllegalAccessException e) {
|
||||
throw new RuntimeException(e);
|
||||
}
|
||||
return o.intValue();
|
||||
}).sum() * 100.0, all));
|
||||
Field declared = QualifiedDetail.class.getDeclaredField(methodName);
|
||||
declared.setAccessible(true);
|
||||
declared.set(qualified, v);
|
||||
} catch (NoSuchFieldException | IllegalAccessException e) {
|
||||
throw new RuntimeException(e);
|
||||
}
|
||||
|
||||
@@ -8,14 +8,12 @@ import com.njcn.algorithm.service.line.IDataIntegrityService;
|
||||
import com.njcn.dataProcess.api.DataIntegrityFeignClient;
|
||||
import com.njcn.dataProcess.api.DataVFeignClient;
|
||||
import com.njcn.dataProcess.dto.MeasurementCountDTO;
|
||||
import com.njcn.dataProcess.pojo.po.RStatIntegrityD;
|
||||
import com.njcn.dataProcess.param.LineCountEvaluateParam;
|
||||
import com.njcn.dataProcess.pojo.dto.DataIntegrityDto;
|
||||
import com.njcn.dataProcess.util.TimeUtils;
|
||||
import com.njcn.device.biz.commApi.CommTerminalGeneralClient;
|
||||
import com.njcn.device.biz.pojo.dto.LineDevGetDTO;
|
||||
import com.njcn.influx.constant.InfluxDbSqlConstant;
|
||||
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 lombok.RequiredArgsConstructor;
|
||||
import org.apache.commons.collections4.ListUtils;
|
||||
import org.springframework.stereotype.Service;
|
||||
@@ -23,6 +21,7 @@ import org.springframework.stereotype.Service;
|
||||
import javax.annotation.Resource;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Objects;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
@@ -36,15 +35,15 @@ import java.util.stream.Collectors;
|
||||
public class IDataIntegrityServiceImpl implements IDataIntegrityService {
|
||||
@Resource
|
||||
private CommTerminalGeneralClient commTerminalGeneralClient;
|
||||
|
||||
private final DataVFeignClient dataVFeignClient;
|
||||
|
||||
private final DataIntegrityFeignClient dataIntegrityFeignClient;
|
||||
@Resource
|
||||
private DataVFeignClient dataVFeignClient;
|
||||
@Resource
|
||||
private DataIntegrityFeignClient dataIntegrityFeignClient;
|
||||
|
||||
|
||||
@Override
|
||||
public void dataIntegrity(CalculatedParam<String> calculatedParam) {
|
||||
List<RStatIntegrityD> poList = new ArrayList<>();
|
||||
List<DataIntegrityDto> poList = new ArrayList<>();
|
||||
List<String> lineIds = calculatedParam.getIdList();
|
||||
String beginDay = LocalDateTimeUtil.format(
|
||||
LocalDateTimeUtil.beginOfDay(LocalDateTimeUtil.parse(calculatedParam.getDataDate(), DatePattern.NORM_DATE_PATTERN)),
|
||||
@@ -55,15 +54,15 @@ public class IDataIntegrityServiceImpl implements IDataIntegrityService {
|
||||
DatePattern.NORM_DATETIME_PATTERN
|
||||
);
|
||||
//以尺寸100分片
|
||||
List<List<String>> pendingIds = ListUtils.partition(lineIds,5);
|
||||
List<List<String>> pendingIds = ListUtils.partition(lineIds, 5);
|
||||
for (List<String> pendingId : pendingIds) {
|
||||
List<LineDevGetDTO> lineDevGetDTOList = commTerminalGeneralClient.getMonitorDetailList(pendingId).getData();
|
||||
List<MeasurementCountDTO> countList = dataVFeignClient.getMeasurementCount(pendingId,beginDay,endDay).getData();
|
||||
List<MeasurementCountDTO> countList = dataVFeignClient.getMeasurementCount(pendingId, beginDay, endDay).getData();
|
||||
poList.addAll(
|
||||
lineDevGetDTOList.stream()
|
||||
.map(item -> {
|
||||
RStatIntegrityD integrityDpo = new RStatIntegrityD();
|
||||
integrityDpo.setTimeId(LocalDateTimeUtil.parseDate(calculatedParam.getDataDate(), DatePattern.NORM_DATE_PATTERN));
|
||||
DataIntegrityDto integrityDpo = new DataIntegrityDto();
|
||||
integrityDpo.setTimeId(calculatedParam.getDataDate());
|
||||
integrityDpo.setLineIndex(item.getPointId());
|
||||
integrityDpo.setDueTime(InfluxDBTableConstant.DAY_MINUTE / item.getInterval());
|
||||
integrityDpo.setRealTime(countList.stream()
|
||||
@@ -76,12 +75,40 @@ public class IDataIntegrityServiceImpl implements IDataIntegrityService {
|
||||
.collect(Collectors.toList())
|
||||
);
|
||||
}
|
||||
if(CollUtil.isNotEmpty(poList)){
|
||||
if (CollUtil.isNotEmpty(poList)) {
|
||||
dataIntegrityFeignClient.batchInsertion(poList);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<DataIntegrityDto> dataIntegrityMonth(CalculatedParam<String> calculatedParam) {
|
||||
LineCountEvaluateParam lineParam = new LineCountEvaluateParam();
|
||||
lineParam.setStartTime(TimeUtils.getBeginOfMonth(calculatedParam.getDataDate()));
|
||||
lineParam.setEndTime(TimeUtils.getEndOfMonth(calculatedParam.getDataDate()));
|
||||
List<String> devIdList = calculatedParam.getIdList();
|
||||
|
||||
List<DataIntegrityDto> info = new ArrayList<>();
|
||||
List<List<String>> pendingIds = ListUtils.partition(devIdList, 100);
|
||||
for (List<String> pendingId : pendingIds) {
|
||||
lineParam.setLineId(pendingId);
|
||||
List<DataIntegrityDto> data = dataIntegrityFeignClient.getRawData(lineParam).getData();
|
||||
Map<String, List<DataIntegrityDto>> collect = data.stream().collect(Collectors.groupingBy(DataIntegrityDto::getLineIndex));
|
||||
collect.forEach((key, value) -> {
|
||||
DataIntegrityDto integrity = new DataIntegrityDto();
|
||||
integrity.setTimeId(calculatedParam.getDataDate());
|
||||
integrity.setLineIndex(key);
|
||||
integrity.setDueTime(value.stream().mapToInt(DataIntegrityDto::getDueTime).sum());
|
||||
integrity.setRealTime(value.stream().mapToInt(DataIntegrityDto::getRealTime).sum());
|
||||
info.add(integrity);
|
||||
});
|
||||
}
|
||||
if (CollUtil.isNotEmpty(info)) {
|
||||
|
||||
|
||||
}
|
||||
return info;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
package com.njcn.algorithm.serviceimpl.line;
|
||||
|
||||
|
||||
import cn.hutool.core.collection.CollUtil;
|
||||
import cn.hutool.core.collection.CollectionUtil;
|
||||
import cn.hutool.core.date.DateUnit;
|
||||
import cn.hutool.core.date.DateUtil;
|
||||
@@ -22,7 +23,6 @@ import com.njcn.influx.deprecated.InfluxDBPublicParam;
|
||||
import com.njcn.user.api.DeptFeignClient;
|
||||
import com.njcn.user.pojo.po.Dept;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import org.apache.commons.collections.CollectionUtils;
|
||||
import org.apache.commons.collections4.ListUtils;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
@@ -136,6 +136,10 @@ public class IDataOnlineRateServiceImpl implements IDataOnlineRateService {
|
||||
onlineRateDto.setOfflineMin(value.stream().mapToInt(DataOnlineRateDto.Detail::getOfflineMin).sum());
|
||||
info.add(onlineRateDto);
|
||||
});
|
||||
}
|
||||
if(CollUtil.isNotEmpty(info)){
|
||||
|
||||
|
||||
}
|
||||
return info;
|
||||
}
|
||||
|
||||
@@ -0,0 +1,86 @@
|
||||
package com.njcn.algorithm.serviceimpl.line;
|
||||
|
||||
import cn.hutool.core.collection.CollUtil;
|
||||
import com.njcn.algorithm.pojo.bo.CalculatedParam;
|
||||
import com.njcn.algorithm.service.line.IDataOrgPointService;
|
||||
import com.njcn.dataProcess.api.DataIntegrityFeignClient;
|
||||
import com.njcn.dataProcess.api.DataOrgIntegrityFeignClient;
|
||||
import com.njcn.dataProcess.param.LineCountEvaluateParam;
|
||||
import com.njcn.dataProcess.pojo.dto.DataIntegrityDto;
|
||||
import com.njcn.dataProcess.pojo.dto.DataOrgIntegrityDto;
|
||||
import com.njcn.dataProcess.util.TimeUtils;
|
||||
import com.njcn.device.biz.pojo.dto.DeptGetChildrenMoreDTO;
|
||||
import com.njcn.device.biz.pojo.dto.LineDevGetDTO;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import org.apache.commons.collections4.ListUtils;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import java.util.*;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
|
||||
/**
|
||||
* @Author: cdf
|
||||
* @CreateTime: 2025-02-28
|
||||
* @Description: 数据完成性
|
||||
*/
|
||||
@Service
|
||||
@RequiredArgsConstructor
|
||||
public class IDataOrgPointServiceImpl implements IDataOrgPointService {
|
||||
|
||||
@Resource
|
||||
private DataIntegrityFeignClient dataIntegrityFeignClient;
|
||||
|
||||
@Resource
|
||||
private DataOrgIntegrityFeignClient dataOrgIntegrityFeignClient;
|
||||
@Override
|
||||
public void dataOrgIntegrity(CalculatedParam calculatedParam) {
|
||||
List<DataOrgIntegrityDto> info=new ArrayList<>();
|
||||
LineCountEvaluateParam lineParam = new LineCountEvaluateParam();
|
||||
lineParam.setStartTime(TimeUtils.getBeginOfDay(calculatedParam.getDataDate()));
|
||||
lineParam.setEndTime(TimeUtils.getEndOfDay(calculatedParam.getDataDate()));
|
||||
List<DeptGetChildrenMoreDTO> deptList = calculatedParam.getIdList();
|
||||
for (DeptGetChildrenMoreDTO deptGetChildrenMoreDTO : deptList) {
|
||||
List<LineDevGetDTO> lineBaseList = deptGetChildrenMoreDTO.getLineBaseList();
|
||||
List<String> lineIds = lineBaseList.stream().map(LineDevGetDTO::getPointId).collect(Collectors.toList());
|
||||
lineParam.setLineId(lineIds);
|
||||
List<DataIntegrityDto> data = dataIntegrityFeignClient.getRawData(lineParam).getData();
|
||||
DataOrgIntegrityDto integrity = new DataOrgIntegrityDto();
|
||||
integrity.setTimeId(calculatedParam.getDataDate());
|
||||
integrity.setOrgId(deptGetChildrenMoreDTO.getUnitId());
|
||||
integrity.setDueTime(data.stream().mapToInt(DataIntegrityDto::getDueTime).sum());
|
||||
integrity.setRealTime(data.stream().mapToInt(DataIntegrityDto::getRealTime).sum());
|
||||
info.add(integrity);
|
||||
}
|
||||
if(CollUtil.isNotEmpty(info)){
|
||||
dataOrgIntegrityFeignClient.batchInsertion(info);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<DataOrgIntegrityDto> dataOrgIntegrityMonth(CalculatedParam calculatedParam) {
|
||||
List<DataOrgIntegrityDto> info=new ArrayList<>();
|
||||
LineCountEvaluateParam lineParam = new LineCountEvaluateParam();
|
||||
lineParam.setStartTime(TimeUtils.getBeginOfMonth(calculatedParam.getDataDate()));
|
||||
lineParam.setEndTime(TimeUtils.getEndOfMonth(calculatedParam.getDataDate()));
|
||||
List<DeptGetChildrenMoreDTO> deptList = calculatedParam.getIdList();
|
||||
for (DeptGetChildrenMoreDTO deptGetChildrenMoreDTO : deptList) {
|
||||
lineParam.setLineId(Arrays.asList(deptGetChildrenMoreDTO.getUnitId()));
|
||||
List<DataOrgIntegrityDto> data = dataOrgIntegrityFeignClient.getRawData(lineParam).getData();
|
||||
Map<String, List<DataOrgIntegrityDto>> collect = data.stream().collect(Collectors.groupingBy(DataOrgIntegrityDto::getOrgId));
|
||||
collect.forEach((key, value) -> {
|
||||
DataOrgIntegrityDto integrity = new DataOrgIntegrityDto();
|
||||
integrity.setTimeId(calculatedParam.getDataDate());
|
||||
integrity.setOrgId(deptGetChildrenMoreDTO.getUnitId());
|
||||
integrity.setDueTime(data.stream().mapToInt(DataOrgIntegrityDto::getDueTime).sum());
|
||||
integrity.setRealTime(data.stream().mapToInt(DataOrgIntegrityDto::getRealTime).sum());
|
||||
info.add(integrity);
|
||||
});
|
||||
}
|
||||
if(CollUtil.isNotEmpty(info)){
|
||||
|
||||
}
|
||||
return info;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user