diff --git a/laws-modules/src/main/java/com/jero/modules/laws/documenttool/service/IDocumentSplitService.java b/laws-modules/src/main/java/com/jero/modules/laws/documenttool/service/IDocumentSplitService.java index b85b14f4..8665659e 100644 --- a/laws-modules/src/main/java/com/jero/modules/laws/documenttool/service/IDocumentSplitService.java +++ b/laws-modules/src/main/java/com/jero/modules/laws/documenttool/service/IDocumentSplitService.java @@ -66,6 +66,12 @@ public interface IDocumentSplitService { */ void saveDocumentSplitInfo(SarFileSplitInfoEO sarFileSplitInfoEO); + /** + * 企标权限校验 + * @param sarFileSplitInfoEO + */ + void enterpriseCheck(SarFileSplitInfoEO sarFileSplitInfoEO); + /** * 唯一性校验 */ 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 2f7b8768..644fa9c1 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 @@ -27,6 +27,10 @@ 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.EnterpriseStandardAuthUser; +import com.jero.modules.laws.enterprise.service.EnterpriseStandardAuthUserService; +import com.jero.modules.laws.standard.entity.LawsEnterpriseStandard; +import com.jero.modules.laws.standard.service.ILawsEnterpriseStandardService; import com.jero.modules.split.entity.SarFileSplitInfoEO; import com.jero.modules.split.entity.SarFileSplitItemsValEO; import com.jero.modules.split.entity.SarFileSplitMenuEO; @@ -37,6 +41,8 @@ import com.jero.modules.split.page.SarFileSplitMenuEOPage; import com.jero.modules.split.service.ISarFileSplitInfoService; import com.jero.modules.split.service.ISarFileSplitMenuEOService; import com.jero.modules.split.service.impl.FileSpiltService; +import com.jero.modules.sys.entity.LawsEnterpriseStandardLevel; +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.service.ISysDictItemService; @@ -87,6 +93,9 @@ public class DocumentSplitServiceImpl implements IDocumentSplitService { private final SarFileSplitItemsValEOMapper sarFileSplitItemsValEOMapper; private final ISysDictService sysDictService; private final ISysDictItemService sysDictItemService; + private final ILawsEnterpriseStandardService lawsEnterpriseStandardService; + private final ILawsEnterpriseStandardLevelService lawsEnterpriseStandardLevelService; + private final EnterpriseStandardAuthUserService enterpriseStandardAuthUserService; private static final String INFO_ID = "info_id"; private static final String ID = "id"; private static final String IDS = "ids"; @@ -104,7 +113,10 @@ public class DocumentSplitServiceImpl implements IDocumentSplitService { LawsDocumentSplitMapper lawsDocumentSplitMapper, SarFileSplitItemsValEOMapper sarFileSplitItemsValEOMapper, ISysDictService sysDictService, - ISysDictItemService sysDictItemService) { + ISysDictItemService sysDictItemService, + ILawsEnterpriseStandardService lawsEnterpriseStandardService, + ILawsEnterpriseStandardLevelService lawsEnterpriseStandardLevelService, + EnterpriseStandardAuthUserService enterpriseStandardAuthUserService) { this.documentSplitMapper = documentSplitMapper; this.sarFileSplitInfoService = sarFileSplitInfoService; this.lawsCommonMapper = lawsCommonMapper; @@ -114,6 +126,9 @@ public class DocumentSplitServiceImpl implements IDocumentSplitService { this.sarFileSplitItemsValEOMapper = sarFileSplitItemsValEOMapper; this.sysDictService = sysDictService; this.sysDictItemService = sysDictItemService; + this.lawsEnterpriseStandardService = lawsEnterpriseStandardService; + this.lawsEnterpriseStandardLevelService = lawsEnterpriseStandardLevelService; + this.enterpriseStandardAuthUserService = enterpriseStandardAuthUserService; } @Value("${jero.path.exportExcelTempPath}") @@ -257,6 +272,8 @@ public class DocumentSplitServiceImpl implements IDocumentSplitService { @Override public void add(SarFileSplitInfoEO sarFileSplitInfoEO) { + // 企标权限校验 + enterpriseCheck(sarFileSplitInfoEO); // 唯一校验 uniqueCheck(sarFileSplitInfoEO); // 保存文本拆分数据 @@ -273,6 +290,62 @@ public class DocumentSplitServiceImpl implements IDocumentSplitService { } } + @Override + public void enterpriseCheck(SarFileSplitInfoEO sarFileSplitInfoEO) { + LawsEnterpriseStandard lawsEnterpriseStandard = lawsEnterpriseStandardService.getOne( + new LambdaQueryWrapper() + .eq(LawsEnterpriseStandard::getStandardNumber, sarFileSplitInfoEO.getSerialNumber())); + if (!Objects.isNull(lawsEnterpriseStandard)){ + String id = lawsEnterpriseStandard.getId(); + 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()))){ + // 有权限 + return; + } + // 查询临时授权人员 + Date date = new Date(); + LambdaQueryWrapper authUserWrapper = new LambdaQueryWrapper<>(); + authUserWrapper.eq(StringUtils.isNotBlank(id), 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)) { + // 有权限 + return; + } + // 起草部门 + if (sysUser.getDepartIds().equals(lawsEnterpriseStandard.getMainDraftingUnit())){ + // 有权限 + return; + } + // 无权限 + noAccess(); + } + } + + private void noAccess() { + if(LanguageEnum.CN.equals(MessageUtils.getLanguage())) { + throw new JeroBootException("无权限!"); + }else{ + throw new JeroBootException("No access!"); + } + } + @Override public void editDocumentSplitDetail(Map parameter) { // 查询全部字段列表 diff --git a/laws-modules/src/main/java/com/jero/modules/split/service/impl/FileSplitItemsEOServiceImpl.java b/laws-modules/src/main/java/com/jero/modules/split/service/impl/FileSplitItemsEOServiceImpl.java index f7b191f3..209cd968 100644 --- a/laws-modules/src/main/java/com/jero/modules/split/service/impl/FileSplitItemsEOServiceImpl.java +++ b/laws-modules/src/main/java/com/jero/modules/split/service/impl/FileSplitItemsEOServiceImpl.java @@ -1674,6 +1674,8 @@ public class FileSplitItemsEOServiceImpl extends ServiceImpl importSplitResult(String splitFileId, String cut, SarFileSplitInfoEO sarFileSplitInfoEO) throws IOException { + // 企标权限校验 + documentSplitService.enterpriseCheck(sarFileSplitInfoEO); // 唯一校验 documentSplitService.uniqueCheck(sarFileSplitInfoEO);