BD Center 列表数据实时显示问题处理
This commit is contained in:
parent
de418ea444
commit
289da0f2b8
@ -15,19 +15,16 @@ import com.red.circle.other.app.dto.clientobject.team.BdHistoryCO;
|
|||||||
import com.red.circle.other.app.dto.cmd.TeamBdMemberBillCmd;
|
import com.red.circle.other.app.dto.cmd.TeamBdMemberBillCmd;
|
||||||
import com.red.circle.other.app.service.BdSalarySettlementServiceImpl;
|
import com.red.circle.other.app.service.BdSalarySettlementServiceImpl;
|
||||||
import com.red.circle.other.domain.gateway.user.UserProfileGateway;
|
import com.red.circle.other.domain.gateway.user.UserProfileGateway;
|
||||||
|
import com.red.circle.other.infra.database.mongo.dto.team.TeamBillMemberTarget;
|
||||||
import com.red.circle.other.infra.database.mongo.entity.bd.BdSalaryPolicy;
|
import com.red.circle.other.infra.database.mongo.entity.bd.BdSalaryPolicy;
|
||||||
import com.red.circle.other.infra.database.mongo.entity.bd.BdSalarySettlementRecord;
|
import com.red.circle.other.infra.database.mongo.entity.bd.BdSalarySettlementRecord;
|
||||||
|
import com.red.circle.other.infra.database.mongo.entity.team.team.*;
|
||||||
import com.red.circle.other.infra.database.mongo.service.bd.BdSalaryPolicyService;
|
import com.red.circle.other.infra.database.mongo.service.bd.BdSalaryPolicyService;
|
||||||
|
import com.red.circle.other.infra.database.mongo.service.team.team.*;
|
||||||
import com.red.circle.other.infra.enums.BdPolicyType;
|
import com.red.circle.other.infra.enums.BdPolicyType;
|
||||||
import com.red.circle.other.infra.enums.BdSettlementStatus;
|
import com.red.circle.other.infra.enums.BdSettlementStatus;
|
||||||
import com.red.circle.other.infra.database.mongo.dto.team.TeamBillSettleResult;
|
import com.red.circle.other.infra.database.mongo.dto.team.TeamBillSettleResult;
|
||||||
import com.red.circle.other.infra.database.mongo.entity.team.team.TeamBillCycle;
|
|
||||||
import com.red.circle.other.infra.database.mongo.entity.team.team.TeamMember;
|
|
||||||
import com.red.circle.other.infra.database.mongo.entity.team.team.TeamProfile;
|
|
||||||
import com.red.circle.other.infra.database.mongo.service.team.TeamBillCycleUtils;
|
import com.red.circle.other.infra.database.mongo.service.team.TeamBillCycleUtils;
|
||||||
import com.red.circle.other.infra.database.mongo.service.team.team.TeamBillCycleService;
|
|
||||||
import com.red.circle.other.infra.database.mongo.service.team.team.TeamMemberService;
|
|
||||||
import com.red.circle.other.infra.database.mongo.service.team.team.TeamProfileService;
|
|
||||||
import com.red.circle.other.infra.database.rds.entity.team.BusinessDevelopmentBaseInfo;
|
import com.red.circle.other.infra.database.rds.entity.team.BusinessDevelopmentBaseInfo;
|
||||||
import com.red.circle.other.infra.database.rds.entity.team.BusinessDevelopmentTeam;
|
import com.red.circle.other.infra.database.rds.entity.team.BusinessDevelopmentTeam;
|
||||||
import com.red.circle.other.infra.database.rds.service.team.BusinessDevelopmentBaseInfoService;
|
import com.red.circle.other.infra.database.rds.service.team.BusinessDevelopmentBaseInfoService;
|
||||||
@ -66,6 +63,8 @@ public class TeamBdMemberBillListQryExe {
|
|||||||
private final BusinessDevelopmentTeamService businessDevelopmentTeamService;
|
private final BusinessDevelopmentTeamService businessDevelopmentTeamService;
|
||||||
private final TeamBillCycleService teamBillCycleService;
|
private final TeamBillCycleService teamBillCycleService;
|
||||||
private final TeamProfileService teamProfileService;
|
private final TeamProfileService teamProfileService;
|
||||||
|
private final TeamPolicyManagerService teamPolicyManagerService;
|
||||||
|
private final TeamMemberTargetService teamMemberTargetService;
|
||||||
private final UserProfileGateway userProfileGateway;
|
private final UserProfileGateway userProfileGateway;
|
||||||
private final UserProfileAppConvertor userProfileAppConvertor;
|
private final UserProfileAppConvertor userProfileAppConvertor;
|
||||||
private final TeamMemberService teamMemberService;
|
private final TeamMemberService teamMemberService;
|
||||||
@ -121,9 +120,15 @@ public class TeamBdMemberBillListQryExe {
|
|||||||
.map(BusinessDevelopmentTeam::getTeamId)
|
.map(BusinessDevelopmentTeam::getTeamId)
|
||||||
.collect(Collectors.toSet());
|
.collect(Collectors.toSet());
|
||||||
|
|
||||||
// 4. 查询当前周期的账单
|
// 获取所有区域的政策配置
|
||||||
Map<Long, TeamBillCycle> billCycleMap = teamBillCycleService.mapByTeamIds2(
|
Map<Long, TeamBillCycle> billCycleMap = teamBillCycleService.mapByTeamIds2(
|
||||||
teamIdSet, currentBillBelong, TeamBillCycleStatus.UNPAID);
|
teamIdSet, currentBillBelong, TeamBillCycleStatus.UNPAID);
|
||||||
|
Map<String, TeamPolicyManager> regionPolicyMap = teamPolicyManagerService.mapRegionRelease(
|
||||||
|
billCycleMap.values().stream().map(TeamBillCycle::getRegion).collect(Collectors.toSet()));
|
||||||
|
|
||||||
|
// 4. 查询当前周期的账单
|
||||||
|
Map<Long, List<TeamMemberTarget>> memberBillTarget =
|
||||||
|
teamMemberTargetService.mapMemberBillTarget(teamIdSet, currentBillBelong);
|
||||||
|
|
||||||
// 5. 获取团队Profile信息
|
// 5. 获取团队Profile信息
|
||||||
Map<Long, TeamProfile> teamProfileMap = teamProfileService.mapProfileByIds(teamIdSet);
|
Map<Long, TeamProfile> teamProfileMap = teamProfileService.mapProfileByIds(teamIdSet);
|
||||||
@ -140,7 +145,7 @@ public class TeamBdMemberBillListQryExe {
|
|||||||
|
|
||||||
// 8. 组装成员账单列表(每个 Agent 团队一条)
|
// 8. 组装成员账单列表(每个 Agent 团队一条)
|
||||||
List<TeamBdMemberBillCO> memberBillList = bdTeamList.stream()
|
List<TeamBdMemberBillCO> memberBillList = bdTeamList.stream()
|
||||||
.map(bdTeam -> buildMemberBillCO(bdTeam, billCycleMap, teamProfileMap,
|
.map(bdTeam -> buildMemberBillCO(bdTeam, billCycleMap, memberBillTarget,regionPolicyMap, teamProfileMap,
|
||||||
userProfileMap, rechargeMap, currentBillBelong))
|
userProfileMap, rechargeMap, currentBillBelong))
|
||||||
.collect(Collectors.toList());
|
.collect(Collectors.toList());
|
||||||
|
|
||||||
@ -273,16 +278,17 @@ public class TeamBdMemberBillListQryExe {
|
|||||||
Map<Long, TeamBillCycle> billCycleMap = teamBillCycleService.mapByTeamIds2(
|
Map<Long, TeamBillCycle> billCycleMap = teamBillCycleService.mapByTeamIds2(
|
||||||
teamIdSet, currentBillBelong, TeamBillCycleStatus.UNPAID);
|
teamIdSet, currentBillBelong, TeamBillCycleStatus.UNPAID);
|
||||||
|
|
||||||
// 7. 汇总所有团队的工资
|
Map<String, TeamPolicyManager> regionPolicyMap = teamPolicyManagerService.mapRegionRelease(
|
||||||
|
billCycleMap.values().stream().map(TeamBillCycle::getRegion).collect(Collectors.toSet()));
|
||||||
|
|
||||||
|
// 4. 查询当前周期的账单
|
||||||
|
Map<Long, List<TeamMemberTarget>> memberBillTarget =
|
||||||
|
teamMemberTargetService.mapMemberBillTarget(teamIdSet, currentBillBelong);
|
||||||
|
|
||||||
BigDecimal totalSalary = BigDecimal.ZERO;
|
BigDecimal totalSalary = BigDecimal.ZERO;
|
||||||
for (BusinessDevelopmentTeam bdTeam : bdTeamList) {
|
for (BusinessDevelopmentTeam bdTeam : bdTeamList) {
|
||||||
TeamBillCycle billCycle = billCycleMap.get(bdTeam.getTeamId());
|
Long teamId = bdTeam.getTeamId();
|
||||||
if (billCycle != null && billCycle.getSettleResult() != null) {
|
totalSalary = totalSalary.add(getTeamTotalSalary(billCycleMap, memberBillTarget, regionPolicyMap, teamId));
|
||||||
BigDecimal teamSalary = billCycle.getSettleResult().getTotalSalary();
|
|
||||||
if (teamSalary != null) {
|
|
||||||
totalSalary = totalSalary.add(teamSalary);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
co.setTeamSalaryAmount(totalSalary);
|
co.setTeamSalaryAmount(totalSalary);
|
||||||
|
|
||||||
@ -357,6 +363,8 @@ public class TeamBdMemberBillListQryExe {
|
|||||||
private TeamBdMemberBillCO buildMemberBillCO(
|
private TeamBdMemberBillCO buildMemberBillCO(
|
||||||
BusinessDevelopmentTeam bdTeam,
|
BusinessDevelopmentTeam bdTeam,
|
||||||
Map<Long, TeamBillCycle> billCycleMap,
|
Map<Long, TeamBillCycle> billCycleMap,
|
||||||
|
Map<Long, List<TeamMemberTarget>> teamMemberTargetMap,
|
||||||
|
Map<String, TeamPolicyManager> policyManagerMap,
|
||||||
Map<Long, TeamProfile> teamProfileMap,
|
Map<Long, TeamProfile> teamProfileMap,
|
||||||
Map<Long, UserProfileDTO> userProfileMap,
|
Map<Long, UserProfileDTO> userProfileMap,
|
||||||
Map<Long, BigDecimal> rechargeMap,
|
Map<Long, BigDecimal> rechargeMap,
|
||||||
@ -392,21 +400,32 @@ public class TeamBdMemberBillListQryExe {
|
|||||||
co.setEndDate(dates[1]);
|
co.setEndDate(dates[1]);
|
||||||
|
|
||||||
// 账单周期信息
|
// 账单周期信息
|
||||||
TeamBillCycle billCycle = billCycleMap.get(bdTeam.getTeamId());
|
Long teamId = bdTeam.getTeamId();
|
||||||
if (billCycle != null && billCycle.getSettleResult() != null) {
|
BigDecimal totalSalary = getTeamTotalSalary(billCycleMap, teamMemberTargetMap, policyManagerMap, teamId);
|
||||||
TeamBillSettleResult settleResult = billCycle.getSettleResult();
|
co.setTeamSalaryAmount(totalSalary);
|
||||||
|
|
||||||
// 团队薪资和充值
|
|
||||||
co.setTeamSalaryAmount(settleResult.getTotalSalary());
|
|
||||||
} else {
|
|
||||||
// 如果没有账单周期,设置默认值
|
|
||||||
co.setTeamSalaryAmount(BigDecimal.ZERO);
|
|
||||||
}
|
|
||||||
co.setTeamRechargeAmount(Optional.ofNullable(rechargeMap.get(bdTeam.getAgentId())).orElse(BigDecimal.ZERO));
|
co.setTeamRechargeAmount(Optional.ofNullable(rechargeMap.get(bdTeam.getAgentId())).orElse(BigDecimal.ZERO));
|
||||||
|
|
||||||
return co;
|
return co;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@NotNull
|
||||||
|
private BigDecimal getTeamTotalSalary(Map<Long, TeamBillCycle> billCycleMap, Map<Long, List<TeamMemberTarget>> teamMemberTargetMap, Map<String, TeamPolicyManager> policyManagerMap, Long teamId) {
|
||||||
|
TeamBillCycle billCycle = billCycleMap.get(teamId);
|
||||||
|
if (billCycle == null) {
|
||||||
|
return BigDecimal.ZERO;
|
||||||
|
}
|
||||||
|
|
||||||
|
List<TeamMemberTarget> targetList = teamMemberTargetMap.get(teamId);
|
||||||
|
List<TeamBillMemberTarget> memberTargets = TeamBillCycleUtils.calculatorPolicyTarget(targetList, policyManagerMap.get(billCycle.getRegion()));
|
||||||
|
return ownTotalSalary(memberTargets);
|
||||||
|
}
|
||||||
|
|
||||||
|
private BigDecimal ownTotalSalary(List<TeamBillMemberTarget> teamBillMemberTargets) {
|
||||||
|
return teamBillMemberTargets.stream().map(TeamBillMemberTarget::getTotalSalary)
|
||||||
|
.reduce(BigDecimal.ZERO, BigDecimal::add)
|
||||||
|
.setScale(2, RoundingMode.DOWN);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 计算当前未结算的 BD 账单信息.
|
* 计算当前未结算的 BD 账单信息.
|
||||||
*
|
*
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user