法规清单--交付物类型(树状结构)

This commit is contained in:
zhn
2022-05-27 17:55:30 +08:00
parent 9f835fa5ce
commit ec8b6cbc2a
3 changed files with 219 additions and 52 deletions
@@ -676,40 +676,10 @@ public class DummyInventoryInfoEOServiceImpl extends ServiceImpl<DummyInventoryI
* @param dummyInventoryInfoEOList
*/
private void treeDict(DummyInventoryInfoEO dummyInventoryInfoEO, List<DummyInventoryInfoEO> dummyInventoryInfoEOList) {
// Set<String> technologyTerritorySet = new HashSet<>();
// Set<String> designDeliverableTypeSet = new HashSet<>();
// Set<String> PrehomoDeliverableTypeSet = new HashSet<>();
// Set<String> verifyDeliverableTypeSet = new HashSet<>();
List<String> deliverableList = new ArrayList<>();
if(dummyInventoryInfoEOList.size() != 0){
for (DummyInventoryInfoEO record : dummyInventoryInfoEOList) {
// //技术领域
// if(StringUtils.isNotBlank(record.getTechnologyTerritory())){
// List<String> list = Arrays.asList(record.getTechnologyTerritory().split(","));
// technologyTerritorySet.addAll(list);
// }
// //设计交付物类型
// if(StringUtils.isNotBlank(record.getDesignDeliverableType())){
// List<String> list = Arrays.asList(record.getDesignDeliverableType().split(","));
// designDeliverableTypeSet.addAll(list);
// }
// //pre交付物类型
// if(StringUtils.isNotBlank(record.getPrehomoDeliverableType())){
// List<String> list = Arrays.asList(record.getPrehomoDeliverableType().split(","));
// PrehomoDeliverableTypeSet.addAll(list);
// }
//
// //验证交付物类型
// if(StringUtils.isNotBlank(record.getVerifyDeliverableType())){
// List<String> list = Arrays.asList(record.getVerifyDeliverableType().split(","));
// verifyDeliverableTypeSet.addAll(list);
// }
//对应标准
// if(StringUtils.isNotBlank(record.getCorrespondingStandard())){
// List<String> list = Arrays.asList(record.getCorrespondingStandard().split(","));
// correspondingStandardSet.addAll(list);
// }
//设计符合性确认交付物模板
if(StringUtils.isNotBlank(record.getDesignDeliverableTemplate())){
deliverableList.addAll(Arrays.asList(record.getDesignDeliverableTemplate().split(",")));
@@ -731,12 +701,7 @@ public class DummyInventoryInfoEOServiceImpl extends ServiceImpl<DummyInventoryI
}
//树形结构数据字典(技术领域)
List<SysCategory> categoryList = categoryList = sysCategoryService.list();
// if(technologyTerritorySet.size() != 0){
// LambdaQueryWrapper<SysCategory> wrapper = new LambdaQueryWrapper<>();
// wrapper.in(SysCategory::getId, technologyTerritorySet);
// categoryList = sysCategoryService.list(wrapper);
// }
List<SysCategory> categoryList = sysCategoryService.list();
for (DummyInventoryInfoEO record : dummyInventoryInfoEOList) {
//技术领域
@@ -745,21 +710,21 @@ public class DummyInventoryInfoEOServiceImpl extends ServiceImpl<DummyInventoryI
String technologyTerritoryName = getTreeName(dummyInventoryInfoEO, categoryList, technologyTerritoryList);
record.setTechnologyTerritoryName(technologyTerritoryName);
}
//设计交付物模板
//设计交付物类型
if(StringUtils.isNotBlank(record.getDesignDeliverableType())){
List<String> designDeliverableTypeList = Arrays.asList(record.getDesignDeliverableType().split(","));
String name = getTreeName(dummyInventoryInfoEO, categoryList, designDeliverableTypeList);
record.setDesignDeliverableTypeName(name);
}
//pre交付物模板
//pre交付物类型
if(StringUtils.isNotBlank(record.getPrehomoDeliverableType())){
List<String> prehomoDeliverableTypeList = Arrays.asList(record.getPrehomoDeliverableType().split(","));
String name = getTreeName(dummyInventoryInfoEO, categoryList, prehomoDeliverableTypeList);
record.setPrehomoDeliverableTypeName(name);
}
//验证交付物模板
//验证交付物类型
if(StringUtils.isNotBlank(record.getVerifyDeliverableType())){
List<String> verifyDeliverableTypeList = Arrays.asList(record.getVerifyDeliverableType().split(","));
String name = getTreeName(dummyInventoryInfoEO, categoryList, verifyDeliverableTypeList);
@@ -200,6 +200,8 @@ public class ProjectLawsInventoryEO implements Serializable {
@ApiModelProperty(value = "设计符合性确认-交付物类型")
@Dict(dicCode ="deliverable_template")
private String designDeliverableType;
@TableField(exist = false)
private String designDeliverableTypeName;
/**设计符合性确认-交付物模板*/
@ApiModelProperty(value = "设计符合性确认-交付物模板")
@@ -257,6 +259,8 @@ public class ProjectLawsInventoryEO implements Serializable {
@ApiModelProperty(value = "prehomo确认-1")
@Dict(dicCode ="deliverable_template")
private String prehomoDeliverableType;
@TableField(exist = false)
private String prehomoDeliverableTypeName;
/**prehomo确认-交付物模板*/
@ApiModelProperty(value = "prehomo确认-交付物模板")
@@ -314,6 +318,8 @@ public class ProjectLawsInventoryEO implements Serializable {
@ApiModelProperty(value = "验证符合性确认-交付物类型")
@Dict(dicCode ="deliverable_template")
private String verifyDeliverableType;
@TableField(exist = false)
private String verifyDeliverableTypeName;
/**验证符合性确认-交付物模板*/
@ApiModelProperty(value = "验证符合性确认-交付物模板")
@@ -47,6 +47,7 @@ import com.jero.modules.system.entity.SysAnnouncement;
import com.jero.modules.system.entity.SysCategory;
import com.jero.modules.system.entity.SysDictItem;
import com.jero.modules.system.entity.SysUser;
import com.jero.modules.system.mapper.SysCategoryMapper;
import com.jero.modules.system.mapper.SysDictItemMapper;
import com.jero.modules.system.mapper.SysUserMapper;
import com.jero.modules.system.service.ISysAnnouncementService;
@@ -194,6 +195,8 @@ public class ProjectLawsInventoryEOServiceImpl extends ServiceImpl<ProjectLawsIn
@Autowired
private WorkFlowFeignClientImpl workFlowFeignClient;
@Autowired
SysCategoryMapper sysCategoryMapper;
/**
* 保存
@@ -586,6 +589,8 @@ public class ProjectLawsInventoryEOServiceImpl extends ServiceImpl<ProjectLawsIn
@Override
public void dataDispose(List<ProjectLawsInventoryEO> list,LoginUser currentUser,int isProjectRole,String cut){
if(CollectionUtils.isNotEmpty(list)){
//树形结构数据字典(技术领域)
List<SysCategory> categoryList = sysCategoryService.list();
List<String> userIdList = new ArrayList<>();
List<String> deliverableList = new ArrayList<>();
List<String> correspondingStandardList = new ArrayList<>();
@@ -602,6 +607,28 @@ public class ProjectLawsInventoryEOServiceImpl extends ServiceImpl<ProjectLawsIn
}
for (ProjectLawsInventoryEO projectLawsInventoryEO : list) {
//处理交付物类型
String designDeliverableType = projectLawsInventoryEO.getDesignDeliverableType();
String prehomoDeliverableType = projectLawsInventoryEO.getPrehomoDeliverableType();
String verifyDeliverableType = projectLawsInventoryEO.getVerifyDeliverableType();
//设计交付物类型
if(StringUtils.isNotBlank(designDeliverableType)){
List<String> designDeliverableTypeList = Arrays.asList(designDeliverableType.split(","));
String name = getTreeName(cut, categoryList, designDeliverableTypeList);
projectLawsInventoryEO.setDesignDeliverableTypeName(name);
}
//pre交付物类型
if(StringUtils.isNotBlank(prehomoDeliverableType)){
List<String> prehomoDeliverableTypeList = Arrays.asList(prehomoDeliverableType.split(","));
String name = getTreeName(cut, categoryList, prehomoDeliverableTypeList);
projectLawsInventoryEO.setPrehomoDeliverableTypeName(name);
}
//验证交付物类型
if(StringUtils.isNotBlank(verifyDeliverableType)){
List<String> verifyDeliverableTypeList = Arrays.asList(verifyDeliverableType.split(","));
String name = getTreeName(cut, categoryList, verifyDeliverableTypeList);
projectLawsInventoryEO.setVerifyDeliverableTypeName(name);
}
StringBuilder sb = new StringBuilder();
if(StringUtils.isNotBlank(projectLawsInventoryEO.getCorrespondingStandard()) && bussDocumentLibraryEOS.size() != 0){
for (String correspondingStandard : projectLawsInventoryEO.getCorrespondingStandard().split(",")) {
@@ -827,6 +854,25 @@ public class ProjectLawsInventoryEOServiceImpl extends ServiceImpl<ProjectLawsIn
}
}
private String getTreeName(String cut, List<SysCategory> categoryList, List<String> technologyTerritoryList) {
StringBuilder sb = new StringBuilder();
for (String technologyTerritory : technologyTerritoryList) {
List<SysCategory> collect = categoryList.stream().filter(e -> technologyTerritory.equals(e.getId())).collect(Collectors.toList());
if(collect.size() != 0){
if (CutEnum.CN.getValue().equals(cut)) {
sb.append(collect.get(0).getName() + ",");
} else {
sb.append(collect.get(0).getEnName()+ ",");
}
}
}
String technologyTerritoryName = "";
if (StringUtils.isNotBlank(sb)) {
technologyTerritoryName = sb.substring(0, sb.length() - 1);
}
return technologyTerritoryName;
}
private String getFileName(ProjectLawsInventoryEO projectLawsInventoryEO, List<OSSFile> fileInfos, String deliverableTemplate){
StringBuilder sb = new StringBuilder();
for (String s : deliverableTemplate.split(",")) {
@@ -2150,7 +2196,7 @@ public class ProjectLawsInventoryEOServiceImpl extends ServiceImpl<ProjectLawsIn
//所有用户
List<SysUser> sysUserList = sysUserService.list();
//数据转换(文件名称,对应标准)
dataTransition(dataList, fileInfos,sysUserList);
dataTransition(dataList, fileInfos,sysUserList,projectLawsInventoryEO);
OutputStream os = null;
try {
@@ -2178,7 +2224,7 @@ public class ProjectLawsInventoryEOServiceImpl extends ServiceImpl<ProjectLawsIn
dataListEn.add(ProjectLawsInventoryEOEn);
}
//下拉选中英文转换
transition(dataListEn);
transition(dataListEn,projectLawsInventoryEO);
workbook = ExcelExportUtil.exportExcel(exportParams, ProjectLawsInventoryEOEn.class, dataListEn);
}
@@ -2211,13 +2257,40 @@ public class ProjectLawsInventoryEOServiceImpl extends ServiceImpl<ProjectLawsIn
}
private void transition(List<ProjectLawsInventoryEOEn> dataListEn){
private void transition(List<ProjectLawsInventoryEOEn> dataListEn,ProjectLawsInventoryEO projectLawsInventoryEOTemp){
//下拉选数据字典
List<SysCategory> sysCategoryList = sysCategoryService.list();
//技术领域数据字典
List<SysDictItem> sysDictItems = sysDictItemServiceImpl.selectItemsAll();
for (ProjectLawsInventoryEOEn projectLawsInventoryEOEn : dataListEn) {
//设计交付物类型 inventoryInfoEO
if(StringUtils.isNotBlank(projectLawsInventoryEOEn.getDesignDeliverableType())){
StringBuilder sb = getStringBuilder(projectLawsInventoryEOTemp, sysCategoryList, projectLawsInventoryEOEn.getDesignDeliverableType());
if(StringUtils.isNotBlank(sb)){
String substring = sb.substring(0, sb.length() - 1);
projectLawsInventoryEOEn.setDesignDeliverableType(substring);
}
}
//pre交付物类型
if(StringUtils.isNotBlank(projectLawsInventoryEOEn.getPrehomoDeliverableType())){
StringBuilder sb = getStringBuilder(projectLawsInventoryEOTemp, sysCategoryList, projectLawsInventoryEOEn.getPrehomoDeliverableType());
if(StringUtils.isNotBlank(sb)){
String substring = sb.substring(0, sb.length() - 1);
projectLawsInventoryEOEn.setPrehomoDeliverableType(substring);
}
}
//验证交付物类型
if(StringUtils.isNotBlank(projectLawsInventoryEOEn.getVerifyDeliverableType())){
StringBuilder sb = getStringBuilder(projectLawsInventoryEOTemp, sysCategoryList, projectLawsInventoryEOEn.getVerifyDeliverableType());
if(StringUtils.isNotBlank(sb)){
String substring = sb.substring(0, sb.length() - 1);
projectLawsInventoryEOEn.setVerifyDeliverableType(substring);
}
}
//适用地区
String region = projectLawsInventoryEOEn.getRegion();
String pullRegion = pull(sysDictItems, region,"region");
@@ -2533,9 +2606,10 @@ public class ProjectLawsInventoryEOServiceImpl extends ServiceImpl<ProjectLawsIn
}
}
workbook.close();
List<SysCategory> categoryList = sysCategoryService.list();
//普通数据字典
List<SysDictItem> dictItemList = sysDictItemServiceImpl.selectItemsAll();
importDatas(datas, dictItemList, zipEntryName,saveDirectory,projectLawsInventoryEO);
importDatas(datas, dictItemList, zipEntryName,saveDirectory,projectLawsInventoryEO,categoryList);
//删除原上传文件
FileUnZip.deleteDir(saveDirectory);
@@ -2633,7 +2707,16 @@ public class ProjectLawsInventoryEOServiceImpl extends ServiceImpl<ProjectLawsIn
List<SysDictItem> dictItemList,
String zipEntryName,
File saveDirectory,
ProjectLawsInventoryEO projectLawsInventoryEOTemp) {
ProjectLawsInventoryEO projectLawsInventoryEOTemp,
List<SysCategory> categoryList) {
String dictId = sysCategoryMapper.getDictId("deliverable_template");
List<SysCategory> collect = categoryList.stream().filter(e -> e.getSysDictId().equals(dictId)).collect(Collectors.toList());
List<String> treeNameList = new ArrayList<>();
if(CutEnum.CN.getValue().equals(projectLawsInventoryEOTemp.getCut())){
treeNameList = collect.stream().map(SysCategory::getName).collect(Collectors.toList());
}else{
treeNameList = collect.stream().map(SysCategory::getEnName).collect(Collectors.toList());
}
int i = 3;
List<String> msgList = new ArrayList<>();
String value = "";
@@ -2815,9 +2898,10 @@ public class ProjectLawsInventoryEOServiceImpl extends ServiceImpl<ProjectLawsIn
//设计
//交付物类型
value = pullSingle(dictItemList, projectLawsInventoryEO, errorMsg, designDeliverableType,msgList,"交付物类型","type of deliverables","deliverable_template");
value = tree(categoryList,treeNameList, projectLawsInventoryEO, errorMsg, designDeliverableType,msgList,"交付物类型","type of deliverables","deliverable_template");
if(StringUtils.isNotBlank(value)){
projectLawsInventoryEO.setDesignDeliverableType(value);
String treeId = getTreeId(categoryList, projectLawsInventoryEOTemp, treeNameList, value);
projectLawsInventoryEO.setDesignDeliverableType(treeId);
}
//交付物模板
@@ -2851,9 +2935,10 @@ public class ProjectLawsInventoryEOServiceImpl extends ServiceImpl<ProjectLawsIn
//pre
//交付物类型
value = pullSingle(dictItemList, projectLawsInventoryEO, errorMsg, prehomoDeliverableType,msgList,"交付物类型","type of deliverables","deliverable_template");
value = tree(categoryList, treeNameList,projectLawsInventoryEO, errorMsg, prehomoDeliverableType,msgList,"交付物类型","type of deliverables","deliverable_template");
if(StringUtils.isNotBlank(value)){
projectLawsInventoryEO.setPrehomoDeliverableType(value);
String treeId = getTreeId(categoryList, projectLawsInventoryEOTemp, treeNameList, value);
projectLawsInventoryEO.setPrehomoDeliverableType(treeId);
}
//交付物模板
@@ -2886,9 +2971,10 @@ public class ProjectLawsInventoryEOServiceImpl extends ServiceImpl<ProjectLawsIn
//确认
//交付物类型
value = pullSingle(dictItemList, projectLawsInventoryEO, errorMsg, verifyDeliverableType,msgList,"交付物类型","type of deliverables","deliverable_template");
value = tree(categoryList,treeNameList,projectLawsInventoryEO, errorMsg, verifyDeliverableType,msgList,"交付物类型","type of deliverables","deliverable_template");
if(StringUtils.isNotBlank(value)){
projectLawsInventoryEO.setVerifyDeliverableType(value);
String treeId = getTreeId(categoryList, projectLawsInventoryEOTemp, treeNameList, value);
projectLawsInventoryEO.setVerifyDeliverableType(treeId);
}
//交付物模板
@@ -2954,6 +3040,72 @@ public class ProjectLawsInventoryEOServiceImpl extends ServiceImpl<ProjectLawsIn
}
}
private String tree(List<SysCategory> categoryList,List<String> nameList,ProjectLawsInventoryEO projectLawsInventoryEO,
String errorMsg, String value,List<String> msgList,
String nameCn,String nameEn,String dictCode) {
if (StringUtils.isNotBlank(value)) {
StringBuilder sb = new StringBuilder();
for (String s : value.split(",")) {
if(!nameList.contains(s)){
sb.append(s+",");
}
}
if(StringUtils.isNotBlank(sb)){
String substring = sb.substring(0, sb.length() - 1);
if (CutEnum.CN.getValue().equals(projectLawsInventoryEO.getCut())) {
errorMsg += nameCn + "中的" + substring + "与数据字典不匹配, ";
} else {
errorMsg += nameEn + " " + substring + " does not match the data dictionary, ";
}
msgList.add(errorMsg);
}else{
StringBuilder sbTemp = new StringBuilder();
for (String s : value.split(",")) {
List<SysCategory> collect = new ArrayList<>();
if(CutEnum.CN.getValue().equals(projectLawsInventoryEO.getCut())){
collect = categoryList.stream().filter(e -> s.equals(e.getName())).collect(Collectors.toList());
if(collect.size() != 0){
sbTemp.append(collect.get(0).getName()+",");
}
}else{
collect = categoryList.stream().filter(e -> s.equals(e.getEnName())).collect(Collectors.toList());
if(collect.size() != 0){
sbTemp.append(collect.get(0).getEnName()+",");
}
}
}
if(StringUtils.isNotBlank(sbTemp)){
String substring = sbTemp.substring(0, sbTemp.length() - 1);
return substring;
}
}
}
return null;
}
private String getTreeId(List<SysCategory> categoryList,
ProjectLawsInventoryEO projectLawsInventoryEOTemp, List<String> treeNameList, String value) {
StringBuilder sb = new StringBuilder();
for (String valueTemp : value.split(",")) {
if (treeNameList.contains(valueTemp)) {
List<SysCategory> sysCategoryList = new ArrayList<>();
if (CutEnum.CN.getValue().equals(projectLawsInventoryEOTemp.getCut())) {
sysCategoryList = categoryList.stream().filter(e -> e.getName().equals(valueTemp)).collect(Collectors.toList());
} else {
sysCategoryList = categoryList.stream().filter(e -> e.getEnName().equals(valueTemp)).collect(Collectors.toList());
}
if (sysCategoryList.size() != 0) {
sb.append(sysCategoryList.get(0).getId() + ",");
}
}
}
if (StringUtils.isNotBlank(sb)) {
String substring = sb.substring(0, sb.length() - 1);
return substring;
}
return null;
}
private void verifySerialNumber(List<ProjectLawsInventoryEO> dataList,ProjectLawsInventoryEO projectLawsInventoryEOTemp){
//1. 验证标准号在文档库中是否存在
List<String> serialNumberList = dataList.stream().map(ProjectLawsInventoryEO::getSerialNumber).collect(Collectors.toList());
@@ -3350,6 +3502,22 @@ public class ProjectLawsInventoryEOServiceImpl extends ServiceImpl<ProjectLawsIn
}
return fileInfos;
}
@NotNull
private StringBuilder getStringBuilder(ProjectLawsInventoryEO projectLawsInventoryEO, List<SysCategory> sysCategoryList, String technologyTerritory) {
StringBuilder sb = new StringBuilder();
for (String s : technologyTerritory.split(",")) {
List<SysCategory> collect = sysCategoryList.stream()
.filter(e -> s.equals(e.getId())).collect(Collectors.toList());
if(collect.size() != 0){
if(CutEnum.CN.getValue().equals(projectLawsInventoryEO.getCut())){
sb.append(collect.get(0).getName()+",");
}else{
sb.append(collect.get(0).getEnName()+",");
}
}
}
return sb;
}
/**
* 数据转换(文件名称,技术领域,对应标准)
@@ -3358,9 +3526,37 @@ public class ProjectLawsInventoryEOServiceImpl extends ServiceImpl<ProjectLawsIn
*/
private void dataTransition(List<ProjectLawsInventoryEO> dataList,
List<OSSFile> fileInfos,
List<SysUser> sysUserList) {
List<SysUser> sysUserList,
ProjectLawsInventoryEO projectLawsInventoryEOTemp) {
List<SysCategory> sysCategoryList = sysCategoryService.list();
for (ProjectLawsInventoryEO projectLawsInventoryEO : dataList) {
//设计交付物类型 inventoryInfoEO
if(StringUtils.isNotBlank(projectLawsInventoryEO.getDesignDeliverableType())){
StringBuilder sb = getStringBuilder(projectLawsInventoryEOTemp, sysCategoryList, projectLawsInventoryEO.getDesignDeliverableType());
if(StringUtils.isNotBlank(sb)){
String substring = sb.substring(0, sb.length() - 1);
projectLawsInventoryEO.setDesignDeliverableType(substring);
}
}
//pre交付物类型
if(StringUtils.isNotBlank(projectLawsInventoryEO.getPrehomoDeliverableType())){
StringBuilder sb = getStringBuilder(projectLawsInventoryEOTemp, sysCategoryList, projectLawsInventoryEO.getPrehomoDeliverableType());
if(StringUtils.isNotBlank(sb)){
String substring = sb.substring(0, sb.length() - 1);
projectLawsInventoryEO.setPrehomoDeliverableType(substring);
}
}
//验证交付物类型
if(StringUtils.isNotBlank(projectLawsInventoryEO.getVerifyDeliverableType())){
StringBuilder sb = getStringBuilder(projectLawsInventoryEOTemp, sysCategoryList, projectLawsInventoryEO.getVerifyDeliverableType());
if(StringUtils.isNotBlank(sb)){
String substring = sb.substring(0, sb.length() - 1);
projectLawsInventoryEO.setVerifyDeliverableType(substring);
}
}
//清单确认状态 inventoryAffirmStatus
if(StringUtils.isNotBlank(projectLawsInventoryEO.getInventoryAffirmStatus())){
String stateName = stateTransition(projectLawsInventoryEO.getInventoryAffirmStatus());