From 72fdac0083aed920af39cc4a34c8e815bcea51c1 Mon Sep 17 00:00:00 2001 From: dzq Date: Sat, 7 Jun 2025 15:00:55 +0800 Subject: [PATCH] =?UTF-8?q?fix(asset):=20=E6=B7=BB=E5=8A=A0=E6=9F=9C?= =?UTF-8?q?=E6=A0=BC=E5=BA=93=E5=AD=98=E6=A3=80=E6=9F=A5=E9=80=BB=E8=BE=91?= =?UTF-8?q?=E4=BB=A5=E9=98=B2=E6=AD=A2=E5=BA=93=E5=AD=98=E4=B8=8D=E8=B6=B3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 在资产审批流程中增加对柜格库存的检查,当商品库存或柜格库存不足时抛出异常。这避免了审批通过后实际库存不足的问题。 --- .../domain/asset/AssetApplicationService.java | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/agileboot-domain/src/main/java/com/agileboot/domain/asset/AssetApplicationService.java b/agileboot-domain/src/main/java/com/agileboot/domain/asset/AssetApplicationService.java index 893b81c..e406559 100644 --- a/agileboot-domain/src/main/java/com/agileboot/domain/asset/AssetApplicationService.java +++ b/agileboot-domain/src/main/java/com/agileboot/domain/asset/AssetApplicationService.java @@ -3,6 +3,8 @@ package com.agileboot.domain.asset; import com.agileboot.common.constant.WeixinConstants; import com.agileboot.domain.asset.command.PostAssetApprovalCommand; import com.agileboot.domain.asset.command.PostAssetGoodsCommand; +import com.agileboot.domain.cabinet.cell.db.CabinetCellEntity; +import com.agileboot.domain.cabinet.cell.db.CabinetCellService; import com.agileboot.domain.qywx.accessToken.AccessTokenApplicationService; import com.agileboot.domain.qywx.accessToken.db.QyAccessTokenEntity; import com.agileboot.domain.qywx.api.QywxApiUtil; @@ -40,6 +42,7 @@ public class AssetApplicationService { private final AccessTokenApplicationService accessTokenApplicationService; private final QyUserService qyUserService; private final ApprovalGoodsModelFactory approvalGoodsModelFactory; + private final CabinetCellService cabinetCellService; public void pushExternalGoods(PostAssetGoodsCommand postAssetGoodsCommand) { if (postAssetGoodsCommand == null || postAssetGoodsCommand.getGoodsInfoList() == null || postAssetGoodsCommand.getGoodsInfoList().isEmpty()) { @@ -134,6 +137,14 @@ public class AssetApplicationService { throw new IllegalArgumentException("Insufficient stock"); } + List cabinetCellEntities = cabinetCellService.selectByGoodsId(shopGoodsEntity.getGoodsId()); + if (cabinetCellEntities == null || cabinetCellEntities.isEmpty()) { + throw new IllegalArgumentException("No cabinet cells found for the goods"); + } + Integer totalStock = cabinetCellEntities.stream().map(CabinetCellEntity::getStock).reduce(0, Integer::sum); + if (totalStock < command.getApplyQuantity()) { + throw new IllegalArgumentException("Insufficient stock in cabinet cells"); + } AddApprovalGoodsCommand approvalGoodsCommand = new AddApprovalGoodsCommand(); approvalGoodsCommand.initBaseEntity();