Show team bills by monthly cycle

This commit is contained in:
hy001 2026-05-18 10:48:25 +08:00
parent 9deeef5004
commit b057119fd3
2 changed files with 38 additions and 20 deletions

View File

@ -59,13 +59,15 @@ public class TeamBillQryExe {
public List<TeamBillCO> execute(AppIdLongCmd cmd) { public List<TeamBillCO> execute(AppIdLongCmd cmd) {
List<TeamBillCycle> teamBillCycles = teamBillCycleService.listLatestBill(cmd.getId(), List<TeamBillCycle> teamBillCycles = teamBillCycleService.listByGeBillBelong(cmd.getId(),
PageConstant.MAX_LIMIT_SIZE); 0, PageConstant.MAX_LIMIT_SIZE);
if (CollectionUtils.isEmpty(teamBillCycles)) { if (CollectionUtils.isEmpty(teamBillCycles)) {
return Lists.newArrayList(); return Lists.newArrayList();
} }
List<TeamBillCO> teamBill = teamBillCycles.stream().map(teamAppConvertor::toTeamBillCO).collect(Collectors.toList()); List<TeamBillCO> teamBill = teamBillCycles.stream()
.map(this::toMonthlyTeamBillCO)
.collect(Collectors.toList());
for (TeamBillCO teamBillCO : teamBill) { for (TeamBillCO teamBillCO : teamBill) {
if (!Objects.isNull(teamBillCO.getSettleResult())) { if (!Objects.isNull(teamBillCO.getSettleResult())) {
BillDiamondBalance billDiamondBalance = billDiamondBalanceService BillDiamondBalance billDiamondBalance = billDiamondBalanceService
@ -91,7 +93,7 @@ public class TeamBillQryExe {
*/ */
public List<TeamBillCO> executeAgent(AppIdLongCmd cmd) { public List<TeamBillCO> executeAgent(AppIdLongCmd cmd) {
List<TeamBillCycle> teamBillCycles = teamBillCycleService.listLatestBill(cmd.getId(), 5); List<TeamBillCycle> teamBillCycles = teamBillCycleService.listByGeBillBelong(cmd.getId(), 0, 5);
if (CollectionUtils.isEmpty(teamBillCycles)) { if (CollectionUtils.isEmpty(teamBillCycles)) {
return Lists.newArrayList(); return Lists.newArrayList();
@ -110,12 +112,12 @@ public class TeamBillQryExe {
} }
// 查询该账单周期下的所有成员目标数据 // 查询该账单周期下的所有成员目标数据
List<TeamMemberTarget> teamMemberTargets = teamMemberTargetService.listByBillBelong( List<TeamMemberTarget> teamMemberTargets = teamMemberTargetService.listByMonthlyBillBelong(
teamBillCycle.getTeamId(), teamBillCycle.getBillBelong()); teamBillCycle.getTeamId(), TeamBillCycleUtils.extractMonth(teamBillCycle.getBillBelong()));
if (CollectionUtils.isEmpty(teamMemberTargets)) { if (CollectionUtils.isEmpty(teamMemberTargets)) {
// 如果没有成员数据仍然返回账单基本信息 // 如果没有成员数据仍然返回账单基本信息
TeamBillCO teamBillCO = teamAppConvertor.toTeamBillCO(teamBillCycle); TeamBillCO teamBillCO = toMonthlyTeamBillCO(teamBillCycle);
result.add(teamBillCO); result.add(teamBillCO);
continue; continue;
} }
@ -134,8 +136,7 @@ public class TeamBillQryExe {
} }
// 转换为账单CO对象 // 转换为账单CO对象
TeamBillCO teamBillCO = teamAppConvertor.toTeamBillCO(teamBillCycle); TeamBillCO teamBillCO = toMonthlyTeamBillCO(teamBillCycle);
teamBillCO.setBillTitle(TeamBillCycleUtils.parseBillBelongToDateRangeStr(teamBillCO.getBillBelong()));
// 设置累计的成员结算结果 // 设置累计的成员结算结果
if (!CollectionUtils.isEmpty(memberTargetList)) { if (!CollectionUtils.isEmpty(memberTargetList)) {
@ -161,6 +162,14 @@ public class TeamBillQryExe {
return stringList; return stringList;
} }
private TeamBillCO toMonthlyTeamBillCO(TeamBillCycle teamBillCycle) {
TeamBillCO teamBillCO = teamAppConvertor.toTeamBillCO(teamBillCycle);
Integer monthlyBillBelong = TeamBillCycleUtils.extractMonth(teamBillCycle.getBillBelong());
teamBillCO.setBillBelong(monthlyBillBelong);
teamBillCO.setBillTitle(TeamBillCycleUtils.parseBillBelongToDateRangeStr(monthlyBillBelong));
return teamBillCO;
}
private Map<String, String> getMetadata(SysRegionConfig regionConfig) { private Map<String, String> getMetadata(SysRegionConfig regionConfig) {
return Optional.ofNullable(regionConfig) return Optional.ofNullable(regionConfig)
.map(SysRegionConfig::getMetadata).orElseGet(CollectionUtils::newHashMap); .map(SysRegionConfig::getMetadata).orElseGet(CollectionUtils::newHashMap);

View File

@ -57,13 +57,22 @@ public class TeamBillWorkMembersQryExe {
return Lists.newArrayList(); return Lists.newArrayList();
} }
List<TeamMemberTarget> teamMemberTargets = teamMemberTargetService.listByBillBelong( Integer monthlyBillBelong = TeamBillCycleUtils.extractMonth(teamBillCycle.getBillBelong());
teamBillCycle.getTeamId(), teamBillCycle.getBillBelong()); List<TeamMemberTarget> teamMemberTargets = teamMemberTargetService
.listByMonthlyBillBelong(teamBillCycle.getTeamId(), monthlyBillBelong);
if (CollectionUtils.isEmpty(teamMemberTargets)) { if (CollectionUtils.isEmpty(teamMemberTargets)) {
return Lists.newArrayList(); return Lists.newArrayList();
} }
teamMemberTargets = teamMemberTargets.stream()
.map(TeamMemberTarget::getUserId)
.distinct()
.map(userId -> teamMemberTargetService.aggregateMonthlyTarget(
teamBillCycle.getTeamId(), userId, monthlyBillBelong))
.filter(Objects::nonNull)
.toList();
Map<Long, UserProfileDTO> userProfileMap = userProfileAppConvertor.toMapUserProfileDTO( Map<Long, UserProfileDTO> userProfileMap = userProfileAppConvertor.toMapUserProfileDTO(
userProfileGateway.mapByUserIds( userProfileGateway.mapByUserIds(
teamMemberTargets.stream().map(TeamMemberTarget::getUserId) teamMemberTargets.stream().map(TeamMemberTarget::getUserId)