lixing hace 4 años
padre
commit
8ee7867f56
Se han modificado 16 ficheros con 129 adiciones y 49 borrados
  1. 0 2
      fm-person/src/main/java/com/persagy/fm/department/jms/handler/GroupMsgHandler.java
  2. 7 2
      fm-person/src/main/java/com/persagy/fm/department/service/impl/DepartmentServiceImpl.java
  3. 5 2
      fm-person/src/main/java/com/persagy/fm/person/model/dto/PageQueryPersonDTO.java
  4. 4 2
      fm-person/src/main/java/com/persagy/fm/person/model/dto/UpsertPersonDTO.java
  5. 7 0
      fm-person/src/main/java/com/persagy/fm/person/model/vo/ResponsePersonListItemVO.java
  6. 24 12
      fm-person/src/main/java/com/persagy/fm/person/service/impl/PersonServiceImpl.java
  7. 4 0
      fm-person/src/main/java/com/persagy/fm/saas/accountproject/model/dto/AddSaasAccountProjectDTO.java
  8. 16 0
      fm-person/src/main/java/com/persagy/fm/saas/accountproject/model/dto/ResetAccountProjectItem.java
  9. 1 1
      fm-person/src/main/java/com/persagy/fm/saas/accountproject/model/dto/ResetSaasAccountProjectDTO.java
  10. 3 2
      fm-person/src/main/java/com/persagy/fm/saas/accountproject/service/ISaasAccountProjectService.java
  11. 17 6
      fm-person/src/main/java/com/persagy/fm/saas/accountproject/service/impl/SaasAccountProjectServiceImpl.java
  12. 15 0
      fm-person/src/main/java/com/persagy/fm/saas/project/model/dto/UpsertSaasProjectDTO.java
  13. 1 0
      fm-person/src/main/java/com/persagy/fm/saas/project/model/vo/ProjectTreeItemVO.java
  14. 2 0
      fm-person/src/main/java/com/persagy/fm/saas/project/service/impl/SaasProjectServiceImpl.java
  15. 3 0
      fm-person/src/main/java/com/persagy/fm/saas/role/model/SaasRole.java
  16. 20 20
      fm-person/src/main/resources/mapper/PersonMapper.xml

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

@@ -134,8 +134,6 @@ public class GroupMsgHandler{
             } else {
                 log.error("集团下已包含类型为集团的部门,拒绝重复创建");
             }
-
-
         }
     }
 }

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

@@ -193,6 +193,11 @@ public class DepartmentServiceImpl extends ServiceImpl<DepartmentMapper, Departm
         if (ValidEnum.FALSE.getType().equals(department.getValid())) {
             throw new IllegalArgumentException("部门已被删除");
         }
+        if (DepTypeEnum.GROUP.getType().equals(department.getType()) &&
+                updateDepartmentDTO.getType() != null &&
+                !DepTypeEnum.GROUP.getType().equals(updateDepartmentDTO.getType())) {
+            throw new IllegalArgumentException("部门类型不可编辑");
+        }
         // 部门名称或者父部门id发生变化,需要更新子部门的全路径
         String fullPathAfterChange = getFullPathAfterChange(updateDepartmentDTO, department);
         updateSonDepsFullPath(department.getFullPath(), fullPathAfterChange);
@@ -224,7 +229,7 @@ public class DepartmentServiceImpl extends ServiceImpl<DepartmentMapper, Departm
      * 获取更新后的部门全路径
      *
      * @param updateDepartmentDTO 更新人员入参
-     * @param department 更新前的部门对象
+     * @param department          更新前的部门对象
      * @return 更新后的部门全路径
      * @author lixing
      * @version V1.0 2021/4/11 8:35 下午
