debug: 添加详细日志调试待审核子任务组获取问题
This commit is contained in:
parent
62fd513df7
commit
8198f7d497
@ -11,6 +11,7 @@ import io.swagger.v3.oas.annotations.Operation;
|
||||
import io.swagger.v3.oas.annotations.Parameter;
|
||||
import io.swagger.v3.oas.annotations.tags.Tag;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
import java.util.List;
|
||||
@ -19,6 +20,7 @@ import java.util.Map;
|
||||
/**
|
||||
* 任务子项控制器(流水线任务)
|
||||
*/
|
||||
@Slf4j
|
||||
@Tag(name = "流水线任务管理", description = "流水线任务子项相关接口")
|
||||
@RestController
|
||||
@RequestMapping("/api/tasks/items")
|
||||
@ -289,13 +291,20 @@ public class TaskItemController {
|
||||
String actualToken = token.replace("Bearer ", "");
|
||||
Long userId = jwtUtil.getUserIdFromToken(actualToken);
|
||||
|
||||
log.info("===== 获取待审核子任务组 API 调用 =====");
|
||||
log.info("请求用户ID: {}", userId);
|
||||
|
||||
// 检查是否是管理员
|
||||
com.designhub.entity.User user = userMapper.selectById(userId);
|
||||
boolean isAdmin = user != null && Integer.valueOf(1).equals(user.getIsAdmin());
|
||||
|
||||
log.info("用户信息: 姓名={}, 是否管理员={}", user != null ? user.getRealName() : "null", isAdmin);
|
||||
|
||||
// 管理员可以看到所有待审核子任务组
|
||||
if (isAdmin) {
|
||||
log.info("管理员模式,获取所有待审核子任务组");
|
||||
List<Map<String, Object>> groups = taskItemService.getPendingApprovalGroups(null);
|
||||
log.info("返回 {} 个待审核子任务组", groups.size());
|
||||
return Result.success(groups);
|
||||
}
|
||||
|
||||
@ -306,8 +315,14 @@ public class TaskItemController {
|
||||
.eq(com.designhub.entity.Department::getStatus, 1)
|
||||
);
|
||||
|
||||
log.info("用户 {} 负责的部门数量: {}", userId, leadingDepts.size());
|
||||
for (com.designhub.entity.Department dept : leadingDepts) {
|
||||
log.info(" - 部门ID: {}, 部门名称: {}", dept.getId(), dept.getDeptName());
|
||||
}
|
||||
|
||||
if (leadingDepts.isEmpty()) {
|
||||
// 不是任何部门的负责人,返回空列表
|
||||
log.info("用户不是任何部门的负责人,返回空列表");
|
||||
return Result.success(new java.util.ArrayList<>());
|
||||
}
|
||||
|
||||
@ -316,7 +331,9 @@ public class TaskItemController {
|
||||
java.util.Set<String> addedKeys = new java.util.HashSet<>();
|
||||
|
||||
for (com.designhub.entity.Department dept : leadingDepts) {
|
||||
log.info("查询部门 {} ({}) 的待审核子任务组", dept.getId(), dept.getDeptName());
|
||||
List<Map<String, Object>> groups = taskItemService.getPendingApprovalGroups(dept.getId());
|
||||
log.info("部门 {} 返回 {} 个子任务组", dept.getId(), groups.size());
|
||||
for (Map<String, Object> group : groups) {
|
||||
String key = group.get("taskId") + "-" + group.get("groupNo");
|
||||
if (!addedKeys.contains(key)) {
|
||||
@ -326,6 +343,7 @@ public class TaskItemController {
|
||||
}
|
||||
}
|
||||
|
||||
log.info("最终返回 {} 个待审核子任务组", allGroups.size());
|
||||
return Result.success(allGroups);
|
||||
}
|
||||
}
|
||||
|
||||
@ -1012,36 +1012,55 @@ public class TaskItemService {
|
||||
* @param receiverDeptId 接单部门ID,null表示查询所有(管理员)
|
||||
*/
|
||||
public List<Map<String, Object>> getPendingApprovalGroups(Long receiverDeptId) {
|
||||
log.info("===== getPendingApprovalGroups 开始 =====");
|
||||
log.info("查询参数 receiverDeptId: {}", receiverDeptId);
|
||||
|
||||
// 查询所有有待审核子任务组的主任务
|
||||
List<TaskItem> pendingItems = taskItemMapper.selectList(
|
||||
new LambdaQueryWrapper<TaskItem>()
|
||||
.eq(TaskItem::getStatus, "pending_approval")
|
||||
);
|
||||
|
||||
log.info("找到 {} 个 pending_approval 状态的子任务", pendingItems.size());
|
||||
|
||||
// 按主任务和组号分组
|
||||
Map<String, Map<String, Object>> groupMap = new HashMap<>();
|
||||
for (TaskItem item : pendingItems) {
|
||||
log.info("处理子任务 ID: {}, item_no: {}, task_type_id: {}",
|
||||
item.getId(), item.getItemNo(), item.getTaskTypeId());
|
||||
|
||||
Task mainTask = taskMapper.selectById(item.getTaskId());
|
||||
if (mainTask == null) continue;
|
||||
if (mainTask == null) {
|
||||
log.warn("子任务 {} 的主任务不存在,跳过", item.getId());
|
||||
continue;
|
||||
}
|
||||
|
||||
// 判断是否有权限查看该子任务
|
||||
boolean hasPermission = false;
|
||||
if (receiverDeptId == null) {
|
||||
// 管理员可以看到所有任务
|
||||
hasPermission = true;
|
||||
log.info("管理员模式,有权限");
|
||||
} else {
|
||||
// 部门负责人:检查子任务的任务类型配置的 allowed_dept_ids 是否包含该部门
|
||||
Long targetDeptId = getTargetDeptIdFromTaskType(item.getTaskTypeId());
|
||||
log.info("子任务 {} 的目标部门ID: {}, 查询的部门ID: {}",
|
||||
item.getId(), targetDeptId, receiverDeptId);
|
||||
|
||||
if (targetDeptId != null && targetDeptId.equals(receiverDeptId)) {
|
||||
hasPermission = true;
|
||||
log.info("匹配成功(通过任务类型配置)");
|
||||
}
|
||||
// 兼容:也检查主任务的 receiver_dept_id
|
||||
if (!hasPermission && mainTask.getReceiverDeptId() != null
|
||||
&& mainTask.getReceiverDeptId().equals(receiverDeptId)) {
|
||||
hasPermission = true;
|
||||
log.info("匹配成功(通过主任务接单部门)");
|
||||
}
|
||||
}
|
||||
|
||||
log.info("子任务 {} 权限检查结果: {}", item.getId(), hasPermission);
|
||||
|
||||
if (hasPermission) {
|
||||
String key = item.getTaskId() + "-" + item.getGroupNo();
|
||||
if (!groupMap.containsKey(key)) {
|
||||
@ -1069,22 +1088,31 @@ public class TaskItemService {
|
||||
* 如果当前类型未配置,则递归向上查找父级类型的配置
|
||||
*/
|
||||
private Long getTargetDeptIdFromTaskType(Long taskTypeId) {
|
||||
log.debug("getTargetDeptIdFromTaskType 调用, taskTypeId: {}", taskTypeId);
|
||||
|
||||
if (taskTypeId == null) {
|
||||
log.debug("taskTypeId 为空,返回 null");
|
||||
return null;
|
||||
}
|
||||
|
||||
com.designhub.entity.DemandType taskType = demandTypeMapper.selectById(taskTypeId);
|
||||
if (taskType == null) {
|
||||
log.warn("任务类型 {} 不存在", taskTypeId);
|
||||
return null;
|
||||
}
|
||||
|
||||
log.debug("任务类型: id={}, name={}, parentId={}, allowedDeptIds={}",
|
||||
taskType.getId(), taskType.getTypeName(), taskType.getParentId(), taskType.getAllowedDeptIds());
|
||||
|
||||
// 如果当前类型配置了allowed_dept_ids,返回第一个部门ID
|
||||
String allowedDeptIds = taskType.getAllowedDeptIds();
|
||||
if (allowedDeptIds != null && !allowedDeptIds.isEmpty()) {
|
||||
try {
|
||||
String[] deptIds = allowedDeptIds.split(",");
|
||||
if (deptIds.length > 0) {
|
||||
return Long.parseLong(deptIds[0].trim());
|
||||
Long result = Long.parseLong(deptIds[0].trim());
|
||||
log.debug("找到 allowed_dept_ids: {}, 返回第一个: {}", allowedDeptIds, result);
|
||||
return result;
|
||||
}
|
||||
} catch (NumberFormatException e) {
|
||||
log.warn("解析allowed_dept_ids失败: {}", allowedDeptIds, e);
|
||||
@ -1093,9 +1121,11 @@ public class TaskItemService {
|
||||
|
||||
// 如果当前类型未配置,递归查找父级
|
||||
if (taskType.getParentId() != null) {
|
||||
log.debug("当前类型未配置 allowed_dept_ids, 递归查找父级: {}", taskType.getParentId());
|
||||
return getTargetDeptIdFromTaskType(taskType.getParentId());
|
||||
}
|
||||
|
||||
log.debug("未找到配置的部门,返回 null");
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user