DepartmentController.java 8.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186
  1. package com.persagy.fm.department.controller;
  2. import com.persagy.fm.common.constant.enums.BoolEnum;
  3. import com.persagy.fm.common.response.*;
  4. import com.persagy.fm.common.utils.ResultHelper;
  5. import com.persagy.fm.department.model.ConvertDepartmentTool;
  6. import com.persagy.fm.department.model.Department;
  7. import com.persagy.fm.department.model.dto.*;
  8. import com.persagy.fm.department.model.vo.ManagerVO;
  9. import com.persagy.fm.department.model.vo.ResponseDepartmentItemVO;
  10. import com.persagy.fm.department.model.vo.ResponseDepartmentListItemVO;
  11. import com.persagy.fm.department.model.vo.ResponseDepartmentTreeItemVO;
  12. import com.persagy.fm.department.service.IDepTranslator;
  13. import com.persagy.fm.department.service.IDepTreeService;
  14. import com.persagy.fm.department.service.IDepartmentService;
  15. import com.persagy.fm.department.utils.DepDataUtil;
  16. import com.persagy.fm.depproject.model.DepProject;
  17. import com.persagy.fm.depproject.model.dto.QueryDepProjectDTO;
  18. import com.persagy.fm.depproject.service.IDepProjectService;
  19. import com.persagy.fm.mybatis.service.CreateDbService;
  20. import com.persagy.fm.person.service.IPersonService;
  21. import com.persagy.fm.saas.project.model.vo.ProjectTreeItemVO;
  22. import com.persagy.fm.translate.model.Trans;
  23. import com.persagy.fm.translate.model.TransType;
  24. import com.persagy.fm.translate.model.Transes;
  25. import io.swagger.annotations.Api;
  26. import io.swagger.annotations.ApiOperation;
  27. import org.apache.commons.lang3.StringUtils;
  28. import org.assertj.core.util.Lists;
  29. import org.springframework.beans.factory.annotation.Autowired;
  30. import org.springframework.util.CollectionUtils;
  31. import org.springframework.validation.annotation.Validated;
  32. import org.springframework.web.bind.annotation.PostMapping;
  33. import org.springframework.web.bind.annotation.RequestBody;
  34. import org.springframework.web.bind.annotation.RequestMapping;
  35. import org.springframework.web.bind.annotation.RestController;
  36. import javax.validation.Valid;
  37. import java.util.Arrays;
  38. import java.util.List;
  39. import java.util.Map;
  40. import java.util.stream.Collectors;
  41. /**
  42. * 部门控制层
  43. *
  44. * @author lixing
  45. * @version V1.0 2021-03-11 15:09:17
  46. */
  47. @Api(tags = "部门")
  48. @Validated
  49. @RestController
  50. @RequestMapping("departments")
  51. public class DepartmentController {
  52. @Autowired
  53. private IDepartmentService departmentService;
  54. @Autowired
  55. private IDepTreeService depTreeService;
  56. @Autowired
  57. private IDepProjectService depProjectService;
  58. @Autowired
  59. private IDepTranslator depTranslator;
  60. @ApiOperation(value = "创建部门")
  61. @PostMapping("/create")
  62. public CommonResult<FmResponseUpsertVO> createDepartment(
  63. @Valid @RequestBody AddDepartmentDTO addDepartmentDTO) {
  64. String id = departmentService.createDepartment(addDepartmentDTO);
  65. return ResultHelper.single(new FmResponseUpsertVO(id));
  66. }
  67. @ApiOperation(value = "部门详情")
  68. @PostMapping("/get")
  69. @Trans(type = TransType.DB, source = "department", parameter = "parentId", target = "parentShowName")
  70. public CommonResult<ResponseDepartmentItemVO> queryDepartmentDetail(
  71. @Valid @RequestBody QueryDepartmentDetailDTO queryDepartmentDetailDTO) {
  72. Department department = departmentService.queryDepartmentDetail(queryDepartmentDetailDTO.getId());
  73. ResponseDepartmentItemVO responseDepartmentItemVO = ConvertDepartmentTool.INSTANCE.convert2ResponseItemDTO(department);
  74. // 给部门负责人赋值
  75. String managers = department.getManagers();
  76. responseDepartmentItemVO.setManagers(depTranslator.getManagerVOList(managers));
  77. // 给项目赋值
  78. QueryDepProjectDTO queryDepProjectDTO = new QueryDepProjectDTO();
  79. queryDepProjectDTO.setDepId(department.getId());
  80. List<DepProject> depProjectList = depProjectService.queryDepProjectList(queryDepProjectDTO);
  81. List<String> projectIds = depProjectList.stream().
  82. map(DepProject::getProjectId).collect(Collectors.toList());
  83. responseDepartmentItemVO.setProjects(depTranslator.getProjectVOList(projectIds));
  84. return ResultHelper.single(responseDepartmentItemVO);
  85. }
  86. @ApiOperation(value = "更新部门")
  87. @PostMapping("/update")
  88. public CommonResult<FmResponseUpsertVO> updateDepartment(
  89. @Valid @RequestBody UpdateDepartmentDTO updateDepartmentDTO) {
  90. departmentService.updateDepartment(updateDepartmentDTO);
  91. return ResultHelper.single(new FmResponseUpsertVO(updateDepartmentDTO.getId()));
  92. }
  93. @ApiOperation(value = "删除部门")
  94. @PostMapping("/delete")
  95. public CommonResult deleteDepartment(
  96. @RequestBody @Valid DeleteDepartmentDTO deleteDepartmentDTO) {
  97. departmentService.deleteDepartment(deleteDepartmentDTO.getId());
  98. return ResultHelper.success();
  99. }
  100. @ApiOperation(value = "部门列表")
  101. @PostMapping("/query")
  102. public CommonResult<PageList<ResponseDepartmentListItemVO>> queryDepartment(
  103. @Valid @RequestBody QueryDepartmentDTO queryDepartmentDTO) {
  104. List<Department> departmentList = departmentService.queryDepartmentList(queryDepartmentDTO);
  105. List<ResponseDepartmentListItemVO> resultList = ConvertDepartmentTool.INSTANCE.convert2List(departmentList);
  106. /* 处理返回结果中是否包含子部门的业务 */
  107. if (CollectionUtils.isEmpty(departmentList)) {
  108. return ResultHelper.multi(resultList);
  109. }
  110. // 获取部门的子部门
  111. List<String> deptIds = departmentList.stream().
  112. map(Department::getId).
  113. collect(Collectors.toList());
  114. List<Department> sonDeps = departmentService.queryDepListByParentIds(deptIds);
  115. Map<String, List<Department>> parentIdMap = DepDataUtil.sonDeps2ParentIdMap(sonDeps);
  116. resultList.forEach(item -> {
  117. // 如果map中包含部门的id,代表部门有子部门
  118. if (DepDataUtil.hasChildren(item.getId(), parentIdMap)) {
  119. item.setHasChildren(BoolEnum.TRUE.getType());
  120. } else {
  121. item.setHasChildren(BoolEnum.FALSE.getType());
  122. }
  123. });
  124. return ResultHelper.multi(resultList);
  125. }
  126. //@ApiOperation(value = "部门列表, 分页查询")
  127. //@PostMapping("/query")
  128. //public CommonResult<List<ResponseDepartmentListItemVO>> queryDepartment(
  129. // @Valid @RequestBody PageQueryDepartmentDTO pageQueryDepartmentDTO) {
  130. // IPage<ResponseDepartmentListItemVO> pagedList = departmentService.pageQueryDepartment(pageQueryDepartmentDTO);
  131. // IPage<ResponseDepartmentListItemVO> pagedResultList = pagedList.convert(item -> {
  132. // try {
  133. // return ConvertDepartmentTool.INSTANCE.convert2ResponseListItemDTO(item);
  134. // } catch (Exception e) {
  135. // throw new IllegalArgumentException("分页查询,Department实体类转换为列表对象发生异常", e);
  136. // }
  137. // });
  138. // return FmResponseUtil.successContent(pagedResultList);;
  139. //}
  140. @ApiOperation(value = "部门树")
  141. @PostMapping("/tree")
  142. public CommonResult<PageList<ResponseDepartmentTreeItemVO>> queryDepartmentTree(
  143. @Valid @RequestBody QueryDepartmentTreeDTO queryDepartmentTreeDTO) {
  144. List<ResponseDepartmentTreeItemVO> responseDepTreeItems = depTreeService.queryDepartmentTree(queryDepartmentTreeDTO);
  145. return ResultHelper.multi(responseDepTreeItems);
  146. }
  147. @ApiOperation(value = "部门项目树")
  148. @PostMapping("/projects/tree")
  149. public CommonResult<PageList<ProjectTreeItemVO>> queryDepProjectTree(
  150. @Valid @RequestBody QueryDepProjectTreeDTO queryDepProjectTreeDTO) {
  151. List<ProjectTreeItemVO> projectTreeItemVOList = depProjectService.queryDepProjectTree(queryDepProjectTreeDTO.getParentDepId());
  152. return ResultHelper.multi(projectTreeItemVOList);
  153. }
  154. @ApiOperation(value = "检验部门是否可删除")
  155. @PostMapping("/deleteAvailable")
  156. public CommonResult checkDepDeletable(
  157. @RequestBody @Valid DeleteDepartmentDTO deleteDepartmentDTO) {
  158. departmentService.checkDeletable(deleteDepartmentDTO.getId());
  159. return ResultHelper.success();
  160. }
  161. // @Autowired
  162. // CreateDbService createDbService;
  163. //
  164. // @PostMapping("/createDb")
  165. // public CommonResult test() {
  166. // createDbService.createDb("test");
  167. // return ResultHelper.success();
  168. // }
  169. }