feat: 年度制修订导入根据标准等级分类限制授权部门能够导入的字段

This commit is contained in:
2024-01-18 16:04:21 +08:00
parent 02b39f9091
commit 0947c39c6e
3 changed files with 98 additions and 37 deletions
@@ -514,13 +514,13 @@ public class ProcessEsAnnualInitServiceImpl extends ServiceImpl<ProcessEsAnnualI
}
private void cleanData(List<ProcessEsAnnualInit> list) {
List<String> originStandardNoList = list.stream().map(ProcessEsAnnualInit::getOriginEnStandardNo).collect(Collectors.toList());
// List<String> originStandardNoList = list.stream().map(ProcessEsAnnualInit::getOriginEnStandardNo).collect(Collectors.toList());
LambdaQueryWrapper<LawsEnterpriseStandard> esWrapper = new LambdaQueryWrapper<>();
esWrapper.in(LawsEnterpriseStandard::getStandardNumber, originStandardNoList);
List<LawsEnterpriseStandard> esList = enterpriseStandardService.list(esWrapper);
// 转换成key为企标编号的map
Map<String, LawsEnterpriseStandard> esMap = esList.stream().collect(Collectors.toMap(LawsEnterpriseStandard::getStandardNumber, item -> item));
// LambdaQueryWrapper<LawsEnterpriseStandard> esWrapper = new LambdaQueryWrapper<>();
// esWrapper.in(LawsEnterpriseStandard::getStandardNumber, originStandardNoList);
// List<LawsEnterpriseStandard> esList = enterpriseStandardService.list(esWrapper);
// // 转换成key为企标编号的map
// Map<String, LawsEnterpriseStandard> esMap = esList.stream().collect(Collectors.toMap(LawsEnterpriseStandard::getStandardNumber, item -> item));
list.forEach(item -> {
// 如果是制定则去除掉所有的原企标名称 原企标编号
@@ -539,6 +539,10 @@ public class ProcessEsAnnualInitServiceImpl extends ServiceImpl<ProcessEsAnnualI
} else {
item.setChangeStatus(ESPChangeType.CHANGE.getValue());
}
// 如果标准等级分类是0级或3级,则需要将授权部门置空
if (item.getEnStandardClassification().equals("1") || item.getEnStandardClassification().equals("4")) {
item.setAuthDept(null);
}
});
}
@@ -564,6 +568,9 @@ public class ProcessEsAnnualInitServiceImpl extends ServiceImpl<ProcessEsAnnualI
}
private List<String> validationList(List<ProcessEsAnnualInit> list, List<SysDictItemCore> listDict) {
// 找到各标准等级的授权部门
Map<String, List<String>> authDeptMap = excelUtils.getAllLevelAuthDeptMap();
List<LawsEnterpriseStandard> esList = enterpriseStandardService.list();
List<String> errorMsgs = new ArrayList<>();
@@ -588,7 +595,7 @@ public class ProcessEsAnnualInitServiceImpl extends ServiceImpl<ProcessEsAnnualI
String contactUser = plan.getContactUser();
String standardSystem = plan.getEnStandardSystem();
String standardType = plan.getStandardType();
String enStandardClassification = plan.getEnStandardClassification();
String standardClassification = plan.getEnStandardClassification();
String enStandardCode = plan.getEnStandardCode();
String partName = plan.getComponentName();
String draftPlannedCompleteDateString = plan.getDraftPlannedCompleteDateString();
@@ -601,8 +608,9 @@ public class ProcessEsAnnualInitServiceImpl extends ServiceImpl<ProcessEsAnnualI
// 检查制修订类型 编号 名称
errMsg.append(validProjectType(plan, listDict, esList));
// 检查标准等级分类和授权部门
errMsg.append(excelUtils.validAuthDept(authDept, listDict, standardClassification, authDeptMap));
// 检查所有数据字典校验的字段
errMsg.append(excelUtils.validAuthDept(authDept, listDict));
errMsg.append(excelUtils.validCooperateUnit(cooperationUnit, listDict));
errMsg.append(excelUtils.validMainDraftingUser(mainDraftingUser, listDict));
errMsg.append(excelUtils.validMainDraftingUnit(mainDraftingUnit, listDict));
@@ -612,7 +620,6 @@ public class ProcessEsAnnualInitServiceImpl extends ServiceImpl<ProcessEsAnnualI
errMsg.append(excelUtils.validContactUser(contactUser, listDict));
errMsg.append(excelUtils.validStandardType(standardType, listDict));
errMsg.append(excelUtils.validStandardCode(enStandardCode, listDict));
errMsg.append(excelUtils.validStandardClassification(enStandardClassification, listDict));
errMsg.append(excelUtils.validPartName(partName, listDict));
errMsg.append(excelUtils.validSingleDateNotBeforeToday(draftPlannedCompleteDateString, "草稿计划完成日期"));
errMsg.append(excelUtils.validSingleDateNotBeforeToday(solicitationDraftPlanCompleteDateString, "征求意见稿计划完成日期"));
@@ -394,13 +394,13 @@ public class ProcessEsAnnualReportServiceImpl extends ServiceImpl<ProcessEsAnnua
}
private void cleanData(List<ProcessEsAnnualReport> list) {
List<String> originStandardNoList = list.stream().map(ProcessEsAnnualReport::getOriginEnStandardNo).collect(Collectors.toList());
LambdaQueryWrapper<LawsEnterpriseStandard> esWrapper = new LambdaQueryWrapper<>();
esWrapper.in(LawsEnterpriseStandard::getStandardNumber, originStandardNoList);
List<LawsEnterpriseStandard> esList = enterpriseStandardService.list(esWrapper);
// 转换成key为企标编号的map
Map<String, LawsEnterpriseStandard> esMap = esList.stream().collect(Collectors.toMap(LawsEnterpriseStandard::getStandardNumber, item -> item));
// List<String> originStandardNoList = list.stream().map(ProcessEsAnnualReport::getOriginEnStandardNo).collect(Collectors.toList());
//
// LambdaQueryWrapper<LawsEnterpriseStandard> esWrapper = new LambdaQueryWrapper<>();
// esWrapper.in(LawsEnterpriseStandard::getStandardNumber, originStandardNoList);
// List<LawsEnterpriseStandard> esList = enterpriseStandardService.list(esWrapper);
// // 转换成key为企标编号的map
// Map<String, LawsEnterpriseStandard> esMap = esList.stream().collect(Collectors.toMap(LawsEnterpriseStandard::getStandardNumber, item -> item));
list.forEach(item -> {
// 如果是制定则去除掉所有的原企标名称 原企标编号
@@ -419,6 +419,10 @@ public class ProcessEsAnnualReportServiceImpl extends ServiceImpl<ProcessEsAnnua
} else {
item.setChangeStatus(ESPChangeType.CHANGE.getValue());
}
// 如果标准等级分类是0级或3级,则需要将授权部门置空
if (item.getEnStandardClassification().equals("1") || item.getEnStandardClassification().equals("4")) {
item.setAuthDept(null);
}
});
}
@@ -443,6 +447,9 @@ public class ProcessEsAnnualReportServiceImpl extends ServiceImpl<ProcessEsAnnua
}
private List<String> validationList(List<ProcessEsAnnualReport> list, List<SysDictItemCore> listDict) {
// 找到各标准等级的授权部门
Map<String, List<String>> authDeptMap = excelUtils.getAllLevelAuthDeptMap();
List<LawsEnterpriseStandard> esList = enterpriseStandardService.list();
List<String> errorMsgs = new ArrayList<>();
@@ -478,8 +485,9 @@ public class ProcessEsAnnualReportServiceImpl extends ServiceImpl<ProcessEsAnnua
// 检查制修订类型 编号 名称
errMsg.append(validProjectType(plan, listDict, esList));
// 检查标准等级分类和授权部门
errMsg.append(excelUtils.validAuthDept(authDept, listDict, standardClassification, authDeptMap));
// 检查所有数据字典校验的字段
errMsg.append(excelUtils.validAuthDept(authDept, listDict));
errMsg.append(excelUtils.validCooperateUnit(cooperationUnit, listDict));
errMsg.append(excelUtils.validMainDraftingUser(mainDraftingUser, listDict));
errMsg.append(excelUtils.validMainDraftingUnit(mainDraftingUnit, listDict));
@@ -488,7 +496,6 @@ public class ProcessEsAnnualReportServiceImpl extends ServiceImpl<ProcessEsAnnua
errMsg.append(excelUtils.validWorkGroup(workGroup, listDict));
errMsg.append(excelUtils.validStandardSystem(standardSystem, listDict));
errMsg.append(excelUtils.validStandardType(standardType, listDict));
errMsg.append(excelUtils.validStandardClassification(standardClassification, listDict));
errMsg.append(excelUtils.validSingleDateMustInputNotBeforeToday(draftPlannedCompleteDateString, "草稿计划完成日期"));
errMsg.append(excelUtils.validSingleDateMustInputNotBeforeToday(solicitationDraftPlanCompleteDateString, "征求意见稿计划完成日期"));
errMsg.append(excelUtils.validSingleDateMustInputNotBeforeToday(planApprovalDateString, "计划报批日期"));
@@ -1,6 +1,7 @@
package com.jero.modules.activiti.util;
import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.jero.common.api.CommonAPI;
import com.jero.common.system.vo.SysDictItemCore;
import com.jero.common.util.oConvertUtils;
@@ -9,6 +10,10 @@ import com.jero.modules.activiti.process.esInitChange.entity.enums.ESPProjectTyp
import com.jero.modules.laws.common.util.ImportUtil;
import com.jero.modules.laws.standard.entity.LawsEnterpriseStandard;
import com.jero.modules.laws.standard.service.ILawsEnterpriseStandardService;
import com.jero.modules.sys.entity.LawsEnterpriseStandardLevel;
import com.jero.modules.sys.entity.LawsGrade;
import com.jero.modules.sys.service.ILawsEnterpriseStandardLevelService;
import com.jero.modules.sys.service.ILawsGradeService;
import com.jero.modules.system.entity.SysDictItem;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.ss.usermodel.Cell;
@@ -46,6 +51,12 @@ public class ExcelUtils {
@Resource
private ImportUtil importUtil;
@Resource
private ILawsGradeService gradeService;
@Resource
private ILawsEnterpriseStandardLevelService enterpriseStandardLevelService;
@Resource
private ILawsEnterpriseStandardService enterpriseStandardService;
@@ -234,19 +245,6 @@ public class ExcelUtils {
return textValue.toString();
}
public String validStandardClassification(String value, List<SysDictItemCore> listDict) {
// 非空检查
if (StrUtil.isBlank(value)) {
return "'标准等级分类'不能为空。";
}
// 检查授权部门
if (!excelUtils.validDict("standard_grade_classify", value, null, null, true, listDict)) {
return "'标准等级分类'无效。";
}
return "";
}
public String validStandardType(String value, List<SysDictItemCore> listDict) {
// 非空检查
if (StrUtil.isBlank(value)) {
@@ -259,18 +257,48 @@ public class ExcelUtils {
return "";
}
public String validAuthDept(String value, List<SysDictItemCore> listDict) {
// 非空检查
if (StrUtil.isBlank(value)) {
return "'授权部门'不能为空。";
public String validAuthDept(String authDept, List<SysDictItemCore> listDict,
String standardClassification, Map<String, List<String>> authDeptMap) {
if (StrUtil.isBlank(standardClassification)) {
return "'标准等级分类'不能为空。";
}
// 检查授权部门
if (!excelUtils.validDict("depart_name", value, "sys_depart", "id", false, listDict)) {
return "'授权部门'无效。";
if (!excelUtils.validDict("standard_grade_classify", standardClassification, null,
null, true, listDict)) {
return "'标准等级分类'无效。";
}
String level = translateDictValue("standard_grade_classify", standardClassification, listDict);
if (level.equals("2") || level.equals("3")) {
if (StrUtil.isBlank(authDept)) {
return "'授权部门'不能为空。";
}
// 检查授权部门
if (!excelUtils.validDict("depart_name", authDept, "sys_depart", "id", false, listDict)) {
return "'授权部门'无效。";
}
// 将授权部门转换为idList
String deptIds = excelUtils.translateDictValue("depart_name", "id", "sys_depart", authDept, listDict);
boolean isMatching = isMatchingAuthDept(
Arrays.asList(deptIds.split(",")),
level.equals("2") ? authDeptMap.get("1") : authDeptMap.get("2")
);
if (!isMatching) {
return "'授权部门'和'标准等级分类'不匹配。";
}
}
return "";
}
private boolean isMatchingAuthDept(List<String> authDeptList, List<String> levelDeptList) {
return new HashSet<>(levelDeptList).containsAll(authDeptList);
}
public String validCooperateUnit(String value, List<SysDictItemCore> listDict) {
// 非空检查
if (StrUtil.isBlank(value)) {
@@ -419,4 +447,23 @@ public class ExcelUtils {
}
return "";
}
public Map<String, List<String>> getAllLevelAuthDeptMap() {
Map<String, List<String>> authDeptMap = new HashMap<>();
LambdaQueryWrapper<LawsGrade> gradeWrapper = new LambdaQueryWrapper<>();
gradeWrapper.eq(LawsGrade::getLevel, 1);
LawsGrade levelOne = gradeService.getOne(gradeWrapper);
gradeWrapper.clear();
gradeWrapper.eq(LawsGrade::getLevel, 2);
LawsGrade levelTwo = gradeService.getOne(gradeWrapper);
LambdaQueryWrapper<LawsEnterpriseStandardLevel> levelWrapper = new LambdaQueryWrapper<>();
levelWrapper.eq(LawsEnterpriseStandardLevel::getGradeId, levelOne.getId());
List<LawsEnterpriseStandardLevel> levelOneList = enterpriseStandardLevelService.list(levelWrapper);
levelWrapper.clear();
authDeptMap.put("1", levelOneList.stream().map(LawsEnterpriseStandardLevel::getDeptId).collect(Collectors.toList()));
levelWrapper.eq(LawsEnterpriseStandardLevel::getGradeId, levelTwo.getId());
List<LawsEnterpriseStandardLevel> levelTwoList = enterpriseStandardLevelService.list(levelWrapper);
authDeptMap.put("2", levelTwoList.stream().map(LawsEnterpriseStandardLevel::getDeptId).collect(Collectors.toList()));
return authDeptMap;
}
}