Files
shanxia2.0/docs/sql/migrations/2026-11-03-quota-cert-ready.sql
T
wuzilongandCursor 8e9536332a feat: 保存运输证件、报销付款和开发流程的当前实现。
补齐证书齐备、证件折算、移动用证和合同绑定,并带上报销批量发放、付款备注以及个人开发流程升级,便于继续讨论已安排计划的调整规则。

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-11-04 21:42:33 +08:00

80 lines
4.1 KiB
SQL

-- 证书齐备:易制毒外部装送段可人工放行,安排和归档不再校验、不扣购买证与运输证。
-- MySQL 5.7。可重复执行。只给已有「计划段次用证」菜单的角色补这个入口。
SET NAMES utf8mb4;
START TRANSACTION;
SET @schema_name = DATABASE();
SET @ready_exists = (
SELECT COUNT(*) FROM information_schema.COLUMNS
WHERE TABLE_SCHEMA = @schema_name AND TABLE_NAME = 'pl_plan' AND COLUMN_NAME = 'quota_cert_waived'
);
SET @ready_sql = IF(
@ready_exists = 0,
'ALTER TABLE pl_plan
ADD COLUMN quota_cert_waived tinyint NOT NULL DEFAULT 0 COMMENT ''证书齐备:1 时安排和归档不校验、不扣购买证与运输证额度'' AFTER hazard_cert_ready_time,
ADD COLUMN quota_cert_waived_by varchar(64) DEFAULT NULL COMMENT ''证书齐备确认人ID'' AFTER quota_cert_waived,
ADD COLUMN quota_cert_waived_by_name varchar(100) DEFAULT NULL COMMENT ''证书齐备确认人姓名'' AFTER quota_cert_waived_by,
ADD COLUMN quota_cert_waived_time datetime DEFAULT NULL COMMENT ''证书齐备确认时间'' AFTER quota_cert_waived_by_name',
'SELECT 1'
);
PREPARE ready_stmt FROM @ready_sql;
EXECUTE ready_stmt;
DEALLOCATE PREPARE ready_stmt;
INSERT INTO sys_menu (
id, menu_name, parent_id, menu_type, path, component, perms, is_frame, visible, status,
tenant_no, order_num, remark, create_by, create_dept_id, create_time, update_time, del_flag
)
SELECT 'PL_CERT_READY', '证书齐备', parent.id, 'C', 'cert-ready', 'pl/cert-ready/index',
'pl:plan-cert:list', 1, '1', '1', parent.tenant_no, plan_leaf.order_num + 1,
'待调整排序', 'system', '', NOW(), NOW(), 0
FROM sys_menu plan_leaf
JOIN sys_menu parent ON parent.id = plan_leaf.parent_id AND parent.tenant_no = plan_leaf.tenant_no
AND parent.del_flag = 0 AND parent.id = 'PL_MENU_ROOT' AND parent.path = '/pl'
JOIN sys_menu root ON root.id = parent.parent_id AND root.tenant_no = parent.tenant_no
AND root.del_flag = 0 AND root.parent_id = '0' AND root.path = '/web'
WHERE plan_leaf.tenant_no = 'shanxia2.0' AND plan_leaf.del_flag = 0 AND plan_leaf.menu_type = 'C'
AND plan_leaf.perms = 'pl:plan-cert:list' AND plan_leaf.path = 'plan-cert'
AND NOT EXISTS (
SELECT 1 FROM sys_menu existing
WHERE existing.id = 'PL_CERT_READY'
OR (existing.tenant_no = plan_leaf.tenant_no AND existing.del_flag = 0
AND existing.path = 'cert-ready' AND existing.parent_id = parent.id)
);
UPDATE sys_menu sibling
JOIN sys_menu created ON created.id = 'PL_CERT_READY' AND created.del_flag = 0
AND created.tenant_no = sibling.tenant_no AND created.parent_id = sibling.parent_id
AND created.remark = '待调整排序'
SET sibling.order_num = sibling.order_num + 1, sibling.update_time = NOW()
WHERE sibling.tenant_no = 'shanxia2.0' AND sibling.del_flag = 0
AND sibling.id <> 'PL_CERT_READY' AND sibling.order_num >= created.order_num;
UPDATE sys_menu
SET remark = '计划段次用证之后的证书齐备入口', update_time = NOW()
WHERE id = 'PL_CERT_READY' AND tenant_no = 'shanxia2.0' AND del_flag = 0 AND remark = '待调整排序';
INSERT INTO sys_role_menu (
id, role_id, menu_id, tenant_no, order_num, remark,
create_by, create_dept_id, create_time, update_time, del_flag
)
SELECT MD5(CONCAT(access_row.role_id, '|PL_CERT_READY|cert-ready|v1')),
access_row.role_id, created.id, access_row.tenant_no, 0,
'证书齐备:沿用计划段次用证授权',
'system', '', NOW(), NOW(), 0
FROM sys_role_menu access_row
JOIN sys_menu plan_leaf ON plan_leaf.id = access_row.menu_id AND plan_leaf.tenant_no = access_row.tenant_no
AND plan_leaf.del_flag = 0 AND plan_leaf.menu_type = 'C'
AND plan_leaf.perms = 'pl:plan-cert:list' AND plan_leaf.path = 'plan-cert'
JOIN sys_menu created ON created.id = 'PL_CERT_READY' AND created.tenant_no = plan_leaf.tenant_no
AND created.del_flag = 0
WHERE access_row.del_flag = 0 AND access_row.tenant_no = 'shanxia2.0'
AND NOT EXISTS (
SELECT 1 FROM sys_role_menu existing
WHERE existing.role_id = access_row.role_id AND existing.menu_id = created.id
AND existing.tenant_no = access_row.tenant_no AND existing.del_flag = 0
)
ON DUPLICATE KEY UPDATE del_flag = 0, update_time = NOW();
COMMIT;