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 4a69746b..f3558e56 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 @@ -91,8 +91,7 @@ public class TeamBillQryExe { */ public List executeAgent(AppIdLongCmd cmd) { - List teamBillCycles = teamBillCycleService.listLatestBill(cmd.getId(), - PageConstant.MAX_LIMIT_SIZE); + List teamBillCycles = teamBillCycleService.listLatestBill(cmd.getId(), 2); if (CollectionUtils.isEmpty(teamBillCycles)) { return Lists.newArrayList(); diff --git a/rc-service/rc-service-other/other-application/src/main/java/com/red/circle/other/app/command/team/query/TeamHistoryWorkCountQryExe.java b/rc-service/rc-service-other/other-application/src/main/java/com/red/circle/other/app/command/team/query/TeamHistoryWorkCountQryExe.java index 785a0ea4..8712f198 100644 --- a/rc-service/rc-service-other/other-application/src/main/java/com/red/circle/other/app/command/team/query/TeamHistoryWorkCountQryExe.java +++ b/rc-service/rc-service-other/other-application/src/main/java/com/red/circle/other/app/command/team/query/TeamHistoryWorkCountQryExe.java @@ -10,12 +10,11 @@ import com.red.circle.other.infra.database.mongo.entity.team.team.TeamMemberTarg import com.red.circle.other.infra.database.mongo.service.team.team.TeamBillCycleService; import com.red.circle.other.infra.database.mongo.service.team.team.TeamMemberService; import com.red.circle.other.infra.database.mongo.service.team.team.TeamMemberTargetService; -import java.util.Collection; -import java.util.List; -import java.util.Map; -import java.util.Objects; + +import java.util.*; import java.util.stream.Collectors; +import com.red.circle.other.inner.enums.team.TeamMemberTargetIndex; import com.red.circle.tool.core.date.ZonedDateTimeAsiaRiyadhUtils; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Component; @@ -65,17 +64,22 @@ public class TeamHistoryWorkCountQryExe { return null; } - List teamMemberTargets = teamMemberTargetService.listMemberTarget( + List teamMemberTargets = teamMemberTargetService.listMemberMonthlyTarget( teamMember.getTeamId(), teamMember.getMemberId(), ZonedDateTimeAsiaRiyadhUtils.nowYearMonthToInt()); if (CollectionUtils.isEmpty(teamMemberTargets)) { return null; } - Integer i = ZonedDateTimeAsiaRiyadhUtils.nowDateToInt(); - return teamMemberTargets.get(0).getDailyTargets().stream() + List dailyTargets = Lists.newArrayList(); + teamMemberTargets.forEach(teamMemberTarget -> { + dailyTargets.addAll(teamMemberTarget.getDailyTargets()); + }); + + return dailyTargets.stream() .filter(Objects::nonNull) .filter(e -> Objects.equals(e.getDateNumber(), ZonedDateTimeAsiaRiyadhUtils.nowDateToInt())) + .sorted(Comparator.comparing(TeamMemberTargetIndex::getUpdateTime).reversed()) .map(dailyTarget -> new AnchorWorkStatisticsCO() .setId(teamMemberTargets.get(0).getTimeId()) .setOwnTime(dailyTarget.getOwnOnlineTime()) 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 ed554d69..3824a967 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, PageConstant.MAX_LIMIT_SIZE); + teamMember.getTeamId(), billBelong, 2); if (CollectionUtils.isEmpty(teamBillCycles)) { return new TeamMemberWorkCO() 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 60c09ba0..591f5814 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 @@ -661,11 +661,13 @@ public class TeamMemberTargetServiceImpl implements TeamMemberTargetService { @Override public List listByMonthlyBillBelong(Long teamId, Integer monthlyBillBelong) { - // 构造查询条件:billBelong 前6位匹配月度账期 - // 例如:monthlyBillBelong = 202511,匹配 20251101 和 20251116 + long prefix = monthlyBillBelong.longValue(); + long min = prefix * 100L + 1; // 202511 → 20251101 + long max = (prefix + 1) * 100L - 1; // 202511 → 20251199 + Criteria criteria = Criteria.where("teamId").is(teamId) .and("history").is(Boolean.FALSE) - .and("billBelong").regex("^" + monthlyBillBelong); + .and("billBelong").gte(min).lte(max); return mongoTemplate.find(Query.query(criteria) .with(Sort.by(Order.asc("billBelong"))), @@ -674,11 +676,15 @@ public class TeamMemberTargetServiceImpl implements TeamMemberTargetService { @Override public List listMemberMonthlyTarget(Long teamId, Long userId, Integer monthlyBillBelong) { + long prefix = monthlyBillBelong.longValue(); + long min = prefix * 100L + 1; // 202511 → 20251101 + long max = (prefix + 1) * 100L - 1; // 202511 → 20251199 + // 查询指定用户在指定月份的所有目标记录 Criteria criteria = Criteria.where("teamId").is(teamId) .and("userId").is(userId) .and("history").is(Boolean.FALSE) - .and("billBelong").regex("^" + monthlyBillBelong); + .and("billBelong").gte(min).lte(max); return mongoTemplate.find(Query.query(criteria) .with(Sort.by(Order.asc("billBelong"))),