-- 考勤相关表全量重建脚本
-- 执行日期：2026-03-25
-- 用途：重建当前考勤模块全部核心表结构；如表已存在则先删除后重建
-- 注意：本脚本会删除现有 lq_attendance_* 表数据，请先确认目标环境

SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;

-- 用户表考勤分组字段（保留数据，仅在不存在时补齐）
SET @db_name = DATABASE();

SET @attendance_group_col_exists = (
  SELECT COUNT(1)
  FROM information_schema.COLUMNS
  WHERE TABLE_SCHEMA = @db_name
    AND TABLE_NAME = 'BASE_USER'
    AND COLUMN_NAME = 'F_AttendanceGroupId'
);
SET @attendance_group_col_sql = IF(
  @attendance_group_col_exists = 0,
  'ALTER TABLE `BASE_USER` ADD COLUMN `F_AttendanceGroupId` varchar(50) DEFAULT NULL COMMENT ''考勤分组ID'' AFTER `F_GW`;',
  'SELECT ''BASE_USER.F_AttendanceGroupId 已存在'';'
);
PREPARE stmt_attendance_group_col FROM @attendance_group_col_sql;
EXECUTE stmt_attendance_group_col;
DEALLOCATE PREPARE stmt_attendance_group_col;

SET @attendance_group_idx_exists = (
  SELECT COUNT(1)
  FROM information_schema.STATISTICS
  WHERE TABLE_SCHEMA = @db_name
    AND TABLE_NAME = 'BASE_USER'
    AND INDEX_NAME = 'idx_attendance_group_id'
);
SET @attendance_group_idx_sql = IF(
  @attendance_group_idx_exists = 0,
  'ALTER TABLE `BASE_USER` ADD INDEX `idx_attendance_group_id` (`F_AttendanceGroupId`);',
  'SELECT ''idx_attendance_group_id 已存在'';'
);
PREPARE stmt_attendance_group_idx FROM @attendance_group_idx_sql;
EXECUTE stmt_attendance_group_idx;
DEALLOCATE PREPARE stmt_attendance_group_idx;

DROP TABLE IF EXISTS `lq_attendance_config_history`;
DROP TABLE IF EXISTS `lq_attendance_record`;
DROP TABLE IF EXISTS `lq_attendance_absenteeism_rule`;
DROP TABLE IF EXISTS `lq_attendance_missing_card_rule`;
DROP TABLE IF EXISTS `lq_attendance_late_rule`;
DROP TABLE IF EXISTS `lq_attendance_annual_leave_rule`;
DROP TABLE IF EXISTS `lq_attendance_funeral_leave_rule`;
DROP TABLE IF EXISTS `lq_attendance_marriage_leave_rule`;
DROP TABLE IF EXISTS `lq_attendance_extra_leave`;
DROP TABLE IF EXISTS `lq_attendance_exempt_user`;
DROP TABLE IF EXISTS `lq_attendance_holiday`;
DROP TABLE IF EXISTS `lq_attendance_group`;
DROP TABLE IF EXISTS `lq_attendance_setting`;
DROP TABLE IF EXISTS `lq_attendance_summary`;

