From b48be73219c84cf00f4fbbabe6ea31f6e511c4a9 Mon Sep 17 00:00:00 2001 From: heheng <475597332@qq.com> Date: 星期一, 07 七月 2025 09:54:05 +0800 Subject: [PATCH] 功能改造 --- multi-system/src/main/java/com/gkhy/exam/system/mapper/SysDeptMapper.java | 7 + multi-system/src/main/java/com/gkhy/exam/system/service/impl/SysDeptServiceImpl.java | 79 ++++++++++++++++++- multi-system/src/main/java/com/gkhy/exam/system/domain/SysDeptManage.java | 12 +++ multi-system/src/main/java/com/gkhy/exam/system/service/impl/StandardizedTemplateServiceImpl.java | 2 multi-system/src/main/resources/mapper/system/SysDeptMapper.xml | 43 ++++++++++ multi-system/src/main/java/com/gkhy/exam/system/domain/vo/DeptVo.java | 11 ++ multi-system/src/main/java/com/gkhy/exam/system/service/impl/SysUserServiceImpl.java | 7 + multi-system/src/main/java/com/gkhy/exam/system/domain/vo/SysDeptManageVo.java | 10 ++ multi-system/src/main/java/com/gkhy/exam/system/service/ISysDeptService.java | 2 multi-admin/src/main/java/com/gkhy/exam/admin/controller/system/SysDeptController.java | 2 multi-common/src/main/java/com/gkhy/exam/common/domain/entity/SysDept.java | 26 ++++++ multi-system/src/main/java/com/gkhy/exam/system/domain/vo/SysDeptSaveDTOReq.java | 11 ++ 12 files changed, 196 insertions(+), 16 deletions(-) diff --git a/multi-admin/src/main/java/com/gkhy/exam/admin/controller/system/SysDeptController.java b/multi-admin/src/main/java/com/gkhy/exam/admin/controller/system/SysDeptController.java index fa76240..b8dabc1 100644 --- a/multi-admin/src/main/java/com/gkhy/exam/admin/controller/system/SysDeptController.java +++ b/multi-admin/src/main/java/com/gkhy/exam/admin/controller/system/SysDeptController.java @@ -59,7 +59,7 @@ @ApiOperation(value = "获取部门列表树状") public CommonResult treeList(SysDept dept) { - List<TreeSelect> treeSelects = deptService.selectDeptTreeList(dept); + List<SysDept> treeSelects = deptService.selectDeptTreeList(dept); return CommonResult.success(treeSelects); } diff --git a/multi-common/src/main/java/com/gkhy/exam/common/domain/entity/SysDept.java b/multi-common/src/main/java/com/gkhy/exam/common/domain/entity/SysDept.java index 6becccf..d399fb1 100644 --- a/multi-common/src/main/java/com/gkhy/exam/common/domain/entity/SysDept.java +++ b/multi-common/src/main/java/com/gkhy/exam/common/domain/entity/SysDept.java @@ -27,7 +27,7 @@ private Long deptId; /** 父部门ID */ - @ApiModelProperty("主要负责部门ID") + @ApiModelProperty("主要负责部门ID作废") private Long parentId; /** 祖级列表 */ @@ -76,7 +76,13 @@ @ApiModelProperty("部门职责") private String responsibilities; - + + + @ApiModelProperty("部门类型1默认2管理") + private String deptType; + + @ApiModelProperty("是否智能分配1是2否") + private String responsType; /** 子部门 */ private List<SysDept> children = new ArrayList<SysDept>(); @@ -245,4 +251,20 @@ public void setInternalAuditorsName(String internalAuditorsName) { this.internalAuditorsName = internalAuditorsName; } + + public String getDeptType() { + return deptType; + } + + public void setDeptType(String deptType) { + this.deptType = deptType; + } + + public String getResponsType() { + return responsType; + } + + public void setResponsType(String responsType) { + this.responsType = responsType; + } } diff --git a/multi-system/src/main/java/com/gkhy/exam/system/domain/SysDeptManage.java b/multi-system/src/main/java/com/gkhy/exam/system/domain/SysDeptManage.java new file mode 100644 index 0000000..e8e5ba6 --- /dev/null +++ b/multi-system/src/main/java/com/gkhy/exam/system/domain/SysDeptManage.java @@ -0,0 +1,12 @@ +package com.gkhy.exam.system.domain; + +import lombok.Data; + +@Data +public class SysDeptManage { + private Long deptId; + + private Long subDeptId; + + private Long companyId; +} diff --git a/multi-system/src/main/java/com/gkhy/exam/system/domain/vo/DeptVo.java b/multi-system/src/main/java/com/gkhy/exam/system/domain/vo/DeptVo.java index f7a732b..5617e6b 100644 --- a/multi-system/src/main/java/com/gkhy/exam/system/domain/vo/DeptVo.java +++ b/multi-system/src/main/java/com/gkhy/exam/system/domain/vo/DeptVo.java @@ -10,6 +10,9 @@ public class DeptVo extends SysDept { @ApiModelProperty(value = "条款信息") private List<CaluseVO1> caluseVO1List; + @ApiModelProperty(value = "负责部门") + private List<SysDeptManageVo> sysDeptManageVoList; + public List<CaluseVO1> getCaluseVO1List() { return caluseVO1List; @@ -18,4 +21,12 @@ public void setCaluseVO1List(List<CaluseVO1> caluseVO1List) { this.caluseVO1List = caluseVO1List; } + + public List<SysDeptManageVo> getSysDeptManageVoList() { + return sysDeptManageVoList; + } + + public void setSysDeptManageVoList(List<SysDeptManageVo> sysDeptManageVoList) { + this.sysDeptManageVoList = sysDeptManageVoList; + } } diff --git a/multi-system/src/main/java/com/gkhy/exam/system/domain/vo/SysDeptManageVo.java b/multi-system/src/main/java/com/gkhy/exam/system/domain/vo/SysDeptManageVo.java new file mode 100644 index 0000000..f8a6896 --- /dev/null +++ b/multi-system/src/main/java/com/gkhy/exam/system/domain/vo/SysDeptManageVo.java @@ -0,0 +1,10 @@ +package com.gkhy.exam.system.domain.vo; + +import com.gkhy.exam.system.domain.SysDeptManage; +import lombok.Data; + +@Data +public class SysDeptManageVo extends SysDeptManage { + + private String subDeptName; +} diff --git a/multi-system/src/main/java/com/gkhy/exam/system/domain/vo/SysDeptSaveDTOReq.java b/multi-system/src/main/java/com/gkhy/exam/system/domain/vo/SysDeptSaveDTOReq.java index d19f1fe..08aea38 100644 --- a/multi-system/src/main/java/com/gkhy/exam/system/domain/vo/SysDeptSaveDTOReq.java +++ b/multi-system/src/main/java/com/gkhy/exam/system/domain/vo/SysDeptSaveDTOReq.java @@ -23,6 +23,10 @@ @ApiModelProperty("祖级列表") private String ancestors; + /** 显示顺序 */ + @ApiModelProperty("显示顺序") + private Integer orderNum; + /** 部门名称 */ @ApiModelProperty("部门名称") @NotBlank(message ="部门名称不能为空" ) @@ -43,4 +47,11 @@ @ApiModelProperty(value = "删除条款id") private List<Long> delCaluseIds; + @ApiModelProperty("是否智能分配1是2否") + @NotBlank(message = "是否智能分配不能为空") + private String responsType; + + @ApiModelProperty("负责部门id") + private List<Long> childDeptIds; + } diff --git a/multi-system/src/main/java/com/gkhy/exam/system/mapper/SysDeptMapper.java b/multi-system/src/main/java/com/gkhy/exam/system/mapper/SysDeptMapper.java index 211ab27..5a62f35 100644 --- a/multi-system/src/main/java/com/gkhy/exam/system/mapper/SysDeptMapper.java +++ b/multi-system/src/main/java/com/gkhy/exam/system/mapper/SysDeptMapper.java @@ -2,6 +2,7 @@ import com.gkhy.exam.common.domain.entity.SysDept; +import com.gkhy.exam.system.domain.SysDeptManage; import com.gkhy.exam.system.domain.vo.DeptVo; import org.apache.ibatis.annotations.Param; @@ -125,4 +126,10 @@ * @return 结果 */ public int deleteDeptById(Long deptId); + + + int insetMangeBatch(List<SysDeptManage> sysDeptManages); + int deleteMangeBatch(long deptId); + + List<SysDeptManage> getAllManage(long deptId); } diff --git a/multi-system/src/main/java/com/gkhy/exam/system/service/ISysDeptService.java b/multi-system/src/main/java/com/gkhy/exam/system/service/ISysDeptService.java index 406f476..0630f21 100644 --- a/multi-system/src/main/java/com/gkhy/exam/system/service/ISysDeptService.java +++ b/multi-system/src/main/java/com/gkhy/exam/system/service/ISysDeptService.java @@ -32,7 +32,7 @@ * @param dept 部门信息 * @return 部门树信息集合 */ - public List<TreeSelect> selectDeptTreeList(SysDept dept); + public List<SysDept> selectDeptTreeList(SysDept dept); /** * 构建前端所需要树结构 diff --git a/multi-system/src/main/java/com/gkhy/exam/system/service/impl/StandardizedTemplateServiceImpl.java b/multi-system/src/main/java/com/gkhy/exam/system/service/impl/StandardizedTemplateServiceImpl.java index cc57162..1340450 100644 --- a/multi-system/src/main/java/com/gkhy/exam/system/service/impl/StandardizedTemplateServiceImpl.java +++ b/multi-system/src/main/java/com/gkhy/exam/system/service/impl/StandardizedTemplateServiceImpl.java @@ -173,7 +173,7 @@ //部门 SysDept sysDept = new SysDept(); sysDept.setCompanyId(companyId.longValue()); - List<TreeSelect> treeSelects = iSysDeptService.selectDeptTreeList(sysDept); + List<SysDept> treeSelects = iSysDeptService.selectDeptTreeList(sysDept); //公司概况 List<CompanySummary> companySummaries = companySummaryMapper.selectCompanySummaryList(companyId); diff --git a/multi-system/src/main/java/com/gkhy/exam/system/service/impl/SysDeptServiceImpl.java b/multi-system/src/main/java/com/gkhy/exam/system/service/impl/SysDeptServiceImpl.java index 4f5bd1a..51fef94 100644 --- a/multi-system/src/main/java/com/gkhy/exam/system/service/impl/SysDeptServiceImpl.java +++ b/multi-system/src/main/java/com/gkhy/exam/system/service/impl/SysDeptServiceImpl.java @@ -13,6 +13,7 @@ import com.gkhy.exam.common.exception.ApiException; import com.gkhy.exam.common.utils.SecurityUtils; import com.gkhy.exam.common.utils.SpringUtils; +import com.gkhy.exam.system.domain.SysDeptManage; import com.gkhy.exam.system.domain.SysDeptResponsibility; import com.gkhy.exam.system.domain.SysFunctionalDistribution; import com.gkhy.exam.system.domain.vo.*; @@ -28,6 +29,7 @@ import java.time.LocalDateTime; import java.util.*; +import java.util.function.Function; import java.util.stream.Collectors; /** @@ -50,7 +52,9 @@ @Autowired private SysFunctionalDistributionMapper sysFunctionalDistributionMapper; public static final String[] DEPT_ROOT = {"4.1", "4.2", "4.3", "4.4", "5.1", "5.2", "5.3","6.1", "6.2", "6.3", - "7.1.1", "7.1.2", "7.1.3", "7.1.4", "7.1.5", "7.1.6"}; + "7.1.1", "7.1.2", "7.1.3", "7.1.4", "7.1.5", "7.1.6","7.2", "7.3", "7.4", "7.5", "7.6","8.1","8.2","8.2.1","8.2.2", "8.2.3", "8.2.4", "8.3", "8.3.1", "8.3.2", "8.3.3", "8.3.4", "8.3.5", "8.3.6", "8.3.7", "8.3.8", "8.4", + "8.4.1", "8.4.2", "8.4.3", "8.5", "8.5.1", "8.5.2", "8.5.3", "8.5.4", "8.5.5", "8.5.6", "8.5.7", "8.6","8.7","9.1","9.1.1","9.1.2","9.1.3","9.2", "9.3","10.1" + ,"10.2", "10.3"}; /** * 查询部门管理数据 * @@ -79,11 +83,56 @@ * @return 部门树信息集合 */ @Override - public List<TreeSelect> selectDeptTreeList(SysDept dept) + public List<SysDept> selectDeptTreeList(SysDept dept) { List<SysDept> depts = SpringUtils.getAopProxy(this).getOutDeptList(dept); - return buildDeptTreeSelect(depts); + + List<SysDeptManage> allManage = deptMapper.getAllManage(dept.getCompanyId()); + // 构建父部门到子部门的映射 + Map<Long, List<Long>> parentToChildrenMap = new HashMap<>(); + for (SysDeptManage responsibility : allManage) { + parentToChildrenMap.computeIfAbsent(responsibility.getDeptId(), k -> new ArrayList<>()) + .add(responsibility.getSubDeptId()); + } + + // 构建部门ID到部门对象的映射 + Map<Long, SysDept> deptMap = depts.stream() + .collect(Collectors.toMap(SysDept::getDeptId, Function.identity())); + + + return buildDeptTree(depts,parentToChildrenMap, deptMap); } + + public List<SysDept> buildDeptTree(List<SysDept> allDepts, Map<Long, List<Long>> parentToChildrenMap, Map<Long, SysDept> deptMap) { + List<SysDept> rootNodes = new ArrayList<>(); + + for (SysDept dept : allDepts) { + if (!deptMap.values().stream() + .anyMatch(d -> parentToChildrenMap.containsValue(dept.getDeptId()))) { + // 如果没有其他部门将它作为子部门,则为根节点 + rootNodes.add(dept); + } + } + + for (SysDept root : rootNodes) { + buildChildren(root, parentToChildrenMap, deptMap); + } + + return rootNodes; + } + + private void buildChildren(SysDept parent, Map<Long, List<Long>> parentToChildrenMap, Map<Long, SysDept> deptMap) { + List<Long> childIds = parentToChildrenMap.getOrDefault(parent.getDeptId(), Collections.emptyList()); + + List<SysDept> children = childIds.stream() + .map(deptMap::get) + .filter(Objects::nonNull) + .peek(child -> buildChildren(child, parentToChildrenMap, deptMap)) + .collect(Collectors.toList()); + + parent.setChildren(children); + } + /** * 构建前端所需要树结构 @@ -288,9 +337,28 @@ //处理条款 batchSaveCaluse(sysDept.getDeptId(), dept.getCompanyId(), dept.getCaluseVO1List()); + List<Long> childDeptIds = dept.getChildDeptIds(); + bacthInsertManager(sysDept.getDeptId(), childDeptIds, dept.getCompanyId()); } return sysDept.getDeptId().byteValue(); + } + + private void bacthInsertManager(Long deptId, List<Long> managerIds,Long companyId) { + deptMapper.deleteMangeBatch(deptId); + if (managerIds != null && !managerIds.isEmpty()) + { + List<SysDeptManage> sysDeptManagers = new ArrayList<>(); + for (Long managerId : managerIds) + { + SysDeptManage sysDeptManage = new SysDeptManage(); + sysDeptManage.setDeptId(deptId); + sysDeptManage.setSubDeptId(managerId); + sysDeptManage.setCompanyId(companyId); + sysDeptManagers.add(sysDeptManage); + } + deptMapper.insetMangeBatch(sysDeptManagers); + } } @Override @@ -340,6 +408,7 @@ sysFunctionalDistributionMapper.delByCompanyId(companyId); SysDept sysDept = new SysDept(); sysDept.setCompanyId(companyId); + sysDept.setResponsType("1"); List<DeptVo> deptVos = deptMapper.selectDeptList(sysDept); if (deptVos != null && !deptVos.isEmpty()){ List<SysFunctionalDistribution> sysFunctionalDistributions = new ArrayList<>(); @@ -381,9 +450,7 @@ } } int i = sysFunctionalDistributionMapper.batchUpdate(list); - if (i < 1){ - throw new ApiException("保存失败!"); - } + return 1; } diff --git a/multi-system/src/main/java/com/gkhy/exam/system/service/impl/SysUserServiceImpl.java b/multi-system/src/main/java/com/gkhy/exam/system/service/impl/SysUserServiceImpl.java index 379e974..31c246a 100644 --- a/multi-system/src/main/java/com/gkhy/exam/system/service/impl/SysUserServiceImpl.java +++ b/multi-system/src/main/java/com/gkhy/exam/system/service/impl/SysUserServiceImpl.java @@ -228,8 +228,11 @@ Integer userType=user.getUserType(); //校验权限,规则:上一级用户可以增加下一级用户类型的用户 if(currentUserType.equals(UserTypeEnum.SYSTEM_USER.getCode())){ - if( !userType.equals(UserTypeEnum.SYSTEM_USER.getCode())&&!userType.equals(UserTypeEnum.OTHER_USER.getCode()) &&!userType.equals(UserTypeEnum.COMPANY_USER.getCode())){ - throw new ApiException("管理员只能操作管理员、企业级和其他类型的用户"); +// if( !userType.equals(UserTypeEnum.SYSTEM_USER.getCode())&&!userType.equals(UserTypeEnum.OTHER_USER.getCode()) &&!userType.equals(UserTypeEnum.COMPANY_USER.getCode())){ +// throw new ApiException("管理员只能操作管理员、企业级和其他类型的用户"); +// } + if (user.getId().toString().equals("1")){ + throw new ApiException("管理员用户不能被删除"); } }else{ if(userType.equals(UserTypeEnum.OTHER_USER.getCode())){ diff --git a/multi-system/src/main/resources/mapper/system/SysDeptMapper.xml b/multi-system/src/main/resources/mapper/system/SysDeptMapper.xml index 01802b7..54dcded 100644 --- a/multi-system/src/main/resources/mapper/system/SysDeptMapper.xml +++ b/multi-system/src/main/resources/mapper/system/SysDeptMapper.xml @@ -21,6 +21,8 @@ <result property="updateBy" column="update_by" /> <result property="updateTime" column="update_time" /> <result property="responsibilities" column="responsibilities" /> + <result property="deptType" column="dept_type" /> + <result property="responsType" column="respons_type" /> <result property="personNum" column="person_num" /> <result property="internalAuditors" column="internal_auditors" /> <result property="internalAuditorsName" column="internal_auditors_name" /> @@ -32,24 +34,39 @@ <result property="clauseId" column="clause_id" /> <result property="id" column="data_id" /> </collection> + <collection ofType="com.gkhy.exam.system.domain.vo.SysDeptManageVo" property="sysDeptManageVoList"> + <result property="subDeptId" column="sub_dept_id" /> + <result property="subDeptName" column="sub_dept_name" /> + <result property="deptId" column="p_dept_id" /> + + </collection> </resultMap> <sql id="selectDeptVo"> select d.dept_id, d.parent_id, d.ancestors, d.dept_name, d.order_num, d.leader_user_id, d.company_id, d.status, d.del_flag, d.create_by, d.create_time,d.person_num,d.internal_auditors, - d.responsibilities + d.responsibilities,d.dept_type,d.respons_type from sys_dept d </sql> <select id="selectDeptList" parameterType="com.gkhy.exam.common.domain.entity.SysDept" resultMap="DeptVoResult"> select d.dept_id, d.parent_id, d.ancestors, d.dept_name, d.order_num, d.leader_user_id, d.company_id, d.status, d.del_flag, d.create_by, d.create_time,d.person_num,d.internal_auditors, - d.responsibilities,u.name as leader_name,d2.dept_name as parent_name, dr.content ,dr.clause_num,dr.id as data_id,dr.clause_id + d.responsibilities,d.dept_type,d.respons_type,u.name as leader_name,d2.dept_name as parent_name, dr.content ,dr.clause_num,dr.id as data_id,dr.clause_id, + sm.sub_dept_id ,sm2.dept_name sub_dept_name,sm.dept_id as p_dept_id from sys_dept d left join sys_user u on d.leader_user_id = u.id left join sys_dept d2 on d.parent_id = d2.dept_id left join sys_dept_responsibility dr on d.dept_id = dr.dept_id and dr.del_flag = '0' and data_type = 2 + left join sys_dept_manage sm on d.dept_id = sm.dept_id + left join sys_dept sm2 on sm2.dept_id = sm.sub_dept_id where d.del_flag = '0' <if test="companyId != null and companyId != 0"> AND d.company_id = #{companyId} + </if> + <if test="deptType != null and deptType != '' " > + AND d.dept_type = #{deptType} + </if> + <if test="responsType != null and responsType != '' " > + AND d.respons_type = #{responsType} </if> <if test="deptId != null and deptId != 0"> AND d.dept_id = #{deptId} @@ -102,7 +119,7 @@ <select id="selectDeptById" parameterType="Long" resultMap="SysDeptResult"> select d.dept_id, d.parent_id, d.ancestors, d.dept_name, d.order_num, d.leader_user_id,d.company_id,d.status,d.person_num,d.internal_auditors, - d.responsibilities, + d.responsibilities,d.dept_type,d.respons_type, (select dept_name from sys_dept where dept_id = d.parent_id) parent_name,(select dept_name from sys_user where id = d.leader_user_id) leader_name ,(select dept_name from sys_user where id = d.internal_auditors) internal_auditors_name from sys_dept d @@ -147,6 +164,7 @@ <if test="responsibilities != null and responsibilities != ''">responsibilities,</if> <if test="status != null">status,</if> <if test="createBy != null and createBy != ''">create_by,</if> + <if test="responsType != null and responsType != ''">respons_type,</if> create_time )values( <if test="deptId != null and deptId != 0">#{deptId},</if> @@ -161,6 +179,7 @@ <if test="responsibilities != null and responsibilities != ''">#{responsibilities},</if> <if test="status != null">#{status},</if> <if test="createBy != null and createBy != ''">#{createBy},</if> + <if test="responsType != null and responsType != ''">#{responsType},</if> sysdate() ) </insert> @@ -178,6 +197,7 @@ <if test="responsibilities != null and responsibilities != ''">responsibilities = #{responsibilities},</if> <if test="status != null and status != ''">status = #{status},</if> <if test="updateBy != null and updateBy != ''">update_by = #{updateBy},</if> + <if test="responsType != null and responsType != ''">respons_type = #{responsType},</if> update_time = sysdate() </set> where dept_id = #{deptId} @@ -207,4 +227,21 @@ update sys_dept set del_flag = '1' where dept_id = #{deptId} </delete> + + <insert id="insetMangeBatch"> + insert into sys_dept_manage(dept_id,sub_dept_id,company_id) values + <foreach item="item" index="index" collection="list" separator=","> + (#{item.deptId},#{item.subDeptId},#{item.companyId}) + </foreach> + </insert> + + <delete id="deleteMangeBatch"> + delete from sys_dept_manage where dept_id = #{deptId} + </delete> + + <select id="getAllManage" parameterType="long" resultType="com.gkhy.exam.system.domain.SysDeptManage"> + select * from sys_dept_manage + where company_id = #{companyId} + </select> + </mapper> \ No newline at end of file -- Gitblit v1.9.2