组织机构层级关系设计优化

本文探讨了组织机构层级关系的设计优化,包括新增节点时计算层级位置,使用递归算法调整部门隶属关系,以及利用mapper中的find_in_set函数查找子节点。
摘要由CSDN通过智能技术生成

本文是基于层级设计以及算法,treetable的实现来说的。


新增:新增通过父节点计算自己是第几个孩子,上篇文章已有描述。

@RequiresPermissions(value = { "dep.save" })
	@RequestMapping(value="/save")
	@ResponseBody
	public String save(Department department,HttpSession session){
		Integer uid = (Integer)session.getAttribute("uid");
		department.setCreater(uid);
		department.setCreateTime(new Date());
		department.setDelFlag("0");
		int cnt = departmentService.countByPid(department.getPid() == null ? 0 : department.getPid());
		Department pdep = departmentService.single(department.getPid()== null ? 0 : department.getPid());
		String pseq = pdep == null ? "1" : pdep.getSeq();
		department.setSeq(pseq + "." + convertCount(cnt));
		departmentService.save(department);
		return "SUCCESS";
	}


修改:修改可以更改部门的从属关系,这里比较复杂,利用递归算法,每个层级都修改其父节点集和排序号。

@RequiresPermissions(value = { "dep.update" })
	@RequestMapping(value="/update", produces="text/plain; charset=UTF-8")
	@ResponseBody
	public String update(Department department, Integer oldPid, HttpSession session){
		if(department.getId().equals(department.getPid()))
			return "不可以设置自己为自己的父级";
		if(department.getPids().contains(String.valueOf(department.getId())))
			return "不能将上级部门设置为本部门或本部门下的子部门";
		Integer uid = (Integer)session.getAttribute("
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值