拆分列表

This commit is contained in:
caozhen
2023-09-22 11:17:11 +08:00
parent 03840805a0
commit 0352b6412b
3 changed files with 181 additions and 2 deletions
@@ -63,4 +63,19 @@ public class OSSFile extends JeroEntity {
private String fileDisplayName;
@TableField(exist = false)
@ApiModelProperty(value = "来源")
private String origin;
@TableField(exist = false)
@ApiModelProperty(value = "来源")
private String origin_dictText;
@TableField(exist = false)
@ApiModelProperty(value = "标准号")
private String standardNumber;
@TableField(exist = false)
@ApiModelProperty(value = "标准名称")
private String standardName;
}
@@ -22,6 +22,7 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.*;
import java.util.stream.Collectors;
/**
* @Description: 文档对比信息表
@@ -304,9 +305,103 @@ public class SarFileCompareInfoServiceImpl extends ServiceImpl<SarFileCompareInf
sfVo.addTextRight(item);
}
}
//修改标准目录顺序结构
// List<SarFileCompareMenuVo> menuLeft = this.tree(sfVo.getMenuLeft());
// List<SarFileCompareMenuVo> menuRight = this.tree(sfVo.getMenuRight());
// sfVo.setMenuLeft(menuLeft);
// sfVo.setMenuRight(menuRight);
return sfVo;
}
private List<SarFileCompareMenuVo> tree(List<SarFileCompareMenuVo> list) {
List<SarFileCompareMenuVo> compareMenuVos = new ArrayList<>();
//先删除name是总目录的数据
list = list.get(0).getChildren();
/**
* 根节点:
* 1、没有"."
* 2、其他对象都不等于 最后一个"."之前的数据
*/
//查询根节点是哪一级,也就是"."最少的那一层
int least = 100;
for (SarFileCompareMenuVo menuVo : list) {
String name = menuVo.getName();
int i = countCharacters(name);
if (least > i){
least = i;
}
}
//把第一级放入compareMenuVos
for (SarFileCompareMenuVo compareMenuVo : list) {
String name = compareMenuVo.getName();
int i = countCharacters(name);
if (least == i){
compareMenuVos.add(compareMenuVo);
}
}
//遍历第一级,寻找第二级
List<SarFileCompareMenuVo> two = new ArrayList<>();
for (SarFileCompareMenuVo compareMenuVo : list) {
String name = compareMenuVo.getName();
int i = countCharacters(name);
if (least + 1 == i){
two.add(compareMenuVo);
}
}
for (SarFileCompareMenuVo compareMenuVo : compareMenuVos) {
String name = compareMenuVo.getName();
int length = name.length();
//找到所有以name为前缀的数据
List<SarFileCompareMenuVo> menuVos = two.stream().filter(SarFileCompareMenuVo -> SarFileCompareMenuVo.getName().startsWith(name)).collect(Collectors.toList());
compareMenuVo.setChildren(menuVos);
}
//遍历第二级,寻找第三级
List<SarFileCompareMenuVo> three = new ArrayList<>();
for (SarFileCompareMenuVo compareMenuVo : list) {
String name = compareMenuVo.getName();
int i = countCharacters(name);
if (least + 2 == i){
three.add(compareMenuVo);
}
}
for (SarFileCompareMenuVo compareMenuVo : compareMenuVos) {
List<SarFileCompareMenuVo> children = compareMenuVo.getChildren();
for (SarFileCompareMenuVo child : children) {
String name = child.getName();
//找到所有以name为前缀的数据
List<SarFileCompareMenuVo> menuVos = three.stream().filter(SarFileCompareMenuVo -> SarFileCompareMenuVo.getName().startsWith(name)).collect(Collectors.toList());
child.setChildren(menuVos);
}
}
//遍历第三级,寻找第四级
List<SarFileCompareMenuVo> four = new ArrayList<>();
for (SarFileCompareMenuVo compareMenuVo : list) {
String name = compareMenuVo.getName();
int i = countCharacters(name);
if (least + 3 == i){
four.add(compareMenuVo);
}
}
for (SarFileCompareMenuVo compareMenuVo : compareMenuVos) {
List<SarFileCompareMenuVo> children = compareMenuVo.getChildren();
for (SarFileCompareMenuVo child : children) {
List<SarFileCompareMenuVo> vos = child.getChildren();
for (SarFileCompareMenuVo vo : vos) {
String name = vo.getName();
//找到所有以name为前缀的数据
List<SarFileCompareMenuVo> menuVos = four.stream().filter(SarFileCompareMenuVo -> SarFileCompareMenuVo.getName().startsWith(name)).collect(Collectors.toList());
vo.setChildren(menuVos);
}
}
}
return compareMenuVos;
}
public int countCharacters(String str) {
return Math.toIntExact(str.chars().filter(ch -> ch == '.').count());
}
private List<SarFileCompareMenuVo> getMenuChildren(List<SarFileCompareMenu> menuList, String leftOrRight, String pid) {
List<SarFileCompareMenuVo> list = new ArrayList<>();
for (SarFileCompareMenu menu : menuList) {
@@ -14,6 +14,11 @@ import com.jero.generater.modules.online.cgform.entity.OnlCgformField;
import com.jero.generater.modules.online.cgform.service.impl.OnlCgformFieldServiceImpl;
import com.jero.modules.document.enums.FieldTypeEnum;
import com.jero.modules.document.service.IBussDocumentLibraryEOService;
import com.jero.modules.laws.standard.entity.LawsDomesticStandard;
import com.jero.modules.laws.standard.entity.LawsEnterpriseStandard;
import com.jero.modules.laws.standard.service.ILawsDomesticStandardService;
import com.jero.modules.laws.standard.service.ILawsEnterpriseStandardService;
import com.jero.modules.laws.standard.service.ILawsOverseasStandardService;
import com.jero.modules.ocr.util.LineHumpUtil;
import com.jero.modules.oss.entity.OSSFile;
import com.jero.modules.oss.service.IOSSFileService;
@@ -27,6 +32,7 @@ import com.jero.modules.split.service.ISarFileSplitMenuEOService;
import com.jero.modules.split.vo.SplitFilePageInfoParam;
import com.jero.modules.system.entity.SysDictItem;
import com.jero.modules.system.service.ISysDictItemService;
import com.jero.modules.system.service.ISysDictService;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@@ -65,6 +71,13 @@ public class SarFileSplitInfoServiceImpl extends ServiceImpl<SarFileSplitInfoMap
@Autowired
private IBussDocumentLibraryEOService bussDocumentLibraryEOService;
@Autowired
private ILawsDomesticStandardService lawsDomesticStandardService; //国内标准
@Autowired
private ILawsEnterpriseStandardService ILawsEnterpriseStandardService; //企业标准
@Autowired
private ISysDictService sysDictService;
/**
* 保存
@@ -332,9 +345,65 @@ public class SarFileSplitInfoServiceImpl extends ServiceImpl<SarFileSplitInfoMap
@Override
public Page<OSSFile> splitFilePageInfoList(Page<OSSFile> page, HttpServletRequest request, SplitFilePageInfoParam param) {
QueryWrapper<OSSFile> wrapper = new QueryWrapper<>();
List<LawsDomesticStandard> lawsDomesticStandards = lawsDomesticStandardService.list();
List<LawsEnterpriseStandard> lawsEnterpriseStandards = ILawsEnterpriseStandardService.list();
LambdaQueryWrapper<OSSFile> wrapper = new LambdaQueryWrapper<>();
String origin = param.getOrigin();
if (StringUtils.isNotBlank(origin)){
if ("1".equals(origin)){
List<String> collect = lawsDomesticStandards.stream().map(LawsDomesticStandard::getId).collect(Collectors.toList());
wrapper.in(OSSFile::getStandardId, collect);
}
if ("3".equals(origin)){
List<String> collect = lawsEnterpriseStandards.stream().map(LawsEnterpriseStandard::getId).collect(Collectors.toList());
wrapper.in(OSSFile::getStandardId, collect);
}
if (!"1".equals(origin) && !"3".equals(origin)){
return new Page<>();
}
}
String standardNumber = param.getStandardNumber();
if (StringUtils.isNotBlank(standardNumber)){
List<String> collect1 = lawsDomesticStandards.stream().filter(LawsDomesticStandard -> LawsDomesticStandard.getStandardNumber().contains(standardNumber)).map(LawsDomesticStandard::getId).collect(Collectors.toList());
wrapper.in(OSSFile::getStandardId, collect1);
List<String> collect2 = lawsEnterpriseStandards.stream().filter(LawsEnterpriseStandard -> LawsEnterpriseStandard.getStandardNumber().contains(standardNumber)).map(LawsEnterpriseStandard::getId).collect(Collectors.toList());
wrapper.in(OSSFile::getStandardId, collect2);
}
String standardName = param.getStandardName();
if (StringUtils.isNotBlank(standardName)){
List<String> collect1 = lawsDomesticStandards.stream().filter(LawsDomesticStandard -> LawsDomesticStandard.getStandardName().contains(standardName)).map(LawsDomesticStandard::getId).collect(Collectors.toList());
wrapper.in(OSSFile::getStandardId, collect1);
List<String> collect2 = lawsEnterpriseStandards.stream().filter(LawsEnterpriseStandard -> LawsEnterpriseStandard.getStandardName().contains(standardName)).map(LawsEnterpriseStandard::getId).collect(Collectors.toList());
wrapper.in(OSSFile::getStandardId, collect2);
}
wrapper.eq(StringUtils.isNotBlank(param.getStandardFileType()), OSSFile::getStandardFileType, param.getStandardFileType());
wrapper.orderByDesc(OSSFile::getCreateTime);
Page<OSSFile> pageList = ossFileService.page(page, wrapper);
//为来源、标准号、标准名称赋值
Map<String, List<LawsDomesticStandard>> collect1 = lawsDomesticStandards.stream().collect(Collectors.groupingBy(LawsDomesticStandard::getId));
Map<String, List<LawsEnterpriseStandard>> collect2 = lawsEnterpriseStandards.stream().collect(Collectors.groupingBy(LawsEnterpriseStandard::getId));
for (OSSFile record : pageList.getRecords()) {
String standardId = record.getStandardId();
List<LawsDomesticStandard> standards = collect1.get(standardId);
if (standards != null && !standards.isEmpty()){
LawsDomesticStandard standard = standards.get(0);
String origin_dictText = sysDictService.queryDictTextByKey("split_standard_source", "1");
record.setOrigin_dictText(origin_dictText);
record.setStandardNumber(standard.getStandardNumber());
record.setStandardName(standard.getStandardName());
}else {
List<LawsEnterpriseStandard> domesticStandards = collect2.get(standardId);
if (domesticStandards != null && !domesticStandards.isEmpty()){
LawsEnterpriseStandard standard = domesticStandards.get(0);
String origin_dictText = sysDictService.queryDictTextByKey("split_standard_source", "2");
record.setOrigin_dictText(origin_dictText);
record.setStandardNumber(standard.getStandardNumber());
record.setStandardName(standard.getStandardName());
}
}
}
return pageList;
}
}