1.调整相序校验返回信息
This commit is contained in:
@@ -829,9 +829,8 @@ public class SocketDevResponseService {
|
||||
List<SourceIssue> sourceIssues = scriptDtlsService.listSourceIssue(sourceParam);
|
||||
List<SourceCompareDev> info = new ArrayList<>();
|
||||
if (CollUtil.isNotEmpty(sourceIssues)) {
|
||||
for (DevData dev : devInfo) {
|
||||
info.addAll(devIsSource(dev, sourceIssues.get(0)));
|
||||
}
|
||||
devInfo.stream().sorted(Comparator.comparing(DevData::getId));
|
||||
info.addAll(devIsSource(devInfo, sourceIssues.get(0)));
|
||||
}
|
||||
if (CollUtil.isNotEmpty(info)) {
|
||||
SocketDataMsg dataMsg = new SocketDataMsg();
|
||||
@@ -840,18 +839,7 @@ public class SocketDevResponseService {
|
||||
dataMsg.setCode(SourceResponseCodeEnum.SUCCESS.getCode());
|
||||
|
||||
for (SourceCompareDev sourceCompareDev : info) {
|
||||
|
||||
String temStr = "未知指标";
|
||||
if ("VRMS".equals(sourceCompareDev.getDesc())) {
|
||||
temStr = "电压";
|
||||
} else if ("IRMS".equals(sourceCompareDev.getDesc())) {
|
||||
temStr = "电流";
|
||||
} else if ("VA".equals(sourceCompareDev.getDesc())) {
|
||||
temStr = "电压相角";
|
||||
} else if ("IA".equals(sourceCompareDev.getDesc())) {
|
||||
temStr = "电流相角";
|
||||
}
|
||||
dataMsg.setData(sourceCompareDev.getDevName() + splitTag + sourceCompareDev.getLineNum() + temStr + "校验结果:" + (sourceCompareDev.getIsQualified() ? "合格" : "不合格"));
|
||||
dataMsg.setData(sourceCompareDev.getDevName() + splitTag + sourceCompareDev.getLineNum() + "校验结果:" + sourceCompareDev.getDesc());
|
||||
webSocketHandler.sendMsgToUser(param.getUserPageId(), JSON.toJSONString(dataMsg));
|
||||
}
|
||||
|
||||
@@ -1173,149 +1161,126 @@ public class SocketDevResponseService {
|
||||
|
||||
}
|
||||
|
||||
private Map<String, String> sourceMessage(SourceIssue issue) {
|
||||
//(Ua=59.0V,相角=0.0° Ub=59.0V,相角=0.0° Uc=59.0V,相角=0.0°)
|
||||
Map<String, String> map = new HashMap<>();
|
||||
List<SourceIssue.ChannelListDTO> v = issue.getChannelList().stream().filter(x -> x.getChannelType().contains("U")).collect(Collectors.toList());
|
||||
List<SourceIssue.ChannelListDTO> i = issue.getChannelList().stream().filter(x -> x.getChannelType().contains("I")).collect(Collectors.toList());
|
||||
map.put("V", sourceBuffer(v));
|
||||
map.put("I", sourceBuffer(i));
|
||||
return map;
|
||||
}
|
||||
|
||||
private List<SourceCompareDev> devIsSource(DevData dev, SourceIssue issue) {
|
||||
private String sourceBuffer(List<SourceIssue.ChannelListDTO> v) {
|
||||
StringBuffer str = new StringBuffer();
|
||||
str.append("源(");
|
||||
for (SourceIssue.ChannelListDTO dto : v) {
|
||||
str.append(dto.getChannelType() + "=" + dto.getFAmp() + ",相角=" + dto.getFPhase() + "° ");
|
||||
}
|
||||
str.append(")");
|
||||
return str.toString();
|
||||
}
|
||||
|
||||
private String devMessage(String type,
|
||||
List<DevData.SqlDataDTO> data,
|
||||
List<DevData.SqlDataDTO> dataPhase) {
|
||||
StringBuffer str = new StringBuffer();
|
||||
if (data.size() == dataPhase.size()) {
|
||||
DevData.SqlDataDTO.ListDTO dto = data.get(0).getList();
|
||||
DevData.SqlDataDTO.ListDTO phase = dataPhase.get(0).getList();
|
||||
|
||||
str.append("装置(" + type + "a=" + String.format("%.4f", dto.getA()) + ",相角=" + String.format("%.4f", phase.getA()) + "° " +
|
||||
type + "b=" + String.format("%.4f", dto.getB()) + ",相角=" + String.format("%.4f", phase.getB()) + "° " +
|
||||
type + "c=" + String.format("%.4f", dto.getC()) + ",相角=" + String.format("%.4f", phase.getC()) + "° ");
|
||||
str.append(")");
|
||||
}
|
||||
return str.toString();
|
||||
}
|
||||
|
||||
private List<SourceCompareDev> devIsSource(List<DevData> dev, SourceIssue issue) {
|
||||
List<SourceCompareDev> info = new ArrayList<>();
|
||||
String[] split = dev.getId().split(splitTag);
|
||||
//相序校验信息个
|
||||
LinkedHashMap<String, List<DevData>> devMap = dev.stream()
|
||||
.sorted(Comparator.comparing(DevData::getId))
|
||||
.collect(Collectors.groupingBy(DevData::getId, LinkedHashMap::new, Collectors.toList()));
|
||||
//电压
|
||||
List<SourceIssue.ChannelListDTO> sourceV = issue.getChannelList().stream().filter(x -> x.getChannelType().contains("U"))
|
||||
.sorted(Comparator.comparing(SourceIssue.ChannelListDTO::getChannelType))
|
||||
.collect(Collectors.toList());
|
||||
//电流
|
||||
List<SourceIssue.ChannelListDTO> sourceI = issue.getChannelList().stream().filter(x -> x.getChannelType().contains("I"))
|
||||
.sorted(Comparator.comparing(SourceIssue.ChannelListDTO::getChannelType))
|
||||
.collect(Collectors.toList());
|
||||
Map<String, String> sourceMessageMap = sourceMessage(issue);
|
||||
List<String> v = Arrays.asList("VRMS", "VA", "U", "V");
|
||||
List<String> i = Arrays.asList("IRMS", "IA", "I", "I");
|
||||
devMap.forEach((key, value) -> {
|
||||
List<DevData.SqlDataDTO> sqlData = value.stream().flatMap(x -> x.getSqlData().stream()).collect(Collectors.toList());
|
||||
getResult(key, sqlData, sourceMessageMap, sourceV, info, v);
|
||||
getResult(key, sqlData, sourceMessageMap, sourceI, info, i);
|
||||
});
|
||||
return info;
|
||||
}
|
||||
|
||||
private void getResult(String key,
|
||||
List<DevData.SqlDataDTO> sqlData,
|
||||
Map<String, String> sourceMessageMap,
|
||||
List<SourceIssue.ChannelListDTO> sourceV,
|
||||
List<SourceCompareDev> info,
|
||||
List<String> type
|
||||
) {
|
||||
List<DevData.SqlDataDTO> dataV = sqlData.stream().filter(x -> type.get(0).equals(x.getDesc())).collect(Collectors.toList());
|
||||
List<DevData.SqlDataDTO> dataVPhase = sqlData.stream().filter(x -> type.get(1).equals(x.getDesc())).collect(Collectors.toList());
|
||||
SourceCompareDev compareDev = new SourceCompareDev();
|
||||
String[] split = key.split(splitTag);
|
||||
String devName = null;
|
||||
if (FormalTestManager.devNameMapComm.containsKey(split[0])) {
|
||||
devName = FormalTestManager.devNameMapComm.get(split[0]);
|
||||
}
|
||||
List<SourceIssue.ChannelListDTO> channelList = issue.getChannelList();
|
||||
|
||||
List<DevData.SqlDataDTO> sqlData = dev.getSqlData();
|
||||
List<DevData.SqlDataDTO> dataV = sqlData.stream().filter(x -> "VRMS".equals(x.getDesc())).collect(Collectors.toList());
|
||||
List<DevData.SqlDataDTO> dataVA = sqlData.stream().filter(x -> "VA".equals(x.getDesc())).collect(Collectors.toList());
|
||||
List<DevData.SqlDataDTO> dataI = sqlData.stream().filter(x -> "IRMS".equals(x.getDesc())).collect(Collectors.toList());
|
||||
List<DevData.SqlDataDTO> dataIA = sqlData.stream().filter(x -> "IA".equals(x.getDesc())).collect(Collectors.toList());
|
||||
if (CollUtil.isNotEmpty(dataV)) {
|
||||
SourceCompareDev compareDev = getSourceCompareDev(split, dataV, "VRMS", "U", channelList, false);
|
||||
compareDev.setDevName(devName);
|
||||
info.add(compareDev);
|
||||
}
|
||||
if (CollUtil.isNotEmpty(dataVA)) {
|
||||
SourceCompareDev compareDev = getSourceCompareDev(split, dataVA, "VA", "U", channelList, true);
|
||||
compareDev.setDevName(devName);
|
||||
info.add(compareDev);
|
||||
}
|
||||
if (CollUtil.isNotEmpty(dataI)) {
|
||||
SourceCompareDev compareDev = getSourceCompareDev(split, dataI, "IRMS", "I", channelList, false);
|
||||
compareDev.setDevName(devName);
|
||||
info.add(compareDev);
|
||||
}
|
||||
if (CollUtil.isNotEmpty(dataVA)) {
|
||||
SourceCompareDev compareDev = getSourceCompareDev(split, dataVA, "IA", "I", channelList, true);
|
||||
compareDev.setDevName(devName);
|
||||
compareDev.setLineNum(split[1]);
|
||||
getSourceCompareDev(type.get(2), dataV, dataVPhase, compareDev, sourceMessageMap.get(type.get(3)), sourceV);
|
||||
info.add(compareDev);
|
||||
}
|
||||
|
||||
return info;
|
||||
}
|
||||
|
||||
/**
|
||||
* 计算是否合格
|
||||
*
|
||||
* @param split
|
||||
* @param data
|
||||
* @param name 指标名称
|
||||
* @param type U,I
|
||||
* @param channelList
|
||||
* @param data 装置返回信息
|
||||
* @param compareDev 返回信息
|
||||
* @param channelList 源通道信息
|
||||
* @return
|
||||
*/
|
||||
private static SourceCompareDev getSourceCompareDev(String[] split,
|
||||
private SourceCompareDev getSourceCompareDev(String type,
|
||||
List<DevData.SqlDataDTO> data,
|
||||
String name,
|
||||
String type,
|
||||
List<SourceIssue.ChannelListDTO> channelList,
|
||||
Boolean isPhase
|
||||
List<DevData.SqlDataDTO> dataPhase,
|
||||
SourceCompareDev compareDev,
|
||||
String desc,
|
||||
List<SourceIssue.ChannelListDTO> channelList
|
||||
|
||||
) {
|
||||
SourceCompareDev compareDev = new SourceCompareDev();
|
||||
compareDev.setIp(split[0]);
|
||||
compareDev.setLineNum(split[1]);
|
||||
compareDev.setDesc(name);
|
||||
//装置数据
|
||||
DevData.SqlDataDTO.ListDTO devData = data.get(0).getList();
|
||||
List<SourceIssue.ChannelListDTO> sourceList = channelList.stream().filter(x -> (type + "a").equals(x.getChannelType()) ||
|
||||
(type + "b").equals(x.getChannelType()) ||
|
||||
(type + "c").equals(x.getChannelType())
|
||||
).collect(Collectors.toList());
|
||||
Map<String, Double> sourceMap = sourceList.stream()
|
||||
.collect(Collectors.toMap(x -> x.getChannelType().toUpperCase().replace(type, "")
|
||||
, isPhase ? SourceIssue.ChannelListDTO::getFPhase : SourceIssue.ChannelListDTO::getFAmp));
|
||||
Map<String, Double> devMap = new HashMap<>(3);
|
||||
devMap.put("A", devData.getA());
|
||||
devMap.put("B", devData.getB());
|
||||
devMap.put("C", devData.getC());
|
||||
Boolean is = true;
|
||||
for (SourceIssue.ChannelListDTO channelListDTO : sourceList) {
|
||||
if (!is) {
|
||||
break;
|
||||
}
|
||||
if (channelListDTO.getChannelType().equals((type + "a"))) {
|
||||
if (isPhase) {
|
||||
if (channelListDTO.getFPhase() == 0.0) {
|
||||
is = NumberUtil.isIn(BigDecimal.valueOf(devData.getA()),
|
||||
BigDecimal.valueOf(-0.05),
|
||||
BigDecimal.valueOf(0.05));
|
||||
} else {
|
||||
is = NumberUtil.isIn(BigDecimal.valueOf(devData.getA()),
|
||||
BigDecimal.valueOf(channelListDTO.getFPhase() * 0.95),
|
||||
BigDecimal.valueOf(channelListDTO.getFPhase() * 1.05));
|
||||
}
|
||||
|
||||
} else {
|
||||
is = NumberUtil.isIn(BigDecimal.valueOf(devData.getA()),
|
||||
BigDecimal.valueOf(channelListDTO.getFAmp() * 0.95),
|
||||
BigDecimal.valueOf(channelListDTO.getFAmp() * 1.05));
|
||||
}
|
||||
|
||||
}
|
||||
if (channelListDTO.getChannelType().equals((type + "b"))) {
|
||||
if (isPhase) {
|
||||
if (channelListDTO.getFPhase() == 0.0) {
|
||||
is = NumberUtil.isIn(BigDecimal.valueOf(devData.getB()),
|
||||
BigDecimal.valueOf(-0.05),
|
||||
BigDecimal.valueOf(0.05));
|
||||
} else {
|
||||
is = NumberUtil.isIn(BigDecimal.valueOf(devData.getB()),
|
||||
BigDecimal.valueOf(channelListDTO.getFPhase() * 0.95),
|
||||
BigDecimal.valueOf(channelListDTO.getFPhase() * 1.05));
|
||||
}
|
||||
|
||||
} else {
|
||||
is = NumberUtil.isIn(BigDecimal.valueOf(devData.getB()),
|
||||
BigDecimal.valueOf(channelListDTO.getFAmp() * 0.95),
|
||||
BigDecimal.valueOf(channelListDTO.getFAmp() * 1.05));
|
||||
}
|
||||
|
||||
}
|
||||
if (channelListDTO.getChannelType().equals((type + "c"))) {
|
||||
if (isPhase) {
|
||||
if (channelListDTO.getFPhase() == 0.0) {
|
||||
is = NumberUtil.isIn(BigDecimal.valueOf(devData.getC()),
|
||||
BigDecimal.valueOf(-0.05),
|
||||
BigDecimal.valueOf(0.05));
|
||||
} else {
|
||||
is = NumberUtil.isIn(BigDecimal.valueOf(devData.getC()),
|
||||
BigDecimal.valueOf(channelListDTO.getFPhase() * 0.95),
|
||||
BigDecimal.valueOf(channelListDTO.getFPhase() * 1.05));
|
||||
}
|
||||
|
||||
} else {
|
||||
is = NumberUtil.isIn(BigDecimal.valueOf(devData.getC()),
|
||||
BigDecimal.valueOf(channelListDTO.getFAmp() * 0.95),
|
||||
BigDecimal.valueOf(channelListDTO.getFAmp() * 1.05));
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
compareDev.setIsQualified(is);
|
||||
compareDev.setSourceData(sourceMap);
|
||||
compareDev.setDevData(devMap);
|
||||
//源信息
|
||||
Map<String, SourceIssue.ChannelListDTO> sourceMap = channelList.stream()
|
||||
.collect(Collectors.toMap(x -> x.getChannelType(), Function.identity()));
|
||||
compareDev.setIsQualified(getaBoolean(sourceMap.get(type + "a"), data.get(0).getList().getA(), dataPhase.get(0).getList().getA()));
|
||||
compareDev.setIsQualified(getaBoolean(sourceMap.get(type + "b"), data.get(0).getList().getB(), dataPhase.get(0).getList().getB()));
|
||||
compareDev.setIsQualified(getaBoolean(sourceMap.get(type + "c"), data.get(0).getList().getC(), dataPhase.get(0).getList().getC()));
|
||||
compareDev.setDesc((compareDev.getIsQualified() ? "合格->" : "不合格->") + desc + "<br/>" + devMessage(type, data, dataPhase));
|
||||
return compareDev;
|
||||
}
|
||||
|
||||
private static Boolean getaBoolean(SourceIssue.ChannelListDTO channelListDTO, Double devData, Double devPhase) {
|
||||
return NumberUtil.isIn(BigDecimal.valueOf(devData),
|
||||
BigDecimal.valueOf(channelListDTO.getFAmp() * 0.95),
|
||||
BigDecimal.valueOf(channelListDTO.getFAmp() * 1.05))
|
||||
&&
|
||||
NumberUtil.isIn(BigDecimal.valueOf(devPhase),
|
||||
BigDecimal.valueOf(channelListDTO.getFPhase() - 1),
|
||||
BigDecimal.valueOf(channelListDTO.getFPhase() + 1));
|
||||
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 暂停后的重新检测
|
||||
|
||||
@@ -233,7 +233,7 @@ public class SocketSourceResponseService {
|
||||
DevPhaseSequenceParam phaseSequenceParam = new DevPhaseSequenceParam();
|
||||
phaseSequenceParam.setMoniterIdList(moniterIdList);
|
||||
phaseSequenceParam.setDataType(Arrays.asList("real$VRMS", "real$VA", "real$IRMS", "real$IA"));
|
||||
phaseSequenceParam.setReadCount(5);
|
||||
phaseSequenceParam.setReadCount(1);
|
||||
phaseSequenceParam.setIgnoreCount(10);
|
||||
socketMsg.setData(JSON.toJSONString(phaseSequenceParam));
|
||||
SocketManager.sendMsg(s, JSON.toJSONString(socketMsg));
|
||||
|
||||
Reference in New Issue
Block a user