diff --git a/src/main/java/com/inspect/simulator/domain/result/PatrolResult.java b/src/main/java/com/inspect/simulator/domain/result/PatrolResult.java index ebdba25..97a5025 100644 --- a/src/main/java/com/inspect/simulator/domain/result/PatrolResult.java +++ b/src/main/java/com/inspect/simulator/domain/result/PatrolResult.java @@ -133,6 +133,10 @@ public class PatrolResult extends BaseEntity { private String phyAssetId; + // 24(左上x), 111(左上y), 422(右下x) ,410(右下y) ,512(高) ,640(宽) + // 88,89,512,430,512,640 + private String meterType; + public PatrolResult(String mainId) { this.mainId = mainId; @@ -224,6 +228,7 @@ public class PatrolResult extends BaseEntity { ", resultType='" + resultType + '\'' + ", resValue='" + resValue + '\'' + ", phyAssetId='" + phyAssetId + '\'' + + ", meterType='" + meterType + '\'' + '}'; } } diff --git a/src/main/java/com/inspect/simulator/domain/result/upper/MessageData.java b/src/main/java/com/inspect/simulator/domain/result/upper/MessageData.java index 07ee1f9..f70b882 100644 --- a/src/main/java/com/inspect/simulator/domain/result/upper/MessageData.java +++ b/src/main/java/com/inspect/simulator/domain/result/upper/MessageData.java @@ -52,6 +52,36 @@ public class MessageData { // 是否有坐标信息(0:否;1:是) private String hasCoordinates; + // 红外协议类型(使用协议algorithmsType为infrared时有效) + private String infraredProtocol; + + // 算法返回值。比如红外测温区域最高值、表计值 + private String infraredResValue; + + // 红外原图路径 + private String infraredPathRaw; + + // 红外标注后图片路径 + private String infraredPathAnnotated; + + // 宽度 + private String width; + + // 高度 + private String height; + + // 缺陷区域左上角X坐标 + private String x1; + + // 缺陷区域左上角Y坐标 + private String y1; + + // 缺陷区域右下角X坐标 + private String x2; + + // 缺陷区域右下角Y坐标 + private String y2; + @Override public String toString() { return "MessageData{" + @@ -72,6 +102,16 @@ public class MessageData { ", result='" + result + '\'' + ", resultImg='" + resultImg + '\'' + ", hasCoordinates='" + hasCoordinates + '\'' + + ", infraredProtocol='" + infraredProtocol + '\'' + + ", infraredResValue='" + infraredResValue + '\'' + + ", infraredPathRaw='" + infraredPathRaw + '\'' + + ", infraredPathAnnotated='" + infraredPathAnnotated + '\'' + + ", width='" + width + '\'' + + ", height='" + height + '\'' + + ", x1='" + x1 + '\'' + + ", y1='" + y1 + '\'' + + ", x2='" + x2 + '\'' + + ", y2='" + y2 + '\'' + '}'; } } diff --git a/src/main/java/com/inspect/simulator/service/impl/PatrolResultServiceImpl.java b/src/main/java/com/inspect/simulator/service/impl/PatrolResultServiceImpl.java index 446f854..3d663a3 100644 --- a/src/main/java/com/inspect/simulator/service/impl/PatrolResultServiceImpl.java +++ b/src/main/java/com/inspect/simulator/service/impl/PatrolResultServiceImpl.java @@ -45,8 +45,10 @@ public class PatrolResultServiceImpl implements PatrolResultService { private String voltLevel; private static String token; + // 大模型 private static final String MLLM_FILTER = "0"; + // 初筛 private static final String FITLER_FILTER = "1"; private static final Set VALID_RESULT_CODES = new HashSet<>(Arrays.asList("0", "1")); @@ -114,7 +116,7 @@ public class PatrolResultServiceImpl implements PatrolResultService { log.info("[{}] [{}] sendPatrolResultToUpperSystem", threadId, execTime); // 查询当天的巡检结果 String createTimeStr = DateUtils.parseDateToStr("yyyy-MM-dd", date); - +// String createTimeStr = jsonObject.getString("createTime"); // createTimeStr = "2025-03-27"; List patrolResults = patrolResultMapper.selectCurrentPatrolResultList(createTimeStr); if (patrolResults == null || patrolResults.size() <= 0) { @@ -248,9 +250,26 @@ public class PatrolResultServiceImpl implements PatrolResultService { sample.setSampleRaw(firstPr.getFilePath()); sample.setAlgorithmsName(firstPr.getAlgorithmsName()); sample.setAlgorithmsType(firstPr.getAlgorithmsType()); - // 此处暂时写死为0,后续根据实际情况调整 sample.setHasCoordinates("0"); + if (StringUtils.isNotEmpty(firstPr.getAlgorithmsType()) && firstPr.getAlgorithmsType().contains("infra")) { + sample.setInfraredProtocol("DLT664-2016"); + sample.setInfraredPathRaw(firstPr.getFilePath()); + String meterType = firstPr.getMeterType(); + if (!StringUtils.isEmpty(meterType)) { + String[] split = meterType.split(","); + if (split.length == 6) { + // 有坐标信息 + sample.setHasCoordinates("1"); + sample.setX1(split[0]); + sample.setY1(split[1]); + sample.setX2(split[2]); + sample.setY2(split[3]); + sample.setHeight(split[4]); + sample.setWidth(split[5]); + } + } + } // 处理同一分组内的不同filter结果 group.forEach(pr -> { // result type是检测出来有缺陷的 0是缺陷 1是正常 2是异常(异常不算是缺陷比如图片抓拍失败为空算是异常,或者是大模型服务挂掉分析失败也是异常,这种的不算是缺陷) @@ -267,6 +286,10 @@ public class PatrolResultServiceImpl implements PatrolResultService { if (MLLM_FILTER.equals(filter)) { sample.setMllmDefect(pr.getResImgUrl()); sample.setMllmResultCode(resultType); + if (StringUtils.isNotEmpty(firstPr.getAlgorithmsType()) && firstPr.getAlgorithmsType().contains("infra")) { + sample.setInfraredResValue(pr.getResValue()); + sample.setInfraredPathAnnotated(pr.getResImgUrl()); + } } else if (FITLER_FILTER.equals(filter)) { sample.setFitlerDefect(pr.getResImgUrl()); sample.setFitlerDiffBase(pr.getImageNormalUrlPath()); diff --git a/src/main/resources/mapper/PatrolResultMapper.xml b/src/main/resources/mapper/PatrolResultMapper.xml index f170b3d..a199f91 100644 --- a/src/main/resources/mapper/PatrolResultMapper.xml +++ b/src/main/resources/mapper/PatrolResultMapper.xml @@ -769,6 +769,7 @@ d.area_name areaName, c.device_name deviceName, a.patrol_point_name pointName, + a.meter_type meterType, f.create_time createTime, f.file_path filePath, bas.alg_subtype_name algorithmsName, @@ -779,7 +780,7 @@ ra.filter filter, ra.res_value resValue from patrol_result f - left join basedata_patrolpoint a on f.device_id = a.patrol_point_id + left join basedata_patrolpoint a on f.device_id = a.patrol_point_id or f.device_id = SUBSTRING_INDEX(a.patrol_point_code, '|', -1) left join basedata_device c on a.main_device_id = c.device_id left join basedata_area e on a.area_id = e.area_id left join basedata_area d on d.area_id = e.parent_id @@ -810,7 +811,7 @@ ra.res_value resValue from patrol_result f left join patrol_task_status s on f.task_patrolled_id = s.task_patrolled_id - left join basedata_patrolpoint a on f.device_id = a.patrol_point_id + left join basedata_patrolpoint a on f.device_id = a.patrol_point_id or f.device_id = SUBSTRING_INDEX(a.patrol_point_code, '|', -1) left join basedata_device c on a.device_id = c.device_id left join basedata_area e on a.area_id = e.area_id left join basedata_area d on d.area_id = e.parent_id