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

1858-李同学

发表文章数:50

热门标签

, ,
首页 » Java » 正文

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

步骤:先查询当前阶段下的所有子阶段,然后通过子阶段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 getChildStagesByStageId(Integer id) {
    return projectStageService.getChildStagesByStageId(id);
}    


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

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

    for (ProjectStage ps : projectStages) {
        list.add(ps);
        getAllStages(list, ps.getId());
    }
    return list;
}

拜师教育学员文章:作者:1858-李同学, 转载或复制请以 超链接形式 并注明出处 拜师资源博客
原文地址:《递归查询(获取当前阶段下的所有子阶段)》 发布于2022-01-19

分享到:
赞(0) 打赏

评论 抢沙发

评论前必须登录!

  注册



长按图片转发给朋友

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏

Vieu3.3主题
专业打造轻量级个人企业风格博客主题!专注于前端开发,全站响应式布局自适应模板。

登录

忘记密码 ?

您也可以使用第三方帐号快捷登录

Q Q 登 录
微 博 登 录