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

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

@ -10,9 +10,9 @@ public interface IBonusSettleService {
/** /**
* 计算会员奖金 * 计算会员奖金
* *
* @param date 结算日期 * @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 * @param orderExt
*/ */
void calculateCuMemberRetailRangeBySaOrder(SaOrderExt orderExt); void calculateCuMemberRetailRangeBySaOrder(SaOrderExt orderExt);

View File

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

View File

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