Procházet zdrojové kódy

Merge remote-tracking branch 'origin/develop-v3.0.0' into develop-v3.0.0

yucheng před 4 roky
rodič
revize
cd07463609
79 změnil soubory, kde provedl 582 přidání a 250 odebrání
  1. 23 0
      fm-person/src/main/java/com/persagy/fm/common/RabbitmqConfig.java
  2. 6 0
      fm-person/src/main/java/com/persagy/fm/common/client/FeignConfig.java
  3. 14 0
      fm-person/src/main/java/com/persagy/fm/common/constant/DefaultValueConstants.java
  4. 2 2
      fm-person/src/main/java/com/persagy/fm/department/constant/DepJmsTypeConstants.java
  5. 39 37
      fm-person/src/main/java/com/persagy/fm/department/controller/DepartmentController.java
  6. 1 1
      fm-person/src/main/java/com/persagy/fm/department/jms/DepJmsConfig.java
  7. 7 2
      fm-person/src/main/java/com/persagy/fm/department/jms/handler/GroupMsgHandler.java
  8. 3 3
      fm-person/src/main/java/com/persagy/fm/department/jms/model/GroupCreateMsg.java
  9. 3 3
      fm-person/src/main/java/com/persagy/fm/department/jms/model/GroupUpdateMsg.java
  10. 1 1
      fm-person/src/main/java/com/persagy/fm/department/model/ConvertDepartmentTool.java
  11. 1 1
      fm-person/src/main/java/com/persagy/fm/department/model/Department.java
  12. 1 1
      fm-person/src/main/java/com/persagy/fm/department/model/dto/AddDepartmentDTO.java
  13. 1 1
      fm-person/src/main/java/com/persagy/fm/department/model/dto/DeleteDepartmentDTO.java
  14. 1 1
      fm-person/src/main/java/com/persagy/fm/department/model/dto/PageQueryDepartmentDTO.java
  15. 1 1
      fm-person/src/main/java/com/persagy/fm/department/model/dto/QueryDepProjectTreeDTO.java
  16. 1 1
      fm-person/src/main/java/com/persagy/fm/department/model/dto/QueryDepartmentDTO.java
  17. 1 1
      fm-person/src/main/java/com/persagy/fm/department/model/dto/QueryDepartmentDetailDTO.java
  18. 1 1
      fm-person/src/main/java/com/persagy/fm/department/model/dto/QueryDepartmentTreeDTO.java
  19. 1 1
      fm-person/src/main/java/com/persagy/fm/department/model/dto/UpdateDepartmentDTO.java
  20. 4 10
      fm-person/src/main/java/com/persagy/fm/department/model/vo/ManagerVO.java
  21. 16 0
      fm-person/src/main/java/com/persagy/fm/department/model/vo/ProjectVO.java
  22. 9 9
      fm-person/src/main/java/com/persagy/fm/department/model/vo/ResponseDepartmentItemVO.java
  23. 4 1
      fm-person/src/main/java/com/persagy/fm/department/model/vo/ResponseDepartmentListItemVO.java
  24. 4 1
      fm-person/src/main/java/com/persagy/fm/department/model/vo/ResponseDepartmentTreeItemVO.java
  25. 34 0
      fm-person/src/main/java/com/persagy/fm/department/service/IDepTranslator.java
  26. 14 4
      fm-person/src/main/java/com/persagy/fm/department/service/IDepartmentService.java
  27. 71 0
      fm-person/src/main/java/com/persagy/fm/department/service/impl/DepTranslatorImpl.java
  28. 13 12
      fm-person/src/main/java/com/persagy/fm/department/service/impl/DepTreeServiceImpl.java
  29. 27 27
      fm-person/src/main/java/com/persagy/fm/department/service/impl/DepartmentServiceImpl.java
  30. 3 3
      fm-person/src/main/java/com/persagy/fm/department/utils/DepDataUtil.java
  31. 1 1
      fm-person/src/main/java/com/persagy/fm/depproject/model/dto/AddDepProjectDTO.java
  32. 1 1
      fm-person/src/main/java/com/persagy/fm/depproject/model/dto/DeleteDepProjectDTO.java
  33. 1 1
      fm-person/src/main/java/com/persagy/fm/depproject/model/dto/PageQueryDepProjectDTO.java
  34. 2 2
      fm-person/src/main/java/com/persagy/fm/depproject/model/dto/QueryDepProjectDTO.java
  35. 1 1
      fm-person/src/main/java/com/persagy/fm/depproject/model/dto/QueryDepProjectDetailDTO.java
  36. 4 4
      fm-person/src/main/java/com/persagy/fm/depproject/model/dto/UpdateDepProjectDTO.java
  37. 5 5
      fm-person/src/main/java/com/persagy/fm/depproject/service/IDepProjectService.java
  38. 10 8
      fm-person/src/main/java/com/persagy/fm/depproject/service/impl/DepProjectServiceImpl.java
  39. 1 1
      fm-person/src/main/java/com/persagy/fm/person/controller/PersonController.java
  40. 1 1
      fm-person/src/main/java/com/persagy/fm/person/jms/PersonJmsConfig.java
  41. 1 1
      fm-person/src/main/java/com/persagy/fm/person/model/dto/DeletePersonDTO.java
  42. 1 1
      fm-person/src/main/java/com/persagy/fm/person/model/dto/PageQueryPersonDTO.java
  43. 1 1
      fm-person/src/main/java/com/persagy/fm/person/model/dto/QueryPersonDetailDTO.java
  44. 1 1
      fm-person/src/main/java/com/persagy/fm/person/model/dto/UpdatePersonDTO.java
  45. 1 1
      fm-person/src/main/java/com/persagy/fm/person/model/dto/UpsertPersonDTO.java
  46. 4 1
      fm-person/src/main/java/com/persagy/fm/person/model/vo/ResponsePersonItemVO.java
  47. 4 1
      fm-person/src/main/java/com/persagy/fm/person/model/vo/ResponsePersonListItemVO.java
  48. 1 1
      fm-person/src/main/java/com/persagy/fm/person/service/IPersonProjectService.java
  49. 7 7
      fm-person/src/main/java/com/persagy/fm/person/service/IPersonService.java
  50. 8 2
      fm-person/src/main/java/com/persagy/fm/person/service/impl/PersonNameTranslator.java
  51. 1 1
      fm-person/src/main/java/com/persagy/fm/person/service/impl/PersonProjectServiceImpl.java
  52. 11 11
      fm-person/src/main/java/com/persagy/fm/person/service/impl/PersonServiceImpl.java
  53. 1 1
      fm-person/src/main/java/com/persagy/fm/profession/controller/ProfessionController.java
  54. 1 1
      fm-person/src/main/java/com/persagy/fm/profession/model/dto/DeleteProfessionDTO.java
  55. 1 1
      fm-person/src/main/java/com/persagy/fm/profession/model/dto/UpdateProfessionDTO.java
  56. 4 1
      fm-person/src/main/java/com/persagy/fm/profession/model/vo/ResponseProfessionItemVO.java
  57. 4 1
      fm-person/src/main/java/com/persagy/fm/profession/model/vo/ResponseProfessionListItemVO.java
  58. 2 2
      fm-person/src/main/java/com/persagy/fm/profession/service/IProfessionService.java
  59. 3 3
      fm-person/src/main/java/com/persagy/fm/profession/service/impl/ProfessionServiceImpl.java
  60. 27 2
      fm-person/src/main/java/com/persagy/fm/saas/project/client/SaasProjectClient.java
  61. 18 0
      fm-person/src/main/java/com/persagy/fm/saas/project/model/SaasProject.java
  62. 24 0
      fm-person/src/main/java/com/persagy/fm/saas/project/model/dto/QueryAllowSaasAreaProjectTreeDTO.java
  63. 3 1
      fm-person/src/main/java/com/persagy/fm/saas/project/model/dto/QuerySaasAreaProjectTreeDTO.java
  64. 23 0
      fm-person/src/main/java/com/persagy/fm/saas/project/model/dto/QuerySaasProjectDTO.java
  65. 29 9
      fm-person/src/main/java/com/persagy/fm/saas/project/service/impl/SaasProjectServiceImpl.java
  66. 1 1
      fm-person/src/main/java/com/persagy/fm/workresume/controller/WorkResumeController.java
  67. 2 2
      fm-person/src/main/java/com/persagy/fm/workresume/model/dto/AddWorkResumeDTO.java
  68. 1 1
      fm-person/src/main/java/com/persagy/fm/workresume/model/dto/DeleteWorkResumeDTO.java
  69. 3 3
      fm-person/src/main/java/com/persagy/fm/workresume/model/dto/PageQueryWorkResumeDTO.java
  70. 2 2
      fm-person/src/main/java/com/persagy/fm/workresume/model/dto/QueryWorkResumeDTO.java
  71. 1 1
      fm-person/src/main/java/com/persagy/fm/workresume/model/dto/QueryWorkResumeDetailDTO.java
  72. 9 9
      fm-person/src/main/java/com/persagy/fm/workresume/model/dto/UpdateWorkResumeDTO.java
  73. 1 1
      fm-person/src/main/java/com/persagy/fm/workresume/model/vo/ResponseWorkResumeItemVO.java
  74. 1 1
      fm-person/src/main/java/com/persagy/fm/workresume/model/vo/ResponseWorkResumeListItemVO.java
  75. 3 3
      fm-person/src/main/java/com/persagy/fm/workresume/service/IWorkResumeService.java
  76. 8 7
      fm-person/src/main/java/com/persagy/fm/workresume/service/impl/WorkResumeServiceImpl.java
  77. 1 0
      fm-person/src/main/resources/bootstrap.yml
  78. 18 18
      fm-person/src/main/resources/mapper/DepartmentMapper.xml
  79. 16 0
      fm-person/src/main/resources/mapper/ITranslateDao.xml

+ 23 - 0
fm-person/src/main/java/com/persagy/fm/common/RabbitmqConfig.java

@@ -0,0 +1,23 @@
+package com.persagy.fm.common;
+
+import org.springframework.amqp.support.converter.Jackson2JsonMessageConverter;
+import org.springframework.amqp.support.converter.MessageConverter;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+
+/**
+ * rabbitMQ配置类
+ *
+ * @author lixing
+ * @version V1.0 2021/3/29 4:56 下午
+ **/
+@Configuration
+public class RabbitmqConfig {
+    /**
+     * JMS 使用
+      */
+    @Bean
+    public MessageConverter customMessageConvert() {
+        return new Jackson2JsonMessageConverter();
+    }
+}

+ 6 - 0
fm-person/src/main/java/com/persagy/fm/common/client/FeignConfig.java

@@ -14,6 +14,12 @@ import org.springframework.context.annotation.Scope;
 
 import static org.springframework.beans.factory.config.BeanDefinition.SCOPE_PROTOTYPE;
 
