ProjectController.java 5.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185
  1. package com.wtkj.controller;
  2. import com.baomidou.mybatisplus.core.metadata.IPage;
  3. import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
  4. import com.wtkj.dto.ProjectPageDTO;
  5. import com.wtkj.entity.Project;
  6. import com.wtkj.entity.ProjectGroup;
  7. import com.wtkj.entity.ProjectStage;
  8. import com.wtkj.service.*;
  9. import com.wtkj.vo.MyTaskStatistics;
  10. import com.wtkj.vo.ProjectStageVO;
  11. import com.wtkj.wrapper.ProjectGroupWrapper;
  12. import com.wtkj.wrapper.ProjectStageWrapper;
  13. import com.wtkj.wrapper.ProjectWrapper;
  14. import io.swagger.annotations.Api;
  15. import io.swagger.annotations.ApiOperation;
  16. import lombok.AllArgsConstructor;
  17. import org.springblade.core.mp.support.Condition;
  18. import org.springblade.core.mp.support.Query;
  19. import org.springblade.core.tool.api.R;
  20. import org.springblade.core.tool.utils.Func;
  21. import org.springframework.web.bind.annotation.*;
  22. import javax.validation.Valid;
  23. import java.util.List;
  24. /**
  25. * @author Blizzard
  26. * @create at 2023-09-13 15:50
  27. * @describe
  28. */
  29. @RestController
  30. @AllArgsConstructor
  31. @RequestMapping("/project")
  32. @Api(value = "项目模块", tags = "项目模块")
  33. public class ProjectController {
  34. private final IProjectService projectService;
  35. private final IAsyncService asyncService;
  36. private final IProjectStageService stageService;
  37. private final ITaskService taskService;
  38. private final IProjectGroupService projectGroupService;
  39. /**
  40. * 创建/修改项目
  41. */
  42. @PostMapping("/submit")
  43. @ApiOperation(value = "新建或者修改项目", notes = "传入project")
  44. @ApiOperationSupport(order = 1)
  45. public R<Boolean> create(@RequestBody @Valid Project project) {
  46. return R.status(projectService.submit(project));
  47. }
  48. /**
  49. * 分页
  50. */
  51. @PostMapping("/page")
  52. @ApiOperation(value = "分页", notes = "")
  53. @ApiOperationSupport(order = 2)
  54. public R page(@RequestBody @Valid ProjectPageDTO dto) {
  55. Query query = new Query();
  56. query.setCurrent(dto.getCurrent());
  57. query.setSize(dto.getSize());
  58. IPage<Project> page = projectService.getPage(dto, Condition.getPage(query));
  59. return R.data(ProjectWrapper.build().pageVO(page));
  60. }
  61. /**
  62. * 删除
  63. */
  64. @GetMapping("/delete")
  65. @ApiOperation(value = "删除", notes = "传入ids")
  66. @ApiOperationSupport(order = 3)
  67. public R<Boolean> delete(String ids) {
  68. boolean b = projectService.removeBatchByIds(Func.toLongList(ids));
  69. if (b) {
  70. //todo 项目相关的信息删除
  71. asyncService.removeProject(Func.toLongList(ids));
  72. }
  73. return R.status(b);
  74. }
  75. /**
  76. * 项目下的所有阶段
  77. */
  78. @GetMapping("/stage-list")
  79. @ApiOperation(value = "项目下的所有阶段", notes = "传入projectId")
  80. @ApiOperationSupport(order = 4)
  81. public R<List<ProjectStageVO>> stageList(Long projectId) {
  82. List<ProjectStage> projectStages = stageService.listByProjectId(projectId);
  83. return R.data(ProjectStageWrapper.build().listVO(projectStages));
  84. }
  85. /**
  86. * 修改阶段
  87. */
  88. @PostMapping("/submit-stage")
  89. @ApiOperation(value = "修改项目阶段", notes = "")
  90. @ApiOperationSupport(order = 5)
  91. public R submitStage(@RequestBody ProjectStage stage) {
  92. return R.status(stageService.submit(stage));
  93. }
  94. /**
  95. * 阶段详情
  96. */
  97. @GetMapping("/stage-detail")
  98. @ApiOperation(value = "阶段详情", notes = "传入stageId")
  99. @ApiOperationSupport(order = 6)
  100. public R stageDetail(@RequestParam Long stageId) {
  101. ProjectStage stage = stageService.getById(stageId);
  102. return R.data(ProjectStageWrapper.build().entityVO(stage));
  103. }
  104. /**
  105. * 项目列表统计
  106. */
  107. @GetMapping("/project-statistics")
  108. @ApiOperation(value = "项目列表统计", notes = "")
  109. @ApiOperationSupport(order = 6)
  110. public R projectStatistics(@RequestParam Long topDept, @RequestParam Integer deptCategory, @RequestParam String year) {
  111. return R.data(projectService.projectStatistics(topDept, deptCategory, year));
  112. }
  113. /**
  114. * 项目小组
  115. */
  116. @GetMapping("/project-group-mem")
  117. @ApiOperation(value = "项目组成员", notes = "传入projectId,competentUnit:主管单位")
  118. @ApiOperationSupport(order = 7)
  119. public R groupMem(@RequestParam Long projectId, @RequestParam Long competentUnit) {
  120. List<ProjectGroup> list = projectGroupService.getGroupByProjectId(projectId, competentUnit);
  121. return R.data(ProjectGroupWrapper.build().listVO(list));
  122. }
  123. @GetMapping("/project-detail")
  124. @ApiOperation(value = "项目详情", notes = "")
  125. @ApiOperationSupport(order = 8)
  126. public R detail(@RequestParam Long projectId) {
  127. Project byId = projectService.getById(projectId);
  128. return R.data(ProjectWrapper.build().entityVO(byId));
  129. }
  130. /**
  131. * 工作台任务统计
  132. */
  133. @GetMapping("/task-summary")
  134. @ApiOperation(value = "项目任务统计", notes = "传入stageId")
  135. @ApiOperationSupport(order = 9)
  136. public R<MyTaskStatistics> taskStatistics(@RequestParam Long stageId) {
  137. return R.data(taskService.taskStatistics(stageId, null, null));
  138. }
  139. /**
  140. * 任务分布
  141. */
  142. @GetMapping("/task-distribution")
  143. @ApiOperation(value = "任务分布", notes = "传入projectId")
  144. @ApiOperationSupport(order = 10)
  145. public R projectTaskSummary(@RequestParam Long stageId) {
  146. return R.data(taskService.projectTaskSummary(stageId));
  147. }
  148. /**
  149. * 任务进展走势
  150. */
  151. @GetMapping("/task-situation")
  152. @ApiOperation(value = "任务进展走势", notes = "传入projectId")
  153. @ApiOperationSupport(order = 11)
  154. public R projectTaskSituation(@RequestParam Long stageId) {
  155. return R.data(taskService.projectTaskSituation(stageId));
  156. }
  157. @GetMapping("/task-burnout")
  158. @ApiOperation(value = "任务燃尽", notes = "传入projectId")
  159. @ApiOperationSupport(order = 12)
  160. public R projectTaskBurnout(@RequestParam Long stageId) {
  161. return R.data(taskService.projectTaskBurnout(stageId));
  162. }
  163. }