refactor(asset): 重构资产审批流程,分离审批商品信息

将审批商品信息从审批流程中分离出来,使用单独的模型和表进行存储
更新测试数据以匹配新的商品ID和名称
This commit is contained in:
dzq 2025-06-07 10:39:47 +08:00
parent 163dfeb3e8
commit d451a93a4e
2 changed files with 37 additions and 16 deletions

View File

@ -22,8 +22,8 @@ public class AssetApiControllerTest {
public void testPushExternalGoods() throws UnsupportedEncodingException { public void testPushExternalGoods() throws UnsupportedEncodingException {
// 1.构建测试商品数据 // 1.构建测试商品数据
PostAssetGoodsCommand.GoodsInfo goodsInfo = new PostAssetGoodsCommand.GoodsInfo(); PostAssetGoodsCommand.GoodsInfo goodsInfo = new PostAssetGoodsCommand.GoodsInfo();
goodsInfo.setExternalGoodsId(1003L); goodsInfo.setExternalGoodsId(1004L);
goodsInfo.setGoodsName("测试笔记本电脑3"); goodsInfo.setGoodsName("测试笔记本电脑4");
goodsInfo.setPrice(new BigDecimal("5999.00")); goodsInfo.setPrice(new BigDecimal("5999.00"));
goodsInfo.setStock(10); goodsInfo.setStock(10);
goodsInfo.setAutoApproval(0); goodsInfo.setAutoApproval(0);
@ -83,6 +83,11 @@ public class AssetApiControllerTest {
goodsInfo.setApplyQuantity(2); goodsInfo.setApplyQuantity(2);
approvalCommand.getGoodsInfoList().add(goodsInfo); approvalCommand.getGoodsInfoList().add(goodsInfo);
goodsInfo = new PostAssetApprovalCommand.ApprovalGoodsInfo();
goodsInfo.setExternalGoodsId(1004L);
goodsInfo.setApplyQuantity(5);
approvalCommand.getGoodsInfoList().add(goodsInfo);
// 2.构造请求体 // 2.构造请求体
Map<String, String> params = new HashMap<>(); Map<String, String> params = new HashMap<>();
params.put("timestamp", String.valueOf(System.currentTimeMillis())); params.put("timestamp", String.valueOf(System.currentTimeMillis()));

View File

@ -13,6 +13,9 @@ import com.agileboot.domain.qywx.user.db.QyUserService;
import com.agileboot.domain.shop.approval.command.AddReturnApprovalCommand; import com.agileboot.domain.shop.approval.command.AddReturnApprovalCommand;
import com.agileboot.domain.shop.approval.model.ReturnApprovalModel; import com.agileboot.domain.shop.approval.model.ReturnApprovalModel;
import com.agileboot.domain.shop.approval.model.ReturnApprovalModelFactory; import com.agileboot.domain.shop.approval.model.ReturnApprovalModelFactory;
import com.agileboot.domain.shop.approvalGoods.command.AddApprovalGoodsCommand;
import com.agileboot.domain.shop.approvalGoods.model.ApprovalGoodsModel;
import com.agileboot.domain.shop.approvalGoods.model.ApprovalGoodsModelFactory;
import com.agileboot.domain.shop.goods.db.ShopGoodsEntity; import com.agileboot.domain.shop.goods.db.ShopGoodsEntity;
import com.agileboot.domain.shop.goods.db.ShopGoodsService; import com.agileboot.domain.shop.goods.db.ShopGoodsService;
import com.agileboot.domain.shop.goods.model.GoodsModel; import com.agileboot.domain.shop.goods.model.GoodsModel;
@ -36,6 +39,7 @@ public class AssetApplicationService {
private final AuthCorpInfoApplicationService authCorpInfoApplicationService; private final AuthCorpInfoApplicationService authCorpInfoApplicationService;
private final AccessTokenApplicationService accessTokenApplicationService; private final AccessTokenApplicationService accessTokenApplicationService;
private final QyUserService qyUserService; private final QyUserService qyUserService;
private final ApprovalGoodsModelFactory approvalGoodsModelFactory;
public void pushExternalGoods(PostAssetGoodsCommand postAssetGoodsCommand) { public void pushExternalGoods(PostAssetGoodsCommand postAssetGoodsCommand) {
if (postAssetGoodsCommand == null || postAssetGoodsCommand.getGoodsInfoList() == null || postAssetGoodsCommand.getGoodsInfoList().isEmpty()) { if (postAssetGoodsCommand == null || postAssetGoodsCommand.getGoodsInfoList() == null || postAssetGoodsCommand.getGoodsInfoList().isEmpty()) {
@ -105,9 +109,19 @@ public class AssetApplicationService {
throw new IllegalArgumentException("Corpid cannot be null"); throw new IllegalArgumentException("Corpid cannot be null");
} }
AddReturnApprovalCommand returnApprovalCommand = new AddReturnApprovalCommand();
BeanUtils.copyProperties(postAssetApprovalCommand, returnApprovalCommand);
if (returnApprovalCommand.getApprovalType() == null) {
returnApprovalCommand.setApprovalType(1);
}
ReturnApprovalModel returnApprovalModel = returnApprovalModelFactory.create();
returnApprovalModel.initBaseEntity();
returnApprovalModel.loadAddCommand(returnApprovalCommand);
List<ApprovalGoodsModel> approvalGoodsModels = new ArrayList<>();
for (PostAssetApprovalCommand.ApprovalGoodsInfo command : postAssetApprovalCommand.getGoodsInfoList()) { for (PostAssetApprovalCommand.ApprovalGoodsInfo command : postAssetApprovalCommand.getGoodsInfoList()) {
if (command.getApplyQuantity() == null || command.getApplyQuantity() <= 0) { if (command.getApplyQuantity() == null || command.getApplyQuantity() <= 0) {
throw new IllegalArgumentException("ApplyQuantity must be greater than 0"); throw new IllegalArgumentException("ApplyQuantity must be greater than 0");
} }
@ -120,21 +134,23 @@ public class AssetApplicationService {
throw new IllegalArgumentException("Insufficient stock"); throw new IllegalArgumentException("Insufficient stock");
} }
AddReturnApprovalCommand returnApprovalCommand = new AddReturnApprovalCommand();
BeanUtils.copyProperties(postAssetApprovalCommand, returnApprovalCommand);
BeanUtils.copyProperties(command, returnApprovalCommand);
returnApprovalCommand.setGoodsId(shopGoodsEntity.getGoodsId());
returnApprovalCommand.setGoodsPrice(shopGoodsEntity.getPrice());
if (returnApprovalCommand.getApprovalType() == null) {
returnApprovalCommand.setApprovalType(1);
}
ReturnApprovalModel returnApprovalModel = returnApprovalModelFactory.create(); AddApprovalGoodsCommand approvalGoodsCommand = new AddApprovalGoodsCommand();
returnApprovalModel.initBaseEntity(); approvalGoodsCommand.initBaseEntity();
returnApprovalModel.loadAddCommand(returnApprovalCommand); BeanUtils.copyProperties(postAssetApprovalCommand, approvalGoodsCommand);
returnApprovalCommand.insert(); BeanUtils.copyProperties(command, approvalGoodsCommand);
BeanUtils.copyProperties(shopGoodsEntity, approvalGoodsCommand);
ApprovalGoodsModel approvalGoodsModel = approvalGoodsModelFactory.create();
approvalGoodsModel.loadAddCommand(approvalGoodsCommand);
approvalGoodsModels.add(approvalGoodsModel);
} }
returnApprovalModel.insert();
approvalGoodsModels.stream()
.peek(approvalGoodsModel -> approvalGoodsModel.setApprovalId(returnApprovalModel.getApprovalId()))
.forEach(ApprovalGoodsModel::insert);
ShopGoodsEntity firstGoods = shopGoodsService.getGoodsByExternalGoodsId(postAssetApprovalCommand.getCorpid(), postAssetApprovalCommand.getGoodsInfoList().get(0).getExternalGoodsId()); ShopGoodsEntity firstGoods = shopGoodsService.getGoodsByExternalGoodsId(postAssetApprovalCommand.getCorpid(), postAssetApprovalCommand.getGoodsInfoList().get(0).getExternalGoodsId());
// 发送审核消息 // 发送审核消息
try { try {