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 2ec2d9cb..8bdb922c 100644 --- a/klp-wms/src/main/java/com/klp/controller/WmsStockIoController.java +++ b/klp-wms/src/main/java/com/klp/controller/WmsStockIoController.java @@ -163,4 +163,13 @@ public class WmsStockIoController extends BaseController { return R.fail(e.getMessage()); } } + @PostMapping("/scanOutStock") + public R scanOutStock(@RequestBody WmsStockIoDetailBo bo) { + try { + boolean result = iWmsStockIoService.scanOutStockByBo(bo); + return toAjax(result); + } catch (Exception e) { + return R.fail(e.getMessage()); + } + } } 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 d95998c0..91277b82 100644 --- a/klp-wms/src/main/java/com/klp/service/IWmsStockIoService.java +++ b/klp-wms/src/main/java/com/klp/service/IWmsStockIoService.java @@ -77,4 +77,6 @@ public interface IWmsStockIoService { boolean scanInStockByBo(WmsStockIoDetailBo bo); + + boolean scanOutStockByBo(WmsStockIoDetailBo bo); } 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 aaac8ccd..346a9d46 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 @@ -162,6 +162,27 @@ public class WmsStockIoServiceImpl implements IWmsStockIoService { changeStock(bo.getWarehouseId(), bo.getItemType(), bo.getItemId(), bo.getQuantity(), true, unit); return true; } + @Override + @Transactional(rollbackFor = Exception.class) + public boolean scanOutStockByBo(WmsStockIoDetailBo bo) { + String unit = bo.getUnit(); + // 如果unit为空,自动查item表补全 + if (unit == null || unit.trim().isEmpty()) { + if ("product".equals(bo.getItemType())) { + WmsProduct p = productMapper.selectById(bo.getItemId()); + unit = p != null ? p.getUnit() : null; + } else if ("raw_material".equals(bo.getItemType())) { + WmsRawMaterial r = rawMaterialMapper.selectById(bo.getItemId()); + unit = r != null ? r.getUnit() : null; + } + } + if (unit == null || unit.trim().isEmpty()) { + throw new RuntimeException("未能获取到单位"); + } + // 出库操作 + changeStock(bo.getWarehouseId(), bo.getItemType(), bo.getItemId(), bo.getQuantity(), false, unit); + return true; + } /**