-- ============================================================================= -- 单据规则 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) );