Browse Source

fix(check): 修复核销活动已用金额异常

master
Yen 1 week ago
parent
commit
315ee2a5e9
  1. 44
      cms-modules/cms-system/src/main/java/com/qs/serve/modules/vtb/controller/VtbVerificationController.java
  2. 5
      cms-modules/cms-system/src/main/java/com/qs/serve/modules/vtb/mapper/VtbVerificationMapper.java
  3. 7
      cms-modules/cms-system/src/main/java/com/qs/serve/modules/vtb/service/VtbVerificationApplication.java
  4. 13
      cms-modules/cms-system/src/main/java/com/qs/serve/modules/vtb/service/impl/VtbVerificationServiceImpl.java

44
cms-modules/cms-system/src/main/java/com/qs/serve/modules/vtb/controller/VtbVerificationController.java

@ -488,34 +488,34 @@ public class VtbVerificationController {
* @return * @return
*/ */
//@GetMapping("successCommit") //@GetMapping("successCommit")
public R<?> successCommit(Long verificationId){ // public R<?> successCommit(Long verificationId){
vtbVerificationService.successCommit(verificationId,false); // vtbVerificationService.successCommit(verificationId,false);
return R.ok(); // return R.ok();
} // }
/** /**
* 成功提交回调 * 成功提交回调
* @return * @return
*/ */
//@GetMapping("successCommit2") //@GetMapping("successCommit2")
public R<?> successCommit2(){ // public R<?> successCommit2(){
//错误的 // //错误的
Long[] costIds = new Long[]{ // Long[] costIds = new Long[]{
22010L, // 22010L,
264884L, // 264884L,
266434L // 266434L
}; // };
List<Long> costIds2 = Arrays.asList(costIds); // List<Long> costIds2 = Arrays.asList(costIds);
//
LambdaQueryWrapper<VtbVerification> lqw = new LambdaQueryWrapper<>(); // LambdaQueryWrapper<VtbVerification> lqw = new LambdaQueryWrapper<>();
lqw.in(VtbVerification::getCostApplyId,costIds2); // lqw.in(VtbVerification::getCostApplyId,costIds2);
lqw.select(VtbVerification::getId); // lqw.select(VtbVerification::getId);
List<VtbVerification> vtbVerificationList = vtbVerificationService.list(lqw); // List<VtbVerification> vtbVerificationList = vtbVerificationService.list(lqw);
for (VtbVerification verification : vtbVerificationList) { // for (VtbVerification verification : vtbVerificationList) {
vtbVerificationService.successCommit(verification.getId(),false); // vtbVerificationService.successCommit(verification.getId(),false);
} // }
return R.ok(); // return R.ok();
} // }
@GetMapping("delErp") @GetMapping("delErp")
public R<?> a(String checkCode){ public R<?> a(String checkCode){

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

@ -35,6 +35,11 @@ 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") @Select("select COALESCE(sum(amount),0) from vtb_verification where del_flag = 0 and activity_id = #{activityId} and verification_state = 1")
BigDecimal totalActivityVerification(@Param("activityId")String activityId); BigDecimal totalActivityVerification(@Param("activityId")String activityId);
@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);
@InterceptorIgnore(tenantLine = "true") @InterceptorIgnore(tenantLine = "true")
@Select("SELECT verification_code FROM `vtb_verification`" + @Select("SELECT verification_code FROM `vtb_verification`" +
" where verification_code like 'HX%'" + " where verification_code like 'HX%'" +

7
cms-modules/cms-system/src/main/java/com/qs/serve/modules/vtb/service/VtbVerificationApplication.java

@ -138,7 +138,7 @@ public class VtbVerificationApplication {
if(result.getData().equals("next")){ if(result.getData().equals("next")){
summeryResult = "next"; summeryResult = "next";
} }
VerificationUtil.startLog(stopWatch,"成功回调"); VerificationUtil.startLog(stopWatch,"致远请求成功回调");
R r = commitAffairSuccess(affairCommit, verification, isBackCommit, summeryResult); R r = commitAffairSuccess(affairCommit, verification, isBackCommit, summeryResult);
VerificationUtil.stop(stopWatch); VerificationUtil.stop(stopWatch);
VerificationUtil.startLog(stopWatch,"异步更新冻结状态"); VerificationUtil.startLog(stopWatch,"异步更新冻结状态");
@ -417,7 +417,7 @@ public class VtbVerificationApplication {
vtbVerificationService.release(verification.getActivityId(),sysUser.getCode(),false); vtbVerificationService.release(verification.getActivityId(),sysUser.getCode(),false);
} }
}else { }else {
//更新金额 //没有完成记录金额走下一轮提交
VtbVerification vtbVer = new VtbVerification(); VtbVerification vtbVer = new VtbVerification();
vtbVer.setId(verification.getId()); vtbVer.setId(verification.getId());
vtbVer.setAmount(totalAmount); vtbVer.setAmount(totalAmount);
@ -442,7 +442,8 @@ public class VtbVerificationApplication {
} }
//刷新活动金额 //刷新活动金额
TbsActivity activity = tbsActivityService.getById(verification.getActivityId()); TbsActivity activity = tbsActivityService.getById(verification.getActivityId());
BigDecimal totalUsed = activity.getUsedAmount().add(totalAmount); BigDecimal activityLastUsed = verificationMapper.totalActivityVerification(verification.getActivityId()+"",verification.getId()+"");
BigDecimal totalUsed = activityLastUsed.add(totalAmount);
TbsActivity activity4Upd = new TbsActivity(); TbsActivity activity4Upd = new TbsActivity();
activity4Upd.setId(activity.getId()); activity4Upd.setId(activity.getId());
activity4Upd.setUsedAmount(totalUsed); activity4Upd.setUsedAmount(totalUsed);

13
cms-modules/cms-system/src/main/java/com/qs/serve/modules/vtb/service/impl/VtbVerificationServiceImpl.java

@ -72,6 +72,7 @@ import com.qs.serve.modules.vtb.service.*;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.NotNull;
import org.springframework.dao.DeadlockLoserDataAccessException;
import org.springframework.scheduling.annotation.EnableAsync; import org.springframework.scheduling.annotation.EnableAsync;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
@ -1624,10 +1625,8 @@ public class VtbVerificationServiceImpl extends ServiceImpl<VtbVerificationMappe
} }
@Override @Override
@Transactional(rollbackFor = Exception.class)
public void successCommit(Long verificationId) { public void successCommit(Long verificationId) {
this.successCommit(verificationId,true); this.successCommit(verificationId,true);
} }
/** /**
@ -1645,6 +1644,7 @@ public class VtbVerificationServiceImpl extends ServiceImpl<VtbVerificationMappe
List<Long> centerGoodsIds = activityCenterGoodsOfSubject.stream().map(TbsActivityCenterGoods::getId).collect(Collectors.toList()); List<Long> centerGoodsIds = activityCenterGoodsOfSubject.stream().map(TbsActivityCenterGoods::getId).collect(Collectors.toList());
List<AmountDTO> lastUsedList = vtbFundFlowMapper.listActivityCenterGoodsUsed(centerGoodsIds); List<AmountDTO> lastUsedList = vtbFundFlowMapper.listActivityCenterGoodsUsed(centerGoodsIds);
//统计不匹配金额 //统计不匹配金额
List<TbsActivityCenterGoods> centerGoodsUpdates = new ArrayList<>();
for (int i = 0; i < activityCenterGoodsOfSubject.size(); i++) { for (int i = 0; i < activityCenterGoodsOfSubject.size(); i++) {
TbsActivityCenterGoods centerGoods = activityCenterGoodsOfSubject.get(i); TbsActivityCenterGoods centerGoods = activityCenterGoodsOfSubject.get(i);
BigDecimal currentTimeAmount; BigDecimal currentTimeAmount;
@ -1673,7 +1673,7 @@ public class VtbVerificationServiceImpl extends ServiceImpl<VtbVerificationMappe
TbsActivityCenterGoods updateCenterGoods = new TbsActivityCenterGoods(); TbsActivityCenterGoods updateCenterGoods = new TbsActivityCenterGoods();
updateCenterGoods.setId(centerGoods.getId()); updateCenterGoods.setId(centerGoods.getId());
updateCenterGoods.setUsedAmount(centerGoods.getUsedAmount()); updateCenterGoods.setUsedAmount(centerGoods.getUsedAmount());
activityCenterGoodsService.updateById(updateCenterGoods); centerGoodsUpdates.add(updateCenterGoods);
VtbFundFlow fundFlow = CopierUtil.copy(centerGoods,new VtbFundFlow()); VtbFundFlow fundFlow = CopierUtil.copy(centerGoods,new VtbFundFlow());
fundFlow.setId(null); fundFlow.setId(null);
@ -1684,6 +1684,13 @@ public class VtbVerificationServiceImpl extends ServiceImpl<VtbVerificationMappe
addFundFlowListOfSubject.add(fundFlow); addFundFlowListOfSubject.add(fundFlow);
} }
addFundFlowList.addAll(addFundFlowListOfSubject); addFundFlowList.addAll(addFundFlowListOfSubject);
if (!centerGoodsUpdates.isEmpty()){
try {
activityCenterGoodsService.updateBatchById(centerGoodsUpdates);
} catch (DeadlockLoserDataAccessException e) {
log.warn("检测到死锁,先忽略在修复程序回调更新金额: {}", e.getMessage());
}
}
} }

Loading…
Cancel
Save