From b057119fd325a95b7cecaa01d344270dfa3c6514 Mon Sep 17 00:00:00 2001 From: hy001 Date: Mon, 18 May 2026 10:48:25 +0800 Subject: [PATCH] Show team bills by monthly cycle --- .../command/team/query/TeamBillQryExe.java | 37 ++++++++++++------- .../team/query/TeamBillWorkMembersQryExe.java | 21 ++++++++--- 2 files changed, 38 insertions(+), 20 deletions(-) diff --git a/rc-service/rc-service-other/other-application/src/main/java/com/red/circle/other/app/command/team/query/TeamBillQryExe.java b/rc-service/rc-service-other/other-application/src/main/java/com/red/circle/other/app/command/team/query/TeamBillQryExe.java index c49b1517..bd5b729c 100644 --- a/rc-service/rc-service-other/other-application/src/main/java/com/red/circle/other/app/command/team/query/TeamBillQryExe.java +++ b/rc-service/rc-service-other/other-application/src/main/java/com/red/circle/other/app/command/team/query/TeamBillQryExe.java @@ -59,13 +59,15 @@ public class TeamBillQryExe { public List execute(AppIdLongCmd cmd) { - List teamBillCycles = teamBillCycleService.listLatestBill(cmd.getId(), - PageConstant.MAX_LIMIT_SIZE); + List teamBillCycles = teamBillCycleService.listByGeBillBelong(cmd.getId(), + 0, PageConstant.MAX_LIMIT_SIZE); if (CollectionUtils.isEmpty(teamBillCycles)) { return Lists.newArrayList(); } - List teamBill = teamBillCycles.stream().map(teamAppConvertor::toTeamBillCO).collect(Collectors.toList()); + List teamBill = teamBillCycles.stream() + .map(this::toMonthlyTeamBillCO) + .collect(Collectors.toList()); for (TeamBillCO teamBillCO : teamBill) { if (!Objects.isNull(teamBillCO.getSettleResult())) { BillDiamondBalance billDiamondBalance = billDiamondBalanceService @@ -91,7 +93,7 @@ public class TeamBillQryExe { */ public List executeAgent(AppIdLongCmd cmd) { - List teamBillCycles = teamBillCycleService.listLatestBill(cmd.getId(), 5); + List teamBillCycles = teamBillCycleService.listByGeBillBelong(cmd.getId(), 0, 5); if (CollectionUtils.isEmpty(teamBillCycles)) { return Lists.newArrayList(); @@ -110,15 +112,15 @@ public class TeamBillQryExe { } // 查询该账单周期下的所有成员目标数据 - List teamMemberTargets = teamMemberTargetService.listByBillBelong( - teamBillCycle.getTeamId(), teamBillCycle.getBillBelong()); + List teamMemberTargets = teamMemberTargetService.listByMonthlyBillBelong( + teamBillCycle.getTeamId(), TeamBillCycleUtils.extractMonth(teamBillCycle.getBillBelong())); if (CollectionUtils.isEmpty(teamMemberTargets)) { // 如果没有成员数据,仍然返回账单基本信息 - TeamBillCO teamBillCO = teamAppConvertor.toTeamBillCO(teamBillCycle); - result.add(teamBillCO); - continue; - } + TeamBillCO teamBillCO = toMonthlyTeamBillCO(teamBillCycle); + result.add(teamBillCO); + continue; + } // 累计所有成员的数据 List memberTargetList = Lists.newArrayList(); @@ -134,8 +136,7 @@ public class TeamBillQryExe { } // 转换为账单CO对象 - TeamBillCO teamBillCO = teamAppConvertor.toTeamBillCO(teamBillCycle); - teamBillCO.setBillTitle(TeamBillCycleUtils.parseBillBelongToDateRangeStr(teamBillCO.getBillBelong())); + TeamBillCO teamBillCO = toMonthlyTeamBillCO(teamBillCycle); // 设置累计的成员结算结果 if (!CollectionUtils.isEmpty(memberTargetList)) { @@ -154,12 +155,20 @@ public class TeamBillQryExe { return result; } - private static List filter(List stringList, Integer dateNumBer) { + private static List filter(List stringList, Integer dateNumBer) { stringList = stringList.stream().filter(item -> { return item.getDateNumber().equals(dateNumBer); }).collect(Collectors.toList()); 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 getMetadata(SysRegionConfig regionConfig) { return Optional.ofNullable(regionConfig) diff --git a/rc-service/rc-service-other/other-application/src/main/java/com/red/circle/other/app/command/team/query/TeamBillWorkMembersQryExe.java b/rc-service/rc-service-other/other-application/src/main/java/com/red/circle/other/app/command/team/query/TeamBillWorkMembersQryExe.java index db3b0361..654b02b1 100644 --- a/rc-service/rc-service-other/other-application/src/main/java/com/red/circle/other/app/command/team/query/TeamBillWorkMembersQryExe.java +++ b/rc-service/rc-service-other/other-application/src/main/java/com/red/circle/other/app/command/team/query/TeamBillWorkMembersQryExe.java @@ -57,12 +57,21 @@ public class TeamBillWorkMembersQryExe { return Lists.newArrayList(); } - List teamMemberTargets = teamMemberTargetService.listByBillBelong( - teamBillCycle.getTeamId(), teamBillCycle.getBillBelong()); - - if (CollectionUtils.isEmpty(teamMemberTargets)) { - return Lists.newArrayList(); - } + Integer monthlyBillBelong = TeamBillCycleUtils.extractMonth(teamBillCycle.getBillBelong()); + List teamMemberTargets = teamMemberTargetService + .listByMonthlyBillBelong(teamBillCycle.getTeamId(), monthlyBillBelong); + + if (CollectionUtils.isEmpty(teamMemberTargets)) { + return Lists.newArrayList(); + } + + teamMemberTargets = teamMemberTargets.stream() + .map(TeamMemberTarget::getUserId) + .distinct() + .map(userId -> teamMemberTargetService.aggregateMonthlyTarget( + teamBillCycle.getTeamId(), userId, monthlyBillBelong)) + .filter(Objects::nonNull) + .toList(); Map userProfileMap = userProfileAppConvertor.toMapUserProfileDTO( userProfileGateway.mapByUserIds(