+/**
+ * feign配置类
+ *
+ * @author lixing
+ * @version V1.0 2021/3/29 8:11 下午
+ */
 @Configuration
 public class FeignConfig {
 

+ 14 - 0
fm-person/src/main/java/com/persagy/fm/common/constant/DefaultValueConstants.java

@@ -0,0 +1,14 @@
+package com.persagy.fm.common.constant;
+
+/**
+ * 默认值常量
+ *
+ * @author lixing
+ * @version V1.0 2021/3/29 7:56 下午
+ **/
+public class DefaultValueConstants {
+    /**
+     * 没有父节点时,父节点存储的默认值
+     */
+    public static final String NO_PARENT_ID = "0";
+}

+ 2 - 2
fm-person/src/main/java/com/persagy/fm/department/constant/DepJmsTypeConstants.java

@@ -10,9 +10,9 @@ public class DepJmsTypeConstants {
     /**
      * 超级管理员账号创建
      */
-    public static final String GROUP_CREATE = "groupCreate";
+    public static final String GROUP_CREATE = "create";
     /**
      * 超级管理员账号更新
      */
-    public static final String GROUP_UPDATE = "groupUpdate";
+    public static final String GROUP_UPDATE = "update";
 }

+ 39 - 37
fm-person/src/main/java/com/persagy/fm/department/controller/DepartmentController.java

@@ -1,26 +1,28 @@
 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.response.CommonResult;
+import com.persagy.fm.common.response.FmResponseUpsertVO;
+import com.persagy.fm.common.response.PageList;
 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.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;
@@ -31,7 +33,6 @@ 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;
@@ -53,53 +54,37 @@ public class DepartmentController {
     private IDepTreeService depTreeService;
     @Autowired
     private IDepProjectService depProjectService;
+    @Autowired
+    private IDepTranslator depTranslator;
 
     @ApiOperation(value = "创建部门")
     @PostMapping("/create")
     public CommonResult<FmResponseUpsertVO> createDepartment(
             @Valid @RequestBody AddDepartmentDTO addDepartmentDTO) {
-        Long id = departmentService.createDepartment(addDepartmentDTO);
+        String id = departmentService.createDepartment(addDepartmentDTO);
         return ResultHelper.single(new FmResponseUpsertVO(id));
     }
 
     @ApiOperation(value = "部门详情")
     @PostMapping("/get")
-    // TODO: 2021/3/24 使用翻译器
-//    @Transes({
-//            @Trans(source = "personNameTranslator",
-//                    type = TransType.SERVICE, batch = true,
-//                    parameter = "managerIds", target = "managerObjs"),
-////            @Trans(source = "com.persagy.fm.person.service.IPersonTransBatchHandler",
-////                    type = TransType.SERVICE, result = "name", batch = true,
-////                    condition = "id", parameter = "projectIds", target = "projectsShowName")
-//    })
+    @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);
-        List<ManagerVO> test = test(department.getManagers());
-        responseDepartmentItemVO.setManagerObjs(test);
+        // 给部门负责人赋值
+        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);
     }
 
