From 0352b6412b83d5ed043c3aa46ba897dfa09582dc Mon Sep 17 00:00:00 2001 From: caozhen <18736171426@139.com> Date: Fri, 22 Sep 2023 11:17:11 +0800 Subject: [PATCH] =?UTF-8?q?=E6=8B=86=E5=88=86=E5=88=97=E8=A1=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/jero/modules/oss/entity/OSSFile.java | 15 +++ .../impl/SarFileCompareInfoServiceImpl.java | 95 +++++++++++++++++++ .../impl/SarFileSplitInfoServiceImpl.java | 73 +++++++++++++- 3 files changed, 181 insertions(+), 2 deletions(-) diff --git a/laws-module-system/src/main/java/com/jero/modules/oss/entity/OSSFile.java b/laws-module-system/src/main/java/com/jero/modules/oss/entity/OSSFile.java index ad6601ea..9fc08f9a 100644 --- a/laws-module-system/src/main/java/com/jero/modules/oss/entity/OSSFile.java +++ b/laws-module-system/src/main/java/com/jero/modules/oss/entity/OSSFile.java @@ -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; } diff --git a/laws-modules/src/main/java/com/jero/modules/compare/service/impl/SarFileCompareInfoServiceImpl.java b/laws-modules/src/main/java/com/jero/modules/compare/service/impl/SarFileCompareInfoServiceImpl.java index c50ed7eb..e57f6c1d 100644 --- a/laws-modules/src/main/java/com/jero/modules/compare/service/impl/SarFileCompareInfoServiceImpl.java +++ b/laws-modules/src/main/java/com/jero/modules/compare/service/impl/SarFileCompareInfoServiceImpl.java @@ -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 menuLeft = this.tree(sfVo.getMenuLeft()); +// List menuRight = this.tree(sfVo.getMenuRight()); +// sfVo.setMenuLeft(menuLeft); +// sfVo.setMenuRight(menuRight); return sfVo; } + private List tree(List list) { + List 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 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 menuVos = two.stream().filter(SarFileCompareMenuVo -> SarFileCompareMenuVo.getName().startsWith(name)).collect(Collectors.toList()); + compareMenuVo.setChildren(menuVos); + } + //遍历第二级,寻找第三级 + List 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 children = compareMenuVo.getChildren(); + for (SarFileCompareMenuVo child : children) { + String name = child.getName(); + //找到所有以name为前缀的数据 + List menuVos = three.stream().filter(SarFileCompareMenuVo -> SarFileCompareMenuVo.getName().startsWith(name)).collect(Collectors.toList()); + child.setChildren(menuVos); + } + } + //遍历第三级,寻找第四级 + List 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 children = compareMenuVo.getChildren(); + for (SarFileCompareMenuVo child : children) { + List vos = child.getChildren(); + for (SarFileCompareMenuVo vo : vos) { + String name = vo.getName(); + //找到所有以name为前缀的数据 + List 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 getMenuChildren(List menuList, String leftOrRight, String pid) { List list = new ArrayList<>(); for (SarFileCompareMenu menu : menuList) { diff --git a/laws-modules/src/main/java/com/jero/modules/split/service/impl/SarFileSplitInfoServiceImpl.java b/laws-modules/src/main/java/com/jero/modules/split/service/impl/SarFileSplitInfoServiceImpl.java index d84ec54d..5a3d117e 100644 --- a/laws-modules/src/main/java/com/jero/modules/split/service/impl/SarFileSplitInfoServiceImpl.java +++ b/laws-modules/src/main/java/com/jero/modules/split/service/impl/SarFileSplitInfoServiceImpl.java @@ -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 splitFilePageInfoList(Page page, HttpServletRequest request, SplitFilePageInfoParam param) { - QueryWrapper wrapper = new QueryWrapper<>(); - + List lawsDomesticStandards = lawsDomesticStandardService.list(); + List lawsEnterpriseStandards = ILawsEnterpriseStandardService.list(); + LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); + String origin = param.getOrigin(); + if (StringUtils.isNotBlank(origin)){ + if ("1".equals(origin)){ + List collect = lawsDomesticStandards.stream().map(LawsDomesticStandard::getId).collect(Collectors.toList()); + wrapper.in(OSSFile::getStandardId, collect); + } + if ("3".equals(origin)){ + List 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 collect1 = lawsDomesticStandards.stream().filter(LawsDomesticStandard -> LawsDomesticStandard.getStandardNumber().contains(standardNumber)).map(LawsDomesticStandard::getId).collect(Collectors.toList()); + wrapper.in(OSSFile::getStandardId, collect1); + List 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 collect1 = lawsDomesticStandards.stream().filter(LawsDomesticStandard -> LawsDomesticStandard.getStandardName().contains(standardName)).map(LawsDomesticStandard::getId).collect(Collectors.toList()); + wrapper.in(OSSFile::getStandardId, collect1); + List 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 pageList = ossFileService.page(page, wrapper); + //为来源、标准号、标准名称赋值 + Map> collect1 = lawsDomesticStandards.stream().collect(Collectors.groupingBy(LawsDomesticStandard::getId)); + Map> collect2 = lawsEnterpriseStandards.stream().collect(Collectors.groupingBy(LawsEnterpriseStandard::getId)); + for (OSSFile record : pageList.getRecords()) { + String standardId = record.getStandardId(); + List 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 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; } + + }