增加树形父级接口+树形下拉排序

This commit is contained in:
xiejunyu
2022-05-25 17:56:13 +08:00
parent 267b5f12da
commit 964e716616
9 changed files with 191 additions and 3 deletions
@@ -16,6 +16,7 @@ import com.jero.modules.enums.FixedFieldEnum;
import com.jero.modules.system.entity.SysCategory;
import com.jero.modules.system.model.TreeSelectModel;
import com.jero.modules.system.service.ISysCategoryService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang.StringUtils;
@@ -27,6 +28,7 @@ import org.jeecgframework.poi.excel.entity.ExportParams;
import org.jeecgframework.poi.excel.entity.ImportParams;
import org.jeecgframework.poi.excel.view.JeecgEntityExcelView;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import org.springframework.web.multipart.MultipartHttpServletRequest;
@@ -44,6 +46,7 @@ import java.util.stream.Collectors;
* @Date: 2019-05-29
* @Version: V1.0
*/
@Api(tags="标签内容-树形结构")
@RestController
@RequestMapping("/sys/category")
@Slf4j
@@ -94,6 +97,14 @@ public class SysCategoryController {
result.setResult(list);
return result;
}
@AutoLog(value = "标签内容-查询字典配置的父级名称")
@ApiOperation(value = "标签内容-查询字典配置的父级名称", notes = "标签内容-查询字典配置的父级名称")
@GetMapping(value = "/queryPid")
public Result<List<SysCategory>> queryPid() {
List<SysCategory> list = sysCategoryService.queryPid();
return Result.OK(list);
}
/**标签内容-树形结构列表
*
@@ -118,6 +129,7 @@ public class SysCategoryController {
@PostMapping(value = "/add")
public Result<SysCategory> add(@RequestBody SysCategory sysCategory) {
Result<SysCategory> result = new Result<SysCategory>();
sysCategoryService.setAddOrdderNum(sysCategory);
sysCategory.setName(sysCategory.getName().replace(" ",""));
sysCategoryService.addSysCategory(sysCategory);
result.success("添加成功!");
@@ -133,6 +145,7 @@ public class SysCategoryController {
@PutMapping(value = "/edit")
public Result<SysCategory> edit(@RequestBody SysCategory sysCategory) {
Result<SysCategory> result = new Result<SysCategory>();
sysCategoryService.setEditOrderNum(sysCategory);
SysCategory sysCategoryEntity = sysCategoryService.getById(sysCategory.getId());
if(sysCategoryEntity==null) {
result.error500("未找到对应实体");
@@ -436,7 +436,7 @@ public class SysDictController {
@RequiresPermissions("dict:edit")
public Result<SysDict> edit(@RequestBody SysDict sysDict) {
Result<SysDict> result = new Result<SysDict>();
sysDictService.setEditOrdderNum(sysDict);
sysDictService.setEditOrderNum(sysDict);
SysDict sysdict = sysDictService.getById(sysDict.getId());
if (sysdict == null) {
result.error500("未找到对应实体");
@@ -84,6 +84,7 @@ public class SysDictItemController {
@CacheEvict(value= CacheConstant.SYS_DICT_CACHE, allEntries=true)
public Result<SysDictItem> add(@RequestBody SysDictItem sysDictItem) {
Result<SysDictItem> result = new Result<SysDictItem>();
sysDictItemService.setAddOrdderNum(sysDictItem);
//查询同名数据
List<SysDictItem> exitDictItemList = sysDictItemMapper.selctItemByName(sysDictItem.getItemText(),sysDictItem.getDictId());
if(CollectionUtils.isNotEmpty(exitDictItemList)){
@@ -127,6 +128,7 @@ public class SysDictItemController {
@CacheEvict(value=CacheConstant.SYS_DICT_CACHE, allEntries=true)
public Result<SysDictItem> edit(@RequestBody SysDictItem sysDictItem) {
Result<SysDictItem> result = new Result<SysDictItem>();
sysDictItemService.setEditOrderNum(sysDictItem);
SysDictItem sysdict = sysDictItemService.getById(sysDictItem.getId());
if (sysdict == null) {
result.error500("未找到对应实体");
@@ -85,4 +85,10 @@ public interface ISysCategoryService extends IService<SysCategory> {
public void updateDictDelFlag(int delFlag,String id);
List<SysCategory> queryByTreeDicCode(String dicCode);
void setAddOrdderNum(SysCategory sysCategory);
void setEditOrderNum(SysCategory sysCategory);
List<SysCategory> queryPid();
}
@@ -30,4 +30,8 @@ public interface ISysDictItemService extends IService<SysDictItem> {
* @param id
*/
public void updateDictDelFlag(int delFlag,String id);
void setAddOrdderNum(SysDictItem sysDictItem);
void setEditOrderNum(SysDictItem sysDictItem);
}
@@ -172,5 +172,5 @@ public interface ISysDictService extends IService<SysDict> {
void setAddOrdderNum(SysDict sysDict);
void setEditOrdderNum(SysDict sysDict);
void setEditOrderNum(SysDict sysDict);
}
@@ -309,4 +309,88 @@ public class SysCategoryServiceImpl extends ServiceImpl<SysCategoryMapper, SysCa
public List<SysCategory> queryByTreeDicCode(String dicCode) {
return sysCategoryMapper.queryByTreeDicCode(dicCode);
}
@Override
public void setAddOrdderNum(SysCategory sysCategory) {
Integer inputOrderNum = sysCategory.getSortOrder();
if(inputOrderNum != null) {
//查询展示顺序相同的
QueryWrapper<SysCategory> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("sys_dict_id",sysCategory.getSysDictId())
.eq("del_flag", CommonConstant.DEL_FLAG_0)
.orderByAsc("sort_order");
queryWrapper.eq("sort_order", inputOrderNum);
Integer orderNumCount = sysCategoryMapper.selectCount(queryWrapper);
if (orderNumCount > 0) {//有重复展示顺序的,后面的号全+1
//设置排序
QueryWrapper<SysCategory> orderNumQueryWrapper = new QueryWrapper<>();
orderNumQueryWrapper.ge("sort_order", inputOrderNum)
.eq("sys_dict_id",sysCategory.getSysDictId())
.eq("del_flag", CommonConstant.DEL_FLAG_0)
.orderByAsc("sort_order");
List<SysCategory> geOrderNumList = list(orderNumQueryWrapper);
//判断相邻的序号,去掉不邻的
for (int i = 0; i < geOrderNumList.size(); i++) {
if (geOrderNumList.size() == 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());
break;
}
}
geOrderNumList.stream().forEach(e -> e.setSortOrder(e.getSortOrder() + 1));
saveOrUpdateBatch(geOrderNumList);
}
}
}
@Override
public void setEditOrderNum(SysCategory sysCategory) {
Integer inputOrderNum = sysCategory.getSortOrder();
if(inputOrderNum != null) {
//查询展示顺序相同的
QueryWrapper<SysCategory> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("sys_dict_id",sysCategory.getSysDictId())
.eq("del_flag", CommonConstant.DEL_FLAG_0)
.orderByAsc("sort_order");
Integer orderNumData = list(queryWrapper).stream().filter(e -> e.getId().equals(sysCategory.getId()))
.map(e -> e.getSortOrder()).collect(Collectors.toList()).get(0);
queryWrapper.eq("sort_order", inputOrderNum);
Integer orderNumCount = sysCategoryMapper.selectCount(queryWrapper);
if (orderNumCount > 0 && !orderNumData.equals(inputOrderNum)) {//有重复展示顺序的,后面的号全+1
//设置排序
QueryWrapper<SysCategory> orderNumQueryWrapper = new QueryWrapper<>();
orderNumQueryWrapper.ge("sort_order", inputOrderNum)
.eq("sys_dict_id",sysCategory.getSysDictId())
.eq("del_flag", CommonConstant.DEL_FLAG_0)
.orderByAsc("sort_order");
List<SysCategory> geOrderNumList = list(orderNumQueryWrapper);
//判断相邻的序号,去掉不邻的
for (int i = 0; i < geOrderNumList.size(); i++) {
if (geOrderNumList.size() == 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());
break;
}
}
geOrderNumList.stream().forEach(e -> e.setSortOrder(e.getSortOrder() + 1));
saveOrUpdateBatch(geOrderNumList);
}
}
}
@Override
public List<SysCategory> queryPid() {
QueryWrapper<SysCategory> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("pid",0);
List<SysCategory> list = list(queryWrapper);
return list;
}
}
@@ -1,6 +1,8 @@
package com.jero.modules.system.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.jero.common.constant.CommonConstant;
import com.jero.modules.system.entity.SysDictItem;
import com.jero.modules.system.mapper.SysDictItemMapper;
import com.jero.modules.system.service.ISysDictItemService;
@@ -8,6 +10,7 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
import java.util.stream.Collectors;
/**
* <p>
@@ -52,4 +55,80 @@ public class SysDictItemServiceImpl extends ServiceImpl<SysDictItemMapper, SysDi
public void updateDictDelFlag(int delFlag, String id) {
baseMapper.updateDictDelFlag(delFlag,id);
}
@Override
public void setAddOrdderNum(SysDictItem sysDictItem) {
Integer inputOrderNum = sysDictItem.getSortOrder();
if(inputOrderNum != null) {
//查询展示顺序相同的
QueryWrapper<SysDictItem> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("del_flag", CommonConstant.DEL_FLAG_0)
.eq("dict_id",sysDictItem.getDictId())
.orderByAsc("order_num");
queryWrapper.eq("order_num", inputOrderNum);
Integer orderNumCount = sysDictItemMapper.selectCount(queryWrapper);
if (orderNumCount > 0) {//有重复展示顺序的,后面的号全+1
//设置排序
QueryWrapper<SysDictItem> orderNumQueryWrapper = new QueryWrapper<>();
orderNumQueryWrapper.ge("order_num", inputOrderNum)
.eq("dict_id",sysDictItem.getDictId())
.eq("del_flag", CommonConstant.DEL_FLAG_0)
.orderByAsc("order_num");
List<SysDictItem> geOrderNumList = list(orderNumQueryWrapper);
//判断相邻的序号,去掉不邻的
for (int i = 0; i < geOrderNumList.size(); i++) {
if (geOrderNumList.size() == 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());
break;
}
}
geOrderNumList.stream().forEach(e -> e.setSortOrder(e.getSortOrder() + 1));
saveOrUpdateBatch(geOrderNumList);
}
}
}
@Override
public void setEditOrderNum(SysDictItem sysDictItem) {
Integer inputOrderNum = sysDictItem.getSortOrder();
if(inputOrderNum != null) {
//查询展示顺序相同的
QueryWrapper<SysDictItem> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("del_flag", CommonConstant.DEL_FLAG_0)
.eq("dict_id",sysDictItem.getDictId())
.orderByAsc("sort_order");
Integer orderNumData = list(queryWrapper).stream().filter(e -> e.getId().equals(sysDictItem.getId()))
.map(e -> e.getSortOrder()).collect(Collectors.toList()).get(0);
queryWrapper.eq("sort_order", inputOrderNum);
Integer orderNumCount = sysDictItemMapper.selectCount(queryWrapper);
if (orderNumCount > 0 && !orderNumData.equals(inputOrderNum)) {//有重复展示顺序的,后面的号全+1
//设置排序
QueryWrapper<SysDictItem> orderNumQueryWrapper = new QueryWrapper<>();
orderNumQueryWrapper.ge("sort_order", inputOrderNum)
.eq("dict_id",sysDictItem.getDictId())
.eq("del_flag", CommonConstant.DEL_FLAG_0)
.orderByAsc("sort_order");
List<SysDictItem> geOrderNumList = list(orderNumQueryWrapper);
//判断相邻的序号,去掉不邻的
for (int i = 0; i < geOrderNumList.size(); i++) {
if (geOrderNumList.size() == 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());
break;
}
}
geOrderNumList.stream().forEach(e -> e.setSortOrder(e.getSortOrder() + 1));
saveOrUpdateBatch(geOrderNumList);
}
}
}
}
@@ -484,7 +484,7 @@ public class SysDictServiceImpl extends ServiceImpl<SysDictMapper, SysDict> impl
}
@Override
public void setEditOrdderNum(SysDict sysDict) {
public void setEditOrderNum(SysDict sysDict) {
Integer inputOrderNum = sysDict.getOrderNum();
if(inputOrderNum != null) {
//查询展示顺序相同的