@@ -399,7 +404,7 @@ public class DepartmentServiceImpl extends ServiceImpl<DepartmentMapper, Departm
     /**
      * 根据名称和父部门id精确查询
      *
-     * @param name 部门名称
+     * @param name     部门名称
      * @param parentId 父部门id
      * @return 满足条件的部门列表
      * @author lixing

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

@@ -18,8 +18,11 @@ public class PageQueryPersonDTO extends PageDTO {
     @ApiModelProperty(value = "部门id")
     private String depId;
 
-    @ApiModelProperty(value = "在职状态")
-    private Integer state;
+    @ApiModelProperty(value = "在职状态", notes = "com.persagy.fm.workresume.constant.enums.WorkResumeHiredStateEnum")
+    private Integer hiredState;
+
+    @ApiModelProperty(value = "禁用状态", notes = "com.persagy.fm.workresume.constant.enums.WorkResumeEnableStateEnum")
+    private Integer enableState;
 
     @ApiModelProperty(value = "姓名")
     private String name;

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

@@ -1,6 +1,8 @@
 package com.persagy.fm.person.model.dto;
 
 import com.persagy.fm.common.constant.RegexConstants;
+import com.persagy.fm.saas.accountproject.model.dto.ResetAccountProjectItem;
+import com.persagy.fm.saas.project.model.dto.UpsertSaasProjectDTO;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 import net.minidev.json.annotate.JsonIgnore;
@@ -67,8 +69,8 @@ public class UpsertPersonDTO {
     private List<String> depIds;
 
     @NotEmpty(message = "项目权限不能为空")
-    @ApiModelProperty(value = "关联的项目id", required = true)
-    private List<String> projectIds;
+    @ApiModelProperty(value = "关联的项目", required = true)
+    private List<UpsertSaasProjectDTO> projects;
 
     @ApiModelProperty(value = "主岗")
     private String mainDuty;

+ 7 - 0
fm-person/src/main/java/com/persagy/fm/person/model/vo/ResponsePersonListItemVO.java

@@ -58,6 +58,9 @@ public class ResponsePersonListItemVO {
     @ApiModelProperty("登录权限(年.月.日/永久)")
     private String expireDate;
 
+    @ApiModelProperty("所属部门")
+    private List<DepSimpleObjVO> deps;
+
     public SimpleObjVO getPersonTypeVO() {
         return personTypeVO == null ? new SimpleObjVO() : personTypeVO;
     }
@@ -73,4 +76,8 @@ public class ResponsePersonListItemVO {
     public List<SimpleObjVO> getProfessions() {
         return professions == null ? Lists.newArrayList() : professions;
     }
+
+    public List<DepSimpleObjVO> getDeps() {
+        return deps == null ? Lists.newArrayList() : deps;
+    }
 }

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

@@ -36,6 +36,7 @@ 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.saas.project.model.SaasProject;
+import com.persagy.fm.saas.project.model.dto.UpsertSaasProjectDTO;
 import com.persagy.fm.saas.project.service.ISaasProjectService;
 import com.persagy.fm.workresume.constant.enums.WorkResumeEnableStateEnum;
 import com.persagy.fm.workresume.constant.enums.WorkResumeHiredStateEnum;
@@ -105,7 +106,7 @@ public class PersonServiceImpl extends ServiceImpl<PersonMapper, Person>
         // 创建人员工作信息
         saveWorkResumes(addPersonDTO, person.getId());
         // 账号关联项目
-        saveAccountProject(accountId, addPersonDTO.getProjectIds());
+        saveAccountProject(accountId, addPersonDTO.getProjects());
         // 账号关联角色
         saveAccountRole(accountId, addPersonDTO.getMainDuty(),
                 addPersonDTO.getOtherDuties(), addPersonDTO.getOtherRoles());
@@ -116,16 +117,17 @@ public class PersonServiceImpl extends ServiceImpl<PersonMapper, Person>
      * 账号关联项目
      *
      * @param accountId  账号id
-     * @param projectIds 项目id列表
+     * @param projects 项目列表
      * @author lixing
      * @version V1.0 2021/3/26 5:23 下午
      */
