亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? departmentmanagerimpl.java

?? 基于java的組號查詢模塊
?? JAVA
字號:
/**
 * 
 */
package com.lily.dap.service.organize.impl;

import java.util.List;

import org.apache.commons.lang.StringUtils;
import org.springframework.beans.BeansException;
import org.springframework.context.ApplicationContext;
import org.springframework.context.ApplicationContextAware;

import com.lily.dap.model.QueryCondition;
import com.lily.dap.model.QueryExpression;
import com.lily.dap.model.QueryOrder;
import com.lily.dap.model.organize.Department;
import com.lily.dap.model.organize.Person;
import com.lily.dap.model.organize.Post;
import com.lily.dap.model.organize.PostPerson;
import com.lily.dap.service.core.BaseManager;
import com.lily.dap.service.core.exception.DataHaveIncludeException;
import com.lily.dap.service.core.exception.DataNotExistException;
import com.lily.dap.service.core.exception.DataNotIncludeException;
import com.lily.dap.service.core.exception.NotSupportOperationException;
import com.lily.dap.service.organize.DepartmentManager;
import com.lily.dap.service.right.RightHoldManager;

/**
 * @author zouxuemo
 *
 */
public class DepartmentManagerImpl extends BaseManager implements
		DepartmentManager, ApplicationContextAware {
	private RightHoldManager rightHoldManager;
	
	private ApplicationContext ctx;
	
	/**
	 * @param rightHoldManager 要設置的 rightHoldManager
	 */
	public void setRightHoldManager(RightHoldManager rightHoldManager) {
		this.rightHoldManager = rightHoldManager;
	}

	public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
		ctx = applicationContext;
	}

	/* (非 Javadoc)
	 * @see com.lily.dap.service.organize.DepartmentManager#getAllChildDepartments(long)
	 */
	public List getAllChildDepartments(long parent_id) {
		Department dep = (Department)get(Department.class, parent_id);
		
		return gets(Department.class, new QueryCondition().putCondition("level", QueryExpression.OP_RLIKE, dep.getLevel()).addOrder("level"));
	}

	/* (非 Javadoc)
	 * @see com.lily.dap.service.organize.DepartmentManager#getChildDepartments(long)
	 */
	public List getChildDepartments(long depart_id) {
		return gets(Department.class, new QueryCondition().putCondition("parent_id", depart_id).addOrder("code"));
	}

	/* (非 Javadoc)
	 * @see com.lily.dap.service.organize.DepartmentManager#getDepartPersonNum(long)
	 */
	public long getDepartPersonNum(long depart_id) {
		Department dep = (Department)get(Department.class, depart_id);
		
		return count(PostPerson.class, new QueryCondition().putCondition("post_id", QueryExpression.OP_INQUERY, "select id from Post where dep_id in (select id from Department where level like '" + dep.getLevel() + "%')"));
	}

	/* (非 Javadoc)
	 * @see com.lily.dap.service.organize.DepartmentManager#getDepartment(java.lang.String)
	 */
	public Department getDepartment(String name) {
		return (Department)get(Department.class, "name", name);
	}

	/* (非 Javadoc)
	 * @see com.lily.dap.service.organize.DepartmentManager#getDepartments(int)
	 */
	public List getDepartments(int type) {
		return gets(Department.class, new QueryCondition().putCondition("type", type).addOrder("level"));
	}

	/* (非 Javadoc)
	 * @see com.lily.dap.service.organize.DepartmentManager#getPersons(long, long, java.lang.String)
	 */
	public List getPersons(long depart_id, long post_id, String person_name) {
		QueryCondition queryCondition = new QueryCondition();
		
		if (post_id > 0) {
			queryCondition.putCondition("id", QueryExpression.OP_INQUERY, "select person_id from PostPerson where post_id = " + post_id);
		} else if (depart_id > 0) {
			Department dep = (Department)get(Department.class, depart_id);
			
			queryCondition.putCondition("id", QueryExpression.OP_INQUERY, "select person_id from PostPerson where post_id in (select id from Post where dep_id in (select id from Department where level like '" + dep.getLevel() + "%'))");
		}
		
		queryCondition.putCondition("name", QueryExpression.OP_LIKE, person_name);
		queryCondition.addOrder("name");
		
		return gets(Person.class, queryCondition);
	}

	/* (非 Javadoc)
	 * @see com.lily.dap.service.organize.DepartmentManager#getPostPersonNum(long)
	 */
	public long getPostPersonNum(long post_id) {
		return count(PostPerson.class, new QueryCondition().putCondition("post_id", post_id));
	}

	/* (非 Javadoc)
	 * @see com.lily.dap.service.organize.DepartmentManager#getPosts(long)
	 */
	public List getPosts(long depart_id) {
		return gets(Post.class, new QueryCondition().putCondition("dep_id", depart_id).addOrder("code"));
	}

	/* (非 Javadoc)
	 * @see com.lily.dap.service.organize.DepartmentManager#getPostsByPerson(long)
	 */
	public List getPostsByPerson(long person_id) {
		return gets(Post.class, new QueryCondition().putCondition("id", QueryExpression.OP_INQUERY, "select post_id from PostPerson where person_id = " + person_id).addOrder("code"));
	}

	/* (非 Javadoc)
	 * @see com.lily.dap.service.organize.DepartmentManager#getRootDepartment()
	 */
	public Department getRootDepartment() throws DataNotExistException {
		try {
			return (Department)get(Department.class, "parent_id", new Long(0));
		} catch (DataNotExistException e) {
			throw new DataNotExistException("組織機構的根部們不存在!");
		}
	}

	/* (非 Javadoc)
	 * @see com.lily.dap.service.organize.DepartmentManager#initOrganize(java.lang.String, java.lang.String, java.lang.String)
	 */
	public Department initOrganize(String code, String name, String des) {
		Department rootDepart = new Department();
		
		rightHoldManager.providerHoldsRole(rootDepart);
		
		rootDepart.setLevel("001");
		rootDepart.setCode(code);
		rootDepart.setName(name);
		rootDepart.setType(Department.DEPARTMENT_TYPE_ROOT);
		rootDepart.setDes(des);
		
		return rootDepart;
	}

	/* (非 Javadoc)
	 * @see com.lily.dap.service.organize.DepartmentManager#addPostPerson(long, long)
	 */
	public void addPostPerson(long post_id, long person_id)
			throws DataNotExistException, DataHaveIncludeException {
		Post post = (Post)get(Post.class, post_id);
		Person person = (Person)get(Person.class, person_id);

		if (gets(PostPerson.class, new QueryCondition().putCondition("post_id", post_id).putCondition("person_id", person_id)).size() > 0)
			throw new DataHaveIncludeException("崗位[" + post.getName() + "]已經包含了人員[" + person.getName() + "],無需添加!");
		
		doAddPostPerson(post, person);
	}
	
	protected void doAddPostPerson(Post post, Person person) {
		rightHoldManager.addHaveHold(person, post);
		
		PostPerson postPerson = new PostPerson();
		postPerson.setPost_id(post.getId());
		postPerson.setPerson_id(person.getId());
		
		doSave(postPerson);
		
		ctx.publishEvent(new OrganizeNotifyEvent(OrganizeNotifyEvent.EVENT_CLASS_POST, OrganizeNotifyEvent.EVENT_ADD_POST_HAVE_PERSON, post, person));
	}

	/* (非 Javadoc)
	 * @see com.lily.dap.service.organize.DepartmentManager#removePostPerson(long, long)
	 */
	public void removePostPerson(long post_id, long person_id)
			throws DataNotExistException, DataNotIncludeException {
		Post post = (Post)get(Post.class, post_id);
		Person person = (Person)get(Person.class, person_id);

		List result = gets(PostPerson.class, new QueryCondition().putCondition("post_id", post_id).putCondition("person_id", person_id));
		if (result.size() == 0)
			throw new DataHaveIncludeException("崗位[" + post.getName() + "]未包含人員[" + person.getName() + "],無法去除!");
		
		doRemovePostPerson((PostPerson)result.get(0), post, person);
	}
	
	protected void doRemovePostPerson(PostPerson postPerson, Post post, Person person) {
		rightHoldManager.removeHaveHold(person, post);
		
		doRemove(PostPerson.class, new Long(postPerson.getId()));
		
		ctx.publishEvent(new OrganizeNotifyEvent(OrganizeNotifyEvent.EVENT_CLASS_POST, OrganizeNotifyEvent.EVENT_REMOVE_POST_HAVE_PERSON, post, person));
	}

	/* (非 Javadoc)
	 * @see com.lily.dap.service.core.BaseManager#onBeforeAdd(java.lang.Object)
	 */
	protected Object onBeforeAdd(Object entity) {
		if (!(entity instanceof Department) && !(entity instanceof Post))
			throw new NotSupportOperationException("接口只支持對Department、Post的add(...)方法!");
		
		entity = super.onBeforeAdd(entity);
		
		if (entity instanceof Department) {
			Department d = (Department)entity;
			Department parent = (Department)get(Department.class, d.getParent_id());
			
			rightHoldManager.providerHoldsRole(d);
			rightHoldManager.addHaveHold(d, parent);
			
			String level = generateDepartmentLevel(d.getParent_id());
			d.setLevel(level);
			
			return d;
		} else {
			Post p = (Post)entity;
			Department department = (Department)get(Department.class, p.getDep_id());
			
			rightHoldManager.providerHoldsRole(p);
			rightHoldManager.addHaveHold(p, department);
			
			return p;
		}
	}

	/* (非 Javadoc)
	 * @see com.lily.dap.service.core.BaseManager#onAfterAdd(java.lang.Object)
	 */
	protected void onAfterAdd(Object entity) {
		super.onAfterAdd(entity);

		if (entity instanceof Department) {
			Department d = (Department)entity;
			
			ctx.publishEvent(new OrganizeNotifyEvent(OrganizeNotifyEvent.EVENT_CLASS_DEPARTMENT, OrganizeNotifyEvent.EVENT_ADD_DEPARTMENT, d));
		} else {
			Post p = (Post)entity;
			
			ctx.publishEvent(new OrganizeNotifyEvent(OrganizeNotifyEvent.EVENT_CLASS_POST, OrganizeNotifyEvent.EVENT_ADD_POST, p));
		}
	}

	/* (非 Javadoc)
	 * @see com.lily.dap.service.core.BaseManager#onBeforeModify(java.lang.Object)
	 */
	protected Object onBeforeModify(Object entity) {
		if (!(entity instanceof Department) && !(entity instanceof Post))
			throw new NotSupportOperationException("接口只支持對Department、Post的modify(...)方法!");
		
		entity = super.onBeforeModify(entity);
		
		if (entity instanceof Department) {
			Department d = (Department)entity;
			
			Department department = (Department)get(Department.class, d.getId());
			department.setCode(d.getCode());
			department.setName(d.getName());
			department.setType(d.getType());
			department.setDes(d.getDes());
			
			return department;
		} else {
			Post p = (Post)entity;
			
			Post post = (Post)get(Post.class, p.getId());
			post.setCode(p.getCode());
			post.setName(p.getName());
			post.setDes(p.getDes());
			
			return post;
		}
	}

	/* (非 Javadoc)
	 * @see com.lily.dap.service.core.BaseManager#onAfterModify(java.lang.Object)
	 */
	protected void onAfterModify(Object entity) {
		super.onAfterModify(entity);

		if (entity instanceof Department) {
			Department d = (Department)entity;
			
			ctx.publishEvent(new OrganizeNotifyEvent(OrganizeNotifyEvent.EVENT_CLASS_DEPARTMENT, OrganizeNotifyEvent.EVENT_MODIFY_DEPARTMENT, d));
		} else {
			Post p = (Post)entity;
			
			ctx.publishEvent(new OrganizeNotifyEvent(OrganizeNotifyEvent.EVENT_CLASS_POST, OrganizeNotifyEvent.EVENT_MODIFY_POST, p));
		}
	}

	/* (非 Javadoc)
	 * @see com.lily.dap.service.core.BaseManager#onBeforeRemove(java.lang.Object)
	 */
	protected void onBeforeRemove(Object entity) {
		if (!(entity instanceof Department) && !(entity instanceof Post))
			throw new NotSupportOperationException("接口只支持對Department、Post的remove(...)方法!");
		
		super.onBeforeRemove(entity);

		if (entity instanceof Department) {
			Department d = (Department)entity;
			
			// 調用remove去循環遞歸刪除子部門
			List childDepList = gets(Department.class, new QueryCondition().putCondition("parent_id", d.getId()));
			for(int i = 0; i < childDepList.size(); i++){
				Department childDep = (Department)childDepList.get(i);
				
				remove(Department.class, new Long(childDep.getId()));
			}
			
			// 調用remove去循環刪除部門下面的崗位,并移除崗位繼承的部門的權限
			List postList = gets(Post.class, new QueryCondition().putCondition("dep_id", d.getId()));
			for(int i = 0; i < postList.size(); i++){
				Post post = (Post)postList.get(i);
				
				remove(Post.class, new Long(post.getId()));
			}
			
			rightHoldManager.removeHoldsRoles(d);
		} else {
			Post p = (Post)entity;
			
			List postPersonList = gets(PostPerson.class, new QueryCondition().putCondition("post_id", p.getId()));
			for (int i = 0; i < postPersonList.size(); i++) {
				PostPerson postPerson = (PostPerson)postPersonList.get(i);
				
				Person person = (Person)get(Person.class, new Long(postPerson.getPerson_id()));
				
				doRemovePostPerson(postPerson, p, person);
			}
			
			rightHoldManager.removeHoldsRoles(p);
		}
	}

	/* (非 Javadoc)
	 * @see com.lily.dap.service.core.BaseManager#onAfterRemove(java.lang.Object)
	 */
	protected void onAfterRemove(Object entity) {
		super.onAfterRemove(entity);

		if (entity instanceof Department) {
			Department d = (Department)entity;
			
			ctx.publishEvent(new OrganizeNotifyEvent(OrganizeNotifyEvent.EVENT_CLASS_DEPARTMENT, OrganizeNotifyEvent.EVENT_REMOVE_DEPARTMENT, d));
		} else {
			Post p = (Post)entity;
			
			ctx.publishEvent(new OrganizeNotifyEvent(OrganizeNotifyEvent.EVENT_CLASS_POST, OrganizeNotifyEvent.EVENT_REMOVE_POST, p));
		}
	}
	
	/**
	 * 產生新建子部門的內部編碼level
	 * 
	 * @param parent_depart_id
	 * @return
	 */
	private String generateDepartmentLevel(long parent_depart_id){
		Department parent = (Department)get(Department.class, parent_depart_id);
		String parentLevel = parent.getLevel();
		
		//如果沒有子部門,則直接在父部門后邊添加001
		List siblingDeparts = gets(Department.class, new QueryCondition()
														.putCondition("parent_id", parent_depart_id)
														.addOrder("level", QueryOrder.DIR_DESC)
														.setPageSize(1)
														.setPageNo(1));
		String lowerLevel = null;
		if(siblingDeparts.isEmpty()){
			lowerLevel = "001";
		} else {
			Department sibling = (Department)siblingDeparts.get(0);
			String s = sibling.getLevel();
			int max = Integer.parseInt(s.substring(s.length() - 3));
			max++;
			
			lowerLevel = StringUtils.leftPad(String.valueOf(max), 3, "0");
		}
		
		return parentLevel + lowerLevel;
	}
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日韩欧美电影在线| 国产精品视频第一区| 欧美亚洲精品一区| 99精品在线免费| 本田岬高潮一区二区三区| 欧美成人女星排名| 91精品国产高清一区二区三区蜜臀| 欧美视频一区二区三区| 欧美日韩一区二区三区四区| 欧美日韩综合一区| 欧美一区二区三级| 日韩欧美专区在线| 精品久久五月天| 国产午夜精品久久| 亚洲欧美一区二区在线观看| 亚洲日本欧美天堂| 欧美一区二区美女| 日韩精品欧美精品| 日本欧美肥老太交大片| 亚洲va国产天堂va久久en| 亚洲成人精品在线观看| 视频一区视频二区中文| 另类的小说在线视频另类成人小视频在线 | 国产精品18久久久久久久久| 国产成人精品亚洲午夜麻豆| av一区二区三区| 日本精品免费观看高清观看| 欧美丰满少妇xxxxx高潮对白| 91精品国产一区二区三区香蕉| 精品88久久久久88久久久| 国产视频一区二区在线| 亚洲欧美偷拍三级| 日日噜噜夜夜狠狠视频欧美人| 久久国产人妖系列| 成人99免费视频| 欧美日韩国产一级片| 蜜臀91精品一区二区三区| 久久精品国产色蜜蜜麻豆| 国产成人在线看| 在线亚洲高清视频| 亚洲女同女同女同女同女同69| 亚洲美女免费在线| 奇米一区二区三区av| 粉嫩av亚洲一区二区图片| 欧美中文字幕久久| xvideos.蜜桃一区二区| 亚洲精品一二三| 麻豆国产欧美日韩综合精品二区| 懂色av噜噜一区二区三区av | 久久精品视频一区| 一区二区三区在线视频免费| 久久成人免费日本黄色| 成人av综合在线| 91精品国产麻豆| 亚洲视频免费在线观看| 久久精品久久久精品美女| 99re亚洲国产精品| 精品黑人一区二区三区久久| 亚洲欧美激情视频在线观看一区二区三区| 三级精品在线观看| 99国产精品久久久| 久久―日本道色综合久久| 国产乱码一区二区三区| 欧美日韩国产成人在线免费| 国产精品视频一二| 麻豆国产欧美一区二区三区| 91国产精品成人| 国产精品久久久久四虎| 日韩欧美国产1| 中文字幕一区二区在线播放 | 蜜臀av性久久久久av蜜臀妖精| proumb性欧美在线观看| 日韩精品中文字幕在线不卡尤物 | 国产精品视频一二| 看片网站欧美日韩| 欧美日韩和欧美的一区二区| 国产视频亚洲色图| 久久99精品国产| 欧美三级蜜桃2在线观看| 一区精品在线播放| 国产成人免费视频精品含羞草妖精 | 欧美亚洲禁片免费| 亚洲天堂精品视频| 成人午夜精品在线| 欧美精品一区二区高清在线观看 | 91成人在线观看喷潮| 国产精品毛片大码女人| 国产精品一区二区三区99| 日韩极品在线观看| 日韩一级免费观看| 亚洲国产中文字幕在线视频综合| 成人性色生活片| 国产日韩欧美综合在线| 久久99国产精品久久99果冻传媒| 制服丝袜成人动漫| 五月激情综合网| 精品污污网站免费看| 一区二区三区欧美| 在线免费亚洲电影| 亚洲综合色噜噜狠狠| 色偷偷88欧美精品久久久| 亚洲欧洲日韩在线| 99精品视频在线免费观看| 国产精品免费观看视频| 成人精品gif动图一区| 国产精品午夜在线| 白白色 亚洲乱淫| 综合av第一页| 在线一区二区三区做爰视频网站| 亚洲综合另类小说| 欧美日韩免费电影| 免费人成精品欧美精品| 日韩欧美二区三区| 国产一区二区三区四区五区美女| 26uuu亚洲综合色欧美| 国产成人免费在线观看| 亚洲欧洲精品天堂一级| 色www精品视频在线观看| 亚洲不卡一区二区三区| 一区二区三区波多野结衣在线观看| 欧美专区在线观看一区| 亚洲成av人在线观看| 日韩一区二区在线免费观看| 国产一区二区三区精品视频| 中文字幕乱码一区二区免费| 色综合天天做天天爱| 亚洲第一二三四区| 欧美成人三级在线| 成人福利电影精品一区二区在线观看| 国产精品国产三级国产aⅴ无密码 国产精品国产三级国产aⅴ原创 | 成人成人成人在线视频| 亚洲精品老司机| 7777精品伊人久久久大香线蕉的| 免费高清成人在线| 国产欧美一区二区三区鸳鸯浴| 91蜜桃视频在线| 日韩影院免费视频| 国产欧美一区二区三区鸳鸯浴 | 国产精品乱人伦| 欧美性高清videossexo| 蜜臀av在线播放一区二区三区| 国产女人aaa级久久久级| 色久综合一二码| 久久99精品国产麻豆婷婷洗澡| 国产精品午夜电影| 欧美日韩夫妻久久| 国产精品1区二区.| 亚洲小说欧美激情另类| 久久久亚洲午夜电影| 欧日韩精品视频| 国产专区综合网| 亚洲综合精品久久| 国产校园另类小说区| 欧美色图免费看| 日韩美女一区二区三区| www.综合网.com| 免费在线观看不卡| 亚洲精品国产a久久久久久| 欧美不卡一区二区三区| 91麻豆产精品久久久久久| 老司机精品视频导航| 亚洲欧美日韩系列| 日韩亚洲国产中文字幕欧美| 91年精品国产| 国内成+人亚洲+欧美+综合在线| 亚洲激情欧美激情| 久久久久久久综合日本| 欧美美女网站色| 91亚洲精品一区二区乱码| 激情图片小说一区| 爽好久久久欧美精品| 国产精品白丝在线| 亚洲精品在线免费播放| 欧美日韩在线观看一区二区| 成人免费毛片高清视频| 另类小说色综合网站| 亚洲成人一区二区在线观看| 中文字幕在线不卡视频| 国产亚洲一本大道中文在线| 欧美一区三区二区| 欧美日韩中文国产| 色综合视频一区二区三区高清| 国产精品资源在线观看| 美日韩一区二区三区| 香蕉久久夜色精品国产使用方法| 亚洲欧洲av色图| 欧美国产激情一区二区三区蜜月 | 久久激情五月婷婷| 首页综合国产亚洲丝袜| 一区二区三区四区在线播放| 国产精品美女一区二区三区 | 中文字幕电影一区| 久久综合色之久久综合| 日韩午夜在线影院| 91精品国产欧美日韩| 欧美性一区二区| 91国模大尺度私拍在线视频| 色综合天天在线| 91在线视频在线| 美女一区二区三区在线观看|