Browse Source

1. 商品图片识别错误后重复识别的问题
2. 定时任务太短导致上一次识别还没结束下一次就开始了

SemiWarm 5 năm trước cách đây
mục cha
commit
499c835653

+ 1 - 0
src/main/java/com/pavis/ai/kwp/ioc/common/jobs/ReRecJob.java

@@ -18,6 +18,7 @@ public class ReRecJob extends QuartzJobBean {
     @Override
     @SuppressWarnings("NullableProblems")
     protected void executeInternal(JobExecutionContext context) throws JobExecutionException {
+        log.info("restart ocr");
         ocrGoodsService.reStartRec();
     }
 }

+ 2 - 2
src/main/java/com/pavis/ai/kwp/ioc/common/jobs/ReRecJobConfig.java

@@ -22,8 +22,8 @@ public class ReRecJobConfig {
                 .newTrigger()
                 .forJob(reRecJobDetail())
                 .withIdentity("reRecJobTrigger")
-                // 每10秒执行一次 */10 * * * * ?
-                .withSchedule(CronScheduleBuilder.cronSchedule("*/10 * * * * ?"))
+                // 每5分钟执行一次 0 */5 * * * ?
+                .withSchedule(CronScheduleBuilder.cronSchedule("0 */5 * * * ?"))
                 .build();
     }
 }

+ 18 - 11
src/main/java/com/pavis/ai/kwp/ioc/service/impl/OcrGoodsServiceImpl.java

@@ -110,8 +110,24 @@ public class OcrGoodsServiceImpl implements OcrGoodsService {
     }
 
     public void startOcr(String uploadId, UpGoods ug) {
-        try {
-            IrRes res = ctrService.startRequest(uploadId, ug.getGoodsImg());
+        QueryWrapper<SubImg> wrapper = new QueryWrapper<>();
+        wrapper.lambda().eq(SubImg::getGoodsId, ug.getId());
+        // 检查是否已有识别结果
+        List<SubImg> subImgList = subImgMapper.selectList(wrapper);
+        if (CollectionUtils.isEmpty(subImgList)) {
+            IrRes res = null;
+            try {
+                res = ctrService.startRequest(uploadId, ug.getGoodsImg());
+            } catch (Exception e) {
+                ErrGoods err = ErrGoods.builder()
+                        .uploadId(uploadId)
+                        .goodsImg(ug.getGoodsImg())
+                        .error(e.getMessage())
+                        .createTime(DateTimeUtils.dateTimeNow())
+                        .build();
+                errGoodsMapper.insert(err);
+                log.error("商品图片:{},识别出错:{}", ug.getGoodsImg(), e.getMessage());
+            }
             if (res != null) {
                 if (StringUtils.isBlank(res.getErrorCode())) {
                     res.setGoodsId(ug.getId());
@@ -126,15 +142,6 @@ public class OcrGoodsServiceImpl implements OcrGoodsService {
                     errGoodsMapper.insert(err);
                 }
             }
-        } catch (Exception e) {
-            ErrGoods err = ErrGoods.builder()
-                    .uploadId(uploadId)
-                    .goodsImg(ug.getGoodsImg())
-                    .error(e.getMessage())
-                    .createTime(DateTimeUtils.dateTimeNow())
-                    .build();
-            errGoodsMapper.insert(err);
-            log.error("商品图片:{},识别出错:{}", ug.getGoodsImg(), e.getMessage());
         }
     }