fix:工作负载优化
This commit is contained in:
@@ -219,4 +219,9 @@ public class SpdmTaskVo extends BaseEntity {
|
||||
@JsonProperty(value = "payAttentionMemberList")
|
||||
private List<CIDUserResp> payAttentionMemberList;
|
||||
|
||||
/**
|
||||
* 仿真执行人userId
|
||||
*/
|
||||
private String eUserId;
|
||||
|
||||
}
|
||||
|
||||
@@ -38,7 +38,7 @@ public interface SimulationTaskMapper extends BaseMapper<SimulationTask> {
|
||||
|
||||
int updateTask(@Param("task") SpdmTaskVo task);
|
||||
|
||||
List<SimulationTask> getUserExecTaskWithinTimeFrame(@Param("req") UserWorkloadReq req);
|
||||
List<SpdmTaskVo> getUserExecTaskWithinTimeFrame(@Param("req") UserWorkloadReq req);
|
||||
|
||||
SpdmTaskVo getTaskById(@Param("id") Long id);
|
||||
|
||||
|
||||
@@ -28,6 +28,8 @@ public class UserWorkloadReq {
|
||||
|
||||
private Long userId;
|
||||
|
||||
private List<Long> userIdList;
|
||||
|
||||
/*
|
||||
* 用户组id
|
||||
*/
|
||||
|
||||
@@ -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<SimulationTask> taskList;
|
||||
private List<SpdmTaskVo> taskList;
|
||||
|
||||
}
|
||||
|
||||
@@ -1908,6 +1908,8 @@ public class TaskServiceImpl implements ITaskService {
|
||||
@Override
|
||||
public SdmResponse<List<UserWorkloadResp>> listUserWorkloadsWithinTimeFrame(UserWorkloadReq req) {
|
||||
List<UserWorkloadResp> userWorkloadRespList = new ArrayList<>();
|
||||
List<CIDUserResp> 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<Long> 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<String> 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<List<CIDUserResp>> cidUserResp = sysUserFeignClient.listUserByIds(UserQueryReq.builder().userIds(req.getUserIds().stream().map(Long::valueOf).toList()).build());
|
||||
List<CIDUserResp> 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<SimulationTask> 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<Long> userIds = userList.stream().map(CIDUserResp::getUserId).toList();
|
||||
Map<Long, String> userNameMap = userList.stream().collect(Collectors.toMap(
|
||||
CIDUserResp::getUserId,
|
||||
CIDUserResp::getNickname
|
||||
));
|
||||
req.setUserIdList(userIds);
|
||||
List<SpdmTaskVo> taskList = mapper.getUserExecTaskWithinTimeFrame(req);
|
||||
if (CollectionUtils.isNotEmpty(taskList)) {
|
||||
Map<String, List<SpdmTaskVo>> userTaskMap = taskList.stream().collect(Collectors.groupingBy(SpdmTaskVo::getEUserId));
|
||||
for(String eUserId : userTaskMap.keySet()){
|
||||
List<SpdmTaskVo> 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()
|
||||
|
||||
@@ -216,15 +216,21 @@
|
||||
|
||||
</select>
|
||||
|
||||
<select id="getUserExecTaskWithinTimeFrame" resultType="com.sdm.project.model.entity.SimulationTask">
|
||||
<select id="getUserExecTaskWithinTimeFrame" resultType="com.sdm.common.entity.resp.project.SpdmTaskVo">
|
||||
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 (
|
||||
<foreach collection='req.userIdList' item='userId' index='index' separator=','>
|
||||
#{userId}
|
||||
</foreach>
|
||||
)
|
||||
|
||||
<if test="req.beginTime != null and req.beginTime != ''">
|
||||
<![CDATA[
|
||||
and STR_TO_DATE(st.begin_time,'%Y-%m-%d') >= #{req.beginTime}
|
||||
|
||||
Reference in New Issue
Block a user