增强审批流管理能力,新增审批环节的 stageKey 区分关键环节与过路审批节点,完善钉钉回调日志记录,停用部分 HTTP 回调接口,改由集成方案驱动审批流,优化审批注册中心的查询逻辑。
This commit is contained in:
@@ -0,0 +1,115 @@
|
||||
-- 【审核集成 Phase0】新建4张集成表 + 扩展审批台账
|
||||
-- author: GHT date: 2026-06-05
|
||||
SET NAMES utf8mb4;
|
||||
|
||||
-- ① 单据注册中心
|
||||
CREATE TABLE IF NOT EXISTS `mes_xsl_biz_doc_registry` (
|
||||
`id` varchar(32) NOT NULL COMMENT '主键',
|
||||
`doc_code` varchar(64) NOT NULL COMMENT '业务编码 如 formula_spec',
|
||||
`table_name` varchar(128) NOT NULL COMMENT '物理表名',
|
||||
`display_name` varchar(128) DEFAULT NULL COMMENT '中文名',
|
||||
`enabled` tinyint DEFAULT 1 COMMENT '启用 0否 1是',
|
||||
`remark` varchar(500) DEFAULT NULL COMMENT '备注',
|
||||
`del_flag` int DEFAULT 0 COMMENT '逻辑删除',
|
||||
`tenant_id` int DEFAULT NULL COMMENT '租户ID',
|
||||
`sys_org_code` varchar(64) DEFAULT NULL,
|
||||
`create_by` varchar(50) DEFAULT NULL,
|
||||
`create_time` datetime DEFAULT NULL,
|
||||
`update_by` varchar(50) DEFAULT NULL,
|
||||
`update_time` datetime DEFAULT NULL,
|
||||
PRIMARY KEY (`id`),
|
||||
UNIQUE KEY `uk_biz_doc_code_tenant` (`doc_code`, `tenant_id`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='MES单据注册中心';
|
||||
|
||||
-- 预置常用单据
|
||||
INSERT IGNORE INTO `mes_xsl_biz_doc_registry`
|
||||
(`id`, `doc_code`, `table_name`, `display_name`, `enabled`, `del_flag`, `tenant_id`, `create_by`, `create_time`)
|
||||
VALUES
|
||||
(REPLACE(UUID(),'-',''), 'formula_spec', 'mes_xsl_formula_spec', '配合示方', 1, 0, 0, 'admin', NOW()),
|
||||
(REPLACE(UUID(),'-',''), 'mixing_spec', 'mes_xsl_mixing_spec', '密炼示方', 1, 0, 0, 'admin', NOW()),
|
||||
(REPLACE(UUID(),'-',''), 'mixer_ps_compile', 'mes_xsl_mixer_ps_compile', '密炼PS编制', 1, 0, 0, 'admin', NOW()),
|
||||
(REPLACE(UUID(),'-',''), 'rubber_quick_test_std', 'mes_xsl_rubber_quick_test_std', '快检实验标准', 1, 0, 0, 'admin', NOW()),
|
||||
(REPLACE(UUID(),'-',''), 'raw_material_entry', 'mes_xsl_raw_material_entry', '原料入场记录', 1, 0, 0, 'admin', NOW());
|
||||
|
||||
-- ② 集成方案
|
||||
CREATE TABLE IF NOT EXISTS `mes_xsl_integration_plan` (
|
||||
`id` varchar(32) NOT NULL COMMENT '主键',
|
||||
`plan_code` varchar(64) NOT NULL COMMENT '方案编码(唯一)',
|
||||
`plan_name` varchar(128) NOT NULL COMMENT '方案名称',
|
||||
`source_table` varchar(128) NOT NULL COMMENT '源单表名',
|
||||
`trigger_phase` varchar(20) NOT NULL COMMENT '触发时机 onApprove/onReject/onNodeApprove',
|
||||
`exec_mode` varchar(10) DEFAULT 'async' COMMENT '执行模式 sync同步/async异步提交后',
|
||||
`match_condition` varchar(500) DEFAULT NULL COMMENT '匹配条件(空=无条件)',
|
||||
`status` varchar(1) DEFAULT '0' COMMENT '0草稿 1已发布 2已停用',
|
||||
`remark` varchar(500) DEFAULT NULL,
|
||||
`del_flag` int DEFAULT 0,
|
||||
`tenant_id` int DEFAULT NULL,
|
||||
`sys_org_code` varchar(64) DEFAULT NULL,
|
||||
`create_by` varchar(50) DEFAULT NULL,
|
||||
`create_time` datetime DEFAULT NULL,
|
||||
`update_by` varchar(50) DEFAULT NULL,
|
||||
`update_time` datetime DEFAULT NULL,
|
||||
PRIMARY KEY (`id`),
|
||||
KEY `idx_int_plan_table_phase` (`source_table`, `trigger_phase`, `status`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='审核集成方案';
|
||||
|
||||
-- ③ 集成动作
|
||||
CREATE TABLE IF NOT EXISTS `mes_xsl_integration_action` (
|
||||
`id` varchar(32) NOT NULL COMMENT '主键',
|
||||
`plan_id` varchar(32) NOT NULL COMMENT '所属方案ID',
|
||||
`action_name` varchar(128) NOT NULL COMMENT '动作名称',
|
||||
`action_type` varchar(30) NOT NULL DEFAULT 'SQL_UPDATE' COMMENT '动作类型 Phase0仅SQL_UPDATE',
|
||||
`sql_template` text DEFAULT NULL COMMENT 'SQL_UPDATE模板,支持#{source.xxx}变量',
|
||||
`exec_order` int DEFAULT 0 COMMENT '执行顺序(升序)',
|
||||
`on_fail` varchar(10) DEFAULT 'stop' COMMENT '失败策略 stop终止/continue继续',
|
||||
`idempotent_key` varchar(200) DEFAULT NULL COMMENT '幂等键表达式(空=record_id+action_id)',
|
||||
`enabled` tinyint DEFAULT 1 COMMENT '启用',
|
||||
`remark` varchar(500) DEFAULT NULL,
|
||||
`del_flag` int DEFAULT 0,
|
||||
`create_by` varchar(50) DEFAULT NULL,
|
||||
`create_time` datetime DEFAULT NULL,
|
||||
`update_by` varchar(50) DEFAULT NULL,
|
||||
`update_time` datetime DEFAULT NULL,
|
||||
PRIMARY KEY (`id`),
|
||||
KEY `idx_int_action_plan` (`plan_id`, `exec_order`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='审核集成动作';
|
||||
|
||||
-- ④ 集成执行日志
|
||||
CREATE TABLE IF NOT EXISTS `mes_xsl_integration_log` (
|
||||
`id` varchar(32) NOT NULL COMMENT '主键',
|
||||
`record_id` varchar(32) DEFAULT NULL COMMENT '审批台账ID',
|
||||
`plan_id` varchar(32) DEFAULT NULL COMMENT '方案ID',
|
||||
`action_id` varchar(32) DEFAULT NULL COMMENT '动作ID',
|
||||
`idempotent_key` varchar(200) DEFAULT NULL COMMENT '幂等键',
|
||||
`status` varchar(10) DEFAULT NULL COMMENT 'success/failed/skipped',
|
||||
`source_biz_id` varchar(64) DEFAULT NULL COMMENT '源单ID',
|
||||
`source_biz_table` varchar(128) DEFAULT NULL COMMENT '源单表名',
|
||||
`error_message` text DEFAULT NULL COMMENT '错误信息',
|
||||
`retry_count` int DEFAULT 0 COMMENT '重试次数',
|
||||
`exec_time_ms` bigint DEFAULT NULL COMMENT '耗时ms',
|
||||
`request_snapshot` text DEFAULT NULL COMMENT '执行前变量快照',
|
||||
`response_snapshot` text DEFAULT NULL COMMENT '执行结果快照',
|
||||
`create_by` varchar(50) DEFAULT NULL,
|
||||
`create_time` datetime DEFAULT NULL,
|
||||
PRIMARY KEY (`id`),
|
||||
KEY `idx_intlog_record` (`record_id`),
|
||||
KEY `idx_intlog_idempotent` (`idempotent_key`(191)),
|
||||
KEY `idx_intlog_plan_action` (`plan_id`, `action_id`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='审核集成执行日志';
|
||||
|
||||
-- ⑤ 扩展 mes_xsl_approval_record(幂等:列已存在则跳过,避免重复执行报 1060)
|
||||
SET @db = DATABASE();
|
||||
|
||||
SET @sql = IF(
|
||||
(SELECT COUNT(*) FROM information_schema.COLUMNS WHERE TABLE_SCHEMA = @db AND TABLE_NAME = 'mes_xsl_approval_record' AND COLUMN_NAME = 'integration_status') = 0,
|
||||
'ALTER TABLE `mes_xsl_approval_record` ADD COLUMN `integration_status` varchar(2) DEFAULT ''0'' COMMENT ''编排状态 0未执行 1成功 2部分失败 3失败'' AFTER `finish_time`',
|
||||
'SELECT 1'
|
||||
);
|
||||
PREPARE stmt FROM @sql; EXECUTE stmt; DEALLOCATE PREPARE stmt;
|
||||
|
||||
SET @sql = IF(
|
||||
(SELECT COUNT(*) FROM information_schema.COLUMNS WHERE TABLE_SCHEMA = @db AND TABLE_NAME = 'mes_xsl_approval_record' AND COLUMN_NAME = 'integration_remark') = 0,
|
||||
'ALTER TABLE `mes_xsl_approval_record` ADD COLUMN `integration_remark` varchar(500) DEFAULT NULL COMMENT ''编排摘要/错误信息'' AFTER `integration_status`',
|
||||
'SELECT 1'
|
||||
);
|
||||
PREPARE stmt FROM @sql; EXECUTE stmt; DEALLOCATE PREPARE stmt;
|
||||
@@ -0,0 +1,74 @@
|
||||
-- 【审核集成 Phase0】字典数据
|
||||
-- author: GHT date: 2026-06-05
|
||||
SET NAMES utf8mb4;
|
||||
|
||||
-- 集成动作类型
|
||||
INSERT IGNORE INTO `sys_dict` (`id`,`dict_name`,`dict_code`,`description`,`del_flag`,`create_by`,`create_time`,`type`,`tenant_id`)
|
||||
VALUES ('1995000000000000360','集成动作类型','mes_xsl_integration_action_type','审核集成动作类型',0,'admin',NOW(),0,0);
|
||||
|
||||
INSERT IGNORE INTO `sys_dict_item` (`id`,`dict_id`,`item_text`,`item_value`,`description`,`sort_order`,`status`,`create_by`,`create_time`)
|
||||
VALUES
|
||||
('1995000000000000361','1995000000000000360','SQL更新','SQL_UPDATE','执行UPDATE/INSERT SQL',1,1,'admin',NOW()),
|
||||
('1995000000000000362','1995000000000000360','更新单据','UPDATE_DOC','结构化更新目标单据(Phase1)',2,1,'admin',NOW()),
|
||||
('1995000000000000363','1995000000000000360','生成单据','CREATE_DOC','生成目标主+子表(Phase1)',3,1,'admin',NOW()),
|
||||
('1995000000000000364','1995000000000000360','调用接口','CALL_API','HTTP调用业务接口(Phase2)',4,1,'admin',NOW()),
|
||||
('1995000000000000365','1995000000000000360','调用Handler','CALL_HANDLER','Spring Bean处理(Phase2)',5,1,'admin',NOW());
|
||||
|
||||
-- 集成触发时机
|
||||
INSERT IGNORE INTO `sys_dict` (`id`,`dict_name`,`dict_code`,`description`,`del_flag`,`create_by`,`create_time`,`type`,`tenant_id`)
|
||||
VALUES ('1995000000000000366','集成触发时机','mes_xsl_integration_trigger_phase','审核集成方案触发时机',0,'admin',NOW(),0,0);
|
||||
|
||||
INSERT IGNORE INTO `sys_dict_item` (`id`,`dict_id`,`item_text`,`item_value`,`description`,`sort_order`,`status`,`create_by`,`create_time`)
|
||||
VALUES
|
||||
('1995000000000000367','1995000000000000366','审批通过','onApprove','整个流程最终通过时触发',1,1,'admin',NOW()),
|
||||
('1995000000000000368','1995000000000000366','审批驳回','onReject','任一节点驳回时触发',2,1,'admin',NOW()),
|
||||
('1995000000000000369','1995000000000000366','节点通过','onNodeApprove','单个节点通过(中间态)时触发',3,1,'admin',NOW());
|
||||
|
||||
-- 集成方案状态
|
||||
INSERT IGNORE INTO `sys_dict` (`id`,`dict_name`,`dict_code`,`description`,`del_flag`,`create_by`,`create_time`,`type`,`tenant_id`)
|
||||
VALUES ('1995000000000000370','集成方案状态','mes_xsl_integration_plan_status','审核集成方案状态',0,'admin',NOW(),0,0);
|
||||
|
||||
INSERT IGNORE INTO `sys_dict_item` (`id`,`dict_id`,`item_text`,`item_value`,`description`,`sort_order`,`status`,`create_by`,`create_time`)
|
||||
VALUES
|
||||
('1995000000000000371','1995000000000000370','草稿','0','未发布,不生效',1,1,'admin',NOW()),
|
||||
('1995000000000000372','1995000000000000370','已发布','1','生效中',2,1,'admin',NOW()),
|
||||
('1995000000000000373','1995000000000000370','已停用','2','已停用',3,1,'admin',NOW());
|
||||
|
||||
-- 集成执行日志状态
|
||||
INSERT IGNORE INTO `sys_dict` (`id`,`dict_name`,`dict_code`,`description`,`del_flag`,`create_by`,`create_time`,`type`,`tenant_id`)
|
||||
VALUES ('1995000000000000374','集成执行状态','mes_xsl_integration_log_status','审核集成执行日志状态',0,'admin',NOW(),0,0);
|
||||
|
||||
INSERT IGNORE INTO `sys_dict_item` (`id`,`dict_id`,`item_text`,`item_value`,`description`,`sort_order`,`status`,`create_by`,`create_time`)
|
||||
VALUES
|
||||
('1995000000000000375','1995000000000000374','成功','success','执行成功',1,1,'admin',NOW()),
|
||||
('1995000000000000376','1995000000000000374','失败','failed','执行失败',2,1,'admin',NOW()),
|
||||
('1995000000000000377','1995000000000000374','已跳过','skipped','幂等命中跳过',3,1,'admin',NOW());
|
||||
|
||||
-- 集成执行模式
|
||||
INSERT IGNORE INTO `sys_dict` (`id`,`dict_name`,`dict_code`,`description`,`del_flag`,`create_by`,`create_time`,`type`,`tenant_id`)
|
||||
VALUES ('1995000000000000378','集成执行模式','mes_xsl_integration_exec_mode','审批后编排执行模式',0,'admin',NOW(),0,0);
|
||||
|
||||
INSERT IGNORE INTO `sys_dict_item` (`id`,`dict_id`,`item_text`,`item_value`,`description`,`sort_order`,`status`,`create_by`,`create_time`)
|
||||
VALUES
|
||||
('1995000000000000379','1995000000000000378','异步(推荐)','async','事务提交后异步执行,审批不因编排失败回滚',1,1,'admin',NOW()),
|
||||
('1995000000000000380','1995000000000000378','同步','sync','与审批同事务,编排失败回滚审批',2,1,'admin',NOW());
|
||||
|
||||
-- 编排执行状态(台账扩展字段)
|
||||
INSERT IGNORE INTO `sys_dict` (`id`,`dict_name`,`dict_code`,`description`,`del_flag`,`create_by`,`create_time`,`type`,`tenant_id`)
|
||||
VALUES ('1995000000000000381','编排执行状态','mes_xsl_integration_orch_status','审批台账的编排执行状态',0,'admin',NOW(),0,0);
|
||||
|
||||
INSERT IGNORE INTO `sys_dict_item` (`id`,`dict_id`,`item_text`,`item_value`,`description`,`sort_order`,`status`,`create_by`,`create_time`)
|
||||
VALUES
|
||||
('1995000000000000382','1995000000000000381','未执行','0','未触发编排',1,1,'admin',NOW()),
|
||||
('1995000000000000383','1995000000000000381','全部成功','1','所有动作均成功',2,1,'admin',NOW()),
|
||||
('1995000000000000384','1995000000000000381','部分失败','2','存在on_fail=continue的失败动作',3,1,'admin',NOW()),
|
||||
('1995000000000000385','1995000000000000381','失败','3','遇到on_fail=stop的失败动作中止',4,1,'admin',NOW());
|
||||
|
||||
-- 失败策略
|
||||
INSERT IGNORE INTO `sys_dict` (`id`,`dict_name`,`dict_code`,`description`,`del_flag`,`create_by`,`create_time`,`type`,`tenant_id`)
|
||||
VALUES ('1995000000000000386','动作失败策略','mes_xsl_integration_on_fail','集成动作失败后的处理策略',0,'admin',NOW(),0,0);
|
||||
|
||||
INSERT IGNORE INTO `sys_dict_item` (`id`,`dict_id`,`item_text`,`item_value`,`description`,`sort_order`,`status`,`create_by`,`create_time`)
|
||||
VALUES
|
||||
('1995000000000000387','1995000000000000386','停止','stop','失败后停止后续动作',1,1,'admin',NOW()),
|
||||
('1995000000000000388','1995000000000000386','继续','continue','失败后继续执行后续动作',2,1,'admin',NOW());
|
||||
@@ -0,0 +1,50 @@
|
||||
-- 【审核集成 Phase0】菜单 + 权限(挂在 MESToDing审批配置 父菜单 178046026420801 下)
|
||||
-- author: GHT date: 2026-06-05
|
||||
SET NAMES utf8mb4;
|
||||
|
||||
-- 单据注册中心
|
||||
INSERT INTO sys_permission(id,parent_id,name,url,component,component_name,redirect,menu_type,perms,perms_type,sort_no,always_show,icon,is_route,is_leaf,keep_alive,hidden,hide_tab,description,status,del_flag,rule_flag,create_by,create_time,update_by,update_time,internal_or_external)
|
||||
VALUES('178046026420838','178046026420801','单据注册中心','/xslmes/mesXslBizDocRegistryList','xslmes/approval/integration/MesXslBizDocRegistryList',NULL,NULL,0,NULL,'1',4.00,0,'ant-design:database-outlined',1,0,0,0,0,NULL,'1',0,0,'admin','2026-06-05 00:00:00',NULL,NULL,0);
|
||||
|
||||
INSERT INTO sys_permission(id,parent_id,name,url,component,is_route,component_name,redirect,menu_type,perms,perms_type,sort_no,always_show,icon,is_leaf,keep_alive,hidden,hide_tab,description,create_by,create_time,update_by,update_time,del_flag,rule_flag,status,internal_or_external)
|
||||
VALUES('178046026420839','178046026420838','查询单据注册',NULL,NULL,0,NULL,NULL,2,'xslmes:mes_xsl_biz_doc_registry:list','1',NULL,0,NULL,1,0,0,0,NULL,'admin','2026-06-05 00:00:00',NULL,NULL,0,0,'1',0);
|
||||
INSERT INTO sys_permission(id,parent_id,name,url,component,is_route,component_name,redirect,menu_type,perms,perms_type,sort_no,always_show,icon,is_leaf,keep_alive,hidden,hide_tab,description,create_by,create_time,update_by,update_time,del_flag,rule_flag,status,internal_or_external)
|
||||
VALUES('178046026420840','178046026420838','新增单据注册',NULL,NULL,0,NULL,NULL,2,'xslmes:mes_xsl_biz_doc_registry:add','1',NULL,0,NULL,1,0,0,0,NULL,'admin','2026-06-05 00:00:00',NULL,NULL,0,0,'1',0);
|
||||
INSERT INTO sys_permission(id,parent_id,name,url,component,is_route,component_name,redirect,menu_type,perms,perms_type,sort_no,always_show,icon,is_leaf,keep_alive,hidden,hide_tab,description,create_by,create_time,update_by,update_time,del_flag,rule_flag,status,internal_or_external)
|
||||
VALUES('178046026420841','178046026420838','编辑单据注册',NULL,NULL,0,NULL,NULL,2,'xslmes:mes_xsl_biz_doc_registry:edit','1',NULL,0,NULL,1,0,0,0,NULL,'admin','2026-06-05 00:00:00',NULL,NULL,0,0,'1',0);
|
||||
INSERT INTO sys_permission(id,parent_id,name,url,component,is_route,component_name,redirect,menu_type,perms,perms_type,sort_no,always_show,icon,is_leaf,keep_alive,hidden,hide_tab,description,create_by,create_time,update_by,update_time,del_flag,rule_flag,status,internal_or_external)
|
||||
VALUES('178046026420842','178046026420838','删除单据注册',NULL,NULL,0,NULL,NULL,2,'xslmes:mes_xsl_biz_doc_registry:delete','1',NULL,0,NULL,1,0,0,0,NULL,'admin','2026-06-05 00:00:00',NULL,NULL,0,0,'1',0);
|
||||
|
||||
-- 集成方案管理(含内嵌动作管理)
|
||||
INSERT INTO sys_permission(id,parent_id,name,url,component,component_name,redirect,menu_type,perms,perms_type,sort_no,always_show,icon,is_route,is_leaf,keep_alive,hidden,hide_tab,description,status,del_flag,rule_flag,create_by,create_time,update_by,update_time,internal_or_external)
|
||||
VALUES('178046026420830','178046026420801','集成方案管理','/xslmes/mesXslIntegrationPlanList','xslmes/approval/integration/MesXslIntegrationPlanList',NULL,NULL,0,NULL,'1',5.00,0,'ant-design:node-index-outlined',1,0,0,0,0,NULL,'1',0,0,'admin','2026-06-05 00:00:00',NULL,NULL,0);
|
||||
|
||||
INSERT INTO sys_permission(id,parent_id,name,url,component,is_route,component_name,redirect,menu_type,perms,perms_type,sort_no,always_show,icon,is_leaf,keep_alive,hidden,hide_tab,description,create_by,create_time,update_by,update_time,del_flag,rule_flag,status,internal_or_external)
|
||||
VALUES('178046026420831','178046026420830','查询集成方案',NULL,NULL,0,NULL,NULL,2,'xslmes:mes_xsl_integration_plan:list','1',NULL,0,NULL,1,0,0,0,NULL,'admin','2026-06-05 00:00:00',NULL,NULL,0,0,'1',0);
|
||||
INSERT INTO sys_permission(id,parent_id,name,url,component,is_route,component_name,redirect,menu_type,perms,perms_type,sort_no,always_show,icon,is_leaf,keep_alive,hidden,hide_tab,description,create_by,create_time,update_by,update_time,del_flag,rule_flag,status,internal_or_external)
|
||||
VALUES('178046026420832','178046026420830','新增集成方案',NULL,NULL,0,NULL,NULL,2,'xslmes:mes_xsl_integration_plan:add','1',NULL,0,NULL,1,0,0,0,NULL,'admin','2026-06-05 00:00:00',NULL,NULL,0,0,'1',0);
|
||||
INSERT INTO sys_permission(id,parent_id,name,url,component,is_route,component_name,redirect,menu_type,perms,perms_type,sort_no,always_show,icon,is_leaf,keep_alive,hidden,hide_tab,description,create_by,create_time,update_by,update_time,del_flag,rule_flag,status,internal_or_external)
|
||||
VALUES('178046026420833','178046026420830','编辑集成方案',NULL,NULL,0,NULL,NULL,2,'xslmes:mes_xsl_integration_plan:edit','1',NULL,0,NULL,1,0,0,0,NULL,'admin','2026-06-05 00:00:00',NULL,NULL,0,0,'1',0);
|
||||
INSERT INTO sys_permission(id,parent_id,name,url,component,is_route,component_name,redirect,menu_type,perms,perms_type,sort_no,always_show,icon,is_leaf,keep_alive,hidden,hide_tab,description,create_by,create_time,update_by,update_time,del_flag,rule_flag,status,internal_or_external)
|
||||
VALUES('178046026420834','178046026420830','删除集成方案',NULL,NULL,0,NULL,NULL,2,'xslmes:mes_xsl_integration_plan:delete','1',NULL,0,NULL,1,0,0,0,NULL,'admin','2026-06-05 00:00:00',NULL,NULL,0,0,'1',0);
|
||||
INSERT INTO sys_permission(id,parent_id,name,url,component,is_route,component_name,redirect,menu_type,perms,perms_type,sort_no,always_show,icon,is_leaf,keep_alive,hidden,hide_tab,description,create_by,create_time,update_by,update_time,del_flag,rule_flag,status,internal_or_external)
|
||||
VALUES('178046026420843','178046026420830','发布集成方案',NULL,NULL,0,NULL,NULL,2,'xslmes:mes_xsl_integration_plan:publish','1',NULL,0,NULL,1,0,0,0,NULL,'admin','2026-06-05 00:00:00',NULL,NULL,0,0,'1',0);
|
||||
|
||||
-- 集成执行日志
|
||||
INSERT INTO sys_permission(id,parent_id,name,url,component,component_name,redirect,menu_type,perms,perms_type,sort_no,always_show,icon,is_route,is_leaf,keep_alive,hidden,hide_tab,description,status,del_flag,rule_flag,create_by,create_time,update_by,update_time,internal_or_external)
|
||||
VALUES('178046026420835','178046026420801','集成执行日志','/xslmes/mesXslIntegrationLogList','xslmes/approval/integration/MesXslIntegrationLogList',NULL,NULL,0,NULL,'1',6.00,0,'ant-design:file-search-outlined',1,0,0,0,0,NULL,'1',0,0,'admin','2026-06-05 00:00:00',NULL,NULL,0);
|
||||
|
||||
INSERT INTO sys_permission(id,parent_id,name,url,component,is_route,component_name,redirect,menu_type,perms,perms_type,sort_no,always_show,icon,is_leaf,keep_alive,hidden,hide_tab,description,create_by,create_time,update_by,update_time,del_flag,rule_flag,status,internal_or_external)
|
||||
VALUES('178046026420836','178046026420835','查询集成日志',NULL,NULL,0,NULL,NULL,2,'xslmes:mes_xsl_integration_log:list','1',NULL,0,NULL,1,0,0,0,NULL,'admin','2026-06-05 00:00:00',NULL,NULL,0,0,'1',0);
|
||||
INSERT INTO sys_permission(id,parent_id,name,url,component,is_route,component_name,redirect,menu_type,perms,perms_type,sort_no,always_show,icon,is_leaf,keep_alive,hidden,hide_tab,description,create_by,create_time,update_by,update_time,del_flag,rule_flag,status,internal_or_external)
|
||||
VALUES('178046026420837','178046026420835','重试集成动作',NULL,NULL,0,NULL,NULL,2,'xslmes:mes_xsl_integration_log:retry','1',NULL,0,NULL,1,0,0,0,NULL,'admin','2026-06-05 00:00:00',NULL,NULL,0,0,'1',0);
|
||||
|
||||
-- 授权给超管角色(f6817f48af4fb3af11b9e8bf182f618b)
|
||||
INSERT INTO sys_role_permission (id,role_id,permission_id,data_rule_ids,operate_date,operate_ip)
|
||||
SELECT REPLACE(UUID(),'-',''),'f6817f48af4fb3af11b9e8bf182f618b',id,NULL,'2026-06-05 00:00:00','127.0.0.1'
|
||||
FROM sys_permission
|
||||
WHERE id IN (
|
||||
'178046026420830','178046026420831','178046026420832','178046026420833','178046026420834','178046026420843',
|
||||
'178046026420835','178046026420836','178046026420837',
|
||||
'178046026420838','178046026420839','178046026420840','178046026420841','178046026420842'
|
||||
);
|
||||
@@ -0,0 +1,106 @@
|
||||
-- 【审核集成 Phase0】密炼PS编制 — 集成方案演示数据
|
||||
-- 功能说明:
|
||||
-- 将密炼PS现有三节点审批(校对→审核→批准)的状态流转逻辑,
|
||||
-- 转化为可视化的集成方案配置,验证 SQL_UPDATE 动作执行器的实际效果。
|
||||
-- 注意:
|
||||
-- 方案初始状态为"草稿(0)",不会自动触发。
|
||||
-- 需要在【集成方案管理】页面手动"发布"后才生效。
|
||||
-- 现有 @ApprovalBizAction HTTP 回调仍然生效(两套并行,SQL 以 AND status=? 条件防重)。
|
||||
-- author: GHT date: 2026-06-05
|
||||
SET NAMES utf8mb4;
|
||||
|
||||
-- =============================================================
|
||||
-- 方案一:审批全部通过 — 推进主表 + 配合示方到最终批准态
|
||||
-- 触发时机:onApprove(最终通过整个流程时)
|
||||
-- =============================================================
|
||||
INSERT IGNORE INTO `mes_xsl_integration_plan`
|
||||
(`id`,`plan_code`,`plan_name`,`source_table`,`trigger_phase`,`exec_mode`,`match_condition`,`status`,`remark`,`del_flag`,`tenant_id`,`create_by`,`create_time`)
|
||||
VALUES
|
||||
('mxpsonapproveplan000001','mixer_ps_on_approve','密炼PS-审批通过→批准态同步','mes_xsl_mixer_ps_compile','onApprove','async',NULL,'0',
|
||||
'最终审批通过后:主表 status→approve,配合示方 status→recognition_pass',
|
||||
0,0,'admin',NOW());
|
||||
|
||||
INSERT IGNORE INTO `mes_xsl_integration_action`
|
||||
(`id`,`plan_id`,`action_name`,`action_type`,`sql_template`,`exec_order`,`on_fail`,`enabled`,`remark`,`del_flag`,`create_by`,`create_time`)
|
||||
VALUES
|
||||
('mxpsonapprove_act001','mxpsonapproveplan000001',
|
||||
'主表→批准态','SQL_UPDATE',
|
||||
'UPDATE mes_xsl_mixer_ps_compile SET status=''approve'', approve_time=NOW() WHERE id=#{source.id} AND status=''audit''',
|
||||
1,'stop',1,'只在 audit 态才更新,防止重复触发',0,'admin',NOW()),
|
||||
|
||||
('mxpsonapprove_act002','mxpsonapproveplan000001',
|
||||
'配合示方→认定通过','SQL_UPDATE',
|
||||
'UPDATE mes_xsl_formula_spec SET status=''recognition_pass'', approve_time=NOW() WHERE issue_number=#{source.issue_number} AND issue_number IS NOT NULL',
|
||||
2,'continue',1,'通过 issue_number 级联同步,issue_number 为空时影响0行自动跳过',0,'admin',NOW()),
|
||||
|
||||
('mxpsonapprove_act003','mxpsonapproveplan000001',
|
||||
'混炼示方→同步批准时间','SQL_UPDATE',
|
||||
'UPDATE mes_xsl_mixing_spec SET approve_time=NOW() WHERE issue_number=#{source.issue_number} AND issue_number IS NOT NULL',
|
||||
3,'continue',1,'仅同步时间戳,不改变混炼示方 status',0,'admin',NOW());
|
||||
|
||||
-- =============================================================
|
||||
-- 方案二:审批驳回 — 全量回退到编制态,清空所有痕迹
|
||||
-- 触发时机:onReject(任一节点被驳回时)
|
||||
-- =============================================================
|
||||
INSERT IGNORE INTO `mes_xsl_integration_plan`
|
||||
(`id`,`plan_code`,`plan_name`,`source_table`,`trigger_phase`,`exec_mode`,`match_condition`,`status`,`remark`,`del_flag`,`tenant_id`,`create_by`,`create_time`)
|
||||
VALUES
|
||||
('mxpsonrejectplan000002','mixer_ps_on_reject','密炼PS-审批驳回→恢复编制态','mes_xsl_mixer_ps_compile','onReject','async',NULL,'0',
|
||||
'驳回后:主表+配合示方回到 compile,清空校对/审核/批准全部痕迹字段',
|
||||
0,0,'admin',NOW());
|
||||
|
||||
INSERT IGNORE INTO `mes_xsl_integration_action`
|
||||
(`id`,`plan_id`,`action_name`,`action_type`,`sql_template`,`exec_order`,`on_fail`,`enabled`,`remark`,`del_flag`,`create_by`,`create_time`)
|
||||
VALUES
|
||||
('mxpsonreject_act001','mxpsonrejectplan000002',
|
||||
'主表→回退编制态','SQL_UPDATE',
|
||||
'UPDATE mes_xsl_mixer_ps_compile SET status=''compile'', proofread_by=NULL, proofread_time=NULL, audit_by=NULL, audit_time=NULL, approve_by=NULL, approve_time=NULL WHERE id=#{source.id}',
|
||||
1,'stop',1,'无条件回退,清空所有审批痕迹',0,'admin',NOW()),
|
||||
|
||||
('mxpsonreject_act002','mxpsonrejectplan000002',
|
||||
'配合示方→回退编制态','SQL_UPDATE',
|
||||
'UPDATE mes_xsl_formula_spec SET status=''compile'', proofread_by=NULL, proofread_time=NULL, audit_by=NULL, audit_time=NULL, approve_by=NULL, approve_time=NULL WHERE issue_number=#{source.issue_number} AND issue_number IS NOT NULL',
|
||||
2,'continue',1,'级联回退配合示方状态',0,'admin',NOW()),
|
||||
|
||||
('mxpsonreject_act003','mxpsonrejectplan000002',
|
||||
'混炼示方→清空痕迹','SQL_UPDATE',
|
||||
'UPDATE mes_xsl_mixing_spec SET proofread_by=NULL, proofread_time=NULL, audit_by=NULL, audit_time=NULL, approve_by=NULL, approve_time=NULL WHERE issue_number=#{source.issue_number} AND issue_number IS NOT NULL',
|
||||
3,'continue',1,'混炼示方只清痕迹不改 status',0,'admin',NOW());
|
||||
|
||||
-- =============================================================
|
||||
-- 方案三:节点逐级通过 — 利用条件 WHERE 区分校对/审核两个节点
|
||||
-- 触发时机:onNodeApprove(每通过一个中间节点时触发一次)
|
||||
-- 关键设计:每个 UPDATE 带 AND status='当前期望状态' 条件,
|
||||
-- 当 status 不匹配时影响 0 行,自动跳过,实现节点自动识别
|
||||
-- =============================================================
|
||||
INSERT IGNORE INTO `mes_xsl_integration_plan`
|
||||
(`id`,`plan_code`,`plan_name`,`source_table`,`trigger_phase`,`exec_mode`,`match_condition`,`status`,`remark`,`del_flag`,`tenant_id`,`create_by`,`create_time`)
|
||||
VALUES
|
||||
('mxpsnodeapprplan000003','mixer_ps_node_approve','密炼PS-节点通过→逐级状态推进','mes_xsl_mixer_ps_compile','onNodeApprove','async',NULL,'0',
|
||||
'利用条件 WHERE 区分校对/审核两节点:每次只有一条 SQL 真正命中(影响1行),另一条影响0行自动跳过',
|
||||
0,0,'admin',NOW());
|
||||
|
||||
INSERT IGNORE INTO `mes_xsl_integration_action`
|
||||
(`id`,`plan_id`,`action_name`,`action_type`,`sql_template`,`exec_order`,`on_fail`,`enabled`,`remark`,`del_flag`,`create_by`,`create_time`)
|
||||
VALUES
|
||||
-- 第1、2条:校对节点通过(当前 status=compile 时命中)
|
||||
('mxpsnodeappr_act001','mxpsnodeapprplan000003',
|
||||
'校对通过-主表→proofread','SQL_UPDATE',
|
||||
'UPDATE mes_xsl_mixer_ps_compile SET status=''proofread'', proofread_time=NOW() WHERE id=#{source.id} AND status=''compile''',
|
||||
1,'continue',1,'status=compile 才命中(校对节点);status=proofread 时影响0行自动跳过',0,'admin',NOW()),
|
||||
|
||||
('mxpsnodeappr_act002','mxpsnodeapprplan000003',
|
||||
'校对通过-配合示方→submit','SQL_UPDATE',
|
||||
'UPDATE mes_xsl_formula_spec SET status=''submit'', proofread_time=NOW() WHERE issue_number=#{source.issue_number} AND status=''compile'' AND issue_number IS NOT NULL',
|
||||
2,'continue',1,'配合示方校对态同步',0,'admin',NOW()),
|
||||
|
||||
-- 第3、4条:审核节点通过(当前 status=proofread 时命中)
|
||||
('mxpsnodeappr_act003','mxpsnodeapprplan000003',
|
||||
'审核通过-主表→audit','SQL_UPDATE',
|
||||
'UPDATE mes_xsl_mixer_ps_compile SET status=''audit'', audit_time=NOW() WHERE id=#{source.id} AND status=''proofread''',
|
||||
3,'continue',1,'status=proofread 才命中(审核节点);校对节点时影响0行跳过',0,'admin',NOW()),
|
||||
|
||||
('mxpsnodeappr_act004','mxpsnodeapprplan000003',
|
||||
'审核通过-配合示方→review_pass','SQL_UPDATE',
|
||||
'UPDATE mes_xsl_formula_spec SET status=''review_pass'', audit_time=NOW() WHERE issue_number=#{source.issue_number} AND status=''submit'' AND issue_number IS NOT NULL',
|
||||
4,'continue',1,'配合示方审核态同步',0,'admin',NOW());
|
||||
@@ -0,0 +1,5 @@
|
||||
-- 【审核集成 Phase0】新增动作可视化配置字段
|
||||
-- 用于存储可视化编辑器的配置 JSON,支持重新打开时还原可视化状态
|
||||
-- author: GHT date: 2026-06-05
|
||||
ALTER TABLE `mes_xsl_integration_action`
|
||||
ADD COLUMN `action_config` TEXT DEFAULT NULL COMMENT '可视化配置JSON(可视化编辑器专用,用于重新打开时还原配置)' AFTER `sql_template`;
|
||||
@@ -0,0 +1,132 @@
|
||||
-- 【审批注册中心】扩展注册配置 + 审批痕迹明细表(每单据一行)
|
||||
-- author: GHT date: 2026-06-05 for:【XSLMES-20260605-K8R2】
|
||||
SET NAMES utf8mb4;
|
||||
SET @db = DATABASE();
|
||||
|
||||
-- ① 扩展 mes_xsl_biz_doc_registry(幂等:列已存在则跳过)
|
||||
SET @sql = IF(
|
||||
(SELECT COUNT(*) FROM information_schema.COLUMNS WHERE TABLE_SCHEMA = @db AND TABLE_NAME = 'mes_xsl_biz_doc_registry' AND COLUMN_NAME = 'enabled_stages') = 0,
|
||||
'ALTER TABLE `mes_xsl_biz_doc_registry` ADD COLUMN `enabled_stages` varchar(128) DEFAULT NULL COMMENT ''启用环节(多选逗号分隔 proofread,audit,approve)'' AFTER `enabled`',
|
||||
'SELECT 1'
|
||||
);
|
||||
PREPARE stmt FROM @sql; EXECUTE stmt; DEALLOCATE PREPARE stmt;
|
||||
|
||||
SET @sql = IF(
|
||||
(SELECT COUNT(*) FROM information_schema.COLUMNS WHERE TABLE_SCHEMA = @db AND TABLE_NAME = 'mes_xsl_biz_doc_registry' AND COLUMN_NAME = 'status_field') = 0,
|
||||
'ALTER TABLE `mes_xsl_biz_doc_registry` ADD COLUMN `status_field` varchar(64) DEFAULT ''status'' COMMENT ''业务状态字段名'' AFTER `enabled_stages`',
|
||||
'SELECT 1'
|
||||
);
|
||||
PREPARE stmt FROM @sql; EXECUTE stmt; DEALLOCATE PREPARE stmt;
|
||||
|
||||
SET @sql = IF(
|
||||
(SELECT COUNT(*) FROM information_schema.COLUMNS WHERE TABLE_SCHEMA = @db AND TABLE_NAME = 'mes_xsl_biz_doc_registry' AND COLUMN_NAME = 'proofread_by_field') = 0,
|
||||
'ALTER TABLE `mes_xsl_biz_doc_registry` ADD COLUMN `proofread_by_field` varchar(64) DEFAULT ''proofread_by'' COMMENT ''校对人字段名'' AFTER `status_field`',
|
||||
'SELECT 1'
|
||||
);
|
||||
PREPARE stmt FROM @sql; EXECUTE stmt; DEALLOCATE PREPARE stmt;
|
||||
|
||||
SET @sql = IF(
|
||||
(SELECT COUNT(*) FROM information_schema.COLUMNS WHERE TABLE_SCHEMA = @db AND TABLE_NAME = 'mes_xsl_biz_doc_registry' AND COLUMN_NAME = 'proofread_time_field') = 0,
|
||||
'ALTER TABLE `mes_xsl_biz_doc_registry` ADD COLUMN `proofread_time_field` varchar(64) DEFAULT ''proofread_time'' COMMENT ''校对时间字段名'' AFTER `proofread_by_field`',
|
||||
'SELECT 1'
|
||||
);
|
||||
PREPARE stmt FROM @sql; EXECUTE stmt; DEALLOCATE PREPARE stmt;
|
||||
|
||||
SET @sql = IF(
|
||||
(SELECT COUNT(*) FROM information_schema.COLUMNS WHERE TABLE_SCHEMA = @db AND TABLE_NAME = 'mes_xsl_biz_doc_registry' AND COLUMN_NAME = 'audit_by_field') = 0,
|
||||
'ALTER TABLE `mes_xsl_biz_doc_registry` ADD COLUMN `audit_by_field` varchar(64) DEFAULT ''audit_by'' COMMENT ''审核人字段名'' AFTER `proofread_time_field`',
|
||||
'SELECT 1'
|
||||
);
|
||||
PREPARE stmt FROM @sql; EXECUTE stmt; DEALLOCATE PREPARE stmt;
|
||||
|
||||
SET @sql = IF(
|
||||
(SELECT COUNT(*) FROM information_schema.COLUMNS WHERE TABLE_SCHEMA = @db AND TABLE_NAME = 'mes_xsl_biz_doc_registry' AND COLUMN_NAME = 'audit_time_field') = 0,
|
||||
'ALTER TABLE `mes_xsl_biz_doc_registry` ADD COLUMN `audit_time_field` varchar(64) DEFAULT ''audit_time'' COMMENT ''审核时间字段名'' AFTER `audit_by_field`',
|
||||
'SELECT 1'
|
||||
);
|
||||
PREPARE stmt FROM @sql; EXECUTE stmt; DEALLOCATE PREPARE stmt;
|
||||
|
||||
SET @sql = IF(
|
||||
(SELECT COUNT(*) FROM information_schema.COLUMNS WHERE TABLE_SCHEMA = @db AND TABLE_NAME = 'mes_xsl_biz_doc_registry' AND COLUMN_NAME = 'approve_by_field') = 0,
|
||||
'ALTER TABLE `mes_xsl_biz_doc_registry` ADD COLUMN `approve_by_field` varchar(64) DEFAULT ''approve_by'' COMMENT ''批准人字段名'' AFTER `audit_time_field`',
|
||||
'SELECT 1'
|
||||
);
|
||||
PREPARE stmt FROM @sql; EXECUTE stmt; DEALLOCATE PREPARE stmt;
|
||||
|
||||
SET @sql = IF(
|
||||
(SELECT COUNT(*) FROM information_schema.COLUMNS WHERE TABLE_SCHEMA = @db AND TABLE_NAME = 'mes_xsl_biz_doc_registry' AND COLUMN_NAME = 'approve_time_field') = 0,
|
||||
'ALTER TABLE `mes_xsl_biz_doc_registry` ADD COLUMN `approve_time_field` varchar(64) DEFAULT ''approve_time'' COMMENT ''批准时间字段名'' AFTER `approve_by_field`',
|
||||
'SELECT 1'
|
||||
);
|
||||
PREPARE stmt FROM @sql; EXECUTE stmt; DEALLOCATE PREPARE stmt;
|
||||
|
||||
ALTER TABLE `mes_xsl_biz_doc_registry` COMMENT='MES审批注册中心';
|
||||
|
||||
-- 密炼PS编制默认开启三环节
|
||||
UPDATE `mes_xsl_biz_doc_registry`
|
||||
SET `enabled_stages` = 'proofread,audit,approve',
|
||||
`status_field` = 'status',
|
||||
`proofread_by_field` = 'proofread_by',
|
||||
`proofread_time_field` = 'proofread_time',
|
||||
`audit_by_field` = 'audit_by',
|
||||
`audit_time_field` = 'audit_time',
|
||||
`approve_by_field` = 'approve_by',
|
||||
`approve_time_field` = 'approve_time',
|
||||
`update_by` = 'admin',
|
||||
`update_time` = NOW()
|
||||
WHERE `doc_code` = 'mixer_ps_compile' AND `del_flag` = 0;
|
||||
|
||||
-- ② 审批痕迹明细(每业务单据一行,按 biz_table + biz_data_id 唯一)
|
||||
CREATE TABLE IF NOT EXISTS `mes_xsl_approval_trace` (
|
||||
`id` varchar(32) NOT NULL COMMENT '主键',
|
||||
`registry_id` varchar(32) DEFAULT NULL COMMENT '审批注册配置ID',
|
||||
`biz_table` varchar(128) NOT NULL COMMENT '业务表名',
|
||||
`biz_data_id` varchar(32) NOT NULL COMMENT '业务单据ID',
|
||||
`proofread_by` varchar(80) DEFAULT NULL COMMENT '校对人',
|
||||
`proofread_time` datetime DEFAULT NULL COMMENT '校对时间',
|
||||
`audit_by` varchar(80) DEFAULT NULL COMMENT '审核人',
|
||||
`audit_time` datetime DEFAULT NULL COMMENT '审核时间',
|
||||
`approve_by` varchar(80) DEFAULT NULL COMMENT '批准人',
|
||||
`approve_time` datetime DEFAULT NULL COMMENT '批准时间',
|
||||
`remark` varchar(500) DEFAULT NULL COMMENT '备注',
|
||||
`del_flag` int DEFAULT 0 COMMENT '逻辑删除',
|
||||
`tenant_id` int DEFAULT NULL COMMENT '租户ID',
|
||||
`sys_org_code` varchar(64) DEFAULT NULL,
|
||||
`create_by` varchar(50) DEFAULT NULL,
|
||||
`create_time` datetime DEFAULT NULL,
|
||||
`update_by` varchar(50) DEFAULT NULL,
|
||||
`update_time` datetime DEFAULT NULL,
|
||||
PRIMARY KEY (`id`),
|
||||
UNIQUE KEY `uk_approval_trace_biz` (`biz_table`, `biz_data_id`, `tenant_id`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='MES审批痕迹明细(每单据一行)';
|
||||
|
||||
-- ③ 审批环节字典(注册中心多选)
|
||||
INSERT IGNORE INTO `sys_dict` (`id`,`dict_name`,`dict_code`,`description`,`del_flag`,`create_by`,`create_time`,`type`,`tenant_id`)
|
||||
VALUES ('1995000000000000390','审批环节','mes_xsl_approval_stage','审批注册中心可启用环节',0,'admin',NOW(),0,0);
|
||||
|
||||
INSERT IGNORE INTO `sys_dict_item` (`id`,`dict_id`,`item_text`,`item_value`,`description`,`sort_order`,`status`,`create_by`,`create_time`)
|
||||
VALUES
|
||||
('1995000000000000391','1995000000000000390','校对','proofread','校对环节',1,1,'admin',NOW()),
|
||||
('1995000000000000392','1995000000000000390','审核','audit','审核环节',2,1,'admin',NOW()),
|
||||
('1995000000000000393','1995000000000000390','批准','approve','批准环节',3,1,'admin',NOW());
|
||||
|
||||
-- ④ 菜单:重命名 + 新增审批痕迹
|
||||
UPDATE `sys_permission`
|
||||
SET `name` = '审批注册中心', `update_by` = 'admin', `update_time` = NOW()
|
||||
WHERE `id` = '178046026420838';
|
||||
|
||||
INSERT IGNORE INTO `sys_permission`
|
||||
(`id`,`parent_id`,`name`,`url`,`component`,`is_route`,`component_name`,`redirect`,`menu_type`,`perms`,`perms_type`,`sort_no`,`always_show`,`icon`,`is_leaf`,`keep_alive`,`hidden`,`hide_tab`,`description`,`status`,`del_flag`,`rule_flag`,`create_by`,`create_time`)
|
||||
VALUES
|
||||
('178046026420843','178046026420801','审批痕迹','/xslmes/mesXslApprovalTraceList','xslmes/approval/integration/MesXslApprovalTraceList',1,NULL,0,NULL,1,4.50,0,'ant-design:history-outlined',1,0,0,0,0,NULL,1,0,0,'admin',NOW());
|
||||
|
||||
INSERT IGNORE INTO `sys_permission`
|
||||
(`id`,`parent_id`,`name`,`perms`,`perms_type`,`menu_type`,`sort_no`,`is_leaf`,`create_by`,`create_time`)
|
||||
VALUES
|
||||
('178046026420844','178046026420843','查询审批痕迹','xslmes:mes_xsl_approval_trace:list',1,2,1,1,'admin',NOW());
|
||||
|
||||
INSERT IGNORE INTO `sys_role_permission` (`id`,`role_id`,`permission_id`,`operate_date`,`operate_ip`)
|
||||
VALUES (REPLACE(UUID(),'-',''),'f6817f48af4fb3af11b9e8bf182f618b','178046026420843',NOW(),'127.0.0.1');
|
||||
|
||||
INSERT IGNORE INTO `sys_role_permission` (`id`,`role_id`,`permission_id`,`operate_date`,`operate_ip`)
|
||||
VALUES (REPLACE(UUID(),'-',''),'f6817f48af4fb3af11b9e8bf182f618b','178046026420844',NOW(),'127.0.0.1');
|
||||
@@ -0,0 +1,26 @@
|
||||
-- 【审批注册中心】新增「查看明细」按钮权限,并授权给已有注册中心权限的角色
|
||||
-- author: GHT date: 2026-06-05 for:【XSLMES-20260605-K8R2】
|
||||
SET NAMES utf8mb4;
|
||||
|
||||
-- ① 审批注册中心下新增按钮权限:查看审批明细(列格式与 V3.9.2_132 按钮权限一致)
|
||||
INSERT IGNORE INTO sys_permission(id,parent_id,name,url,component,is_route,component_name,redirect,menu_type,perms,perms_type,sort_no,always_show,icon,is_leaf,keep_alive,hidden,hide_tab,description,create_by,create_time,update_by,update_time,del_flag,rule_flag,status,internal_or_external)
|
||||
VALUES('178046026420845','178046026420838','查看审批明细',NULL,NULL,0,NULL,NULL,2,'xslmes:mes_xsl_biz_doc_registry:trace','1',5,0,NULL,1,0,0,0,'审批注册中心操作列查看审批痕迹明细','admin',NOW(),NULL,NULL,0,0,'1',0);
|
||||
|
||||
-- ② 超管角色授权
|
||||
INSERT IGNORE INTO `sys_role_permission` (`id`,`role_id`,`permission_id`,`operate_date`,`operate_ip`)
|
||||
VALUES (REPLACE(UUID(),'-',''),'f6817f48af4fb3af11b9e8bf182f618b','178046026420845',NOW(),'127.0.0.1');
|
||||
|
||||
-- ③ 已有审批注册中心任意按钮权限的角色,自动补「查看明细」权限
|
||||
INSERT IGNORE INTO `sys_role_permission` (`id`,`role_id`,`permission_id`,`operate_date`,`operate_ip`)
|
||||
SELECT REPLACE(UUID(),'-',''), rp.`role_id`, '178046026420845', NOW(), '127.0.0.1'
|
||||
FROM `sys_role_permission` rp
|
||||
WHERE rp.`permission_id` IN (
|
||||
'178046026420839',
|
||||
'178046026420840',
|
||||
'178046026420841',
|
||||
'178046026420842'
|
||||
)
|
||||
AND NOT EXISTS (
|
||||
SELECT 1 FROM `sys_role_permission` x
|
||||
WHERE x.`role_id` = rp.`role_id` AND x.`permission_id` = '178046026420845'
|
||||
);
|
||||
@@ -0,0 +1,32 @@
|
||||
-- 【集成方案】与审批注册中心环节绑定
|
||||
-- author: GHT date: 2026-06-05 for:【XSLMES-20260605-K8R2】
|
||||
SET NAMES utf8mb4;
|
||||
SET @db = DATABASE();
|
||||
|
||||
-- ① 集成方案:关联注册中心 + 绑定审批环节
|
||||
SET @sql = IF(
|
||||
(SELECT COUNT(*) FROM information_schema.COLUMNS WHERE TABLE_SCHEMA = @db AND TABLE_NAME = 'mes_xsl_integration_plan' AND COLUMN_NAME = 'registry_id') = 0,
|
||||
'ALTER TABLE `mes_xsl_integration_plan` ADD COLUMN `registry_id` varchar(32) DEFAULT NULL COMMENT ''审批注册中心ID'' AFTER `source_table`',
|
||||
'SELECT 1'
|
||||
);
|
||||
PREPARE stmt FROM @sql; EXECUTE stmt; DEALLOCATE PREPARE stmt;
|
||||
|
||||
SET @sql = IF(
|
||||
(SELECT COUNT(*) FROM information_schema.COLUMNS WHERE TABLE_SCHEMA = @db AND TABLE_NAME = 'mes_xsl_integration_plan' AND COLUMN_NAME = 'trigger_stage') = 0,
|
||||
'ALTER TABLE `mes_xsl_integration_plan` ADD COLUMN `trigger_stage` varchar(32) DEFAULT NULL COMMENT ''绑定审批环节 proofread/audit/approve'' AFTER `trigger_phase`',
|
||||
'SELECT 1'
|
||||
);
|
||||
PREPARE stmt FROM @sql; EXECUTE stmt; DEALLOCATE PREPARE stmt;
|
||||
|
||||
-- ② 回填已有方案的注册中心与环节(按 source_table 关联)
|
||||
UPDATE `mes_xsl_integration_plan` p
|
||||
INNER JOIN `mes_xsl_biz_doc_registry` r ON r.table_name = p.source_table AND r.del_flag = 0 AND r.enabled = 1
|
||||
SET p.registry_id = r.id,
|
||||
p.trigger_stage = CASE p.trigger_phase
|
||||
WHEN 'onApprove' THEN 'approve'
|
||||
WHEN 'onNodeApprove' THEN NULL
|
||||
ELSE NULL
|
||||
END,
|
||||
p.update_by = 'admin',
|
||||
p.update_time = NOW()
|
||||
WHERE p.del_flag = 0 AND (p.registry_id IS NULL OR p.trigger_stage IS NULL);
|
||||
@@ -0,0 +1,87 @@
|
||||
-- 【集成方案】审批注册中心环节同步动作 + 密炼PS无代码审批方案示例
|
||||
-- author: GHT date: 2026-06-05 for:【XSLMES-20260605-K8R2】
|
||||
SET NAMES utf8mb4;
|
||||
|
||||
-- ① 集成动作类型字典扩展
|
||||
INSERT IGNORE INTO `sys_dict_item` (`id`,`dict_id`,`item_text`,`item_value`,`description`,`sort_order`,`status`,`create_by`,`create_time`)
|
||||
VALUES
|
||||
('1995000000000000394','1995000000000000360','审批环节同步','REGISTRY_STAGE_SYNC','按审批注册中心更新源单状态/操作人/痕迹',6,1,'admin',NOW()),
|
||||
('1995000000000000395','1995000000000000360','审批环节回退','REGISTRY_STAGE_REVERT','驳回时回退源单状态并清空痕迹',7,1,'admin',NOW());
|
||||
|
||||
-- ② 停用旧版 SQL 手写演示方案(保留数据,改为已停用)
|
||||
UPDATE `mes_xsl_integration_plan`
|
||||
SET `status` = '2', `update_by` = 'admin', `update_time` = NOW()
|
||||
WHERE `plan_code` IN ('mixer_ps_on_approve','mixer_ps_on_reject','mixer_ps_node_approve')
|
||||
AND `del_flag` = 0;
|
||||
|
||||
-- ③ 密炼PS — 校对环节通过
|
||||
INSERT IGNORE INTO `mes_xsl_integration_plan`
|
||||
(`id`,`plan_code`,`plan_name`,`source_table`,`registry_id`,`trigger_phase`,`trigger_stage`,`exec_mode`,`status`,`remark`,`del_flag`,`tenant_id`,`create_by`,`create_time`)
|
||||
SELECT
|
||||
'mxpsregproofread00001','mixer_ps_reg_proofread','密炼PS-校对通过(注册中心同步)',
|
||||
'mes_xsl_mixer_ps_compile', r.id, 'onNodeApprove', 'proofread', 'async', '0',
|
||||
'无需Java回调:更新status=proofread并写校对人/时间+审批痕迹', 0, 0, 'admin', NOW()
|
||||
FROM `mes_xsl_biz_doc_registry` r
|
||||
WHERE r.table_name='mes_xsl_mixer_ps_compile' AND r.del_flag=0 AND r.enabled=1
|
||||
LIMIT 1;
|
||||
|
||||
INSERT IGNORE INTO `mes_xsl_integration_action`
|
||||
(`id`,`plan_id`,`action_name`,`action_type`,`action_config`,`exec_order`,`on_fail`,`enabled`,`del_flag`,`create_by`,`create_time`)
|
||||
VALUES
|
||||
('mxpsregproofreadact01','mxpsregproofread00001','校对环节同步','REGISTRY_STAGE_SYNC',
|
||||
'{"visualType":"REGISTRY_STAGE_SYNC","stage":"proofread","expectedFrom":"compile"}',
|
||||
1,'stop',1,0,'admin',NOW());
|
||||
|
||||
-- ④ 密炼PS — 审核环节通过
|
||||
INSERT IGNORE INTO `mes_xsl_integration_plan`
|
||||
(`id`,`plan_code`,`plan_name`,`source_table`,`registry_id`,`trigger_phase`,`trigger_stage`,`exec_mode`,`status`,`remark`,`del_flag`,`tenant_id`,`create_by`,`create_time`)
|
||||
SELECT
|
||||
'mxpsregaudit00000002','mixer_ps_reg_audit','密炼PS-审核通过(注册中心同步)',
|
||||
'mes_xsl_mixer_ps_compile', r.id, 'onNodeApprove', 'audit', 'async', '0',
|
||||
'无需Java回调:更新status=audit并写审核人/时间+审批痕迹', 0, 0, 'admin', NOW()
|
||||
FROM `mes_xsl_biz_doc_registry` r
|
||||
WHERE r.table_name='mes_xsl_mixer_ps_compile' AND r.del_flag=0 AND r.enabled=1
|
||||
LIMIT 1;
|
||||
|
||||
INSERT IGNORE INTO `mes_xsl_integration_action`
|
||||
(`id`,`plan_id`,`action_name`,`action_type`,`action_config`,`exec_order`,`on_fail`,`enabled`,`del_flag`,`create_by`,`create_time`)
|
||||
VALUES
|
||||
('mxpsregauditact00001','mxpsregaudit00000002','审核环节同步','REGISTRY_STAGE_SYNC',
|
||||
'{"visualType":"REGISTRY_STAGE_SYNC","stage":"audit","expectedFrom":"proofread"}',
|
||||
1,'stop',1,0,'admin',NOW());
|
||||
|
||||
-- ⑤ 密炼PS — 批准(全流程通过)
|
||||
INSERT IGNORE INTO `mes_xsl_integration_plan`
|
||||
(`id`,`plan_code`,`plan_name`,`source_table`,`registry_id`,`trigger_phase`,`trigger_stage`,`exec_mode`,`status`,`remark`,`del_flag`,`tenant_id`,`create_by`,`create_time`)
|
||||
SELECT
|
||||
'mxpsregapprove000003','mixer_ps_reg_approve','密炼PS-批准通过(注册中心同步)',
|
||||
'mes_xsl_mixer_ps_compile', r.id, 'onApprove', 'approve', 'async', '0',
|
||||
'无需Java回调:更新status=approve并写批准人/时间+审批痕迹', 0, 0, 'admin', NOW()
|
||||
FROM `mes_xsl_biz_doc_registry` r
|
||||
WHERE r.table_name='mes_xsl_mixer_ps_compile' AND r.del_flag=0 AND r.enabled=1
|
||||
LIMIT 1;
|
||||
|
||||
INSERT IGNORE INTO `mes_xsl_integration_action`
|
||||
(`id`,`plan_id`,`action_name`,`action_type`,`action_config`,`exec_order`,`on_fail`,`enabled`,`del_flag`,`create_by`,`create_time`)
|
||||
VALUES
|
||||
('mxpsregapproveact01','mxpsregapprove000003','批准环节同步','REGISTRY_STAGE_SYNC',
|
||||
'{"visualType":"REGISTRY_STAGE_SYNC","stage":"approve","expectedFrom":"audit"}',
|
||||
1,'stop',1,0,'admin',NOW());
|
||||
|
||||
-- ⑥ 密炼PS — 驳回回退编制
|
||||
INSERT IGNORE INTO `mes_xsl_integration_plan`
|
||||
(`id`,`plan_code`,`plan_name`,`source_table`,`registry_id`,`trigger_phase`,`trigger_stage`,`exec_mode`,`status`,`remark`,`del_flag`,`tenant_id`,`create_by`,`create_time`)
|
||||
SELECT
|
||||
'mxpsregreject000004','mixer_ps_reg_reject','密炼PS-驳回回退(注册中心同步)',
|
||||
'mes_xsl_mixer_ps_compile', r.id, 'onReject', NULL, 'async', '0',
|
||||
'无需Java回调:回退status=compile并清空环节痕迹', 0, 0, 'admin', NOW()
|
||||
FROM `mes_xsl_biz_doc_registry` r
|
||||
WHERE r.table_name='mes_xsl_mixer_ps_compile' AND r.del_flag=0 AND r.enabled=1
|
||||
LIMIT 1;
|
||||
|
||||
INSERT IGNORE INTO `mes_xsl_integration_action`
|
||||
(`id`,`plan_id`,`action_name`,`action_type`,`action_config`,`exec_order`,`on_fail`,`enabled`,`del_flag`,`create_by`,`create_time`)
|
||||
VALUES
|
||||
('mxpsregrejectact001','mxpsregreject000004','驳回回退编制','REGISTRY_STAGE_REVERT',
|
||||
'{"visualType":"REGISTRY_STAGE_REVERT","targetStage":"compile"}',
|
||||
1,'stop',1,0,'admin',NOW());
|
||||
Reference in New Issue
Block a user