任务管理查询修改
This commit is contained in:
@@ -0,0 +1,21 @@
|
||||
package com.sdm.common.validator.annotation;
|
||||
|
||||
import com.sdm.common.validator.validator.EnumValueValidator;
|
||||
import jakarta.validation.Constraint;
|
||||
import jakarta.validation.Payload;
|
||||
|
||||
import java.lang.annotation.ElementType;
|
||||
import java.lang.annotation.Retention;
|
||||
import java.lang.annotation.RetentionPolicy;
|
||||
import java.lang.annotation.Target;
|
||||
|
||||
@Target({ElementType.FIELD, ElementType.PARAMETER})
|
||||
@Retention(RetentionPolicy.RUNTIME)
|
||||
@Constraint(validatedBy = EnumValueValidator.class)
|
||||
public @interface EnumValue {
|
||||
String message() default "无效的枚举值";
|
||||
Class<?>[] groups() default {};
|
||||
Class<? extends Payload>[] payload() default {};
|
||||
Class<? extends Enum<?>> enumClass();
|
||||
String enumMethod() default "isValid";
|
||||
}
|
||||
@@ -0,0 +1,34 @@
|
||||
package com.sdm.common.validator.validator;
|
||||
|
||||
import com.sdm.common.validator.annotation.EnumValue;
|
||||
import jakarta.validation.ConstraintValidator;
|
||||
import jakarta.validation.ConstraintValidatorContext;
|
||||
|
||||
import java.lang.reflect.Method;
|
||||
|
||||
public class EnumValueValidator implements ConstraintValidator<EnumValue, Object> {
|
||||
|
||||
private Class<? extends Enum<?>> enumClass;
|
||||
private String enumMethod;
|
||||
|
||||
@Override
|
||||
public void initialize(EnumValue constraintAnnotation) {
|
||||
enumClass = constraintAnnotation.enumClass();
|
||||
enumMethod = constraintAnnotation.enumMethod();
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isValid(Object value, ConstraintValidatorContext context) {
|
||||
if (value == null) {
|
||||
return true;
|
||||
}
|
||||
try {
|
||||
// 通过反射调用枚举的校验方法
|
||||
Method method = enumClass.getMethod(enumMethod, value.getClass());
|
||||
Boolean result = (Boolean) method.invoke(null, value);
|
||||
return result != null && result;
|
||||
} catch (Exception e) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,29 @@
|
||||
package com.sdm.project.common;
|
||||
|
||||
public enum TaskQryTypeEnum {
|
||||
EXEC(0, "我执行的"),
|
||||
ATTENTION(1, "我关注的"),
|
||||
ALL(2, "所有"),
|
||||
ISSUE(3, "我分发的");
|
||||
|
||||
private final Integer code;
|
||||
private final String desc;
|
||||
|
||||
TaskQryTypeEnum(Integer code, String desc) {
|
||||
this.code = code;
|
||||
this.desc = desc;
|
||||
}
|
||||
|
||||
public Integer getCode() {
|
||||
return code;
|
||||
}
|
||||
|
||||
public static boolean isValid(Integer code) {
|
||||
for (TaskQryTypeEnum type : values()) {
|
||||
if (type.getCode() == code) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
}
|
||||
@@ -69,7 +69,7 @@ public class SimulationTaskController {
|
||||
*/
|
||||
@PostMapping("/list")
|
||||
@Operation(summary = "任务列表(我执行的、我关注的、所有)", description = "任务列表(我执行的、我关注的、所有)")
|
||||
public SdmResponse list(@RequestBody SpdmTaskListReq req) {
|
||||
public SdmResponse list(@Validated @RequestBody SpdmTaskListReq req) {
|
||||
return taskService.list(req);
|
||||
}
|
||||
|
||||
@@ -80,7 +80,7 @@ public class SimulationTaskController {
|
||||
*/
|
||||
@PostMapping("/count")
|
||||
@Operation(summary = "任务列表计数(我执行的、我关注的、所有)", description = "任务列表计数(我执行的、我关注的、所有)")
|
||||
public SdmResponse countByStatus(@RequestBody SpdmTaskListReq req) {
|
||||
public SdmResponse countByStatus(@Validated @RequestBody SpdmTaskListReq req) {
|
||||
return taskService.countByStatus(req);
|
||||
}
|
||||
|
||||
|
||||
@@ -2,6 +2,8 @@ package com.sdm.project.model.req;
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
|
||||
import com.fasterxml.jackson.annotation.JsonProperty;
|
||||
import com.sdm.common.validator.annotation.EnumValue;
|
||||
import com.sdm.project.common.TaskQryTypeEnum;
|
||||
import com.sdm.project.model.bo.TaskNodeTag;
|
||||
import jakarta.validation.constraints.NotNull;
|
||||
import lombok.Data;
|
||||
@@ -23,6 +25,7 @@ public class SpdmTaskListReq {
|
||||
* 任务类型,0:我执行的 1:我关注的 2:所有 3-我分发的
|
||||
*/
|
||||
@NotNull(message = "type不能为空")
|
||||
@EnumValue(enumClass = TaskQryTypeEnum.class, message = "type任务类型无效")
|
||||
private Integer type;
|
||||
|
||||
/**
|
||||
|
||||
@@ -86,12 +86,9 @@ public class TaskServiceImpl implements ITaskService {
|
||||
log.error("公司和工号都不能为空");
|
||||
return SdmResponse.failed("公司和工号都不能为空");
|
||||
}
|
||||
// 0:我执行的 1:我关注的 2:所有
|
||||
// 0:我执行的 1:我关注的 2:所有 3:我分发的
|
||||
Integer type = req.getType();
|
||||
if (type != 0 && type != 1 && type != 2) {
|
||||
log.error("type必须为0或1或2");
|
||||
return SdmResponse.failed("公司和工号都不能为空");
|
||||
}
|
||||
|
||||
if (StringUtils.isNotBlank(req.getExeStatus())) {
|
||||
req.setExeStatusList(Arrays.stream(req.getExeStatus().split(",")).toList());
|
||||
}
|
||||
@@ -246,12 +243,10 @@ public class TaskServiceImpl implements ITaskService {
|
||||
}
|
||||
// task.setPMemberList(eachMemberList.stream().filter(member -> MemberTypeEnum.PRINCIPAL.getCode().equals(member.getType())).toList());
|
||||
// task.setEMemberList(eachMemberList.stream().filter(member -> MemberTypeEnum.EXECUTOR.getCode().equals(member.getType())).toList());
|
||||
List<Long> pUserIdList = eachMemberList.stream().filter(member -> MemberTypeEnum.PRINCIPAL.getCode().equals(member.getType())).map(SpdmTaskMemberVo::getUserId).distinct().toList();
|
||||
// 由于我分发的、我执行的、我关注的、所有任务,都需要展示仿真负责人,故将负责人抽成方法调用
|
||||
setPMemberList(task, eachMemberList);
|
||||
// 只有所有任务需要展示仿真执行人
|
||||
List<Long> eUserIdList = eachMemberList.stream().filter(member -> MemberTypeEnum.EXECUTOR.getCode().equals(member.getType())).map(SpdmTaskMemberVo::getUserId).distinct().toList();
|
||||
if (CollectionUtils.isNotEmpty(pUserIdList)) {
|
||||
SdmResponse<List<CIDUserResp>> cidUserResp= sysUserFeignClient.listUserByIds(UserQueryReq.builder().userIds(pUserIdList).build());
|
||||
task.setPMemberList(cidUserResp.getData());
|
||||
}
|
||||
if (CollectionUtils.isNotEmpty(eUserIdList)) {
|
||||
SdmResponse<List<CIDUserResp>> cidUserResp= sysUserFeignClient.listUserByIds(UserQueryReq.builder().userIds(eUserIdList).build());
|
||||
task.setEMemberList(cidUserResp.getData());
|
||||
@@ -304,6 +299,30 @@ public class TaskServiceImpl implements ITaskService {
|
||||
}
|
||||
List<String> myTaskIdList = taskMemberVoList.stream().map(SpdmTaskMemberVo::getTaskId).toList();
|
||||
taskList = taskList.stream().filter(task -> myTaskIdList.contains(task.getUuid())).toList();
|
||||
|
||||
for (SpdmTaskVo task : taskList) {
|
||||
setPMemberList(task, taskMemberVoList);
|
||||
}
|
||||
}
|
||||
} else if (type == 3) {
|
||||
// 仿真负责人是当前用户
|
||||
if (CollectionUtils.isNotEmpty(taskMemberVoList)) {
|
||||
SdmResponse<CIDUserResp> cidUserResp = sysUserFeignClient.queryUserDetail(UserQueryReq.builder().userId(userId).build());
|
||||
if (ObjectUtils.isEmpty(cidUserResp.getData())) {
|
||||
log.error("根据jobNumber:{},未查询到用户", userId);
|
||||
return SdmResponse.success(new ArrayList<>());
|
||||
}
|
||||
taskMemberVoList = taskMemberVoList.stream().filter(taskMember -> MemberTypeEnum.PRINCIPAL.getCode().equals(taskMember.getType()) && userId.equals(taskMember.getUserId())).toList();
|
||||
if (CollectionUtils.isEmpty(taskMemberVoList)) {
|
||||
log.error("任务列表中未查询到仿真负责人");
|
||||
return SdmResponse.success(new ArrayList<>());
|
||||
}
|
||||
List<String> myTaskIdList = taskMemberVoList.stream().map(SpdmTaskMemberVo::getTaskId).toList();
|
||||
taskList = taskList.stream().filter(task -> myTaskIdList.contains(task.getUuid())).toList();
|
||||
|
||||
for (SpdmTaskVo task : taskList) {
|
||||
setPMemberList(task, taskMemberVoList);
|
||||
}
|
||||
}
|
||||
} else {
|
||||
SdmResponse<CIDUserResp> cidUserResp = sysUserFeignClient.queryUserDetail(UserQueryReq.builder().userId(userId).build());
|
||||
@@ -327,6 +346,9 @@ public class TaskServiceImpl implements ITaskService {
|
||||
List<String> myTaskIdList = taskAttentionMemberVoList.stream().map(SpdmTaskAttentionMemberVo::getTaskId).toList();
|
||||
taskList = taskList.stream().filter(task -> myTaskIdList.contains(task.getUuid())).toList();
|
||||
|
||||
for (SpdmTaskVo task : taskList) {
|
||||
setPMemberList(task, taskMemberVoList);
|
||||
}
|
||||
}
|
||||
if (CollectionUtils.isEmpty(taskList)) {
|
||||
log.error("taskList为空");
|
||||
@@ -442,6 +464,15 @@ public class TaskServiceImpl implements ITaskService {
|
||||
return SdmResponse.success(jsonObject);
|
||||
}
|
||||
|
||||
private void setPMemberList(SpdmTaskVo task, List<SpdmTaskMemberVo> eachMemberList) {
|
||||
// 由于我分发的、我执行的、我关注的、所有任务,都需要展示仿真负责人,故将负责人抽成方法调用
|
||||
List<Long> pUserIdList = eachMemberList.stream().filter(member -> MemberTypeEnum.PRINCIPAL.getCode().equals(member.getType())).map(SpdmTaskMemberVo::getUserId).distinct().toList();
|
||||
if (CollectionUtils.isNotEmpty(pUserIdList)) {
|
||||
SdmResponse<List<CIDUserResp>> cidUserResp= sysUserFeignClient.listUserByIds(UserQueryReq.builder().userIds(pUserIdList).build());
|
||||
task.setPMemberList(cidUserResp.getData());
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public SdmResponse countByStatus(SpdmTaskListReq req) {
|
||||
String tenantId = ThreadLocalContext.getCompany();
|
||||
@@ -451,12 +482,8 @@ public class TaskServiceImpl implements ITaskService {
|
||||
log.error("公司和工号都不能为空");
|
||||
return SdmResponse.failed("公司和工号都不能为空");
|
||||
}
|
||||
// 0:我执行的 1:我关注的 2:所有
|
||||
// 0:我执行的 1:我关注的 2:所有 3:我分发的
|
||||
Integer type = req.getType();
|
||||
if (type != 0 && type != 1 && type != 2) {
|
||||
log.error("type必须为0或1或2");
|
||||
return SdmResponse.failed("公司和工号都不能为空");
|
||||
}
|
||||
|
||||
List<SpdmTaskVo> allTaskList = mapper.getTaskList(tenantId, req);
|
||||
// 今明任务
|
||||
@@ -513,16 +540,26 @@ public class TaskServiceImpl implements ITaskService {
|
||||
log.error("根据jobNumber:{},未查询到用户", userId);
|
||||
return SdmResponse.success(new ArrayList<>());
|
||||
}
|
||||
CIDUserResp cidUser = cidUserResp.getData();
|
||||
taskMemberVoList = taskMemberVoList.stream().filter(taskMember -> MemberTypeEnum.EXECUTOR.getCode().equals(taskMember.getType())).toList();
|
||||
taskMemberVoList = taskMemberVoList.stream().filter(taskMember -> MemberTypeEnum.EXECUTOR.getCode().equals(taskMember.getType()) && userId.equals(taskMember.getUserId())).toList();
|
||||
if (CollectionUtils.isEmpty(taskMemberVoList)) {
|
||||
log.error("任务列表中未查询到仿真执行人1");
|
||||
log.error("任务列表中未查询到仿真执行人");
|
||||
return SdmResponse.success(new ArrayList<>());
|
||||
}
|
||||
Long curUserId = cidUser.getUserId();
|
||||
taskMemberVoList = taskMemberVoList.stream().filter(member -> curUserId.equals(member.getUserId())).toList();
|
||||
List<String> myTaskIdList = taskMemberVoList.stream().map(SpdmTaskMemberVo::getTaskId).toList();
|
||||
taskList = taskList.stream().filter(task -> myTaskIdList.contains(task.getUuid())).toList();
|
||||
countTask(taskList, todayTmrTaskList, taskCountResp);
|
||||
}
|
||||
} else if (type == 3) {
|
||||
// 仿真负责人是当前用户
|
||||
if (CollectionUtils.isNotEmpty(taskMemberVoList)) {
|
||||
SdmResponse<CIDUserResp> cidUserResp = sysUserFeignClient.queryUserDetail(UserQueryReq.builder().userId(userId).build());
|
||||
if (ObjectUtils.isEmpty(cidUserResp.getData())) {
|
||||
log.error("根据jobNumber:{},未查询到用户", userId);
|
||||
return SdmResponse.success(new ArrayList<>());
|
||||
}
|
||||
taskMemberVoList = taskMemberVoList.stream().filter(taskMember -> MemberTypeEnum.PRINCIPAL.getCode().equals(taskMember.getType()) && userId.equals(taskMember.getUserId())).toList();
|
||||
if (CollectionUtils.isEmpty(taskMemberVoList)) {
|
||||
log.error("任务列表中未查询到仿真执行人2");
|
||||
log.error("任务列表中未查询到仿真负责人");
|
||||
return SdmResponse.success(new ArrayList<>());
|
||||
}
|
||||
List<String> myTaskIdList = taskMemberVoList.stream().map(SpdmTaskMemberVo::getTaskId).toList();
|
||||
|
||||
@@ -84,7 +84,7 @@ public class SysUserController implements ISysUserFeignClient {
|
||||
*/
|
||||
@Operation(summary = "根据用户ids查询用户列表")
|
||||
@PostMapping("/listUserByIds")
|
||||
public SdmResponse<List<CIDUserResp>> listUserByIds(@Parameter(description = "用户查询请求参数") @RequestBody @Validated UserQueryReq req) {
|
||||
public SdmResponse<List<CIDUserResp>> listUserByIds(@Parameter(description = "用户查询请求参数") @RequestBody UserQueryReq req) {
|
||||
return ISysUserService.listUserByIds(req);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user