126 lines
9.6 KiB
SQL
126 lines
9.6 KiB
SQL
-- ============================================================
|
||
-- 老系统 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()');
|