Sfoglia il codice sorgente

PDA备货组盘出库流程测试

k 2 anni fa
parent
commit
f1d25d4d32

+ 4 - 2
ruoyi-admin/src/main/java/com/ruoyi/web/controller/warewms/pda/PdaController.java

@@ -397,7 +397,7 @@ public class PdaController {
     }
 
 
-    public static class  stockingDetail{
+    public static class stockingDetail {
         private String erpNo;
         private String sku;
         private String qty;
@@ -511,6 +511,7 @@ public class PdaController {
     /**
      * 组盘
      * 1.PDA备货组盘(传出库单号) 2.PDA分拣组盘(不传出库单号)
+     *
      * @return
      */
     @PostMapping("/docOrder/groupDisk")
@@ -585,10 +586,11 @@ public class PdaController {
      */
     @PostMapping("/docOrder/snCheck")
     public AjaxResult snCheck(@Validated @RequestBody SnCheckSoForm snCheckSoForm) {
+        String originalOrderNo = snCheckSoForm.getOrderNo();
         // ERP号转换为wms系统出库单号orderNo
         String orderNo = wmsDocOrderHeaderService.changeErpNoToOrderNo(snCheckSoForm.getOrderNo());
         snCheckSoForm.setOrderNo(orderNo);
-        if (StringUtils.isEmpty(orderNo)) {
+        if (StringUtils.isEmpty(orderNo) && StringUtils.isNotEmpty(originalOrderNo)) {
             return AjaxResult.error("请扫描正确的出库单号!");
         }
         CodeSkuRelationshipSoVO codeSkuRelationshipSoVO = wmsDocOrderHeaderService.searchSn(snCheckSoForm);

+ 1 - 0
warewms-ams/src/main/java/com/ruoyi/ams/asn/service/impl/WmsDocAsnHeaderServiceImpl.java

@@ -834,6 +834,7 @@ public class WmsDocAsnHeaderServiceImpl implements IWmsDocAsnHeaderService {
         return AjaxResult.success("入库-条码扫描记录表插入成功");
     }
 
+    @Transactional
     @Override
     public AjaxResult modifyReceiptDocCompletionStatus(String palletNo) {
         //获取库存当前的托盘位置

+ 9 - 0
warewms-ams/src/main/java/com/ruoyi/ams/inv/domain/form/InvLocIdSearchFrom.java

@@ -10,6 +10,7 @@ import com.ruoyi.ams.config.domain.dto.LotattDTO;
 public class InvLocIdSearchFrom {
     private String sku;
     private String zoneId;
+    private String locationId;
     private String locationNo;
     private String isFull;
     private LotattDTO lotattDTO= new LotattDTO();
@@ -35,6 +36,14 @@ public class InvLocIdSearchFrom {
         this.zoneId = zoneId;
     }
 
+    public String getLocationId() {
+        return locationId;
+    }
+
+    public void setLocationId(String locationId) {
+        this.locationId = locationId;
+    }
+
     public String getLocationNo() {
         return locationNo;
     }

+ 2 - 0
warewms-ams/src/main/java/com/ruoyi/ams/order/service/impl/ActAllocationDetailsServiceImpl.java

@@ -233,6 +233,7 @@ public class ActAllocationDetailsServiceImpl implements IActAllocationDetailsSer
         actAllocationDetailsMapper.updateAllocationDetailsLocationIdByPalletNo(locationId, palletNo);
     }
 
+    @Transactional
     @Override
     public AjaxResult modifyAssignmentTaskStatus(String orderNo,Long locationId,String palletNo) {
         ActAllocationDetailsFrom actAllocationQuery = new ActAllocationDetailsFrom();
@@ -250,6 +251,7 @@ public class ActAllocationDetailsServiceImpl implements IActAllocationDetailsSer
         return AjaxResult.success();
     }
 
+    @Transactional
     @Override
     public AjaxResult modifyAssignmentStockTaskStatusPickingComplete(String orderNo, Long locationId, String palletNo) {
         ActAllocationDetailsFrom actAllocationQuery = new ActAllocationDetailsFrom();

+ 89 - 61
warewms-ams/src/main/java/com/ruoyi/ams/order/service/impl/WmsDocOrderHeaderServiceImpl.java

@@ -221,6 +221,7 @@ public class WmsDocOrderHeaderServiceImpl implements IWmsDocOrderHeaderService {
     /**
      * 订单分配
      * 只能完全分配
+     *
      * @param orderNo
      * @return
      */
@@ -285,7 +286,7 @@ public class WmsDocOrderHeaderServiceImpl implements IWmsDocOrderHeaderService {
         }
         if (!orderHeader.getOrderStatus().equals(Constant.ORDER_STS.STS00.getValue())
                 && !orderHeader.getOrderStatus().equals(Constant.ORDER_STS.STS10.getValue())
-                && !orderHeader.getOrderStatus().equals(Constant.ORDER_STS.STS22.getValue())){
+                && !orderHeader.getOrderStatus().equals(Constant.ORDER_STS.STS22.getValue())) {
             return AjaxResult.success("出库单状态不可分配!");
         }
 
@@ -418,7 +419,7 @@ public class WmsDocOrderHeaderServiceImpl implements IWmsDocOrderHeaderService {
                             actAllocationDetailsService.addActAllocationDetails(inv.getLotnum(), inv.getLocationId(), allocatedQty, details
                                     , Constant.ORDER_STS.STS20.getValue());
                             //库位对应所有库存lotatt15记录分配出库单号
-                            invLotLocIdService.updateLotatt15ByLocationId(inv.getLocationId(),orderNo);
+                            invLotLocIdService.updateLotatt15ByLocationId(inv.getLocationId(), orderNo);
                         } else {
                             throw new ServiceException("占用库存分配数失败");
                         }
@@ -439,7 +440,7 @@ public class WmsDocOrderHeaderServiceImpl implements IWmsDocOrderHeaderService {
                             actAllocationDetailsService.addActAllocationDetails(inv.getLotnum(), inv.getLocationId(), allocatedQty, details
                                     , Constant.ORDER_STS.STS20.getValue());
                             //库位对应所有库存lotatt15记录分配出库单号
-                            invLotLocIdService.updateLotatt15ByLocationId(inv.getLocationId(),orderNo);
+                            invLotLocIdService.updateLotatt15ByLocationId(inv.getLocationId(), orderNo);
                             return AjaxResult.success("分配完成", originalOrderQty);
                         } else {
                             throw new ServiceException("占用库存分配数失败");
@@ -459,7 +460,7 @@ public class WmsDocOrderHeaderServiceImpl implements IWmsDocOrderHeaderService {
                             actAllocationDetailsService.addActAllocationDetails(inv.getLotnum(), inv.getLocationId(), currentQty, details
                                     , Constant.ORDER_STS.STS20.getValue());
                             //库位对应所有库存lotatt15记录分配出库单号
-                            invLotLocIdService.updateLotatt15ByLocationId(inv.getLocationId(),orderNo);
+                            invLotLocIdService.updateLotatt15ByLocationId(inv.getLocationId(), orderNo);
                             return AjaxResult.success("分配完成", originalOrderQty);
 
                         } else {
@@ -511,7 +512,7 @@ public class WmsDocOrderHeaderServiceImpl implements IWmsDocOrderHeaderService {
 //                        ? item.getQty().doubleValue() - item.getQtyallocated().doubleValue() : 0)
 //                .sum();
 //        if (qtySum < orderQty.doubleValue()) {
-            // 备货可以部分分配
+        // 备货可以部分分配
 //            return AjaxResult.error("库存不足分配失败");
 //        }
         for (InvLotLocIdForm inv : invList) {
@@ -539,7 +540,7 @@ public class WmsDocOrderHeaderServiceImpl implements IWmsDocOrderHeaderService {
                             actAllocationDetailsService.addActAllocationDetails(inv.getLotnum(), inv.getLocationId(), allocatedQty, details
                                     , Constant.ORDER_STS.STS20.getValue());
                             //库位对应所有库存lotatt15记录分配出库单号
-                            invLotLocIdService.updateLotatt15ByLocationId(inv.getLocationId(),orderNo);
+                            invLotLocIdService.updateLotatt15ByLocationId(inv.getLocationId(), orderNo);
                         } else {
                             throw new ServiceException("占用库存分配数失败");
                         }
@@ -560,7 +561,7 @@ public class WmsDocOrderHeaderServiceImpl implements IWmsDocOrderHeaderService {
                             actAllocationDetailsService.addActAllocationDetails(inv.getLotnum(), inv.getLocationId(), allocatedQty, details
                                     , Constant.ORDER_STS.STS20.getValue());
                             //库位对应所有库存lotatt15记录分配出库单号
-                            invLotLocIdService.updateLotatt15ByLocationId(inv.getLocationId(),orderNo);
+                            invLotLocIdService.updateLotatt15ByLocationId(inv.getLocationId(), orderNo);
                             return AjaxResult.success("分配完成", originalOrderQty);
                         } else {
                             throw new ServiceException("占用库存分配数失败");
@@ -580,7 +581,7 @@ public class WmsDocOrderHeaderServiceImpl implements IWmsDocOrderHeaderService {
                             actAllocationDetailsService.addActAllocationDetails(inv.getLotnum(), inv.getLocationId(), currentQty, details
                                     , Constant.ORDER_STS.STS20.getValue());
                             //库位对应所有库存lotatt15记录分配出库单号
-                            invLotLocIdService.updateLotatt15ByLocationId(inv.getLocationId(),orderNo);
+                            invLotLocIdService.updateLotatt15ByLocationId(inv.getLocationId(), orderNo);
                             return AjaxResult.success("分配完成", originalOrderQty);
 
                         } else {
@@ -763,14 +764,14 @@ public class WmsDocOrderHeaderServiceImpl implements IWmsDocOrderHeaderService {
             InvLocIdSearchFrom invLocIdSearchFrom = new InvLocIdSearchFrom();
             if (isBh) {
                 invLocIdSearchFrom.setLotatt14(orderNo);
-            }else {
+            } 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())) {
+                        && v.getZoneId().equals(Constant.ZONE_TYPE.ZONE_INV.getValue().toString())) {
                     if (!locationSet.contains(v.getLocationNo())) {
                         CheckOutVO checkOutVO = new CheckOutVO();
                         checkOutVO.setOrderNo(wmsDocOrderHeader.getSoReference1());
@@ -798,7 +799,7 @@ public class WmsDocOrderHeaderServiceImpl implements IWmsDocOrderHeaderService {
         }
         //生成任务呼叫到接驳位
         BaseLocationInfo baseLocationInfo = baseLocationInfoService.selectBaseLocationInfoByIdOrNo(check.getLocationNo(), Constant.WAREHOUSE_ID);
-        FlowConfigHeaderVO flowConfigHeaderVO = flowConfigHeaderService.selectFlowConfigHeaderById((long)Constant.FLOW_ID_SO);
+        FlowConfigHeaderVO flowConfigHeaderVO = flowConfigHeaderService.selectFlowConfigHeaderById((long) Constant.FLOW_ID_SO);
         AgvCallDTO agvCallDTO = new AgvCallDTO();
         agvCallDTO.setId(flowConfigHeaderVO.getId());
         agvCallDTO.setLocationFrom(baseLocationInfo.getId().toString());
@@ -936,7 +937,7 @@ public class WmsDocOrderHeaderServiceImpl implements IWmsDocOrderHeaderService {
         type = judgmentOfGroupPlateType(endLotattVO);
         // 组盘数量 = 库存数-分配数
         if (type == 3) {
-           int num = endLotattVO.getQty().intValue() - endLotattVO.getQtyallocated().intValue();
+            int num = endLotattVO.getQty().intValue() - endLotattVO.getQtyallocated().intValue();
             if (toQty.intValue() != num) {
                 return AjaxResult.error("备货库存中存在未分配数量,必须先操未分配数:" + num);
             }
@@ -973,7 +974,7 @@ public class WmsDocOrderHeaderServiceImpl implements IWmsDocOrderHeaderService {
             String newLotnum = idSequenceUtils.generateId("LOTNUMBER");
             invLotAtt.setLotnum(newLotnum);
             invLotAtt.setLotatt07(palletNoTo);
-            if(type == 3) {
+            if (type == 3) {
                 invLotAtt.setLotatt14("");
             }
             invLotAtt.setCreateTime(DateUtils.getNowDate());
@@ -1043,6 +1044,7 @@ public class WmsDocOrderHeaderServiceImpl implements IWmsDocOrderHeaderService {
      * 3.理货单,库存为备货库存,但是库存数不等于分配数type=3(组盘数必须为库存-分配数)
      * 4.正常出库单,库存分配数为0,type=4
      * 5.理货单,普通库存,type=5
+     *
      * @param locIdLotattVO
      * @return
      */
@@ -1051,7 +1053,7 @@ public class WmsDocOrderHeaderServiceImpl implements IWmsDocOrderHeaderService {
         WmsDocOrderHeader wmsDocOrderHeader = wmsDocOrderHeaderService.selectWmsDocOrderHeaderByOrderNo(lotatt15);
         if (wmsDocOrderHeader.getOrderType().equals(Constant.ORDER_TYP.BH.getValue())
                 && new BigDecimal(locIdLotattVO.getQtyallocated()).compareTo(BigDecimal.ZERO) == 0) {
-           return 1;
+            return 1;
         }
         if (wmsDocOrderHeader.getOrderType().equals(Constant.ORDER_TYP.LH.getValue())
                 && StringUtils.isNotEmpty(locIdLotattVO.getLotatt14())) {
@@ -1079,6 +1081,7 @@ public class WmsDocOrderHeaderServiceImpl implements IWmsDocOrderHeaderService {
      * 1.备货单并且lotatt14不为空,结束(说明应该走备货组盘)
      * 2.备货单并且库存分配数大于1,结束(说明应该走备货组盘)
      * 3.正常出库单库存分配数大于1,结束(说明应该走拣货出库)
+     *
      * @param locIdLotattVO
      * @return
      */
@@ -1118,7 +1121,7 @@ public class WmsDocOrderHeaderServiceImpl implements IWmsDocOrderHeaderService {
         // 验证出库单
         if (StringUtils.isNotEmpty(orderNo)) {
             WmsDocOrderHeader header = wmsDocOrderHeaderService.selectWmsDocOrderHeaderByOrderNo(orderNo);
-            if(!header.getOrderType().equals(Constant.ORDER_TYP.BH.getValue())){
+            if (!header.getOrderType().equals(Constant.ORDER_TYP.BH.getValue())) {
                 return AjaxResult.error("出库单类型不可备货组盘!");
             }
             if (header != null
@@ -1165,9 +1168,13 @@ public class WmsDocOrderHeaderServiceImpl implements IWmsDocOrderHeaderService {
             return AjaxResult.error("组盘数量大于单条库存数量!");
         }
         invLotLocIdLotattVOList.add(endLotattVO);
+        // 验证备货库存是否已经备货
+        if (StringUtils.isNotEmpty(endLotattVO.getLotatt14())) {
+            return AjaxResult.error("扫描条码已经备货,对应出库单:" + endLotattVO.getLotatt14());
+        }
         //验证目标托盘库存,一个托盘只能备货一个出库单
         AjaxResult ajaxResultC = invLotLocIdService.checkPalletIsOnlyOrderNo(groupDiskFrom.getPalletNoTo()
-                , StringUtils.isEmpty(endLotattVO.getLotatt14()) ? "" : endLotattVO.getLotatt14());
+                , orderNo);
         if (!ajaxResultC.isSuccess()) {
             return ajaxResultC;
         }
@@ -1235,15 +1242,15 @@ public class WmsDocOrderHeaderServiceImpl implements IWmsDocOrderHeaderService {
                         }
                     }
                     // 更新出库单备货数量
-                    wmsDocOrderHeaderService.modifystockCompletionStatus(orderNo,sku,new BigDecimal(toQty));
+                    wmsDocOrderHeaderService.modifystockCompletionStatus(orderNo, sku, new BigDecimal(toQty));
                 }
 
             }
         }
         // 更新托盘
-        WmsBoxInfo boxFrom = wmsBoxInfoService.selectWmsBoxInfoByBoxNo(groupDiskFrom.getPalletNoTo());
-        boxFrom.setIsFull(groupDiskFrom.getIsFull());
-        wmsBoxInfoService.updateWmsBoxInfo(boxFrom);
+//        WmsBoxInfo boxFrom = wmsBoxInfoService.selectWmsBoxInfoByBoxNo(groupDiskFrom.getPalletNoTo());
+//        boxFrom.setIsFull(groupDiskFrom.getIsFull());
+//        wmsBoxInfoService.updateWmsBoxInfo(boxFrom);
         return AjaxResult.success("组盘成功!");
     }
 
@@ -1480,30 +1487,50 @@ public class WmsDocOrderHeaderServiceImpl implements IWmsDocOrderHeaderService {
         CodeSkuRelationshipSoVO codeSkuRelationshipSoVO = new CodeSkuRelationshipSoVO();
         // 根据条码号查询出产品信息
         CodeSkuRelationshipVO codeSkuRelationshipVO = codeSkuRelationshipService.snCheck(snCheckSoForm.getSn());
-        ActAllocationDetailsFrom query = new ActAllocationDetailsFrom();
-        query.setOrderNo(snCheckSoForm.getOrderNo());
-        query.setLotatt02(snCheckSoForm.getSn());
-        query.setStatus(Constant.ORDER_STS.STS21.getValue());
-        ActAllocationDetailsFrom actAllocationDetailsFrom = actAllocationDetailsService.selectActAllocationDetailsInvLotAttByModel(query);
-        if (actAllocationDetailsFrom == null) {
-            query.setStatus(Constant.ORDER_STS.STS30.getValue());
-            actAllocationDetailsFrom = actAllocationDetailsService.selectActAllocationDetailsInvLotAttByModel(query);
-        }
-        if (actAllocationDetailsFrom == null) {
-            query.setStatus(Constant.ORDER_STS.STS40.getValue());
-            actAllocationDetailsFrom = actAllocationDetailsService.selectActAllocationDetailsInvLotAttByModel(query);
-        }
-        if (actAllocationDetailsFrom != null) {
-            codeSkuRelationshipSoVO.setOrderNo(actAllocationDetailsFrom.getOrderNo());
-            codeSkuRelationshipSoVO.setSku(actAllocationDetailsFrom.getMaterial());
-            codeSkuRelationshipSoVO.setSkuName(actAllocationDetailsFrom.getSkuName());
-            codeSkuRelationshipSoVO.setSkuType(codeSkuRelationshipVO.getSkuType());
-            codeSkuRelationshipSoVO.setSn(actAllocationDetailsFrom.getLotatt02());
+        InvLocIdSearchFrom invLocIdSearchFrom = new InvLocIdSearchFrom();
+        LotattDTO lotattDTO = new LotattDTO();
+        lotattDTO.setLotatt07(snCheckSoForm.getPalletNo());
+        lotattDTO.setLotatt15(snCheckSoForm.getOrderNo());
+        lotattDTO.setLotatt02(snCheckSoForm.getSn());
+        invLocIdSearchFrom.setLotattDTO(lotattDTO);
+        List<InvLotLocIdLotattVO> invLotLocIdLotattVOList = invLotLocIdService.selectInvLocIdLotattList(invLocIdSearchFrom);
+        for (InvLotLocIdLotattVO locIdLotattVO : invLotLocIdLotattVOList) {
+            String lotatt15 = locIdLotattVO.getLotatt15();
+            WmsDocOrderHeader wmsDocOrderHeader = wmsDocOrderHeaderService.selectWmsDocOrderHeaderByOrderNo(lotatt15);
+            codeSkuRelationshipSoVO.setOrderNo(wmsDocOrderHeader.getSoReference1());
+            codeSkuRelationshipSoVO.setSku(locIdLotattVO.getSku());
+            codeSkuRelationshipSoVO.setSkuName(locIdLotattVO.getSkuName());
+            codeSkuRelationshipSoVO.setSkuType(locIdLotattVO.getSkuTypeName());
+            codeSkuRelationshipSoVO.setSn(locIdLotattVO.getLotatt02());
             codeSkuRelationshipSoVO.setProduct(codeSkuRelationshipVO.isProduct());
-            BigDecimal qty = actAllocationDetailsFrom.getQty().subtract(actAllocationDetailsFrom.getPickQty());
+            BigDecimal qty = new BigDecimal(locIdLotattVO.getQty());
             codeSkuRelationshipSoVO.setQty(qty.doubleValue());
+            break;
         }
-        // todo 如果想要返回当前组盘托盘的数量,可能需要传入托盘号
+
+//        ActAllocationDetailsFrom query = new ActAllocationDetailsFrom();
+//        query.setOrderNo(snCheckSoForm.getOrderNo());
+//        query.setLotatt02(snCheckSoForm.getSn());
+//        query.setStatus(Constant.ORDER_STS.STS21.getValue());
+//        ActAllocationDetailsFrom actAllocationDetailsFrom = actAllocationDetailsService.selectActAllocationDetailsInvLotAttByModel(query);
+//        if (actAllocationDetailsFrom == null) {
+//            query.setStatus(Constant.ORDER_STS.STS30.getValue());
+//            actAllocationDetailsFrom = actAllocationDetailsService.selectActAllocationDetailsInvLotAttByModel(query);
+//        }
+//        if (actAllocationDetailsFrom == null) {
+//            query.setStatus(Constant.ORDER_STS.STS40.getValue());
+//            actAllocationDetailsFrom = actAllocationDetailsService.selectActAllocationDetailsInvLotAttByModel(query);
+//        }
+//        if (actAllocationDetailsFrom != null) {
+//            codeSkuRelationshipSoVO.setOrderNo(actAllocationDetailsFrom.getOrderNo());
+//            codeSkuRelationshipSoVO.setSku(actAllocationDetailsFrom.getMaterial());
+//            codeSkuRelationshipSoVO.setSkuName(actAllocationDetailsFrom.getSkuName());
+//            codeSkuRelationshipSoVO.setSkuType(codeSkuRelationshipVO.getSkuType());
+//            codeSkuRelationshipSoVO.setSn(actAllocationDetailsFrom.getLotatt02());
+//            codeSkuRelationshipSoVO.setProduct(codeSkuRelationshipVO.isProduct());
+//            BigDecimal qty = actAllocationDetailsFrom.getQty().subtract(actAllocationDetailsFrom.getPickQty());
+//            codeSkuRelationshipSoVO.setQty(qty.doubleValue());
+//        }
         return codeSkuRelationshipSoVO;
     }
 
@@ -1515,7 +1542,7 @@ public class WmsDocOrderHeaderServiceImpl implements IWmsDocOrderHeaderService {
 //        if (header != null && StringUtils.isNotEmpty(header.getOrderNo())) {
 //            orderNo = header.getOrderNo();
 //        } else {
-            orderNo = idSequenceUtils.generateId("ORDERNO");
+        orderNo = idSequenceUtils.generateId("ORDERNO");
 //        }
         String erpOrderNo = "";
         String erpOrderName = "";
@@ -1555,9 +1582,9 @@ public class WmsDocOrderHeaderServiceImpl implements IWmsDocOrderHeaderService {
         }
         WmsDocOrderHeader orderHeader = new WmsDocOrderHeader();
         orderHeader.setOrderNo(orderNo);            //erp单号
-        if (erpOrderList.get(0).getOrderType()=="axmt620"){
+        if (erpOrderList.get(0).getOrderType() == "axmt620") {
             orderHeader.setOrderType("BH");
-        }else {
+        } else {
             orderHeader.setOrderType("ZC");
         }
         orderHeader.setOrderStatus("00");
@@ -1611,6 +1638,7 @@ public class WmsDocOrderHeaderServiceImpl implements IWmsDocOrderHeaderService {
         return AjaxResult.success("出库-条码扫描记录表插入成功");
     }
 
+    @Transactional
     @Override
     public AjaxResult modifyAssignmentStockTaskStatus(String orderNo, Long locationId, String palletNo) {
         WmsDocOrderHeader wmsDocOrderHeader = wmsDocOrderHeaderService.selectWmsDocOrderHeaderByOrderNo(orderNo);
@@ -1620,20 +1648,20 @@ public class WmsDocOrderHeaderServiceImpl implements IWmsDocOrderHeaderService {
         // 出库单备货完成,部分出库状态修改出库单出库状态,其余修改分配明细为拣货完成
         if (wmsDocOrderHeader.getOrderStatus().equals(Constant.ORDER_STS.STS23.getValue())
                 || wmsDocOrderHeader.getOrderStatus().equals(Constant.ORDER_STS.STS98.getValue())) {
-            return wmsDocOrderHeaderService.modifyAssignmentStockTaskStatusComplete(orderNo, locationId, palletNo,true);
+            return wmsDocOrderHeaderService.modifyAssignmentStockTaskStatusComplete(orderNo, locationId, palletNo, true);
         } else {
             return actAllocationDetailsService.modifyAssignmentStockTaskStatusPickingComplete(orderNo, locationId, palletNo);
         }
     }
-
+    @Transactional
     @Override
-    public AjaxResult modifyAssignmentStockTaskStatusComplete(String orderNo, Long locationId, String palletNo,boolean isBH) {
+    public AjaxResult modifyAssignmentStockTaskStatusComplete(String orderNo, Long locationId, String palletNo, boolean isBH) {
         InvLocIdSearchFrom invLocIdSearchFrom = new InvLocIdSearchFrom();
-        invLocIdSearchFrom.setLocationNo(locationId.toString());
+//        invLocIdSearchFrom.setLocationId(Constant.LOC_MIDDLE_CACHE.toString());
         invLocIdSearchFrom.setLotatt07(palletNo);
         if (isBH) {
             invLocIdSearchFrom.setLotatt14(orderNo);
-        }else {
+        } else {
             invLocIdSearchFrom.setLotatt15(orderNo);
         }
         List<InvLotLocIdLotattVO> invLotLocIdLotattVOS = invLotLocIdService.selectInvLocIdLotattList(invLocIdSearchFrom);
@@ -1673,10 +1701,10 @@ public class WmsDocOrderHeaderServiceImpl implements IWmsDocOrderHeaderService {
     }
 
     @Override
-    public AjaxResult modifyTheTallyStatusInTheWarehouse(String orderNo,Long locationId,String palletNo) {
+    public AjaxResult modifyTheTallyStatusInTheWarehouse(String orderNo, Long locationId, String palletNo) {
         WmsDocOrderHeader header = wmsDocOrderHeaderService.selectWmsDocOrderHeaderByOrderNo(orderNo);
         if (header != null && header.getOrderType().equals(Constant.ORDER_TYP.LH.getValue())) {
-            return wmsDocOrderHeaderService.modifyAssignmentStockTaskStatusComplete(orderNo, locationId, palletNo,false);
+            return wmsDocOrderHeaderService.modifyAssignmentStockTaskStatusComplete(orderNo, locationId, palletNo, false);
         }
 
 //        // 分配明细为拣货完成 库内理货不生成分配明细
@@ -1738,7 +1766,7 @@ public class WmsDocOrderHeaderServiceImpl implements IWmsDocOrderHeaderService {
                 // 明细
                 List<WmsDocOrderDetails> wmsDocOrderDetails = wmsDocOrderDetailsMapper.selectWmsDocOrderDetailsByOrderNo(orderNo);
                 for (WmsDocOrderDetails wmsDocOrderDetail : wmsDocOrderDetails) {
-                    if(qty.compareTo(BigDecimal.ZERO) == 0){
+                    if (qty.compareTo(BigDecimal.ZERO) == 0) {
                         break;
                     }
                     // 部分分配,完全分配
@@ -1755,7 +1783,7 @@ public class WmsDocOrderHeaderServiceImpl implements IWmsDocOrderHeaderService {
                             detailsUpdate.setOrderLineNo(wmsDocOrderDetail.getOrderLineNo());
                             if (qty.compareTo(toQty) == 0) {
                                 detailsUpdate.setQtySoftAllocated(wmsDocOrderDetail.getQtyAllocated());
-                                if(wmsDocOrderDetail.getLineStatus().equals(Constant.ORDER_STS.STS20.getValue())) {
+                                if (wmsDocOrderDetail.getLineStatus().equals(Constant.ORDER_STS.STS20.getValue())) {
                                     detailsUpdate.setLineStatus(Constant.ORDER_STS.STS23.getValue());
                                 }
                                 wmsDocOrderDetailsMapper.updateWmsDocOrderDetails(detailsUpdate);
@@ -1763,7 +1791,7 @@ public class WmsDocOrderHeaderServiceImpl implements IWmsDocOrderHeaderService {
                             } else if (qty.compareTo(toQty) == 1) {
                                 qty = qty.subtract(toQty);
                                 detailsUpdate.setQtySoftAllocated(wmsDocOrderDetail.getQtyAllocated());
-                                if(wmsDocOrderDetail.getLineStatus().equals(Constant.ORDER_STS.STS20.getValue())) {
+                                if (wmsDocOrderDetail.getLineStatus().equals(Constant.ORDER_STS.STS20.getValue())) {
                                     detailsUpdate.setLineStatus(Constant.ORDER_STS.STS23.getValue());
                                 }
                                 wmsDocOrderDetailsMapper.updateWmsDocOrderDetails(detailsUpdate);
@@ -1801,7 +1829,7 @@ public class WmsDocOrderHeaderServiceImpl implements IWmsDocOrderHeaderService {
         // 明细
         List<WmsDocOrderDetails> wmsDocOrderDetails = wmsDocOrderDetailsMapper.selectWmsDocOrderDetailsByOrderNo(orderNo);
         for (WmsDocOrderDetails wmsDocOrderDetail : wmsDocOrderDetails) {
-            if(qty.compareTo(BigDecimal.ZERO) == 0){
+            if (qty.compareTo(BigDecimal.ZERO) == 0) {
                 break;
             }
             // 部分分配,完全分配
@@ -1818,7 +1846,7 @@ public class WmsDocOrderHeaderServiceImpl implements IWmsDocOrderHeaderService {
                     detailsUpdate.setOrderLineNo(wmsDocOrderDetail.getOrderLineNo());
                     if (qty.compareTo(toQty) == 0) {
                         detailsUpdate.setQtySoftAllocated(wmsDocOrderDetail.getQtyAllocated());
-                        if(wmsDocOrderDetail.getLineStatus().equals(Constant.ORDER_STS.STS20.getValue())) {
+                        if (wmsDocOrderDetail.getLineStatus().equals(Constant.ORDER_STS.STS20.getValue())) {
                             detailsUpdate.setLineStatus(Constant.ORDER_STS.STS23.getValue());
                         }
                         wmsDocOrderDetailsMapper.updateWmsDocOrderDetails(detailsUpdate);
@@ -1826,7 +1854,7 @@ public class WmsDocOrderHeaderServiceImpl implements IWmsDocOrderHeaderService {
                     } else if (qty.compareTo(toQty) == 1) {
                         qty = qty.subtract(toQty);
                         detailsUpdate.setQtySoftAllocated(wmsDocOrderDetail.getQtyAllocated());
-                        if(wmsDocOrderDetail.getLineStatus().equals(Constant.ORDER_STS.STS20.getValue())) {
+                        if (wmsDocOrderDetail.getLineStatus().equals(Constant.ORDER_STS.STS20.getValue())) {
                             detailsUpdate.setLineStatus(Constant.ORDER_STS.STS23.getValue());
                         }
                         wmsDocOrderDetailsMapper.updateWmsDocOrderDetails(detailsUpdate);
@@ -1861,7 +1889,7 @@ public class WmsDocOrderHeaderServiceImpl implements IWmsDocOrderHeaderService {
         // 明细
         List<WmsDocOrderDetails> wmsDocOrderDetails = wmsDocOrderDetailsMapper.selectWmsDocOrderDetailsByOrderNo(orderNo);
         for (WmsDocOrderDetails wmsDocOrderDetail : wmsDocOrderDetails) {
-            if(qty.compareTo(BigDecimal.ZERO) == 0){
+            if (qty.compareTo(BigDecimal.ZERO) == 0) {
                 break;
             }
             // 创建状态,部分分配
@@ -1880,12 +1908,12 @@ public class WmsDocOrderHeaderServiceImpl implements IWmsDocOrderHeaderService {
                         // 如果分配数和备货数一样,备货完成
                         if (detailsUpdate.getQtyAllocated().compareTo(detailsUpdate.getQtySoftAllocated()) == 0) {
                             detailsUpdate.setLineStatus(Constant.ORDER_STS.STS23.getValue());
-                        }else {
+                        } else {
                             detailsUpdate.setLineStatus(Constant.ORDER_STS.STS20.getValue());
                         }
                         wmsDocOrderDetailsMapper.updateWmsDocOrderDetails(detailsUpdate);
                         break;
-                     // 完全分配
+                        // 完全分配
                     } else if (qty.compareTo(toQty) == 1) {
                         qty = qty.subtract(toQty);
                         detailsUpdate.setQtyAllocated(wmsDocOrderDetail.getQtyAllocated().add(toQty));
@@ -1893,7 +1921,7 @@ public class WmsDocOrderHeaderServiceImpl implements IWmsDocOrderHeaderService {
                         // 如果分配数和备货数一样,备货完成
                         if (detailsUpdate.getQtyAllocated().compareTo(detailsUpdate.getQtySoftAllocated()) == 0) {
                             detailsUpdate.setLineStatus(Constant.ORDER_STS.STS23.getValue());
-                        }else {
+                        } else {
                             detailsUpdate.setLineStatus(Constant.ORDER_STS.STS20.getValue());
                         }
                         wmsDocOrderDetailsMapper.updateWmsDocOrderDetails(detailsUpdate);

+ 3 - 1
warewms-ams/src/main/java/com/ruoyi/ams/task/service/impl/WcsTaskServiceImpl.java

@@ -25,6 +25,7 @@ import com.ruoyi.base.domain.BaseLocationInfo;
 import com.ruoyi.base.service.IBaseLocationInfoService;
 import com.ruoyi.common.core.domain.AjaxResult;
 import com.ruoyi.common.core.redis.RedisCache;
+import com.ruoyi.common.exception.ServiceException;
 import com.ruoyi.common.utils.StringUtils;
 import com.ruoyi.common.utils.spring.SpringUtils;
 import lombok.extern.slf4j.Slf4j;
@@ -182,6 +183,7 @@ public class WcsTaskServiceImpl implements IWcsTaskService {
         return wcsTaskMapper.deleteWcsTaskByTaskNo(taskNo);
     }
 
+    @Transactional
     @Override
     public void callBackPickup(WcsTask wcsTask) {
         if (!StringUtils.isEmpty(wcsTask.getLocationFrom())
@@ -447,7 +449,7 @@ public class WcsTaskServiceImpl implements IWcsTaskService {
                 if (!StringUtils.isEmpty(wcsTask.getExt8())) {
                     redisCache.unlockCacheObject(Long.parseLong(wcsTask.getExt8()));
                 }
-                throw new RuntimeException();
+                throw new ServiceException();
             }
         } else {
 

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

@@ -351,6 +351,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="zoneId != null  and zoneId != ''"> and b.zone_id = #{zoneId}</if>
             <if test="sku != null  and sku != ''"> and (sk.sku like concat('%', #{sku}, '%') or sk.desc1 like concat('%', #{sku}, '%'))</if>
             <if test="locationNo != null  and locationNo != ''"> and b.location_no like concat('%', #{locationNo}, '%')</if>
+            <if test="locationId != null  and locationId != ''"> and inv.location_id = #{locationId}</if>
             <if test="isFull != null  and isFull != ''"> and w.is_full = #{isFull}</if>
             <if test="lotattDTO != null">
                 <if test="lotattDTO.lotatt01 != null  and lotattDTO.lotatt01 != ''"> and att.lotatt01 = #{lotattDTO.lotatt01}</if>

+ 2 - 1
warewms-base/src/main/java/com/ruoyi/base/form/SnCheckSoForm.java

@@ -9,6 +9,7 @@ import java.util.List;
 public class SnCheckSoForm {
     @NotEmpty(message = "条码不能为空")
     private String sn;
-    @NotEmpty(message = "出库单不能为空")
+//    @NotEmpty(message = "出库单不能为空")
     private String orderNo;
+    private String palletNo;
 }