From 3217d6f977040632c116293dbe483e0d22712e81 Mon Sep 17 00:00:00 2001
From: skyouc
Date: 星期四, 13 十一月 2025 18:14:16 +0800
Subject: [PATCH] 拣货功能优化

---
 rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/TaskServiceImpl.java |   19 ++++++++++++++++++-
 1 files changed, 18 insertions(+), 1 deletions(-)

diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/TaskServiceImpl.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/TaskServiceImpl.java
index 0524f20..348bfd1 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/TaskServiceImpl.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/TaskServiceImpl.java
@@ -93,6 +93,8 @@
     private CheckDiffService checkDiffService;
     @Autowired
     private CheckDiffItemService checkDiffItemService;
+    @Autowired
+    private BasContainerService basContainerService;
 
     @Override
     @Transactional(rollbackFor = Exception.class)
@@ -305,8 +307,10 @@
             throw new CoolException("璇锋鏌ョ粍鎷栫姸鎬佹槸鍚﹀畬鎴愶紒锛�");
         }
         waitPakins.forEach(pakin -> {
+            BasContainer container = basContainerService.getOne(new LambdaUpdateWrapper<BasContainer>()
+                    .eq(BasContainer::getCode, pakin.getBarcode()));
             /**鑾峰彇搴撲綅*/
-            String targetLoc = LocManageUtil.getTargetLoc(warehouseArea.getId());
+            String targetLoc = LocManageUtil.getTargetLoc(warehouseArea.getId(), container.getContainerType());
             if (Cools.isEmpty(targetLoc)) {
                 throw new CoolException("璇ョ珯鐐瑰搴斿簱鍖烘湭鎵惧埌搴撲綅");
             }
@@ -347,6 +351,18 @@
             if (!this.save(task)) {
                 throw new CoolException("浠诲姟淇濆瓨澶辫触锛侊紒");
             }
+            BasStation station = basStationService.getOne(new LambdaQueryWrapper<BasStation>()
+                    .eq(BasStation::getStationName, deviceSite.getSite()));
+            if (Objects.isNull(station) || !station.getUseStatus().equals(LocStsType.LOC_STS_TYPE_O.type)) {
+                throw new CoolException("绔欑偣涓嶅瓨鍦ㄦ垨绔欑偣涓嶅浜庣┖搴撶姸鎬侊紒锛�");
+            }
+            station.setUseStatus(LocStsType.LOC_STS_TYPE_R.type);
+
+            if (!basStationService.updateById(station)) {
+                 throw new CoolException("绔欑偣鐘舵�佹洿鏂板け璐ワ紒锛�");
+             }
+
+
             if (!locService.update(new LambdaUpdateWrapper<Loc>().eq(Loc::getCode, task.getTargLoc())
                     .set(Loc::getUseStatus, LocStsType.LOC_STS_TYPE_S.type).set(Loc::getBarcode, pakin.getBarcode()))) {
                 throw new CoolException("搴撲綅棰勭害澶辫触锛侊紒");
@@ -1235,6 +1251,7 @@
      * @description: 鍑哄簱淇℃伅淇濆瓨鑷冲簱瀛樻槑缁嗚〃
      * @version 1.0
      */
+    @Override
     @Transactional(rollbackFor = Exception.class)
     public void saveOutStockItem(List<TaskItem> taskItems, WkOrderItem orderItem, WaveItem waveItem, WkOrderItem diffItem, Long loginUserId) throws Exception {
         Stock stock = new Stock();

--
Gitblit v1.9.1