标签项+展示区域+标签内容增加排序功能

This commit is contained in:
xiejunyu
2022-05-24 20:02:26 +08:00
parent 9dd4d7d43b
commit e7a9c716f0
11 changed files with 217 additions and 4 deletions
@@ -387,6 +387,8 @@ public class SysDictController {
@RequiresPermissions("dict:add")
public Result<SysDict> add(@RequestBody SysDict sysDict) {
Result<SysDict> result = new Result<SysDict>();
sysDictService.setAddOrdderNum(sysDict);
//校验--不能重复数据
QueryWrapper<SysDict> queryWrapper = new QueryWrapper<>();
//查询同一模块下,同名数据
@@ -434,6 +436,7 @@ public class SysDictController {
@RequiresPermissions("dict:edit")
public Result<SysDict> edit(@RequestBody SysDict sysDict) {
Result<SysDict> result = new Result<SysDict>();
sysDictService.setEditOrdderNum(sysDict);
SysDict sysdict = sysDictService.getById(sysDict.getId());
if (sysdict == null) {
result.error500("未找到对应实体");
@@ -125,4 +125,7 @@ public class SysDict implements Serializable {
@Dict(dictTable = "sys_dict_item", dicText = "en_name", dicCode ="en_name")
@ApiModelProperty(value = "属性类型英文名")
private java.lang.String attributeTypeEnName;
/**排序*/
private java.lang.Integer orderNum;
}
@@ -135,7 +135,7 @@
<select id="queryPageList" resultType="com.jero.modules.system.entity.SysDict">
select d.id,d.create_by,d.create_time,d.update_by,d.update_time,
d.dict_name,d.dict_code,d.description,d.del_flag,d.type,
d.dict_name,d.dict_code,d.description,d.del_flag,d.type,d.order_num,
d.dict_en_name,d.is_tag_dict,d.is_read_only,d.attribute_type,
i.item_text as attribute_type_name,i.en_name as attribute_type_en_name
from sys_dict as d
@@ -166,6 +166,6 @@
</choose>
</if>
order by d.create_time desc
order by d.order_num desc
</select>
</mapper>
@@ -169,4 +169,8 @@ public interface ISysDictService extends IService<SysDict> {
String queryDictItemByName(String code, String itemName, String cut);
String queryDictItemByValue(String code, String itemName, String cut);
void setAddOrdderNum(SysDict sysDict);
void setEditOrdderNum(SysDict sysDict);
}
@@ -447,4 +447,76 @@ public class SysDictServiceImpl extends ServiceImpl<SysDictMapper, SysDict> impl
return dictItemValue;
}
@Override
public void setAddOrdderNum(SysDict sysDict) {
Integer inputOrderNum = sysDict.getOrderNum();
if(inputOrderNum != null) {
//查询展示顺序相同的
QueryWrapper<SysDict> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("del_flag", CommonConstant.DEL_FLAG_0)
.orderByAsc("order_num");
queryWrapper.eq("order_num", inputOrderNum);
Integer orderNumCount = sysDictMapper.selectCount(queryWrapper);
if (orderNumCount > 0) {//有重复展示顺序的,后面的号全+1
//设置排序
QueryWrapper<SysDict> orderNumQueryWrapper = new QueryWrapper<>();
orderNumQueryWrapper.ge("order_num", inputOrderNum)
.eq("del_flag", CommonConstant.DEL_FLAG_0)
.orderByAsc("order_num");
List<SysDict> geOrderNumList = list(orderNumQueryWrapper);
//判断相邻的序号,去掉不邻的
for (int i = 0; i < geOrderNumList.size(); i++) {
if (geOrderNumList.size() == 1) {
break;
} else if (geOrderNumList.get(i + 1).getOrderNum() - geOrderNumList.get(i).getOrderNum() > 1) {
int deleteStart = geOrderNumList.get(i + 1).getOrderNum();
geOrderNumList = geOrderNumList.stream().filter(e -> e.getOrderNum() < deleteStart).collect(Collectors.toList());
break;
}
}
geOrderNumList.stream().forEach(e -> e.setOrderNum(e.getOrderNum() + 1));
saveOrUpdateBatch(geOrderNumList);
}
}
}
@Override
public void setEditOrdderNum(SysDict sysDict) {
Integer inputOrderNum = sysDict.getOrderNum();
if(inputOrderNum != null) {
//查询展示顺序相同的
QueryWrapper<SysDict> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("del_flag", CommonConstant.DEL_FLAG_0)
.orderByAsc("order_num");
Integer orderNumData = list(queryWrapper).stream().filter(e -> e.getId().equals(sysDict.getId()))
.map(e -> e.getOrderNum()).collect(Collectors.toList()).get(0);
queryWrapper.eq("order_num", inputOrderNum);
Integer orderNumCount = sysDictMapper.selectCount(queryWrapper);
if (orderNumCount > 0 && !orderNumData.equals(inputOrderNum)) {//有重复展示顺序的,后面的号全+1
//设置排序
QueryWrapper<SysDict> orderNumQueryWrapper = new QueryWrapper<>();
orderNumQueryWrapper.ge("order_num", inputOrderNum)
.eq("del_flag", CommonConstant.DEL_FLAG_0)
.orderByAsc("order_num");
List<SysDict> geOrderNumList = list(orderNumQueryWrapper);
//判断相邻的序号,去掉不邻的
for (int i = 0; i < geOrderNumList.size(); i++) {
if (geOrderNumList.size() == 1) {
break;
} else if (geOrderNumList.get(i + 1).getOrderNum() - geOrderNumList.get(i).getOrderNum() > 1) {
int deleteStart = geOrderNumList.get(i + 1).getOrderNum();
geOrderNumList = geOrderNumList.stream().filter(e -> e.getOrderNum() < deleteStart).collect(Collectors.toList());
break;
}
}
geOrderNumList.stream().forEach(e -> e.setOrderNum(e.getOrderNum() + 1));
saveOrUpdateBatch(geOrderNumList);
}
}
}
}