新增历史团队工资字段

This commit is contained in:
tianfeng 2025-12-02 20:32:51 +08:00
parent dd8e57615c
commit 273d35884d
4 changed files with 42 additions and 10 deletions

View File

@ -84,7 +84,7 @@ public class TeamMemberWorkQryExe {
LocalDateTimeUtils.convert(teamMember.getCreateTime().getTime()), "yyyyMM"));
List<TeamBillCycle> 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;
}

View File

@ -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<TeamMemberWorkBillCO> targets;
/**
* 历史工资
*/
private BigDecimal historySalary;
}

View File

@ -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);
}

View File

@ -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<TeamMemberTarget> 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月"