-- ============================================================ -- 老系统 Oracle 渠道/产品 主数据镜像表 + 每日定时同步 -- 日期:2026-10-12 -- 数据源(WEISHI_USER,只读账号): -- TAB_SERVICE_CHANNEL 服务渠道(ID/CHANNEL_CODE 均唯一,381 行) -- TAB_LINE_PRODUCT 线路产品(ID/LINE_CODE 均唯一,527 行) -- TAB_PRODUCT_CHANNEL 产品-渠道关系(GUID 唯一;同产品+渠道可多行,按国家/重量区分,1554 行) -- 同步策略:按源主键 upsert(ON DUPLICATE KEY UPDATE),可重复执行;不删除源端已消失数据 -- ============================================================ -- 1. 服务渠道(TAB_SERVICE_CHANNEL 镜像) CREATE TABLE IF NOT EXISTS `srv_service_channel` ( `id` varchar(50) NOT NULL COMMENT '老系统渠道ID(源主键 TAB_SERVICE_CHANNEL.ID)', `channel_code` varchar(64) NOT NULL COMMENT '渠道编码', `channel_name` varchar(200) NOT NULL COMMENT '渠道名称', `service_code` varchar(32) DEFAULT NULL COMMENT '所属服务商编码(TAB_SERVICE_INFO.SERVICE_CODE)', `service_name` varchar(200) DEFAULT NULL COMMENT '所属服务商名称', `bl_open` char(1) DEFAULT NULL COMMENT '是否启用(1启用 0停用)', `bl_multiple` char(1) DEFAULT NULL COMMENT '是否支持多票(1是 0否)', `cargo_type` varchar(255) DEFAULT NULL COMMENT '货物类型', `pay_type` varchar(255) DEFAULT NULL COMMENT '付款方式', `shipper_name` varchar(255) DEFAULT NULL COMMENT '发货人名称', `shipper_id` varchar(255) DEFAULT NULL COMMENT '发货人ID', `query_type` varchar(20) DEFAULT NULL COMMENT '轨迹查询类型', `trajectory_code` varchar(60) DEFAULT NULL COMMENT '轨迹编码', `final_service_name` varchar(255) DEFAULT NULL COMMENT '末端服务商名称', `des_port` varchar(500) DEFAULT NULL COMMENT '目的港/目的地区域', `weight_type` char(1) DEFAULT NULL COMMENT '重量类型', `dim_divisor` int(11) DEFAULT NULL COMMENT '体积除数(抛货系数)', `weight_rule` varchar(500) DEFAULT NULL COMMENT '计重规则', `shipment_type` varchar(32) DEFAULT NULL COMMENT '发货类型', `data_from` varchar(60) DEFAULT NULL COMMENT '数据来源', `remarks` text DEFAULT NULL COMMENT '备注', `create_name` varchar(60) DEFAULT NULL COMMENT '源-创建人姓名', `create_man_code` varchar(40) DEFAULT NULL COMMENT '源-创建人工号', `create_date` datetime DEFAULT NULL COMMENT '源-创建时间', `modifier` varchar(60) DEFAULT NULL COMMENT '源-修改人姓名', `modifier_code` varchar(40) DEFAULT NULL COMMENT '源-修改人工号', `modify_date` datetime DEFAULT NULL COMMENT '源-修改时间', `gmt_create` datetime DEFAULT NULL COMMENT '源-GMT创建时间', `gmt_modified` datetime DEFAULT NULL COMMENT '源-GMT修改时间', `sync_time` datetime DEFAULT NULL COMMENT '最近一次同步时间', PRIMARY KEY (`id`), UNIQUE KEY `uk_channel_code` (`channel_code`), KEY `idx_service_code` (`service_code`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin COMMENT='服务渠道镜像表(Oracle TAB_SERVICE_CHANNEL)'; -- 2. 线路产品(TAB_LINE_PRODUCT 镜像) CREATE TABLE IF NOT EXISTS `srv_line_product` ( `id` varchar(50) NOT NULL COMMENT '老系统产品ID(源主键 TAB_LINE_PRODUCT.ID)', `line_code` varchar(64) NOT NULL COMMENT '产品编码(线路编码)', `line_name` varchar(200) NOT NULL COMMENT '产品名称(线路名称)', `product_type` varchar(20) DEFAULT NULL COMMENT '产品类型', `line_type` varchar(50) DEFAULT NULL COMMENT '线路类型(如 国际小包)', `bl_cargo` char(1) DEFAULT NULL COMMENT '是否可收货(1是 0否)', `cargo_name` varchar(100) DEFAULT NULL COMMENT '货物名称', `product_storage` text DEFAULT NULL COMMENT '仓储服务名称', `product_first` text DEFAULT NULL COMMENT '头程服务名称', `product_clearance` text DEFAULT NULL COMMENT '清关服务名称', `product_storage_code` varchar(1000) DEFAULT NULL COMMENT '仓储服务编码串', `product_first_code` varchar(1000) DEFAULT NULL COMMENT '头程服务编码串', `product_clearance_code` varchar(1000) DEFAULT NULL COMMENT '清关服务编码串', `bl_open` char(1) DEFAULT NULL COMMENT '是否启用(1启用 0停用)', `bl_section` char(1) DEFAULT NULL COMMENT '是否分段(1是 0否)', `disp_code` varchar(60) DEFAULT NULL COMMENT '派送商编码', `disp_name` varchar(100) DEFAULT NULL COMMENT '派送商名称', `fee_class` varchar(100) DEFAULT NULL COMMENT '费用类别', `shipper_id` varchar(64) DEFAULT NULL COMMENT '发货人ID', `shipment_rule` char(1) DEFAULT NULL COMMENT '发货规则', `weight` decimal(12,2) DEFAULT NULL COMMENT '限重(kg)', `cargo_type` varchar(64) DEFAULT NULL COMMENT '货物类型编码', `product_category` varchar(100) DEFAULT NULL COMMENT '产品分类', `volume_basis` decimal(12,2) DEFAULT NULL COMMENT '体积基数(抛货系数)', `weight_type` char(1) DEFAULT NULL COMMENT '重量类型', `service_type` char(1) DEFAULT NULL COMMENT '服务类型', `shipment_type` varchar(32) DEFAULT NULL COMMENT '发货类型', `tax_amount` decimal(12,3) DEFAULT NULL COMMENT '税费金额', `tax_currency` varchar(16) DEFAULT NULL COMMENT '税费币种', `battery_type` varchar(64) DEFAULT NULL COMMENT '电池类型', `remark` varchar(500) DEFAULT NULL COMMENT '备注', `create_name` varchar(60) DEFAULT NULL COMMENT '源-创建人姓名', `create_man_code` varchar(40) DEFAULT NULL COMMENT '源-创建人工号', `create_date` datetime DEFAULT NULL COMMENT '源-创建时间', `modifier` varchar(60) DEFAULT NULL COMMENT '源-修改人姓名', `modifier_code` varchar(40) DEFAULT NULL COMMENT '源-修改人工号', `modify_date` datetime DEFAULT NULL COMMENT '源-修改时间', `gmt_create` datetime DEFAULT NULL COMMENT '源-GMT创建时间', `gmt_modified` datetime DEFAULT NULL COMMENT '源-GMT修改时间', `sync_time` datetime DEFAULT NULL COMMENT '最近一次同步时间', PRIMARY KEY (`id`), UNIQUE KEY `uk_line_code` (`line_code`), KEY `idx_line_type` (`line_type`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin COMMENT='线路产品镜像表(Oracle TAB_LINE_PRODUCT)'; -- 3. 产品-渠道关系(TAB_PRODUCT_CHANNEL 镜像) -- 注意:(product_id, channel_code) 在源端不唯一(同产品同渠道按国家/重量区间多行),主键用源 GUID CREATE TABLE IF NOT EXISTS `srv_product_channel` ( `guid` varchar(64) NOT NULL COMMENT '老系统关系GUID(源主键 TAB_PRODUCT_CHANNEL.GUID)', `product_id` varchar(64) NOT NULL COMMENT '产品ID(srv_line_product.id)', `channel_code` varchar(64) NOT NULL COMMENT '渠道编码(srv_service_channel.channel_code)', `channel_name` varchar(200) NOT NULL COMMENT '渠道名称', `priority` int(11) NOT NULL COMMENT '优先级(数字越小越优先)', `is_enabled` char(1) NOT NULL COMMENT '是否启用(1启用 0停用)', `line_code` varchar(2000) DEFAULT NULL COMMENT '线路编码(源端可能为逗号串)', `line_name` varchar(2000) DEFAULT NULL COMMENT '线路名称(源端可能为逗号串)', `country_code` varchar(16) DEFAULT NULL COMMENT '国家编码', `start_weight` decimal(14,3) DEFAULT NULL COMMENT '起始重量(kg)', `end_weight` decimal(14,3) DEFAULT NULL COMMENT '截止重量(kg)', `order_count` int(11) DEFAULT NULL COMMENT '下单量', `order_count_ratio` decimal(12,2) DEFAULT NULL COMMENT '下单量占比', `sync_time` datetime DEFAULT NULL COMMENT '最近一次同步时间', PRIMARY KEY (`guid`), KEY `idx_product_id` (`product_id`), KEY `idx_channel_code` (`channel_code`), KEY `idx_enabled_priority` (`is_enabled`, `priority`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin COMMENT='产品-渠道关系镜像表(Oracle TAB_PRODUCT_CHANNEL)'; -- 4. 定时任务:每天 00:30 同步(供应商同步 00:00 之后),禁止并发,放弃错过执行 INSERT INTO sys_job (job_name, job_group, invoke_target, cron_expression, misfire_policy, concurrent, status, create_by, create_time, remark) SELECT '老系统渠道产品资料每日同步', 'DEFAULT', 'channelMasterSyncTask.syncFromOracle()', '0 30 0 * * ?', '3', '1', '0', 'admin', NOW(), '每天00:30从Oracle(WEISHI_USER,只读账号)全量同步TAB_SERVICE_CHANNEL/TAB_LINE_PRODUCT/TAB_PRODUCT_CHANNEL到srv_service_channel/srv_line_product/srv_product_channel;按源主键upsert,可重复执行' FROM DUAL WHERE NOT EXISTS (SELECT 1 FROM sys_job WHERE invoke_target = 'channelMasterSyncTask.syncFromOracle()');