标签排序修改

This commit is contained in:
xiejunyu
2022-05-27 18:36:58 +08:00
parent 47379263ee
commit 04284a75ce
4 changed files with 66 additions and 62 deletions
@@ -34,7 +34,7 @@
</otherwise> </otherwise>
</choose> </choose>
</if> </if>
order by create_time desc order by sort_order
</select> </select>
<select id="getFieldInfo" resultType="java.lang.String"> <select id="getFieldInfo" resultType="java.lang.String">
@@ -166,6 +166,6 @@
</choose> </choose>
</if> </if>
order by d.order_num desc order by d.order_num
</select> </select>
</mapper> </mapper>
@@ -370,47 +370,49 @@ public class SysCategoryServiceImpl extends ServiceImpl<SysCategoryMapper, SysCa
if(inputOrderNum != null) { if(inputOrderNum != null) {
//查询展示顺序相同的 //查询展示顺序相同的
QueryWrapper<SysCategory> queryWrapper = new QueryWrapper<>(); QueryWrapper<SysCategory> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("sys_dict_id",sysCategory.getSysDictId()) queryWrapper.eq("sys_dict_id", sysCategory.getSysDictId())
.eq("del_flag", CommonConstant.DEL_FLAG_0) .eq("del_flag", CommonConstant.DEL_FLAG_0)
.orderByAsc("sort_order"); .orderByAsc("sort_order");
if(StringUtils.isNotBlank(sysCategory.getPid())){ if (StringUtils.isNotBlank(sysCategory.getPid())) {
queryWrapper.eq("pid",sysCategory.getPid()); queryWrapper.eq("pid", sysCategory.getPid());
}else{ } else {
queryWrapper.eq("pid",0); queryWrapper.eq("pid", 0);
} }
Integer orderNumData = list(queryWrapper).stream().filter(e -> e.getId().equals(sysCategory.getId())) if (list(queryWrapper).size() > 0) {
.map(e -> e.getSortOrder()).collect(Collectors.toList()).get(0); Integer orderNumData = list(queryWrapper).stream().filter(e -> e.getId().equals(sysCategory.getId()))
queryWrapper.eq("sort_order", inputOrderNum); .map(e -> e.getSortOrder()).collect(Collectors.toList()).get(0);
Integer orderNumCount = sysCategoryMapper.selectCount(queryWrapper); queryWrapper.eq("sort_order", inputOrderNum);
if (orderNumCount > 0 && !orderNumData.equals(inputOrderNum)) {//有重复展示顺序的,后面的号全+1 Integer orderNumCount = sysCategoryMapper.selectCount(queryWrapper);
//设置排序 if (orderNumCount > 0 && !orderNumData.equals(inputOrderNum)) {//有重复展示顺序的,后面的号全+1
QueryWrapper<SysCategory> orderNumQueryWrapper = new QueryWrapper<>(); //设置排序
orderNumQueryWrapper.ge("sort_order", inputOrderNum) QueryWrapper<SysCategory> orderNumQueryWrapper = new QueryWrapper<>();
.eq("sys_dict_id",sysCategory.getSysDictId()) orderNumQueryWrapper.ge("sort_order", inputOrderNum)
.eq("del_flag", CommonConstant.DEL_FLAG_0) .eq("sys_dict_id", sysCategory.getSysDictId())
.orderByAsc("sort_order"); .eq("del_flag", CommonConstant.DEL_FLAG_0)
if(StringUtils.isNotBlank(sysCategory.getPid())){ .orderByAsc("sort_order");
orderNumQueryWrapper.eq("pid",sysCategory.getPid()); if (StringUtils.isNotBlank(sysCategory.getPid())) {
}else{ orderNumQueryWrapper.eq("pid", sysCategory.getPid());
orderNumQueryWrapper.eq("pid",0); } else {
} orderNumQueryWrapper.eq("pid", 0);
List<SysCategory> geOrderNumList = list(orderNumQueryWrapper); }
List<SysCategory> geOrderNumList = list(orderNumQueryWrapper);
//判断相邻的序号,去掉不邻的 //判断相邻的序号,去掉不邻的
for (int i = 0; i < geOrderNumList.size(); i++) { for (int i = 0; i < geOrderNumList.size(); i++) {
if (geOrderNumList.size() == 1 || (geOrderNumList.size()==2 && geOrderNumList.get(i + 1).getSortOrder() - geOrderNumList.get(i).getSortOrder() == 1)) { if (geOrderNumList.size() == 1 || (geOrderNumList.size() == 2 && geOrderNumList.get(i + 1).getSortOrder() - geOrderNumList.get(i).getSortOrder() == 1)) {
break;
} else if (geOrderNumList.get(i + 1).getSortOrder() - geOrderNumList.get(i).getSortOrder() > 1) {
int deleteStart = geOrderNumList.get(i + 1).getSortOrder();
geOrderNumList = geOrderNumList.stream().filter(e -> e.getSortOrder() < deleteStart).collect(Collectors.toList());
if(geOrderNumList.size()!=(i+1)) {
break; break;
} else if (geOrderNumList.get(i + 1).getSortOrder() - geOrderNumList.get(i).getSortOrder() > 1) {
int deleteStart = geOrderNumList.get(i + 1).getSortOrder();
geOrderNumList = geOrderNumList.stream().filter(e -> e.getSortOrder() < deleteStart).collect(Collectors.toList());
if (geOrderNumList.size() != (i + 1)) {
break;
}
} }
} }
}
geOrderNumList.stream().forEach(e -> e.setSortOrder(e.getSortOrder() + 1)); geOrderNumList.stream().forEach(e -> e.setSortOrder(e.getSortOrder() + 1));
saveOrUpdateBatch(geOrderNumList); saveOrUpdateBatch(geOrderNumList);
}
} }
} }
} }
@@ -65,7 +65,7 @@ public class SysDictItemServiceImpl extends ServiceImpl<SysDictItemMapper, SysDi
queryWrapper.eq("del_flag", CommonConstant.DEL_FLAG_0) queryWrapper.eq("del_flag", CommonConstant.DEL_FLAG_0)
.eq("dict_id",sysDictItem.getDictId()) .eq("dict_id",sysDictItem.getDictId())
.eq("is_tag_dict",sysDictItem.getIsTagDict()) .eq("is_tag_dict",sysDictItem.getIsTagDict())
.orderByDesc("sort_order"); .orderByAsc("sort_order");
queryWrapper.eq("sort_order", inputOrderNum); queryWrapper.eq("sort_order", inputOrderNum);
Integer orderNumCount = sysDictItemMapper.selectCount(queryWrapper); Integer orderNumCount = sysDictItemMapper.selectCount(queryWrapper);
if (orderNumCount > 0) {//有重复展示顺序的,后面的号全+1 if (orderNumCount > 0) {//有重复展示顺序的,后面的号全+1
@@ -102,36 +102,38 @@ public class SysDictItemServiceImpl extends ServiceImpl<SysDictItemMapper, SysDi
//查询展示顺序相同的 //查询展示顺序相同的
QueryWrapper<SysDictItem> queryWrapper = new QueryWrapper<>(); QueryWrapper<SysDictItem> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("del_flag", CommonConstant.DEL_FLAG_0) queryWrapper.eq("del_flag", CommonConstant.DEL_FLAG_0)
.eq("dict_id",sysDictItem.getDictId()) .eq("dict_id", sysDictItem.getDictId())
.eq("is_tag_dict",sysDictItem.getIsTagDict()) .eq("is_tag_dict", sysDictItem.getIsTagDict())
.orderByAsc("sort_order"); .orderByAsc("sort_order");
Integer orderNumData = list(queryWrapper).stream().filter(e -> e.getId().equals(sysDictItem.getId())) if (list(queryWrapper).size() > 0) {
.map(e -> e.getSortOrder()).collect(Collectors.toList()).get(0); Integer orderNumData = list(queryWrapper).stream().filter(e -> e.getId().equals(sysDictItem.getId()))
queryWrapper.eq("sort_order", inputOrderNum); .map(e -> e.getSortOrder()).collect(Collectors.toList()).get(0);
Integer orderNumCount = sysDictItemMapper.selectCount(queryWrapper); queryWrapper.eq("sort_order", inputOrderNum);
if (orderNumCount > 0 && !orderNumData.equals(inputOrderNum)) {//有重复展示顺序的,后面的号全+1 Integer orderNumCount = sysDictItemMapper.selectCount(queryWrapper);
//设置排序 if (orderNumCount > 0 && !orderNumData.equals(inputOrderNum)) {//有重复展示顺序的,后面的号全+1
QueryWrapper<SysDictItem> orderNumQueryWrapper = new QueryWrapper<>(); //设置排序
orderNumQueryWrapper.ge("sort_order", inputOrderNum) QueryWrapper<SysDictItem> orderNumQueryWrapper = new QueryWrapper<>();
.eq("dict_id",sysDictItem.getDictId()) orderNumQueryWrapper.ge("sort_order", inputOrderNum)
.eq("del_flag", CommonConstant.DEL_FLAG_0) .eq("dict_id", sysDictItem.getDictId())
.eq("is_tag_dict",sysDictItem.getIsTagDict()) .eq("del_flag", CommonConstant.DEL_FLAG_0)
.orderByAsc("sort_order"); .eq("is_tag_dict", sysDictItem.getIsTagDict())
List<SysDictItem> geOrderNumList = list(orderNumQueryWrapper); .orderByAsc("sort_order");
List<SysDictItem> geOrderNumList = list(orderNumQueryWrapper);
//判断相邻的序号,去掉不邻的 //判断相邻的序号,去掉不邻的
for (int i = 0; i < geOrderNumList.size(); i++) { for (int i = 0; i < geOrderNumList.size(); i++) {
if (geOrderNumList.size() == 1) { if (geOrderNumList.size() == 1) {
break; break;
} else if (geOrderNumList.get(i + 1).getSortOrder() - geOrderNumList.get(i).getSortOrder() > 1) { } else if (geOrderNumList.get(i + 1).getSortOrder() - geOrderNumList.get(i).getSortOrder() > 1) {
int deleteStart = geOrderNumList.get(i + 1).getSortOrder(); int deleteStart = geOrderNumList.get(i + 1).getSortOrder();
geOrderNumList = geOrderNumList.stream().filter(e -> e.getSortOrder() < deleteStart).collect(Collectors.toList()); geOrderNumList = geOrderNumList.stream().filter(e -> e.getSortOrder() < deleteStart).collect(Collectors.toList());
break; break;
}
} }
}
geOrderNumList.stream().forEach(e -> e.setSortOrder(e.getSortOrder() + 1)); geOrderNumList.stream().forEach(e -> e.setSortOrder(e.getSortOrder() + 1));
saveOrUpdateBatch(geOrderNumList); saveOrUpdateBatch(geOrderNumList);
}
} }
} }
} }