组织机构管理

来源:互联网 发布:淘宝访问深度怎么计算 编辑:程序博客网 时间:2024/03/28 16:50

组织机构管理的图片
最早的组织机构管理是用上面直线型的方式来做。把每个对象创建出来。
但是这种方式不大灵活,如果在部门中添加新的部门整个组织的架构都要变动。

所以我们在下面定义了一种相对新一点的组织机构。
OrgType:组织机构类型,用来说明组织机构有哪些组织。
OrgType

/** * 组织机构类型对象,用来设定系统中存在哪些组织类型 * 如:对于学校而言,可能存在:学校,分校,校长办,行政部门,教学部门,专业,班级 * @author KongHao * */@Entity@Table(name="t_org_type")public class OrgType {    /**     * 类型的标识     */    private int id;    /**     * 类型的名称     */    private String name;    /**     * 类型的sn序号     */    private String sn;    @Id    @GeneratedValue    public int getId() {        return id;    }    public void setId(int id) {        this.id = id;    }    @NotEmpty(message="组织机构类型名称不能为空")    public String getName() {        return name;    }    public void setName(String name) {        this.name = name;    }    @NotEmpty(message="组织机构标识不能为空")    public String getSn() {        return sn;    }    public void setSn(String sn) {        this.sn = sn;    }}

OrgTypeRule:组织类型规则,用来定义组织类型之间的规则,例如哪些类型下面应该有哪些子类。
orgtyperule

/** * 组织机构类型的规则表,用来确定组织之间的关系 * @author KongHao * */@Entity@Table(name="t_org_type_rule")public class OrgTypeRule {    /**     * 规则标识     */    private int id;    /**     * 规则的父id     */    private int pid;    /**     * 规则的子id     */    private int cid;    /**     * 两者之间的数量,如果为-1表示可以有无限多个     */    private int num;    @Id    @GeneratedValue    public int getId() {        return id;    }    public void setId(int id) {        this.id = id;    }    public int getPid() {        return pid;    }    public void setPid(int pid) {        this.pid = pid;    }    public int getCid() {        return cid;    }    public void setCid(int cid) {        this.cid = cid;    }    public int getNum() {        return num;    }    public void setNum(int num) {        this.num = num;    }}

Org:定义组织相关的内容,形成一颗组织树。
org

/** * 组织对象,该表可以生成完整的组织树 * 根据组织类型来具体存储实际中存在的组织 * 昭通学院-->XX * 校本部-->FX * 南校区-->FX * @author KongHao * */@Entity@Table(name="t_org")public class Org {    /**     * 组织机构的id     */    private int id;    /**     * 组织机构的名称     */    private String name;    /**     * 组织机构所属类型的id,此处不要使用ManyToOne     */    private int typeId;    /**     * 组织机构所属类型的名称,冗余     */    private String typeName;    /**     * 组织机构的排序号     */    private int orderNum;    /**     * 组织机构的父亲组织     */    private Org parent;    /**     * 管理类型     */    private int managerType;    /**     * 组织机构的地址     */    private String address;    /**     * 组织机构的电话     */    private String phone;    /**     * 扩展属性1,用于在针对某些特殊的组织存储相应的信息     */    private String att1;    /**     * 扩展属性2,用于在针对某些特殊的组织存储相应的信息     */    private String att2;    /**     * 扩展属性3,用于在针对某些特殊的组织存储相应的信息     */    private String att3;    @Id    @GeneratedValue    public int getId() {        return id;    }    public void setId(int id) {        this.id = id;    }    @NotEmpty(message="组织机构的名称不能为空")    public String getName() {        return name;    }    public void setName(String name) {        this.name = name;    }    @Column(name="tid")    public int getTypeId() {        return typeId;    }    public void setTypeId(int typeId) {        this.typeId = typeId;    }    @Column(name="tname")    public String getTypeName() {        return typeName;    }    public void setTypeName(String typeName) {        this.typeName = typeName;    }    @Column(name="order_num")    public int getOrderNum() {        return orderNum;    }    public void setOrderNum(int orderNum) {        this.orderNum = orderNum;    }    @Column(name="manager_type")    public int getManagerType() {        return managerType;    }    public void setManagerType(int managerType) {        this.managerType = managerType;    }    @ManyToOne    @JoinColumn(name="pid")    public Org getParent() {        return parent;    }    public void setParent(Org parent) {        this.parent = parent;    }    public String getAddress() {        return address;    }    public void setAddress(String address) {        this.address = address;    }    public String getPhone() {        return phone;    }    public void setPhone(String phone) {        this.phone = phone;    }    public String getAtt1() {        return att1;    }    public void setAtt1(String att1) {        this.att1 = att1;    }    public String getAtt2() {        return att2;    }    public void setAtt2(String att2) {        this.att2 = att2;    }    public String getAtt3() {        return att3;    }    public void setAtt3(String att3) {        this.att3 = att3;    }    @Override    public boolean equals(Object obj) {        Org o = (Org)obj;        return this.id==o.getId();    }    public Org() {    }    public Org(int id, String name) {        super();        this.id = id;        this.name = name;    }}