CREATE TABLE `lq_attendance_setting` (
  `F_Id` varchar(50) NOT NULL COMMENT '主键ID',
  `F_LeaveDeductDailySalaryRate` decimal(18,2) NOT NULL DEFAULT 1.00 COMMENT '请假扣款日薪倍率',
  `F_SickLeaveDeductDailySalaryRate` decimal(18,2) NOT NULL DEFAULT 1.00 COMMENT '病假扣款日薪倍率',
  `F_Remark` varchar(500) DEFAULT NULL COMMENT '备注',
  `F_CreateTime` datetime DEFAULT NULL COMMENT '创建时间',
  `F_DeleteMark` int DEFAULT 0 COMMENT '逻辑删除标记（0-正常，1-已删除）',
  `F_VersionNo` int DEFAULT 1 COMMENT '当前版本号',
  `F_LastModifyUserId` varchar(50) DEFAULT NULL COMMENT '最后修改人ID',
  `F_LastModifyUserName` varchar(100) DEFAULT NULL COMMENT '最后修改人姓名',
  `F_LastModifyTime` datetime DEFAULT NULL COMMENT '最后修改时间',
  `F_CreateUserId` varchar(50) DEFAULT NULL COMMENT '创建人ID',
  PRIMARY KEY (`F_Id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='考勤设置主表';

CREATE TABLE `lq_attendance_holiday` (
  `F_Id` varchar(50) NOT NULL COMMENT '主键ID',
  `F_HolidayDate` datetime NOT NULL COMMENT '公休日期',
  `F_HolidayName` varchar(100) DEFAULT NULL COMMENT '公休名称',
  `F_Remark` varchar(500) DEFAULT NULL COMMENT '备注',
  `F_SortCode` int NOT NULL DEFAULT 0 COMMENT '排序',
  `F_CreateTime` datetime DEFAULT NULL COMMENT '创建时间',
  `F_DeleteMark` int DEFAULT 0 COMMENT '逻辑删除标记（0-正常，1-已删除）',
  `F_VersionNo` int DEFAULT 1 COMMENT '当前版本号',
  `F_LastModifyUserId` varchar(50) DEFAULT NULL COMMENT '最后修改人ID',
  `F_LastModifyUserName` varchar(100) DEFAULT NULL COMMENT '最后修改人姓名',
  `F_LastModifyTime` datetime DEFAULT NULL COMMENT '最后修改时间',
  `F_CreateUserId` varchar(50) DEFAULT NULL COMMENT '创建人ID',
  PRIMARY KEY (`F_Id`),
  KEY `idx_holiday_date` (`F_HolidayDate`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='考勤公休日期表';

CREATE TABLE `lq_attendance_group` (
  `F_Id` varchar(50) NOT NULL COMMENT '主键ID',
  `F_GroupName` varchar(100) NOT NULL COMMENT '分组名称',
  `F_WorkStartTime` varchar(10) NOT NULL COMMENT '上班打卡时间',
  `F_WorkEndTime` varchar(10) NOT NULL COMMENT '下班打卡时间',
  `F_MonthlyRestDays` int NOT NULL DEFAULT 0 COMMENT '月应休天数',
  `F_IsEnabled` int NOT NULL DEFAULT 1 COMMENT '是否启用（1-启用，0-禁用）',
  `F_Remark` varchar(500) DEFAULT NULL COMMENT '备注',
  `F_SortCode` int NOT NULL DEFAULT 0 COMMENT '排序',
  `F_CreateTime` datetime DEFAULT NULL COMMENT '创建时间',
  `F_DeleteMark` int DEFAULT 0 COMMENT '逻辑删除标记（0-正常，1-已删除）',
  `F_VersionNo` int DEFAULT 1 COMMENT '当前版本号',
  `F_LastModifyUserId` varchar(50) DEFAULT NULL COMMENT '最后修改人ID',
  `F_LastModifyUserName` varchar(100) DEFAULT NULL COMMENT '最后修改人姓名',
  `F_LastModifyTime` datetime DEFAULT NULL COMMENT '最后修改时间',
  `F_CreateUserId` varchar(50) DEFAULT NULL COMMENT '创建人ID',
  PRIMARY KEY (`F_Id`),
  KEY `idx_group_name` (`F_GroupName`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='考勤分组表';

CREATE TABLE `lq_attendance_exempt_user` (
  `F_Id` varchar(50) NOT NULL COMMENT '主键ID',
  `F_UserId` varchar(50) NOT NULL COMMENT '用户ID',
  `F_UserName` varchar(100) DEFAULT NULL COMMENT '用户姓名',
  `F_StartDate` datetime DEFAULT NULL COMMENT '生效开始日期',
  `F_EndDate` datetime DEFAULT NULL COMMENT '生效结束日期',
  `F_IsEnabled` int NOT NULL DEFAULT 1 COMMENT '是否启用（1-启用，0-禁用）',
  `F_Remark` varchar(500) DEFAULT NULL COMMENT '备注',
  `F_SortCode` int NOT NULL DEFAULT 0 COMMENT '排序',
  `F_CreateTime` datetime DEFAULT NULL COMMENT '创建时间',
  `F_DeleteMark` int DEFAULT 0 COMMENT '逻辑删除标记（0-正常，1-已删除）',
  `F_VersionNo` int DEFAULT 1 COMMENT '当前版本号',
  `F_LastModifyUserId` varchar(50) DEFAULT NULL COMMENT '最后修改人ID',
  `F_LastModifyUserName` varchar(100) DEFAULT NULL COMMENT '最后修改人姓名',
  `F_LastModifyTime` datetime DEFAULT NULL COMMENT '最后修改时间',
  `F_CreateUserId` varchar(50) DEFAULT NULL COMMENT '创建人ID',
  PRIMARY KEY (`F_Id`),
  KEY `idx_exempt_user` (`F_UserId`, `F_IsEnabled`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='免考勤人员表';

CREATE TABLE `lq_attendance_extra_leave` (
  `F_Id` varchar(50) NOT NULL COMMENT '主键ID',
  `F_UserId` varchar(50) NOT NULL COMMENT '用户ID',
  `F_UserName` varchar(100) DEFAULT NULL COMMENT '用户姓名',
  `F_LeaveName` varchar(100) NOT NULL COMMENT '额外假期名称',
  `F_GrantYear` int NOT NULL COMMENT '归属年份',
  `F_ExtraDays` decimal(18,2) NOT NULL DEFAULT 0.00 COMMENT '额外假期天数',
  `F_IsEnabled` int NOT NULL DEFAULT 1 COMMENT '是否启用（1-启用，0-禁用）',
  `F_Remark` varchar(500) DEFAULT NULL COMMENT '备注',
  `F_SortCode` int NOT NULL DEFAULT 0 COMMENT '排序',
  `F_CreateTime` datetime DEFAULT NULL COMMENT '创建时间',
  `F_DeleteMark` int DEFAULT 0 COMMENT '逻辑删除标记（0-正常，1-已删除）',
  `F_VersionNo` int DEFAULT 1 COMMENT '当前版本号',
  `F_LastModifyUserId` varchar(50) DEFAULT NULL COMMENT '最后修改人ID',
  `F_LastModifyUserName` varchar(100) DEFAULT NULL COMMENT '最后修改人姓名',
  `F_LastModifyTime` datetime DEFAULT NULL COMMENT '最后修改时间',
  `F_CreateUserId` varchar(50) DEFAULT NULL COMMENT '创建人ID',
  PRIMARY KEY (`F_Id`),
  KEY `idx_extra_leave_user_year` (`F_UserId`, `F_GrantYear`, `F_IsEnabled`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='员工额外假期配置表';

CREATE TABLE `lq_attendance_marriage_leave_rule` (
  `F_Id` varchar(50) NOT NULL COMMENT '主键ID',
  `F_MinYears` int NOT NULL COMMENT '最小司龄（含）',
  `F_MaxYears` int DEFAULT NULL COMMENT '最大司龄（不含）',
  `F_LeaveDays` int NOT NULL DEFAULT 0 COMMENT '婚假天数',
  `F_Remark` varchar(500) DEFAULT NULL COMMENT '备注',
  `F_SortCode` int NOT NULL DEFAULT 0 COMMENT '排序',
  `F_CreateTime` datetime DEFAULT NULL COMMENT '创建时间',
  `F_DeleteMark` int DEFAULT 0 COMMENT '逻辑删除标记（0-正常，1-已删除）',
  `F_VersionNo` int DEFAULT 1 COMMENT '当前版本号',
  `F_LastModifyUserId` varchar(50) DEFAULT NULL COMMENT '最后修改人ID',
  `F_LastModifyUserName` varchar(100) DEFAULT NULL COMMENT '最后修改人姓名',
  `F_LastModifyTime` datetime DEFAULT NULL COMMENT '最后修改时间',
  PRIMARY KEY (`F_Id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='婚假规则表';

CREATE TABLE `lq_attendance_funeral_leave_rule` (
  `F_Id` varchar(50) NOT NULL COMMENT '主键ID',
  `F_MinYears` int NOT NULL COMMENT '最小司龄（含）',
  `F_MaxYears` int DEFAULT NULL COMMENT '最大司龄（不含）',
  `F_DirectRelativeDays` int NOT NULL DEFAULT 0 COMMENT '直系亲属丧假天数',
  `F_IndirectRelativeDays` int NOT NULL DEFAULT 0 COMMENT '非直系亲属丧假天数',
  `F_Remark` varchar(500) DEFAULT NULL COMMENT '备注',
  `F_SortCode` int NOT NULL DEFAULT 0 COMMENT '排序',
  `F_CreateTime` datetime DEFAULT NULL COMMENT '创建时间',
  `F_DeleteMark` int DEFAULT 0 COMMENT '逻辑删除标记（0-正常，1-已删除）',
  `F_VersionNo` int DEFAULT 1 COMMENT '当前版本号',
  `F_LastModifyUserId` varchar(50) DEFAULT NULL COMMENT '最后修改人ID',
  `F_LastModifyUserName` varchar(100) DEFAULT NULL COMMENT '最后修改人姓名',
  `F_LastModifyTime` datetime DEFAULT NULL COMMENT '最后修改时间',
  PRIMARY KEY (`F_Id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='丧假规则表';

CREATE TABLE `lq_attendance_annual_leave_rule` (
  `F_Id` varchar(50) NOT NULL COMMENT '主键ID',
  `F_MinYears` int NOT NULL COMMENT '最小司龄（含）',
  `F_MaxYears` int DEFAULT NULL COMMENT '最大司龄（不含）',
  `F_LeaveDays` int NOT NULL DEFAULT 0 COMMENT '年假天数',
  `F_Remark` varchar(500) DEFAULT NULL COMMENT '备注',
  `F_SortCode` int NOT NULL DEFAULT 0 COMMENT '排序',
  `F_CreateTime` datetime DEFAULT NULL COMMENT '创建时间',
  `F_DeleteMark` int DEFAULT 0 COMMENT '逻辑删除标记（0-正常，1-已删除）',
  `F_VersionNo` int DEFAULT 1 COMMENT '当前版本号',
  `F_LastModifyUserId` varchar(50) DEFAULT NULL COMMENT '最后修改人ID',
  `F_LastModifyUserName` varchar(100) DEFAULT NULL COMMENT '最后修改人姓名',
  `F_LastModifyTime` datetime DEFAULT NULL COMMENT '最后修改时间',
  PRIMARY KEY (`F_Id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='年假规则表';

CREATE TABLE `lq_attendance_late_rule` (
  `F_Id` varchar(50) NOT NULL COMMENT '主键ID',
  `F_MinMinutes` int NOT NULL COMMENT '最小迟到/早退分钟（含）',
  `F_MaxMinutes` int DEFAULT NULL COMMENT '最大迟到/早退分钟（不含）',
  `F_DeductMode` int NOT NULL COMMENT '扣款方式',
  `F_DeductValue` decimal(18,2) NOT NULL DEFAULT 0.00 COMMENT '扣款值',
  `F_ExpressionText` varchar(255) DEFAULT NULL COMMENT '展示说明',
  `F_Remark` varchar(500) DEFAULT NULL COMMENT '备注',
  `F_SortCode` int NOT NULL DEFAULT 0 COMMENT '排序',
  `F_CreateTime` datetime DEFAULT NULL COMMENT '创建时间',
  `F_DeleteMark` int DEFAULT 0 COMMENT '逻辑删除标记（0-正常，1-已删除）',
  `F_VersionNo` int DEFAULT 1 COMMENT '当前版本号',
  `F_LastModifyUserId` varchar(50) DEFAULT NULL COMMENT '最后修改人ID',
  `F_LastModifyUserName` varchar(100) DEFAULT NULL COMMENT '最后修改人姓名',
  `F_LastModifyTime` datetime DEFAULT NULL COMMENT '最后修改时间',
  PRIMARY KEY (`F_Id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='迟到/早退扣款规则表';

CREATE TABLE `lq_attendance_missing_card_rule` (
  `F_Id` varchar(50) NOT NULL COMMENT '主键ID',
  `F_MinCount` int NOT NULL COMMENT '最小缺卡次数（含）',
  `F_MaxCount` int DEFAULT NULL COMMENT '最大缺卡次数（不含）',
  `F_DeductPerTime` decimal(18,2) NOT NULL DEFAULT 0.00 COMMENT '每次扣款金额',
  `F_ExpressionText` varchar(255) DEFAULT NULL COMMENT '展示说明',
  `F_Remark` varchar(500) DEFAULT NULL COMMENT '备注',
  `F_SortCode` int NOT NULL DEFAULT 0 COMMENT '排序',
  `F_CreateTime` datetime DEFAULT NULL COMMENT '创建时间',
  `F_DeleteMark` int DEFAULT 0 COMMENT '逻辑删除标记（0-正常，1-已删除）',
  `F_VersionNo` int DEFAULT 1 COMMENT '当前版本号',
  `F_LastModifyUserId` varchar(50) DEFAULT NULL COMMENT '最后修改人ID',
  `F_LastModifyUserName` varchar(100) DEFAULT NULL COMMENT '最后修改人姓名',
  `F_LastModifyTime` datetime DEFAULT NULL COMMENT '最后修改时间',
  PRIMARY KEY (`F_Id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='缺卡扣款规则表';

CREATE TABLE `lq_attendance_absenteeism_rule` (
  `F_Id` varchar(50) NOT NULL COMMENT '主键ID',
  `F_MinDays` decimal(18,2) NOT NULL COMMENT '最小旷工天数（含）',
  `F_MaxDays` decimal(18,2) DEFAULT NULL COMMENT '最大旷工天数（不含）',
  `F_DeductMode` int DEFAULT NULL COMMENT '扣款方式',
  `F_DeductValue` decimal(18,2) DEFAULT NULL COMMENT '扣款值',
  `F_ActionType` int NOT NULL COMMENT '处理方式',
  `F_ActionText` varchar(255) DEFAULT NULL COMMENT '展示说明',
  `F_Remark` varchar(500) DEFAULT NULL COMMENT '备注',
  `F_SortCode` int NOT NULL DEFAULT 0 COMMENT '排序',
  `F_CreateTime` datetime DEFAULT NULL COMMENT '创建时间',
  `F_DeleteMark` int DEFAULT 0 COMMENT '逻辑删除标记（0-正常，1-已删除）',
  `F_VersionNo` int DEFAULT 1 COMMENT '当前版本号',
  `F_LastModifyUserId` varchar(50) DEFAULT NULL COMMENT '最后修改人ID',
  `F_LastModifyUserName` varchar(100) DEFAULT NULL COMMENT '最后修改人姓名',
  `F_LastModifyTime` datetime DEFAULT NULL COMMENT '最后修改时间',
  PRIMARY KEY (`F_Id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='旷工规则表';

CREATE TABLE `lq_attendance_config_history` (
  `F_Id` varchar(50) NOT NULL COMMENT '主键ID',
  `F_ModuleType` int NOT NULL COMMENT '模块类型',
  `F_BizId` varchar(50) NOT NULL COMMENT '业务主键ID',
  `F_VersionNo` int NOT NULL COMMENT '版本号',
  `F_OperateType` int NOT NULL COMMENT '操作类型',
  `F_Title` varchar(200) DEFAULT NULL COMMENT '标题',
  `F_SnapshotJson` longtext COMMENT '快照JSON',
  `F_ChangeReason` varchar(500) DEFAULT NULL COMMENT '变更原因',
  `F_OperateUserId` varchar(50) DEFAULT NULL COMMENT '操作人ID',
  `F_OperateUserName` varchar(100) DEFAULT NULL COMMENT '操作人姓名',
  `F_OperateTime` datetime NOT NULL COMMENT '操作时间',
  PRIMARY KEY (`F_Id`),
  KEY `idx_attendance_history_module_biz` (`F_ModuleType`, `F_BizId`),
  KEY `idx_attendance_history_time` (`F_OperateTime`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='考勤配置历史记录表';

CREATE TABLE `lq_attendance_record` (
  `F_Id` varchar(50) NOT NULL COMMENT '主键ID',
  `F_UserId` varchar(50) NOT NULL COMMENT '员工ID',
  `F_EmployeeName` varchar(100) DEFAULT NULL COMMENT '员工姓名快照',
  `F_StoreId` varchar(50) DEFAULT NULL COMMENT '门店ID快照',
  `F_StoreName` varchar(100) DEFAULT NULL COMMENT '门店名称快照',
  `F_AttendanceGroupId` varchar(50) DEFAULT NULL COMMENT '考勤分组ID快照',
  `F_AttendanceGroupName` varchar(100) DEFAULT NULL COMMENT '考勤分组名称快照',
  `F_AttendanceDate` date NOT NULL COMMENT '打卡日期',
  `F_PunchInTime` datetime DEFAULT NULL COMMENT '上班打卡时间',
  `F_PunchOutTime` datetime DEFAULT NULL COMMENT '下班打卡时间',
  `F_PunchInType` int DEFAULT NULL COMMENT '上班打卡类型（1-正常上班，2-外勤）',
  `F_PunchOutType` int DEFAULT NULL COMMENT '下班打卡类型（1-正常上班，2-外勤）',
  `F_PunchInLongitude` decimal(18,6) DEFAULT NULL COMMENT '上班打卡经度',
  `F_PunchInLatitude` decimal(18,6) DEFAULT NULL COMMENT '上班打卡纬度',
  `F_PunchInAddress` varchar(500) DEFAULT NULL COMMENT '上班打卡地址',
  `F_PunchInPhotoUrl` varchar(500) DEFAULT NULL COMMENT '上班打卡照片地址',
  `F_PunchOutLongitude` decimal(18,6) DEFAULT NULL COMMENT '下班打卡经度',
  `F_PunchOutLatitude` decimal(18,6) DEFAULT NULL COMMENT '下班打卡纬度',
  `F_PunchOutAddress` varchar(500) DEFAULT NULL COMMENT '下班打卡地址',
  `F_PunchOutPhotoUrl` varchar(500) DEFAULT NULL COMMENT '下班打卡照片地址',
  `F_IsPunchInFenceValid` int DEFAULT NULL COMMENT '上班打卡是否通过围栏校验（1-通过，0-未通过，null-未校验）',
  `F_IsPunchOutFenceValid` int DEFAULT NULL COMMENT '下班打卡是否通过围栏校验（1-通过，0-未通过，null-未校验）',
  `F_Status` int NOT NULL COMMENT '打卡状态（1正常，2迟到，3休息，4请假，5病假，6缺卡，7旷工）',
  `F_LateMinutes` int NOT NULL DEFAULT 0 COMMENT '迟到分钟数',
  `F_EarlyLeaveMinutes` int NOT NULL DEFAULT 0 COMMENT '早退分钟数',
  `F_IsManual` int NOT NULL DEFAULT 0 COMMENT '是否手动补录（1-是，0-否）',
  `F_Remark` varchar(500) DEFAULT NULL COMMENT '备注',
  `F_RuleSnapshotJson` longtext COMMENT '命中规则快照JSON',
  `F_AllRuleSnapshotJson` longtext COMMENT '全量考勤规则快照JSON',
  `F_SupplementRemark` varchar(500) DEFAULT NULL COMMENT '补卡备注',
  `F_SupplementOperatorId` varchar(50) DEFAULT NULL COMMENT '补卡操作人ID',
  `F_SupplementOperatorName` varchar(100) DEFAULT NULL COMMENT '补卡操作人姓名',
  `F_SupplementTime` datetime DEFAULT NULL COMMENT '补卡操作时间',
  `F_SupplementWorkflowId` varchar(50) DEFAULT NULL COMMENT '关联补卡流程ID',
  `F_CreateUserId` varchar(50) DEFAULT NULL COMMENT '创建人ID',
  `F_CreateTime` datetime DEFAULT NULL COMMENT '创建时间',
  `F_UpdateUserId` varchar(50) DEFAULT NULL COMMENT '更新人ID',
  `F_UpdateTime` datetime DEFAULT NULL COMMENT '更新时间',
  `F_IsEffective` int NOT NULL DEFAULT 1 COMMENT '是否有效（1-有效，0-无效）',
  PRIMARY KEY (`F_Id`),
  UNIQUE KEY `uk_attendance_record_user_date` (`F_UserId`, `F_AttendanceDate`),
  KEY `idx_attendance_record_month_group` (`F_AttendanceDate`, `F_AttendanceGroupId`),
  KEY `idx_attendance_record_store` (`F_StoreId`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='考勤打卡记录表';

CREATE TABLE `lq_attendance_summary` (
  `F_Id` varchar(50) NOT NULL COMMENT '考勤汇总ID',
  `F_UserId` varchar(50) NOT NULL COMMENT '用户ID（员工ID）',
  `F_Year` int NOT NULL COMMENT '年份',
  `F_Month` int NOT NULL COMMENT '月份',
  `F_EmployeeStatus` int NOT NULL COMMENT '员工状态（1-在职，2-离职，3-停薪留职）',
  `F_WorkDays` decimal(5,2) NOT NULL DEFAULT 0.00 COMMENT '出勤天数',
  `F_LeaveDays` decimal(5,2) NOT NULL DEFAULT 0.00 COMMENT '请假天数',
  `F_RestDays` decimal(5,2) NOT NULL DEFAULT 0.00 COMMENT '休息天数',
  `F_Remark` varchar(2000) DEFAULT NULL COMMENT '备注',
  `F_CreateUser` varchar(50) DEFAULT NULL COMMENT '创建人ID',
  `F_CreateTime` datetime NOT NULL COMMENT '创建时间',
  `F_UpdateUser` varchar(50) DEFAULT NULL COMMENT '更新人ID',
  `F_UpdateTime` datetime NOT NULL COMMENT '更新时间',
  `F_IsEffective` int NOT NULL DEFAULT 1 COMMENT '是否有效（1-有效，-1-无效）',
  PRIMARY KEY (`F_Id`),
  UNIQUE KEY `uk_attendance_summary_user_month` (`F_UserId`, `F_Year`, `F_Month`),
  KEY `idx_attendance_summary_year_month` (`F_Year`, `F_Month`),
  KEY `idx_attendance_summary_user` (`F_UserId`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='考勤汇总表';

SET FOREIGN_KEY_CHECKS = 1;


CREATE TABLE `wform_leaveapply` (
    `F_Id` varchar(50) NOT NULL COMMENT '主键',
    `F_FLOWID` varchar(50) DEFAULT NULL COMMENT '流程主键',
    `F_FLOWTITLE` varchar(200) DEFAULT NULL COMMENT '流程标题',
    `F_FLOWURGENT` int DEFAULT NULL COMMENT '紧急程度',
    `F_BILLNO` varchar(100) DEFAULT NULL COMMENT '单据编码',
    `F_APPLYUSER` varchar(100) DEFAULT NULL COMMENT '申请人员',
    `F_APPLYDATE` datetime DEFAULT NULL COMMENT '申请日期',
    `F_APPLYDEPT` varchar(100) DEFAULT NULL COMMENT '申请部门',
    `F_APPLYPOST` varchar(100) DEFAULT NULL COMMENT '申请职位',
    `F_LEAVETYPE` varchar(50) DEFAULT NULL COMMENT '请假类别',
    `F_LEAVEREASON` text COMMENT '请假原因',
    `F_LEAVESTARTTIME` datetime DEFAULT NULL COMMENT '请假开始时间',
    `F_LEAVEENDTIME` datetime DEFAULT NULL COMMENT '请假结束时间',
    `F_LEAVEDAYCOUNT` varchar(20) DEFAULT NULL COMMENT '请假天数',
    `F_LEAVEHOUR` varchar(20) DEFAULT NULL COMMENT '请假小时',
    `F_FILEJSON` longtext COMMENT '附件',
    `F_DESCRIPTION` varchar(500) DEFAULT NULL COMMENT '备注',
    PRIMARY KEY (`F_Id`)
  ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='请假申请';
