五、组织机构模块-部门管理

组织机构模块,组织机构模块是信息化系统中核心模块,工作流与授权都与组织机构模块关联,组织机构涉及部门管理,用户管理,角色管理及职位管理等。工作流模块中定义了一套组织机构接口,我们需要实现这一套接口。
在这里插入图片描述

实现部门接口IOrg

package com.gf.statusflow;

import java.util.List;

public interface IOrg
{
	public void setId(String id);
	public String getId();
	public void setName(String name);
	public String getName();
	public void setParentId(String parentId);
	public String getParentId();
	public void setOrgPath(String orgPath);
	public String getOrgPath();
	public void setFullName(String fullName);
	public String getFullName();
	public void setSeqno(Integer seqno);
	public Integer getSeqno();
	public void setFlag(String flag);
	public String getFlag();
}

部门实体类

package com.gf.statusflow.def;

import com.gf.statusflow.IOrg;

public class DefaultOrg implements IOrg{
	private String id = null;
	private String name = null;
	private String parentId = null;
	private String orgPath = null;// /1/2
	private String fullName = null;// /集团公司/古方红糖厂家/财务部
	private Integer seqno = null;
	private String flag = "gf";
	@Override
	public void setId(String id) {
		this.id = id;
	}
	@Override
	public String getId() {
		return id;
	}
	@Override
	public void setName(String name) {
		this.name = name;
	}
	@Override
	public String getName() {
		return name;
	}
	@Override
	public void setParentId(String parentId) {
		this.parentId = parentId;
	}
	@Override
	public String getParentId() {
		return parentId;
	}
	@Override
	public void setOrgPath(String orgPath) {
		this.orgPath = orgPath;
	}
	@Override
	public String getOrgPath() {
		return orgPath;
	}
	@Override
	public void setFullName(String fullName) {
		this.fullName = fullName;
	}
	@Override
	public String getFullName() {
		return fullName;
	}
	@Override
	public void setSeqno(Integer seqno) {
		this.seqno = seqno;
	}
	@Override
	public Integer getSeqno() {
		return seqno;
	}
	@Override
	public void setFlag(String flag) {
		this.flag = flag;
	}
	@Override
	public String getFlag() {
		return flag;
	}

}

SQL

create table gf_org(id varchar(32),
	name varchar(100),
	parentid varchar(32),
	orgpath varchar(500),
	fullname varchar(500),
	seqno int,
	flag varchar(20));
	
insert into gf_org(id,name,parentid,orgpath,fullname,seqno,flag)
	values('root','集团公司',null,'/root','/集团公司',1,'gf');
insert into gf_org(id,name,parentid,orgpath,fullname,seqno,flag)
	values('1','古方红糖','root','/root/1','/集团公司/古方红糖',1,'gf');

Mapper层部门相关方法定义

/**
	 * 部门相关Mybatis方法
	 * @return
	 */
	public List<DefaultOrg> getAllOrg();
	public DefaultOrg getRootOrg();
	public void saveOrg(DefaultOrg org);
	public void deleteOrg(@Param("id") String id);
	public void updateOrg(DefaultOrg org);
	public List<DefaultOrg> getOrgList(@Param("id") String id);
	public DefaultOrg getOrgById(@Param("id") String id);

组织机构接口IOrgModel部门相关方法定义

/**
	 * 部门相关接口
	 * @return
	 */
	public List<DefaultOrg> getAllOrg();
	public DefaultOrg getRootOrg();
	public void saveOrg(DefaultOrg org);
	public void deleteOrg(String id);
	public void updateOrg(DefaultOrg org);
	public List<DefaultOrg> getOrgList(String id);
	public DefaultOrg getOrgById(String orgId);

组织机构服务类DefaultOrgModel相关部门方法

