From 491a007e2e64e765e54dc16265fe6a2e11cbba78 Mon Sep 17 00:00:00 2001 From: Joshi <3040996759@qq.com> Date: Tue, 13 Jan 2026 15:02:16 +0800 Subject: [PATCH] =?UTF-8?q?feat(warehouse):=20=E6=B7=BB=E5=8A=A0=E5=AE=9E?= =?UTF-8?q?=E9=99=85=E5=BA=93=E5=8C=BA/=E5=BA=93=E4=BD=8D=E9=87=8A?= =?UTF-8?q?=E6=94=BE=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 在IWmsActualWarehouseService接口中新增releaseActualWarehouse方法 - 在WmsActualWarehouseController控制器中新增释放库区的REST接口 - 在WmsActualWarehouseServiceImpl服务实现中完成释放逻辑的具体实现 - 实现将库区设置为未被占用状态(isEnabled=1) - 实现清空钢卷表中绑定此库区的现存记录的actual_warehouse_id字段 - 添加权限注解和异常处理机制 --- .../WmsActualWarehouseController.java | 18 ++++++++++ .../service/IWmsActualWarehouseService.java | 7 ++++ .../impl/WmsActualWarehouseServiceImpl.java | 33 +++++++++++++++++++ 3 files changed, 58 insertions(+) diff --git a/klp-wms/src/main/java/com/klp/controller/WmsActualWarehouseController.java b/klp-wms/src/main/java/com/klp/controller/WmsActualWarehouseController.java index b4714717..a067caec 100644 --- a/klp-wms/src/main/java/com/klp/controller/WmsActualWarehouseController.java +++ b/klp-wms/src/main/java/com/klp/controller/WmsActualWarehouseController.java @@ -4,6 +4,8 @@ import java.util.List; import java.util.Arrays; import java.util.ArrayList; +import cn.dev33.satoken.annotation.SaCheckPermission; +import com.klp.common.core.domain.AjaxResult; import lombok.RequiredArgsConstructor; import javax.servlet.http.HttpServletResponse; import javax.validation.constraints.*; @@ -206,4 +208,20 @@ public class WmsActualWarehouseController extends BaseController { vo.setLevelThreeSort(l3Sort); return vo; } + + /** + * 释放实际库区/库位 + * + * @param actualWarehouseId 库区ID + */ + @Log(title = "释放实际库区/库位", businessType = BusinessType.UPDATE) + @PutMapping("/release/{actualWarehouseId}") + public AjaxResult release(@PathVariable Long actualWarehouseId) { + try { + iWmsActualWarehouseService.releaseActualWarehouse(actualWarehouseId); + return AjaxResult.success("库区释放成功"); + } catch (Exception e) { + return AjaxResult.error("库区释放失败: " + e.getMessage()); + } + } } diff --git a/klp-wms/src/main/java/com/klp/service/IWmsActualWarehouseService.java b/klp-wms/src/main/java/com/klp/service/IWmsActualWarehouseService.java index af128067..ade9447f 100644 --- a/klp-wms/src/main/java/com/klp/service/IWmsActualWarehouseService.java +++ b/klp-wms/src/main/java/com/klp/service/IWmsActualWarehouseService.java @@ -77,4 +77,11 @@ public interface IWmsActualWarehouseService { * 将已拆分的库位合并回一个大库位 */ void mergeLocations(WmsActualWarehouseSplitBo bo); + + /** + * 释放实际库区/库位: + * - 将该库区设置为未被占用(isEnabled=1) + * - 清空钢卷表中绑定此库区且为现存(data_type=1)、未删除(del_flag=0)的记录的 actual_warehouse_id + */ + void releaseActualWarehouse(Long actualWarehouseId); } diff --git a/klp-wms/src/main/java/com/klp/service/impl/WmsActualWarehouseServiceImpl.java b/klp-wms/src/main/java/com/klp/service/impl/WmsActualWarehouseServiceImpl.java index ee8f8d4a..10b83234 100644 --- a/klp-wms/src/main/java/com/klp/service/impl/WmsActualWarehouseServiceImpl.java +++ b/klp-wms/src/main/java/com/klp/service/impl/WmsActualWarehouseServiceImpl.java @@ -3,6 +3,7 @@ package com.klp.service.impl; import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.collection.CollUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.klp.common.exception.ServiceException; import com.klp.common.utils.StringUtils; @@ -46,6 +47,38 @@ public class WmsActualWarehouseServiceImpl implements IWmsActualWarehouseService return baseMapper.selectVoById(actualWarehouseId); } + /** + * 释放实际库区/库位: + * 1) 将该库区设置为未被占用(isEnabled=1) + * 2) 清空钢卷表中绑定此库区且为现存(data_type=1)、未删除(del_flag=0)的记录的 actual_warehouse_id + */ + @Override + @Transactional(rollbackFor = Exception.class) + public void releaseActualWarehouse(Long actualWarehouseId) { + if (actualWarehouseId == null || actualWarehouseId <= 0) { + throw new ServiceException("参数actualWarehouseId不合法"); + } + + // 1) 设置库区为启用(未被占用) + WmsActualWarehouse update = new WmsActualWarehouse(); + update.setActualWarehouseId(actualWarehouseId); + update.setIsEnabled(1); + int affected = baseMapper.updateById(update); + if (affected <= 0) { + // 不存在也提示 + throw new ServiceException("实际库区不存在或更新失败: " + actualWarehouseId); + } + + // 2) 清空钢卷绑定(仅现存且未删除)- 使用UpdateWrapper进行更新 + UpdateWrapper updateWrapper = new UpdateWrapper<>(); + updateWrapper.eq("actual_warehouse_id", actualWarehouseId) + .eq("data_type", 1) + .eq("del_flag", 0) + .set("actual_warehouse_id", null); + + wmsMaterialCoilMapper.update(null, updateWrapper); + } + @Override @Transactional(rollbackFor = Exception.class) public int batchGenerateLocations(WmsActualWarehouseBatchGenerateBo bo) {