From 55ac1a9f8023a39a14a13530ed0002805a8c8c7b Mon Sep 17 00:00:00 2001 From: yjz <3131811435@qq.com> Date: Fri, 10 Nov 2023 16:39:03 +0800 Subject: [PATCH 1/2] =?UTF-8?q?fix(=E6=96=87=E6=A1=A3=E6=8B=86=E5=88=86):?= =?UTF-8?q?=2078339?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../impl/DocumentSplitServiceImpl.java | 81 ++++++++++++++----- 1 file changed, 62 insertions(+), 19 deletions(-) diff --git a/laws-modules/src/main/java/com/jero/modules/laws/documenttool/service/impl/DocumentSplitServiceImpl.java b/laws-modules/src/main/java/com/jero/modules/laws/documenttool/service/impl/DocumentSplitServiceImpl.java index 16d0c2b6..baa95767 100644 --- a/laws-modules/src/main/java/com/jero/modules/laws/documenttool/service/impl/DocumentSplitServiceImpl.java +++ b/laws-modules/src/main/java/com/jero/modules/laws/documenttool/service/impl/DocumentSplitServiceImpl.java @@ -1,5 +1,6 @@ package com.jero.modules.laws.documenttool.service.impl; +import cn.hutool.core.collection.CollUtil; import com.alibaba.fastjson.JSON; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; @@ -28,7 +29,9 @@ import com.jero.modules.laws.documenttool.handler.impl.UniversalImpl; import com.jero.modules.laws.documenttool.mapper.DocumentSplitMapper; import com.jero.modules.laws.documenttool.mapper.LawsDocumentSplitMapper; import com.jero.modules.laws.documenttool.service.IDocumentSplitService; +import com.jero.modules.laws.enterprise.entity.EnterpriseStandardAuthDept; import com.jero.modules.laws.enterprise.entity.EnterpriseStandardAuthUser; +import com.jero.modules.laws.enterprise.service.EnterpriseStandardAuthDeptService; import com.jero.modules.laws.enterprise.service.EnterpriseStandardAuthUserService; import com.jero.modules.laws.standard.entity.LawsEnterpriseStandard; import com.jero.modules.laws.standard.service.ILawsEnterpriseStandardService; @@ -47,8 +50,10 @@ import com.jero.modules.sys.service.ILawsEnterpriseStandardLevelService; import com.jero.modules.system.entity.SysDict; import com.jero.modules.system.entity.SysDictItem; import com.jero.modules.system.entity.SysUser; +import com.jero.modules.system.model.DepartIdModel; import com.jero.modules.system.service.ISysDictItemService; import com.jero.modules.system.service.ISysDictService; +import com.jero.modules.system.service.ISysUserDepartService; import com.jero.modules.system.service.ISysUserService; import com.jero.modules.tag.entity.LawsTag; import com.jero.modules.tag.enums.LawsFieldTypeEnum; @@ -100,6 +105,8 @@ public class DocumentSplitServiceImpl implements IDocumentSplitService { private final ILawsEnterpriseStandardLevelService lawsEnterpriseStandardLevelService; private final EnterpriseStandardAuthUserService enterpriseStandardAuthUserService; private final ISysUserService sysUserService; + private final EnterpriseStandardAuthDeptService enterpriseStandardAuthDeptService; + private final ISysUserDepartService sysUserDepartService; private static final String INFO_ID = "info_id"; private static final String ID = "id"; private static final String IDS = "ids"; @@ -121,7 +128,9 @@ public class DocumentSplitServiceImpl implements IDocumentSplitService { ILawsEnterpriseStandardService lawsEnterpriseStandardService, ILawsEnterpriseStandardLevelService lawsEnterpriseStandardLevelService, EnterpriseStandardAuthUserService enterpriseStandardAuthUserService, - ISysUserService sysUserService) { + ISysUserService sysUserService, + EnterpriseStandardAuthDeptService enterpriseStandardAuthDeptService, + ISysUserDepartService sysUserDepartService) { this.documentSplitMapper = documentSplitMapper; this.sarFileSplitInfoService = sarFileSplitInfoService; this.lawsCommonMapper = lawsCommonMapper; @@ -135,10 +144,14 @@ public class DocumentSplitServiceImpl implements IDocumentSplitService { this.lawsEnterpriseStandardLevelService = lawsEnterpriseStandardLevelService; this.enterpriseStandardAuthUserService = enterpriseStandardAuthUserService; this.sysUserService = sysUserService; + this.enterpriseStandardAuthDeptService = enterpriseStandardAuthDeptService; + this.sysUserDepartService = sysUserDepartService; } @Value("${jero.path.exportExcelTempPath}") private String exportExcelTempPath; + @Value("${draftDepartName}") + private String draftDepartName; @Override public IPage queryByPage(DocumentSplitInfo documentSplitInfo, Integer pageNo, Integer pageSize) { @@ -300,6 +313,7 @@ public class DocumentSplitServiceImpl implements IDocumentSplitService { @Override public void enterpriseCheck(SarFileSplitInfoEO sarFileSplitInfoEO) { + // 企标 LawsEnterpriseStandard lawsEnterpriseStandard = lawsEnterpriseStandardService.getOne( new LambdaQueryWrapper() .eq(LawsEnterpriseStandard::getStandardNumber, sarFileSplitInfoEO.getSerialNumber())); @@ -308,44 +322,73 @@ public class DocumentSplitServiceImpl implements IDocumentSplitService { if (StringUtils.isBlank(sarFileSplitInfoEO.getStandardId())){ sarFileSplitInfoEO.setStandardId(id); } + // 登陆人信息 LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal(); - // 等级 - String gradeClassification = lawsEnterpriseStandard.getGradeClassification(); - if ("2".equals(gradeClassification)){ - List standardLevelList = lawsEnterpriseStandardLevelService.list(); - List levelDeptIds = standardLevelList.stream().map(LawsEnterpriseStandardLevel::getDeptId).collect(Collectors.toList()); - if (levelDeptIds.contains(sysUser.getDepartIds())){ - // 有权限 - return; - } - } - if ("4".equals(gradeClassification) - && (sysUser.getDepartIds().equals(lawsEnterpriseStandard.getMainDraftingUnit()))){ + // 登陆人所在部门 + List departIdModels = sysUserDepartService.queryDepartIdsOfUser(sysUser.getId()); + List departIds = departIdModels.stream().map(DepartIdModel::getKey).collect(Collectors.toList()); + List departNames = departIdModels.stream().map(DepartIdModel::getTitle).collect(Collectors.toList()); + + // 起草部门有所有企标的查看权限 + if (!departNames.isEmpty() && departNames.contains(draftDepartName)) { // 有权限 return; } + // 查询临时授权人员 Date date = new Date(); LambdaQueryWrapper authUserWrapper = new LambdaQueryWrapper<>(); - authUserWrapper.eq(StringUtils.isNotBlank(id), EnterpriseStandardAuthUser::getStandardId, id); + authUserWrapper.eq(EnterpriseStandardAuthUser::getStandardId, id); authUserWrapper.eq(EnterpriseStandardAuthUser::getAuthUser, sysUser.getId()); authUserWrapper.ge(EnterpriseStandardAuthUser::getAuthExpireDate, date); List authUserList = enterpriseStandardAuthUserService.list(authUserWrapper); - Set authStandardIds = authUserList.stream().map(EnterpriseStandardAuthUser::getStandardId).collect(Collectors.toSet()); - if (authStandardIds.contains(id)) { + if (!authUserList.isEmpty()){ // 有权限 return; } - // 起草部门 - if (sysUser.getDepartIds().equals(lawsEnterpriseStandard.getMainDraftingUnit())){ + + // 查询授权部门-和临时授权部门 + LambdaQueryWrapper authDeptWrapper = new LambdaQueryWrapper<>(); + authDeptWrapper.eq(EnterpriseStandardAuthDept::getStandardId, id); + authDeptWrapper.in(CollUtil.isNotEmpty(departIds), EnterpriseStandardAuthDept::getAuthDept, departIds); + List authDeptList = enterpriseStandardAuthDeptService.list(authDeptWrapper); + if (!authDeptList.isEmpty()){ // 有权限 return; } + authDeptWrapper.ge(EnterpriseStandardAuthDept::getAuthExpireDate, date); + List authDeptExpireDateList = enterpriseStandardAuthDeptService.list(authDeptWrapper); + if (!authDeptExpireDateList.isEmpty()){ + // 有权限 + return; + } + + // 企标级别授权的部门 + List standardLevelList = lawsEnterpriseStandardLevelService.list(); + List levelDeptIds = standardLevelList.stream().map(LawsEnterpriseStandardLevel::getDeptId).collect(Collectors.toList()); + + if (levelCheck(lawsEnterpriseStandard, departIds, levelDeptIds)) return; + // 无权限 noAccess(); } } + private static boolean levelCheck(LawsEnterpriseStandard lawsEnterpriseStandard, List departIds, List levelDeptIds) { + // 等级 + String gradeClassification = lawsEnterpriseStandard.getGradeClassification(); + + // 全公司可以看 + if ("1".equals(gradeClassification)) { + // 有权限 + return true; + } + + // 企标等级分类级别可查看部门 + return ("2".equals(gradeClassification) || "3".equals(gradeClassification)) + && levelDeptIds.stream().anyMatch(departIds::contains); + } + private void noAccess() { if(LanguageEnum.CN.equals(MessageUtils.getLanguage())) { throw new JeroBootException("无权限!"); @@ -713,7 +756,7 @@ public class DocumentSplitServiceImpl implements IDocumentSplitService { // 填充说明 Cell cell = headerRowTwo.createCell(0); String explain = "模版说明:\n" + - "1. 条文号/条文标题/条文内容不能为空\n" + + "1. 条文号必填,条文标题和条文内容非必填\n" + "2. 仅支持zip格式文件夹"; CellStyle cellStyleTwo = workbook.createCellStyle(); From 585f79561ea783e42bde1dc39f9bfc36223a0621 Mon Sep 17 00:00:00 2001 From: yjz <3131811435@qq.com> Date: Fri, 10 Nov 2023 16:40:12 +0800 Subject: [PATCH 2/2] =?UTF-8?q?fix(=E6=96=87=E6=A1=A3=E6=8B=86=E5=88=86):?= =?UTF-8?q?=2078366?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../split/service/impl/SarFileSplitMenuEOServiceImpl.java | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/laws-modules/src/main/java/com/jero/modules/split/service/impl/SarFileSplitMenuEOServiceImpl.java b/laws-modules/src/main/java/com/jero/modules/split/service/impl/SarFileSplitMenuEOServiceImpl.java index 9e33c818..50e995da 100644 --- a/laws-modules/src/main/java/com/jero/modules/split/service/impl/SarFileSplitMenuEOServiceImpl.java +++ b/laws-modules/src/main/java/com/jero/modules/split/service/impl/SarFileSplitMenuEOServiceImpl.java @@ -87,12 +87,16 @@ public class SarFileSplitMenuEOServiceImpl extends ServiceImpl queryAllChildrenById(SarFileSplitMenuEO sarMenuEO) { + List result = new ArrayList<>(); SarFileSplitMenuEO sarFileSplitMenuEO = dao.selectByPrimaryKey(sarMenuEO.getId()); SarFileSplitMenuEOPage page = new SarFileSplitMenuEOPage(); + if (Objects.isNull(sarFileSplitMenuEO)){ + return result; + } page.setInfoId(sarFileSplitMenuEO.getInfoId()); List listAll = dao.queryByList(page); // 查询所有目录 - List result = new ArrayList<>(); + // 递归查询 指定父节点下的所有子节点,包括父节点 if (CollectionUtil.isNotEmpty(listAll)) { result.add(sarFileSplitMenuEO); // 加上父节点