lixing 4 vuotta sitten
vanhempi
commit
ae2dc9d841

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

@@ -91,12 +91,20 @@ public class PersonController {
 
     @ApiOperation(value = "人员列表, 分页查询")
     @PostMapping("/query")
-    public CommonResult<PageList<ResponsePersonListItemVO>> queryPerson(
+    public CommonResult<PageList<ResponsePersonListItemVO>> pageQueryPerson(
             @Valid @RequestBody PageQueryPersonDTO pageQueryPersonDTO) {
         IPage<ResponsePersonListItemVO> pagedList = personService.pageQueryPerson(pageQueryPersonDTO);
         return ResultHelper.multi(pagedList);
     }
 
+    @ApiOperation(value = "人员列表, 分页查询")
+    @PostMapping("/queryByNameOrUsername")
+    public CommonResult<PageList<ResponsePersonListItemVO>> pageQueryByNameOrUserName(
+            @Valid @RequestBody PageQueryPersonDTO pageQueryPersonDTO) {
+        IPage<ResponsePersonListItemVO> pagedList = personService.pageQueryByNameOrUserName(pageQueryPersonDTO);
+        return ResultHelper.multi(pagedList);
+    }
+
 //    @ApiOperation(value = "重置密码")
 //    @PostMapping("/password/reset")
 //    public CommonResult resetPassword(

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

@@ -39,6 +39,26 @@ public interface PersonMapper extends BaseMapper<Person> {
     int queryCount(PageQueryPersonDTO pageQueryPersonDTO);
 
     /**
+     * 根据人员姓名或用户名查询人员列表
+     *
+     * @param pageQueryPersonDTO 分页查询条件
+     * @return 人员列表
+     * @author lixing
+     * @version V1.0 2021/4/14 5:53 下午
+     */
+    List<Person> queryPersonListByNameOrUserName(PageQueryPersonDTO pageQueryPersonDTO);
+
+    /**
+     * 根据人员姓名或用户名查询人员数量
+     *
+     * @param pageQueryPersonDTO 分页查询条件
+     * @return 人员列表
+     * @author lixing
+     * @version V1.0 2021/4/14 5:53 下午
+     */
+    int queryCountByNameOrUserName(PageQueryPersonDTO pageQueryPersonDTO);
+
+    /**
      * 快速查询人员姓名
      *
      * @param nameQuickSearchDTO 快速查询人员姓名入参

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

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

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

@@ -255,4 +255,15 @@ public interface IPersonService {
      * @version V1.0 2021/4/11 9:50 下午
      */
     List<Person> queryByProfessionId(String professionId);
+
+    /**
+     * 根据名称或账号查询
+     *
+     * @param pageQueryPersonDTO 查询参数
+     * @return 分页列表
+     * @exception
+     * @author lixing
+     * @version V1.0 2021/4/14 4:32 下午
+     */
+    IPage<ResponsePersonListItemVO> pageQueryByNameOrUserName(PageQueryPersonDTO pageQueryPersonDTO);
 }

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

@@ -742,6 +742,19 @@ public class PersonServiceImpl extends ServiceImpl<PersonMapper, Person>
         List<Person> people = personMapper.queryPersonList(pageQueryPersonDTO);
         int total = personMapper.queryCount(pageQueryPersonDTO);
 
+        return packagePageResult(people, total);
+    }
+
+    /**
+     * 组装分页查询结果
+     *
+     * @param people 人员列表(单页)
+     * @param total 人员总数量
+     * @return 分页结果
+     * @author lixing
+     * @version V1.0 2021/4/14 5:51 下午
+     */
+    private IPage<ResponsePersonListItemVO> packagePageResult(List<Person> people, int total) {
         List<String> accountIds = people.stream().map(Person::getAccountId).collect(Collectors.toList());
         Map<String, AccountRoleVO> accountRoleVoMap = saasAccountRoleService.
                 queryAccountRoleVoMapByAccountIdList(accountIds);
@@ -1033,7 +1046,7 @@ public class PersonServiceImpl extends ServiceImpl<PersonMapper, Person>
      * @author lixing
      * @version V1.0 2021/4/1 6:00 下午
      */
-    private List<DepSimpleObjVO> getDepSimpleObjVoList(List<WorkResume> workResumes) {
+    public List<DepSimpleObjVO> getDepSimpleObjVoList(List<WorkResume> workResumes) {
         if (CollectionUtils.isEmpty(workResumes)) {
             return Lists.newArrayList();
         }
@@ -1105,4 +1118,12 @@ public class PersonServiceImpl extends ServiceImpl<PersonMapper, Person>
                 eq(Person::getValid, ValidEnum.TRUE.getType());
         return list(personLambdaQueryWrapper);
     }
+
+    @Override
+    public IPage<ResponsePersonListItemVO> pageQueryByNameOrUserName(PageQueryPersonDTO pageQueryPersonDTO) {
+        List<Person> people = personMapper.queryPersonListByNameOrUserName(pageQueryPersonDTO);
+        int total = personMapper.queryCountByNameOrUserName(pageQueryPersonDTO);
+
+        return packagePageResult(people, total);
+    }
 }

+ 10 - 0
fm-person/src/main/java/com/persagy/fm/person/service/impl/PersonServiceTool.java

@@ -0,0 +1,10 @@
+package com.persagy.fm.person.service.impl;
+
+/**
+ * 人员服务层工具
+ *
+ * @author lixing
+ * @version V1.0 2021/4/14 5:21 下午
+ **/
+public class PersonServiceTool {
+}

+ 2 - 1
fm-person/src/main/java/com/persagy/fm/saas/role/constant/enums/RoleTypeEnum.java

@@ -16,7 +16,8 @@ public enum RoleTypeEnum {
      * 账号角色关联类型
      */
     SYS_ROLE("0", "系统角色"),
-    BUSINESS("1", "业务角色");
+    BUSINESS("1", "业务角色"),
+    MANAGER("2", "集团管理员");
 
     @Setter
     @Getter

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

@@ -10,6 +10,7 @@ import java.util.List;
 import com.persagy.fm.common.model.dto.PageDTO;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
+import org.assertj.core.util.Lists;
 
 /**
  * @author lixing
@@ -36,4 +37,8 @@ public class PageQuerySaasRoleDTO extends SaasBasePageDTO {
 
     @ApiModelProperty(value = "是否统计菜单数量")
     private Boolean countMenu;
+
+    public List<String> getRoleIds() {
+        return roleIds == null? Lists.newArrayList() : roleIds;
+    }
 }

+ 3 - 0
fm-person/src/main/java/com/persagy/fm/saas/role/model/vo/SaasRoleListItemVO.java

@@ -22,6 +22,9 @@ public class SaasRoleListItemVO {
     @ApiModelProperty("角色名称")
     private String roleName;
 
+    @ApiModelProperty(value = "角色类型", notes="com.persagy.fm.saas.role.constant.enums.RoleTypeEnum")
+    private String roleType;
+
     @ApiModelProperty("关联的权限数量")
     private Integer relatedFunCount;
 }

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

@@ -11,6 +11,7 @@ import com.persagy.fm.saas.accountrole.model.SaasAccountRole;
 import com.persagy.fm.saas.accountrole.model.dto.QuerySaasAccountRoleDTO;
 import com.persagy.fm.saas.accountrole.service.ISaasAccountRoleService;
 import com.persagy.fm.saas.role.client.SaasRoleClient;
+import com.persagy.fm.saas.role.constant.enums.RoleTypeEnum;
 import com.persagy.fm.saas.role.model.ConvertSaasRoleTool;
 import com.persagy.fm.saas.role.model.SaasRole;
 import com.persagy.fm.saas.role.model.dto.*;
@@ -126,6 +127,10 @@ public class SaasRoleServiceImpl implements ISaasRoleService {
             throw new IllegalArgumentException("删除SaasRole时发生异常,找不到要删除的数据,id:" + id);
         }
 
+        if (RoleTypeEnum.MANAGER.getType().equals(saasRole.getRoleType())) {
+            throw new IllegalArgumentException("集团管理员角色不可删除");
+        }
+
         return saasRole;
     }
 

+ 40 - 3
fm-person/src/main/resources/mapper/PersonMapper.xml

@@ -42,12 +42,49 @@
         </if>
     </sql>
 
-    <select id="queryPersonList" parameterType="com.persagy.fm.person.model.dto.PageQueryPersonDTO"
-            resultType="com.persagy.fm.person.model.Person">
+    <sql id="queryPersonByNameOrUsernameExpression">
+        where p.id = w.person_id and p.valid = 1 and w.valid = 1
+        <if test="depId != null and depId != ''">
+            and w.dep_id = #{depId}
+        </if>
+        <if test="hiredState != null and hiredState != '' or 0 == hiredState">
+            and w.hired_state = #{hiredState}
+        </if>
+        <if test="enableState != null and enableState != '' or 0 == enableState">
+            and w.enable_state = #{enableState}
+        </if>
+        <if test="name != null and name != ''">
+            and (p.name like concat("%", #{name}, "%") or p.username like concat("%", #{name}, "%"))
+        </if>
+    </sql>
+
+    <sql id="selectPersonInfo">
         select p.id as id, p.name as name, p.profession as profession, p.account_id as account_id, p.person_type as
-        person_type, p.username as username, w.is_leader as is_leader
+                       person_type, p.username as username, w.is_leader as is_leader
+        from person p,
+             work_resume w
+    </sql>
+
+    <select id="queryPersonListByNameOrUserName" parameterType="com.persagy.fm.person.model.dto.PageQueryPersonDTO"
+            resultType="com.persagy.fm.person.model.Person">
+        <include refid="selectPersonInfo"/>
+        <include refid="queryPersonByNameOrUsernameExpression"/>
+        order by w.is_leader desc, p.name_pinyin
+        limit #{startIndex}, #{size}
+    </select>
+
+    <select id="queryCountByNameOrUserName" parameterType="com.persagy.fm.person.model.dto.PageQueryPersonDTO"
+            resultType="int">
+        select count(*) total
         from person p,
         work_resume w
+        <include refid="queryPersonByNameOrUsernameExpression"/>
+    </select>
+
+
+    <select id="queryPersonList" parameterType="com.persagy.fm.person.model.dto.PageQueryPersonDTO"
+            resultType="com.persagy.fm.person.model.Person">
+        <include refid="selectPersonInfo"/>
         <include refid="queryPersonWhereExpression"/>
         order by w.is_leader desc, p.name_pinyin
         limit #{startIndex}, #{size}