From 79ad725c012d6dc890cfc76174654887eb126a07 Mon Sep 17 00:00:00 2001
From: yjz <3131811435@qq.com>
Date: Mon, 12 Aug 2024 17:39:54 +0800
Subject: [PATCH] =?UTF-8?q?fix(=E6=96=87=E6=A1=A3=E6=8B=86=E5=88=86):=20?=
=?UTF-8?q?=E5=88=97=E8=A1=A8=E6=9F=A5=E8=AF=A2=E4=BC=98=E5=8C=96?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../mapper/xml/DocumentSplitMapper.xml | 35 ++---
.../impl/DocumentSplitServiceImpl.java | 140 ++++++++++++++++--
2 files changed, 138 insertions(+), 37 deletions(-)
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", "云平台"));
// 逻辑删除