## 奖金结算添加明细表补偿处理;

This commit is contained in:
cabbage 2025-10-29 16:51:27 +08:00
parent 248236442c
commit 8d160c34db
3 changed files with 22 additions and 16 deletions

View File

@ -12,7 +12,7 @@ public interface IBonusSettleService {
*
* @param date 结算日期
*/
void calculateCuMemberBonus(String date);
void calculateCuMemberBonus(String date, Integer period, String yesterday, Integer yesterdayPeriod);
/**
* 根据订单计算新零售奖金
@ -21,6 +21,7 @@ public interface IBonusSettleService {
/**
* 计算秒结表数据
*
* @param orderExt
*/
void calculateCuMemberRetailRangeBySaOrder(SaOrderExt orderExt);

View File

@ -80,16 +80,8 @@ public class BonusSettleServiceImpl implements IBonusSettleService {
@Override
@Transactional(rollbackFor = Exception.class)
public void calculateCuMemberBonus(String settleDate) {
Integer period = null;
Integer yesterdayPeriod = null;
public void calculateCuMemberBonus(String settleDate, Integer period, String yesterday, Integer yesterdayPeriod) {
try {
// 结算期间
period = iCuMemberSettlePeriodService.getCuMemberSettlePeriodByDate(settleDate).getPkId();
String yesterday = DateUtils.beforeDateStr(1, ChronoUnit.DAYS, DateUtils.YYYY_MM_DD, settleDate);
// 结算期间前一天期间
yesterdayPeriod = iCuMemberSettlePeriodService.getCuMemberSettlePeriodByDate(yesterday).getPkId();
// 获取所有国家的奖金项 key = 国家 + 奖金项的值
BonusConfigDTO bonusConfigDTO = iBonusItemsServiceApi.queryBonusConfigDTO().getData();
// 会员奖金mapkey:会员ID
@ -106,9 +98,6 @@ public class BonusSettleServiceImpl implements IBonusSettleService {
// 保存当日计算的奖金
insertCuMemberBonus(settleDate, period, cuMemberBonusMap, recordDetailVO);
} catch (Exception e) {
// 因为日结明细用的是直接清表所以如果执行失败先拿昨天的去填充防止前台没数据
bonusSettleRangeHandle.compensationRetailDetail(period, yesterdayPeriod, settleDate);
log.error("奖金结算异常", e);
throw new RuntimeException(e);
}

View File

@ -54,6 +54,8 @@ public class CuMemberBonusServiceImpl extends ServiceImpl<CuMemberBonusMapper, C
@Autowired
private ICuMemberSettlePeriodService iCuMemberSettlePeriodService;
@Autowired
private BonusSettleRangeHandle bonusSettleRangeHandle;
@Resource
private CuMemberBonusDetailMapper cuMemberBonusDetailMapper;
@ -535,8 +537,22 @@ public class CuMemberBonusServiceImpl extends ServiceImpl<CuMemberBonusMapper, C
// 自动初始化表
cuMemberTreeService.createCuMemberTree(settleDate);
log.info("初始化表完成");
// 结算期间
Integer period = iCuMemberSettlePeriodService.getCuMemberSettlePeriodByDate(settleDate).getPkId();
// 前一天
String yesterday = DateUtils.beforeDateStr(1, ChronoUnit.DAYS, DateUtils.YYYY_MM_DD, settleDate);
// 前一天结算期间
Integer yesterdayPeriod = iCuMemberSettlePeriodService.getCuMemberSettlePeriodByDate(yesterday).getPkId();
try {
// 奖金结算
bonusSettleService.calculateCuMemberBonus(settleDate);
bonusSettleService.calculateCuMemberBonus(settleDate, period, yesterday, yesterdayPeriod);
} catch (Exception e) {
// 因为日结明细用的是直接清表所以如果执行失败拿昨天的去填充防止前台没数据
bonusSettleRangeHandle.compensationRetailDetail(period, yesterdayPeriod, settleDate);
}
return Boolean.TRUE;
}