Person:请直接看代码注释
Person

/** * 人员对象,对于人员而言,某些项目中,可能Person里面会有一些非常特殊的属性,并不能够在人员对象中 * 一一展示,如学校系统:教师和学生要存储的信息完全不一致,此时就创建两个关联类来和Person进行关联 * 然后根据情况来确定是否有必要提供添加人员的功能,如果都是使用其他对象关联,如果所有的人员要么是教师 * 要么是学生,此时可以提供相应的教师和学生的添加功能,在添加学生和教师的时候直接添加Person对象 * 所以此处就把的公共属性抽取出来 * @author KongHao * */@Entity@Table(name="t_person")public class Person {    private int id;    private String name;    private String sfzh;    private String phone;    private int sex;    @Id    @GeneratedValue    public int getId() {        return id;    }    public void setId(int id) {        this.id = id;    }    public String getName() {        return name;    }    public void setName(String name) {        this.name = name;    }    public String getSfzh() {        return sfzh;    }    public void setSfzh(String sfzh) {        this.sfzh = sfzh;    }    public int getSex() {        return sex;    }    public void setSex(int sex) {        this.sex = sex;    }    public String getPhone() {        return phone;    }    public void setPhone(String phone) {        this.phone = phone;    }}

Position:人在组织中所处的岗位
positon

/** * 岗位的对象,用来确定某个人员所属的岗位 * 存储的就是岗位的名称 * 副校长,校长,处长,副处长,科长,普通员工 * @author KongHao * */@Entity@Table(name="t_position")public class Position {    /**     * 岗位的标识     */    private int id;    /**     * 岗位的名称     */    private String name;    /**     * 岗位的sn     */    private String sn;    /**     * 岗位的是否具备管理功能,目前意义不大     */    private int manager;    @Id    @GeneratedValue    public int getId() {        return id;    }    public void setId(int id) {        this.id = id;    }    @NotEmpty(message="岗位名称不能为空")    public String getName() {        return name;    }    public void setName(String name) {        this.name = name;    }    @NotEmpty(message="岗位的标识不能为空")    public String getSn() {        return sn;    }    public void setSn(String sn) {        this.sn = sn;    }    public int getManager() {        return manager;    }    public void setManager(int manager) {        this.manager = manager;    }}

PersonOrgPos:人员组织岗位对应关系
PersonOrgPos

/** * 人员组织岗位对应关系表,这张表里面存储了人员和组织和岗位的对应关系 * @author KongHao * */@Entity@Table(name="t_person_org_pos")public class PersonOrgPos {    /**     * 关系标识     */    private int id;    /**     * 人员id,这里也可以存储实体类,但是不太建议     */    private int personId;    /**     * 组织的id     */    private int orgId;    /**     * 岗位的id     */    private int posId;    @Id    @GeneratedValue    public int getId() {        return id;    }    public void setId(int id) {        this.id = id;    }    @Column(name="person_id")    public int getPersonId() {        return personId;    }    public void setPersonId(int personId) {        this.personId = personId;    }    @Column(name="org_id")    public int getOrgId() {        return orgId;    }    public void setOrgId(int orgId) {        this.orgId = orgId;    }    @Column(name="pos_id")    public int getPosId() {        return posId;    }    public void setPosId(int posId) {        this.posId = posId;    }}
0 0