Browse Source

fix(check): 修复和排查预算重复调整异常

master
Yen 1 week ago
parent
commit
dcae2e120f
  1. 14
      cms-modules/cms-system/src/main/java/com/qs/serve/modules/tbs/service/impl/TbsBudgetChangeOperationServiceImpl.java
  2. 2
      cms-modules/cms-system/src/main/java/com/qs/serve/modules/vtb/mapper/VtbVerificationMapper.java
  3. 2
      cms-modules/cms-system/src/main/java/com/qs/serve/modules/vtb/service/VtbVerificationApplication.java

14
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<TbsBudgetLog>().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());

2
cms-modules/cms-system/src/main/java/com/qs/serve/modules/vtb/mapper/VtbVerificationMapper.java

@ -38,7 +38,7 @@ public interface VtbVerificationMapper extends BaseMapper<VtbVerification> {
@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`" +

2
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());

Loading…
Cancel
Save