From 11ab036e4370769e1860b0a0f1b57fc886d46100 Mon Sep 17 00:00:00 2001 From: wanghao Date: Tue, 20 Jan 2026 11:19:47 +0800 Subject: [PATCH] =?UTF-8?q?feat(wms):=20=E5=87=BA=E5=BA=93=E5=AD=90?= =?UTF-8?q?=E8=A1=A8=E7=BB=9F=E8=AE=A1=E6=9C=AA=E5=87=BA=E5=BA=93=E7=9A=84?= =?UTF-8?q?=E6=95=B0=E9=87=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../WmsOutStockDetailsController.java | 43 ++++++++++++------- .../service/IWmsOutStockDetailsService.java | 3 ++ .../impl/WmsOutStockDetailsServiceImpl.java | 25 +++++++++-- 3 files changed, 52 insertions(+), 19 deletions(-) diff --git a/ruoyi-modules/ruoyi-wms/src/main/java/org/dromara/wms/controller/WmsOutStockDetailsController.java b/ruoyi-modules/ruoyi-wms/src/main/java/org/dromara/wms/controller/WmsOutStockDetailsController.java index fd55ca70..1e6eacaa 100644 --- a/ruoyi-modules/ruoyi-wms/src/main/java/org/dromara/wms/controller/WmsOutStockDetailsController.java +++ b/ruoyi-modules/ruoyi-wms/src/main/java/org/dromara/wms/controller/WmsOutStockDetailsController.java @@ -1,26 +1,27 @@ package org.dromara.wms.controller; -import java.util.List; - -import lombok.RequiredArgsConstructor; -import jakarta.servlet.http.HttpServletResponse; -import jakarta.validation.constraints.*; import cn.dev33.satoken.annotation.SaCheckPermission; -import org.springframework.web.bind.annotation.*; -import org.springframework.validation.annotation.Validated; -import org.dromara.common.idempotent.annotation.RepeatSubmit; -import org.dromara.common.log.annotation.Log; -import org.dromara.common.web.core.BaseController; -import org.dromara.common.mybatis.core.page.PageQuery; +import jakarta.servlet.http.HttpServletResponse; +import jakarta.validation.constraints.NotEmpty; +import jakarta.validation.constraints.NotNull; +import lombok.RequiredArgsConstructor; import org.dromara.common.core.domain.R; import org.dromara.common.core.validate.AddGroup; import org.dromara.common.core.validate.EditGroup; -import org.dromara.common.log.enums.BusinessType; import org.dromara.common.excel.utils.ExcelUtil; -import org.dromara.wms.domain.vo.WmsOutStockDetailsVo; -import org.dromara.wms.domain.bo.WmsOutStockDetailsBo; -import org.dromara.wms.service.IWmsOutStockDetailsService; +import org.dromara.common.idempotent.annotation.RepeatSubmit; +import org.dromara.common.log.annotation.Log; +import org.dromara.common.log.enums.BusinessType; +import org.dromara.common.mybatis.core.page.PageQuery; import org.dromara.common.mybatis.core.page.TableDataInfo; +import org.dromara.common.web.core.BaseController; +import org.dromara.wms.domain.bo.WmsOutStockDetailsBo; +import org.dromara.wms.domain.vo.WmsOutStockDetailsVo; +import org.dromara.wms.service.IWmsOutStockDetailsService; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import java.util.List; /** * 出库单明细 @@ -65,7 +66,7 @@ public class WmsOutStockDetailsController extends BaseController { @SaCheckPermission("wms:outStockDetails:query") @GetMapping("/{outStockDetailsId}") public R getInfo(@NotNull(message = "主键不能为空") - @PathVariable("outStockDetailsId") Long outStockDetailsId) { + @PathVariable("outStockDetailsId") Long outStockDetailsId) { return R.ok(wmsOutStockDetailsService.queryById(outStockDetailsId)); } @@ -113,4 +114,14 @@ public class WmsOutStockDetailsController extends BaseController { return R.ok(list); } + /** + * 统计相同库存ID的,未出库的出库单明细数量 + * + * @return 未出库的出库单明细数量 + */ + @SaCheckPermission("wms:outStockDetails:query") + @GetMapping("/countUnOutStockDetails") + public R countUnOutStockDetails(WmsOutStockDetailsBo bo) { + return R.ok(wmsOutStockDetailsService.countUnOutStockDetailsByInventoryDetailsId(bo)); + } } diff --git a/ruoyi-modules/ruoyi-wms/src/main/java/org/dromara/wms/service/IWmsOutStockDetailsService.java b/ruoyi-modules/ruoyi-wms/src/main/java/org/dromara/wms/service/IWmsOutStockDetailsService.java index 7c05056c..8dba3e24 100644 --- a/ruoyi-modules/ruoyi-wms/src/main/java/org/dromara/wms/service/IWmsOutStockDetailsService.java +++ b/ruoyi-modules/ruoyi-wms/src/main/java/org/dromara/wms/service/IWmsOutStockDetailsService.java @@ -1,5 +1,6 @@ package org.dromara.wms.service; +import jakarta.validation.constraints.NotNull; import org.dromara.wms.domain.WmsOutStockDetails; import org.dromara.wms.domain.vo.WmsOutStockDetailsVo; import org.dromara.wms.domain.bo.WmsOutStockDetailsBo; @@ -68,4 +69,6 @@ public interface IWmsOutStockDetailsService { Boolean deleteWithValidByIds(Collection ids, Boolean isValid); List queryListE(WmsOutStockDetailsBo bo); + + WmsOutStockDetailsVo countUnOutStockDetailsByInventoryDetailsId(WmsOutStockDetailsBo bo); } diff --git a/ruoyi-modules/ruoyi-wms/src/main/java/org/dromara/wms/service/impl/WmsOutStockDetailsServiceImpl.java b/ruoyi-modules/ruoyi-wms/src/main/java/org/dromara/wms/service/impl/WmsOutStockDetailsServiceImpl.java index d9862d08..ff0a1ea1 100644 --- a/ruoyi-modules/ruoyi-wms/src/main/java/org/dromara/wms/service/impl/WmsOutStockDetailsServiceImpl.java +++ b/ruoyi-modules/ruoyi-wms/src/main/java/org/dromara/wms/service/impl/WmsOutStockDetailsServiceImpl.java @@ -69,6 +69,7 @@ public class WmsOutStockDetailsServiceImpl implements IWmsOutStockDetailsService MPJLambdaWrapper lqw = buildQueryWrapper(bo); return baseMapper.selectVoList(lqw); } + @Override public List queryListE(WmsOutStockDetailsBo bo) { MPJLambdaWrapper lqw = buildQueryWrapperE(bo); @@ -90,6 +91,7 @@ public class WmsOutStockDetailsServiceImpl implements IWmsOutStockDetailsService .eq(bo.getOutStockBillId() != null, WmsOutStockDetails::getOutStockBillId, bo.getOutStockBillId()); return lqw; } + private MPJLambdaWrapper buildQueryWrapperE(WmsOutStockDetailsBo bo) { MPJLambdaWrapper lqw = JoinWrappers.lambda(WmsOutStockDetails.class) .selectAll(WmsOutStockDetails.class) @@ -97,8 +99,7 @@ public class WmsOutStockDetailsServiceImpl implements IWmsOutStockDetailsService .select(WmsBaseProduct::getProductCode, WmsBaseProduct::getProductName, WmsBaseProduct::getExternalBrand, WmsBaseProduct::getProductSpe) .eq(bo.getOutStockBillId() != null, WmsOutStockDetails::getOutStockBillId, bo.getOutStockBillId()) .leftJoin(WmsInventoryDetails.class, WmsInventoryDetails::getInventoryDetailsId, WmsOutStockDetails::getInventoryDetailsId) - .select( WmsInventoryDetails::getInventoryAmount/*, WmsInventoryDetails::getLockedAmount*/) - ; + .select(WmsInventoryDetails::getInventoryAmount/*, WmsInventoryDetails::getLockedAmount*/); return lqw; } @@ -128,7 +129,6 @@ public class WmsOutStockDetailsServiceImpl implements IWmsOutStockDetailsService } - /** * 校验并批量删除出库单明细信息 * @@ -141,4 +141,23 @@ public class WmsOutStockDetailsServiceImpl implements IWmsOutStockDetailsService return baseMapper.deleteByIds(ids) > 0; } + + /** + * 统计相同库存ID的,未出库的出库单明细数量 + * + * @return 未出库的出库单明细数量 + */ + @Override + public WmsOutStockDetailsVo countUnOutStockDetailsByInventoryDetailsId(WmsOutStockDetailsBo bo) { + return baseMapper.selectVoOne( + new MPJLambdaWrapper() + .selectSum(WmsOutStockDetails::getOutStockAmount) + .select(WmsOutStockDetails::getInventoryDetailsId) + .groupBy(WmsOutStockDetails::getInventoryDetailsId) + .eq(WmsOutStockDetails::getInventoryDetailsId, bo.getInventoryDetailsId()) + .eq(WmsOutStockDetails::getOutState, "0") + // 排除当前出库单明细 + .ne(bo.getOutStockDetailsId() != null, WmsOutStockDetails::getOutStockDetailsId, bo.getOutStockDetailsId()) + ); + } }