From dcae2e120fb50506f6a214c109a8273d355442b3 Mon Sep 17 00:00:00 2001 From: Yen Date: Fri, 11 Jul 2025 14:44:12 +0800 Subject: [PATCH] =?UTF-8?q?fix(check):=20=E4=BF=AE=E5=A4=8D=E5=92=8C?= =?UTF-8?q?=E6=8E=92=E6=9F=A5=E9=A2=84=E7=AE=97=E9=87=8D=E5=A4=8D=E8=B0=83?= =?UTF-8?q?=E6=95=B4=E5=BC=82=E5=B8=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../impl/TbsBudgetChangeOperationServiceImpl.java | 14 +++++++++++--- .../modules/vtb/mapper/VtbVerificationMapper.java | 2 +- .../vtb/service/VtbVerificationApplication.java | 2 +- 3 files changed, 13 insertions(+), 5 deletions(-) diff --git a/cms-modules/cms-system/src/main/java/com/qs/serve/modules/tbs/service/impl/TbsBudgetChangeOperationServiceImpl.java b/cms-modules/cms-system/src/main/java/com/qs/serve/modules/tbs/service/impl/TbsBudgetChangeOperationServiceImpl.java index d2d40f8..0d333d9 100644 --- a/cms-modules/cms-system/src/main/java/com/qs/serve/modules/tbs/service/impl/TbsBudgetChangeOperationServiceImpl.java +++ b/cms-modules/cms-system/src/main/java/com/qs/serve/modules/tbs/service/impl/TbsBudgetChangeOperationServiceImpl.java @@ -1,5 +1,6 @@ package com.qs.serve.modules.tbs.service.impl; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.qs.serve.common.enums.BudgetLogOptFlag; import com.qs.serve.common.exception.Assert; import com.qs.serve.framework.base.util.CollectionUtil; @@ -154,8 +155,11 @@ public class TbsBudgetChangeOperationServiceImpl implements SeeYonOperationServi * @param changeItem */ private void updateScheduleAmtAndBudgetLog(SysUser sysUser,TbsBudget budget,TbsScheduleItemBudget item, TbsBudgetChangeScheduleItem changeItem) { + // 防止多个服务同时回调这里再次校验一次 + String remarkKey = "TbsBudgetChangeScheduleItem::id="+changeItem.getId(); boolean changeAmtIsNotNull = changeItem.getBudgetAmount()!=null&&changeItem.getNewBudgetAmount()!=null; - if(changeAmtIsNotNull && changeItem.getBudgetAmount().compareTo(changeItem.getNewBudgetAmount())!=0){ + boolean changeAmt = changeAmtIsNotNull && changeItem.getBudgetAmount().compareTo(changeItem.getNewBudgetAmount())!=0; + if(changeAmt){ BudgetLogOptFlag optType; BigDecimal amount = changeItem.getNewBudgetAmount().subtract(changeItem.getBudgetAmount()); log.debug("预算:{},项:{},原金额:{},新金额:{}",budget.getBudgetCode(),changeItem.getItemName(),changeItem.getBudgetAmount(),changeItem.getNewBudgetAmount()); @@ -166,8 +170,12 @@ public class TbsBudgetChangeOperationServiceImpl implements SeeYonOperationServi }else{ return; } - TbsBudgetLog budgetLog = TbsBudgetLogBuildUtil.toTbsBudgetLog(sysUser,budget,item,optType, amount); - tbsBudgetLogService.save(budgetLog); + long count = tbsBudgetLogService.count(new LambdaQueryWrapper().eq(TbsBudgetLog::getRemark,remarkKey)); + if (count<1){ + TbsBudgetLog budgetLog = TbsBudgetLogBuildUtil.toTbsBudgetLog(sysUser,budget,item,optType, amount); + budgetLog.setRemark(remarkKey); + tbsBudgetLogService.save(budgetLog); + } } if(changeItem.getNewPreDispatchAmount()!=null){ item.setPreDispatchAmount(changeItem.getNewPreDispatchAmount()); diff --git a/cms-modules/cms-system/src/main/java/com/qs/serve/modules/vtb/mapper/VtbVerificationMapper.java b/cms-modules/cms-system/src/main/java/com/qs/serve/modules/vtb/mapper/VtbVerificationMapper.java index a919630..190f8fd 100644 --- a/cms-modules/cms-system/src/main/java/com/qs/serve/modules/vtb/mapper/VtbVerificationMapper.java +++ b/cms-modules/cms-system/src/main/java/com/qs/serve/modules/vtb/mapper/VtbVerificationMapper.java @@ -38,7 +38,7 @@ public interface VtbVerificationMapper extends BaseMapper { @Select("select COALESCE(sum(amount),0) from vtb_verification " + " where del_flag = 0 and activity_id = #{activityId}" + " and verification_state = 1 and id != #{verificationId}") - BigDecimal totalActivityVerification(@Param("activityId")String activityId,@Param("verificationId")String verificationId); + BigDecimal totalActivityVerificationAndId(@Param("activityId")String activityId,@Param("verificationId")String verificationId); @InterceptorIgnore(tenantLine = "true") @Select("SELECT verification_code FROM `vtb_verification`" + diff --git a/cms-modules/cms-system/src/main/java/com/qs/serve/modules/vtb/service/VtbVerificationApplication.java b/cms-modules/cms-system/src/main/java/com/qs/serve/modules/vtb/service/VtbVerificationApplication.java index 843d9c4..e72d6c1 100644 --- a/cms-modules/cms-system/src/main/java/com/qs/serve/modules/vtb/service/VtbVerificationApplication.java +++ b/cms-modules/cms-system/src/main/java/com/qs/serve/modules/vtb/service/VtbVerificationApplication.java @@ -442,7 +442,7 @@ public class VtbVerificationApplication { } //刷新活动金额 TbsActivity activity = tbsActivityService.getById(verification.getActivityId()); - BigDecimal activityLastUsed = verificationMapper.totalActivityVerification(verification.getActivityId()+"",verification.getId()+""); + BigDecimal activityLastUsed = verificationMapper.totalActivityVerificationAndId(verification.getActivityId()+"",verification.getId()+""); BigDecimal totalUsed = activityLastUsed.add(totalAmount); TbsActivity activity4Upd = new TbsActivity(); activity4Upd.setId(activity.getId());