From adb83050b74c2d7fa1845f18e016ef3b18496543 Mon Sep 17 00:00:00 2001
From: zc <zyzc>
Date: 星期三, 22 十月 2025 17:15:43 +0800
Subject: [PATCH] pda波次揀貨優化 放貨成功上報優化 出入庫站點功能優化

---
 rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/TaskServiceImpl.java    |   13 ++++--
 rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/PdaOutStockServiceImpl.java |    7 +--
 rsf-server/src/main/java/com/vincent/rsf/server/manager/utils/LocManageUtil.java             |   60 +++++++++++++++++++++++++-----
 rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/dto/OrderOutItemDto.java  |    2 
 rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/WcsServiceImpl.java         |    2 
 5 files changed, 64 insertions(+), 20 deletions(-)

diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/PdaOutStockServiceImpl.java b/rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/PdaOutStockServiceImpl.java
index 4231b53..98ddf08 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/PdaOutStockServiceImpl.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/PdaOutStockServiceImpl.java
@@ -12,6 +12,7 @@
 import com.vincent.rsf.server.manager.enums.TaskStsType;
 import com.vincent.rsf.server.manager.service.*;
 import lombok.Synchronized;
+import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
@@ -125,14 +126,12 @@
             for (WkOrder wkOrder : wkOrderList) {
                 WkOrderItem orderItem = asnOrderItemService.getOne(new LambdaQueryWrapper<WkOrderItem>()
                         .eq(WkOrderItem::getOrderId, wkOrder.getId())
-                        .eq(WkOrderItem::getMatnrCode, taskItem.getMatnrCode())
-                        .eq(WkOrderItem::getSplrBatch, taskItem.getBatch())
+                        .eq(StringUtils.isNotEmpty(taskItem.getMatnrCode()), WkOrderItem::getMatnrCode, taskItem.getMatnrCode())
+                        .eq(StringUtils.isNotEmpty(taskItem.getBatch()), WkOrderItem::getSplrBatch, taskItem.getBatch())
                 );
                 if (null != orderItem) {
                     list.add(orderItem);
                 }
-
-
             }
             containerWaveDto.setWkOrderItems(list);
             containerWaveDtos.add(containerWaveDto);
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/WcsServiceImpl.java b/rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/WcsServiceImpl.java
index 8b917c4..e7d2bc5 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/WcsServiceImpl.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/WcsServiceImpl.java
@@ -531,7 +531,7 @@
 
                 if (!taskService.update(new LambdaUpdateWrapper<Task>().eq(Task::getTaskCode, task.getTaskCode())
                         .lt(Task::getTaskStatus, TaskStsType.COMPLETE_OUT.id)
-                        .set(Task::getTaskStatus, TaskStsType.COMPLETE_OUT.id))) {
+                        .set(Task::getTaskStatus, TaskStsType.AWAIT.id))) {
                     throw new CoolException("浠诲姟鐘舵�佷慨鏀瑰け璐ワ紒锛�");
                 }
             }
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/dto/OrderOutItemDto.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/dto/OrderOutItemDto.java
index cd79ed4..cf4b173 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/dto/OrderOutItemDto.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/dto/OrderOutItemDto.java
@@ -18,7 +18,7 @@
 
     private List<staListDto> staNos;
 
