浏览代码

优化识别问题,证书检查

Guos 1 月之前
父节点
当前提交
2ccca2010e

+ 24 - 24
fs-common/src/main/java/com/fs/common/utils/txocr/TxOcrClient.java

@@ -67,10 +67,10 @@ public class TxOcrClient  {
      * 医疗器械url识别
      * @return
      */
-    public ContainsResult medicalDeviceUrlOcr(String imageUrl){
-        String ocr = ExtractDocBasic(imageUrl);
-        return null;
-    }
+//    public ContainsResult medicalDeviceUrlOcr(String imageUrl){
+//        String ocr = ExtractDocBasic(imageUrl);
+//        return null;
+//    }
 
     /**
      * 营业执照识别(监听使用后续关闭掉)
@@ -272,7 +272,7 @@ public class TxOcrClient  {
      * @param keywords 校验关键词(可传null)
      * @return 结构化的ContainsResult
      */
-    public static ContainsResult extractAndWrapResult(String imageUrl, String keywords) {
+    public static ContainsResult extractAndWrapResult(String imageUrl, String keywords, LicenseTypeEnum certType) {
         ContainsResult result = new ContainsResult();
         // 初始化基础字段
         result.setImageUrl(imageUrl);
@@ -288,11 +288,12 @@ public class TxOcrClient  {
                 return result;
             }
 
-            // 2. 识别证件类型
-            LicenseTypeEnum certType = getCertificateType(ocrJson);
-            log.info("识别到证件类型:{}(编码:{})", certType.getCode(), certType.getCode());
-            result.setMessage("识别到证件类型:" + certType.getCode());
-
+            if(certType == null){
+                // 2. 识别证件类型
+                certType = getCertificateType(ocrJson);
+                log.info("识别到证件类型:{}(编码:{})", certType.getCode(), certType.getCode());
+                result.setMessage("识别到证件类型:" + certType.getCode());
+            }
             // 3. 按证件类型提取字段并封装到ContainsResult
             switch (certType) {
                 case BUSINESS_LICENSE:
@@ -313,7 +314,6 @@ public class TxOcrClient  {
                     log.warn(result.getMessage());
                     break;
             }
-
             // 4. 校验关键词(如果传入关键词)
             if (keywords != null && result.getBusinessStr() != null) {
                 boolean contains = result.getBusinessStr().contains(keywords);
@@ -493,8 +493,8 @@ public class TxOcrClient  {
     /**
      * 原有方法:仅提取经营范围
      */
-    public static String ExtractDocBasic(String imageUrl) {
-        ContainsResult result = extractAndWrapResult(imageUrl, null);
+    public static String ExtractDocBasic(String imageUrl, LicenseTypeEnum certType) {
+        ContainsResult result = extractAndWrapResult(imageUrl, null, certType);
         return result.getBusinessStr();
     }
 
@@ -514,17 +514,17 @@ public class TxOcrClient  {
     }
 
     // ====================== 测试示例 ======================
-    public static void main(String[] args) {
-        // 测试1:药品经营许可证提取 + 关键词校验
-        String drugUrl = "你的药品许可证URL";
-        ContainsResult drugResult = TxOcrClient.extractAndWrapResult(drugUrl, "处方药");
-        log.info("药品许可证提取结果:\n{}", drugResult.toString());
-
-        // 测试2:营业执照提取
-        String businessUrl = "你的营业执照URL";
-        ContainsResult businessResult = TxOcrClient.extractAndWrapResult(businessUrl, null);
-        log.info("\n营业执照提取结果:\n{}", businessResult.toString());
-    }
+//    public static void main(String[] args) {
+//        // 测试1:药品经营许可证提取 + 关键词校验
+//        String drugUrl = "你的药品许可证URL";
+//        ContainsResult drugResult = TxOcrClient.extractAndWrapResult(drugUrl, "处方药");
+//        log.info("药品许可证提取结果:\n{}", drugResult.toString());
+//
+//        // 测试2:营业执照提取
+//        String businessUrl = "你的营业执照URL";
+//        ContainsResult businessResult = TxOcrClient.extractAndWrapResult(businessUrl, null);
+//        log.info("\n营业执照提取结果:\n{}", businessResult.toString());
+//    }
 
 
 

+ 1 - 1
fs-service/src/main/java/com/fs/hisStore/service/categoryVal/CommonCheck.java

@@ -54,7 +54,7 @@ public class CommonCheck extends AbstractHandler {
         String drugLicenseUrl = fsStoreScrm.getDrugLicense();
         FsStoreScrmOcr fsStoreScrmOcr = fsStoreScrmOcrMapper.selectByIdAndUrl(storeId, drugLicenseUrl, null);
         if(ObjectUtil.isEmpty(fsStoreScrmOcr)){
-            String ocrResult = TxOcrClient.ExtractDocBasic(drugLicenseUrl);
+            String ocrResult = TxOcrClient.ExtractDocBasic(drugLicenseUrl,null);
             if(null != ocrResult){
                 boolean equalsR = ocrResult.contains(cateName);
                 result.setFlag(equalsR);

+ 3 - 2
fs-service/src/main/java/com/fs/hisStore/service/categoryVal/IIIMedicalDeviceCheck.java

@@ -1,6 +1,7 @@
 package com.fs.hisStore.service.categoryVal;
 
 import cn.hutool.core.util.ObjectUtil;
+import com.fs.common.enums.LicenseTypeEnum;
 import com.fs.common.utils.StringUtils;
 import com.fs.common.utils.txocr.ContainsResult;
 import com.fs.common.utils.txocr.TxOcrClient;
@@ -12,7 +13,7 @@ import org.springframework.context.annotation.Lazy;
 import org.springframework.stereotype.Component;
 
 /**
- * @description:
+ * @description: 三类医疗这个是检查营业执照有此类+需要有3类医疗器械备案才可销售
  * @author: Guos
  * @time: 2025/11/28 下午2:21
  */
@@ -51,7 +52,7 @@ public class IIIMedicalDeviceCheck extends AbstractHandler{
             return result;
         }
         String medicalDevice3 = fsStoreScrm.getMedicalDevice3();
-        String ocrStr = TxOcrClient.ExtractDocBasic(medicalDevice3);
+        String ocrStr = TxOcrClient.ExtractDocBasic(medicalDevice3, LicenseTypeEnum.MEDICAL_DEVICE_3);
         boolean contains = ocrStr.contains(medicalDeviceCode);
         result.setFlag(contains);
         result.setMessage(contains ? "器械编号符合所选商品分类3类器械标准" : "器械编号不符合所选商品分类3类器械标准");

+ 2 - 1
fs-service/src/main/java/com/fs/hisStore/service/categoryVal/IIMedicalDeviceCheck.java

@@ -1,6 +1,7 @@
 package com.fs.hisStore.service.categoryVal;
 
 import cn.hutool.core.util.ObjectUtil;
+import com.fs.common.enums.LicenseTypeEnum;
 import com.fs.common.utils.StringUtils;
 import com.fs.common.utils.txocr.ContainsResult;
 import com.fs.common.utils.txocr.TxOcrClient;
@@ -62,7 +63,7 @@ public class IIMedicalDeviceCheck extends AbstractHandler{
             return result;
         }
         String medicalDevice2 = fsStoreScrm.getMedicalDevice2();
-        String ocrStr = TxOcrClient.ExtractDocBasic(medicalDevice2);
+        String ocrStr = TxOcrClient.ExtractDocBasic(medicalDevice2, LicenseTypeEnum.MEDICAL_DEVICE_2);
         boolean contains = ocrStr.contains(medicalDeviceCode);
         result.setFlag(contains);
         result.setMessage(contains ? "器械编号符合所选商品分类2类器械标准" : "器械编号不符合所选商品分类2类器械标准");

+ 1 - 1
fs-service/src/main/java/com/fs/hisStore/service/impl/FsStoreScrmServiceImpl.java

@@ -536,7 +536,7 @@ public class FsStoreScrmServiceImpl implements IFsStoreScrmService {
         if(licenseTypeEnum.getCode().equals("businessLicense")){
             return TxOcrClient.isContains(checkLicenseVO.getImageUrl(), null);
         }else{
-            return TxOcrClient.extractAndWrapResult(checkLicenseVO.getImageUrl(), null);
+            return TxOcrClient.extractAndWrapResult(checkLicenseVO.getImageUrl(), null, null);
         }
     }
 

+ 0 - 1
fs-store/src/main/java/com/fs/hisStore/controller/store/FsStoreProductScrmController.java

@@ -77,7 +77,6 @@ public class FsStoreProductScrmController extends BaseController
      * 判断该药店的经营许可证是否允许上架该商品
      * @param fsStoreProduct
      */
-    @Log(title = "商品管理", businessType = BusinessType.AUDIT, isStoreLog = true, logParam = {"商品", "判断该药店的经营许可证是否允许上架该商品"})
     @PostMapping("/checkStoreDrugLicense")
     public R checkStoreDrugLicense(@RequestBody FsStoreProductAddEditParam fsStoreProduct) {
         StoreLoginUserScrm loginUser = tokenService.getLoginUser(ServletUtils.getRequest());