-    private void saveAccountProject(String accountId, List<String> projectIds) {
-        if (!CollectionUtils.isEmpty(projectIds)) {
-            for (String projectId : projectIds) {
+    private void saveAccountProject(String accountId, List<UpsertSaasProjectDTO> projects) {
+        if (!CollectionUtils.isEmpty(projects)) {
+            for (UpsertSaasProjectDTO upsertSaasProjectDTO : projects) {
                 AddSaasAccountProjectDTO addSaasAccountProjectDTO = new AddSaasAccountProjectDTO();
                 addSaasAccountProjectDTO.setAccountId(accountId);
-                addSaasAccountProjectDTO.setProjectId(projectId);
+                addSaasAccountProjectDTO.setProjectId(upsertSaasProjectDTO.getProjectId());
+                addSaasAccountProjectDTO.setAreaId(upsertSaasProjectDTO.getAreaId());
                 saasAccountProjectService.createSaasAccountProject(addSaasAccountProjectDTO);
             }
         }
@@ -488,8 +490,8 @@ public class PersonServiceImpl extends ServiceImpl<PersonMapper, Person>
         // 更新账号和项目的关联
         List<SaasAccountProject> saasAccountProjects = saasAccountProjectService.
                 querySaasAccountProjectListByAccountId(accountId);
-        if (accountProjectsChanged(saasAccountProjects, updatePersonDTO.getProjectIds())) {
-            saasAccountProjectService.resetSaasAccountProject(accountId, updatePersonDTO.getProjectIds());
+        if (accountProjectsChanged(saasAccountProjects, updatePersonDTO.getProjects())) {
+            saasAccountProjectService.resetSaasAccountProject(accountId, updatePersonDTO.getProjects());
         }
 
         // 更新工作信息
@@ -564,18 +566,23 @@ public class PersonServiceImpl extends ServiceImpl<PersonMapper, Person>
      * 判断账号关联的项目是否发生变化
      *
      * @param saasAccountProjects 账号之前关联的项目
-     * @param projectIds          更新后账号关联的项目
+     * @param projects          更新后账号关联的项目
      * @return 是否发生变化
      * @author lixing
      * @version V1.0 2021/4/8 9:40 上午
      */
-    private Boolean accountProjectsChanged(List<SaasAccountProject> saasAccountProjects, List<String> projectIds) {
+    private Boolean accountProjectsChanged(List<SaasAccountProject> saasAccountProjects, List<UpsertSaasProjectDTO> projects) {
         if (CollectionUtils.isEmpty(saasAccountProjects)) {
-            return !CollectionUtils.isEmpty(projectIds);
+            return !CollectionUtils.isEmpty(projects);
         } else {
+            if (CollectionUtils.isEmpty(projects)) {
+                return true;
+            }
+            List<String> projectIdsAfterUpdate = projects.stream().map(
+                    UpsertSaasProjectDTO::getProjectId).collect(Collectors.toList());
             List<String> projectIdsBeforeUpdate = saasAccountProjects.stream().
                     map(SaasAccountProject::getProjectId).collect(Collectors.toList());
-            return ListUtil.listChanged(projectIdsBeforeUpdate, projectIds);
+            return ListUtil.listChanged(projectIdsBeforeUpdate, projectIdsAfterUpdate);
         }
     }
 
@@ -759,6 +766,11 @@ public class PersonServiceImpl extends ServiceImpl<PersonMapper, Person>
             // 设置专业
             String profession = responsePersonListItem.getProfession();
             responsePersonListItem.setProfessions(getProfessionVoList(profession));
+
+            // 设置所属部门
+            List<WorkResume> workResumes = workResumeService.queryWorkResumeListByPersonIdList(
+                    Lists.newArrayList(responsePersonListItem.getId()));
+            responsePersonListItem.setDeps(getDepSimpleObjVoList(workResumes));
         }
 
         IPage<ResponsePersonListItemVO> result = new Page<>();

+ 4 - 0
fm-person/src/main/java/com/persagy/fm/saas/accountproject/model/dto/AddSaasAccountProjectDTO.java

@@ -26,4 +26,8 @@ public class AddSaasAccountProjectDTO extends SaasBaseDTO {
     @ApiModelProperty(value = "项目ID", required = true)
     @NotNull(message = "项目ID不能为空") 
     private String projectId;
+
+    @ApiModelProperty(value = "区域ID", required = true)
+    @NotNull(message = "区域ID不能为空")
+    private String areaId;
 }

+ 16 - 0
fm-person/src/main/java/com/persagy/fm/saas/accountproject/model/dto/ResetAccountProjectItem.java

@@ -0,0 +1,16 @@
+package com.persagy.fm.saas.accountproject.model.dto;
+
+import lombok.Data;
+
+/**
+ * 类说明
+ *
+ * @author lixing
+ * @version V1.0 2021/4/13 4:27 下午
+ **/
+@Data
+public class ResetAccountProjectItem {
+    private String areaId;
+    private String projectId;
+    private String groupCode;
+}

+ 1 - 1
fm-person/src/main/java/com/persagy/fm/saas/accountproject/model/dto/ResetSaasAccountProjectDTO.java

@@ -15,5 +15,5 @@ import java.util.List;
 @Data
 @ApiModel(value = "重置账号-集团项目关联信息入参")
 public class ResetSaasAccountProjectDTO extends SaasBaseDTO {
-    private List<String> projectIds;
+    private List<ResetAccountProjectItem> auths;
 }

+ 3 - 2
fm-person/src/main/java/com/persagy/fm/saas/accountproject/service/ISaasAccountProjectService.java

@@ -6,6 +6,7 @@ import com.persagy.fm.saas.accountproject.model.dto.*;
 import java.util.List;
 
 import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.persagy.fm.saas.project.model.dto.UpsertSaasProjectDTO;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 
@@ -60,9 +61,9 @@ public interface ISaasAccountProjectService {
      * 重置账号关联的项目
      *
      * @param accountId 账号id
-     * @param projectIds 最新关联的项目
+     * @param projects 最新关联的项目
      * @author lixing
      * @version V1.0 2021/4/8 2:47 下午
      */
-    void resetSaasAccountProject(String accountId, List<String> projectIds);
+    void resetSaasAccountProject(String accountId, List<UpsertSaasProjectDTO> projects);
 }

+ 17 - 6
fm-person/src/main/java/com/persagy/fm/saas/accountproject/service/impl/SaasAccountProjectServiceImpl.java

@@ -1,16 +1,17 @@
 package com.persagy.fm.saas.accountproject.service.impl;
 
+import com.persagy.fm.common.context.AppContext;
 import com.persagy.fm.common.response.FmResponseContent;
 import com.persagy.fm.saas.accountproject.client.SaasAccountProjectClient;
 import com.persagy.fm.saas.accountproject.model.SaasAccountProject;
-import com.persagy.fm.saas.accountproject.model.dto.AddSaasAccountProjectDTO;
-import com.persagy.fm.saas.accountproject.model.dto.DeleteSaasAccountProjectDTO;
-import com.persagy.fm.saas.accountproject.model.dto.QuerySaasAccountProjectDTO;
-import com.persagy.fm.saas.accountproject.model.dto.ResetSaasAccountProjectDTO;
+import com.persagy.fm.saas.accountproject.model.dto.*;
 import com.persagy.fm.saas.accountproject.service.ISaasAccountProjectService;
+import com.persagy.fm.saas.project.model.dto.UpsertSaasProjectDTO;
 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;
 
@@ -58,11 +59,21 @@ public class SaasAccountProjectServiceImpl implements ISaasAccountProjectService
     }
 
     @Override
-    public void resetSaasAccountProject(String accountId, List<String> projectIds) {
+    public void resetSaasAccountProject(String accountId, List<UpsertSaasProjectDTO> projects) {
+        List<ResetAccountProjectItem> auths = Lists.newArrayList();
+        if (!CollectionUtils.isEmpty(projects)) {
+            projects.forEach(project -> {
+                ResetAccountProjectItem resetAccountProjectItem = new ResetAccountProjectItem();
+                resetAccountProjectItem.setProjectId(project.getProjectId());
+                resetAccountProjectItem.setAreaId(project.getAreaId());
+                resetAccountProjectItem.setGroupCode(AppContext.getContext().getGroupCode());
+                auths.add(resetAccountProjectItem);
+            });
+        }
         ResetSaasAccountProjectDTO resetSaasAccountProjectDTO = new ResetSaasAccountProjectDTO();
         resetSaasAccountProjectDTO.setDefaultValueNoAccountId();
         resetSaasAccountProjectDTO.setAccountId(accountId);
-        resetSaasAccountProjectDTO.setProjectIds(projectIds);
+        resetSaasAccountProjectDTO.setAuths(auths);
         saasAccountProjectClient.resetSaasAccountProject(resetSaasAccountProjectDTO);
     }
 }

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

@@ -0,0 +1,15 @@
+package com.persagy.fm.saas.project.model.dto;
+
+import lombok.Data;
+
+/**
+ * 插入或更新项目入参
+ *
+ * @author lixing
+ * @version V1.0 2021/4/13 4:36 下午
+ **/
+@Data
+public class UpsertSaasProjectDTO {
+    private String projectId;
+    private String areaId;
+}

+ 1 - 0
fm-person/src/main/java/com/persagy/fm/saas/project/model/vo/ProjectTreeItemVO.java

@@ -17,6 +17,7 @@ public class ProjectTreeItemVO {
 
     private String id;
     private String name;
+    private String areaId;
     /**
      * 是否为项目,条目可能是区域或项目
      */

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

@@ -98,6 +98,7 @@ public class SaasProjectServiceImpl implements ISaasProjectService {
         ProjectTreeItemVO projectTreeItemVO = new ProjectTreeItemVO();
         projectTreeItemVO.setName(project.getProjectName());
         projectTreeItemVO.setId(project.getProjectId());
+        projectTreeItemVO.setAreaId(project.getAreaId());
         projectTreeItemVO.setIsProject(BoolEnum.TRUE.getType());
         return projectTreeItemVO;
     }
@@ -114,6 +115,7 @@ public class SaasProjectServiceImpl implements ISaasProjectService {
         ProjectTreeItemVO projectTreeItemVO = new ProjectTreeItemVO();
         projectTreeItemVO.setName(area.getAreaName());
         projectTreeItemVO.setId(area.getId());
+        projectTreeItemVO.setAreaId(area.getId());
         projectTreeItemVO.setIsProject(BoolEnum.FALSE.getType());
 
         // 如果区域下包含项目

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

@@ -35,6 +35,9 @@ public class SaasRole extends SaasBaseDTO {
     @ApiModelProperty("备注")
     private String remark;
 
+    @ApiModelProperty("关联的菜单数量")
+    private Integer countMenu;
+
     @ApiModelProperty("关联的功能点数量")
     private Integer countFunction;
 

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

@@ -25,23 +25,30 @@
         <result column="name" property="name"/>
         <result column="profession" property="profession"/>
     </resultMap>
-
-    <select id="queryPersonList" parameterType="com.persagy.fm.person.model.dto.PageQueryPersonDTO"
-            resultType="com.persagy.fm.person.model.Person">
-        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
-        from person p,
-        work_resume w
+    
+    <sql id="queryPersonWhereExpression">
         where p.id = w.person_id
         <if test="depId != null and depId != ''">
             and w.dep_id = #{depId}
         </if>
-        <if test="state != null and state != ''">
-            and w.state = #{state}
+        <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 = #{name}
         </if>
+    </sql>
+
+    <select id="queryPersonList" parameterType="com.persagy.fm.person.model.dto.PageQueryPersonDTO"
+            resultType="com.persagy.fm.person.model.Person">
+        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
+        from person p,
+        work_resume w
+        <include refid="queryPersonWhereExpression"/>
         order by w.is_leader desc, p.name_pinyin
         limit #{startIndex}, #{size}
     </select>
@@ -51,21 +58,13 @@
         select count(*) total
         from person p,
         work_resume w
-        where p.id = w.person_id
-        <if test="depId != null and depId != ''">
-            and w.dep_id = #{depId}
-        </if>
-        <if test="state != null and state != ''">
-            and w.state = #{state}
-        </if>
-        <if test="name != null and name != ''">
-            and p.name = #{name}
-        </if>
+        <include refid="queryPersonWhereExpression"/>
     </select>
 
     <select id="queryPersonNameList" parameterType="com.persagy.fm.person.model.dto.NameQuickSearchDTO"
             resultType="com.persagy.fm.person.model.Person">
-        select distinct p.name, p.name_pinyin
+        select distinct personInfo.name from (
+        select p.name
         from person p,
         work_resume w
         where p.id = w.person_id
@@ -76,6 +75,7 @@
             and p.name like concat('%', #{name}, '%')
         </if>
         order by p.name_pinyin
+        ) personInfo
     </select>
 </mapper>