id修改和计数

This commit is contained in:
2025-11-04 18:05:25 +08:00
parent 2375daa889
commit cd78c4368f
24 changed files with 233 additions and 39 deletions

View File

@@ -13,4 +13,8 @@ public class ProjectConstants {
public static final int RED_LIGHTER = 1; //红色灯状态(结果异常) public static final int RED_LIGHTER = 1; //红色灯状态(结果异常)
public static final int YELLOW_LIGHTER = 2;//黄色灯状态(结果不是特别理想) public static final int YELLOW_LIGHTER = 2;//黄色灯状态(结果不是特别理想)
public static final int GREEN_LIGHTER = 3;//结果非常好 public static final int GREEN_LIGHTER = 3;//结果非常好
// 任务管理→我执行的 筛选今明任务
public static final String TODAY_TMR_TASKS = "todayTmrTasks";
} }

View File

@@ -9,7 +9,7 @@ import lombok.EqualsAndHashCode;
public class SysGroupMember extends BaseEntity { public class SysGroupMember extends BaseEntity {
private String groupName; private String groupName;
private long groupId; private Long groupId;
private String userId; private String userId;
private String userName; private String userName;
} }

View File

@@ -17,6 +17,7 @@ public class Tools {
private static final String ALGORITHM = "AES"; private static final String ALGORITHM = "AES";
private static final int KEY_SIZE = 128; private static final int KEY_SIZE = 128;
private static final int CACHE_SIZE = 1024; private static final int CACHE_SIZE = 1024;
public static final String DATE_YYYY_MM_DD = "yyyy-MM-dd";
public static byte[] intToBytes(int value) { public static byte[] intToBytes(int value) {
byte[] src = new byte[4]; byte[] src = new byte[4];

View File

@@ -153,7 +153,7 @@ public class SimulationNodeController implements ISimuluationNodeFeignClient {
*/ */
@GetMapping("/getUserGroupProjectStatistics") @GetMapping("/getUserGroupProjectStatistics")
@Operation(summary = "用户组项目统计", description = "用户组项目统计") @Operation(summary = "用户组项目统计", description = "用户组项目统计")
public SdmResponse getUserGroupProjectStatistics(@Parameter(description = "用户组ID")@RequestParam( value = "userGroupId" )@NotNull(message = "用户组IDuserGroupId为必传参数请补充后重试") Integer userGroupId, @Parameter(description = "用户ID")@RequestParam( value = "userId", required = false) Integer userId) { public SdmResponse getUserGroupProjectStatistics(@Parameter(description = "用户组ID")@RequestParam( value = "userGroupId" )@NotNull(message = "用户组IDuserGroupId为必传参数请补充后重试") Long userGroupId, @Parameter(description = "用户ID")@RequestParam( value = "userId", required = false) Long userId) {
return nodeService.getUserGroupProjectStatistics(userGroupId,userId); return nodeService.getUserGroupProjectStatistics(userGroupId,userId);
} }

View File

@@ -73,4 +73,15 @@ public class SimulationTaskController {
return taskService.list(req); return taskService.list(req);
} }
/**
* 任务列表根据不同执行状态计数(我执行的、我关注的、所有)
* @param req
* @return
*/
@PostMapping("/count")
@Operation(summary = "任务列表计数(我执行的、我关注的、所有)", description = "任务列表计数(我执行的、我关注的、所有)")
public SdmResponse countByStatus(@RequestBody SpdmTaskListReq req) {
return taskService.countByStatus(req);
}
} }

View File

@@ -73,7 +73,7 @@ public interface SimulationNodeMapper extends BaseMapper<SimulationNode> {
List<SpdmNodeVo> getNodeListByIds(@Param("nodeIdList") List<String> nodeIdList); List<SpdmNodeVo> getNodeListByIds(@Param("nodeIdList") List<String> nodeIdList);
List<UserGroupProjectVo> getUserGroupProjectStatistics(@Param("userGroupId") Integer userGroupId, @Param("userId") Integer userId); List<UserGroupProjectVo> getUserGroupProjectStatistics(@Param("userGroupId") Long userGroupId, @Param("userId") Long userId);
List<UserGroupTaskCompleteVo> getUserGroupTaskCompleteStatistics(@Param("req") GetUserGroupTaskCompleteStatisticsReq req); List<UserGroupTaskCompleteVo> getUserGroupTaskCompleteStatistics(@Param("req") GetUserGroupTaskCompleteStatisticsReq req);

View File

@@ -29,7 +29,7 @@ public interface SimulationTaskMapper extends BaseMapper<SimulationTask> {
List<SpdmAnalysisTaskVo> taskList(@Param("req") SpdmAnalysisTaskListReq req, @Param("tenantId") String tenantId, @Param("allNodeIdList") List<String> allNodeIdList, @Param("pos") int pos, @Param("limit") int limit); List<SpdmAnalysisTaskVo> taskList(@Param("req") SpdmAnalysisTaskListReq req, @Param("tenantId") String tenantId, @Param("allNodeIdList") List<String> allNodeIdList, @Param("pos") int pos, @Param("limit") int limit);
void deleteAttentionByUserIdList(@Param("taskId") String taskId,@Param("userIdList") List<Integer> userIdList); void deleteAttentionByUserIdList(@Param("taskId") String taskId,@Param("userIdList") List<Long> userIdList);
void saveAttentionList(@Param("attentionList") List<SpdmTaskAttentionReq> attentionList); void saveAttentionList(@Param("attentionList") List<SpdmTaskAttentionReq> attentionList);

View File

@@ -12,10 +12,10 @@ import lombok.Data;
public class GetUserGroupTaskCompleteStatisticsReq { public class GetUserGroupTaskCompleteStatisticsReq {
@Schema(description = "用户组ID") @Schema(description = "用户组ID")
@NotNull(message = "用户组ID不能为空") @NotNull(message = "用户组ID不能为空")
private Integer userGroupId; private Long userGroupId;
@Schema(description = "用户ID") @Schema(description = "用户ID")
private Integer userId; private Long userId;
@Schema(description = "标签1") @Schema(description = "标签1")
private String tag1; private String tag1;

View File

@@ -26,6 +26,6 @@ public class SpdmDemandRelateMemberReq extends BaseEntity {
*/ */
private String name; private String name;
private Integer userId; private Long userId;
} }

View File

@@ -21,6 +21,6 @@ public class SpdmNodeRelateMemberReq extends BaseEntity {
*/ */
private String name; private String name;
private Integer userId; private Long userId;
} }

View File

@@ -14,10 +14,10 @@ public class SpdmTaskAttentionReq extends BaseEntity {
private String taskId; private String taskId;
private Integer userId; private Long userId;
List<Integer> addUserIdList; List<Long> addUserIdList;
List<Integer> cancelUserIdList; List<Long> cancelUserIdList;
} }

View File

@@ -6,6 +6,7 @@ import com.sdm.project.model.bo.TaskNodeTag;
import jakarta.validation.constraints.NotNull; import jakarta.validation.constraints.NotNull;
import lombok.Data; import lombok.Data;
import java.util.Date;
import java.util.List; import java.util.List;
@JsonIgnoreProperties(ignoreUnknown = true) @JsonIgnoreProperties(ignoreUnknown = true)
@@ -19,7 +20,7 @@ public class SpdmTaskListReq {
private Integer size; private Integer size;
/** /**
* 任务类型0所有 1我执行的 2:我关注的 * 任务类型0我执行的 1:我关注的 2所有
*/ */
@NotNull(message = "type不能为空") @NotNull(message = "type不能为空")
private Integer type; private Integer type;
@@ -77,5 +78,13 @@ public class SpdmTaskListReq {
*/ */
private String finishTime; private String finishTime;
/**
* 今明任务 筛选计划结束时间为今明两天的
*/
private String todayTmrTasks;
/**
* 今天日期
*/
private String todayTime;
} }

View File

@@ -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;
}

View File

@@ -7,7 +7,7 @@ import java.util.Map;
@Data @Data
public class UserGroupDifficultyStatisticsVo { public class UserGroupDifficultyStatisticsVo {
private Integer userId; private Long userId;
private String userName; private String userName;
private Map<Float, Integer> difficultyCount = new HashMap<>(); private Map<Float, Integer> difficultyCount = new HashMap<>();
private Integer totalTasks; private Integer totalTasks;

View File

@@ -5,7 +5,7 @@ import lombok.Data;
@Data @Data
public class UserGroupDifficultyVo { public class UserGroupDifficultyVo {
private float difficulty; private float difficulty;
private Integer userId; private Long userId;
private String nickname; private String nickname;
private Integer groupId; private Long groupId;
} }

View File

@@ -8,7 +8,7 @@ import lombok.Data;
@Data @Data
public class UserGroupProjectVo { public class UserGroupProjectVo {
private String nodeId; private String nodeId;
private Integer userId; private Long userId;
private String nickname; private String nickname;
private Integer groupId; private Long groupId;
} }

View File

@@ -7,7 +7,7 @@ import java.util.Map;
@Data @Data
public class UserGroupTaskCompleteStatisticsVo { public class UserGroupTaskCompleteStatisticsVo {
private Integer userId; private Long userId;
private String userName; private String userName;
private Map<String, Integer> statusCount = new HashMap<>(); private Map<String, Integer> statusCount = new HashMap<>();
private Integer totalTasks; private Integer totalTasks;

View File

@@ -6,6 +6,6 @@ import lombok.Data;
public class UserGroupTaskCompleteVo { public class UserGroupTaskCompleteVo {
private String exeStatus; private String exeStatus;
private String nickname; private String nickname;
private Integer userId; private Long userId;
private Integer groupId; private Long groupId;
} }

View File

@@ -30,7 +30,7 @@ public interface INodeService extends IService<SimulationNode> {
SdmResponse<List<AllNodeByProjectIdAndTypeResp>> getAllNodeByProjectIdAndType(Long chooseNodeId, String nextNodeType); SdmResponse<List<AllNodeByProjectIdAndTypeResp>> getAllNodeByProjectIdAndType(Long chooseNodeId, String nextNodeType);
SdmResponse getUserGroupProjectStatistics(Integer userGroupId, Integer userId); SdmResponse getUserGroupProjectStatistics(Long userGroupId, Long userId);
SdmResponse getUserGroupTaskCompleteStatistics(GetUserGroupTaskCompleteStatisticsReq req); SdmResponse getUserGroupTaskCompleteStatistics(GetUserGroupTaskCompleteStatisticsReq req);

View File

@@ -18,6 +18,8 @@ public interface ITaskService {
SdmResponse list(SpdmTaskListReq req); SdmResponse list(SpdmTaskListReq req);
SdmResponse countByStatus(SpdmTaskListReq req);
SdmResponse operation(String taskId, String exeStatus,String achieveStatus,Integer process,String finishTime); SdmResponse operation(String taskId, String exeStatus,String achieveStatus,Integer process,String finishTime);
SdmResponse analysisTaskList(SpdmAnalysisTaskListReq req); SdmResponse analysisTaskList(SpdmAnalysisTaskListReq req);
@@ -26,7 +28,7 @@ public interface ITaskService {
SdmResponse analysisRunList(SpdmAnalysisRunListReq req); SdmResponse analysisRunList(SpdmAnalysisRunListReq req);
SdmResponse attention(String taskId, List<Integer> addUserIdList,List<Integer> cancelUserIdList); SdmResponse attention(String taskId, List<Long> addUserIdList,List<Long> cancelUserIdList);
SdmResponse edit(ModifyTaskNode req); SdmResponse edit(ModifyTaskNode req);

View File

@@ -90,7 +90,7 @@ public class DemandServiceImpl extends BaseService implements IDemandService {
SpdmDemandRelateMemberReq spdmDemandRelateMemberReq = new SpdmDemandRelateMemberReq(); SpdmDemandRelateMemberReq spdmDemandRelateMemberReq = new SpdmDemandRelateMemberReq();
spdmDemandRelateMemberReq.setDemandId(uuid); spdmDemandRelateMemberReq.setDemandId(uuid);
spdmDemandRelateMemberReq.setType(0); spdmDemandRelateMemberReq.setType(0);
spdmDemandRelateMemberReq.setUserId(Integer.parseInt(userId)); spdmDemandRelateMemberReq.setUserId(Long.valueOf(userId));
spdmDemandRelateMemberReq.setCreateTime(curDateStr); spdmDemandRelateMemberReq.setCreateTime(curDateStr);
spdmDemandRelateMemberReq.setCreator(jobNumber); spdmDemandRelateMemberReq.setCreator(jobNumber);
allMemberList.add(spdmDemandRelateMemberReq); allMemberList.add(spdmDemandRelateMemberReq);
@@ -103,7 +103,7 @@ public class DemandServiceImpl extends BaseService implements IDemandService {
SpdmDemandRelateMemberReq spdmDemandRelateMemberReq = new SpdmDemandRelateMemberReq(); SpdmDemandRelateMemberReq spdmDemandRelateMemberReq = new SpdmDemandRelateMemberReq();
spdmDemandRelateMemberReq.setDemandId(uuid); spdmDemandRelateMemberReq.setDemandId(uuid);
spdmDemandRelateMemberReq.setType(1); spdmDemandRelateMemberReq.setType(1);
spdmDemandRelateMemberReq.setUserId(Integer.parseInt(userId)); spdmDemandRelateMemberReq.setUserId(Long.valueOf(userId));
spdmDemandRelateMemberReq.setCreateTime(curDateStr); spdmDemandRelateMemberReq.setCreateTime(curDateStr);
spdmDemandRelateMemberReq.setCreator(jobNumber); spdmDemandRelateMemberReq.setCreator(jobNumber);
allMemberList.add(spdmDemandRelateMemberReq); allMemberList.add(spdmDemandRelateMemberReq);
@@ -169,7 +169,7 @@ public class DemandServiceImpl extends BaseService implements IDemandService {
SpdmDemandRelateMemberReq spdmDemandRelateMemberReq = new SpdmDemandRelateMemberReq(); SpdmDemandRelateMemberReq spdmDemandRelateMemberReq = new SpdmDemandRelateMemberReq();
spdmDemandRelateMemberReq.setDemandId(uuid); spdmDemandRelateMemberReq.setDemandId(uuid);
spdmDemandRelateMemberReq.setType(0); spdmDemandRelateMemberReq.setType(0);
spdmDemandRelateMemberReq.setUserId(Integer.parseInt(userId)); spdmDemandRelateMemberReq.setUserId(Long.valueOf(userId));
spdmDemandRelateMemberReq.setCreateTime(curDateStr); spdmDemandRelateMemberReq.setCreateTime(curDateStr);
spdmDemandRelateMemberReq.setCreator(jobNumber); spdmDemandRelateMemberReq.setCreator(jobNumber);
allMemberList.add(spdmDemandRelateMemberReq); allMemberList.add(spdmDemandRelateMemberReq);
@@ -182,7 +182,7 @@ public class DemandServiceImpl extends BaseService implements IDemandService {
SpdmDemandRelateMemberReq spdmDemandRelateMemberReq = new SpdmDemandRelateMemberReq(); SpdmDemandRelateMemberReq spdmDemandRelateMemberReq = new SpdmDemandRelateMemberReq();
spdmDemandRelateMemberReq.setDemandId(uuid); spdmDemandRelateMemberReq.setDemandId(uuid);
spdmDemandRelateMemberReq.setType(1); spdmDemandRelateMemberReq.setType(1);
spdmDemandRelateMemberReq.setUserId(Integer.parseInt(userId)); spdmDemandRelateMemberReq.setUserId(Long.valueOf(userId));
spdmDemandRelateMemberReq.setCreateTime(curDateStr); spdmDemandRelateMemberReq.setCreateTime(curDateStr);
spdmDemandRelateMemberReq.setCreator(jobNumber); spdmDemandRelateMemberReq.setCreator(jobNumber);
allMemberList.add(spdmDemandRelateMemberReq); allMemberList.add(spdmDemandRelateMemberReq);

View File

@@ -303,7 +303,7 @@ public class NodeServiceImpl extends ServiceImpl<SimulationNodeMapper, Simulatio
for (String userId : nodeManagerList.split(",")) { for (String userId : nodeManagerList.split(",")) {
SpdmNodeRelateMemberReq spdmNodeRelateMemberReq = new SpdmNodeRelateMemberReq(); SpdmNodeRelateMemberReq spdmNodeRelateMemberReq = new SpdmNodeRelateMemberReq();
spdmNodeRelateMemberReq.setNodeId(addNode.getUuid()); spdmNodeRelateMemberReq.setNodeId(addNode.getUuid());
spdmNodeRelateMemberReq.setUserId(Integer.parseInt(userId)); spdmNodeRelateMemberReq.setUserId(Long.valueOf(userId));
spdmNodeRelateMemberReq.setCreateTime(curDateStr); spdmNodeRelateMemberReq.setCreateTime(curDateStr);
spdmNodeRelateMemberReq.setCreator(jobNumber); spdmNodeRelateMemberReq.setCreator(jobNumber);
allNodeManagerList.add(spdmNodeRelateMemberReq); allNodeManagerList.add(spdmNodeRelateMemberReq);
@@ -410,7 +410,7 @@ public class NodeServiceImpl extends ServiceImpl<SimulationNodeMapper, Simulatio
for (String userId : nodeManagerList.split(",")) { for (String userId : nodeManagerList.split(",")) {
SpdmNodeRelateMemberReq spdmNodeRelateMemberReq = new SpdmNodeRelateMemberReq(); SpdmNodeRelateMemberReq spdmNodeRelateMemberReq = new SpdmNodeRelateMemberReq();
spdmNodeRelateMemberReq.setNodeId(editNode.getUuid()); spdmNodeRelateMemberReq.setNodeId(editNode.getUuid());
spdmNodeRelateMemberReq.setUserId(Integer.parseInt(userId)); spdmNodeRelateMemberReq.setUserId(Long.valueOf(userId));
spdmNodeRelateMemberReq.setCreateTime(curDateStr); spdmNodeRelateMemberReq.setCreateTime(curDateStr);
spdmNodeRelateMemberReq.setCreator(jobNumber); spdmNodeRelateMemberReq.setCreator(jobNumber);
allNodeManagerList.add(spdmNodeRelateMemberReq); allNodeManagerList.add(spdmNodeRelateMemberReq);
@@ -696,19 +696,19 @@ public class NodeServiceImpl extends ServiceImpl<SimulationNodeMapper, Simulatio
} }
@Override @Override
public SdmResponse getUserGroupProjectStatistics(Integer userGroupId, Integer userId) { public SdmResponse getUserGroupProjectStatistics(Long userGroupId, Long userId) {
List<UserGroupProjectVo> userGroupProjectStatistics = this.baseMapper.getUserGroupProjectStatistics(userGroupId, userId); List<UserGroupProjectVo> userGroupProjectStatistics = this.baseMapper.getUserGroupProjectStatistics(userGroupId, userId);
if(CollectionUtils.isEmpty(userGroupProjectStatistics)) { if(CollectionUtils.isEmpty(userGroupProjectStatistics)) {
return SdmResponse.success(new ArrayList<>()); return SdmResponse.success(new ArrayList<>());
} }
// 按用户ID统计项目数量 // 按用户ID统计项目数量
Map<Integer, Integer> userProjectCountMap = new HashMap<>(); Map<Long, Integer> userProjectCountMap = new HashMap<>();
// 存储每个用户的详细信息使用LinkedHashMap保持插入顺序 // 存储每个用户的详细信息使用LinkedHashMap保持插入顺序
Map<Integer, UserGroupProjectVo> userId2UserGroupProjectVo = new LinkedHashMap<>(); Map<Long, UserGroupProjectVo> userId2UserGroupProjectVo = new LinkedHashMap<>();
for (UserGroupProjectVo vo : userGroupProjectStatistics) { for (UserGroupProjectVo vo : userGroupProjectStatistics) {
Integer userIdKey = vo.getUserId(); Long userIdKey = vo.getUserId();
userProjectCountMap.put(userIdKey, userProjectCountMap.getOrDefault(userIdKey, 0) + 1); userProjectCountMap.put(userIdKey, userProjectCountMap.getOrDefault(userIdKey, 0) + 1);
// 只保存第一个遇到的用户信息,或者可以考虑保存最新的 // 只保存第一个遇到的用户信息,或者可以考虑保存最新的
if (!userId2UserGroupProjectVo.containsKey(userIdKey)) { if (!userId2UserGroupProjectVo.containsKey(userIdKey)) {
@@ -719,7 +719,7 @@ public class NodeServiceImpl extends ServiceImpl<SimulationNodeMapper, Simulatio
// 转换为List<Map<String, Object>>格式,便于前端展示 // 转换为List<Map<String, Object>>格式,便于前端展示
List<Map<String, Object>> userResult = new ArrayList<>(); List<Map<String, Object>> userResult = new ArrayList<>();
// 添加用户项目统计 // 添加用户项目统计
for (Map.Entry<Integer, Integer> entry : userProjectCountMap.entrySet()) { for (Map.Entry<Long, Integer> entry : userProjectCountMap.entrySet()) {
Map<String, Object> item = new HashMap<>(); Map<String, Object> item = new HashMap<>();
item.put("userId", entry.getKey()); item.put("userId", entry.getKey());
item.put("userName", userId2UserGroupProjectVo.get(entry.getKey()).getNickname()); item.put("userName", userId2UserGroupProjectVo.get(entry.getKey()).getNickname());
@@ -734,13 +734,13 @@ public class NodeServiceImpl extends ServiceImpl<SimulationNodeMapper, Simulatio
List<UserGroupTaskCompleteVo> userGroupTaskCompleteStatistics = this.baseMapper.getUserGroupTaskCompleteStatistics(req); List<UserGroupTaskCompleteVo> userGroupTaskCompleteStatistics = this.baseMapper.getUserGroupTaskCompleteStatistics(req);
// 按用户分组统计任务状态 // 按用户分组统计任务状态
Map<Integer, UserGroupTaskCompleteStatisticsVo> userStatisticsMap = new HashMap<>(); Map<Long, UserGroupTaskCompleteStatisticsVo> userStatisticsMap = new HashMap<>();
// 所有任务执行状态 // 所有任务执行状态
Set<String> allExeStatus = new HashSet<>(); Set<String> allExeStatus = new HashSet<>();
// 统计每个用户的各种状态任务数量 // 统计每个用户的各种状态任务数量
for (UserGroupTaskCompleteVo item : userGroupTaskCompleteStatistics) { for (UserGroupTaskCompleteVo item : userGroupTaskCompleteStatistics) {
Integer userId = item.getUserId(); Long userId = item.getUserId();
String exeStatus = item.getExeStatus(); String exeStatus = item.getExeStatus();
allExeStatus.add(exeStatus); allExeStatus.add(exeStatus);
@@ -774,14 +774,14 @@ public class NodeServiceImpl extends ServiceImpl<SimulationNodeMapper, Simulatio
List<UserGroupDifficultyVo> userGroupDifficultyStatistics = this.baseMapper.getUserGroupDifficultyStatistics(req); List<UserGroupDifficultyVo> userGroupDifficultyStatistics = this.baseMapper.getUserGroupDifficultyStatistics(req);
// 按用户分组统计任务状态 // 按用户分组统计任务状态
Map<Integer, UserGroupDifficultyStatisticsVo> userStatisticsMap = new HashMap<>(); Map<Long, UserGroupDifficultyStatisticsVo> userStatisticsMap = new HashMap<>();
// 所有难度值 // 所有难度值
Set<Float> alldifficultyValue = new HashSet<>(); Set<Float> alldifficultyValue = new HashSet<>();
// 统计每个用户的各种状态任务数量 // 统计每个用户的各种状态任务数量
for (UserGroupDifficultyVo item : userGroupDifficultyStatistics) { for (UserGroupDifficultyVo item : userGroupDifficultyStatistics) {
Integer userId = item.getUserId(); Long userId = item.getUserId();
Float difficulty = item.getDifficulty(); Float difficulty = item.getDifficulty();
alldifficultyValue.add(difficulty); alldifficultyValue.add(difficulty);

View File

@@ -3,8 +3,11 @@ package com.sdm.project.service.impl;
import com.alibaba.fastjson2.JSONObject; import com.alibaba.fastjson2.JSONObject;
import com.sdm.common.common.SdmResponse; import com.sdm.common.common.SdmResponse;
import com.sdm.common.common.ThreadLocalContext; import com.sdm.common.common.ThreadLocalContext;
import com.sdm.common.entity.constants.ProjectConstants;
import com.sdm.common.entity.constants.SystemConstants; import com.sdm.common.entity.constants.SystemConstants;
import com.sdm.common.utils.Tools;
import com.sdm.project.common.MemberTypeEnum; import com.sdm.project.common.MemberTypeEnum;
import com.sdm.project.common.TaskExeStatusEnum;
import com.sdm.project.dao.SimulationDemandMapper; import com.sdm.project.dao.SimulationDemandMapper;
import com.sdm.project.dao.SimulationNodeMapper; import com.sdm.project.dao.SimulationNodeMapper;
import com.sdm.project.dao.SimulationProjectMapper; 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.GetAllRunResultByTaskIdResp;
import com.sdm.project.model.resp.RunResultResp; import com.sdm.project.model.resp.RunResultResp;
import com.sdm.project.model.resp.TasKPerformanceResp; import com.sdm.project.model.resp.TasKPerformanceResp;
import com.sdm.project.model.resp.TaskCountResp;
import com.sdm.project.model.vo.*; import com.sdm.project.model.vo.*;
import com.sdm.project.service.ISimulationPerformanceService; import com.sdm.project.service.ISimulationPerformanceService;
import com.sdm.project.service.ISimulationRunService; import com.sdm.project.service.ISimulationRunService;
@@ -425,6 +429,125 @@ public class TaskServiceImpl implements ITaskService {
return SdmResponse.success(jsonObject); 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<SpdmTaskVo> allTaskList = mapper.getTaskList(tenantId, req);
// 今明任务
req.setTodayTmrTasks(ProjectConstants.TODAY_TMR_TASKS);
List<SpdmTaskVo> todayTmrTaskList = mapper.getTaskList(tenantId, req);
if (CollectionUtils.isEmpty(allTaskList)) {
log.error("根据tenantId{},未查询到任务", tenantId);
return SdmResponse.success(new ArrayList<>());
}
List<SpdmTaskVo> taskList = new ArrayList<>();
List<TaskNodeTag> idMapList = req.getIdMap();
if (CollectionUtils.isEmpty(idMapList)) {
log.error("任务列表中的idMap不能为空");
return SdmResponse.failed("任务列表中的idMap不能为空");
}
if (idMapList.stream().anyMatch(idMap -> StringUtils.isNotBlank(idMap.getKey()))) {
List<TaskNodeTag> 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<String> taskIdList = taskList.stream().map(SpdmTaskVo::getUuid).toList();
List<SpdmTaskMemberVo> 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<String> 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<SpdmTaskAttentionMemberVo> 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<String> 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<SpdmTaskVo> taskList, List<SpdmTaskVo> 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 @Override
public SdmResponse operation(String taskId, String exeStatus, String achieveStatus, Integer process, String finishTime) { public SdmResponse operation(String taskId, String exeStatus, String achieveStatus, Integer process, String finishTime) {
@@ -645,7 +768,7 @@ public class TaskServiceImpl implements ITaskService {
} }
@Override @Override
public SdmResponse attention(String taskId, List<Integer> addUserIdList, List<Integer> cancelUserIdList) { public SdmResponse attention(String taskId, List<Long> addUserIdList, List<Long> cancelUserIdList) {
if (StringUtils.isBlank(taskId) || (CollectionUtils.isEmpty(addUserIdList) && CollectionUtils.isEmpty(cancelUserIdList))) { if (StringUtils.isBlank(taskId) || (CollectionUtils.isEmpty(addUserIdList) && CollectionUtils.isEmpty(cancelUserIdList))) {
return SdmResponse.failed("参数不正确"); 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 curDateStr = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date());
String jobNumber = ThreadLocalContext.getCommonHeader().getJobNumber(); String jobNumber = ThreadLocalContext.getCommonHeader().getJobNumber();
// 关注 // 关注
for (Integer userId : addUserIdList) { for (Long userId : addUserIdList) {
SpdmTaskAttentionReq spdmTaskAttentionReq = new SpdmTaskAttentionReq(); SpdmTaskAttentionReq spdmTaskAttentionReq = new SpdmTaskAttentionReq();
spdmTaskAttentionReq.setTaskId(taskId); spdmTaskAttentionReq.setTaskId(taskId);
spdmTaskAttentionReq.setUserId(userId); spdmTaskAttentionReq.setUserId(userId);

View File

@@ -22,6 +22,9 @@
<if test="task.progress != null and task.progress != ''"> <if test="task.progress != null and task.progress != ''">
progress = #{task.progress}, progress = #{task.progress},
</if> </if>
<if test="task.finishTime != null and task.finishTime != ''">
finish_time = #{finishTime},
</if>
<if test="task.updater != null and task.updater != ''"> <if test="task.updater != null and task.updater != ''">
updater = #{task.updater}, updater = #{task.updater},
</if> </if>
@@ -77,6 +80,12 @@
and STR_TO_DATE(end_time,'%Y-%m-%d') <= #{req.endTime} and STR_TO_DATE(end_time,'%Y-%m-%d') <= #{req.endTime}
]]> ]]>
</if> </if>
<if test="req.todayTmrTasks != null and req.todayTmrTasks != ''">
<![CDATA[
and STR_TO_DATE(end_time,'%Y-%m-%d') >= CURRENT_DATE()
and STR_TO_DATE(end_time,'%Y-%m-%d') <= DATE_ADD(CURRENT_DATE(), INTERVAL 2 DAY) ;
]]>
</if>
<if test="req.finishTime != null and req.finishTime != ''"> <if test="req.finishTime != null and req.finishTime != ''">
<![CDATA[ <![CDATA[
and STR_TO_DATE(finish_time,'%Y-%m-%d') <= #{req.finishTime} and STR_TO_DATE(finish_time,'%Y-%m-%d') <= #{req.finishTime}