From c33f8951d7dbe6b4a839aff77e2d86d72487f985 Mon Sep 17 00:00:00 2001 From: dzq Date: Thu, 3 Jul 2025 10:54:10 +0800 Subject: [PATCH] =?UTF-8?q?perf(=E9=80=80=E8=B4=A7=E5=AE=A1=E6=89=B9):=20?= =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E6=80=A7=E8=83=BD=E7=9B=91=E6=8E=A7=E6=97=A5?= =?UTF-8?q?=E5=BF=97=E8=AE=B0=E5=BD=95=E5=90=84=E9=98=B6=E6=AE=B5=E6=89=A7?= =?UTF-8?q?=E8=A1=8C=E6=97=B6=E9=97=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 添加各关键步骤的执行时间记录,用于监控和优化退货审批流程的性能。记录包括模型加载、商品列表查询、库存操作等各阶段耗时,并写入操作日志以便后续分析。 --- .../ReturnApprovalApplicationService.java | 43 +++++++++++++++++-- 1 file changed, 39 insertions(+), 4 deletions(-) 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); + } }