diff --git a/laws-modules/src/main/java/com/jero/modules/laws/documenttool/mapper/xml/DocumentSplitMapper.xml b/laws-modules/src/main/java/com/jero/modules/laws/documenttool/mapper/xml/DocumentSplitMapper.xml index 40d64acf..4d0c7460 100644 --- a/laws-modules/src/main/java/com/jero/modules/laws/documenttool/mapper/xml/DocumentSplitMapper.xml +++ b/laws-modules/src/main/java/com/jero/modules/laws/documenttool/mapper/xml/DocumentSplitMapper.xml @@ -97,36 +97,19 @@ diff --git a/laws-modules/src/main/java/com/jero/modules/laws/documenttool/service/impl/DocumentSplitServiceImpl.java b/laws-modules/src/main/java/com/jero/modules/laws/documenttool/service/impl/DocumentSplitServiceImpl.java index 92f118ee..5c4ce805 100644 --- a/laws-modules/src/main/java/com/jero/modules/laws/documenttool/service/impl/DocumentSplitServiceImpl.java +++ b/laws-modules/src/main/java/com/jero/modules/laws/documenttool/service/impl/DocumentSplitServiceImpl.java @@ -39,8 +39,10 @@ import com.jero.modules.laws.enterprise.service.EnterpriseStandardAuthDeptServic import com.jero.modules.laws.enterprise.service.EnterpriseStandardAuthUserService; import com.jero.modules.laws.labeldatabase.entity.LawsLabelDatabase; import com.jero.modules.laws.labeldatabase.service.ILawsLabelDatabaseService; +import com.jero.modules.laws.standard.entity.LawsDomesticStandard; import com.jero.modules.laws.standard.entity.LawsEnterpriseStandard; import com.jero.modules.laws.standard.entity.PartName; +import com.jero.modules.laws.standard.service.ILawsDomesticStandardService; import com.jero.modules.laws.standard.service.ILawsEnterpriseStandardService; import com.jero.modules.laws.standard.service.PartNameService; import com.jero.modules.split.entity.SarFileSplitInfoEO; @@ -124,6 +126,7 @@ public class DocumentSplitServiceImpl implements IDocumentSplitService { private final ISysDictService sysDictService; private final ISysDictItemService sysDictItemService; private final ILawsEnterpriseStandardService lawsEnterpriseStandardService; + private final ILawsDomesticStandardService lawsDomesticStandardService; private final ILawsEnterpriseStandardLevelService lawsEnterpriseStandardLevelService; private final EnterpriseStandardAuthUserService enterpriseStandardAuthUserService; private final ISysUserService sysUserService; @@ -155,6 +158,7 @@ public class DocumentSplitServiceImpl implements IDocumentSplitService { ISysDictService sysDictService, ISysDictItemService sysDictItemService, ILawsEnterpriseStandardService lawsEnterpriseStandardService, + ILawsDomesticStandardService lawsDomesticStandardService, ILawsEnterpriseStandardLevelService lawsEnterpriseStandardLevelService, EnterpriseStandardAuthUserService enterpriseStandardAuthUserService, ISysUserService sysUserService, @@ -175,6 +179,7 @@ public class DocumentSplitServiceImpl implements IDocumentSplitService { this.sysDictService = sysDictService; this.sysDictItemService = sysDictItemService; this.lawsEnterpriseStandardService = lawsEnterpriseStandardService; + this.lawsDomesticStandardService = lawsDomesticStandardService; this.lawsEnterpriseStandardLevelService = lawsEnterpriseStandardLevelService; this.enterpriseStandardAuthUserService = enterpriseStandardAuthUserService; this.sysUserService = sysUserService; @@ -201,7 +206,68 @@ public class DocumentSplitServiceImpl implements IDocumentSplitService { public IPage queryByPage(DocumentSplitInfo documentSplitInfo, Integer pageNo, Integer pageSize) { // 构建查询条件 QueryWrapper queryWrapper = getSarFileSplitInfoEOQueryWrapper(documentSplitInfo); - return documentSplitMapper.queryByPage(new Page<>(pageNo, pageSize), queryWrapper); + IPage documentSplitInfoIPage = documentSplitMapper.queryByPage(new Page<>(pageNo, pageSize), queryWrapper); + // 填充数据 + setData(documentSplitInfoIPage.getRecords()); + return documentSplitInfoIPage; + } + + private void setData(List data) { + if (CollectionUtils.isEmpty(data)){ + return; + } + // 获取标准信息 + List standardIds = data.stream().map(DocumentSplitInfo::getStandardId).collect(Collectors.toList()); + List lawsDomesticStandardList = lawsDomesticStandardService.listByIds(standardIds); + List lawsEnterpriseStandardList = lawsEnterpriseStandardService.listByIds(standardIds); + Map> domesticMap = lawsDomesticStandardList.stream() + .collect(Collectors.groupingBy(LawsDomesticStandard::getId)); + Map> enterpriseMap = lawsEnterpriseStandardList.stream() + .collect(Collectors.groupingBy(LawsEnterpriseStandard::getId)); + // 获取人员信息 + List authorList = data.stream().map(DocumentSplitInfo::getAuthor).distinct().collect(Collectors.toList()); + List createByList = data.stream().map(DocumentSplitInfo::getCreateBy).distinct().collect(Collectors.toList()); + List sysUserList = new ArrayList<>(); + if (!CollectionUtils.isEmpty(authorList) || !CollectionUtils.isEmpty(createByList)){ + sysUserList = sysUserService.list( + new LambdaQueryWrapper() + .in(!CollectionUtils.isEmpty(authorList), SysUser::getId, authorList) + .or().in(!CollectionUtils.isEmpty(createByList), SysUser::getUsername, createByList)); + } + + for (DocumentSplitInfo documentSplitInfo : data) { + String standardId = documentSplitInfo.getStandardId(); + if (StringUtils.isNotBlank(standardId)){ + if (domesticMap.containsKey(documentSplitInfo.getStandardId())){ + if (!CollectionUtils.isEmpty(domesticMap.get(standardId))){ + LawsDomesticStandard lawsDomesticStandard = domesticMap.get(standardId).get(0); + documentSplitInfo.setSerialNumber(lawsDomesticStandard.getStandardNumber()); + documentSplitInfo.setTitle(lawsDomesticStandard.getStandardName()); + } + documentSplitInfo.setSplitStandardSource("1"); + }else if (enterpriseMap.containsKey(documentSplitInfo.getStandardId())){ + if (!CollectionUtils.isEmpty(enterpriseMap.get(standardId))){ + LawsEnterpriseStandard lawsEnterpriseStandard = enterpriseMap.get(standardId).get(0); + documentSplitInfo.setSerialNumber(lawsEnterpriseStandard.getStandardNumber()); + documentSplitInfo.setTitle(lawsEnterpriseStandard.getStandardName()); + } + documentSplitInfo.setSplitStandardSource("3"); + } + } + if (!CollectionUtils.isEmpty(sysUserList)){ + Optional first = sysUserList.stream() + .filter(v -> v.getUsername().equals(documentSplitInfo.getCreateBy())).findFirst(); + first.ifPresent(v -> documentSplitInfo.setCreateBy(v.getId())); + + Optional optionalSysUser = sysUserList.stream() + .filter(v -> v.getId().equals(documentSplitInfo.getAuthor())).findFirst(); + optionalSysUser.ifPresent(v -> { + if (!"云平台".equals(documentSplitInfo.getAuthor())){ + documentSplitInfo.setAuthor(v.calcNameWorkNo()); + } + }); + } + } } @Override @@ -1657,26 +1723,78 @@ public class DocumentSplitServiceImpl implements IDocumentSplitService { } @NotNull - private static QueryWrapper getSarFileSplitInfoEOQueryWrapper(DocumentSplitInfo documentSplitInfo) { + public QueryWrapper getSarFileSplitInfoEOQueryWrapper(DocumentSplitInfo documentSplitInfo) { QueryWrapper queryWrapper = new QueryWrapper<>(); queryWrapper.eq(StringUtils.isNotBlank(documentSplitInfo.getId()), "id", documentSplitInfo.getId()); // 标准编号/标准名称 - if (StringUtils.isNotBlank(documentSplitInfo.getSerialNumberOrName())){ - queryWrapper.and(qw -> qw - .like("serial_number", documentSplitInfo.getSerialNumberOrName()) - .or() - .like("title", documentSplitInfo.getSerialNumberOrName())); + if (StringUtils.isNotBlank(documentSplitInfo.getSerialNumberOrName())) { + List lawsDomesticStandardList = lawsDomesticStandardService.list( + new LambdaQueryWrapper() + .like(LawsDomesticStandard::getStandardNumber, documentSplitInfo.getSerialNumberOrName()) + .or().like(LawsDomesticStandard::getStandardName, documentSplitInfo.getSerialNumberOrName())); + + List lawsEnterpriseStandardList = lawsEnterpriseStandardService.list( + new LambdaQueryWrapper() + .like(LawsEnterpriseStandard::getStandardNumber, documentSplitInfo.getSerialNumberOrName()) + .or().like(LawsEnterpriseStandard::getStandardName, documentSplitInfo.getSerialNumberOrName())); + + List standardIdList = lawsDomesticStandardList.stream().map(LawsDomesticStandard::getId).collect(Collectors.toList()); + standardIdList.addAll(lawsEnterpriseStandardList.stream().map(LawsEnterpriseStandard::getId).collect(Collectors.toList())); + if (!standardIdList.isEmpty()) { + queryWrapper.in("standard_id", standardIdList); + } else { + queryWrapper.isNull("id"); + } } // 标准编号 - queryWrapper.like(StringUtils.isNotBlank(documentSplitInfo.getSerialNumber()), "serial_number", documentSplitInfo.getSerialNumber()); + if (StringUtils.isNotBlank(documentSplitInfo.getSerialNumber())){ + List lawsDomesticStandardList = lawsDomesticStandardService.list( + new LambdaQueryWrapper() + .like(LawsDomesticStandard::getStandardNumber, documentSplitInfo.getSerialNumber())); + + List lawsEnterpriseStandardList = lawsEnterpriseStandardService.list( + new LambdaQueryWrapper() + .like(LawsEnterpriseStandard::getStandardNumber, documentSplitInfo.getSerialNumber())); + + List standardIdList = lawsDomesticStandardList.stream().map(LawsDomesticStandard::getId).collect(Collectors.toList()); + standardIdList.addAll(lawsEnterpriseStandardList.stream().map(LawsEnterpriseStandard::getId).collect(Collectors.toList())); + if (!standardIdList.isEmpty()) { + queryWrapper.in("standard_id", standardIdList); + } else { + queryWrapper.isNull("id"); + } + } // 标准名称 - queryWrapper.like(StringUtils.isNotBlank(documentSplitInfo.getTitle()), "title", documentSplitInfo.getTitle()); + if (StringUtils.isNotBlank(documentSplitInfo.getTitle())){ + List lawsDomesticStandardList = lawsDomesticStandardService.list( + new LambdaQueryWrapper() + .like(LawsDomesticStandard::getStandardName, documentSplitInfo.getTitle())); + + List lawsEnterpriseStandardList = lawsEnterpriseStandardService.list( + new LambdaQueryWrapper() + .like(LawsEnterpriseStandard::getStandardName, documentSplitInfo.getTitle())); + + List standardIdList = lawsDomesticStandardList.stream().map(LawsDomesticStandard::getId).collect(Collectors.toList()); + standardIdList.addAll(lawsEnterpriseStandardList.stream().map(LawsEnterpriseStandard::getId).collect(Collectors.toList())); + if (!standardIdList.isEmpty()) { + queryWrapper.in("standard_id", standardIdList); + } else { + queryWrapper.isNull("id"); + } + } // 文本状态 queryWrapper.eq(StringUtils.isNotBlank(documentSplitInfo.getFileType()), "file_type", documentSplitInfo.getFileType()); // 拆分状态 queryWrapper.eq(StringUtils.isNotBlank(documentSplitInfo.getSplitStatus()), SPLIT_STATUS, documentSplitInfo.getSplitStatus()); // 编辑人 - queryWrapper.like(StringUtils.isNotBlank(documentSplitInfo.getAuthor()), "realname", documentSplitInfo.getAuthor()); + if (StringUtils.isNotBlank(documentSplitInfo.getAuthor())){ + List sysUserList = sysUserService.list(new LambdaQueryWrapper().like(SysUser::getRealname, documentSplitInfo.getAuthor())); + List sysUserIdList = sysUserList.stream().map(SysUser::getId).collect(Collectors.toList()); + queryWrapper.and(qw -> + qw.in("author", sysUserIdList) + .or().eq("云平台".contains(documentSplitInfo.getAuthor()), "author", "云平台") + ); + } // 发布前id if (StringUtils.isNotBlank(documentSplitInfo.getPublishBeforeId())){ queryWrapper.eq("publish_before_id", documentSplitInfo.getPublishBeforeId()); @@ -1688,7 +1806,7 @@ public class DocumentSplitServiceImpl implements IDocumentSplitService { String roleIds = loginUser.getRoleIds(); queryWrapper.and(qw -> qw.and(qwi -> qwi.eq(SPLIT_STATUS, DocumentSplitCommon.SPLIT_STATUS1) - .eq("author", loginUser.calcNameWorkNo())) + .eq("author", loginUser.getId())) .or().eq(SPLIT_STATUS, DocumentSplitCommon.SPLIT_STATUS2) .or().eq(roleIds.contains("admin"), "author", "云平台")); // 逻辑删除