diff --git a/agileboot-domain/src/main/java/com/agileboot/domain/shop/approval/ReturnApprovalApplicationService.java b/agileboot-domain/src/main/java/com/agileboot/domain/shop/approval/ReturnApprovalApplicationService.java index 3850ade..3077eeb 100644 --- a/agileboot-domain/src/main/java/com/agileboot/domain/shop/approval/ReturnApprovalApplicationService.java +++ b/agileboot-domain/src/main/java/com/agileboot/domain/shop/approval/ReturnApprovalApplicationService.java @@ -443,9 +443,12 @@ public class ReturnApprovalApplicationService { * 执行更新审批状态为通过以及之后的操作 */ public void updateApprovalStatusAndComplete(UpdateReturnApprovalCommand command) { + long startTime = System.currentTimeMillis(); + // 加载退货审批模型 ReturnApprovalModel model = modelFactory.loadById(command.getApprovalId()); - + long modelLoadTime = System.currentTimeMillis(); + // 设置审批人信息 if (StringUtils.isNotBlank(command.getAuditName())) { model.setAuditName(command.getAuditName()); @@ -455,14 +458,18 @@ public class ReturnApprovalApplicationService { model.setAuditName(qyUserEntity.getName()); } } + long auditInfoTime = System.currentTimeMillis(); + // 获取关联的订单商品列表 List approvalGoodsList = approvalGoodsService.selectByApprovalId(model.getApprovalId()); if (approvalGoodsList == null || approvalGoodsList.isEmpty()) { throw new RuntimeException("未找到关联的订单商品"); } - + long goodsListTime = System.currentTimeMillis(); + List approvalGoodsCellEntities = approvalGoodsCellService.selectByApprovalId(model.getApprovalId()); - + long goodsCellTime = System.currentTimeMillis(); + // 获取关联的商品列表 QueryWrapper goodsWrapper = new QueryWrapper<>(); goodsWrapper.in("goods_id", approvalGoodsList.stream().map(ApprovalGoodsEntity::getGoodsId).distinct().collect(Collectors.toList())) @@ -471,12 +478,14 @@ public class ReturnApprovalApplicationService { if (goodsList == null || goodsList.isEmpty()) { throw new RuntimeException("未找到关联的商品"); } - + long shopGoodsTime = System.currentTimeMillis(); + // 初始化商品和格口模型列表 QueryWrapper cellEntityQueryWrapper = new QueryWrapper<>(); cellEntityQueryWrapper.in("cell_id", approvalGoodsCellEntities.stream().map(ApprovalGoodsCellEntity::getCellId).collect(Collectors.toList())) .eq("deleted", false); List cabinetCellList = cabinetCellService.list(cellEntityQueryWrapper); + long cabinetCellTime = System.currentTimeMillis(); for (ApprovalGoodsCellEntity approvalGoodsCell : approvalGoodsCellEntities) { if (approvalGoodsCell.getAllocateQuantity() == null || approvalGoodsCell.getAllocateQuantity().compareTo(0) <= 0) { @@ -515,10 +524,14 @@ public class ReturnApprovalApplicationService { model.setAuditUserid(command.getAuditUserid()); model.setApprovalTime(new Date()); + long stockTime = System.currentTimeMillis(); + // 调用固资通服务的出库方法 assetApplicationService.consumeOutput(model.getCorpid(), model.getApplyUserid(), model.getAuditUserid(), model, approvalGoodsList, goodsList); + long consumeOutputTime = System.currentTimeMillis(); + // 开始执行数据库操作 model.setStatus(2); // 2表示审核通过状态 model.updateById(); @@ -528,6 +541,28 @@ public class ReturnApprovalApplicationService { // 批量更新格口库存 cabinetCellList.forEach(CabinetCellEntity::updateById); + + long updateDatabaseTime = System.currentTimeMillis(); + + try { + AddPaymentOperationLogCommand paymentOperationLogCommand = new AddPaymentOperationLogCommand(); + paymentOperationLogCommand.setOperationType("assetApprovalTime"); + paymentOperationLogCommand.setStatus(1); + paymentOperationLogCommand.setRemark(String.format("Method execution times - Model load: %dms, Audit info: %dms, Goods list: %dms, Goods cell: %dms, Shop goods: %dms, Cabinet cell: %dms, Stock: %dms, Consume output: %dms, Update database: %dms", + modelLoadTime - startTime, + auditInfoTime - modelLoadTime, + goodsListTime - auditInfoTime, + goodsCellTime - goodsListTime, + shopGoodsTime - goodsCellTime, + cabinetCellTime - shopGoodsTime, + stockTime - cabinetCellTime, + consumeOutputTime - stockTime, + updateDatabaseTime - consumeOutputTime)); + paymentOperationLogCommand.initBaseEntity(); + paymentOperationLogApplicationService.addPaymentOperationLog(paymentOperationLogCommand); + } catch (Exception e) { + log.error("记录操作日志失败", e); + } }