完善暂存功能
This commit is contained in:
@@ -433,7 +433,7 @@ public class DetectionServiceImpl {
|
||||
fData = sourceIssue.getFFreq();
|
||||
}
|
||||
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());
|
||||
if (valueType) {
|
||||
fData = sourceIssue.getFUn() * sourceIssue.getFIn() / 100;
|
||||
@@ -538,11 +538,15 @@ public class DetectionServiceImpl {
|
||||
SourceIssue sourceIssue,
|
||||
DictDataEnum dataRule,
|
||||
Integer num, Integer scale) {
|
||||
Double fData = 1.0;
|
||||
Double fDataA = 1.0;
|
||||
Double fDataB = 1.0;
|
||||
Double fDataC = 1.0;
|
||||
String fundCode = "";
|
||||
String harmCode = "";
|
||||
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();
|
||||
if (num == 1) {
|
||||
harmCode = DetectionCodeEnum.SV_1_49.getCode();
|
||||
@@ -551,7 +555,9 @@ public class DetectionServiceImpl {
|
||||
}
|
||||
}
|
||||
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();
|
||||
if (num == 1) {
|
||||
harmCode = DetectionCodeEnum.SI_1_49.getCode();
|
||||
@@ -560,7 +566,9 @@ public class DetectionServiceImpl {
|
||||
}
|
||||
}
|
||||
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();
|
||||
}
|
||||
// if (P.equals(type)) {
|
||||
@@ -586,9 +594,9 @@ public class DetectionServiceImpl {
|
||||
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> integerBooleanB = harmRangeComparison(isQualified, pqErrSysDtls, type, TYPE_B, sourceIssue, dataRule, devMap.get(TYPE_B), fData, num, scale);
|
||||
List<DetectionData> integerBooleanC = harmRangeComparison(isQualified, pqErrSysDtls, type, TYPE_C, sourceIssue, dataRule, devMap.get(TYPE_C), 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), fDataB, num, scale);
|
||||
List<DetectionData> integerBooleanC = harmRangeComparison(isQualified, pqErrSysDtls, type, TYPE_C, sourceIssue, dataRule, devMap.get(TYPE_C), fDataC, num, scale);
|
||||
harmonicResult.setDataType(sourceIssue.getDataType());
|
||||
reflectHarmonic(false, "a", integerBooleanA, harmonicResult, num);
|
||||
reflectHarmonic(false, "b", integerBooleanB, harmonicResult, num);
|
||||
|
||||
@@ -284,28 +284,45 @@ public class PreDetectionServiceImpl implements PreDetectionService {
|
||||
|
||||
@Override
|
||||
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;
|
||||
socketDevResponseService.initRestart();
|
||||
List<SourceIssue> sourceIssueList = SocketManager.getSourceList();
|
||||
SourceInitialize sourceInitialize = pqSourceService.getSourceInitializeParam(param.getSourceId());
|
||||
param.setSourceName(sourceInitialize.getSourceId());
|
||||
if (StrUtil.isBlank(runtimeParam.getSourceName()) && StrUtil.isNotBlank(runtimeParam.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)) {
|
||||
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<>();
|
||||
xuMsg.setOperateCode(SourceOperateCodeEnum.OPER_GATHER.getValue());
|
||||
xuMsg.setData(JSON.toJSONString(sourceIssues));
|
||||
xuMsg.setRequestId(SourceOperateCodeEnum.FORMAL_REAL.getValue() + "&&" + sourceIssues.getType());
|
||||
SocketManager.sendMsg(param.getUserPageId() + DetectionCommunicateConstant.SOURCE, JSON.toJSONString(xuMsg));
|
||||
xuMsg.setRequestId(SourceOperateCodeEnum.FORMAL_REAL.getValue() + "&&" + type);
|
||||
SocketManager.sendMsg(runtimeParam.getUserPageId() + DetectionCommunicateConstant.SOURCE, JSON.toJSONString(xuMsg));
|
||||
// Resume_Success
|
||||
} else {
|
||||
//TODO 是否最终检测完成需要推送给用户 检测完成
|
||||
PqScriptCheckDataParam checkDataParam = new PqScriptCheckDataParam();
|
||||
checkDataParam.setScriptId(param.getScriptId());
|
||||
checkDataParam.setScriptId(runtimeParam.getScriptId());
|
||||
checkDataParam.setIsValueTypeName(false);
|
||||
List<String> adType = iPqScriptCheckDataService.getValueType(checkDataParam);
|
||||
|
||||
iPqDevService.updateResult(param.getDevIds(), adType, param.getCode(), param.getUserId(), param.getTemperature(), param.getHumidity(), true);
|
||||
CnSocketUtil.quitSend(param);
|
||||
iPqDevService.updateResult(runtimeParam.getDevIds(), adType, runtimeParam.getCode(), runtimeParam.getUserId(), runtimeParam.getTemperature(), runtimeParam.getHumidity(), true);
|
||||
CnSocketUtil.quitSend(runtimeParam);
|
||||
}
|
||||
|
||||
return true;
|
||||
@@ -405,6 +422,36 @@ public class PreDetectionServiceImpl implements PreDetectionService {
|
||||
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) {
|
||||
if (CollUtil.isEmpty(source)) {
|
||||
return;
|
||||
|
||||
@@ -663,7 +663,7 @@ public class PqScriptDtlsServiceImpl extends ServiceImpl<PqScriptDtlsMapper, PqS
|
||||
if (v == 90 || v == -90 || v == 270 || v == -270) {
|
||||
checkData.setValue(0.0);
|
||||
} 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);
|
||||
}
|
||||
@@ -688,7 +688,7 @@ public class PqScriptDtlsServiceImpl extends ServiceImpl<PqScriptDtlsMapper, PqS
|
||||
if (v == 0 || v == 360 || v == 180 || v == -180) {
|
||||
checkData.setValue(0.0);
|
||||
} 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) {
|
||||
// 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) {
|
||||
value += 0.0;
|
||||
} 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) {
|
||||
value += 0.0;
|
||||
} 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)))
|
||||
.collect(Collectors.toList());
|
||||
if (CollUtil.isNotEmpty(channelI)) {
|
||||
value += channelI.get(0).getFAmp() * listDTO.getFAmp();
|
||||
value += channelI.get(0).getFAmp() * listDTO.getFAmp() / radio;
|
||||
}
|
||||
}
|
||||
checkData = new PqScriptDtlsParam.CheckData();
|
||||
@@ -841,9 +841,9 @@ public class PqScriptDtlsServiceImpl extends ServiceImpl<PqScriptDtlsMapper, PqS
|
||||
if (v == 90 || v == -90 || v == 270 || v == -270) {
|
||||
valueTotW += 0.0;
|
||||
} 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();
|
||||
|
||||
@@ -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