package com.wtkj.controller; import com.baomidou.mybatisplus.core.metadata.IPage; import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport; import com.wtkj.dto.ProjectPageDTO; import com.wtkj.entity.Project; import com.wtkj.entity.ProjectGroup; import com.wtkj.entity.ProjectStage; import com.wtkj.service.*; import com.wtkj.vo.MyTaskStatistics; import com.wtkj.vo.ProjectStageVO; import com.wtkj.wrapper.ProjectGroupWrapper; import com.wtkj.wrapper.ProjectStageWrapper; import com.wtkj.wrapper.ProjectWrapper; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import lombok.AllArgsConstructor; import org.springblade.core.mp.support.Condition; import org.springblade.core.mp.support.Query; import org.springblade.core.tool.api.R; import org.springblade.core.tool.utils.Func; import org.springframework.web.bind.annotation.*; import javax.validation.Valid; import java.util.List; /** * @author Blizzard * @create at 2023-09-13 15:50 * @describe */ @RestController @AllArgsConstructor @RequestMapping("/project") @Api(value = "项目模块", tags = "项目模块") public class ProjectController { private final IProjectService projectService; private final IAsyncService asyncService; private final IProjectStageService stageService; private final ITaskService taskService; private final IProjectGroupService projectGroupService; /** * 创建/修改项目 */ @PostMapping("/submit") @ApiOperation(value = "新建或者修改项目", notes = "传入project") @ApiOperationSupport(order = 1) public R create(@RequestBody @Valid Project project) { return R.status(projectService.submit(project)); } /** * 分页 */ @PostMapping("/page") @ApiOperation(value = "分页", notes = "") @ApiOperationSupport(order = 2) public R page(@RequestBody @Valid ProjectPageDTO dto) { Query query = new Query(); query.setCurrent(dto.getCurrent()); query.setSize(dto.getSize()); IPage page = projectService.getPage(dto, Condition.getPage(query)); return R.data(ProjectWrapper.build().pageVO(page)); } /** * 删除 */ @GetMapping("/delete") @ApiOperation(value = "删除", notes = "传入ids") @ApiOperationSupport(order = 3) public R delete(String ids) { boolean b = projectService.removeBatchByIds(Func.toLongList(ids)); if (b) { //todo 项目相关的信息删除 asyncService.removeProject(Func.toLongList(ids)); } return R.status(b); } /** * 项目下的所有阶段 */ @GetMapping("/stage-list") @ApiOperation(value = "项目下的所有阶段", notes = "传入projectId") @ApiOperationSupport(order = 4) public R> stageList(Long projectId) { List projectStages = stageService.listByProjectId(projectId); return R.data(ProjectStageWrapper.build().listVO(projectStages)); } /** * 修改阶段 */ @PostMapping("/submit-stage") @ApiOperation(value = "修改项目阶段", notes = "") @ApiOperationSupport(order = 5) public R submitStage(@RequestBody ProjectStage stage) { return R.status(stageService.submit(stage)); } /** * 阶段详情 */ @GetMapping("/stage-detail") @ApiOperation(value = "阶段详情", notes = "传入stageId") @ApiOperationSupport(order = 6) public R stageDetail(@RequestParam Long stageId) { ProjectStage stage = stageService.getById(stageId); return R.data(ProjectStageWrapper.build().entityVO(stage)); } /** * 项目列表统计 */ @GetMapping("/project-statistics") @ApiOperation(value = "项目列表统计", notes = "") @ApiOperationSupport(order = 6) public R projectStatistics(@RequestParam Long topDept, @RequestParam Integer deptCategory, @RequestParam String year) { return R.data(projectService.projectStatistics(topDept, deptCategory, year)); } /** * 项目小组 */ @GetMapping("/project-group-mem") @ApiOperation(value = "项目组成员", notes = "传入projectId,competentUnit:主管单位") @ApiOperationSupport(order = 7) public R groupMem(@RequestParam Long projectId, @RequestParam Long competentUnit) { List list = projectGroupService.getGroupByProjectId(projectId, competentUnit); return R.data(ProjectGroupWrapper.build().listVO(list)); } @GetMapping("/project-detail") @ApiOperation(value = "项目详情", notes = "") @ApiOperationSupport(order = 8) public R detail(@RequestParam Long projectId) { Project byId = projectService.getById(projectId); return R.data(ProjectWrapper.build().entityVO(byId)); } /** * 工作台任务统计 */ @GetMapping("/task-summary") @ApiOperation(value = "项目任务统计", notes = "传入stageId") @ApiOperationSupport(order = 9) public R taskStatistics(@RequestParam Long stageId) { return R.data(taskService.taskStatistics(stageId, null, null)); } /** * 任务分布 */ @GetMapping("/task-distribution") @ApiOperation(value = "任务分布", notes = "传入projectId") @ApiOperationSupport(order = 10) public R projectTaskSummary(@RequestParam Long stageId) { return R.data(taskService.projectTaskSummary(stageId)); } /** * 任务进展走势 */ @GetMapping("/task-situation") @ApiOperation(value = "任务进展走势", notes = "传入projectId") @ApiOperationSupport(order = 11) public R projectTaskSituation(@RequestParam Long stageId) { return R.data(taskService.projectTaskSituation(stageId)); } @GetMapping("/task-burnout") @ApiOperation(value = "任务燃尽", notes = "传入projectId") @ApiOperationSupport(order = 12) public R projectTaskBurnout(@RequestParam Long stageId) { return R.data(taskService.projectTaskBurnout(stageId)); } }