Parcourir la source

编写人员相关接口

lixing il y a 4 ans
Parent
commit
bd872a8ce5
29 fichiers modifiés avec 695 ajouts et 234 suppressions
  1. 4 5
      fm-person/src/main/java/com/persagy/fm/department/service/impl/DepTranslatorImpl.java
  2. 15 14
      fm-person/src/main/java/com/persagy/fm/person/constant/enums/CertificateTypeEnum.java
  3. 15 14
      fm-person/src/main/java/com/persagy/fm/person/constant/enums/PersonTypeEnum.java
  4. 3 5
      fm-person/src/main/java/com/persagy/fm/person/controller/PersonController.java
  5. 12 0
      fm-person/src/main/java/com/persagy/fm/person/dao/PersonMapper.java
  6. 1 1
      fm-person/src/main/java/com/persagy/fm/person/model/Person.java
  7. 30 10
      fm-person/src/main/java/com/persagy/fm/person/model/vo/ResponsePersonItemVO.java
  8. 16 14
      fm-person/src/main/java/com/persagy/fm/person/model/vo/ResponsePersonListItemVO.java
  9. 12 1
      fm-person/src/main/java/com/persagy/fm/person/service/IPersonService.java
  10. 1 1
      fm-person/src/main/java/com/persagy/fm/person/service/impl/PersonNameTranslator.java
  11. 25 2
      fm-person/src/main/java/com/persagy/fm/person/service/impl/PersonProjectServiceImpl.java
  12. 230 22
      fm-person/src/main/java/com/persagy/fm/person/service/impl/PersonServiceImpl.java
  13. 11 0
      fm-person/src/main/java/com/persagy/fm/profession/service/IProfessionService.java
  14. 19 0
      fm-person/src/main/java/com/persagy/fm/profession/service/impl/ProfessionServiceImpl.java
  15. 7 3
      fm-person/src/main/java/com/persagy/fm/saas/accountrole/model/dto/QuerySaasAccountRoleDTO.java
  16. 20 0
      fm-person/src/main/java/com/persagy/fm/saas/accountrole/model/vo/AccountRoleVO.java
  17. 21 0
      fm-person/src/main/java/com/persagy/fm/saas/accountrole/service/ISaasAccountRoleService.java
  18. 90 0
      fm-person/src/main/java/com/persagy/fm/saas/accountrole/service/impl/SaasAccountRoleServiceImpl.java
  19. 5 2
      fm-person/src/main/java/com/persagy/fm/saas/project/service/impl/SaasProjectServiceImpl.java
  20. 16 7
      fm-person/src/main/java/com/persagy/fm/saas/role/client/SaasRoleClient.java
  21. 0 1
      fm-person/src/main/java/com/persagy/fm/saas/role/controller/SaasRoleController.java
  22. 31 0
      fm-person/src/main/java/com/persagy/fm/saas/role/model/dto/QuerySaasRoleDTO.java
  23. 30 9
      fm-person/src/main/java/com/persagy/fm/saas/role/service/ISaasRoleService.java
  24. 36 58
      fm-person/src/main/java/com/persagy/fm/saas/role/service/impl/SaasRoleServiceImpl.java
  25. 2 1
      fm-person/src/main/java/com/persagy/fm/workresume/model/WorkResume.java
  26. 5 2
      fm-person/src/main/java/com/persagy/fm/workresume/model/dto/QueryWorkResumeDTO.java
  27. 5 4
      fm-person/src/main/java/com/persagy/fm/workresume/service/IWorkResumeService.java
  28. 18 58
      fm-person/src/main/java/com/persagy/fm/workresume/service/impl/WorkResumeServiceImpl.java
  29. 15 0
      fm-person/src/main/resources/mapper/PersonMapper.xml

+ 4 - 5
fm-person/src/main/java/com/persagy/fm/department/service/impl/DepTranslatorImpl.java

@@ -15,6 +15,7 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.util.CollectionUtils;
 
+import java.util.Arrays;
 import java.util.List;
 import java.util.stream.Collectors;
 
