单据规则_BASE_BILLRULE_销假与补卡.sql
3.8 KB
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
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
-- =============================================================================
-- 单据规则 BASE_BILLRULE:销假 / 补卡申请单号
-- 编码须与代码一致:WF_LeaveCancelApplyNo、WF_AttendancePunchApplyNo
-- (AttendancePunchApplyService / 前端 billEnCode)
--
-- 说明:取号接口曾把「单据规则不存在」缓存 3 分钟;若先打开页面后补库,会短期仍取不到号。
-- 已在 BillRuleService 中改为不缓存失败结果,且命中该缓存时会删键重取;请部署后端。
-- 应急:重启 API / 清 Redis(若用 Redis 缓存)或等 3 分钟后再试。
-- =============================================================================
-- 【排查】在业务库执行,确认是否已有记录(有效 = 未删除,且后端按 F_DeleteMark IS NULL 匹配):
--
-- SELECT F_Id, F_FULLNAME, F_ENCODE, F_PREFIX, F_DeleteMark, F_ENABLEDMARK
-- FROM BASE_BILLRULE
-- WHERE F_ENCODE IN ('WF_LeaveCancelApplyNo','WF_AttendancePunchApplyNo');
--
-- 若只有销假没有补卡:多半是第二条 INSERT 未执行,或 F_Id 与已有行主键冲突导致整句失败。
-- 可再查主键是否被占用:
--
-- SELECT F_Id, F_FULLNAME, F_ENCODE FROM BASE_BILLRULE
-- WHERE F_Id IN ('806449575979201001','806449575979201002');
--
-- =============================================================================
-- 销假(F_Id 使用 806449575979201001,避免与历史脚本 80644957597920000x 冲突)
INSERT INTO `BASE_BILLRULE` (
`F_Id`,
`F_FULLNAME`,
`F_ENCODE`,
`F_PREFIX`,
`F_DATEFORMAT`,
`F_DIGIT`,
`F_STARTNUMBER`,
`F_EXAMPLE`,
`F_THISNUMBER`,
`F_OUTPUTNUMBER`,
`F_DESCRIPTION`,
`F_SORTCODE`,
`F_CREATORTIME`,
`F_CREATORUSERID`,
`F_ENABLEDMARK`,
`F_DeleteMark`
)
SELECT
'806449575979201001',
'销假申请单号',
'WF_LeaveCancelApplyNo',
'XJ',
'yyyyMMdd',
4,
'0',
'XJ202604020001',
NULL,
NULL,
'工作流-销假申请',
890,
NOW(),
NULL,
1,
NULL
FROM DUAL
WHERE NOT EXISTS (
SELECT 1 FROM `BASE_BILLRULE` t
WHERE t.`F_ENCODE` = 'WF_LeaveCancelApplyNo' AND (t.`F_DeleteMark` IS NULL OR t.`F_DeleteMark` = 0)
);
-- 补卡(F_Id 使用 806449575979201002)
INSERT INTO `BASE_BILLRULE` (
`F_Id`,
`F_FULLNAME`,
`F_ENCODE`,
`F_PREFIX`,
`F_DATEFORMAT`,
`F_DIGIT`,
`F_STARTNUMBER`,
`F_EXAMPLE`,
`F_THISNUMBER`,
`F_OUTPUTNUMBER`,
`F_DESCRIPTION`,
`F_SORTCODE`,
`F_CREATORTIME`,
`F_CREATORUSERID`,
`F_ENABLEDMARK`,
`F_DeleteMark`
)
SELECT
'806449575979201002',
'补卡申请单号',
'WF_AttendancePunchApplyNo',
'BK',
'yyyyMMdd',
4,
'0',
'BK202604020001',
NULL,
NULL,
'工作流-补卡申请',
891,
NOW(),
NULL,
1,
NULL
FROM DUAL
WHERE NOT EXISTS (
SELECT 1 FROM `BASE_BILLRULE` t
WHERE t.`F_ENCODE` = 'WF_AttendancePunchApplyNo' AND (t.`F_DeleteMark` IS NULL OR t.`F_DeleteMark` = 0)
);
-- =============================================================================
-- 【仅补卡】若上面已执行过且只缺补卡,或 201002 仍主键冲突,再执行下面一段(可改 F_Id)
-- =============================================================================
INSERT INTO `BASE_BILLRULE` (
`F_Id`,
`F_FULLNAME`,
`F_ENCODE`,
`F_PREFIX`,
`F_DATEFORMAT`,
`F_DIGIT`,
`F_STARTNUMBER`,
`F_EXAMPLE`,
`F_THISNUMBER`,
`F_OUTPUTNUMBER`,
`F_DESCRIPTION`,
`F_SORTCODE`,
`F_CREATORTIME`,
`F_CREATORUSERID`,
`F_ENABLEDMARK`,
`F_DeleteMark`
)
SELECT
'806449575979201012',
'补卡申请单号',
'WF_AttendancePunchApplyNo',
'BK',
'yyyyMMdd',
4,
'0',
'BK202604020001',
NULL,
NULL,
'工作流-补卡申请',
891,
NOW(),
NULL,
1,
NULL
FROM DUAL
WHERE NOT EXISTS (
SELECT 1 FROM `BASE_BILLRULE` t
WHERE t.`F_ENCODE` = 'WF_AttendancePunchApplyNo' AND (t.`F_DeleteMark` IS NULL OR t.`F_DeleteMark` = 0)
);