## 结算失败补偿处理日结明细;
This commit is contained in:
parent
6bf2125a18
commit
c68c8de0f5
|
|
@ -25,7 +25,7 @@ public interface ICuMemberRetailRangeService extends IService<CuMemberRetailRang
|
|||
/**
|
||||
* 将昨天的结算明细迁移到今天
|
||||
*/
|
||||
void mergeMemberRetailRangeDetailByYesterday(String detailTableName, String yesterdayDetailTableName);
|
||||
void mergeMemberRetailRangeDetailByYesterday(String detailTableName, String yesterdayDetailTableName, Boolean isClear);
|
||||
|
||||
/**
|
||||
* 根据会员查询会员上的所有网体, 按照pkParent作为key
|
||||
|
|
|
|||
|
|
@ -44,9 +44,11 @@ public class CuMemberRetailRangeServiceImpl extends ServiceImpl<CuMemberRetailRa
|
|||
}
|
||||
|
||||
@Override
|
||||
public void mergeMemberRetailRangeDetailByYesterday(String detailTableName, String yesterdayDetailTableName) {
|
||||
public void mergeMemberRetailRangeDetailByYesterday(String detailTableName, String yesterdayDetailTableName, Boolean isClear) {
|
||||
if (isClear) {
|
||||
// 清空当前明细表
|
||||
iCuMemberTreeService.truncateCuMemberTreeTable(detailTableName);
|
||||
}
|
||||
// 用昨天的数据初始化当前明细表
|
||||
baseMapper.mergeMemberRetailRangeDetailByYesterday(detailTableName, yesterdayDetailTableName);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -4,6 +4,7 @@ import cn.hutool.core.collection.CollectionUtil;
|
|||
import com.hzs.bonus.achieve.param.MemberAchieveParam;
|
||||
import com.hzs.bonus.achieve.service.ICuMemberRetailDetailService;
|
||||
import com.hzs.bonus.achieve.service.ICuMemberRetailRangeService;
|
||||
import com.hzs.bonus.achieve.service.ICuMemberSettlePeriodService;
|
||||
import com.hzs.bonus.base.service.ICuMemberService;
|
||||
import com.hzs.bonus.bonus.dto.BonusStageData;
|
||||
import com.hzs.bonus.bonus.service.ICuMemberBonusStageService;
|
||||
|
|
@ -55,6 +56,8 @@ public class BonusSettleRangeHandle extends BonusSettleHandle {
|
|||
private ICuMemberService iCuMemberService;
|
||||
@Autowired
|
||||
private IBonusOrderService iBonusOrderService;
|
||||
@Autowired
|
||||
private ICuMemberSettlePeriodService iCuMemberSettlePeriodService;
|
||||
|
||||
/**
|
||||
* 秒结:
|
||||
|
|
@ -251,6 +254,26 @@ public class BonusSettleRangeHandle extends BonusSettleHandle {
|
|||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 补偿日结明细
|
||||
*/
|
||||
void compensationRetailDetail(Integer period, Integer yesterdayPeriod, String settleDate) {
|
||||
if (period == null || yesterdayPeriod == null) {
|
||||
// 结算期间
|
||||
period = iCuMemberSettlePeriodService.getCuMemberSettlePeriodByDate(settleDate).getPkId();
|
||||
String yesterday = DateUtils.beforeDateStr(1, ChronoUnit.DAYS, DateUtils.YYYY_MM_DD, settleDate);
|
||||
// 结算期间前一天期间
|
||||
yesterdayPeriod = iCuMemberSettlePeriodService.getCuMemberSettlePeriodByDate(yesterday).getPkId();
|
||||
}
|
||||
|
||||
// 结算明细表
|
||||
String rangeDetailTableName = TableNameConstants.CU_MEMBER_RETAIL_RANGE_DETAIL + period;
|
||||
// 结算明细前一天表
|
||||
String yesterdayRangeDetailTableName = TableNameConstants.CU_MEMBER_RETAIL_RANGE_DETAIL + yesterdayPeriod;
|
||||
// 初始化结算明细数据(昨天数据更新到今天数据)
|
||||
iCuMemberRetailRangeService.mergeMemberRetailRangeDetailByYesterday(rangeDetailTableName, yesterdayRangeDetailTableName, false);
|
||||
}
|
||||
|
||||
/**
|
||||
* 日结:
|
||||
* 计算奖金,直推、阶段、级差、平级收益
|
||||
|
|
@ -279,7 +302,7 @@ public class BonusSettleRangeHandle extends BonusSettleHandle {
|
|||
// 初始化结算网体数据(昨天数据更新到今天数据)
|
||||
iCuMemberRetailRangeService.mergeMemberRetailRangeByYesterday(rangeTableName, yesterdayRangeTableName, isSameMonth);
|
||||
// 初始化结算明细数据(昨天数据更新到今天数据)
|
||||
iCuMemberRetailRangeService.mergeMemberRetailRangeDetailByYesterday(rangeDetailTableName, yesterdayRangeDetailTableName);
|
||||
iCuMemberRetailRangeService.mergeMemberRetailRangeDetailByYesterday(rangeDetailTableName, yesterdayRangeDetailTableName, true);
|
||||
|
||||
// 升阶段点位列表
|
||||
List<CuMemberRetailDetail> stageList = new ArrayList<>();
|
||||
|
|
|
|||
|
|
@ -3,7 +3,6 @@ package com.hzs.bonus.bonus.service.impl;
|
|||
import cn.hutool.core.bean.BeanUtil;
|
||||
import cn.hutool.core.collection.CollectionUtil;
|
||||
import cn.hutool.core.util.ObjectUtil;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.hzs.bonus.achieve.service.ICuMemberRetailRangeService;
|
||||
import com.hzs.bonus.achieve.service.ICuMemberSettlePeriodService;
|
||||
import com.hzs.bonus.base.service.ICuMemberService;
|
||||
|
|
@ -29,7 +28,6 @@ import org.springframework.transaction.annotation.Transactional;
|
|||
|
||||
import java.time.temporal.ChronoUnit;
|
||||
import java.util.*;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
* 奖金结算服务类
|
||||
|
|
@ -64,7 +62,6 @@ public class BonusSettleServiceImpl implements IBonusSettleService {
|
|||
@Autowired
|
||||
private ICuMemberService iCuMemberService;
|
||||
|
||||
|
||||
/**
|
||||
* 保存会员奖金
|
||||
*
|
||||
|
|
@ -84,12 +81,14 @@ public class BonusSettleServiceImpl implements IBonusSettleService {
|
|||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public void calculateCuMemberBonus(String settleDate) {
|
||||
Integer period = null;
|
||||
Integer yesterdayPeriod = null;
|
||||
try {
|
||||
// 结算期间
|
||||
Integer period = iCuMemberSettlePeriodService.getCuMemberSettlePeriodByDate(settleDate).getPkId();
|
||||
period = iCuMemberSettlePeriodService.getCuMemberSettlePeriodByDate(settleDate).getPkId();
|
||||
String yesterday = DateUtils.beforeDateStr(1, ChronoUnit.DAYS, DateUtils.YYYY_MM_DD, settleDate);
|
||||
// 结算期间前一天期间
|
||||
Integer yesterdayPeriod = iCuMemberSettlePeriodService.getCuMemberSettlePeriodByDate(yesterday).getPkId();
|
||||
yesterdayPeriod = iCuMemberSettlePeriodService.getCuMemberSettlePeriodByDate(yesterday).getPkId();
|
||||
|
||||
// 获取所有国家的奖金项 key = 国家 + 奖金项的值
|
||||
BonusConfigDTO bonusConfigDTO = iBonusItemsServiceApi.queryBonusConfigDTO().getData();
|
||||
|
|
@ -107,6 +106,9 @@ 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);
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue