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")
private String pId;
/**
* 父节点id
*/
@ApiModelProperty("父节点id")
private String parentId;
/**
* 排序序号
*/
@@ -148,6 +148,9 @@
<if test="pId != null" >
parent_id = #{pId},
</if>
<if test="parentId != null" >
parent_id = #{parentId},
</if>
<if test="displaySeq != null" >
display_seq = #{displaySeq},
</if>
@@ -379,6 +382,7 @@
select * from SAR_FILE_SPLIT_MENU
where display_seq &gt; #{displaySeq} and info_id = #{infoId}
AND valid_flag = '0'
order by display_seq asc
</select>
<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))
.collect(Collectors.toList());
otherList.stream().map(v -> v.get("item_num"))
.collect(Collectors.toList()).forEach(v -> {
System.out.println(v);
});
// otherList.stream().map(v -> v.get("item_num"))
// .collect(Collectors.toList()).forEach(v -> {
// System.out.println(v);
// });
// 排序
addItemsEOList.removeAll(otherList);
@@ -3168,7 +3168,7 @@ public class FileSplitItemsEOServiceImpl extends ServiceImpl<FileSplitItemsEOMap
treeNode.setName(itemNum);
// if(itemNum.matches(regex)) {
//父级是 总目录时,不做处理
if(itemNum.contains(".")) {
if(itemNum.contains(".") && !itemNum.contains("Article")) {
String parentName = itemNum.substring(0, itemNum.lastIndexOf("."));
treeNode.setParentName(parentName);
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 lastMenu = getLastMenu(sarFileSplitMenuEO2.getPId());
SarFileSplitMenuEO lastMenu = getLastMenu(sarFileSplitMenuEO2.getId());
if (Objects.isNull(lastMenu)){
lastMenu = sarFileSplitMenuEO2;
}
// 要移动的节点所有子集(包括本身)
List<SarFileSplitMenuEO> sarFileSplitMenuEO1List = new ArrayList<>();
sarFileSplitMenuEO1List.add(sarFileSplitMenuEO1);
List<SarFileSplitMenuEO> allList = new ArrayList<>();
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 =
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);
}
// 更新要移动节点及其子集的排序
for (int i = 0; i <allList.size(); i++) {
SarFileSplitMenuEO sarFileSplitMenuEO = allList.get(i);
sarFileSplitMenuEO.setDisplaySeq(lastMenu.getDisplaySeq() + i + 1);
baseMapper.updateByPrimaryKeySelective(sarFileSplitMenuEO);
}
// 更新要移动节点的pId
SarFileSplitMenuEO sarFileSplitMenuEO = new SarFileSplitMenuEO();
sarFileSplitMenuEO.setId(sourceId);
sarFileSplitMenuEO.setPId(sarFileSplitMenuEO2.getPId());
baseMapper.updateByPrimaryKeySelective(sarFileSplitMenuEO);
// 更新要移动节点的parentId
sarFileSplitMenuEO1.setParentId(targetId);
baseMapper.updateByPrimaryKeySelective(sarFileSplitMenuEO1);
}
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);
if(sarFileSplitMenuEO1 != null){
getLastMenu(sarFileSplitMenuEO1.getId());