@Override
	public List<DefaultOrg> getAllOrg()
	{
		return mapper.getAllOrg();
	}
	@Override
	public DefaultOrg getRootOrg() {
		try
		{
			return mapper.getRootOrg();
		}
		catch(Exception e)
		{
			log.error(e.getMessage());
		}
		return null;
	}

	@Override
	public void saveOrg(DefaultOrg org) {
		log.debug("saveOrg org="+org.getId()+","+org.getName()+","+org.getParentId());
		try
		{
			IOrg parentOrg = this.getOrgById(org.getParentId());
			log.debug("saveOrg parentOrg="+parentOrg);
			String id = UUID.create("org");
			org.setId(id);
			String orgPath = parentOrg.getOrgPath();
			orgPath = orgPath + "/"+id;
			org.setOrgPath(orgPath);
			String fullName = parentOrg.getFullName();
			fullName = fullName + "/" + org.getName();
			org.setFullName(fullName);
			mapper.saveOrg(org);
		}
		catch(Exception e)
		{
			log.error(e.getMessage());
		}
	}

	@Override
	public void updateOrg(DefaultOrg org) {
		try
		{
			mapper.updateOrg(org);
		}
		catch(Exception e)
		{
			log.error(e.getMessage());
		}
	}
	
	@Override
	public void deleteOrg(String id) {
		try
		{
			mapper.deleteOrg(id);
		}
		catch(Exception e)
		{
			log.error(e.getMessage());
		}
	}

	@Override
	public List<DefaultOrg> getOrgList(String id) {
		try
		{
			return mapper.getOrgList(id);
		}
		catch(Exception e)
		{
			log.error(e.getMessage());
		}
		return null;
	}
	

	@Override
	public DefaultOrg getOrgById(String orgId) {
		try
		{
			return mapper.getOrgById(orgId);
		}
		catch(Exception e)
		{
			log.error(e.getMessage());
		}
		return null;
	}

组织机构Controller

@RequestMapping("/org")
	public String org()
	{
		return "/orgmodel/org";
	}
	
	@RequestMapping("/orgroot")
	@ResponseBody
	public List<TreeNode> orgroot()
	{
		List<TreeNode> roots = new ArrayList<TreeNode>();
		IOrg org = orgmodel.getRootOrg();
		TreeNode tn = fromOrg(org);
		roots.add(tn);
		return roots;
	}
	
	@RequestMapping("/orgchild")
	@ResponseBody
	public List<TreeNode> orgchild(String id)
	{
		List<TreeNode> roots = new ArrayList<TreeNode>();
		List<DefaultOrg> orgs = orgmodel.getOrgList(id);
		for(IOrg org:orgs)
		{
			roots.add(fromOrg(org));
		}
		return roots;
	}
	
	@RequestMapping("/orgsubsave")
	@ResponseBody
	public Boolean orgsubsave(DefaultOrg org)
	{
		orgmodel.saveOrg(org);
		return true;
	}
	
	@RequestMapping("/orgsave")
	@ResponseBody
	public Boolean orgsave(DefaultOrg org)
	{
		orgmodel.updateOrg(org);
		return true;
	}
	
	@RequestMapping("/orgload")
	@ResponseBody
	public List<DefaultOrg> orgload()
	{
		return orgmodel.getAllOrg();
	}
	
	@RequestMapping("/orgdelete")
	@ResponseBody
	public String orgdelete(String id)
	{
		String successRtn = "";
		String failureRtn = "";
		log.debug("orgdelete id="+id);
		String[] dim = id.split(",");
		for(String orgId:dim)
		{
			DefaultOrg org = orgmodel.getOrgById(orgId);
			log.debug("orgdelete orgId="+orgId);
			List<DefaultOrg> child = orgmodel.getOrgList(orgId);
			if(child != null && child.size()>0)
			{
				failureRtn = failureRtn + org.getName();
			}
			else
			{
				orgmodel.deleteOrg(orgId);
				successRtn = successRtn + org.getName();
			}
		}
		String rtn = "删除成功:"+successRtn+"\r\n";
		rtn = rtn + "删除失败:"+failureRtn;
		return rtn;
	}
	
	public TreeNode fromOrg(IOrg org)
	{
		TreeNode tn = new TreeNode();
		tn.setId(org.getId());
		tn.setText(org.getName());
		tn.addAttribute("isload", "false");
		tn.addAttribute("parentId", org.getParentId());
		tn.addAttribute("orgPath", org.getOrgPath());
		tn.addAttribute("fullName", org.getFullName());
		tn.addAttribute("seqno", org.getSeqno());
		tn.addAttribute("flag", org.getFlag());
		return tn;
	}

部门JSP页面

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%
	String menu = (String)request.getAttribute("menu");
