| | |
| | | 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; |
| | |
| | | |
| | | @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) { |
| | |
| | | } |
| | | |
| | | @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("入库异步抓拍处理异常:workNo={}, 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; |
| | |
| | | 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)) { |