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) {
List<TeamBillCycle> teamBillCycles = teamBillCycleService.listLatestBill(cmd.getId(),
PageConstant.MAX_LIMIT_SIZE);
List<TeamBillCycle> teamBillCycles = teamBillCycleService.listByGeBillBelong(cmd.getId(),
0, PageConstant.MAX_LIMIT_SIZE);
if (CollectionUtils.isEmpty(teamBillCycles)) {
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) {
if (!Objects.isNull(teamBillCO.getSettleResult())) {
BillDiamondBalance billDiamondBalance = billDiamondBalanceService
@ -91,7 +93,7 @@ public class TeamBillQryExe {
*/
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)) {
return Lists.newArrayList();
@ -110,15 +112,15 @@ public class TeamBillQryExe {
}
// 查询该账单周期下的所有成员目标数据
List<TeamMemberTarget> teamMemberTargets = teamMemberTargetService.listByBillBelong(
teamBillCycle.getTeamId(), teamBillCycle.getBillBelong());
List<TeamMemberTarget> 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<TeamBillMemberTarget> 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<TeamMemberTargetIndex> filter(List<TeamMemberTargetIndex> stringList, Integer dateNumBer) {
private static List<TeamMemberTargetIndex> filter(List<TeamMemberTargetIndex> 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<String, String> getMetadata(SysRegionConfig regionConfig) {
return Optional.ofNullable(regionConfig)

View File

@ -57,12 +57,21 @@ public class TeamBillWorkMembersQryExe {
return Lists.newArrayList();
}
List<TeamMemberTarget> teamMemberTargets = teamMemberTargetService.listByBillBelong(
teamBillCycle.getTeamId(), teamBillCycle.getBillBelong());
if (CollectionUtils.isEmpty(teamMemberTargets)) {
return Lists.newArrayList();
}
Integer monthlyBillBelong = TeamBillCycleUtils.extractMonth(teamBillCycle.getBillBelong());
List<TeamMemberTarget> 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<Long, UserProfileDTO> userProfileMap = userProfileAppConvertor.toMapUserProfileDTO(
userProfileGateway.mapByUserIds(