调整公称压力和车辆识别代号从安装合格证里取,这样更准确

master
tyc 6 months ago
parent 78181e8673
commit 3e90f55848
  1. 10
      yudao-server/src/main/java/cn/iocoder/yudao/server/service/CertificateOfApprovalService.java
  2. 4
      yudao-server/src/main/java/cn/iocoder/yudao/server/service/FieldMappingService.java
  3. 10
      yudao-server/src/main/java/cn/iocoder/yudao/server/service/ProductQualifiedService.java

@ -44,6 +44,16 @@ public class CertificateOfApprovalService {
//气瓶编号
equipmentRegistryRespVO.setProductId(productId);
}
String nominalWorkingPressure = extractManufacturer(texts, fieldMap.get("nominalWorkingPressure"), 1);
if (ObjectUtil.isNotEmpty(nominalWorkingPressure)) {
//公称压力
equipmentRegistryRespVO.setNominalWorkingPressure(nominalWorkingPressure);
}
String vehicleVin = extractManufacturer(texts, fieldMap.get("vehicleVin"), 1);
if (ObjectUtil.isNotEmpty(vehicleVin)) {
//车辆识别代号
equipmentRegistryRespVO.setVehicleVin(vehicleVin);
}
int contractorOffset = 1;
if (!postfix.equals("pdf")) {
contractorOffset = 1;

@ -52,6 +52,9 @@ public class FieldMappingService {
private static final List<String> SUPERVISION_AGENCY_CANDIDATES_BH_AZDW = Arrays.asList(
"安装单位", "安装单位名称"
);
private static final List<String> VEHICLE_VIN = Arrays.asList(
"车辆识别代号"
);
/**
* 获取公司字段名映射优先从缓存读取适用于监督检验证书
@ -95,6 +98,7 @@ public class FieldMappingService {
fieldMap.put("cylinderVolume", detectField(texts, SUPERVISION_AGENCY_CANDIDATES_ZS));
fieldMap.put("productId", detectField(texts, SUPERVISION_AGENCY_CANDIDATES_BH_ZS));
fieldMap.put("contractor", detectField(texts, SUPERVISION_AGENCY_CANDIDATES_BH_AZDW));
fieldMap.put("vehicleVin", detectField(texts, VEHICLE_VIN));
// 3. 存入缓存(有效期 30 天)
redisTemplate.opsForValue().set(redisKey, fieldMap, 365, TimeUnit.DAYS);
return fieldMap;

@ -59,7 +59,9 @@ public class ProductQualifiedService {
if (ObjectUtil.isNotEmpty(cylinderVolume)) {
//气瓶容积
if (cylinderVolume.equals("L")) {
equipmentRegistryRespVO.setCylinderVolume("70.4");
//处理识别到上一行的情况
cylinderVolume = extractManufacturer(texts, fieldMap.get("cylinderVolume"), -1);
equipmentRegistryRespVO.setCylinderVolume(cylinderVolume);
} else {
equipmentRegistryRespVO.setCylinderVolume(cylinderVolume);
}
@ -75,18 +77,16 @@ public class ProductQualifiedService {
if (recTexts == null || recTexts.isEmpty()) {
return null;
}
// 使用 Stream 查找关键词位置
int index = IntStream.range(0, recTexts.size())
.filter(i -> recTexts.get(i).contains(keyword))
.findFirst()
.orElse(-1); // 未找到返回-1
.orElse(-1);
// 检查是否找到关键词,且偏移后不越界
if (index != -1 && index + offset < recTexts.size()) {
return recTexts.get(index + offset);
}
return null; // 未找到或越界时返回null
}
}

Loading…
Cancel
Save