任务要求:通过递归查询当前阶段下的所有子阶段和任务
步骤:先查询当前阶段下的所有子阶段,然后通过子阶段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;
}