You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
Supermarket/Dept.java

252 lines
7.9 KiB

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

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;
}
}