间谐波电压取基波有效值、角型接线时若不存在线电压指标则使用相电压指标、表结构调整以记录配对关系
This commit is contained in:
@@ -1,8 +1,11 @@
|
||||
package com.njcn.gather.detection.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.LogUtil;
|
||||
import com.njcn.gather.detection.pojo.param.ContrastDetectionParam;
|
||||
import com.njcn.gather.detection.pojo.param.PreDetectionParam;
|
||||
import com.njcn.gather.detection.pojo.param.SimulateDetectionParam;
|
||||
@@ -17,8 +20,6 @@ import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
import java.util.Map;
|
||||
|
||||
|
||||
/**
|
||||
* @author chendaofei
|
||||
@@ -145,19 +146,13 @@ public class PreDetectionController extends BaseController {
|
||||
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, null, methodDescribe);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取比对检测的监测次数信息
|
||||
*
|
||||
* @param planId
|
||||
* @return
|
||||
*/
|
||||
@GetMapping("/getContrastTestNumInfo")
|
||||
@OperateInfo
|
||||
@ApiOperation("获取比对检测的检测次数信息")
|
||||
@ApiImplicitParam(name = "planId", value = "计划ID", required = true)
|
||||
public HttpResult<Map<Integer, Integer>> getContrastTestNumInfo(@RequestParam("planId") String planId) {
|
||||
String methodDescribe = getMethodDescribe("getContrastTestNumInfo");
|
||||
Map<Integer, Integer> result = preDetectionService.getContrastTestNumInfo(planId);
|
||||
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, result, methodDescribe);
|
||||
|
||||
@OperateInfo(info = LogEnum.SYSTEM_COMMON, operateType = OperateType.DOWNLOAD)
|
||||
@PostMapping("/exportAlignData")
|
||||
@ApiOperation("实时对齐数据导出为csv文件")
|
||||
public void exportAlignData() {
|
||||
String methodDescribe = getMethodDescribe("exportAlignData");
|
||||
LogUtil.njcnDebug(log, "{}", methodDescribe);
|
||||
preDetectionService.exportAlignData();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
package com.njcn.gather.detection.handler;
|
||||
|
||||
import cn.afterturn.easypoi.excel.entity.ExportParams;
|
||||
import cn.hutool.core.bean.BeanUtil;
|
||||
import cn.hutool.core.collection.CollUtil;
|
||||
import cn.hutool.core.collection.CollectionUtil;
|
||||
@@ -7,7 +8,9 @@ import cn.hutool.core.util.NumberUtil;
|
||||
import cn.hutool.core.util.ObjectUtil;
|
||||
import com.alibaba.fastjson.JSON;
|
||||
import com.google.common.collect.HashBiMap;
|
||||
import com.njcn.common.pojo.exception.BusinessException;
|
||||
import com.njcn.gather.detection.pojo.enums.DetectionCodeEnum;
|
||||
import com.njcn.gather.detection.pojo.enums.DetectionResponseEnum;
|
||||
import com.njcn.gather.detection.pojo.enums.SourceOperateCodeEnum;
|
||||
import com.njcn.gather.detection.pojo.enums.SourceResponseCodeEnum;
|
||||
import com.njcn.gather.detection.pojo.param.ContrastDetectionParam;
|
||||
@@ -32,7 +35,11 @@ import com.njcn.gather.plan.pojo.enums.DataSourceEnum;
|
||||
import com.njcn.gather.plan.service.IAdPlanService;
|
||||
import com.njcn.gather.storage.pojo.po.ContrastHarmonicResult;
|
||||
import com.njcn.gather.storage.pojo.po.ContrastNonHarmonicResult;
|
||||
import com.njcn.gather.storage.service.ContrastHarmonicService;
|
||||
import com.njcn.gather.storage.service.ContrastNonHarmonicService;
|
||||
import com.njcn.gather.storage.service.DetectionDataDealService;
|
||||
import com.njcn.gather.system.cfg.pojo.po.SysTestConfig;
|
||||
import com.njcn.gather.system.cfg.service.ISysTestConfigService;
|
||||
import com.njcn.gather.system.dictionary.pojo.enums.DictDataEnum;
|
||||
import com.njcn.gather.system.dictionary.pojo.po.DictData;
|
||||
import com.njcn.gather.system.dictionary.pojo.po.DictTree;
|
||||
@@ -40,7 +47,9 @@ import com.njcn.gather.system.dictionary.service.IDictDataService;
|
||||
import com.njcn.gather.system.dictionary.service.IDictTreeService;
|
||||
import com.njcn.gather.system.reg.pojo.po.SysRegRes;
|
||||
import com.njcn.gather.system.reg.service.ISysRegResService;
|
||||
import com.njcn.web.utils.ExcelUtil;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import org.springframework.beans.factory.annotation.Value;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.lang.reflect.Field;
|
||||
@@ -72,9 +81,11 @@ public class SocketContrastResponseService {
|
||||
private final DetectionDataDealService detectionDataDealService;
|
||||
private final ISysRegResService sysRegResService;
|
||||
private final DetectionServiceImpl detectionService;
|
||||
private final ContrastNonHarmonicService contrastNonHarmonicService;
|
||||
private final ContrastHarmonicService contrastHarmonicService;
|
||||
private final ISysTestConfigService sysTestConfigService;
|
||||
private final IAdPariService adPairService;
|
||||
|
||||
|
||||
/**
|
||||
* 定时器
|
||||
*/
|
||||
@@ -90,6 +101,11 @@ public class SocketContrastResponseService {
|
||||
*/
|
||||
private boolean checkResult = false;
|
||||
|
||||
/**
|
||||
* 是否接收数据
|
||||
*/
|
||||
private boolean isReceiveData = true;
|
||||
|
||||
/**
|
||||
* 成功的配对 key:被检设备ip_通道号,value:配对设备ip_通道号
|
||||
*/
|
||||
@@ -111,22 +127,78 @@ public class SocketContrastResponseService {
|
||||
private SysRegRes contrastRegRes = null;
|
||||
|
||||
|
||||
@Value("${log.homeDir}")
|
||||
private String alignDataFilePath;
|
||||
|
||||
@Value("${phaseAngle.isEnable}")
|
||||
private Boolean isPhaseAngle;
|
||||
|
||||
|
||||
private static final Map<String, List<String>> testItemCodeMap = new HashMap() {{
|
||||
put("FREQ", Arrays.asList(DetectionCodeEnum.REAL_PREFIX.getCode() + DetectionCodeEnum.FREQ.getCode()));
|
||||
// put("V", Arrays.asList("real$VRMS", "real$VA", "real$DELTA_V"));
|
||||
put("V", Arrays.asList(DetectionCodeEnum.REAL_PREFIX.getCode() + DetectionCodeEnum.VRMS.getCode()));
|
||||
put("HV", Arrays.asList(DetectionCodeEnum.REAL_PREFIX.getCode() + DetectionCodeEnum.V2_50.getCode(), DetectionCodeEnum.REAL_PREFIX.getCode() + DetectionCodeEnum.U1.getCode()));
|
||||
put("HI", Arrays.asList(DetectionCodeEnum.REAL_PREFIX.getCode() + DetectionCodeEnum.I2_50.getCode(), DetectionCodeEnum.REAL_PREFIX.getCode() + DetectionCodeEnum.I1.getCode()));
|
||||
put("V", Arrays.asList(DetectionCodeEnum.REAL_PREFIX.getCode() + DetectionCodeEnum.VRMS.getCode(), DetectionCodeEnum.REAL_PREFIX.getCode() + DetectionCodeEnum.PVRMS.getCode()));
|
||||
put("HV", Arrays.asList(DetectionCodeEnum.REAL_PREFIX.getCode() + DetectionCodeEnum.V2_50.getCode(), DetectionCodeEnum.REAL_PREFIX.getCode() + DetectionCodeEnum.PV2_50.getCode()));
|
||||
put("HI", Arrays.asList(DetectionCodeEnum.REAL_PREFIX.getCode() + DetectionCodeEnum.I2_50.getCode()));
|
||||
put("HP", Arrays.asList(DetectionCodeEnum.REAL_PREFIX.getCode() + DetectionCodeEnum.P2_50.getCode()));
|
||||
put("HSV", Arrays.asList(DetectionCodeEnum.REAL_PREFIX.getCode() + DetectionCodeEnum.SV_1_49.getCode()));
|
||||
put("HSV", Arrays.asList(DetectionCodeEnum.REAL_PREFIX.getCode() + DetectionCodeEnum.SV_1_49.getCode(), DetectionCodeEnum.REAL_PREFIX.getCode() + DetectionCodeEnum.PSV_1_49.getCode()));
|
||||
put("HSI", Arrays.asList(DetectionCodeEnum.REAL_PREFIX.getCode() + DetectionCodeEnum.SI_1_49.getCode()));
|
||||
// put("I", Arrays.asList("real$IRMS", "real$IA"));
|
||||
put("I", Arrays.asList(DetectionCodeEnum.REAL_PREFIX.getCode() + DetectionCodeEnum.IRMS.getCode()));
|
||||
put("IMBV", Arrays.asList(DetectionCodeEnum.REAL_PREFIX.getCode() + DetectionCodeEnum.V_UNBAN.getCode()));
|
||||
put("IMBA", Arrays.asList(DetectionCodeEnum.REAL_PREFIX.getCode() + DetectionCodeEnum.I_UNBAN.getCode()));
|
||||
put("P", Arrays.asList(DetectionCodeEnum.REAL_PREFIX.getCode() + DetectionCodeEnum.P_FUND.getCode()));
|
||||
}};
|
||||
|
||||
/**
|
||||
* 获取比对式检测次数
|
||||
*
|
||||
* @param devMonitorIds 被检设备监测点id列表
|
||||
* @return
|
||||
*/
|
||||
private Map<String, Integer> getContrastTestNum(List<String> devMonitorIds) {
|
||||
Map<String, Integer> resultMap = new HashMap<>();
|
||||
for (String devMonitorId : devMonitorIds) {
|
||||
Integer maxNum = 1;
|
||||
// DynamicTableNameHandler.setTableName("ad_non_harmonic_" + code);
|
||||
// List<ContrastNonHarmonicResult> nonHarmonicResultList = contrastNonHarmonicService.lambdaQuery()
|
||||
// .select(ContrastNonHarmonicResult::getNum)
|
||||
// .eq(ContrastNonHarmonicResult::getMonitorId, devMonitorId)
|
||||
// .orderByDesc(ContrastNonHarmonicResult::getNum)
|
||||
// .last("LIMIT 1").list();
|
||||
// if (CollUtil.isNotEmpty(nonHarmonicResultList)) {
|
||||
// if (maxNum <= nonHarmonicResultList.get(0).getNum()) {
|
||||
// maxNum = nonHarmonicResultList.get(0).getNum() + 1;
|
||||
// }
|
||||
// }
|
||||
// DynamicTableNameHandler.remove();
|
||||
//
|
||||
// DynamicTableNameHandler.setTableName("ad_harmonic_" + code);
|
||||
// List<ContrastHarmonicResult> harmonicResultList = contrastHarmonicService.lambdaQuery()
|
||||
// .select(ContrastHarmonicResult::getNum)
|
||||
// .eq(ContrastHarmonicResult::getMonitorId, devMonitorId)
|
||||
// .orderByDesc(ContrastHarmonicResult::getNum)
|
||||
// .last("LIMIT 1").list();
|
||||
// if (CollUtil.isNotEmpty(harmonicResultList)) {
|
||||
// if (maxNum <= harmonicResultList.get(0).getNum()) {
|
||||
// maxNum = harmonicResultList.get(0).getNum() + 1;
|
||||
// }
|
||||
// }
|
||||
// DynamicTableNameHandler.remove();
|
||||
|
||||
List<AdPair> adPairList = adPairService.lambdaQuery().select(AdPair::getNum)
|
||||
.eq(AdPair::getDevMonitorId, devMonitorId)
|
||||
.orderByDesc(AdPair::getNum)
|
||||
.last("LIMIT 1").list();
|
||||
if (CollUtil.isNotEmpty(adPairList)) {
|
||||
if (maxNum <= adPairList.get(0).getNum()) {
|
||||
maxNum = adPairList.get(0).getNum() + 1;
|
||||
}
|
||||
}
|
||||
|
||||
resultMap.put(devMonitorId, maxNum);
|
||||
resultMap.put(FormalTestManager.pairsIdMap.get(devMonitorId), maxNum);
|
||||
}
|
||||
return resultMap;
|
||||
}
|
||||
|
||||
/**
|
||||
* 初始化操作
|
||||
@@ -134,6 +206,8 @@ public class SocketContrastResponseService {
|
||||
* @param param
|
||||
*/
|
||||
public void init(ContrastDetectionParam param) {
|
||||
FormalTestManager.currentTestPlan = adPlanService.getById(param.getPlanId());
|
||||
|
||||
checkResult = false;
|
||||
SocketManager.contrastClockMap.put(DataSourceEnum.REAL_DATA, 0L);
|
||||
SocketManager.contrastClockMap.clear();
|
||||
@@ -143,10 +217,8 @@ public class SocketContrastResponseService {
|
||||
FormalTestManager.isRemoveSocket = true;
|
||||
|
||||
HashBiMap<String, String> hashBiMap = HashBiMap.create(param.getPairs());
|
||||
|
||||
FormalTestManager.currentTestPlan = adPlanService.getById(param.getPlanId());
|
||||
DictData pattern = dictDataService.getById(FormalTestManager.currentTestPlan.getPattern());
|
||||
FormalTestManager.patternEnum = PatternEnum.getEnum(pattern.getCode());
|
||||
FormalTestManager.pairsIdMap.clear();
|
||||
FormalTestManager.pairsIdMap.putAll(hashBiMap);
|
||||
|
||||
List<PreDetection> pqDevList = pqDevService.getDevInfo(param.getDevIds());
|
||||
// key为被检设备id_通道号,value为监测点DTO
|
||||
@@ -175,7 +247,7 @@ public class SocketContrastResponseService {
|
||||
List<String> standardDevIds = hashBiMap.values().stream().map(key -> key.split(CnSocketUtil.SPLIT_TAG)[0]).distinct().collect(Collectors.toList());
|
||||
FormalTestManager.standardDevList.addAll(pqStandardDevService.listStandardDevPreDetection(standardDevIds));
|
||||
|
||||
FormalTestManager.pairsMap.clear();
|
||||
FormalTestManager.pairsIpMap.clear();
|
||||
// 标准设备根据配对关系设置监测点
|
||||
FormalTestManager.standardDevList.stream().forEach(x -> {
|
||||
List<PreDetection.MonitorListDTO> monitorList = new ArrayList<>();
|
||||
@@ -192,12 +264,34 @@ public class SocketContrastResponseService {
|
||||
monitorListDTO.setPtStr(monitorListDTO1.getPtStr());
|
||||
monitorListDTO.setCtStr(monitorListDTO1.getCtStr());
|
||||
monitorListDTO.setStatInterval(monitorListDTO1.getStatInterval());
|
||||
FormalTestManager.pairsMap.put(monitorListDTO1.getLineId(), monitorListDTO.getLineId());
|
||||
FormalTestManager.pairsIpMap.put(monitorListDTO1.getLineId(), monitorListDTO.getLineId());
|
||||
monitorList.add(monitorListDTO);
|
||||
});
|
||||
x.setMonitorList(monitorList);
|
||||
});
|
||||
|
||||
FormalTestManager.devIdMapComm.clear();
|
||||
FormalTestManager.devIdMapComm.putAll(FormalTestManager.devList.stream().collect(Collectors.toMap(PreDetection::getDevIP, PreDetection::getDevId)));
|
||||
FormalTestManager.devIdMapComm.putAll(FormalTestManager.standardDevList.stream().collect(Collectors.toMap(PreDetection::getDevIP, PreDetection::getDevId)));
|
||||
|
||||
Map<String, Integer> numMap = getContrastTestNum(param.getPairs().keySet().stream().collect(Collectors.toList()));
|
||||
param.setNumMap(numMap);
|
||||
SysTestConfig oneConfig = sysTestConfigService.getOneConfig();
|
||||
if (param.getTestItemList().get(2)) {
|
||||
numMap.forEach((devMonitorId, num) -> {
|
||||
if (oneConfig.getMaxTime() < num) {
|
||||
throw new BusinessException(DetectionResponseEnum.EXCEED_MAX_TIME);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
DictData pattern = dictDataService.getById(FormalTestManager.currentTestPlan.getPattern());
|
||||
FormalTestManager.patternEnum = PatternEnum.getEnum(pattern.getCode());
|
||||
|
||||
FormalTestManager.devNameMapComm.clear();
|
||||
FormalTestManager.devNameMapComm.putAll(FormalTestManager.devList.stream().collect(Collectors.toMap(PreDetection::getDevIP, PreDetection::getDevName)));
|
||||
FormalTestManager.devNameMapComm.putAll(FormalTestManager.standardDevList.stream().collect(Collectors.toMap(PreDetection::getDevIP, PreDetection::getDevName)));
|
||||
|
||||
FormalTestManager.devDataMap.clear();
|
||||
FormalTestManager.devDataMap.putAll(FormalTestManager.devList.stream().flatMap(x -> x.getMonitorList().stream()).collect(Collectors.toMap(PreDetection.MonitorListDTO::getLineId, x -> new ArrayList<>())));
|
||||
FormalTestManager.standardDevDataMap.clear();
|
||||
@@ -229,13 +323,6 @@ public class SocketContrastResponseService {
|
||||
FormalTestManager.dataRule = DictDataEnum.SECTION_VALUE;
|
||||
}
|
||||
|
||||
FormalTestManager.devNameMapComm.clear();
|
||||
FormalTestManager.devNameMapComm.putAll(FormalTestManager.devList.stream().collect(Collectors.toMap(PreDetection::getDevIP, PreDetection::getDevName)));
|
||||
FormalTestManager.devNameMapComm.putAll(FormalTestManager.standardDevList.stream().collect(Collectors.toMap(PreDetection::getDevIP, PreDetection::getDevName)));
|
||||
|
||||
FormalTestManager.devIdMapComm.clear();
|
||||
FormalTestManager.devIdMapComm.putAll(FormalTestManager.devList.stream().collect(Collectors.toMap(PreDetection::getDevIP, PreDetection::getDevId)));
|
||||
FormalTestManager.devIdMapComm.putAll(FormalTestManager.standardDevList.stream().collect(Collectors.toMap(PreDetection::getDevIP, PreDetection::getDevId)));
|
||||
|
||||
FormalTestManager.currentStep = SourceOperateCodeEnum.YJC_SBTXJY;
|
||||
}
|
||||
@@ -404,7 +491,7 @@ public class SocketContrastResponseService {
|
||||
socketMsg.setOperateCode(SourceOperateCodeEnum.DEV_DATA_REQUEST_02.getValue());
|
||||
DevPhaseSequenceParam phaseSequenceParam = new DevPhaseSequenceParam();
|
||||
phaseSequenceParam.setMoniterIdList(Arrays.asList(FormalTestManager.monitorMap.keySet().toArray(new String[FormalTestManager.monitorMap.size()])));
|
||||
phaseSequenceParam.setDataType(Arrays.asList(DetectionCodeEnum.REAL_PREFIX.getCode() + DetectionCodeEnum.VRMS.getCode()));
|
||||
phaseSequenceParam.setDataType(Arrays.asList(DetectionCodeEnum.REAL_PREFIX.getCode() + DetectionCodeEnum.VRMS.getCode(), DetectionCodeEnum.REAL_PREFIX.getCode() + DetectionCodeEnum.PVRMS.getCode()));
|
||||
phaseSequenceParam.setReadCount(this.getMaxReadCount(5));
|
||||
phaseSequenceParam.setIgnoreCount(0);
|
||||
socketMsg.setData(JSON.toJSONString(phaseSequenceParam));
|
||||
@@ -472,16 +559,14 @@ public class SocketContrastResponseService {
|
||||
|
||||
CnSocketUtil.contrastSendquit(param.getUserPageId(), false);
|
||||
|
||||
this.clearData();
|
||||
|
||||
Collection<String> disjunction = CollectionUtil.disjunction(FormalTestManager.pairsMap.keySet(), successPair.keySet());
|
||||
Collection<String> disjunction = CollectionUtil.disjunction(FormalTestManager.pairsIpMap.keySet(), successPair.keySet());
|
||||
// 向前端推送实时数据对齐失败的配对项
|
||||
for (String key : disjunction) {
|
||||
SocketDataMsg webSend = new SocketDataMsg();
|
||||
webSend.setRequestId(SourceOperateCodeEnum.YJC_ALIGN.getValue());
|
||||
webSend.setOperateCode(SourceOperateCodeEnum.DEV_DATA_REQUEST_02.getValue());
|
||||
webSend.setCode(SourceResponseCodeEnum.FAIL.getCode());
|
||||
webSend.setData(MsgUtil.getPairStr(key, FormalTestManager.pairsMap.inverse().get(key), FormalTestManager.devNameMapComm));
|
||||
webSend.setData(MsgUtil.getPairStr(key, FormalTestManager.pairsIpMap.inverse().get(key), FormalTestManager.devNameMapComm));
|
||||
WebServiceManager.sendMsg(param.getUserPageId(), JSON.toJSONString(webSend));
|
||||
}
|
||||
// 推送最终失败结果
|
||||
@@ -493,6 +578,9 @@ public class SocketContrastResponseService {
|
||||
|
||||
// 将数据推送给前端
|
||||
this.sendAlignDataToWeb(param.getUserPageId());
|
||||
this.saveAlignData();
|
||||
|
||||
this.clearData();
|
||||
|
||||
return;
|
||||
}
|
||||
@@ -504,12 +592,12 @@ public class SocketContrastResponseService {
|
||||
String devMonitorId = monitorId1;
|
||||
String standardDevMonitorId = monitorId1;
|
||||
if (FormalTestManager.devDataMap.containsKey(monitorId1)) {
|
||||
standardDevMonitorId = FormalTestManager.pairsMap.get(monitorId1);
|
||||
standardDevMonitorId = FormalTestManager.pairsIpMap.get(monitorId1);
|
||||
FormalTestManager.devDataMap.get(monitorId1).add(devData);
|
||||
Collections.sort(FormalTestManager.devDataMap.get(monitorId1), Comparator.comparing(obj -> DetectionUtil.getMillis(obj.getTime())));
|
||||
}
|
||||
if (FormalTestManager.standardDevDataMap.containsKey(monitorId1)) {
|
||||
devMonitorId = FormalTestManager.pairsMap.inverse().get(monitorId1);
|
||||
devMonitorId = FormalTestManager.pairsIpMap.inverse().get(monitorId1);
|
||||
FormalTestManager.standardDevDataMap.get(monitorId1).add(devData);
|
||||
Collections.sort(FormalTestManager.standardDevDataMap.get(monitorId1), Comparator.comparing(obj -> DetectionUtil.getMillis(obj.getTime())));
|
||||
}
|
||||
@@ -528,13 +616,14 @@ public class SocketContrastResponseService {
|
||||
WebServiceManager.sendMsg(param.getUserPageId(), JSON.toJSONString(webSend));
|
||||
|
||||
// 若成功的配对项等于总的配对项,则判定为成功
|
||||
if (successPair.keySet().containsAll(FormalTestManager.pairsMap.keySet())) {
|
||||
if (successPair.keySet().containsAll(FormalTestManager.pairsIpMap.keySet())) {
|
||||
checkResult = true;
|
||||
scheduledFuture.cancel(true);
|
||||
scheduler.shutdown();
|
||||
|
||||
// 将数据推送给前端
|
||||
this.sendAlignDataToWeb(param.getUserPageId());
|
||||
this.saveAlignData();
|
||||
|
||||
this.clearData();
|
||||
|
||||
@@ -552,9 +641,13 @@ public class SocketContrastResponseService {
|
||||
phaseSequenceParam.setMoniterIdList(Arrays.asList(FormalTestManager.monitorMap.keySet().toArray(new String[FormalTestManager.monitorMap.size()])));
|
||||
phaseSequenceParam.setDataType(Arrays.asList(
|
||||
DetectionCodeEnum.REAL_PREFIX.getCode() + DetectionCodeEnum.VRMS.getCode(),
|
||||
DetectionCodeEnum.REAL_PREFIX.getCode() + DetectionCodeEnum.PVRMS.getCode(),
|
||||
DetectionCodeEnum.REAL_PREFIX.getCode() + DetectionCodeEnum.VA.getCode(),
|
||||
DetectionCodeEnum.REAL_PREFIX.getCode() + DetectionCodeEnum.IRMS.getCode(),
|
||||
DetectionCodeEnum.REAL_PREFIX.getCode() + DetectionCodeEnum.IA.getCode(),
|
||||
DetectionCodeEnum.REAL_PREFIX.getCode() + DetectionCodeEnum.U1A.getCode(),
|
||||
DetectionCodeEnum.REAL_PREFIX.getCode() + DetectionCodeEnum.PU1A.getCode(),
|
||||
DetectionCodeEnum.REAL_PREFIX.getCode() + DetectionCodeEnum.I1A.getCode(),
|
||||
DetectionCodeEnum.REAL_PREFIX.getCode() + DetectionCodeEnum.IRMS.getCode(),
|
||||
DetectionCodeEnum.REAL_PREFIX.getCode() + DetectionCodeEnum.V_UNBAN.getCode(),
|
||||
DetectionCodeEnum.REAL_PREFIX.getCode() + DetectionCodeEnum.I_UNBAN.getCode()));
|
||||
phaseSequenceParam.setReadCount(this.getMaxReadCount(1));
|
||||
@@ -616,14 +709,14 @@ public class SocketContrastResponseService {
|
||||
String standardDevMonitorId = monitorId1;
|
||||
|
||||
if (FormalTestManager.devDataMap.containsKey(monitorId1)) {
|
||||
standardDevMonitorId = FormalTestManager.pairsMap.get(monitorId1);
|
||||
standardDevMonitorId = FormalTestManager.pairsIpMap.get(monitorId1);
|
||||
if (!successPair.containsKey(devMonitorId)) {
|
||||
FormalTestManager.devDataMap.get(monitorId1).add(devData);
|
||||
Collections.sort(FormalTestManager.devDataMap.get(monitorId1), Comparator.comparing(obj -> DetectionUtil.getMillis(obj.getTime())));
|
||||
}
|
||||
}
|
||||
if (FormalTestManager.standardDevDataMap.containsKey(monitorId1)) {
|
||||
devMonitorId = FormalTestManager.pairsMap.inverse().get(monitorId1);
|
||||
devMonitorId = FormalTestManager.pairsIpMap.inverse().get(monitorId1);
|
||||
if (!successPair.containsKey(devMonitorId)) {
|
||||
FormalTestManager.standardDevDataMap.get(monitorId1).add(devData);
|
||||
Collections.sort(FormalTestManager.standardDevDataMap.get(monitorId1), Comparator.comparing(obj -> DetectionUtil.getMillis(obj.getTime())));
|
||||
@@ -635,12 +728,12 @@ public class SocketContrastResponseService {
|
||||
successComm.add(standardDevMonitorId);
|
||||
successComm.add(devMonitorId);
|
||||
// successComm.add(monitorId1);
|
||||
List<List<DevData>> singleMonitorAlignData = getSingleMonitorAlignData(FormalTestManager.devDataMap.get(devMonitorId), FormalTestManager.standardDevDataMap.get(standardDevMonitorId));
|
||||
List<List<DevData>> singleMonitorAlignData = getSingleMonitorAlignData(FormalTestManager.devDataMap.get(devMonitorId), FormalTestManager.standardDevDataMap.get(standardDevMonitorId), 1);
|
||||
PreDetection.MonitorListDTO monitorListDTO = FormalTestManager.monitorMap.get(devMonitorId);
|
||||
if (this.singleMonitorXuCheck(devMonitorId, standardDevMonitorId, monitorListDTO, singleMonitorAlignData.get(0), singleMonitorAlignData.get(1), FormalTestManager.devNameMapComm, param.getUserPageId())) {
|
||||
successPair.put(devMonitorId, standardDevMonitorId);
|
||||
// 若成功的配对项等于总的配对项,则判定为成功
|
||||
if (successPair.keySet().containsAll(FormalTestManager.pairsMap.keySet())) {
|
||||
if (successPair.keySet().containsAll(FormalTestManager.pairsIpMap.keySet())) {
|
||||
|
||||
this.clearData();
|
||||
|
||||
@@ -743,11 +836,11 @@ public class SocketContrastResponseService {
|
||||
|
||||
this.clearData();
|
||||
|
||||
Collection<String> disjunction = CollectionUtil.disjunction(FormalTestManager.pairsMap.keySet(), successPair.keySet());
|
||||
Collection<String> disjunction = CollectionUtil.disjunction(FormalTestManager.pairsIpMap.keySet(), successPair.keySet());
|
||||
// 向前端推送收集数据不完整的配对项
|
||||
for (String key : disjunction) {
|
||||
webSend.setCode(SourceResponseCodeEnum.FAIL.getCode());
|
||||
webSend.setData(MsgUtil.getPairStr(key, FormalTestManager.pairsMap.inverse().get(key), FormalTestManager.devNameMapComm) + " 数据收集不完整!");
|
||||
webSend.setData(MsgUtil.getPairStr(key, FormalTestManager.pairsIpMap.inverse().get(key), FormalTestManager.devNameMapComm) + " 数据收集不完整!");
|
||||
WebServiceManager.sendMsg(param.getUserPageId(), JSON.toJSONString(webSend));
|
||||
}
|
||||
// 推送最终失败结果
|
||||
@@ -765,14 +858,14 @@ public class SocketContrastResponseService {
|
||||
String standardDevMonitorId = monitorId1;
|
||||
|
||||
if (FormalTestManager.devDataMap.containsKey(monitorId1)) {
|
||||
standardDevMonitorId = FormalTestManager.pairsMap.get(monitorId1);
|
||||
standardDevMonitorId = FormalTestManager.pairsIpMap.get(monitorId1);
|
||||
if (!successPair.containsKey(devMonitorId)) {
|
||||
FormalTestManager.devDataMap.get(monitorId1).add(devData);
|
||||
Collections.sort(FormalTestManager.devDataMap.get(monitorId1), Comparator.comparing(obj -> DetectionUtil.getMillis(obj.getTime())));
|
||||
}
|
||||
}
|
||||
if (FormalTestManager.standardDevDataMap.containsKey(monitorId1)) {
|
||||
devMonitorId = FormalTestManager.pairsMap.inverse().get(monitorId1);
|
||||
devMonitorId = FormalTestManager.pairsIpMap.inverse().get(monitorId1);
|
||||
if (!successPair.containsKey(devMonitorId)) {
|
||||
FormalTestManager.standardDevDataMap.get(monitorId1).add(devData);
|
||||
Collections.sort(FormalTestManager.standardDevDataMap.get(monitorId1), Comparator.comparing(obj -> DetectionUtil.getMillis(obj.getTime())));
|
||||
@@ -781,7 +874,7 @@ public class SocketContrastResponseService {
|
||||
|
||||
if (!successPair.containsKey(devMonitorId)) {
|
||||
if (FormalTestManager.devDataMap.get(devMonitorId).size() >= realTime && FormalTestManager.standardDevDataMap.get(standardDevMonitorId).size() >= realTime) {
|
||||
List<List<DevData>> singleMonitorAlignData = getSingleMonitorAlignData(FormalTestManager.devDataMap.get(devMonitorId), FormalTestManager.standardDevDataMap.get(standardDevMonitorId));
|
||||
List<List<DevData>> singleMonitorAlignData = getSingleMonitorAlignData(FormalTestManager.devDataMap.get(devMonitorId), FormalTestManager.standardDevDataMap.get(standardDevMonitorId), realTime);
|
||||
if (singleMonitorAlignData.get(0).size() >= realTime && singleMonitorAlignData.get(1).size() >= realTime) {
|
||||
successPair.put(devMonitorId, standardDevMonitorId);
|
||||
// 推送收集数据成功的配对项
|
||||
@@ -789,44 +882,41 @@ public class SocketContrastResponseService {
|
||||
webSend.setData(MsgUtil.getPairStr(devMonitorId, standardDevMonitorId, FormalTestManager.devNameMapComm) + " 数据收集成功!");
|
||||
WebServiceManager.sendMsg(param.getUserPageId(), JSON.toJSONString(webSend));
|
||||
|
||||
if (successPair.keySet().containsAll(FormalTestManager.pairsMap.keySet())) {
|
||||
if (successPair.keySet().containsAll(FormalTestManager.pairsIpMap.keySet())) {
|
||||
isReceiveData = false;
|
||||
// 断开与设备的连接,但是不要将Socket移除
|
||||
CnSocketUtil.contrastSendquit(param.getUserPageId(), false);
|
||||
checkResult = true;
|
||||
scheduledFuture.cancel(true);
|
||||
scheduler.shutdown();
|
||||
|
||||
// 断开与设备的连接,但是不要将Socket移除
|
||||
CnSocketUtil.contrastSendquit(param.getUserPageId(), false);
|
||||
|
||||
String errorSysId = FormalTestManager.currentTestPlan.getErrorSysId();
|
||||
String code = String.valueOf(FormalTestManager.currentTestPlan.getCode());
|
||||
// 原始数据入库
|
||||
baseDataInsert(singleMonitorAlignData.get(0), param.getNum(), code, FormalTestManager.testItemMap);
|
||||
baseDataInsert(singleMonitorAlignData.get(1), param.getNum(), code, FormalTestManager.testItemMap);
|
||||
|
||||
// 配对关系入库
|
||||
List<AdPair> adPairList = new ArrayList<>();
|
||||
for (String key : FormalTestManager.pairsMap.keySet()) {
|
||||
String standardDevId = FormalTestManager.pairsMap.get(key);
|
||||
for (String key : FormalTestManager.pairsIdMap.keySet()) {
|
||||
AdPair adPair = new AdPair();
|
||||
adPair.setPlanId(FormalTestManager.currentTestPlan.getId());
|
||||
String[] split = key.split(CnSocketUtil.SPLIT_TAG);
|
||||
adPair.setDevMonitorId(FormalTestManager.devIdMapComm.get(split[0]) + CnSocketUtil.SPLIT_TAG + split[1]);
|
||||
split = standardDevId.split(CnSocketUtil.SPLIT_TAG);
|
||||
adPair.setStdDevMonitorId(FormalTestManager.devIdMapComm.get(split[0]) + CnSocketUtil.SPLIT_TAG + split[1]);
|
||||
adPair.setNum(param.getNum());
|
||||
adPair.setDevMonitorId(key);
|
||||
adPair.setStdDevMonitorId(FormalTestManager.pairsIdMap.get(key));
|
||||
adPair.setNum(param.getNumMap().get(key));
|
||||
adPairList.add(adPair);
|
||||
}
|
||||
adPairService.saveBatch(adPairList);
|
||||
|
||||
// 原始数据入库
|
||||
baseDataInsert(false, singleMonitorAlignData.get(0), param.getNumMap(), code);
|
||||
baseDataInsert(true, singleMonitorAlignData.get(1), param.getNumMap(), code);
|
||||
|
||||
// 进行误差计算
|
||||
List<DevLineTestResult> allResultList = detectionService.processing(
|
||||
FormalTestManager.devDataMap.values().stream().flatMap(Collection::stream).collect(Collectors.toList()),
|
||||
FormalTestManager.standardDevDataMap.values().stream().flatMap(Collection::stream).collect(Collectors.toList()),
|
||||
FormalTestManager.pairsMap,
|
||||
FormalTestManager.pairsIpMap,
|
||||
FormalTestManager.devIdMapComm,
|
||||
FormalTestManager.monitorMap,
|
||||
FormalTestManager.testItemMap.keySet().stream().collect(Collectors.toList()),
|
||||
errorSysId, FormalTestManager.dataRule, param.getNum(), code);
|
||||
errorSysId, FormalTestManager.dataRule, param.getNumMap(), code);
|
||||
|
||||
this.clearData();
|
||||
|
||||
@@ -834,6 +924,9 @@ public class SocketContrastResponseService {
|
||||
webSend.setCode(SourceResponseCodeEnum.ALL_SUCCESS.getCode());//最终成功推送
|
||||
webSend.setData(JSON.toJSONString(allResultList));
|
||||
WebServiceManager.sendMsg(param.getUserPageId(), JSON.toJSONString(webSend));
|
||||
|
||||
// 修改设备状态
|
||||
pqDevService.updateResult(true, param.getDevIds(), FormalTestManager.testItemMap.keySet().stream().collect(Collectors.toList()), code, param.getUserId(), param.getTemperature(), param.getHumidity());
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -932,14 +1025,18 @@ public class SocketContrastResponseService {
|
||||
* @return
|
||||
*/
|
||||
private List<String> getAllDataType() {
|
||||
List<String> testCodes = FormalTestManager.testItemMap.keySet().stream().collect(Collectors.toList());
|
||||
if (testCodes.contains(DetectionCodeEnum.REAL_PREFIX.getCode() + DetectionCodeEnum.V2_50.getCode())) {
|
||||
Set<String> testCodes = FormalTestManager.testItemMap.keySet().stream().collect(Collectors.toSet());
|
||||
if (testCodes.contains(DetectionCodeEnum.REAL_PREFIX.getCode() + DetectionCodeEnum.V2_50.getCode())
|
||||
|| testCodes.contains(DetectionCodeEnum.REAL_PREFIX.getCode() + DetectionCodeEnum.PV2_50.getCode())
|
||||
|| testCodes.contains(DetectionCodeEnum.REAL_PREFIX.getCode() + DetectionCodeEnum.SV_1_49.getCode())
|
||||
|| testCodes.contains(DetectionCodeEnum.REAL_PREFIX.getCode() + DetectionCodeEnum.PSV_1_49.getCode())) {
|
||||
testCodes.add(DetectionCodeEnum.REAL_PREFIX.getCode() + DetectionCodeEnum.U1.getCode());
|
||||
testCodes.add(DetectionCodeEnum.REAL_PREFIX.getCode() + DetectionCodeEnum.PU1.getCode());
|
||||
}
|
||||
if (testCodes.contains(DetectionCodeEnum.REAL_PREFIX.getCode() + DetectionCodeEnum.I2_50.getCode())) {
|
||||
testCodes.add(DetectionCodeEnum.REAL_PREFIX.getCode() + DetectionCodeEnum.I1.getCode());
|
||||
}
|
||||
return testCodes;
|
||||
return testCodes.stream().sorted().collect(Collectors.toList());
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -952,21 +1049,6 @@ public class SocketContrastResponseService {
|
||||
return (int) (Math.ceil(targetCount / 5.0) * 20);
|
||||
}
|
||||
|
||||
/**
|
||||
* 向通讯模块发送不再接收数据
|
||||
*/
|
||||
private void sendNotReceiveData(String s) {
|
||||
SocketMsg<String> socketMsg = new SocketMsg<>();
|
||||
socketMsg.setRequestId(SourceOperateCodeEnum.FORMAL_REAL.getValue());
|
||||
socketMsg.setOperateCode(SourceOperateCodeEnum.DEV_DATA_REQUEST_02.getValue());
|
||||
DevPhaseSequenceParam phaseSequenceParam = new DevPhaseSequenceParam();
|
||||
phaseSequenceParam.setMoniterIdList(Arrays.asList(FormalTestManager.monitorMap.keySet().toArray(new String[FormalTestManager.monitorMap.size()])));
|
||||
phaseSequenceParam.setReadCount(0);
|
||||
phaseSequenceParam.setIgnoreCount(0);
|
||||
socketMsg.setData(JSON.toJSONString(phaseSequenceParam));
|
||||
|
||||
SocketManager.sendMsg(s, JSON.toJSONString(socketMsg));
|
||||
}
|
||||
|
||||
/**
|
||||
* 实时数据对齐-将数据推送给前端
|
||||
@@ -991,7 +1073,8 @@ public class SocketContrastResponseService {
|
||||
List<AlignDataVO.ChannelData> channelDataList = new ArrayList<>();
|
||||
channelDataMap.forEach((channel, channelDevDataList) -> {
|
||||
String standardDevMonitorId = ip + CnSocketUtil.SPLIT_TAG + channel;
|
||||
String devMonitorId = FormalTestManager.pairsMap.inverse().get(standardDevMonitorId);
|
||||
String devMonitorId = FormalTestManager.pairsIpMap.inverse().get(standardDevMonitorId);
|
||||
PreDetection.MonitorListDTO monitorListDTO = FormalTestManager.monitorMap.get(devMonitorId);
|
||||
List<DevData> devDataList = BeanUtil.copyToList(FormalTestManager.devDataMap.get(devMonitorId), DevData.class);
|
||||
channelDevDataList.sort(Comparator.comparing(obj -> DetectionUtil.getMillis(obj.getTime())));
|
||||
|
||||
@@ -1000,21 +1083,43 @@ public class SocketContrastResponseService {
|
||||
String[] split = devMonitorId.split(CnSocketUtil.SPLIT_TAG);
|
||||
channelData.setDevInfo(FormalTestManager.devNameMapComm.get(split[0]) + "通道" + split[1]);
|
||||
|
||||
boolean isStar = DetectionCodeEnum.STAR.getCode().equals(monitorListDTO.getConnection());
|
||||
boolean isDelta = DetectionCodeEnum.DELTA.getCode().equals(monitorListDTO.getConnection());
|
||||
List<AlignDataVO.RawData> dataList = channelDevDataList.stream().map(obj -> {
|
||||
DevData.SqlDataDTO.ListDTO list1 = null;
|
||||
DevData.SqlDataDTO sqlDataDTO1 = null;
|
||||
if (isStar) {
|
||||
sqlDataDTO1 = obj.getSqlData().stream().filter(x -> x.getDesc().equals(DetectionCodeEnum.VRMS.getCode())).findFirst().orElse(null);
|
||||
}
|
||||
if (isDelta) {
|
||||
sqlDataDTO1 = obj.getSqlData().stream().filter(x -> x.getDesc().equals(DetectionCodeEnum.PVRMS.getCode())).findFirst().orElse(null);
|
||||
}
|
||||
if (ObjectUtil.isNotNull(sqlDataDTO1)) {
|
||||
list1 = sqlDataDTO1.getList();
|
||||
}
|
||||
AlignDataVO.RawData rawData = new AlignDataVO.RawData();
|
||||
DevData.SqlDataDTO.ListDTO list = obj.getSqlData().get(0).getList();
|
||||
rawData.setUaStdDev(list.getA());
|
||||
rawData.setUbStdDev(list.getB());
|
||||
rawData.setUcStdDev(list.getC());
|
||||
rawData.setTimeStdDev(obj.getTime());
|
||||
rawData.setUaStdDev(list1.getA());
|
||||
rawData.setUbStdDev(list1.getB());
|
||||
rawData.setUcStdDev(list1.getC());
|
||||
rawData.setTimeStdDev(obj.getTime().replace("T", " "));
|
||||
|
||||
DevData devData = devDataList.stream().filter(obj1 -> DetectionUtil.isAlignData(obj1, obj)).findFirst().orElse(null);
|
||||
if (ObjectUtil.isNotNull(devData)) {
|
||||
DevData.SqlDataDTO.ListDTO list1 = devData.getSqlData().get(0).getList();
|
||||
rawData.setUaDev(list1.getA());
|
||||
rawData.setUbDev(list1.getB());
|
||||
rawData.setUcDev(list1.getC());
|
||||
rawData.setTimeDev(devData.getTime());
|
||||
DevData.SqlDataDTO.ListDTO list2 = null;
|
||||
DevData.SqlDataDTO sqlDataDTO2 = null;
|
||||
if (isStar) {
|
||||
sqlDataDTO2 = devData.getSqlData().stream().filter(x -> x.getDesc().equals(DetectionCodeEnum.VRMS.getCode())).findFirst().orElse(null);
|
||||
}
|
||||
if (isDelta) {
|
||||
sqlDataDTO2 = devData.getSqlData().stream().filter(x -> x.getDesc().equals(DetectionCodeEnum.PVRMS.getCode())).findFirst().orElse(null);
|
||||
}
|
||||
if (ObjectUtil.isNotNull(sqlDataDTO2)) {
|
||||
list2 = sqlDataDTO2.getList();
|
||||
}
|
||||
rawData.setUaDev(list2.getA());
|
||||
rawData.setUbDev(list2.getB());
|
||||
rawData.setUcDev(list2.getC());
|
||||
rawData.setTimeDev(devData.getTime().replace("T", " "));
|
||||
devDataList.remove(devData);
|
||||
}
|
||||
return rawData;
|
||||
@@ -1026,7 +1131,7 @@ public class SocketContrastResponseService {
|
||||
rawData.setUaDev(list.getA());
|
||||
rawData.setUbDev(list.getB());
|
||||
rawData.setUcDev(list.getC());
|
||||
rawData.setTimeDev(obj.getTime());
|
||||
rawData.setTimeDev(obj.getTime().replace("T", " "));
|
||||
return rawData;
|
||||
}).collect(Collectors.toList()));
|
||||
channelData.setDataList(dataList);
|
||||
@@ -1040,6 +1145,94 @@ public class SocketContrastResponseService {
|
||||
WebServiceManager.sendMsg(userPageId, JSON.toJSONString(webSend));
|
||||
}
|
||||
|
||||
/**
|
||||
* 实时数据对齐-保存数据到excel文件
|
||||
*/
|
||||
private void saveAlignData() {
|
||||
List<Map<String, Object>> sheetsList = new ArrayList<>();
|
||||
|
||||
// key为被检设备的ip, value为该ip下所有通道的设备数据
|
||||
Map<String, List<DevData>> ipDevDataMap = FormalTestManager.standardDevDataMap.values().stream().flatMap(List::stream).collect(Collectors.groupingBy(obj -> obj.getId().split(CnSocketUtil.SPLIT_TAG)[0]));
|
||||
|
||||
ipDevDataMap.forEach((ip, stdDevDataList) -> {
|
||||
// 按照通道号分组。key为通道号,value为该通道号下所有设备数据
|
||||
Map<String, List<DevData>> channelDataMap = stdDevDataList.stream().collect(Collectors.groupingBy(obj -> obj.getId().split(CnSocketUtil.SPLIT_TAG)[1]));
|
||||
|
||||
channelDataMap.forEach((channel, channelDevDataList) -> {
|
||||
String standardDevMonitorId = ip + CnSocketUtil.SPLIT_TAG + channel;
|
||||
String devMonitorId = FormalTestManager.pairsIpMap.inverse().get(standardDevMonitorId);
|
||||
PreDetection.MonitorListDTO monitorListDTO = FormalTestManager.monitorMap.get(devMonitorId);
|
||||
List<DevData> devDataList = BeanUtil.copyToList(FormalTestManager.devDataMap.get(devMonitorId), DevData.class);
|
||||
channelDevDataList.sort(Comparator.comparing(obj -> DetectionUtil.getMillis(obj.getTime())));
|
||||
|
||||
HashMap sheet = new HashMap<>();
|
||||
ExportParams exportParams = new ExportParams();
|
||||
String standardDevName = FormalTestManager.devNameMapComm.get(ip);
|
||||
exportParams.setSheetName(standardDevName + "通道" + channel);
|
||||
sheet.put("title", exportParams);
|
||||
|
||||
List<AlignDataExcel> dataList = new ArrayList<>();
|
||||
boolean isStar = DetectionCodeEnum.STAR.getCode().equals(monitorListDTO.getConnection());
|
||||
boolean isDelta = DetectionCodeEnum.DELTA.getCode().equals(monitorListDTO.getConnection());
|
||||
channelDevDataList.stream().forEach(obj -> {
|
||||
DevData.SqlDataDTO.ListDTO list1 = null;
|
||||
DevData.SqlDataDTO sqlDataDTO1 = null;
|
||||
if (isStar) {
|
||||
sqlDataDTO1 = obj.getSqlData().stream().filter(x -> x.getDesc().equals(DetectionCodeEnum.VRMS.getCode())).findFirst().orElse(null);
|
||||
}
|
||||
if (isDelta) {
|
||||
sqlDataDTO1 = obj.getSqlData().stream().filter(x -> x.getDesc().equals(DetectionCodeEnum.PVRMS.getCode())).findFirst().orElse(null);
|
||||
}
|
||||
if (ObjectUtil.isNotNull(sqlDataDTO1)) {
|
||||
list1 = sqlDataDTO1.getList();
|
||||
}
|
||||
AlignDataExcel alignDataExcel = new AlignDataExcel();
|
||||
alignDataExcel.setTimeStdDev(obj.getTime().replace("T", " "));
|
||||
alignDataExcel.setUaStdDev(list1.getA());
|
||||
alignDataExcel.setUbStdDev(list1.getB());
|
||||
alignDataExcel.setUcStdDev(list1.getC());
|
||||
|
||||
DevData devData = devDataList.stream().filter(obj1 -> DetectionUtil.isAlignData(obj1, obj)).findFirst().orElse(null);
|
||||
if (ObjectUtil.isNotNull(devData)) {
|
||||
DevData.SqlDataDTO.ListDTO list2 = null;
|
||||
DevData.SqlDataDTO sqlDataDTO2 = null;
|
||||
if (isStar) {
|
||||
sqlDataDTO2 = obj.getSqlData().stream().filter(x -> x.getDesc().equals(DetectionCodeEnum.VRMS.getCode())).findFirst().orElse(null);
|
||||
}
|
||||
if (isDelta) {
|
||||
sqlDataDTO2 = obj.getSqlData().stream().filter(x -> x.getDesc().equals(DetectionCodeEnum.PVRMS.getCode())).findFirst().orElse(null);
|
||||
}
|
||||
if (ObjectUtil.isNotNull(sqlDataDTO2)) {
|
||||
list2 = sqlDataDTO2.getList();
|
||||
}
|
||||
alignDataExcel.setTimeDev(devData.getTime().replace("T", " "));
|
||||
alignDataExcel.setUaDev(list2.getA());
|
||||
alignDataExcel.setUbDev(list2.getB());
|
||||
alignDataExcel.setUcDev(list2.getC());
|
||||
devDataList.remove(devData);
|
||||
}
|
||||
dataList.add(alignDataExcel);
|
||||
});
|
||||
devDataList.sort(Comparator.comparing(obj -> DetectionUtil.getMillis(obj.getTime())));
|
||||
devDataList.stream().forEach(obj -> {
|
||||
AlignDataExcel alignDataExcel = new AlignDataExcel();
|
||||
DevData.SqlDataDTO.ListDTO list2 = obj.getSqlData().get(0).getList();
|
||||
alignDataExcel.setTimeDev(obj.getTime().replace("T", " "));
|
||||
alignDataExcel.setUaDev(list2.getA());
|
||||
alignDataExcel.setUbDev(list2.getB());
|
||||
alignDataExcel.setUcDev(list2.getC());
|
||||
dataList.add(alignDataExcel);
|
||||
});
|
||||
|
||||
sheet.put("data", dataList);
|
||||
sheet.put("entity", AlignDataExcel.class);
|
||||
sheetsList.add(sheet);
|
||||
});
|
||||
});
|
||||
|
||||
ExcelUtil.saveExcel(alignDataFilePath, "实时数据.xlsx", sheetsList);
|
||||
}
|
||||
|
||||
/**
|
||||
* 模型一致性校验
|
||||
*
|
||||
@@ -1059,7 +1252,10 @@ public class SocketContrastResponseService {
|
||||
List<String> allTestItem = this.getAllDataType();
|
||||
if (DetectionCodeEnum.STAR.getCode().equals(monitorListDTO.getConnection())) {
|
||||
// 移除相关线电压测试项
|
||||
// allTestItem.remove()
|
||||
allTestItem.remove(DetectionCodeEnum.REAL_PREFIX.getCode() + DetectionCodeEnum.PVRMS.getCode());
|
||||
allTestItem.remove(DetectionCodeEnum.REAL_PREFIX.getCode() + DetectionCodeEnum.PU1.getCode());
|
||||
allTestItem.remove(DetectionCodeEnum.REAL_PREFIX.getCode() + DetectionCodeEnum.PV2_50.getCode());
|
||||
allTestItem.remove(DetectionCodeEnum.REAL_PREFIX.getCode() + DetectionCodeEnum.PSV_1_49.getCode());
|
||||
}
|
||||
if (DetectionCodeEnum.DELTA.getCode().equals(monitorListDTO.getConnection())) {
|
||||
// 移除相关相电压测试项
|
||||
@@ -1067,6 +1263,16 @@ public class SocketContrastResponseService {
|
||||
allTestItem.remove(DetectionCodeEnum.REAL_PREFIX.getCode() + DetectionCodeEnum.U1.getCode());
|
||||
allTestItem.remove(DetectionCodeEnum.REAL_PREFIX.getCode() + DetectionCodeEnum.V2_50.getCode());
|
||||
allTestItem.remove(DetectionCodeEnum.REAL_PREFIX.getCode() + DetectionCodeEnum.SV_1_49.getCode());
|
||||
|
||||
// 如果是在是没有线电压谐波含有率、线电压间谐波含有率,勉强使其通过
|
||||
if (!descList.contains(DetectionCodeEnum.REAL_PREFIX.getCode() + DetectionCodeEnum.PV2_50.getCode())) {
|
||||
allTestItem.remove(DetectionCodeEnum.REAL_PREFIX.getCode() + DetectionCodeEnum.PU1.getCode());
|
||||
allTestItem.remove(DetectionCodeEnum.REAL_PREFIX.getCode() + DetectionCodeEnum.PV2_50.getCode());
|
||||
}
|
||||
if (!descList.contains(DetectionCodeEnum.REAL_PREFIX.getCode() + DetectionCodeEnum.PSV_1_49.getCode())) {
|
||||
allTestItem.remove(DetectionCodeEnum.REAL_PREFIX.getCode() + DetectionCodeEnum.PU1.getCode());
|
||||
allTestItem.remove(DetectionCodeEnum.REAL_PREFIX.getCode() + DetectionCodeEnum.PSV_1_49.getCode());
|
||||
}
|
||||
}
|
||||
|
||||
if (CollUtil.isNotEmpty(descList) && descList.containsAll(allTestItem)) {
|
||||
@@ -1089,9 +1295,10 @@ public class SocketContrastResponseService {
|
||||
*
|
||||
* @param devDataList 被检设备数据(已经按照时间戳从小到大排过序)
|
||||
* @param standardDevDataList 标准设备数据(已经按照时间戳从小到大排过序)
|
||||
* @param num 对齐的组数
|
||||
* @return 返回一个List集合,集合中仅有2个元素。下标为0的元素为被检设备数据,下标为1的元素为其一一对齐的标准设备数据
|
||||
*/
|
||||
private List<List<DevData>> getSingleMonitorAlignData(List<DevData> devDataList, List<DevData> standardDevDataList) {
|
||||
private List<List<DevData>> getSingleMonitorAlignData(List<DevData> devDataList, List<DevData> standardDevDataList, Integer num) {
|
||||
List<List<DevData>> result = new ArrayList<>();
|
||||
|
||||
List<DevData> alignDevData = new ArrayList<>();
|
||||
@@ -1107,6 +1314,10 @@ public class SocketContrastResponseService {
|
||||
alignDevData.add(devDataList.get(j));
|
||||
alignStdDevData.add(standardDevDataList.get(i));
|
||||
jStart = j + 1;
|
||||
|
||||
if (alignDevData.size() >= num && alignStdDevData.size() >= num) {
|
||||
jStart = devDataList.size();
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
@@ -1184,8 +1395,8 @@ public class SocketContrastResponseService {
|
||||
}
|
||||
if (isDelta) {
|
||||
// 角型接线方式,则获取线电压
|
||||
uDev = getSingleMonitorSqlData(devData, DetectionCodeEnum.LINE_VRMS.getCode());
|
||||
uStd = getSingleMonitorSqlData(stdData, DetectionCodeEnum.LINE_VRMS.getCode());
|
||||
uDev = getSingleMonitorSqlData(devData, DetectionCodeEnum.PVRMS.getCode());
|
||||
uStd = getSingleMonitorSqlData(stdData, DetectionCodeEnum.PVRMS.getCode());
|
||||
}
|
||||
|
||||
if (CollUtil.isNotEmpty(uDev) && CollUtil.isNotEmpty(uStd)) {
|
||||
@@ -1289,44 +1500,66 @@ public class SocketContrastResponseService {
|
||||
WebServiceManager.sendMsg(userId, JSON.toJSONString(webSend));
|
||||
}
|
||||
|
||||
// 获取被检设备的额定电流
|
||||
Double ratedCurrent = Double.valueOf(monitorListDTO.getCtStr().split("\\:")[1]);
|
||||
// 动态调控是否支持相角差校验
|
||||
if (isPhaseAngle) {
|
||||
// 获取被检设备的额定电流
|
||||
Double ratedCurrent = Double.valueOf(monitorListDTO.getCtStr().split("\\:")[1]);
|
||||
|
||||
// 是否存在电流
|
||||
boolean notHasCurrent = iDev.stream().allMatch(
|
||||
p -> p.getList().getA() != null && DetectionUtil.isZero(p.getList().getA(), ratedCurrent)
|
||||
&& p.getList().getB() != null && DetectionUtil.isZero(p.getList().getB(), ratedCurrent)
|
||||
&& p.getList().getC() != null && DetectionUtil.isZero(p.getList().getC(), ratedCurrent));
|
||||
if (!notHasCurrent) {
|
||||
detail = "数据为空!";
|
||||
// 相角差校验
|
||||
List<DevData.SqlDataDTO> vaDev = getSingleMonitorSqlData(devData, DetectionCodeEnum.VA.getCode());
|
||||
List<DevData.SqlDataDTO> vaStd = getSingleMonitorSqlData(stdData, DetectionCodeEnum.VA.getCode());
|
||||
List<DevData.SqlDataDTO> iaDev = getSingleMonitorSqlData(devData, DetectionCodeEnum.IA.getCode());
|
||||
List<DevData.SqlDataDTO> iaStd = getSingleMonitorSqlData(stdData, DetectionCodeEnum.IA.getCode());
|
||||
if (CollUtil.isNotEmpty(vaDev) && CollUtil.isNotEmpty(vaStd) && CollUtil.isNotEmpty(iaDev) && CollUtil.isNotEmpty(iaStd)) {
|
||||
DevData.SqlDataDTO.ListDTO vaDevList = vaDev.get(0).getList();
|
||||
DevData.SqlDataDTO.ListDTO vaStdList = vaDev.get(0).getList();
|
||||
DevData.SqlDataDTO.ListDTO iaDevList = vaDev.get(0).getList();
|
||||
DevData.SqlDataDTO.ListDTO iaStdList = vaDev.get(0).getList();
|
||||
// 是否存在电流
|
||||
boolean notHasCurrent = iDev.stream().allMatch(
|
||||
p -> p.getList().getA() != null && DetectionUtil.isZero(p.getList().getA(), ratedCurrent)
|
||||
&& p.getList().getB() != null && DetectionUtil.isZero(p.getList().getB(), ratedCurrent)
|
||||
&& p.getList().getC() != null && DetectionUtil.isZero(p.getList().getC(), ratedCurrent));
|
||||
if (!notHasCurrent) {
|
||||
detail = "数据为空!";
|
||||
// 相角差校验
|
||||
List<DevData.SqlDataDTO> vaDev = null;
|
||||
List<DevData.SqlDataDTO> vaStd = null;
|
||||
List<DevData.SqlDataDTO> iaDev = null;
|
||||
List<DevData.SqlDataDTO> iaStd = null;
|
||||
if (isStar) {
|
||||
vaDev = getSingleMonitorSqlData(devData, DetectionCodeEnum.VA.getCode());
|
||||
vaStd = getSingleMonitorSqlData(stdData, DetectionCodeEnum.VA.getCode());
|
||||
iaDev = getSingleMonitorSqlData(devData, DetectionCodeEnum.IA.getCode());
|
||||
iaStd = getSingleMonitorSqlData(stdData, DetectionCodeEnum.IA.getCode());
|
||||
if (CollUtil.isEmpty(vaDev) && CollUtil.isEmpty(vaStd) && CollUtil.isEmpty(iaDev) && CollUtil.isEmpty(iaStd)) {
|
||||
vaDev = getSingleMonitorSqlData(devData, DetectionCodeEnum.U1A.getCode());
|
||||
vaStd = getSingleMonitorSqlData(stdData, DetectionCodeEnum.U1A.getCode());
|
||||
iaDev = getSingleMonitorSqlData(devData, DetectionCodeEnum.I1A.getCode());
|
||||
iaStd = getSingleMonitorSqlData(stdData, DetectionCodeEnum.I1A.getCode());
|
||||
}
|
||||
}
|
||||
if (isDelta) {
|
||||
vaDev = getSingleMonitorSqlData(devData, DetectionCodeEnum.PU1A.getCode());
|
||||
vaStd = getSingleMonitorSqlData(stdData, DetectionCodeEnum.PU1A.getCode());
|
||||
iaDev = getSingleMonitorSqlData(devData, DetectionCodeEnum.I1A.getCode());
|
||||
iaStd = getSingleMonitorSqlData(stdData, DetectionCodeEnum.I1A.getCode());
|
||||
}
|
||||
|
||||
detail = "被检设备:a=" + (vaDevList.getA() - iaDevList.getA()) + "°,b=" + (vaDevList.getB() - iaDevList.getB()) + "°,c=" + (vaDevList.getC() - iaDevList.getC()) + ";标准设备:a=" + (vaStdList.getA() - iaStdList.getA()) + "°,b=" + (vaStdList.getB() - iaStdList.getB()) + "°,c=" + (vaStdList.getC() - iaStdList.getC());
|
||||
if (CollUtil.isNotEmpty(vaDev) && CollUtil.isNotEmpty(vaStd) && CollUtil.isNotEmpty(iaDev) && CollUtil.isNotEmpty(iaStd)) {
|
||||
DevData.SqlDataDTO.ListDTO vaDevList = vaDev.get(0).getList();
|
||||
DevData.SqlDataDTO.ListDTO vaStdList = vaDev.get(0).getList();
|
||||
DevData.SqlDataDTO.ListDTO iaDevList = vaDev.get(0).getList();
|
||||
DevData.SqlDataDTO.ListDTO iaStdList = vaDev.get(0).getList();
|
||||
|
||||
if (!phaseCheck(vaDevList, iaDevList, vaStdList, iaStdList)) {
|
||||
// 单个检测点相角校验失败,推送失败消息
|
||||
detail = "被检设备:a=" + (vaDevList.getA() - iaDevList.getA()) + "°,b=" + (vaDevList.getB() - iaDevList.getB()) + "°,c=" + (vaDevList.getC() - iaDevList.getC()) + ";标准设备:a=" + (vaStdList.getA() - iaStdList.getA()) + "°,b=" + (vaStdList.getB() - iaStdList.getB()) + "°,c=" + (vaStdList.getC() - iaStdList.getC());
|
||||
|
||||
if (!phaseCheck(vaDevList, iaDevList, vaStdList, iaStdList)) {
|
||||
// 单个检测点相角校验失败,推送失败消息
|
||||
flag = false;
|
||||
webSend.setCode(SourceResponseCodeEnum.FAIL.getCode());
|
||||
webSend.setData(pairStr + ":相角差校验失败!" + detail);
|
||||
} else {
|
||||
webSend.setCode(SourceResponseCodeEnum.SUCCESS.getCode());
|
||||
webSend.setData(pairStr + ":相角差校验成功!" + detail);
|
||||
}
|
||||
} else {
|
||||
flag = false;
|
||||
webSend.setCode(SourceResponseCodeEnum.FAIL.getCode());
|
||||
webSend.setData(pairStr + ":相角差校验失败!" + detail);
|
||||
} else {
|
||||
webSend.setCode(SourceResponseCodeEnum.SUCCESS.getCode());
|
||||
webSend.setData(pairStr + ":相角差校验成功!" + detail);
|
||||
webSend.setData(pairStr + ":相角差校验失败!相角差" + detail);
|
||||
}
|
||||
} else {
|
||||
flag = false;
|
||||
webSend.setCode(SourceResponseCodeEnum.FAIL.getCode());
|
||||
webSend.setData(pairStr + ":相角差校验失败!相角差" + detail);
|
||||
WebServiceManager.sendMsg(userId, JSON.toJSONString(webSend));
|
||||
}
|
||||
WebServiceManager.sendMsg(userId, JSON.toJSONString(webSend));
|
||||
}
|
||||
return flag;
|
||||
}
|
||||
@@ -1418,18 +1651,22 @@ public class SocketContrastResponseService {
|
||||
/**
|
||||
* 比对式原始数据入库
|
||||
*
|
||||
* @param devDataList 原始数据
|
||||
* @param num 第几次检测
|
||||
* @param code 表后缀code
|
||||
* @param checkItemMap 检测项Map key为检测项code,value为检测项的id
|
||||
* @param isStdDev 是否为标准设备
|
||||
* @param devDataList 原始数据
|
||||
* @param numMap 第几次监测 key为被检设备监测点id,value为第几次监测
|
||||
* @param code 表后缀code
|
||||
*/
|
||||
private void baseDataInsert(List<DevData> devDataList, Integer num, String code, Map<String, String> checkItemMap) {
|
||||
private void baseDataInsert(boolean isStdDev, List<DevData> devDataList, Map<String, Integer> numMap, String code) {
|
||||
System.out.println("原始数据插入数据库开始执行=========================================");
|
||||
List<ContrastNonHarmonicResult> contrastNonHarmonicResults = new ArrayList<>();
|
||||
List<ContrastHarmonicResult> contrastHarmonicResults = new ArrayList<>();
|
||||
Map<String, String> harmonicRelationMap = new HashMap<>();
|
||||
harmonicRelationMap.put(DetectionCodeEnum.V2_50.getCode(), DetectionCodeEnum.U1.getCode());
|
||||
harmonicRelationMap.put(DetectionCodeEnum.PV2_50.getCode(), DetectionCodeEnum.PU1.getCode());
|
||||
harmonicRelationMap.put(DetectionCodeEnum.SV_1_49.getCode(), DetectionCodeEnum.U1.getCode());
|
||||
harmonicRelationMap.put(DetectionCodeEnum.PSV_1_49.getCode(), DetectionCodeEnum.PU1.getCode());
|
||||
harmonicRelationMap.put(DetectionCodeEnum.I2_50.getCode(), DetectionCodeEnum.I1.getCode());
|
||||
harmonicRelationMap.put(DetectionCodeEnum.SI_1_49.getCode(), DetectionCodeEnum.I1.getCode());
|
||||
for (DevData data : devDataList) {
|
||||
LocalDateTime localDateTime = DetectionUtil.timeFormat(data.getTime(), DetectionUtil.FORMATTER);
|
||||
if (Objects.nonNull(localDateTime)) {
|
||||
@@ -1438,15 +1675,20 @@ public class SocketContrastResponseService {
|
||||
String temId = FormalTestManager.devIdMapComm.get(splitArr[0]) + CnSocketUtil.SPLIT_TAG + splitArr[1];
|
||||
|
||||
for (DevData.SqlDataDTO sqlDataDTO : data.getSqlData()) {
|
||||
if (!DetectionCodeEnum.U1.getCode().equals(sqlDataDTO.getDesc()) && !DetectionCodeEnum.I1.getCode().equals(sqlDataDTO.getDesc())) {
|
||||
if (!DetectionCodeEnum.U1.getCode().equals(sqlDataDTO.getDesc()) && !DetectionCodeEnum.PU1.getCode().equals(sqlDataDTO.getDesc()) && !DetectionCodeEnum.I1.getCode().equals(sqlDataDTO.getDesc())) {
|
||||
DevData.SqlDataDTO.ListDTO listDTO = sqlDataDTO.getList();
|
||||
ContrastNonHarmonicResult adNonHarmonicResult = new ContrastNonHarmonicResult();
|
||||
adNonHarmonicResult.setTimeId(localDateTime);
|
||||
adNonHarmonicResult.setMonitorId(temId);
|
||||
adNonHarmonicResult.setNum(num);
|
||||
|
||||
adNonHarmonicResult.setAdType(checkItemMap.get(DetectionCodeEnum.REAL_PREFIX.getCode() + sqlDataDTO.getDesc()));
|
||||
adNonHarmonicResult.setNum(numMap.get(temId));
|
||||
adNonHarmonicResult.setAdType(FormalTestManager.testItemMap.get(DetectionCodeEnum.REAL_PREFIX.getCode() + sqlDataDTO.getDesc()));
|
||||
adNonHarmonicResult.setDataType(DataSourceEnum.REAL_DATA.getValue());
|
||||
if (isStdDev) {
|
||||
adNonHarmonicResult.setDevMonitorId(FormalTestManager.pairsIdMap.inverse().get(temId));
|
||||
adNonHarmonicResult.setStdDevMonitorId(temId);
|
||||
} else {
|
||||
adNonHarmonicResult.setDevMonitorId(temId);
|
||||
adNonHarmonicResult.setStdDevMonitorId(FormalTestManager.pairsIdMap.get(temId));
|
||||
}
|
||||
|
||||
Double a = listDTO.getA();
|
||||
Double b = listDTO.getB();
|
||||
@@ -1472,11 +1714,16 @@ public class SocketContrastResponseService {
|
||||
String dui = harmonicRelationMap.get(sqlDataDTO.getDesc());
|
||||
ContrastHarmonicResult adHarmonicResult = new ContrastHarmonicResult();
|
||||
adHarmonicResult.setTimeId(localDateTime);
|
||||
|
||||
adHarmonicResult.setMonitorId(temId);
|
||||
adHarmonicResult.setNum(num);
|
||||
adHarmonicResult.setAdType(checkItemMap.get(DetectionCodeEnum.REAL_PREFIX.getCode() + sqlDataDTO.getDesc()));
|
||||
adHarmonicResult.setNum(numMap.get(temId));
|
||||
adHarmonicResult.setAdType(FormalTestManager.testItemMap.get(DetectionCodeEnum.REAL_PREFIX.getCode() + sqlDataDTO.getDesc()));
|
||||
adHarmonicResult.setDataType(DataSourceEnum.REAL_DATA.getValue());
|
||||
if (isStdDev) {
|
||||
adHarmonicResult.setDevMonitorId(FormalTestManager.pairsIdMap.inverse().get(temId));
|
||||
adHarmonicResult.setStdDevMonitorId(temId);
|
||||
} else {
|
||||
adHarmonicResult.setDevMonitorId(temId);
|
||||
adHarmonicResult.setStdDevMonitorId(FormalTestManager.pairsIdMap.get(temId));
|
||||
}
|
||||
|
||||
if (ObjectUtil.isNotNull(dui)) {
|
||||
DevData.SqlDataDTO.ListDTO vvv = data.getSqlData().stream().filter(it -> it.getDesc().equals(dui)).collect(Collectors.toList()).get(0).getList();
|
||||
@@ -1485,13 +1732,16 @@ public class SocketContrastResponseService {
|
||||
Double bV = vvv.getB();
|
||||
Double cV = vvv.getC();
|
||||
if (Objects.nonNull(aV)) {
|
||||
adHarmonicResult.setAValue1(String.format("%.7f", aV));
|
||||
// adHarmonicResult.setAValue1(String.format("%.7f", aV));
|
||||
adHarmonicResult.setAValue0(String.format("%.7f", aV));
|
||||
}
|
||||
if (Objects.nonNull(bV)) {
|
||||
adHarmonicResult.setBValue1(String.format("%.7f", bV));
|
||||
// adHarmonicResult.setBValue1(String.format("%.7f", bV));
|
||||
adHarmonicResult.setBValue0(String.format("%.7f", bV));
|
||||
}
|
||||
if (Objects.nonNull(cV)) {
|
||||
adHarmonicResult.setCValue1(String.format("%.7f", cV));
|
||||
// adHarmonicResult.setCValue1(String.format("%.7f", cV));
|
||||
adHarmonicResult.setCValue0(String.format("%.7f", bV));
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1503,7 +1753,7 @@ public class SocketContrastResponseService {
|
||||
|
||||
Class<ContrastHarmonicResult> example = (Class<ContrastHarmonicResult>) adHarmonicResult.getClass();
|
||||
|
||||
if (DetectionCodeEnum.SV_1_49.getCode().equals(sqlDataDTO.getDesc()) || DetectionCodeEnum.SI_1_49.getCode().equals(sqlDataDTO.getDesc())) {
|
||||
if (DetectionCodeEnum.SV_1_49.getCode().equals(sqlDataDTO.getDesc()) || DetectionCodeEnum.PSV_1_49.getCode().equals(sqlDataDTO.getDesc()) || DetectionCodeEnum.SI_1_49.getCode().equals(sqlDataDTO.getDesc())) {
|
||||
for (int i = 1; i < a.size() + 1; i++) {
|
||||
try {
|
||||
Field aField = example.getDeclaredField("aValue" + i);
|
||||
@@ -1543,31 +1793,33 @@ public class SocketContrastResponseService {
|
||||
}
|
||||
}
|
||||
|
||||
if (CollUtil.isNotEmpty(contrastNonHarmonicResults)) {
|
||||
Map<String, List<ContrastNonHarmonicResult>> map = contrastNonHarmonicResults.stream().collect(Collectors.groupingBy(x -> x.getMonitorId() + x.getTimeId() + x.getNum() + x.getAdType()));
|
||||
List<ContrastNonHarmonicResult> info = new ArrayList<>();
|
||||
map.forEach((key, value) -> {
|
||||
if (value.size() > 1) {
|
||||
System.err.println("重复时间戳->" + key + value);
|
||||
} else {
|
||||
info.addAll(value);
|
||||
}
|
||||
});
|
||||
|
||||
detectionDataDealService.acceptAdNon(info, code);
|
||||
}
|
||||
if (CollUtil.isNotEmpty(contrastHarmonicResults)) {
|
||||
Map<String, List<ContrastHarmonicResult>> map = contrastHarmonicResults.stream().collect(Collectors.groupingBy(x -> x.getMonitorId() + x.getTimeId() + x.getNum() + x.getAdType()));
|
||||
List<ContrastHarmonicResult> info = new ArrayList<>();
|
||||
map.forEach((key, value) -> {
|
||||
if (value.size() > 1) {
|
||||
System.err.println("重复时间戳->" + key + value);
|
||||
} else {
|
||||
info.addAll(value);
|
||||
}
|
||||
});
|
||||
detectionDataDealService.acceptAd(info, code);
|
||||
}
|
||||
// if (CollUtil.isNotEmpty(contrastNonHarmonicResults)) {
|
||||
// Map<String, List<ContrastNonHarmonicResult>> map = contrastNonHarmonicResults.stream().collect(Collectors.groupingBy(x -> x.getDevMonitorId() + x.getTimeId() + x.getNum() + x.getAdType()));
|
||||
// List<ContrastNonHarmonicResult> info = new ArrayList<>();
|
||||
// map.forEach((key, value) -> {
|
||||
// if (value.size() > 1) {
|
||||
// System.err.println("重复时间戳->" + key + value);
|
||||
// } else {
|
||||
// info.addAll(value);
|
||||
// }
|
||||
// });
|
||||
//
|
||||
// detectionDataDealService.acceptNonHarmonic(info, code);
|
||||
// }
|
||||
// if (CollUtil.isNotEmpty(contrastHarmonicResults)) {
|
||||
// Map<String, List<ContrastHarmonicResult>> map = contrastHarmonicResults.stream().collect(Collectors.groupingBy(x -> x.getDevMonitorId() + x.getTimeId() + x.getNum() + x.getAdType()));
|
||||
// List<ContrastHarmonicResult> info = new ArrayList<>();
|
||||
// map.forEach((key, value) -> {
|
||||
// if (value.size() > 1) {
|
||||
// System.err.println("重复时间戳->" + key + value);
|
||||
// } else {
|
||||
// info.addAll(value);
|
||||
// }
|
||||
// });
|
||||
// detectionDataDealService.acceptHarmonic(info, code);
|
||||
// }
|
||||
detectionDataDealService.acceptNonHarmonic(contrastNonHarmonicResults, code);
|
||||
detectionDataDealService.acceptHarmonic(contrastHarmonicResults, code);
|
||||
System.out.println("原始数据插入数据库执行成功=========================================");
|
||||
}
|
||||
|
||||
|
||||
@@ -1299,7 +1299,7 @@ public class SocketDevResponseService {
|
||||
checkDataParam.setIsValueTypeName(false);
|
||||
List<String> valueType = iPqScriptCheckDataService.getValueType(checkDataParam);
|
||||
|
||||
iPqDevService.updateResult(param.getDevIds(), valueType, param.getCode(), param.getUserId(), param.getTemperature(), param.getHumidity());
|
||||
iPqDevService.updateResult(false,param.getDevIds(), valueType, param.getCode(), param.getUserId(), param.getTemperature(), param.getHumidity());
|
||||
CnSocketUtil.quitSend(param);
|
||||
}
|
||||
successComm.clear();
|
||||
@@ -1792,7 +1792,7 @@ public class SocketDevResponseService {
|
||||
DevData.SqlDataDTO.ListDTO listDTO = sqlDataDTO.getList();
|
||||
SimAndDigNonHarmonicResult adNonHarmonicResult = new SimAndDigNonHarmonicResult();
|
||||
adNonHarmonicResult.setTimeId(localDateTime);
|
||||
adNonHarmonicResult.setMonitorId(temId);
|
||||
adNonHarmonicResult.setDevMonitorId(temId);
|
||||
adNonHarmonicResult.setScriptId(param.getScriptId());
|
||||
adNonHarmonicResult.setSort(sourceIssue.getIndex());
|
||||
|
||||
@@ -1825,7 +1825,7 @@ public class SocketDevResponseService {
|
||||
SimAndDigHarmonicResult adHarmonicResult = new SimAndDigHarmonicResult();
|
||||
adHarmonicResult.setTimeId(localDateTime);
|
||||
|
||||
adHarmonicResult.setMonitorId(temId);
|
||||
adHarmonicResult.setDevMonitorId(temId);
|
||||
adHarmonicResult.setScriptId(param.getScriptId());
|
||||
adHarmonicResult.setSort(sourceIssue.getIndex());
|
||||
adHarmonicResult.setAdType(checkDataMap.get(sqlDataDTO.getDesc()));
|
||||
@@ -1898,7 +1898,7 @@ public class SocketDevResponseService {
|
||||
}
|
||||
|
||||
if (CollUtil.isNotEmpty(simAndDigNonHarmonicResultList)) {
|
||||
Map<String, List<SimAndDigNonHarmonicResult>> map = simAndDigNonHarmonicResultList.stream().collect(Collectors.groupingBy(x -> x.getMonitorId() + x.getTimeId() + x.getScriptId() + x.getSort() + x.getAdType() + x.getDataType()));
|
||||
Map<String, List<SimAndDigNonHarmonicResult>> map = simAndDigNonHarmonicResultList.stream().collect(Collectors.groupingBy(x -> x.getDevMonitorId() + x.getTimeId() + x.getScriptId() + x.getSort() + x.getAdType() + x.getDataType()));
|
||||
List<SimAndDigNonHarmonicResult> info = new ArrayList<>();
|
||||
map.forEach((key, value) -> {
|
||||
if (value.size() > 1) {
|
||||
@@ -1908,10 +1908,10 @@ public class SocketDevResponseService {
|
||||
}
|
||||
});
|
||||
|
||||
detectionDataDealService.acceptAdNon(info, param.getCode());
|
||||
detectionDataDealService.acceptNonHarmonic(info, param.getCode());
|
||||
}
|
||||
if (CollUtil.isNotEmpty(adHarmonicResultList)) {
|
||||
Map<String, List<SimAndDigHarmonicResult>> map = adHarmonicResultList.stream().collect(Collectors.groupingBy(x -> x.getMonitorId() + x.getTimeId() + x.getScriptId() + x.getSort() + x.getAdType() + x.getDataType()));
|
||||
Map<String, List<SimAndDigHarmonicResult>> map = adHarmonicResultList.stream().collect(Collectors.groupingBy(x -> x.getDevMonitorId() + x.getTimeId() + x.getScriptId() + x.getSort() + x.getAdType() + x.getDataType()));
|
||||
List<SimAndDigHarmonicResult> info = new ArrayList<>();
|
||||
map.forEach((key, value) -> {
|
||||
if (value.size() > 1) {
|
||||
@@ -1920,7 +1920,7 @@ public class SocketDevResponseService {
|
||||
info.addAll(value);
|
||||
}
|
||||
});
|
||||
detectionDataDealService.acceptAd(info, param.getCode());
|
||||
detectionDataDealService.acceptHarmonic(info, param.getCode());
|
||||
}
|
||||
System.out.println("原始数据插入数据库执行成功=========================================");
|
||||
// };
|
||||
|
||||
@@ -13,19 +13,25 @@ public enum DetectionCodeEnum {
|
||||
|
||||
FREQ("FREQ", "频率"),
|
||||
VRMS("VRMS", "相电压有效值"),
|
||||
LINE_VRMS("LINE_VRMS", "线电压有效值"),
|
||||
PVRMS("PVRMS", "线电压有效值"),
|
||||
DELTA_V("DELTA_V", "电压偏差"),
|
||||
VA("VA", "电压相角"),
|
||||
U1A("U1A", "相电压基波有效值角度值"),
|
||||
PU1A("PU1A", "线电压基波有效值角度值"),
|
||||
U1("U1", "基波电压"),
|
||||
PU1("PU1", "线电压基波电压"),
|
||||
V2_50("V2-50", "谐波电压"),
|
||||
PV2_50("PV2-50", "线电压谐波电压"),
|
||||
I2_50("I2-50", "谐波电流"),
|
||||
P2_50("P2-50", "谐波有功功率"),
|
||||
SV_1_49("SV_1-49", "间谐波电压"),
|
||||
PSV_1_49("PSV_1-49", "线电压间谐波电压"),
|
||||
SI_1_49("SI_1-49", "间谐波电流"),
|
||||
MAG("MAG", "电压幅值"),
|
||||
DUR("DUR", "持续时间"),
|
||||
IRMS("IRMS", "电流有效值"),
|
||||
IA("IA", "电流相角"),
|
||||
I1A("I1A", "电流基波角度值"),
|
||||
V_UNBAN("V_UNBAN", "三相电压负序不平衡度"),
|
||||
I_UNBAN("I_UNBAN", "三相电流负序不平衡度"),
|
||||
PST("PST", "短时间闪变"),
|
||||
|
||||
@@ -18,7 +18,8 @@ public enum DetectionResponseEnum {
|
||||
SOURCE_NOT_CONNECT("A020006", "源未连接"),
|
||||
|
||||
|
||||
SCRIPT_CHECK_DATA_NOT_EXIST("A020040","测试脚本项暂无配置" );
|
||||
SCRIPT_CHECK_DATA_NOT_EXIST("A020040","测试脚本项暂无配置" ),
|
||||
EXCEED_MAX_TIME("A020041","检测次数超出最大限制!" );
|
||||
|
||||
private final String code;
|
||||
private final String message;
|
||||
|
||||
@@ -43,7 +43,9 @@ public class ContrastDetectionParam {
|
||||
private List<Boolean> testItemList;
|
||||
|
||||
/**
|
||||
* 当前检测次数
|
||||
* 第几次监测 key为设备监测点id,value为第几次监测
|
||||
*/
|
||||
private Integer num;
|
||||
private Map<String,Integer> numMap;
|
||||
|
||||
private String userId;
|
||||
}
|
||||
|
||||
@@ -5,6 +5,7 @@ import lombok.Data;
|
||||
import javax.validation.constraints.NotBlank;
|
||||
import javax.validation.constraints.NotEmpty;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* @author wr
|
||||
@@ -75,7 +76,7 @@ public class PreDetectionParam {
|
||||
private List<Boolean> testItemList;
|
||||
|
||||
/**
|
||||
* 第几次监测
|
||||
* 第几次监测 key为设备监测点id,value为第几次监测
|
||||
*/
|
||||
private Integer num;
|
||||
private Map<String, Integer> numMap;
|
||||
}
|
||||
|
||||
@@ -10,41 +10,29 @@ import lombok.Data;
|
||||
@Data
|
||||
public class AlignDataExcel {
|
||||
|
||||
private ExcelConfig devDataConfig = new ExcelConfig("");
|
||||
private ExcelConfig standardDevDataConfig = new ExcelConfig("");
|
||||
|
||||
@Excel(name = "时间", width = 20, groupName = "被检设备")
|
||||
@Excel(name = "时间", orderNum = "1", width = 40, groupName = "被检设备")
|
||||
private String timeDev;
|
||||
|
||||
@Excel(name = "Ua", groupName = "被检设备")
|
||||
@Excel(name = "Ua", orderNum = "2", groupName = "被检设备")
|
||||
private Double uaDev;
|
||||
|
||||
@Excel(name = "Ub", groupName = "被检设备")
|
||||
@Excel(name = "Ub", orderNum = "3", groupName = "被检设备")
|
||||
private Double ubDev;
|
||||
|
||||
@Excel(name = "Uc", groupName = "被检设备")
|
||||
@Excel(name = "Uc", orderNum = "4", groupName = "被检设备")
|
||||
private Double ucDev;
|
||||
|
||||
|
||||
@Excel(name = "时间", width = 20, groupName = "标准设备")
|
||||
@Excel(name = "时间", orderNum = "5", width = 40, groupName = "标准设备")
|
||||
private String timeStdDev;
|
||||
|
||||
@Excel(name = "Ua", groupName = "标准设备")
|
||||
@Excel(name = "Ua", orderNum = "6", groupName = "标准设备")
|
||||
private Double uaStdDev;
|
||||
|
||||
@Excel(name = "Ub", groupName = "标准设备")
|
||||
@Excel(name = "Ub", orderNum = "7", groupName = "标准设备")
|
||||
private Double ubStdDev;
|
||||
|
||||
@Excel(name = "Uc", groupName = "标准设备")
|
||||
@Excel(name = "Uc", orderNum = "8", groupName = "标准设备")
|
||||
private Double ucStdDev;
|
||||
|
||||
|
||||
@Data
|
||||
public static class ExcelConfig {
|
||||
private String name;
|
||||
|
||||
public ExcelConfig(String name) {
|
||||
this.name = name;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -60,10 +60,7 @@ public interface PreDetectionService {
|
||||
void startContrastTest(ContrastDetectionParam param);
|
||||
|
||||
/**
|
||||
* 获取比对式检测次数信息
|
||||
*
|
||||
* @param planId
|
||||
* @return
|
||||
* 导出实时数据对齐过程中的数据
|
||||
*/
|
||||
Map<Integer, Integer> getContrastTestNumInfo(String planId);
|
||||
void exportAlignData();
|
||||
}
|
||||
|
||||
@@ -15,7 +15,7 @@ import com.njcn.gather.detection.pojo.po.DevData;
|
||||
import com.njcn.gather.detection.pojo.vo.DetectionData;
|
||||
import com.njcn.gather.detection.pojo.vo.DevLineTestResult;
|
||||
import com.njcn.gather.detection.util.DetectionUtil;
|
||||
import com.njcn.gather.device.pojo.vo.PreDetection;
|
||||
import com.njcn.gather.detection.util.socket.CnSocketUtil;
|
||||
import com.njcn.gather.err.pojo.param.PqErrSysParam;
|
||||
import com.njcn.gather.err.pojo.po.PqErrSysDtls;
|
||||
import com.njcn.gather.err.pojo.vo.ErrDtlsCheckDataVO;
|
||||
@@ -236,7 +236,7 @@ public class DetectionServiceImpl {
|
||||
SimAndDigNonHarmonicResult result = new SimAndDigNonHarmonicResult();
|
||||
String[] split = dev.get(0).getId().split("_");
|
||||
String devID = devIdMapComm.get(split[0]);
|
||||
result.setMonitorId(devID + "_" + split[1]);
|
||||
result.setDevMonitorId(devID + "_" + split[1]);
|
||||
result.setScriptId(sourceIssue.getScriptId());
|
||||
result.setSort(sourceIssue.getIndex());
|
||||
result.setDataType(sourceIssue.getDataType());
|
||||
@@ -316,7 +316,7 @@ public class DetectionServiceImpl {
|
||||
SimAndDigHarmonicResult harmonicResult = new SimAndDigHarmonicResult();
|
||||
String[] split = dev.get(0).getId().split("_");
|
||||
String devID = devIdMapComm.get(split[0]);
|
||||
harmonicResult.setMonitorId(devID + "_" + split[1]);
|
||||
harmonicResult.setDevMonitorId(devID + "_" + split[1]);
|
||||
harmonicResult.setScriptId(sourceIssue.getScriptId());
|
||||
harmonicResult.setSort(sourceIssue.getIndex());
|
||||
Integer isQualified;
|
||||
@@ -396,7 +396,7 @@ public class DetectionServiceImpl {
|
||||
SimAndDigNonHarmonicResult result = new SimAndDigNonHarmonicResult();
|
||||
String[] split = dev.get(0).getId().split("_");
|
||||
String devID = devIdMapComm.get(split[0]);
|
||||
result.setMonitorId(devID + "_" + split[1]);
|
||||
result.setDevMonitorId(devID + "_" + split[1]);
|
||||
result.setScriptId(sourceIssue.getScriptId());
|
||||
result.setSort(sourceIssue.getIndex());
|
||||
result.setDataType(sourceIssue.getDataType());
|
||||
@@ -509,7 +509,7 @@ public class DetectionServiceImpl {
|
||||
SimAndDigHarmonicResult harmonicResult = new SimAndDigHarmonicResult();
|
||||
String[] split = dev.get(0).getId().split("_");
|
||||
String devID = devIdMapComm.get(split[0]);
|
||||
harmonicResult.setMonitorId(devID + "_" + split[1]);
|
||||
harmonicResult.setDevMonitorId(devID + "_" + split[1]);
|
||||
harmonicResult.setScriptId(sourceIssue.getScriptId());
|
||||
harmonicResult.setSort(sourceIssue.getIndex());
|
||||
List<PqErrSysDtls> pqErrSysDtls = new ArrayList<>();
|
||||
@@ -573,7 +573,7 @@ public class DetectionServiceImpl {
|
||||
SimAndDigNonHarmonicResult result = new SimAndDigNonHarmonicResult();
|
||||
String[] split = dev.get(0).getId().split("_");
|
||||
String devID = devIdMapComm.get(split[0]);
|
||||
result.setMonitorId(devID + "_" + split[1]);
|
||||
result.setDevMonitorId(devID + "_" + split[1]);
|
||||
result.setScriptId(sourceIssue.getScriptId());
|
||||
result.setSort(sourceIssue.getIndex());
|
||||
List<PqErrSysDtls> pqErrSysDtls = new ArrayList<>();
|
||||
@@ -755,7 +755,7 @@ public class DetectionServiceImpl {
|
||||
SimAndDigNonHarmonicResult result = new SimAndDigNonHarmonicResult();
|
||||
String[] split = devId.split("_");
|
||||
String devID = devIdMapComm.get(split[0]);
|
||||
result.setMonitorId(devID + "_" + split[1]);
|
||||
result.setDevMonitorId(devID + "_" + split[1]);
|
||||
result.setScriptId(sourceIssue.getScriptId());
|
||||
result.setSort(sourceIssue.getIndex());
|
||||
result.setDataType(sourceIssue.getDataType());
|
||||
@@ -1384,6 +1384,7 @@ public class DetectionServiceImpl {
|
||||
public void harmPut(String type, Map<String, Map<Double, List<Double>>> map, List<Double> harmNum, DevData.SqlDataHarmDTO harm, String fund, Integer num) {
|
||||
if (map.containsKey(type)) {
|
||||
Map<Double, List<Double>> integerListMap = map.get(type);
|
||||
integerListMap.get(0.0).add(multiply(fund, fund));
|
||||
for (Double i : harmNum) {
|
||||
if (integerListMap.containsKey(i)) {
|
||||
if (i.equals(1.0) && num != 1) {
|
||||
@@ -1411,8 +1412,11 @@ public class DetectionServiceImpl {
|
||||
}
|
||||
} else {
|
||||
Map<Double, List<Double>> integerListMap = new LinkedHashMap<>(50);
|
||||
List<Double> integerList = new ArrayList<>();
|
||||
integerList.add(multiply(fund, fund));
|
||||
integerListMap.put(0.0, integerList);
|
||||
for (Double i : harmNum) {
|
||||
List<Double> integerList = new ArrayList<>();
|
||||
integerList = new ArrayList<>();
|
||||
if (i.equals(1.0) && num != 1) {
|
||||
integerList.add(multiply(fund, fund));
|
||||
integerListMap.put(1.0, integerList);
|
||||
@@ -1435,7 +1439,6 @@ public class DetectionServiceImpl {
|
||||
}
|
||||
integerListMap.put(i, integerList);
|
||||
}
|
||||
|
||||
}
|
||||
map.put(type, integerListMap);
|
||||
}
|
||||
@@ -1495,17 +1498,16 @@ public class DetectionServiceImpl {
|
||||
*
|
||||
* @param devDataList 被检设备数据
|
||||
* @param standardDevDataList 与之对齐的标准设备数据
|
||||
* @param pars 配对关系 key为被检设备ip_通道号,value为标准设备ip_通道号
|
||||
* @param parsIp 配对关系 key为被检设备ip_通道号,value为标准设备ip_通道号
|
||||
* @param devIdMapComm 设备id映射关系 key为被检设备ip,value为被检设备id
|
||||
* @param monitorMap 监测器映射关系 key为被检设备ip_通道号,value为监测器信息
|
||||
* @param testItemCodeList 检测项code列表
|
||||
* @param errorSysId 误差体系id
|
||||
* @param dataRule 数据处理原则
|
||||
* @param num 第几次检测
|
||||
* @param numMap 第几次检测 key为设备id_通道号,value为第几次检测
|
||||
* @param code 结果表code
|
||||
* @return key为被检设备ip_通道号、value为是否合格(1合格 2不合格 4无法处理)
|
||||
*/
|
||||
public List<DevLineTestResult> processing(List<DevData> devDataList, List<DevData> standardDevDataList, Map<String, String> pars, Map<String, String> devIdMapComm, Map<String, PreDetection.MonitorListDTO> monitorMap, List<String> testItemCodeList, String errorSysId, DictDataEnum dataRule, Integer num, String code) {
|
||||
public List<DevLineTestResult> processing(List<DevData> devDataList, List<DevData> standardDevDataList, Map<String, String> parsIp, Map<String, String> devIdMapComm, List<String> testItemCodeList, String errorSysId, DictDataEnum dataRule, Map<String, Integer> numMap, String code) {
|
||||
Map<String, List<DevData>> devDataMap = devDataList.stream().collect(Collectors.groupingBy(obj -> obj.getId().split("_")[0]));
|
||||
Map<String, List<DevData>> standardDevDataMap = standardDevDataList.stream().collect(Collectors.groupingBy(DevData::getId));
|
||||
|
||||
@@ -1516,12 +1518,14 @@ public class DetectionServiceImpl {
|
||||
List<DevLineTestResult> resultList = new ArrayList<>();
|
||||
Map<String, List<DevData>> devMonitorMap = devValueList.stream().collect(Collectors.groupingBy(DevData::getId, TreeMap::new, Collectors.toList()));
|
||||
|
||||
String devId = devIdMapComm.get(devIp);
|
||||
Map<String, List<Integer>> chnResultMap = new HashMap<>();
|
||||
devMonitorMap.forEach((devMoniterId, devData) -> {
|
||||
Map<String, Integer> map = singleMonitorProcessing(devData, standardDevDataMap.get(pars.get(devMoniterId)), devIdMapComm, testItemCodeList, errorSysId, dataRule, num, code);
|
||||
String[] split = devMoniterId.split(CnSocketUtil.SPLIT_TAG);
|
||||
Map<String, Integer> map = singleMonitorProcessing(devData, standardDevDataMap.get(parsIp.get(devMoniterId)), devIdMapComm, testItemCodeList, errorSysId, dataRule, numMap.get(devId + CnSocketUtil.SPLIT_TAG + split[1]), code);
|
||||
map.forEach((key, value) -> {
|
||||
DevLineTestResult devLineTestResult = new DevLineTestResult();
|
||||
devLineTestResult.setDeviceId(devIdMapComm.get(devIp));
|
||||
devLineTestResult.setDeviceId(devId);
|
||||
devLineTestResult.setScriptName(key);
|
||||
List<Integer> chnResult = chnResultMap.getOrDefault(key, new ArrayList<>());
|
||||
chnResult.add(value);
|
||||
@@ -1557,34 +1561,42 @@ public class DetectionServiceImpl {
|
||||
private Map<String, Integer> singleMonitorProcessing(List<DevData> devDataList, List<DevData> standardDevDataList, Map<String, String> devIdMapComm, List<String> testItemCodeList, String errorSysId, DictDataEnum dataRule, Integer num, String code) {
|
||||
Map<String, Integer> resultMap = new HashMap<>();
|
||||
if (CollUtil.isNotEmpty(devDataList) && CollUtil.isNotEmpty(standardDevDataList) && CollUtil.isNotEmpty(testItemCodeList)) {
|
||||
SysTestConfig oneConfig = sysTestConfigService.getOneConfig();
|
||||
String[] split1 = devDataList.get(0).getId().split("_");
|
||||
String devMonitorId = devIdMapComm.get(split1[0]) + "_" + split1[1];
|
||||
PqMonitor pqMonitor = pqMonitorService.getByDevMonitorId(devMonitorId);
|
||||
boolean isStar = DetectionCodeEnum.STAR.getCode().equals(pqMonitor.getConnection());
|
||||
boolean isDelta = DetectionCodeEnum.DELTA.getCode().equals(pqMonitor.getConnection());
|
||||
Double fUn = pqMonitorService.getRatedVoltage(devMonitorId);
|
||||
if (isStar) {
|
||||
fUn = BigDecimal.valueOf(fUn).divide(BigDecimal.valueOf(Math.sqrt(3)), oneConfig.getScale(), RoundingMode.HALF_UP).doubleValue();
|
||||
}
|
||||
Double fIn = pqMonitorService.getRatedCurrent(devMonitorId);
|
||||
Double fHz = 50.0;
|
||||
for (String testItemCode : testItemCodeList) {
|
||||
// if ("real$U1".equals(testItemCode) || "real$I1".equals(testItemCode)) {
|
||||
// continue;
|
||||
// }
|
||||
|
||||
String[] split = testItemCode.split("\\$");
|
||||
|
||||
SysTestConfig oneConfig = sysTestConfigService.getOneConfig();
|
||||
List<PqErrSysDtls> pqErrSysDtls = pqErrSysDtlsService.listPqErrSysDtlsByPqErrSysIdAndScriptType(errorSysId, split[1]);
|
||||
DetectionCodeEnum anEnum = DetectionCodeEnum.getDetectionCodeByCode(split[1]);
|
||||
PqMonitor pqMonitor = pqMonitorService.getByDevMonitorId(devMonitorId);
|
||||
boolean isStar = DetectionCodeEnum.STAR.getCode().equals(pqMonitor.getConnection());
|
||||
boolean isDelta = DetectionCodeEnum.DELTA.getCode().equals(pqMonitor.getConnection());
|
||||
Double fUn = pqMonitorService.getRatedVoltage(devMonitorId);
|
||||
if (isStar) {
|
||||
fUn = BigDecimal.valueOf(fUn).divide(BigDecimal.valueOf(Math.sqrt(3)), oneConfig.getScale(), RoundingMode.HALF_UP).doubleValue();
|
||||
if (isStar && (anEnum == DetectionCodeEnum.PVRMS || anEnum == DetectionCodeEnum.PV2_50 || anEnum == DetectionCodeEnum.PSV_1_49) || isDelta && (anEnum == DetectionCodeEnum.VRMS || anEnum == DetectionCodeEnum.V2_50 || anEnum == DetectionCodeEnum.SV_1_49)) {
|
||||
continue;
|
||||
}
|
||||
Double fIn = pqMonitorService.getRatedCurrent(devMonitorId);
|
||||
Double fHz = 50.0;
|
||||
String scriptType = split[1];
|
||||
if (isDelta) {
|
||||
if (DetectionCodeEnum.PV2_50.getCode().equals(scriptType)) {
|
||||
scriptType = DetectionCodeEnum.V2_50.getCode();
|
||||
}
|
||||
if (DetectionCodeEnum.PSV_1_49.getCode().equals(scriptType)) {
|
||||
scriptType = DetectionCodeEnum.SV_1_49.getCode();
|
||||
}
|
||||
}
|
||||
List<PqErrSysDtls> pqErrSysDtls = pqErrSysDtlsService.listPqErrSysDtlsByPqErrSysIdAndScriptType(errorSysId, scriptType);
|
||||
|
||||
switch (anEnum) {
|
||||
case FREQ:
|
||||
resultMap.put(PowerIndexEnum.FREQ.getKey(), isQualified(devDataList, standardDevDataList, devIdMapComm, pqErrSysDtls, true, fHz, DetectionCodeEnum.FREQ.getCode(), dataRule, num, code, oneConfig.getScale()));
|
||||
break;
|
||||
case VRMS:
|
||||
case LINE_VRMS:
|
||||
resultMap.put(PowerIndexEnum.V.getKey(), isQualified(devDataList, standardDevDataList, devIdMapComm, pqErrSysDtls, true, fUn, (isStar ? DetectionCodeEnum.VRMS.getCode() : DetectionCodeEnum.LINE_VRMS.getCode()), dataRule, num, code, oneConfig.getScale()));
|
||||
case PVRMS:
|
||||
resultMap.put(PowerIndexEnum.V.getKey(), isQualified(devDataList, standardDevDataList, devIdMapComm, pqErrSysDtls, true, fUn, (isStar ? DetectionCodeEnum.VRMS.getCode() : DetectionCodeEnum.PVRMS.getCode()), dataRule, num, code, oneConfig.getScale()));
|
||||
break;
|
||||
case IRMS:
|
||||
resultMap.put(PowerIndexEnum.I.getKey(), isQualified(devDataList, standardDevDataList, devIdMapComm, pqErrSysDtls, true, fIn, DetectionCodeEnum.IRMS.getCode(), dataRule, num, code, oneConfig.getScale()));
|
||||
@@ -1599,19 +1611,21 @@ public class DetectionServiceImpl {
|
||||
resultMap.put(PowerIndexEnum.IMBA.getKey(), isQualified(devDataList, standardDevDataList, devIdMapComm, pqErrSysDtls, true, fIn, DetectionCodeEnum.I_UNBAN.getCode(), dataRule, num, code, oneConfig.getScale()));
|
||||
break;
|
||||
case V2_50:
|
||||
resultMap.put(PowerIndexEnum.HV.getKey(), isHarmQualified(devDataList, standardDevDataList, devIdMapComm, pqErrSysDtls, U, fUn, HARMONIC_FLAG, dataRule, num, code, oneConfig.getScale()));
|
||||
case PV2_50:
|
||||
resultMap.put(PowerIndexEnum.HV.getKey(), isHarmQualified(devDataList, standardDevDataList, devIdMapComm, pqErrSysDtls, U, fUn, HARMONIC_FLAG, isDelta, dataRule, num, code, oneConfig.getScale()));
|
||||
break;
|
||||
case I2_50:
|
||||
resultMap.put(PowerIndexEnum.HI.getKey(), isHarmQualified(devDataList, standardDevDataList, devIdMapComm, pqErrSysDtls, I, fIn, HARMONIC_FLAG, dataRule, num, code, oneConfig.getScale()));
|
||||
resultMap.put(PowerIndexEnum.HI.getKey(), isHarmQualified(devDataList, standardDevDataList, devIdMapComm, pqErrSysDtls, I, fIn, HARMONIC_FLAG, isDelta, dataRule, num, code, oneConfig.getScale()));
|
||||
break;
|
||||
case P2_50:
|
||||
resultMap.put(PowerIndexEnum.HP.getKey(), isHarmQualified(devDataList, standardDevDataList, devIdMapComm, pqErrSysDtls, U, fUn * fIn, HARMONIC_FLAG, dataRule, num, code, oneConfig.getScale()));
|
||||
resultMap.put(PowerIndexEnum.HP.getKey(), isHarmQualified(devDataList, standardDevDataList, devIdMapComm, pqErrSysDtls, U, fUn * fIn, HARMONIC_FLAG, isDelta, dataRule, num, code, oneConfig.getScale()));
|
||||
break;
|
||||
case SV_1_49:
|
||||
resultMap.put(PowerIndexEnum.HSV.getKey(), isHarmQualified(devDataList, standardDevDataList, devIdMapComm, pqErrSysDtls, U, fUn, INHARMONIC_FLAG, dataRule, num, code, oneConfig.getScale()));
|
||||
case PSV_1_49:
|
||||
resultMap.put(PowerIndexEnum.HSV.getKey(), isHarmQualified(devDataList, standardDevDataList, devIdMapComm, pqErrSysDtls, U, fUn, INHARMONIC_FLAG, isDelta, dataRule, num, code, oneConfig.getScale()));
|
||||
break;
|
||||
case SI_1_49:
|
||||
resultMap.put(PowerIndexEnum.HSI.getKey(), isHarmQualified(devDataList, standardDevDataList, devIdMapComm, pqErrSysDtls, I, fIn, INHARMONIC_FLAG, dataRule, num, code, oneConfig.getScale()));
|
||||
resultMap.put(PowerIndexEnum.HSI.getKey(), isHarmQualified(devDataList, standardDevDataList, devIdMapComm, pqErrSysDtls, I, fIn, INHARMONIC_FLAG, isDelta, dataRule, num, code, oneConfig.getScale()));
|
||||
break;
|
||||
case UNKNOWN_ERROR:
|
||||
break;
|
||||
@@ -1621,6 +1635,7 @@ public class DetectionServiceImpl {
|
||||
return resultMap;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 处理非谐波数据
|
||||
*
|
||||
@@ -1654,9 +1669,11 @@ public class DetectionServiceImpl {
|
||||
Map<String, List<List<Double>>> map = devListMap(devDataList, standardDevDataList, desc, dataRule);
|
||||
ContrastNonHarmonicResult result = new ContrastNonHarmonicResult();
|
||||
|
||||
String[] split1 = devDataList.get(0).getId().split("_");
|
||||
String[] split1 = devDataList.get(0).getId().split(CnSocketUtil.SPLIT_TAG);
|
||||
String[] split2 = standardDevDataList.get(0).getId().split(CnSocketUtil.SPLIT_TAG);
|
||||
result.setNum(num);
|
||||
result.setMonitorId(devIdMapComm.get(split1[0]) + "_" + split1[1]);
|
||||
result.setDevMonitorId(devIdMapComm.get(split1[0]) + "_" + split1[1]);
|
||||
result.setStdDevMonitorId(devIdMapComm.get(split2[0]) + "_" + split2[1]);
|
||||
result.setAdType(errSysDtls.get(0).getScriptType());
|
||||
result.setDataType(DataSourceEnum.REAL_DATA.getValue());
|
||||
|
||||
@@ -1704,6 +1721,7 @@ public class DetectionServiceImpl {
|
||||
* @param fData 额定值
|
||||
* @param type U或I、用来区分电压或电流
|
||||
* @param harmonicFlag 1:间谐波,2:谐波
|
||||
* @param isDelta 是否角型接法
|
||||
* @param dataRule 数据处理原则
|
||||
* @param num 第几次检测
|
||||
* @param code 结果表code
|
||||
@@ -1717,21 +1735,30 @@ public class DetectionServiceImpl {
|
||||
String type,
|
||||
Double fData,
|
||||
Integer harmonicFlag,
|
||||
boolean isDelta,
|
||||
DictDataEnum dataRule,
|
||||
Integer num,
|
||||
String code,
|
||||
Integer scale) {
|
||||
|
||||
List<ContrastHarmonicResult> info = new ArrayList<>();
|
||||
if (CollUtil.isNotEmpty(devDataList) && CollUtil.isNotEmpty(standardDevDataList) && CollUtil.isNotEmpty(errSysDtls)) {
|
||||
String fundCode = "";
|
||||
String harmCode = "";
|
||||
if (U.equals(type)) {
|
||||
fundCode = DetectionCodeEnum.U1.getCode();
|
||||
if (isDelta) {
|
||||
fundCode = DetectionCodeEnum.PU1.getCode();
|
||||
}
|
||||
if (harmonicFlag == 1) {
|
||||
harmCode = DetectionCodeEnum.SV_1_49.getCode();
|
||||
if (isDelta) {
|
||||
harmCode = DetectionCodeEnum.PSV_1_49.getCode();
|
||||
}
|
||||
} else {
|
||||
harmCode = DetectionCodeEnum.V2_50.getCode();
|
||||
if (isDelta) {
|
||||
harmCode = DetectionCodeEnum.PV2_50.getCode();
|
||||
}
|
||||
}
|
||||
}
|
||||
if (I.equals(type)) {
|
||||
@@ -1750,9 +1777,11 @@ public class DetectionServiceImpl {
|
||||
Map<String, List<Map<Double, List<Double>>>> devMap = devHarmListMap(devDataList, standardDevDataList, fundCode, harmCode, harmonicFlag, dataRule);
|
||||
ContrastHarmonicResult result = new ContrastHarmonicResult();
|
||||
|
||||
String[] split = devDataList.get(0).getId().split("_");
|
||||
String[] split1 = devDataList.get(0).getId().split("_");
|
||||
String[] split2 = standardDevDataList.get(0).getId().split("_");
|
||||
result.setNum(num);
|
||||
result.setMonitorId(devIdMapComm.get(split[0]) + "_" + split[1]);
|
||||
result.setDevMonitorId(devIdMapComm.get(split1[0]) + "_" + split1[1]);
|
||||
result.setStdDevMonitorId(devIdMapComm.get(split2[0]) + "_" + split2[1]);
|
||||
result.setAdType(errSysDtls.get(0).getScriptType());
|
||||
result.setDataType(DataSourceEnum.REAL_DATA.getValue());
|
||||
|
||||
@@ -1804,6 +1833,20 @@ public class DetectionServiceImpl {
|
||||
List<DevData.SqlDataDTO.ListDTO> standardDevList = standardDevSqlData.stream().filter(j -> desc.equals(j.getDesc()))
|
||||
.map(DevData.SqlDataDTO::getList).collect(Collectors.toList());
|
||||
|
||||
// 如果角型接法中,不存在线电压有效值,则取相电压有效值进行计算
|
||||
if (CollUtil.isEmpty(devList)) {
|
||||
if (desc.equals(DetectionCodeEnum.PVRMS.getCode())) {
|
||||
devList = devSqlData.stream().filter(j -> DetectionCodeEnum.VRMS.getCode().equals(j.getDesc()))
|
||||
.map(DevData.SqlDataDTO::getList).collect(Collectors.toList());
|
||||
}
|
||||
}
|
||||
if (CollUtil.isEmpty(standardDevList)) {
|
||||
if (desc.equals(DetectionCodeEnum.PVRMS.getCode())) {
|
||||
standardDevList = standardDevSqlData.stream().filter(j -> DetectionCodeEnum.VRMS.getCode().equals(j.getDesc()))
|
||||
.map(DevData.SqlDataDTO::getList).collect(Collectors.toList());
|
||||
}
|
||||
}
|
||||
|
||||
aDev.addAll(devList.stream().filter(x -> ObjectUtil.isNotNull(x.getA()))
|
||||
.map(x -> x.getA().doubleValue())
|
||||
.collect(Collectors.toList()));
|
||||
@@ -1927,6 +1970,7 @@ public class DetectionServiceImpl {
|
||||
String harmCode,
|
||||
Integer harmonicFlag,
|
||||
DictDataEnum dataRule) {
|
||||
System.out.println("aaa" + dev.size() + " " + standardDev.size());
|
||||
Map<String, List<Map<Double, List<Double>>>> resultMap = new HashMap<>(3);
|
||||
|
||||
// key为相别、value{key为谐波次数,value为按数据处理原则处理后的数据}
|
||||
@@ -1947,9 +1991,21 @@ public class DetectionServiceImpl {
|
||||
Optional<DevData.SqlDataDTO> first1 = Optional.empty();
|
||||
Optional<DevData.SqlDataDTO> first2 = Optional.empty();
|
||||
if (CollUtil.isNotEmpty(devSqlData) && CollUtil.isNotEmpty(standardDevSqlData)) {
|
||||
first1 = devSqlData.stream().filter(j -> j.getDesc().equals(fundCode)).collect(Collectors.toList()).stream().findFirst();
|
||||
first2 = standardDevSqlData.stream().filter(j -> j.getDesc().equals(fundCode)).collect(Collectors.toList()).stream().findFirst();
|
||||
first1 = devSqlData.stream().filter(j -> fundCode.equals(j.getDesc())).collect(Collectors.toList()).stream().findFirst();
|
||||
first2 = standardDevSqlData.stream().filter(j -> fundCode.equals(j.getDesc())).collect(Collectors.toList()).stream().findFirst();
|
||||
}
|
||||
// 如果角型接法中,不存在线电压谐波电压基波有效值,则取相电压谐波电压基波有效值进行计算
|
||||
if (!first1.isPresent()) {
|
||||
if (DetectionCodeEnum.PU1.getCode().equals(fundCode)) {
|
||||
first1 = devSqlData.stream().filter(j -> DetectionCodeEnum.U1.getCode().equals(j.getDesc())).collect(Collectors.toList()).stream().findFirst();
|
||||
}
|
||||
}
|
||||
if (!first2.isPresent()) {
|
||||
if (DetectionCodeEnum.PU1.getCode().equals(fundCode)) {
|
||||
first2 = devSqlData.stream().filter(j -> DetectionCodeEnum.U1.getCode().equals(j.getDesc())).collect(Collectors.toList()).stream().findFirst();
|
||||
}
|
||||
}
|
||||
|
||||
DevData.SqlDataDTO fund1 = null;
|
||||
DevData.SqlDataDTO fund2 = null;
|
||||
if (first1.isPresent()) {
|
||||
@@ -1958,8 +2014,28 @@ public class DetectionServiceImpl {
|
||||
if (first2.isPresent()) {
|
||||
fund2 = first2.get();
|
||||
}
|
||||
|
||||
List<DevData.SqlDataHarmDTO> devHarmList = dev.get(i).getSqlDataHarm().stream().filter(x -> x.getDesc().equals(harmCode)).collect(Collectors.toList());
|
||||
List<DevData.SqlDataHarmDTO> stdDevHarmList = dev.get(i).getSqlDataHarm().stream().filter(x -> x.getDesc().equals(harmCode)).collect(Collectors.toList());
|
||||
List<DevData.SqlDataHarmDTO> stdDevHarmList = standardDev.get(i).getSqlDataHarm().stream().filter(x -> x.getDesc().equals(harmCode)).collect(Collectors.toList());
|
||||
|
||||
// 如果角型接法中,不存在线电压谐波电压含有率,则取相电压谐波电压含有率进行计算
|
||||
if (CollUtil.isEmpty(devHarmList)) {
|
||||
if (DetectionCodeEnum.PV2_50.getCode().equals(harmCode)) {
|
||||
devHarmList = dev.get(i).getSqlDataHarm().stream().filter(x -> DetectionCodeEnum.V2_50.getCode().equals(x.getDesc())).collect(Collectors.toList());
|
||||
}
|
||||
if (DetectionCodeEnum.PSV_1_49.getCode().equals(harmCode)) {
|
||||
devHarmList = dev.get(i).getSqlDataHarm().stream().filter(x -> DetectionCodeEnum.SV_1_49.getCode().equals(x.getDesc())).collect(Collectors.toList());
|
||||
}
|
||||
}
|
||||
if (CollUtil.isEmpty(stdDevHarmList)) {
|
||||
if (DetectionCodeEnum.PV2_50.getCode().equals(harmCode)) {
|
||||
stdDevHarmList = standardDev.get(i).getSqlDataHarm().stream().filter(x -> DetectionCodeEnum.V2_50.getCode().equals(x.getDesc())).collect(Collectors.toList());
|
||||
}
|
||||
if (DetectionCodeEnum.PSV_1_49.getCode().equals(harmCode)) {
|
||||
stdDevHarmList = standardDev.get(i).getSqlDataHarm().stream().filter(x -> DetectionCodeEnum.SV_1_49.getCode().equals(x.getDesc())).collect(Collectors.toList());
|
||||
}
|
||||
}
|
||||
|
||||
if (CollUtil.isNotEmpty(devHarmList) && CollUtil.isNotEmpty(stdDevHarmList)) {
|
||||
DevData.SqlDataHarmDTO devHarm = devHarmList.get(0);
|
||||
DevData.SqlDataHarmDTO stdDevHarm = stdDevHarmList.get(0);
|
||||
@@ -2058,12 +2134,13 @@ public class DetectionServiceImpl {
|
||||
Integer scale) {
|
||||
List<DetectionData> detectionDataList = new ArrayList<>();
|
||||
List<Double> U1List = new ArrayList<>();
|
||||
if (U.equals(type)) {
|
||||
U1List.addAll(standardDevMap.get(0.0));
|
||||
}
|
||||
standardDevMap.forEach((harmonicNum, stdDataList) -> {
|
||||
if (U.equals(type)) {
|
||||
// todo 间谐波电压使用U1???
|
||||
U1List.addAll(standardDevMap.get(1.0));
|
||||
if (harmonicNum != 0.0) {
|
||||
detectionDataList.addAll(this.getDetectionDataList(devMap.get(harmonicNum), stdDataList, U1List, pqErrSysDtls, fData, harmonicNum, scale));
|
||||
}
|
||||
detectionDataList.addAll(this.getDetectionDataList(devMap.get(harmonicNum), stdDataList, U1List, pqErrSysDtls, fData, harmonicNum, scale));
|
||||
});
|
||||
return detectionDataList;
|
||||
}
|
||||
|
||||
@@ -6,7 +6,6 @@ import cn.hutool.core.util.ObjectUtil;
|
||||
import com.alibaba.fastjson.JSON;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.njcn.common.pojo.exception.BusinessException;
|
||||
import com.njcn.db.mybatisplus.handler.DynamicTableNameHandler;
|
||||
import com.njcn.gather.detection.handler.SocketContrastResponseService;
|
||||
import com.njcn.gather.detection.handler.SocketDevResponseService;
|
||||
import com.njcn.gather.detection.handler.SocketSourceResponseService;
|
||||
@@ -37,20 +36,21 @@ import com.njcn.gather.script.service.IPqScriptCheckDataService;
|
||||
import com.njcn.gather.script.service.IPqScriptDtlsService;
|
||||
import com.njcn.gather.source.pojo.po.SourceInitialize;
|
||||
import com.njcn.gather.source.service.IPqSourceService;
|
||||
import com.njcn.gather.storage.pojo.po.ContrastHarmonicResult;
|
||||
import com.njcn.gather.storage.pojo.po.ContrastNonHarmonicResult;
|
||||
import com.njcn.gather.storage.service.ContrastHarmonicService;
|
||||
import com.njcn.gather.storage.service.ContrastNonHarmonicService;
|
||||
import com.njcn.gather.system.cfg.pojo.po.SysTestConfig;
|
||||
import com.njcn.gather.system.cfg.service.ISysTestConfigService;
|
||||
import com.njcn.gather.system.dictionary.pojo.enums.DictDataEnum;
|
||||
import com.njcn.gather.system.dictionary.service.IDictDataService;
|
||||
import com.njcn.web.utils.HttpServletUtil;
|
||||
import com.njcn.web.utils.RequestUtil;
|
||||
import io.netty.channel.Channel;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.beans.factory.annotation.Value;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import javax.servlet.ServletOutputStream;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
import java.io.FileInputStream;
|
||||
import java.io.IOException;
|
||||
import java.io.InputStream;
|
||||
import java.math.BigDecimal;
|
||||
import java.util.*;
|
||||
import java.util.stream.Collectors;
|
||||
@@ -69,16 +69,16 @@ public class PreDetectionServiceImpl implements PreDetectionService {
|
||||
private final IAdPlanSourceService adPlanSourceService;
|
||||
private final IPqSourceService pqSourceService;
|
||||
private final IPqScriptDtlsService pqScriptDtlsService;
|
||||
private final ISysTestConfigService testConfigService;
|
||||
|
||||
private final SocketDevResponseService socketDevResponseService;
|
||||
private final SocketSourceResponseService socketSourceResponseService;
|
||||
private final SocketContrastResponseService socketContrastResponseService;
|
||||
private final IPqScriptCheckDataService iPqScriptCheckDataService;
|
||||
private final ContrastNonHarmonicService contrastNonHarmonicService;
|
||||
private final ContrastHarmonicService contrastHarmonicService;
|
||||
private final SocketManager socketManager;
|
||||
|
||||
@Value("${log.homeDir}")
|
||||
private String alignDataFilePath;
|
||||
|
||||
|
||||
@Override
|
||||
public void sourceCommunicationCheck(PreDetectionParam param) {
|
||||
@@ -251,9 +251,9 @@ public class PreDetectionServiceImpl implements PreDetectionService {
|
||||
PqScriptCheckDataParam checkDataParam = new PqScriptCheckDataParam();
|
||||
checkDataParam.setScriptId(param.getScriptId());
|
||||
checkDataParam.setIsValueTypeName(false);
|
||||
List<String> valueType = iPqScriptCheckDataService.getValueType(checkDataParam);
|
||||
List<String> adType = iPqScriptCheckDataService.getValueType(checkDataParam);
|
||||
|
||||
iPqDevService.updateResult(param.getDevIds(), valueType, param.getCode(), param.getUserId(), param.getTemperature(), param.getHumidity());
|
||||
iPqDevService.updateResult(false, param.getDevIds(), adType, param.getCode(), param.getUserId(), param.getTemperature(), param.getHumidity());
|
||||
CnSocketUtil.quitSend(param);
|
||||
}
|
||||
|
||||
@@ -330,36 +330,26 @@ public class PreDetectionServiceImpl implements PreDetectionService {
|
||||
}
|
||||
|
||||
@Override
|
||||
public Map<Integer, Integer> getContrastTestNumInfo(String planId) {
|
||||
AdPlan plan = iAdPlanService.getById(planId);
|
||||
SysTestConfig oneConfig = testConfigService.getOneConfig();
|
||||
|
||||
Integer maxNum = 1;
|
||||
String code = String.valueOf(plan.getCode());
|
||||
String adNonTable = "ad_non_harmonic_";
|
||||
String adTable = "ad_harmonic_";
|
||||
|
||||
DynamicTableNameHandler.setTableName(adNonTable + code);
|
||||
ContrastNonHarmonicResult result1 = contrastNonHarmonicService.lambdaQuery().select(ContrastNonHarmonicResult::getNum).orderByDesc().last("LIMIT 1").one();
|
||||
if (ObjectUtil.isNotNull(result1)) {
|
||||
if (result1.getNum().compareTo(maxNum) > 0) {
|
||||
maxNum = result1.getNum() + 1;
|
||||
public void exportAlignData() {
|
||||
String fileName = "实时数据.xlsx";
|
||||
HttpServletResponse response = HttpServletUtil.getResponse();
|
||||
response.reset();
|
||||
response.setHeader("Content-Disposition", "attachment; filename=\"" + fileName + "\"");
|
||||
response.setContentType("application/octet-stream;charset=UTF-8");
|
||||
try {
|
||||
InputStream inputStream = new FileInputStream(alignDataFilePath + "\\" + fileName);
|
||||
byte[] buffer = new byte[1024];
|
||||
int len = 0;
|
||||
ServletOutputStream outputStream = response.getOutputStream();
|
||||
while ((len = inputStream.read(buffer)) != -1) {
|
||||
outputStream.write(buffer, 0, len);
|
||||
}
|
||||
outputStream.flush();
|
||||
outputStream.close();
|
||||
inputStream.close();
|
||||
} catch (IOException e) {
|
||||
throw new RuntimeException(e);
|
||||
}
|
||||
DynamicTableNameHandler.remove();
|
||||
|
||||
DynamicTableNameHandler.setTableName(adTable + code);
|
||||
ContrastHarmonicResult result2 = contrastHarmonicService.lambdaQuery().select(ContrastHarmonicResult::getNum).orderByDesc().last("LIMIT 1").one();
|
||||
if (ObjectUtil.isNotNull(result2)) {
|
||||
if (result2.getNum().compareTo(maxNum) > 0) {
|
||||
maxNum = result2.getNum() + 1;
|
||||
}
|
||||
}
|
||||
DynamicTableNameHandler.remove();
|
||||
|
||||
Map<Integer, Integer> map = new HashMap<>();
|
||||
map.put(oneConfig.getMaxTime(), maxNum);
|
||||
return map;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -394,6 +384,10 @@ public class PreDetectionServiceImpl implements PreDetectionService {
|
||||
socketMsg.setData(jsonString);
|
||||
PreDetectionParam preDetectionParam = new PreDetectionParam();
|
||||
preDetectionParam.setUserPageId(param.getLoginName());
|
||||
preDetectionParam.setTestItemList(param.getTestItemList());
|
||||
preDetectionParam.setNumMap(param.getNumMap());
|
||||
preDetectionParam.setDevIds(param.getDevIds());
|
||||
preDetectionParam.setUserId(param.getUserId());
|
||||
WebServiceManager.addPreDetectionParam(param.getLoginName(), preDetectionParam);
|
||||
socketManager.smartSendToContrast(param, JSON.toJSONString(socketMsg));
|
||||
}
|
||||
|
||||
@@ -92,7 +92,7 @@ public class FormalTestManager {
|
||||
/**
|
||||
* 比对式检测-检测项。key为检测项id,value为检测项code
|
||||
*/
|
||||
public static Map<String,String> testItemMap = new HashMap<>();
|
||||
public static Map<String, String> testItemMap = new HashMap<>();
|
||||
|
||||
/**
|
||||
* 数据处理原则
|
||||
@@ -102,7 +102,12 @@ public class FormalTestManager {
|
||||
/**
|
||||
* 所有参与比对式检测的被检设备、标准设备配对关系。key:被检设备ip_通道号,value:标准设备ip_通道号
|
||||
*/
|
||||
public static HashBiMap<String, String> pairsMap = HashBiMap.create();
|
||||
public static HashBiMap<String, String> pairsIpMap = HashBiMap.create();
|
||||
|
||||
/**
|
||||
* 所有参与比对式检测的被检设备、标准设备配对关系。key:被检设备id_通道号,value:标准设备id_通道号
|
||||
*/
|
||||
public static HashBiMap<String, String> pairsIdMap = HashBiMap.create();
|
||||
|
||||
/**
|
||||
* 被检设备的数据。key:设备ip_通道号,value:DevData数据集合
|
||||
|
||||
@@ -22,7 +22,6 @@ import io.netty.handler.codec.string.StringEncoder;
|
||||
import io.netty.handler.timeout.IdleStateHandler;
|
||||
import io.netty.util.CharsetUtil;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
import javax.annotation.PostConstruct;
|
||||
@@ -127,7 +126,9 @@ public class NettyClient {
|
||||
PreDetectionParam preDetectionParam = new PreDetectionParam();
|
||||
preDetectionParam.setUserPageId(param.getLoginName());
|
||||
preDetectionParam.setTestItemList(param.getTestItemList());
|
||||
preDetectionParam.setNum(param.getNum());
|
||||
preDetectionParam.setNumMap(param.getNumMap());
|
||||
preDetectionParam.setDevIds(param.getDevIds());
|
||||
preDetectionParam.setUserId(param.getUserId());
|
||||
NettyContrastClientHandler handler = new NettyContrastClientHandler(preDetectionParam, socketContrastResponseService);
|
||||
executeSocketConnection(ip, port, preDetectionParam, msg, handler);
|
||||
}
|
||||
|
||||
@@ -109,15 +109,16 @@ public interface IPqDevService extends IService<PqDev> {
|
||||
/**
|
||||
* 正式监测完成,修改中断状态
|
||||
*
|
||||
* @param isContrast
|
||||
* @param ids
|
||||
* @param valueType
|
||||
* @param adType
|
||||
* @param code
|
||||
* @param userId
|
||||
* @param temperature
|
||||
* @param humidity
|
||||
* @return
|
||||
*/
|
||||
boolean updateResult(List<String> ids, List<String> valueType, String code, String userId, Float temperature, Float humidity);
|
||||
boolean updateResult(boolean isContrast,List<String> ids, List<String> adType, String code,String userId, Float temperature, Float humidity);
|
||||
|
||||
void updatePqDevReportState(String devId, int i);
|
||||
|
||||
|
||||
@@ -21,6 +21,7 @@ import com.njcn.common.pojo.enums.common.DataStateEnum;
|
||||
import com.njcn.common.pojo.exception.BusinessException;
|
||||
import com.njcn.common.pojo.poi.PullDown;
|
||||
import com.njcn.common.utils.EncryptionUtil;
|
||||
import com.njcn.common.utils.JwtUtil;
|
||||
import com.njcn.db.mybatisplus.constant.DbConstant;
|
||||
import com.njcn.gather.device.mapper.PqDevMapper;
|
||||
import com.njcn.gather.device.pojo.enums.*;
|
||||
@@ -48,6 +49,7 @@ import com.njcn.gather.user.user.service.ISysUserService;
|
||||
import com.njcn.web.factory.PageFactory;
|
||||
import com.njcn.web.utils.ExcelUtil;
|
||||
import com.njcn.web.utils.PoiUtil;
|
||||
import com.njcn.web.utils.RequestUtil;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.apache.commons.lang3.ObjectUtils;
|
||||
@@ -434,10 +436,11 @@ public class PqDevServiceImpl extends ServiceImpl<PqDevMapper, PqDev> implements
|
||||
|
||||
|
||||
@Override
|
||||
public boolean updateResult(List<String> ids, List<String> valueType, String code, String userId, Float temperature, Float humidity) {
|
||||
public boolean updateResult(boolean isContrast, List<String> ids, List<String> adType, String code,String userId, Float temperature, Float humidity) {
|
||||
if (CollUtil.isNotEmpty(ids)) {
|
||||
|
||||
SysTestConfig config = sysTestConfigService.getOneConfig();
|
||||
Map<String, Integer> result = detectionDataDealService.devResult(ids, valueType, code);
|
||||
Map<String, Integer> result = detectionDataDealService.devResult(isContrast, ids, adType, code);
|
||||
List<PqDevVO> list = new ArrayList<>();
|
||||
if (CollUtil.isNotEmpty(ids)) {
|
||||
list.addAll(this.baseMapper.listByDevIds(ids));
|
||||
|
||||
@@ -33,18 +33,8 @@
|
||||
and Num = #{num}
|
||||
</select>
|
||||
<select id="listByDevIds" resultType="com.njcn.gather.monitor.pojo.po.PqMonitor">
|
||||
select pq_monitor.Id,
|
||||
pq_monitor.Dev_Id,
|
||||
pq_monitor.Name,
|
||||
pq_monitor.Busbar,
|
||||
pq_monitor.Num,
|
||||
pq_monitor.Pt,
|
||||
pq_monitor.Ct,
|
||||
pq_monitor.Stat_Interval,
|
||||
pq_monitor.Harm_Sys_Id,
|
||||
sys_dict_data.Code as `Connection`
|
||||
select *
|
||||
from pq_monitor
|
||||
inner join sys_dict_data on pq_monitor.Connection = sys_dict_data.id
|
||||
where Dev_Id in
|
||||
<foreach collection="devIds" item="devId" open="(" separator="," close=")">
|
||||
#{devId}
|
||||
|
||||
@@ -120,13 +120,4 @@ public class ResultController extends BaseController {
|
||||
resultService.deleteTempTable(code);
|
||||
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, null, methodDescribe);
|
||||
}
|
||||
|
||||
@OperateInfo(info = LogEnum.SYSTEM_COMMON, operateType = OperateType.DOWNLOAD)
|
||||
@PostMapping("/exportAlignData")
|
||||
@ApiOperation("实时对齐数据导出为csv文件")
|
||||
public void exportAlignData() {
|
||||
String methodDescribe = getMethodDescribe("exportAlignData");
|
||||
LogUtil.njcnDebug(log, "{}", methodDescribe);
|
||||
resultService.exportAlignData();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -97,9 +97,4 @@ public interface IResultService {
|
||||
* @param pKeys 待填充的值
|
||||
*/
|
||||
Map<String, String> getParagraphKeysValue(String itemCode, List<String> pKeys);
|
||||
|
||||
/**
|
||||
* 导出实时数据对齐过程中的数据
|
||||
*/
|
||||
void exportAlignData();
|
||||
}
|
||||
|
||||
@@ -16,12 +16,8 @@ import com.njcn.common.utils.PubUtils;
|
||||
import com.njcn.gather.detection.pojo.enums.DetectionCodeEnum;
|
||||
import com.njcn.gather.detection.pojo.param.PreDetectionParam;
|
||||
import com.njcn.gather.detection.pojo.po.DevData;
|
||||
import com.njcn.gather.detection.pojo.vo.AlignDataExcel;
|
||||
import com.njcn.gather.detection.pojo.vo.DetectionData;
|
||||
import com.njcn.gather.detection.service.impl.DetectionServiceImpl;
|
||||
import com.njcn.gather.detection.util.DetectionUtil;
|
||||
import com.njcn.gather.detection.util.socket.CnSocketUtil;
|
||||
import com.njcn.gather.detection.util.socket.FormalTestManager;
|
||||
import com.njcn.gather.device.pojo.enums.CommonEnum;
|
||||
import com.njcn.gather.device.service.IPqDevService;
|
||||
import com.njcn.gather.plan.pojo.po.AdPlan;
|
||||
@@ -139,7 +135,7 @@ public class ResultServiceImpl implements IResultService {
|
||||
|
||||
if (ObjectUtil.isNotEmpty(allResultList)) {
|
||||
Map<String, List<SimAndDigBaseResult>> chnMap = allResultList.stream().collect(
|
||||
Collectors.groupingBy(obj -> obj.getMonitorId().substring(obj.getMonitorId().lastIndexOf("_") + 1))
|
||||
Collectors.groupingBy(obj -> obj.getDevMonitorId().substring(obj.getDevMonitorId().lastIndexOf("_") + 1))
|
||||
);
|
||||
chnMap.forEach((chn, list) -> {
|
||||
Map<String, String> map = new HashMap<>();
|
||||
@@ -1495,73 +1491,6 @@ public class ResultServiceImpl implements IResultService {
|
||||
return map;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void exportAlignData() {
|
||||
List<Map<String, Object>> sheetsList = new ArrayList<>();
|
||||
|
||||
// key为被检设备的ip, value为该ip下所有通道的设备数据
|
||||
Map<String, List<DevData>> ipDevDataMap = FormalTestManager.standardDevDataMap.values().stream().flatMap(List::stream).collect(Collectors.groupingBy(obj -> obj.getId().split(CnSocketUtil.SPLIT_TAG)[0]));
|
||||
|
||||
ipDevDataMap.forEach((ip, stdDevDataList) -> {
|
||||
// 按照通道号分组。key为通道号,value为该通道号下所有设备数据
|
||||
Map<String, List<DevData>> channelDataMap = stdDevDataList.stream().collect(Collectors.groupingBy(obj -> obj.getId().split(CnSocketUtil.SPLIT_TAG)[1]));
|
||||
|
||||
channelDataMap.forEach((channel, channelDevDataList) -> {
|
||||
String standardDevMonitorId = ip + CnSocketUtil.SPLIT_TAG + channel;
|
||||
String devMonitorId = FormalTestManager.pairsMap.inverse().get(standardDevMonitorId);
|
||||
List<DevData> devDataList = BeanUtil.copyToList(FormalTestManager.devDataMap.get(standardDevMonitorId), DevData.class);
|
||||
channelDevDataList.sort(Comparator.comparing(obj -> DetectionUtil.getMillis(obj.getTime())));
|
||||
|
||||
HashMap sheet = new HashMap<>();
|
||||
ExportParams exportParams = new ExportParams();
|
||||
String standardDevName = FormalTestManager.devNameMapComm.get(ip);
|
||||
String[] split = devMonitorId.split(CnSocketUtil.SPLIT_TAG);
|
||||
String devName = FormalTestManager.devNameMapComm.get(split[0]);
|
||||
exportParams.setSheetName(devName + "通道" + channel);
|
||||
sheet.put("title", exportParams);
|
||||
|
||||
List<AlignDataExcel> dataList = new ArrayList<>();
|
||||
channelDevDataList.stream().forEach(obj -> {
|
||||
AlignDataExcel alignDataExcel = new AlignDataExcel();
|
||||
alignDataExcel.getDevDataConfig().setName(devName + "通道" + split[1]);
|
||||
alignDataExcel.getStandardDevDataConfig().setName(standardDevName + "通道" + channel);
|
||||
DevData.SqlDataDTO.ListDTO list1 = obj.getSqlData().get(0).getList();
|
||||
alignDataExcel.setTimeStdDev(obj.getTime());
|
||||
alignDataExcel.setUaStdDev(list1.getA());
|
||||
alignDataExcel.setUbStdDev(list1.getB());
|
||||
alignDataExcel.setUcStdDev(list1.getC());
|
||||
|
||||
DevData devData = devDataList.stream().filter(obj1 -> DetectionUtil.isAlignData(obj1, obj)).findFirst().get();
|
||||
if (ObjectUtil.isNotNull(devData)) {
|
||||
DevData.SqlDataDTO.ListDTO list2 = devData.getSqlData().get(0).getList();
|
||||
alignDataExcel.setTimeDev(devData.getTime());
|
||||
alignDataExcel.setUaDev(list2.getA());
|
||||
alignDataExcel.setUbDev(list2.getB());
|
||||
alignDataExcel.setUcDev(list2.getC());
|
||||
devDataList.remove(devData);
|
||||
}
|
||||
dataList.add(alignDataExcel);
|
||||
});
|
||||
devDataList.sort(Comparator.comparing(obj -> DetectionUtil.getMillis(obj.getTime())));
|
||||
devDataList.stream().forEach(obj -> {
|
||||
AlignDataExcel alignDataExcel = new AlignDataExcel();
|
||||
alignDataExcel.getDevDataConfig().setName(devName + "通道" + split[1]);
|
||||
alignDataExcel.getStandardDevDataConfig().setName(standardDevName + "通道" + channel);
|
||||
DevData.SqlDataDTO.ListDTO list2 = obj.getSqlData().get(0).getList();
|
||||
alignDataExcel.setTimeDev(obj.getTime());
|
||||
alignDataExcel.setUaDev(list2.getA());
|
||||
alignDataExcel.setUbDev(list2.getB());
|
||||
alignDataExcel.setUcDev(list2.getC());
|
||||
dataList.add(alignDataExcel);
|
||||
});
|
||||
|
||||
sheet.put("data", dataList);
|
||||
sheet.put("entity", AlignDataExcel.class);
|
||||
});
|
||||
});
|
||||
|
||||
ExcelUtil.exportExcel("实时数据.xlsx", sheetsList);
|
||||
}
|
||||
|
||||
private Integer conform(Set<Integer> numbers) {
|
||||
if (CollUtil.isNotEmpty(numbers)) {
|
||||
@@ -1709,7 +1638,7 @@ public class ResultServiceImpl implements IResultService {
|
||||
checkDataParam.setIsValueTypeName(false);
|
||||
List<String> valueType = iPqScriptCheckDataService.getValueType(checkDataParam);
|
||||
|
||||
iPqDevService.updateResult(param.getDevIds(), valueType, param.getCode(), null, param.getTemperature(), param.getHumidity());
|
||||
iPqDevService.updateResult(false, param.getDevIds(), valueType, param.getCode(), param.getUserId(), param.getTemperature(), param.getHumidity());
|
||||
}
|
||||
|
||||
private List<DevData> toList(List<SimAndDigNonHarmonicResult> nonHarm, List<SimAndDigHarmonicResult> harm, boolean containBaseHarm) {
|
||||
@@ -1717,7 +1646,7 @@ public class ResultServiceImpl implements IResultService {
|
||||
// if (CollUtil.isNotEmpty(nonHarm)) {
|
||||
if (CollUtil.isNotEmpty(nonHarm)) {
|
||||
Map<String, List<SimAndDigNonHarmonicResult>> noHarmMap = nonHarm.stream()
|
||||
.collect(Collectors.groupingBy(x -> x.getMonitorId() + "_" + x.getTimeId().format(DateTimeFormatter.ofPattern(DatePattern.UTC_SIMPLE_MS_PATTERN)) + "_" + x.getSort()));
|
||||
.collect(Collectors.groupingBy(x -> x.getDevMonitorId() + "_" + x.getTimeId().format(DateTimeFormatter.ofPattern(DatePattern.UTC_SIMPLE_MS_PATTERN)) + "_" + x.getSort()));
|
||||
noHarmMap.forEach((key, value) -> {
|
||||
String[] split = key.split("_");
|
||||
DevData data = new DevData();
|
||||
@@ -1743,7 +1672,7 @@ public class ResultServiceImpl implements IResultService {
|
||||
}
|
||||
if (CollUtil.isNotEmpty(harm)) {
|
||||
Map<String, List<SimAndDigHarmonicResult>> harmMap = harm.stream()
|
||||
.collect(Collectors.groupingBy(x -> x.getMonitorId() + "_" + x.getTimeId().format(DateTimeFormatter.ofPattern(DatePattern.UTC_SIMPLE_MS_PATTERN))));
|
||||
.collect(Collectors.groupingBy(x -> x.getDevMonitorId() + "_" + x.getTimeId().format(DateTimeFormatter.ofPattern(DatePattern.UTC_SIMPLE_MS_PATTERN))));
|
||||
harmMap.forEach((key, value) -> {
|
||||
List<DevData> collect = info.stream().filter(x -> key.equals(x.getId() + "_" + x.getTime())).collect(Collectors.toList());
|
||||
List<DevData.SqlDataDTO> sqlDataDTOS = new ArrayList<>();
|
||||
|
||||
@@ -103,8 +103,3 @@ qr:
|
||||
|
||||
db:
|
||||
type: mysql
|
||||
|
||||
detection:
|
||||
xujy:
|
||||
volOrCur: 6
|
||||
phase: 3
|
||||
@@ -38,7 +38,7 @@ public class DataDealController extends BaseController {
|
||||
SimAndDigHarmonicResult.setDataType("aa");
|
||||
SimAndDigHarmonicResult.setAdType("aaaa");
|
||||
|
||||
SimAndDigHarmonicResult.setMonitorId("ss");
|
||||
SimAndDigHarmonicResult.setDevMonitorId("ss");
|
||||
SimAndDigHarmonicResult.setScriptId("ddd");
|
||||
SimAndDigHarmonicResult.setTimeId(LocalDateTime.now());
|
||||
|
||||
@@ -47,12 +47,12 @@ public class DataDealController extends BaseController {
|
||||
SimAndDigHarmonicResult2.setDataType("aabb");
|
||||
SimAndDigHarmonicResult2.setAdType("aaaabb");
|
||||
|
||||
SimAndDigHarmonicResult2.setMonitorId("ssbb");
|
||||
SimAndDigHarmonicResult2.setDevMonitorId("ssbb");
|
||||
SimAndDigHarmonicResult2.setScriptId("dddbb");
|
||||
SimAndDigHarmonicResult2.setTimeId(LocalDateTime.now());
|
||||
list2.add(SimAndDigHarmonicResult2);
|
||||
|
||||
detectionDataDealService.acceptAd(list2,"1");
|
||||
detectionDataDealService.acceptHarmonic(list2,"1");
|
||||
|
||||
|
||||
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, null, methodDescribe);
|
||||
|
||||
@@ -4,26 +4,31 @@
|
||||
<update id="genNonHarmonicTable">
|
||||
CREATE TABLE ad_non_harmonic_${code}
|
||||
(
|
||||
Monitor_Id CHAR(34) NOT NULL COMMENT '监测点Id',
|
||||
Time_Id DATETIME(3) NOT NULL COMMENT '时间',
|
||||
AD_Type CHAR(32) NOT NULL COMMENT '检测指标,字典表',
|
||||
Data_Type CHAR(32) NOT NULL COMMENT '数据指标,只有数据源为分钟统计时候才会使用(最大、最小、平均、CP95,默认平均值),字典表',
|
||||
A_Value float DEFAULT NULL COMMENT 'A相值',
|
||||
B_Value float DEFAULT NULL COMMENT 'B相值',
|
||||
C_Value float DEFAULT NULL COMMENT 'C相值',
|
||||
T_Value float DEFAULT NULL COMMENT 'T相值(没有相别的则存这里)',
|
||||
Result_Flag int(1) NULL COMMENT '1合格 2不合格 4无法处理',
|
||||
<choose>
|
||||
<when test="isContrast">
|
||||
Num tinyint(1) unsigned DEFAULT 0 COMMENT '第几次检测',
|
||||
PRIMARY KEY (Monitor_Id, Time_Id, AD_Type, Num)
|
||||
</when>
|
||||
<otherwise>
|
||||
Script_Id CHAR(32) NOT NULL COMMENT '检测脚本表Id',
|
||||
Sort int(4) NOT NULL COMMENT '总检测脚本中的测试项序号',
|
||||
PRIMARY KEY (Monitor_Id, Time_Id, Script_Id, Sort, AD_Type)
|
||||
</otherwise>
|
||||
</choose>
|
||||
Dev_Monitor_Id CHAR(34) NOT NULL COMMENT '监测点Id',
|
||||
Time_Id DATETIME(3) NOT NULL COMMENT '时间',
|
||||
AD_Type CHAR(32) NOT NULL COMMENT '检测指标,字典表',
|
||||
Data_Type CHAR(32) NOT NULL COMMENT '数据指标,只有数据源为分钟统计时候才会使用(最大、最小、平均、CP95,默认平均值),字典表',
|
||||
A_Value float DEFAULT NULL COMMENT 'A相值',
|
||||
B_Value float DEFAULT NULL COMMENT 'B相值',
|
||||
C_Value float DEFAULT NULL COMMENT 'C相值',
|
||||
T_Value float DEFAULT NULL COMMENT 'T相值(没有相别的则存这里)',
|
||||
Result_Flag int(1) NULL COMMENT '1合格 2不合格 4无法处理',
|
||||
<choose>
|
||||
<when test="isContrast">
|
||||
Id char(32) COLLATE utf8mb4_bin NOT NULL COMMENT '主键Id',
|
||||
Std_Dev_Monitor_Id CHAR(34) NOT NULL COMMENT '标准设备监测点Id',
|
||||
Num tinyint(1) unsigned DEFAULT 0 COMMENT '第几次检测',
|
||||
A_Value_0 float NULL COMMENT 'A相基波有效值',
|
||||
B_Value_0 float NULL COMMENT 'B相基波有效值',
|
||||
C_Value_0 float NULL COMMENT 'B相基波有效值',
|
||||
PRIMARY KEY (Id)
|
||||
</when>
|
||||
<otherwise>
|
||||
Script_Id CHAR(32) NOT NULL COMMENT '检测脚本表Id',
|
||||
Sort int(4) NOT NULL COMMENT '总检测脚本中的测试项序号',
|
||||
PRIMARY KEY (Monitor_Id, Time_Id, Script_Id, Sort, AD_Type)
|
||||
</otherwise>
|
||||
</choose>
|
||||
) COMMENT='非谐波类原始数据表';
|
||||
</update>
|
||||
|
||||
@@ -35,27 +40,32 @@
|
||||
|
||||
<update id="genNonHarmonicResultTable">
|
||||
CREATE TABLE if not exists ad_non_harmonic_result_${code} (
|
||||
Monitor_Id CHAR(34) NOT NULL COMMENT '监测点Id',
|
||||
Time_Id DATETIME NULL COMMENT '时间',
|
||||
AD_Type CHAR(32) NOT NULL COMMENT '检测指标,字典表',
|
||||
Data_Type CHAR(32) NOT NULL COMMENT '数据指标,只有数据源为分钟统计时候才会使用(最大、最小、平均、CP95,默认平均值),字典表',
|
||||
A_Value json NULL COMMENT 'A相值',
|
||||
B_Value json NULL COMMENT 'B相值',
|
||||
C_Value json NULL COMMENT 'C相值',
|
||||
T_Value json NULL COMMENT 'T相值(没有相别的则存这里)',
|
||||
Result_Flag int(1) NOT NULL COMMENT '1合格 2不合格 4无法处理',
|
||||
<choose>
|
||||
<when test="isContrast">
|
||||
Num tinyint(1) unsigned DEFAULT 0 COMMENT '第几次检测',
|
||||
PRIMARY KEY (Monitor_Id, AD_Type, Num)
|
||||
</when>
|
||||
<otherwise>
|
||||
Script_Id CHAR(32) NOT NULL COMMENT '检测脚本表Id',
|
||||
Sort int(4) NOT NULL COMMENT '总检测脚本中的测试项序号',
|
||||
PRIMARY KEY (Monitor_Id, Script_Id, Sort, AD_Type)
|
||||
</otherwise>
|
||||
</choose>
|
||||
) COMMENT='非谐波类检测结果表';
|
||||
Dev_Monitor_Id CHAR(34) NOT NULL COMMENT '监测点Id',
|
||||
Time_Id DATETIME NULL COMMENT '时间',
|
||||
AD_Type CHAR(32) NOT NULL COMMENT '检测指标,字典表',
|
||||
Data_Type CHAR(32) NOT NULL COMMENT '数据指标,只有数据源为分钟统计时候才会使用(最大、最小、平均、CP95,默认平均值),字典表',
|
||||
A_Value json NULL COMMENT 'A相值',
|
||||
B_Value json NULL COMMENT 'B相值',
|
||||
C_Value json NULL COMMENT 'C相值',
|
||||
T_Value json NULL COMMENT 'T相值(没有相别的则存这里)',
|
||||
Result_Flag int(1) NOT NULL COMMENT '1合格 2不合格 4无法处理',
|
||||
<choose>
|
||||
<when test="isContrast">
|
||||
Id char(32) COLLATE utf8mb4_bin NOT NULL COMMENT '主键Id',
|
||||
Std_Dev_Monitor_Id CHAR(34) NOT NULL COMMENT '标准设备监测点Id',
|
||||
Num tinyint(1) unsigned DEFAULT 0 COMMENT '第几次检测',
|
||||
A_Value_0 json NULL COMMENT 'A相基波有效值',
|
||||
B_Value_0 json NULL COMMENT 'B相基波有效值',
|
||||
C_Value_0 json NULL COMMENT 'B相基波有效值',
|
||||
PRIMARY KEY (Id)
|
||||
</when>
|
||||
<otherwise>
|
||||
Script_Id CHAR(32) NOT NULL COMMENT '检测脚本表Id',
|
||||
Sort int(4) NOT NULL COMMENT '总检测脚本中的测试项序号',
|
||||
PRIMARY KEY (Monitor_Id, Script_Id, Sort, AD_Type)
|
||||
</otherwise>
|
||||
</choose>
|
||||
) COMMENT='非谐波类检测结果表';
|
||||
</update>
|
||||
|
||||
|
||||
|
||||
@@ -13,7 +13,7 @@ public class BaseResult {
|
||||
/**
|
||||
* 监测点Id
|
||||
*/
|
||||
private String monitorId;
|
||||
private String devMonitorId;
|
||||
|
||||
/**
|
||||
* 时间
|
||||
|
||||
@@ -10,8 +10,15 @@ import lombok.EqualsAndHashCode;
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
public class ContrastBaseResult extends BaseResult {
|
||||
|
||||
private String id;
|
||||
/**
|
||||
* 第几次检测
|
||||
*/
|
||||
private Integer num;
|
||||
|
||||
/**
|
||||
* 标准设备监测点id
|
||||
*/
|
||||
private String stdDevMonitorId;
|
||||
}
|
||||
|
||||
@@ -15,6 +15,15 @@ import lombok.EqualsAndHashCode;
|
||||
public class ContrastHarmonicResult extends ContrastBaseResult {
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
@TableField(value = "A_Value_0")
|
||||
private String aValue0;
|
||||
|
||||
@TableField(value = "B_Value_0")
|
||||
private String bValue0;
|
||||
|
||||
@TableField(value = "C_Value_0")
|
||||
private String cValue0;
|
||||
|
||||
/**
|
||||
* A相基波
|
||||
*/
|
||||
|
||||
@@ -13,9 +13,9 @@ public interface DetectionDataDealService extends IReplenishMybatisService<SimAn
|
||||
|
||||
|
||||
|
||||
Boolean acceptAdNon(List<? extends BaseResult> nonHarmonicResultList,String code);
|
||||
Boolean acceptNonHarmonic(List<? extends BaseResult> nonHarmonicResultList,String code);
|
||||
|
||||
Boolean acceptAd(List<? extends BaseResult> harmonicResultList,String code);
|
||||
Boolean acceptHarmonic(List<? extends BaseResult> harmonicResultList,String code);
|
||||
|
||||
Boolean acceptNonHarmonicResult(List<? extends BaseResult> nonHarmonicResultList, String code);
|
||||
|
||||
@@ -23,10 +23,12 @@ public interface DetectionDataDealService extends IReplenishMybatisService<SimAn
|
||||
|
||||
/**
|
||||
* 根据终端id查询终端所有监测项目是否合格
|
||||
*
|
||||
* @param isContrast
|
||||
* @param ids
|
||||
* @param valueType
|
||||
* @param adType
|
||||
* @param code
|
||||
* @return
|
||||
*/
|
||||
Map<String,Integer> devResult(List<String> ids,List<String> valueType,String code);
|
||||
Map<String,Integer> devResult(boolean isContrast,List<String> ids,List<String> adType,String code);
|
||||
}
|
||||
|
||||
@@ -36,16 +36,16 @@ public class DetectionDataServiceImpl extends ReplenishMybatisServiceImpl<Detect
|
||||
|
||||
@Override
|
||||
@Transactional
|
||||
public Boolean acceptAdNon(List<? extends BaseResult> nonHarmonicResultList, String code) {
|
||||
public Boolean acceptNonHarmonic(List<? extends BaseResult> nonHarmonicResultList, String code) {
|
||||
if (CollUtil.isNotEmpty(nonHarmonicResultList)) {
|
||||
String adNonTable = "ad_non_harmonic_";
|
||||
DynamicTableNameHandler.setTableName(adNonTable + code);
|
||||
|
||||
if (nonHarmonicResultList.get(0) instanceof SimAndDigNonHarmonicResult) {
|
||||
List<SimAndDigNonHarmonicResult> simAndDigNonHarmonicResults = BeanUtil.copyToList(nonHarmonicResultList, SimAndDigNonHarmonicResult.class);
|
||||
List<String> monitorIds = simAndDigNonHarmonicResults.stream().map(SimAndDigNonHarmonicResult::getMonitorId).distinct().collect(Collectors.toList());
|
||||
List<String> monitorIds = simAndDigNonHarmonicResults.stream().map(SimAndDigNonHarmonicResult::getDevMonitorId).distinct().collect(Collectors.toList());
|
||||
if (CollUtil.isNotEmpty(monitorIds)) {
|
||||
simAndDigNonHarmonicService.remove(new LambdaQueryWrapper<SimAndDigNonHarmonicResult>().in(SimAndDigNonHarmonicResult::getMonitorId, monitorIds)
|
||||
simAndDigNonHarmonicService.remove(new LambdaQueryWrapper<SimAndDigNonHarmonicResult>().in(SimAndDigNonHarmonicResult::getDevMonitorId, monitorIds)
|
||||
.eq(SimAndDigNonHarmonicResult::getScriptId, simAndDigNonHarmonicResults.get(0).getScriptId())
|
||||
.eq(SimAndDigNonHarmonicResult::getSort, simAndDigNonHarmonicResults.get(0).getSort()));
|
||||
simAndDigNonHarmonicService.saveBatch(simAndDigNonHarmonicResults, 100);
|
||||
@@ -54,12 +54,7 @@ public class DetectionDataServiceImpl extends ReplenishMybatisServiceImpl<Detect
|
||||
|
||||
if (nonHarmonicResultList.get(0) instanceof ContrastNonHarmonicResult) {
|
||||
List<ContrastNonHarmonicResult> contrastNonHarmonicResults = BeanUtil.copyToList(nonHarmonicResultList, ContrastNonHarmonicResult.class);
|
||||
List<String> monitorIds = contrastNonHarmonicResults.stream().map(ContrastNonHarmonicResult::getMonitorId).distinct().collect(Collectors.toList());
|
||||
if (CollUtil.isNotEmpty(monitorIds)) {
|
||||
contrastNonHarmonicService.remove(new LambdaQueryWrapper<ContrastNonHarmonicResult>().in(ContrastNonHarmonicResult::getMonitorId, monitorIds)
|
||||
.eq(ContrastNonHarmonicResult::getNum, contrastNonHarmonicResults.get(0).getNum()));
|
||||
contrastNonHarmonicService.saveBatch(contrastNonHarmonicResults, 100);
|
||||
}
|
||||
contrastNonHarmonicService.saveBatch(contrastNonHarmonicResults);
|
||||
}
|
||||
|
||||
DynamicTableNameHandler.remove();
|
||||
@@ -70,30 +65,25 @@ public class DetectionDataServiceImpl extends ReplenishMybatisServiceImpl<Detect
|
||||
|
||||
@Override
|
||||
@Transactional
|
||||
public Boolean acceptAd(List<? extends BaseResult> harmonicResultList, String code) {
|
||||
public Boolean acceptHarmonic(List<? extends BaseResult> harmonicResultList, String code) {
|
||||
if (CollUtil.isNotEmpty(harmonicResultList)) {
|
||||
String adTable = "ad_harmonic_";
|
||||
DynamicTableNameHandler.setTableName(adTable + code);
|
||||
|
||||
if (harmonicResultList.get(0) instanceof SimAndDigHarmonicResult) {
|
||||
List<SimAndDigHarmonicResult> simAndDigHarmonicResultList = BeanUtil.copyToList(harmonicResultList, SimAndDigHarmonicResult.class);
|
||||
List<String> monitorIds = simAndDigHarmonicResultList.stream().map(SimAndDigHarmonicResult::getMonitorId).distinct().collect(Collectors.toList());
|
||||
List<String> monitorIds = simAndDigHarmonicResultList.stream().map(SimAndDigHarmonicResult::getDevMonitorId).distinct().collect(Collectors.toList());
|
||||
if (CollUtil.isNotEmpty(monitorIds)) {
|
||||
simAndDigHarmonicService.remove(new LambdaQueryWrapper<SimAndDigHarmonicResult>().in(SimAndDigHarmonicResult::getMonitorId, monitorIds)
|
||||
simAndDigHarmonicService.remove(new LambdaQueryWrapper<SimAndDigHarmonicResult>().in(SimAndDigHarmonicResult::getDevMonitorId, monitorIds)
|
||||
.eq(SimAndDigHarmonicResult::getScriptId, simAndDigHarmonicResultList.get(0).getScriptId())
|
||||
.eq(SimAndDigHarmonicResult::getSort, simAndDigHarmonicResultList.get(0).getSort()));
|
||||
simAndDigHarmonicService.saveBatch(simAndDigHarmonicResultList, 100);
|
||||
simAndDigHarmonicService.saveBatch(simAndDigHarmonicResultList);
|
||||
}
|
||||
}
|
||||
|
||||
if (harmonicResultList.get(0) instanceof ContrastHarmonicResult) {
|
||||
List<ContrastHarmonicResult> contrastHarmonicResultList = BeanUtil.copyToList(harmonicResultList, ContrastHarmonicResult.class);
|
||||
List<String> monitorIds = contrastHarmonicResultList.stream().map(ContrastHarmonicResult::getMonitorId).distinct().collect(Collectors.toList());
|
||||
if (CollUtil.isNotEmpty(monitorIds)) {
|
||||
contrastHarmonicService.remove(new LambdaQueryWrapper<ContrastHarmonicResult>().in(ContrastHarmonicResult::getMonitorId, monitorIds)
|
||||
.eq(ContrastHarmonicResult::getNum, contrastHarmonicResultList.get(0).getNum()));
|
||||
contrastHarmonicService.saveBatch(contrastHarmonicResultList, 100);
|
||||
}
|
||||
contrastHarmonicService.saveBatch(contrastHarmonicResultList);
|
||||
}
|
||||
|
||||
DynamicTableNameHandler.remove();
|
||||
@@ -110,9 +100,9 @@ public class DetectionDataServiceImpl extends ReplenishMybatisServiceImpl<Detect
|
||||
DynamicTableNameHandler.setTableName(adNonTableResult + code);
|
||||
if (nonHarmonicResultList.get(0) instanceof SimAndDigNonHarmonicResult) {
|
||||
List<SimAndDigNonHarmonicResult> simAndDigNonHarmonicResultList = BeanUtil.copyToList(nonHarmonicResultList, SimAndDigNonHarmonicResult.class);
|
||||
List<String> monitorIds = simAndDigNonHarmonicResultList.stream().map(SimAndDigNonHarmonicResult::getMonitorId).distinct().collect(Collectors.toList());
|
||||
List<String> monitorIds = simAndDigNonHarmonicResultList.stream().map(SimAndDigNonHarmonicResult::getDevMonitorId).distinct().collect(Collectors.toList());
|
||||
if (CollUtil.isNotEmpty(monitorIds)) {
|
||||
simAndDigNonHarmonicService.remove(new LambdaQueryWrapper<SimAndDigNonHarmonicResult>().in(SimAndDigNonHarmonicResult::getMonitorId, monitorIds)
|
||||
simAndDigNonHarmonicService.remove(new LambdaQueryWrapper<SimAndDigNonHarmonicResult>().in(SimAndDigNonHarmonicResult::getDevMonitorId, monitorIds)
|
||||
.eq(SimAndDigNonHarmonicResult::getScriptId, simAndDigNonHarmonicResultList.get(0).getScriptId())
|
||||
.eq(SimAndDigNonHarmonicResult::getSort, simAndDigNonHarmonicResultList.get(0).getSort()));
|
||||
simAndDigNonHarmonicService.saveBatch(simAndDigNonHarmonicResultList, 100);
|
||||
@@ -120,13 +110,8 @@ public class DetectionDataServiceImpl extends ReplenishMybatisServiceImpl<Detect
|
||||
}
|
||||
if (nonHarmonicResultList.get(0) instanceof ContrastNonHarmonicResult) {
|
||||
List<ContrastNonHarmonicResult> contrastNonHarmonicResultList = BeanUtil.copyToList(nonHarmonicResultList, ContrastNonHarmonicResult.class);
|
||||
List<String> monitorIds = contrastNonHarmonicResultList.stream().map(ContrastNonHarmonicResult::getMonitorId).distinct().collect(Collectors.toList());
|
||||
if (CollUtil.isNotEmpty(monitorIds)) {
|
||||
contrastNonHarmonicService.remove(new LambdaQueryWrapper<ContrastNonHarmonicResult>().in(ContrastNonHarmonicResult::getMonitorId, monitorIds)
|
||||
.eq(ContrastNonHarmonicResult::getAdType, contrastNonHarmonicResultList.get(0).getAdType())
|
||||
.eq(ContrastNonHarmonicResult::getNum, contrastNonHarmonicResultList.get(0).getNum()));
|
||||
contrastNonHarmonicService.saveBatch(contrastNonHarmonicResultList, 100);
|
||||
}
|
||||
contrastNonHarmonicService.saveBatch(contrastNonHarmonicResultList);
|
||||
|
||||
}
|
||||
DynamicTableNameHandler.remove();
|
||||
}
|
||||
@@ -141,9 +126,9 @@ public class DetectionDataServiceImpl extends ReplenishMybatisServiceImpl<Detect
|
||||
DynamicTableNameHandler.setTableName(adTableResult + code);
|
||||
if (harmonicResultList.get(0) instanceof SimAndDigHarmonicResult) {
|
||||
List<SimAndDigHarmonicResult> simAndDigHarmonicResultList = BeanUtil.copyToList(harmonicResultList, SimAndDigHarmonicResult.class);
|
||||
List<String> monitorIds = simAndDigHarmonicResultList.stream().map(SimAndDigHarmonicResult::getMonitorId).distinct().collect(Collectors.toList());
|
||||
List<String> monitorIds = simAndDigHarmonicResultList.stream().map(SimAndDigHarmonicResult::getDevMonitorId).distinct().collect(Collectors.toList());
|
||||
if (CollUtil.isNotEmpty(monitorIds)) {
|
||||
simAndDigHarmonicService.remove(new LambdaQueryWrapper<SimAndDigHarmonicResult>().in(SimAndDigHarmonicResult::getMonitorId, monitorIds)
|
||||
simAndDigHarmonicService.remove(new LambdaQueryWrapper<SimAndDigHarmonicResult>().in(SimAndDigHarmonicResult::getDevMonitorId, monitorIds)
|
||||
.eq(SimAndDigHarmonicResult::getScriptId, simAndDigHarmonicResultList.get(0).getScriptId())
|
||||
.eq(SimAndDigHarmonicResult::getSort, simAndDigHarmonicResultList.get(0).getSort()));
|
||||
simAndDigHarmonicService.saveBatch(simAndDigHarmonicResultList, 100);
|
||||
@@ -152,13 +137,7 @@ public class DetectionDataServiceImpl extends ReplenishMybatisServiceImpl<Detect
|
||||
|
||||
if (harmonicResultList.get(0) instanceof ContrastHarmonicResult) {
|
||||
List<ContrastHarmonicResult> contrastHarmonicResultList = BeanUtil.copyToList(harmonicResultList, ContrastHarmonicResult.class);
|
||||
List<String> monitorIds = contrastHarmonicResultList.stream().map(ContrastHarmonicResult::getMonitorId).distinct().collect(Collectors.toList());
|
||||
if (CollUtil.isNotEmpty(monitorIds)) {
|
||||
contrastHarmonicService.remove(new LambdaQueryWrapper<ContrastHarmonicResult>().in(ContrastHarmonicResult::getMonitorId, monitorIds)
|
||||
.eq(ContrastHarmonicResult::getAdType, contrastHarmonicResultList.get(0).getAdType())
|
||||
.eq(ContrastHarmonicResult::getNum, contrastHarmonicResultList.get(0).getNum()));
|
||||
contrastHarmonicService.saveBatch(contrastHarmonicResultList, 100);
|
||||
}
|
||||
contrastHarmonicService.saveBatch(contrastHarmonicResultList);
|
||||
}
|
||||
DynamicTableNameHandler.remove();
|
||||
return true;
|
||||
@@ -167,33 +146,56 @@ public class DetectionDataServiceImpl extends ReplenishMybatisServiceImpl<Detect
|
||||
}
|
||||
|
||||
@Override
|
||||
public Map<String, Integer> devResult(List<String> ids, List<String> valueType, String code) {
|
||||
List<Integer> disabledScriptDtlIndexs = detectionDataDealMapper.listDisabledScriptDtlIndexs(ids.get(0));
|
||||
List<SimAndDigNonHarmonicResult> noHarm = new ArrayList<>();
|
||||
for (String id : ids) {
|
||||
DynamicTableNameHandler.setTableName("ad_non_harmonic_result_" + code);
|
||||
noHarm.addAll(simAndDigNonHarmonicService.list(new LambdaQueryWrapper<SimAndDigNonHarmonicResult>()
|
||||
.like(SimAndDigNonHarmonicResult::getMonitorId, id)
|
||||
.notIn(CollUtil.isNotEmpty(disabledScriptDtlIndexs), SimAndDigNonHarmonicResult::getSort, disabledScriptDtlIndexs)
|
||||
.in(CollUtil.isNotEmpty(valueType), SimAndDigNonHarmonicResult::getAdType, valueType)
|
||||
));
|
||||
}
|
||||
DynamicTableNameHandler.remove();
|
||||
List<SimAndDigHarmonicResult> harm = new ArrayList<>();
|
||||
for (String id : ids) {
|
||||
DynamicTableNameHandler.setTableName("ad_harmonic_result_" + code);
|
||||
harm.addAll(this.list(new LambdaQueryWrapper<SimAndDigHarmonicResult>()
|
||||
.like(SimAndDigHarmonicResult::getMonitorId, id)
|
||||
.notIn(CollUtil.isNotEmpty(disabledScriptDtlIndexs), SimAndDigHarmonicResult::getSort, disabledScriptDtlIndexs)
|
||||
.in(CollUtil.isNotEmpty(valueType), SimAndDigHarmonicResult::getAdType, valueType)
|
||||
));
|
||||
}
|
||||
DynamicTableNameHandler.remove();
|
||||
Map<String, List<Integer>> noHarmMap = noHarm.stream().collect(Collectors.groupingBy(x -> x.getMonitorId().split("_")[0],
|
||||
Collectors.mapping(SimAndDigNonHarmonicResult::getResultFlag, Collectors.toList())));
|
||||
Map<String, List<Integer>> harmMap = harm.stream().collect(Collectors.groupingBy(x -> x.getMonitorId().split("_")[0],
|
||||
Collectors.mapping(SimAndDigHarmonicResult::getResultFlag, Collectors.toList())));
|
||||
public Map<String, Integer> devResult(boolean isContrast, List<String> ids, List<String> adType, String code) {
|
||||
Map<String, Integer> map = new HashMap<>(2);
|
||||
List<BaseResult> noHarm = new ArrayList<>();
|
||||
List<BaseResult> harm = new ArrayList<>();
|
||||
if (isContrast) {
|
||||
DynamicTableNameHandler.setTableName("ad_non_harmonic_result_" + code);
|
||||
LambdaQueryWrapper<ContrastNonHarmonicResult> wrapper1 = new LambdaQueryWrapper<ContrastNonHarmonicResult>()
|
||||
.in(CollUtil.isNotEmpty(adType), ContrastNonHarmonicResult::getAdType, adType);
|
||||
for (String id : ids) {
|
||||
wrapper1.like(ContrastNonHarmonicResult::getDevMonitorId, id);
|
||||
}
|
||||
noHarm.addAll(contrastNonHarmonicService.list(wrapper1));
|
||||
DynamicTableNameHandler.remove();
|
||||
|
||||
DynamicTableNameHandler.setTableName("ad_harmonic_result_" + code);
|
||||
LambdaQueryWrapper<ContrastHarmonicResult> wrapper2 = new LambdaQueryWrapper<ContrastHarmonicResult>()
|
||||
.in(CollUtil.isNotEmpty(adType), ContrastHarmonicResult::getAdType, adType);
|
||||
for (String id : ids) {
|
||||
wrapper2.like(ContrastHarmonicResult::getDevMonitorId, id);
|
||||
}
|
||||
harm.addAll(contrastHarmonicService.list(wrapper2));
|
||||
DynamicTableNameHandler.remove();
|
||||
} else {
|
||||
List<Integer> disabledScriptDtlIndexs = detectionDataDealMapper.listDisabledScriptDtlIndexs(ids.get(0));
|
||||
|
||||
DynamicTableNameHandler.setTableName("ad_non_harmonic_result_" + code);
|
||||
LambdaQueryWrapper<SimAndDigNonHarmonicResult> wrapper1 = new LambdaQueryWrapper<SimAndDigNonHarmonicResult>()
|
||||
.notIn(CollUtil.isNotEmpty(disabledScriptDtlIndexs), SimAndDigNonHarmonicResult::getSort, disabledScriptDtlIndexs)
|
||||
.in(CollUtil.isNotEmpty(adType), SimAndDigNonHarmonicResult::getAdType, adType);
|
||||
for (String id : ids) {
|
||||
wrapper1.like(SimAndDigNonHarmonicResult::getDevMonitorId, id);
|
||||
}
|
||||
noHarm.addAll(simAndDigNonHarmonicService.list(wrapper1));
|
||||
DynamicTableNameHandler.remove();
|
||||
|
||||
DynamicTableNameHandler.setTableName("ad_harmonic_result_" + code);
|
||||
LambdaQueryWrapper<SimAndDigHarmonicResult> wrapper2 = new LambdaQueryWrapper<SimAndDigHarmonicResult>()
|
||||
.notIn(CollUtil.isNotEmpty(disabledScriptDtlIndexs), SimAndDigHarmonicResult::getSort, disabledScriptDtlIndexs)
|
||||
.in(CollUtil.isNotEmpty(adType), SimAndDigHarmonicResult::getAdType, adType);
|
||||
for (String id : ids) {
|
||||
wrapper2.like(SimAndDigHarmonicResult::getDevMonitorId, id);
|
||||
}
|
||||
harm.addAll(this.list(wrapper2));
|
||||
DynamicTableNameHandler.remove();
|
||||
}
|
||||
|
||||
Map<String, List<Integer>> noHarmMap = noHarm.stream().collect(Collectors.groupingBy(x -> x.getDevMonitorId().split("_")[0],
|
||||
Collectors.mapping(BaseResult::getResultFlag, Collectors.toList())));
|
||||
Map<String, List<Integer>> harmMap = harm.stream().collect(Collectors.groupingBy(x -> x.getDevMonitorId().split("_")[0],
|
||||
Collectors.mapping(BaseResult::getResultFlag, Collectors.toList())));
|
||||
for (String id : ids) {
|
||||
List<Integer> resultFlags = new ArrayList<>();
|
||||
if (noHarmMap.containsKey(id)) {
|
||||
|
||||
@@ -57,7 +57,7 @@ public class SimAndDigHarmonicServiceImpl extends ServiceImpl<SimAndDigHarmonicM
|
||||
if ("-1".equals(chnNum)) {
|
||||
monitorId = deviceId;
|
||||
}
|
||||
wrapper.like(SimAndDigHarmonicResult::getMonitorId, monitorId)
|
||||
wrapper.like(SimAndDigHarmonicResult::getDevMonitorId, monitorId)
|
||||
.eq(ObjectUtil.isNotNull(scriptId), SimAndDigHarmonicResult::getScriptId, scriptId)
|
||||
.in(CollUtil.isNotEmpty(sort), SimAndDigHarmonicResult::getSort, sort);
|
||||
List<SimAndDigHarmonicResult> list = this.getBaseMapper().selectJoinList(SimAndDigHarmonicResult.class, wrapper);
|
||||
@@ -70,7 +70,7 @@ public class SimAndDigHarmonicServiceImpl extends ServiceImpl<SimAndDigHarmonicM
|
||||
String prefix = "ad_harmonic_";
|
||||
DynamicTableNameHandler.setTableName(prefix + param.getCode());
|
||||
MPJLambdaWrapper<SimAndDigHarmonicResult> wrapper = new MPJLambdaWrapper<>();
|
||||
wrapper.like(SimAndDigHarmonicResult::getMonitorId, param.getDevId() + "_" + param.getDevNum())
|
||||
wrapper.like(SimAndDigHarmonicResult::getDevMonitorId, param.getDevId() + "_" + param.getDevNum())
|
||||
.eq(ObjectUtil.isNotNull(param.getScriptId()), SimAndDigHarmonicResult::getScriptId, param.getScriptId())
|
||||
.in(ObjectUtil.isNotEmpty(param.getIndex()), SimAndDigHarmonicResult::getSort, param.getIndex())
|
||||
.orderByAsc(SimAndDigHarmonicResult::getTimeId)
|
||||
@@ -137,7 +137,7 @@ public class SimAndDigHarmonicServiceImpl extends ServiceImpl<SimAndDigHarmonicM
|
||||
String prefix = "ad_harmonic_result_";
|
||||
DynamicTableNameHandler.setTableName(prefix + param.getCode());
|
||||
MPJLambdaWrapper<SimAndDigHarmonicResult> wrapper = new MPJLambdaWrapper<>();
|
||||
wrapper.like(SimAndDigHarmonicResult::getMonitorId, param.getDevId() + "_" + param.getDevNum())
|
||||
wrapper.like(SimAndDigHarmonicResult::getDevMonitorId, param.getDevId() + "_" + param.getDevNum())
|
||||
.eq(ObjectUtil.isNotNull(param.getScriptId()), SimAndDigHarmonicResult::getScriptId, param.getScriptId())
|
||||
.in(ObjectUtil.isNotEmpty(param.getIndex()), SimAndDigHarmonicResult::getSort, param.getIndex())
|
||||
.orderByAsc(SimAndDigHarmonicResult::getTimeId);
|
||||
@@ -207,7 +207,7 @@ public class SimAndDigHarmonicServiceImpl extends ServiceImpl<SimAndDigHarmonicM
|
||||
DynamicTableNameHandler.setTableName(prefix + param.getCode());
|
||||
LambdaQueryWrapper<SimAndDigHarmonicResult> lambdaQueryWrapper = new LambdaQueryWrapper<>();
|
||||
lambdaQueryWrapper.select(SimAndDigHarmonicResult::getSort)
|
||||
.likeRight(StrUtil.isNotBlank(param.getDevId()), SimAndDigHarmonicResult::getMonitorId, param.getDevId())
|
||||
.likeRight(StrUtil.isNotBlank(param.getDevId()), SimAndDigHarmonicResult::getDevMonitorId, param.getDevId())
|
||||
.ne(SimAndDigHarmonicResult::getResultFlag, 1)
|
||||
.ne(SimAndDigHarmonicResult::getResultFlag, 4)
|
||||
.ne(SimAndDigHarmonicResult::getResultFlag, 5)
|
||||
@@ -218,7 +218,7 @@ public class SimAndDigHarmonicServiceImpl extends ServiceImpl<SimAndDigHarmonicM
|
||||
DynamicTableNameHandler.setTableName(prefixNon + param.getCode());
|
||||
LambdaQueryWrapper<SimAndDigNonHarmonicResult> resultLambdaQueryWrapper = new LambdaQueryWrapper<>();
|
||||
resultLambdaQueryWrapper.select(SimAndDigNonHarmonicResult::getSort)
|
||||
.likeRight(StrUtil.isNotBlank(param.getDevId()), SimAndDigNonHarmonicResult::getMonitorId, param.getDevId())
|
||||
.likeRight(StrUtil.isNotBlank(param.getDevId()), SimAndDigNonHarmonicResult::getDevMonitorId, param.getDevId())
|
||||
.ne(SimAndDigNonHarmonicResult::getResultFlag, 1)
|
||||
.ne(SimAndDigNonHarmonicResult::getResultFlag, 4)
|
||||
.ne(SimAndDigNonHarmonicResult::getResultFlag, 5)
|
||||
@@ -235,7 +235,7 @@ public class SimAndDigHarmonicServiceImpl extends ServiceImpl<SimAndDigHarmonicM
|
||||
String prefix = "ad_harmonic_result_";
|
||||
DynamicTableNameHandler.setTableName(prefix + singleNonHarmParam.getPlanCode());
|
||||
MPJLambdaWrapper<SimAndDigHarmonicResult> wrapper = new MPJLambdaWrapper<>();
|
||||
wrapper.like(SimAndDigHarmonicResult::getMonitorId, singleNonHarmParam.getDevId() + "_" + singleNonHarmParam.getChannelNo())
|
||||
wrapper.like(SimAndDigHarmonicResult::getDevMonitorId, singleNonHarmParam.getDevId() + "_" + singleNonHarmParam.getChannelNo())
|
||||
.eq(SimAndDigHarmonicResult::getSort, singleNonHarmParam.getSort())
|
||||
.eq(SimAndDigHarmonicResult::getAdType, singleNonHarmParam.getAdType());
|
||||
List<SimAndDigHarmonicResult> adHarmonicResults = this.getBaseMapper().selectJoinList(SimAndDigHarmonicResult.class, wrapper);
|
||||
@@ -255,7 +255,7 @@ public class SimAndDigHarmonicServiceImpl extends ServiceImpl<SimAndDigHarmonicM
|
||||
wrapper.selectAll(SimAndDigHarmonicResult.class)
|
||||
.selectAs(DictTree::getCode, SimAndDigHarmonicResult::getAdType)
|
||||
.leftJoin(DictTree.class, DictTree::getId, SimAndDigHarmonicResult::getAdType).eq(SimAndDigHarmonicResult::getScriptId, scriptId)
|
||||
.likeRight(SimAndDigHarmonicResult::getMonitorId, devId);
|
||||
.likeRight(SimAndDigHarmonicResult::getDevMonitorId, devId);
|
||||
List<SimAndDigHarmonicResult> results = this.getBaseMapper().selectJoinList(SimAndDigHarmonicResult.class, wrapper);
|
||||
DynamicTableNameHandler.remove();
|
||||
return results;
|
||||
@@ -269,7 +269,7 @@ public class SimAndDigHarmonicServiceImpl extends ServiceImpl<SimAndDigHarmonicM
|
||||
wrapper.selectAll(SimAndDigHarmonicResult.class)
|
||||
.selectAs(DictTree::getCode, SimAndDigHarmonicResult::getAdType)
|
||||
.leftJoin(DictTree.class, DictTree::getId, SimAndDigHarmonicResult::getAdType).eq(SimAndDigHarmonicResult::getScriptId, scriptId)
|
||||
.likeRight(SimAndDigHarmonicResult::getMonitorId, devId);
|
||||
.likeRight(SimAndDigHarmonicResult::getDevMonitorId, devId);
|
||||
List<SimAndDigHarmonicResult> results = this.getBaseMapper().selectJoinList(SimAndDigHarmonicResult.class, wrapper);
|
||||
DynamicTableNameHandler.remove();
|
||||
return results;
|
||||
|
||||
@@ -48,7 +48,7 @@ public class SimAndDigNonHarmonicServiceImpl extends ServiceImpl<SimAndDigNonHar
|
||||
if ("-1".equals(chnNum)) {
|
||||
monitorId = deviceId;
|
||||
}
|
||||
wrapper.like(SimAndDigNonHarmonicResult::getMonitorId, monitorId)
|
||||
wrapper.like(SimAndDigNonHarmonicResult::getDevMonitorId, monitorId)
|
||||
.eq(ObjectUtil.isNotNull(scriptId), SimAndDigNonHarmonicResult::getScriptId, scriptId)
|
||||
.in(CollUtil.isNotEmpty(sort), SimAndDigNonHarmonicResult::getSort, sort);
|
||||
List<SimAndDigNonHarmonicResult> list = this.getBaseMapper().selectJoinList(SimAndDigNonHarmonicResult.class, wrapper);
|
||||
@@ -61,7 +61,7 @@ public class SimAndDigNonHarmonicServiceImpl extends ServiceImpl<SimAndDigNonHar
|
||||
String prefix = "ad_non_harmonic_";
|
||||
DynamicTableNameHandler.setTableName(prefix + param.getCode());
|
||||
MPJLambdaWrapper<SimAndDigNonHarmonicResult> wrapper = new MPJLambdaWrapper<>();
|
||||
wrapper.like(SimAndDigNonHarmonicResult::getMonitorId, param.getDevId() + "_" + param.getDevNum())
|
||||
wrapper.like(SimAndDigNonHarmonicResult::getDevMonitorId, param.getDevId() + "_" + param.getDevNum())
|
||||
.eq(ObjectUtil.isNotNull(param.getScriptId()), SimAndDigNonHarmonicResult::getScriptId, param.getScriptId())
|
||||
.in(ObjectUtil.isNotEmpty(param.getIndex()), SimAndDigNonHarmonicResult::getSort, param.getIndex());
|
||||
List<SimAndDigNonHarmonicResult> SimAndDigHarmonicResults = this.getBaseMapper().selectJoinList(SimAndDigNonHarmonicResult.class, wrapper);
|
||||
@@ -95,7 +95,7 @@ public class SimAndDigNonHarmonicServiceImpl extends ServiceImpl<SimAndDigNonHar
|
||||
String prefix = "ad_non_harmonic_result_";
|
||||
DynamicTableNameHandler.setTableName(prefix + param.getCode());
|
||||
MPJLambdaWrapper<SimAndDigNonHarmonicResult> wrapper = new MPJLambdaWrapper<>();
|
||||
wrapper.like(SimAndDigNonHarmonicResult::getMonitorId, param.getDevId() + "_" + param.getDevNum())
|
||||
wrapper.like(SimAndDigNonHarmonicResult::getDevMonitorId, param.getDevId() + "_" + param.getDevNum())
|
||||
.eq(ObjectUtil.isNotNull(param.getScriptId()), SimAndDigNonHarmonicResult::getScriptId, param.getScriptId())
|
||||
.in(ObjectUtil.isNotEmpty(param.getIndex()), SimAndDigNonHarmonicResult::getSort, param.getIndex());
|
||||
|
||||
@@ -141,7 +141,7 @@ public class SimAndDigNonHarmonicServiceImpl extends ServiceImpl<SimAndDigNonHar
|
||||
String prefix = "ad_non_harmonic_result_";
|
||||
DynamicTableNameHandler.setTableName(prefix + singleNonHarmParam.getPlanCode());
|
||||
MPJLambdaWrapper<SimAndDigNonHarmonicResult> wrapper = new MPJLambdaWrapper<>();
|
||||
wrapper.like(SimAndDigNonHarmonicResult::getMonitorId, singleNonHarmParam.getDevId() + "_" + singleNonHarmParam.getChannelNo())
|
||||
wrapper.like(SimAndDigNonHarmonicResult::getDevMonitorId, singleNonHarmParam.getDevId() + "_" + singleNonHarmParam.getChannelNo())
|
||||
.eq(SimAndDigNonHarmonicResult::getSort, singleNonHarmParam.getSort())
|
||||
.eq(SimAndDigNonHarmonicResult::getAdType, singleNonHarmParam.getAdType());
|
||||
List<SimAndDigNonHarmonicResult> SimAndDigHarmonicResults = this.getBaseMapper().selectJoinList(SimAndDigNonHarmonicResult.class, wrapper);
|
||||
@@ -161,7 +161,7 @@ public class SimAndDigNonHarmonicServiceImpl extends ServiceImpl<SimAndDigNonHar
|
||||
.selectAs(DictTree::getCode, SimAndDigNonHarmonicResult::getAdType)
|
||||
.leftJoin(DictTree.class, DictTree::getId, SimAndDigNonHarmonicResult::getAdType)
|
||||
.eq(SimAndDigNonHarmonicResult::getScriptId, scriptId)
|
||||
.likeRight(SimAndDigNonHarmonicResult::getMonitorId, devId);
|
||||
.likeRight(SimAndDigNonHarmonicResult::getDevMonitorId, devId);
|
||||
List<SimAndDigNonHarmonicResult> results = this.getBaseMapper().selectJoinList(SimAndDigNonHarmonicResult.class, wrapper);
|
||||
DynamicTableNameHandler.remove();
|
||||
return results;
|
||||
@@ -172,7 +172,7 @@ public class SimAndDigNonHarmonicServiceImpl extends ServiceImpl<SimAndDigNonHar
|
||||
String prefix = "ad_non_harmonic_result_";
|
||||
DynamicTableNameHandler.setTableName(prefix + param.getPlanCode());
|
||||
MPJLambdaWrapper<SimAndDigNonHarmonicResult> wrapper = new MPJLambdaWrapper<>();
|
||||
wrapper.like(SimAndDigNonHarmonicResult::getMonitorId, param.getDevId() + "_" + param.getChannelNo())
|
||||
wrapper.like(SimAndDigNonHarmonicResult::getDevMonitorId, param.getDevId() + "_" + param.getChannelNo())
|
||||
.in(SimAndDigNonHarmonicResult::getSort, param.getSortList())
|
||||
.in(SimAndDigNonHarmonicResult::getAdType, param.getValueTypeList());
|
||||
List<SimAndDigNonHarmonicResult> adNonHarmonicResults = this.getBaseMapper().selectJoinList(SimAndDigNonHarmonicResult.class, wrapper);
|
||||
@@ -190,7 +190,7 @@ public class SimAndDigNonHarmonicServiceImpl extends ServiceImpl<SimAndDigNonHar
|
||||
.selectAs(DictTree::getCode, SimAndDigNonHarmonicResult::getAdType)
|
||||
.leftJoin(DictTree.class, DictTree::getId, SimAndDigNonHarmonicResult::getAdType)
|
||||
.eq(SimAndDigNonHarmonicResult::getScriptId, scriptId)
|
||||
.likeRight(SimAndDigNonHarmonicResult::getMonitorId, devId);
|
||||
.likeRight(SimAndDigNonHarmonicResult::getDevMonitorId, devId);
|
||||
List<SimAndDigNonHarmonicResult> results = this.getBaseMapper().selectJoinList(SimAndDigNonHarmonicResult.class, wrapper);
|
||||
DynamicTableNameHandler.remove();
|
||||
return results;
|
||||
|
||||
@@ -35,15 +35,20 @@ public class TableGenServiceImpl implements TableGenService {
|
||||
}
|
||||
|
||||
String sql = "CREATE TABLE AD_Harmonic_" + code + " (\n" +
|
||||
" Monitor_Id CHAR(34) NOT NULL COMMENT '监测点Id',\n" +
|
||||
" Dev_Monitor_Id CHAR(34) NOT NULL COMMENT '监测点Id',\n" +
|
||||
" Time_Id DATETIME(3) NOT NULL COMMENT '时间',\n" +
|
||||
" AD_Type CHAR(32) NOT NULL COMMENT '检测指标,字典表',\n" +
|
||||
" Data_Type CHAR(32) NOT NULL COMMENT '数据指标,只有数据源为分钟统计时候才会使用(最大、最小、平均、CP95,默认平均值),字典表',\n" +
|
||||
" Result_Flag int(1) NULL COMMENT '0不合格 1合格 4无法处理',\n" +
|
||||
A + B + C +
|
||||
(isContrast ?
|
||||
" Num tinyint(1) unsigned DEFAULT 0 COMMENT '第几次检测',\n" +
|
||||
" PRIMARY KEY (Monitor_Id,Time_Id, AD_Type, Num)\n"
|
||||
"Id char(32) COLLATE utf8mb4_bin NOT NULL COMMENT '主键Id',\n" +
|
||||
"Std_Dev_Monitor_Id CHAR(34) NOT NULL COMMENT '标准设备监测点Id',\n" +
|
||||
"Num tinyint(1) unsigned DEFAULT 0 COMMENT '第几次检测',\n" +
|
||||
"A_Value_0 float NULL COMMENT 'A相基波有效值',\n" +
|
||||
"C_Value_0 float NULL COMMENT 'B相基波有效值',\n" +
|
||||
"B_Value_0 float NULL COMMENT 'B相基波有效值',\n" +
|
||||
"PRIMARY KEY (Id)\n"
|
||||
:
|
||||
" Script_Id CHAR(32) NOT NULL COMMENT '检测脚本表Id',\n" +
|
||||
" Sort int(4) NOT NULL COMMENT '总检测脚本中的测试项序号',\n" +
|
||||
@@ -55,15 +60,20 @@ public class TableGenServiceImpl implements TableGenService {
|
||||
String b = B.toString().replaceAll("float", "json");
|
||||
String c = C.toString().replaceAll("float", "json");
|
||||
String sql2 = "CREATE TABLE AD_Harmonic_Result_" + code + " (\n" +
|
||||
" Monitor_Id CHAR(34) NOT NULL COMMENT '监测点Id',\n" +
|
||||
" Dev_Monitor_Id CHAR(34) NOT NULL COMMENT '监测点Id',\n" +
|
||||
" Time_Id DATETIME(3) NULL COMMENT '时间',\n" +
|
||||
" AD_Type CHAR(32) NOT NULL COMMENT '检测指标,字典表',\n" +
|
||||
" Data_Type CHAR(32) NOT NULL COMMENT '数据指标,只有数据源为分钟统计时候才会使用(最大、最小、平均、CP95,默认平均值),字典表',\n" +
|
||||
" Result_Flag int(1) NOT NULL COMMENT '1合格 2不合格 4无法处理',\n" +
|
||||
a + b + c +
|
||||
(isContrast ?
|
||||
" Num tinyint(1) unsigned DEFAULT 0 COMMENT '第几次检测',\n" +
|
||||
" PRIMARY KEY (Monitor_Id, AD_Type, Num)\n"
|
||||
"Id char(32) COLLATE utf8mb4_bin NOT NULL COMMENT '主键Id',\n" +
|
||||
"Std_Dev_Monitor_Id CHAR(34) NOT NULL COMMENT '标准设备监测点Id',\n" +
|
||||
"Num tinyint(1) unsigned DEFAULT 0 COMMENT '第几次检测',\n" +
|
||||
"A_Value_0 json NULL COMMENT 'A相基波有效值',\n" +
|
||||
"B_Value_0 json NULL COMMENT 'B相基波有效值',\n" +
|
||||
"C_Value_0 json NULL COMMENT 'B相基波有效值',\n" +
|
||||
"PRIMARY KEY (Id)\n"
|
||||
:
|
||||
" Script_Id CHAR(32) NOT NULL COMMENT '检测脚本表Id',\n" +
|
||||
" Sort int(4) NOT NULL COMMENT '总检测脚本中的测试项序号',\n" +
|
||||
|
||||
Reference in New Issue
Block a user