## 日结奖衔计算处理;
This commit is contained in:
parent
5ca7df77ee
commit
0378dd3d50
|
@ -8,8 +8,6 @@ import com.hzs.common.domain.member.ext.CuMemberExt;
|
|||
import com.hzs.common.domain.sale.ext.SaOrderExt;
|
||||
import org.apache.ibatis.annotations.Param;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
|
@ -68,11 +66,6 @@ public interface CuMemberRetailRangeMapper extends BaseMapper<CuMemberRetailRang
|
|||
*/
|
||||
List<CuMemberRetailRangeExt> queryCuMemberRetailRangeExtByParent(@Param("tableName") String tableName, @Param("pkParent") Long pkParent);
|
||||
|
||||
/**
|
||||
* 查询推荐人伞下满足
|
||||
*/
|
||||
List<CuMemberRetailRangeExt> queryCuMemberRetailRangeEnoughAchieve(@Param("tableName") String tableName, @Param("pkParent") Long pkParent, @Param("achievePv") BigDecimal achievePv);
|
||||
|
||||
/**
|
||||
* 根据会员查询会员上的所有网体, 按照pkParent作为key,查询极差秒接表
|
||||
*/
|
||||
|
@ -112,19 +105,11 @@ public interface CuMemberRetailRangeMapper extends BaseMapper<CuMemberRetailRang
|
|||
|
||||
/**
|
||||
* 更新自己秒结
|
||||
*
|
||||
* @param tableName
|
||||
* @param orderExt
|
||||
* @param cuMember
|
||||
*/
|
||||
void updateMemberRetailSecondRangeSelf(@Param("tableName") String tableName, @Param("orderExt") SaOrderExt orderExt, @Param("cuMember") CuMember cuMember, @Param("updateType") Integer updateType, @Param("symbol") String symbol);
|
||||
|
||||
/**
|
||||
* 更新上级秒结
|
||||
*
|
||||
* @param tableName
|
||||
* @param orderExt
|
||||
* @param memberList
|
||||
*/
|
||||
void updateMemberRetailSecondRangeParent(@Param("tableName") String tableName, @Param("orderExt") SaOrderExt orderExt, @Param("memberList") List<CuMemberExt> memberList, @Param("updateType") Integer updateType, @Param("symbol") String symbol);
|
||||
|
||||
|
@ -136,4 +121,11 @@ public interface CuMemberRetailRangeMapper extends BaseMapper<CuMemberRetailRang
|
|||
List<CuMemberRetailRangeExt> listChildRetail(@Param("rangeTableName") String rangeTableName,
|
||||
@Param("pkParentList") List<Long> pkParentList);
|
||||
|
||||
/**
|
||||
* 查询会员血缘下达标奖衔会员
|
||||
*/
|
||||
List<Integer> listChildAwards(@Param("rangeTableName") String rangeTableName,
|
||||
@Param("pkAwards") Integer pkAwards,
|
||||
@Param("childMemberList") List<Long> childMemberList);
|
||||
|
||||
}
|
||||
|
|
|
@ -6,10 +6,8 @@ import com.hzs.common.domain.member.achieve.ext.CuMemberRetailRangeExt;
|
|||
import com.hzs.common.domain.member.base.CuMember;
|
||||
import com.hzs.common.domain.member.ext.CuMemberExt;
|
||||
import com.hzs.common.domain.sale.ext.SaOrderExt;
|
||||
import org.apache.ibatis.annotations.Param;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
|
@ -38,11 +36,6 @@ public interface ICuMemberRetailRangeService extends IService<CuMemberRetailRang
|
|||
*/
|
||||
List<CuMemberRetailRangeExt> queryCuMemberRetailRangeExtByParent(String tableName, Long pkParent);
|
||||
|
||||
/**
|
||||
* 查询推荐人伞下满足
|
||||
*/
|
||||
List<CuMemberRetailRangeExt> queryCuMemberRetailRangeEnoughAchieve(String tableName, Long pkParent, BigDecimal achievePv);
|
||||
|
||||
/**
|
||||
* 根据会员查询会员上的所有网体, 按照pkParent作为key,查询极差秒接表
|
||||
*/
|
||||
|
@ -88,4 +81,10 @@ public interface ICuMemberRetailRangeService extends IService<CuMemberRetailRang
|
|||
void updateMemberRetailSecondRangeParent(String settleTableName, SaOrderExt orderExt, List<CuMemberExt> pkMemberList, Integer updateType, String symbol);
|
||||
|
||||
void initMemberRetailSecondRange(String tableName, CuMemberExt member);
|
||||
|
||||
/**
|
||||
* 查询会员血缘下达标奖衔会员
|
||||
*/
|
||||
List<Integer> listChildAwards(String rangeTableName, Integer pkAwards, List<Long> childMemberList);
|
||||
|
||||
}
|
||||
|
|
|
@ -71,11 +71,6 @@ public class CuMemberRetailRangeServiceImpl extends ServiceImpl<CuMemberRetailRa
|
|||
return baseMapper.queryCuMemberRetailRangeExtByParent(tableName, pkParent);
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<CuMemberRetailRangeExt> queryCuMemberRetailRangeEnoughAchieve(String tableName, Long pkParent, BigDecimal achievePv) {
|
||||
return baseMapper.queryCuMemberRetailRangeEnoughAchieve(tableName, pkParent, achievePv);
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<CuMemberRetailRangeExt> queryCuMemberSecondRangeParent(String rangeTableName, String secondTableName, Long pkMember) {
|
||||
// 查询伞上
|
||||
|
@ -177,4 +172,18 @@ public class CuMemberRetailRangeServiceImpl extends ServiceImpl<CuMemberRetailRa
|
|||
cuMemberTreeMap.forEach((key, value) -> cuMemberTreeList.add(value));
|
||||
return cuMemberBonusSettle.handleCutList(cuMemberTreeList);
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<Integer> listChildAwards(String rangeTableName, Integer pkAwards, List<Long> childMemberList) {
|
||||
List<Integer> checkList = new ArrayList<>();
|
||||
List<List<?>> queryList = cuMemberBonusSettle.handleCutList(childMemberList, MagicNumberConstants.BATCH_QUERY_NUM);
|
||||
queryList.forEach(tmpList -> {
|
||||
List<Integer> tmpCheckList = baseMapper.listChildAwards(rangeTableName, pkAwards, childMemberList);
|
||||
if (tmpCheckList.size() > 0) {
|
||||
checkList.addAll(tmpCheckList);
|
||||
}
|
||||
});
|
||||
return checkList;
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -21,15 +21,6 @@ public interface CuMemberMapper extends BaseMapper<CuMember> {
|
|||
*/
|
||||
int updateCuMemberRetailAwardsByPeriod(@Param("period") Integer period, @Param("awardType") Integer awardType);
|
||||
|
||||
/**
|
||||
* 更新会员最高奖衔
|
||||
*
|
||||
* @param period
|
||||
* @param awardType
|
||||
* @return
|
||||
*/
|
||||
int updateCuMemberMaxAwardsByPeriod(@Param("period") Integer period, @Param("awardType") Integer awardType);
|
||||
|
||||
/**
|
||||
* 更新会员奖衔根据临时表
|
||||
*
|
||||
|
|
|
@ -25,8 +25,6 @@ public class CuMemberServiceImpl extends ServiceImpl<CuMemberMapper, CuMember> i
|
|||
@Override
|
||||
public void updateCuMemberRetailRangeByPeriod(Integer period) {
|
||||
baseMapper.updateCuMemberRetailAwardsByPeriod(period, EAwardsType.RANGE_TYPE.getValue());
|
||||
// 更新会员最高奖衔
|
||||
baseMapper.updateCuMemberMaxAwardsByPeriod(period, EAwardsType.RANGE_TYPE.getValue());
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
@ -339,10 +339,10 @@ public class BonusSettleRangeHandle extends BonusSettleHandle {
|
|||
sourceMember.setNewConsumeAmount(orderAmount);
|
||||
sourceMember.setConsumeAmount(sourceMember.getConsumeAmount().add(orderAmount));
|
||||
sourceMember.setMonthConsumeAmount(sourceMember.getMonthConsumeAmount().add(orderAmount));
|
||||
// // 自己计算奖衔
|
||||
// // 自己计算奖衔,目前业绩都只往下传,所以此处暂时不需要处理订单会员的奖衔
|
||||
// this.calculateAwards(period, memberRangeExtMap, rangeTableName, saOrderExt, retailAwardsMap, cuMemberAwardsList, sourceMember);
|
||||
// 累计团队业绩、金额 + 计算奖衔
|
||||
this.calculateParentAwards(period, memberRangeExtMap, rangeTableName, sourceMember, saOrderExt, retailAwardsMap);
|
||||
cuMemberAwardsList.addAll(this.calculateParentAwards(period, memberRangeExtMap, rangeTableName, sourceMember, saOrderExt, retailAwardsMap));
|
||||
|
||||
if (EOrderType.RETAIL_REGISTER.getValue() == saOrderExt.getOrderType()
|
||||
|| EOrderType.RETAIL_UPGRADE.getValue() == saOrderExt.getOrderType()) {
|
||||
|
@ -833,6 +833,9 @@ public class BonusSettleRangeHandle extends BonusSettleHandle {
|
|||
memberRangeExtMap, saOrderExt, settleDate, rangeTableName, rangeDetailTableName, EBonusStage.ONE,
|
||||
sourceMember, newRetailDetail, returnRetailDetailList);
|
||||
}
|
||||
pointCount += newPointInt;
|
||||
sourceMember.setPointCount(pointCount);
|
||||
|
||||
// 待激活点位
|
||||
int waitPointCount = sourceMember.getWaitPointCount();
|
||||
if (waitPointCount != 0) {
|
||||
|
@ -867,7 +870,6 @@ public class BonusSettleRangeHandle extends BonusSettleHandle {
|
|||
}
|
||||
sourceMember.setWaitPointCount(waitPointCount);
|
||||
}
|
||||
sourceMember.setPointCount(sourceMember.getPointCount() + newPointInt);
|
||||
return returnRetailDetailList;
|
||||
}
|
||||
|
||||
|
@ -1092,8 +1094,6 @@ public class BonusSettleRangeHandle extends BonusSettleHandle {
|
|||
CuMemberRetailRangeExt targetMember) {
|
||||
// 校验大小区会员数据
|
||||
List<CuMemberRetailRangeExt> cuMemberRangeExtList = null;
|
||||
// 校验累计小部门会员数据
|
||||
List<CuMemberRetailRangeExt> cuMemberRetailRangeExtList = null;
|
||||
// 计算分红奖衔
|
||||
while (true) {
|
||||
// 当月奖衔值 + 5,获取下一个奖衔值
|
||||
|
@ -1122,39 +1122,22 @@ public class BonusSettleRangeHandle extends BonusSettleHandle {
|
|||
}
|
||||
}
|
||||
|
||||
// // 小区业绩 = 团队累计消费业绩 - 大区业绩
|
||||
// BigDecimal smallAreaPv = ComputeUtil.computeSubtract(targetMember.getTeamConsumePv(), consumeBigPv);
|
||||
// if (ComputeUtil.compareValue(smallAreaPv, bdAwards.getShareCommunityCheck())) {
|
||||
// // 小区业绩 >= 小区考核业绩
|
||||
// if (bdAwards.getPlaceDeptNum() > 0) {
|
||||
// // 验证是否有多个区满足业绩
|
||||
// if (null == cuMemberRetailRangeExtList) {
|
||||
// // 昨日结算表,查询订单会员直推数据
|
||||
// cuMemberRetailRangeExtList = iCuMemberRetailRangeService.queryCuMemberRetailRangeEnoughAchieve(rangeTableName, targetMember.getPkMember(), bdAwards.getShareCommunityCheck());
|
||||
// }
|
||||
//
|
||||
// int enoughNum = 0;
|
||||
// if (ComputeUtil.compareValue(targetMember.getMonthConsumePv(), bdAwards.getShareCommunityCheck())) {
|
||||
// enoughNum += 1;
|
||||
// }
|
||||
// for (CuMemberRetailRangeExt cuMemberRetailRangeExt : cuMemberRetailRangeExtList) {
|
||||
// if (memberRangeExtMap.containsKey(cuMemberRetailRangeExt.getPkMember())) {
|
||||
// cuMemberRetailRangeExt = memberRangeExtMap.get(cuMemberRetailRangeExt.getPkMember());
|
||||
// }
|
||||
// if (ComputeUtil.compareValue(ComputeUtil.computeAdd(cuMemberRetailRangeExt.getMonthConsumePv(), cuMemberRetailRangeExt.getAllTeamMonthPv()), bdAwards.getShareCommunityCheck())) {
|
||||
// // 本人月消费业绩 + 团队月消费业绩 >= 小区考核业绩,则满足条件小部门 +1
|
||||
// enoughNum += 1;
|
||||
// }
|
||||
// }
|
||||
// if (bdAwards.getPlaceDeptNum() > enoughNum) {
|
||||
// break;
|
||||
// }
|
||||
// }
|
||||
// cuMemberAwardsList.add(getCuMemberRetailAwards(targetMember, period, saOrderExt, bdAwards, EAwardsType.SHARE_TYPE.getValue(), targetMember.getPkShareAwards()));
|
||||
// targetMember.setAwardsValue(bdAwards.getAwardsValue());
|
||||
// targetMember.setPkAwards(bdAwards.getPkId());
|
||||
// continue;
|
||||
// }
|
||||
// 小区业绩 = 团队累计消费业绩 - 大区业绩
|
||||
BigDecimal smallAreaPv = ComputeUtil.computeSubtract(targetMember.getTeamConsumePv(), consumeBigPv);
|
||||
if (ComputeUtil.compareValue(smallAreaPv, bdAwards.getCommunityCheck())) {
|
||||
// 小区业绩 >= 小区考核业绩
|
||||
if (bdAwards.getPlaceDeptNum() > 0) {
|
||||
// 验证每条血缘下,满足达标数量
|
||||
List<Integer> checkList = iCuMemberRetailRangeService.listChildAwards(rangeTableName, bdAwards.getPkCheckAwardsLeft(),
|
||||
cuMemberRangeExtList.stream().map(CuMemberRetailRangeExt::getPkMember).collect(Collectors.toList()));
|
||||
if (CollectionUtil.isNotEmpty(checkList) && checkList.size() >= bdAwards.getPlaceDeptNum()) {
|
||||
cuMemberAwardsList.add(getCuMemberRetailAwards(targetMember, period, saOrderExt, bdAwards, EAwardsType.RANGE_TYPE.getValue(), targetMember.getPkAwards()));
|
||||
targetMember.setPkAwards(bdAwards.getPkId());
|
||||
targetMember.setAwardsValue(bdAwards.getAwardsValue());
|
||||
continue;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
|
|
@ -59,6 +59,7 @@
|
|||
<result column="AWARDS_VALUE" property="awardsValue"/>
|
||||
<result column="AWARDS_NAME" property="awardsName"/>
|
||||
<result column="RANGE_RATIO" property="rangeRatio"/>
|
||||
<result column="SAME_LEVEL_RATIO" property="sameLevelRatio"/>
|
||||
<result column="COACH_ALGEBRA" property="coachAlgebra"/>
|
||||
<result column="COACH_RATIO" property="coachRatio"/>
|
||||
</resultMap>
|
||||
|
@ -552,6 +553,7 @@
|
|||
, a.pk_share_awards = b.pk_range_awards
|
||||
</if>
|
||||
</update>
|
||||
|
||||
<update id="updateMemberRetailSecondRangeSelf">
|
||||
UPDATE ${tableName}
|
||||
SET
|
||||
|
@ -570,6 +572,7 @@
|
|||
WHERE
|
||||
PK_MEMBER = #{cuMember.pkId}
|
||||
</update>
|
||||
|
||||
<update id="updateMemberRetailSecondRangeParent">
|
||||
UPDATE ${tableName}
|
||||
SET
|
||||
|
@ -589,6 +592,7 @@
|
|||
#{member.pkId}
|
||||
</foreach>
|
||||
</update>
|
||||
|
||||
<insert id="initMemberRetailSecondRange">
|
||||
INSERT INTO ${tableName} ("PK_MEMBER",
|
||||
"PK_PARENT",
|
||||
|
@ -827,6 +831,7 @@
|
|||
bw.awards_value,
|
||||
bw.awards_name,
|
||||
bw.range_ratio,
|
||||
bw.same_level_ratio,
|
||||
bws.awards_value share_awards_value
|
||||
from (
|
||||
select *
|
||||
|
@ -864,24 +869,6 @@
|
|||
and cm.del_flag = 0
|
||||
</select>
|
||||
|
||||
<select id="queryCuMemberRetailRangeEnoughAchieve" resultType="com.hzs.common.domain.member.achieve.ext.CuMemberRetailRangeExt">
|
||||
select pk_member,
|
||||
pk_parent,
|
||||
new_consume_pv,
|
||||
consume_pv,
|
||||
month_consume_pv,
|
||||
team_new_pv,
|
||||
team_consume_pv,
|
||||
team_month_pv,
|
||||
team_new_amount,
|
||||
team_consume_amount,
|
||||
team_month_amount,
|
||||
big_team_pv,
|
||||
small_team_pv
|
||||
from ${tableName}
|
||||
where pk_parent = #{pkParent}
|
||||
</select>
|
||||
|
||||
<select id="findParentMemberList" resultType="com.hzs.common.domain.member.ext.CuMemberExt">
|
||||
select *
|
||||
from (
|
||||
|
@ -956,4 +943,18 @@
|
|||
order by a.pk_parent, a.pay_time
|
||||
</select>
|
||||
|
||||
<!-- 查询会员血缘下达标奖衔会员 -->
|
||||
<select id="listChildAwards" resultType="int">
|
||||
<foreach collection="childMemberList" item="item" close=" " open=" " separator="union">
|
||||
select count(1)
|
||||
from ${rangeTableName} cmr
|
||||
where cmr.category = 0
|
||||
and cmr.income_status = 0
|
||||
and cmr.pk_awards >= #{pkAwards}
|
||||
start with cmr.pk_member = #{item}
|
||||
connect by prior cmr.pk_member = cmr.pk_parent
|
||||
having count(1) > 0
|
||||
</foreach>
|
||||
</select>
|
||||
|
||||
</mapper>
|
||||
|
|
|
@ -106,23 +106,6 @@
|
|||
a.modified_time = sysdate
|
||||
</update>
|
||||
|
||||
<update id="updateCuMemberMaxAwardsByPeriod">
|
||||
merge into cu_member a
|
||||
using (select c1.*
|
||||
from (select pk_member, max(new_level) pk_awards
|
||||
from cu_member_awards
|
||||
where period = #{period}
|
||||
and award_type = #{awardType}
|
||||
and del_flag = 0
|
||||
group by pk_member) c1
|
||||
inner join cu_member c2
|
||||
on c1.pk_member = c2.pk_id
|
||||
and c1.pk_awards > c2.pk_max_awards) b
|
||||
on (a.pk_id = b.pk_member)
|
||||
when matched then
|
||||
update set a.pk_max_awards = b.pk_awards, a.modified_time = sysdate
|
||||
</update>
|
||||
|
||||
<!-- 更新会员奖衔根据临时表 -->
|
||||
<update id="updateBackCuMemberRetailRangeAward">
|
||||
merge into cu_member a
|
||||
|
@ -197,9 +180,12 @@
|
|||
</if>
|
||||
a.modified_time = sysdate
|
||||
</update>
|
||||
|
||||
<select id="getByPkId" resultType="com.hzs.common.domain.member.base.CuMember"
|
||||
parameterType="java.io.Serializable">
|
||||
select * from cu_member where pk_id = ${pkId}
|
||||
select *
|
||||
from cu_member
|
||||
where pk_id = ${pkId}
|
||||
</select>
|
||||
|
||||
</mapper>
|
||||
|
|
|
@ -40,7 +40,7 @@ public class MagicNumberConstants {
|
|||
/**
|
||||
* 查询条数
|
||||
*/
|
||||
public static final Integer BATCH_QUERY_NUM = 300;
|
||||
public static final Integer BATCH_QUERY_NUM = 450;
|
||||
|
||||
/**
|
||||
* 系统管理员主键
|
||||
|
|
|
@ -36,9 +36,13 @@ public class CuMemberRetailRangeExt extends CuMemberRetailRange {
|
|||
private String awardsName;
|
||||
|
||||
/**
|
||||
* 福利级差比例
|
||||
* 领导奖级差比例
|
||||
*/
|
||||
private BigDecimal rangeRatio;
|
||||
/**
|
||||
* 领导奖平级比例
|
||||
*/
|
||||
private BigDecimal sameLevelRatio;
|
||||
|
||||
/**
|
||||
* 小区业绩
|
||||
|
|
|
@ -92,16 +92,14 @@ public class BdAwards extends BaseEntity {
|
|||
private BigDecimal carAwardPoints;
|
||||
|
||||
/**
|
||||
* 左区奖衔
|
||||
* 考核奖衔
|
||||
*/
|
||||
@Transaction(transactionKey = EnumsPrefixConstants.KEY_AWARD)
|
||||
@TableField(value = "PK_CHECK_AWARDS_LEFT", jdbcType = JdbcType.NUMERIC, updateStrategy = FieldStrategy.IGNORED)
|
||||
private Integer pkCheckAwardsLeft;
|
||||
|
||||
/**
|
||||
* 右区奖衔
|
||||
*/
|
||||
@Transaction(transactionKey = EnumsPrefixConstants.KEY_AWARD)
|
||||
@TableField(value = "PK_CHECK_AWARDS_RIGHT", jdbcType = JdbcType.NUMERIC, updateStrategy = FieldStrategy.IGNORED)
|
||||
private Integer pkCheckAwardsRight;
|
||||
|
||||
|
@ -159,7 +157,7 @@ public class BdAwards extends BaseEntity {
|
|||
private Integer systemType;
|
||||
|
||||
/**
|
||||
* 部门数量
|
||||
* 考核部门数量
|
||||
*/
|
||||
@TableField("PLACE_DEPT_NUM")
|
||||
private Integer placeDeptNum;
|
||||
|
|
Loading…
Reference in New Issue