Browse Source

库存清空接口(PDA,PC)

k 2 years ago
parent
commit
26130d8619

+ 13 - 0
ruoyi-admin/src/main/java/com/ruoyi/web/controller/warewms/ams/InvLotLocIdController.java

@@ -68,6 +68,19 @@ public class InvLotLocIdController extends BaseController {
         return invLotLocIdService.move(invLotLocIdMoveForm);
     }
 
+    /**
+     * 库存清理
+     *
+     * @param locationId
+     * @return
+     */
+    @Log(title = "库位库存清理", businessType = BusinessType.CLEAN)
+    @PostMapping("/clear")
+    public AjaxResult clear(String locationId) {
+
+        return invLotLocIdService.clear(locationId, Constant.WAREHOUSE_ID, getUsername());
+    }
+
     /**
      * 导出库位库存信息列表
      */

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

@@ -60,7 +60,7 @@ public class PdaInvLotLocIdController {
     @PostMapping("/clear")
     public AjaxResult clear(String locationId, String updateBy) {
 
-        return AjaxResult.success("");
+        return invLotLocIdService.clear(locationId, Constant.WAREHOUSE_ID, updateBy);
     }
 
     /**

+ 8 - 1
warewms-ams/src/main/java/com/ruoyi/ams/inv/service/IInvLotLocIdService.java

@@ -36,7 +36,7 @@ public interface IInvLotLocIdService {
      * @param locationId
      * @return
      */
-    List<InvLotLocId> selectInvLotLocIdList(String locationId);
+    List<InvLotLocId> selectInvLotLocIdList(Long locationId);
 
     /**
      * 查询库位库存信息列表
@@ -76,6 +76,13 @@ public interface IInvLotLocIdService {
      */
     AjaxResult move(InvLotLocIdMoveForm invLotLocIdMoveForm);
 
+    /**
+     * 库存清理
+     *
+     * @return
+     */
+    AjaxResult clear(String locationId, Long warehouseId, String updateBy);
+
     /**
      * 新增库位库存信息
      *

+ 35 - 3
warewms-ams/src/main/java/com/ruoyi/ams/inv/service/impl/InvLotLocIdServiceImpl.java

@@ -56,13 +56,13 @@ public class InvLotLocIdServiceImpl implements IInvLotLocIdService {
     /**
      * 查询库位库存信息列表
      *
-     * @param locationId
+     * @param locationId 需要为库位ID
      * @return 库位库存信息
      */
     @Override
-    public List<InvLotLocId> selectInvLotLocIdList(String locationId) {
+    public List<InvLotLocId> selectInvLotLocIdList(Long locationId) {
         InvLotLocId invLotLocId = new InvLotLocId();
-        invLotLocId.setLocationId(locationId);
+        invLotLocId.setLocationId(locationId.toString());
         return invLotLocIdMapper.selectInvLotLocIdList(invLotLocId);
     }
 
@@ -187,6 +187,38 @@ public class InvLotLocIdServiceImpl implements IInvLotLocIdService {
         return AjaxResult.success("下发任务成功!");
     }
 
+    @Override
+    public AjaxResult clear(String locationId, Long warehouseId, String updateBy) {
+        Long id; // 库位ID
+        BaseLocationInfo baseLocationInfo = baseLocationInfoService.selectBaseLocationInfoByIdOrNo(locationId, warehouseId);
+        if (baseLocationInfo == null) {
+            return AjaxResult.error("不存在对应库位:" + locationId);
+        }
+        id = baseLocationInfo.getId();
+        // 是否任务空闲
+        Boolean isIdle = baseLocationInfoService.verifyLocationIsIdle(locationId, warehouseId);
+        if (!isIdle) {
+            return AjaxResult.error("库位需要空闲状态!" + locationId);
+        }
+        // 获取库存
+        List<InvLotLocId> invLotLocIdList = selectInvLotLocIdList(id);
+        if (invLotLocIdList.size() == 0) {
+            return AjaxResult.error("不存在对应库存!");
+        }
+        for (InvLotLocId invLotLocId : invLotLocIdList) {
+            // 是否需要清理批次表inv_lot_att
+        }
+        // 清除库存
+        int i = invLotLocIdMapper.deleteInvLotLocIdByLocationId(id);
+        if (i <= 0) {
+            return AjaxResult.error("清理库存失败!");
+        }
+        // 修改库位为空闲无货
+        baseLocationInfoService.updateLocationIdleAndEmpty(id, warehouseId, updateBy);
+
+        return AjaxResult.success("操作成功!");
+    }
+
     /**
      * 新增库位库存信息
      *

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

@@ -3,6 +3,7 @@ package com.ruoyi.base.service;
 import java.util.List;
 import java.util.Map;
 
+import com.ruoyi.base.constant.Constant;
 import com.ruoyi.base.domain.BaseLocationInfo;
 import com.ruoyi.base.domain.vo.BasLocationTreeSelectVO;
 import com.ruoyi.base.domain.vo.BaseLocationLotattListVO;
@@ -165,6 +166,7 @@ public interface IBaseLocationInfoService {
 
     /**
      * 锁定库位(起始和目标)
+     *
      * @param locationFromId
      * @param locationToId
      * @param warehouseId
@@ -172,6 +174,7 @@ public interface IBaseLocationInfoService {
      * @return
      */
     boolean lockLocationStockStatus(Long locationFromId, Long locationToId, Long warehouseId, String updateBy);
+
     /**
      * 解锁库位
      *
@@ -184,6 +187,7 @@ public interface IBaseLocationInfoService {
 
     /**
      * 解锁库位(起始和目标)
+     *
      * @param locationFromId
      * @param locationToId
      * @param warehouseId
@@ -192,5 +196,28 @@ public interface IBaseLocationInfoService {
      */
     boolean unLockLocationStockStatus(Long locationFromId, Long locationToId, Long warehouseId, String updateBy);
 
+    /**
+     * 修改库位状态为空闲无货
+     *
+     * @param id
+     * @param warehouseId
+     * @param updateBy
+     * @return
+     */
+    boolean updateLocationIdleAndEmpty(Long id, Long warehouseId, String updateBy);
+
+    /**
+     * 修改库位任务占用状态和库位是否有货状态
+     *
+     * @param id
+     * @param warehouseId
+     * @param updateBy
+     * @param stockStatus
+     * @param isYes
+     * @return
+     */
+    boolean updateLocationStockStatusAndIsEmpty(Long id, Long warehouseId, String updateBy
+            , Constant.STOCK_STATUS stockStatus, Constant.IS_YES isYes);
+
 
 }

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

@@ -299,4 +299,26 @@ public class BaseLocationInfoServiceImpl implements IBaseLocationInfoService {
         locationInfoFromUpdate.setWarehouseId(warehouseId);
         return this.updateBaseLocationInfo(locationInfoFromUpdate) > 0;
     }
+
+    @Override
+    public boolean updateLocationIdleAndEmpty(Long id, Long warehouseId, String updateBy) {
+        return updateLocationStockStatusAndIsEmpty(id, warehouseId, updateBy
+                , Constant.STOCK_STATUS.STOCK00, Constant.IS_YES.N);
+    }
+
+    @Override
+    public boolean updateLocationStockStatusAndIsEmpty(Long id, Long warehouseId, String updateBy
+            , Constant.STOCK_STATUS stockStatus, Constant.IS_YES isYes) {
+        BaseLocationInfo locationInfo = selectBaseLocationInfoById(id);
+        if (locationInfo == null) {
+            return false;
+        }
+        BaseLocationInfo locationInfoFromUpdate = new BaseLocationInfo();
+        locationInfoFromUpdate.setId(locationInfo.getId());
+        locationInfoFromUpdate.setStockStatus(stockStatus.getValue());
+        locationInfoFromUpdate.setIsEmpty(isYes.getValue());
+        locationInfoFromUpdate.setUpdateBy(updateBy);
+        locationInfoFromUpdate.setWarehouseId(warehouseId);
+        return this.updateBaseLocationInfo(locationInfoFromUpdate) > 0;
+    }
 }