Jelajahi Sumber

1.PDA移库:线边移动默认不叫车
2.PDA移库:出库位移动到回库位直接转移库存

k 1 tahun lalu
induk
melakukan
1047fd2a75

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

@@ -210,6 +210,12 @@ public class PdaController {
             if (baseLocationInfoFrom == null) {
                 return AjaxResult.error("起始库位不存在!");
             }
+            if (!baseLocationInfoFrom.getStockStatus().equals(Constant.STOCK_STATUS.STOCK00.getValue())) {
+                return AjaxResult.error("起始库位不为空闲状态!");
+            }
+            if (!baseLocationInfoFrom.getIsEmpty().equals(Constant.IS_YES.N.name())) {
+                return AjaxResult.error("起始库位已经有货!");
+            }
             if (StringUtils.isNotEmpty(lform.getLocationTo())) {
                 BaseLocationInfo baseLocationInfoTo = baseLocationInfoService.selectBaseLocationInfoByIdOrNo(lform.getLocationTo()
                         , Constant.WAREHOUSE_ID);

+ 18 - 7
warewms-ams/src/main/java/com/ruoyi/ams/inv/service/impl/InvLotLocIdServiceImpl.java

@@ -208,11 +208,21 @@ public class InvLotLocIdServiceImpl implements IInvLotLocIdService {
         // 起始和目标库位
         baseLocationFrom = baseLocationInfoService.selectBaseLocationInfoByIdOrNo(locationFrom, warehouseId);
         if (baseLocationFrom.getZoneId().equals(Constant.ZONE_TYPE.ZONE_VIRTUAL.getValue())) {
-            return AjaxResult.error("起始库位虚拟库位不可叫车!");
+            return AjaxResult.error("起始库位虚拟库位不可移库!");
         }
         baseLocationTo = baseLocationInfoService.selectBaseLocationInfoByIdOrNo(locationTo, warehouseId);
         if (baseLocationTo.getZoneId().equals(Constant.ZONE_TYPE.ZONE_VIRTUAL.getValue())) {
-            return AjaxResult.error("目标库位虚拟库位不可叫车!");
+            // 如果起始库位是出库位 目标库位是线边 直接移动库存
+            if (baseLocationFrom.getZoneId().equals(Constant.ZONE_TYPE.ZONE_OUT.getValue())
+                    && baseLocationTo.getId().compareTo(Constant.LOC_SORTATION02_CACHE) == 0) {
+                return moveDirect(invLotLocIdMoveForm);
+            }
+            return AjaxResult.error("目标库位虚拟库位不可移库!");
+        }
+        // 如果起始区域位出库位 目标位回库位 直接移动库存
+        if (baseLocationFrom.getZoneId().equals(Constant.ZONE_TYPE.ZONE_OUT.getValue())
+                && baseLocationTo.getZoneId().equals(Constant.ZONE_TYPE.ZONE_RE.getValue())) {
+            return moveDirect(invLotLocIdMoveForm);
         }
 
         // 验证起始库位
@@ -316,8 +326,9 @@ public class InvLotLocIdServiceImpl implements IInvLotLocIdService {
             return AjaxResult.error("目标库位需要空闲状态!");
         }
         Boolean isInStock = baseLocationInfoService.verifyLocationIsInStock(locationTo, warehouseId);
-        if (isInStock) {
-//            return AjaxResult.error("目标库位有货!");
+        if (isInStock
+                && !baseLocationTo.getZoneId().equals(Constant.ZONE_TYPE.ZONE_VIRTUAL.getValue())) {
+            return AjaxResult.error("目标库位有货!");
         }
 
         // 验证起始库位必须有货
@@ -876,7 +887,7 @@ public class InvLotLocIdServiceImpl implements IInvLotLocIdService {
     }
 
     @Override
-    public AjaxResult releaseLocation(String locationFrom,Long locationTo,Long warehouseId, String updateBy) {
+    public AjaxResult releaseLocation(String locationFrom, Long locationTo, Long warehouseId, String updateBy) {
 
         BaseLocationInfo baseLocationInfo = baseLocationInfoService.selectBaseLocationInfoByIdOrNo(locationFrom, Constant.WAREHOUSE_ID);
         if (null == baseLocationInfo) return AjaxResult.error("查无库位信息");
@@ -941,7 +952,7 @@ public class InvLotLocIdServiceImpl implements IInvLotLocIdService {
 //            return AjaxResult.error("备货库存库位释放请用【PDA备货库位释放】功能");
             // 转移库存到线边区
             return invLotLocIdService.releaseLocation(basLocationForm.getLocationNo(), Constant.LOC_SORTATION02_CACHE
-                    ,Constant.WAREHOUSE_ID, "PDA");
+                    , Constant.WAREHOUSE_ID, "PDA");
         }
         if (StringUtils.isEmpty(invLotLocIdLotattVOS.get(0).getLotatt15())) {
             // 说明是移库,直接删除库存
@@ -950,7 +961,7 @@ public class InvLotLocIdServiceImpl implements IInvLotLocIdService {
         }
         // 转移库存到出库虚拟区
         return invLotLocIdService.releaseLocation(basLocationForm.getLocationNo(), Constant.LOC_SORTATION_CACHE
-                ,Constant.WAREHOUSE_ID, "PDA");
+                , Constant.WAREHOUSE_ID, "PDA");
     }
 
     @Transactional

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

@@ -1100,6 +1100,9 @@ public class WmsDocOrderHeaderServiceImpl implements IWmsDocOrderHeaderService {
         // 组盘数量 = 库存数-分配数
         if (type == 3) {
             int num = endLotattVO.getQty().intValue() - endLotattVO.getQtyallocated().intValue();
+            if (num == 0) {
+                return AjaxResult.error("备货库存中需要组盘的数量为:" + num);
+            }
             if (toQty.intValue() != num) {
                 return AjaxResult.error("备货库存中需要操作的数量应该为:" + num);
             }
@@ -1220,7 +1223,7 @@ public class WmsDocOrderHeaderServiceImpl implements IWmsDocOrderHeaderService {
             return 3;
         }
         if (StringUtils.isEmpty(locIdLotattVO.getLotatt15())) {
-            return 0;
+            return 3;
         }
         String lotatt15 = locIdLotattVO.getLotatt15();
         WmsDocOrderHeader wmsDocOrderHeader = wmsDocOrderHeaderService.selectWmsDocOrderHeaderByOrderNo(lotatt15);