فهرست منبع

库存移动(直接移动)

k 2 سال پیش
والد
کامیت
9616f4b544

+ 7 - 1
ruoyi-admin/src/main/java/com/ruoyi/web/controller/warewms/ams/InvLotLocIdController.java

@@ -65,7 +65,13 @@ public class InvLotLocIdController extends BaseController {
     public AjaxResult move(@RequestBody InvLotLocIdMoveForm invLotLocIdMoveForm) {
         invLotLocIdMoveForm.setUpdateBy(getUsername());
         invLotLocIdMoveForm.setWarehouseId(Constant.WAREHOUSE_ID);
-        return invLotLocIdService.move(invLotLocIdMoveForm);
+        // 判断是否叫车
+        if (invLotLocIdMoveForm != null
+                && invLotLocIdMoveForm.getIsCallCar().equals(Constant.IS_YES.Y.getValue())) {
+            return invLotLocIdService.move(invLotLocIdMoveForm);
+        } else {
+            return invLotLocIdService.moveDirect(invLotLocIdMoveForm);
+        }
     }
 
     /**

+ 7 - 1
ruoyi-admin/src/main/java/com/ruoyi/web/controller/warewms/pda/PdaInvLotLocIdController.java

@@ -35,7 +35,13 @@ public class PdaInvLotLocIdController {
     public AjaxResult move(@Validated @RequestBody InvLotLocIdMoveForm invLotLocIdMoveForm) {
         invLotLocIdMoveForm.setUpdateBy(invLotLocIdMoveForm.getUpdateBy());
         invLotLocIdMoveForm.setWarehouseId(Constant.WAREHOUSE_ID);
-        return invLotLocIdService.move(invLotLocIdMoveForm);
+        // 判断是否叫车
+        if (invLotLocIdMoveForm != null
+                && invLotLocIdMoveForm.getIsCallCar().equals(Constant.IS_YES.Y.getValue())) {
+            return invLotLocIdService.move(invLotLocIdMoveForm);
+        } else {
+            return invLotLocIdService.moveDirect(invLotLocIdMoveForm);
+        }
     }
 
     /**

+ 9 - 0
warewms-ams/src/main/java/com/ruoyi/ams/inv/service/IInvLotLocIdService.java

@@ -87,6 +87,15 @@ public interface IInvLotLocIdService {
      */
     AjaxResult move(InvLotLocIdMoveForm invLotLocIdMoveForm);
 
+
+    /**
+     * 库存移动(直接转移库存)
+     *
+     * @param invLotLocIdMoveForm
+     * @return
+     */
+    AjaxResult moveDirect(InvLotLocIdMoveForm invLotLocIdMoveForm);
+
     /**
      * 库存清理
      *

+ 44 - 2
warewms-ams/src/main/java/com/ruoyi/ams/inv/service/impl/InvLotLocIdServiceImpl.java

@@ -169,10 +169,8 @@ public class InvLotLocIdServiceImpl implements IInvLotLocIdService {
      */
     @Override
     public AjaxResult move(InvLotLocIdMoveForm invLotLocIdMoveForm) {
-        //TODO 根据托盘号查询托盘绑定的库存位置移动到目标库位
         String locationFrom = invLotLocIdMoveForm.getLocationFrom();
         String locationTo = invLotLocIdMoveForm.getLocationTo();
-        String isCallCar = invLotLocIdMoveForm.getIsCallCar(); // 是否叫车 不叫车直接移动库存
         String reason = invLotLocIdMoveForm.getReason();
         String updateBy = invLotLocIdMoveForm.getUpdateBy();
         Long warehouseId = invLotLocIdMoveForm.getWarehouseId();
@@ -206,6 +204,50 @@ public class InvLotLocIdServiceImpl implements IInvLotLocIdService {
         return AjaxResult.success("下发任务成功!");
     }
 
+    @Override
+    public AjaxResult moveDirect(InvLotLocIdMoveForm invLotLocIdMoveForm) {
+        String locationFrom = invLotLocIdMoveForm.getLocationFrom();
+        String locationTo = invLotLocIdMoveForm.getLocationTo();
+        String reason = invLotLocIdMoveForm.getReason();
+        String updateBy = invLotLocIdMoveForm.getUpdateBy();
+        Long warehouseId = invLotLocIdMoveForm.getWarehouseId();
+        BaseLocationInfo baseLocationFrom = null;
+        BaseLocationInfo baseLocationTo = null;
+
+        // 验证起始库位
+        Boolean isIdleFrom = baseLocationInfoService.verifyLocationIsIdle(locationFrom, warehouseId);
+        if (!isIdleFrom) {
+            return AjaxResult.error("起始库位需要空闲状态!");
+        }
+        // 验证目标库位
+        Boolean isIdle = baseLocationInfoService.verifyLocationIsIdle(locationTo, warehouseId);
+        if (!isIdle) {
+            return AjaxResult.error("目标库位需要空闲状态!");
+        }
+        Boolean isInStock = baseLocationInfoService.verifyLocationIsInStock(locationTo, warehouseId);
+        if (isInStock) {
+            return AjaxResult.error("目标库位有货!");
+        }
+        // 起始和目标库位
+        baseLocationFrom = baseLocationInfoService.selectBaseLocationInfoByIdOrNo(locationFrom, warehouseId);
+        baseLocationTo = baseLocationInfoService.selectBaseLocationInfoByIdOrNo(locationTo, warehouseId);
+
+        // 转移库存
+        int stockTransfer = this.stockTransfer(baseLocationFrom.getId(), baseLocationTo.getId());
+        if (stockTransfer <= 0) {
+            return AjaxResult.success("库存转移失败!");
+        }
+        // 更新起始库位空闲无货
+        baseLocationInfoService.updateLocationIdleAndEmpty(baseLocationFrom.getId(), warehouseId, updateBy);
+        // 更新目标库位空闲有货
+        baseLocationInfoService.updateLocationIdleAndNoEmpty(baseLocationFrom.getId(), warehouseId, updateBy);
+
+
+        // todo 事务
+
+        return AjaxResult.success("操作成功!");
+    }
+
     @Override
     public AjaxResult clear(String locationId, Long warehouseId, String updateBy) {
         Long id; // 库位ID

+ 10 - 0
warewms-base/src/main/java/com/ruoyi/base/service/IBaseLocationInfoService.java

@@ -227,4 +227,14 @@ public interface IBaseLocationInfoService {
      */
     boolean updateLocationIdleAndEmpty(Long id, Long warehouseId, String updateBy);
 
+    /**
+     * 修改库位状态为空闲有货
+     *
+     * @param id
+     * @param warehouseId
+     * @param updateBy
+     * @return
+     */
+    boolean updateLocationIdleAndNoEmpty(Long id, Long warehouseId, String updateBy);
+
 }

+ 6 - 0
warewms-base/src/main/java/com/ruoyi/base/service/impl/BaseLocationInfoServiceImpl.java

@@ -299,6 +299,12 @@ public class BaseLocationInfoServiceImpl implements IBaseLocationInfoService {
                 , Constant.STOCK_STATUS.STOCK00, Constant.IS_YES.N);
     }
 
+    @Override
+    public boolean updateLocationIdleAndNoEmpty(Long id, Long warehouseId, String updateBy) {
+        return updateLocationStockStatusAndIsEmpty(id, warehouseId, updateBy
+                , Constant.STOCK_STATUS.STOCK00, Constant.IS_YES.Y);
+    }
+
     private boolean updateLocationStockStatusAndIsEmpty(Long id, Long warehouseId, String updateBy
             , Constant.STOCK_STATUS stockStatus, Constant.IS_YES isYes) {
         BaseLocationInfo locationInfo = selectBaseLocationInfoById(id);