package com.shanzhu.market.entity.domain; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; /** * 部门实体类 * 功能:定义系统部门的数据模型,是组织架构的基础组成单元 * 实现方式: * 1. 使用MyBatis-Plus提供的注解进行数据持久化 * 2. 采用面向对象设计,封装部门的属性和行为 * 3. 实现Serializable接口支持对象序列化和网络传输 * 数据模型说明: * 1. 采用自增主键策略,确保数据唯一性 * 2. 包含部门基本信息:ID、名称、描述、状态 * 3. 支持部门状态管理(正常/禁用) * 4. 使用常量定义状态值,提高代码可读性和维护性 * 用途: * - 组织员工的归属关系 * - 构建企业组织架构 * - 支持基于部门的数据筛选和统计 * - 为权限管理提供组织维度的控制 */ @TableName("department") // 指定映射的数据库表名 public class Dept implements Serializable { /** * 部门状态常量 - 正常 * 常量值:"0" * 业务意义:表示部门处于正常使用状态 * 状态特性: * - 可正常分配员工到此部门 * - 可参与部门树展示和业务查询 * - 可进行部门信息修改和管理操作 */ public static final String STATE_NORMAL="0"; /** * 部门状态常量 - 禁用 * 常量值:"-1" * 业务意义:表示部门已被停用/撤销 * 状态特性: * - 不能再分配新员工到此部门 * - 部门内现有员工仍可保留在该部门 * - 可用于软删除场景,保留历史数据 * 业务场景:部门合并、撤销等情况下使用 */ public static final String STATE_BAN="-1"; /** * 部门ID * 数据类型:Long * 映射关系:表主键,使用AUTO自增策略 * 业务意义:部门在系统中的唯一标识符 * 技术细节: * - 注解@TableId(type = IdType.AUTO)指定使用数据库自增 * - 数据库中应设置对应字段为AUTO_INCREMENT * 关联作用:作为外键用于关联员工表、业务数据等 */ @TableId(type = IdType.AUTO) // 指定主键生成策略为自动递增 private Long id; /** * 部门名称 * 数据类型:String * 业务意义:部门的正式名称,用于系统中的显示和标识 * 命名规范:通常采用企业标准部门名称,如"财务部"、"人力资源部"等 * 约束要求: * - 名称应具有唯一性,避免歧义 * - 长度应适中,符合业务习惯 * - 建议使用中文名称,便于业务人员理解 */ private String name; /** * 部门描述信息 * 数据类型:String * 业务意义:记录部门的详细说明、职责范围、工作内容等信息 * 用途: * - 帮助系统用户了解各部门的工作内容和职责边界 * - 为新员工提供部门信息参考 * - 辅助管理层进行部门管理和调整 * 最佳实践:应包含部门的主要职责、业务范围、工作目标等信息 */ private String info; /** * 部门状态 * 数据类型:String * 业务意义:控制部门在系统中的可用状态 * 取值说明: * - 使用常量STATE_NORMAL("0")表示正常状态 * - 使用常量STATE_BAN("-1")表示禁用状态 * 状态管理: * - 正常状态:可进行所有部门相关操作 * - 禁用状态:限制部分操作,如不能新增员工 * 建议:应使用类中定义的常量而不是直接使用字符串值,提高代码可维护性 */ private String state; /** * 默认构造方法 * 用途: * 1. 支持JSON反序列化,允许从JSON字符串创建对象 * 2. 支持MyBatis等ORM框架的对象实例化 * 3. 支持Spring等框架的依赖注入和反射操作 * 4. 允许通过setter方法逐步构建对象 * 调用场景: * - 系统启动时框架自动创建实例 * - 反序列化过程中调用 * - 手动创建对象并通过setter设置属性 */ public Dept() { } /** * 全参构造方法 * 用途:一次性创建包含所有属性的完整部门对象 * 适用场景: * - 已知所有属性值时快速创建对象 * - 测试环境中创建模拟数据 * - 从其他数据源转换时使用 * 参数说明: * @param id 部门ID,可为null(新增部门时) * @param name 部门名称,必填 * @param info 部门描述,可选 * @param state 部门状态,建议使用类中定义的常量 * 注意事项:创建新部门时,通常不需要设置id,由数据库自动生成 */ public Dept(Long id, String name, String info, String state) { this.id = id; this.name = name; this.info = info; this.state = state; } /** * 获取部门ID * 功能:返回部门的唯一标识符 * 返回值:部门ID(Long类型) * 使用场景: * - 获取部门唯一标识 * - 进行数据关联操作 * - 作为参数传递给其他方法 * @return 部门ID */ public Long getId() { return id; } /** * 设置部门ID * 功能:为部门对象设置唯一标识符 * 参数: * @param id 部门ID,通常由数据库生成 * 注意事项: * - 一般情况下不需要手动设置ID,由ORM框架自动处理 * - 仅在特殊情况下使用,如数据迁移、导入等 */ public void setId(Long id) { this.id = id; } /** * 获取部门名称 * 功能:返回部门的名称 * 返回值:部门名称(String类型) * 使用场景: * - 界面展示 * - 数据查询和筛选 * - 日志记录和审计 * @return 部门名称 */ public String getName() { return name; } /** * 设置部门名称 * 功能:为部门对象设置名称 * 参数: * @param name 部门名称 * 验证建议: * - 名称不能为空 * - 应进行唯一性检查 * - 长度应符合数据库约束 */ public void setName(String name) { this.name = name; } /** * 获取部门描述信息 * 功能:返回部门的详细描述信息 * 返回值:部门描述(String类型) * 使用场景: * - 详情页面展示 * - 部门信息导出 * - 数据分析和报告生成 * @return 部门描述 */ public String getInfo() { return info; } /** * 设置部门描述信息 * 功能:为部门对象设置详细描述信息 * 参数: * @param info 部门描述 * 内容建议: * - 包含部门主要职责 * - 描述部门业务范围 * - 说明与其他部门的协作关系 */ public void setInfo(String info) { this.info = info; } /** * 获取部门状态 * 功能:返回部门的当前状态 * 返回值: * - "0":正常状态 * - "-1":禁用状态 * 使用场景: * - 状态判断和业务逻辑控制 * - 界面状态展示 * - 数据筛选和统计 * @return 部门状态("0"表示正常, "-1"表示禁用) */ public String getState() { return state; } /** * 设置部门状态 * 功能:修改部门的可用状态 * 参数: * @param state 部门状态,建议使用类中定义的常量STATE_NORMAL或STATE_BAN * 业务影响: * - 设置为正常:部门可正常使用,可分配员工 * - 设置为禁用:部门暂停使用,限制部分操作 * 最佳实践:使用常量而非直接字符串值,如dept.setState(Dept.STATE_NORMAL) */ public void setState(String state) { this.state = state; } }