Merge remote-tracking branch 'origin/master'

This commit is contained in:
2023-11-10 16:43:28 +08:00
2 changed files with 67 additions and 20 deletions
@@ -1,5 +1,6 @@
package com.jero.modules.laws.documenttool.service.impl; package com.jero.modules.laws.documenttool.service.impl;
import cn.hutool.core.collection.CollUtil;
import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSON;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; 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.DocumentSplitMapper;
import com.jero.modules.laws.documenttool.mapper.LawsDocumentSplitMapper; import com.jero.modules.laws.documenttool.mapper.LawsDocumentSplitMapper;
import com.jero.modules.laws.documenttool.service.IDocumentSplitService; 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.entity.EnterpriseStandardAuthUser;
import com.jero.modules.laws.enterprise.service.EnterpriseStandardAuthDeptService;
import com.jero.modules.laws.enterprise.service.EnterpriseStandardAuthUserService; import com.jero.modules.laws.enterprise.service.EnterpriseStandardAuthUserService;
import com.jero.modules.laws.standard.entity.LawsEnterpriseStandard; import com.jero.modules.laws.standard.entity.LawsEnterpriseStandard;
import com.jero.modules.laws.standard.service.ILawsEnterpriseStandardService; 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.SysDict;
import com.jero.modules.system.entity.SysDictItem; import com.jero.modules.system.entity.SysDictItem;
import com.jero.modules.system.entity.SysUser; 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.ISysDictItemService;
import com.jero.modules.system.service.ISysDictService; 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.system.service.ISysUserService;
import com.jero.modules.tag.entity.LawsTag; import com.jero.modules.tag.entity.LawsTag;
import com.jero.modules.tag.enums.LawsFieldTypeEnum; import com.jero.modules.tag.enums.LawsFieldTypeEnum;
@@ -100,6 +105,8 @@ public class DocumentSplitServiceImpl implements IDocumentSplitService {
private final ILawsEnterpriseStandardLevelService lawsEnterpriseStandardLevelService; private final ILawsEnterpriseStandardLevelService lawsEnterpriseStandardLevelService;
private final EnterpriseStandardAuthUserService enterpriseStandardAuthUserService; private final EnterpriseStandardAuthUserService enterpriseStandardAuthUserService;
private final ISysUserService sysUserService; private final ISysUserService sysUserService;
private final EnterpriseStandardAuthDeptService enterpriseStandardAuthDeptService;
private final ISysUserDepartService sysUserDepartService;
private static final String INFO_ID = "info_id"; private static final String INFO_ID = "info_id";
private static final String ID = "id"; private static final String ID = "id";
private static final String IDS = "ids"; private static final String IDS = "ids";
@@ -121,7 +128,9 @@ public class DocumentSplitServiceImpl implements IDocumentSplitService {
ILawsEnterpriseStandardService lawsEnterpriseStandardService, ILawsEnterpriseStandardService lawsEnterpriseStandardService,
ILawsEnterpriseStandardLevelService lawsEnterpriseStandardLevelService, ILawsEnterpriseStandardLevelService lawsEnterpriseStandardLevelService,
EnterpriseStandardAuthUserService enterpriseStandardAuthUserService, EnterpriseStandardAuthUserService enterpriseStandardAuthUserService,
ISysUserService sysUserService) { ISysUserService sysUserService,
EnterpriseStandardAuthDeptService enterpriseStandardAuthDeptService,
ISysUserDepartService sysUserDepartService) {
this.documentSplitMapper = documentSplitMapper; this.documentSplitMapper = documentSplitMapper;
this.sarFileSplitInfoService = sarFileSplitInfoService; this.sarFileSplitInfoService = sarFileSplitInfoService;
this.lawsCommonMapper = lawsCommonMapper; this.lawsCommonMapper = lawsCommonMapper;
@@ -135,10 +144,14 @@ public class DocumentSplitServiceImpl implements IDocumentSplitService {
this.lawsEnterpriseStandardLevelService = lawsEnterpriseStandardLevelService; this.lawsEnterpriseStandardLevelService = lawsEnterpriseStandardLevelService;
this.enterpriseStandardAuthUserService = enterpriseStandardAuthUserService; this.enterpriseStandardAuthUserService = enterpriseStandardAuthUserService;
this.sysUserService = sysUserService; this.sysUserService = sysUserService;
this.enterpriseStandardAuthDeptService = enterpriseStandardAuthDeptService;
this.sysUserDepartService = sysUserDepartService;
} }
@Value("${jero.path.exportExcelTempPath}") @Value("${jero.path.exportExcelTempPath}")
private String exportExcelTempPath; private String exportExcelTempPath;
@Value("${draftDepartName}")
private String draftDepartName;
@Override @Override
public IPage<DocumentSplitInfo> queryByPage(DocumentSplitInfo documentSplitInfo, Integer pageNo, Integer pageSize) { public IPage<DocumentSplitInfo> queryByPage(DocumentSplitInfo documentSplitInfo, Integer pageNo, Integer pageSize) {
@@ -300,6 +313,7 @@ public class DocumentSplitServiceImpl implements IDocumentSplitService {
@Override @Override
public void enterpriseCheck(SarFileSplitInfoEO sarFileSplitInfoEO) { public void enterpriseCheck(SarFileSplitInfoEO sarFileSplitInfoEO) {
// 企标
LawsEnterpriseStandard lawsEnterpriseStandard = lawsEnterpriseStandardService.getOne( LawsEnterpriseStandard lawsEnterpriseStandard = lawsEnterpriseStandardService.getOne(
new LambdaQueryWrapper<LawsEnterpriseStandard>() new LambdaQueryWrapper<LawsEnterpriseStandard>()
.eq(LawsEnterpriseStandard::getStandardNumber, sarFileSplitInfoEO.getSerialNumber())); .eq(LawsEnterpriseStandard::getStandardNumber, sarFileSplitInfoEO.getSerialNumber()));
@@ -308,44 +322,73 @@ public class DocumentSplitServiceImpl implements IDocumentSplitService {
if (StringUtils.isBlank(sarFileSplitInfoEO.getStandardId())){ if (StringUtils.isBlank(sarFileSplitInfoEO.getStandardId())){
sarFileSplitInfoEO.setStandardId(id); sarFileSplitInfoEO.setStandardId(id);
} }
// 登陆人信息
LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal(); LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
// 等级 // 登陆人所在部门
String gradeClassification = lawsEnterpriseStandard.getGradeClassification(); List<DepartIdModel> departIdModels = sysUserDepartService.queryDepartIdsOfUser(sysUser.getId());
if ("2".equals(gradeClassification)){ List<String> departIds = departIdModels.stream().map(DepartIdModel::getKey).collect(Collectors.toList());
List<LawsEnterpriseStandardLevel> standardLevelList = lawsEnterpriseStandardLevelService.list(); List<String> departNames = departIdModels.stream().map(DepartIdModel::getTitle).collect(Collectors.toList());
List<String> levelDeptIds = standardLevelList.stream().map(LawsEnterpriseStandardLevel::getDeptId).collect(Collectors.toList());
if (levelDeptIds.contains(sysUser.getDepartIds())){ // 起草部门有所有企标的查看权限
// 有权限 if (!departNames.isEmpty() && departNames.contains(draftDepartName)) {
return;
}
}
if ("4".equals(gradeClassification)
&& (sysUser.getDepartIds().equals(lawsEnterpriseStandard.getMainDraftingUnit()))){
// 有权限 // 有权限
return; return;
} }
// 查询临时授权人员 // 查询临时授权人员
Date date = new Date(); Date date = new Date();
LambdaQueryWrapper<EnterpriseStandardAuthUser> authUserWrapper = new LambdaQueryWrapper<>(); LambdaQueryWrapper<EnterpriseStandardAuthUser> authUserWrapper = new LambdaQueryWrapper<>();
authUserWrapper.eq(StringUtils.isNotBlank(id), EnterpriseStandardAuthUser::getStandardId, id); authUserWrapper.eq(EnterpriseStandardAuthUser::getStandardId, id);
authUserWrapper.eq(EnterpriseStandardAuthUser::getAuthUser, sysUser.getId()); authUserWrapper.eq(EnterpriseStandardAuthUser::getAuthUser, sysUser.getId());
authUserWrapper.ge(EnterpriseStandardAuthUser::getAuthExpireDate, date); authUserWrapper.ge(EnterpriseStandardAuthUser::getAuthExpireDate, date);
List<EnterpriseStandardAuthUser> authUserList = enterpriseStandardAuthUserService.list(authUserWrapper); List<EnterpriseStandardAuthUser> authUserList = enterpriseStandardAuthUserService.list(authUserWrapper);
Set<String> authStandardIds = authUserList.stream().map(EnterpriseStandardAuthUser::getStandardId).collect(Collectors.toSet()); if (!authUserList.isEmpty()){
if (authStandardIds.contains(id)) {
// 有权限 // 有权限
return; return;
} }
// 起草部门
if (sysUser.getDepartIds().equals(lawsEnterpriseStandard.getMainDraftingUnit())){ // 查询授权部门-和临时授权部门
LambdaQueryWrapper<EnterpriseStandardAuthDept> authDeptWrapper = new LambdaQueryWrapper<>();
authDeptWrapper.eq(EnterpriseStandardAuthDept::getStandardId, id);
authDeptWrapper.in(CollUtil.isNotEmpty(departIds), EnterpriseStandardAuthDept::getAuthDept, departIds);
List<EnterpriseStandardAuthDept> authDeptList = enterpriseStandardAuthDeptService.list(authDeptWrapper);
if (!authDeptList.isEmpty()){
// 有权限 // 有权限
return; return;
} }
authDeptWrapper.ge(EnterpriseStandardAuthDept::getAuthExpireDate, date);
List<EnterpriseStandardAuthDept> authDeptExpireDateList = enterpriseStandardAuthDeptService.list(authDeptWrapper);
if (!authDeptExpireDateList.isEmpty()){
// 有权限
return;
}
// 企标级别授权的部门
List<LawsEnterpriseStandardLevel> standardLevelList = lawsEnterpriseStandardLevelService.list();
List<String> levelDeptIds = standardLevelList.stream().map(LawsEnterpriseStandardLevel::getDeptId).collect(Collectors.toList());
if (levelCheck(lawsEnterpriseStandard, departIds, levelDeptIds)) return;
// 无权限 // 无权限
noAccess(); noAccess();
} }
} }
private static boolean levelCheck(LawsEnterpriseStandard lawsEnterpriseStandard, List<String> departIds, List<String> 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() { private void noAccess() {
if(LanguageEnum.CN.equals(MessageUtils.getLanguage())) { if(LanguageEnum.CN.equals(MessageUtils.getLanguage())) {
throw new JeroBootException("无权限!"); throw new JeroBootException("无权限!");
@@ -713,7 +756,7 @@ public class DocumentSplitServiceImpl implements IDocumentSplitService {
// 填充说明 // 填充说明
Cell cell = headerRowTwo.createCell(0); Cell cell = headerRowTwo.createCell(0);
String explain = "模版说明:\n" + String explain = "模版说明:\n" +
"1. 条文号/条文标题/条文内容不能为空\n" + "1. 条文号必填,条文标题条文内容非必填\n" +
"2. 仅支持zip格式文件夹"; "2. 仅支持zip格式文件夹";
CellStyle cellStyleTwo = workbook.createCellStyle(); CellStyle cellStyleTwo = workbook.createCellStyle();
@@ -87,12 +87,16 @@ public class SarFileSplitMenuEOServiceImpl extends ServiceImpl<SarFileSplitMenuE
} }
public List<SarFileSplitMenuEO> queryAllChildrenById(SarFileSplitMenuEO sarMenuEO) { public List<SarFileSplitMenuEO> queryAllChildrenById(SarFileSplitMenuEO sarMenuEO) {
List<SarFileSplitMenuEO> result = new ArrayList<>();
SarFileSplitMenuEO sarFileSplitMenuEO = dao.selectByPrimaryKey(sarMenuEO.getId()); SarFileSplitMenuEO sarFileSplitMenuEO = dao.selectByPrimaryKey(sarMenuEO.getId());
SarFileSplitMenuEOPage page = new SarFileSplitMenuEOPage(); SarFileSplitMenuEOPage page = new SarFileSplitMenuEOPage();
if (Objects.isNull(sarFileSplitMenuEO)){
return result;
}
page.setInfoId(sarFileSplitMenuEO.getInfoId()); page.setInfoId(sarFileSplitMenuEO.getInfoId());
List<SarFileSplitMenuEO> listAll = dao.queryByList(page); // 查询所有目录 List<SarFileSplitMenuEO> listAll = dao.queryByList(page); // 查询所有目录
List<SarFileSplitMenuEO> result = new ArrayList<>();
// 递归查询 指定父节点下的所有子节点,包括父节点 // 递归查询 指定父节点下的所有子节点,包括父节点
if (CollectionUtil.isNotEmpty(listAll)) { if (CollectionUtil.isNotEmpty(listAll)) {
result.add(sarFileSplitMenuEO); // 加上父节点 result.add(sarFileSplitMenuEO); // 加上父节点