完善暂存功能
This commit is contained in:
@@ -433,7 +433,7 @@ public class DetectionServiceImpl {
|
|||||||
fData = sourceIssue.getFFreq();
|
fData = sourceIssue.getFFreq();
|
||||||
}
|
}
|
||||||
if (PowerIndexEnum.P.getKey().equals(type)) {
|
if (PowerIndexEnum.P.getKey().equals(type)) {
|
||||||
if (!DetectionCodeEnum.PF.getCode().equals(splitArr[1])) {
|
if (!DetectionCodeEnum.PF.getCode().equals(splitArr[1]) && !DetectionCodeEnum.TOTPF.getCode().equals(splitArr[1])) {
|
||||||
Boolean valueType = pqScriptMapper.selectScriptIsValueType(sourceIssue.getScriptId());
|
Boolean valueType = pqScriptMapper.selectScriptIsValueType(sourceIssue.getScriptId());
|
||||||
if (valueType) {
|
if (valueType) {
|
||||||
fData = sourceIssue.getFUn() * sourceIssue.getFIn() / 100;
|
fData = sourceIssue.getFUn() * sourceIssue.getFIn() / 100;
|
||||||
@@ -538,11 +538,15 @@ public class DetectionServiceImpl {
|
|||||||
SourceIssue sourceIssue,
|
SourceIssue sourceIssue,
|
||||||
DictDataEnum dataRule,
|
DictDataEnum dataRule,
|
||||||
Integer num, Integer scale) {
|
Integer num, Integer scale) {
|
||||||
Double fData = 1.0;
|
Double fDataA = 1.0;
|
||||||
|
Double fDataB = 1.0;
|
||||||
|
Double fDataC = 1.0;
|
||||||
String fundCode = "";
|
String fundCode = "";
|
||||||
String harmCode = "";
|
String harmCode = "";
|
||||||
if (U.equals(type)) {
|
if (U.equals(type)) {
|
||||||
fData = sourceIssue.getFUn();
|
fDataA = sourceIssue.getChannelList().stream().filter(x -> x.getChannelType().contains("Ua")).findFirst().get().getFAmp();
|
||||||
|
fDataB = sourceIssue.getChannelList().stream().filter(x -> x.getChannelType().contains("Ub")).findFirst().get().getFAmp();
|
||||||
|
fDataC = sourceIssue.getChannelList().stream().filter(x -> x.getChannelType().contains("Uc")).findFirst().get().getFAmp();
|
||||||
fundCode = DetectionCodeEnum.U1.getCode();
|
fundCode = DetectionCodeEnum.U1.getCode();
|
||||||
if (num == 1) {
|
if (num == 1) {
|
||||||
harmCode = DetectionCodeEnum.SV_1_49.getCode();
|
harmCode = DetectionCodeEnum.SV_1_49.getCode();
|
||||||
@@ -551,7 +555,9 @@ public class DetectionServiceImpl {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (I.equals(type)) {
|
if (I.equals(type)) {
|
||||||
fData = sourceIssue.getFIn();
|
fDataA = sourceIssue.getChannelList().stream().filter(x -> x.getChannelType().contains("Ia")).findFirst().get().getFAmp();
|
||||||
|
fDataB = sourceIssue.getChannelList().stream().filter(x -> x.getChannelType().contains("Ib")).findFirst().get().getFAmp();
|
||||||
|
fDataC = sourceIssue.getChannelList().stream().filter(x -> x.getChannelType().contains("Ic")).findFirst().get().getFAmp();
|
||||||
fundCode = DetectionCodeEnum.I1.getCode();
|
fundCode = DetectionCodeEnum.I1.getCode();
|
||||||
if (num == 1) {
|
if (num == 1) {
|
||||||
harmCode = DetectionCodeEnum.SI_1_49.getCode();
|
harmCode = DetectionCodeEnum.SI_1_49.getCode();
|
||||||
@@ -560,7 +566,9 @@ public class DetectionServiceImpl {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (HP.equals(type)) {
|
if (HP.equals(type)) {
|
||||||
fData = (sourceIssue.getFIn() * sourceIssue.getFUn()) * 0.01;
|
fDataA = (sourceIssue.getFIn() * sourceIssue.getFUn()) * 0.01;
|
||||||
|
fDataB = (sourceIssue.getFIn() * sourceIssue.getFUn()) * 0.01;
|
||||||
|
fDataC = (sourceIssue.getFIn() * sourceIssue.getFUn()) * 0.01;
|
||||||
harmCode = DetectionCodeEnum.P2_50.getCode();
|
harmCode = DetectionCodeEnum.P2_50.getCode();
|
||||||
}
|
}
|
||||||
// if (P.equals(type)) {
|
// if (P.equals(type)) {
|
||||||
@@ -586,9 +594,9 @@ public class DetectionServiceImpl {
|
|||||||
pqErrSysDtls = adDtlsCheckData.get(0).getErrSysDtls();
|
pqErrSysDtls = adDtlsCheckData.get(0).getErrSysDtls();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
List<DetectionData> integerBooleanA = harmRangeComparison(isQualified, pqErrSysDtls, type, TYPE_A, sourceIssue, dataRule, devMap.get(TYPE_A), fData, num, scale);
|
List<DetectionData> integerBooleanA = harmRangeComparison(isQualified, pqErrSysDtls, type, TYPE_A, sourceIssue, dataRule, devMap.get(TYPE_A), fDataA, num, scale);
|
||||||
List<DetectionData> integerBooleanB = harmRangeComparison(isQualified, pqErrSysDtls, type, TYPE_B, sourceIssue, dataRule, devMap.get(TYPE_B), fData, num, scale);
|
List<DetectionData> integerBooleanB = harmRangeComparison(isQualified, pqErrSysDtls, type, TYPE_B, sourceIssue, dataRule, devMap.get(TYPE_B), fDataB, num, scale);
|
||||||
List<DetectionData> integerBooleanC = harmRangeComparison(isQualified, pqErrSysDtls, type, TYPE_C, sourceIssue, dataRule, devMap.get(TYPE_C), fData, num, scale);
|
List<DetectionData> integerBooleanC = harmRangeComparison(isQualified, pqErrSysDtls, type, TYPE_C, sourceIssue, dataRule, devMap.get(TYPE_C), fDataC, num, scale);
|
||||||
harmonicResult.setDataType(sourceIssue.getDataType());
|
harmonicResult.setDataType(sourceIssue.getDataType());
|
||||||
reflectHarmonic(false, "a", integerBooleanA, harmonicResult, num);
|
reflectHarmonic(false, "a", integerBooleanA, harmonicResult, num);
|
||||||
reflectHarmonic(false, "b", integerBooleanB, harmonicResult, num);
|
reflectHarmonic(false, "b", integerBooleanB, harmonicResult, num);
|
||||||
|
|||||||
@@ -284,28 +284,45 @@ public class PreDetectionServiceImpl implements PreDetectionService {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean restartTemTest(PreDetectionParam param) {
|
public boolean restartTemTest(PreDetectionParam param) {
|
||||||
|
PreDetectionParam runtimeParam = WebServiceManager.getPreDetectionParam(param.getUserPageId());
|
||||||
|
if (runtimeParam == null) {
|
||||||
|
if (StrUtil.isBlank(param.getSourceId()) || StrUtil.isBlank(param.getScriptId()) || StrUtil.isBlank(param.getCode())) {
|
||||||
|
throw new BusinessException(CommonResponseEnum.FAIL, "未找到暂停检测上下文,请重新开始检测");
|
||||||
|
}
|
||||||
|
runtimeParam = param;
|
||||||
|
}
|
||||||
FormalTestManager.stopFlag = false;
|
FormalTestManager.stopFlag = false;
|
||||||
socketDevResponseService.initRestart();
|
socketDevResponseService.initRestart();
|
||||||
List<SourceIssue> sourceIssueList = SocketManager.getSourceList();
|
List<SourceIssue> sourceIssueList = SocketManager.getSourceList();
|
||||||
SourceInitialize sourceInitialize = pqSourceService.getSourceInitializeParam(param.getSourceId());
|
if (StrUtil.isBlank(runtimeParam.getSourceName()) && StrUtil.isNotBlank(runtimeParam.getSourceId())) {
|
||||||
param.setSourceName(sourceInitialize.getSourceId());
|
SourceInitialize sourceInitialize = pqSourceService.getSourceInitializeParam(runtimeParam.getSourceId());
|
||||||
|
if (sourceInitialize == null) {
|
||||||
|
throw new BusinessException(DetectionResponseEnum.SOURCE_INFO_NOT);
|
||||||
|
}
|
||||||
|
runtimeParam.setSourceName(sourceInitialize.getSourceId());
|
||||||
|
}
|
||||||
if (CollUtil.isNotEmpty(sourceIssueList)) {
|
if (CollUtil.isNotEmpty(sourceIssueList)) {
|
||||||
SourceIssue sourceIssues = SocketManager.getSourceList().get(0);
|
SourceIssue sourceIssues = SocketManager.getSourceList().get(0);
|
||||||
|
String type = resolveFormalIssueType(sourceIssues);
|
||||||
|
sendBigItemStartIfFirstFormalIssue(runtimeParam, sourceIssues, type);
|
||||||
|
if (StrUtil.isNotBlank(sourceIssues.getOtherType())) {
|
||||||
|
sourceIssues.setType(PowerIndexEnum.V.getKey());
|
||||||
|
}
|
||||||
SocketMsg<String> xuMsg = new SocketMsg<>();
|
SocketMsg<String> xuMsg = new SocketMsg<>();
|
||||||
xuMsg.setOperateCode(SourceOperateCodeEnum.OPER_GATHER.getValue());
|
xuMsg.setOperateCode(SourceOperateCodeEnum.OPER_GATHER.getValue());
|
||||||
xuMsg.setData(JSON.toJSONString(sourceIssues));
|
xuMsg.setData(JSON.toJSONString(sourceIssues));
|
||||||
xuMsg.setRequestId(SourceOperateCodeEnum.FORMAL_REAL.getValue() + "&&" + sourceIssues.getType());
|
xuMsg.setRequestId(SourceOperateCodeEnum.FORMAL_REAL.getValue() + "&&" + type);
|
||||||
SocketManager.sendMsg(param.getUserPageId() + DetectionCommunicateConstant.SOURCE, JSON.toJSONString(xuMsg));
|
SocketManager.sendMsg(runtimeParam.getUserPageId() + DetectionCommunicateConstant.SOURCE, JSON.toJSONString(xuMsg));
|
||||||
// Resume_Success
|
// Resume_Success
|
||||||
} else {
|
} else {
|
||||||
//TODO 是否最终检测完成需要推送给用户 检测完成
|
//TODO 是否最终检测完成需要推送给用户 检测完成
|
||||||
PqScriptCheckDataParam checkDataParam = new PqScriptCheckDataParam();
|
PqScriptCheckDataParam checkDataParam = new PqScriptCheckDataParam();
|
||||||
checkDataParam.setScriptId(param.getScriptId());
|
checkDataParam.setScriptId(runtimeParam.getScriptId());
|
||||||
checkDataParam.setIsValueTypeName(false);
|
checkDataParam.setIsValueTypeName(false);
|
||||||
List<String> adType = iPqScriptCheckDataService.getValueType(checkDataParam);
|
List<String> adType = iPqScriptCheckDataService.getValueType(checkDataParam);
|
||||||
|
|
||||||
iPqDevService.updateResult(param.getDevIds(), adType, param.getCode(), param.getUserId(), param.getTemperature(), param.getHumidity(), true);
|
iPqDevService.updateResult(runtimeParam.getDevIds(), adType, runtimeParam.getCode(), runtimeParam.getUserId(), runtimeParam.getTemperature(), runtimeParam.getHumidity(), true);
|
||||||
CnSocketUtil.quitSend(param);
|
CnSocketUtil.quitSend(runtimeParam);
|
||||||
}
|
}
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
@@ -405,6 +422,36 @@ public class PreDetectionServiceImpl implements PreDetectionService {
|
|||||||
return pqScriptDtlsService.listSourceIssue(issueParam);
|
return pqScriptDtlsService.listSourceIssue(issueParam);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void sendBigItemStartIfFirstFormalIssue(PreDetectionParam param, SourceIssue currentIssue, String type) {
|
||||||
|
if (param == null || currentIssue == null || currentIssue.getIndex() == null || StrUtil.isBlank(type)) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
List<SourceIssue> allIssues = buildAllFormalIssues(param);
|
||||||
|
if (isFirstFormalIssueOfBigItem(allIssues, currentIssue, type)) {
|
||||||
|
WebServiceManager.sendDetectionMessage(param.getUserPageId(), type + CnSocketUtil.START_TAG, null, new ArrayList<>(), null);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static boolean isFirstFormalIssueOfBigItem(List<SourceIssue> allIssues, SourceIssue currentIssue, String type) {
|
||||||
|
if (CollUtil.isEmpty(allIssues) || currentIssue == null || currentIssue.getIndex() == null || StrUtil.isBlank(type)) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
Integer firstSort = allIssues.stream()
|
||||||
|
.filter(issue -> type.equals(resolveFormalIssueType(issue)))
|
||||||
|
.map(SourceIssue::getIndex)
|
||||||
|
.filter(Objects::nonNull)
|
||||||
|
.min(Integer::compareTo)
|
||||||
|
.orElse(null);
|
||||||
|
return Objects.equals(firstSort, currentIssue.getIndex());
|
||||||
|
}
|
||||||
|
|
||||||
|
static String resolveFormalIssueType(SourceIssue issue) {
|
||||||
|
if (issue == null) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
return StrUtil.isNotBlank(issue.getOtherType()) ? issue.getOtherType() : issue.getType();
|
||||||
|
}
|
||||||
|
|
||||||
private void mergeResultFlags(Map<String, List<Integer>> target, Map<String, List<Integer>> source) {
|
private void mergeResultFlags(Map<String, List<Integer>> target, Map<String, List<Integer>> source) {
|
||||||
if (CollUtil.isEmpty(source)) {
|
if (CollUtil.isEmpty(source)) {
|
||||||
return;
|
return;
|
||||||
|
|||||||
@@ -663,7 +663,7 @@ public class PqScriptDtlsServiceImpl extends ServiceImpl<PqScriptDtlsMapper, PqS
|
|||||||
if (v == 90 || v == -90 || v == 270 || v == -270) {
|
if (v == 90 || v == -90 || v == 270 || v == -270) {
|
||||||
checkData.setValue(0.0);
|
checkData.setValue(0.0);
|
||||||
} else {
|
} else {
|
||||||
checkData.setValue(channelI.get(0).getFAmp() * listDTO.getFAmp() * Math.cos(v * Math.PI / 180));
|
checkData.setValue(channelI.get(0).getFAmp() * listDTO.getFAmp() / radio * Math.cos(v * Math.PI / 180));
|
||||||
}
|
}
|
||||||
setCheck(info, checkData, channelListDTO, checkArchive, listDTO);
|
setCheck(info, checkData, channelListDTO, checkArchive, listDTO);
|
||||||
}
|
}
|
||||||
@@ -688,7 +688,7 @@ public class PqScriptDtlsServiceImpl extends ServiceImpl<PqScriptDtlsMapper, PqS
|
|||||||
if (v == 0 || v == 360 || v == 180 || v == -180) {
|
if (v == 0 || v == 360 || v == 180 || v == -180) {
|
||||||
checkData.setValue(0.0);
|
checkData.setValue(0.0);
|
||||||
} else {
|
} else {
|
||||||
checkData.setValue(channelI.get(0).getFAmp() * listDTO.getFAmp() * Math.sin(v * Math.PI / 180));
|
checkData.setValue(channelI.get(0).getFAmp() * listDTO.getFAmp() / radio * Math.sin(v * Math.PI / 180));
|
||||||
}
|
}
|
||||||
// if (valueType) {
|
// if (valueType) {
|
||||||
// checkData.setValue(checkData.getValue() * 57.74 * 5);
|
// checkData.setValue(checkData.getValue() * 57.74 * 5);
|
||||||
@@ -758,7 +758,7 @@ public class PqScriptDtlsServiceImpl extends ServiceImpl<PqScriptDtlsMapper, PqS
|
|||||||
if (v == 90 || v == -90 || v == 270 || v == -270) {
|
if (v == 90 || v == -90 || v == 270 || v == -270) {
|
||||||
value += 0.0;
|
value += 0.0;
|
||||||
} else {
|
} else {
|
||||||
value += channelI.get(0).getFAmp() * listDTO.getFAmp() * Math.cos(v * Math.PI / 180);
|
value += channelI.get(0).getFAmp() * listDTO.getFAmp() / radio * Math.cos(v * Math.PI / 180);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -787,7 +787,7 @@ public class PqScriptDtlsServiceImpl extends ServiceImpl<PqScriptDtlsMapper, PqS
|
|||||||
if (v == 0 || v == 360 || v == 180 || v == -180) {
|
if (v == 0 || v == 360 || v == 180 || v == -180) {
|
||||||
value += 0.0;
|
value += 0.0;
|
||||||
} else {
|
} else {
|
||||||
value += channelI.get(0).getFAmp() * listDTO.getFAmp() * Math.sin(v * Math.PI / 180);
|
value += channelI.get(0).getFAmp() * listDTO.getFAmp() / radio * Math.sin(v * Math.PI / 180);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -811,7 +811,7 @@ public class PqScriptDtlsServiceImpl extends ServiceImpl<PqScriptDtlsMapper, PqS
|
|||||||
.filter(x -> x.getChannelType().contains("I" + listDTO.getChannelType().substring(1, 2)))
|
.filter(x -> x.getChannelType().contains("I" + listDTO.getChannelType().substring(1, 2)))
|
||||||
.collect(Collectors.toList());
|
.collect(Collectors.toList());
|
||||||
if (CollUtil.isNotEmpty(channelI)) {
|
if (CollUtil.isNotEmpty(channelI)) {
|
||||||
value += channelI.get(0).getFAmp() * listDTO.getFAmp();
|
value += channelI.get(0).getFAmp() * listDTO.getFAmp() / radio;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
checkData = new PqScriptDtlsParam.CheckData();
|
checkData = new PqScriptDtlsParam.CheckData();
|
||||||
@@ -841,9 +841,9 @@ public class PqScriptDtlsServiceImpl extends ServiceImpl<PqScriptDtlsMapper, PqS
|
|||||||
if (v == 90 || v == -90 || v == 270 || v == -270) {
|
if (v == 90 || v == -90 || v == 270 || v == -270) {
|
||||||
valueTotW += 0.0;
|
valueTotW += 0.0;
|
||||||
} else {
|
} else {
|
||||||
valueTotW += channelI.get(0).getFAmp() * listDTO.getFAmp() * Math.cos(v * Math.PI / 180);
|
valueTotW += channelI.get(0).getFAmp() * listDTO.getFAmp() / radio * Math.cos(v * Math.PI / 180);
|
||||||
}
|
}
|
||||||
valueTotVA += channelI.get(0).getFAmp() * listDTO.getFAmp();
|
valueTotVA += channelI.get(0).getFAmp() * listDTO.getFAmp() / radio;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
checkData = new PqScriptDtlsParam.CheckData();
|
checkData = new PqScriptDtlsParam.CheckData();
|
||||||
|
|||||||
@@ -0,0 +1,47 @@
|
|||||||
|
package com.njcn.gather.detection.service.impl;
|
||||||
|
|
||||||
|
import com.njcn.gather.script.pojo.po.SourceIssue;
|
||||||
|
import org.junit.Test;
|
||||||
|
|
||||||
|
import java.util.Arrays;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
import static org.junit.Assert.assertFalse;
|
||||||
|
import static org.junit.Assert.assertTrue;
|
||||||
|
|
||||||
|
public class PreDetectionServiceImplTest {
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void isFirstFormalIssueOfBigItem_returnsTrueForFirstIssueOfType() {
|
||||||
|
List<SourceIssue> allIssues = Arrays.asList(issue(10, "voltage"), issue(20, "voltage"), issue(30, "current"));
|
||||||
|
|
||||||
|
assertTrue(PreDetectionServiceImpl.isFirstFormalIssueOfBigItem(allIssues, issue(10, "voltage"), "voltage"));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void isFirstFormalIssueOfBigItem_returnsFalseWhenResumingInsideSameBigItem() {
|
||||||
|
List<SourceIssue> allIssues = Arrays.asList(issue(10, "voltage"), issue(20, "voltage"), issue(30, "current"));
|
||||||
|
|
||||||
|
assertFalse(PreDetectionServiceImpl.isFirstFormalIssueOfBigItem(allIssues, issue(20, "voltage"), "voltage"));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void isFirstFormalIssueOfBigItem_usesOtherTypeAsBigItemType() {
|
||||||
|
List<SourceIssue> allIssues = Arrays.asList(otherTypeIssue(10, "V", "voltage"), otherTypeIssue(20, "V", "voltage"));
|
||||||
|
|
||||||
|
assertTrue(PreDetectionServiceImpl.isFirstFormalIssueOfBigItem(allIssues, otherTypeIssue(10, "V", "voltage"), "voltage"));
|
||||||
|
}
|
||||||
|
|
||||||
|
private SourceIssue issue(Integer index, String type) {
|
||||||
|
SourceIssue issue = new SourceIssue();
|
||||||
|
issue.setIndex(index);
|
||||||
|
issue.setType(type);
|
||||||
|
return issue;
|
||||||
|
}
|
||||||
|
|
||||||
|
private SourceIssue otherTypeIssue(Integer index, String type, String otherType) {
|
||||||
|
SourceIssue issue = issue(index, type);
|
||||||
|
issue.setOtherType(otherType);
|
||||||
|
return issue;
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user