组织机构管理

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

所以我们在下面定义了一种相对新一点的组织机构。
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;
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值