## 调整创建语句结构;

This commit is contained in:
cabbage 2025-04-12 10:23:31 +08:00
parent 1ff34e7da2
commit c26c7f59e7
10 changed files with 232 additions and 163 deletions

View File

@ -265,7 +265,7 @@ public interface CuMemberTreeMapper extends BaseMapper<CuMemberTree> {
List<CuMemberSettleExt> queryExemptCuMemberSettle(String tableName); List<CuMemberSettleExt> queryExemptCuMemberSettle(String tableName);
/** /**
* 查询出符合下一等级足够业绩的会员 * 查询出符合下一奖衔足够业绩的会员
* *
* @param settleTableName 结算表 * @param settleTableName 结算表
* @return: List<CuMemberSettleExt> * @return: List<CuMemberSettleExt>

View File

@ -173,7 +173,7 @@ public interface ICuMemberTreeService extends IService<CuMemberTree> {
List<CuMemberSettleExt> queryExemptCuMemberSettle(String tableName); List<CuMemberSettleExt> queryExemptCuMemberSettle(String tableName);
/** /**
* 查询出符合下一等级足够业绩的会员 * 查询出符合下一奖衔足够业绩的会员
* *
* @param settleTableName 结算表 * @param settleTableName 结算表
* @return: List<CuMemberSettleExt> * @return: List<CuMemberSettleExt>

View File

@ -1,6 +1,7 @@
package com.hzs.bonus.bonus.service.impl; package com.hzs.bonus.bonus.service.impl;
import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.collection.CollectionUtil;
import com.hzs.bonus.achieve.param.MemberAchieveParam;
import com.hzs.bonus.achieve.service.ICuMemberSettlePeriodService; import com.hzs.bonus.achieve.service.ICuMemberSettlePeriodService;
import com.hzs.bonus.achieve.service.ICuMemberTreeService; import com.hzs.bonus.achieve.service.ICuMemberTreeService;
import com.hzs.bonus.detail.service.ICuMemberAssessService; import com.hzs.bonus.detail.service.ICuMemberAssessService;
@ -1072,6 +1073,49 @@ public abstract class BonusSettleHandle {
} }
} }
/**
* @param orderExtList 订单列表
* @Description: 根据订单分类分为首购复购真实获取新增业绩
* @return: void
* @Author: sui q
* @Date: 2022/11/2 11:24
*/
public void assortSaOrder(Map<Long, MemberAchieveParam> cuMemberAchieveHashMap, List<SaOrderExt> orderExtList, BonusConfigDTO bonusConfigDTO, Boolean isFirst) {
// 注册+升级 首购
// 注册+升级其他 复购
// 首购+复购 = 真实
for (SaOrderExt saOrderExt : orderExtList) {
MemberAchieveParam cuMemberAchieve;
if (cuMemberAchieveHashMap.containsKey(saOrderExt.getPkMember())) {
cuMemberAchieve = cuMemberAchieveHashMap.get(saOrderExt.getPkMember());
// 所有的都算真实业绩
} else {
cuMemberAchieve = MemberAchieveParam.builder()
.pkRate(saOrderExt.getPkRate())
.pkMember(saOrderExt.getPkMember())
.newAmount(BigDecimal.ZERO)
.newPv(BigDecimal.ZERO)
.repNewAmount(BigDecimal.ZERO)
.repNewPv(BigDecimal.ZERO)
.newRealAmount(BigDecimal.ZERO)
.newRealPv(BigDecimal.ZERO)
.build();
cuMemberAchieveHashMap.put(saOrderExt.getPkMember(), cuMemberAchieve);
}
if (isFirst) {
// 首购处理
cuMemberAchieve.setNewAmount(ComputeUtil.computeAdd(cuMemberAchieve.getNewAmount(), saOrderExt.getOrderAmount()));
cuMemberAchieve.setNewPv(ComputeUtil.computeAdd(cuMemberAchieve.getNewPv(), saOrderExt.getOrderAchieve()));
} else {
// 非首购处理
cuMemberAchieve.setRepNewAmount(ComputeUtil.computeAdd(cuMemberAchieve.getRepNewAmount(), saOrderExt.getOrderAmount()));
cuMemberAchieve.setRepNewPv(ComputeUtil.computeAdd(cuMemberAchieve.getRepNewPv(), saOrderExt.getOrderAchieve()));
}
cuMemberAchieve.setNewRealAmount(ComputeUtil.computeAdd(cuMemberAchieve.getNewRealAmount(), saOrderExt.getOrderAmount()));
cuMemberAchieve.setNewRealPv(ComputeUtil.computeAdd(cuMemberAchieve.getNewRealPv(), saOrderExt.getOrderAchieve()));
}
}
/** /**
* 处理汇率 * 处理汇率
* *

View File

@ -4,6 +4,7 @@ import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.collection.CollectionUtil;
import cn.hutool.json.JSONUtil; import cn.hutool.json.JSONUtil;
import com.hzs.activity.pick.IAcPickServiceApi; import com.hzs.activity.pick.IAcPickServiceApi;
import com.hzs.bonus.achieve.param.MemberAchieveParam;
import com.hzs.bonus.achieve.service.ICuMemberAchieveService; import com.hzs.bonus.achieve.service.ICuMemberAchieveService;
import com.hzs.bonus.achieve.service.ICuMemberRangeService; import com.hzs.bonus.achieve.service.ICuMemberRangeService;
import com.hzs.bonus.achieve.service.ICuMemberSettlePeriodService; import com.hzs.bonus.achieve.service.ICuMemberSettlePeriodService;
@ -416,10 +417,6 @@ public class BonusSettleServiceImpl implements IBonusSettleService {
//********************************* 更新当天最新的业绩*************************/ //********************************* 更新当天最新的业绩*************************/
// 获取所有国家的奖金项 key = 国家 + 奖金项的值 // 获取所有国家的奖金项 key = 国家 + 奖金项的值
BonusConfigDTO bonusConfigDTO = bonusItemsServiceApi.queryBonusConfigDTO().getData(); BonusConfigDTO bonusConfigDTO = bonusItemsServiceApi.queryBonusConfigDTO().getData();
// Map<Long, MemberAchieveParam> cuMemberAchieveHashMap = new HashMap<>();
// bonusSettlePurchaseHandle.assortSaOrder(cuMemberAchieveHashMap, firPurchaseOrderList, bonusConfigDTO, Boolean.TRUE);
// bonusSettlePurchaseHandle.assortSaOrder(cuMemberAchieveHashMap, repurchaseOrderList, bonusConfigDTO, Boolean.FALSE);
// cuMemberTreeService.updateCuMemberSettle(cuMemberAchieveHashMap, currentSettleTableName);
//*********************************计算奖衔 更新奖衔*********************************/ //*********************************计算奖衔 更新奖衔*********************************/
// 开始计算奖衔 计算奖衔 更新奖衔根据最新业绩查询变动且业绩满足下一等级根据等级判断是否满足考核安置考核或血缘考核 // 开始计算奖衔 计算奖衔 更新奖衔根据最新业绩查询变动且业绩满足下一等级根据等级判断是否满足考核安置考核或血缘考核
@ -427,10 +424,15 @@ public class BonusSettleServiceImpl implements IBonusSettleService {
// 获取到奖衔配置 // 获取到奖衔配置
// a)更新会员表 // a)更新会员表
// b)更新结算网体表 (月表日表) // b)更新结算网体表 (月表日表)
Map<Long, MemberAchieveParam> cuMemberAchieveHashMap = new HashMap<>();
bonusSettlePurchaseHandle.assortSaOrder(cuMemberAchieveHashMap, firPurchaseOrderList, bonusConfigDTO, Boolean.TRUE);
bonusSettlePurchaseHandle.assortSaOrder(cuMemberAchieveHashMap, repurchaseOrderList, bonusConfigDTO, Boolean.FALSE);
cuMemberTreeService.updateCuMemberSettle(cuMemberAchieveHashMap, currentSettleTableName);
// c)增加奖衔记录表 // c)增加奖衔记录表
// cuMemberAwardsService.calculateCuMemberAwards(settleDate, awardsMap, currentSettleTableName); cuMemberAwardsService.calculateCuMemberAwards(settleDate, awardsMap, currentSettleTableName);
// 计算完奖衔回退业绩最终根据新增进行回写 // 计算完奖衔回退业绩最终根据新增进行回写
// cuMemberTreeService.updateCuMemberBackSettle(cuMemberAchieveHashMap, currentSettleTableName); cuMemberTreeService.updateCuMemberBackSettle(cuMemberAchieveHashMap, currentSettleTableName);
//********************************重新考核*********************************/ //********************************重新考核*********************************/
// TODO new 乐学没有分红复购考核这个位置需要去掉 // TODO new 乐学没有分红复购考核这个位置需要去掉
@ -452,19 +454,20 @@ public class BonusSettleServiceImpl implements IBonusSettleService {
// 计算复购券 // 计算复购券
calculateRepurchaseCoupons(DateUtils.parseDate(settleDate), firPurchaseOrderList, period, bonusConfigDTO, cuMemberBonusMap, calculateRepurchaseCoupons(DateUtils.parseDate(settleDate), firPurchaseOrderList, period, bonusConfigDTO, cuMemberBonusMap,
recordDetailVO, cuMemberSettleExtMap); recordDetailVO, cuMemberSettleExtMap);
// 计算乐享订单奖金按照订单进行日结 // 计算乐享订单奖金按照订单进行日结
// 增加判断是否相同月相同月的话昨天的考核结果更新到今天 // 增加判断是否相同月相同月的话昨天的考核结果更新到今天
Boolean isSameMonth = DateUtils.getMonth(settleDate).equals(DateUtils.getMonth(yesterday)); Boolean isSameMonth = DateUtils.getMonth(settleDate).equals(DateUtils.getMonth(yesterday));
// 乐享奖金 // 乐享奖金
bonusSettleRangeHandle.calculateLeEnjoyBonusBySaOrder(cuMemberBonusMap, bonusConfigDTO, recordDetailVO, bonusSettleRangeHandle.calculateLeEnjoyBonusBySaOrder(cuMemberBonusMap, bonusConfigDTO, recordDetailVO,
period, yesterdayPeriod, isSameMonth); period, yesterdayPeriod, isSameMonth);
// 计算新零售团队奖金 // // 计算新零售团队奖金
// bonusSettleRangeHandle.calculateRetailBonusBySaOrder(settleDate, cuMemberBonusMap, bonusConfigDTO, recordDetailVO, // bonusSettleRangeHandle.calculateRetailBonusBySaOrder(settleDate, cuMemberBonusMap, bonusConfigDTO, recordDetailVO,
// period, yesterdayPeriod, retailOrderList, isSameMonth); // period, yesterdayPeriod, retailOrderList, isSameMonth);
// 验证是否月奖验证是否是结算月底那一天月底那一天计算云代判断是否为月底
// 验证是否月奖验证是否是结算月底那一天月底那一天计算云代判断是否为月底
//*********************************计算云代奖金、 复购券均分收益************************/ //*********************************计算云代奖金、 复购券均分收益************************/
// TODO new 云代复购券均分分红暂时不处理 // // TODO new 云代复购券均分分红暂时不处理
// if (settleDate.endsWith("10")) { // if (settleDate.endsWith("10")) {
// // 计算云代奖金复购券均分 // // 计算云代奖金复购券均分
// calculateCloudAgentOrder(settleDate, bonusConfigDTO, period, recordDetailVO, cuMemberBonusMap); // calculateCloudAgentOrder(settleDate, bonusConfigDTO, period, recordDetailVO, cuMemberBonusMap);
@ -473,17 +476,18 @@ public class BonusSettleServiceImpl implements IBonusSettleService {
// calculateShareBonus(settleDate, bonusConfigDTO, period, recordDetailVO, cuMemberBonusMap, cuAwardsControlMap); // calculateShareBonus(settleDate, bonusConfigDTO, period, recordDetailVO, cuMemberBonusMap, cuAwardsControlMap);
// } // }
// // 计算店铺奖金 // // 计算店铺奖金
// if(settleDate.endsWith("10")){ // if (settleDate.endsWith("10")) {
// calculateStoreOrder(settleDate, bonusConfigDTO, period, recordDetailVO, cuMemberBonusMap); // calculateStoreOrder(settleDate, bonusConfigDTO, period, recordDetailVO, cuMemberBonusMap);
// } // }
// // 计算实际分红奖金 // // 计算实际分红奖金
// if (settleDate.endsWith("10")) { // if (settleDate.endsWith("10")) {
// calculateShareBonus(settleDate, bonusConfigDTO, period, recordDetailVO, cuMemberBonusMap); // calculateShareBonus(settleDate, bonusConfigDTO, period, recordDetailVO, cuMemberBonusMap);
// } // }
// 计算全球积分车奖积分 // // 计算全球积分车奖积分
// 环球积分和车奖积分的规则有荣衔复购考核通过的10代不压缩以推荐+拓展+领导+分红为合计基数获取对应比例比例根据参数配置 // // 环球积分和车奖积分的规则有荣衔复购考核通过的10代不压缩以推荐+拓展+领导+分红为合计基数获取对应比例比例根据参数配置
// calculateGlobalCarBonus(cuMemberSettleExtMap, currentSettleTableName, settleDate, bonusConfigDTO, period, recordDetailVO, cuMemberBonusMap); // calculateGlobalCarBonus(cuMemberSettleExtMap, currentSettleTableName, settleDate, bonusConfigDTO, period, recordDetailVO, cuMemberBonusMap);
// 保存当日计算的奖金 // 保存当日计算的奖金
insertCuMemberBonus(settleDate, period, cuMemberBonusMap, recordDetailVO); insertCuMemberBonus(settleDate, period, cuMemberBonusMap, recordDetailVO);
// 处理血缘业绩统计伞下直推 // 处理血缘业绩统计伞下直推
@ -493,6 +497,7 @@ public class BonusSettleServiceImpl implements IBonusSettleService {
// 处理网体更新网体新增 轮次最小值 cuMemberSettleExtMap // 处理网体更新网体新增 轮次最小值 cuMemberSettleExtMap
cuMemberTreeService.updateCuMemberSettle(currentSettleTableName, cuMemberSettleExtMap); cuMemberTreeService.updateCuMemberSettle(currentSettleTableName, cuMemberSettleExtMap);
} }
// 每日进行甩网业绩按照条件降结算好的业绩甩到想应的会员那边 // 每日进行甩网业绩按照条件降结算好的业绩甩到想应的会员那边
List<CuMemberAchieveExt> retMemberAchieveExtList = execNetAchieve(period, settleDate, currentSettleTableName); List<CuMemberAchieveExt> retMemberAchieveExtList = execNetAchieve(period, settleDate, currentSettleTableName);
// 处理甩网数据 // 处理甩网数据
@ -509,21 +514,25 @@ public class BonusSettleServiceImpl implements IBonusSettleService {
// 当月第一天 // 当月第一天
Integer currentMonthFirstPeriod = cuMemberSettlePeriodService.getCuMemberSettlePeriodByDate(DateUtils.currentMonthFirstDateStr(DateUtils.parseStringToDate(settleDate))).getPkId(); Integer currentMonthFirstPeriod = cuMemberSettlePeriodService.getCuMemberSettlePeriodByDate(DateUtils.currentMonthFirstDateStr(DateUtils.parseStringToDate(settleDate))).getPkId();
cuMemberAwardsService.calculateCuMemberAwardsEveryMonth(currentMonthFirstPeriod, yesterdayPeriod, period, settleDate, beforeMonthTableName, awardsMap); cuMemberAwardsService.calculateCuMemberAwardsEveryMonth(currentMonthFirstPeriod, yesterdayPeriod, period, settleDate, beforeMonthTableName, awardsMap);
// 计算完当日奖金后根据业绩计算下月奖衔 // 计算完当日奖金后根据业绩计算下月奖衔
String afterDate = DateUtils.parseDateToStr(DateUtils.YYYY_MM_DD, currentDate); String afterDate = DateUtils.parseDateToStr(DateUtils.YYYY_MM_DD, currentDate);
if (afterDate.endsWith("01")) { if (afterDate.endsWith("01")) {
// TODO new 不是月奖衔每月初不更新月级差奖衔需要去掉
// String rangeTableName = TableNameConstants.CU_MEMBER_RANGE + period; // String rangeTableName = TableNameConstants.CU_MEMBER_RANGE + period;
// // 月第一天日期 // // 月第一天日期
// String monthFirstDate = DateUtils.currentMonthFirstDateStr(DateUtils.parseStringToDate(settleDate)); // String monthFirstDate = DateUtils.currentMonthFirstDateStr(DateUtils.parseStringToDate(settleDate));
// // 月第一天期数 // // 月第一天期数
// Integer startPeriod = cuMemberSettlePeriodService.getCuMemberSettlePeriodByDate(monthFirstDate).getPkId(); // Integer startPeriod = cuMemberSettlePeriodService.getCuMemberSettlePeriodByDate(monthFirstDate).getPkId();
// TODO new 不是月奖衔每月初不更新
// // 更新奖衔根据新结算的奖衔 // // 更新奖衔根据新结算的奖衔
// cuMemberTreeService.updateCuMemberAwardsBySettle(currentSettleTableName, rangeTableName, startPeriod, period); // cuMemberTreeService.updateCuMemberAwardsBySettle(currentSettleTableName, rangeTableName, startPeriod, period);
// TODO new 现在没有月考核是不是可以去掉
// 结算每月月末那一天都是先删除在新增重新考核 // 结算每月月末那一天都是先删除在新增重新考核
cuMemberTreeService.initCuMemberAssessData(settleDate); cuMemberTreeService.initCuMemberAssessData(settleDate);
// 更新奖衔考核结果 // 更新奖衔考核结果
cuMemberAwardsService.updateCuMemberAwardsExamine(currentDate, period); cuMemberAwardsService.updateCuMemberAwardsExamine(currentDate, period);
// 生成月表cu_member_month // 生成月表cu_member_month
String monthTableName = TableNameConstants.CU_MEMBER_MONTH + DateUtils.getMonth(afterDate); String monthTableName = TableNameConstants.CU_MEMBER_MONTH + DateUtils.getMonth(afterDate);
Integer number = cuMemberTreeService.queryExistOracleTable(monthTableName); Integer number = cuMemberTreeService.queryExistOracleTable(monthTableName);

View File

@ -9,9 +9,7 @@ import java.math.BigDecimal;
import java.util.List; import java.util.List;
/** /**
* <p>
* 会员信息-奖衔升级记录 Mapper 接口 * 会员信息-奖衔升级记录 Mapper 接口
* </p>
* *
* @author hzs * @author hzs
* @since 2022-08-31 * @since 2022-08-31
@ -29,39 +27,43 @@ public interface CuMemberAwardsMapper extends BaseMapper<CuMemberAwards> {
/** /**
* 批量更新会员奖衔记录此方法用于奖金结算批量更新为删除状态留存奖衔降级记录 * 批量更新会员奖衔记录此方法用于奖金结算批量更新为删除状态留存奖衔降级记录
*
* @param cuMemberAwardsList 更新的人 * @param cuMemberAwardsList 更新的人
* @param period 期间 * @param period 期间
* @return: Integer * @return: Integer
* @Author: sui q * @Author: sui q
* @Date: 2022/11/5 16:04 * @Date: 2022/11/5 16:04
*/ */
Integer updateBatchCuMemberAwards(@Param("cuMemberAwardsList") List<CuMemberAwards> cuMemberAwardsList, @Param("period") Integer period); Integer updateBatchCuMemberAwards(@Param("cuMemberAwardsList") List<CuMemberAwards> cuMemberAwardsList, @Param("period") Integer period);
/** /**
* 查询会员最后一条奖衔升级记录 * 查询会员最后一条奖衔升级记录
*
* @param cuMemberAwardsList 奖衔升级记录 * @param cuMemberAwardsList 奖衔升级记录
* @return: List<CuMemberAwards> * @return: List<CuMemberAwards>
* @Author: sui q * @Author: sui q
* @Date: 2022/11/5 15:28 * @Date: 2022/11/5 15:28
*/ */
List<CuMemberAwards> queryLastCuMemberAwards(@Param("cuMemberAwardsList") List<?> cuMemberAwardsList); List<CuMemberAwards> queryLastCuMemberAwards(@Param("cuMemberAwardsList") List<?> cuMemberAwardsList);
/** /**
* 删除自动升级的奖衔升级记录 * 删除自动升级的奖衔升级记录
*
* @param period 期间 * @param period 期间
* @return: Integer * @return: Integer
* @Author: sui q * @Author: sui q
* @Date: 2023/2/23 11:15 * @Date: 2023/2/23 11:15
*/ */
Integer deleteCuMemberAwards(@Param("period")Integer period); Integer deleteCuMemberAwards(@Param("period") Integer period);
/** /**
* 批量插入奖衔记录 * 批量插入奖衔记录
*
* @param cuMemberAwardsList 需要插入的奖衔列表 * @param cuMemberAwardsList 需要插入的奖衔列表
* @return: Integer * @return: Integer
* @Author: sui q * @Author: sui q
* @Date: 2022/11/5 16:55 * @Date: 2022/11/5 16:55
*/ */
Integer saveBatchCuMemberAwards(@Param("cuMemberAwardsList") List<CuMemberAwards> cuMemberAwardsList); Integer saveBatchCuMemberAwards(@Param("cuMemberAwardsList") List<CuMemberAwards> cuMemberAwardsList);
void deleteCuMemberSettleAwards(@Param("period") Integer period); void deleteCuMemberSettleAwards(@Param("period") Integer period);
@ -107,5 +109,5 @@ public interface CuMemberAwardsMapper extends BaseMapper<CuMemberAwards> {
* @param: null null * @param: null null
**/ **/
void updateCuMemberAwardsExamine(@Param("assessTableName") String assessTableName, @Param("awardPeriod") Integer awardPeriod, void updateCuMemberAwardsExamine(@Param("assessTableName") String assessTableName, @Param("awardPeriod") Integer awardPeriod,
@Param("assessPeriod") Integer assessPeriod); @Param("assessPeriod") Integer assessPeriod);
} }

View File

@ -3,16 +3,13 @@ package com.hzs.bonus.detail.service;
import com.baomidou.mybatisplus.extension.service.IService; import com.baomidou.mybatisplus.extension.service.IService;
import com.hzs.common.domain.member.detail.CuMemberAwards; import com.hzs.common.domain.member.detail.CuMemberAwards;
import com.hzs.common.domain.system.config.BdAwards; import com.hzs.common.domain.system.config.BdAwards;
import org.apache.ibatis.annotations.Param;
import java.util.Date; import java.util.Date;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
/** /**
* <p>
* 会员信息-奖衔升级记录 服务类 * 会员信息-奖衔升级记录 服务类
* </p>
* *
* @author hzs * @author hzs
* @since 2022-08-31 * @since 2022-08-31
@ -21,18 +18,20 @@ public interface ICuMemberAwardsService extends IService<CuMemberAwards> {
/** /**
* 重新计算会员的奖衔根据累计结束后的业绩 * 重新计算会员的奖衔根据累计结束后的业绩
* @param settleDate 结算日 *
* @param settleDate 结算日
* @param countryAwardsMap 国家奖衔配置 * @param countryAwardsMap 国家奖衔配置
* @param settleTableName 结算表 * @param settleTableName 结算表
* @return: void * @return: void
* @Author: sui q * @Author: sui q
* @Date: 2022/11/4 17:35 * @Date: 2022/11/4 17:35
*/ */
void calculateCuMemberAwards(String settleDate, Map<String, BdAwards> countryAwardsMap, String settleTableName); void calculateCuMemberAwards(String settleDate, Map<String, BdAwards> countryAwardsMap, String settleTableName);
/** /**
* 回退极差奖衔每日重新结算先把奖衔回退到前一天 * 回退极差奖衔每日重新结算先把奖衔回退到前一天
* @param period 结算期间 *
* @param period 结算期间
* @param rangeTableName 结算表 * @param rangeTableName 结算表
* @return: void * @return: void
* @Author: sui q * @Author: sui q
@ -42,6 +41,7 @@ public interface ICuMemberAwardsService extends IService<CuMemberAwards> {
/** /**
* 批量插入奖衔记录 * 批量插入奖衔记录
*
* @param cuMemberAwardsList 需要插入的奖衔列表 * @param cuMemberAwardsList 需要插入的奖衔列表
* @return: Integer * @return: Integer
* @Author: sui q * @Author: sui q
@ -51,13 +51,14 @@ public interface ICuMemberAwardsService extends IService<CuMemberAwards> {
/** /**
* 删除奖衔升级记录 * 删除奖衔升级记录
* @param pkOrder 订单 *
* @param pkApprove 审核人 * @param pkOrder 订单
* @param pkApprove 审核人
* @param currentDateTime 当前时间 * @param currentDateTime 当前时间
* @return: void * @return: void
* @Author: sui q * @Author: sui q
* @Date: 2023/3/30 9:21 * @Date: 2023/3/30 9:21
*/ */
void deleteCuMemberAwards(Long pkOrder, Long pkApprove, Date currentDateTime); void deleteCuMemberAwards(Long pkOrder, Long pkApprove, Date currentDateTime);
/* /*

View File

@ -1,7 +1,8 @@
package com.hzs.bonus.detail.service.impl; package com.hzs.bonus.detail.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.hzs.bonus.achieve.service.ICuMemberSettlePeriodService; import com.hzs.bonus.achieve.service.ICuMemberSettlePeriodService;
import com.hzs.bonus.achieve.service.ICuMemberTreeService; import com.hzs.bonus.achieve.service.ICuMemberTreeService;
@ -24,9 +25,7 @@ import java.time.temporal.ChronoUnit;
import java.util.*; import java.util.*;
/** /**
* <p>
* 会员信息-奖衔升级记录 服务实现类 * 会员信息-奖衔升级记录 服务实现类
* </p>
* *
* @author hzs * @author hzs
* @since 2022-08-31 * @since 2022-08-31
@ -34,43 +33,33 @@ import java.util.*;
@Service @Service
public class CuMemberAwardsServiceImpl extends ServiceImpl<CuMemberAwardsMapper, CuMemberAwards> implements ICuMemberAwardsService { public class CuMemberAwardsServiceImpl extends ServiceImpl<CuMemberAwardsMapper, CuMemberAwards> implements ICuMemberAwardsService {
@Autowired
private ICuMemberTreeService cuMemberTreeService; private ICuMemberTreeService cuMemberTreeService;
@Autowired
private ICuMemberService cuMemberService; private ICuMemberService cuMemberService;
@Autowired
private ICuMemberSettlePeriodService cuMemberSettlePeriodService; private ICuMemberSettlePeriodService cuMemberSettlePeriodService;
@Autowired
public void setCuMemberSettlePeriodService(ICuMemberSettlePeriodService cuMemberSettlePeriodService) {
this.cuMemberSettlePeriodService = cuMemberSettlePeriodService;
}
@Autowired
public void setCuMemberService(ICuMemberService cuMemberService) {
this.cuMemberService = cuMemberService;
}
@Autowired
public void setCuMemberTreeService(ICuMemberTreeService cuMemberTreeService) {
this.cuMemberTreeService = cuMemberTreeService;
}
@Override @Override
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public void calculateCuMemberAwards(String setDate, Map<String, BdAwards> countryAwardsMap, String settleTableName) { public void calculateCuMemberAwards(String setDate, Map<String, BdAwards> countryAwardsMap, String settleTableName) {
// 查询结算日当天奖衔发生过变动的会员本期 // 查询结算日当天奖衔发生过变动的会员本期
Date settleDate = DateUtils.parseStringToDate(setDate); Date settleDate = DateUtils.parseStringToDate(setDate);
Integer period = cuMemberSettlePeriodService.getCuMemberSettlePeriodByDate(setDate).getPkId(); Integer period = cuMemberSettlePeriodService.getCuMemberSettlePeriodByDate(setDate).getPkId();
//删除当天奖衔升级记录自动升级的
// 更新奖衔回退奖衔 // 某一期的会员奖衔
List<CuMemberAwards> cuMemberAwards = queryCuMemberAwardsByPeriod(period); List<CuMemberAwards> cuMemberAwards = queryCuMemberAwardsByPeriod(period);
// 回退会员奖衔日结表
cuMemberTreeService.updateBackCuMemberSettleAward(settleTableName, period); cuMemberTreeService.updateBackCuMemberSettleAward(settleTableName, period);
// 更新会员奖衔根据临时表会员表
cuMemberService.updateBackCuMemberAward(cuMemberAwards, period); cuMemberService.updateBackCuMemberAward(cuMemberAwards, period);
// 回退业绩表奖衔 // 回退业绩表奖衔
baseMapper.deleteCuMemberAwards(period); baseMapper.deleteCuMemberAwards(period);
while (true) { while (true) {
// 查询出符合下一奖衔足够业绩的会员
List<CuMemberSettleExt> cuMemberSettleExtList = cuMemberTreeService.queryCuMemberSettleEnoughAwardAchieve(settleTableName); List<CuMemberSettleExt> cuMemberSettleExtList = cuMemberTreeService.queryCuMemberSettleEnoughAwardAchieve(settleTableName);
if(!calculateAwards(countryAwardsMap, settleTableName, settleDate, period, cuMemberSettleExtList)){ if (!calculateAwards(countryAwardsMap, settleTableName, settleDate, period, cuMemberSettleExtList)) {
break; break;
} }
} }
@ -98,7 +87,9 @@ public class CuMemberAwardsServiceImpl extends ServiceImpl<CuMemberAwardsMapper,
List<CuMemberAwards> cuMemberAwardsList = new ArrayList<>(); List<CuMemberAwards> cuMemberAwardsList = new ArrayList<>();
List<CuMemberSettleExt> enoughAwardsMemberList = new ArrayList<>(); List<CuMemberSettleExt> enoughAwardsMemberList = new ArrayList<>();
if (cuMemberSettleExtList.size() > 0) { if (cuMemberSettleExtList.size() > 0) {
// 安置考核会员
List<CuMemberSettleExt> placeAwardsMemberList = new ArrayList<>(); List<CuMemberSettleExt> placeAwardsMemberList = new ArrayList<>();
// 血缘考核会员
List<CuMemberSettleExt> bloodAwardsMemberList = new ArrayList<>(); List<CuMemberSettleExt> bloodAwardsMemberList = new ArrayList<>();
// 用于记录原来的奖衔 // 用于记录原来的奖衔
Map<Long, CuMemberSettleExt> originalCuMemberSettleMap = new HashMap<>(ComputeUtil.mapInitCapacity(cuMemberSettleExtList.size())); Map<Long, CuMemberSettleExt> originalCuMemberSettleMap = new HashMap<>(ComputeUtil.mapInitCapacity(cuMemberSettleExtList.size()));
@ -106,10 +97,13 @@ public class CuMemberAwardsServiceImpl extends ServiceImpl<CuMemberAwardsMapper,
BdAwards bdAwards = getBdAwards(countryAwardsMap, originalCuMemberSettleMap, cuMemberSettleExt); BdAwards bdAwards = getBdAwards(countryAwardsMap, originalCuMemberSettleMap, cuMemberSettleExt);
// 验证关系 // 验证关系
if (null == bdAwards.getRelationType()) { if (null == bdAwards.getRelationType()) {
// 不需要考核
enoughAwardsMemberList.add(cuMemberSettleExt); enoughAwardsMemberList.add(cuMemberSettleExt);
} else if (ERelationType.BLOOD_KINSHIP_CHECK.getValue() == bdAwards.getRelationType()) { } else if (ERelationType.BLOOD_KINSHIP_CHECK.getValue() == bdAwards.getRelationType()) {
// 血缘考核
bloodAwardsMemberList.add(cuMemberSettleExt); bloodAwardsMemberList.add(cuMemberSettleExt);
} else if (ERelationType.PLACE_CHECK.getValue() == bdAwards.getRelationType()) { } else if (ERelationType.PLACE_CHECK.getValue() == bdAwards.getRelationType()) {
// 安置考核
placeAwardsMemberList.add(cuMemberSettleExt); placeAwardsMemberList.add(cuMemberSettleExt);
} else { } else {
enoughAwardsMemberList.add(cuMemberSettleExt); enoughAwardsMemberList.add(cuMemberSettleExt);
@ -117,7 +111,7 @@ public class CuMemberAwardsServiceImpl extends ServiceImpl<CuMemberAwardsMapper,
}); });
List<CuMemberAwards> memberAwardsList = updateAwardsRecord(enoughAwardsMemberList, originalCuMemberSettleMap, period); List<CuMemberAwards> memberAwardsList = updateAwardsRecord(enoughAwardsMemberList, originalCuMemberSettleMap, period);
if(memberAwardsList != null && memberAwardsList.size() >0){ if (memberAwardsList != null && memberAwardsList.size() > 0) {
cuMemberAwardsList.addAll(memberAwardsList); cuMemberAwardsList.addAll(memberAwardsList);
} }
// 需要验证安置的 // 需要验证安置的
@ -132,10 +126,10 @@ public class CuMemberAwardsServiceImpl extends ServiceImpl<CuMemberAwardsMapper,
} }
}); });
List<CuMemberAwards> awardsList = updateAwardsRecord(updateAwardsMemberList, originalCuMemberSettleMap, period); List<CuMemberAwards> awardsList = updateAwardsRecord(updateAwardsMemberList, originalCuMemberSettleMap, period);
if(updateAwardsMemberList.size() >0) { if (updateAwardsMemberList.size() > 0) {
enoughAwardsMemberList.addAll(updateAwardsMemberList); enoughAwardsMemberList.addAll(updateAwardsMemberList);
} }
if(awardsList != null && awardsList.size() >0){ if (awardsList != null && awardsList.size() > 0) {
cuMemberAwardsList.addAll(awardsList); cuMemberAwardsList.addAll(awardsList);
} }
} }
@ -152,10 +146,10 @@ public class CuMemberAwardsServiceImpl extends ServiceImpl<CuMemberAwardsMapper,
} }
}); });
List<CuMemberAwards> awardsList = updateAwardsRecord(updateAwardsMemberList, originalCuMemberSettleMap, period); List<CuMemberAwards> awardsList = updateAwardsRecord(updateAwardsMemberList, originalCuMemberSettleMap, period);
if(updateAwardsMemberList.size() >0) { if (updateAwardsMemberList.size() > 0) {
enoughAwardsMemberList.addAll(updateAwardsMemberList); enoughAwardsMemberList.addAll(updateAwardsMemberList);
} }
if(awardsList != null && awardsList.size() >0){ if (awardsList != null && awardsList.size() > 0) {
cuMemberAwardsList.addAll(awardsList); cuMemberAwardsList.addAll(awardsList);
} }
} }
@ -164,12 +158,13 @@ public class CuMemberAwardsServiceImpl extends ServiceImpl<CuMemberAwardsMapper,
// 将变动值插入临时表中 // 将变动值插入临时表中
// 更新会员表 // 更新会员表
cuMemberService.updateCuMemberByPeriod(enoughAwardsMemberList, period); cuMemberService.updateCuMemberByPeriod(enoughAwardsMemberList, period);
// 更新结算网体表(月表日表) // 更新结算网体表 -- 结算日期到当前日期的所有日结算表
// 根据结算日期获得所有需要更新的周期
updateMemberAwardPeriod(settleDate); updateMemberAwardPeriod(settleDate);
return Boolean.TRUE; return Boolean.TRUE;
}else { } else {
// 更新会员表
cuMemberService.updateCuMemberByPeriod(null, period); cuMemberService.updateCuMemberByPeriod(null, period);
// 更新结算网体表 -- 结算日期到当前日期的所有日结算表
updateMemberAwardPeriod(settleDate); updateMemberAwardPeriod(settleDate);
return Boolean.FALSE; return Boolean.FALSE;
} }
@ -188,11 +183,11 @@ public class CuMemberAwardsServiceImpl extends ServiceImpl<CuMemberAwardsMapper,
@Override @Override
public void deleteCuMemberAwards(Long pkOrder, Long pkApprove, Date currentDateTime) { public void deleteCuMemberAwards(Long pkOrder, Long pkApprove, Date currentDateTime) {
UpdateWrapper<CuMemberAwards> updateWrapper = new UpdateWrapper<>(); LambdaUpdateWrapper<CuMemberAwards> updateWrapper = new LambdaUpdateWrapper<>();
updateWrapper.set(SystemFieldConstants.DEL_FLAG, EYesNo.NO.getIntValue()); updateWrapper.set(CuMemberAwards::getDelFlag, EYesNo.NO.getIntValue());
updateWrapper.set(SystemFieldConstants.PK_MODIFIED, pkApprove); updateWrapper.set(CuMemberAwards::getPkModified, pkApprove);
updateWrapper.set(SystemFieldConstants.MODIFIED_TIME, currentDateTime); updateWrapper.set(CuMemberAwards::getModifiedTime, currentDateTime);
updateWrapper.eq(SaOrderFieldConstants.PK_ORDER, pkOrder); updateWrapper.eq(CuMemberAwards::getPkOrder, pkOrder);
update(updateWrapper); update(updateWrapper);
} }
@ -203,10 +198,10 @@ public class CuMemberAwardsServiceImpl extends ServiceImpl<CuMemberAwardsMapper,
List<BdAwards> bdAwardsList = new ArrayList<>(); List<BdAwards> bdAwardsList = new ArrayList<>();
for (String key : awardsMap.keySet()) { for (String key : awardsMap.keySet()) {
BdAwards bdAwards = awardsMap.get(key); BdAwards bdAwards = awardsMap.get(key);
if(bdAwards.getPkCountry().equals(CountryConstants.CHINA_COUNTRY) && ComputeUtil.compareValue(bdAwards.getCommunityCheck()) && ComputeUtil.compareGreaterThan(minAchieve, bdAwards.getCommunityCheck())){ if (bdAwards.getPkCountry().equals(CountryConstants.CHINA_COUNTRY) && ComputeUtil.compareValue(bdAwards.getCommunityCheck()) && ComputeUtil.compareGreaterThan(minAchieve, bdAwards.getCommunityCheck())) {
minAchieve = bdAwards.getCommunityCheck(); minAchieve = bdAwards.getCommunityCheck();
} }
if(ComputeUtil.compareValue(bdAwards.getCommunityCheck()) && bdAwards.getPkCountry().equals(CountryConstants.CHINA_COUNTRY)) { if (ComputeUtil.compareValue(bdAwards.getCommunityCheck()) && bdAwards.getPkCountry().equals(CountryConstants.CHINA_COUNTRY)) {
bdAwardsList.add(bdAwards); bdAwardsList.add(bdAwards);
} }
} }
@ -246,8 +241,8 @@ public class CuMemberAwardsServiceImpl extends ServiceImpl<CuMemberAwardsMapper,
* @Author: sui q * @Author: sui q
* @Date: 2023/2/23 17:44 * @Date: 2023/2/23 17:44
*/ */
private List<CuMemberAwards> updateAwardsRecord(List<CuMemberSettleExt> enoughAwardsMemberList, Map<Long, CuMemberSettleExt> originalCuMemberSettleMap, private List<CuMemberAwards> updateAwardsRecord(List<CuMemberSettleExt> enoughAwardsMemberList, Map<Long, CuMemberSettleExt> originalCuMemberSettleMap,
Integer period) { Integer period) {
if (enoughAwardsMemberList.size() == 0) { if (enoughAwardsMemberList.size() == 0) {
return null; return null;
} }
@ -255,7 +250,6 @@ public class CuMemberAwardsServiceImpl extends ServiceImpl<CuMemberAwardsMapper,
// 增加奖衔记录表 // 增加奖衔记录表
// 更新升奖衔的会员插入升衔记录 // 更新升奖衔的会员插入升衔记录
return upgradeCuMemberAwards(enoughAwardsMemberList, originalCuMemberSettleMap, period); return upgradeCuMemberAwards(enoughAwardsMemberList, originalCuMemberSettleMap, period);
} }
/** /**
@ -266,7 +260,7 @@ public class CuMemberAwardsServiceImpl extends ServiceImpl<CuMemberAwardsMapper,
* @param period 期间 * @param period 期间
*/ */
private List<CuMemberAwards> upgradeCuMemberAwards(List<CuMemberSettleExt> enoughAwardsMemberList, Map<Long, CuMemberSettleExt> originalCuMemberSettleMap, private List<CuMemberAwards> upgradeCuMemberAwards(List<CuMemberSettleExt> enoughAwardsMemberList, Map<Long, CuMemberSettleExt> originalCuMemberSettleMap,
Integer period) { Integer period) {
List<CuMemberAwards> cuMemberAwardsList = new ArrayList<>(); List<CuMemberAwards> cuMemberAwardsList = new ArrayList<>();
if (enoughAwardsMemberList.size() > 0) { if (enoughAwardsMemberList.size() > 0) {
// 记录要入库的为了验证是否首次晋升 // 记录要入库的为了验证是否首次晋升
@ -347,9 +341,9 @@ public class CuMemberAwardsServiceImpl extends ServiceImpl<CuMemberAwardsMapper,
* @Date: 2022/11/5 14:21 * @Date: 2022/11/5 14:21
*/ */
private List<CuMemberAwards> queryCuMemberAwardsByPeriod(Integer period) { private List<CuMemberAwards> queryCuMemberAwardsByPeriod(Integer period) {
QueryWrapper<CuMemberAwards> queryWrapper = new QueryWrapper<>(); LambdaQueryWrapper<CuMemberAwards> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(MemberFieldConstants.PERIOD, period); queryWrapper.eq(CuMemberAwards::getPeriod, period);
queryWrapper.eq(MemberFieldConstants.UP_TYPE, EUpgradeType.AUTO_UPGRADE.getValue()); queryWrapper.eq(CuMemberAwards::getUpType, EUpgradeType.AUTO_UPGRADE.getValue());
return baseMapper.selectList(queryWrapper); return baseMapper.selectList(queryWrapper);
} }

View File

@ -170,18 +170,18 @@
from ( from (
<foreach collection="memberAchieveParamList" item="achieve" open=" " separator=" union all " close=" "> <foreach collection="memberAchieveParamList" item="achieve" open=" " separator=" union all " close=" ">
select pk_place_parent pk_member,#{achieve.pkRate} pk_rate, select pk_place_parent pk_member,#{achieve.pkRate} pk_rate,
(case when place_dept =1 then #{achieve.newAmount} else 0 end) a_new_amount, (case when place_dept = 1 then #{achieve.newAmount} else 0 end) a_new_amount,
(case when place_dept =1 then #{achieve.newPv} else 0 end) a_new_pv, (case when place_dept = 1 then #{achieve.newPv} else 0 end) a_new_pv,
(case when place_dept =1 then #{achieve.repNewAmount} else 0 end) rep_a_new_amount, (case when place_dept = 1 then #{achieve.repNewAmount} else 0 end) rep_a_new_amount,
(case when place_dept =1 then #{achieve.repNewPv} else 0 end) rep_a_new_pv, (case when place_dept = 1 then #{achieve.repNewPv} else 0 end) rep_a_new_pv,
(case when place_dept =1 then #{achieve.newRealAmount} else 0 end) a_new_real_amount, (case when place_dept = 1 then #{achieve.newRealAmount} else 0 end) a_new_real_amount,
(case when place_dept =1 then #{achieve.newRealPv} else 0 end) a_new_real_pv, (case when place_dept = 1 then #{achieve.newRealPv} else 0 end) a_new_real_pv,
(case when place_dept =2 then #{achieve.newAmount} else 0 end) b_new_amount, (case when place_dept = 2 then #{achieve.newAmount} else 0 end) b_new_amount,
(case when place_dept =2 then #{achieve.newPv} else 0 end) b_new_pv, (case when place_dept = 2 then #{achieve.newPv} else 0 end) b_new_pv,
(case when place_dept =2 then #{achieve.repNewAmount} else 0 end) rep_b_new_amount, (case when place_dept = 2 then #{achieve.repNewAmount} else 0 end) rep_b_new_amount,
(case when place_dept =2 then #{achieve.repNewPv} else 0 end) rep_b_new_pv, (case when place_dept = 2 then #{achieve.repNewPv} else 0 end) rep_b_new_pv,
(case when place_dept =2 then #{achieve.newRealAmount} else 0 end) b_new_real_amount, (case when place_dept = 2 then #{achieve.newRealAmount} else 0 end) b_new_real_amount,
(case when place_dept =2 then #{achieve.newRealPv} else 0 end) b_new_real_pv (case when place_dept = 2 then #{achieve.newRealPv} else 0 end) b_new_real_pv
from( from(
select pk_place_parent,place_dept from( select pk_place_parent,place_dept from(
select * from ${tableName} select * from ${tableName}
@ -224,18 +224,18 @@
from ( from (
<foreach collection="memberAchieveParamList" item="achieve" open=" " separator=" union all " close=" "> <foreach collection="memberAchieveParamList" item="achieve" open=" " separator=" union all " close=" ">
select pk_place_parent pk_member,#{achieve.pkRate} pk_rate, select pk_place_parent pk_member,#{achieve.pkRate} pk_rate,
(case when place_dept =1 then #{achieve.newAmount} else 0 end) a_new_amount, (case when place_dept = 1 then #{achieve.newAmount} else 0 end) a_new_amount,
(case when place_dept =1 then #{achieve.newPv} else 0 end) a_new_pv, (case when place_dept = 1 then #{achieve.newPv} else 0 end) a_new_pv,
(case when place_dept =1 then #{achieve.repNewAmount} else 0 end) rep_a_new_amount, (case when place_dept = 1 then #{achieve.repNewAmount} else 0 end) rep_a_new_amount,
(case when place_dept =1 then #{achieve.repNewPv} else 0 end) rep_a_new_pv, (case when place_dept = 1 then #{achieve.repNewPv} else 0 end) rep_a_new_pv,
(case when place_dept =1 then #{achieve.newRealAmount} else 0 end) a_new_real_amount, (case when place_dept = 1 then #{achieve.newRealAmount} else 0 end) a_new_real_amount,
(case when place_dept =1 then #{achieve.newRealPv} else 0 end) a_new_real_pv, (case when place_dept = 1 then #{achieve.newRealPv} else 0 end) a_new_real_pv,
(case when place_dept =2 then #{achieve.newAmount} else 0 end) b_new_amount, (case when place_dept = 2 then #{achieve.newAmount} else 0 end) b_new_amount,
(case when place_dept =2 then #{achieve.newPv} else 0 end) b_new_pv, (case when place_dept = 2 then #{achieve.newPv} else 0 end) b_new_pv,
(case when place_dept =2 then #{achieve.repNewAmount} else 0 end) rep_b_new_amount, (case when place_dept = 2 then #{achieve.repNewAmount} else 0 end) rep_b_new_amount,
(case when place_dept =2 then #{achieve.repNewPv} else 0 end) rep_b_new_pv, (case when place_dept = 2 then #{achieve.repNewPv} else 0 end) rep_b_new_pv,
(case when place_dept =2 then #{achieve.newRealAmount} else 0 end) b_new_real_amount, (case when place_dept = 2 then #{achieve.newRealAmount} else 0 end) b_new_real_amount,
(case when place_dept =2 then #{achieve.newRealPv} else 0 end) b_new_real_pv (case when place_dept = 2 then #{achieve.newRealPv} else 0 end) b_new_real_pv
from( from(
select pk_place_parent,place_dept from( select pk_place_parent,place_dept from(
select * from ${tableName} select * from ${tableName}

View File

@ -1179,6 +1179,7 @@
connect by t.pk_member = prior t.pk_place_parent) tmp connect by t.pk_member = prior t.pk_place_parent) tmp
on ct.pk_member = tmp.pk_member on ct.pk_member = tmp.pk_member
</select> </select>
<select id="queryCuMemberSettleEnoughAwardAchieve" resultMap="CuMemberSettleExt"> <select id="queryCuMemberSettleEnoughAwardAchieve" resultMap="CuMemberSettleExt">
select a.pk_member, select a.pk_member,
a.pk_parent, a.pk_parent,

View File

@ -34,11 +34,12 @@
<insert id="saveBatchCuMemberAwards"> <insert id="saveBatchCuMemberAwards">
insert ALL insert ALL
<foreach item="item" index="index" collection="cuMemberAwardsList" separator=" " > <foreach item="item" index="index" collection="cuMemberAwardsList" separator=" ">
into cu_member_awards(pk_member,period,up_type,old_level,new_level,purchase_status,pk_creator,pk_country) values into cu_member_awards(pk_member,period,up_type,old_level,new_level,purchase_status,pk_creator,pk_country)
values
( (
#{item.pkMember},#{item.period},#{item.upType},#{item.oldLevel},#{item.newLevel},#{item.purchaseStatus},#{item.pkCreator}, #{item.pkMember},#{item.period},#{item.upType},#{item.oldLevel},#{item.newLevel},#{item.purchaseStatus},#{item.pkCreator},
#{item.pkCountry} #{item.pkCountry}
) )
</foreach> </foreach>
SELECT 1 FROM dual SELECT 1 FROM dual
@ -71,21 +72,24 @@
insert(pk_id,period,pk_member,a_balance,b_balance,a_new_pv,b_new_pv,new_pv,pk_country,assess_status) insert(pk_id,period,pk_member,a_balance,b_balance,a_new_pv,b_new_pv,new_pv,pk_country,assess_status)
values(cu_member_settle_awards_seq.nextval,b.period,b.pk_member,b.a_balance,b.b_balance,b.a_new_pv,b.b_new_pv,b.new_pv,b.pk_country,3) values(cu_member_settle_awards_seq.nextval,b.period,b.pk_member,b.a_balance,b.b_balance,b.a_new_pv,b.b_new_pv,b.new_pv,b.pk_country,3)
</update> </update>
<update id="calculateCuMemberAwards"> <update id="calculateCuMemberAwards">
merge into cu_member_settle_awards a merge into cu_member_settle_awards a
using( using(
select pk_member,period,max(pk_awards) pk_awards from( select pk_member,period,max(pk_awards) pk_awards from(
<foreach collection="bdAwardsList" item="item" open=" " close=" " separator=" union "> <foreach collection="bdAwardsList" item="item" open=" " close=" " separator=" union ">
select pk_member,period,#{item.pkId} pk_awards from cu_member_settle_awards select pk_member,period,#{item.pkId} pk_awards
from cu_member_settle_awards
where period = #{period} and pk_country=#{item.pkCountry} and new_pv>=#{item.communityCheck} where period = #{period} and pk_country=#{item.pkCountry} and new_pv>=#{item.communityCheck}
<if test="item.communityCheckEnd != null and item.communityCheckEnd > 0"> <if test="item.communityCheckEnd != null and item.communityCheckEnd > 0">
and new_pv &lt;#{item.communityCheckEnd} and new_pv &lt;#{item.communityCheckEnd}
</if> </if>
</foreach>) </foreach>
group by pk_member,period )
group by pk_member,period
) b on (a.pk_member=b.pk_member and a.period=b.period) ) b on (a.pk_member=b.pk_member and a.period=b.period)
when matched then when matched then
update set a.pk_awards=b.pk_awards update set a.pk_awards = b.pk_awards
</update> </update>
<update id="updateBatchCuMemberAwards"> <update id="updateBatchCuMemberAwards">
@ -112,43 +116,57 @@
<update id="calculateCuMemberRangeAwardsEveryMonth"> <update id="calculateCuMemberRangeAwardsEveryMonth">
merge into cu_member_settle_awards a merge into cu_member_settle_awards a
using( using (
select #{period} period,b.pk_member,b.max_team_pv,b.small_team_pv new_pv from( select #{period} period, b.pk_member, b.max_team_pv, b.small_team_pv new_pv
select pk_parent pk_member,max(team_month_pv+new_pv) max_team_pv, from (
(sum(team_month_pv+new_pv)-max(team_month_pv+new_pv)) small_team_pv, select pk_parent pk_member,
count(pk_parent) dept_num from ${rangeTableName} max(team_month_pv + new_pv) max_team_pv,
group by pk_parent (sum(team_month_pv + new_pv) - max(team_month_pv + new_pv)) small_team_pv,
having count(pk_parent)>=2) b count(pk_parent) dept_num
where b.small_team_pv>=#{minAchieve}) b from ${rangeTableName}
on (a.pk_member=b.pk_member and a.period=b.period) group by pk_parent
having count(pk_parent) >= 2) b
where b.small_team_pv >= #{minAchieve}) b
on (a.pk_member = b.pk_member and a.period = b.period)
when matched then when matched then
update set a.a_new_pv=b.max_team_pv,a.b_new_pv=b.new_pv,a.new_pv=b.new_pv update set a.a_new_pv = b.max_team_pv,a.b_new_pv = b.new_pv,a.new_pv = b.new_pv
when not matched then when not matched then
insert(pk_id,period,pk_member,a_balance,b_balance,a_new_pv,b_new_pv,new_pv,pk_country,assess_status) insert (pk_id, period, pk_member, a_balance, b_balance, a_new_pv, b_new_pv, new_pv, pk_country,
values(cu_member_settle_awards_seq.nextval,b.period,b.pk_member,0,0,b.max_team_pv,b.new_pv,b.new_pv,1,3) assess_status)
values (cu_member_settle_awards_seq.nextval, b.period, b.pk_member, 0, 0, b.max_team_pv, b.new_pv,
b.new_pv, 1, 3)
</update> </update>
<delete id="deleteCuMemberAwards"> <delete id="deleteCuMemberAwards">
delete from cu_member_awards where period = #{period} and up_type = 1 delete from cu_member_awards where period = #{period} and up_type = 1
</delete> </delete>
<delete id="deleteCuMemberSettleAwards"> <delete id="deleteCuMemberSettleAwards">
delete from cu_member_settle_awards where period = #{period} delete from cu_member_settle_awards where period = #{period}
</delete> </delete>
<delete id="deleteRepeatCuMemberAwards"> <delete id="deleteRepeatCuMemberAwards">
delete from cu_member_settle_awards where pk_id in( delete
select a.pk_id from ( from cu_member_settle_awards
select ct.pk_id,ct.pk_member,ba.awards_value from cu_member_settle_awards ct where pk_id in (
inner join bd_awards ba select a.pk_id
on ct.pk_awards=ba.pk_id and ba.del_flag=0 from (
where period= #{period}) a select ct.pk_id, ct.pk_member, ba.awards_value
inner join( from cu_member_settle_awards ct
select ct.*,bw.awards_value from( inner join bd_awards ba
select pk_member,max(pk_awards) pk_awards from cu_member_settle_awards on ct.pk_awards = ba.pk_id and ba.del_flag = 0
where period between #{firstPeriod} and #{yesPeriod} where period = #{period}) a
group by pk_member) ct inner join(
inner join bd_awards bw select ct.*, bw.awards_value
on ct.pk_awards=bw.pk_id and bw.del_flag=0 from (
) b select pk_member, max(pk_awards) pk_awards
on a.pk_member=b.pk_member and a.awards_value &lt;=b.awards_value) from cu_member_settle_awards
where period between #{firstPeriod} and #{yesPeriod}
group by pk_member) ct
inner join bd_awards bw
on ct.pk_awards = bw.pk_id and bw.del_flag = 0
) b
on a.pk_member = b.pk_member and a.awards_value &lt;= b.awards_value)
</delete> </delete>
<select id="queryLastCuMemberAwards" resultMap="CuMemberAwards"> <select id="queryLastCuMemberAwards" resultMap="CuMemberAwards">