diff --git a/common/src/main/java/com/sdm/common/entity/resp/project/SpdmTaskVo.java b/common/src/main/java/com/sdm/common/entity/resp/project/SpdmTaskVo.java index 22671385..67463d12 100644 --- a/common/src/main/java/com/sdm/common/entity/resp/project/SpdmTaskVo.java +++ b/common/src/main/java/com/sdm/common/entity/resp/project/SpdmTaskVo.java @@ -219,4 +219,9 @@ public class SpdmTaskVo extends BaseEntity { @JsonProperty(value = "payAttentionMemberList") private List payAttentionMemberList; + /** + * 仿真执行人userId + */ + private String eUserId; + } diff --git a/project/src/main/java/com/sdm/project/dao/SimulationTaskMapper.java b/project/src/main/java/com/sdm/project/dao/SimulationTaskMapper.java index 0bd73c2e..7959dc2c 100644 --- a/project/src/main/java/com/sdm/project/dao/SimulationTaskMapper.java +++ b/project/src/main/java/com/sdm/project/dao/SimulationTaskMapper.java @@ -38,7 +38,7 @@ public interface SimulationTaskMapper extends BaseMapper { int updateTask(@Param("task") SpdmTaskVo task); - List getUserExecTaskWithinTimeFrame(@Param("req") UserWorkloadReq req); + List getUserExecTaskWithinTimeFrame(@Param("req") UserWorkloadReq req); SpdmTaskVo getTaskById(@Param("id") Long id); diff --git a/project/src/main/java/com/sdm/project/model/req/UserWorkloadReq.java b/project/src/main/java/com/sdm/project/model/req/UserWorkloadReq.java index 99a05b67..a8878089 100644 --- a/project/src/main/java/com/sdm/project/model/req/UserWorkloadReq.java +++ b/project/src/main/java/com/sdm/project/model/req/UserWorkloadReq.java @@ -28,6 +28,8 @@ public class UserWorkloadReq { private Long userId; + private List userIdList; + /* * 用户组id */ diff --git a/project/src/main/java/com/sdm/project/model/resp/UserWorkloadResp.java b/project/src/main/java/com/sdm/project/model/resp/UserWorkloadResp.java index 867b6c6a..66720a22 100644 --- a/project/src/main/java/com/sdm/project/model/resp/UserWorkloadResp.java +++ b/project/src/main/java/com/sdm/project/model/resp/UserWorkloadResp.java @@ -1,5 +1,6 @@ package com.sdm.project.model.resp; +import com.sdm.common.entity.resp.project.SpdmTaskVo; import com.sdm.project.model.entity.SimulationTask; import lombok.Data; @@ -31,6 +32,6 @@ public class UserWorkloadResp { /** * 任务列表 */ - private List taskList; + private List taskList; } diff --git a/project/src/main/java/com/sdm/project/service/impl/TaskServiceImpl.java b/project/src/main/java/com/sdm/project/service/impl/TaskServiceImpl.java index bd745cc9..5cde80d1 100644 --- a/project/src/main/java/com/sdm/project/service/impl/TaskServiceImpl.java +++ b/project/src/main/java/com/sdm/project/service/impl/TaskServiceImpl.java @@ -1908,6 +1908,8 @@ public class TaskServiceImpl implements ITaskService { @Override public SdmResponse> listUserWorkloadsWithinTimeFrame(UserWorkloadReq req) { List userWorkloadRespList = new ArrayList<>(); + List userList = new ArrayList<>(); + if (CollectionUtils.isEmpty(req.getUserIds()) && StringUtils.isEmpty(req.getUserGroupId())) { UserListReq userListReq = new UserListReq(); userListReq.setTenantId(ThreadLocalContext.getTenantId()); @@ -1917,8 +1919,7 @@ public class TaskServiceImpl implements ITaskService { if (!pageDataRespSdmResponse.isSuccess()) { return SdmResponse.success(); } - List userIds = pageDataRespSdmResponse.getData().getData().stream().map(CIDUserResp::getUserId).toList(); - req.setUserIds(userIds.stream().map(String::valueOf).toList()); + userList.addAll(pageDataRespSdmResponse.getData().getData()); } else if (CollectionUtils.isEmpty(req.getUserIds()) && StringUtils.isNotEmpty(req.getUserGroupId())) { // 查询用户组下所有成员 QueryGroupDetailReq groupDetailReq = new QueryGroupDetailReq(); @@ -1930,26 +1931,31 @@ public class TaskServiceImpl implements ITaskService { if (response.isSuccess() && ObjectUtils.isNotEmpty(response.getData()) && ObjectUtils.isNotEmpty(response.getData().getUsers()) && ObjectUtils.isNotEmpty(response.getData().getUsers().getData())) { - List userIds = response.getData().getUsers().getData().stream() - .map(u -> u.getUserId() == null ? null : String.valueOf(u.getUserId())) - .toList(); - req.setUserIds(userIds); + userList.addAll(response.getData().getUsers().getData()); } } - if (CollectionUtils.isNotEmpty(req.getUserIds())) { - SdmResponse> cidUserResp = sysUserFeignClient.listUserByIds(UserQueryReq.builder().userIds(req.getUserIds().stream().map(Long::valueOf).toList()).build()); - List userList = cidUserResp.getData(); - for (CIDUserResp userResp : userList) { - UserWorkloadResp workloadResp = new UserWorkloadResp(); - workloadResp.setUserId(String.valueOf(userResp.getUserId())); - workloadResp.setUserName(userResp.getNickname()); - req.setUserId(userResp.getUserId()); - List taskList = mapper.getUserExecTaskWithinTimeFrame(req); - workloadResp.setTaskNum(taskList.size()); - workloadResp.setWorkNum(taskList.stream().filter(i -> Arrays.asList(TaskExeStatusEnum.NO_STARTED.getCode(), TaskExeStatusEnum.IN_PROGRESS.getCode()).contains(i.getExeStatus())).toList().size()); - workloadResp.setWorkload(taskList.stream().filter(i -> i.getDays() != null).mapToDouble(SimulationTask::getDays).sum()); - workloadResp.setTaskList(taskList); - userWorkloadRespList.add(workloadResp); + if (CollectionUtils.isNotEmpty(userList)) { + List userIds = userList.stream().map(CIDUserResp::getUserId).toList(); + Map userNameMap = userList.stream().collect(Collectors.toMap( + CIDUserResp::getUserId, + CIDUserResp::getNickname + )); + req.setUserIdList(userIds); + List taskList = mapper.getUserExecTaskWithinTimeFrame(req); + if (CollectionUtils.isNotEmpty(taskList)) { + Map> userTaskMap = taskList.stream().collect(Collectors.groupingBy(SpdmTaskVo::getEUserId)); + for(String eUserId : userTaskMap.keySet()){ + List userTaskList = userTaskMap.get(eUserId); + + UserWorkloadResp workloadResp = new UserWorkloadResp(); + workloadResp.setUserId(eUserId); + workloadResp.setUserName(userNameMap.get(Long.valueOf(eUserId))); + workloadResp.setTaskNum(userTaskList.size()); + workloadResp.setWorkNum(userTaskList.stream().filter(i -> Arrays.asList(TaskExeStatusEnum.NO_STARTED.getCode(), TaskExeStatusEnum.IN_PROGRESS.getCode()).contains(i.getExeStatus())).toList().size()); + workloadResp.setWorkload(userTaskList.stream().filter(i -> i.getDays() != null).mapToDouble(SpdmTaskVo::getDays).sum()); + workloadResp.setTaskList(userTaskList); + userWorkloadRespList.add(workloadResp); + } } } userWorkloadRespList = userWorkloadRespList.stream() diff --git a/project/src/main/resources/mapper/SimulationTaskMapper.xml b/project/src/main/resources/mapper/SimulationTaskMapper.xml index 4cce1f78..cc550fd7 100644 --- a/project/src/main/resources/mapper/SimulationTaskMapper.xml +++ b/project/src/main/resources/mapper/SimulationTaskMapper.xml @@ -216,15 +216,21 @@ - select - distinct st.* + distinct st.*, + stm.user_id as eUserId from simulation_task st inner join simulation_task_member stm on st.uuid = stm.task_id where stm.type = 1 - and stm.user_id = #{req.userId} + and stm.user_id in ( + + #{userId} + + ) + = #{req.beginTime}