@@ -35,13 +36,11 @@ public class DepTranslatorImpl implements IDepTranslator {
     public List<ManagerVO> getManagerVOList(String managers) {
         String separator = ",";
         if (StringUtils.isBlank(managers)) {
-            return null;
+            return Lists.newArrayList();
         }
         String[] managersArr = managers.split(separator);
         List<String> managerIdList = Lists.newArrayList();
-        for (String managerIdStr : managersArr) {
-            managerIdList.add(managerIdStr);
-        }
+        managerIdList.addAll(Arrays.asList(managersArr));
         List<Person> people = personService.queryByIds(managerIdList);
         return people.stream().map(person -> {
             ManagerVO managerVO = new ManagerVO();
@@ -54,7 +53,7 @@ public class DepTranslatorImpl implements IDepTranslator {
     @Override
     public List<ProjectVO> getProjectVOList(List<String> projectIds) {
         if (CollectionUtils.isEmpty(projectIds)) {
-            return null;
+            return Lists.newArrayList();
         }
         QuerySaasProjectDTO querySaasProjectDTO = new QuerySaasProjectDTO();
         querySaasProjectDTO.setDefaultValue();

+ 15 - 14
fm-person/src/main/java/com/persagy/fm/person/constant/enums/CertificateTypeEnum.java

@@ -1,5 +1,8 @@
 package com.persagy.fm.person.constant.enums;
 
+import lombok.Getter;
+import lombok.Setter;
+
 /**
  * 证件类型
  *
@@ -13,7 +16,11 @@ public enum CertificateTypeEnum {
     ID_CARD("1", "身份证"),
     OTHER("2", "其他");
 
+    @Setter
+    @Getter
     private String type;
+    @Setter
+    @Getter
     private String desc;
 
     CertificateTypeEnum(String type, String desc) {
@@ -21,19 +28,13 @@ public enum CertificateTypeEnum {
         this.desc = desc;
     }
 
-    public String getType() {
-        return type;
-    }
-
-    public void setType(String type) {
-        this.type = type;
-    }
-
-    public String getDesc() {
-        return desc;
-    }
-
-    public void setDesc(String desc) {
-        this.desc = desc;
+    public static CertificateTypeEnum getByType(String certificateType) {
+        CertificateTypeEnum[] values = CertificateTypeEnum.values();
+        for (CertificateTypeEnum value : values) {
+            if (value.getType().equals(certificateType)) {
+                return value;
+            }
+        }
+        return null;
     }
 }

+ 15 - 14
fm-person/src/main/java/com/persagy/fm/person/constant/enums/PersonTypeEnum.java

@@ -1,5 +1,8 @@
 package com.persagy.fm.person.constant.enums;
 
+import lombok.Getter;
+import lombok.Setter;
+
 /**
  * 员工类型
  *
@@ -15,7 +18,11 @@ public enum PersonTypeEnum {
     PARTNER("3", "合作方人员"),
     FOREIGN("4", "外部用户");
 
+    @Setter
+    @Getter
     private String type;
+    @Setter
+    @Getter
     private String desc;
 
     PersonTypeEnum(String type, String desc) {
@@ -23,19 +30,13 @@ public enum PersonTypeEnum {
         this.desc = desc;
     }
 
-    public String getType() {
-        return type;
-    }
-
-    public void setType(String type) {
-        this.type = type;
-    }
-
-    public String getDesc() {
-        return desc;
-    }
-
-    public void setDesc(String desc) {
-        this.desc = desc;
+    public static PersonTypeEnum getByType(String type) {
+        PersonTypeEnum[] values = PersonTypeEnum.values();
+        for (PersonTypeEnum value : values) {
+            if (value.getType().equals(type)) {
+                return value;
+            }
+        }
+        return null;
     }
 }

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

@@ -2,7 +2,6 @@ package com.persagy.fm.person.controller;
 
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.persagy.fm.common.utils.ResultHelper;
-import com.persagy.fm.department.model.dto.DeleteDepartmentDTO;
 import com.persagy.fm.person.model.vo.SimplePersonListItemVO;
 import com.persagy.fm.person.service.IPersonProjectService;
 import com.persagy.fm.person.service.IPersonService;
@@ -12,9 +11,8 @@ import com.persagy.fm.person.model.Person;
 import com.persagy.fm.person.model.vo.ResponsePersonItemVO;
 import com.persagy.fm.person.model.vo.ResponsePersonListItemVO;
 import com.persagy.fm.person.model.dto.*;
+import com.persagy.fm.saas.accountrole.model.vo.AccountRoleVO;
 import com.persagy.fm.saas.project.model.vo.ProjectTreeItemVO;
-import com.persagy.fm.translate.model.Trans;
-import org.checkerframework.checker.units.qual.A;
 import org.springframework.beans.factory.annotation.Autowired;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
@@ -24,6 +22,7 @@ import org.springframework.web.bind.annotation.*;
 
 import javax.validation.Valid;
 import java.util.List;
+import java.util.Map;
 
 /**
  * 人员控制层
@@ -53,8 +52,7 @@ public class PersonController {
     @PostMapping("/get")
     public CommonResult<ResponsePersonItemVO> queryPersonDetail(
             @Valid @RequestBody QueryPersonDetailDTO queryPersonDetailDTO) {
-        Person person = personService.queryPersonDetail(queryPersonDetailDTO.getId());
-        ResponsePersonItemVO responsePersonItemVO = ConvertPersonTool.INSTANCE.convert2ResponseItemDTO(person);
+        ResponsePersonItemVO responsePersonItemVO = personService.queryPersonDetail(queryPersonDetailDTO.getId());
         return ResultHelper.single(responsePersonItemVO);
     }
 

+ 12 - 0
fm-person/src/main/java/com/persagy/fm/person/dao/PersonMapper.java

@@ -2,10 +2,12 @@ package com.persagy.fm.person.dao;
 
 import com.persagy.fm.person.model.Person;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.persagy.fm.person.model.dto.NameQuickSearchDTO;
 import com.persagy.fm.person.model.dto.PageQueryPersonDTO;
 import com.persagy.fm.person.model.dto.QueryPersonDTO;
 import org.apache.ibatis.annotations.Mapper;
 
+import javax.naming.Name;
 import java.util.List;
 
 /**
@@ -35,4 +37,14 @@ public interface PersonMapper extends BaseMapper<Person> {
      * @version V1.0 2021/3/23 5:14 下午
      */
     int queryCount(PageQueryPersonDTO pageQueryPersonDTO);
+
+    /**
+     * 快速查询人员姓名
+     *
+     * @param nameQuickSearchDTO 快速查询人员姓名入参
+     * @return 人员列表
+     * @author lixing
+     * @version V1.0 2021/4/1 11:49 上午
+     */
+    List<Person> queryPersonNameList(NameQuickSearchDTO nameQuickSearchDTO);
 }

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

@@ -52,7 +52,7 @@ public class Person extends AuditableEntity<Person> implements Serializable {
     private String userFrom;
 
     @ApiModelProperty("员工类型")
-    private String personType;
+    private String type;
 
     @ApiModelProperty("备注")
     private String remark;

+ 30 - 10
fm-person/src/main/java/com/persagy/fm/person/model/vo/ResponsePersonItemVO.java

@@ -1,7 +1,9 @@
 package com.persagy.fm.person.model.vo;
 
+import com.fasterxml.jackson.annotation.JsonIgnore;
 import com.fasterxml.jackson.databind.annotation.JsonSerialize;
 import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
+import com.persagy.fm.common.model.vo.SimpleObjVO;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
@@ -35,15 +37,23 @@ public class ResponsePersonItemVO {
     @ApiModelProperty(value = "性别")
     private Integer gender;
 
-    @ApiModelProperty(value = "员工类型")
+    @ApiModelProperty(value = "员工类型id")
+    @JsonIgnore
     private String type;
 
+    @ApiModelProperty("员工类型")
+    private SimpleObjVO personType;
+
     @ApiModelProperty(value = "手机号码")
     private String phoneNum;
 
-    @ApiModelProperty(value = "证件类型")
+    @ApiModelProperty(value = "证件类型id")
+    @JsonIgnore
     private String certificateType;
 
+    @ApiModelProperty(value = "证件类型")
+    private SimpleObjVO certificateTypeVO;
+
     @ApiModelProperty("证件号码")
     private String idNumber;
 
@@ -54,31 +64,41 @@ public class ResponsePersonItemVO {
     private String remark;
 
     @ApiModelProperty(value = "所属部门id")
+    @JsonIgnore
     private List<Long> depIds;
 
-    @ApiModelProperty(value = "所属部门名称")
-    private List<Long> depsShowName;
+    @ApiModelProperty(value = "所属部门")
+    private List<SimpleObjVO> deps;
 
     @ApiModelProperty(value = "关联的项目id")
+    @JsonIgnore
     private List<String> projectIds;
 
     @ApiModelProperty(value = "关联的项目名称")
-    private List<String> projectsShowName;
+    private List<SimpleObjVO> projects;
 
     @ApiModelProperty(value = "主岗")
-    private String mainDuty;
+    private SimpleObjVO mainDuty;
 
     @ApiModelProperty(value = "副岗")
-    private List<String> otherDuties;
+    private List<SimpleObjVO> otherDuties;
 
-    @ApiModelProperty(value = "直接上级")
+    @ApiModelProperty(value = "直接上级id")
+    @JsonIgnore
     private Long leader;
 
-    @ApiModelProperty(value = "专业")
+    @ApiModelProperty(value = "直接上级")
+    private SimpleObjVO leaderVO;
+
+    @ApiModelProperty(value = "专业id")
+    @JsonIgnore
     private String profession;
 
+    @ApiModelProperty(value = "专业")
+    private List<SimpleObjVO> professions;
+
     @ApiModelProperty(value = "附加权限")
-    private List<String> otherRoles;
+    private List<SimpleObjVO> otherRoles;
 
     @ApiModelProperty("账号")
     private String username;

+ 16 - 14
fm-person/src/main/java/com/persagy/fm/person/model/vo/ResponsePersonListItemVO.java

@@ -1,7 +1,9 @@
 package com.persagy.fm.person.model.vo;
 
+import com.fasterxml.jackson.annotation.JsonIgnore;
 import com.fasterxml.jackson.databind.annotation.JsonSerialize;
 import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
+import com.persagy.fm.common.model.vo.SimpleObjVO;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
@@ -25,31 +27,31 @@ public class ResponsePersonListItemVO {
     private String name;
 
     @ApiModelProperty("员工类型编码")
+    @JsonIgnore
     private String type;
 
-    @ApiModelProperty("员工类型名称")
-    private String typeShowName;
+    @ApiModelProperty("员工类型")
+    private SimpleObjVO personType;
+
+    @ApiModelProperty("账号id")
+    @JsonIgnore
+    private String accountId;
 
     @ApiModelProperty("账号")
     private String username;
 
-    @ApiModelProperty("主岗id")
-    private String mainDuty;
-
-    @ApiModelProperty("主岗名称")
-    private String mainDutyShowName;
-
-    @ApiModelProperty("副岗id")
-    private List<String> otherDuties;
+    @ApiModelProperty("主岗信息")
+    private SimpleObjVO mainDuty;
 
-    @ApiModelProperty("副岗名称")
-    private List<String> otherDutiesShowName;
+    @ApiModelProperty("副岗信息")
+    private List<SimpleObjVO> otherDuties;
 
     @ApiModelProperty("专业id")
+    @JsonIgnore
     private String profession;
 
-    @ApiModelProperty("专业名称")
-    private String professionShowName;
+    @ApiModelProperty("专业信息")
+    private List<SimpleObjVO> professions;
 
     @ApiModelProperty("登录权限(年.月.日/永久)")
     private String expireDate;

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

@@ -3,6 +3,7 @@ package com.persagy.fm.person.service;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.persagy.fm.person.model.Person;
 import com.persagy.fm.person.model.dto.*;
+import com.persagy.fm.person.model.vo.ResponsePersonItemVO;
 import com.persagy.fm.person.model.vo.ResponsePersonListItemVO;
 
 import java.util.List;
@@ -36,6 +37,16 @@ public interface IPersonService {
     String createPerson(Person person);
 
     /**
+     * 人员基本属性详情
+     *
+     * @param id 主键
+     * @return 人员do对象
+     * @author lixing
+     * @version V1.0 2021-03-15 17:20:31
+     */
+    Person queryPersonProfile(String id);
+
+    /**
      * 人员详情
      *
      * @param id 主键
@@ -43,7 +54,7 @@ public interface IPersonService {
      * @author lixing
      * @version V1.0 2021-03-15 17:20:31
      */
-    Person queryPersonDetail(String id);
+    ResponsePersonItemVO queryPersonDetail(String id);
 
     /**
      * 通过主键数组查询人员

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

@@ -31,7 +31,7 @@ public class PersonNameTranslator implements ITranslator {
         if (StringUtils.isBlank(parameter)) {
             return "";
         }
-        Person person = personService.queryPersonDetail(parameter);
+        Person person = personService.queryPersonProfile(parameter);
         return person.getName();
         //        if(StringUtils.isBlank(parameter)) {
         //            return null;

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

@@ -1,12 +1,20 @@
 package com.persagy.fm.person.service.impl;
 
+import com.persagy.fm.person.model.Person;
 import com.persagy.fm.person.service.IPersonProjectService;
+import com.persagy.fm.person.service.IPersonService;
+import com.persagy.fm.saas.accountproject.model.SaasAccountProject;
+import com.persagy.fm.saas.accountproject.model.dto.QuerySaasAccountProjectDTO;
+import com.persagy.fm.saas.accountproject.service.ISaasAccountProjectService;
 import com.persagy.fm.saas.project.model.vo.ProjectTreeItemVO;
 import com.persagy.fm.saas.project.service.ISaasProjectService;
+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;
 
 /**
  * 人员关联的项目service层
@@ -18,11 +26,26 @@ import java.util.List;
 public class PersonProjectServiceImpl implements IPersonProjectService {
     @Autowired
     ISaasProjectService saasProjectService;
+    @Autowired
+    IPersonService personService;
+    @Autowired
+    ISaasAccountProjectService accountProjectService;
+
+
     @Override
     public List<ProjectTreeItemVO> queryPersonProjectTree(String personId) {
         // 根据人员id查询人员关联的项目,然后组装项目树
-        // TODO: 2021/3/22 查询人员关联的项目
-        List<String> projectIds = null;
+        Person person = personService.queryPersonProfile(personId);
+        String accountId = person.getAccountId();
+        QuerySaasAccountProjectDTO querySaasAccountProjectDTO = new QuerySaasAccountProjectDTO();
+        querySaasAccountProjectDTO.setAccountId(accountId);
+        List<SaasAccountProject> saasAccountProjects = accountProjectService.querySaasAccountProjectList(querySaasAccountProjectDTO);
+        if (CollectionUtils.isEmpty(saasAccountProjects)) {
+            return Lists.newArrayList();
+        }
+        List<String> projectIds = saasAccountProjects.stream()
+                .map(SaasAccountProject::getProjectId)
+                .collect(Collectors.toList());
         return saasProjectService.queryProjectTree(projectIds);
     }
 }

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

@@ -7,13 +7,18 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.persagy.fm.common.constant.enums.ValidEnum;
 import com.persagy.fm.common.context.DefaultAppContext;
+import com.persagy.fm.common.model.vo.SimpleObjVO;
 import com.persagy.fm.common.response.FmResponseContent;
+import com.persagy.fm.person.constant.enums.CertificateTypeEnum;
+import com.persagy.fm.person.constant.enums.PersonTypeEnum;
 import com.persagy.fm.person.dao.PersonMapper;
 import com.persagy.fm.person.model.ConvertPersonTool;
 import com.persagy.fm.person.model.Person;
 import com.persagy.fm.person.model.dto.*;
+import com.persagy.fm.person.model.vo.ResponsePersonItemVO;
 import com.persagy.fm.person.model.vo.ResponsePersonListItemVO;
 import com.persagy.fm.person.service.IPersonService;
+import com.persagy.fm.profession.service.IProfessionService;
 import com.persagy.fm.saas.account.client.SaasAccountClient;
 import com.persagy.fm.saas.account.constant.enums.AccountTypeEnum;
 import com.persagy.fm.saas.account.model.dto.AddSaasAccountDTO;
@@ -21,23 +26,27 @@ import com.persagy.fm.saas.account.model.dto.DeleteSaasAccountDTO;
 import com.persagy.fm.saas.account.model.dto.EnableSaasAccountDTO;
 import com.persagy.fm.saas.account.model.dto.PageQuerySaasAccountDTO;
 import com.persagy.fm.saas.account.model.vo.SaasAccountListItemVO;
-import com.persagy.fm.saas.accountproject.client.SaasAccountProjectClient;
 import com.persagy.fm.saas.accountproject.model.dto.AddSaasAccountProjectDTO;
-import com.persagy.fm.saas.accountrole.client.SaasAccountRoleClient;
+import com.persagy.fm.saas.accountproject.service.ISaasAccountProjectService;
 import com.persagy.fm.saas.accountrole.constant.enums.AccountRoleTypeEnum;
 import com.persagy.fm.saas.accountrole.model.dto.AddSaasAccountRoleDTO;
+import com.persagy.fm.saas.accountrole.model.vo.AccountRoleVO;
+import com.persagy.fm.saas.accountrole.service.ISaasAccountRoleService;
 import com.persagy.fm.workresume.constant.enums.WorkResumeEnableStateEnum;
 import com.persagy.fm.workresume.constant.enums.WorkResumeHiredStateEnum;
 import com.persagy.fm.workresume.model.dto.AddWorkResumeDTO;
 import com.persagy.fm.workresume.service.IWorkResumeService;
 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.transaction.annotation.Transactional;
 import org.springframework.util.CollectionUtils;
 
+import java.util.Arrays;
 import java.util.Date;
 import java.util.List;
+import java.util.Map;
 import java.util.stream.Collectors;
 
 /**
@@ -56,9 +65,11 @@ public class PersonServiceImpl extends ServiceImpl<PersonMapper, Person>
     @Autowired
     private PersonMapper personMapper;
     @Autowired
-    private SaasAccountRoleClient saasAccountRoleClient;
+    private ISaasAccountRoleService saasAccountRoleService;
     @Autowired
-    private SaasAccountProjectClient saasAccountProjectClient;
+    private ISaasAccountProjectService saasAccountProjectService;
+    @Autowired
+    private IProfessionService professionService;
 
     @Override
     public String createPerson(Person person) {
@@ -76,8 +87,7 @@ public class PersonServiceImpl extends ServiceImpl<PersonMapper, Person>
     @Override
     @Transactional
     public String createPerson(AddPersonDTO addPersonDTO) {
-        // 判断账号是否被占用
-        checkUserName(addPersonDTO.getUsername());
+        checkAddPersonDTO(addPersonDTO);
         // 创建账号
         String accountId = createAccount(addPersonDTO);
         // 保存人员
@@ -104,10 +114,9 @@ public class PersonServiceImpl extends ServiceImpl<PersonMapper, Person>
         if (!CollectionUtils.isEmpty(projectIds)) {
             for (String projectId : projectIds) {
                 AddSaasAccountProjectDTO addSaasAccountProjectDTO = new AddSaasAccountProjectDTO();
-                addSaasAccountProjectDTO.setDefaultValue();
                 addSaasAccountProjectDTO.setAccountId(accountId);
                 addSaasAccountProjectDTO.setProjectId(projectId);
-                saasAccountProjectClient.createSaasAccountProject(addSaasAccountProjectDTO);
+                saasAccountProjectService.createSaasAccountProject(addSaasAccountProjectDTO);
             }
         }
     }
@@ -158,7 +167,7 @@ public class PersonServiceImpl extends ServiceImpl<PersonMapper, Person>
         mainDutyDTO.setAccountId(accountId);
         mainDutyDTO.setRoleId(roleId);
         mainDutyDTO.setCasType(accountRoleType);
-        saasAccountRoleClient.createSaasAccountRole(mainDutyDTO);
+        saasAccountRoleService.createSaasAccountRole(mainDutyDTO);
     }
 
     /**
@@ -190,7 +199,6 @@ public class PersonServiceImpl extends ServiceImpl<PersonMapper, Person>
      */
     private Person savePerson(AddPersonDTO addPersonDTO, String accountId) {
         Person person = ConvertPersonTool.INSTANCE.convertAddDto2Entity(addPersonDTO);
-        checkDuplicate(addPersonDTO);
         person.setNamePinyin(PinyinUtil.getPinyin(person.getName(), ""));
         person.setAccountId(accountId);
         // 设置默认值
@@ -228,6 +236,11 @@ public class PersonServiceImpl extends ServiceImpl<PersonMapper, Person>
      * @version V1.0 2021/3/23 3:15 下午
      */
     private void checkUserName(String username) {
+        List<Person> people = queryByUsername(username);
+        if (!CollectionUtils.isEmpty(people)) {
+            throw new IllegalArgumentException("账号重复");
+        }
+
         PageQuerySaasAccountDTO pageQuerySaasAccountDTO = new PageQuerySaasAccountDTO();
         pageQuerySaasAccountDTO.setDefaultValue();
         pageQuerySaasAccountDTO.setUsername(username);
@@ -238,16 +251,89 @@ public class PersonServiceImpl extends ServiceImpl<PersonMapper, Person>
     }
 
     /**
+     * 检查手机号有没有被使用
+     *
+     * @param phoneNum 手机号
+     * @author lixing
+     * @version V1.0 2021/3/23 3:15 下午
+     */
+    private void checkPhoneNum(String phoneNum) {
+        PageQuerySaasAccountDTO pageQuerySaasAccountDTO = new PageQuerySaasAccountDTO();
+        pageQuerySaasAccountDTO.setDefaultValue();
+        pageQuerySaasAccountDTO.setPhoneNum(phoneNum);
+        FmResponseContent<List<SaasAccountListItemVO>> listFmResponseContent = saasAccountClient.querySaasAccountPageList(pageQuerySaasAccountDTO);
+        if (listFmResponseContent.getCount() > 0) {
+            throw new IllegalArgumentException("手机号已被使用");
+        }
+    }
+
+    /**
      * 校验重复项,手机号码,身份证
      *
-     * @param addPersonDTO
-     * @return void
-     * @throws
+     * @param addPersonDTO 创建人员入参
      * @author lixing
      * @version V1.0 2021/3/22 9:53 上午
      */
-    private void checkDuplicate(AddPersonDTO addPersonDTO) {
-        // TODO: 2021/3/22 手机号,身份证号,账号
+    private void checkAddPersonDTO(AddPersonDTO addPersonDTO) {
+        // 校验身份证号
+        checkIdNumber(addPersonDTO.getIdNumber());
+
+        // 校验账号
+        checkUserName(addPersonDTO.getUsername());
+
+        // 校验手机号
+        checkPhoneNum(addPersonDTO.getPhoneNum());
+    }
+
+    /**
+     * 校验身份证号重复
+     *
+     * @param idNumber 身份证号
+     * @author lixing
+     * @version V1.0 2021/4/1 3:03 下午
+     */
+    private void checkIdNumber(String idNumber) {
+        List<Person> people = queryByIdCard(idNumber);
+        if (!CollectionUtils.isEmpty(people)) {
+            throw new IllegalArgumentException("身份证号重复");
+        }
+    }
+
+    /**
+     * 根据身份证号查询人员
+     *
+     * @param idCard 身份证号
+     * @return 人员列表
+     * @author lixing
+     * @version V1.0 2021/4/1 3:00 下午
+     */
+    public List<Person> queryByIdCard(String idCard) {
+        if (StringUtils.isBlank(idCard)) {
+            return null;
+        }
+        QueryWrapper<Person> queryWrapper = new QueryWrapper<>();
+        queryWrapper.eq(Person.PROP_VALID, ValidEnum.TRUE.getType());
+        queryWrapper.eq(Person.PROP_ID_NUMBER, idCard);
+        return list(queryWrapper);
+    }
+
+    /**
+     * 根据账号查询人员
+     *
+     * @param username 账号
+     * @return 人员列表
+     * @author lixing
+     * @version V1.0 2021/4/1 3:00 下午
+     */
+    public List<Person> queryByUsername(String username) {
+        if (StringUtils.isBlank(username)) {
+            return null;
+        }
+
+        QueryWrapper<Person> queryWrapper = new QueryWrapper<>();
+        queryWrapper.eq(Person.PROP_VALID, ValidEnum.TRUE.getType());
+        queryWrapper.eq(Person.PROP_USERNAME, username);
+        return list(queryWrapper);
     }
 
     /**
@@ -270,7 +356,7 @@ public class PersonServiceImpl extends ServiceImpl<PersonMapper, Person>
      * @version V1.0 2021-03-15 17:20:31
      */
     @Override
-    public Person queryPersonDetail(String id) {
+    public Person queryPersonProfile(String id) {
         Person person = getById(id);
         if (person == null) {
             throw new IllegalArgumentException("查看Person详情时发生异常,找不到要查看的记录,id=" + id);
@@ -295,6 +381,9 @@ public class PersonServiceImpl extends ServiceImpl<PersonMapper, Person>
         person = ConvertPersonTool.INSTANCE.convertUpdateDto2Entity(person, updatePersonDTO);
         person.setModifier(DefaultAppContext.getContext().getAccountId());
         updateById(person);
+
+        // 判断是否有账号相关的更新
+        // 判断是否有工作信息相关的更新
     }
 
     @Override
@@ -303,6 +392,7 @@ public class PersonServiceImpl extends ServiceImpl<PersonMapper, Person>
             throw new IllegalArgumentException("根据账号id查询人员,账号id为空");
         }
         QueryWrapper<Person> queryWrapper = new QueryWrapper<>();
+        queryWrapper.eq(Person.PROP_VALID, ValidEnum.TRUE.getType());
         queryWrapper.eq(Person.PROP_ACCOUNT_ID, accountId);
         return list(queryWrapper);
     }
@@ -351,20 +441,76 @@ public class PersonServiceImpl extends ServiceImpl<PersonMapper, Person>
         int total = personMapper.queryCount(pageQueryPersonDTO);
 
         List<String> accountIds = people.stream().map(Person::getAccountId).collect(Collectors.toList());
+        Map<String, AccountRoleVO> accountRoleVoMap = saasAccountRoleService.
+                queryAccountRoleVoMapByAccountIdList(accountIds);
 
-        // TODO: 2021/3/23 翻译器
-        // 数据转换
+        /* 数据转换 */
+        // 设置人员基本信息
         List<ResponsePersonListItemVO> responsePersonListItems = ConvertPersonTool.INSTANCE.convert2List(people);
+
+        for (ResponsePersonListItemVO responsePersonListItem : responsePersonListItems) {
+            // 设置人员主岗副岗信息
+            AccountRoleVO accountRoleVO = accountRoleVoMap.get(responsePersonListItem.getAccountId());
+            if (accountRoleVO != null) {
+                responsePersonListItem.setMainDuty(accountRoleVO.getMainDuty());
+                responsePersonListItem.setOtherDuties(accountRoleVO.getOtherDuties());
+            }
+
+            // 设置员工类型
+            String type = responsePersonListItem.getType();
+            responsePersonListItem.setPersonType(getPersonTypeVO(type));
+
+            // 设置专业
+            String profession = responsePersonListItem.getProfession();
+            responsePersonListItem.setProfessions(getProfessionVoList(profession));
+        }
+
         IPage<ResponsePersonListItemVO> result = new Page<>();
         result.setRecords(responsePersonListItems);
         result.setTotal(total);
         return result;
     }
 
+    /**
+     * 根据专业id获取专业信息
+     *
+     * @param profession 专业id id1,id2
+     * @return 专业信息列表
+     * @author lixing
+     * @version V1.0 2021/4/1 2:46 下午
+     */
+    private List<SimpleObjVO> getProfessionVoList(String profession) {
+        List<SimpleObjVO> professions = null;
+        if (StringUtils.isNotBlank(profession)) {
+            String[] professionArr = profession.split(",");
+            List<String> professionIds = Arrays.asList(professionArr);
+            professions = professionService.queryProfessionInfoByProfessionIds(professionIds);
+        }
+        return professions;
+    }
+
+    /**
+     * 根据员工类型id获取员工类型对象
+     *
+     * @param type 员工类型id
+     * @return 员工类型对象
+     * @author lixing
+     * @version V1.0 2021/4/1 12:04 下午
+     */
+    private SimpleObjVO getPersonTypeVO(String type) {
+        SimpleObjVO personType = new SimpleObjVO();
+        personType.setId(type);
+        PersonTypeEnum personTypeEnum = PersonTypeEnum.getByType(type);
+        if (personTypeEnum != null) {
+            personType.setName(personTypeEnum.getDesc());
+        }
+        return personType;
+    }
+
     @Override
     public void disablePerson(String personId) {
         // 禁用账号
-        Person person = queryPersonDetail(personId);
+        Person person = queryPersonProfile(personId);
         String accountId = person.getAccountId();
         DeleteSaasAccountDTO deleteSaasAccountDTO = new DeleteSaasAccountDTO();
         deleteSaasAccountDTO.setDefaultValue();
@@ -395,14 +541,13 @@ public class PersonServiceImpl extends ServiceImpl<PersonMapper, Person>
 
     @Override
     public List<Person> nameQuickSearch(NameQuickSearchDTO nameQuickSearchDTO) {
-        // TODO: 2021/3/22 快速查询人名
-        return null;
+        return personMapper.queryPersonNameList(nameQuickSearchDTO);
     }
 
     @Override
     public void enablePerson(String personId) {
         // 启用账号
-        Person person = queryPersonDetail(personId);
+        Person person = queryPersonProfile(personId);
         String accountId = person.getAccountId();
         EnableSaasAccountDTO enableSaasAccountDTO = new EnableSaasAccountDTO();
         enableSaasAccountDTO.setDefaultValue();
@@ -418,4 +563,67 @@ public class PersonServiceImpl extends ServiceImpl<PersonMapper, Person>
     public void updatePerson(Person person) {
         updateById(person);
     }
+
+    @Override
+    public ResponsePersonItemVO queryPersonDetail(String id) {
+        Person person = queryPersonProfile(id);
+        // 设置人员的基本信息
+        ResponsePersonItemVO responsePersonItemVO = ConvertPersonTool.INSTANCE.convert2ResponseItemDTO(person);
+
+        // 设置人员岗位角色信息
+        String accountId = person.getAccountId();
+        Map<String, AccountRoleVO> accountRoleVoMap = saasAccountRoleService.
+                queryAccountRoleVoMapByAccountIdList(Lists.newArrayList(accountId));
+        AccountRoleVO accountRoleVO = accountRoleVoMap.get(accountId);
+        if (accountRoleVO != null) {
+            responsePersonItemVO.setMainDuty(accountRoleVO.getMainDuty());
+            responsePersonItemVO.setOtherDuties(accountRoleVO.getOtherDuties());
+            responsePersonItemVO.setOtherRoles(accountRoleVO.getOtherRoles());
+        }
+
+        // 设置员工类型
+        String type = person.getType();
+        responsePersonItemVO.setPersonType(getPersonTypeVO(type));
+
+        // 设置专业
+        String profession = person.getProfession();
+        responsePersonItemVO.setProfessions(getProfessionVoList(profession));
+
+        // 设置证件类型
+        String certificateType = person.getCertificateType();
+        responsePersonItemVO.setCertificateTypeVO(getCertificateTypeVO(certificateType));
+
+        // 设置直接上级
+        String leader = person.getLeader();
+        responsePersonItemVO.setLeaderVO(getLeaderVO(leader));
+
+        // 设置所属部门 
+        // TODO: 2021/4/1  
+//        workResumeService.queryWorkResumeListByPersonIdList()
+
+        return responsePersonItemVO;
+    }
+
+    /**
+     * 根据直接领导id,获取直接领导信息
+     *
+     * @param leaderId 直接领导id
+     * @return 直接领导信息
+     * @author lixing
+     * @version V1.0 2021/4/1 2:53 下午
+     */
+    private SimpleObjVO getLeaderVO(String leaderId) {
+        Person person = queryPersonProfile(leaderId);
+        return new SimpleObjVO(leaderId, person.getName());
+    }
+
+    private SimpleObjVO getCertificateTypeVO(String certificateType) {
+        SimpleObjVO certificateTypeVO = new SimpleObjVO();
+        certificateTypeVO.setId(certificateType);
+        CertificateTypeEnum certificateTypeEnum = CertificateTypeEnum.getByType(certificateType);
+        if (certificateTypeEnum != null) {
+            certificateTypeVO.setName(certificateTypeEnum.getDesc());
+        }
+        return certificateTypeVO;
+    }
 }

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

@@ -1,5 +1,6 @@
 package com.persagy.fm.profession.service;
 
+import com.persagy.fm.common.model.vo.SimpleObjVO;
 import com.persagy.fm.profession.model.*;
 import com.persagy.fm.profession.model.dto.*;
 
@@ -53,4 +54,14 @@ public interface IProfessionService {
      * @version V1.0 2021-03-19 16:38:19
      */
     List<Profession> queryProfessionList();
+
+    /**
+     * 根据专业id列表查询专业信息
+     *
+     * @param professionIdList
+     * @return 专业信息列表
+     * @author lixing
+     * @version V1.0 2021/4/1 11:06 上午
+     */
+    List<SimpleObjVO> queryProfessionInfoByProfessionIds(List<String> professionIdList);
 }

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

@@ -5,15 +5,19 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.persagy.fm.common.constant.enums.BoolEnum;
 import com.persagy.fm.common.constant.enums.ValidEnum;
 import com.persagy.fm.common.context.DefaultAppContext;
+import com.persagy.fm.common.model.vo.SimpleObjVO;
 import com.persagy.fm.profession.dao.ProfessionMapper;
 import com.persagy.fm.profession.model.ConvertProfessionTool;
 import com.persagy.fm.profession.model.Profession;
 import com.persagy.fm.profession.model.dto.AddProfessionDTO;
 import com.persagy.fm.profession.model.dto.UpdateProfessionDTO;
 import com.persagy.fm.profession.service.IProfessionService;
+import org.assertj.core.util.Lists;
 import org.springframework.stereotype.Service;
+import org.springframework.util.CollectionUtils;
 
 import java.util.List;
+import java.util.stream.Collectors;
 
 /**
  * 专业(Profession) service层
@@ -123,4 +127,19 @@ public class ProfessionServiceImpl extends ServiceImpl<ProfessionMapper, Profess
         return list(queryWrapper);
     }
 
+    @Override
+    public List<SimpleObjVO> queryProfessionInfoByProfessionIds(List<String> professionIdList) {
+        if (CollectionUtils.isEmpty(professionIdList)) {
+            return Lists.newArrayList();
+        }
+        QueryWrapper<Profession> queryWrapper = new QueryWrapper<>();
+        queryWrapper.in(Profession.PROP_ID, professionIdList);
+        List<Profession> professions = list(queryWrapper);
+        return professions.stream().map(profession-> {
+            SimpleObjVO simpleObjVO = new SimpleObjVO();
+            simpleObjVO.setId(profession.getId());
+            simpleObjVO.setName(profession.getName());
+            return simpleObjVO;
+        }).collect(Collectors.toList());
+    }
 }

+ 7 - 3
fm-person/src/main/java/com/persagy/fm/saas/accountrole/model/dto/QuerySaasAccountRoleDTO.java

@@ -8,6 +8,7 @@ import lombok.EqualsAndHashCode;
 
 import javax.validation.constraints.NotNull;
 import java.util.Date;
+import java.util.List;
 
 /**
  * @author lixing
@@ -17,13 +18,16 @@ import java.util.Date;
 @Data
 @ApiModel(value = "查询账号-角色关联信息入参")
 public class QuerySaasAccountRoleDTO extends SaasBaseDTO {
-    @ApiModelProperty(value = "账号ID", required = true)
+    @ApiModelProperty(value = "账号ID")
     private String accountId;
 
-    @ApiModelProperty(value = "角色ID", required = true)
+    @ApiModelProperty(value = "账号ID列表")
+    private List<String> accountIds;
+
+    @ApiModelProperty(value = "角色ID")
     private String roleId;
 
-    @ApiModelProperty(value = "关联类型,0-主岗,1-副岗", required = true)
+    @ApiModelProperty(value = "关联类型,0-主岗,1-副岗")
     private String casType;
 
 }

+ 20 - 0
fm-person/src/main/java/com/persagy/fm/saas/accountrole/model/vo/AccountRoleVO.java

@@ -0,0 +1,20 @@
+package com.persagy.fm.saas.accountrole.model.vo;
+
+import com.persagy.fm.common.model.vo.SimpleObjVO;
+import lombok.Data;
+
+import java.util.List;
+
+/**
+ * 账号角色关联vo类
+ *
+ * @author lixing
+ * @version V1.0 2021/4/1 10:17 上午
+ **/
+@Data
+public class AccountRoleVO {
+    private String roleId;
+    private SimpleObjVO mainDuty;
+    private List<SimpleObjVO> otherDuties;
+    private List<SimpleObjVO> otherRoles;
+}

+ 21 - 0
fm-person/src/main/java/com/persagy/fm/saas/accountrole/service/ISaasAccountRoleService.java

@@ -5,8 +5,10 @@ import com.persagy.fm.saas.accountrole.model.*;
 import com.persagy.fm.saas.accountrole.model.dto.*;
 
 import java.util.List;
+import java.util.Map;
 
 import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.persagy.fm.saas.accountrole.model.vo.AccountRoleVO;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 
@@ -47,4 +49,23 @@ public interface ISaasAccountRoleService {
      */
     List<SaasAccountRole> querySaasAccountRoleList(QuerySaasAccountRoleDTO querySaasAccountRoleDTO);
 
+    /**
+     * 根据账号id列表查询账号-角色关联信息
+     *
+     * @param accountIdList 账号id列表
+     * @return List<SaasAccountRole>
+     * @author lixing
+     * @version V1.0 2021/4/1 9:48 上午
+     */
+    List<SaasAccountRole> querySaasAccountRoleListByAccountIdList(List<String> accountIdList);
+
+    /**
+     * 根据账号id列表查询账号-角色关联信息
+     *
+     * @param accountIdList 账号id列表
+     * @return Map<String, AccountRoleVO> accountId -> AccountRoleVO
+     * @author lixing
+     * @version V1.0 2021/4/1 9:48 上午
+     */
+    Map<String, AccountRoleVO> queryAccountRoleVoMapByAccountIdList(List<String> accountIdList);
 }

+ 90 - 0
fm-person/src/main/java/com/persagy/fm/saas/accountrole/service/impl/SaasAccountRoleServiceImpl.java

@@ -1,18 +1,29 @@
 package com.persagy.fm.saas.accountrole.service.impl;
 
 import com.persagy.fm.common.context.DefaultAppContext;
+import com.persagy.fm.common.model.vo.SimpleObjVO;
 import com.persagy.fm.common.response.FmResponseContent;
 import com.persagy.fm.saas.account.constant.enums.AccountBelongEnum;
 import com.persagy.fm.saas.accountrole.client.SaasAccountRoleClient;
+import com.persagy.fm.saas.accountrole.constant.enums.AccountRoleTypeEnum;
 import com.persagy.fm.saas.accountrole.model.SaasAccountRole;
 import com.persagy.fm.saas.accountrole.model.dto.AddSaasAccountRoleDTO;
 import com.persagy.fm.saas.accountrole.model.dto.DeleteSaasAccountRoleDTO;
 import com.persagy.fm.saas.accountrole.model.dto.QuerySaasAccountRoleDTO;
+import com.persagy.fm.saas.accountrole.model.vo.AccountRoleVO;
 import com.persagy.fm.saas.accountrole.service.ISaasAccountRoleService;
+import com.persagy.fm.saas.role.model.SaasRole;
+import com.persagy.fm.saas.role.service.ISaasRoleService;
+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.HashMap;
 import java.util.List;
+import java.util.Map;
+import java.util.Set;
+import java.util.stream.Collectors;
 
 /**
  * 账号-角色关联信息(SaasAccountRole) service层
@@ -25,6 +36,8 @@ public class SaasAccountRoleServiceImpl implements ISaasAccountRoleService {
 
     @Autowired
     SaasAccountRoleClient saasAccountRoleClient;
+    @Autowired
+    ISaasRoleService saasRoleService;
 
     /**
      * 创建账号-角色关联信息
@@ -79,7 +92,84 @@ public class SaasAccountRoleServiceImpl implements ISaasAccountRoleService {
      */
     @Override
     public List<SaasAccountRole> querySaasAccountRoleList(QuerySaasAccountRoleDTO querySaasAccountRoleDTO) {
+        querySaasAccountRoleDTO.setDefaultValue();
         FmResponseContent<List<SaasAccountRole>> responseContent = saasAccountRoleClient.querySaasAccountRoleList(querySaasAccountRoleDTO);
         return responseContent.getContent();
     }
+
+    @Override
+    public List<SaasAccountRole> querySaasAccountRoleListByAccountIdList(List<String> accountIdList) {
+        QuerySaasAccountRoleDTO querySaasAccountRoleDTO = new QuerySaasAccountRoleDTO();
+        querySaasAccountRoleDTO.setAccountIds(accountIdList);
+        return querySaasAccountRoleList(querySaasAccountRoleDTO);
+    }
+
+    @Override
+    public Map<String, AccountRoleVO> queryAccountRoleVoMapByAccountIdList(List<String> accountIdList) {
+        List<SaasAccountRole> saasAccountRoles = querySaasAccountRoleListByAccountIdList(accountIdList);
+
+        if (CollectionUtils.isEmpty(saasAccountRoles)) {
+            return null;
+        }
+
+        // 查询这些角色的详情
+        Set<String> roleIdSet = saasAccountRoles.stream().map(SaasAccountRole::getRoleId).collect(Collectors.toSet());
+        Map<String, SaasRole> saasRoleMap = saasRoleService.querySaasRoleMapByRoleIdList(Lists.newArrayList(roleIdSet));
+
+        // 将列表转换为map
+        Map<String, AccountRoleVO> result = new HashMap<>(accountIdList.size());
+        for (SaasAccountRole saasAccountRole : saasAccountRoles) {
+            String accountId = saasAccountRole.getAccountId();
+            AccountRoleVO accountRoleVO;
+            if (result.containsKey(accountId)) {
+                accountRoleVO = result.get(accountId);
+            } else {
+                accountRoleVO = new AccountRoleVO();
+            }
+            String roleId = saasAccountRole.getRoleId();
+            String casType = saasAccountRole.getCasType();
+            // 设置账号主岗信息
+            if (AccountRoleTypeEnum.MAIN_DUTY.getType().equals(casType)) {
+                accountRoleVO.setMainDuty(getRoleInfo(saasRoleMap, roleId));
+            }
+            // 设置账号副岗信息
+            if (AccountRoleTypeEnum.OTHER_DUTY.getType().equals(casType)) {
+                List<SimpleObjVO> otherDuties = accountRoleVO.getOtherDuties();
+                if (otherDuties == null) {
+                    otherDuties = Lists.newArrayList();
+                }
+                otherDuties.add(getRoleInfo(saasRoleMap, roleId));
+                accountRoleVO.setOtherDuties(otherDuties);
+            }
+            // 设置账号其他角色信息
+            if (AccountRoleTypeEnum.SYS_ROLE.getType().equals(casType)) {
+                List<SimpleObjVO> otherRoles = accountRoleVO.getOtherRoles();
+                if (otherRoles == null) {
+                    otherRoles = Lists.newArrayList();
+                }
+                otherRoles.add(getRoleInfo(saasRoleMap, roleId));
+                accountRoleVO.setOtherRoles(otherRoles);
+            }
+            result.put(accountId, accountRoleVO);
+        }
+        return result;
+    }
+
+    /**
+     * 获取角色对象信息
+     *
+     * @param saasRoleMap 角色id和角色映射
+     * @param roleId 角色id
+     * @return SimpleObjVO 角色对象信息
+     * @author lixing
+     * @version V1.0 2021/4/1 10:34 上午
+     */
+    private SimpleObjVO getRoleInfo(Map<String, SaasRole> saasRoleMap, String roleId) {
+        SimpleObjVO simpleObjVO = new SimpleObjVO();
+        simpleObjVO.setId(roleId);
+        SaasRole saasRole = saasRoleMap.get(roleId);
+        String roleName = saasRole == null? "": saasRole.getRoleName();
+        simpleObjVO.setName(roleName);
+        return simpleObjVO;
+    }
 }

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

@@ -33,6 +33,9 @@ public class SaasProjectServiceImpl implements ISaasProjectService {
 
     @Override
     public List<ProjectTreeItemVO> queryProjectTree(List<String> projectIds) {
+        if (CollectionUtils.isEmpty(projectIds)) {
+            return Lists.newArrayList();
+        }
         // 查询运维系统区域项目树
         QueryAllowSaasAreaProjectTreeDTO queryAllowSaasAreaProjectTreeDTO = new QueryAllowSaasAreaProjectTreeDTO();
         queryAllowSaasAreaProjectTreeDTO.setDefaultValue();
@@ -63,11 +66,11 @@ public class SaasProjectServiceImpl implements ISaasProjectService {
     private List<ProjectTreeItemVO> convert2ProjectTreeItemList(FmResponseContent<SaasAreaProjectTreeVO> responseItem) {
         SaasAreaProjectTreeVO saasAreaProjectTreeVO = responseItem.getContent();
         if (saasAreaProjectTreeVO == null) {
-            return null;
+            return Lists.newArrayList();
         }
         List<SaasAreaProjectTreeItemVO> areas = saasAreaProjectTreeVO.getAreas();
         if (CollectionUtils.isEmpty(areas)) {
-            return null;
+            return Lists.newArrayList();
         }
         List<ProjectTreeItemVO> result = Lists.newArrayList();
         for (SaasAreaProjectTreeItemVO area : areas) {

+ 16 - 7
fm-person/src/main/java/com/persagy/fm/saas/role/client/SaasRoleClient.java

@@ -6,11 +6,9 @@ import com.persagy.fm.common.response.FmResponseMsg;
 import com.persagy.fm.saas.project.constant.FeignClientNameConstants;
 import com.persagy.fm.saas.role.client.fallback.SaasRoleClientFallbackFactory;
 import com.persagy.fm.saas.role.model.SaasRole;
-import com.persagy.fm.saas.role.model.dto.AddSaasRoleDTO;
 import com.persagy.fm.saas.role.model.dto.DeleteSaasRoleDTO;
 import com.persagy.fm.saas.role.model.dto.PageQuerySaasRoleDTO;
-import com.persagy.fm.saas.role.model.dto.UpdateSaasRoleDTO;
-import com.persagy.fm.saas.role.model.vo.SaasRoleListItemVO;
+import com.persagy.fm.saas.role.model.dto.QuerySaasRoleDTO;
 import org.springframework.cloud.openfeign.FeignClient;
 import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.bind.annotation.RequestBody;
@@ -27,9 +25,9 @@ import java.util.List;
         configuration = FeignConfig.class)
 public interface SaasRoleClient {
     /**
-     * 查询账号列表
+     * 分页查询账号列表
      *
-     * @param pageQuerySaasRoleDTO 查询条件
+     * @param pageQuerySaasRoleDTO 分页查询条件
      * @return 角色列表
      * @author lixing
      * @version V1.0 2021/3/23 11:57 上午
@@ -38,6 +36,17 @@ public interface SaasRoleClient {
     FmResponseContent<List<SaasRole>> queryRolePageList(@RequestBody PageQuerySaasRoleDTO pageQuerySaasRoleDTO);
 
     /**
+     * 查询账号列表
+     *
+     * @param querySaasRoleDTO 查询入参
+     * @return 角色列表
+     * @author lixing
+     * @version V1.0 2021/4/1 10:05 上午
+     */
+    @PostMapping("/role/querySaasRoleList")
+    FmResponseContent<List<SaasRole>> queryRoleList(@RequestBody QuerySaasRoleDTO querySaasRoleDTO);
+
+    /**
      * 创建角色
      *
      * @param saasRole 创建角色入参
@@ -52,8 +61,8 @@ public interface SaasRoleClient {
      * 更新角色
      *
      * @param saasRole 更新角色入参
-     * @author lixing
      * @return FmResponseMsg
+     * @author lixing
      * @version V1.0 2021/3/23 11:57 上午
      */
     @PostMapping("/role/updateSaasRole")
@@ -63,8 +72,8 @@ public interface SaasRoleClient {
      * 删除角色
      *
      * @param deleteSaasRoleDTO 删除角色入参
-     * @author lixing
      * @return FmResponseMsg
+     * @author lixing
      * @version V1.0 2021/3/23 11:57 上午
      */
     @PostMapping("/role/deleteSaasRole")

+ 0 - 1
fm-person/src/main/java/com/persagy/fm/saas/role/controller/SaasRoleController.java

@@ -78,7 +78,6 @@ public class SaasRoleController {
     @PostMapping("/query")
     public CommonResult<PageList<SaasRoleListItemVO>> querySaasRole(
             @Valid @RequestBody PageQuerySaasRoleDTO pageQuerySaasRoleDTO) {
-        pageQuerySaasRoleDTO.setDefaultValue();
         IPage<SaasRole> pagedList = saasRoleService.pageQuerySaasRole(pageQuerySaasRoleDTO);
         IPage<SaasRoleListItemVO> pagedResultList = pagedList.convert(item -> {
             try {

+ 31 - 0
fm-person/src/main/java/com/persagy/fm/saas/role/model/dto/QuerySaasRoleDTO.java

@@ -0,0 +1,31 @@
+package com.persagy.fm.saas.role.model.dto;
+
+import com.persagy.fm.saas.common.model.dto.SaasBaseDTO;
+import com.persagy.fm.saas.common.model.dto.SaasBasePageDTO;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import java.util.List;
+
+/**
+ * @author lixing
+ * @version V1.0 2021-03-22 19:04:24
+ */
+@EqualsAndHashCode(callSuper = true)
+@Data
+@ApiModel(value = "查询入参")
+public class QuerySaasRoleDTO extends SaasBaseDTO {
+    @ApiModelProperty(value = "角色id")
+    private String id;
+
+    @ApiModelProperty(value = "角色id列表")
+    private List<String> roleIds;
+
+    @ApiModelProperty(value = "角色名称")
+    private String roleName;
+
+    @ApiModelProperty(value = "角色类型", required = true)
+    private String roleType;
+}

+ 30 - 9
fm-person/src/main/java/com/persagy/fm/saas/role/service/ISaasRoleService.java

@@ -4,6 +4,7 @@ import com.persagy.fm.saas.role.model.*;
 import com.persagy.fm.saas.role.model.dto.*;
 
 import java.util.List;
+import java.util.Map;
 
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import io.swagger.annotations.Api;
@@ -55,15 +56,35 @@ public interface ISaasRoleService {
      */
     void deleteSaasRole(String id);
 
-//    /**
-//     * 查询
-//     *
-//     * @param querySaasRoleDTO queryDTO
-//     * @return List<SaasRole>
-//     * @author lixing
-//     * @version V1.0 2021-03-22 19:04:15
-//     */
-//    List<SaasRole> querySaasRoleList(QuerySaasRoleDTO querySaasRoleDTO);
+    /**
+     * 查询
+     *
+     * @param querySaasRoleDTO queryDTO
+     * @return List<SaasRole>
+     * @author lixing
+     * @version V1.0 2021-03-22 19:04:15
+     */
+    List<SaasRole> querySaasRoleList(QuerySaasRoleDTO querySaasRoleDTO);
+
+    /**
+     * 根据角色id列表查询
+     *
+     * @param roleIdList 角色id列表
+     * @return List<SaasRole>
+     * @author lixing
+     * @version V1.0 2021-03-22 19:04:15
+     */
+    List<SaasRole> querySaasRoleListByRoleIdList(List<String> roleIdList);
+
+    /**
+     * 根据角色id列表查询
+     *
+     * @param roleIdList 角色id列表
+     * @return Map<String, SaasRole> roleId -> saasRole
+     * @author lixing
+     * @version V1.0 2021-03-22 19:04:15
+     */
+    Map<String, SaasRole> querySaasRoleMapByRoleIdList(List<String> roleIdList);
 
     /**
      * 分页查询

+ 36 - 58
fm-person/src/main/java/com/persagy/fm/saas/role/service/impl/SaasRoleServiceImpl.java

@@ -2,6 +2,7 @@ package com.persagy.fm.saas.role.service.impl;
 
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.google.common.collect.Maps;
 import com.persagy.fm.common.context.AppContext;
 import com.persagy.fm.common.context.DefaultAppContext;
 import com.persagy.fm.common.response.FmResponseContent;
@@ -9,15 +10,15 @@ import com.persagy.fm.saas.account.constant.enums.AccountBelongEnum;
 import com.persagy.fm.saas.role.client.SaasRoleClient;
 import com.persagy.fm.saas.role.model.ConvertSaasRoleTool;
 import com.persagy.fm.saas.role.model.SaasRole;
-import com.persagy.fm.saas.role.model.dto.AddSaasRoleDTO;
-import com.persagy.fm.saas.role.model.dto.DeleteSaasRoleDTO;
-import com.persagy.fm.saas.role.model.dto.PageQuerySaasRoleDTO;
-import com.persagy.fm.saas.role.model.dto.UpdateSaasRoleDTO;
+import com.persagy.fm.saas.role.model.dto.*;
 import com.persagy.fm.saas.role.service.ISaasRoleService;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
+import org.springframework.util.CollectionUtils;
 
 import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
 
 /**
  * (SaasRole) service层
@@ -90,6 +91,7 @@ public class SaasRoleServiceImpl implements ISaasRoleService {
      */
     private SaasRole getSaasRole(String roleId) {
         PageQuerySaasRoleDTO pageQuerySaasRoleDTO = new PageQuerySaasRoleDTO();
+        pageQuerySaasRoleDTO.setDefaultValue();
         pageQuerySaasRoleDTO.setId(roleId);
         FmResponseContent<List<SaasRole>> listFmResponseContent = saasRoleClient.queryRolePageList(pageQuerySaasRoleDTO);
         if (listFmResponseContent.getCount() <= 0) {
@@ -137,60 +139,6 @@ public class SaasRoleServiceImpl implements ISaasRoleService {
         saasRoleClient.deleteSaasRole(deleteSaasRoleDTO);
     }
 
-//    /**
-//     * 查询
-//     *
-//     * @return List<SaasRole>
-//     * @author lixing
-//     * @version V1.0 2021-03-22 19:04:17
-//     */
-//    @Override
-//    public List<SaasRole> querySaasRoleList(QuerySaasRoleDTO querySaasRoleDTO) {
-//        QueryWrapper<SaasRole> queryWrapper = new QueryWrapper<>();
-//        // 默认按创建时间倒序排序
-//
-//        if (querySaasRoleDTO != null) {
-//
-//            // todo 需判断使用like还是eq
-//            if (StringUtils.isNotEmpty(querySaasRoleDTO.getRoleCode())) {
-//                queryWrapper.like(SaasRole.PROP_ROLE_CODE, querySaasRoleDTO.getRoleCode());
-//            }
-//
-//            // todo 需判断使用like还是eq
-//            if (StringUtils.isNotEmpty(querySaasRoleDTO.getRoleName())) {
-//                queryWrapper.like(SaasRole.PROP_ROLE_NAME, querySaasRoleDTO.getRoleName());
-//            }
-//
-//            // todo 需判断使用like还是eq
-//            if (StringUtils.isNotEmpty(querySaasRoleDTO.getRoleType())) {
-//                queryWrapper.like(SaasRole.PROP_ROLE_TYPE, querySaasRoleDTO.getRoleType());
-//            }
-//
-//            // todo 需判断使用like还是eq
-//            if (StringUtils.isNotEmpty(querySaasRoleDTO.getAccountBelong())) {
-//                queryWrapper.like(SaasRole.PROP_ACCOUNT_BELONG, querySaasRoleDTO.getAccountBelong());
-//            }
-//
-//            // todo 需判断使用like还是eq
-//            if (StringUtils.isNotEmpty(querySaasRoleDTO.getAccountId())) {
-//                queryWrapper.like(SaasRole.PROP_ACCOUNT_ID, querySaasRoleDTO.getAccountId());
-//            }
-//
-//            // todo 需判断使用like还是eq
-//            if (StringUtils.isNotEmpty(querySaasRoleDTO.getAppId())) {
-//                queryWrapper.like(SaasRole.PROP_APP_ID, querySaasRoleDTO.getAppId());
-//            }
-//
-//            // todo 需判断使用like还是eq
-//            if (StringUtils.isNotEmpty(querySaasRoleDTO.getRemark())) {
-//                queryWrapper.like(SaasRole.PROP_REMARK, querySaasRoleDTO.getRemark());
-//            }
-//
-//        }
-//
-//        return null;
-//    }
-
     /**
      * 分页查询
      *
@@ -201,6 +149,7 @@ public class SaasRoleServiceImpl implements ISaasRoleService {
     @Override
     public IPage<SaasRole> pageQuerySaasRole(PageQuerySaasRoleDTO pageQuerySaasRoleDTO) {
         // 调用运维平台分页查询接口
+        pageQuerySaasRoleDTO.setDefaultValue();
         FmResponseContent<List<SaasRole>> saasResponse = saasRoleClient.queryRolePageList(pageQuerySaasRoleDTO);
         Integer count = saasResponse.getCount();
         List<SaasRole> content = saasResponse.getContent();
@@ -211,4 +160,33 @@ public class SaasRoleServiceImpl implements ISaasRoleService {
         result.setTotal(Long.parseLong(count.toString()));
         return result;
     }
+
+    @Override
+    public List<SaasRole> querySaasRoleList(QuerySaasRoleDTO querySaasRoleDTO) {
+        querySaasRoleDTO.setDefaultValue();
+        FmResponseContent<List<SaasRole>> responseContent = saasRoleClient.queryRoleList(querySaasRoleDTO);
+        return responseContent.getContent();
+    }
+
+    @Override
+    public List<SaasRole> querySaasRoleListByRoleIdList(List<String> roleIdList) {
+        QuerySaasRoleDTO querySaasRoleDTO = new QuerySaasRoleDTO();
+        querySaasRoleDTO.setRoleIds(roleIdList);
+        return querySaasRoleList(querySaasRoleDTO);
+    }
+
+    @Override
+    public Map<String, SaasRole> querySaasRoleMapByRoleIdList(List<String> roleIdList) {
+        List<SaasRole> saasRoles = querySaasRoleListByRoleIdList(roleIdList);
+        if (CollectionUtils.isEmpty(saasRoles)) {
+            return Maps.newHashMap();
+        }
+        return saasRoles.stream().collect(
+                Collectors.toMap(
+                        SaasRole::getId,
+                        saasRole -> saasRole,
+                        (k1, k2) -> k1
+                )
+        );
+    }
 }

+ 2 - 1
fm-person/src/main/java/com/persagy/fm/workresume/model/WorkResume.java

@@ -40,7 +40,8 @@ public class WorkResume extends AuditableEntity<WorkResume> implements Serializa
 
     public static String PROP_PERSON_ID = "person_id";
     public static String PROP_DEP_ID = "dep_id";
-    public static String PROP_STATE = "state";
+    public static String PROP_HIRED_STATE = "hired_state";
+    public static String PROP_ENABLE_STATE = "enable_state";
     public static String PROP_HIRED_DATE = "hired_date";
     public static String PROP_DEPARTURE_DATE = "departure_date";
 

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

@@ -19,8 +19,11 @@ public class QueryWorkResumeDTO {
     @ApiModelProperty(value = "部门主键", required = true)
     private String depId;
 
-    @ApiModelProperty(value = "状态", required = true)
-    private String state;
+    @ApiModelProperty(value = "在职状态", required = true)
+    private String hiredState;
+
+    @ApiModelProperty(value = "启用状态", required = true)
+    private String enableState;
 
     @ApiModelProperty(value = "入职时间", required = true)
     private Date hiredDate;

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

@@ -77,14 +77,15 @@ public interface IWorkResumeService {
     List<WorkResume> queryWorkResumeListByPersonIdList(List<String> personIdList);
 
     /**
-     * 分页查询工作信息
+     * 查询一组人员的工作信息
      *
-     * @param pageQueryWorkResumeDTO pageQueryDTO
-     * @return IPage<WorkResume>
+     * @param personIdList 一组人员id
+     * @param workResumeState 工作信息状态
+     * @return List<WorkResume>
      * @author lixing
      * @version V1.0 2021-03-15 17:20:06
      */
-    IPage<WorkResume> pageQueryWorkResume(PageQueryWorkResumeDTO pageQueryWorkResumeDTO);
+    List<WorkResume> queryWorkResumeListByPersonIdList(List<String> personIdList, String workResumeState);
 
     /**
      * 批量更新工作信息

+ 18 - 58
fm-person/src/main/java/com/persagy/fm/workresume/service/impl/WorkResumeServiceImpl.java

@@ -1,25 +1,19 @@
 package com.persagy.fm.workresume.service.impl;
 
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
-import com.baomidou.mybatisplus.core.metadata.IPage;
-import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-import com.google.common.base.CaseFormat;
 import com.persagy.fm.common.constant.enums.ValidEnum;
 import com.persagy.fm.common.context.DefaultAppContext;
-import com.persagy.fm.common.model.dto.Sort;
 import com.persagy.fm.workresume.constant.enums.WorkResumeEnableStateEnum;
 import com.persagy.fm.workresume.constant.enums.WorkResumeHiredStateEnum;
 import com.persagy.fm.workresume.dao.WorkResumeMapper;
 import com.persagy.fm.workresume.model.ConvertWorkResumeTool;
 import com.persagy.fm.workresume.model.WorkResume;
 import com.persagy.fm.workresume.model.dto.AddWorkResumeDTO;
-import com.persagy.fm.workresume.model.dto.PageQueryWorkResumeDTO;
 import com.persagy.fm.workresume.model.dto.QueryWorkResumeDTO;
 import com.persagy.fm.workresume.model.dto.UpdateWorkResumeDTO;
 import com.persagy.fm.workresume.service.IWorkResumeService;
 import org.springframework.stereotype.Service;
-import org.springframework.util.CollectionUtils;
 import org.springframework.util.StringUtils;
 
 import java.util.Date;
@@ -164,8 +158,12 @@ public class WorkResumeServiceImpl extends ServiceImpl<WorkResumeMapper, WorkRes
                 queryWrapper.eq(WorkResume.PROP_DEP_ID, queryWorkResumeDTO.getDepId());
             }
 
-            if (!StringUtils.isEmpty(queryWorkResumeDTO.getState())) {
-                queryWrapper.eq(WorkResume.PROP_STATE, queryWorkResumeDTO.getState());
+            if (!StringUtils.isEmpty(queryWorkResumeDTO.getHiredState())) {
+                queryWrapper.eq(WorkResume.PROP_HIRED_STATE, queryWorkResumeDTO.getHiredState());
+            }
+
+            if (!StringUtils.isEmpty(queryWorkResumeDTO.getEnableState())) {
+                queryWrapper.eq(WorkResume.PROP_ENABLE_STATE, queryWorkResumeDTO.getEnableState());
             }
 
             if (queryWorkResumeDTO.getHiredDate() != null) {
@@ -181,55 +179,6 @@ public class WorkResumeServiceImpl extends ServiceImpl<WorkResumeMapper, WorkRes
         return list(queryWrapper);
     }
 
-    /**
-     * 分页查询工作信息
-     *
-     * @return IPage<WorkResume>
-     * @author lixing
-     * @version V1.0 2021-03-15 17:20:06
-     */
-    @Override
-    public IPage<WorkResume> pageQueryWorkResume(PageQueryWorkResumeDTO pageQueryWorkResumeDTO) {
-        QueryWrapper<WorkResume> queryWrapper = new QueryWrapper<>();
-        queryWrapper.eq(WorkResume.PROP_VALID, ValidEnum.TRUE.getType());
-        // 这里认为pageQueryDTO是经过校验的,肯定包含分页信息
-        IPage<WorkResume> pageParam = new Page<>(pageQueryWorkResumeDTO.getPage(), pageQueryWorkResumeDTO.getSize(), true);
-        // 排序信息
-        if (CollectionUtils.isEmpty(pageQueryWorkResumeDTO.getOrders())) {
-            // 默认按创建时间倒序排序
-            queryWrapper.orderBy(true, false, WorkResume.PROP_CREATIONTIME);
-        } else {
-            List<Sort> orders = pageQueryWorkResumeDTO.getOrders();
-            for (Sort sort : orders) {
-                // 将驼峰转换为下划线格式
-                sort.setColumn(CaseFormat.LOWER_CAMEL.to(CaseFormat.LOWER_UNDERSCORE, sort.getColumn()));
-                queryWrapper.orderBy(true, sort.isAsc(), sort.getColumn());
-            }
-        }
-
-        if (pageQueryWorkResumeDTO.getPersonId() != null) {
-            queryWrapper.eq(WorkResume.PROP_PERSON_ID, pageQueryWorkResumeDTO.getPersonId());
-        }
-
-        if (pageQueryWorkResumeDTO.getDepId() != null) {
-            queryWrapper.eq(WorkResume.PROP_DEP_ID, pageQueryWorkResumeDTO.getDepId());
-        }
-
-        if (pageQueryWorkResumeDTO.getState() != null) {
-            queryWrapper.eq(WorkResume.PROP_STATE, pageQueryWorkResumeDTO.getState());
-        }
-
-        if (pageQueryWorkResumeDTO.getHiredDate() != null) {
-            queryWrapper.eq(WorkResume.PROP_HIRED_DATE, pageQueryWorkResumeDTO.getHiredDate());
-        }
-
-        if (pageQueryWorkResumeDTO.getDepartureDate() != null) {
-            queryWrapper.eq(WorkResume.PROP_DEPARTURE_DATE, pageQueryWorkResumeDTO.getDepartureDate());
-        }
-
-        return getBaseMapper().selectPage(pageParam, queryWrapper);
-    }
-
     @Override
     public void batchUpdateWorkResume(List<WorkResume> workResumes) {
         updateBatchById(workResumes);
@@ -237,12 +186,22 @@ public class WorkResumeServiceImpl extends ServiceImpl<WorkResumeMapper, WorkRes
 
     @Override
     public List<WorkResume> queryWorkResumeListByPersonIdList(List<String> personIdList) {
+        // TODO: 2021/4/1  
         QueryWrapper<WorkResume> workResumeQueryWrapper = new QueryWrapper<>();
         workResumeQueryWrapper.in(WorkResume.PROP_PERSON_ID, personIdList);
         return list(workResumeQueryWrapper);
     }
 
     @Override
+    public List<WorkResume> queryWorkResumeListByPersonIdList(List<String> personIdList, String workResumeState) {
+        // TODO: 2021/4/1  
+        QueryWrapper<WorkResume> workResumeQueryWrapper = new QueryWrapper<>();
+        workResumeQueryWrapper.in(WorkResume.PROP_PERSON_ID, personIdList);
+        workResumeQueryWrapper.eq(WorkResume.PROP_HIRED_STATE, workResumeState);
+        return list(workResumeQueryWrapper);
+    }
+
+    @Override
     public void changeWorkResumeHiredStateByPersonId(String personId, String depId, String workResumeHiredState) {
         // 校验更新人员工作信息在职状态入参
         if (StringUtils.isEmpty(personId)) {
@@ -261,7 +220,6 @@ public class WorkResumeServiceImpl extends ServiceImpl<WorkResumeMapper, WorkRes
         updateBatchById(workResumes);
     }
 
-
     @Override
     public void changeWorkResumeEnableStateByPersonId(String personId, String depId, String workResumeEnableState) {
         // 校验更新人员工作信息启用状态入参
@@ -277,4 +235,6 @@ public class WorkResumeServiceImpl extends ServiceImpl<WorkResumeMapper, WorkRes
         workResumes.forEach(workResume -> workResume.setEnableState(workResumeEnableState));
         updateBatchById(workResumes);
     }
+
+
 }

+ 15 - 0
fm-person/src/main/resources/mapper/PersonMapper.xml

@@ -60,5 +60,20 @@
             and p.name = #{name}
         </if>
     </select>
+
+    <select id="queryPersonNameList" parameterType="com.persagy.fm.person.model.dto.NameQuickSearchDTO"
+            resultType="com.persagy.fm.person.model.Person">
+        select distinct p.name
+        from person p,
+        work_resume w
+        where p.id = w.person_id
+        <if test="depId != null">
+            and w.dep_id = #{depId}
+        </if>
+        <if test="name != null">
+            and p.name like '%#{name}%'
+        </if>
+        order by p.name_pinyin
+    </select>
 </mapper>