# 加班申请单 ## 1. 设计目标 本设计采用“申请主表 + 员工明细从表”的方式,使一张加班申请单可以同时包含多名员工。 - 主表 `OA_OVERTIME`:保存单据编号、申请人、公共申请内容、审核状态。 - 从表 `OA_OVERTIME_DETAIL`:每行对应一名员工的一次加班申请明细。 - 加班时长统一按小时存储,同时按0.5、1.5、2、2.5...半小时模式向上取整。 ## 2. 加班申请单主表 表名:`OA_OVERTIME` ### 2.1 主表字段说明 | 字段 | 类型 | 必填 | 说明 | | --- | --- | :---: | --- | | `JB_NO` | `NVARCHAR(20)` | ✅ | 加班申请单号,**主键**,格式 JBYYYYMMDDXXX(单据唯一识别码:JB) | | `JB_DD` | `DATETIME` | ✅ | 申请日期 | | `SAL_NO` | `NVARCHAR(12)` | ✅ | 申请人 | | `DEP` | `NVARCHAR(12)` | | 所属部门 | | `REASON` | `NVARCHAR(1000)` | | 加班原因 | | `REM` | `NVARCHAR(MAX)` | | 备注 | | `USR` | `NVARCHAR(8)` | | 录入人 | | `RECORD_DD` | `DATETIME` | | 录入日期 | | `CHK_MAN` | `NVARCHAR(8)` | | 审核人 | | `CLS_DATE` | `DATETIME` | | 终审日期 | ## 3. 员工加班申请明细从表 表名:`OA_OVERTIME_DETAIL` ### 3.1 从表字段说明 | 字段 | 类型 | 必填 | 说明 | | --- | --- | :---: | --- | | `JB_NO` | `NVARCHAR(20)` | ✅ | 加班申请单号,**主键** | | `ITM` | `INT` | ✅ | 项次,**主键** | | `SAL_NO` | `NVARCHAR(20)` | ✅ | 员工代号,关联SALM表 | | `DEP` | `NVARCHAR(12)` | | 员工所属部门 | | `JB_TYPE` | `NVARCHAR(30)` | ✅ | 加班类型:WORKING_DAY(工作日)、REST_DAY(周末)、PUBLIC_HOLIDAY(法定节假日)、SPECIAL_HOLIDAY(特殊假期)、OTHER(其他) | | `JB_DATE` | `DATETIME` | ✅ | 申请日期:(yyyy-MM-dd) | | `START_TIME` | `DATETIME` | ✅ | 加班开始时间:(yyyy-MM-dd HH:mm:ss),如果申请日期、开始时间、结束时间都在同一天,则只需要显示 HH:mm:ss | | `END_TIME` | `DATETIME` | ✅ | 加班结束时间:(yyyy-MM-dd HH:mm:ss),如果申请日期、开始时间、结束时间都在同一天,则只需要显示 HH:mm:ss | | `JB_HOURS` | `NUMRIC(28,8)` | | 加班时长(小时):默认按照加班结束时间与加班开始时间的小时差自动计算,按0.5、1.5、2、2.5...半小时模式向上取整,可手工修改 | | `JB_DAYS` | `NUMRIC(28,8)` | | 加班天数:默认按照加班结束时间与加班开始时间的日期天数差自动计算,按0.5、1.5、2、2.5...半天模式向上取整,可手工修改 | | `ATT_PERIOD` | `NVARCHAR(10)` | | 归属考勤周期:格式yyyy-MM,默认按照加班开始时间抓取所在的年月,如 2026-07,可手工修改| | `REASON` | `NVARCHAR(1000)` | | 加班事由 | | `COMPENSATION_TYPE` | `NVARCHAR(30)` | | 加班补偿类型:OVERTIME_PAY(加班费)、COMPENSATORY_LEAVE(调休)、NO_COMPENSATION(无补偿)、OTHER(其他) | | `COMPENSATION_COUNT` | `NUMRIC(28,8)` | | 折算补偿次数:当加班补偿类型为“无补偿”则显示空,否则默认取JB_DAYS | | `ADR` | `NVARCHAR(200)` | | 加班地点 | | `REM` | `NVARCHAR(1000)` | | 备注 | ### 3.2 从表临时栏位说明 | 字段 | 类型 | 说明 | | --- | --- | --- | | `DAY_OF_WEEK` | `NVARCHAR(6)` | 星期: 按照加班开始时间自动显示所在的 星期一、星期二、星期三、星期四、星期五、星期六、星期日,放在END_TIME后面|