递归查询(获取当前阶段下的所有子阶段)

该博客介绍了如何通过递归查询方法获取当前FPGA开发阶段下的所有子阶段及其包含的任务,详细阐述了查询步骤,包括先获取阶段的子阶段ID,再进一步查询每个子阶段中的具体任务。
摘要由CSDN通过智能技术生成

任务要求:通过递归查询当前阶段下的所有子阶段和任务

步骤:先查询当前阶段下的所有子阶段,然后通过子阶段id查询所有任务

CREATE TABLE `project_stage` (
  `id` int NOT NULL AUTO_INCREMENT,
  `parent_id` int DEFAULT NULL COMMENT '父阶段id',
  `name` varchar(100) DEFAULT NULL COMMENT '阶段名',
  `creater_login_no` varchar(50) DEFAULT NULL COMMENT '创建人账号',
  `create_time` datetime DEFAULT NULL COMMENT '创建日期',
  `project_id` int DEFAULT NULL COMMENT '项目id',
  `level` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL COMMENT '等级',
  `plan_begin_time` datetime DEFAULT NULL COMMENT '计划开始时间',
  `plan_end_time` datetime DEFAULT NULL COMMENT '计划结束时间',
  `delivery_time` datetime DEFAULT NULL COMMENT '交付日期',
  `fz_department_id` int DEFAULT NULL COMMENT '负责部门id',
  `fz_user_no` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL COMMENT '负责人账号',
  `fz_user_name` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL COMMENT '负责人姓名',
  `status` int DEFAULT NULL COMMENT '状态: 0 未完成,1 已完成',
  `number` decimal(10,0) DEFAULT NULL COMMENT '数值',
  `unit` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL COMMENT '单位',
  `coefficient` decimal(10,0) DEFAULT NULL COMMENT '难度系数',
  `fact_number` decimal(10,0) DEFAULT NULL COMMENT '实际数值',
  `property` int DEFAULT NULL COMMENT '属性:医院,住宅',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=9 DEFAULT CHARSET=utf8 COMMENT='项目阶段';

CREATE TABLE `task` (
  `id` int NOT NULL AUTO_INCREMENT,
  `name` varchar(300) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL COMMENT '任务名称',
  `project_id` int DEFAULT NULL COMMENT '项目id',
  `stage_id` int DEFAULT NULL COMMENT '阶段id',
  `pic` varchar(300) DEFAULT NULL COMMENT '任务图片',
  `executor_no` varchar(50) DEFAULT NULL COMMENT '执行人账号',
  `check_no` varchar(50) DEFAULT NULL COMMENT '审查人账号',
  `check_time` datetime DEFAULT NULL COMMENT '审查时间',
  `memo` varchar(300) DEFAULT NULL COMMENT '任务描述',
  `plan_begin` datetime DEFAULT NULL COMMENT '计划开始时间',
  `plan_end` datetime DEFAULT NULL COMMENT '计划结束时间',
  `plan_hours` decimal(5,1) DEFAULT NULL COMMENT '计划工时',
  `status` int DEFAULT NULL COMMENT '状态:未分配,进行中,已完成',
  `execute_status` bit(1) DEFAULT NULL COMMENT 'true正在执行,false未执行',
  `creater_login_no` varchar(50) DEFAULT NULL COMMENT '创建人账号',
  `create_time` datetime DEFAULT NULL COMMENT '创建日期',
  `update_time` datetime DEFAULT NULL COMMENT '更新日期',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=8 DEFAULT CHARSET=utf8 COMMENT='阶段任务表';

 

@ApiOperation("通过父阶段id获取子阶段列表")
@GetMapping("/getChildStagesByStageId")
private List<ProjectStage> getChildStagesByStageId(Integer id) {
    return projectStageService.getChildStagesByStageId(id);
}    


@ApiOperation("获取当前阶段下的所有阶段")
@GetMapping("/getAllStagesByStageId")
public List<ProjectStage> getAllStagesByStageId(Integer id){
    return getAllStages(new ArrayList<>(), id);
}

private List<ProjectStage> getAllStages (List<ProjectStage> list, Integer id){
    //查询当前阶段下的子阶段
    List<ProjectStage> projectStages = projectStageService.getChildStagesByStageId(id);

    for (ProjectStage ps : projectStages) {
        list.add(ps);
        getAllStages(list, ps.getId());
    }
    return list;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值