From 273d35884d3f6ea1624aea0ea9c116ad42406fc0 Mon Sep 17 00:00:00 2001 From: tianfeng <769204422@qq.com> Date: Tue, 2 Dec 2025 20:32:51 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E5=8E=86=E5=8F=B2=E5=9B=A2?= =?UTF-8?q?=E9=98=9F=E5=B7=A5=E8=B5=84=E5=AD=97=E6=AE=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../team/query/TeamMemberWorkQryExe.java | 8 ++++-- .../clientobject/team/TeamMemberWorkCO.java | 7 +++++ .../team/team/TeamMemberTargetService.java | 10 ++++--- .../impl/TeamMemberTargetServiceImpl.java | 27 ++++++++++++++++--- 4 files changed, 42 insertions(+), 10 deletions(-) diff --git a/rc-service/rc-service-other/other-application/src/main/java/com/red/circle/other/app/command/team/query/TeamMemberWorkQryExe.java b/rc-service/rc-service-other/other-application/src/main/java/com/red/circle/other/app/command/team/query/TeamMemberWorkQryExe.java index 4f8d21c2..3f74fd0c 100644 --- a/rc-service/rc-service-other/other-application/src/main/java/com/red/circle/other/app/command/team/query/TeamMemberWorkQryExe.java +++ b/rc-service/rc-service-other/other-application/src/main/java/com/red/circle/other/app/command/team/query/TeamMemberWorkQryExe.java @@ -84,7 +84,7 @@ public class TeamMemberWorkQryExe { LocalDateTimeUtils.convert(teamMember.getCreateTime().getTime()), "yyyyMM")); List teamBillCycles = teamBillCycleService.listByGeBillBelong( - teamMember.getTeamId(), billBelong, 2); + teamMember.getTeamId(), billBelong, 5); if (CollectionUtils.isEmpty(teamBillCycles)) { return new TeamMemberWorkCO() @@ -108,6 +108,9 @@ public class TeamMemberWorkQryExe { unpaidBillCycles.stream().map(TeamBillCycle::getRegion).collect(Collectors.toSet()) ); + BigDecimal settledAndSumSalary = teamMemberTargetService.listMemberSettledAndSumSalary(teamMember.getTeamId(), teamMember.getMemberId(), teamMember.getRole()); + + TeamMemberWorkCO teamMemberWorkCO = new TeamMemberWorkCO() .setMemberProfile(userProfile) .setTargets(teamBillCycles.stream() @@ -161,7 +164,8 @@ public class TeamMemberWorkQryExe { ); return co; }).collect(Collectors.toList()) - ); + ) + .setHistorySalary(settledAndSumSalary); return teamMemberWorkCO; } diff --git a/rc-service/rc-service-other/other-client/src/main/java/com/red/circle/other/app/dto/clientobject/team/TeamMemberWorkCO.java b/rc-service/rc-service-other/other-client/src/main/java/com/red/circle/other/app/dto/clientobject/team/TeamMemberWorkCO.java index c93fe999..81b2b153 100644 --- a/rc-service/rc-service-other/other-client/src/main/java/com/red/circle/other/app/dto/clientobject/team/TeamMemberWorkCO.java +++ b/rc-service/rc-service-other/other-client/src/main/java/com/red/circle/other/app/dto/clientobject/team/TeamMemberWorkCO.java @@ -2,6 +2,8 @@ package com.red.circle.other.app.dto.clientobject.team; import com.red.circle.framework.dto.ClientObject; import com.red.circle.other.inner.model.dto.user.UserProfileDTO; + +import java.math.BigDecimal; import java.util.List; import lombok.Data; import lombok.EqualsAndHashCode; @@ -27,4 +29,9 @@ public class TeamMemberWorkCO extends ClientObject { */ private List targets; + /** + * 历史工资 + */ + private BigDecimal historySalary; + } diff --git a/rc-service/rc-service-other/other-infrastructure/src/main/java/com/red/circle/other/infra/database/mongo/service/team/team/TeamMemberTargetService.java b/rc-service/rc-service-other/other-infrastructure/src/main/java/com/red/circle/other/infra/database/mongo/service/team/team/TeamMemberTargetService.java index 1698b217..c4a09a45 100644 --- a/rc-service/rc-service-other/other-infrastructure/src/main/java/com/red/circle/other/infra/database/mongo/service/team/team/TeamMemberTargetService.java +++ b/rc-service/rc-service-other/other-infrastructure/src/main/java/com/red/circle/other/infra/database/mongo/service/team/team/TeamMemberTargetService.java @@ -2,10 +2,7 @@ package com.red.circle.other.infra.database.mongo.service.team.team; import com.red.circle.other.infra.database.mongo.entity.team.team.TeamMemberTarget; import com.red.circle.other.infra.database.mongo.dto.team.query.TeamMemberTargetQuery; -import com.red.circle.other.inner.enums.team.TeamMemberTargetIndex; -import com.red.circle.other.inner.enums.team.TeamMemberTargetSettlementResult; -import com.red.circle.other.inner.enums.team.TeamMemberTargetStatus; -import com.red.circle.other.inner.enums.team.TeamSalaryStatisticsCO; +import com.red.circle.other.inner.enums.team.*; import java.math.BigDecimal; import java.util.List; @@ -248,4 +245,9 @@ public interface TeamMemberTargetService { */ TeamMemberTarget aggregateMonthlyTarget(Long teamId, Long userId, Integer monthlyBillBelong); + /** + * 团队用户已结算的工资 + */ + BigDecimal listMemberSettledAndSumSalary(Long teamId, Long userId, TeamMemberRole role); + } diff --git a/rc-service/rc-service-other/other-infrastructure/src/main/java/com/red/circle/other/infra/database/mongo/service/team/team/impl/TeamMemberTargetServiceImpl.java b/rc-service/rc-service-other/other-infrastructure/src/main/java/com/red/circle/other/infra/database/mongo/service/team/team/impl/TeamMemberTargetServiceImpl.java index a37adb65..44dc1eb2 100644 --- a/rc-service/rc-service-other/other-infrastructure/src/main/java/com/red/circle/other/infra/database/mongo/service/team/team/impl/TeamMemberTargetServiceImpl.java +++ b/rc-service/rc-service-other/other-infrastructure/src/main/java/com/red/circle/other/infra/database/mongo/service/team/team/impl/TeamMemberTargetServiceImpl.java @@ -10,10 +10,7 @@ import com.red.circle.framework.mybatis.constant.PageConstant; import com.red.circle.other.infra.database.mongo.entity.team.team.TeamMemberTarget; import com.red.circle.other.infra.database.mongo.dto.team.query.TeamMemberTargetQuery; import com.red.circle.other.infra.database.mongo.service.team.team.TeamMemberTargetService; -import com.red.circle.other.inner.enums.team.TeamMemberTargetIndex; -import com.red.circle.other.inner.enums.team.TeamMemberTargetSettlementResult; -import com.red.circle.other.inner.enums.team.TeamMemberTargetStatus; -import com.red.circle.other.inner.enums.team.TeamSalaryStatisticsCO; +import com.red.circle.other.inner.enums.team.*; import com.red.circle.tool.core.collection.CollectionUtils; import com.red.circle.tool.core.date.TimestampUtils; import com.red.circle.tool.core.date.ZonedDateTimeAsiaRiyadhUtils; @@ -806,6 +803,28 @@ public class TeamMemberTargetServiceImpl implements TeamMemberTargetService { return aggregated; } + @Override + public BigDecimal listMemberSettledAndSumSalary(Long teamId, Long userId, TeamMemberRole role) { + Query query = new Query(); + query.addCriteria(Criteria.where("teamId").is(teamId)) + .addCriteria(Criteria.where("userId").is(userId)) + .addCriteria(Criteria.where("status").is(TeamMemberTargetStatus.CREDITED)); + + List targets = mongoTemplate.find(query, TeamMemberTarget.class); + + return targets.stream() + .map(TeamMemberTarget::getSettlementResult) + .filter(Objects::nonNull) + .map(result -> { + if (role.eq(TeamMemberRole.OWN) || role.eq(TeamMemberRole.ADMIN)) { + return result.getTotalSalary() != null ? result.getTotalSalary() : BigDecimal.ZERO; + } else { + return result.getMemberSalary() != null ? result.getMemberSalary() : BigDecimal.ZERO; + } + }) + .reduce(BigDecimal.ZERO, BigDecimal::add); + } + /** * 生成月度账单标题 * 202511 -> "2025年11月"