update 文档拆分目录可以批量移动序号

This commit is contained in:
lijiarao
2024-09-04 17:59:23 +08:00
parent 42efe8cef6
commit d2f9c6c8f8
6 changed files with 68 additions and 51 deletions
@@ -72,8 +72,9 @@ public class SarFileSplitMenuEOController extends JeroController<SarFileSplitMen
@GetMapping("/updateMenuLevel") @GetMapping("/updateMenuLevel")
// @RequiresPermissions("split:sarFileSplitMenu:updateMenuLevel") // @RequiresPermissions("split:sarFileSplitMenu:updateMenuLevel")
public Result<SarFileSplitMenuEO> updateMenuLevel(@ApiParam(value = "要移动的节点id")String sourceId, public Result<SarFileSplitMenuEO> updateMenuLevel(@ApiParam(value = "要移动的节点id")String sourceId,
@ApiParam(value = "要移动到的节点id")String targetId) { @ApiParam(value = "要移动到的节点id")String targetId,
sarFileSplitMenuEOService.updateMenuLevel(sourceId, targetId); @ApiParam(value = "序号")Long displaySeq) {
sarFileSplitMenuEOService.updateMenuLevel(sourceId, targetId, displaySeq);
return Result.OK(MessageUtils.getMessage(ResultCommon.OK)); return Result.OK(MessageUtils.getMessage(ResultCommon.OK));
} }
@@ -1,5 +1,6 @@
package com.jero.modules.split.entity; package com.jero.modules.split.entity;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat; import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModelProperty; import io.swagger.annotations.ApiModelProperty;
import lombok.Data; import lombok.Data;
@@ -16,6 +17,7 @@ import java.util.List;
* <b>版权所有:<b>版权归北京卡达克数据技术中心所有。<br> * <b>版权所有:<b>版权归北京卡达克数据技术中心所有。<br>
*/ */
@Data @Data
@TableName("SAR_FILE_SPLIT_MENU")
public class SarFileSplitMenuEO implements Serializable { public class SarFileSplitMenuEO implements Serializable {
private static final long serialVersionUID = 1L; private static final long serialVersionUID = 1L;
/** /**
@@ -74,7 +74,7 @@ public interface SarFileSplitMenuEOMapper extends BaseMapper<SarFileSplitMenuEO>
SarFileSplitMenuEO findById(String id); SarFileSplitMenuEO findById(String id);
SarFileSplitMenuEO findLastByParentId(String parentId); List<SarFileSplitMenuEO> findLastByParentId(@Param("parentId") String parentId, @Param("displaySeq") Long displaySeq);
List<SarFileSplitMenuEO> queryByGTDisplaySeq(@Param("infoId") String infoId, @Param("displaySeq") Long displaySeq); List<SarFileSplitMenuEO> queryByGTDisplaySeq(@Param("infoId") String infoId, @Param("displaySeq") Long displaySeq);
@@ -373,9 +373,10 @@
<select id="findLastByParentId" resultMap="BaseResultMap"> <select id="findLastByParentId" resultMap="BaseResultMap">
select * from SAR_FILE_SPLIT_MENU select * from SAR_FILE_SPLIT_MENU
where parent_id = #{parentId} AND valid_flag = '0' where parent_id = #{parentId}
AND valid_flag = '0'
and display_seq > #{displaySeq}
order by display_seq desc order by display_seq desc
limit 1
</select> </select>
<select id="queryByGTDisplaySeq" resultMap="BaseResultMap"> <select id="queryByGTDisplaySeq" resultMap="BaseResultMap">
@@ -58,5 +58,5 @@ public interface ISarFileSplitMenuEOService extends IService<SarFileSplitMenuEO>
Result moveUpOrDown(JSONObject json); Result moveUpOrDown(JSONObject json);
void updateMenuLevel(String sourceId, String targetId); void updateMenuLevel(String sourceId, String targetId, Long displaySeq);
} }
@@ -374,50 +374,63 @@ public class SarFileSplitMenuEOServiceImpl extends ServiceImpl<SarFileSplitMenuE
} }
@Override @Override
public void updateMenuLevel(String sourceId, String targetId) { public void updateMenuLevel(String sourceIds, String parentId, Long displaySeq) {
// 要移动的节点信息
SarFileSplitMenuEO sarFileSplitMenuEO1 = baseMapper.findById(sourceId);
// 要移动到的节点信息 // 要移动到的节点信息
SarFileSplitMenuEO sarFileSplitMenuEO2 = baseMapper.findById(targetId); SarFileSplitMenuEO parentMenu = baseMapper.findById(parentId);
// 获取要移动到的层级的最后一个 的排序值 // 获取要移动到的层级的最后一个 的排序值
SarFileSplitMenuEO lastMenu = getLastMenu(sarFileSplitMenuEO2.getId()); List<SarFileSplitMenuEO> lastMenuList = getLastMenu(parentMenu.getId(),displaySeq);
if (Objects.isNull(lastMenu)){ List<String> sourceIdList = Arrays.asList(sourceIds.split(","));
lastMenu = sarFileSplitMenuEO2; int size = sourceIdList.size();
} for (SarFileSplitMenuEO sarFileSplitMenuEO : lastMenuList) {
Long displaySeq1 = sarFileSplitMenuEO.getDisplaySeq();
// 要移动的节点所有子集(包括本身) sarFileSplitMenuEO.setDisplaySeq(displaySeq1+size);
List<SarFileSplitMenuEO> sarFileSplitMenuEO1List = new ArrayList<>();
sarFileSplitMenuEO1List.add(sarFileSplitMenuEO1);
List<SarFileSplitMenuEO> allList = new ArrayList<>();
getChildren(allList, sarFileSplitMenuEO1List);
List<String> idlist = new ArrayList<>();
// 更新要移动节点及其子集的排序
for (int i = 0; i <allList.size(); i++) {
SarFileSplitMenuEO sarFileSplitMenuEO = allList.get(i);
if (!Objects.equals(sarFileSplitMenuEO.getId(), lastMenu.getId())){
sarFileSplitMenuEO.setDisplaySeq(lastMenu.getDisplaySeq() + i + 1);
}
idlist.add(sarFileSplitMenuEO.getId());
baseMapper.updateByPrimaryKeySelective(sarFileSplitMenuEO); baseMapper.updateByPrimaryKeySelective(sarFileSplitMenuEO);
} }
Long displaySeq = allList.get(allList.size() - 1).getDisplaySeq(); //this.updateBatchById(lastMenuList);
List<SarFileSplitMenuEO> updateList = new ArrayList<>();
// 更新 大于 要移动到节点最后节点 的节点排序值 for (int i = 0; i < sourceIdList.size(); i++) {
List<SarFileSplitMenuEO> sarFileSplitMenuEOList = String sourceId = sourceIdList.get(i);
baseMapper.queryByGTDisplaySeq(sarFileSplitMenuEO1.getInfoId(), lastMenu.getDisplaySeq()); // 要移动的节点信息
sarFileSplitMenuEOList = sarFileSplitMenuEOList.stream() SarFileSplitMenuEO sarFileSplitMenuEO = baseMapper.findById(sourceId);
.filter(v -> !idlist.contains(v.getId())).collect(Collectors.toList()); sarFileSplitMenuEO.setParentId(parentId);
for (int i = 0; i < sarFileSplitMenuEOList.size(); i++) { sarFileSplitMenuEO.setDisplaySeq(displaySeq+i+1);
// 更新排序 updateList.add(sarFileSplitMenuEO);
SarFileSplitMenuEO fileSplitMenuEO = sarFileSplitMenuEOList.get(i); baseMapper.updateByPrimaryKeySelective(sarFileSplitMenuEO);
fileSplitMenuEO.setDisplaySeq(displaySeq + i + 1);
baseMapper.updateByPrimaryKeySelective(fileSplitMenuEO);
} }
//this.updateBatchById(updateList);
// 更新要移动节点的parentId // 要移动节点所有子集(包括本身)
sarFileSplitMenuEO1.setParentId(targetId); //List<SarFileSplitMenuEO> sarFileSplitMenuEO1List = new ArrayList<>();
baseMapper.updateByPrimaryKeySelective(sarFileSplitMenuEO1); //sarFileSplitMenuEO1List.add(sarFileSplitMenuEO1);
//List<SarFileSplitMenuEO> allList = new ArrayList<>();
//getChildren(allList, sarFileSplitMenuEO1List);
//List<String> idlist = new ArrayList<>();
//
//// 更新要移动节点及其子集的排序
//for (int i = 0; i <allList.size(); i++) {
// SarFileSplitMenuEO sarFileSplitMenuEO = allList.get(i);
// if (!Objects.equals(sarFileSplitMenuEO.getId(), lastMenu.getId())){
// sarFileSplitMenuEO.setDisplaySeq(lastMenu.getDisplaySeq() + i + 1);
// }
// idlist.add(sarFileSplitMenuEO.getId());
// baseMapper.updateByPrimaryKeySelective(sarFileSplitMenuEO);
//}
//Long displaySeq = allList.get(allList.size() - 1).getDisplaySeq();
//
//// 更新 大于 要移动到节点最后节点 的节点排序值
//List<SarFileSplitMenuEO> sarFileSplitMenuEOList =
// baseMapper.queryByGTDisplaySeq(sarFileSplitMenuEO1.getInfoId(), lastMenu.getDisplaySeq());
//sarFileSplitMenuEOList = sarFileSplitMenuEOList.stream()
// .filter(v -> !idlist.contains(v.getId())).collect(Collectors.toList());
//for (int i = 0; i < sarFileSplitMenuEOList.size(); i++) {
// // 更新排序
// SarFileSplitMenuEO fileSplitMenuEO = sarFileSplitMenuEOList.get(i);
// fileSplitMenuEO.setDisplaySeq(displaySeq + i + 1);
// baseMapper.updateByPrimaryKeySelective(fileSplitMenuEO);
//}
//
//// 更新要移动节点的parentId
//sarFileSplitMenuEO1.setParentId(parentId);
//baseMapper.updateByPrimaryKeySelective(sarFileSplitMenuEO1);
} }
private void getChildren(List<SarFileSplitMenuEO> allList, List<SarFileSplitMenuEO> sarFileSplitMenuEOList) { private void getChildren(List<SarFileSplitMenuEO> allList, List<SarFileSplitMenuEO> sarFileSplitMenuEOList) {
@@ -430,11 +443,11 @@ public class SarFileSplitMenuEOServiceImpl extends ServiceImpl<SarFileSplitMenuE
} }
} }
public SarFileSplitMenuEO getLastMenu(String parentId) { public List<SarFileSplitMenuEO> getLastMenu(String parentId, Long displaySeq) {
SarFileSplitMenuEO sarFileSplitMenuEO1 = baseMapper.findLastByParentId(parentId); List<SarFileSplitMenuEO> lastByParentId = baseMapper.findLastByParentId(parentId, displaySeq);
if(sarFileSplitMenuEO1 != null){ //if(sarFileSplitMenuEO1 != null){
getLastMenu(sarFileSplitMenuEO1.getId()); // getLastMenu(sarFileSplitMenuEO1.getId());
} //}
return sarFileSplitMenuEO1; return lastByParentId;
} }
} }