CREATE DATABASE IF NOT EXISTS `fm-scheduling`; CREATE TABLE IF NOT EXISTS `work_rule` ( `id` VARCHAR ( 64 ) NOT NULL COMMENT '主键', -- `parent_id` int(8) COMMENT '上一级规则节点的id 这个主要用于XX岗位/专业在XX时间段的在岗人数 带有复合条件的规则 ', `rule_type` int(1) NOT NULL COMMENT '规则类型 1 日排班规则 2 月排班规则 0 特殊日期', `rule_operator` int(8) COMMENT '比较符号 1大于 -1 小于 0 等于 2 大于等于 -2 小于等于', `rule_value` double(10, 2) COMMENT '规则的限定值', `rule_content_ids` varchar (255) COMMENT '规则内容ids', `enable` tinyint (1) NOT NULL DEFAULT 1 COMMENT '规则是否启用', `ts` TIMESTAMP NULL NOT NULL COMMENT '乐观锁', `creator` VARCHAR ( 32 ) NOT NULL COMMENT '创建人', `creation_time` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', `modifier` VARCHAR ( 32 ) NOT NULL COMMENT '最后修改人', `modified_time` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '最后修改时间', `valid` INT ( 11 ) NOT NULL COMMENT '合法标识', PRIMARY KEY ( `id` )) ENGINE = INNODB CHARSET = utf8mb4 COMMENT '工作规则表'; CREATE TABLE IF NOT EXISTS `work_rule_content` ( `id` VARCHAR ( 64 ) NOT NULL COMMENT '主键', `rule_desc` VARCHAR ( 64 ) COMMENT 'rule描述', `rule_value` VARCHAR ( 64 ) COMMENT 'rule的值', `filed_ref` int(2) COMMENT '字段关联 以满足规则内容里的不同类型 这样好做字段层面的条件的判断 1 岗位 2 专业 3 班次 4 领导检查 5 安全日检查 ', `filed_ref_value` int(2) COMMENT '与字段相关联的值', `ts` TIMESTAMP NULL NOT NULL COMMENT '乐观锁', `creator` VARCHAR ( 32 ) NOT NULL COMMENT '创建人', `creation_time` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', `modifier` VARCHAR ( 32 ) NOT NULL COMMENT '最后修改人', `modified_time` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '最后修改时间', `valid` INT ( 11 ) NOT NULL COMMENT '合法标识', PRIMARY KEY ( `id` )) ENGINE = INNODB CHARSET = utf8mb4 COMMENT '工作规则内容表'; CREATE TABLE IF NOT EXISTS `work_shift` ( `id` VARCHAR ( 64 ) NOT NULL COMMENT '主键', `shift_abbr` VARCHAR ( 5 ) NOT NULL COMMENT '班次的简称', `shift_name` VARCHAR ( 255 ) NOT NULL COMMENT '班次的全称', `shift_start_time` VARCHAR ( 64 ) NOT NULL COMMENT '班次的开始时间', `shift_end_time` VARCHAR ( 64 ) NOT NULL COMMENT '班次的结束时间', `positionIds` VARCHAR ( 64 ) NOT NULL COMMENT '班次需要的岗位', `shift_type` int(1) NOT NULL COMMENT '班次类型 1 集团统一 0 项目统一', `real_work_duration` INT ( 8 ) NOT NULL COMMENT '班次的真实工作时间以分钟后为单位', `work_rule_id` INT ( 8 ) NOT NULL COMMENT '班次的真实工作时间以分钟后为单位', `ts` TIMESTAMP NULL NOT NULL COMMENT '乐观锁', `creator` VARCHAR ( 32 ) NOT NULL COMMENT '创建人', `creation_time` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', `modifier` VARCHAR ( 32 ) NOT NULL COMMENT '最后修改人', `modified_time` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '最后修改时间', `valid` INT ( 11 ) NOT NULL COMMENT '合法标识', PRIMARY KEY ( `id` )) ENGINE = INNODB CHARSET = utf8mb4 COMMENT '工作班次表'; CREATE TABLE IF NOT EXISTS `work_shift_duration` ( `id` VARCHAR ( 64 ) NOT NULL COMMENT '主键', `work_shift_id` VARCHAR ( 64 ) NOT NULL COMMENT '工作班次id', `duration_start` date NOT NULL COMMENT '适用时间的开始时间', `duration_end` date NOT NULL COMMENT '适用时间的结束时间', `ts` TIMESTAMP NULL NOT NULL COMMENT '乐观锁', `creator` VARCHAR ( 32 ) NOT NULL COMMENT '创建人', `creation_time` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', `modifier` VARCHAR ( 32 ) NOT NULL COMMENT '最后修改人', `modified_time` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '最后修改时间', `valid` INT ( 11 ) NOT NULL COMMENT '合法标识', PRIMARY KEY ( `id` )) ENGINE = INNODB CHARSET = utf8mb4 COMMENT '工作班次适用日期表'; CREATE TABLE IF NOT EXISTS `work_shift_rest` ( `id` VARCHAR ( 64 ) NOT NULL COMMENT '主键', `work_shift_id` VARCHAR ( 64 ) NOT NULL COMMENT '班次的id', `rest_start_time` VARCHAR ( 64 ) NULL COMMENT '班次的休息开始时间', `rest_end_time` VARCHAR ( 64 ) NULL COMMENT '班次的休息结束时间', `ts` TIMESTAMP NULL NOT NULL COMMENT '乐观锁', `creator` VARCHAR ( 32 ) NOT NULL COMMENT '创建人', `creation_time` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', `modifier` VARCHAR ( 32 ) NOT NULL COMMENT '最后修改人', `modified_time` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '最后修改时间', `valid` INT ( 11 ) NOT NULL COMMENT '合法标识', PRIMARY KEY ( `id` )) ENGINE = INNODB CHARSET = utf8mb4 COMMENT '工作班次休息时间表'; CREATE TABLE IF NOT EXISTS `work_shift_conflict` ( `id` VARCHAR ( 64 ) NOT NULL COMMENT '主键', `source_work_shift_id` VARCHAR ( 64 ) NOT NULL COMMENT '被比较的班次的id', `current_work_shift_id` VARCHAR ( 64 ) NULL COMMENT '当前的班次的id', `creator` VARCHAR ( 32 ) NOT NULL COMMENT '创建人', `creation_time` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', `modifier` VARCHAR ( 32 ) NOT NULL COMMENT '最后修改人', `modified_time` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '最后修改时间', `valid` INT ( 11 ) NOT NULL COMMENT '合法标识', PRIMARY KEY ( `id` )) ENGINE = INNODB CHARSET = utf8mb4 COMMENT '工作班次冲突表'; CREATE TABLE IF NOT EXISTS `work_staff` ( `id` VARCHAR ( 64 ) NOT NULL COMMENT '主键', `person_id` VARCHAR ( 64 ) NOT NULL COMMENT '工作人员id', `dept_id` VARCHAR ( 64) NOT NULL COMMENT '部门id', `project_id` VARCHAR ( 64 ) NOT NULL COMMENT '项目id', `position_id` VARCHAR ( 64 ) NOT NULL COMMENT '主职位id', `position_deputy_ids` VARCHAR ( 64 ) NULL COMMENT '副岗ids', `ts` TIMESTAMP NULL NOT NULL COMMENT '乐观锁', `creator` VARCHAR ( 32 ) NOT NULL COMMENT '创建人', `creation_time` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', `modifier` VARCHAR ( 32 ) NOT NULL COMMENT '最后修改人', `modified_time` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '最后修改时间', `valid` INT ( 11 ) NOT NULL COMMENT '合法标识', PRIMARY KEY ( `id` )) ENGINE = INNODB CHARSET = utf8mb4 COMMENT '工作人员档案表'; CREATE TABLE IF NOT EXISTS `work_schedule` ( `id` VARCHAR ( 64 ) NOT NULL COMMENT '主键', `year` INT ( 11 ) NOT NULL COMMENT '年', `month` INT ( 11 ) NOT NULL COMMENT '月', `day` INT ( 11 ) NOT NULL COMMENT '日', `work_shift_id` VARCHAR ( 11 ) NOT NULL COMMENT '班次id', `work_staff_id` VARCHAR ( 64 ) NOT NULL COMMENT '工作人员id', `ts` TIMESTAMP NULL NOT NULL COMMENT '乐观锁', `creator` VARCHAR ( 32 ) NOT NULL COMMENT '创建人', `creation_time` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', `modifier` VARCHAR ( 32 ) NOT NULL COMMENT '最后修改人', `modified_time` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '最后修改时间', `valid` INT ( 11 ) NOT NULL COMMENT '合法标识', PRIMARY KEY ( `id` )) ENGINE = INNODB CHARSET = utf8mb4 COMMENT '工作排班表'; CREATE INDEX idx_year_month_day USING BTREE ON work_schedule ( `year`, `month`, `day` ); CREATE INDEX idx_work_time_type USING HASH ON work_schedule ( `work_time_type` ); CREATE TABLE IF NOT EXISTS `work_time` ( `id` VARCHAR ( 64 ) NOT NULL COMMENT '主键', `work_shift_id` VARCHAR ( 11 ) NOT NULL COMMENT '班次id', `work_staff_id` VARCHAR ( 64 ) NOT NULL COMMENT '工作人员id', `real_start_time` datetime NOT NULL COMMENT '工作人员的真实上班时间', `real_end_time` datetime NOT NULL COMMENT '工作人员真实下班时间', `leave` tinyint(1) NOT NULL COMMENT '工作人员是否请假', `leave_start_time` datetime default null COMMENT '工作人员的请假开始时间', `leave_end_time` datetime default null COMMENT '工作人员的请假结束时间', `real_work_time` int(8) NOT NULL COMMENT '工作人员的真实工作时长 以分钟计', `ts` TIMESTAMP NULL NOT NULL COMMENT '乐观锁', `creator` VARCHAR ( 32 ) NOT NULL COMMENT '创建人', `creation_time` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', `modifier` VARCHAR ( 32 ) NOT NULL COMMENT '最后修改人', `modified_time` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '最后修改时间', `valid` INT ( 11 ) NOT NULL COMMENT '合法标识', PRIMARY KEY ( `id` )) ENGINE = INNODB CHARSET = utf8mb4 COMMENT '工作时间表';