%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<script type="text/javascript" src="/easyui/jquery.min.js"></script>
<script type="text/javascript" src="/easyui/jquery.easyui.min.js"></script>
<script type="text/javascript" src="/easyui/easyui-lang-zh_CN.js"></script>
<link rel="stylesheet" href="/easyui/themes/default/easyui.css"/>
<link rel="stylesheet" href="/easyui/themes/icon.css"/>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>财务报销系统</title>
<script>
function addsuborg()
{
	var objs = $('#tree').tree('getChecked');
	if(objs.length != 1)
	{
		$.messager.alert('错误','请选中一个父节点');
		return;
	}
	var id = objs[0].id;
	$('#parentId').val(id);
	$('#frm').form('submit', {    
	    url:'/orgsubsave',    
	    onSubmit: function(){    
	          
	    },    
	    success:function(data){    
	    	reloadtree();
	    }    
	}); 
}
function updatesuborg()
{
	$('#frm').form('submit', {    
	    url:'/orgsave',    
	    onSubmit: function(){    
	          
	    },    
	    success:function(data){    
	    	reloadtree();
	    }    
	}); 
}
function deleteorg()
{
	var objs = $('#tree').tree('getChecked');
	if(objs.length == 0)
	{
		$.messager.alert('错误','请选中一个需要删除部门');
		return;
	}
	var id = '';
	for(var i=0;i<objs.length;i++)
	{
		id = id + objs[i].id + ',';
	}
	console.log('deleteorg()='+objs.length+','+id);
	$.ajax({
		url:'/orgdelete?id='+id,
		success:function(data)
		{
			$.messager.alert('信息',data);
			reloadtree();
		}
	})
}
function reloadtree()
{
	//$('#tree').tree('loadData',[{"id":"1","text":"Root","iconCls":null,"url":null,"state":"closed","attributes":{"type":"system","isload":"false","path":"/","parentId":null}}]);
	$.get('/orgroot',function(data)
		{
			$('#tree').tree({
				data: data
			});
		}
	)
}
$(document).ready(
	function()
	{
		reloadtree();
		$('#tree').tree({
			onBeforeExpand:function(node,param)
			{
				if(node.attributes.isload=='false')
				{
					$.ajaxSettings.async = false;
					var url = '/orgchild?id='+node.id;
					$.get(url,function(data)
						{
							$('#tree').tree('append', {
								parent: node.target,
								data: data
							});
						}
					)
					$.ajaxSettings.async = true;
					node.attributes.isload = 'true';
				}
			},
			onClick: function(node){
				$('#id').val(node.id);
				$('#name').textbox('setValue',node.text);
				$('#seqno').textbox('setValue',node.attributes.seqno);
				$('#parentId').val(node.attributes.parentId);
				$('#orgPath').textbox('setValue',node.attributes.orgPath);
				$('#fullName').textbox('setValue',node.attributes.fullName);
			}
		});
	}
);		
</script>
</head>
<body class="easyui-layout">
    <div data-options="region:'west',title:'自定义导航'" style="width:250px;">
		<ul id="tree" class="easyui-tree" data-options="lines:true,checkbox:true,cascadeCheck:false">   
		</ul> 
    </div>
    <div data-options="region:'center',title:'部门维护'" style="padding:5px;">
		<form id="frm" method="post">
			<input type="hidden" id="id" name="id"/>
			<input type="hidden" id="parentId" name="parentId"/>
		    <div style="margin-left:50px;margin-top:30px">   
		        <input class="easyui-textbox" type="text" id="name" name="name" data-options="width:300,label:'部门名称:'" />   
		    </div>   
		    <div style="margin-left:50px;margin-top:30px"> 
		        <input class="easyui-textbox" type="text" id="seqno" name="seqno" data-options="width:300,label:'部门优先级:'" />   
		    </div>
		    <div style="margin-left:50px;margin-top:30px"> 
		        <input class="easyui-textbox" type="text" id="orgPath" name="orgPath" data-options="readonly:true,width:300,label:'部门路径:'" />   
		    </div>
		    <div style="margin-left:50px;margin-top:30px"> 
		        <input class="easyui-textbox" type="text" id="fullName" name="fullName" data-options="readonly:true,width:300,label:'部门全称:'" />   
		    </div>

  		    <div style="margin-left:50px;margin-top:30px"> 
				<a id="btn" onclick="addsuborg()" class="easyui-linkbutton" data-options="iconCls:'icon-search'">添加子部门</a>  
				<a id="btn" onclick="updatesuborg()" href="#" class="easyui-linkbutton" data-options="iconCls:'icon-search'">修改部门</a>  
				<a id="btn" onclick="deleteorg()" href="#" class="easyui-linkbutton" data-options="iconCls:'icon-search'">删除部门</a>  
		    </div>
		</form>
    </div>
</body>
</html>

  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值