From 5b250f0f28a6ceb749c4c1b578fbf7388a79c626 Mon Sep 17 00:00:00 2001 From: wanghao Date: Fri, 5 Dec 2025 11:27:38 +0800 Subject: [PATCH] =?UTF-8?q?feat(wms):=20=E6=A0=B7=E5=93=81=E5=87=BA?= =?UTF-8?q?=E5=BA=93=E5=87=8F=E5=B0=91=E5=BA=93=E5=AD=98=EF=BC=8C=E6=8F=92?= =?UTF-8?q?=E5=85=A5=E5=BA=93=E5=AD=98=E5=8F=98=E5=8A=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/IWmsInventoryDetailsService.java | 2 ++ .../impl/WmsInventoryDetailsServiceImpl.java | 25 ++++++++++++++-- .../impl/WmsSampleLedgerServiceImpl.java | 30 ++++++++++++++++--- 3 files changed, 51 insertions(+), 6 deletions(-) diff --git a/ruoyi-modules/ruoyi-wms/src/main/java/org/dromara/wms/service/IWmsInventoryDetailsService.java b/ruoyi-modules/ruoyi-wms/src/main/java/org/dromara/wms/service/IWmsInventoryDetailsService.java index 70664351..7cc39970 100644 --- a/ruoyi-modules/ruoyi-wms/src/main/java/org/dromara/wms/service/IWmsInventoryDetailsService.java +++ b/ruoyi-modules/ruoyi-wms/src/main/java/org/dromara/wms/service/IWmsInventoryDetailsService.java @@ -71,4 +71,6 @@ public interface IWmsInventoryDetailsService { TableDataInfo listCount(WmsInventoryDetailsBo bo, PageQuery pageQuery); WmsInventoryDetails queryInventory(WmsInventoryDetailsBo inventory); + + Double workUpdateInventory(Long inventoryDetailsId, Double disposalQty); } diff --git a/ruoyi-modules/ruoyi-wms/src/main/java/org/dromara/wms/service/impl/WmsInventoryDetailsServiceImpl.java b/ruoyi-modules/ruoyi-wms/src/main/java/org/dromara/wms/service/impl/WmsInventoryDetailsServiceImpl.java index 1cf4ade9..4b4e56c9 100644 --- a/ruoyi-modules/ruoyi-wms/src/main/java/org/dromara/wms/service/impl/WmsInventoryDetailsServiceImpl.java +++ b/ruoyi-modules/ruoyi-wms/src/main/java/org/dromara/wms/service/impl/WmsInventoryDetailsServiceImpl.java @@ -4,10 +4,12 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.github.yulichang.toolkit.JoinWrappers; import com.github.yulichang.wrapper.MPJLambdaWrapper; import lombok.RequiredArgsConstructor; +import org.dromara.common.core.utils.DateUtils; import org.dromara.common.core.utils.MapstructUtils; import org.dromara.common.core.utils.StringUtils; import org.dromara.common.mybatis.core.page.PageQuery; import org.dromara.common.mybatis.core.page.TableDataInfo; +import org.dromara.common.satoken.utils.LoginHelper; import org.dromara.wms.domain.WmsBaseProduct; import org.dromara.wms.domain.WmsInventoryDetails; import org.dromara.wms.domain.WmsWarehouseInfo; @@ -71,7 +73,7 @@ public class WmsInventoryDetailsServiceImpl implements IWmsInventoryDetailsServi .selectAs("sum(locked_amount)", WmsInventoryDetails::getLockedAmount) .select(WmsInventoryDetails::getWarehouseId, WmsInventoryDetails::getMaterielId) .leftJoin(WmsBaseProduct.class, WmsBaseProduct::getProductId, WmsInventoryDetails::getMaterielId) // 物料 - .select(WmsBaseProduct::getProductName, WmsBaseProduct::getProductCode, WmsBaseProduct::getExternalBrand,WmsBaseProduct::getProductSpe) // 物料名称、编码、品牌 + .select(WmsBaseProduct::getProductName, WmsBaseProduct::getProductCode, WmsBaseProduct::getExternalBrand, WmsBaseProduct::getProductSpe) // 物料名称、编码、品牌 .leftJoin(WmsWarehouseInfo.class, WmsWarehouseInfo::getWarehouseId, WmsInventoryDetails::getWarehouseId) // 仓库 .select(WmsWarehouseInfo::getWarehouseName) .eq(bo.getWarehouseId() != null, WmsInventoryDetails::getWarehouseId, bo.getWarehouseId()) // 仓库id @@ -160,7 +162,6 @@ public class WmsInventoryDetailsServiceImpl implements IWmsInventoryDetailsServi } - @Override public WmsInventoryDetails queryInventory(WmsInventoryDetailsBo bo) { MPJLambdaWrapper lqw = JoinWrappers.lambda(WmsInventoryDetails.class) @@ -174,4 +175,24 @@ public class WmsInventoryDetailsServiceImpl implements IWmsInventoryDetailsServi return baseMapper.selectOne(lqw); } + + @Override + public Double workUpdateInventory(Long inventoryDetailsId, Double disposalQty) { + + WmsInventoryDetails inventory = baseMapper.selectById(inventoryDetailsId); + Double inventoryAmount = inventory.getInventoryAmount(); + double lossQty = inventoryAmount - disposalQty; + if (lossQty < 0) { + throw new IllegalArgumentException("库存数量不足"); + } + + inventory.setInventoryAmount(lossQty); + if (lossQty == 0.0) { + inventory.setDelFlag("1"); + } + inventory.setUpdateBy(LoginHelper.getUserId()); + inventory.setUpdateTime(DateUtils.getNowDate()); + baseMapper.updataDetailsByInventoryId(inventory); + return inventoryAmount; + } } diff --git a/ruoyi-modules/ruoyi-wms/src/main/java/org/dromara/wms/service/impl/WmsSampleLedgerServiceImpl.java b/ruoyi-modules/ruoyi-wms/src/main/java/org/dromara/wms/service/impl/WmsSampleLedgerServiceImpl.java index cbb189c5..683fb808 100644 --- a/ruoyi-modules/ruoyi-wms/src/main/java/org/dromara/wms/service/impl/WmsSampleLedgerServiceImpl.java +++ b/ruoyi-modules/ruoyi-wms/src/main/java/org/dromara/wms/service/impl/WmsSampleLedgerServiceImpl.java @@ -8,15 +8,17 @@ import org.dromara.common.core.utils.MapstructUtils; import org.dromara.common.core.utils.StringUtils; import org.dromara.common.mybatis.core.page.PageQuery; import org.dromara.common.mybatis.core.page.TableDataInfo; -import org.dromara.wms.domain.ErpProjectInfo; -import org.dromara.wms.domain.WmsBaseProduct; -import org.dromara.wms.domain.WmsSampleLedger; +import org.dromara.wms.domain.*; import org.dromara.wms.domain.bo.WmsSampleLedgerBo; import org.dromara.wms.domain.vo.WmsSampleLedgerVo; +import org.dromara.wms.mapper.WmsInventoryDetailsMapper; +import org.dromara.wms.mapper.WmsInventoryLedgerMapper; import org.dromara.wms.mapper.WmsSampleLedgerMapper; +import org.dromara.wms.service.IWmsInventoryDetailsService; import org.dromara.wms.service.IWmsSampleLedgerService; import org.springframework.stereotype.Service; +import java.util.ArrayList; import java.util.Collection; import java.util.List; import java.util.Map; @@ -32,6 +34,8 @@ import java.util.Map; public class WmsSampleLedgerServiceImpl implements IWmsSampleLedgerService { private final WmsSampleLedgerMapper baseMapper; + private final IWmsInventoryDetailsService inventoryDetailsService; + private final WmsInventoryLedgerMapper wmsInventoryLedgerMapper; /** * 查询样品管理 @@ -100,6 +104,24 @@ public class WmsSampleLedgerServiceImpl implements IWmsSampleLedgerService { */ @Override public Boolean insertByBo(List bo) { + List wmsInventoryLedgers = new ArrayList<>(bo.size()); + bo.forEach(item -> { + Long inventoryId = item.getInventoryDetailsId(); + Double lentQty = item.getLentQty(); + Double inventoryAmount = inventoryDetailsService.workUpdateInventory(inventoryId, lentQty); + //库存变动 + WmsInventoryLedger wmsInventoryLedger = new WmsInventoryLedger(); + wmsInventoryLedger.setWarehouseId(item.getWarehouseId()); + wmsInventoryLedger.setBatchNumber(item.getBatchNumber()); + wmsInventoryLedger.setMaterielId(item.getMaterielId()); + wmsInventoryLedger.setChangeType("4");//变动类型 + wmsInventoryLedger.setLedgerState("0"); + wmsInventoryLedger.setChangeAmount(lentQty); + wmsInventoryLedger.setInventoryAmount(inventoryAmount); + wmsInventoryLedgers.add(wmsInventoryLedger); + }); + + wmsInventoryLedgerMapper.insert(wmsInventoryLedgers); baseMapper.insert(bo); return true; } @@ -124,7 +146,7 @@ public class WmsSampleLedgerServiceImpl implements IWmsSampleLedgerService { /** * 校验并批量删除样品管理信息 * - * @param ids 待删除的主键集合 + * @param ids 待删除的主键集合 * @return 是否删除成功 */ @Override