| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186 |
- package com.persagy.fm.department.controller;
- import com.persagy.fm.common.constant.enums.BoolEnum;
- import com.persagy.fm.common.response.*;
- import com.persagy.fm.common.utils.ResultHelper;
- import com.persagy.fm.department.model.ConvertDepartmentTool;
- import com.persagy.fm.department.model.Department;
- import com.persagy.fm.department.model.dto.*;
- import com.persagy.fm.department.model.vo.ManagerVO;
- import com.persagy.fm.department.model.vo.ResponseDepartmentItemVO;
- import com.persagy.fm.department.model.vo.ResponseDepartmentListItemVO;
- import com.persagy.fm.department.model.vo.ResponseDepartmentTreeItemVO;
- import com.persagy.fm.department.service.IDepTranslator;
- import com.persagy.fm.department.service.IDepTreeService;
- import com.persagy.fm.department.service.IDepartmentService;
- import com.persagy.fm.department.utils.DepDataUtil;
- import com.persagy.fm.depproject.model.DepProject;
- import com.persagy.fm.depproject.model.dto.QueryDepProjectDTO;
- import com.persagy.fm.depproject.service.IDepProjectService;
- import com.persagy.fm.mybatis.service.CreateDbService;
- import com.persagy.fm.person.service.IPersonService;
- import com.persagy.fm.saas.project.model.vo.ProjectTreeItemVO;
- import com.persagy.fm.translate.model.Trans;
- import com.persagy.fm.translate.model.TransType;
- import com.persagy.fm.translate.model.Transes;
- import io.swagger.annotations.Api;
- import io.swagger.annotations.ApiOperation;
- import org.apache.commons.lang3.StringUtils;
- import org.assertj.core.util.Lists;
- import org.springframework.beans.factory.annotation.Autowired;
- import org.springframework.util.CollectionUtils;
- import org.springframework.validation.annotation.Validated;
- import org.springframework.web.bind.annotation.PostMapping;
- import org.springframework.web.bind.annotation.RequestBody;
- import org.springframework.web.bind.annotation.RequestMapping;
- import org.springframework.web.bind.annotation.RestController;
- import javax.validation.Valid;
- import java.util.Arrays;
- import java.util.List;
- import java.util.Map;
- import java.util.stream.Collectors;
- /**
- * 部门控制层
- *
- * @author lixing
- * @version V1.0 2021-03-11 15:09:17
- */
- @Api(tags = "部门")
- @Validated
- @RestController
- @RequestMapping("departments")
- public class DepartmentController {
- @Autowired
- private IDepartmentService departmentService;
- @Autowired
- private IDepTreeService depTreeService;
- @Autowired
- private IDepProjectService depProjectService;
- @Autowired
- private IDepTranslator depTranslator;
- @ApiOperation(value = "创建部门")
- @PostMapping("/create")
- public CommonResult<FmResponseUpsertVO> createDepartment(
- @Valid @RequestBody AddDepartmentDTO addDepartmentDTO) {
- String id = departmentService.createDepartment(addDepartmentDTO);
- return ResultHelper.single(new FmResponseUpsertVO(id));
- }
- @ApiOperation(value = "部门详情")
- @PostMapping("/get")
- @Trans(type = TransType.DB, source = "department", parameter = "parentId", target = "parentShowName")
- public CommonResult<ResponseDepartmentItemVO> queryDepartmentDetail(
- @Valid @RequestBody QueryDepartmentDetailDTO queryDepartmentDetailDTO) {
- Department department = departmentService.queryDepartmentDetail(queryDepartmentDetailDTO.getId());
- ResponseDepartmentItemVO responseDepartmentItemVO = ConvertDepartmentTool.INSTANCE.convert2ResponseItemDTO(department);
- // 给部门负责人赋值
- String managers = department.getManagers();
- responseDepartmentItemVO.setManagers(depTranslator.getManagerVOList(managers));
- // 给项目赋值
- QueryDepProjectDTO queryDepProjectDTO = new QueryDepProjectDTO();
- queryDepProjectDTO.setDepId(department.getId());
- List<DepProject> depProjectList = depProjectService.queryDepProjectList(queryDepProjectDTO);
- List<String> projectIds = depProjectList.stream().
- map(DepProject::getProjectId).collect(Collectors.toList());
- responseDepartmentItemVO.setProjects(depTranslator.getProjectVOList(projectIds));
- return ResultHelper.single(responseDepartmentItemVO);
- }
- @ApiOperation(value = "更新部门")
- @PostMapping("/update")
- public CommonResult<FmResponseUpsertVO> updateDepartment(
- @Valid @RequestBody UpdateDepartmentDTO updateDepartmentDTO) {
- departmentService.updateDepartment(updateDepartmentDTO);
- return ResultHelper.single(new FmResponseUpsertVO(updateDepartmentDTO.getId()));
- }
- @ApiOperation(value = "删除部门")
- @PostMapping("/delete")
- public CommonResult deleteDepartment(
- @RequestBody @Valid DeleteDepartmentDTO deleteDepartmentDTO) {
- departmentService.deleteDepartment(deleteDepartmentDTO.getId());
- return ResultHelper.success();
- }
- @ApiOperation(value = "部门列表")
- @PostMapping("/query")
- public CommonResult<PageList<ResponseDepartmentListItemVO>> queryDepartment(
- @Valid @RequestBody QueryDepartmentDTO queryDepartmentDTO) {
- List<Department> departmentList = departmentService.queryDepartmentList(queryDepartmentDTO);
- List<ResponseDepartmentListItemVO> resultList = ConvertDepartmentTool.INSTANCE.convert2List(departmentList);
- /* 处理返回结果中是否包含子部门的业务 */
- if (CollectionUtils.isEmpty(departmentList)) {
- return ResultHelper.multi(resultList);
- }
- // 获取部门的子部门
- List<String> deptIds = departmentList.stream().
- map(Department::getId).
- collect(Collectors.toList());
- List<Department> sonDeps = departmentService.queryDepListByParentIds(deptIds);
- Map<String, List<Department>> parentIdMap = DepDataUtil.sonDeps2ParentIdMap(sonDeps);
- resultList.forEach(item -> {
- // 如果map中包含部门的id,代表部门有子部门
- if (DepDataUtil.hasChildren(item.getId(), parentIdMap)) {
- item.setHasChildren(BoolEnum.TRUE.getType());
- } else {
- item.setHasChildren(BoolEnum.FALSE.getType());
- }
- });
- return ResultHelper.multi(resultList);
- }
- //@ApiOperation(value = "部门列表, 分页查询")
- //@PostMapping("/query")
- //public CommonResult<List<ResponseDepartmentListItemVO>> queryDepartment(
- // @Valid @RequestBody PageQueryDepartmentDTO pageQueryDepartmentDTO) {
- // IPage<ResponseDepartmentListItemVO> pagedList = departmentService.pageQueryDepartment(pageQueryDepartmentDTO);
- // IPage<ResponseDepartmentListItemVO> pagedResultList = pagedList.convert(item -> {
- // try {
- // return ConvertDepartmentTool.INSTANCE.convert2ResponseListItemDTO(item);
- // } catch (Exception e) {
- // throw new IllegalArgumentException("分页查询,Department实体类转换为列表对象发生异常", e);
- // }
- // });
- // return FmResponseUtil.successContent(pagedResultList);;
- //}
- @ApiOperation(value = "部门树")
- @PostMapping("/tree")
- public CommonResult<PageList<ResponseDepartmentTreeItemVO>> queryDepartmentTree(
- @Valid @RequestBody QueryDepartmentTreeDTO queryDepartmentTreeDTO) {
- List<ResponseDepartmentTreeItemVO> responseDepTreeItems = depTreeService.queryDepartmentTree(queryDepartmentTreeDTO);
- return ResultHelper.multi(responseDepTreeItems);
- }
- @ApiOperation(value = "部门项目树")
- @PostMapping("/projects/tree")
- public CommonResult<PageList<ProjectTreeItemVO>> queryDepProjectTree(
- @Valid @RequestBody QueryDepProjectTreeDTO queryDepProjectTreeDTO) {
- List<ProjectTreeItemVO> projectTreeItemVOList = depProjectService.queryDepProjectTree(queryDepProjectTreeDTO.getParentDepId());
- return ResultHelper.multi(projectTreeItemVOList);
- }
- @ApiOperation(value = "检验部门是否可删除")
- @PostMapping("/deleteAvailable")
- public CommonResult checkDepDeletable(
- @RequestBody @Valid DeleteDepartmentDTO deleteDepartmentDTO) {
- departmentService.checkDeletable(deleteDepartmentDTO.getId());
- return ResultHelper.success();
- }
- // @Autowired
- // CreateDbService createDbService;
- //
- // @PostMapping("/createDb")
- // public CommonResult test() {
- // createDbService.createDb("test");
- // return ResultHelper.success();
- // }
- }
|