refactor(文档拆分): 文档拆分详情页列表查询、工厂+策略,重构动态列、动态查询条件

This commit is contained in:
yjz
2023-10-13 17:46:08 +08:00
parent 8677faab9e
commit 85155d5a64
12 changed files with 560 additions and 7 deletions
@@ -0,0 +1,51 @@
package com.jero.modules.laws.documenttool.common;
/**
* @Author: 31318
* @Date: 2023/10/13/11:46
* @Description:
*/
public class DocumentSplitCommon {
private DocumentSplitCommon(){
}
/**
* 日期格式化
*/
public static final String DATE_FORMAT_BEGIN = " date_format( ";
/**
* 日期格式化
*/
public static final String DATE_FORMAT_END = " , '%Y-%m-%d') ";
/**
* 模糊匹配
*/
public static final String CONCAT_LIKE_BEGIN = " concat('%', ' ";
/**
* 模糊匹配
*/
public static final String CONCAT_LIKE_END = " ', '%') ";
/**
* and
*/
public static final String AND = " and ";
/**
* or
*/
public static final String OR = " or ";
/**
* in
*/
public static final String IN = " in ";
/**
* like
*/
public static final String LIKE = " like ";
/**
* >=
*/
public static final String GT = " >= ";
/**
* <=
*/
public static final String LT = " <= ";
}
@@ -5,6 +5,7 @@ import com.jero.common.api.vo.Result;
import com.jero.common.aspect.annotation.AutoLog;
import com.jero.modules.laws.documenttool.entity.DocumentSplitInfo;
import com.jero.modules.laws.documenttool.service.IDocumentSplitService;
import com.jero.modules.split.entity.SarFileSplitInfoEO;
import com.jero.modules.split.service.ISarFileSplitInfoService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
@@ -15,6 +16,7 @@ import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import java.util.Arrays;
import java.util.Map;
/**
* @Author: yjz
@@ -63,12 +65,27 @@ public class DocumentSplitController {
documentSplitService.updatePermissions(documentSplitInfo);
return Result.OK("操作成功!");
}
/**
* 拆分
*
* @param sarFileSplitInfoEO
* @return Result<T>
*/
@AutoLog(value = "文档拆分-拆分")
@ApiOperation(value="文档拆分-拆分", notes="文档拆分-拆分")
@PostMapping(value = "/split")
public Result<T> split(@Validated @RequestBody SarFileSplitInfoEO sarFileSplitInfoEO) {
documentSplitService.add(sarFileSplitInfoEO);
return Result.OK("操作成功!");
}
/**
* 通过id删除
*
* @return Result<T>
*/
@AutoLog(value = "文档拆分-通过id删除Y")
@AutoLog(value = "文档拆分-通过id删除")
@ApiOperation(value="文档拆分-通过id删除", notes="文档拆分-通过id删除")
@PostMapping(value = "/delete")
public Result<T> delete(@RequestParam(name="id",required=true) String id) {
@@ -81,7 +98,7 @@ public class DocumentSplitController {
*
* @return Result<T>
*/
@AutoLog(value = "文档拆分-批量删除Y")
@AutoLog(value = "文档拆分-批量删除")
@ApiOperation(value="文档拆分-批量删除", notes="文档拆分-批量删除")
@PostMapping(value = "/deleteBatch")
public Result<T> deleteBatch(@RequestParam(name="ids",required=true) String ids) {
@@ -89,4 +106,10 @@ public class DocumentSplitController {
return Result.OK("批量删除成功!");
}
@AutoLog(value = "文档拆分详情-分页列表查询")
@ApiOperation(value = "文档拆分详情-分页列表查询")
@PostMapping("/queryDocumentSplitDetail")
public Result<IPage<Map<String,Object>>> queryDocumentSplitDetail(@RequestBody Map<String, Object> parameter) {
return Result.OK(documentSplitService.queryDocumentSplitDetail(parameter));
}
}
@@ -0,0 +1,44 @@
package com.jero.modules.laws.documenttool.factory;
import com.jero.modules.laws.documenttool.handler.AbstractConditionBase;
import org.apache.commons.lang3.StringUtils;
import java.util.HashMap;
import java.util.Map;
import java.util.Objects;
/**
* @Author: yjz
* @Date: 2023/10/13/17:03
* @Description: 工厂设计模式
*/
public class ConditionMapFactory {
private ConditionMapFactory(){
}
/**
* 静态map容器
*/
private static Map<String, AbstractConditionBase> strategyMap = new HashMap<>();
/**
* 获取对应实现类
* @param key:键
* @return AbstractConditionBase:具体实现类
*/
public static AbstractConditionBase getInvokeStrategy(String key){
return strategyMap.get(key);
}
/**
* 注册到工厂方法
* @param key:键
* @param abstractConditionBase:具体实现类
*/
public static void register(String key, AbstractConditionBase abstractConditionBase){
if (StringUtils.isEmpty(key) || Objects.isNull(abstractConditionBase)){
return;
}
strategyMap.put(key, abstractConditionBase);
}
}
@@ -0,0 +1,21 @@
package com.jero.modules.laws.documenttool.handler;
import lombok.extern.slf4j.Slf4j;
/**
* @Author: yjz
* @Date: 2023/10/13/17:01
* @Description: 抽象类
*/
@Slf4j
public class AbstractConditionBase {
/**
* 构建查询条件
* @return 拼接完成的sql
*/
public String buildCondition(String fieldName, String value){
log.info("字段名:{} 参数值{}", fieldName, value);
return "";
}
}
@@ -0,0 +1,58 @@
package com.jero.modules.laws.documenttool.handler.impl;
import com.jero.modules.laws.documenttool.common.DocumentSplitCommon;
import com.jero.modules.laws.documenttool.factory.ConditionMapFactory;
import com.jero.modules.laws.documenttool.handler.AbstractConditionBase;
import com.jero.modules.tag.enums.LawsFieldTypeEnum;
import org.springframework.stereotype.Component;
import javax.annotation.PostConstruct;
/**
* @Author: yjz
* @Date: 2023/10/13/17:05
* @Description: 多日期查询
*/
@Component
public class DateManyConditionImpl extends AbstractConditionBase {
@Override
public String buildCondition(String fieldName, String value){
// 多日期查询
String substringBegin = "SUBSTRING_INDEX(";
String substringEnd = ", ',', 1)";
String dateMany = DocumentSplitCommon.AND;
if (value.contains(",")) {
// 范围查询
String[] split = value.split(",");
dateMany += "((";
String startDate = DocumentSplitCommon.DATE_FORMAT_BEGIN + "'" + split[0] + "'" + DocumentSplitCommon.DATE_FORMAT_END;
String endDate = DocumentSplitCommon.DATE_FORMAT_BEGIN + "'" + split[1] + "'" + DocumentSplitCommon.DATE_FORMAT_END;
dateMany +=
DocumentSplitCommon.DATE_FORMAT_BEGIN + substringBegin + fieldName + substringEnd + DocumentSplitCommon.DATE_FORMAT_END + DocumentSplitCommon.GT + startDate +
DocumentSplitCommon.AND +
DocumentSplitCommon.DATE_FORMAT_BEGIN + substringBegin + fieldName + substringEnd + DocumentSplitCommon.DATE_FORMAT_END + DocumentSplitCommon.LT + endDate + ")" +
DocumentSplitCommon.OR + "(" +
DocumentSplitCommon.DATE_FORMAT_BEGIN + substringBegin + fieldName + substringEnd + DocumentSplitCommon.DATE_FORMAT_END + DocumentSplitCommon.GT + startDate +
DocumentSplitCommon.AND +
DocumentSplitCommon.DATE_FORMAT_BEGIN + substringBegin + fieldName + substringEnd + DocumentSplitCommon.DATE_FORMAT_END + DocumentSplitCommon.LT + endDate + ")" +
DocumentSplitCommon.OR + "(" +
DocumentSplitCommon.DATE_FORMAT_BEGIN + substringBegin + fieldName + ", ',', -1)" + DocumentSplitCommon.DATE_FORMAT_END + DocumentSplitCommon.GT + startDate +
DocumentSplitCommon.AND +
DocumentSplitCommon.DATE_FORMAT_BEGIN + substringBegin + fieldName + ", ',', -1)" + DocumentSplitCommon.DATE_FORMAT_END + DocumentSplitCommon.LT + endDate + "))";
} else {
dateMany += fieldName + DocumentSplitCommon.LIKE + DocumentSplitCommon.CONCAT_LIKE_BEGIN + value + DocumentSplitCommon.CONCAT_LIKE_END;
}
return dateMany;
}
/**
* 初始化注册到工厂
*/
@PostConstruct
private void register(){
ConditionMapFactory.register(LawsFieldTypeEnum.DATE_MANY.getValue(), this);
}
}
@@ -0,0 +1,47 @@
package com.jero.modules.laws.documenttool.handler.impl;
import com.jero.modules.laws.documenttool.common.DocumentSplitCommon;
import com.jero.modules.laws.documenttool.factory.ConditionMapFactory;
import com.jero.modules.laws.documenttool.handler.AbstractConditionBase;
import com.jero.modules.tag.enums.LawsFieldTypeEnum;
import org.springframework.stereotype.Component;
import javax.annotation.PostConstruct;
/**
* @Author: yjz
* @Date: 2023/10/13/17:05
* @Description: 单日期查询
*/
@Component
public class DateSingleConditionImpl extends AbstractConditionBase {
@Override
public String buildCondition(String fieldName, String value){
// 单日期查询
String dateSingle = DocumentSplitCommon.AND;
if (value.contains(",")) {
// 范围查询
String[] split = value.split(",");
String startDate = split[0];
String endDate = split[1];
dateSingle +=
DocumentSplitCommon.DATE_FORMAT_BEGIN + fieldName + DocumentSplitCommon.DATE_FORMAT_END + DocumentSplitCommon.GT + "'" + startDate + "'" +
DocumentSplitCommon.AND +
DocumentSplitCommon.DATE_FORMAT_BEGIN + fieldName + DocumentSplitCommon.DATE_FORMAT_END + DocumentSplitCommon.LT + "'" + endDate + "'";
} else {
// 等值查询
dateSingle += DocumentSplitCommon.DATE_FORMAT_BEGIN + fieldName + DocumentSplitCommon.DATE_FORMAT_END + "='" + value + "'";
}
return dateSingle;
}
/**
* 初始化注册到工厂
*/
@PostConstruct
private void register(){
ConditionMapFactory.register(LawsFieldTypeEnum.DATE_SINGLE.getValue(), this);
}
}
@@ -0,0 +1,44 @@
package com.jero.modules.laws.documenttool.handler.impl;
import com.jero.modules.laws.common.constant.FieldCommon;
import com.jero.modules.laws.documenttool.common.DocumentSplitCommon;
import com.jero.modules.laws.documenttool.factory.ConditionMapFactory;
import com.jero.modules.laws.documenttool.handler.AbstractConditionBase;
import org.springframework.stereotype.Component;
import javax.annotation.PostConstruct;
/**
* @Author: yjz
* @Date: 2023/10/13/17:05
* @Description: in查询
*/
@Component
public class InConditionImpl extends AbstractConditionBase {
@Override
public String buildCondition(String fieldName, String value){
// in查询
StringBuilder in = new StringBuilder();
in.append(DocumentSplitCommon.AND).append(fieldName).append(DocumentSplitCommon.IN).append("(");
for (String s : value.split(",")) {
in.append("'").append(s).append("'");
if (value.indexOf(s) != value.length() -1){
in.append(",");
}
}
in.append(")");
return in.toString();
}
/**
* 初始化注册到工厂
*/
@PostConstruct
private void register(){
for (String item : FieldCommon.TYPE_LIKE_IN) {
ConditionMapFactory.register(item, this);
}
}
}
@@ -0,0 +1,36 @@
package com.jero.modules.laws.documenttool.handler.impl;
import com.jero.modules.laws.common.constant.FieldCommon;
import com.jero.modules.laws.documenttool.common.DocumentSplitCommon;
import com.jero.modules.laws.documenttool.factory.ConditionMapFactory;
import com.jero.modules.laws.documenttool.handler.AbstractConditionBase;
import org.springframework.stereotype.Component;
import javax.annotation.PostConstruct;
/**
* @Author: yjz
* @Date: 2023/10/13/17:04
* @Description: 模糊查询
*/
@Component
public class LikeConditionImpl extends AbstractConditionBase {
@Override
public String buildCondition(String fieldName, String value){
// 模糊查询
return DocumentSplitCommon.AND + fieldName + DocumentSplitCommon.LIKE +
DocumentSplitCommon.CONCAT_LIKE_BEGIN + value + DocumentSplitCommon.CONCAT_LIKE_END;
}
/**
* 初始化注册到工厂
*/
@PostConstruct
private void register(){
for (String item : FieldCommon.TYPE_LIKE) {
ConditionMapFactory.register(item, this);
}
}
}
@@ -9,6 +9,7 @@ import com.jero.modules.split.entity.SarFileSplitInfoEO;
import org.apache.ibatis.annotations.Param;
import java.util.List;
import java.util.Map;
/**
* @Author: yjz
@@ -31,4 +32,12 @@ public interface DocumentSplitMapper {
*/
List<DocumentSplitInfo> queryByPage(@Param(Constants.WRAPPER) QueryWrapper<SarFileSplitInfoEO> queryWrapper);
/**
* 文档拆分详情-分页列表查询
* @param mapPage
* @param selectColumn
* @param selectCondition
* @return
*/
IPage<Map<String, Object>> queryDocumentSplitDetail(Page<Map<String, Object>> mapPage, @Param("selectColumn") String selectColumn, @Param("selectCondition") String selectCondition);
}
@@ -24,4 +24,12 @@
left join sys_user u on i.author = u.id) t
${ew.customSqlSegment}
</select>
<select id="queryDocumentSplitDetail" resultType="java.util.Map">
select
${selectColumn}
from laws_document_split s
left join SAR_FILE_SPLIT_MENU m on s.MENU_ID = m.id
${selectCondition}
</select>
</mapper>
@@ -2,8 +2,10 @@ package com.jero.modules.laws.documenttool.service;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.jero.modules.laws.documenttool.entity.DocumentSplitInfo;
import com.jero.modules.split.entity.SarFileSplitInfoEO;
import java.util.List;
import java.util.Map;
/**
* @Author: yjz
@@ -29,8 +31,21 @@ public interface IDocumentSplitService {
List<DocumentSplitInfo> queryByList(DocumentSplitInfo documentSplitInfo);
/**
* 更改权限
* 文档拆分-更改权限
* @param documentSplitInfo
*/
void updatePermissions(DocumentSplitInfo documentSplitInfo);
/**
* 文档拆分详情-分页列表查询
* @param parameter
* @return
*/
IPage<Map<String, Object>> queryDocumentSplitDetail(Map<String, Object> parameter);
/**
* 文档拆分-拆分
* @param sarFileSplitInfoEO
*/
void add(SarFileSplitInfoEO sarFileSplitInfoEO);
}
@@ -4,18 +4,34 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.jero.common.constant.enums.LanguageEnum;
import com.jero.common.constant.enums.YesOrNoEnum;
import com.jero.common.exception.JeroBootException;
import com.jero.common.system.vo.LoginUser;
import com.jero.common.util.MessageUtils;
import com.jero.modules.laws.common.mapper.LawsCommonMapper;
import com.jero.modules.laws.documenttool.common.DocumentSplitCommon;
import com.jero.modules.laws.documenttool.entity.DocumentSplitInfo;
import com.jero.modules.laws.documenttool.factory.ConditionMapFactory;
import com.jero.modules.laws.documenttool.mapper.DocumentSplitMapper;
import com.jero.modules.laws.documenttool.service.IDocumentSplitService;
import com.jero.modules.split.entity.SarFileSplitInfoEO;
import com.jero.modules.split.entity.SarFileSplitMenuEO;
import com.jero.modules.split.enums.SplitEnum;
import com.jero.modules.split.enums.SplitFileTypeTypeEnum;
import com.jero.modules.split.service.ISarFileSplitInfoService;
import com.jero.modules.split.service.ISarFileSplitMenuEOService;
import com.jero.modules.split.service.impl.FileSpiltService;
import com.jero.modules.tag.entity.LawsTag;
import com.jero.modules.tag.enums.LawsFieldTypeEnum;
import com.jero.modules.tag.enums.TableNameEnum;
import org.apache.commons.lang3.StringUtils;
import org.apache.shiro.SecurityUtils;
import org.jetbrains.annotations.NotNull;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.Arrays;
import java.util.List;
import java.util.*;
import java.util.stream.Collectors;
/**
@@ -28,11 +44,23 @@ import java.util.stream.Collectors;
public class DocumentSplitServiceImpl implements IDocumentSplitService {
private final DocumentSplitMapper documentSplitMapper;
private final ISarFileSplitInfoService sarFileSplitInfoService;
private final LawsCommonMapper lawsCommonMapper;
private final FileSpiltService fileSpiltService;
private final ISarFileSplitMenuEOService sarFileSplitMenuEOService;
private static final String INFO_ID = "infoId";
private static final String ITEM_NUM = "itemNum";
private static final String ITEM_TITLE = "itemTitle";
private static final String ITEM_CONTENT = "itemContent";
private static final String MENU_ID = "menuId";
public DocumentSplitServiceImpl(DocumentSplitMapper documentSplitMapper,
ISarFileSplitInfoService sarFileSplitInfoService) {
ISarFileSplitInfoService sarFileSplitInfoService,
LawsCommonMapper lawsCommonMapper,
FileSpiltService fileSpiltService, ISarFileSplitMenuEOService sarFileSplitMenuEOService) {
this.documentSplitMapper = documentSplitMapper;
this.sarFileSplitInfoService = sarFileSplitInfoService;
this.lawsCommonMapper = lawsCommonMapper;
this.fileSpiltService = fileSpiltService;
this.sarFileSplitMenuEOService = sarFileSplitMenuEOService;
}
@Override
@@ -66,6 +94,171 @@ public class DocumentSplitServiceImpl implements IDocumentSplitService {
sarFileSplitInfoService.update(updateWrapper);
}
@Override
public IPage<Map<String, Object>> queryDocumentSplitDetail(Map<String, Object> parameter) {
// 查询全部字段列表
List<LawsTag> fieldList = lawsCommonMapper.getFieldList(TableNameEnum.DOCUMENT_SPLIT.getTableName());
// 列表展示字段
List<LawsTag> fieldListSelect = fieldList.stream().filter(v -> YesOrNoEnum.YES.getValue()
.equals(String.valueOf(v.getIsShowList()))).collect(Collectors.toList());
// 搜索条件展示字段
List<LawsTag> fieldListCondition = fieldList.stream().filter(v -> YesOrNoEnum.YES.getValue()
.equals(String.valueOf(v.getIsQuery()))).collect(Collectors.toList());
// 分页参数
Integer pageNo = (Integer) parameter.get("pageNo");
Integer pageSize =(Integer) parameter.get("pageSize");
// sql查询列字段拼接
String selectColumn = getSelectColumn(fieldListSelect);
// sql where条件拼接
String selectCondition = getSelectCondition(parameter, fieldListCondition);
// 查询数据
return documentSplitMapper.queryDocumentSplitDetail(new Page<>(pageNo, pageSize), selectColumn, selectCondition);
}
@Override
public void add(SarFileSplitInfoEO sarFileSplitInfoEO) {
// 唯一校验
uniqueCheck(sarFileSplitInfoEO);
// 保存文本拆分数据
saveDocumentSplitInfo(sarFileSplitInfoEO);
//拆分
int count = fileSpiltService.fileCHN(sarFileSplitInfoEO, SplitFileTypeTypeEnum.GBT);
if(count == -1){
if(LanguageEnum.CN.equals(MessageUtils.getLanguage())) {
throw new JeroBootException("文档格式错误,请检查文档内容!");
}else{
throw new JeroBootException("The document format is wrong. Please check the document content!");
}
}
}
private void saveDocumentSplitInfo(SarFileSplitInfoEO sarFileSplitInfoEO) {
LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
Date now = new Date();
String infoId = UUID.randomUUID().toString().replace("-", "");
sarFileSplitInfoEO.setId(infoId);
sarFileSplitInfoEO.setSplitResult("成功");
sarFileSplitInfoEO.setSplitStatus(SplitEnum.SPLIT_STATUS1.getValue());
sarFileSplitInfoEO.setAuthor(sysUser.getId());
sarFileSplitInfoEO.setCreateTime(now);
sarFileSplitInfoEO.setUpdateTime(now);
sarFileSplitInfoService.save(sarFileSplitInfoEO);
}
private void uniqueCheck(SarFileSplitInfoEO sarFileSplitInfoEO) {
// 文件状态 + 标准号唯一,每个文件状态的标准只能拆分一次
DocumentSplitInfo documentSplitInfo = new DocumentSplitInfo();
documentSplitInfo.setSerialNumber(sarFileSplitInfoEO.getSerialNumber());
documentSplitInfo.setFileType(sarFileSplitInfoEO.getFileType());
List<DocumentSplitInfo> list = queryByList(documentSplitInfo);
if(!list.isEmpty()){
if(LanguageEnum.CN.equals(MessageUtils.getLanguage())) {
throw new JeroBootException("不可重复拆分文件状态加标准号相同的数据!");
}else{
throw new JeroBootException("Non-repeatable split file status plus standard number the same data!");
}
}
}
private String getSelectColumn(List<LawsTag> fieldListSelect) {
StringBuilder selectColumn = new StringBuilder();
selectColumn.append("s.id");
for (LawsTag lawsTag : fieldListSelect) {
selectColumn.append(",");
// 日期字段需要格式化
if (LawsFieldTypeEnum.DATE_SINGLE.getValue().equals(lawsTag.getDbFieldName())){
selectColumn.append(DocumentSplitCommon.DATE_FORMAT_BEGIN)
.append(lawsTag.getDbFieldName())
.append(DocumentSplitCommon.DATE_FORMAT_END);
}else {
// 普通字段直接拼接
selectColumn.append(lawsTag.getDbFieldName());
}
// 别名
selectColumn.append(" as ").append(lawsTag.getDbFieldName());
}
return selectColumn.toString();
}
private String getSelectCondition(Map<String, Object> parameter, List<LawsTag> fieldListCondition) {
// 拼接查询条件
StringBuilder selectCondition = new StringBuilder("where del_flag = 0");
// 非动态查询条件
defaultCondition(parameter, selectCondition);
// 动态查询字段
dynamicStateCondition(parameter, fieldListCondition, selectCondition);
// 排序
orderBy(selectCondition);
return selectCondition.toString();
}
private void orderBy(StringBuilder selectCondition) {
selectCondition.append(" order by display_seq asc, sort_number is null, sort_number asc");
}
private void dynamicStateCondition(Map<String, Object> parameter, List<LawsTag> fieldListCondition, StringBuilder selectCondition) {
parameter.forEach((k, v) -> {
// 匹配参数和字段
Optional<LawsTag> lawsTag = fieldListCondition.stream().filter(o -> k.equals(o.getDbFieldName())).findFirst();
lawsTag.ifPresent(l -> {
// 构建查询条件 (工厂 + 策略 设计模式)
String sqlCondition = ConditionMapFactory.getInvokeStrategy(l.getDbFieldName()).buildCondition(l.getDbFieldName(), (String) v);
selectCondition.append(sqlCondition);
});
});
}
private void defaultCondition(Map<String, Object> parameter, StringBuilder selectCondition) {
if (parameter.containsKey(INFO_ID)){
selectCondition.append(" and s.info_id = '").append(parameter.get(INFO_ID)).append("'");
parameter.remove(INFO_ID);
}
if (parameter.containsKey(ITEM_NUM)){
selectCondition.append(" and item_num = '").append(parameter.get(ITEM_NUM)).append("'");
parameter.remove(ITEM_NUM);
}
if (parameter.containsKey(ITEM_TITLE)){
// 模糊匹配
selectCondition.append(likeCondition("item_title", (String) parameter.get(ITEM_TITLE)));
parameter.remove(ITEM_TITLE);
}
if (parameter.containsKey(ITEM_CONTENT)){
// 模糊匹配
selectCondition.append(likeCondition("item_content", (String) parameter.get(ITEM_CONTENT)));
parameter.remove(ITEM_CONTENT);
}
// 树节点搜索
if (parameter.containsKey(MENU_ID)){
// 查询此节点下的所有子节点
SarFileSplitMenuEO sarFileSplitMenuEO = new SarFileSplitMenuEO();
sarFileSplitMenuEO.setId( (String) parameter.get(MENU_ID));
List<SarFileSplitMenuEO> sarFileSplitMenuEOS = sarFileSplitMenuEOService.queryAllChildrenById(sarFileSplitMenuEO);
if (!sarFileSplitMenuEOS.isEmpty()){
String menuIds= sarFileSplitMenuEOS.stream()
.map(SarFileSplitMenuEO::getId)
.collect(Collectors.joining("','"));
// in查询
selectCondition.append(" and s.menu_id" + " in('").append(menuIds).append("')");
parameter.remove(MENU_ID);
}
}
}
/**
* 模糊查询
* @param fieldName
* @param value
* @return 返回数据样例 and fieldName like '%value%'
*/
private String likeCondition(String fieldName, String value) {
return DocumentSplitCommon.AND + fieldName + DocumentSplitCommon.LIKE +
DocumentSplitCommon.CONCAT_LIKE_BEGIN + value + DocumentSplitCommon.CONCAT_LIKE_END;
}
@NotNull
private static QueryWrapper<SarFileSplitInfoEO> getSarFileSplitInfoEOQueryWrapper(DocumentSplitInfo documentSplitInfo) {
QueryWrapper<SarFileSplitInfoEO> queryWrapper = new QueryWrapper<>();
@@ -76,6 +269,10 @@ public class DocumentSplitServiceImpl implements IDocumentSplitService {
.or()
.like("title", documentSplitInfo.getSerialNumberOrName()));
}
// 标准编号
queryWrapper.eq(StringUtils.isNotBlank(documentSplitInfo.getSerialNumber()), "serial_number", StringUtils.isNotBlank(documentSplitInfo.getSerialNumber()));
// 文本状态
queryWrapper.eq(StringUtils.isNotBlank(documentSplitInfo.getFileType()), "file_type", StringUtils.isNotBlank(documentSplitInfo.getFileType()));
// 拆分状态
queryWrapper.eq(StringUtils.isNotBlank(documentSplitInfo.getSplitStatus()), "split_status", documentSplitInfo.getSplitStatus());
// 编辑人