| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198 |
- -- 易制毒购买证 / 运输证 / 计划产品行关联(P2)
- -- 执行前请确认库为 MySQL 5.7 utf8mb4
- CREATE TABLE IF NOT EXISTS `pl_purchase_cert` (
- `id` varchar(64) NOT NULL COMMENT '主键UUID',
- `cert_no` varchar(64) NOT NULL COMMENT '购买证编号',
- `issue_date` date DEFAULT NULL COMMENT '核发日期',
- `buyer_name` varchar(200) DEFAULT NULL COMMENT '购买单位或个人',
- `buyer_legal` varchar(100) DEFAULT NULL COMMENT '购买方法人',
- `buyer_tel` varchar(50) DEFAULT NULL COMMENT '购买方电话',
- `buyer_addr` varchar(500) DEFAULT NULL COMMENT '购买方住所',
- `seller_name` varchar(200) DEFAULT NULL COMMENT '销售单位',
- `seller_legal` varchar(100) DEFAULT NULL COMMENT '销售方法人',
- `seller_tel` varchar(50) DEFAULT NULL COMMENT '销售方电话',
- `seller_addr` varchar(500) DEFAULT NULL COMMENT '销售方住所',
- `product_name` varchar(200) NOT NULL COMMENT '购买物品/品名',
- `usage_desc` varchar(200) DEFAULT NULL COMMENT '用途',
- `total_qty` decimal(18,3) NOT NULL DEFAULT 0.000 COMMENT '购买证数量',
- `unit` varchar(20) NOT NULL DEFAULT '吨' COMMENT '单位',
- `valid_times` varchar(50) DEFAULT NULL COMMENT '有效次数(如多次有效)',
- `valid_from` date DEFAULT NULL COMMENT '有效开始',
- `valid_to` date DEFAULT NULL COMMENT '有效截止',
- `police_org` varchar(200) DEFAULT NULL COMMENT '公安机关',
- `handler_name` varchar(100) DEFAULT NULL COMMENT '经办人',
- `police_tel` varchar(50) DEFAULT NULL COMMENT '机关电话',
- `attachment_urls` varchar(2000) DEFAULT NULL COMMENT '附件URL,逗号分隔',
- `ocr_result_json` mediumtext NULL COMMENT 'DeepSeek识别结果JSON',
- `tenant_no` varchar(64) NOT NULL DEFAULT 'shanxia2.0',
- `order_num` int(11) DEFAULT NULL,
- `remark` varchar(512) DEFAULT NULL,
- `create_by` varchar(64) DEFAULT NULL,
- `create_dept_id` varchar(64) NOT NULL DEFAULT '',
- `create_time` datetime NOT NULL,
- `update_by` varchar(64) DEFAULT NULL,
- `update_time` datetime NOT NULL,
- `del_flag` smallint(6) NOT NULL DEFAULT 0,
- PRIMARY KEY (`id`),
- KEY `idx_ppc_tenant_no` (`tenant_no`,`cert_no`),
- KEY `idx_ppc_product` (`tenant_no`,`product_name`)
- ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='易制毒购买备案证明';
- CREATE TABLE IF NOT EXISTS `pl_transport_cert` (
- `id` varchar(64) NOT NULL,
- `purchase_cert_id` varchar(64) NOT NULL COMMENT '主挂购买证ID',
- `cert_no` varchar(64) NOT NULL COMMENT '运输证编号',
- `issue_date` date DEFAULT NULL,
- `owner_name` varchar(200) DEFAULT NULL COMMENT '货主',
- `owner_legal` varchar(100) DEFAULT NULL,
- `owner_tel` varchar(50) DEFAULT NULL,
- `owner_addr` varchar(500) DEFAULT NULL,
- `product_name` varchar(200) DEFAULT NULL COMMENT '品名',
- `pack_spec` varchar(100) DEFAULT NULL COMMENT '包装',
- `permit_cert_nos` varchar(500) DEFAULT NULL COMMENT '购买许可/备案/出口许可证号,逗号分隔',
- `carrier_name` varchar(200) DEFAULT NULL COMMENT '运输单位',
- `carrier_contact` varchar(200) DEFAULT NULL COMMENT '住所/电话',
- `transport_mode` varchar(50) DEFAULT NULL COMMENT '运输方式',
- `plate_nos` varchar(500) DEFAULT NULL COMMENT '车号(次),逗号或顿号分隔',
- `route_desc` varchar(1000) DEFAULT NULL COMMENT '运输路线',
- `consignee_name` varchar(200) DEFAULT NULL COMMENT '收货单位',
- `total_qty` decimal(18,3) NOT NULL DEFAULT 0.000 COMMENT '运输证数量',
- `unit` varchar(20) NOT NULL DEFAULT '吨',
- `valid_times` varchar(50) DEFAULT NULL,
- `valid_from` date DEFAULT NULL,
- `valid_to` date DEFAULT NULL,
- `applicant_unit` varchar(200) DEFAULT NULL,
- `police_org` varchar(200) DEFAULT NULL,
- `handler_name` varchar(100) DEFAULT NULL,
- `police_tel` varchar(50) DEFAULT NULL COMMENT '公安机关联系电话',
- `attachment_urls` varchar(2000) DEFAULT NULL,
- `ocr_result_json` mediumtext NULL COMMENT 'DeepSeek识别结果JSON',
- `tenant_no` varchar(64) NOT NULL DEFAULT 'shanxia2.0',
- `order_num` int(11) DEFAULT NULL,
- `remark` varchar(512) DEFAULT NULL,
- `create_by` varchar(64) DEFAULT NULL,
- `create_dept_id` varchar(64) NOT NULL DEFAULT '',
- `create_time` datetime NOT NULL,
- `update_by` varchar(64) DEFAULT NULL,
- `update_time` datetime NOT NULL,
- `del_flag` smallint(6) NOT NULL DEFAULT 0,
- PRIMARY KEY (`id`),
- KEY `idx_ptc_purchase` (`tenant_no`,`purchase_cert_id`),
- KEY `idx_ptc_cert_no` (`tenant_no`,`cert_no`)
- ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='易制毒运输备案证明';
- CREATE TABLE IF NOT EXISTS `pl_plan_product_cert_link` (
- `id` varchar(64) NOT NULL,
- `plan_id` varchar(64) NOT NULL,
- `plan_product_id` varchar(64) NOT NULL,
- `purchase_cert_id` varchar(64) NOT NULL,
- `transport_cert_id` varchar(64) NOT NULL,
- `link_status` varchar(20) NOT NULL DEFAULT 'linked' COMMENT 'linked-已关联 occupied-已占用(齐备) voided-已失效',
- `occupy_plan_qty` decimal(18,3) DEFAULT NULL COMMENT '齐备时按计划量占用',
- `occupy_actual_qty` decimal(18,3) DEFAULT NULL COMMENT '归档实际量(P4填写)',
- `tenant_no` varchar(64) NOT NULL DEFAULT 'shanxia2.0',
- `order_num` int(11) DEFAULT NULL,
- `remark` varchar(512) DEFAULT NULL,
- `create_by` varchar(64) DEFAULT NULL,
- `create_dept_id` varchar(64) NOT NULL DEFAULT '',
- `create_time` datetime NOT NULL,
- `update_by` varchar(64) DEFAULT NULL,
- `update_time` datetime NOT NULL,
- `del_flag` smallint(6) NOT NULL DEFAULT 0,
- PRIMARY KEY (`id`),
- KEY `idx_ppcl_plan` (`tenant_no`,`plan_id`),
- KEY `idx_ppcl_product` (`tenant_no`,`plan_product_id`),
- KEY `idx_ppcl_purchase` (`tenant_no`,`purchase_cert_id`,`link_status`),
- KEY `idx_ppcl_transport` (`tenant_no`,`transport_cert_id`,`link_status`)
- ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='运输计划易制毒产品行证书关联';
- -- ---------------------------------------------------------------------------
- -- 菜单:与「危化品证上传」同级挂在 PL_MENU_ROOT 下;按钮权限 edit / confirm
- -- 角色授权:复制已有 pl:plan-cert:upload 的角色
- -- ---------------------------------------------------------------------------
- -- 仅首次插入时后移后续菜单(幂等:已存在 PL_PURCHASE_CERT 则跳过)
- UPDATE `sys_menu` m
- SET m.`order_num` = m.`order_num` + 1,
- m.`update_by` = 'system',
- m.`update_time` = NOW()
- WHERE m.`parent_id` = 'PL_MENU_ROOT'
- AND m.`del_flag` = 0
- AND m.`order_num` >= 4
- AND m.`id` <> 'PL_PURCHASE_CERT'
- AND NOT EXISTS (
- SELECT 1 FROM (SELECT `id` FROM `sys_menu` WHERE `id` = 'PL_PURCHASE_CERT' AND `del_flag` = 0) t
- );
- 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_by`, `update_time`, `del_flag`
- ) VALUES
- (
- 'PL_PURCHASE_CERT', '购买证管理', 'PL_MENU_ROOT', 'C', 'purchase-cert',
- 'pl/purchase-cert/index', 'pl:purchase-cert:list',
- 1, '1', '1', 'shanxia2.0', 4, '易制毒购买证/运输证管理与待确认计划关联',
- 'system', '', NOW(), 'system', NOW(), 0
- ),
- (
- 'PL_PURCHASE_CERT_E', '录入编辑', 'PL_PURCHASE_CERT', 'F', '', '',
- 'pl:purchase-cert:edit',
- 1, '1', '1', 'shanxia2.0', 1, NULL,
- 'system', '', NOW(), 'system', NOW(), 0
- ),
- (
- 'PL_PURCHASE_CERT_C', '确认生效', 'PL_PURCHASE_CERT', 'F', '', '',
- 'pl:purchase-cert:confirm',
- 1, '1', '1', 'shanxia2.0', 2, NULL,
- 'system', '', NOW(), 'system', NOW(), 0
- )
- ON DUPLICATE KEY UPDATE
- `menu_name` = VALUES(`menu_name`),
- `parent_id` = VALUES(`parent_id`),
- `path` = VALUES(`path`),
- `component` = VALUES(`component`),
- `perms` = VALUES(`perms`),
- `order_num` = VALUES(`order_num`),
- `remark` = VALUES(`remark`),
- `update_by` = 'system',
- `update_time` = NOW(),
- `del_flag` = 0;
- -- 给已有「危化品证上传」按钮权限的角色同步授权(含祖先 PL_PURCHASE_CERT)
- -- id 用角色+菜单确定性拼接,避免 UUID() 主键碰撞
- INSERT INTO `sys_role_menu` (
- `id`, `role_id`, `menu_id`, `tenant_no`, `order_num`, `remark`,
- `create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag`
- )
- SELECT
- CONCAT('RM_PC_', LEFT(REPLACE(rm.role_id, '-', ''), 20), '_', m.suffix),
- rm.role_id,
- m.id,
- 'shanxia2.0',
- 0,
- NULL,
- 'system',
- '',
- NOW(),
- 'system',
- NOW(),
- 0
- FROM (
- SELECT DISTINCT `role_id`
- FROM `sys_role_menu`
- WHERE `del_flag` = 0
- AND `menu_id` IN ('PL_PLAN_CERT', 'PL_PLAN_CERT_U', 'PL_PLAN_CERT_R')
- ) rm
- CROSS JOIN (
- SELECT 'PL_PURCHASE_CERT' AS id, 'L' AS suffix
- UNION ALL SELECT 'PL_PURCHASE_CERT_E', 'E'
- UNION ALL SELECT 'PL_PURCHASE_CERT_C', 'C'
- ) m
- WHERE NOT EXISTS (
- SELECT 1 FROM `sys_role_menu` x
- WHERE x.`role_id` = rm.`role_id`
- AND x.`menu_id` = m.id
- AND x.`del_flag` = 0
- );
|