-    private String siteNo;
+    private String sitesNo;
 
     private String sourceId;
 
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 ed192ce..82a7389 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,13 +351,14 @@
             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() != LocStsType.LOC_STS_TYPE_O.type) {
+            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)) {
+            if (!basStationService.updateById(station)) {
                  throw new CoolException("绔欑偣鐘舵�佹洿鏂板け璐ワ紒锛�");
              }
 
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/utils/LocManageUtil.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/utils/LocManageUtil.java
index b2962f7..aa46ba7 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/manager/utils/LocManageUtil.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/utils/LocManageUtil.java
@@ -2,15 +2,18 @@
 
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.vincent.rsf.framework.common.SpringUtils;
+import com.vincent.rsf.framework.exception.CoolException;
 import com.vincent.rsf.server.api.utils.LocUtils;
 import com.vincent.rsf.server.manager.controller.dto.ExistDto;
 import com.vincent.rsf.server.manager.controller.dto.OrderOutItemDto;
 import com.vincent.rsf.server.manager.controller.params.WaveToLocParams;
 import com.vincent.rsf.server.manager.entity.*;
+import com.vincent.rsf.server.manager.enums.ContainerType;
 import com.vincent.rsf.server.manager.enums.TaskType;
 import com.vincent.rsf.server.manager.enums.WaveRuleType;
 import com.vincent.rsf.server.manager.service.*;
 import com.vincent.rsf.server.manager.enums.LocStsType;
+import io.swagger.models.auth.In;
 import org.apache.commons.lang3.StringUtils;
 
 import javax.swing.*;
@@ -21,21 +24,48 @@
 public class LocManageUtil {
 
     /**
-     * @author Ryan
-     * @description  鑾峰彇鐩爣搴撲綅, 鍖呭惈搴撲綅鑾峰彇绛栫暐
      * @param
      * @return
+     * @author Ryan
+     * @description 鑾峰彇鐩爣搴撲綅, 鍖呭惈搴撲綅鑾峰彇绛栫暐
      * @time 2025/3/31 08:50
      */
     public static String getTargetLoc(Long areaId) {
         //TODO 搴撲綅绛栫暐鍚庣画鎺掓湡
+
+        return getTargetLoc(areaId, null);
+    }
+
+    public static String getTargetLoc(Long areaId, Long containerType) {
+        Long locType = null;
+        if (!Objects.isNull(containerType)) {
+            LocTypeService locService = SpringUtils.getBean(LocTypeService.class);
+            if (containerType.equals(ContainerType.CONTAINER_TYPE_NORMAL.val)) {
+                LocType low = locService.getOne(new LambdaQueryWrapper<LocType>()
+                        .eq(LocType::getCode, "L"));
+                if (Objects.isNull(low)) {
+                    throw new CoolException("搴綅椤炲瀷涓嶅瓨鍦紒锛�");
+                }
+                locType = low.getId();
+            } else {
+                LocType low = locService.getOne(new LambdaQueryWrapper<LocType>()
+                        .eq(LocType::getCode, "H"));
+                if (Objects.isNull(low)) {
+                    throw new CoolException("搴綅椤炲瀷涓嶅瓨鍦紒锛�");
+                }
+                locType = low.getId();
+            }
+        }
+        //TODO 搴撲綅绛栫暐鍚庣画鎺掓湡
         LocService locService = SpringUtils.getBean(LocService.class);
         Loc loc = locService.getOne(new LambdaQueryWrapper<Loc>()
+                .eq(!Objects.isNull(locType), Loc::getType, locType)
                 .eq(Loc::getAreaId, areaId)
+                .eq(Loc::getUseStatus, LocStsType.LOC_STS_TYPE_O.type)
                 .orderByAsc(Loc::getLev)
                 .orderByAsc(Loc::getCol)
                 .orderByAsc(Loc::getRow)
-                .eq(Loc::getUseStatus, LocStsType.LOC_STS_TYPE_O.type), false
+                .last("LIMIT 1")
         );
 
         return !Objects.isNull(loc) ? loc.getCode() : null;
@@ -43,12 +73,12 @@
 
 
     /**
-    * @author Ryan
-    * @description 鑾峰彇鐩爣绔欑偣
-    * @param
-    * @return
-    * @time 2025/3/31 09:49
-    */
+     * @param
+     * @return
+     * @author Ryan
+     * @description 鑾峰彇鐩爣绔欑偣
+     * @time 2025/3/31 09:49
+     */
     public static String getTargetSite() {
         //TODO 绔欑偣绛栫暐鍚庣画鎺掓湡
         DeviceSiteService deviceSite = SpringUtils.getBean(DeviceSiteService.class);
@@ -58,6 +88,7 @@
 
     /**
      * 鍑哄簱绛栫暐锛�--銆堟晥鐜囦紭鍖栥��
+     *
      * @param matnrCode
      * @param splrBatch
      * @param anfme
@@ -88,6 +119,7 @@
 
     /**
      * 鍑哄簱绛栫暐锛�--<鍏堣繘鍏堝嚭>
+     *
      * @param matnrCode
      * @param splrBatch
      * @param anfme
@@ -113,6 +145,7 @@
 
     /**
      * 鑾峰彇鍑哄簱搴撲綅淇℃伅
+     *
      * @param params
      * @param waveRule
      * @return
@@ -172,7 +205,14 @@
                             orderOutItemDto.setStaNos(maps);
                             //榛樿鑾峰彇绗竴绔欑偣
                             DeviceSite deviceSite = deviceSites.stream().findFirst().get();
-                            orderOutItemDto.setSiteNo(deviceSite.getSite());
+                            BasStationService basStationService = SpringUtils.getBean(BasStationService.class);
+                            BasStation basStation = basStationService.getOne(new LambdaQueryWrapper<BasStation>()
+                                    .eq(BasStation::getUseStatus, LocStsType.LOC_STS_TYPE_O.type)
+                                    .last("LIMIT 1"));
+                            if (Objects.isNull(basStation)) {
+                                throw new CoolException("绔欓粸涓嶅瓨鍦紒锛�");
+                            }
+                            orderOutItemDto.setSitesNo(basStation.getStationName());
                         }
 
                         orderOutItemDto.setSource(item.getItemId())

--
Gitblit v1.9.1