供应商管理数据同步, tms系统产品,服务渠道,产品渠道关系数据同步

This commit is contained in:
wuweihua
2026-10-12 10:28:06 +08:00
parent d08485d738
commit 2a9825c498
29 changed files with 1646 additions and 127 deletions
@@ -0,0 +1,125 @@
-- ============================================================
-- 老系统 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()');