From 632bde0f32999a2b319b706e23d90bc1b5dd8cc2 Mon Sep 17 00:00:00 2001
From: zwl <1051256694@qq.com>
Date: 星期二, 21 四月 2026 17:22:56 +0800
Subject: [PATCH] 1.新增拍照功能
---
src/main/java/com/zy/asrs/task/WorkMastScheduler.java | 58 ++++++++++++++++++++++++++++++++++++----------------------
1 files changed, 36 insertions(+), 22 deletions(-)
diff --git a/src/main/java/com/zy/asrs/task/WorkMastScheduler.java b/src/main/java/com/zy/asrs/task/WorkMastScheduler.java
index 2ce6486..d1dc7cc 100644
--- a/src/main/java/com/zy/asrs/task/WorkMastScheduler.java
+++ b/src/main/java/com/zy/asrs/task/WorkMastScheduler.java
@@ -32,6 +32,8 @@
public class WorkMastScheduler {
private static final Logger log = LoggerFactory.getLogger(WorkMastScheduler.class);
+ private static final long OUT_LOCK_REPORT_SUCCESS_WRK_STS = 21L;
+ private static final long OUT_LOCK_REPORT_FAIL_WRK_STS = 22L;
@Autowired
private WcsApiService wcsApiService;
@@ -122,7 +124,7 @@
for (String batchSeq : batchSeqs) {
String blockingBatchSeq = findFirstUnfinishedOutboundBatchSeq(userNo);
- if (!Objects.equals(batchSeq, blockingBatchSeq)) {
+ if (blockingBatchSeq != null && compareBatchSeqNatural(batchSeq, blockingBatchSeq) != 0) {
log.info("鍑哄簱鎵规鏈畬鎴愶紝鏆傚仠鍚庣画涓嬪彂, userNo={}, blockingBatchSeq={}, nextBatchSeq={}",
userNo, blockingBatchSeq, batchSeq);
break;
@@ -157,7 +159,7 @@
.setTaskPri(wrkMast.getIoPri().intValue())
.setBarcode(wrkMast.getBarcode());
if (wrkMast.getPltType() != null && wrkMast.getPltType() > 0) {
- params.setBatch(wrkMast.getUserNo())
+ params.setBatch(wrkMast.getBatchSeq())
.setBatchSeq(wrkMast.getPltType());
}
// 2: 鍏ュ簱銆傚叆搴撴帴鍙d娇鐢� sourceStaNo + 鐩爣搴撲綅銆�
@@ -191,7 +193,8 @@
wrapper.eq("user_no", userNo);
}
wrapper.eq("io_type", 101);
- wrapper.lt("wrk_sts", 14);
+ wrapper.last(" and (wrk_sts < 14 or wrk_sts in ("
+ + OUT_LOCK_REPORT_SUCCESS_WRK_STS + "," + OUT_LOCK_REPORT_FAIL_WRK_STS + "))");
List<WrkMast> rows = wrkMastService.selectList(wrapper);
if (rows == null || rows.isEmpty()) {
return null;
@@ -209,29 +212,40 @@
private int compareBatchSeqNatural(String left, String right) {
String safeLeft = Cools.isEmpty(left) ? "" : left;
String safeRight = Cools.isEmpty(right) ? "" : right;
- boolean leftNumeric = isDigits(safeLeft);
- boolean rightNumeric = isDigits(safeRight);
- if (leftNumeric && rightNumeric) {
- BigInteger leftValue = new BigInteger(safeLeft);
- BigInteger rightValue = new BigInteger(safeRight);
- int compare = leftValue.compareTo(rightValue);
+ int leftIndex = 0;
+ int rightIndex = 0;
+ while (leftIndex < safeLeft.length() && rightIndex < safeRight.length()) {
+ char leftChar = safeLeft.charAt(leftIndex);
+ char rightChar = safeRight.charAt(rightIndex);
+ if (Character.isDigit(leftChar) && Character.isDigit(rightChar)) {
+ int leftStart = leftIndex;
+ int rightStart = rightIndex;
+ while (leftIndex < safeLeft.length() && Character.isDigit(safeLeft.charAt(leftIndex))) {
+ leftIndex++;
+ }
+ while (rightIndex < safeRight.length() && Character.isDigit(safeRight.charAt(rightIndex))) {
+ rightIndex++;
+ }
+ String leftNumber = safeLeft.substring(leftStart, leftIndex);
+ String rightNumber = safeRight.substring(rightStart, rightIndex);
+ int compare = new BigInteger(leftNumber).compareTo(new BigInteger(rightNumber));
+ if (compare != 0) {
+ return compare;
+ }
+ compare = Integer.compare(leftNumber.length(), rightNumber.length());
+ if (compare != 0) {
+ return compare;
+ }
+ continue;
+ }
+ int compare = Character.compare(leftChar, rightChar);
if (compare != 0) {
return compare;
}
+ leftIndex++;
+ rightIndex++;
}
- return safeLeft.compareTo(safeRight);
- }
-
- private boolean isDigits(String value) {
- if (Cools.isEmpty(value)) {
- return false;
- }
- for (int i = 0; i < value.length(); i++) {
- if (!Character.isDigit(value.charAt(i))) {
- return false;
- }
- }
- return true;
+ return Integer.compare(safeLeft.length(), safeRight.length());
}
private String normalizeGroupKey(String value) {
--
Gitblit v1.9.1