-    @Trans(source = "personNameTranslator",
-            type = TransType.SERVICE, batch = true,
-            parameter = "id", target = "name")
-    private List<ManagerVO> test(String manager) {
-        String[] ids = manager.split(",");
-        if (ids.length == 0) {
-            return null;
-        }
-
-        List<ManagerVO> result = Lists.newArrayList();
-        for (String id : ids) {
-            ManagerVO managerVO = new ManagerVO();
-            managerVO.setId(Long.valueOf(id));
-            result.add(managerVO);
-        }
-        return result;
-    }
-
     @ApiOperation(value = "更新部门")
     @PostMapping("/update")
     public CommonResult<FmResponseUpsertVO> updateDepartment(
@@ -130,11 +115,11 @@ public class DepartmentController {
             return ResultHelper.multi(resultList);
         }
         // 获取部门的子部门
-        List<Long> deptIds = departmentList.stream().
+        List<String> deptIds = departmentList.stream().
                 map(Department::getId).
                 collect(Collectors.toList());
         List<Department> sonDeps = departmentService.queryDepListByParentIds(deptIds);
-        Map<Long, List<Department>> parentIdMap = DepDataUtil.sonDeps2ParentIdMap(sonDeps);
+        Map<String, List<Department>> parentIdMap = DepDataUtil.sonDeps2ParentIdMap(sonDeps);
         resultList.forEach(item -> {
             // 如果map中包含部门的id,代表部门有子部门
             if (DepDataUtil.hasChildren(item.getId(), parentIdMap)) {
@@ -174,8 +159,25 @@ public class DepartmentController {
     public CommonResult<PageList<ProjectTreeItemVO>> queryDepProjectTree(
             @Valid @RequestBody QueryDepProjectTreeDTO queryDepProjectTreeDTO) {
         List<ProjectTreeItemVO> projectTreeItemVOList = depProjectService.queryDepProjectTree(queryDepProjectTreeDTO.getParentDepId());
+        projectTreeItemVOList = projectTreeItemVOList == null ? Lists.newArrayList() : projectTreeItemVOList;
         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();
+//        }
 }
 

+ 1 - 1
fm-person/src/main/java/com/persagy/fm/department/jms/DepJmsConfig.java

@@ -38,7 +38,7 @@ public class DepJmsConfig {
 
     @Bean
     public TopicExchange depSaasExchange() {
-        return new TopicExchange(depSaasExchange, true, true);
+        return new TopicExchange(depSaasExchange, true, false);
     }
 
     @Bean

+ 7 - 2
fm-person/src/main/java/com/persagy/fm/department/jms/handler/GroupMsgHandler.java

@@ -17,6 +17,7 @@ import com.rabbitmq.client.Channel;
 import org.springframework.amqp.core.Message;
 import org.springframework.amqp.rabbit.annotation.RabbitListener;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.context.annotation.Configuration;
 
 import java.io.IOException;
 
@@ -26,6 +27,7 @@ import java.io.IOException;
  * @author lixing
  * @version V1.0 2021/3/18 6:18 下午
  **/
+@Configuration
 public class GroupMsgHandler extends MsgBaseHandler {
     @Autowired
     IDepartmentService departmentService;
@@ -62,6 +64,8 @@ public class GroupMsgHandler extends MsgBaseHandler {
             try {
                 // 将消费失败的消息移除消息队列,避免重复消费
                 channel.basicReject(msg.getMessageProperties().getDeliveryTag(),false);
+                throw new BusinessException(ResponseCode.C0001.getCode(),
+                        "部门消息消费失败," + e.getMessage());
             } catch (IOException ex) {
                 throw new BusinessException(ResponseCode.C0001.getCode(),
                         "部门消息从队列中移除失败," + ex.getMessage());
@@ -74,7 +78,8 @@ public class GroupMsgHandler extends MsgBaseHandler {
      * @param groupUpdateMsg 集团更新消息
      */
     private void updateGroup(GroupUpdateMsg groupUpdateMsg) {
-
+        // 找到部门类型为集团的部门
+        // 更新部门的名称
     }
 
     /**
@@ -90,7 +95,7 @@ public class GroupMsgHandler extends MsgBaseHandler {
         // 给全局参数赋值
         DefaultAppContext.getContext().setAppId("pc");
         DefaultAppContext.getContext().setGroupCode(groupCreateMsg.getGroupCode());
-        DefaultAppContext.getContext().setAccountId(groupCreateMsg.getUserId());
+        DefaultAppContext.getContext().setAccountId(groupCreateMsg.getUpdateUser());
 
         departmentService.createDepartment(addDepartmentDTO);
     }

+ 3 - 3
fm-person/src/main/java/com/persagy/fm/department/jms/model/GroupCreateMsg.java

@@ -22,10 +22,10 @@ public class GroupCreateMsg extends BaseMsg {
     /**
      * 集团名称
      */
-    private String name;
+    private String groupName;
 
     /**
-     * 创建
+     * 操作
      */
-    private String userId;
+    private String updateUser;
 }

+ 3 - 3
fm-person/src/main/java/com/persagy/fm/department/jms/model/GroupUpdateMsg.java

@@ -22,10 +22,10 @@ public class GroupUpdateMsg extends BaseMsg {
     /**
      * 集团名称
      */
-    private String name;
+    private String groupName;
 
     /**
-     * 更新
+     * 操作
      */
-    private String userId;
+    private String updateUser;
 }

+ 1 - 1
fm-person/src/main/java/com/persagy/fm/department/model/ConvertDepartmentTool.java

@@ -31,7 +31,7 @@ public interface ConvertDepartmentTool {
      * @author lixing
      * @version V1.0 2021-03-11 15:09:19
      */
-    @Mapping(source = "managers", target = "managerIds")
+    @Mapping(source = "managers", target = "managers", ignore = true)
     ResponseDepartmentItemVO convert2ResponseItemDTO(Department department);
 
     /**

+ 1 - 1
fm-person/src/main/java/com/persagy/fm/department/model/Department.java

@@ -28,7 +28,7 @@ public class Department extends AuditableEntity<Department> implements Serializa
     private String type;
 
     @ApiModelProperty("上级部门id")
-    private Long parentId;
+    private String parentId;
 
     @ApiModelProperty("数据来源")
     private String resourceFrom;

+ 1 - 1
fm-person/src/main/java/com/persagy/fm/department/model/dto/AddDepartmentDTO.java

@@ -32,7 +32,7 @@ public class AddDepartmentDTO {
 
     @ApiModelProperty(value = "上级部门id", required = true)
     @NotNull(message = "上级部门id不能为空")
-    private Long parentId;
+    private String parentId;
 
     @ApiModelProperty(value = "数据来源")
     private String resourceFrom;

+ 1 - 1
fm-person/src/main/java/com/persagy/fm/department/model/dto/DeleteDepartmentDTO.java

@@ -15,6 +15,6 @@ import javax.validation.constraints.NotNull;
 public class DeleteDepartmentDTO {
     @NotNull(message = "id不能为空")
     @ApiModelProperty(value = "id", required = true)
-    private Long id;
+    private String id;
 
 }

+ 1 - 1
fm-person/src/main/java/com/persagy/fm/department/model/dto/PageQueryDepartmentDTO.java

@@ -14,7 +14,7 @@ import lombok.Data;
 @ApiModel(value = "分页查询部门入参")
 public class PageQueryDepartmentDTO extends PageDTO {
     @ApiModelProperty(value = "id", required = true)
-    private Long id;
+    private String id;
 
     @ApiModelProperty(value = "部门名称", required = true)
     private String name;

+ 1 - 1
fm-person/src/main/java/com/persagy/fm/department/model/dto/QueryDepProjectTreeDTO.java

@@ -14,5 +14,5 @@ import javax.validation.constraints.NotNull;
 @ApiModel(value = "查询部门项目树入参")
 public class QueryDepProjectTreeDTO {
     @ApiModelProperty(value = "父部门id。不传加载整个集团的项目树")
-    private Long parentDepId;
+    private String parentDepId;
 }

+ 1 - 1
fm-person/src/main/java/com/persagy/fm/department/model/dto/QueryDepartmentDTO.java

@@ -18,7 +18,7 @@ public class QueryDepartmentDTO {
     private String type;
 
     @ApiModelProperty(value = "上级部门id")
-    private Long parentId;
+    private String parentId;
 
     @ApiModelProperty(value = "数据来源")
     private String resourceFrom;

+ 1 - 1
fm-person/src/main/java/com/persagy/fm/department/model/dto/QueryDepartmentDetailDTO.java

@@ -15,6 +15,6 @@ import javax.validation.constraints.NotNull;
 public class QueryDepartmentDetailDTO {
     @NotNull(message = "id不能为空")
     @ApiModelProperty(value = "id", required = true)
-    private Long id;
+    private String id;
 
 }

+ 1 - 1
fm-person/src/main/java/com/persagy/fm/department/model/dto/QueryDepartmentTreeDTO.java

@@ -14,7 +14,7 @@ import javax.validation.constraints.Min;
 @ApiModel(value = "查询部门树入参")
 public class QueryDepartmentTreeDTO {
     @ApiModelProperty(value = "选中的树节点")
-    private Long checkedId;
+    private String checkedId;
 
     @ApiModelProperty(value = "需要展示的层级")
     @Min(value = 1, message = "需要展示的层级最小为1")

+ 1 - 1
fm-person/src/main/java/com/persagy/fm/department/model/dto/UpdateDepartmentDTO.java

@@ -21,7 +21,7 @@ import java.util.List;
 public class UpdateDepartmentDTO {
     @ApiModelProperty(value = "id", required = true)
     @NotNull(message = "id不能为空")
-    private Long id;
+    private String id;
 
     @ApiModelProperty(value = "部门名称", required = true)
     @Length(max = 100, message = "部门名称长度不能超过100字")

+ 4 - 10
fm-person/src/main/java/com/persagy/fm/department/model/vo/ManagerVO.java

@@ -1,8 +1,10 @@
 package com.persagy.fm.department.model.vo;
 
+import com.persagy.fm.common.model.vo.SimpleObjVO;
 import com.persagy.fm.translate.model.Trans;
 import com.persagy.fm.translate.model.TransType;
 import lombok.Data;
+import lombok.EqualsAndHashCode;
 
 /**
  * 部门负责人
@@ -10,15 +12,7 @@ import lombok.Data;
  * @author lixing
  * @version V1.0 2021/3/27 5:18 下午
  **/
+@EqualsAndHashCode(callSuper = true)
 @Data
-public class ManagerVO {
-    private Long id;
-    private String name;
-
-    @Trans(source = "personNameTranslator",
-            type = TransType.SERVICE, batch = true,
-            parameter = "id", target = "name")
-    public String getName() {
-        return name;
-    }
+public class ManagerVO extends SimpleObjVO {
 }

+ 16 - 0
fm-person/src/main/java/com/persagy/fm/department/model/vo/ProjectVO.java

@@ -0,0 +1,16 @@
+package com.persagy.fm.department.model.vo;
+
+import com.persagy.fm.common.model.vo.SimpleObjVO;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+/**
+ * 项目VO类
+ *
+ * @author lixing
+ * @version V1.0 2021/3/27 5:18 下午
+ **/
+@EqualsAndHashCode(callSuper = true)
+@Data
+public class ProjectVO extends SimpleObjVO {
+}

+ 9 - 9
fm-person/src/main/java/com/persagy/fm/department/model/vo/ResponseDepartmentItemVO.java

@@ -1,5 +1,7 @@
 package com.persagy.fm.department.model.vo;
 
+import com.fasterxml.jackson.databind.annotation.JsonSerialize;
+import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 import io.swagger.annotations.ApiOperation;
@@ -19,7 +21,8 @@ import com.fasterxml.jackson.annotation.JsonInclude;
 @JsonInclude(JsonInclude.Include.NON_NULL)
 public class ResponseDepartmentItemVO {
     @ApiModelProperty("id")
-    private Long id;
+    @JsonSerialize(using = ToStringSerializer.class)
+    private String id;
 
     @ApiModelProperty("部门名称")
     private String name;
@@ -30,14 +33,14 @@ public class ResponseDepartmentItemVO {
     @ApiModelProperty("上级部门id")
     private String parentId;
 
+    @ApiModelProperty("上级部门名称")
+    private String parentShowName;
+
     @ApiModelProperty("数据来源")
     private String resourceFrom;
 
-    @ApiModelProperty("负责人id")
-    private String managerIds;
-
     @ApiModelProperty("负责人列表")
-    private List<ManagerVO> managerObjs;
+    private List<ManagerVO> managers;
 
     @ApiModelProperty("部门全路径")
     private String fullPath;
@@ -61,8 +64,5 @@ public class ResponseDepartmentItemVO {
     private Date modifiedTime;
 
     @ApiModelProperty(value="关联的项目")
-    private List<String> projectIds;
-
-    @ApiModelProperty(value="关联的项目名称")
-    private List<String> projectsShowName;
+    private List<ProjectVO> projects;
 }

+ 4 - 1
fm-person/src/main/java/com/persagy/fm/department/model/vo/ResponseDepartmentListItemVO.java

@@ -1,5 +1,7 @@
 package com.persagy.fm.department.model.vo;
 
+import com.fasterxml.jackson.databind.annotation.JsonSerialize;
+import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
@@ -17,7 +19,8 @@ import com.fasterxml.jackson.annotation.JsonInclude;
 @JsonInclude(JsonInclude.Include.NON_NULL)
 public class ResponseDepartmentListItemVO {
     @ApiModelProperty("id")
-    private Long id;
+    @JsonSerialize(using = ToStringSerializer.class)
+    private String id;
 
     @ApiModelProperty("部门名称")
     private String name;

+ 4 - 1
fm-person/src/main/java/com/persagy/fm/department/model/vo/ResponseDepartmentTreeItemVO.java

@@ -1,6 +1,8 @@
 package com.persagy.fm.department.model.vo;
 
 import com.fasterxml.jackson.annotation.JsonInclude;
+import com.fasterxml.jackson.databind.annotation.JsonSerialize;
+import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
@@ -16,7 +18,8 @@ import java.util.List;
 @JsonInclude(JsonInclude.Include.NON_NULL)
 public class ResponseDepartmentTreeItemVO {
     @ApiModelProperty("id")
-    private Long id;
+    @JsonSerialize(using = ToStringSerializer.class)
+    private String id;
 
     @ApiModelProperty("部门名称")
     private String name;

+ 34 - 0
fm-person/src/main/java/com/persagy/fm/department/service/IDepTranslator.java

@@ -0,0 +1,34 @@
+package com.persagy.fm.department.service;
+
+import com.persagy.fm.department.model.vo.ManagerVO;
+import com.persagy.fm.department.model.vo.ProjectVO;
+
+import java.util.List;
+
+/**
+ * 部门相关翻译类
+ *
+ * @author lixing
+ * @version V1.0 2021/3/29 11:26 上午
+ **/
+public interface IDepTranslator {
+    /**
+     * 获取部门负责人vo对象列表
+     *
+     * @param managers 部门负责人 id1,id2
+     * @return 部门负责人vo对象列表
+     * @author lixing
+     * @version V1.0 2021/3/29 11:27 上午
+     */
+    List<ManagerVO> getManagerVOList(String managers);
+
+    /**
+     * 获取项目vo列表
+     *
+     * @param projectIds 项目id列表
+     * @return 项目vo列表
+     * @author lixing
+     * @version V1.0 2021/3/29 11:28 上午
+     */
+    List<ProjectVO> getProjectVOList(List<String> projectIds);
+}

+ 14 - 4
fm-person/src/main/java/com/persagy/fm/department/service/IDepartmentService.java

@@ -25,7 +25,7 @@ public interface IDepartmentService {
      * @author lixing
      * @version V1.0 2021-03-11 15:09:17
      */
-    Long createDepartment(AddDepartmentDTO addDepartmentDTO);
+    String createDepartment(AddDepartmentDTO addDepartmentDTO);
 
     /**
      * 部门详情
@@ -35,7 +35,7 @@ public interface IDepartmentService {
      * @author lixing
      * @version V1.0 2021-03-11 15:09:17
      */
-    Department queryDepartmentDetail(Long id);
+    Department queryDepartmentDetail(String id);
 
     /**
      * 更新部门
@@ -53,7 +53,7 @@ public interface IDepartmentService {
      * @author lixing
      * @version V1.0 2021-03-11 15:09:17
      */
-    void deleteDepartment(Long id);
+    void deleteDepartment(String id);
 
     /**
      * 查询部门
@@ -93,5 +93,15 @@ public interface IDepartmentService {
      * @author lixing
      * @version V1.0 2021/3/12 4:23 下午
      */
-    List<Department> queryDepListByParentIds(List<Long> parentIds);
+    List<Department> queryDepListByParentIds(List<String> parentIds);
+
+    /**
+     * 校验部门是否可删除
+     *
+     * @param id 部门主键
+     * @return 部门do类
+     * @author lixing
+     * @version V1.0 2021/3/12 11:02 上午
+     */
+    Department checkDeletable(String id);
 }

+ 71 - 0
fm-person/src/main/java/com/persagy/fm/department/service/impl/DepTranslatorImpl.java

@@ -0,0 +1,71 @@
+package com.persagy.fm.department.service.impl;
+
+import com.persagy.fm.common.response.FmResponseContent;
+import com.persagy.fm.department.model.vo.ManagerVO;
+import com.persagy.fm.department.model.vo.ProjectVO;
+import com.persagy.fm.department.service.IDepTranslator;
+import com.persagy.fm.person.model.Person;
+import com.persagy.fm.person.service.IPersonService;
+import com.persagy.fm.saas.project.client.SaasProjectClient;
+import com.persagy.fm.saas.project.model.SaasProject;
+import com.persagy.fm.saas.project.model.dto.QuerySaasProjectDTO;
+import org.apache.commons.lang3.StringUtils;
+import org.assertj.core.util.Lists;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.util.CollectionUtils;
+
+import java.util.List;
+import java.util.stream.Collectors;
+
+/**
+ * 部门翻译器
+ *
+ * @author lixing
+ * @version V1.0 2021/3/29 11:29 上午
+ **/
+@Service
+public class DepTranslatorImpl implements IDepTranslator {
+    @Autowired
+    IPersonService personService;
+    @Autowired
+    SaasProjectClient saasProjectClient;
+
+    @Override
+    public List<ManagerVO> getManagerVOList(String managers) {
+        String separator = ",";
+        if (StringUtils.isBlank(managers)) {
+            return null;
+        }
+        String[] managersArr = managers.split(separator);
+        List<Long> managerIdList = Lists.newArrayList();
+        for (String managerIdStr : managersArr) {
+            managerIdList.add(Long.valueOf(managerIdStr));
+        }
+        List<Person> people = personService.queryByIds(managerIdList);
+        return people.stream().map(person -> {
+            ManagerVO managerVO = new ManagerVO();
+            managerVO.setId(person.getId().toString());
+            managerVO.setName(person.getName());
+            return managerVO;
+        }).collect(Collectors.toList());
+    }
+
+    @Override
+    public List<ProjectVO> getProjectVOList(List<String> projectIds) {
+        if (CollectionUtils.isEmpty(projectIds)) {
+            return null;
+        }
+        QuerySaasProjectDTO querySaasProjectDTO = new QuerySaasProjectDTO();
+        querySaasProjectDTO.setDefaultValue();
+        querySaasProjectDTO.setProjectIds(projectIds);
+        FmResponseContent<List<SaasProject>> listFmResponseContent = saasProjectClient.queryProjectList(querySaasProjectDTO);
+        List<SaasProject> saasProjects = listFmResponseContent.getContent();
+        return saasProjects.stream().map(saasProject -> {
+            ProjectVO projectVO = new ProjectVO();
+            projectVO.setId(saasProject.getProjectId());
+            projectVO.setName(saasProject.getProjectName());
+            return projectVO;
+        }).collect(Collectors.toList());
+    }
+}

+ 13 - 12
fm-person/src/main/java/com/persagy/fm/department/service/impl/DepTreeServiceImpl.java

@@ -1,6 +1,7 @@
 package com.persagy.fm.department.service.impl;
 
 import com.google.common.collect.Lists;
+import com.persagy.fm.common.constant.DefaultValueConstants;
 import com.persagy.fm.department.model.ConvertDepartmentTool;
 import com.persagy.fm.department.model.Department;
 import com.persagy.fm.department.service.IDepartmentService;
@@ -37,7 +38,7 @@ public class DepTreeServiceImpl implements IDepTreeService {
      * @version V1.0 2021/3/12 11:58 上午
      */
     private Map<Integer, List<Department>> initTreeData(QueryDepartmentTreeDTO queryDepartmentTreeDTO) {
-        Long checkedId = queryDepartmentTreeDTO.getCheckedId();
+        String checkedId = queryDepartmentTreeDTO.getCheckedId();
         if (checkedId != null) {
             Department checkedDep = departmentService.queryDepartmentDetail(checkedId);
             // 获取部门全路径,计算部门所在层级
@@ -60,7 +61,7 @@ public class DepTreeServiceImpl implements IDepTreeService {
      * @param queryDepartmentTreeDTO 部门树查询条件
      * @return 需要展示的层级
      */
-    private int getShowLevel(QueryDepartmentTreeDTO queryDepartmentTreeDTO) {
+    private Integer getShowLevel(QueryDepartmentTreeDTO queryDepartmentTreeDTO) {
         Integer showLevel = queryDepartmentTreeDTO.getShowLevel();
         if (showLevel == null) {
             showLevel = getDefaultShowLevel();
@@ -91,8 +92,8 @@ public class DepTreeServiceImpl implements IDepTreeService {
 
         // TODO: 2021/3/9 根据当前登录人获取根节点
         // 部门树根节点的父节点id
-        Long rootParentId = 0L;
-        List<Long> rootDeps = Lists.newArrayList(rootParentId);
+        String rootParentId = DefaultValueConstants.NO_PARENT_ID;
+        List<String> rootDeps = Lists.newArrayList(rootParentId);
 
         return initDefaultTreeData(levelDepListMap, 0, rootDeps, showLevel);
     }
@@ -111,7 +112,7 @@ public class DepTreeServiceImpl implements IDepTreeService {
     public Map<Integer, List<Department>> initDefaultTreeData(
             Map<Integer, List<Department>> levelDepListMap,
             int level,
-            List<Long> parentDepIdList,
+            List<String> parentDepIdList,
             int showLevel) {
         if (CollectionUtils.isEmpty(parentDepIdList)) {
             return levelDepListMap;
@@ -121,7 +122,7 @@ public class DepTreeServiceImpl implements IDepTreeService {
         if (level < showLevel) {
             List<Department> departments = levelDepListMap.get(level);
             departments = departments == null ? Lists.newArrayList() : departments;
-            List<Long> depIds = departments.stream().map(Department::getId).collect(Collectors.toList());
+            List<String> depIds = departments.stream().map(Department::getId).collect(Collectors.toList());
             initDefaultTreeData(levelDepListMap, level + 1, depIds, showLevel);
         }
 
@@ -139,11 +140,11 @@ public class DepTreeServiceImpl implements IDepTreeService {
      * @version V1.0 2021/3/12 3:12 下午
      */
     public void setChildren(
-            Map<Integer, Map<Long, List<Department>>> levelParentIdMap,
+            Map<Integer, Map<String, List<Department>>> levelParentIdMap,
             ResponseDepartmentTreeItemVO treeItem,
             int level,
             int showLevel) {
-        Map<Long, List<Department>> parentIdMap = levelParentIdMap.get(level);
+        Map<String, List<Department>> parentIdMap = levelParentIdMap.get(level);
         parentIdMap = parentIdMap != null ? parentIdMap : new HashMap<>(0);
         List<Department> departments = parentIdMap.get(treeItem.getId());
         List<ResponseDepartmentTreeItemVO> children = ConvertDepartmentTool.INSTANCE.convert2Tree(departments);
@@ -190,7 +191,7 @@ public class DepTreeServiceImpl implements IDepTreeService {
         }
 
         // levelDeptListMap 转换为 levelParentIdMap
-        Map<Integer, Map<Long, List<Department>>> levelParentIdMap = covert2LevelParentIdMap(levelDeptListMap);
+        Map<Integer, Map<String, List<Department>>> levelParentIdMap = covert2LevelParentIdMap(levelDeptListMap);
 
         List<ResponseDepartmentTreeItemVO> result = ConvertDepartmentTool.INSTANCE.convert2Tree(rootList);
         result.forEach(treeItem -> {
@@ -207,11 +208,11 @@ public class DepTreeServiceImpl implements IDepTreeService {
      * @author lixing
      * @version V1.0 2021/3/12 2:43 下午
      */
-    private Map<Integer, Map<Long, List<Department>>> covert2LevelParentIdMap(
+    private Map<Integer, Map<String, List<Department>>> covert2LevelParentIdMap(
             Map<Integer, List<Department>> levelDeptListMap) {
-        Map<Integer, Map<Long, List<Department>>> levelParentIdMap = new HashMap<>(levelDeptListMap.size());
+        Map<Integer, Map<String, List<Department>>> levelParentIdMap = new HashMap<>(levelDeptListMap.size());
         levelDeptListMap.forEach((level, depList) -> {
-            Map<Long, List<Department>> parentIdMap = DepDataUtil.sonDeps2ParentIdMap(depList);
+            Map<String, List<Department>> parentIdMap = DepDataUtil.sonDeps2ParentIdMap(depList);
             levelParentIdMap.put(level, parentIdMap);
         });
         return levelParentIdMap;

+ 27 - 27
fm-person/src/main/java/com/persagy/fm/department/service/impl/DepartmentServiceImpl.java

@@ -8,6 +8,7 @@ import com.google.common.base.CaseFormat;
 import com.google.common.collect.Lists;
 import com.persagy.common.enums.ResponseCode;
 import com.persagy.common.exception.BusinessException;
+import com.persagy.fm.common.constant.DefaultValueConstants;
 import com.persagy.fm.common.constant.enums.ValidEnum;
 import com.persagy.fm.common.context.DefaultAppContext;
 import com.persagy.fm.common.model.dto.Sort;
@@ -23,8 +24,9 @@ import com.persagy.fm.department.model.dto.UpdateDepartmentDTO;
 import com.persagy.fm.department.service.IDepartmentService;
 import com.persagy.fm.depproject.model.dto.AddDepProjectDTO;
 import com.persagy.fm.depproject.service.IDepProjectService;
-import com.persagy.fm.translate.model.Trans;
-import com.persagy.fm.translate.model.TransType;
+import com.persagy.fm.person.model.dto.PageQueryPersonDTO;
+import com.persagy.fm.person.model.vo.ResponsePersonListItemVO;
+import com.persagy.fm.person.service.IPersonService;
 import org.apache.commons.lang.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
@@ -45,21 +47,23 @@ public class DepartmentServiceImpl extends ServiceImpl<DepartmentMapper, Departm
         implements IDepartmentService {
     @Autowired
     private IDepProjectService depProjectService;
+    @Autowired
+    private IPersonService personService;
 
     @Override
     @Transactional
-    public Long createDepartment(AddDepartmentDTO addDepartmentDTO) {
+    public String createDepartment(AddDepartmentDTO addDepartmentDTO) {
         Department department = saveDepartment(addDepartmentDTO);
 
         // 保存部门和项目的关系
         List<String> projectIds = addDepartmentDTO.getProjectIds();
-        Long depId = department.getId();
+        String depId = department.getId();
         saveDepProject(projectIds, depId);
 
         return depId;
     }
 
-    private void saveDepProject(List<String> projectIds, Long depId) {
+    private void saveDepProject(List<String> projectIds, String depId) {
         if (CollectionUtils.isEmpty(projectIds)) {
             return;
         }
@@ -94,8 +98,8 @@ public class DepartmentServiceImpl extends ServiceImpl<DepartmentMapper, Departm
         setDefaultValue(department);
 
         // 获取部门的上级部门,拼装部门的全路径
-        Long parentId = department.getParentId();
-        if (parentId == 0L) {
+        String parentId = department.getParentId();
+        if (DefaultValueConstants.NO_PARENT_ID.equals(parentId)) {
             department.setFullPath(department.getName());
         } else {
             Department parentDep = queryDepartmentDetail(parentId);
@@ -139,7 +143,7 @@ public class DepartmentServiceImpl extends ServiceImpl<DepartmentMapper, Departm
         }
 
         if (department.getParentId() == null) {
-            department.setParentId(0L);
+            department.setParentId(DefaultValueConstants.NO_PARENT_ID);
         }
 
         department.setCreator(DefaultAppContext.getContext().getAccountId());
@@ -167,7 +171,7 @@ public class DepartmentServiceImpl extends ServiceImpl<DepartmentMapper, Departm
     }
 
     @Override
-    public Department queryDepartmentDetail(Long id) {
+    public Department queryDepartmentDetail(String id) {
         Department department = getById(id);
         if (department == null) {
             throw new IllegalArgumentException("查看Department详情时发生异常,找不到要查看的记录,id=" + id);
@@ -188,7 +192,7 @@ public class DepartmentServiceImpl extends ServiceImpl<DepartmentMapper, Departm
         }
         department.setModifier(DefaultAppContext.getContext().getAccountId());
         updateById(department);
-        Long depId = department.getId();
+        String depId = department.getId();
         List<String> projectIds = updateDepartmentDTO.getProjectIds();
         updateDepProject(projectIds, depId);
     }
@@ -197,11 +201,11 @@ public class DepartmentServiceImpl extends ServiceImpl<DepartmentMapper, Departm
      * 更新部门关联的项目
      *
      * @param projectIds 更新后部门关联的项目
-     * @param depId 部门id
+     * @param depId      部门id
      * @author lixing
      * @version V1.0 2021/3/24 10:51 上午
      */
-    private void updateDepProject(List<String> projectIds, Long depId) {
+    private void updateDepProject(List<String> projectIds, String depId) {
         // 删除之前部门关联的项目
         depProjectService.deleteByDepId(depId);
         // 插入新的部门关联的项目
@@ -242,15 +246,8 @@ public class DepartmentServiceImpl extends ServiceImpl<DepartmentMapper, Departm
         updateBatchById(sonDeps);
     }
 
-    /**
-     * 校验部门是否可删除
-     *
-     * @param id 部门主键
-     * @return 部门do类
-     * @author lixing
-     * @version V1.0 2021/3/12 11:02 上午
-     */
-    public Department checkDeletable(Long id) {
+    @Override
+    public Department checkDeletable(String id) {
         if (id == null) {
             throw new IllegalArgumentException("删除Department时发生异常,主键为空!");
         }
@@ -274,17 +271,20 @@ public class DepartmentServiceImpl extends ServiceImpl<DepartmentMapper, Departm
             throw new IllegalArgumentException("当前部门包含子部门,不可删除");
         }
 
-        // TODO: 2021/3/9   部门包含员工时,不可删除
-
+        PageQueryPersonDTO pageQueryPersonDTO = new PageQueryPersonDTO();
+        pageQueryPersonDTO.setDepId(id);
+        IPage<ResponsePersonListItemVO> responsePersonListItemVOIPage = personService.pageQueryPerson(pageQueryPersonDTO);
+        if (responsePersonListItemVOIPage.getTotal() > 0) {
+            throw new IllegalArgumentException("当前部门包含员工,不可删除");
+        }
         return department;
     }
 
     @Override
     @Transactional
-    public void deleteDepartment(Long id) {
+    public void deleteDepartment(String id) {
         // 校验部门是否可删除
         Department department = checkDeletable(id);
-
         department.setValid(ValidEnum.FALSE.getType());
         updateById(department);
     }
@@ -363,14 +363,14 @@ public class DepartmentServiceImpl extends ServiceImpl<DepartmentMapper, Departm
         if (CollectionUtils.isEmpty(parentDeptList)) {
             return Lists.newArrayList();
         } else {
-            List<Long> parentIds = parentDeptList.stream().map(Department::getId).collect(Collectors.toList());
+            List<String> parentIds = parentDeptList.stream().map(Department::getId).collect(Collectors.toList());
             List<Department> sonDeps = queryDepListByParentIds(parentIds);
             return sonDeps == null ? Lists.newArrayList() : sonDeps;
         }
     }
 
     @Override
-    public List<Department> queryDepListByParentIds(List<Long> parentIds) {
+    public List<Department> queryDepListByParentIds(List<String> parentIds) {
         // 拼装查询条件
         QueryWrapper<Department> queryWrapper = new QueryWrapper<>();
         queryWrapper.eq(Department.PROP_VALID, ValidEnum.TRUE.getType());

+ 3 - 3
fm-person/src/main/java/com/persagy/fm/department/utils/DepDataUtil.java

@@ -25,12 +25,12 @@ public class DepDataUtil {
      * @author lixing
      * @version V1.0 2021/3/12 2:49 下午
      */
-    public static Map<Long, List<Department>> sonDeps2ParentIdMap(List<Department> sonDeps) {
+    public static Map<String, List<Department>> sonDeps2ParentIdMap(List<Department> sonDeps) {
         if (CollectionUtils.isEmpty(sonDeps)) {
             return Maps.newHashMap();
         }
 
-        Map<Long, List<Department>> result = new HashMap<>(sonDeps.size());
+        Map<String, List<Department>> result = new HashMap<>(sonDeps.size());
         sonDeps.forEach(sonDep -> {
             List<Department> departments = result.get(sonDep.getParentId());
             if (departments == null) {
@@ -54,7 +54,7 @@ public class DepDataUtil {
      * @author lixing
      * @version V1.0 2021/3/12 3:21 下午
      */
-    public static boolean hasChildren(Long depId, Map<Long, List<Department>> parentIdMap) {
+    public static boolean hasChildren(String depId, Map<String, List<Department>> parentIdMap) {
         if (depId == null) {
             return false;
         }

+ 1 - 1
fm-person/src/main/java/com/persagy/fm/depproject/model/dto/AddDepProjectDTO.java

@@ -18,7 +18,7 @@ import java.util.Date;
 public class AddDepProjectDTO {
     @ApiModelProperty(value = "部门id", required = true)
     @NotNull(message = "部门id不能为空") 
-    private Long depId;
+    private String depId;
 
     @ApiModelProperty(value = "项目id", required = true)
     @NotNull(message = "项目id不能为空") 

+ 1 - 1
fm-person/src/main/java/com/persagy/fm/depproject/model/dto/DeleteDepProjectDTO.java

@@ -15,6 +15,6 @@ import javax.validation.constraints.NotNull;
 public class DeleteDepProjectDTO {
     @NotNull(message = "id不能为空")
     @ApiModelProperty(value = "主键", required = true)
-    private Long id;
+    private String id;
 
 }

+ 1 - 1
fm-person/src/main/java/com/persagy/fm/depproject/model/dto/PageQueryDepProjectDTO.java

@@ -16,7 +16,7 @@ import lombok.Data;
 @ApiModel(value = "分页查询部门项目入参")
 public class PageQueryDepProjectDTO extends PageDTO {
     @ApiModelProperty(value = "主键", required = true)
-    private Long id;
+    private String id;
 
     @ApiModelProperty(value = "部门id", required = true)
     private Long depId;

+ 2 - 2
fm-person/src/main/java/com/persagy/fm/depproject/model/dto/QueryDepProjectDTO.java

@@ -14,9 +14,9 @@ import java.util.Date;
 @ApiModel(value = "查询部门项目入参")
 public class QueryDepProjectDTO {
     @ApiModelProperty(value = "部门id", required = true)
-    private Long depId;
+    private String depId;
 
     @ApiModelProperty(value = "项目id", required = true)
-    private Long projectId;
+    private String projectId;
 
 }

+ 1 - 1
fm-person/src/main/java/com/persagy/fm/depproject/model/dto/QueryDepProjectDetailDTO.java

@@ -15,6 +15,6 @@ import javax.validation.constraints.NotNull;
 public class QueryDepProjectDetailDTO {
     @NotNull(message = "主键不能为空")
     @ApiModelProperty(value = "主键", required = true)
-    private Long id;
+    private String id;
 
 }

+ 4 - 4
fm-person/src/main/java/com/persagy/fm/depproject/model/dto/UpdateDepProjectDTO.java

@@ -17,15 +17,15 @@ import java.util.Date;
 @ApiModel(value = "更新部门项目入参")
 public class UpdateDepProjectDTO {
     @ApiModelProperty(value = "主键", required = true)
-    @NotNull(message = "主键不能为空") // todo 更新校验规则
-    private Long id;
+    @NotNull(message = "主键不能为空")
+    private String id;
 
     @ApiModelProperty(value = "部门id", required = true)
-    @NotNull(message = "部门id不能为空") // todo 更新校验规则
+    @NotNull(message = "部门id不能为空")
     private Long depId;
 
     @ApiModelProperty(value = "项目id", required = true)
-    @NotNull(message = "项目id不能为空") // todo 更新校验规则
+    @NotNull(message = "项目id不能为空")
     private Long projectId;
 
 }

+ 5 - 5
fm-person/src/main/java/com/persagy/fm/depproject/service/IDepProjectService.java

@@ -26,7 +26,7 @@ public interface IDepProjectService {
      * @author lixing
      * @version V1.0 2021-03-24 10:08:12
      */
-    Long createDepProject(AddDepProjectDTO addDepProjectDTO);
+    String createDepProject(AddDepProjectDTO addDepProjectDTO);
 
     /**
      * 部门项目详情
@@ -36,7 +36,7 @@ public interface IDepProjectService {
      * @author lixing
      * @version V1.0 2021-03-24 10:08:12
      */
-    DepProject queryDepProjectDetail(Long id);
+    DepProject queryDepProjectDetail(String id);
 
     /**
      * 更新部门项目
@@ -54,7 +54,7 @@ public interface IDepProjectService {
      * @author lixing
      * @version V1.0 2021-03-24 10:08:12
      */
-    void deleteDepProject(Long id);
+    void deleteDepProject(String id);
 
     /**
      * 查询部门项目
@@ -84,7 +84,7 @@ public interface IDepProjectService {
      * @author lixing
      * @version V1.0 2021/3/22 3:58 下午
      */
-    List<ProjectTreeItemVO> queryDepProjectTree(Long depId);
+    List<ProjectTreeItemVO> queryDepProjectTree(String depId);
 
     /**
      * 批量保存部门关联的项目
@@ -102,5 +102,5 @@ public interface IDepProjectService {
      * @author lixing
      * @version V1.0 2021/3/24 10:48 上午
      */
-    void deleteByDepId(Long depId);
+    void deleteByDepId(String depId);
 }

+ 10 - 8
fm-person/src/main/java/com/persagy/fm/depproject/service/impl/DepProjectServiceImpl.java

@@ -1,5 +1,6 @@
 package com.persagy.fm.depproject.service.impl;
 
+import com.persagy.fm.common.constant.DefaultValueConstants;
 import com.persagy.fm.common.context.DefaultAppContext;
 import com.persagy.fm.depproject.dao.DepProjectMapper;
 import com.persagy.fm.depproject.service.IDepProjectService;
@@ -35,9 +36,9 @@ public class DepProjectServiceImpl extends ServiceImpl<DepProjectMapper, DepProj
     ISaasProjectService saasProjectService;
 
     @Override
-    public List<ProjectTreeItemVO> queryDepProjectTree(Long parentDepId) {
+    public List<ProjectTreeItemVO> queryDepProjectTree(String parentDepId) {
         // 父部门id 为0或空, 加载整颗区域项目树
-        if (parentDepId == null || parentDepId == 0L) {
+        if (parentDepId == null || DefaultValueConstants.NO_PARENT_ID.equals(parentDepId)) {
             return saasProjectService.queryAllProjectTree();
         }
         // 部门关联的项目
@@ -60,11 +61,12 @@ public class DepProjectServiceImpl extends ServiceImpl<DepProjectMapper, DepProj
     }
 
     @Override
-    public void deleteByDepId(Long depId) {
+    public void deleteByDepId(String depId) {
         QueryDepProjectDTO queryDepProjectDTO = new QueryDepProjectDTO();
         queryDepProjectDTO.setDepId(depId);
         List<DepProject> depProjectList = queryDepProjectList(queryDepProjectDTO);
-        removeByIds(depProjectList);
+        List<String> idList = depProjectList.stream().map(DepProject::getId).collect(Collectors.toList());
+        removeByIds(idList);
     }
 
     /**
@@ -75,7 +77,7 @@ public class DepProjectServiceImpl extends ServiceImpl<DepProjectMapper, DepProj
      * @version V1.0 2021-03-24 10:08:12
      */
     @Override
-    public Long createDepProject(AddDepProjectDTO addDepProjectDTO) {
+    public String createDepProject(AddDepProjectDTO addDepProjectDTO) {
         DepProject depProject = ConvertDepProjectTool.INSTANCE.convertAddDto2Entity(addDepProjectDTO);
         // 设置默认值
         setDefaultValue(depProject);
@@ -103,7 +105,7 @@ public class DepProjectServiceImpl extends ServiceImpl<DepProjectMapper, DepProj
      * @version V1.0 2021-03-24 10:08:12
      */
     @Override
-    public DepProject queryDepProjectDetail(Long id) {
+    public DepProject queryDepProjectDetail(String id) {
         DepProject depProject = getById(id);
         if (depProject == null) {
             throw new IllegalArgumentException("查看DepProject详情时发生异常,找不到要查看的记录,id=" + id);
@@ -133,7 +135,7 @@ public class DepProjectServiceImpl extends ServiceImpl<DepProjectMapper, DepProj
      * @author lixing
      * @version V1.0 2021-03-24 10:08:12
      */
-    public DepProject checkDeletable(Long id) {
+    public DepProject checkDeletable(String id) {
         if (id == null) {
             throw new IllegalArgumentException("删除DepProject时发生异常,主键为空");
         }
@@ -155,7 +157,7 @@ public class DepProjectServiceImpl extends ServiceImpl<DepProjectMapper, DepProj
      * @version V1.0 2021-03-24 10:08:12
      */
     @Override
-    public void deleteDepProject(Long id) {
+    public void deleteDepProject(String id) {
         // 校验是否可删除
         DepProject depProject = checkDeletable(id);
 

+ 1 - 1
fm-person/src/main/java/com/persagy/fm/person/controller/PersonController.java

@@ -44,7 +44,7 @@ public class PersonController {
     @PostMapping("/create")
     public CommonResult<FmResponseUpsertVO> createPerson(
             @Valid @RequestBody AddPersonDTO addPersonDTO) {
-        Long id = personService.createPerson(addPersonDTO);
+        String id = personService.createPerson(addPersonDTO);
         return ResultHelper.single(new FmResponseUpsertVO(id));
     }
 

+ 1 - 1
fm-person/src/main/java/com/persagy/fm/person/jms/PersonJmsConfig.java

@@ -38,7 +38,7 @@ public class PersonJmsConfig {
 
     @Bean
     public TopicExchange personSaasExchange() {
-        return new TopicExchange(personSaasExchange);
+        return new TopicExchange(personSaasExchange, true, false);
     }
 
     @Bean

+ 1 - 1
fm-person/src/main/java/com/persagy/fm/person/model/dto/DeletePersonDTO.java

@@ -15,6 +15,6 @@ import javax.validation.constraints.NotNull;
 public class DeletePersonDTO {
     @NotNull(message = "id不能为空")
     @ApiModelProperty(value = "id", required = true)
-    private Long id;
+    private String id;
 
 }

+ 1 - 1
fm-person/src/main/java/com/persagy/fm/person/model/dto/PageQueryPersonDTO.java

@@ -16,7 +16,7 @@ import lombok.EqualsAndHashCode;
 public class PageQueryPersonDTO extends PageDTO {
 
     @ApiModelProperty(value = "部门id")
-    private Long depId;
+    private String depId;
 
     @ApiModelProperty(value = "在职状态")
     private Integer state;

+ 1 - 1
fm-person/src/main/java/com/persagy/fm/person/model/dto/QueryPersonDetailDTO.java

@@ -15,6 +15,6 @@ import javax.validation.constraints.NotNull;
 public class QueryPersonDetailDTO {
     @NotNull(message = "id不能为空")
     @ApiModelProperty(value = "id", required = true)
-    private Long id;
+    private String id;
 
 }

+ 1 - 1
fm-person/src/main/java/com/persagy/fm/person/model/dto/UpdatePersonDTO.java

@@ -17,5 +17,5 @@ import javax.validation.constraints.NotNull;
 public class UpdatePersonDTO extends UpsertPersonDTO{
     @ApiModelProperty(value = "id", required = true)
     @NotNull(message = "id不能为空") 
-    private Long id;
+    private String id;
 }

+ 1 - 1
fm-person/src/main/java/com/persagy/fm/person/model/dto/UpsertPersonDTO.java

@@ -62,7 +62,7 @@ public class UpsertPersonDTO {
 
     @NotNull(message = "部门不能为空")
     @ApiModelProperty(value = "所属部门id", required = true)
-    private List<Long> depIds;
+    private List<String> depIds;
 
     @NotNull(message = "项目权限不能为空")
     @ApiModelProperty(value = "关联的项目id", required = true)

+ 4 - 1
fm-person/src/main/java/com/persagy/fm/person/model/vo/ResponsePersonItemVO.java

@@ -1,5 +1,7 @@
 package com.persagy.fm.person.model.vo;
 
+import com.fasterxml.jackson.databind.annotation.JsonSerialize;
+import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
@@ -18,7 +20,8 @@ import com.fasterxml.jackson.annotation.JsonInclude;
 @JsonInclude(JsonInclude.Include.NON_NULL)
 public class ResponsePersonItemVO {
     @ApiModelProperty("id")
-    private Long id;
+    @JsonSerialize(using = ToStringSerializer.class)
+    private String id;
 
     @ApiModelProperty("姓名")
     private String name;

+ 4 - 1
fm-person/src/main/java/com/persagy/fm/person/model/vo/ResponsePersonListItemVO.java

@@ -1,5 +1,7 @@
 package com.persagy.fm.person.model.vo;
 
+import com.fasterxml.jackson.databind.annotation.JsonSerialize;
+import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
@@ -16,7 +18,8 @@ import java.util.List;
 @JsonInclude(JsonInclude.Include.NON_NULL)
 public class ResponsePersonListItemVO {
     @ApiModelProperty("id")
-    private Long id;
+    @JsonSerialize(using = ToStringSerializer.class)
+    private String id;
 
     @ApiModelProperty("姓名")
     private String name;

+ 1 - 1
fm-person/src/main/java/com/persagy/fm/person/service/IPersonProjectService.java

@@ -19,5 +19,5 @@ public interface IPersonProjectService {
      * @author lixing
      * @version V1.0 2021/3/22 3:58 下午
      */
-    List<ProjectTreeItemVO> queryPersonProjectTree(Long personId);
+    List<ProjectTreeItemVO> queryPersonProjectTree(String personId);
 }

+ 7 - 7
fm-person/src/main/java/com/persagy/fm/person/service/IPersonService.java

@@ -23,7 +23,7 @@ public interface IPersonService {
      * @author lixing
      * @version V1.0 2021-03-15 17:20:31
      */
-    Long createPerson(AddPersonDTO addPersonDTO);
+    String createPerson(AddPersonDTO addPersonDTO);
 
     /**
      * 人员详情
@@ -33,7 +33,7 @@ public interface IPersonService {
      * @author lixing
      * @version V1.0 2021-03-15 17:20:31
      */
-    Person queryPersonDetail(Long id);
+    Person queryPersonDetail(String id);
 
     /**
      * 通过主键数组查询人员
@@ -58,7 +58,7 @@ public interface IPersonService {
      * @author lixing
      * @version V1.0 2021-03-15 17:20:31
      */
-    void deletePerson(Long id);
+    void deletePerson(String id);
 
     /**
      * 分页查询人员
@@ -86,7 +86,7 @@ public interface IPersonService {
      * @author lixing
      * @version V1.0 2021/3/22 10:39 上午
      */
-    void disablePerson(Long personId);
+    void disablePerson(String personId);
 
     /**
      * 解雇人员
@@ -95,7 +95,7 @@ public interface IPersonService {
      * @author lixing
      * @version V1.0 2021/3/22 10:39 上午
      */
-    void dismissPerson(Long personId);
+    void dismissPerson(String personId);
 
     /**
      * 恢复入职
@@ -104,7 +104,7 @@ public interface IPersonService {
      * @author lixing
      * @version V1.0 2021/3/22 10:44 上午
      */
-    void rejoinPerson(Long personId);
+    void rejoinPerson(String personId);
 
     /**
      * 批量更新人员信息
@@ -132,5 +132,5 @@ public interface IPersonService {
      * @author lixing
      * @version V1.0 2021/3/22 10:39 上午
      */
-    void enablePerson(Long personId);
+    void enablePerson(String personId);
 }

+ 8 - 2
fm-person/src/main/java/com/persagy/fm/person/service/impl/PersonNameTranslator.java

@@ -13,6 +13,12 @@ import org.springframework.stereotype.Service;
 
 import java.util.*;
 
+/**
+ * 人员姓名翻译器
+ *
+ * @author lixing
+ * @version V1.0 2021/3/29 8:12 下午
+ */
 @Slf4j
 @Service
 public class PersonNameTranslator implements ITranslator {
@@ -25,7 +31,7 @@ public class PersonNameTranslator implements ITranslator {
         if (StringUtils.isBlank(parameter)) {
             return "";
         }
-        Person person = personService.queryPersonDetail(Long.valueOf(parameter));
+        Person person = personService.queryPersonDetail(parameter);
         return person.getName();
         //        if(StringUtils.isBlank(parameter)) {
         //            return null;
@@ -67,7 +73,7 @@ public class PersonNameTranslator implements ITranslator {
             List<ManagerVO> managerVOList = Lists.newArrayList();
             for (String id : ids) {
                 ManagerVO managerVO = new ManagerVO();
-                managerVO.setId(Long.valueOf(id));
+                managerVO.setId(id);
                 managerVO.setName(idMap.get(id).toString());
                 managerVOList.add(managerVO);
             }

+ 1 - 1
fm-person/src/main/java/com/persagy/fm/person/service/impl/PersonProjectServiceImpl.java

@@ -19,7 +19,7 @@ public class PersonProjectServiceImpl implements IPersonProjectService {
     @Autowired
     ISaasProjectService saasProjectService;
     @Override
-    public List<ProjectTreeItemVO> queryPersonProjectTree(Long personId) {
+    public List<ProjectTreeItemVO> queryPersonProjectTree(String personId) {
         // 根据人员id查询人员关联的项目,然后组装项目树
         // TODO: 2021/3/22 查询人员关联的项目
         List<String> projectIds = null;

+ 11 - 11
fm-person/src/main/java/com/persagy/fm/person/service/impl/PersonServiceImpl.java

@@ -65,7 +65,7 @@ public class PersonServiceImpl extends ServiceImpl<PersonMapper, Person>
      */
     @Override
     @Transactional
-    public Long createPerson(AddPersonDTO addPersonDTO) {
+    public String createPerson(AddPersonDTO addPersonDTO) {
         // 判断账号是否被占用
         checkUserName(addPersonDTO.getUsername());
         // 创建账号
@@ -159,9 +159,9 @@ public class PersonServiceImpl extends ServiceImpl<PersonMapper, Person>
      * @author lixing
      * @version V1.0 2021/3/23 4:23 下午
      */
-    private void saveWorkResumes(AddPersonDTO addPersonDTO, Long personId) {
-        List<Long> depIds = addPersonDTO.getDepIds();
-        for (Long depId : depIds) {
+    private void saveWorkResumes(AddPersonDTO addPersonDTO, String personId) {
+        List<String> depIds = addPersonDTO.getDepIds();
+        for (String depId : depIds) {
             AddWorkResumeDTO addWorkResumeDTO = new AddWorkResumeDTO();
             addWorkResumeDTO.setPersonId(personId);
             addWorkResumeDTO.setDepId(depId);
@@ -260,7 +260,7 @@ public class PersonServiceImpl extends ServiceImpl<PersonMapper, Person>
      * @version V1.0 2021-03-15 17:20:31
      */
     @Override
-    public Person queryPersonDetail(Long id) {
+    public Person queryPersonDetail(String id) {
         Person person = getById(id);
         if (person == null) {
             throw new IllegalArgumentException("查看Person详情时发生异常,找不到要查看的记录,id=" + id);
@@ -295,7 +295,7 @@ public class PersonServiceImpl extends ServiceImpl<PersonMapper, Person>
      * @author lixing
      * @version V1.0 2021-03-15 17:20:31
      */
-    public Person checkDeletable(Long id) {
+    public Person checkDeletable(String id) {
         if (id == null) {
             throw new IllegalArgumentException("删除Person时发生异常,主键为空");
         }
@@ -317,7 +317,7 @@ public class PersonServiceImpl extends ServiceImpl<PersonMapper, Person>
      * @version V1.0 2021-03-15 17:20:31
      */
     @Override
-    public void deletePerson(Long id) {
+    public void deletePerson(String id) {
         // 校验是否可删除
         Person person = checkDeletable(id);
 
@@ -343,17 +343,17 @@ public class PersonServiceImpl extends ServiceImpl<PersonMapper, Person>
     //    }
 
     @Override
-    public void disablePerson(Long personId) {
+    public void disablePerson(String personId) {
         // TODO: 2021/3/22 禁用账号
     }
 
     @Override
-    public void dismissPerson(Long personId) {
+    public void dismissPerson(String personId) {
         // TODO: 2021/3/22 人员离职
     }
 
     @Override
-    public void rejoinPerson(Long personId) {
+    public void rejoinPerson(String personId) {
         // TODO: 2021/3/22 恢复入职
     }
 
@@ -369,7 +369,7 @@ public class PersonServiceImpl extends ServiceImpl<PersonMapper, Person>
     }
 
     @Override
-    public void enablePerson(Long personId) {
+    public void enablePerson(String personId) {
         // TODO: 2021/3/26 解禁人员
     }
 }

+ 1 - 1
fm-person/src/main/java/com/persagy/fm/profession/controller/ProfessionController.java

@@ -39,7 +39,7 @@ public class ProfessionController {
     @PostMapping("/create")
     public CommonResult<FmResponseUpsertVO> createProfession(
             @Valid @RequestBody AddProfessionDTO addProfessionDTO) {
-        Long id = professionService.createProfession(addProfessionDTO);
+        String id = professionService.createProfession(addProfessionDTO);
         return ResultHelper.single(new FmResponseUpsertVO(id));
     }
 

+ 1 - 1
fm-person/src/main/java/com/persagy/fm/profession/model/dto/DeleteProfessionDTO.java

@@ -15,6 +15,6 @@ import javax.validation.constraints.NotNull;
 public class DeleteProfessionDTO {
     @NotNull(message = "id不能为空")
     @ApiModelProperty(value = "主键", required = true)
-    private Long id;
+    private String id;
 
 }

+ 1 - 1
fm-person/src/main/java/com/persagy/fm/profession/model/dto/UpdateProfessionDTO.java

@@ -21,7 +21,7 @@ import java.util.Date;
 public class UpdateProfessionDTO {
     @ApiModelProperty(value = "主键", required = true)
     @NotNull(message = "主键不能为空")
-    private Long id;
+    private String id;
 
     @ApiModelProperty(value = "专业名称", required = true)
     @NotNull(message = "专业名称不能为空")

+ 4 - 1
fm-person/src/main/java/com/persagy/fm/profession/model/vo/ResponseProfessionItemVO.java

@@ -1,5 +1,7 @@
 package com.persagy.fm.profession.model.vo;
 
+import com.fasterxml.jackson.databind.annotation.JsonSerialize;
+import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
@@ -17,7 +19,8 @@ import com.fasterxml.jackson.annotation.JsonInclude;
 @JsonInclude(JsonInclude.Include.NON_NULL)
 public class ResponseProfessionItemVO {
     @ApiModelProperty("主键")
-    private Long id;
+    @JsonSerialize(using = ToStringSerializer.class)
+    private String id;
 
     @ApiModelProperty("专业名称")
     private String name;

+ 4 - 1
fm-person/src/main/java/com/persagy/fm/profession/model/vo/ResponseProfessionListItemVO.java

@@ -1,5 +1,7 @@
 package com.persagy.fm.profession.model.vo;
 
+import com.fasterxml.jackson.databind.annotation.JsonSerialize;
+import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
@@ -17,7 +19,8 @@ import com.fasterxml.jackson.annotation.JsonInclude;
 @JsonInclude(JsonInclude.Include.NON_NULL)
 public class ResponseProfessionListItemVO {
     @ApiModelProperty("主键")
-    private Long id;
+    @JsonSerialize(using = ToStringSerializer.class)
+    private String id;
 
     @ApiModelProperty("专业名称")
     private String name;

+ 2 - 2
fm-person/src/main/java/com/persagy/fm/profession/service/IProfessionService.java

@@ -25,7 +25,7 @@ public interface IProfessionService {
      * @author lixing
      * @version V1.0 2021-03-19 16:38:19
      */
-    Long createProfession(AddProfessionDTO addProfessionDTO);
+    String createProfession(AddProfessionDTO addProfessionDTO);
 
     /**
      * 更新专业
@@ -43,7 +43,7 @@ public interface IProfessionService {
      * @author lixing
      * @version V1.0 2021-03-19 16:38:19
      */
-    void deleteProfession(Long id);
+    void deleteProfession(String id);
 
     /**
      * 查询专业

+ 3 - 3
fm-person/src/main/java/com/persagy/fm/profession/service/impl/ProfessionServiceImpl.java

@@ -33,7 +33,7 @@ public class ProfessionServiceImpl extends ServiceImpl<ProfessionMapper, Profess
      * @version V1.0 2021-03-19 16:38:19
      */
     @Override
-    public Long createProfession(AddProfessionDTO addProfessionDTO) {
+    public String createProfession(AddProfessionDTO addProfessionDTO) {
         Profession profession = ConvertProfessionTool.INSTANCE.convertAddDto2Entity(addProfessionDTO);
         // 设置默认值
         setDefaultValue(profession);
@@ -77,7 +77,7 @@ public class ProfessionServiceImpl extends ServiceImpl<ProfessionMapper, Profess
      * @author lixing
      * @version V1.0 2021-03-19 16:38:19
      */
-    public Profession checkDeletable(Long id) {
+    public Profession checkDeletable(String id) {
         if (id == null) {
             throw new IllegalArgumentException("删除Profession时发生异常,主键为空");
         }
@@ -99,7 +99,7 @@ public class ProfessionServiceImpl extends ServiceImpl<ProfessionMapper, Profess
      * @version V1.0 2021-03-19 16:38:19
      */
     @Override
-    public void deleteProfession(Long id) {
+    public void deleteProfession(String id) {
         // 校验是否可删除
         Profession profession = checkDeletable(id);
 

+ 27 - 2
fm-person/src/main/java/com/persagy/fm/saas/project/client/SaasProjectClient.java

@@ -6,8 +6,11 @@ import com.persagy.fm.common.response.FmResponseItem;
 import com.persagy.fm.saas.project.client.fallback.SaasProjectClientFallbackFactory;
 import com.persagy.fm.saas.project.constant.FeignClientNameConstants;
 import com.persagy.fm.saas.project.model.SaasArea;
+import com.persagy.fm.saas.project.model.SaasProject;
+import com.persagy.fm.saas.project.model.dto.QueryAllowSaasAreaProjectTreeDTO;
 import com.persagy.fm.saas.project.model.dto.QuerySaasAreaDTO;
 import com.persagy.fm.saas.project.model.dto.QuerySaasAreaProjectTreeDTO;
+import com.persagy.fm.saas.project.model.dto.QuerySaasProjectDTO;
 import com.persagy.fm.saas.project.model.vo.SaasAreaProjectTreeVO;
 import org.springframework.cloud.openfeign.FeignClient;
 import org.springframework.web.bind.annotation.PostMapping;
@@ -36,7 +39,7 @@ public interface SaasProjectClient {
     FmResponseContent<List<SaasArea>> querySaasAreaList(@RequestBody QuerySaasAreaDTO querySaasAreaDTO);
 
     /**
-     * 查询区域项目树
+     * 查询区域项目树(无权限控制),不支持
      *
      * @param querySaasAreaProjectTreeDTO 查询区域项目树入参
      * @return 区域项目树
@@ -44,7 +47,29 @@ public interface SaasProjectClient {
      * @version V1.0 2021/3/26 5:46 下午
      */
     @PostMapping("/project/queryAreaProjectTree")
-    FmResponseItem<SaasAreaProjectTreeVO> queryAreaProjectTree(
+    FmResponseContent<SaasAreaProjectTreeVO> queryAreaProjectTree(
              @RequestBody QuerySaasAreaProjectTreeDTO querySaasAreaProjectTreeDTO);
 
+    /**
+     * 查询区域项目树(有权限控制)
+     *
+     * @param queryAllowSaasAreaProjectTreeDTO 查询区域项目树入参
+     * @return 区域项目树
+     * @author lixing
+     * @version V1.0 2021/3/29 6:17 下午
+     */
+    @PostMapping("/project/queryAllowAreaProjectTree")
+    FmResponseContent<SaasAreaProjectTreeVO> queryAllowAreaProjectTree(
+            @RequestBody QueryAllowSaasAreaProjectTreeDTO queryAllowSaasAreaProjectTreeDTO);
+
+    /**
+     * 查询项目列表
+     *
+     * @param querySaasProjectDTO 查询项目入参
+     * @return 项目列表
+     * @author lixing
+     * @version V1.0 2021/3/29 3:06 下午
+     */
+    @PostMapping("/project/querySaasProjectList")
+    FmResponseContent<List<SaasProject>> queryProjectList(QuerySaasProjectDTO querySaasProjectDTO);
 }

+ 18 - 0
fm-person/src/main/java/com/persagy/fm/saas/project/model/SaasProject.java

@@ -0,0 +1,18 @@
+package com.persagy.fm.saas.project.model;
+
+import lombok.Data;
+
+/**
+ * 运维系统项目
+ *
+ * @author lixing
+ * @version V1.0 2021/3/29 2:24 下午
+ **/
+@Data
+public class SaasProject {
+    private String areaId;
+    private String areaName;
+    private String projectId;
+    private String projectName;
+    private String projectLocalId;
+}

+ 24 - 0
fm-person/src/main/java/com/persagy/fm/saas/project/model/dto/QueryAllowSaasAreaProjectTreeDTO.java

@@ -0,0 +1,24 @@
+package com.persagy.fm.saas.project.model.dto;
+
+import com.persagy.fm.saas.common.model.dto.SaasBaseDTO;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import java.util.List;
+
+/**
+ * 查询运维系统区域项目树(有权限管理)入参,所有参数非必填
+ *
+ * @author lixing
+ * @version V1.0 2021/3/26 5:43 下午
+ **/
+@EqualsAndHashCode(callSuper = true)
+@Data
+public class QueryAllowSaasAreaProjectTreeDTO extends SaasBaseDTO {
+    private String projectId;
+    private String areaId;
+    private String projectLocalId;
+    private String projectName;
+    private List<String> projectIds;
+    private Boolean showEmptyArea;
+}

+ 3 - 1
fm-person/src/main/java/com/persagy/fm/saas/project/model/dto/QuerySaasAreaProjectTreeDTO.java

@@ -4,8 +4,10 @@ import com.persagy.fm.saas.common.model.dto.SaasBaseDTO;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
 
+import java.util.List;
+
 /**
- * 查询运维系统区域项目树入参,所有参数非必填
+ * 查询运维系统区域项目树入参(无权限管理),所有参数非必填
  *
  * @author lixing
  * @version V1.0 2021/3/26 5:43 下午

+ 23 - 0
fm-person/src/main/java/com/persagy/fm/saas/project/model/dto/QuerySaasProjectDTO.java

@@ -0,0 +1,23 @@
+package com.persagy.fm.saas.project.model.dto;
+
+import com.persagy.fm.saas.common.model.dto.SaasBaseDTO;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import java.util.List;
+
+/**
+ * 查询运维平台项目入参
+ *
+ * @author lixing
+ * @version V1.0 2021/3/29 3:01 下午
+ **/
+@EqualsAndHashCode(callSuper = true)
+@Data
+public class QuerySaasProjectDTO extends SaasBaseDTO {
+    private String projectId;
+    private String areaId;
+    private String projectName;
+    private String projectLocalId;
+    private List<String> projectIds;
+}

+ 29 - 9
fm-person/src/main/java/com/persagy/fm/saas/project/service/impl/SaasProjectServiceImpl.java

@@ -5,6 +5,7 @@ import com.persagy.fm.common.response.FmResponseContent;
 import com.persagy.fm.common.response.FmResponseItem;
 import com.persagy.fm.saas.project.client.SaasProjectClient;
 import com.persagy.fm.saas.project.model.SaasArea;
+import com.persagy.fm.saas.project.model.dto.QueryAllowSaasAreaProjectTreeDTO;
 import com.persagy.fm.saas.project.model.dto.QuerySaasAreaDTO;
 import com.persagy.fm.saas.project.model.dto.QuerySaasAreaProjectTreeDTO;
 import com.persagy.fm.saas.project.model.vo.ProjectTreeItemVO;
@@ -32,12 +33,13 @@ public class SaasProjectServiceImpl implements ISaasProjectService {
 
     @Override
     public List<ProjectTreeItemVO> queryProjectTree(List<String> projectIds) {
-        // TODO: 2021/3/22 给定一组项目id,返回一颗项目树(为了性能,先查询所有的区域,然后在本地拼装成树)
-        QuerySaasAreaDTO querySaasAreaDTO = new QuerySaasAreaDTO();
-        querySaasAreaDTO.setDefaultValue();
-        FmResponseContent<List<SaasArea>> responseContent = saasProjectClient.querySaasAreaList(querySaasAreaDTO);
-        List<SaasArea> areaList = responseContent.getContent();
-        return null;
+        // 查询运维系统区域项目树
+        QueryAllowSaasAreaProjectTreeDTO queryAllowSaasAreaProjectTreeDTO = new QueryAllowSaasAreaProjectTreeDTO();
+        queryAllowSaasAreaProjectTreeDTO.setDefaultValue();
+        queryAllowSaasAreaProjectTreeDTO.setProjectIds(projectIds);
+        FmResponseContent<SaasAreaProjectTreeVO> responseItem = saasProjectClient.queryAllowAreaProjectTree(queryAllowSaasAreaProjectTreeDTO);
+        // 查询结果转换
+        return convert2ProjectTreeItemList(responseItem);
     }
 
     @Override
@@ -45,11 +47,28 @@ public class SaasProjectServiceImpl implements ISaasProjectService {
         // 查询运维系统区域项目树
         QuerySaasAreaProjectTreeDTO querySaasAreaProjectTreeDTO = new QuerySaasAreaProjectTreeDTO();
         querySaasAreaProjectTreeDTO.setDefaultValue();
-        FmResponseItem<SaasAreaProjectTreeVO> responseItem = saasProjectClient.queryAreaProjectTree(querySaasAreaProjectTreeDTO);
+        FmResponseContent<SaasAreaProjectTreeVO> responseContent = saasProjectClient.queryAreaProjectTree(querySaasAreaProjectTreeDTO);
         // 查询结果转换
-        SaasAreaProjectTreeVO saasAreaProjectTreeVO = responseItem.getItem();
-        List<SaasAreaProjectTreeItemVO> areas = saasAreaProjectTreeVO.getAreas();
+        return convert2ProjectTreeItemList(responseContent);
+    }
 
+    /**
+     * 将运维系统区域项目树,转换为fm区域项目树
+     *
+     * @param responseItem 运维系统区域项目树查询结果
+     * @return fm区域项目树
+     * @author lixing
+     * @version V1.0 2021/3/29 6:30 下午
+     */
+    private List<ProjectTreeItemVO> convert2ProjectTreeItemList(FmResponseContent<SaasAreaProjectTreeVO> responseItem) {
+        SaasAreaProjectTreeVO saasAreaProjectTreeVO = responseItem.getContent();
+        if (saasAreaProjectTreeVO == null) {
+            return null;
+        }
+        List<SaasAreaProjectTreeItemVO> areas = saasAreaProjectTreeVO.getAreas();
+        if (CollectionUtils.isEmpty(areas)) {
+            return null;
+        }
         List<ProjectTreeItemVO> result = Lists.newArrayList();
         for (SaasAreaProjectTreeItemVO area : areas) {
             ProjectTreeItemVO projectTreeItemVO = convert2ProjectTreeItemVO(area);
@@ -126,5 +145,6 @@ public class SaasProjectServiceImpl implements ISaasProjectService {
             children = Lists.newArrayList();
         }
         children.addAll(children2Add);
+        parentNode.setChildren(children);
     }
 }

+ 1 - 1
fm-person/src/main/java/com/persagy/fm/workresume/controller/WorkResumeController.java

@@ -38,7 +38,7 @@ public class WorkResumeController {
     @PostMapping("/create")
     public CommonResult<FmResponseUpsertVO> createWorkResume(
             @Valid @RequestBody AddWorkResumeDTO addWorkResumeDTO) {
-        Long id = workResumeService.createWorkResume(addWorkResumeDTO);
+        String id = workResumeService.createWorkResume(addWorkResumeDTO);
         return ResultHelper.single(new FmResponseUpsertVO(id));
     }
 

+ 2 - 2
fm-person/src/main/java/com/persagy/fm/workresume/model/dto/AddWorkResumeDTO.java

@@ -18,11 +18,11 @@ import java.util.Date;
 public class AddWorkResumeDTO {
     @ApiModelProperty(value = "人员主键", required = true)
     @NotNull(message = "人员主键不能为空")
-    private Long personId;
+    private String personId;
 
     @ApiModelProperty(value = "部门主键", required = true)
     @NotNull(message = "部门主键不能为空")
-    private Long depId;
+    private String depId;
 
     @ApiModelProperty(value = "状态")
     private String state;

+ 1 - 1
fm-person/src/main/java/com/persagy/fm/workresume/model/dto/DeleteWorkResumeDTO.java

@@ -15,6 +15,6 @@ import javax.validation.constraints.NotNull;
 public class DeleteWorkResumeDTO {
     @NotNull(message = "id不能为空")
     @ApiModelProperty(value = "id", required = true)
-    private Long id;
+    private String id;
 
 }

+ 3 - 3
fm-person/src/main/java/com/persagy/fm/workresume/model/dto/PageQueryWorkResumeDTO.java

@@ -16,13 +16,13 @@ import lombok.Data;
 @ApiModel(value = "分页查询工作信息入参")
 public class PageQueryWorkResumeDTO extends PageDTO {
     @ApiModelProperty(value = "id", required = true)
-    private Long id;
+    private String id;
 
     @ApiModelProperty(value = "人员主键", required = true)
-    private Long personId;
+    private String personId;
 
     @ApiModelProperty(value = "部门主键", required = true)
-    private Long depId;
+    private String depId;
 
     @ApiModelProperty(value = "状态", required = true)
     private String state;

+ 2 - 2
fm-person/src/main/java/com/persagy/fm/workresume/model/dto/QueryWorkResumeDTO.java

@@ -14,10 +14,10 @@ import java.util.Date;
 @ApiModel(value = "查询工作信息入参")
 public class QueryWorkResumeDTO {
     @ApiModelProperty(value = "人员主键", required = true)
-    private Long personId;
+    private String personId;
 
     @ApiModelProperty(value = "部门主键", required = true)
-    private Long depId;
+    private String depId;
 
     @ApiModelProperty(value = "状态", required = true)
     private String state;

+ 1 - 1
fm-person/src/main/java/com/persagy/fm/workresume/model/dto/QueryWorkResumeDetailDTO.java

@@ -15,6 +15,6 @@ import javax.validation.constraints.NotNull;
 public class QueryWorkResumeDetailDTO {
     @NotNull(message = "id不能为空")
     @ApiModelProperty(value = "id", required = true)
-    private Long id;
+    private String id;
 
 }

+ 9 - 9
fm-person/src/main/java/com/persagy/fm/workresume/model/dto/UpdateWorkResumeDTO.java

@@ -17,27 +17,27 @@ import java.util.Date;
 @ApiModel(value = "更新工作信息入参")
 public class UpdateWorkResumeDTO {
     @ApiModelProperty(value = "id", required = true)
-    @NotNull(message = "id不能为空") // todo 更新校验规则
-    private Long id;
+    @NotNull(message = "id不能为空") 
+    private String id;
 
     @ApiModelProperty(value = "人员主键", required = true)
-    @NotNull(message = "人员主键不能为空") // todo 更新校验规则
-    private Long personId;
+    @NotNull(message = "人员主键不能为空") 
+    private String personId;
 
     @ApiModelProperty(value = "部门主键", required = true)
-    @NotNull(message = "部门主键不能为空") // todo 更新校验规则
-    private Long depId;
+    @NotNull(message = "部门主键不能为空") 
+    private String depId;
 
     @ApiModelProperty(value = "状态", required = true)
-    @NotNull(message = "状态不能为空") // todo 更新校验规则
+    @NotNull(message = "状态不能为空") 
     private String state;
 
     @ApiModelProperty(value = "入职时间", required = true)
-    @NotNull(message = "入职时间不能为空") // todo 更新校验规则
+    @NotNull(message = "入职时间不能为空") 
     private Date hiredDate;
 
     @ApiModelProperty(value = "离职时间", required = true)
-    @NotNull(message = "离职时间不能为空") // todo 更新校验规则
+    @NotNull(message = "离职时间不能为空") 
     private Date departureDate;
 
 }

+ 1 - 1
fm-person/src/main/java/com/persagy/fm/workresume/model/vo/ResponseWorkResumeItemVO.java

@@ -17,7 +17,7 @@ import com.fasterxml.jackson.annotation.JsonInclude;
 @JsonInclude(JsonInclude.Include.NON_NULL)
 public class ResponseWorkResumeItemVO {
     @ApiModelProperty("id")
-    private Long id;
+    private String id;
 
     @ApiModelProperty("人员主键")
     private Long personId;

+ 1 - 1
fm-person/src/main/java/com/persagy/fm/workresume/model/vo/ResponseWorkResumeListItemVO.java

@@ -17,7 +17,7 @@ import com.fasterxml.jackson.annotation.JsonInclude;
 @JsonInclude(JsonInclude.Include.NON_NULL)
 public class ResponseWorkResumeListItemVO {
     @ApiModelProperty("id")
-    private Long id;
+    private String id;
 
     @ApiModelProperty("人员主键")
     private Long personId;

+ 3 - 3
fm-person/src/main/java/com/persagy/fm/workresume/service/IWorkResumeService.java

@@ -26,7 +26,7 @@ public interface IWorkResumeService {
      * @author lixing
      * @version V1.0 2021-03-15 17:20:06
      */
-    Long createWorkResume(AddWorkResumeDTO addWorkResumeDTO);
+    String createWorkResume(AddWorkResumeDTO addWorkResumeDTO);
 
     /**
      * 工作信息详情
@@ -36,7 +36,7 @@ public interface IWorkResumeService {
      * @author lixing
      * @version V1.0 2021-03-15 17:20:06
      */
-    WorkResume queryWorkResumeDetail(Long id);
+    WorkResume queryWorkResumeDetail(String id);
 
     /**
      * 更新工作信息
@@ -54,7 +54,7 @@ public interface IWorkResumeService {
      * @author lixing
      * @version V1.0 2021-03-15 17:20:06
      */
-    void deleteWorkResume(Long id);
+    void deleteWorkResume(String id);
 
     /**
      * 查询工作信息

+ 8 - 7
fm-person/src/main/java/com/persagy/fm/workresume/service/impl/WorkResumeServiceImpl.java

@@ -23,6 +23,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.google.common.base.CaseFormat;
 import com.persagy.fm.common.model.dto.Sort;
 import org.springframework.util.CollectionUtils;
+import org.springframework.util.StringUtils;
 
 /**
  * 工作信息(WorkResume) service层
@@ -42,7 +43,7 @@ public class WorkResumeServiceImpl extends ServiceImpl<WorkResumeMapper, WorkRes
      * @version V1.0 2021-03-15 17:20:06
      */
     @Override
-    public Long createWorkResume(AddWorkResumeDTO addWorkResumeDTO) {
+    public String createWorkResume(AddWorkResumeDTO addWorkResumeDTO) {
         WorkResume workResume = ConvertWorkResumeTool.INSTANCE.convertAddDto2Entity(addWorkResumeDTO);
         // 设置默认值
         setDefaultValue(workResume);
@@ -76,7 +77,7 @@ public class WorkResumeServiceImpl extends ServiceImpl<WorkResumeMapper, WorkRes
      * @version V1.0 2021-03-15 17:20:06
      */
     @Override
-    public WorkResume queryWorkResumeDetail(Long id) {
+    public WorkResume queryWorkResumeDetail(String id) {
         WorkResume workResume = getById(id);
         if (workResume == null) {
             throw new IllegalArgumentException("查看WorkResume详情时发生异常,找不到要查看的记录,id=" + id);
@@ -106,7 +107,7 @@ public class WorkResumeServiceImpl extends ServiceImpl<WorkResumeMapper, WorkRes
      * @author lixing
      * @version V1.0 2021-03-15 17:20:06
      */
-    public WorkResume checkDeletable(Long id) {
+    public WorkResume checkDeletable(String id) {
         if (id == null) {
             throw new IllegalArgumentException("删除WorkResume时发生异常,主键为空");
         }
@@ -128,7 +129,7 @@ public class WorkResumeServiceImpl extends ServiceImpl<WorkResumeMapper, WorkRes
      * @version V1.0 2021-03-15 17:20:06
      */
     @Override
-    public void deleteWorkResume(Long id) {
+    public void deleteWorkResume(String id) {
         // 校验是否可删除
         WorkResume workResume = checkDeletable(id);
 
@@ -152,15 +153,15 @@ public class WorkResumeServiceImpl extends ServiceImpl<WorkResumeMapper, WorkRes
 
         if (queryWorkResumeDTO != null) {
 
-            if (queryWorkResumeDTO.getPersonId() != null) {
+            if (!StringUtils.isEmpty(queryWorkResumeDTO.getPersonId())) {
                 queryWrapper.eq(WorkResume.PROP_PERSON_ID, queryWorkResumeDTO.getPersonId());
             }
 
-            if (queryWorkResumeDTO.getDepId() != null) {
+            if (!StringUtils.isEmpty(queryWorkResumeDTO.getDepId())) {
                 queryWrapper.eq(WorkResume.PROP_DEP_ID, queryWorkResumeDTO.getDepId());
             }
 
-            if (queryWorkResumeDTO.getState() != null) {
+            if (!StringUtils.isEmpty(queryWorkResumeDTO.getState())) {
                 queryWrapper.eq(WorkResume.PROP_STATE, queryWorkResumeDTO.getState());
             }
 

+ 1 - 0
fm-person/src/main/resources/bootstrap.yml

@@ -73,3 +73,4 @@ person:
 #  mapper-locations: classpath*:/mapper/*Mapper.xml
 #  typeAliasesPackage: com.persagy.fm.test.model.entity
 
+

+ 18 - 18
fm-person/src/main/resources/mapper/DepartmentMapper.xml

@@ -1,22 +1,22 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
-<mapper namespace="com.persagy.fm.department.dao.DepartmentDao">
-<!--    <resultMap id="DepartmentMap" type="com.persagy.fm.department.model.Department">-->
-<!--        <result column="id" property="id"/>-->
-<!--        <result column="name" property="name"/>-->
-<!--        <result column="type" property="type"/>-->
-<!--        <result column="parent_id" property="parentId"/>-->
-<!--        <result column="resource_from" property="resourceFrom"/>-->
-<!--        <result column="managers" property="managers"/>-->
-<!--        <result column="full_path" property="fullPath"/>-->
-<!--        <result column="staff_count" property="staffCount"/>-->
-<!--        <result column="has_children" property="hasChildren"/>-->
-<!--        <result column="ts" property="ts"/>-->
-<!--        <result column="creator" property="creator"/>-->
-<!--        <result column="creation_time" property="creationTime"/>-->
-<!--        <result column="modifier" property="modifier"/>-->
-<!--        <result column="modified_time" property="modifiedTime"/>-->
-<!--        <result column="valid" property="valid"/>-->
-<!--    </resultMap>-->
+<mapper namespace="com.persagy.fm.department.dao.DepartmentMapper">
+    <resultMap id="DepartmentMap" type="com.persagy.fm.department.model.Department">
+        <result column="id" property="id"/>
+        <result column="name" property="name"/>
+        <result column="type" property="type"/>
+        <result column="parent_id" property="parentId"/>
+        <result column="resource_from" property="resourceFrom"/>
+        <result column="managers" property="managers"/>
+        <result column="full_path" property="fullPath"/>
+        <result column="staff_count" property="staffCount"/>
+        <result column="has_children" property="hasChildren"/>
+        <result column="ts" property="ts"/>
+        <result column="creator" property="creator"/>
+        <result column="creation_time" property="creationTime"/>
+        <result column="modifier" property="modifier"/>
+        <result column="modified_time" property="modifiedTime"/>
+        <result column="valid" property="valid"/>
+    </resultMap>
 </mapper>
 

+ 16 - 0
fm-person/src/main/resources/mapper/ITranslateDao.xml

@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC
+	"-//mybatis.org//DTD Mapper 3.0//EN"
+	"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+
+<mapper namespace="com.persagy.fm.translate.dao.ITranslateDao">
+	<select id="findTransBySql" resultType="map">
+		${sql}
+	</select>
+	<select id="findBatchTransBySql" resultType="map">
+		${sql}
+		<foreach collection="parameter" index="index" item="item" open="(" separator="," close=")">
+			${item}
+		</foreach>
+	</select>
+</mapper>