fix: 标准拆分条款目录-移动层级 完善

This commit is contained in:
yjz
2024-08-16 12:17:17 +08:00
parent ea0654f28e
commit 76b3b40c88
4 changed files with 34 additions and 17 deletions
@@ -38,6 +38,11 @@ public class SarFileSplitMenuEO implements Serializable {
*/ */
@ApiModelProperty("父节点id") @ApiModelProperty("父节点id")
private String pId; private String pId;
/**
* 父节点id
*/
@ApiModelProperty("父节点id")
private String parentId;
/** /**
* 排序序号 * 排序序号
*/ */
@@ -148,6 +148,9 @@
<if test="pId != null" > <if test="pId != null" >
parent_id = #{pId}, parent_id = #{pId},
</if> </if>
<if test="parentId != null" >
parent_id = #{parentId},
</if>
<if test="displaySeq != null" > <if test="displaySeq != null" >
display_seq = #{displaySeq}, display_seq = #{displaySeq},
</if> </if>
@@ -379,6 +382,7 @@
select * from SAR_FILE_SPLIT_MENU select * from SAR_FILE_SPLIT_MENU
where display_seq &gt; #{displaySeq} and info_id = #{infoId} where display_seq &gt; #{displaySeq} and info_id = #{infoId}
AND valid_flag = '0' AND valid_flag = '0'
order by display_seq asc
</select> </select>
<select id="findByParentId" resultMap="BaseResultMap"> <select id="findByParentId" resultMap="BaseResultMap">
@@ -3141,10 +3141,10 @@ public class FileSplitItemsEOServiceImpl extends ServiceImpl<FileSplitItemsEOMap
.filter(v -> !String.valueOf(v.get("item_num")).matches(regexs)) .filter(v -> !String.valueOf(v.get("item_num")).matches(regexs))
.collect(Collectors.toList()); .collect(Collectors.toList());
otherList.stream().map(v -> v.get("item_num")) // otherList.stream().map(v -> v.get("item_num"))
.collect(Collectors.toList()).forEach(v -> { // .collect(Collectors.toList()).forEach(v -> {
System.out.println(v); // System.out.println(v);
}); // });
// 排序 // 排序
addItemsEOList.removeAll(otherList); addItemsEOList.removeAll(otherList);
@@ -3168,7 +3168,7 @@ public class FileSplitItemsEOServiceImpl extends ServiceImpl<FileSplitItemsEOMap
treeNode.setName(itemNum); treeNode.setName(itemNum);
// if(itemNum.matches(regex)) { // if(itemNum.matches(regex)) {
//父级是 总目录时,不做处理 //父级是 总目录时,不做处理
if(itemNum.contains(".")) { if(itemNum.contains(".") && !itemNum.contains("Article")) {
String parentName = itemNum.substring(0, itemNum.lastIndexOf(".")); String parentName = itemNum.substring(0, itemNum.lastIndexOf("."));
treeNode.setParentName(parentName); treeNode.setParentName(parentName);
List<SarFileSplitMenuTreeNode> p = treeNodeList.stream().filter(e -> e.getName().equals(parentName)).collect(Collectors.toList()); List<SarFileSplitMenuTreeNode> p = treeNodeList.stream().filter(e -> e.getName().equals(parentName)).collect(Collectors.toList());
@@ -380,38 +380,46 @@ public class SarFileSplitMenuEOServiceImpl extends ServiceImpl<SarFileSplitMenuE
// 要移动到的节点信息 // 要移动到的节点信息
SarFileSplitMenuEO sarFileSplitMenuEO2 = baseMapper.findById(targetId); SarFileSplitMenuEO sarFileSplitMenuEO2 = baseMapper.findById(targetId);
// 获取要移动到的层级的最后一个 的排序值 // 获取要移动到的层级的最后一个 的排序值
SarFileSplitMenuEO lastMenu = getLastMenu(sarFileSplitMenuEO2.getPId()); SarFileSplitMenuEO lastMenu = getLastMenu(sarFileSplitMenuEO2.getId());
if (Objects.isNull(lastMenu)){
lastMenu = sarFileSplitMenuEO2;
}
// 要移动的节点所有子集(包括本身) // 要移动的节点所有子集(包括本身)
List<SarFileSplitMenuEO> sarFileSplitMenuEO1List = new ArrayList<>(); List<SarFileSplitMenuEO> sarFileSplitMenuEO1List = new ArrayList<>();
sarFileSplitMenuEO1List.add(sarFileSplitMenuEO1); sarFileSplitMenuEO1List.add(sarFileSplitMenuEO1);
List<SarFileSplitMenuEO> allList = new ArrayList<>(); List<SarFileSplitMenuEO> allList = new ArrayList<>();
getChildren(allList, sarFileSplitMenuEO1List); getChildren(allList, sarFileSplitMenuEO1List);
List<String> idlist = new ArrayList<>();
// 要移动节点的数量 // 更新要移动节点及其子集的排序
int moveNodeCount = allList.size(); for (int i = 0; i <allList.size(); i++) {
SarFileSplitMenuEO sarFileSplitMenuEO = allList.get(i);
sarFileSplitMenuEO.setDisplaySeq(lastMenu.getDisplaySeq() + i + 1);
idlist.add(sarFileSplitMenuEO.getId());
}
Long displaySeq = allList.get(allList.size() - 1).getDisplaySeq();
// 更新 大于 要移动到节点最后节点 的节点排序值 // 更新 大于 要移动到节点最后节点 的节点排序值
List<SarFileSplitMenuEO> sarFileSplitMenuEOList = List<SarFileSplitMenuEO> sarFileSplitMenuEOList =
baseMapper.queryByGTDisplaySeq(sarFileSplitMenuEO1.getInfoId(), lastMenu.getDisplaySeq()); baseMapper.queryByGTDisplaySeq(sarFileSplitMenuEO1.getInfoId(), lastMenu.getDisplaySeq());
for (SarFileSplitMenuEO fileSplitMenuEO : sarFileSplitMenuEOList) { sarFileSplitMenuEOList = sarFileSplitMenuEOList.stream().filter(v -> !idlist.contains(v.getId())).collect(Collectors.toList());
for (int i = 0; i < sarFileSplitMenuEOList.size(); i++) {
// 更新排序 // 更新排序
fileSplitMenuEO.setDisplaySeq(fileSplitMenuEO.getDisplaySeq() + moveNodeCount); SarFileSplitMenuEO fileSplitMenuEO = sarFileSplitMenuEOList.get(i);
fileSplitMenuEO.setDisplaySeq(displaySeq + i + 1);
baseMapper.updateByPrimaryKeySelective(fileSplitMenuEO); baseMapper.updateByPrimaryKeySelective(fileSplitMenuEO);
} }
// 更新要移动节点及其子集的排序 // 更新要移动节点及其子集的排序
for (int i = 0; i <allList.size(); i++) { for (int i = 0; i <allList.size(); i++) {
SarFileSplitMenuEO sarFileSplitMenuEO = allList.get(i); SarFileSplitMenuEO sarFileSplitMenuEO = allList.get(i);
sarFileSplitMenuEO.setDisplaySeq(lastMenu.getDisplaySeq() + i + 1);
baseMapper.updateByPrimaryKeySelective(sarFileSplitMenuEO); baseMapper.updateByPrimaryKeySelective(sarFileSplitMenuEO);
} }
// 更新要移动节点的pId // 更新要移动节点的parentId
SarFileSplitMenuEO sarFileSplitMenuEO = new SarFileSplitMenuEO(); sarFileSplitMenuEO1.setParentId(targetId);
sarFileSplitMenuEO.setId(sourceId); baseMapper.updateByPrimaryKeySelective(sarFileSplitMenuEO1);
sarFileSplitMenuEO.setPId(sarFileSplitMenuEO2.getPId());
baseMapper.updateByPrimaryKeySelective(sarFileSplitMenuEO);
} }
private void getChildren(List<SarFileSplitMenuEO> allList, List<SarFileSplitMenuEO> sarFileSplitMenuEOList) { private void getChildren(List<SarFileSplitMenuEO> allList, List<SarFileSplitMenuEO> sarFileSplitMenuEOList) {
@@ -424,7 +432,7 @@ public class SarFileSplitMenuEOServiceImpl extends ServiceImpl<SarFileSplitMenuE
} }
} }
private SarFileSplitMenuEO getLastMenu(String parentId) { public SarFileSplitMenuEO getLastMenu(String parentId) {
SarFileSplitMenuEO sarFileSplitMenuEO1 = baseMapper.findLastByParentId(parentId); SarFileSplitMenuEO sarFileSplitMenuEO1 = baseMapper.findLastByParentId(parentId);
if(sarFileSplitMenuEO1 != null){ if(sarFileSplitMenuEO1 != null){
getLastMenu(sarFileSplitMenuEO1.getId()); getLastMenu(sarFileSplitMenuEO1.getId());