常用表结构
/****** 部门表 [dbo].[KQZ_Brch] ******/
CREATE TABLE [dbo].[KQZ_Brch] (
[BrchID] [bigint] PRIMARY KEY NOT NULL,
[PID] [bigint] NOT NULL ,
[BrchName] [varchar] (200) NOT NULL ,
[BrchOrder] [smallint] NOT NULL, /* 在兄弟部门中顺序 */
/* WEB 查询用到的字段 */
[ATTENDDAY] [varchar] (10) DEFAULT '1111100' NOT NULL, /* 出勤日 */
[AMBEGIN] [datetime] DEFAULT GetDate(), /* 上午 上班 */
[AMEND] [datetime] DEFAULT GetDate(), /* 上午 下班 */
[PMBEGIN] [datetime] DEFAULT GetDate(), /* 下午 上班 */
[PMEND] [datetime] DEFAULT GetDate(), /* 下午 下班 */
[Comment] [varchar] (255) NULL
)
GO
/****** 员工信息表 [dbo].[KQZ_Employee] ******/
CREATE TABLE [dbo].[KQZ_Employee] (
[EmployeeID] [bigint] IDENTITY (1, 1) PRIMARY KEY NOT NULL,
[BrchID] [bigint] NOT NULL ,
[BrchName] [varchar] (200) NOT NULL, /* 部门名称,保存人员离职前的部门名称 */
[EmployeeCode] [varchar] (16) NOT NULL ,
[EmployeeName] [varchar] (250) NOT NULL ,
[Gender] [smallint] DEFAULT 2 NOT NULL, /* 性别 0:女 1:男 2:未知 */
[Birthday] [datetime] DEFAULT GetDate(),
[Nation] [varchar] (50), /* 民族 */
[NATIVEPLACE] [varchar] (50), /* 籍贯 */
[ZhengZhi] [varchar] (50), /* 政治面貌 */
[MARITALSTATUS] [varchar] (20), /* 婚姻状况 */
[Health] [varchar] (20), /* 健康状况 */
[Title] [varchar] (50), /* 职位 */
[APOSITION] [varchar] (50), /* 职称 */
[EDUCATION] [varchar] (50), /* 学历 */
[School] [varchar] (100), /* 毕业学校 */
[Graduation] [datetime] DEFAULT GetDate(), /* 毕业时间 */
[WorkPhone] [varchar] (20), /* 办公电话 */
[EnrollDate] [datetime] DEFAULT GetDate(), /* 入职时间 */
[Privilege] [smallint] DEFAULT 0 NOT NULL, /* 员工权限 */
[Photo] [image] NULL, /* 照片 */
[IDCard] [varchar] (20) NULL , /* 证件号 */
[AddrHome] [varchar] (200), /* 家庭地址 */
[CardCode] [varchar] (20), /* 卡号 */
[Mobile] [varchar] (20), /* 手机 */
/* 考勤规则相关 */
[IsCheck] [smallint] DEFAULT 1 NOT NULL, /* 是否考勤 */
[OnRule] [smallint] DEFAULT 0 NOT NULL, /* 签到规则 0:根据时段判断 1:必须签到 2:必
须签退 */
[OffRule] [smallint] DEFAULT 0 NOT NULL, /* 下班签到规则 */
[CanOvertime] [smallint] DEFAULT 1 NOT NULL, /* 是否计算加班 */
[HaveFesta] [smallint] DEFAULT 1 NOT NULL, /* 是否有节日 */
/* 设备相关信息 */
[DevType] [smallint] DEFAULT 0 NOT NULL, /* 考勤机类型 定义见 TDevType 枚举 */
[HDCPInfo] [image] NULL, /* HDCP 协议字符串 */
[RegisterType] [smallint] DEFAULT 0 NOT NULL, /* 登记类型,新设备新增字段 */
[Comment] [varchar] (250), /* 备注 */
[EmployeeLogPwd] [varchar] (6) DEFAULT '123456' NOT NULL, /* 密码,用于 Web 浏览 */
/* 以下是设备关注的信息 */
[CheckType] [varchar] (30), /* 考勤方式 */
[OpendoorType] [varchar] (30), /* 开门方式,可能的常量值为检查方式常量 */
[ModelNum] [smallint] DEFAULT 0 NOT NULL, /* 考勤机上登记的模板数目 */
[HavePwd] [smallint] DEFAULT 0 NOT NULL, /* 考勤机有无登记密码 */
[StaffStatus] [smallint], /* 人员状态,0:班外 1:班内 2:异常 */
[LastCardID] [bigint], /* 最后卡点 id,有新卡点,从哪一个卡点开始计算 */
/* 保留字段 */
[Reserved1] [varchar] (200) NULL,
[Reserved2] [varchar] (200) NULL,
[Reserved3] [varchar] (200) NULL,
[Reserved4] [varchar] (200) NULL
)
GO
/****** 管理员表 [dbo].[KQZ_Admin] ******/
CREATE TABLE [dbo].[KQZ_Admin] (
[HwAdminID] [int] PRIMARY KEY NOT NULL,
[HwAdminName] [varchar] (200) NOT NULL, /* 管理员名称 */
[HwPwd] [varchar] (64) NOT NULL, /* 管理员密码 */
[Question] [varchar] (100), /* 密码提示问题 */
[Answer] [varchar] (100), /* 密码提示问题的答案 */
[Privilege] [smallint] DEFAULT 0 NOT NULL, /* 权限 0:Admin 1:AttManager 2:BrchManager
3:BrchAdmin */
[Branches] [varchar] (5000), /* 可以操作的部门 ID 列表,以逗号分隔 */
[IsLogin] [smallint] DEFAULT 0 NOT NULL /* 该用户是否已经登入 */
)
GO
/****** 管理员可操作的部门表 [dbo].[KQZ_Admin2Brch] ******/
CREATE TABLE [dbo].[KQZ_Admin2Brch] (
[HwAdminID] [bigint] NOT NULL,
[BrchID] [bigint] NOT NULL
)
GO
/****** 考勤机信息表表 [dbo].[KQZ_DevInfo] ******/
CREATE TABLE [dbo].[KQZ_DevInfo] (
/* [DevID] [bigint] IDENTITY (1, 1) PRIMARY KEY NOT NULL, 设备 ID 要重用,因此去掉自增 */
[DevID] [bigint] PRIMARY KEY NOT NULL,
[DevName] [varchar] (200) NOT NULL ,
[DevType] [smallint] DEFAULT 0 NOT NULL ,
[DevClass] [smallint] DEFAULT 0 NOT NULL, /* 设备类型 0:考勤机 1:门禁机 */
[IPAddress] [varchar] (20) NULL ,
[ComPort] [smallint] DEFAULT 1 NOT NULL ,
[Baud] [int] DEFAULT 38400 NOT NULL ,
[CommType] [smallint] DEFAULT 0 NOT NULL ,
[LastRcdTime] [datetime] DEFAULT GetDate() NOT NULL, /* 最后一次下载记录的时间 */
[DevPwd] [varchar] (20), /* 通信密码 */
[Mask] [varchar] (20), /* 子网掩码 */
[Gateway] [varchar] (20), /* 网关 */
[Mac] [varchar] (20),
[Serial] [varchar] (20), /* 设备序列号 */
[Edition] [varchar] (20), /* 软件版本号 */
[Volume] [varchar] (20), /* 音量 */
[Comment] [varchar] (500) NULL
)
GO
/****** 设备管理员列表 [dbo].[KQZ_Dev_Admin] ******/
CREATE TABLE [dbo].[KQZ_Dev_Admin] (
/* [DevAdminID] [bigint] IDENTITY (1, 1) PRIMARY KEY NOT NULL, 设备管理员 ID 要重用,因
此去掉自增 */
[DevAdminID] [bigint] PRIMARY KEY NOT NULL, /* 管理员号 */
[DevAdminCode] [varchar] (16) NOT NULL, /* 管理员工号 */
[DevAdminName] [varchar] (200) NOT NULL, /* 管理员名称 */
[ModelNum] [smallint] DEFAULT 0 NOT NULL, /* 模板数目 */
[AdminInfo] [image] NULL, /* 考勤机管理员信息备份 */
[Comment] [varchar] (500), /* 备注 */
[DevAdminType] [smallint] DEFAULT 0 NOT NULL,
[DevType] [smallint] DEFAULT 0 NOT NULL
)
GO
/****** 正常班次表 [dbo].[KQZ_Shift] ******/
CREATE TABLE [dbo].[KQZ_Shift] (
[ShiftID] [bigint] IDENTITY (1, 1) PRIMARY KEY NOT NULL, /* 正常班 ID */
[ShiftName] [varchar] (200) NOT NULL,
[ShortName] [varchar] (10), /* 班次简称 */
[BeginTime] [datetime] DEFAULT GetDate() NOT NULL, /* 倒班启用时间 */
[FestaID] [int] DEFAULT 0 NOT NULL, /* 0:无节日假日方案 1:节日有效 */
[WeekendID] [int] DEFAULT 0 NOT NULL, /* 0:无公休日方案 1:公休日有效 */
[Period] [smallint] DEFAULT 1 NOT NULL, /* 倒班周期 */
[PeriodUnit] [smallint] DEFAULT 0 NOT NULL, /* 周期单位 0:day 1:week 2: month */
[IsAutoOvertime] [smallint] DEFAULT 0 NOT NULL, /* 是否允许自动加班 */
[IsFromOffduty] [smallint] DEFAULT 1 NOT NULL, /* 自动加班工时是否从下班开始算起 */
[DelayTime] [smallint] DEFAULT 60 NOT NULL, /* 下班后 DelayTime 后记为自动加班 */
[CheckAutoOvertime] [smallint] DEFAULT 1 NOT NULL, /* 自动加班工时是否需要审核 0:不
需要 1:需要 */
[IsLeak2Absent] [smallint] DEFAULT 1 NOT NULL, /* 漏打卡是否计为时段缺勤 */
[absent2HalfDay] [smallint] DEFAULT 120 NOT NULL, /* 分钟到半天 */
[absent2Day] [smallint] DEFAULT 240 NOT NULL, /* 分钟到天 */
[Span_midnight] [smallint] DEFAULT 0 NOT NULL, /* 跨夜时段按哪天算 0:first day
1:next day */
[Comment] [varchar] (500) /* 备注 */
)
GO
/****** 班次与时段的关系表 [dbo].[R_Shift_Prd] ******/
CREATE TABLE [dbo].[R_Shift_Prd] (
[RID] [bigint] IDENTITY (1, 1) PRIMARY KEY NOT NULL, /* 主键,无实义 */
[ShiftID] [bigint] NOT NULL, /* 班次 ID */
[ShiftOrder] [smallint] NOT NULL, /* 在倒班周期里的顺序,从 0 开始 */
[PeriodID] [bigint] NOT NULL /* 时段 ID */
)
GO
/****** 班次时段表(存放 正常班 的班次时段信息) [dbo].[KQZ_Period] ******/
CREATE TABLE [dbo].[KQZ_Period] (
[PeriodID] [bigint] IDENTITY (1, 1) PRIMARY KEY NOT NULL,
[PeriodName] [varchar] (200) NOT NULL, /* 时段名称 */
[IsWorkPeriod] [smallint] DEFAULT 0 NOT NULL, /* 是否为上班时段 */
[PeriodBegin] [datetime] DEFAULT GetDate() NOT NULL, /* 时间段开始时间 */
[PeriodEnd] [datetime] DEFAULT GetDate() NOT NULL, /* 时间段结束时间 */
[BeginSpanBegin] [smallint] DEFAULT 120 NOT NULL, /* 时间段开始签到开始时间,单
位:分钟 */
[BeginSpanEnd] [smallint] DEFAULT 120 NOT NULL, /* 时间段开始签到结束时间,单位:分
钟 */
[EndSpanBegin] [smallint] DEFAULT 120 NOT NULL, /* 时间段结束签退开始时间,单位:分
钟 */
[EndSpanEnd] [smallint] DEFAULT 120 NOT NULL, /* 时间段结束签退结束时间,单位:
分钟 */
[PeriodWorkTime] [smallint] NOT NULL, /* 时间段工时,单位:分钟 */
[PeriodBeginChk] [smallint] DEFAULT 0 NOT NULL, /* 上班是否必须打卡 */
[PeriodEndChk] [smallint] DEFAULT 0 NOT NULL, /* 下班是否必须打卡 */
[Color] [int] NOT NULL
)
GO
/****** 签到班班次表 [dbo].[KQZ_ShiftSignin] ******/
CREATE TABLE [dbo].[KQZ_ShiftSignin] (
[ShiftSID] [bigint] IDENTITY (1, 1) PRIMARY KEY NOT NULL ,
[ShiftSName] [varchar] (200) NOT NULL,
[ShortSName] [varchar] (10), /* 班次简称 */
[FestaID] [int] DEFAULT 0 NOT NULL, /* 节日假日方案 ID */
[WeekendID] [int] DEFAULT 0 NOT NULL, /* 公休日方案 ID */
[WorkTime] [smallint] DEFAULT 0 NOT NULL, /* 计为工时数(分钟) */
[Pattern] [smallint] DEFAULT 0 NOT NULL, /* 计为工时数(分钟) */
/* 以下字段对 SIGNIN_PATTERN.REGULAR 方式有效 */
[BeginTime] [datetime] DEFAULT GetDate() NOT NULL, /* 开始时间 */
[EndTime] [datetime] DEFAULT GetDate() NOT NULL, /* 结束时间 */
[Interval] [smallint] DEFAULT 0 NOT NULL, /* 间隔(分钟) */
[Span] [smallint] DEFAULT 0 NOT NULL, /* 时段跨度(分钟) */
[Span_midnight] [smallint] DEFAULT 0 NOT NULL, /* 有跨夜时段时,班次按第一天算还是
按第二天算 0:first day 1:next day */
[Comment] [varchar] (500) /* 备注 */
)
GO
/****** 签到班班次时段表 [dbo].[KQZ_Period_Signin] ******/
CREATE TABLE [dbo].[KQZ_Period_Signin] (
[PeriodSID] [bigint] IDENTITY (1, 1) PRIMARY KEY NOT NULL,
[PeriodSName] [varchar] (50) NOT NULL, /* 时段名称 */
[ShiftID] [bigint] NOT NULL, /* “班次表”的具体的 ID */
[PeriodBegin] [datetime] DEFAULT Getdate() NOT NULL, /* 时间段开始时间 */
[PeriodEnd] [datetime] DEFAULT Getdate() NOT NULL, /* 时间段结束时间 */
[Color] [int] NOT NULL
)
GO
/****** 计工时班班次表 [dbo].[KQZ_ShiftSum] ******/
CREATE TABLE [dbo].[KQZ_ShiftSum] (
[ShiftSumID] [bigint] IDENTITY (1, 1) PRIMARY KEY NOT NULL,
[ShiftSumName] [varchar] (200) NOT NULL,
[ShortSumName] [varchar] (10), /* 班次简称 */
[FestaID] [int] DEFAULT 0 NOT NULL, /* 节日假日方案 ID */
[WeekendID] [int] DEFAULT 0 NOT NULL, /* 公休日方案 ID */
[StatMode] [smallint] DEFAULT 0 NOT NULL, /* 统计上班时段的方式 0:只取当天第一点
和最后一点 1:卡点顺序匹配 */
[OnWorkTime] [smallint] DEFAULT 0 NOT NULL, /* 每工作日应在岗工时 72 小时以内 */
[MaxWorkTime] [smallint] DEFAULT 0 NOT NULL, /* 最长工作时间 72 小时以内 */
[NPercent] [smallint] DEFAULT 100 NOT NULL, /* 正常工时倍率*100 */
[FPercent] [smallint] DEFAULT 100 NOT NULL, /* 节日工时倍率*100 */
[WPercent] [smallint] DEFAULT 100 NOT NULL, /* 公休日工时倍率*100 */
[Span_midnight] [smallint] DEFAULT 0 NOT NULL, /* 有跨夜时段时,班次按第一天算还是
按第二天算 0:first day 1:next day */
[Comment] [varchar] (500) /* 备注 */
)
GO
/****** 排班表 [dbo].[KQZ_Arrange] ******/
CREATE TABLE [dbo].[KQZ_Arrange] (
[EmployeeID] [bigint] DEFAULT 0 NOT NULL, /* 员工 ID; Is4Brch=1 时,用于标识属于这个部门
的班次 */
[Is4Brch] [smallint] DEFAULT 0 NOT NULL, /* 是否部门排班 0:员工排班 1:部门排班 2:部
门排班,部门默认班次 */
[ShiftType] [smallint] NOT NULL, /* 班次类型 -1: 智能班(正常班列表)0:normal
1:signin 2:sum */
[BeginPeriod] [smallint] NOT NULL, /* 对于正常班有效,记录了排班时班次从哪个周期开
始,周期从 0 开始 */
[BeginPeriodDate] [datetime] DEFAULT GetDate() NOT NULL, /* 对于正常班有效,开始周期
对应的日期 */
[ShiftID] [bigint] NOT NULL, /* “班次表”的具体的 ID */
[ShiftBeginTime] [datetime] DEFAULT GetDate() NOT NULL, /* 进班时间 */
[ShiftEndTime] [datetime] DEFAULT GetDate() NOT NULL, /* 退班时间 */
[IsDefault] [smallint] DEFAULT 0 NOT NULL /* 0:非默认班次 1:默认班次 只对智能排班有
效,增加智能班时,用户可以指定默认班次 */
)
GO
/****** 加班类型表 [dbo].[KQZ_OverType] ******/
CREATE TABLE [dbo].[KQZ_OverType] (
[OverTypeID] [bigint] DEFAULT 0 PRIMARY KEY NOT NULL, /* 加班类型 ID */
[OverTypeName] [varchar] (50) NOT NULL, /* 加班类型名称 */
[ShortOName] [varchar] (10), /* 加班类型简称 */
[OPercent] [smallint] DEFAULT 100 NOT NULL, /* 加班工时倍率*100 */
[Comment] [varchar] (500)
)
GO
/****** 加班表 [dbo].[KQZ_OverTime] ******/
CREATE TABLE [dbo].[KQZ_OverTime] (
[OvertimeID] [bigint] IDENTITY (1, 1) PRIMARY KEY NOT NULL,
[EmployeeID] [bigint] DEFAULT 0 NOT NULL, /* 员工 ID */
[OverTypeID] [int] DEFAULT 1 NOT NULL, /* 加班类型 ID */
[OverSetType] [int] DEFAULT 0 NOT NULL, /* 0:预设加班 1:自由加班 2:自动加班 */
[PrdStatus] [smallint] DEFAULT 0 NOT NULL, /* 时段状态 -1:无效 0:需要审核 1:有效 */
[ShiftDate] [datetime] DEFAULT GetDate() NOT NULL, /* 本记录所在班次的日期,精确到天
*/
[BeginTime] [datetime] DEFAULT GetDate() NOT NULL, /* 加班开始时间 */
[EndTime] [datetime] DEFAULT GetDate() NOT NULL, /* 加班结束时间 */
[PrdLen] [int] DEFAULT 0 NOT NULL, /* 时段长度(分钟),考虑了和班次时段叠加情况的长
度 */
[BeginSpanBegin] [smallint] DEFAULT 120 NOT NULL, /* 时间段开始签到开始时间(分钟) */
[BeginSpanEnd] [smallint] DEFAULT 120 NOT NULL, /* 时间段开始签到结束时间(分钟)
*/
[EndSpanBegin] [smallint] DEFAULT 120 NOT NULL, /* 时间段结束签退开始时间(分钟)
*/
[EndSpanEnd] [smallint] DEFAULT 120 NOT NULL, /* 时间段结束签退结束时间(分钟)
*/
[BeginChk] [smallint] DEFAULT 0 NOT NULL, /* 上班是否必须打卡 */
[EndChk] [smallint] DEFAULT 0 NOT NULL, /* 下班是否必须打卡 */
/*
上班打卡点是否需要检查
-1:员工规则要求无需打卡
0:无需打卡,可能是由调整时段涵盖该卡点,需结合 BeginChk 判断
1:时段要求打卡
2:员工规则要求必须打卡
下班打卡是否需要检查
-1:员工规则要求无需打卡
0:无需打卡,可能是由调整时段涵盖该卡点,需结合 BeginChk 判断
1:时段要求打卡
2:员工规则要求必须打卡
*/
[BeginChkStatus] [smallint] DEFAULT 0 NOT NULL,
[EndChkStatus] [smallint] DEFAULT 0 NOT NULL,
[NewBeginTime] [datetime] DEFAULT GetDate() NOT NULL, /* 如果调整时段涵盖该卡点,
用于记录新的时段开始时间 */
[NewEndTime] [datetime] DEFAULT GetDate() NOT NULL, /* 如果调整时段涵盖该卡点,
用于记录新的时段结束时间 */
[BeginID] [bigint] DEFAULT 0 NOT NULL, /* 加班开始卡 ID */
[EndID] [bigint] DEFAULT 0 NOT NULL, /* 结束卡 ID */
/* WEB 查询需要的字段 */
[ISCHECK] [smallint] DEFAULT 1 NOT NULL, /* 是否审核 */
[REASON] [varchar] (200) /* 调整原因 */
)
GO
/****** 补班表 [dbo].[KQZ_AddShift] ******/
CREATE TABLE [dbo].[KQZ_AddShift] (
[AddShiftID] [bigint] IDENTITY (1, 1) PRIMARY KEY NOT NULL,
[EmployeeID] [bigint] DEFAULT 0 NOT NULL, /* 员工 ID */
[PrdStatus] [smallint] DEFAULT 0 NOT NULL, /* 时段状态 -1:无效 0:需要审核 1:有效 */
[ShiftDate] [datetime] DEFAULT GetDate() NOT NULL, /* 补班日期 */
[BeginTime] [datetime] DEFAULT GetDate() NOT NULL, /* 补班开始时间 */
[EndTime] [datetime] DEFAULT GetDate() NOT NULL, /* 补班结束时间 */
[PrdLen] [int] DEFAULT 0 NOT NULL, /* 时段长度(分钟),考虑了和班次时段叠加情况的长
度 */
[BeginSpanBegin] [smallint] DEFAULT 120 NOT NULL,/* 时间段开始签到开始时间(分钟) */
[BeginSpanEnd] [smallint] DEFAULT 120 NOT NULL, /* 时间段开始签到结束时间(分钟) */
[EndSpanBegin] [smallint] DEFAULT 120 NOT NULL, /* 时间段结束签退开始时间(分钟) */
[EndSpanEnd] [smallint] DEFAULT 120 NOT NULL, /* 时间段结束签退结束时间(分钟) */
[BeginChk] [smallint] DEFAULT 0 NOT NULL, /* 上班是否必须打卡 */
[EndChk] [smallint] DEFAULT 0 NOT NULL, /* 下班是否必须打卡 */
/*
//上班打卡点是否需要检查
-1:员工规则要求无需打卡
0:无需打卡,可能是由调整时段涵盖该卡点,需结合 BeginChk 判断
1:时段要求打卡
2:员工规则要求必须打卡
下班打卡是否需要检查
-1:员工规则要求无需打卡
0:无需打卡,可能是由调整时段涵盖该卡点,需结合 BeginChk 判断