## 结算失败补偿处理日结明细;
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
|
* 根据会员查询会员上的所有网体, 按照pkParent作为key
|
||||||
|
|
|
||||||
|
|
@ -44,9 +44,11 @@ public class CuMemberRetailRangeServiceImpl extends ServiceImpl<CuMemberRetailRa
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void mergeMemberRetailRangeDetailByYesterday(String detailTableName, String yesterdayDetailTableName) {
|
public void mergeMemberRetailRangeDetailByYesterday(String detailTableName, String yesterdayDetailTableName, Boolean isClear) {
|
||||||
// 清空当前明细表
|
if (isClear) {
|
||||||
iCuMemberTreeService.truncateCuMemberTreeTable(detailTableName);
|
// 清空当前明细表
|
||||||
|
iCuMemberTreeService.truncateCuMemberTreeTable(detailTableName);
|
||||||
|
}
|
||||||
// 用昨天的数据初始化当前明细表
|
// 用昨天的数据初始化当前明细表
|
||||||
baseMapper.mergeMemberRetailRangeDetailByYesterday(detailTableName, yesterdayDetailTableName);
|
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.param.MemberAchieveParam;
|
||||||
import com.hzs.bonus.achieve.service.ICuMemberRetailDetailService;
|
import com.hzs.bonus.achieve.service.ICuMemberRetailDetailService;
|
||||||
import com.hzs.bonus.achieve.service.ICuMemberRetailRangeService;
|
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.base.service.ICuMemberService;
|
||||||
import com.hzs.bonus.bonus.dto.BonusStageData;
|
import com.hzs.bonus.bonus.dto.BonusStageData;
|
||||||
import com.hzs.bonus.bonus.service.ICuMemberBonusStageService;
|
import com.hzs.bonus.bonus.service.ICuMemberBonusStageService;
|
||||||
|
|
@ -55,6 +56,8 @@ public class BonusSettleRangeHandle extends BonusSettleHandle {
|
||||||
private ICuMemberService iCuMemberService;
|
private ICuMemberService iCuMemberService;
|
||||||
@Autowired
|
@Autowired
|
||||||
private IBonusOrderService iBonusOrderService;
|
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.mergeMemberRetailRangeByYesterday(rangeTableName, yesterdayRangeTableName, isSameMonth);
|
||||||
// 初始化结算明细数据(昨天数据更新到今天数据)
|
// 初始化结算明细数据(昨天数据更新到今天数据)
|
||||||
iCuMemberRetailRangeService.mergeMemberRetailRangeDetailByYesterday(rangeDetailTableName, yesterdayRangeDetailTableName);
|
iCuMemberRetailRangeService.mergeMemberRetailRangeDetailByYesterday(rangeDetailTableName, yesterdayRangeDetailTableName, true);
|
||||||
|
|
||||||
// 升阶段点位列表
|
// 升阶段点位列表
|
||||||
List<CuMemberRetailDetail> stageList = new ArrayList<>();
|
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.bean.BeanUtil;
|
||||||
import cn.hutool.core.collection.CollectionUtil;
|
import cn.hutool.core.collection.CollectionUtil;
|
||||||
import cn.hutool.core.util.ObjectUtil;
|
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.ICuMemberRetailRangeService;
|
||||||
import com.hzs.bonus.achieve.service.ICuMemberSettlePeriodService;
|
import com.hzs.bonus.achieve.service.ICuMemberSettlePeriodService;
|
||||||
import com.hzs.bonus.base.service.ICuMemberService;
|
import com.hzs.bonus.base.service.ICuMemberService;
|
||||||
|
|
@ -29,7 +28,6 @@ import org.springframework.transaction.annotation.Transactional;
|
||||||
|
|
||||||
import java.time.temporal.ChronoUnit;
|
import java.time.temporal.ChronoUnit;
|
||||||
import java.util.*;
|
import java.util.*;
|
||||||
import java.util.stream.Collectors;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 奖金结算服务类
|
* 奖金结算服务类
|
||||||
|
|
@ -64,7 +62,6 @@ public class BonusSettleServiceImpl implements IBonusSettleService {
|
||||||
@Autowired
|
@Autowired
|
||||||
private ICuMemberService iCuMemberService;
|
private ICuMemberService iCuMemberService;
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 保存会员奖金
|
* 保存会员奖金
|
||||||
*
|
*
|
||||||
|
|
@ -84,12 +81,14 @@ 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 = null;
|
||||||
|
Integer yesterdayPeriod = null;
|
||||||
try {
|
try {
|
||||||
// 结算期间
|
// 结算期间
|
||||||
Integer period = iCuMemberSettlePeriodService.getCuMemberSettlePeriodByDate(settleDate).getPkId();
|
period = iCuMemberSettlePeriodService.getCuMemberSettlePeriodByDate(settleDate).getPkId();
|
||||||
String yesterday = DateUtils.beforeDateStr(1, ChronoUnit.DAYS, DateUtils.YYYY_MM_DD, settleDate);
|
String yesterday = DateUtils.beforeDateStr(1, ChronoUnit.DAYS, DateUtils.YYYY_MM_DD, settleDate);
|
||||||
// 结算期间前一天期间
|
// 结算期间前一天期间
|
||||||
Integer yesterdayPeriod = iCuMemberSettlePeriodService.getCuMemberSettlePeriodByDate(yesterday).getPkId();
|
yesterdayPeriod = iCuMemberSettlePeriodService.getCuMemberSettlePeriodByDate(yesterday).getPkId();
|
||||||
|
|
||||||
// 获取所有国家的奖金项 key = 国家 + 奖金项的值
|
// 获取所有国家的奖金项 key = 国家 + 奖金项的值
|
||||||
BonusConfigDTO bonusConfigDTO = iBonusItemsServiceApi.queryBonusConfigDTO().getData();
|
BonusConfigDTO bonusConfigDTO = iBonusItemsServiceApi.queryBonusConfigDTO().getData();
|
||||||
|
|
@ -107,6 +106,9 @@ 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);
|
||||||
}
|
}
|
||||||
|
|
@ -181,7 +183,7 @@ public class BonusSettleServiceImpl implements IBonusSettleService {
|
||||||
Integer updateType = null;
|
Integer updateType = null;
|
||||||
String symbol = orderExt.getCancelBool() ? "-" : "+";
|
String symbol = orderExt.getCancelBool() ? "-" : "+";
|
||||||
if (orderExt.getOrderType().equals(EOrderType.RETAIL_REGISTER.getValue())
|
if (orderExt.getOrderType().equals(EOrderType.RETAIL_REGISTER.getValue())
|
||||||
|| orderExt.getOrderType().equals(EOrderType.RETAIL_UPGRADE.getValue())
|
|| orderExt.getOrderType().equals(EOrderType.RETAIL_UPGRADE.getValue())
|
||||||
) {
|
) {
|
||||||
updateType = 1;
|
updateType = 1;
|
||||||
} else if (orderExt.getOrderType().equals(EOrderType.RETAIL_REPURCHASE.getValue())) {
|
} else if (orderExt.getOrderType().equals(EOrderType.RETAIL_REPURCHASE.getValue())) {
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue