Browse Source

1.增加锁定库位状态通用方法
2.库存移动 --ing

k 2 năm trước cách đây
mục cha
commit
c6271795fd

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

@@ -53,6 +53,7 @@ public class InvLotLocIdController extends BaseController {
     @PostMapping("/adj")
     public AjaxResult adj(@Validated @RequestBody InvLotLocIdAdjForm invLotLocIdAdjForm) {
         invLotLocIdAdjForm.setUpdateBy(getUsername());
+        invLotLocIdAdjForm.setWarehouseId(Constant.WAREHOUSE_ID);
         return invLotLocIdService.adj(invLotLocIdAdjForm);
     }
 

+ 1 - 0
warewms-ams/src/main/java/com/ruoyi/ams/inv/domain/form/InvLotLocIdAdjForm.java

@@ -13,6 +13,7 @@ import javax.validation.constraints.NotBlank;
 @Data
 public class InvLotLocIdAdjForm extends BaseEntity {
 
+    private Long warehouseId;
     @NotBlank(message = "库位编码不能为空!")
     private String locationNo;
     @NotBlank(message = "货主不能为空!")

+ 9 - 5
warewms-ams/src/main/java/com/ruoyi/ams/inv/service/impl/InvLotLocIdServiceImpl.java

@@ -104,7 +104,7 @@ public class InvLotLocIdServiceImpl implements IInvLotLocIdService {
         String updateBy = invLotLocIdAdjForm.getUpdateBy();
 
         BaseLocationInfo baseLocationInfo = baseLocationInfoService.selectBaseLocationInfoByIdOrNo(locationNo
-                , Constant.WAREHOUSE_ID);
+                , invLotLocIdAdjForm.getWarehouseId());
         locationId = baseLocationInfo.getId().toString();
 
         // 查询库存
@@ -141,18 +141,19 @@ public class InvLotLocIdServiceImpl implements IInvLotLocIdService {
     public AjaxResult move(InvLotLocIdMoveForm invLotLocIdMoveForm) {
         String locationFrom = invLotLocIdMoveForm.getLocationFrom();
         String locationTo = invLotLocIdMoveForm.getLocationTo();
+        String isCallCar = invLotLocIdMoveForm.getIsCallCar(); // 是否叫车 不叫车直接移动库存
         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("目标库位需要空闲状态!");
@@ -165,8 +166,11 @@ public class InvLotLocIdServiceImpl implements IInvLotLocIdService {
         baseLocationFrom = baseLocationInfoService.selectBaseLocationInfoByIdOrNo(locationFrom, warehouseId);
         baseLocationTo = baseLocationInfoService.selectBaseLocationInfoByIdOrNo(locationTo, warehouseId);
 
-        // todo 下发任务
-        // todo 修改起始和目标库位状态
+        // 下发移库任务
+
+        // 更新起始和目标库位状态
+        baseLocationInfoService.lockLocationStockStatus(baseLocationFrom.getId(), baseLocationTo.getId()
+                , warehouseId, updateBy);
 
         return AjaxResult.success("下发任务成功!");
     }

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

@@ -152,4 +152,45 @@ public interface IBaseLocationInfoService {
      * @return true 有货
      */
     Boolean verifyLocationIsInStock(String locationId, Long warehouseId);
+
+    /**
+     * 锁定库位
+     *
+     * @param id
+     * @param warehouseId
+     * @param updateBy
+     * @return
+     */
+    boolean lockLocationStockStatus(Long id, Long warehouseId, String updateBy);
+
+    /**
+     * 锁定库位(起始和目标)
+     * @param locationFromId
+     * @param locationToId
+     * @param warehouseId
+     * @param updateBy
+     * @return
+     */
+    boolean lockLocationStockStatus(Long locationFromId, Long locationToId, Long warehouseId, String updateBy);
+    /**
+     * 解锁库位
+     *
+     * @param id
+     * @param warehouseId
+     * @param updateBy
+     * @return
+     */
+    boolean unLockLocationStockStatus(Long id, Long warehouseId, String updateBy);
+
+    /**
+     * 解锁库位(起始和目标)
+     * @param locationFromId
+     * @param locationToId
+     * @param warehouseId
+     * @param updateBy
+     * @return
+     */
+    boolean unLockLocationStockStatus(Long locationFromId, Long locationToId, Long warehouseId, String updateBy);
+
+
 }

+ 48 - 1
warewms-base/src/main/java/com/ruoyi/base/service/impl/BaseLocationInfoServiceImpl.java

@@ -238,7 +238,7 @@ public class BaseLocationInfoServiceImpl implements IBaseLocationInfoService {
     @Override
     public Boolean verifyLocationIsIdle(String locationId, Long warehouseId) {
         BaseLocationInfo baseLocationInfo = selectBaseLocationInfoByIdOrNo(locationId, warehouseId);
-        if (!baseLocationInfo.getStockStatus().equals(Constant.STOCK_STATUS.STOCK00)) {
+        if (!baseLocationInfo.getStockStatus().equals(Constant.STOCK_STATUS.STOCK00.getValue())) {
             return false;
         }
         return true;
@@ -252,4 +252,51 @@ public class BaseLocationInfoServiceImpl implements IBaseLocationInfoService {
         }
         return true;
     }
+
+    @Override
+    public boolean lockLocationStockStatus(Long id, Long warehouseId, String updateBy) {
+        return updateLocationStockStatus(id, warehouseId, updateBy, Constant.STOCK_STATUS.STOCK10);
+    }
+
+    @Override
+    public boolean lockLocationStockStatus(Long locationFromId, Long locationToId, Long warehouseId, String updateBy) {
+        if (!lockLocationStockStatus(locationFromId, warehouseId, updateBy)) {
+            return false;
+        }
+        return lockLocationStockStatus(locationToId, warehouseId, updateBy);
+    }
+
+    @Override
+    public boolean unLockLocationStockStatus(Long id, Long warehouseId, String updateBy) {
+        return updateLocationStockStatus(id, warehouseId, updateBy, Constant.STOCK_STATUS.STOCK00);
+    }
+
+    @Override
+    public boolean unLockLocationStockStatus(Long locationFromId, Long locationToId, Long warehouseId, String updateBy) {
+        if (!unLockLocationStockStatus(locationFromId, warehouseId, updateBy)) {
+            return false;
+        }
+        return unLockLocationStockStatus(locationToId, warehouseId, updateBy);
+    }
+
+    /**
+     * 修改库位锁定状态
+     *
+     * @param id
+     * @param warehouseId
+     * @param updateBy
+     * @return
+     */
+    private boolean updateLocationStockStatus(Long id, Long warehouseId, String updateBy, Constant.STOCK_STATUS stockStatus) {
+        BaseLocationInfo locationInfo = selectBaseLocationInfoById(id);
+        if (locationInfo == null) {
+            return false;
+        }
+        BaseLocationInfo locationInfoFromUpdate = new BaseLocationInfo();
+        locationInfoFromUpdate.setId(locationInfo.getId());
+        locationInfoFromUpdate.setStockStatus(stockStatus.getValue());
+        locationInfoFromUpdate.setUpdateBy(updateBy);
+        locationInfoFromUpdate.setWarehouseId(warehouseId);
+        return this.updateBaseLocationInfo(locationInfoFromUpdate) > 0;
+    }
 }