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) { 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<>(); // LambdaQueryWrapper<LawsEnterpriseStandard> esWrapper = new LambdaQueryWrapper<>();
esWrapper.in(LawsEnterpriseStandard::getStandardNumber, originStandardNoList); // esWrapper.in(LawsEnterpriseStandard::getStandardNumber, originStandardNoList);
List<LawsEnterpriseStandard> esList = enterpriseStandardService.list(esWrapper); // List<LawsEnterpriseStandard> esList = enterpriseStandardService.list(esWrapper);
// 转换成key为企标编号的map // // 转换成key为企标编号的map
Map<String, LawsEnterpriseStandard> esMap = esList.stream().collect(Collectors.toMap(LawsEnterpriseStandard::getStandardNumber, item -> item)); // Map<String, LawsEnterpriseStandard> esMap = esList.stream().collect(Collectors.toMap(LawsEnterpriseStandard::getStandardNumber, item -> item));
list.forEach(item -> { list.forEach(item -> {
// 如果是制定则去除掉所有的原企标名称 原企标编号 // 如果是制定则去除掉所有的原企标名称 原企标编号
@@ -539,6 +539,10 @@ public class ProcessEsAnnualInitServiceImpl extends ServiceImpl<ProcessEsAnnualI
} else { } else {
item.setChangeStatus(ESPChangeType.CHANGE.getValue()); 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) { private List<String> validationList(List<ProcessEsAnnualInit> list, List<SysDictItemCore> listDict) {
// 找到各标准等级的授权部门
Map<String, List<String>> authDeptMap = excelUtils.getAllLevelAuthDeptMap();
List<LawsEnterpriseStandard> esList = enterpriseStandardService.list(); List<LawsEnterpriseStandard> esList = enterpriseStandardService.list();
List<String> errorMsgs = new ArrayList<>(); List<String> errorMsgs = new ArrayList<>();
@@ -588,7 +595,7 @@ public class ProcessEsAnnualInitServiceImpl extends ServiceImpl<ProcessEsAnnualI
String contactUser = plan.getContactUser(); String contactUser = plan.getContactUser();
String standardSystem = plan.getEnStandardSystem(); String standardSystem = plan.getEnStandardSystem();
String standardType = plan.getStandardType(); String standardType = plan.getStandardType();
String enStandardClassification = plan.getEnStandardClassification(); String standardClassification = plan.getEnStandardClassification();
String enStandardCode = plan.getEnStandardCode(); String enStandardCode = plan.getEnStandardCode();
String partName = plan.getComponentName(); String partName = plan.getComponentName();
String draftPlannedCompleteDateString = plan.getDraftPlannedCompleteDateString(); String draftPlannedCompleteDateString = plan.getDraftPlannedCompleteDateString();
@@ -601,8 +608,9 @@ public class ProcessEsAnnualInitServiceImpl extends ServiceImpl<ProcessEsAnnualI
// 检查制修订类型 编号 名称 // 检查制修订类型 编号 名称
errMsg.append(validProjectType(plan, listDict, esList)); 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.validCooperateUnit(cooperationUnit, listDict));
errMsg.append(excelUtils.validMainDraftingUser(mainDraftingUser, listDict)); errMsg.append(excelUtils.validMainDraftingUser(mainDraftingUser, listDict));
errMsg.append(excelUtils.validMainDraftingUnit(mainDraftingUnit, 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.validContactUser(contactUser, listDict));
errMsg.append(excelUtils.validStandardType(standardType, listDict)); errMsg.append(excelUtils.validStandardType(standardType, listDict));
errMsg.append(excelUtils.validStandardCode(enStandardCode, listDict)); errMsg.append(excelUtils.validStandardCode(enStandardCode, listDict));
errMsg.append(excelUtils.validStandardClassification(enStandardClassification, listDict));
errMsg.append(excelUtils.validPartName(partName, listDict)); errMsg.append(excelUtils.validPartName(partName, listDict));
errMsg.append(excelUtils.validSingleDateNotBeforeToday(draftPlannedCompleteDateString, "草稿计划完成日期")); errMsg.append(excelUtils.validSingleDateNotBeforeToday(draftPlannedCompleteDateString, "草稿计划完成日期"));
errMsg.append(excelUtils.validSingleDateNotBeforeToday(solicitationDraftPlanCompleteDateString, "征求意见稿计划完成日期")); errMsg.append(excelUtils.validSingleDateNotBeforeToday(solicitationDraftPlanCompleteDateString, "征求意见稿计划完成日期"));
@@ -394,13 +394,13 @@ public class ProcessEsAnnualReportServiceImpl extends ServiceImpl<ProcessEsAnnua
} }
private void cleanData(List<ProcessEsAnnualReport> list) { private void cleanData(List<ProcessEsAnnualReport> list) {
List<String> originStandardNoList = list.stream().map(ProcessEsAnnualReport::getOriginEnStandardNo).collect(Collectors.toList()); // List<String> originStandardNoList = list.stream().map(ProcessEsAnnualReport::getOriginEnStandardNo).collect(Collectors.toList());
//
LambdaQueryWrapper<LawsEnterpriseStandard> esWrapper = new LambdaQueryWrapper<>(); // LambdaQueryWrapper<LawsEnterpriseStandard> esWrapper = new LambdaQueryWrapper<>();
esWrapper.in(LawsEnterpriseStandard::getStandardNumber, originStandardNoList); // esWrapper.in(LawsEnterpriseStandard::getStandardNumber, originStandardNoList);
List<LawsEnterpriseStandard> esList = enterpriseStandardService.list(esWrapper); // List<LawsEnterpriseStandard> esList = enterpriseStandardService.list(esWrapper);
// 转换成key为企标编号的map // // 转换成key为企标编号的map
Map<String, LawsEnterpriseStandard> esMap = esList.stream().collect(Collectors.toMap(LawsEnterpriseStandard::getStandardNumber, item -> item)); // Map<String, LawsEnterpriseStandard> esMap = esList.stream().collect(Collectors.toMap(LawsEnterpriseStandard::getStandardNumber, item -> item));
list.forEach(item -> { list.forEach(item -> {
// 如果是制定则去除掉所有的原企标名称 原企标编号 // 如果是制定则去除掉所有的原企标名称 原企标编号
@@ -419,6 +419,10 @@ public class ProcessEsAnnualReportServiceImpl extends ServiceImpl<ProcessEsAnnua
} else { } else {
item.setChangeStatus(ESPChangeType.CHANGE.getValue()); 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) { private List<String> validationList(List<ProcessEsAnnualReport> list, List<SysDictItemCore> listDict) {
// 找到各标准等级的授权部门
Map<String, List<String>> authDeptMap = excelUtils.getAllLevelAuthDeptMap();
List<LawsEnterpriseStandard> esList = enterpriseStandardService.list(); List<LawsEnterpriseStandard> esList = enterpriseStandardService.list();
List<String> errorMsgs = new ArrayList<>(); List<String> errorMsgs = new ArrayList<>();
@@ -478,8 +485,9 @@ public class ProcessEsAnnualReportServiceImpl extends ServiceImpl<ProcessEsAnnua
// 检查制修订类型 编号 名称 // 检查制修订类型 编号 名称
errMsg.append(validProjectType(plan, listDict, esList)); 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.validCooperateUnit(cooperationUnit, listDict));
errMsg.append(excelUtils.validMainDraftingUser(mainDraftingUser, listDict)); errMsg.append(excelUtils.validMainDraftingUser(mainDraftingUser, listDict));
errMsg.append(excelUtils.validMainDraftingUnit(mainDraftingUnit, 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.validWorkGroup(workGroup, listDict));
errMsg.append(excelUtils.validStandardSystem(standardSystem, listDict)); errMsg.append(excelUtils.validStandardSystem(standardSystem, listDict));
errMsg.append(excelUtils.validStandardType(standardType, listDict)); errMsg.append(excelUtils.validStandardType(standardType, listDict));
errMsg.append(excelUtils.validStandardClassification(standardClassification, listDict));
errMsg.append(excelUtils.validSingleDateMustInputNotBeforeToday(draftPlannedCompleteDateString, "草稿计划完成日期")); errMsg.append(excelUtils.validSingleDateMustInputNotBeforeToday(draftPlannedCompleteDateString, "草稿计划完成日期"));
errMsg.append(excelUtils.validSingleDateMustInputNotBeforeToday(solicitationDraftPlanCompleteDateString, "征求意见稿计划完成日期")); errMsg.append(excelUtils.validSingleDateMustInputNotBeforeToday(solicitationDraftPlanCompleteDateString, "征求意见稿计划完成日期"));
errMsg.append(excelUtils.validSingleDateMustInputNotBeforeToday(planApprovalDateString, "计划报批日期")); errMsg.append(excelUtils.validSingleDateMustInputNotBeforeToday(planApprovalDateString, "计划报批日期"));
@@ -1,6 +1,7 @@
package com.jero.modules.activiti.util; package com.jero.modules.activiti.util;
import cn.hutool.core.util.StrUtil; import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.jero.common.api.CommonAPI; import com.jero.common.api.CommonAPI;
import com.jero.common.system.vo.SysDictItemCore; import com.jero.common.system.vo.SysDictItemCore;
import com.jero.common.util.oConvertUtils; 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.common.util.ImportUtil;
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;
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 com.jero.modules.system.entity.SysDictItem;
import org.apache.poi.hssf.usermodel.HSSFWorkbook; import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.ss.usermodel.Cell; import org.apache.poi.ss.usermodel.Cell;
@@ -46,6 +51,12 @@ public class ExcelUtils {
@Resource @Resource
private ImportUtil importUtil; private ImportUtil importUtil;
@Resource
private ILawsGradeService gradeService;
@Resource
private ILawsEnterpriseStandardLevelService enterpriseStandardLevelService;
@Resource @Resource
private ILawsEnterpriseStandardService enterpriseStandardService; private ILawsEnterpriseStandardService enterpriseStandardService;
@@ -234,19 +245,6 @@ public class ExcelUtils {
return textValue.toString(); 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) { public String validStandardType(String value, List<SysDictItemCore> listDict) {
// 非空检查 // 非空检查
if (StrUtil.isBlank(value)) { if (StrUtil.isBlank(value)) {
@@ -259,18 +257,48 @@ public class ExcelUtils {
return ""; return "";
} }
public String validAuthDept(String value, List<SysDictItemCore> listDict) { public String validAuthDept(String authDept, List<SysDictItemCore> listDict,
// 非空检查 String standardClassification, Map<String, List<String>> authDeptMap) {
if (StrUtil.isBlank(value)) { if (StrUtil.isBlank(standardClassification)) {
return "'授权部门'不能为空。"; return "'标准等级分类'不能为空。";
} }
// 检查授权部门 // 检查授权部门
if (!excelUtils.validDict("depart_name", value, "sys_depart", "id", false, listDict)) { if (!excelUtils.validDict("standard_grade_classify", standardClassification, null,
return "'授权部门'无效。"; 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 ""; return "";
} }
private boolean isMatchingAuthDept(List<String> authDeptList, List<String> levelDeptList) {
return new HashSet<>(levelDeptList).containsAll(authDeptList);
}
public String validCooperateUnit(String value, List<SysDictItemCore> listDict) { public String validCooperateUnit(String value, List<SysDictItemCore> listDict) {
// 非空检查 // 非空检查
if (StrUtil.isBlank(value)) { if (StrUtil.isBlank(value)) {
@@ -419,4 +447,23 @@ public class ExcelUtils {
} }
return ""; 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;
}
} }