Blame view

项目文档相关/sql/2026-07-18/人事调动离职填报表.sql 5.14 KB
e1dcb3a0   “wangming”   1
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
  -- =============================================================================
  -- 人事调动/离职填报表 lq_personnel_report
  -- 说明:
  --   1. 主键 F_Id 须由应用层 YitIdHelper.NextId().ToString() 生成。
  --   2. 独立待办填报,不联动 BASE_USER、员工档案、流程、考勤、算薪等主业务。
  --   3. 来源组织/门店、提交人由服务端从当前登录用户快照写入。
  --   4. 幂等:CREATE TABLE IF NOT EXISTS + 索引通过 information_schema 判断后创建。
  -- =============================================================================
  
  CREATE TABLE IF NOT EXISTS `lq_personnel_report` (
    `F_Id` varchar(50) NOT NULL COMMENT '主键',
    `F_ReportNo` varchar(32) NOT NULL COMMENT '填报编号(对外展示,唯一)',
    `F_ApplicationType` int NOT NULL COMMENT '申请类型:1调动 2离职',
    `F_ApplicantUserId` varchar(50) NOT NULL COMMENT '被填报员工用户ID(BASE_USER.F_Id)',
    `F_ApplicantUserName` varchar(128) DEFAULT NULL COMMENT '被填报员工姓名快照',
    `F_ApplicantUserMobile` varchar(32) DEFAULT NULL COMMENT '被填报员工手机号快照',
    `F_SourceOrganizeId` varchar(50) DEFAULT NULL COMMENT '来源组织ID(提交人当前组织快照)',
    `F_SourceOrganizeName` varchar(200) DEFAULT NULL COMMENT '来源组织名称快照',
    `F_SourceMdid` varchar(50) DEFAULT NULL COMMENT '来源门店ID(提交人当前门店快照)',
    `F_SourceMdName` varchar(200) DEFAULT NULL COMMENT '来源门店名称快照',
    `F_SubmitterUserId` varchar(50) DEFAULT NULL COMMENT '提交人用户ID',
    `F_SubmitterUserName` varchar(128) DEFAULT NULL COMMENT '提交人姓名',
    `F_SubmitTime` datetime NOT NULL COMMENT '提交时间',
    `F_TargetMdid` varchar(50) DEFAULT NULL COMMENT '目标门店ID(调动时必填)',
    `F_TargetMdName` varchar(200) DEFAULT NULL COMMENT '目标门店名称快照',
    `F_TransferDate` date DEFAULT NULL COMMENT '调动日期(调动时必填)',
    `F_ResignationDate` date DEFAULT NULL COMMENT '离职日期(离职时必填)',
    `F_ResignationReason` varchar(500) DEFAULT NULL COMMENT '离职原因(离职时必填)',
    `F_Remark` varchar(500) DEFAULT NULL COMMENT '备注',
    `F_HandleStatus` int NOT NULL DEFAULT 0 COMMENT '处理状态:0待处理 1已处理',
    `F_HandleUserId` varchar(50) DEFAULT NULL COMMENT '处理人ID',
    `F_HandleUserName` varchar(128) DEFAULT NULL COMMENT '处理人姓名',
    `F_HandleTime` datetime DEFAULT NULL COMMENT '处理时间',
    `F_HandleRemark` varchar(500) DEFAULT NULL COMMENT '处理备注',
    `F_CreateTime` datetime DEFAULT NULL COMMENT '创建时间',
    `F_UpdateTime` datetime DEFAULT NULL COMMENT '更新时间',
    PRIMARY KEY (`F_Id`)
  ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='人事调动/离职填报(独立待办)';
  
  -- 唯一索引:填报编号
  SET @idx_exists := (
    SELECT COUNT(1) FROM information_schema.statistics
    WHERE table_schema = DATABASE() AND table_name = 'lq_personnel_report' AND index_name = 'UK_lq_personnel_report_No'
  );
  SET @sql := IF(@idx_exists = 0,
    'ALTER TABLE `lq_personnel_report` ADD UNIQUE KEY `UK_lq_personnel_report_No` (`F_ReportNo`)',
    'SELECT 1');
  PREPARE stmt FROM @sql;
  EXECUTE stmt;
  DEALLOCATE PREPARE stmt;
  
  -- 联合索引:处理状态 + 提交时间(列表/工作台待办)
  SET @idx_exists := (
    SELECT COUNT(1) FROM information_schema.statistics
    WHERE table_schema = DATABASE() AND table_name = 'lq_personnel_report' AND index_name = 'IDX_lq_personnel_report_Handle_SubmitTime'
  );
  SET @sql := IF(@idx_exists = 0,
    'ALTER TABLE `lq_personnel_report` ADD KEY `IDX_lq_personnel_report_Handle_SubmitTime` (`F_HandleStatus`, `F_SubmitTime`)',
    'SELECT 1');
  PREPARE stmt FROM @sql;
  EXECUTE stmt;
  DEALLOCATE PREPARE stmt;
  
  -- 联合索引:来源组织 + 提交时间(权限过滤列表)
  SET @idx_exists := (
    SELECT COUNT(1) FROM information_schema.statistics
    WHERE table_schema = DATABASE() AND table_name = 'lq_personnel_report' AND index_name = 'IDX_lq_personnel_report_SourceOrg_SubmitTime'
  );
  SET @sql := IF(@idx_exists = 0,
    'ALTER TABLE `lq_personnel_report` ADD KEY `IDX_lq_personnel_report_SourceOrg_SubmitTime` (`F_SourceOrganizeId`, `F_SubmitTime`)',
    'SELECT 1');
  PREPARE stmt FROM @sql;
  EXECUTE stmt;
  DEALLOCATE PREPARE stmt;
  
  -- 联合索引:申请类型 + 处理状态
  SET @idx_exists := (
    SELECT COUNT(1) FROM information_schema.statistics
    WHERE table_schema = DATABASE() AND table_name = 'lq_personnel_report' AND index_name = 'IDX_lq_personnel_report_Type_Handle'
  );
  SET @sql := IF(@idx_exists = 0,
    'ALTER TABLE `lq_personnel_report` ADD KEY `IDX_lq_personnel_report_Type_Handle` (`F_ApplicationType`, `F_HandleStatus`)',
    'SELECT 1');
  PREPARE stmt FROM @sql;
  EXECUTE stmt;
  DEALLOCATE PREPARE stmt;
  
  -- 普通索引:被填报员工
  SET @idx_exists := (
    SELECT COUNT(1) FROM information_schema.statistics
    WHERE table_schema = DATABASE() AND table_name = 'lq_personnel_report' AND index_name = 'IDX_lq_personnel_report_ApplicantUserId'
  );
  SET @sql := IF(@idx_exists = 0,
    'ALTER TABLE `lq_personnel_report` ADD KEY `IDX_lq_personnel_report_ApplicantUserId` (`F_ApplicantUserId`)',
    'SELECT 1');
  PREPARE stmt FROM @sql;
  EXECUTE stmt;
  DEALLOCATE PREPARE stmt;