diff --git a/common/src/main/java/com/sdm/common/entity/constants/ProjectConstants.java b/common/src/main/java/com/sdm/common/entity/constants/ProjectConstants.java index b9dc53ee..472a5ec6 100644 --- a/common/src/main/java/com/sdm/common/entity/constants/ProjectConstants.java +++ b/common/src/main/java/com/sdm/common/entity/constants/ProjectConstants.java @@ -13,4 +13,8 @@ public class ProjectConstants { public static final int RED_LIGHTER = 1; //红色灯状态(结果异常) public static final int YELLOW_LIGHTER = 2;//黄色灯状态(结果不是特别理想) public static final int GREEN_LIGHTER = 3;//结果非常好 + + // 任务管理→我执行的 筛选今明任务 + public static final String TODAY_TMR_TASKS = "todayTmrTasks"; + } diff --git a/common/src/main/java/com/sdm/common/entity/pojo/system/SysGroupMember.java b/common/src/main/java/com/sdm/common/entity/pojo/system/SysGroupMember.java index f8cedd34..fe98dbd9 100644 --- a/common/src/main/java/com/sdm/common/entity/pojo/system/SysGroupMember.java +++ b/common/src/main/java/com/sdm/common/entity/pojo/system/SysGroupMember.java @@ -9,7 +9,7 @@ import lombok.EqualsAndHashCode; public class SysGroupMember extends BaseEntity { private String groupName; - private long groupId; + private Long groupId; private String userId; private String userName; } diff --git a/common/src/main/java/com/sdm/common/utils/Tools.java b/common/src/main/java/com/sdm/common/utils/Tools.java index 290d0b64..ac20ee4f 100644 --- a/common/src/main/java/com/sdm/common/utils/Tools.java +++ b/common/src/main/java/com/sdm/common/utils/Tools.java @@ -17,6 +17,7 @@ public class Tools { private static final String ALGORITHM = "AES"; private static final int KEY_SIZE = 128; private static final int CACHE_SIZE = 1024; + public static final String DATE_YYYY_MM_DD = "yyyy-MM-dd"; public static byte[] intToBytes(int value) { byte[] src = new byte[4]; diff --git a/project/src/main/java/com/sdm/project/controller/SimulationNodeController.java b/project/src/main/java/com/sdm/project/controller/SimulationNodeController.java index bd68d551..52d477fd 100644 --- a/project/src/main/java/com/sdm/project/controller/SimulationNodeController.java +++ b/project/src/main/java/com/sdm/project/controller/SimulationNodeController.java @@ -153,7 +153,7 @@ public class SimulationNodeController implements ISimuluationNodeFeignClient { */ @GetMapping("/getUserGroupProjectStatistics") @Operation(summary = "用户组项目统计", description = "用户组项目统计") - public SdmResponse getUserGroupProjectStatistics(@Parameter(description = "用户组ID")@RequestParam( value = "userGroupId" )@NotNull(message = "用户组ID(userGroupId)为必传参数,请补充后重试") Integer userGroupId, @Parameter(description = "用户ID")@RequestParam( value = "userId", required = false) Integer userId) { + public SdmResponse getUserGroupProjectStatistics(@Parameter(description = "用户组ID")@RequestParam( value = "userGroupId" )@NotNull(message = "用户组ID(userGroupId)为必传参数,请补充后重试") Long userGroupId, @Parameter(description = "用户ID")@RequestParam( value = "userId", required = false) Long userId) { return nodeService.getUserGroupProjectStatistics(userGroupId,userId); } diff --git a/project/src/main/java/com/sdm/project/controller/SimulationTaskController.java b/project/src/main/java/com/sdm/project/controller/SimulationTaskController.java index bfa62da9..7bc805d6 100644 --- a/project/src/main/java/com/sdm/project/controller/SimulationTaskController.java +++ b/project/src/main/java/com/sdm/project/controller/SimulationTaskController.java @@ -73,4 +73,15 @@ public class SimulationTaskController { return taskService.list(req); } + /** + * 任务列表根据不同执行状态计数(我执行的、我关注的、所有) + * @param req + * @return + */ + @PostMapping("/count") + @Operation(summary = "任务列表计数(我执行的、我关注的、所有)", description = "任务列表计数(我执行的、我关注的、所有)") + public SdmResponse countByStatus(@RequestBody SpdmTaskListReq req) { + return taskService.countByStatus(req); + } + } diff --git a/project/src/main/java/com/sdm/project/dao/SimulationNodeMapper.java b/project/src/main/java/com/sdm/project/dao/SimulationNodeMapper.java index 377845a0..00d5eb62 100644 --- a/project/src/main/java/com/sdm/project/dao/SimulationNodeMapper.java +++ b/project/src/main/java/com/sdm/project/dao/SimulationNodeMapper.java @@ -73,7 +73,7 @@ public interface SimulationNodeMapper extends BaseMapper { List getNodeListByIds(@Param("nodeIdList") List nodeIdList); - List getUserGroupProjectStatistics(@Param("userGroupId") Integer userGroupId, @Param("userId") Integer userId); + List getUserGroupProjectStatistics(@Param("userGroupId") Long userGroupId, @Param("userId") Long userId); List getUserGroupTaskCompleteStatistics(@Param("req") GetUserGroupTaskCompleteStatisticsReq req); 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 8eeff2a4..d25ea6f9 100644 --- a/project/src/main/java/com/sdm/project/dao/SimulationTaskMapper.java +++ b/project/src/main/java/com/sdm/project/dao/SimulationTaskMapper.java @@ -29,7 +29,7 @@ public interface SimulationTaskMapper extends BaseMapper { List taskList(@Param("req") SpdmAnalysisTaskListReq req, @Param("tenantId") String tenantId, @Param("allNodeIdList") List allNodeIdList, @Param("pos") int pos, @Param("limit") int limit); - void deleteAttentionByUserIdList(@Param("taskId") String taskId,@Param("userIdList") List userIdList); + void deleteAttentionByUserIdList(@Param("taskId") String taskId,@Param("userIdList") List userIdList); void saveAttentionList(@Param("attentionList") List attentionList); diff --git a/project/src/main/java/com/sdm/project/model/req/GetUserGroupTaskCompleteStatisticsReq.java b/project/src/main/java/com/sdm/project/model/req/GetUserGroupTaskCompleteStatisticsReq.java index 35d6f4d2..ee3fc9bd 100644 --- a/project/src/main/java/com/sdm/project/model/req/GetUserGroupTaskCompleteStatisticsReq.java +++ b/project/src/main/java/com/sdm/project/model/req/GetUserGroupTaskCompleteStatisticsReq.java @@ -12,10 +12,10 @@ import lombok.Data; public class GetUserGroupTaskCompleteStatisticsReq { @Schema(description = "用户组ID") @NotNull(message = "用户组ID不能为空") - private Integer userGroupId; + private Long userGroupId; @Schema(description = "用户ID") - private Integer userId; + private Long userId; @Schema(description = "标签1") private String tag1; diff --git a/project/src/main/java/com/sdm/project/model/req/SpdmDemandRelateMemberReq.java b/project/src/main/java/com/sdm/project/model/req/SpdmDemandRelateMemberReq.java index f10ec8ee..b67aa311 100644 --- a/project/src/main/java/com/sdm/project/model/req/SpdmDemandRelateMemberReq.java +++ b/project/src/main/java/com/sdm/project/model/req/SpdmDemandRelateMemberReq.java @@ -26,6 +26,6 @@ public class SpdmDemandRelateMemberReq extends BaseEntity { */ private String name; - private Integer userId; + private Long userId; } diff --git a/project/src/main/java/com/sdm/project/model/req/SpdmNodeRelateMemberReq.java b/project/src/main/java/com/sdm/project/model/req/SpdmNodeRelateMemberReq.java index b9771620..e5cc82d4 100644 --- a/project/src/main/java/com/sdm/project/model/req/SpdmNodeRelateMemberReq.java +++ b/project/src/main/java/com/sdm/project/model/req/SpdmNodeRelateMemberReq.java @@ -21,6 +21,6 @@ public class SpdmNodeRelateMemberReq extends BaseEntity { */ private String name; - private Integer userId; + private Long userId; } diff --git a/project/src/main/java/com/sdm/project/model/req/SpdmTaskAttentionReq.java b/project/src/main/java/com/sdm/project/model/req/SpdmTaskAttentionReq.java index 201155c6..f5328ac0 100644 --- a/project/src/main/java/com/sdm/project/model/req/SpdmTaskAttentionReq.java +++ b/project/src/main/java/com/sdm/project/model/req/SpdmTaskAttentionReq.java @@ -14,10 +14,10 @@ public class SpdmTaskAttentionReq extends BaseEntity { private String taskId; - private Integer userId; + private Long userId; - List addUserIdList; + List addUserIdList; - List cancelUserIdList; + List cancelUserIdList; } diff --git a/project/src/main/java/com/sdm/project/model/req/SpdmTaskListReq.java b/project/src/main/java/com/sdm/project/model/req/SpdmTaskListReq.java index 5dc8e0e2..ba8f2d78 100644 --- a/project/src/main/java/com/sdm/project/model/req/SpdmTaskListReq.java +++ b/project/src/main/java/com/sdm/project/model/req/SpdmTaskListReq.java @@ -6,6 +6,7 @@ import com.sdm.project.model.bo.TaskNodeTag; import jakarta.validation.constraints.NotNull; import lombok.Data; +import java.util.Date; import java.util.List; @JsonIgnoreProperties(ignoreUnknown = true) @@ -19,7 +20,7 @@ public class SpdmTaskListReq { private Integer size; /** - * 任务类型,0:所有 1:我执行的 2:我关注的 + * 任务类型,0:我执行的 1:我关注的 2:所有 */ @NotNull(message = "type不能为空") private Integer type; @@ -77,5 +78,13 @@ public class SpdmTaskListReq { */ private String finishTime; + /** + * 今明任务 筛选计划结束时间为今明两天的 + */ + private String todayTmrTasks; + /** + * 今天日期 + */ + private String todayTime; } diff --git a/project/src/main/java/com/sdm/project/model/resp/TaskCountResp.java b/project/src/main/java/com/sdm/project/model/resp/TaskCountResp.java new file mode 100644 index 00000000..38857db1 --- /dev/null +++ b/project/src/main/java/com/sdm/project/model/resp/TaskCountResp.java @@ -0,0 +1,35 @@ +package com.sdm.project.model.resp; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +@Data +public class TaskCountResp { + @Schema(description = "总数") + int total; + + @Schema(description = "今明任务") + int todayTmrTasks; + + @Schema(description = "进行中") + int inProgress; + + @Schema(description = "已逾期") + int postponed; + + @Schema(description = "未开始") + int noStarted; + + @Schema(description = "已完成") + int completed; + + @Schema(description = "已关闭") + int closed; + + @Schema(description = "已暂停") + int paused; + + @Schema(description = "已驳回") + int rejected; + +} diff --git a/project/src/main/java/com/sdm/project/model/vo/UserGroupDifficultyStatisticsVo.java b/project/src/main/java/com/sdm/project/model/vo/UserGroupDifficultyStatisticsVo.java index 07400dfa..24add54b 100644 --- a/project/src/main/java/com/sdm/project/model/vo/UserGroupDifficultyStatisticsVo.java +++ b/project/src/main/java/com/sdm/project/model/vo/UserGroupDifficultyStatisticsVo.java @@ -7,7 +7,7 @@ import java.util.Map; @Data public class UserGroupDifficultyStatisticsVo { - private Integer userId; + private Long userId; private String userName; private Map difficultyCount = new HashMap<>(); private Integer totalTasks; diff --git a/project/src/main/java/com/sdm/project/model/vo/UserGroupDifficultyVo.java b/project/src/main/java/com/sdm/project/model/vo/UserGroupDifficultyVo.java index 807ae252..72ff5f49 100644 --- a/project/src/main/java/com/sdm/project/model/vo/UserGroupDifficultyVo.java +++ b/project/src/main/java/com/sdm/project/model/vo/UserGroupDifficultyVo.java @@ -5,7 +5,7 @@ import lombok.Data; @Data public class UserGroupDifficultyVo { private float difficulty; - private Integer userId; + private Long userId; private String nickname; - private Integer groupId; + private Long groupId; } diff --git a/project/src/main/java/com/sdm/project/model/vo/UserGroupProjectVo.java b/project/src/main/java/com/sdm/project/model/vo/UserGroupProjectVo.java index 8038490c..f33596cf 100644 --- a/project/src/main/java/com/sdm/project/model/vo/UserGroupProjectVo.java +++ b/project/src/main/java/com/sdm/project/model/vo/UserGroupProjectVo.java @@ -8,7 +8,7 @@ import lombok.Data; @Data public class UserGroupProjectVo { private String nodeId; - private Integer userId; + private Long userId; private String nickname; - private Integer groupId; + private Long groupId; } diff --git a/project/src/main/java/com/sdm/project/model/vo/UserGroupTaskCompleteStatisticsVo.java b/project/src/main/java/com/sdm/project/model/vo/UserGroupTaskCompleteStatisticsVo.java index 32b5bc42..21c5b006 100644 --- a/project/src/main/java/com/sdm/project/model/vo/UserGroupTaskCompleteStatisticsVo.java +++ b/project/src/main/java/com/sdm/project/model/vo/UserGroupTaskCompleteStatisticsVo.java @@ -7,7 +7,7 @@ import java.util.Map; @Data public class UserGroupTaskCompleteStatisticsVo { - private Integer userId; + private Long userId; private String userName; private Map statusCount = new HashMap<>(); private Integer totalTasks; diff --git a/project/src/main/java/com/sdm/project/model/vo/UserGroupTaskCompleteVo.java b/project/src/main/java/com/sdm/project/model/vo/UserGroupTaskCompleteVo.java index 40ceac9e..d430afd7 100644 --- a/project/src/main/java/com/sdm/project/model/vo/UserGroupTaskCompleteVo.java +++ b/project/src/main/java/com/sdm/project/model/vo/UserGroupTaskCompleteVo.java @@ -6,6 +6,6 @@ import lombok.Data; public class UserGroupTaskCompleteVo { private String exeStatus; private String nickname; - private Integer userId; - private Integer groupId; + private Long userId; + private Long groupId; } diff --git a/project/src/main/java/com/sdm/project/service/INodeService.java b/project/src/main/java/com/sdm/project/service/INodeService.java index 6106312b..65f76bad 100644 --- a/project/src/main/java/com/sdm/project/service/INodeService.java +++ b/project/src/main/java/com/sdm/project/service/INodeService.java @@ -30,7 +30,7 @@ public interface INodeService extends IService { SdmResponse> getAllNodeByProjectIdAndType(Long chooseNodeId, String nextNodeType); - SdmResponse getUserGroupProjectStatistics(Integer userGroupId, Integer userId); + SdmResponse getUserGroupProjectStatistics(Long userGroupId, Long userId); SdmResponse getUserGroupTaskCompleteStatistics(GetUserGroupTaskCompleteStatisticsReq req); diff --git a/project/src/main/java/com/sdm/project/service/ITaskService.java b/project/src/main/java/com/sdm/project/service/ITaskService.java index b826cf3b..bc7afe30 100644 --- a/project/src/main/java/com/sdm/project/service/ITaskService.java +++ b/project/src/main/java/com/sdm/project/service/ITaskService.java @@ -18,6 +18,8 @@ public interface ITaskService { SdmResponse list(SpdmTaskListReq req); + SdmResponse countByStatus(SpdmTaskListReq req); + SdmResponse operation(String taskId, String exeStatus,String achieveStatus,Integer process,String finishTime); SdmResponse analysisTaskList(SpdmAnalysisTaskListReq req); @@ -26,7 +28,7 @@ public interface ITaskService { SdmResponse analysisRunList(SpdmAnalysisRunListReq req); - SdmResponse attention(String taskId, List addUserIdList,List cancelUserIdList); + SdmResponse attention(String taskId, List addUserIdList,List cancelUserIdList); SdmResponse edit(ModifyTaskNode req); diff --git a/project/src/main/java/com/sdm/project/service/impl/DemandServiceImpl.java b/project/src/main/java/com/sdm/project/service/impl/DemandServiceImpl.java index 796420dc..3112b82d 100644 --- a/project/src/main/java/com/sdm/project/service/impl/DemandServiceImpl.java +++ b/project/src/main/java/com/sdm/project/service/impl/DemandServiceImpl.java @@ -90,7 +90,7 @@ public class DemandServiceImpl extends BaseService implements IDemandService { SpdmDemandRelateMemberReq spdmDemandRelateMemberReq = new SpdmDemandRelateMemberReq(); spdmDemandRelateMemberReq.setDemandId(uuid); spdmDemandRelateMemberReq.setType(0); - spdmDemandRelateMemberReq.setUserId(Integer.parseInt(userId)); + spdmDemandRelateMemberReq.setUserId(Long.valueOf(userId)); spdmDemandRelateMemberReq.setCreateTime(curDateStr); spdmDemandRelateMemberReq.setCreator(jobNumber); allMemberList.add(spdmDemandRelateMemberReq); @@ -103,7 +103,7 @@ public class DemandServiceImpl extends BaseService implements IDemandService { SpdmDemandRelateMemberReq spdmDemandRelateMemberReq = new SpdmDemandRelateMemberReq(); spdmDemandRelateMemberReq.setDemandId(uuid); spdmDemandRelateMemberReq.setType(1); - spdmDemandRelateMemberReq.setUserId(Integer.parseInt(userId)); + spdmDemandRelateMemberReq.setUserId(Long.valueOf(userId)); spdmDemandRelateMemberReq.setCreateTime(curDateStr); spdmDemandRelateMemberReq.setCreator(jobNumber); allMemberList.add(spdmDemandRelateMemberReq); @@ -169,7 +169,7 @@ public class DemandServiceImpl extends BaseService implements IDemandService { SpdmDemandRelateMemberReq spdmDemandRelateMemberReq = new SpdmDemandRelateMemberReq(); spdmDemandRelateMemberReq.setDemandId(uuid); spdmDemandRelateMemberReq.setType(0); - spdmDemandRelateMemberReq.setUserId(Integer.parseInt(userId)); + spdmDemandRelateMemberReq.setUserId(Long.valueOf(userId)); spdmDemandRelateMemberReq.setCreateTime(curDateStr); spdmDemandRelateMemberReq.setCreator(jobNumber); allMemberList.add(spdmDemandRelateMemberReq); @@ -182,7 +182,7 @@ public class DemandServiceImpl extends BaseService implements IDemandService { SpdmDemandRelateMemberReq spdmDemandRelateMemberReq = new SpdmDemandRelateMemberReq(); spdmDemandRelateMemberReq.setDemandId(uuid); spdmDemandRelateMemberReq.setType(1); - spdmDemandRelateMemberReq.setUserId(Integer.parseInt(userId)); + spdmDemandRelateMemberReq.setUserId(Long.valueOf(userId)); spdmDemandRelateMemberReq.setCreateTime(curDateStr); spdmDemandRelateMemberReq.setCreator(jobNumber); allMemberList.add(spdmDemandRelateMemberReq); diff --git a/project/src/main/java/com/sdm/project/service/impl/NodeServiceImpl.java b/project/src/main/java/com/sdm/project/service/impl/NodeServiceImpl.java index 38ddefd5..5c2baae3 100644 --- a/project/src/main/java/com/sdm/project/service/impl/NodeServiceImpl.java +++ b/project/src/main/java/com/sdm/project/service/impl/NodeServiceImpl.java @@ -303,7 +303,7 @@ public class NodeServiceImpl extends ServiceImpl userGroupProjectStatistics = this.baseMapper.getUserGroupProjectStatistics(userGroupId, userId); if(CollectionUtils.isEmpty(userGroupProjectStatistics)) { return SdmResponse.success(new ArrayList<>()); } // 按用户ID统计项目数量 - Map userProjectCountMap = new HashMap<>(); + Map userProjectCountMap = new HashMap<>(); // 存储每个用户的详细信息,使用LinkedHashMap保持插入顺序 - Map userId2UserGroupProjectVo = new LinkedHashMap<>(); + Map userId2UserGroupProjectVo = new LinkedHashMap<>(); for (UserGroupProjectVo vo : userGroupProjectStatistics) { - Integer userIdKey = vo.getUserId(); + Long userIdKey = vo.getUserId(); userProjectCountMap.put(userIdKey, userProjectCountMap.getOrDefault(userIdKey, 0) + 1); // 只保存第一个遇到的用户信息,或者可以考虑保存最新的 if (!userId2UserGroupProjectVo.containsKey(userIdKey)) { @@ -719,7 +719,7 @@ public class NodeServiceImpl extends ServiceImpl>格式,便于前端展示 List> userResult = new ArrayList<>(); // 添加用户项目统计 - for (Map.Entry entry : userProjectCountMap.entrySet()) { + for (Map.Entry entry : userProjectCountMap.entrySet()) { Map item = new HashMap<>(); item.put("userId", entry.getKey()); item.put("userName", userId2UserGroupProjectVo.get(entry.getKey()).getNickname()); @@ -734,13 +734,13 @@ public class NodeServiceImpl extends ServiceImpl userGroupTaskCompleteStatistics = this.baseMapper.getUserGroupTaskCompleteStatistics(req); // 按用户分组统计任务状态 - Map userStatisticsMap = new HashMap<>(); + Map userStatisticsMap = new HashMap<>(); // 所有任务执行状态 Set allExeStatus = new HashSet<>(); // 统计每个用户的各种状态任务数量 for (UserGroupTaskCompleteVo item : userGroupTaskCompleteStatistics) { - Integer userId = item.getUserId(); + Long userId = item.getUserId(); String exeStatus = item.getExeStatus(); allExeStatus.add(exeStatus); @@ -774,14 +774,14 @@ public class NodeServiceImpl extends ServiceImpl userGroupDifficultyStatistics = this.baseMapper.getUserGroupDifficultyStatistics(req); // 按用户分组统计任务状态 - Map userStatisticsMap = new HashMap<>(); + Map userStatisticsMap = new HashMap<>(); // 所有难度值 Set alldifficultyValue = new HashSet<>(); // 统计每个用户的各种状态任务数量 for (UserGroupDifficultyVo item : userGroupDifficultyStatistics) { - Integer userId = item.getUserId(); + Long userId = item.getUserId(); Float difficulty = item.getDifficulty(); alldifficultyValue.add(difficulty); 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 8d4ceec5..0504e4d6 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 @@ -3,8 +3,11 @@ package com.sdm.project.service.impl; import com.alibaba.fastjson2.JSONObject; import com.sdm.common.common.SdmResponse; import com.sdm.common.common.ThreadLocalContext; +import com.sdm.common.entity.constants.ProjectConstants; import com.sdm.common.entity.constants.SystemConstants; +import com.sdm.common.utils.Tools; import com.sdm.project.common.MemberTypeEnum; +import com.sdm.project.common.TaskExeStatusEnum; import com.sdm.project.dao.SimulationDemandMapper; import com.sdm.project.dao.SimulationNodeMapper; import com.sdm.project.dao.SimulationProjectMapper; @@ -23,6 +26,7 @@ import com.sdm.project.model.req.*; import com.sdm.project.model.resp.GetAllRunResultByTaskIdResp; import com.sdm.project.model.resp.RunResultResp; import com.sdm.project.model.resp.TasKPerformanceResp; +import com.sdm.project.model.resp.TaskCountResp; import com.sdm.project.model.vo.*; import com.sdm.project.service.ISimulationPerformanceService; import com.sdm.project.service.ISimulationRunService; @@ -425,6 +429,125 @@ public class TaskServiceImpl implements ITaskService { return SdmResponse.success(jsonObject); } + @Override + public SdmResponse countByStatus(SpdmTaskListReq req) { + String tenantId = ThreadLocalContext.getCompany(); + String jobNumber = ThreadLocalContext.getCommonHeader().getJobNumber(); + if (StringUtils.isBlank(tenantId) || StringUtils.isBlank(jobNumber)) { + log.error("公司和工号都不能为空"); + return SdmResponse.failed("公司和工号都不能为空"); + } + // 0:我执行的 1:我关注的 2:所有 + Integer type = req.getType(); + if (type != 0 && type != 1 && type != 2) { + log.error("type必须为0或1或2"); + return SdmResponse.failed("公司和工号都不能为空"); + } + + List allTaskList = mapper.getTaskList(tenantId, req); + // 今明任务 + req.setTodayTmrTasks(ProjectConstants.TODAY_TMR_TASKS); + List todayTmrTaskList = mapper.getTaskList(tenantId, req); + if (CollectionUtils.isEmpty(allTaskList)) { + log.error("根据tenantId:{},未查询到任务", tenantId); + return SdmResponse.success(new ArrayList<>()); + } + List taskList = new ArrayList<>(); + List idMapList = req.getIdMap(); + if (CollectionUtils.isEmpty(idMapList)) { + log.error("任务列表中的idMap不能为空"); + return SdmResponse.failed("任务列表中的idMap不能为空"); + } + if (idMapList.stream().anyMatch(idMap -> StringUtils.isNotBlank(idMap.getKey()))) { + List realIdMapList = idMapList.stream().filter(idMap -> StringUtils.isNotBlank(idMap.getKey())).toList(); + TaskNodeTag realTaskNodeTag = realIdMapList.get(realIdMapList.size() - 1); + log.info("实际查询节点类型为:{}", realTaskNodeTag); + String currentNodeTagId = ""; + for (SpdmTaskVo spdmTaskVo : allTaskList) { + try { + currentNodeTagId = getTagProperty(spdmTaskVo, realTaskNodeTag.getValue().replace("T", "t")); + if (StringUtils.isNotBlank(currentNodeTagId) && currentNodeTagId.contains(realTaskNodeTag.getKey())) { + taskList.add(spdmTaskVo); + } + } catch (Exception e) { + throw new RuntimeException(e); + } + } + } else { + taskList = allTaskList; + } + if (CollectionUtils.isEmpty(taskList)) { + log.info("未查询到任务"); + return SdmResponse.success(new ArrayList<>()); + } + + TaskCountResp taskCountResp = new TaskCountResp(); + List taskIdList = taskList.stream().map(SpdmTaskVo::getUuid).toList(); + List taskMemberVoList = mapper.getMemberList(taskIdList, null); + countTask(taskList, todayTmrTaskList, taskCountResp); + + if (type == 0) { + // 仿真执行人是当前用户 + if (CollectionUtils.isNotEmpty(taskMemberVoList)) { + SpdmUserVo userByJobNumber = demandMapper.getUserByJobNumber(jobNumber); + if (ObjectUtils.isEmpty(userByJobNumber)) { + log.error("根据jobNumber:{},未查询到用户", jobNumber); + return SdmResponse.success(new ArrayList<>()); + } + taskMemberVoList = taskMemberVoList.stream().filter(taskMember -> MemberTypeEnum.EXECUTOR.getCode().equals(taskMember.getType())).toList(); + if (CollectionUtils.isEmpty(taskMemberVoList)) { + log.error("任务列表中未查询到仿真执行人1"); + return SdmResponse.success(new ArrayList<>()); + } + Long curUserId = userByJobNumber.getId(); + taskMemberVoList = taskMemberVoList.stream().filter(member -> curUserId.equals(member.getUserId())).toList(); + if (CollectionUtils.isEmpty(taskMemberVoList)) { + log.error("任务列表中未查询到仿真执行人2"); + return SdmResponse.success(new ArrayList<>()); + } + List myTaskIdList = taskMemberVoList.stream().map(SpdmTaskMemberVo::getTaskId).toList(); + taskList = taskList.stream().filter(task -> myTaskIdList.contains(task.getUuid())).toList(); + countTask(taskList, todayTmrTaskList, taskCountResp); + } + } else { + SpdmUserVo userByJobNumber = demandMapper.getUserByJobNumber(jobNumber); + if (ObjectUtils.isEmpty(userByJobNumber)) { + log.error("根据jobNumber:{},未查询到用户", jobNumber); + return SdmResponse.success(new ArrayList<>()); + } + List taskAttentionMemberVoList = mapper.getAttentionMemberList(taskIdList); + if (CollectionUtils.isEmpty(taskAttentionMemberVoList)) { + log.error("未查询到关注人"); + return SdmResponse.success(new ArrayList<>()); + } + // 当前用户的主键id + Long curUserId = userByJobNumber.getId(); + taskAttentionMemberVoList = taskAttentionMemberVoList.stream().filter(member -> curUserId.equals(member.getUserId())).toList(); + if (CollectionUtils.isEmpty(taskAttentionMemberVoList)) { + log.error("任务列表中未查询到仿真执行人3"); + return SdmResponse.success(new ArrayList<>()); + } + List myTaskIdList = taskAttentionMemberVoList.stream().map(SpdmTaskAttentionMemberVo::getTaskId).toList(); + taskList = taskList.stream().filter(task -> myTaskIdList.contains(task.getUuid())).toList(); + countTask(taskList, todayTmrTaskList, taskCountResp); + } + return SdmResponse.success(taskCountResp); + } + + private void countTask(List taskList, List todayTmrTaskList, TaskCountResp taskCountResp) { + // 计数 + taskCountResp.setTotal(taskList.size()); + taskCountResp.setTodayTmrTasks(taskList.size()); + taskCountResp.setInProgress((int) taskList.stream().filter(i -> TaskExeStatusEnum.IN_PROGRESS.getCode().equals(i.getExeStatus())).count()); + taskCountResp.setPostponed((int) taskList.stream().filter(i -> TaskExeStatusEnum.POSTPONED.getCode().equals(i.getExeStatus())).count()); + taskCountResp.setNoStarted((int) taskList.stream().filter(i -> TaskExeStatusEnum.NO_STARTED.getCode().equals(i.getExeStatus())).count()); + taskCountResp.setCompleted((int) taskList.stream().filter(i -> TaskExeStatusEnum.COMPLETED.getCode().equals(i.getExeStatus())).count()); + taskCountResp.setClosed((int) taskList.stream().filter(i -> TaskExeStatusEnum.CLOSED.getCode().equals(i.getExeStatus())).count()); + taskCountResp.setPaused((int) taskList.stream().filter(i -> TaskExeStatusEnum.PAUSED.getCode().equals(i.getExeStatus())).count()); + taskCountResp.setRejected((int) taskList.stream().filter(i -> TaskExeStatusEnum.REJECTED.getCode().equals(i.getExeStatus())).count()); + taskCountResp.setTodayTmrTasks((int) taskList.stream().filter(todayTmrTaskList::contains).count()); + } + @Override public SdmResponse operation(String taskId, String exeStatus, String achieveStatus, Integer process, String finishTime) { @@ -645,7 +768,7 @@ public class TaskServiceImpl implements ITaskService { } @Override - public SdmResponse attention(String taskId, List addUserIdList, List cancelUserIdList) { + public SdmResponse attention(String taskId, List addUserIdList, List cancelUserIdList) { if (StringUtils.isBlank(taskId) || (CollectionUtils.isEmpty(addUserIdList) && CollectionUtils.isEmpty(cancelUserIdList))) { return SdmResponse.failed("参数不正确"); } @@ -659,7 +782,7 @@ public class TaskServiceImpl implements ITaskService { String curDateStr = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()); String jobNumber = ThreadLocalContext.getCommonHeader().getJobNumber(); // 关注 - for (Integer userId : addUserIdList) { + for (Long userId : addUserIdList) { SpdmTaskAttentionReq spdmTaskAttentionReq = new SpdmTaskAttentionReq(); spdmTaskAttentionReq.setTaskId(taskId); spdmTaskAttentionReq.setUserId(userId); diff --git a/project/src/main/resources/mapper/SimulationTaskMapper.xml b/project/src/main/resources/mapper/SimulationTaskMapper.xml index 0165ce5c..ee5079a8 100644 --- a/project/src/main/resources/mapper/SimulationTaskMapper.xml +++ b/project/src/main/resources/mapper/SimulationTaskMapper.xml @@ -22,6 +22,9 @@ progress = #{task.progress}, + + finish_time = #{finishTime}, + updater = #{task.updater}, @@ -77,6 +80,12 @@ and STR_TO_DATE(end_time,'%Y-%m-%d') <= #{req.endTime} ]]> + + = CURRENT_DATE() + and STR_TO_DATE(end_time,'%Y-%m-%d') <= DATE_ADD(CURRENT_DATE(), INTERVAL 2 DAY) ; + ]]> +