package com.norteksoft.acs.entity.organization; import java.util.HashSet; import java.util.Set; import javax.persistence.CascadeType; import javax.persistence.Entity; import javax.persistence.JoinColumn; import javax.persistence.ManyToOne; import javax.persistence.OneToMany; import javax.persistence.Table; import javax.persistence.Transient; import org.apache.commons.lang.StringUtils; import org.apache.commons.lang.builder.ToStringBuilder; import com.norteksoft.acs.entity.IdEntity; import com.norteksoft.acs.entity.authorization.RoleDepartment; /** * */ @Entity @Table(name = "ACS_DEPARTMENT") public class Department extends IdEntity { private static final long serialVersionUID = 1L; //权重 private Integer weight=1; //部门编号 private String code; //部门名称 private String name; //部门简称 private String shortTitle; //部门描述 private String summary; //公司属性 private Company company = null; //子公司 private Department parent = null; //子部门 private Set<Department> children = new HashSet<Department>(0); //设置部门和(用户-部门)中间表一对多的关系 private Set<DepartmentUser> departmentUsers = new HashSet<DepartmentUser>(0); private Set<RoleDepartment> roleDepartments = new HashSet<RoleDepartment>(0); /** * 公司和部门的一对多关系 * * @param company */ @ManyToOne(cascade = { CascadeType.PERSIST, CascadeType.MERGE }) @JoinColumn(name = "FK_COMPANY_ID") public Company getCompany() { return company; } public void setCompany(Company company) { this.company = company; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getSummary() { if(StringUtils.isEmpty(summary)){ return name; }else{ return summary; } } public void setSummary(String summary) { this.summary = summary; } public String getCode() { return code; } public void setCode(String code) { this.code = code; } @ManyToOne(cascade = { CascadeType.PERSIST, CascadeType.MERGE }) @JoinColumn(name = "FK_PARENT_DEPARTMENT_ID") public Department getParent() { return parent; } public void setParent(Department parent) { this.parent = parent; } @OneToMany(mappedBy = "parent") public Set<Department> getChildren() { return children; } public void setChildren(Set<Department> children) { this.children = children; } /** * 设置用户与(部门-用户)中间表关系(一对多) */ @OneToMany(mappedBy = "department") public Set<DepartmentUser> getDepartmentUsers() { return departmentUsers; } public void setDepartmentUsers(Set<DepartmentUser> departmentUsers) { this.departmentUsers = departmentUsers; } @Override public String toString() { return ToStringBuilder.reflectionToString(this); } @OneToMany(mappedBy = "department") public Set<RoleDepartment> getRoleDepartments() { return roleDepartments; } public void setRoleDepartments(Set<RoleDepartment> roleDepartments) { this.roleDepartments = roleDepartments; } public Integer getWeight() { return weight; } public void setWeight(Integer weight) { this.weight = weight; } public String getShortTitle() { if(StringUtils.isEmpty(shortTitle)){ return name; }else{ return shortTitle; } } public void setShortTitle(String shortTitle) { this.shortTitle = shortTitle; } @Transient public String getDefaultShortTitle(){ if(shortTitle==null){ return name.substring(0,1); }else{ return shortTitle; } } }