fix(文档拆分): 列表查询优化
This commit is contained in:
+10
-27
@@ -97,37 +97,20 @@
|
||||
|
||||
<select id="queryByPage" resultType="com.jero.modules.laws.documenttool.entity.DocumentSplitInfo">
|
||||
select *
|
||||
from (select i.id as id,
|
||||
serial_number,
|
||||
(CASE
|
||||
WHEN length(s.standard_name) > 0 THEN s.standard_name
|
||||
WHEN length(d.standard_name) > 0 THEN d.standard_name
|
||||
ELSE title
|
||||
END) title,
|
||||
(CASE
|
||||
WHEN length(s.id) > 0 THEN 1
|
||||
WHEN length(d.id) > 0 THEN 3
|
||||
ELSE ''
|
||||
END) splitStandardSource,
|
||||
from (select id,
|
||||
file_type,
|
||||
file_name,
|
||||
split_status,
|
||||
(IF(i.is_asms_import = '1' and u.id is null, i.author, concat(u.realname, '(', u.username, ')'))) as author,
|
||||
i.create_time,
|
||||
i.split_result,
|
||||
u2.id createBy,
|
||||
i.standard_id,
|
||||
i.del_flag,
|
||||
author,
|
||||
create_time,
|
||||
split_result,
|
||||
create_by,
|
||||
standard_id,
|
||||
del_flag,
|
||||
publish_before_id,
|
||||
file_id,
|
||||
(IF(u.realname IS NULL , i.author, u.realname)) as realname,
|
||||
u.username as username
|
||||
from sar_file_split_info i
|
||||
left join laws_domestic_standard s on i.standard_id = s.id and s.del_flag = 0
|
||||
left join laws_enterprise_standard d on i.standard_id = d.id and d.del_flag = 0
|
||||
left join sys_user u on i.author = u.id
|
||||
left join sys_user u2 on i.create_by = u2.username) t
|
||||
${ew.customSqlSegment}
|
||||
file_id
|
||||
from sar_file_split_info) t
|
||||
${ew.customSqlSegment}
|
||||
</select>
|
||||
|
||||
<select id="queryDocumentSplitDetail" resultType="java.util.Map">
|
||||
|
||||
+133
-24
@@ -29,13 +29,8 @@ import com.jero.modules.laws.documenttool.mapper.LawsDocumentSplitMapper;
|
||||
import com.jero.modules.laws.documenttool.service.IDocumentSplitService;
|
||||
import com.jero.modules.laws.labeldatabase.entity.LawsLabelDatabase;
|
||||
import com.jero.modules.laws.labeldatabase.service.ILawsLabelDatabaseService;
|
||||
import com.jero.modules.laws.standard.entity.LawsNodeRelation;
|
||||
import com.jero.modules.laws.standard.entity.LawsTreeNode;
|
||||
import com.jero.modules.laws.standard.entity.PartName;
|
||||
import com.jero.modules.laws.standard.service.ILawsEnterpriseStandardService;
|
||||
import com.jero.modules.laws.standard.service.ILawsNodeRelationService;
|
||||
import com.jero.modules.laws.standard.service.ILawsPartNameService;
|
||||
import com.jero.modules.laws.standard.service.ILawsTreeNodeService;
|
||||
import com.jero.modules.laws.standard.entity.*;
|
||||
import com.jero.modules.laws.standard.service.*;
|
||||
import com.jero.modules.split.entity.SarFileSplitInfoEO;
|
||||
import com.jero.modules.split.entity.SarFileSplitItemsValEO;
|
||||
import com.jero.modules.split.entity.SarFileSplitMenuEO;
|
||||
@@ -120,6 +115,8 @@ public class DocumentSplitServiceImpl implements IDocumentSplitService {
|
||||
@Autowired
|
||||
private ISysDictItemService sysDictItemService;
|
||||
@Autowired
|
||||
private ILawsDomesticStandardService lawsDomesticStandardService;
|
||||
@Autowired
|
||||
private ILawsEnterpriseStandardService lawsEnterpriseStandardService;
|
||||
@Autowired
|
||||
private ILawsEnterpriseStandardLevelService lawsEnterpriseStandardLevelService;
|
||||
@@ -200,14 +197,78 @@ public class DocumentSplitServiceImpl implements IDocumentSplitService {
|
||||
public IPage<DocumentSplitInfo> queryByPage(DocumentSplitInfo documentSplitInfo, Integer pageNo, Integer pageSize) {
|
||||
// 构建查询条件
|
||||
QueryWrapper<SarFileSplitInfoEO> queryWrapper = getSarFileSplitInfoEOQueryWrapper(documentSplitInfo);
|
||||
return documentSplitMapper.queryByPage(new Page<>(pageNo, pageSize), queryWrapper);
|
||||
IPage<DocumentSplitInfo> documentSplitInfoIPage = documentSplitMapper.queryByPage(new Page<>(pageNo, pageSize), queryWrapper);
|
||||
// 填充数据
|
||||
setData(documentSplitInfoIPage.getRecords());
|
||||
return documentSplitInfoIPage;
|
||||
}
|
||||
|
||||
private void setData(List<DocumentSplitInfo> data) {
|
||||
if (CollectionUtils.isEmpty(data)){
|
||||
return;
|
||||
}
|
||||
// 获取标准信息
|
||||
List<String> standardIds = data.stream().map(DocumentSplitInfo::getStandardId).collect(Collectors.toList());
|
||||
List<LawsDomesticStandard> lawsDomesticStandardList = lawsDomesticStandardService.listByIds(standardIds);
|
||||
List<LawsEnterpriseStandard> lawsEnterpriseStandardList = lawsEnterpriseStandardService.listByIds(standardIds);
|
||||
Map<String, List<LawsDomesticStandard>> domesticMap = lawsDomesticStandardList.stream()
|
||||
.collect(Collectors.groupingBy(LawsDomesticStandard::getId));
|
||||
Map<String, List<LawsEnterpriseStandard>> enterpriseMap = lawsEnterpriseStandardList.stream()
|
||||
.collect(Collectors.groupingBy(LawsEnterpriseStandard::getId));
|
||||
// 获取人员信息
|
||||
List<String> authorList = data.stream().map(DocumentSplitInfo::getAuthor).distinct().collect(Collectors.toList());
|
||||
List<String> createByList = data.stream().map(DocumentSplitInfo::getCreateBy).distinct().collect(Collectors.toList());
|
||||
List<SysUser> sysUserList = new ArrayList<>();
|
||||
if (!CollectionUtils.isEmpty(authorList) || !CollectionUtils.isEmpty(createByList)){
|
||||
sysUserList = sysUserService.list(
|
||||
new LambdaQueryWrapper<SysUser>()
|
||||
.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<SysUser> first = sysUserList.stream()
|
||||
.filter(v -> v.getUsername().equals(documentSplitInfo.getCreateBy())).findFirst();
|
||||
first.ifPresent(v -> documentSplitInfo.setCreateBy(v.getId()));
|
||||
|
||||
Optional<SysUser> optionalSysUser = sysUserList.stream()
|
||||
.filter(v -> v.getId().equals(documentSplitInfo.getAuthor())).findFirst();
|
||||
optionalSysUser.ifPresent(v -> {
|
||||
if (!"云平台".equals(documentSplitInfo.getAuthor())){
|
||||
documentSplitInfo.setAuthor(v.calcNameWorkNo());
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<DocumentSplitInfo> queryByList(DocumentSplitInfo documentSplitInfo) {
|
||||
// 构建查询条件
|
||||
QueryWrapper<SarFileSplitInfoEO> queryWrapper = getSarFileSplitInfoEOQueryWrapper(documentSplitInfo);
|
||||
return documentSplitMapper.queryByPage(queryWrapper);
|
||||
List<DocumentSplitInfo> documentSplitInfos = documentSplitMapper.queryByPage(queryWrapper);
|
||||
// 填充数据
|
||||
setData(documentSplitInfos);
|
||||
return documentSplitInfos;
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -1628,30 +1689,78 @@ public class DocumentSplitServiceImpl implements IDocumentSplitService {
|
||||
}
|
||||
|
||||
@NotNull
|
||||
private static QueryWrapper<SarFileSplitInfoEO> getSarFileSplitInfoEOQueryWrapper(DocumentSplitInfo documentSplitInfo) {
|
||||
public QueryWrapper<SarFileSplitInfoEO> getSarFileSplitInfoEOQueryWrapper(DocumentSplitInfo documentSplitInfo) {
|
||||
QueryWrapper<SarFileSplitInfoEO> queryWrapper = new QueryWrapper<>();
|
||||
queryWrapper.eq(StringUtils.isNotBlank(documentSplitInfo.getId()), "id", documentSplitInfo.getId());
|
||||
if (StringUtils.isNotBlank(documentSplitInfo.getIds())){
|
||||
String[] ids = documentSplitInfo.getIds().split(",");
|
||||
queryWrapper.in(StringUtils.isNotBlank(documentSplitInfo.getIds()), "id", Arrays.asList(ids));
|
||||
}
|
||||
// 标准编号/标准名称
|
||||
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<LawsDomesticStandard> lawsDomesticStandardList = lawsDomesticStandardService.list(
|
||||
new LambdaQueryWrapper<LawsDomesticStandard>()
|
||||
.like(LawsDomesticStandard::getStandardNumber, documentSplitInfo.getSerialNumberOrName())
|
||||
.or().like(LawsDomesticStandard::getStandardName, documentSplitInfo.getSerialNumberOrName()));
|
||||
|
||||
List<LawsEnterpriseStandard> lawsEnterpriseStandardList = lawsEnterpriseStandardService.list(
|
||||
new LambdaQueryWrapper<LawsEnterpriseStandard>()
|
||||
.like(LawsEnterpriseStandard::getStandardNumber, documentSplitInfo.getSerialNumberOrName())
|
||||
.or().like(LawsEnterpriseStandard::getStandardName, documentSplitInfo.getSerialNumberOrName()));
|
||||
|
||||
List<String> 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<LawsDomesticStandard> lawsDomesticStandardList = lawsDomesticStandardService.list(
|
||||
new LambdaQueryWrapper<LawsDomesticStandard>()
|
||||
.like(LawsDomesticStandard::getStandardNumber, documentSplitInfo.getSerialNumber()));
|
||||
|
||||
List<LawsEnterpriseStandard> lawsEnterpriseStandardList = lawsEnterpriseStandardService.list(
|
||||
new LambdaQueryWrapper<LawsEnterpriseStandard>()
|
||||
.like(LawsEnterpriseStandard::getStandardNumber, documentSplitInfo.getSerialNumber()));
|
||||
|
||||
List<String> 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<LawsDomesticStandard> lawsDomesticStandardList = lawsDomesticStandardService.list(
|
||||
new LambdaQueryWrapper<LawsDomesticStandard>()
|
||||
.like(LawsDomesticStandard::getStandardName, documentSplitInfo.getTitle()));
|
||||
|
||||
List<LawsEnterpriseStandard> lawsEnterpriseStandardList = lawsEnterpriseStandardService.list(
|
||||
new LambdaQueryWrapper<LawsEnterpriseStandard>()
|
||||
.like(LawsEnterpriseStandard::getStandardName, documentSplitInfo.getTitle()));
|
||||
|
||||
List<String> 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<SysUser> sysUserList = sysUserService.list(new LambdaQueryWrapper<SysUser>().like(SysUser::getRealname, documentSplitInfo.getAuthor()));
|
||||
List<String> 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());
|
||||
@@ -1663,9 +1772,9 @@ 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", "云平台"));
|
||||
.or().eq(roleIds.contains("admin"), "author", "云平台"));
|
||||
// 逻辑删除
|
||||
queryWrapper.eq("del_flag", 0);
|
||||
// 排序
|
||||
|
||||
Reference in New Issue
Block a user