From 03af50ad9b1de55e0c164c5eac84f83aeb2e19e7 Mon Sep 17 00:00:00 2001 From: Joshi <3040996759@qq.com> Date: Fri, 18 Jul 2025 11:30:09 +0800 Subject: [PATCH] =?UTF-8?q?=E5=88=A0=E9=99=A4=E6=9D=83=E9=99=90=E6=B3=A8?= =?UTF-8?q?=E8=A7=A3,=E5=87=BA=E5=85=A5=E5=BA=93=E7=A7=BB=E5=BA=93?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../klp/controller/WmsCategoryController.java | 5 -- .../klp/controller/WmsOrderController.java | 6 -- .../controller/WmsOrderDetailController.java | 6 -- .../controller/WmsProductBomController.java | 6 -- .../klp/controller/WmsProductController.java | 6 -- .../WmsProductionLineController.java | 6 -- .../controller/WmsPurchasePlanController.java | 6 -- .../WmsPurchasePlanDetailController.java | 6 -- .../controller/WmsRawMaterialController.java | 3 - .../klp/controller/WmsStockIoController.java | 10 +++ .../java/com/klp/domain/WmsStockIoDetail.java | 4 + .../com/klp/domain/bo/WmsStockIoDetailBo.java | 5 ++ .../com/klp/domain/vo/WmsStockIoDetailVo.java | 5 ++ .../com/klp/service/IWmsStockIoService.java | 5 ++ .../service/impl/WmsStockIoServiceImpl.java | 85 +++++++++++++++++++ .../mapper/klp/WmsStockIoDetailMapper.xml | 1 + 16 files changed, 115 insertions(+), 50 deletions(-) diff --git a/klp-wms/src/main/java/com/klp/controller/WmsCategoryController.java b/klp-wms/src/main/java/com/klp/controller/WmsCategoryController.java index 82349073..5cf245f0 100644 --- a/klp-wms/src/main/java/com/klp/controller/WmsCategoryController.java +++ b/klp-wms/src/main/java/com/klp/controller/WmsCategoryController.java @@ -40,7 +40,6 @@ public class WmsCategoryController extends BaseController { /** * 查询通用分类列表 */ - @SaCheckPermission("klp:category:list") @GetMapping("/list") public TableDataInfo list(WmsCategoryBo bo, PageQuery pageQuery) { return iWmsCategoryService.queryPageList(bo, pageQuery); @@ -49,7 +48,6 @@ public class WmsCategoryController extends BaseController { /** * 导出通用分类列表 */ - @SaCheckPermission("klp:category:export") @Log(title = "通用分类", businessType = BusinessType.EXPORT) @PostMapping("/export") public void export(WmsCategoryBo bo, HttpServletResponse response) { @@ -62,7 +60,6 @@ public class WmsCategoryController extends BaseController { * * @param categoryId 主键 */ - @SaCheckPermission("klp:category:query") @GetMapping("/{categoryId}") public R getInfo(@NotNull(message = "主键不能为空") @PathVariable Long categoryId) { @@ -72,7 +69,6 @@ public class WmsCategoryController extends BaseController { /** * 新增通用分类 */ - @SaCheckPermission("klp:category:add") @Log(title = "通用分类", businessType = BusinessType.INSERT) @RepeatSubmit() @PostMapping() @@ -96,7 +92,6 @@ public class WmsCategoryController extends BaseController { * * @param categoryIds 主键串 */ - @SaCheckPermission("klp:category:remove") @Log(title = "通用分类", businessType = BusinessType.DELETE) @DeleteMapping("/{categoryIds}") public R remove(@NotEmpty(message = "主键不能为空") diff --git a/klp-wms/src/main/java/com/klp/controller/WmsOrderController.java b/klp-wms/src/main/java/com/klp/controller/WmsOrderController.java index 6942230b..552dc3da 100644 --- a/klp-wms/src/main/java/com/klp/controller/WmsOrderController.java +++ b/klp-wms/src/main/java/com/klp/controller/WmsOrderController.java @@ -40,7 +40,6 @@ public class WmsOrderController extends BaseController { /** * 查询订单主列表 */ - @SaCheckPermission("klp:order:list") @GetMapping("/list") public TableDataInfo list(WmsOrderBo bo, PageQuery pageQuery) { return iWmsOrderService.queryPageList(bo, pageQuery); @@ -49,7 +48,6 @@ public class WmsOrderController extends BaseController { /** * 导出订单主列表 */ - @SaCheckPermission("klp:order:export") @Log(title = "订单主", businessType = BusinessType.EXPORT) @PostMapping("/export") public void export(WmsOrderBo bo, HttpServletResponse response) { @@ -62,7 +60,6 @@ public class WmsOrderController extends BaseController { * * @param orderId 主键 */ - @SaCheckPermission("klp:order:query") @GetMapping("/{orderId}") public R getInfo(@NotNull(message = "主键不能为空") @PathVariable Long orderId) { @@ -72,7 +69,6 @@ public class WmsOrderController extends BaseController { /** * 新增订单主 */ - @SaCheckPermission("klp:order:add") @Log(title = "订单主", businessType = BusinessType.INSERT) @RepeatSubmit() @PostMapping() @@ -83,7 +79,6 @@ public class WmsOrderController extends BaseController { /** * 修改订单主 */ - @SaCheckPermission("klp:order:edit") @Log(title = "订单主", businessType = BusinessType.UPDATE) @RepeatSubmit() @PutMapping() @@ -96,7 +91,6 @@ public class WmsOrderController extends BaseController { * * @param orderIds 主键串 */ - @SaCheckPermission("klp:order:remove") @Log(title = "订单主", businessType = BusinessType.DELETE) @DeleteMapping("/{orderIds}") public R remove(@NotEmpty(message = "主键不能为空") diff --git a/klp-wms/src/main/java/com/klp/controller/WmsOrderDetailController.java b/klp-wms/src/main/java/com/klp/controller/WmsOrderDetailController.java index b34a32c1..01481f1f 100644 --- a/klp-wms/src/main/java/com/klp/controller/WmsOrderDetailController.java +++ b/klp-wms/src/main/java/com/klp/controller/WmsOrderDetailController.java @@ -40,7 +40,6 @@ public class WmsOrderDetailController extends BaseController { /** * 查询订单明细列表 */ - @SaCheckPermission("klp:orderDetail:list") @GetMapping("/list") public TableDataInfo list(WmsOrderDetailBo bo, PageQuery pageQuery) { return iWmsOrderDetailService.queryPageList(bo, pageQuery); @@ -49,7 +48,6 @@ public class WmsOrderDetailController extends BaseController { /** * 导出订单明细列表 */ - @SaCheckPermission("klp:orderDetail:export") @Log(title = "订单明细", businessType = BusinessType.EXPORT) @PostMapping("/export") public void export(WmsOrderDetailBo bo, HttpServletResponse response) { @@ -62,7 +60,6 @@ public class WmsOrderDetailController extends BaseController { * * @param detailId 主键 */ - @SaCheckPermission("klp:orderDetail:query") @GetMapping("/{detailId}") public R getInfo(@NotNull(message = "主键不能为空") @PathVariable Long detailId) { @@ -72,7 +69,6 @@ public class WmsOrderDetailController extends BaseController { /** * 新增订单明细 */ - @SaCheckPermission("klp:orderDetail:add") @Log(title = "订单明细", businessType = BusinessType.INSERT) @RepeatSubmit() @PostMapping() @@ -83,7 +79,6 @@ public class WmsOrderDetailController extends BaseController { /** * 修改订单明细 */ - @SaCheckPermission("klp:orderDetail:edit") @Log(title = "订单明细", businessType = BusinessType.UPDATE) @RepeatSubmit() @PutMapping() @@ -96,7 +91,6 @@ public class WmsOrderDetailController extends BaseController { * * @param detailIds 主键串 */ - @SaCheckPermission("klp:orderDetail:remove") @Log(title = "订单明细", businessType = BusinessType.DELETE) @DeleteMapping("/{detailIds}") public R remove(@NotEmpty(message = "主键不能为空") diff --git a/klp-wms/src/main/java/com/klp/controller/WmsProductBomController.java b/klp-wms/src/main/java/com/klp/controller/WmsProductBomController.java index eb950e13..edf51e4d 100644 --- a/klp-wms/src/main/java/com/klp/controller/WmsProductBomController.java +++ b/klp-wms/src/main/java/com/klp/controller/WmsProductBomController.java @@ -40,7 +40,6 @@ public class WmsProductBomController extends BaseController { /** * 查询产品BOM(产品-原材料清单)列表 */ - @SaCheckPermission("klp:productBom:list") @GetMapping("/list") public TableDataInfo list(WmsProductBomBo bo, PageQuery pageQuery) { return iWmsProductBomService.queryPageList(bo, pageQuery); @@ -49,7 +48,6 @@ public class WmsProductBomController extends BaseController { /** * 导出产品BOM(产品-原材料清单)列表 */ - @SaCheckPermission("klp:productBom:export") @Log(title = "产品BOM(产品-原材料清单)", businessType = BusinessType.EXPORT) @PostMapping("/export") public void export(WmsProductBomBo bo, HttpServletResponse response) { @@ -62,7 +60,6 @@ public class WmsProductBomController extends BaseController { * * @param bomId 主键 */ - @SaCheckPermission("klp:productBom:query") @GetMapping("/{bomId}") public R getInfo(@NotNull(message = "主键不能为空") @PathVariable Long bomId) { @@ -72,7 +69,6 @@ public class WmsProductBomController extends BaseController { /** * 新增产品BOM(产品-原材料清单) */ - @SaCheckPermission("klp:productBom:add") @Log(title = "产品BOM(产品-原材料清单)", businessType = BusinessType.INSERT) @RepeatSubmit() @PostMapping() @@ -83,7 +79,6 @@ public class WmsProductBomController extends BaseController { /** * 修改产品BOM(产品-原材料清单) */ - @SaCheckPermission("klp:productBom:edit") @Log(title = "产品BOM(产品-原材料清单)", businessType = BusinessType.UPDATE) @RepeatSubmit() @PutMapping() @@ -96,7 +91,6 @@ public class WmsProductBomController extends BaseController { * * @param bomIds 主键串 */ - @SaCheckPermission("klp:productBom:remove") @Log(title = "产品BOM(产品-原材料清单)", businessType = BusinessType.DELETE) @DeleteMapping("/{bomIds}") public R remove(@NotEmpty(message = "主键不能为空") diff --git a/klp-wms/src/main/java/com/klp/controller/WmsProductController.java b/klp-wms/src/main/java/com/klp/controller/WmsProductController.java index 25739c3b..06d33c92 100644 --- a/klp-wms/src/main/java/com/klp/controller/WmsProductController.java +++ b/klp-wms/src/main/java/com/klp/controller/WmsProductController.java @@ -40,7 +40,6 @@ public class WmsProductController extends BaseController { /** * 查询产品列表 */ - @SaCheckPermission("klp:product:list") @GetMapping("/list") public TableDataInfo list(WmsProductBo bo, PageQuery pageQuery) { return iWmsProductService.queryPageList(bo, pageQuery); @@ -49,7 +48,6 @@ public class WmsProductController extends BaseController { /** * 导出产品列表 */ - @SaCheckPermission("klp:product:export") @Log(title = "产品", businessType = BusinessType.EXPORT) @PostMapping("/export") public void export(WmsProductBo bo, HttpServletResponse response) { @@ -62,7 +60,6 @@ public class WmsProductController extends BaseController { * * @param productId 主键 */ - @SaCheckPermission("klp:product:query") @GetMapping("/{productId}") public R getInfo(@NotNull(message = "主键不能为空") @PathVariable Long productId) { @@ -72,7 +69,6 @@ public class WmsProductController extends BaseController { /** * 新增产品 */ - @SaCheckPermission("klp:product:add") @Log(title = "产品", businessType = BusinessType.INSERT) @RepeatSubmit() @PostMapping() @@ -83,7 +79,6 @@ public class WmsProductController extends BaseController { /** * 修改产品 */ - @SaCheckPermission("klp:product:edit") @Log(title = "产品", businessType = BusinessType.UPDATE) @RepeatSubmit() @PutMapping() @@ -96,7 +91,6 @@ public class WmsProductController extends BaseController { * * @param productIds 主键串 */ - @SaCheckPermission("klp:product:remove") @Log(title = "产品", businessType = BusinessType.DELETE) @DeleteMapping("/{productIds}") public R remove(@NotEmpty(message = "主键不能为空") diff --git a/klp-wms/src/main/java/com/klp/controller/WmsProductionLineController.java b/klp-wms/src/main/java/com/klp/controller/WmsProductionLineController.java index f9fb91da..8e9f0efa 100644 --- a/klp-wms/src/main/java/com/klp/controller/WmsProductionLineController.java +++ b/klp-wms/src/main/java/com/klp/controller/WmsProductionLineController.java @@ -40,7 +40,6 @@ public class WmsProductionLineController extends BaseController { /** * 查询产线列表 */ - @SaCheckPermission("klp:productionLine:list") @GetMapping("/list") public TableDataInfo list(WmsProductionLineBo bo, PageQuery pageQuery) { return iWmsProductionLineService.queryPageList(bo, pageQuery); @@ -49,7 +48,6 @@ public class WmsProductionLineController extends BaseController { /** * 导出产线列表 */ - @SaCheckPermission("klp:productionLine:export") @Log(title = "产线", businessType = BusinessType.EXPORT) @PostMapping("/export") public void export(WmsProductionLineBo bo, HttpServletResponse response) { @@ -62,7 +60,6 @@ public class WmsProductionLineController extends BaseController { * * @param lineId 主键 */ - @SaCheckPermission("klp:productionLine:query") @GetMapping("/{lineId}") public R getInfo(@NotNull(message = "主键不能为空") @PathVariable Long lineId) { @@ -72,7 +69,6 @@ public class WmsProductionLineController extends BaseController { /** * 新增产线 */ - @SaCheckPermission("klp:productionLine:add") @Log(title = "产线", businessType = BusinessType.INSERT) @RepeatSubmit() @PostMapping() @@ -83,7 +79,6 @@ public class WmsProductionLineController extends BaseController { /** * 修改产线 */ - @SaCheckPermission("klp:productionLine:edit") @Log(title = "产线", businessType = BusinessType.UPDATE) @RepeatSubmit() @PutMapping() @@ -96,7 +91,6 @@ public class WmsProductionLineController extends BaseController { * * @param lineIds 主键串 */ - @SaCheckPermission("klp:productionLine:remove") @Log(title = "产线", businessType = BusinessType.DELETE) @DeleteMapping("/{lineIds}") public R remove(@NotEmpty(message = "主键不能为空") diff --git a/klp-wms/src/main/java/com/klp/controller/WmsPurchasePlanController.java b/klp-wms/src/main/java/com/klp/controller/WmsPurchasePlanController.java index 04f37e5d..63c5c7d7 100644 --- a/klp-wms/src/main/java/com/klp/controller/WmsPurchasePlanController.java +++ b/klp-wms/src/main/java/com/klp/controller/WmsPurchasePlanController.java @@ -40,7 +40,6 @@ public class WmsPurchasePlanController extends BaseController { /** * 查询采购计划主列表 */ - @SaCheckPermission("klp:purchasePlan:list") @GetMapping("/list") public TableDataInfo list(WmsPurchasePlanBo bo, PageQuery pageQuery) { return iWmsPurchasePlanService.queryPageList(bo, pageQuery); @@ -49,7 +48,6 @@ public class WmsPurchasePlanController extends BaseController { /** * 导出采购计划主列表 */ - @SaCheckPermission("klp:purchasePlan:export") @Log(title = "采购计划主", businessType = BusinessType.EXPORT) @PostMapping("/export") public void export(WmsPurchasePlanBo bo, HttpServletResponse response) { @@ -62,7 +60,6 @@ public class WmsPurchasePlanController extends BaseController { * * @param planId 主键 */ - @SaCheckPermission("klp:purchasePlan:query") @GetMapping("/{planId}") public R getInfo(@NotNull(message = "主键不能为空") @PathVariable Long planId) { @@ -72,7 +69,6 @@ public class WmsPurchasePlanController extends BaseController { /** * 新增采购计划主 */ - @SaCheckPermission("klp:purchasePlan:add") @Log(title = "采购计划主", businessType = BusinessType.INSERT) @RepeatSubmit() @PostMapping() @@ -83,7 +79,6 @@ public class WmsPurchasePlanController extends BaseController { /** * 修改采购计划主 */ - @SaCheckPermission("klp:purchasePlan:edit") @Log(title = "采购计划主", businessType = BusinessType.UPDATE) @RepeatSubmit() @PutMapping() @@ -96,7 +91,6 @@ public class WmsPurchasePlanController extends BaseController { * * @param planIds 主键串 */ - @SaCheckPermission("klp:purchasePlan:remove") @Log(title = "采购计划主", businessType = BusinessType.DELETE) @DeleteMapping("/{planIds}") public R remove(@NotEmpty(message = "主键不能为空") diff --git a/klp-wms/src/main/java/com/klp/controller/WmsPurchasePlanDetailController.java b/klp-wms/src/main/java/com/klp/controller/WmsPurchasePlanDetailController.java index f8c933d6..c6d62cc8 100644 --- a/klp-wms/src/main/java/com/klp/controller/WmsPurchasePlanDetailController.java +++ b/klp-wms/src/main/java/com/klp/controller/WmsPurchasePlanDetailController.java @@ -40,7 +40,6 @@ public class WmsPurchasePlanDetailController extends BaseController { /** * 查询采购计划明细列表 */ - @SaCheckPermission("klp:purchasePlanDetail:list") @GetMapping("/list") public TableDataInfo list(WmsPurchasePlanDetailBo bo, PageQuery pageQuery) { return iWmsPurchasePlanDetailService.queryPageList(bo, pageQuery); @@ -49,7 +48,6 @@ public class WmsPurchasePlanDetailController extends BaseController { /** * 导出采购计划明细列表 */ - @SaCheckPermission("klp:purchasePlanDetail:export") @Log(title = "采购计划明细", businessType = BusinessType.EXPORT) @PostMapping("/export") public void export(WmsPurchasePlanDetailBo bo, HttpServletResponse response) { @@ -62,7 +60,6 @@ public class WmsPurchasePlanDetailController extends BaseController { * * @param detailId 主键 */ - @SaCheckPermission("klp:purchasePlanDetail:query") @GetMapping("/{detailId}") public R getInfo(@NotNull(message = "主键不能为空") @PathVariable Long detailId) { @@ -72,7 +69,6 @@ public class WmsPurchasePlanDetailController extends BaseController { /** * 新增采购计划明细 */ - @SaCheckPermission("klp:purchasePlanDetail:add") @Log(title = "采购计划明细", businessType = BusinessType.INSERT) @RepeatSubmit() @PostMapping() @@ -83,7 +79,6 @@ public class WmsPurchasePlanDetailController extends BaseController { /** * 修改采购计划明细 */ - @SaCheckPermission("klp:purchasePlanDetail:edit") @Log(title = "采购计划明细", businessType = BusinessType.UPDATE) @RepeatSubmit() @PutMapping() @@ -96,7 +91,6 @@ public class WmsPurchasePlanDetailController extends BaseController { * * @param detailIds 主键串 */ - @SaCheckPermission("klp:purchasePlanDetail:remove") @Log(title = "采购计划明细", businessType = BusinessType.DELETE) @DeleteMapping("/{detailIds}") public R remove(@NotEmpty(message = "主键不能为空") diff --git a/klp-wms/src/main/java/com/klp/controller/WmsRawMaterialController.java b/klp-wms/src/main/java/com/klp/controller/WmsRawMaterialController.java index 88f421b3..5cd6b4f0 100644 --- a/klp-wms/src/main/java/com/klp/controller/WmsRawMaterialController.java +++ b/klp-wms/src/main/java/com/klp/controller/WmsRawMaterialController.java @@ -40,7 +40,6 @@ public class WmsRawMaterialController extends BaseController { /** * 查询原材料列表 */ - @SaCheckPermission("klp:rawMaterial:list") @GetMapping("/list") public TableDataInfo list(WmsRawMaterialBo bo, PageQuery pageQuery) { return iWmsRawMaterialService.queryPageList(bo, pageQuery); @@ -49,7 +48,6 @@ public class WmsRawMaterialController extends BaseController { /** * 导出原材料列表 */ - @SaCheckPermission("klp:rawMaterial:export") @Log(title = "原材料", businessType = BusinessType.EXPORT) @PostMapping("/export") public void export(WmsRawMaterialBo bo, HttpServletResponse response) { @@ -62,7 +60,6 @@ public class WmsRawMaterialController extends BaseController { * * @param rawMaterialId 主键 */ - @SaCheckPermission("klp:rawMaterial:query") @GetMapping("/{rawMaterialId}") public R getInfo(@NotNull(message = "主键不能为空") @PathVariable Long rawMaterialId) { diff --git a/klp-wms/src/main/java/com/klp/controller/WmsStockIoController.java b/klp-wms/src/main/java/com/klp/controller/WmsStockIoController.java index b00a2f31..7c2ec79c 100644 --- a/klp-wms/src/main/java/com/klp/controller/WmsStockIoController.java +++ b/klp-wms/src/main/java/com/klp/controller/WmsStockIoController.java @@ -103,4 +103,14 @@ public class WmsStockIoController extends BaseController { @PathVariable Long[] stockIoIds) { return toAjax(iWmsStockIoService.deleteWithValidByIds(Arrays.asList(stockIoIds), true)); } + + /** + * 审核出入库/移库单 + */ + @SaCheckPermission("klp:stockIo:audit") + @Log(title = "出入库单主", businessType = BusinessType.UPDATE) + @PostMapping("/audit/{stockIoId}") + public R audit(@NotNull(message = "主键不能为空") @PathVariable Long stockIoId) { + return toAjax(iWmsStockIoService.auditStockIo(stockIoId)); + } } diff --git a/klp-wms/src/main/java/com/klp/domain/WmsStockIoDetail.java b/klp-wms/src/main/java/com/klp/domain/WmsStockIoDetail.java index bce6b5d7..900870d0 100644 --- a/klp-wms/src/main/java/com/klp/domain/WmsStockIoDetail.java +++ b/klp-wms/src/main/java/com/klp/domain/WmsStockIoDetail.java @@ -62,5 +62,9 @@ public class WmsStockIoDetail extends BaseEntity { */ @TableLogic private Integer delFlag; + /** + * 源库位ID(移库时使用) + */ + private Long fromWarehouseId; } diff --git a/klp-wms/src/main/java/com/klp/domain/bo/WmsStockIoDetailBo.java b/klp-wms/src/main/java/com/klp/domain/bo/WmsStockIoDetailBo.java index 6a6ce8fa..df0b8a13 100644 --- a/klp-wms/src/main/java/com/klp/domain/bo/WmsStockIoDetailBo.java +++ b/klp-wms/src/main/java/com/klp/domain/bo/WmsStockIoDetailBo.java @@ -72,5 +72,10 @@ public class WmsStockIoDetailBo extends BaseEntity { */ private String remark; + /** + * 源库位ID(移库时使用) + */ + private Long fromWarehouseId; + } diff --git a/klp-wms/src/main/java/com/klp/domain/vo/WmsStockIoDetailVo.java b/klp-wms/src/main/java/com/klp/domain/vo/WmsStockIoDetailVo.java index ce79e5a2..00bf6b7c 100644 --- a/klp-wms/src/main/java/com/klp/domain/vo/WmsStockIoDetailVo.java +++ b/klp-wms/src/main/java/com/klp/domain/vo/WmsStockIoDetailVo.java @@ -75,5 +75,10 @@ public class WmsStockIoDetailVo { @ExcelProperty(value = "备注") private String remark; + /** + * 源库位ID(移库时使用) + */ + private Long fromWarehouseId; + } diff --git a/klp-wms/src/main/java/com/klp/service/IWmsStockIoService.java b/klp-wms/src/main/java/com/klp/service/IWmsStockIoService.java index eeb4a936..59817c25 100644 --- a/klp-wms/src/main/java/com/klp/service/IWmsStockIoService.java +++ b/klp-wms/src/main/java/com/klp/service/IWmsStockIoService.java @@ -46,4 +46,9 @@ public interface IWmsStockIoService { * 校验并批量删除出入库单主信息 */ Boolean deleteWithValidByIds(Collection ids, Boolean isValid); + + /** + * 审核出入库/移库单,变更库存,含库存校验 + */ + Boolean auditStockIo(Long stockIoId); } diff --git a/klp-wms/src/main/java/com/klp/service/impl/WmsStockIoServiceImpl.java b/klp-wms/src/main/java/com/klp/service/impl/WmsStockIoServiceImpl.java index cd472fd2..0512f02c 100644 --- a/klp-wms/src/main/java/com/klp/service/impl/WmsStockIoServiceImpl.java +++ b/klp-wms/src/main/java/com/klp/service/impl/WmsStockIoServiceImpl.java @@ -14,6 +14,12 @@ import com.klp.domain.vo.WmsStockIoVo; import com.klp.domain.WmsStockIo; import com.klp.mapper.WmsStockIoMapper; import com.klp.service.IWmsStockIoService; +import com.klp.domain.WmsStockIoDetail; +import com.klp.domain.WmsStock; +import com.klp.mapper.WmsStockIoDetailMapper; +import com.klp.mapper.WmsStockMapper; +import org.springframework.transaction.annotation.Transactional; +import java.math.BigDecimal; import java.util.List; import java.util.Map; @@ -30,6 +36,8 @@ import java.util.Collection; public class WmsStockIoServiceImpl implements IWmsStockIoService { private final WmsStockIoMapper baseMapper; + private final WmsStockIoDetailMapper stockIoDetailMapper; + private final WmsStockMapper stockMapper; /** * 查询出入库单主 @@ -109,4 +117,81 @@ public class WmsStockIoServiceImpl implements IWmsStockIoService { } return baseMapper.deleteBatchIds(ids) > 0; } + + /** + * 审核出入库/移库单,变更库存,含库存校验 + */ + @Override + @Transactional(rollbackFor = Exception.class) + public Boolean auditStockIo(Long stockIoId) { + WmsStockIo stockIo = baseMapper.selectById(stockIoId); + if (stockIo == null || stockIo.getStatus() == null || stockIo.getStatus() != 1) { + // 只允许审核“已提交”状态的单据 + throw new RuntimeException("单据不存在或状态不允许审核"); + } + List details = stockIoDetailMapper.selectList( + Wrappers.lambdaQuery().eq(WmsStockIoDetail::getStockIoId, stockIoId) + ); + if (details == null || details.isEmpty()) { + throw new RuntimeException("单据明细不能为空"); + } + for (WmsStockIoDetail detail : details) { + String ioType = stockIo.getIoType(); + if ("in".equals(ioType)) { + // 入库:目标库位库存增加 + changeStock(detail.getWarehouseId(), detail.getItemType(), detail.getItemId(), detail.getBatchNo(), detail.getQuantity(), true, detail.getUnit()); + } else if ("out".equals(ioType)) { + // 出库:目标库位库存减少 + changeStock(detail.getWarehouseId(), detail.getItemType(), detail.getItemId(), detail.getBatchNo(), detail.getQuantity(), false, detail.getUnit()); + } else if ("transfer".equals(ioType)) { + // 移库:fromWarehouseId减少,warehouseId增加 + if (detail.getFromWarehouseId() == null) { + throw new RuntimeException("移库明细缺少源库位ID"); + } + // 先减少源库位 + changeStock(detail.getFromWarehouseId(), detail.getItemType(), detail.getItemId(), detail.getBatchNo(), detail.getQuantity(), false, detail.getUnit()); + // 再增加目标库位 + changeStock(detail.getWarehouseId(), detail.getItemType(), detail.getItemId(), detail.getBatchNo(), detail.getQuantity(), true, detail.getUnit()); + } else { + throw new RuntimeException("未知的出入库类型"); + } + } + // 更新单据状态为已审核(2) + stockIo.setStatus(2); + baseMapper.updateById(stockIo); + return true; + } + + /** + * 库存增减,isAdd=true为增加,false为减少,减少时校验库存是否足够 + */ + private void changeStock(Long warehouseId, String itemType, Long itemId, String batchNo, BigDecimal quantity, boolean isAdd, String unit) { + WmsStock stock = stockMapper.selectOne(Wrappers.lambdaQuery() + .eq(WmsStock::getWarehouseId, warehouseId) + .eq(WmsStock::getItemType, itemType) + .eq(WmsStock::getItemId, itemId) + .eq(WmsStock::getBatchNo, batchNo) + .last("limit 1")); + if (stock == null) { + if (!isAdd) { + throw new RuntimeException("库存不足,无法出库/移库"); + } + // 新增库存记录 + stock = new WmsStock(); + stock.setWarehouseId(warehouseId); + stock.setItemType(itemType); + stock.setItemId(itemId); + stock.setBatchNo(batchNo); + stock.setQuantity(quantity); + stock.setUnit(unit); + stockMapper.insert(stock); + } else { + BigDecimal newQty = isAdd ? stock.getQuantity().add(quantity) : stock.getQuantity().subtract(quantity); + if (newQty.compareTo(BigDecimal.ZERO) < 0) { + throw new RuntimeException("库存不足,无法出库/移库"); + } + stock.setQuantity(newQty); + stockMapper.updateById(stock); + } + } } diff --git a/klp-wms/src/main/resources/mapper/klp/WmsStockIoDetailMapper.xml b/klp-wms/src/main/resources/mapper/klp/WmsStockIoDetailMapper.xml index 6851f072..1de16cde 100644 --- a/klp-wms/src/main/resources/mapper/klp/WmsStockIoDetailMapper.xml +++ b/klp-wms/src/main/resources/mapper/klp/WmsStockIoDetailMapper.xml @@ -19,6 +19,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" +