Explorar o código

PDA线边出库

k %!s(int64=2) %!d(string=hai) anos
pai
achega
8b338af88a

+ 23 - 0
ruoyi-admin/src/main/java/com/ruoyi/web/controller/warewms/pda/PdaController.java

@@ -444,6 +444,7 @@ public class PdaController {
     //region PDA出库
 
     /**
+     * PDA托盘出库
      * 出库单分配
      *
      * @return
@@ -459,7 +460,10 @@ public class PdaController {
     }
 
     /**
+     * PDA托盘出库
      * 查询出库分配列表
+     * 1.普通出库单根据lotatt15出库单号查询出库存
+     * 2.备货出库单(1)备货完成根据lotatt14查询出库存(2)未备货完成根据lotatt15查询出库存
      *
      * @return
      */
@@ -474,6 +478,25 @@ public class PdaController {
         return AjaxResult.success(checkOutVOList);
     }
 
+    /**
+     * PDA线边出库
+     * 查询备货单已经备货的库存(即便备货单没有完全备货)(主要是将库存移动到线边区域)
+     * 1.传入单据必须为备货单
+     * 2.备货出库单(1)根据lotatt14查询出库存
+     *
+     * @return
+     */
+    @GetMapping("/docOrder/checkOutListBh")
+    public AjaxResult checkOutListBh(@RequestParam String orderNos) {
+        List<String> orderList = JSONArray.parseArray(orderNos, String.class);
+        List<String> orderNoList = wmsDocOrderHeaderService.changeErpNoToOrderNo(orderList);
+        if (orderNoList.size() == 0) {
+            return AjaxResult.error("请扫描正确的出库单号");
+        }
+        List<CheckOutVO> checkOutVOList = wmsDocOrderHeaderService.checkOutListBh(orderNoList);
+        return AjaxResult.success(checkOutVOList);
+    }
+
     /**
      * 物料拉动(出库)
      *

+ 9 - 1
warewms-ams/src/main/java/com/ruoyi/ams/order/service/IWmsDocOrderHeaderService.java

@@ -164,13 +164,21 @@ public interface IWmsDocOrderHeaderService {
     AjaxResult toPick(PickForm pickForm);
 
     /**
-     * 出库list
+     * 查询出库分配列表
      *
      * @param orderNoList
      * @return
      */
     List<CheckOutVO> checkOutList(List<String> orderNoList);
 
+    /**
+     * 查询出库分配列表(备货完成的)
+     *
+     * @param orderNoList
+     * @return
+     */
+    List<CheckOutVO> checkOutListBh(List<String> orderNoList);
+
     /**
      * 物料拉动
      *

+ 42 - 0
warewms-ams/src/main/java/com/ruoyi/ams/order/service/impl/WmsDocOrderHeaderServiceImpl.java

@@ -51,6 +51,7 @@ import com.ruoyi.common.utils.DateUtils;
 import com.ruoyi.common.utils.SecurityUtils;
 import com.ruoyi.common.utils.StringUtils;
 import com.ruoyi.common.utils.uuid.SnowflakeIdWorker;
+import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Propagation;
@@ -66,6 +67,7 @@ import java.util.stream.Collectors;
  * @author ruoyi
  * @date 2022-10-18
  */
+@Slf4j
 @Service
 public class WmsDocOrderHeaderServiceImpl implements IWmsDocOrderHeaderService {
     @Autowired
@@ -812,6 +814,46 @@ public class WmsDocOrderHeaderServiceImpl implements IWmsDocOrderHeaderService {
 //        return wmsDocOrderHeaderMapper.selectCheckOutList(orderNoList);
     }
 
+    @Override
+    public List<CheckOutVO> checkOutListBh(List<String> orderNoList) {
+        List<CheckOutVO> endCheckOutVOList = new ArrayList<>();
+        Set<String> locationSet = new HashSet<>();
+        for (String orderNo : orderNoList) {
+            WmsDocOrderHeader wmsDocOrderHeader = wmsDocOrderHeaderService.selectWmsDocOrderHeaderByOrderNo(orderNo);
+            if (!wmsDocOrderHeader.getOrderType().equals(Constant.ORDER_TYP.BH.getValue())) {
+                log.error("出库单类型必须为备货!" + wmsDocOrderHeader.getSoReference1());
+                return null;
+            }
+        }
+        for (String orderNo : orderNoList) {
+            WmsDocOrderHeader wmsDocOrderHeader = wmsDocOrderHeaderService.selectWmsDocOrderHeaderByOrderNo(orderNo);
+            // 胖蛋是备货单
+            boolean isBh = wmsDocOrderHeader.getOrderType().equals(Constant.ORDER_TYP.BH.getValue());
+            InvLocIdSearchFrom invLocIdSearchFrom = new InvLocIdSearchFrom();
+            if (isBh) {
+                invLocIdSearchFrom.setLotatt14(orderNo);
+            } else {
+                invLocIdSearchFrom.setLotatt15(orderNo);
+            }
+            List<InvLotLocIdLotattVO> invLotLocIdLotattVOS = invLotLocIdService.selectInvLocIdLotattList(invLocIdSearchFrom);
+            for (InvLotLocIdLotattVO v : invLotLocIdLotattVOS) {
+                if (v.getStockStatus().equals(Constant.STOCK_STATUS.STOCK00.getValue())
+                        && v.getIsEmpty().equals(Constant.IS_YES.N.name())
+                        && v.getZoneId().equals(Constant.ZONE_TYPE.ZONE_INV.getValue().toString())) {
+                    if (!locationSet.contains(v.getLocationNo())) {
+                        CheckOutVO checkOutVO = new CheckOutVO();
+                        checkOutVO.setOrderNo(wmsDocOrderHeader.getSoReference1());
+                        checkOutVO.setLocationNo(v.getLocationNo());
+                        checkOutVO.setPalletNo(v.getLotatt07());
+                        endCheckOutVOList.add(checkOutVO);
+                        locationSet.add(v.getLocationNo());
+                    }
+                }
+            }
+        }
+        return endCheckOutVOList;
+    }
+
     @Transactional(propagation = Propagation.REQUIRES_NEW)
     @Override
     public AjaxResult doCheckout(CheckOutInfoForm check) {