DepartmentController.java 7.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178
  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.ResponseDepartmentItemVO;
  9. import com.persagy.fm.department.model.vo.ResponseDepartmentListItemVO;
  10. import com.persagy.fm.department.model.vo.ResponseDepartmentTreeItemVO;
  11. import com.persagy.fm.department.service.IDepTreeService;
  12. import com.persagy.fm.department.service.IDepartmentService;
  13. import com.persagy.fm.department.utils.DepDataUtil;
  14. import com.persagy.fm.depproject.service.IDepProjectService;
  15. import com.persagy.fm.saas.project.model.vo.ProjectTreeItemVO;
  16. import io.swagger.annotations.Api;
  17. import io.swagger.annotations.ApiOperation;
  18. import org.apache.commons.lang3.StringUtils;
  19. import org.springframework.beans.factory.annotation.Autowired;
  20. import org.springframework.util.CollectionUtils;
  21. import org.springframework.validation.annotation.Validated;
  22. import org.springframework.web.bind.annotation.PostMapping;
  23. import org.springframework.web.bind.annotation.RequestBody;
  24. import org.springframework.web.bind.annotation.RequestMapping;
  25. import org.springframework.web.bind.annotation.RestController;
  26. import javax.validation.Valid;
  27. import java.util.Arrays;
  28. import java.util.List;
  29. import java.util.Map;
  30. import java.util.stream.Collectors;
  31. /**
  32. * 部门控制层
  33. *
  34. * @author lixing
  35. * @version V1.0 2021-03-11 15:09:17
  36. */
  37. @Api(tags = "部门")
  38. @Validated
  39. @RestController
  40. @RequestMapping("departments")
  41. public class DepartmentController {
  42. @Autowired
  43. private IDepartmentService departmentService;
  44. @Autowired
  45. private IDepTreeService depTreeService;
  46. @Autowired
  47. private IDepProjectService depProjectService;
  48. @ApiOperation(value = "创建部门")
  49. @PostMapping("/create")
  50. public CommonResult<FmResponseUpsertVO> createDepartment(
  51. @Valid @RequestBody AddDepartmentDTO addDepartmentDTO) {
  52. Long id = departmentService.createDepartment(addDepartmentDTO);
  53. return ResultHelper.single(new FmResponseUpsertVO(id));
  54. }
  55. @ApiOperation(value = "部门详情")
  56. @PostMapping("/get")
  57. // TODO: 2021/3/24 使用翻译器
  58. // @Transes({
  59. // @Trans(source = "com.persagy.fm.person.service.IPersonTransBatchHandler",
  60. // type = TransType.SERVICE, result = "name", batch = true,
  61. // condition = "id", parameter = "managers", target = "managersShowName"),
  62. // @Trans(source = "com.persagy.fm.person.service.IPersonTransBatchHandler",
  63. // type = TransType.SERVICE, result = "name", batch = true,
  64. // condition = "id", parameter = "projectIds", target = "projectsShowName")
  65. // })
  66. public CommonResult<ResponseDepartmentItemVO> queryDepartmentDetail(
  67. @Valid @RequestBody QueryDepartmentDetailDTO queryDepartmentDetailDTO) {
  68. Department department = departmentService.queryDepartmentDetail(queryDepartmentDetailDTO.getId());
  69. ResponseDepartmentItemVO responseDepartmentItemVO = ConvertDepartmentTool.INSTANCE.convert2ResponseItemDTO(department);
  70. // 部门负责人转换为列表
  71. String managers = department.getManagers();
  72. List<Long> managerIdList = change2ManagerIdList(managers);
  73. responseDepartmentItemVO.setManagers(managerIdList);
  74. return ResultHelper.single(responseDepartmentItemVO);
  75. }
  76. /**
  77. * 将部门负责人转换为负责人id列表
  78. *
  79. * @param managers 负责人id字符串:id,id,id
  80. * @return 负责人id列表
  81. * @author lixing
  82. * @version V1.0 2021/3/24 11:09 上午
  83. */
  84. private List<Long> change2ManagerIdList(String managers) {
  85. if (StringUtils.isNotBlank(managers)) {
  86. String[] managersArray = managers.split(",");
  87. List<String> managerStrList = Arrays.asList(managersArray);
  88. return managerStrList.stream().map(Long::valueOf).collect(Collectors.toList());
  89. }
  90. return null;
  91. }
  92. @ApiOperation(value = "更新部门")
  93. @PostMapping("/update")
  94. public CommonResult<FmResponseUpsertVO> updateDepartment(
  95. @Valid @RequestBody UpdateDepartmentDTO updateDepartmentDTO) {
  96. departmentService.updateDepartment(updateDepartmentDTO);
  97. return ResultHelper.single(new FmResponseUpsertVO(updateDepartmentDTO.getId()));
  98. }
  99. @ApiOperation(value = "删除部门")
  100. @PostMapping("/delete")
  101. public CommonResult deleteDepartment(
  102. @RequestBody @Valid DeleteDepartmentDTO deleteDepartmentDTO) {
  103. departmentService.deleteDepartment(deleteDepartmentDTO.getId());
  104. return ResultHelper.success();
  105. }
  106. @ApiOperation(value = "部门列表")
  107. @PostMapping("/query")
  108. public CommonResult<PageList<ResponseDepartmentListItemVO>> queryDepartment(
  109. @Valid @RequestBody QueryDepartmentDTO queryDepartmentDTO) {
  110. List<Department> departmentList = departmentService.queryDepartmentList(queryDepartmentDTO);
  111. List<ResponseDepartmentListItemVO> resultList = ConvertDepartmentTool.INSTANCE.convert2List(departmentList);
  112. /* 处理返回结果中是否包含子部门的业务 */
  113. if (CollectionUtils.isEmpty(departmentList)) {
  114. return ResultHelper.multi(resultList);
  115. }
  116. // 获取部门的子部门
  117. List<Long> deptIds = departmentList.stream().
  118. map(Department::getId).
  119. collect(Collectors.toList());
  120. List<Department> sonDeps = departmentService.queryDepListByParentIds(deptIds);
  121. Map<Long, List<Department>> parentIdMap = DepDataUtil.sonDeps2ParentIdMap(sonDeps);
  122. resultList.forEach(item -> {
  123. // 如果map中包含部门的id,代表部门有子部门
  124. if (DepDataUtil.hasChildren(item.getId(), parentIdMap)) {
  125. item.setHasChildren(BoolEnum.TRUE.getType());
  126. } else {
  127. item.setHasChildren(BoolEnum.FALSE.getType());
  128. }
  129. });
  130. return ResultHelper.multi(resultList);
  131. }
  132. //@ApiOperation(value = "部门列表, 分页查询")
  133. //@PostMapping("/query")
  134. //public CommonResult<List<ResponseDepartmentListItemVO>> queryDepartment(
  135. // @Valid @RequestBody PageQueryDepartmentDTO pageQueryDepartmentDTO) {
  136. // IPage<ResponseDepartmentListItemVO> pagedList = departmentService.pageQueryDepartment(pageQueryDepartmentDTO);
  137. // IPage<ResponseDepartmentListItemVO> pagedResultList = pagedList.convert(item -> {
  138. // try {
  139. // return ConvertDepartmentTool.INSTANCE.convert2ResponseListItemDTO(item);
  140. // } catch (Exception e) {
  141. // throw new IllegalArgumentException("分页查询,Department实体类转换为列表对象发生异常", e);
  142. // }
  143. // });
  144. // return FmResponseUtil.successContent(pagedResultList);;
  145. //}
  146. @ApiOperation(value = "部门树")
  147. @PostMapping("/tree")
  148. public CommonResult<PageList<ResponseDepartmentTreeItemVO>> queryDepartmentTree(
  149. @Valid @RequestBody QueryDepartmentTreeDTO queryDepartmentTreeDTO) {
  150. List<ResponseDepartmentTreeItemVO> responseDepTreeItems = depTreeService.queryDepartmentTree(queryDepartmentTreeDTO);
  151. return ResultHelper.multi(responseDepTreeItems);
  152. }
  153. @ApiOperation(value = "部门项目树")
  154. @PostMapping("/projects/tree")
  155. public CommonResult<PageList<ProjectTreeItemVO>> queryDepProjectTree(
  156. @Valid @RequestBody DeleteDepartmentDTO deleteDepartmentDTO) {
  157. List<ProjectTreeItemVO> projectTreeItemVOList = depProjectService.queryDepProjectTree(deleteDepartmentDTO.getId());
  158. return ResultHelper.multi(projectTreeItemVOList);
  159. }
  160. }