Browse Source

PDA托盘出库(查询分配)优化全部根据出库单查询库存

k 2 years ago
parent
commit
c34de43ac5

+ 18 - 0
warewms-ams/src/main/java/com/ruoyi/ams/inv/domain/vo/InvLotLocIdLotattVO.java

@@ -13,6 +13,8 @@ public class InvLotLocIdLotattVO {
     private String skuName;
     private String skuTypeName;
     private String locationNo;
+    private String stockStatus;
+    private String isEmpty;
     private String zoneName;
     private Double qty;
     private Double qtyallocated;
@@ -276,4 +278,20 @@ public class InvLotLocIdLotattVO {
     public void setZoneName(String zoneName) {
         this.zoneName = zoneName;
     }
+
+    public String getStockStatus() {
+        return stockStatus;
+    }
+
+    public void setStockStatus(String stockStatus) {
+        this.stockStatus = stockStatus;
+    }
+
+    public String getIsEmpty() {
+        return isEmpty;
+    }
+
+    public void setIsEmpty(String isEmpty) {
+        this.isEmpty = isEmpty;
+    }
 }

+ 33 - 1
warewms-ams/src/main/java/com/ruoyi/ams/order/service/impl/WmsDocOrderHeaderServiceImpl.java

@@ -738,7 +738,39 @@ public class WmsDocOrderHeaderServiceImpl implements IWmsDocOrderHeaderService {
 
     @Override
     public List<CheckOutVO> checkOutList(List<String> orderNoList) {
-        return wmsDocOrderHeaderMapper.selectCheckOutList(orderNoList);
+        List<CheckOutVO> endCheckOutVOList = new ArrayList<>();
+        Set<String> locationSet = new HashSet<>();
+        for (String orderNo : orderNoList) {
+            WmsDocOrderHeader wmsDocOrderHeader = wmsDocOrderHeaderService.selectWmsDocOrderHeaderByOrderNo(orderNo);
+            // 是备货单并且是备货完成状态
+            boolean isBh = wmsDocOrderHeader.getOrderType().equals(Constant.ORDER_TYP.BH.getValue())
+                    &&
+                    (wmsDocOrderHeader.getOrderStatus().equals(Constant.ORDER_STS.STS23.getValue())
+                            || (wmsDocOrderHeader.getOrderStatus().equals(Constant.ORDER_STS.STS98.getValue())
+                            || (wmsDocOrderHeader.getOrderStatus().equals(Constant.ORDER_STS.STS99.getValue()))));
+            InvLocIdSearchFrom invLocIdSearchFrom = new InvLocIdSearchFrom();
+            if (isBh) {
+                invLocIdSearchFrom.setLotatt14(orderNo);
+            }else {
+                invLocIdSearchFrom.setLotatt15(orderNo);
+            }
+            List<InvLotLocIdLotattVO> invLotLocIdLotattVOS = invLotLocIdService.selectInvLocIdLotattList(invLocIdSearchFrom);
+            invLotLocIdLotattVOS.forEach(v->{
+                if (v.getStockStatus().equals(Constant.STOCK_STATUS.STOCK00.getValue())
+                        && v.getIsEmpty().equals(Constant.IS_YES.N.name())) {
+                    if (!locationSet.contains(v.getLocationNo())) {
+                        CheckOutVO checkOutVO = new CheckOutVO();
+                        checkOutVO.setOrderNo(orderNo);
+                        checkOutVO.setLocationNo(v.getLocationNo());
+                        checkOutVO.setPalletNo(v.getLotatt07());
+                        endCheckOutVOList.add(checkOutVO);
+                        locationSet.add(v.getLocationNo());
+                    }
+                }
+            });
+        }
+        return endCheckOutVOList;
+//        return wmsDocOrderHeaderMapper.selectCheckOutList(orderNoList);
     }
 
     @Transactional(propagation = Propagation.REQUIRES_NEW)

+ 3 - 1
warewms-ams/src/main/resources/mapper/ams/InvLotLocIdMapper.xml

@@ -31,6 +31,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         <result property="lotnum"    column="lotnum"    />
         <result property="locationNo"    column="location_no"    />
         <result property="locationId"    column="location_id"    />
+        <result property="isEmpty"    column="isEmpty"    />
+        <result property="stockStatus"    column="stockStatus"    />
         <result property="zoneName"    column="zone_name"    />
         <result property="customerId"    column="customer_id"    />
         <result property="sku"    column="sku"    />
@@ -329,7 +331,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
     <select id="selectInvLocIdLotattList" resultMap="InvLotLocIdLotattResult">
         select
         inv.location_id,sk.sku,sk.desc1 sku_name,skt.item_name sku_type_name,b.location_no,inv.qty,inv.qtyallocated
-        ,att.lotnum, att.customer_id,w.box_no,w.is_full,z.zone_name
+        ,att.lotnum, att.customer_id,w.box_no,w.is_full,b.stock_status stockStatus,b.is_empty isEmpty,z.zone_name
         ,lotatt01, lotatt02, lotatt03, lotatt04,lot05_dict.dict_label lotatt05, supp.supplier_name lotatt06
         ,lotatt07, lotatt08, lotatt09, lotatt10, lotatt11, lotatt12, lotatt13, lotatt14, lotatt15, lotatt16, lotatt17
         ,lotatt18