1.监测点超标信息详情统计
2.终端在线率统计
This commit is contained in:
@@ -48,4 +48,7 @@ public class CalculatedParam<T> implements Serializable {
|
|||||||
*/
|
*/
|
||||||
@ApiModelProperty(name = "idList",value = "索引集合")
|
@ApiModelProperty(name = "idList",value = "索引集合")
|
||||||
private List<T> idList;
|
private List<T> idList;
|
||||||
|
|
||||||
|
@ApiModelProperty(name = "type",value = "0:通用 1:省级平台 ")
|
||||||
|
private Integer type;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -205,10 +205,10 @@ public class ExecutionCenter extends BaseController {
|
|||||||
if (CollectionUtils.isEmpty(calculatedParam.getIdList())) {
|
if (CollectionUtils.isEmpty(calculatedParam.getIdList())) {
|
||||||
Dept data = deptFeignClient.getRootDept().getData();
|
Dept data = deptFeignClient.getRootDept().getData();
|
||||||
deptGetLineParam.setDeptId(data.getId());
|
deptGetLineParam.setDeptId(data.getId());
|
||||||
List<DeptGetDeviceDTO> list = commTerminalGeneralClient.deptGetDevice(deptGetLineParam).getData();
|
List<DeptGetDeviceDTO> list = commTerminalGeneralClient.deptGetDeviceAndMonitor(deptGetLineParam).getData();
|
||||||
DeptGetDeviceDTO dto = list.stream().filter(po -> Objects.equals(po.getUnitId(), data.getId())).collect(Collectors.toList()).get(0);
|
DeptGetDeviceDTO dto = list.stream().filter(po -> Objects.equals(po.getUnitId(), data.getId())).collect(Collectors.toList()).get(0);
|
||||||
List<LineDevGetDTO> devList = dto.getDeviceList();
|
List<LineDevGetDTO> devList = dto.getDeviceList();
|
||||||
calculatedParam.setIdList(devList.stream().map(LineDevGetDTO::getDevId).distinct().collect(Collectors.toList()));
|
calculatedParam.setIdList(devList.stream().distinct().collect(Collectors.toList()));
|
||||||
}
|
}
|
||||||
LiteflowResponse liteflowResponse;
|
LiteflowResponse liteflowResponse;
|
||||||
if (baseParam.isRepair()) {
|
if (baseParam.isRepair()) {
|
||||||
|
|||||||
@@ -8,6 +8,8 @@ import com.yomahub.liteflow.enums.LiteFlowMethodEnum;
|
|||||||
import com.yomahub.liteflow.enums.NodeTypeEnum;
|
import com.yomahub.liteflow.enums.NodeTypeEnum;
|
||||||
import lombok.RequiredArgsConstructor;
|
import lombok.RequiredArgsConstructor;
|
||||||
|
|
||||||
|
import javax.annotation.Resource;
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author hongawen
|
* @author hongawen
|
||||||
@@ -18,14 +20,15 @@ import lombok.RequiredArgsConstructor;
|
|||||||
@RequiredArgsConstructor
|
@RequiredArgsConstructor
|
||||||
public class DeviceExecutor extends BaseExecutor {
|
public class DeviceExecutor extends BaseExecutor {
|
||||||
|
|
||||||
private final IDataOnlineRateService onlineRateService;
|
@Resource
|
||||||
|
private IDataOnlineRateService onlineRateService;
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 算法名: 暂无-----终端在线率_日表(r_stat_onlinerate_d)
|
* 算法名: 暂无-----终端在线率_日表(r_stat_onlinerate_d)
|
||||||
*
|
*
|
||||||
* @author xuyang
|
* @param bindCmp
|
||||||
* @date 2023年11月30日 10:25
|
* @return
|
||||||
*/
|
*/
|
||||||
@LiteflowMethod(value = LiteFlowMethodEnum.IS_ACCESS, nodeId = "deviceOnlineRate", nodeType = NodeTypeEnum.COMMON)
|
@LiteflowMethod(value = LiteFlowMethodEnum.IS_ACCESS, nodeId = "deviceOnlineRate", nodeType = NodeTypeEnum.COMMON)
|
||||||
public boolean deviceOnlineRateAccess(NodeComponent bindCmp) {
|
public boolean deviceOnlineRateAccess(NodeComponent bindCmp) {
|
||||||
|
|||||||
@@ -16,5 +16,5 @@ public interface IDataOnlineRateService {
|
|||||||
* @date 2023/11/09 10:08
|
* @date 2023/11/09 10:08
|
||||||
* @param calculatedParam 查询条件
|
* @param calculatedParam 查询条件
|
||||||
*/
|
*/
|
||||||
void dataOnlineRate(CalculatedParam<String> calculatedParam);
|
void dataOnlineRate(CalculatedParam calculatedParam);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -4,15 +4,19 @@ package com.njcn.algorithm.serviceimpl.line;
|
|||||||
import cn.hutool.core.collection.CollUtil;
|
import cn.hutool.core.collection.CollUtil;
|
||||||
import cn.hutool.core.collection.ListUtil;
|
import cn.hutool.core.collection.ListUtil;
|
||||||
import cn.hutool.core.date.DatePattern;
|
import cn.hutool.core.date.DatePattern;
|
||||||
|
import cn.hutool.core.date.DateUtil;
|
||||||
import cn.hutool.core.date.LocalDateTimeUtil;
|
import cn.hutool.core.date.LocalDateTimeUtil;
|
||||||
import cn.hutool.core.util.ObjectUtil;
|
import cn.hutool.core.util.ObjectUtil;
|
||||||
|
import cn.hutool.core.util.StrUtil;
|
||||||
import com.alibaba.fastjson.JSON;
|
import com.alibaba.fastjson.JSON;
|
||||||
import com.njcn.algorithm.pojo.bo.CalculatedParam;
|
import com.njcn.algorithm.pojo.bo.CalculatedParam;
|
||||||
import com.njcn.algorithm.service.line.IDataCrossingService;
|
import com.njcn.algorithm.service.line.IDataCrossingService;
|
||||||
import com.njcn.dataProcess.api.*;
|
import com.njcn.dataProcess.api.*;
|
||||||
import com.njcn.dataProcess.constant.PhaseType;
|
import com.njcn.dataProcess.constant.PhaseType;
|
||||||
|
import com.njcn.dataProcess.enums.DataCleanEnum;
|
||||||
import com.njcn.dataProcess.param.LineCountEvaluateParam;
|
import com.njcn.dataProcess.param.LineCountEvaluateParam;
|
||||||
import com.njcn.dataProcess.pojo.dto.*;
|
import com.njcn.dataProcess.pojo.dto.*;
|
||||||
|
import com.njcn.dataProcess.pojo.po.PqDataVerify;
|
||||||
import com.njcn.dataProcess.util.TimeUtils;
|
import com.njcn.dataProcess.util.TimeUtils;
|
||||||
import com.njcn.device.biz.commApi.CommTerminalGeneralClient;
|
import com.njcn.device.biz.commApi.CommTerminalGeneralClient;
|
||||||
import com.njcn.device.biz.pojo.po.Overlimit;
|
import com.njcn.device.biz.pojo.po.Overlimit;
|
||||||
@@ -30,10 +34,7 @@ import org.springframework.util.CollectionUtils;
|
|||||||
import javax.annotation.Resource;
|
import javax.annotation.Resource;
|
||||||
import java.lang.reflect.Method;
|
import java.lang.reflect.Method;
|
||||||
import java.time.LocalDateTime;
|
import java.time.LocalDateTime;
|
||||||
import java.util.ArrayList;
|
import java.util.*;
|
||||||
import java.util.HashMap;
|
|
||||||
import java.util.List;
|
|
||||||
import java.util.Map;
|
|
||||||
import java.util.function.Function;
|
import java.util.function.Function;
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
@@ -65,7 +66,8 @@ public class IDataCrossingServiceImpl implements IDataCrossingService {
|
|||||||
private DataLimitRateFeignClient dataLimitRateFeignClient;
|
private DataLimitRateFeignClient dataLimitRateFeignClient;
|
||||||
@Resource
|
@Resource
|
||||||
private DataLimitRateDetailFeignClient dataLimitRateDetailFeignClient;
|
private DataLimitRateDetailFeignClient dataLimitRateDetailFeignClient;
|
||||||
|
@Resource
|
||||||
|
private PqDataVerifyFeignClient pqDataVerifyFeignClient;
|
||||||
@Override
|
@Override
|
||||||
public void limitRateHandler(CalculatedParam calculatedParam) {
|
public void limitRateHandler(CalculatedParam calculatedParam) {
|
||||||
logger.info("{},limitRate表转r_stat_limit_rate_d算法开始=====》", LocalDateTime.now());
|
logger.info("{},limitRate表转r_stat_limit_rate_d算法开始=====》", LocalDateTime.now());
|
||||||
@@ -78,8 +80,8 @@ public class IDataCrossingServiceImpl implements IDataCrossingService {
|
|||||||
//获取所有监测点的限值
|
//获取所有监测点的限值
|
||||||
List<Overlimit> overLimitList = commTerminalGeneralClient.getOverLimitDataByIds(lineIds).getData();
|
List<Overlimit> overLimitList = commTerminalGeneralClient.getOverLimitDataByIds(lineIds).getData();
|
||||||
Map<String, Overlimit> overLimitMap = overLimitList.stream().collect(Collectors.toMap(Overlimit::getId, Function.identity()));
|
Map<String, Overlimit> overLimitMap = overLimitList.stream().collect(Collectors.toMap(Overlimit::getId, Function.identity()));
|
||||||
|
//添加异常数据时间点
|
||||||
|
getAbnormalData(lineParam);
|
||||||
//以100个监测点分片处理
|
//以100个监测点分片处理
|
||||||
List<List<String>> pendingIds = ListUtils.partition(lineIds, NUM);
|
List<List<String>> pendingIds = ListUtils.partition(lineIds, NUM);
|
||||||
ArrayList<String> phase = ListUtil.toList(PhaseType.PHASE_A, PhaseType.PHASE_B, PhaseType.PHASE_C);
|
ArrayList<String> phase = ListUtil.toList(PhaseType.PHASE_A, PhaseType.PHASE_B, PhaseType.PHASE_C);
|
||||||
@@ -188,7 +190,7 @@ public class IDataCrossingServiceImpl implements IDataCrossingService {
|
|||||||
.filter(x -> phase.contains(x.getPhasicType()))
|
.filter(x -> phase.contains(x.getPhasicType()))
|
||||||
.collect(Collectors.groupingBy(DataPltDto::getLineId));
|
.collect(Collectors.groupingBy(DataPltDto::getLineId));
|
||||||
|
|
||||||
for (String item : lineIds) {
|
for (String item : list) {
|
||||||
result.addAll(getData(calculatedParam.getDataDate(),
|
result.addAll(getData(calculatedParam.getDataDate(),
|
||||||
overLimitMap.get(item),
|
overLimitMap.get(item),
|
||||||
allTime.get(item),
|
allTime.get(item),
|
||||||
@@ -204,8 +206,6 @@ public class IDataCrossingServiceImpl implements IDataCrossingService {
|
|||||||
dataPlt.get(item)));
|
dataPlt.get(item)));
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
});
|
});
|
||||||
|
|
||||||
if (CollUtil.isNotEmpty(result)) {
|
if (CollUtil.isNotEmpty(result)) {
|
||||||
@@ -288,7 +288,25 @@ public class IDataCrossingServiceImpl implements IDataCrossingService {
|
|||||||
result.add(t);
|
result.add(t);
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
/**
|
||||||
|
* @Description:
|
||||||
|
* @param lineParam
|
||||||
|
* @Author: wr
|
||||||
|
* @Date: 2025/3/11 9:04
|
||||||
|
*/
|
||||||
|
private void getAbnormalData(LineCountEvaluateParam lineParam) {
|
||||||
|
lineParam.setTableName(DataCleanEnum.DataV.getCode());
|
||||||
|
// 获取异常数据,用于排除异常数据
|
||||||
|
List<PqDataVerify> pqDataVerifies = pqDataVerifyFeignClient.queryData(lineParam).getData();
|
||||||
|
if (CollUtil.isNotEmpty(pqDataVerifies)) {
|
||||||
|
Map<String, List<String>> timeMap = pqDataVerifies.stream()
|
||||||
|
.collect(Collectors.groupingBy(
|
||||||
|
PqDataVerify::getLineId,
|
||||||
|
Collectors.mapping(item->TimeUtils.LocalDateTimeToString(item.getTime()), Collectors.toList())
|
||||||
|
));
|
||||||
|
lineParam.setAbnormalTime(timeMap);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @Description: limitRateData
|
* @Description: limitRateData
|
||||||
@@ -327,8 +345,8 @@ public class IDataCrossingServiceImpl implements IDataCrossingService {
|
|||||||
// 获取 Overlimit 类的 getUharmx 方法
|
// 获取 Overlimit 类的 getUharmx 方法
|
||||||
Method getUharmMethod = Overlimit.class.getMethod("getUharm" + i);
|
Method getUharmMethod = Overlimit.class.getMethod("getUharm" + i);
|
||||||
float limit = (float) getUharmMethod.invoke(overlimit);
|
float limit = (float) getUharmMethod.invoke(overlimit);
|
||||||
if (value > limit && value >= 0.0 && value <= 30.0) {
|
if (value > limit ) {
|
||||||
addAbnormalData(v[i - 2], item.getValueType(), item.getMinTime(), value, limit);
|
addAbnormalData(v[i - 2], item.getValueType(),item.getPhasicType(), item.getMinTime(), value, limit);
|
||||||
}
|
}
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
@@ -353,8 +371,8 @@ public class IDataCrossingServiceImpl implements IDataCrossingService {
|
|||||||
// 获取 Overlimit 类的 getUharmx 方法
|
// 获取 Overlimit 类的 getUharmx 方法
|
||||||
Method getUharmMethod = Overlimit.class.getMethod("getIharm" + j);
|
Method getUharmMethod = Overlimit.class.getMethod("getIharm" + j);
|
||||||
float limit = (float) getUharmMethod.invoke(overlimit);
|
float limit = (float) getUharmMethod.invoke(overlimit);
|
||||||
if (value > limit && value >= 0.0 && value <= 30.0) {
|
if (value > limit ) {
|
||||||
addAbnormalData(i[j - 2], item.getValueType(), item.getMinTime(), value, limit);
|
addAbnormalData(i[j - 2], item.getValueType(),item.getPhasicType(), item.getMinTime(), value, limit);
|
||||||
}
|
}
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
@@ -378,8 +396,8 @@ public class IDataCrossingServiceImpl implements IDataCrossingService {
|
|||||||
// 获取 Overlimit 类的 getUharmx 方法
|
// 获取 Overlimit 类的 getUharmx 方法
|
||||||
Method getUharmMethod = Overlimit.class.getMethod("getInuharm" + j);
|
Method getUharmMethod = Overlimit.class.getMethod("getInuharm" + j);
|
||||||
float limit = (float) getUharmMethod.invoke(overlimit);
|
float limit = (float) getUharmMethod.invoke(overlimit);
|
||||||
if (value > limit && value >= 0.0 && value <= 30.0) {
|
if (value > limit) {
|
||||||
addAbnormalData(uHarm[j - 1], item.getValueType(), item.getMinTime(), value, limit);
|
addAbnormalData(uHarm[j - 1],item.getPhasicType(), item.getValueType(), item.getMinTime(), value, limit);
|
||||||
}
|
}
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
@@ -390,8 +408,8 @@ public class IDataCrossingServiceImpl implements IDataCrossingService {
|
|||||||
//电压总谐波畸变率
|
//电压总谐波畸变率
|
||||||
if (!CollectionUtils.isEmpty(dataVPOList)) {
|
if (!CollectionUtils.isEmpty(dataVPOList)) {
|
||||||
for (DataVDto item : dataVPOList) {
|
for (DataVDto item : dataVPOList) {
|
||||||
if (item.getVThd() > overlimit.getUaberrance() && item.getVThd() >= 0.0 && item.getVThd() <= 30.0) {
|
if (item.getVThd() > overlimit.getUaberrance()) {
|
||||||
addAbnormalData(thd, item.getMinTime(), item.getValueType(), item.getVThd(), overlimit.getUaberrance());
|
addAbnormalData(thd,item.getPhasicType(), item.getValueType(), item.getMinTime(), item.getVThd(), overlimit.getUaberrance());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -399,12 +417,12 @@ public class IDataCrossingServiceImpl implements IDataCrossingService {
|
|||||||
if (!CollectionUtils.isEmpty(dataVPODevList)) {
|
if (!CollectionUtils.isEmpty(dataVPODevList)) {
|
||||||
for (DataVDto item : dataVPODevList) {
|
for (DataVDto item : dataVPODevList) {
|
||||||
if (item.getVlDev() >= 0) {
|
if (item.getVlDev() >= 0) {
|
||||||
if (item.getVlDev() > overlimit.getVoltageDev() && item.getVlDev() >= 0.0 && item.getVlDev() <= 20.0) {
|
if (item.getVlDev() > overlimit.getVoltageDev()) {
|
||||||
addAbnormalData(uDev, item.getMinTime(), item.getValueType(), item.getVlDev(), overlimit.getVoltageDev());
|
addAbnormalData(uDev,item.getPhasicType(), item.getValueType(), item.getMinTime(), item.getVlDev(), overlimit.getVoltageDev());
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
if (Math.abs(item.getVuDev()) > Math.abs(overlimit.getUvoltageDev()) && Math.abs(item.getVuDev()) <= 20.0) {
|
if (Math.abs(item.getVuDev()) > Math.abs(overlimit.getUvoltageDev()) ) {
|
||||||
addAbnormalData(uDev, item.getMinTime(), item.getValueType(), item.getVlDev(), overlimit.getVoltageDev());
|
addAbnormalData(uDev,item.getPhasicType(), item.getValueType(), item.getMinTime(), item.getVlDev(), overlimit.getUvoltageDev());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -412,8 +430,8 @@ public class IDataCrossingServiceImpl implements IDataCrossingService {
|
|||||||
//长时间闪变
|
//长时间闪变
|
||||||
if (!CollectionUtils.isEmpty(dataPltPOList)) {
|
if (!CollectionUtils.isEmpty(dataPltPOList)) {
|
||||||
for (DataPltDto item : dataPltPOList) {
|
for (DataPltDto item : dataPltPOList) {
|
||||||
if (item.getPlt() > overlimit.getFlicker() && item.getPlt() >= 0 && item.getPlt() <= 20) {
|
if (item.getPlt() > overlimit.getFlicker() ) {
|
||||||
addAbnormalData(flicker, item.getValueType(), item.getMinTime(), item.getPlt(), overlimit.getFlicker());
|
addAbnormalData(flicker,item.getPhasicType(), item.getValueType(), item.getMinTime(), item.getPlt(), overlimit.getFlicker());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -431,87 +449,6 @@ public class IDataCrossingServiceImpl implements IDataCrossingService {
|
|||||||
limitRate.setVoltageDevOvertime(uDev.size());
|
limitRate.setVoltageDevOvertime(uDev.size());
|
||||||
dto.setDataLimitRate(getDataLimitRateDto(limitRate, v, i, uHarm));
|
dto.setDataLimitRate(getDataLimitRateDto(limitRate, v, i, uHarm));
|
||||||
|
|
||||||
DataLimitRateDetailDto detail = new DataLimitRateDetailDto();
|
|
||||||
int detailAllTime = flicker.size() + uAberrance.size() + iNeg.size() + freqDev.size() + thd.size() + uDev.size() +
|
|
||||||
v[0].size() + v[1].size() + v[2].size() + v[3].size() + v[4].size() + v[5].size() + v[6].size() + v[7].size() + v[8].size() + v[9].size() + v[11].size() + v[12].size() + v[13].size() + v[14].size() + v[15].size() + v[16].size() + v[17].size() + v[18].size() + v[19].size() + v[20].size() + v[21].size() + v[22].size() + v[23].size() +
|
|
||||||
i[0].size() + i[1].size() + i[2].size() + i[3].size() + i[4].size() + i[5].size() + i[6].size() + i[7].size() + i[8].size() + i[9].size() + i[10].size() + i[11].size() + i[12].size() + i[13].size() + i[14].size() + i[15].size() + i[16].size() + i[17].size() + i[18].size() + i[19].size() + i[20].size() + i[21].size() + i[22].size() + i[23].size() +
|
|
||||||
uHarm[0].size() + uHarm[1].size() + uHarm[2].size() + uHarm[3].size() + uHarm[4].size() + uHarm[5].size() + uHarm[6].size() + uHarm[7].size() + uHarm[8].size() + uHarm[9].size() + uHarm[10].size() + uHarm[11].size() + uHarm[12].size() + uHarm[13].size() + uHarm[14].size() + uHarm[15].size();
|
|
||||||
detail.setLineId(lineId);
|
|
||||||
detail.setPhasicType(phasicType);
|
|
||||||
detail.setTime(LocalDateTimeUtil.parseDate(dataDate, DatePattern.NORM_DATE_PATTERN));
|
|
||||||
detail.setAllTime(detailAllTime);
|
|
||||||
detail.setFlickerAllTime(flicker.size());
|
|
||||||
detail.setFlickerOvertime(JSON.toJSONString(flicker));
|
|
||||||
detail.setUaberranceOvertime(JSON.toJSONString(uAberrance));
|
|
||||||
detail.setINegOvertime(JSON.toJSONString(iNeg));
|
|
||||||
detail.setFreqDevOvertime(JSON.toJSONString(freqDev));
|
|
||||||
detail.setUbalanceOvertime(JSON.toJSONString(thd));
|
|
||||||
detail.setVoltageDevOvertime(JSON.toJSONString(uDev));
|
|
||||||
detail.setUharm2Overtime(JSON.toJSONString(v[0]));
|
|
||||||
detail.setUharm3Overtime(JSON.toJSONString(v[1]));
|
|
||||||
detail.setUharm4Overtime(JSON.toJSONString(v[2]));
|
|
||||||
detail.setUharm5Overtime(JSON.toJSONString(v[3]));
|
|
||||||
detail.setUharm6Overtime(JSON.toJSONString(v[4]));
|
|
||||||
detail.setUharm7Overtime(JSON.toJSONString(v[5]));
|
|
||||||
detail.setUharm8Overtime(JSON.toJSONString(v[6]));
|
|
||||||
detail.setUharm9Overtime(JSON.toJSONString(v[7]));
|
|
||||||
detail.setUharm10Overtime(JSON.toJSONString(v[8]));
|
|
||||||
detail.setUharm11Overtime(JSON.toJSONString(v[9]));
|
|
||||||
detail.setUharm12Overtime(JSON.toJSONString(v[10]));
|
|
||||||
detail.setUharm13Overtime(JSON.toJSONString(v[11]));
|
|
||||||
detail.setUharm14Overtime(JSON.toJSONString(v[12]));
|
|
||||||
detail.setUharm15Overtime(JSON.toJSONString(v[13]));
|
|
||||||
detail.setUharm16Overtime(JSON.toJSONString(v[14]));
|
|
||||||
detail.setUharm17Overtime(JSON.toJSONString(v[15]));
|
|
||||||
detail.setUharm18Overtime(JSON.toJSONString(v[16]));
|
|
||||||
detail.setUharm19Overtime(JSON.toJSONString(v[17]));
|
|
||||||
detail.setUharm20Overtime(JSON.toJSONString(v[18]));
|
|
||||||
detail.setUharm21Overtime(JSON.toJSONString(v[19]));
|
|
||||||
detail.setUharm22Overtime(JSON.toJSONString(v[20]));
|
|
||||||
detail.setUharm23Overtime(JSON.toJSONString(v[21]));
|
|
||||||
detail.setUharm24Overtime(JSON.toJSONString(v[22]));
|
|
||||||
detail.setUharm25Overtime(JSON.toJSONString(v[23]));
|
|
||||||
detail.setIharm2Overtime(JSON.toJSONString(i[0]));
|
|
||||||
detail.setIharm3Overtime(JSON.toJSONString(i[1]));
|
|
||||||
detail.setIharm4Overtime(JSON.toJSONString(i[2]));
|
|
||||||
detail.setIharm5Overtime(JSON.toJSONString(i[3]));
|
|
||||||
detail.setIharm6Overtime(JSON.toJSONString(i[4]));
|
|
||||||
detail.setIharm7Overtime(JSON.toJSONString(i[5]));
|
|
||||||
detail.setIharm8Overtime(JSON.toJSONString(i[6]));
|
|
||||||
detail.setIharm9Overtime(JSON.toJSONString(i[7]));
|
|
||||||
detail.setIharm10Overtime(JSON.toJSONString(i[8]));
|
|
||||||
detail.setIharm11Overtime(JSON.toJSONString(i[9]));
|
|
||||||
detail.setIharm12Overtime(JSON.toJSONString(i[10]));
|
|
||||||
detail.setIharm13Overtime(JSON.toJSONString(i[11]));
|
|
||||||
detail.setIharm14Overtime(JSON.toJSONString(i[12]));
|
|
||||||
detail.setIharm15Overtime(JSON.toJSONString(i[13]));
|
|
||||||
detail.setIharm16Overtime(JSON.toJSONString(i[14]));
|
|
||||||
detail.setIharm17Overtime(JSON.toJSONString(i[15]));
|
|
||||||
detail.setIharm18Overtime(JSON.toJSONString(i[16]));
|
|
||||||
detail.setIharm19Overtime(JSON.toJSONString(i[17]));
|
|
||||||
detail.setIharm20Overtime(JSON.toJSONString(i[18]));
|
|
||||||
detail.setIharm21Overtime(JSON.toJSONString(i[19]));
|
|
||||||
detail.setIharm22Overtime(JSON.toJSONString(i[20]));
|
|
||||||
detail.setIharm23Overtime(JSON.toJSONString(i[21]));
|
|
||||||
detail.setIharm24Overtime(JSON.toJSONString(i[22]));
|
|
||||||
detail.setIharm25Overtime(JSON.toJSONString(i[23]));
|
|
||||||
detail.setInuharm1Overtime(JSON.toJSONString(uHarm[0]));
|
|
||||||
detail.setInuharm2Overtime(JSON.toJSONString(uHarm[1]));
|
|
||||||
detail.setInuharm3Overtime(JSON.toJSONString(uHarm[2]));
|
|
||||||
detail.setInuharm4Overtime(JSON.toJSONString(uHarm[3]));
|
|
||||||
detail.setInuharm5Overtime(JSON.toJSONString(uHarm[4]));
|
|
||||||
detail.setInuharm6Overtime(JSON.toJSONString(uHarm[5]));
|
|
||||||
detail.setInuharm7Overtime(JSON.toJSONString(uHarm[6]));
|
|
||||||
detail.setInuharm8Overtime(JSON.toJSONString(uHarm[7]));
|
|
||||||
detail.setInuharm9Overtime(JSON.toJSONString(uHarm[8]));
|
|
||||||
detail.setInuharm10Overtime(JSON.toJSONString(uHarm[9]));
|
|
||||||
detail.setInuharm11Overtime(JSON.toJSONString(uHarm[10]));
|
|
||||||
detail.setInuharm12Overtime(JSON.toJSONString(uHarm[11]));
|
|
||||||
detail.setInuharm13Overtime(JSON.toJSONString(uHarm[12]));
|
|
||||||
detail.setInuharm14Overtime(JSON.toJSONString(uHarm[13]));
|
|
||||||
detail.setInuharm15Overtime(JSON.toJSONString(uHarm[14]));
|
|
||||||
detail.setInuharm16Overtime(JSON.toJSONString(uHarm[15]));
|
|
||||||
dto.setDataLimitRateDetail(detail);
|
|
||||||
return dto;
|
return dto;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -551,7 +488,7 @@ public class IDataCrossingServiceImpl implements IDataCrossingService {
|
|||||||
Method getUharmMethod = Overlimit.class.getMethod("getUharm" + i);
|
Method getUharmMethod = Overlimit.class.getMethod("getUharm" + i);
|
||||||
float limit = (float) getUharmMethod.invoke(overlimit);
|
float limit = (float) getUharmMethod.invoke(overlimit);
|
||||||
if (value > limit) {
|
if (value > limit) {
|
||||||
addAbnormalData(v[i - 2], item.getValueType(), item.getMinTime(), value, limit);
|
addAbnormalData(v[i - 2],item.getPhasicType(), item.getValueType(), item.getMinTime(), value, limit);
|
||||||
}
|
}
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
@@ -577,7 +514,7 @@ public class IDataCrossingServiceImpl implements IDataCrossingService {
|
|||||||
Method getUharmMethod = Overlimit.class.getMethod("getIharm" + j);
|
Method getUharmMethod = Overlimit.class.getMethod("getIharm" + j);
|
||||||
float limit = (float) getUharmMethod.invoke(overlimit);
|
float limit = (float) getUharmMethod.invoke(overlimit);
|
||||||
if (value > limit ) {
|
if (value > limit ) {
|
||||||
addAbnormalData(i[j - 2], item.getValueType(), item.getMinTime(), value, limit);
|
addAbnormalData(i[j - 2],item.getPhasicType(), item.getValueType(), item.getMinTime(), value, limit);
|
||||||
}
|
}
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
@@ -602,7 +539,7 @@ public class IDataCrossingServiceImpl implements IDataCrossingService {
|
|||||||
Method getUharmMethod = Overlimit.class.getMethod("getInuharm" + j);
|
Method getUharmMethod = Overlimit.class.getMethod("getInuharm" + j);
|
||||||
float limit = (float) getUharmMethod.invoke(overlimit);
|
float limit = (float) getUharmMethod.invoke(overlimit);
|
||||||
if (value > limit ) {
|
if (value > limit ) {
|
||||||
addAbnormalData(uHarm[j - 1], item.getValueType(), item.getMinTime(), value, limit);
|
addAbnormalData(uHarm[j - 1],item.getPhasicType(), item.getValueType(), item.getMinTime(), value, limit);
|
||||||
}
|
}
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
@@ -614,7 +551,7 @@ public class IDataCrossingServiceImpl implements IDataCrossingService {
|
|||||||
if (!CollectionUtils.isEmpty(dataVPOList)) {
|
if (!CollectionUtils.isEmpty(dataVPOList)) {
|
||||||
for (DataVDto item : dataVPOList) {
|
for (DataVDto item : dataVPOList) {
|
||||||
if (item.getVThd() > overlimit.getUaberrance() ) {
|
if (item.getVThd() > overlimit.getUaberrance() ) {
|
||||||
addAbnormalData(thd, item.getMinTime(), item.getValueType(), item.getVThd(), overlimit.getUaberrance());
|
addAbnormalData(thd,item.getPhasicType(), item.getValueType(), item.getMinTime(), item.getVThd(), overlimit.getUaberrance());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -622,7 +559,7 @@ public class IDataCrossingServiceImpl implements IDataCrossingService {
|
|||||||
if (!CollectionUtils.isEmpty(dataVPOUnbalanceList)) {
|
if (!CollectionUtils.isEmpty(dataVPOUnbalanceList)) {
|
||||||
for (DataVDto item : dataVPOUnbalanceList) {
|
for (DataVDto item : dataVPOUnbalanceList) {
|
||||||
if (item.getVUnbalance() > overlimit.getUbalance() ) {
|
if (item.getVUnbalance() > overlimit.getUbalance() ) {
|
||||||
addAbnormalData(uAberrance, item.getMinTime(), item.getValueType(), item.getVUnbalance(), overlimit.getUbalance());
|
addAbnormalData(uAberrance,item.getPhasicType(), item.getValueType(), item.getMinTime(), item.getVUnbalance(), overlimit.getUbalance());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -630,7 +567,7 @@ public class IDataCrossingServiceImpl implements IDataCrossingService {
|
|||||||
if (!CollectionUtils.isEmpty(dataIPONegList)) {
|
if (!CollectionUtils.isEmpty(dataIPONegList)) {
|
||||||
for (DataIDto item : dataIPONegList) {
|
for (DataIDto item : dataIPONegList) {
|
||||||
if (item.getINeg() > overlimit.getINeg()) {
|
if (item.getINeg() > overlimit.getINeg()) {
|
||||||
addAbnormalData(iNeg, item.getMinTime(), item.getValueType(), item.getINeg(), overlimit.getINeg());
|
addAbnormalData(iNeg,item.getPhasicType(), item.getValueType(), item.getMinTime(), item.getINeg(), overlimit.getINeg());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -638,7 +575,7 @@ public class IDataCrossingServiceImpl implements IDataCrossingService {
|
|||||||
if (!CollectionUtils.isEmpty(dataVPOFreqList)) {
|
if (!CollectionUtils.isEmpty(dataVPOFreqList)) {
|
||||||
for (DataVDto item : dataVPOFreqList) {
|
for (DataVDto item : dataVPOFreqList) {
|
||||||
if (item.getFreqDev() > overlimit.getFreqDev() ) {
|
if (item.getFreqDev() > overlimit.getFreqDev() ) {
|
||||||
addAbnormalData(freqDev, item.getMinTime(), item.getValueType(), item.getFreqDev(), overlimit.getFreqDev());
|
addAbnormalData(freqDev,item.getPhasicType(), item.getValueType(), item.getMinTime(), item.getFreqDev(), overlimit.getFreqDev());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -648,11 +585,11 @@ public class IDataCrossingServiceImpl implements IDataCrossingService {
|
|||||||
for (DataVDto item : dataVPODevList) {
|
for (DataVDto item : dataVPODevList) {
|
||||||
if (item.getVlDev() >= 0) {
|
if (item.getVlDev() >= 0) {
|
||||||
if (item.getVlDev() > overlimit.getVoltageDev() ) {
|
if (item.getVlDev() > overlimit.getVoltageDev() ) {
|
||||||
addAbnormalData(uDev, item.getMinTime(), item.getValueType(), item.getVlDev(), overlimit.getVoltageDev());
|
addAbnormalData(uDev,item.getPhasicType(), item.getMinTime(), item.getValueType(), item.getVlDev(), overlimit.getVoltageDev());
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
if (Math.abs(item.getVuDev()) > Math.abs(overlimit.getUvoltageDev()) ) {
|
if (Math.abs(item.getVuDev()) > Math.abs(overlimit.getUvoltageDev()) ) {
|
||||||
addAbnormalData(uDev, item.getMinTime(), item.getValueType(), item.getVlDev(), overlimit.getVoltageDev());
|
addAbnormalData(uDev,item.getPhasicType(), item.getMinTime(), item.getValueType(), item.getVlDev(), overlimit.getUvoltageDev());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -661,7 +598,7 @@ public class IDataCrossingServiceImpl implements IDataCrossingService {
|
|||||||
if (!CollectionUtils.isEmpty(dataPltPOList)) {
|
if (!CollectionUtils.isEmpty(dataPltPOList)) {
|
||||||
for (DataPltDto item : dataPltPOList) {
|
for (DataPltDto item : dataPltPOList) {
|
||||||
if (item.getPlt() > overlimit.getFlicker() ) {
|
if (item.getPlt() > overlimit.getFlicker() ) {
|
||||||
addAbnormalData(flicker, item.getValueType(), item.getMinTime(), item.getPlt(), overlimit.getFlicker());
|
addAbnormalData(flicker,item.getPhasicType(), item.getValueType(), item.getMinTime(), item.getPlt(), overlimit.getFlicker());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -741,6 +678,87 @@ public class IDataCrossingServiceImpl implements IDataCrossingService {
|
|||||||
limitRate.setInuharm15Overtime(uHarm[14].stream().map(AbnormalData::getTime).distinct().collect(Collectors.toList()).size());
|
limitRate.setInuharm15Overtime(uHarm[14].stream().map(AbnormalData::getTime).distinct().collect(Collectors.toList()).size());
|
||||||
limitRate.setInuharm16Overtime(uHarm[15].stream().map(AbnormalData::getTime).distinct().collect(Collectors.toList()).size());
|
limitRate.setInuharm16Overtime(uHarm[15].stream().map(AbnormalData::getTime).distinct().collect(Collectors.toList()).size());
|
||||||
dto.setDataLimitRate(limitRate);
|
dto.setDataLimitRate(limitRate);
|
||||||
|
|
||||||
|
int detailAllTime = flicker.size() + uAberrance.size() + iNeg.size() + freqDev.size() + thd.size() + uDev.size() +
|
||||||
|
v[0].size() + v[1].size() + v[2].size() + v[3].size() + v[4].size() + v[5].size() + v[6].size() + v[7].size() + v[8].size() + v[9].size() + v[11].size() + v[12].size() + v[13].size() + v[14].size() + v[15].size() + v[16].size() + v[17].size() + v[18].size() + v[19].size() + v[20].size() + v[21].size() + v[22].size() + v[23].size() +
|
||||||
|
i[0].size() + i[1].size() + i[2].size() + i[3].size() + i[4].size() + i[5].size() + i[6].size() + i[7].size() + i[8].size() + i[9].size() + i[10].size() + i[11].size() + i[12].size() + i[13].size() + i[14].size() + i[15].size() + i[16].size() + i[17].size() + i[18].size() + i[19].size() + i[20].size() + i[21].size() + i[22].size() + i[23].size() +
|
||||||
|
uHarm[0].size() + uHarm[1].size() + uHarm[2].size() + uHarm[3].size() + uHarm[4].size() + uHarm[5].size() + uHarm[6].size() + uHarm[7].size() + uHarm[8].size() + uHarm[9].size() + uHarm[10].size() + uHarm[11].size() + uHarm[12].size() + uHarm[13].size() + uHarm[14].size() + uHarm[15].size();
|
||||||
|
if(detailAllTime>0){
|
||||||
|
DataLimitRateDetailDto detail = new DataLimitRateDetailDto();
|
||||||
|
detail.setLineId(lineId);
|
||||||
|
detail.setTime(LocalDateTimeUtil.parseDate(dataDate, DatePattern.NORM_DATE_PATTERN));
|
||||||
|
detail.setFlickerOvertime(toJson(flicker));
|
||||||
|
detail.setUaberranceOvertime(toJson(uAberrance));
|
||||||
|
detail.setINegOvertime(toJson(iNeg));
|
||||||
|
detail.setFreqDevOvertime(toJson(freqDev));
|
||||||
|
detail.setUbalanceOvertime(toJson(thd));
|
||||||
|
detail.setVoltageDevOvertime(toJson(uDev));
|
||||||
|
detail.setUharm2Overtime(toJson(v[0]));
|
||||||
|
detail.setUharm3Overtime(toJson(v[1]));
|
||||||
|
detail.setUharm4Overtime(toJson(v[2]));
|
||||||
|
detail.setUharm5Overtime(toJson(v[3]));
|
||||||
|
detail.setUharm6Overtime(toJson(v[4]));
|
||||||
|
detail.setUharm7Overtime(toJson(v[5]));
|
||||||
|
detail.setUharm8Overtime(toJson(v[6]));
|
||||||
|
detail.setUharm9Overtime(toJson(v[7]));
|
||||||
|
detail.setUharm10Overtime(toJson(v[8]));
|
||||||
|
detail.setUharm11Overtime(toJson(v[9]));
|
||||||
|
detail.setUharm12Overtime(toJson(v[10]));
|
||||||
|
detail.setUharm13Overtime(toJson(v[11]));
|
||||||
|
detail.setUharm14Overtime(toJson(v[12]));
|
||||||
|
detail.setUharm15Overtime(toJson(v[13]));
|
||||||
|
detail.setUharm16Overtime(toJson(v[14]));
|
||||||
|
detail.setUharm17Overtime(toJson(v[15]));
|
||||||
|
detail.setUharm18Overtime(toJson(v[16]));
|
||||||
|
detail.setUharm19Overtime(toJson(v[17]));
|
||||||
|
detail.setUharm20Overtime(toJson(v[18]));
|
||||||
|
detail.setUharm21Overtime(toJson(v[19]));
|
||||||
|
detail.setUharm22Overtime(toJson(v[20]));
|
||||||
|
detail.setUharm23Overtime(toJson(v[21]));
|
||||||
|
detail.setUharm24Overtime(toJson(v[22]));
|
||||||
|
detail.setUharm25Overtime(toJson(v[23]));
|
||||||
|
detail.setIharm2Overtime(toJson(i[0]));
|
||||||
|
detail.setIharm3Overtime(toJson(i[1]));
|
||||||
|
detail.setIharm4Overtime(toJson(i[2]));
|
||||||
|
detail.setIharm5Overtime(toJson(i[3]));
|
||||||
|
detail.setIharm6Overtime(toJson(i[4]));
|
||||||
|
detail.setIharm7Overtime(toJson(i[5]));
|
||||||
|
detail.setIharm8Overtime(toJson(i[6]));
|
||||||
|
detail.setIharm9Overtime(toJson(i[7]));
|
||||||
|
detail.setIharm10Overtime(toJson(i[8]));
|
||||||
|
detail.setIharm11Overtime(toJson(i[9]));
|
||||||
|
detail.setIharm12Overtime(toJson(i[10]));
|
||||||
|
detail.setIharm13Overtime(toJson(i[11]));
|
||||||
|
detail.setIharm14Overtime(toJson(i[12]));
|
||||||
|
detail.setIharm15Overtime(toJson(i[13]));
|
||||||
|
detail.setIharm16Overtime(toJson(i[14]));
|
||||||
|
detail.setIharm17Overtime(toJson(i[15]));
|
||||||
|
detail.setIharm18Overtime(toJson(i[16]));
|
||||||
|
detail.setIharm19Overtime(toJson(i[17]));
|
||||||
|
detail.setIharm20Overtime(toJson(i[18]));
|
||||||
|
detail.setIharm21Overtime(toJson(i[19]));
|
||||||
|
detail.setIharm22Overtime(toJson(i[20]));
|
||||||
|
detail.setIharm23Overtime(toJson(i[21]));
|
||||||
|
detail.setIharm24Overtime(toJson(i[22]));
|
||||||
|
detail.setIharm25Overtime(toJson(i[23]));
|
||||||
|
detail.setInuharm1Overtime(toJson(uHarm[0]));
|
||||||
|
detail.setInuharm2Overtime(toJson(uHarm[1]));
|
||||||
|
detail.setInuharm3Overtime(toJson(uHarm[2]));
|
||||||
|
detail.setInuharm4Overtime(toJson(uHarm[3]));
|
||||||
|
detail.setInuharm5Overtime(toJson(uHarm[4]));
|
||||||
|
detail.setInuharm6Overtime(toJson(uHarm[5]));
|
||||||
|
detail.setInuharm7Overtime(toJson(uHarm[6]));
|
||||||
|
detail.setInuharm8Overtime(toJson(uHarm[7]));
|
||||||
|
detail.setInuharm9Overtime(toJson(uHarm[8]));
|
||||||
|
detail.setInuharm10Overtime(toJson(uHarm[9]));
|
||||||
|
detail.setInuharm11Overtime(toJson(uHarm[10]));
|
||||||
|
detail.setInuharm12Overtime(toJson(uHarm[11]));
|
||||||
|
detail.setInuharm13Overtime(toJson(uHarm[12]));
|
||||||
|
detail.setInuharm14Overtime(toJson(uHarm[13]));
|
||||||
|
detail.setInuharm15Overtime(toJson(uHarm[14]));
|
||||||
|
detail.setInuharm16Overtime(toJson(uHarm[15]));
|
||||||
|
dto.setDataLimitRateDetail(detail);
|
||||||
|
}
|
||||||
return dto;
|
return dto;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -812,11 +830,34 @@ public class IDataCrossingServiceImpl implements IDataCrossingService {
|
|||||||
limitRate.setInuharm16Overtime(uHarm[15].size());
|
limitRate.setInuharm16Overtime(uHarm[15].size());
|
||||||
return limitRate;
|
return limitRate;
|
||||||
}
|
}
|
||||||
|
private String toJson(List<AbnormalData> list) {
|
||||||
|
Map<String, List<AbnormalData>> abnormalMap = list.stream().collect(Collectors.groupingBy(x->x.getPhasic()+"_"+x.getValueType()));
|
||||||
|
List<AbnormalData.Json> info=new ArrayList<>();
|
||||||
|
abnormalMap.forEach((key,value)->{
|
||||||
|
String[] split = key.split("_");
|
||||||
|
AbnormalData.Json json=new AbnormalData.Json();
|
||||||
|
json.setPhasic(split[0]);
|
||||||
|
json.setValueType(split[1]);
|
||||||
|
json.setTime(String.join(",", value.stream()
|
||||||
|
.map(abnormal -> abnormal.getTime())
|
||||||
|
.distinct()
|
||||||
|
.collect(Collectors.toList())));
|
||||||
|
json.setValue(String.join(",", value.stream()
|
||||||
|
.map(abnormal -> abnormal.getValue()+"")
|
||||||
|
.distinct()
|
||||||
|
.collect(Collectors.toList())));
|
||||||
|
info.add(json);
|
||||||
|
});
|
||||||
|
if(CollUtil.isNotEmpty(info)){
|
||||||
|
return JSON.toJSONString(info);
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
private void addAbnormalData(List<AbnormalData> list,String phasicType, String valueType, String time, Double value, float overLimitValue) {
|
||||||
private void addAbnormalData(List<AbnormalData> list, String valueType, String time, double value, float overLimitValue) {
|
|
||||||
AbnormalData data = new AbnormalData();
|
AbnormalData data = new AbnormalData();
|
||||||
data.setTime(time);
|
data.setTime(time.substring(11, time.length()));
|
||||||
|
data.setPhasic(phasicType);
|
||||||
data.setValueType(valueType);
|
data.setValueType(valueType);
|
||||||
data.setValue(value);
|
data.setValue(value);
|
||||||
data.setOverLimitValue(overLimitValue);
|
data.setOverLimitValue(overLimitValue);
|
||||||
|
|||||||
@@ -2,30 +2,26 @@ package com.njcn.algorithm.serviceimpl.line;
|
|||||||
|
|
||||||
|
|
||||||
import cn.hutool.core.collection.CollectionUtil;
|
import cn.hutool.core.collection.CollectionUtil;
|
||||||
import cn.hutool.core.date.DatePattern;
|
|
||||||
import cn.hutool.core.date.DateUnit;
|
import cn.hutool.core.date.DateUnit;
|
||||||
import cn.hutool.core.date.DateUtil;
|
import cn.hutool.core.date.DateUtil;
|
||||||
import cn.hutool.core.date.LocalDateTimeUtil;
|
import cn.hutool.core.util.ObjectUtil;
|
||||||
import com.njcn.algorithm.pojo.bo.CalculatedParam;
|
import com.njcn.algorithm.pojo.bo.CalculatedParam;
|
||||||
import com.njcn.algorithm.service.line.IDataOnlineRateService;
|
import com.njcn.algorithm.service.line.IDataOnlineRateService;
|
||||||
|
import com.njcn.dataProcess.api.DataOnlineRateFeignClient;
|
||||||
|
import com.njcn.dataProcess.api.DataVFeignClient;
|
||||||
import com.njcn.dataProcess.api.PqsCommunicateFeignClient;
|
import com.njcn.dataProcess.api.PqsCommunicateFeignClient;
|
||||||
import com.njcn.dataProcess.param.LineCountEvaluateParam;
|
import com.njcn.dataProcess.param.LineCountEvaluateParam;
|
||||||
import com.njcn.dataProcess.pojo.dto.PqsCommunicateDto;
|
import com.njcn.dataProcess.pojo.dto.PqsCommunicateDto;
|
||||||
import com.njcn.dataProcess.pojo.dto.RStatOnlineRateDto;
|
import com.njcn.dataProcess.pojo.dto.RStatOnlineRateDto;
|
||||||
import com.njcn.dataProcess.util.TimeUtils;
|
import com.njcn.dataProcess.util.TimeUtils;
|
||||||
import com.njcn.device.pq.pojo.po.RStatOnlinerateD;
|
import com.njcn.device.biz.pojo.dto.LineDevGetDTO;
|
||||||
import com.njcn.influx.deprecated.InfluxDBPublicParam;
|
import com.njcn.influx.deprecated.InfluxDBPublicParam;
|
||||||
import com.njcn.influx.pojo.po.PqsCommunicate;
|
|
||||||
import lombok.RequiredArgsConstructor;
|
import lombok.RequiredArgsConstructor;
|
||||||
import org.apache.commons.collections4.ListUtils;
|
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
import javax.annotation.Resource;
|
import javax.annotation.Resource;
|
||||||
import java.time.LocalDateTime;
|
import java.util.*;
|
||||||
import java.util.ArrayList;
|
import java.util.stream.Collectors;
|
||||||
import java.util.Arrays;
|
|
||||||
import java.util.Date;
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @Description:
|
* @Description:
|
||||||
@@ -37,26 +33,47 @@ import java.util.List;
|
|||||||
public class IDataOnlineRateServiceImpl implements IDataOnlineRateService {
|
public class IDataOnlineRateServiceImpl implements IDataOnlineRateService {
|
||||||
private final static Integer NUM = 100;
|
private final static Integer NUM = 100;
|
||||||
private final Integer online = 1;
|
private final Integer online = 1;
|
||||||
private final Integer offline = 0;
|
|
||||||
@Resource
|
@Resource
|
||||||
private PqsCommunicateFeignClient communicateFeignClient;
|
private PqsCommunicateFeignClient communicateFeignClient;
|
||||||
|
@Resource
|
||||||
|
private DataVFeignClient dataVFeignClient;
|
||||||
|
@Resource
|
||||||
|
private DataOnlineRateFeignClient onlineRateFeignClient;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void dataOnlineRate(CalculatedParam<String> calculatedParam) {
|
public void dataOnlineRate(CalculatedParam calculatedParam) {
|
||||||
|
|
||||||
LineCountEvaluateParam lineParam = new LineCountEvaluateParam();
|
LineCountEvaluateParam lineParam = new LineCountEvaluateParam();
|
||||||
lineParam.setStartTime(TimeUtils.getBeginOfDay(calculatedParam.getDataDate()));
|
lineParam.setStartTime(TimeUtils.getBeginOfDay(calculatedParam.getDataDate()));
|
||||||
lineParam.setEndTime(TimeUtils.getEndOfDay(calculatedParam.getDataDate()));
|
lineParam.setEndTime(TimeUtils.getEndOfDay(calculatedParam.getDataDate()));
|
||||||
List<String> devList = calculatedParam.getIdList();
|
List<LineDevGetDTO> devList = calculatedParam.getIdList();
|
||||||
|
|
||||||
List<List<String>> pendingIds = ListUtils.partition(devList, 1);
|
Map<String, List<LineDevGetDTO>> LineDevGetMap = devList.stream().collect(Collectors.groupingBy(LineDevGetDTO::getDevId));
|
||||||
|
List<RStatOnlineRateDto.Detail> list = new ArrayList<>();
|
||||||
|
if(ObjectUtil.isNotNull(calculatedParam.getType())){
|
||||||
|
LineDevGetMap.forEach((key,value)->{
|
||||||
|
RStatOnlineRateDto.Detail onlineRateDpo = new RStatOnlineRateDto.Detail();
|
||||||
|
List<String> collect = value.stream().map(LineDevGetDTO::getPointId).collect(Collectors.toList());
|
||||||
|
lineParam.setLineId(collect);
|
||||||
|
Integer data = dataVFeignClient.getCountRawData(lineParam).getData();
|
||||||
|
onlineRateDpo.setTimeId(calculatedParam.getDataDate());
|
||||||
|
onlineRateDpo.setDevIndex(key);
|
||||||
|
if(data>0){
|
||||||
|
onlineRateDpo.setOnlineMin(InfluxDBPublicParam.DAY_MINUTE);
|
||||||
|
onlineRateDpo.setOfflineMin(0);
|
||||||
|
}else{
|
||||||
|
onlineRateDpo.setOnlineMin(0);
|
||||||
|
onlineRateDpo.setOfflineMin(InfluxDBPublicParam.DAY_MINUTE);
|
||||||
|
}
|
||||||
|
list.add(onlineRateDpo);
|
||||||
|
});
|
||||||
|
}else{
|
||||||
List<PqsCommunicateDto> outCommunicateData = new ArrayList<>();
|
List<PqsCommunicateDto> outCommunicateData = new ArrayList<>();
|
||||||
for (List<String> dev : pendingIds) {
|
LineDevGetMap.forEach((key,value)->{
|
||||||
lineParam.setLineId(dev);
|
lineParam.setLineId(Arrays.asList(key));
|
||||||
List<PqsCommunicateDto> data = communicateFeignClient.getRawDataLatest(lineParam).getData();
|
List<PqsCommunicateDto> data = communicateFeignClient.getRawDataLatest(lineParam).getData();
|
||||||
outCommunicateData.addAll(data);
|
outCommunicateData.addAll(data);
|
||||||
}
|
});
|
||||||
List<RStatOnlineRateDto.Detail> list = new ArrayList<>();
|
|
||||||
Date dateOut = DateUtil.parse(calculatedParam.getDataDate());
|
Date dateOut = DateUtil.parse(calculatedParam.getDataDate());
|
||||||
for (PqsCommunicateDto pqsCommunicate : outCommunicateData) {
|
for (PqsCommunicateDto pqsCommunicate : outCommunicateData) {
|
||||||
RStatOnlineRateDto.Detail onlineRateDpo = new RStatOnlineRateDto.Detail();
|
RStatOnlineRateDto.Detail onlineRateDpo = new RStatOnlineRateDto.Detail();
|
||||||
@@ -69,8 +86,9 @@ public class IDataOnlineRateServiceImpl implements IDataOnlineRateService {
|
|||||||
onlineRateDpo.setOfflineMin(onLineRate.getOfflineMin());
|
onlineRateDpo.setOfflineMin(onLineRate.getOfflineMin());
|
||||||
list.add(onlineRateDpo);
|
list.add(onlineRateDpo);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
if (CollectionUtil.isNotEmpty(list)) {
|
if (CollectionUtil.isNotEmpty(list)) {
|
||||||
System.out.println();
|
onlineRateFeignClient.batchInsertion(list);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -0,0 +1,25 @@
|
|||||||
|
package com.njcn.dataProcess.api;
|
||||||
|
|
||||||
|
import com.njcn.common.pojo.constant.ServerInfo;
|
||||||
|
import com.njcn.common.pojo.response.HttpResult;
|
||||||
|
import com.njcn.dataProcess.api.fallback.DataOnlineRateFeignClientFallbackFactory;
|
||||||
|
import com.njcn.dataProcess.pojo.dto.DataLimitRateDto;
|
||||||
|
import com.njcn.dataProcess.pojo.dto.RStatOnlineRateDto;
|
||||||
|
import org.springframework.cloud.openfeign.FeignClient;
|
||||||
|
import org.springframework.web.bind.annotation.PostMapping;
|
||||||
|
import org.springframework.web.bind.annotation.RequestBody;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @Description:
|
||||||
|
* @Author: wr
|
||||||
|
* @Date: 2025/3/7 9:30
|
||||||
|
*/
|
||||||
|
@FeignClient(value = ServerInfo.PLATFORM_DATA_PROCESSING_BOOT, path = "/dataOnlineRate", fallbackFactory = DataOnlineRateFeignClientFallbackFactory.class, contextId = "dataOnlineRate")
|
||||||
|
public interface DataOnlineRateFeignClient {
|
||||||
|
|
||||||
|
@PostMapping("/batchInsertion")
|
||||||
|
HttpResult<String> batchInsertion(@RequestBody List<RStatOnlineRateDto.Detail> dataIDTOList);
|
||||||
|
|
||||||
|
}
|
||||||
@@ -34,6 +34,10 @@ public interface DataVFeignClient {
|
|||||||
@PostMapping("/getRawData")
|
@PostMapping("/getRawData")
|
||||||
HttpResult<List<DataVDto>> getRawData(@RequestBody LineCountEvaluateParam lineParam);
|
HttpResult<List<DataVDto>> getRawData(@RequestBody LineCountEvaluateParam lineParam);
|
||||||
|
|
||||||
|
//获取总条目数量
|
||||||
|
@PostMapping("/getCountRawData")
|
||||||
|
HttpResult<Integer> getCountRawData(@RequestBody LineCountEvaluateParam lineParam);
|
||||||
|
|
||||||
//获取算法基础数据
|
//获取算法基础数据
|
||||||
@PostMapping("/getBaseData")
|
@PostMapping("/getBaseData")
|
||||||
HttpResult<List<CommonMinuteDto>> getBaseData(@RequestBody LineCountEvaluateParam lineParam);
|
HttpResult<List<CommonMinuteDto>> getBaseData(@RequestBody LineCountEvaluateParam lineParam);
|
||||||
|
|||||||
@@ -0,0 +1,48 @@
|
|||||||
|
package com.njcn.dataProcess.api.fallback;
|
||||||
|
|
||||||
|
import com.njcn.common.pojo.enums.response.CommonResponseEnum;
|
||||||
|
import com.njcn.common.pojo.exception.BusinessException;
|
||||||
|
import com.njcn.common.pojo.response.HttpResult;
|
||||||
|
import com.njcn.dataProcess.api.DataOnlineRateFeignClient;
|
||||||
|
import com.njcn.dataProcess.pojo.dto.DataLimitRateDto;
|
||||||
|
import com.njcn.dataProcess.pojo.dto.RStatOnlineRateDto;
|
||||||
|
import com.njcn.dataProcess.util.DataProcessingEnumUtil;
|
||||||
|
import feign.hystrix.FallbackFactory;
|
||||||
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
import org.springframework.stereotype.Component;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @Description:
|
||||||
|
* @Author: wr
|
||||||
|
* @Date: 2025/3/7 9:30
|
||||||
|
*/
|
||||||
|
@Slf4j
|
||||||
|
@Component
|
||||||
|
public class DataOnlineRateFeignClientFallbackFactory implements FallbackFactory<DataOnlineRateFeignClient> {
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 输出远程请求接口异常日志
|
||||||
|
* @param cause RPC请求异常
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public DataOnlineRateFeignClient create(Throwable cause) {
|
||||||
|
//判断抛出异常是否为解码器抛出的业务异常
|
||||||
|
Enum<?> exceptionEnum = CommonResponseEnum.SERVICE_FALLBACK;
|
||||||
|
if(cause.getCause() instanceof BusinessException){
|
||||||
|
BusinessException businessException = (BusinessException) cause.getCause();
|
||||||
|
exceptionEnum = DataProcessingEnumUtil.getExceptionEnum(businessException.getResult());
|
||||||
|
}
|
||||||
|
Enum<?> finalExceptionEnum = exceptionEnum;
|
||||||
|
return new DataOnlineRateFeignClient() {
|
||||||
|
@Override
|
||||||
|
public HttpResult<String> batchInsertion(List<RStatOnlineRateDto.Detail> dataIDTOList) {
|
||||||
|
log.error("{}异常,降级处理,异常为:{}","批量插入数据",cause.toString());
|
||||||
|
throw new BusinessException(finalExceptionEnum);
|
||||||
|
}
|
||||||
|
|
||||||
|
};
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -60,6 +60,12 @@ public class DataVFeignClientFallbackFactory implements FallbackFactory<DataVFei
|
|||||||
throw new BusinessException(finalExceptionEnum);
|
throw new BusinessException(finalExceptionEnum);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public HttpResult<Integer> getCountRawData(LineCountEvaluateParam lineParam) {
|
||||||
|
log.error("{}异常,降级处理,异常为:{}","获取总条目数量",cause.toString());
|
||||||
|
throw new BusinessException(finalExceptionEnum);
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public HttpResult<List<CommonMinuteDto>> getBaseData(LineCountEvaluateParam lineParam) {
|
public HttpResult<List<CommonMinuteDto>> getBaseData(LineCountEvaluateParam lineParam) {
|
||||||
log.error("{}异常,降级处理,异常为:{}","获取算法基础数据",cause.toString());
|
log.error("{}异常,降级处理,异常为:{}","获取算法基础数据",cause.toString());
|
||||||
|
|||||||
@@ -1,8 +1,11 @@
|
|||||||
package com.njcn.dataProcess.pojo.dto;
|
package com.njcn.dataProcess.pojo.dto;
|
||||||
|
|
||||||
|
|
||||||
|
import com.alibaba.fastjson.annotation.JSONField;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author wr
|
* @author wr
|
||||||
* @description
|
* @description
|
||||||
@@ -11,10 +14,15 @@ import lombok.Data;
|
|||||||
@Data
|
@Data
|
||||||
public class AbnormalData {
|
public class AbnormalData {
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 超标时间
|
* 超标时间
|
||||||
*/
|
*/
|
||||||
private String time;
|
private String time;
|
||||||
|
/**
|
||||||
|
* 相别
|
||||||
|
*/
|
||||||
|
private String phasic;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 数据类型(最大值:max、最小值:min、平均值:avg、95值:cp95)
|
* 数据类型(最大值:max、最小值:min、平均值:avg、95值:cp95)
|
||||||
@@ -29,4 +37,34 @@ public class AbnormalData {
|
|||||||
* 限值
|
* 限值
|
||||||
*/
|
*/
|
||||||
private float overLimitValue;
|
private float overLimitValue;
|
||||||
|
|
||||||
|
@Data
|
||||||
|
public static class Json {
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 相别
|
||||||
|
*/
|
||||||
|
@JSONField(ordinal = 1)
|
||||||
|
private String phasic;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 数据类型(最大值:max、最小值:min、平均值:avg、95值:cp95)
|
||||||
|
*/
|
||||||
|
@JSONField(ordinal = 2)
|
||||||
|
private String valueType;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 超标时间
|
||||||
|
*/
|
||||||
|
@JSONField(ordinal = 3)
|
||||||
|
private String time;
|
||||||
|
/**
|
||||||
|
* 异常值
|
||||||
|
*/
|
||||||
|
@JSONField(ordinal = 4)
|
||||||
|
private String value;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -15,24 +15,11 @@ public class DataLimitRateDetailDto implements Serializable {
|
|||||||
*/
|
*/
|
||||||
private String lineId;
|
private String lineId;
|
||||||
|
|
||||||
/**
|
|
||||||
* 数据类型,’A’表示A相,’B’表示B相,’C’表示C相,’’M’表示ABC三项总和,T’表示总
|
|
||||||
*/
|
|
||||||
private String phasicType;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 合格率时间
|
* 合格率时间
|
||||||
*/
|
*/
|
||||||
private LocalDate time;
|
private LocalDate time;
|
||||||
|
|
||||||
/**
|
|
||||||
* 总计算次数
|
|
||||||
*/
|
|
||||||
private Integer allTime;
|
|
||||||
/**
|
|
||||||
* 闪变总计算次数
|
|
||||||
*/
|
|
||||||
private Integer flickerAllTime;
|
|
||||||
/**
|
/**
|
||||||
* 闪变越限次数
|
* 闪变越限次数
|
||||||
*/
|
*/
|
||||||
|
|||||||
@@ -19,13 +19,6 @@ public class RStatLimitRateDetailD implements Serializable {
|
|||||||
@TableField(value = "my_index")
|
@TableField(value = "my_index")
|
||||||
private String lineId;
|
private String lineId;
|
||||||
|
|
||||||
/**
|
|
||||||
* 数据类型,’A’表示A相,’B’表示B相,’C’表示C相,’’M’表示ABC三项总和,T’表示总
|
|
||||||
*/
|
|
||||||
@MppMultiId
|
|
||||||
@TableField(value = "phasic_type")
|
|
||||||
private String phasicType;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 合格率时间
|
* 合格率时间
|
||||||
*/
|
*/
|
||||||
@@ -34,18 +27,6 @@ public class RStatLimitRateDetailD implements Serializable {
|
|||||||
@JsonFormat(pattern = "yyyy-MM-dd",timezone="GMT+8")
|
@JsonFormat(pattern = "yyyy-MM-dd",timezone="GMT+8")
|
||||||
private LocalDate time;
|
private LocalDate time;
|
||||||
|
|
||||||
/**
|
|
||||||
* 总计算次数
|
|
||||||
*/
|
|
||||||
@TableField(value = "all_time")
|
|
||||||
private Integer allTime;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 闪变总计算次数
|
|
||||||
*/
|
|
||||||
@TableField(value = "flicker_all_time")
|
|
||||||
private Integer flickerAllTime;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 闪变越限次数
|
* 闪变越限次数
|
||||||
*/
|
*/
|
||||||
|
|||||||
@@ -23,7 +23,7 @@ public class RStatOnlineRateD {
|
|||||||
*/
|
*/
|
||||||
@MppMultiId
|
@MppMultiId
|
||||||
@TableField(value = "time_id")
|
@TableField(value = "time_id")
|
||||||
private LocalDateTime timeId;
|
private String timeId;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 装置id
|
* 装置id
|
||||||
|
|||||||
@@ -0,0 +1,56 @@
|
|||||||
|
package com.njcn.dataProcess.controller;
|
||||||
|
|
||||||
|
import com.njcn.common.pojo.annotation.OperateInfo;
|
||||||
|
import com.njcn.common.pojo.constant.OperateType;
|
||||||
|
import com.njcn.common.pojo.enums.common.LogEnum;
|
||||||
|
import com.njcn.common.pojo.enums.response.CommonResponseEnum;
|
||||||
|
import com.njcn.common.pojo.response.HttpResult;
|
||||||
|
import com.njcn.common.utils.HttpResultUtil;
|
||||||
|
import com.njcn.dataProcess.annotation.InsertBean;
|
||||||
|
import com.njcn.dataProcess.annotation.QueryBean;
|
||||||
|
import com.njcn.dataProcess.pojo.dto.RStatOnlineRateDto;
|
||||||
|
import com.njcn.dataProcess.service.IOnlineRate;
|
||||||
|
import com.njcn.web.controller.BaseController;
|
||||||
|
import io.swagger.annotations.Api;
|
||||||
|
import io.swagger.annotations.ApiOperation;
|
||||||
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
import org.springframework.stereotype.Controller;
|
||||||
|
import org.springframework.validation.annotation.Validated;
|
||||||
|
import org.springframework.web.bind.annotation.PostMapping;
|
||||||
|
import org.springframework.web.bind.annotation.RequestBody;
|
||||||
|
import org.springframework.web.bind.annotation.RequestMapping;
|
||||||
|
import org.springframework.web.bind.annotation.RestController;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author hongawen
|
||||||
|
* @version 1.0
|
||||||
|
* @data 2024/11/6 19:48
|
||||||
|
*/
|
||||||
|
@Validated
|
||||||
|
@Slf4j
|
||||||
|
@Controller
|
||||||
|
@RestController
|
||||||
|
@RequestMapping("/dataOnlineRate")
|
||||||
|
@Api(tags = "终端在线率获取")
|
||||||
|
public class DataOnlineRateController extends BaseController {
|
||||||
|
|
||||||
|
@QueryBean
|
||||||
|
private IOnlineRate onlineRateQuery;
|
||||||
|
|
||||||
|
@InsertBean
|
||||||
|
private IOnlineRate onlineRateInsert;
|
||||||
|
|
||||||
|
|
||||||
|
@OperateInfo(info = LogEnum.BUSINESS_COMMON,operateType = OperateType.ADD)
|
||||||
|
@PostMapping("/batchInsertion")
|
||||||
|
@ApiOperation("批量插入")
|
||||||
|
public HttpResult<String> batchInsertion(@RequestBody List<RStatOnlineRateDto.Detail> dataVDTOList) {
|
||||||
|
String methodDescribe = getMethodDescribe("batchInsertion");
|
||||||
|
onlineRateInsert.batchInsertion(dataVDTOList);
|
||||||
|
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, null, methodDescribe);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
@@ -95,6 +95,15 @@ public class DataVController extends BaseController {
|
|||||||
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, data, methodDescribe);
|
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, data, methodDescribe);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@OperateInfo(info = LogEnum.BUSINESS_COMMON,operateType = OperateType.QUERY)
|
||||||
|
@PostMapping("/getCountRawData")
|
||||||
|
@ApiOperation("获取总条目数量")
|
||||||
|
public HttpResult<Integer> getCountRawData(@RequestBody LineCountEvaluateParam lineParam) {
|
||||||
|
String methodDescribe = getMethodDescribe("getCountRawData");
|
||||||
|
Integer data = dataVQuery.getCountRawData(lineParam);
|
||||||
|
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, data, methodDescribe);
|
||||||
|
}
|
||||||
|
|
||||||
@OperateInfo(info = LogEnum.BUSINESS_COMMON,operateType = OperateType.QUERY)
|
@OperateInfo(info = LogEnum.BUSINESS_COMMON,operateType = OperateType.QUERY)
|
||||||
@PostMapping("/getBaseData")
|
@PostMapping("/getBaseData")
|
||||||
@ApiOperation("获取算法基础数据")
|
@ApiOperation("获取算法基础数据")
|
||||||
|
|||||||
@@ -0,0 +1,17 @@
|
|||||||
|
package com.njcn.dataProcess.dao.relation.mapper;
|
||||||
|
|
||||||
|
import com.github.jeffreyning.mybatisplus.base.MppBaseMapper;
|
||||||
|
import com.njcn.dataProcess.pojo.po.RStatOnlineRateD;
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* <p>
|
||||||
|
* Mapper 接口
|
||||||
|
* </p>
|
||||||
|
* @author web2023
|
||||||
|
*/
|
||||||
|
public interface RStatOnlineRateDMapper extends MppBaseMapper<RStatOnlineRateD> {
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
@@ -38,6 +38,13 @@ public interface IDataV extends IMppService<RStatDataVD> {
|
|||||||
*/
|
*/
|
||||||
List<DataVDto> getRawData(LineCountEvaluateParam lineParam);
|
List<DataVDto> getRawData(LineCountEvaluateParam lineParam);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取总条目数量
|
||||||
|
* @param lineParam
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
Integer getCountRawData(LineCountEvaluateParam lineParam);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 获取监测点原始数据
|
* 获取监测点原始数据
|
||||||
* @param lineParam 监测点参数
|
* @param lineParam 监测点参数
|
||||||
|
|||||||
@@ -0,0 +1,27 @@
|
|||||||
|
package com.njcn.dataProcess.service;
|
||||||
|
|
||||||
|
|
||||||
|
import com.github.jeffreyning.mybatisplus.service.IMppService;
|
||||||
|
import com.njcn.dataProcess.param.LineCountEvaluateParam;
|
||||||
|
import com.njcn.dataProcess.pojo.dto.DataLimitRateDto;
|
||||||
|
import com.njcn.dataProcess.pojo.dto.PqsCommunicateDto;
|
||||||
|
import com.njcn.dataProcess.pojo.dto.RStatOnlineRateDto;
|
||||||
|
import com.njcn.dataProcess.pojo.po.RStatLimitRateD;
|
||||||
|
import com.njcn.dataProcess.pojo.po.RStatOnlineRateD;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @Description:
|
||||||
|
* @Author: wr
|
||||||
|
* @Date: 2025/3/6 10:22
|
||||||
|
*/
|
||||||
|
public interface IOnlineRate extends IMppService<RStatOnlineRateD>{
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 批量插入数据
|
||||||
|
* @param onlineRateList
|
||||||
|
*/
|
||||||
|
void batchInsertion(List<RStatOnlineRateDto.Detail> onlineRateList);
|
||||||
|
|
||||||
|
}
|
||||||
@@ -140,6 +140,33 @@ public class InfluxdbDataVImpl extends MppServiceImpl<RStatDataVRelationMapper,
|
|||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Integer getCountRawData(LineCountEvaluateParam lineParam) {
|
||||||
|
InfluxQueryWrapper influxQueryWrapper = new InfluxQueryWrapper(DataV.class);
|
||||||
|
influxQueryWrapper.samePrefixAndSuffix(InfluxDbSqlConstant.V, "", HarmonicTimesUtil.harmonicTimesList(1, 50, 1));
|
||||||
|
influxQueryWrapper.regular(DataV::getLineId,lineParam.getLineId())
|
||||||
|
.select(DataV::getLineId)
|
||||||
|
.select(DataV::getPhasicType)
|
||||||
|
.select(DataV::getValueType)
|
||||||
|
.select(DataV::getFreq)
|
||||||
|
.select(DataV::getFreqDev)
|
||||||
|
.select(DataV::getRms)
|
||||||
|
.select(DataV::getRmsLvr)
|
||||||
|
.select(DataV::getVNeg)
|
||||||
|
.select(DataV::getVPos)
|
||||||
|
.select(DataV::getVThd)
|
||||||
|
.select(DataV::getVUnbalance)
|
||||||
|
.select(DataV::getVZero)
|
||||||
|
.select(DataV::getVlDev)
|
||||||
|
.select(DataV::getVuDev)
|
||||||
|
.select(DataV::getQualityFlag)
|
||||||
|
.between(DataV::getTime, lineParam.getStartTime(), lineParam.getEndTime())
|
||||||
|
.limit(1)
|
||||||
|
;
|
||||||
|
List<DataV> dataVS = dataVMapper.selectByQueryWrapper(influxQueryWrapper);
|
||||||
|
return dataVS.size();
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public List<CommonMinuteDto> getBaseData(LineCountEvaluateParam lineParam) {
|
public List<CommonMinuteDto> getBaseData(LineCountEvaluateParam lineParam) {
|
||||||
List<CommonMinuteDto> result = new ArrayList<>();
|
List<CommonMinuteDto> result = new ArrayList<>();
|
||||||
|
|||||||
@@ -0,0 +1,29 @@
|
|||||||
|
package com.njcn.dataProcess.service.impl.influxdb;
|
||||||
|
|
||||||
|
|
||||||
|
import com.github.jeffreyning.mybatisplus.service.MppServiceImpl;
|
||||||
|
import com.njcn.dataProcess.dao.relation.mapper.RStatOnlineRateDMapper;
|
||||||
|
import com.njcn.dataProcess.pojo.dto.RStatOnlineRateDto;
|
||||||
|
import com.njcn.dataProcess.pojo.po.RStatOnlineRateD;
|
||||||
|
import com.njcn.dataProcess.service.IOnlineRate;
|
||||||
|
import lombok.RequiredArgsConstructor;
|
||||||
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @Description:
|
||||||
|
* @Author: wr
|
||||||
|
* @Date: 2025/3/6 10:22
|
||||||
|
*/
|
||||||
|
@Service("InfluxdbOnlineRateImpl")
|
||||||
|
@RequiredArgsConstructor
|
||||||
|
public class InfluxdbOnlineRateImpl extends MppServiceImpl<RStatOnlineRateDMapper, RStatOnlineRateD> implements IOnlineRate {
|
||||||
|
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void batchInsertion(List<RStatOnlineRateDto.Detail> onlineRateList) {
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -91,6 +91,11 @@ public class RelationDataVImpl extends MppServiceImpl<RStatDataVRelationMapper,
|
|||||||
return Collections.emptyList();
|
return Collections.emptyList();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Integer getCountRawData(LineCountEvaluateParam lineParam) {
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public List<CommonMinuteDto> getBaseData(LineCountEvaluateParam lineParam) {
|
public List<CommonMinuteDto> getBaseData(LineCountEvaluateParam lineParam) {
|
||||||
return Collections.emptyList();
|
return Collections.emptyList();
|
||||||
|
|||||||
@@ -0,0 +1,37 @@
|
|||||||
|
package com.njcn.dataProcess.service.impl.relation;
|
||||||
|
|
||||||
|
|
||||||
|
import com.github.jeffreyning.mybatisplus.service.MppServiceImpl;
|
||||||
|
import com.njcn.dataProcess.dao.relation.mapper.RStatOnlineRateDMapper;
|
||||||
|
import com.njcn.dataProcess.pojo.dto.RStatOnlineRateDto;
|
||||||
|
import com.njcn.dataProcess.pojo.po.RStatOnlineRateD;
|
||||||
|
import com.njcn.dataProcess.service.IOnlineRate;
|
||||||
|
import lombok.RequiredArgsConstructor;
|
||||||
|
import org.springframework.beans.BeanUtils;
|
||||||
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @Description:
|
||||||
|
* @Author: wr
|
||||||
|
* @Date: 2025/3/6 10:22
|
||||||
|
*/
|
||||||
|
@Service("RelationOnlineRateImpl")
|
||||||
|
@RequiredArgsConstructor
|
||||||
|
public class RelationOnlineRateImpl extends MppServiceImpl<RStatOnlineRateDMapper, RStatOnlineRateD> implements IOnlineRate {
|
||||||
|
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void batchInsertion(List<RStatOnlineRateDto.Detail> onlineRateList) {
|
||||||
|
List<RStatOnlineRateD> result = new ArrayList<>();
|
||||||
|
onlineRateList.forEach(item->{
|
||||||
|
RStatOnlineRateD onlineRate = new RStatOnlineRateD();
|
||||||
|
BeanUtils.copyProperties(item, onlineRate);
|
||||||
|
result.add(onlineRate);
|
||||||
|
});
|
||||||
|
this.saveOrUpdateBatchByMultiId(result);
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user