fix(文档拆分): 合并问题修复、目录新增、目录查询重构

This commit is contained in:
yjz
2023-10-18 14:22:43 +08:00
parent e49e44c29b
commit 558b424574
4 changed files with 65 additions and 25 deletions
@@ -262,5 +262,4 @@ public class DocumentSplitController {
public void downloadImportTemplate(HttpServletRequest request, HttpServletResponse response) {
documentSplitService.downloadImportTemplate(request, response);
}
}
@@ -357,7 +357,7 @@ public class DocumentSplitServiceImpl implements IDocumentSplitService {
String ids = (String) parameter.get(IDS);
List<String> idList = Arrays.asList(ids.split(","));
// sql where条件拼接
String selectCondition = "where del_flag = 0 and s.id in ('" + String.join(",", idList) + "')";
String selectCondition = "where del_flag = 0 and s.id in ('" + String.join("','", idList) + "')";
// 排序
orderBy(new StringBuilder(selectCondition));
// 查询数据
@@ -365,10 +365,13 @@ public class DocumentSplitServiceImpl implements IDocumentSplitService {
// 第一条数据
Map<String, Object> firstData = listMap.get(0);
listMap.remove(0);
// 合并数据(合并每个key对应的value
String content = firstData.get(ITEM_CONTENT) + mergeData(listMap);
// 合并数据(条文标题、条文内容
String title = firstData.get(ITEM_TITLE) + " " + mergeData(listMap, ITEM_TITLE);
String content = firstData.get(ITEM_CONTENT) + mergeData(listMap, ITEM_CONTENT);
String updateByAndUpdateTime = new UniversalImpl().getUpdateByAndUpdateTime();
String updateSet = updateByAndUpdateTime + "," + ITEM_CONTENT + " = " + "'" + content + "'";
String updateSet = updateByAndUpdateTime +
"," + ITEM_TITLE + " = " + "' "+ title + "'" +
"," + ITEM_CONTENT + " = " + "'" + content + "'";
String updateCondition = "id = " + "'" + firstData.get(ID) + "'";
// 修改数据
documentSplitMapper.editDocumentSplitDetail(updateSet, updateCondition);
@@ -555,11 +558,10 @@ public class DocumentSplitServiceImpl implements IDocumentSplitService {
}
private String mergeData(List<Map<String, Object>> listMap) {
private String mergeData(List<Map<String, Object>> listMap, String key) {
StringBuilder stringBuilder = new StringBuilder();
// 合并数据(合并每个key对应的value)
for (Map<String, Object> map : listMap) {
String content = (String) map.get(ITEM_CONTENT);
String content = (String) map.get(key);
stringBuilder.append(content);
}
return stringBuilder.toString();
@@ -3,9 +3,6 @@ package com.jero.modules.split.controller;
import com.alibaba.fastjson.JSONObject;
import com.jero.common.api.vo.Result;
import com.jero.common.system.base.controller.JeroController;
import com.jero.modules.laws.enterprise.entity.vo.LawsTreeNodeModel;
import com.jero.modules.laws.enterprise.util.FindsTreeNodeChildrenUtil;
import com.jero.modules.laws.standard.entity.LawsTreeNode;
import com.jero.modules.split.entity.SarFileSplitMenuEO;
import com.jero.modules.split.page.SarFileSplitMenuEOPage;
import com.jero.modules.split.service.IFileSplitItemsEOService;
@@ -52,21 +49,20 @@ public class SarFileSplitMenuEOController extends JeroController<SarFileSplitMen
@GetMapping("/getSplitMenusByInfoId")
@RequiresPermissions("split:sarFileSplitItems:page")
public Result<List<SarFileSplitMenuEO>> list(SarFileSplitMenuEOPage page) throws Exception {
final String temporaryName = page.getName();
page.setName(null);
// page.setName(null);
page.setValidFlag("0");
// page.setOrderBy("regexp_replace(replace('.'||NAME, '.', '.00000000'), '0+([^\\.]{8})', '\\1')");
page.setOrderBy("display_seq asc");
List<SarFileSplitMenuEO> getList = sarFileSplitMenuEOService.queryByList(page);
//转树结构
List<SarFileSplitMenuEO> menuEOS = new ArrayList<>();
if (StringUtils.isBlank(temporaryName)){
menuEOS = convertToTree(getList);
}
if (StringUtils.isNotBlank(temporaryName)){
menuEOS = convertToTree(getList, temporaryName);
}
return Result.OK(menuEOS);
// List<SarFileSplitMenuEO> menuEOS = new ArrayList<>();
// if (StringUtils.isBlank(temporaryName)){
// menuEOS = convertToTree(getList);
// }
// if (StringUtils.isNotBlank(temporaryName)){
// menuEOS = convertToTree(getList, temporaryName);
// }
return Result.OK(getList);
}
public List<SarFileSplitMenuEO> convertToTree(List<SarFileSplitMenuEO> menuList, String name) {
@@ -60,9 +60,9 @@ public class SarFileSplitMenuEOServiceImpl extends ServiceImpl<SarFileSplitMenuE
// 新增对应条款
Map<String, Object> parameter = new HashMap<>();
if (StringUtils.isNotEmpty(sarFileSplitMenuEO.getName())) {
parameter.put("items_num", sarFileSplitMenuEO.getName());
parameter.put("item_num", sarFileSplitMenuEO.getName());
}
parameter.put("items_name", sarFileSplitMenuEO.getItemName());
parameter.put("item_title", sarFileSplitMenuEO.getItemName());
parameter.put("info_id", sarFileSplitMenuEO.getInfoId());
parameter.put("menu_id", sarFileSplitMenuEO.getId());
String itemId = UUID.randomUUID().toString().replace("-", "");
@@ -165,6 +165,13 @@ public class SarFileSplitMenuEOServiceImpl extends ServiceImpl<SarFileSplitMenuE
@Override
public List<SarFileSplitMenuEO> queryByList(SarFileSplitMenuEOPage page) {
String itemName;
if (StringUtils.isNotBlank(page.getName())){
itemName = page.getName();
page.setName(null);
} else {
itemName = "";
}
List<SarFileSplitMenuEO> result = dao.queryByList(page);
// 处理数据是否可以上下移动标识
@@ -185,10 +192,46 @@ public class SarFileSplitMenuEOServiceImpl extends ServiceImpl<SarFileSplitMenuE
sarFileSplitMenuEO.setMoveUpFlag(moveUpFlag);
sarFileSplitMenuEO.setMoveDownFlag(moveDownFlag);
}
return result;
// 关键字查询
if (StringUtils.isNotBlank(itemName) && !result.isEmpty()){
List<SarFileSplitMenuEO> trees = result.stream()
.filter(v -> (StringUtils.isNotBlank(v.getItemName())
&& v.getItemName().contains(itemName)) || v.getName().contains(itemName))
.collect(Collectors.toList());
// 递归查找所有符合项的父节点
List<SarFileSplitMenuEO> newTrees = new ArrayList<>(trees);
queryTreeFather(result, trees, newTrees);
// 过滤重复项
result = newTrees.stream().distinct().collect(Collectors.toList());
}
// 构建树结构
List<SarFileSplitMenuEO> finalResult = result;
return result.stream().filter(v -> StringUtils.isBlank(v.getPId()))
.peek(v -> v.setChildren(createChildList(v, finalResult))).collect(Collectors.toList());
}
@Override
private void queryTreeFather(List<SarFileSplitMenuEO> treeList, List<SarFileSplitMenuEO> trees, List<SarFileSplitMenuEO> newTrees) {
for (SarFileSplitMenuEO tree : trees) {
// 父节点
List<SarFileSplitMenuEO> treeFather = treeList.stream().filter(v -> v.getId().equals(tree.getPId())).collect(Collectors.toList());
if (!treeFather.isEmpty()){
newTrees.addAll(treeFather);
queryTreeFather(treeList, treeFather, newTrees);
}else {
return;
}
}
}
private List<SarFileSplitMenuEO> createChildList(SarFileSplitMenuEO testTree, List<SarFileSplitMenuEO> treeList) {
return treeList.stream().filter(v -> testTree.getId().equals(v.getPId()))
.peek(v -> v.setChildren(createChildList(v, treeList)))
.collect(Collectors.toList());
}
@Override
public int queryByCount(SarFileSplitMenuEOPage page) {
return dao.queryByCount(page);
}