正式检测-收取数据、原始数据组装和入库、配对关系入库、误差计算逻辑

This commit is contained in:
caozehui
2025-08-18 16:15:35 +08:00
parent 257d0b3af8
commit c9bf604a33
48 changed files with 1429 additions and 964 deletions

View File

@@ -1500,57 +1500,58 @@ public class ResultServiceImpl implements IResultService {
List<Map<String, Object>> sheetsList = new ArrayList<>();
// key为被检设备的ip, value为该ip下所有通道的设备数据
Map<String, List<DevData>> ipDevDataMap = FormalTestManager.devDataMap.values().stream().flatMap(List::stream).collect(Collectors.groupingBy(obj -> obj.getId().split(CnSocketUtil.SPLIT_TAG)[0]));
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, devDataList) -> {
ipDevDataMap.forEach((ip, stdDevDataList) -> {
// 按照通道号分组。key为通道号value为该通道号下所有设备数据
Map<String, List<DevData>> channelDataMap = devDataList.stream().collect(Collectors.groupingBy(obj -> obj.getId().split(CnSocketUtil.SPLIT_TAG)[1]));
Map<String, List<DevData>> channelDataMap = stdDevDataList.stream().collect(Collectors.groupingBy(obj -> obj.getId().split(CnSocketUtil.SPLIT_TAG)[1]));
channelDataMap.forEach((channel, channelDevDataList) -> {
String standardDevMonitorId = FormalTestManager.pairsMap.get(ip + channel);
List<DevData> standarDevDataList = BeanUtil.copyToList(FormalTestManager.standardDevDataMap.get(standardDevMonitorId), DevData.class);
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 devName = FormalTestManager.devNameMapComm.get(ip);
String[] split = standardDevMonitorId.split(CnSocketUtil.SPLIT_TAG);
String standardDevName = FormalTestManager.devNameMapComm.get(split[0]);
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 + "通道" + channel);
alignDataExcel.getStandardDevDataConfig().setName(standardDevName + "通道" + split[1]);
alignDataExcel.getDevDataConfig().setName(devName + "通道" + split[1]);
alignDataExcel.getStandardDevDataConfig().setName(standardDevName + "通道" + channel);
DevData.SqlDataDTO.ListDTO list1 = obj.getSqlData().get(0).getList();
alignDataExcel.setTimeDev(obj.getTime());
alignDataExcel.setUaDev(list1.getA());
alignDataExcel.setUbDev(list1.getB());
alignDataExcel.setUcDev(list1.getC());
alignDataExcel.setTimeStdDev(obj.getTime());
alignDataExcel.setUaStdDev(list1.getA());
alignDataExcel.setUbStdDev(list1.getB());
alignDataExcel.setUcStdDev(list1.getC());
DevData devData = standarDevDataList.stream().filter(obj1 -> DetectionUtil.isAlignData(obj1, obj)).findFirst().get();
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.setTimeStdDev(devData.getTime());
alignDataExcel.setUaStdDev(list2.getA());
alignDataExcel.setUbStdDev(list2.getB());
alignDataExcel.setUcStdDev(list2.getC());
standarDevDataList.remove(devData);
alignDataExcel.setTimeDev(devData.getTime());
alignDataExcel.setUaDev(list2.getA());
alignDataExcel.setUbDev(list2.getB());
alignDataExcel.setUcDev(list2.getC());
devDataList.remove(devData);
}
dataList.add(alignDataExcel);
});
standarDevDataList.sort(Comparator.comparing(obj -> DetectionUtil.getMillis(obj.getTime())));
standarDevDataList.stream().forEach(obj -> {
devDataList.sort(Comparator.comparing(obj -> DetectionUtil.getMillis(obj.getTime())));
devDataList.stream().forEach(obj -> {
AlignDataExcel alignDataExcel = new AlignDataExcel();
alignDataExcel.getDevDataConfig().setName(devName + "通道" + channel);
alignDataExcel.getStandardDevDataConfig().setName(standardDevName + "通道" + split[1]);
alignDataExcel.getDevDataConfig().setName(devName + "通道" + split[1]);
alignDataExcel.getStandardDevDataConfig().setName(standardDevName + "通道" + channel);
DevData.SqlDataDTO.ListDTO list2 = obj.getSqlData().get(0).getList();
alignDataExcel.setTimeStdDev(obj.getTime());
alignDataExcel.setUaStdDev(list2.getA());
alignDataExcel.setUbStdDev(list2.getB());
alignDataExcel.setUcStdDev(list2.getC());
alignDataExcel.setTimeDev(obj.getTime());
alignDataExcel.setUaDev(list2.getA());
alignDataExcel.setUbDev(list2.getB());
alignDataExcel.setUcDev(list2.getC());
dataList.add(alignDataExcel);
});