From 5b00928c8570a3ba21a1170b4642ef88635d90da Mon Sep 17 00:00:00 2001
From: zwl <1051256694@qq.com>
Date: 星期二, 21 四月 2026 22:45:22 +0800
Subject: [PATCH] 1.对入库拍照功能解耦
---
src/main/java/com/zy/asrs/service/impl/InboundCameraCaptureServiceImpl.java | 68 ++++++++++++++++++++++++++++++++++
1 files changed, 68 insertions(+), 0 deletions(-)
diff --git a/src/main/java/com/zy/asrs/service/impl/InboundCameraCaptureServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/InboundCameraCaptureServiceImpl.java
index e7906af..249483b 100644
--- a/src/main/java/com/zy/asrs/service/impl/InboundCameraCaptureServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/InboundCameraCaptureServiceImpl.java
@@ -6,8 +6,14 @@
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.core.common.Cools;
import com.zy.asrs.entity.LocDetl;
+import com.zy.asrs.entity.WrkDetl;
+import com.zy.asrs.entity.WrkDetlLog;
+import com.zy.asrs.entity.WrkMast;
import com.zy.asrs.service.InboundCameraCaptureService;
import com.zy.asrs.service.LocDetlService;
+import com.zy.asrs.service.WrkDetlLogService;
+import com.zy.asrs.service.WrkDetlService;
+import com.zy.asrs.service.WrkMastService;
import com.zy.system.entity.Config;
import com.zy.system.service.ConfigService;
import lombok.extern.slf4j.Slf4j;
@@ -44,6 +50,15 @@
@Autowired
private LocDetlService locDetlService;
+
+ @Autowired
+ private WrkMastService wrkMastService;
+
+ @Autowired
+ private WrkDetlService wrkDetlService;
+
+ @Autowired
+ private WrkDetlLogService wrkDetlLogService;
@Override
public String capture(Integer sourceStaNo, String locNo, String barcode) {
@@ -83,6 +98,33 @@
}
@Override
+ public void processPendingCapture(WrkMast wrkMast) {
+ if (wrkMast == null || wrkMast.getWrkNo() == null) {
+ return;
+ }
+ String current = Cools.isEmpty(wrkMast.getMemo()) ? CAPTURE_PENDING : wrkMast.getMemo();
+ if (!wrkMastService.updateMemoIfCurrent(wrkMast.getWrkNo(), current, CAPTURE_RUNNING)) {
+ return;
+ }
+
+ String status = CAPTURE_FAILED;
+ try {
+ String pic = capture(wrkMast.getSourceStaNo(), wrkMast.getLocNo(), wrkMast.getBarcode());
+ if (!Cools.isEmpty(pic)) {
+ writeBackPic(wrkMast, pic);
+ status = CAPTURE_DONE;
+ }
+ } catch (Exception e) {
+ log.warn("鍏ュ簱寮傛鎶撴媿澶勭悊寮傚父锛歸orkNo={}, sourceStaNo={}, locNo={}, barcode={}",
+ wrkMast.getWrkNo(), wrkMast.getSourceStaNo(), wrkMast.getLocNo(), wrkMast.getBarcode(), e);
+ } finally {
+ if (!wrkMastService.updateMemoIfCurrent(wrkMast.getWrkNo(), CAPTURE_RUNNING, status)) {
+ log.info("鍏ュ簱鎶撴媿鐘舵�佸洖鍐欒烦杩囷細workNo={}, status={}", wrkMast.getWrkNo(), status);
+ }
+ }
+ }
+
+ @Override
public List<String> resolvePicUrls(String pic) {
CaptureConfig config = loadConfig();
String prefix = config == null ? "" : config.imageUrlPrefix;
@@ -113,6 +155,32 @@
return new ArrayList<>(urls);
}
+ private void writeBackPic(WrkMast wrkMast, String pic) {
+ Date now = new Date();
+
+ WrkDetl wrkDetl = new WrkDetl();
+ wrkDetl.setPic(pic);
+ wrkDetl.setModiTime(now);
+ wrkDetlService.update(wrkDetl, new EntityWrapper<WrkDetl>().eq("wrk_no", wrkMast.getWrkNo()));
+
+ WrkDetlLog wrkDetlLog = new WrkDetlLog();
+ wrkDetlLog.setPic(pic);
+ wrkDetlLog.setModiTime(now);
+ EntityWrapper<WrkDetlLog> logWrapper = new EntityWrapper<>();
+ logWrapper.eq("wrk_no", wrkMast.getWrkNo());
+ if (wrkMast.getIoTime() != null) {
+ logWrapper.eq("io_time", wrkMast.getIoTime());
+ }
+ wrkDetlLogService.update(wrkDetlLog, logWrapper);
+
+ if (!Cools.isEmpty(wrkMast.getLocNo())) {
+ LocDetl locDetl = new LocDetl();
+ locDetl.setPic(pic);
+ locDetl.setModiTime(now);
+ locDetlService.update(locDetl, new EntityWrapper<LocDetl>().eq("loc_no", wrkMast.getLocNo()));
+ }
+ }
+
private boolean captureOne(String captureUrl, Integer sourceStaNo, int index, JSONObject camera, String picName) {
String ip = camera.getString("ip");
if (Cools.isEmpty(ip)) {
--
Gitblit v1.9.1