From e8855038f6e47cde0d6a8a9ddb2fa5a629e0efbb Mon Sep 17 00:00:00 2001
From: 1 <1@123>
Date: 星期四, 22 一月 2026 13:39:56 +0800
Subject: [PATCH] lsh#

---
 rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/AgvServiceImpl.java           |   49 ++++++++++++++++++++++++
 rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/WkOrder.java                    |   51 +++++++++++++++++++++++++
 rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/WaitPakinServiceImpl.java |    2 +
 rsf-server/src/main/java/com/vincent/rsf/server/api/service/AgvService.java                    |    1 
 4 files changed, 103 insertions(+), 0 deletions(-)

diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/api/service/AgvService.java b/rsf-server/src/main/java/com/vincent/rsf/server/api/service/AgvService.java
index 355fa01..9da4be0 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/api/service/AgvService.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/api/service/AgvService.java
@@ -17,4 +17,5 @@
     R getStaMsgSelect(Map<String, Object> params);
 
     R AGVBindAndInTaskStart(WaitPakinParam waitPakinPda, Long loginUserId);
+    R AGVBindAndInTaskStart(String barcode);
 }
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/AgvServiceImpl.java b/rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/AgvServiceImpl.java
index 7ddb9d0..a691ff0 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/AgvServiceImpl.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/AgvServiceImpl.java
@@ -47,6 +47,17 @@
     }
 
     @Override
+    @Transactional(rollbackFor = Exception.class)
+    public R AGVBindAndInTaskStart(String barcode) {
+        //楠岃瘉鏉$爜
+        boolean b = checkStaStatus(barcode);
+        if (!b) {
+            return R.error("鏉$爜鏈壘鍒板搴旇鍒�");
+        }
+        return R.ok();
+    }
+
+    @Override
     public R getStaMsgSelect(Map<String, Object> params) {
         String sta = params.get("sta").toString();
         if (Cools.isEmpty(sta)) {
@@ -345,4 +356,42 @@
 
         return basStation;
     }
+    private boolean checkStaStatus(String barcode) {
+        if (Cools.isEmpty(barcode)) {
+            throw new CoolException("瀹瑰櫒鐮佷笉鑳戒负绌�");
+        }
+        WaitPakin waitPakin = waitPakinService.getOne(new LambdaQueryWrapper<WaitPakin>()
+                .eq(WaitPakin::getBarcode, barcode)
+                .eq(WaitPakin::getIoStatus, PakinIOStatus.PAKIN_IO_STATUS_DONE.val)
+        );
+        if (Cools.isEmpty(waitPakin)) {
+            throw new CoolException("瀹瑰櫒鐮佹湭鎵惧埌缁勬墭淇℃伅,璇锋鏌ョ粍鎵樼姸鎬�");
+        }
+        BasStation isBarcodeSta = basStationService.getOne(new LambdaQueryWrapper<BasStation>()
+                        .eq(BasStation::getBarcode, barcode)
+                , false
+        );
+        if (!Cools.isEmpty(isBarcodeSta)) {
+            throw new CoolException("璇ユ潯鐮佸凡琚�" + isBarcodeSta.getStationName() + "绔欑粦瀹�");
+        }
+
+        List<BasContainer> containers = basContainerService.list(
+                new LambdaQueryWrapper<BasContainer>());
+        boolean matches = false;
+        for (BasContainer container : containers) {
+            String codeType = container.getCodeType();  // 鑾峰彇姝e垯琛ㄨ揪寮�
+            if (barcode.matches(codeType)) {  // 鍒ゆ柇鏉$爜鏄惁绗﹀悎杩欎釜姝e垯
+                matches = true;
+                return true;
+            }
+        }
+//            boolean matches = containers.stream()
+//                    .map(BasContainer::getCodeType)
+//                    .anyMatch(codeType -> barcode.matches(codeType));
+        if (!matches) {
+            throw new CoolException("瀹瑰櫒涓庣珯鐐逛笉鍖归厤");
+        }
+
+        return true;
+    }
 }
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/WkOrder.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/WkOrder.java
index f5d5f63..b861d02 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/WkOrder.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/WkOrder.java
@@ -5,6 +5,7 @@
 
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.fasterxml.jackson.annotation.JsonFormat;
+import com.vincent.rsf.server.api.controller.erp.params.SyncOrderParams;
 import com.vincent.rsf.server.manager.enums.OrderType;
 import com.vincent.rsf.server.manager.enums.OrderWorkType;
 import com.vincent.rsf.server.system.constant.DictTypeCode;
@@ -343,6 +344,56 @@
         this.memo = memo;
     }
 
+    public WkOrder(SyncOrderParams syncOrderParams) {
+        this.code = code;
+        this.poCode = poCode;
+        this.poId = poId;
+        this.type = type;
+        this.wkType = wkType;
+        this.checkType = checkType;
+        this.anfme = anfme;
+        this.workQty = workQty;
+        this.qty = qty;
+        this.logisNo = logisNo;
+        this.waveId = waveId;
+        this.arrTime = arrTime;
+        this.ntyStatus = ntyStatus;
+        this.reportOnce = reportOnce;
+        this.rleStatus = rleStatus;
+        this.exceStatus = exceStatus;
+        this.status = status;
+        this.deleted = deleted;
+        this.tenantId = tenantId;
+        this.createBy = createBy;
+        this.createTime = createTime;
+        this.updateBy = updateBy;
+        this.updateTime = updateTime;
+        this.memo = memo;
+        this.warehouseId = warehouseId;
+        this.wareAreaId = wareAreaId;
+        this.businessTime = businessTime;
+        this.stationId = stationId;
+        this.shipperId = shipperId;
+        this.orderInternalCode = orderInternalCode;
+        this.stockDirect = stockDirect;
+        this.customerId = customerId;
+        this.customerName = customerName;
+        this.supplierId = supplierId;
+        this.supplierName = supplierName;
+        this.stockOrgId = stockOrgId;
+        this.stockOrgName = stockOrgName;
+        this.purchaseOrgId = purchaseOrgId;
+        this.purchaseOrgName = purchaseOrgName;
+        this.purchaseUserId = purchaseUserId;
+        this.purchaseUserName = purchaseUserName;
+        this.prdOrgId = prdOrgId;
+        this.prdOrgName = prdOrgName;
+        this.saleOrgId = saleOrgId;
+        this.saleOrgName = saleOrgName;
+        this.saleUserId = saleUserId;
+        this.saleUserName = saleUserName;
+    }
+
     public String getExceStatus$() {
         if (Cools.isEmpty(this.exceStatus)) {
             return "";
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/WaitPakinServiceImpl.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/WaitPakinServiceImpl.java
index 56dd1e9..49a184b 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/WaitPakinServiceImpl.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/WaitPakinServiceImpl.java
@@ -297,6 +297,8 @@
         }
         if (waitPakin.getAgvSign()==1) {
             agvService.AGVBindAndInTaskStart(waitPakin, userId);
+        } else {
+            agvService.AGVBindAndInTaskStart(waitPakin.getBarcode());
         }
 
         return pakin;

--
Gitblit v1.9.1