refactor(文档拆分): 文档拆分详情页列表查询、工厂+策略,重构动态列、动态查询条件
This commit is contained in:
+51
@@ -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 = " <= ";
|
||||
}
|
||||
+25
-2
@@ -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));
|
||||
}
|
||||
}
|
||||
|
||||
+44
@@ -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);
|
||||
}
|
||||
}
|
||||
+21
@@ -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 "";
|
||||
}
|
||||
}
|
||||
+58
@@ -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);
|
||||
}
|
||||
}
|
||||
+47
@@ -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);
|
||||
}
|
||||
}
|
||||
+44
@@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
+36
@@ -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
@@ -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);
|
||||
}
|
||||
|
||||
+8
@@ -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>
|
||||
|
||||
+16
-1
@@ -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);
|
||||
}
|
||||
|
||||
+201
-4
@@ -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());
|
||||
// 编辑人
|
||||
|
||||
Reference in New Issue
Block a user