1、调整导入运单

2、调整对账
This commit is contained in:
2026-09-09 15:39:21 +08:00
parent 63af35a333
commit 049a46227d
11 changed files with 236 additions and 16 deletions
@@ -68,6 +68,10 @@ CREATE TABLE IF NOT EXISTS `blade_formal_settlement_detail` (
`source_pre_settlement_detail_id` bigint(20) DEFAULT NULL, `source_detail_id` bigint(20) NOT NULL, `line_no` int(11) NOT NULL,
`document_no` varchar(100) DEFAULT NULL, `waybill_id` bigint(20) DEFAULT NULL, `waybill_no` varchar(100) DEFAULT NULL,
`vehicle_no` varchar(100) DEFAULT NULL, `departure_address` varchar(500) DEFAULT NULL, `arrival_address` varchar(500) DEFAULT NULL,
`departure_contact` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '发货联系人',
`departure_phone` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '发货联系方式',
`arrival_contact` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '收货联系人',
`arrival_phone` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '收货联系方式',
`actual_departure_time` datetime DEFAULT NULL, `actual_completion_time` datetime DEFAULT NULL, `transport_type` varchar(100) DEFAULT NULL,
`cargo_name` varchar(500) DEFAULT NULL, `cargo_type` varchar(500) DEFAULT NULL, `transport_quantity` decimal(18,6) DEFAULT NULL,
`quantity_unit` varchar(50) DEFAULT NULL, `mileage` decimal(18,2) DEFAULT NULL, `batch_no` varchar(100) DEFAULT NULL,
@@ -66,7 +66,11 @@ CREATE TABLE IF NOT EXISTS `blade_pre_settlement_detail` (
`waybill_no` varchar(100) COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '运单号',
`vehicle_no` varchar(100) COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '车号',
`departure_address` varchar(500) COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '发货地址',
`arrival_address` varchar(500) COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '货地址',
`arrival_address` varchar(500) COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '货地址',
`departure_contact` varchar(100) COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '发货联系人',
`departure_phone` varchar(50) COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '发货联系方式',
`arrival_contact` varchar(100) COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '收货联系人',
`arrival_phone` varchar(50) COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '收货联系方式',
`actual_departure_time` datetime DEFAULT NULL COMMENT '实际发货时间',
`actual_completion_time` datetime DEFAULT NULL COMMENT '实际完成时间',
`transport_type` varchar(100) COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '运输类型',
@@ -27,6 +27,12 @@ CREATE TABLE IF NOT EXISTS `blade_receivable_payable_detail` (
`waybill_id` bigint(20) DEFAULT NULL COMMENT '运单ID',
`waybill_no` varchar(100) DEFAULT NULL COMMENT '运单号',
`vehicle_no` varchar(100) DEFAULT NULL COMMENT '车号',
`departure_address` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '发货地址',
`arrival_address` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '收货地址',
`departure_contact` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '发货联系人',
`departure_phone` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '发货联系方式',
`arrival_contact` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '收货联系人',
`arrival_phone` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '收货联系方式',
`transport_type` varchar(100) DEFAULT NULL COMMENT '运输类型',
`cargo_name` varchar(100) DEFAULT NULL COMMENT '货物名称',
`cargo_type` varchar(100) DEFAULT NULL COMMENT '货物类型',
@@ -49,7 +55,7 @@ CREATE TABLE IF NOT EXISTS `blade_receivable_payable_detail` (
KEY `idx_receivable_payable_contract` (`contract_id`) USING BTREE,
KEY `idx_receivable_payable_waybill` (`waybill_id`) USING BTREE,
KEY `idx_receivable_payable_status` (`settlement_status`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='应收应付明细';
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='应收应付明细';
CREATE TABLE IF NOT EXISTS `blade_receivable_payable_cargo_fee` (
`id` bigint(20) NOT NULL COMMENT '主键',
@@ -0,0 +1,91 @@
-- 应收应付、预结算及正式结算明细补充收发货地址、联系人及联系方式。
-- MySQL 5.7+ 兼容,可重复执行。
DELIMITER $$
DROP PROCEDURE IF EXISTS `upgrade_settlement_detail_address_contact_20260909`$$
CREATE PROCEDURE `upgrade_settlement_detail_address_contact_20260909`()
BEGIN
DECLARE db_name varchar(128);
SET db_name = DATABASE();
IF NOT EXISTS (SELECT 1 FROM information_schema.columns WHERE table_schema = db_name AND table_name = 'blade_receivable_payable_detail' AND column_name = 'departure_address') THEN
ALTER TABLE `blade_receivable_payable_detail` ADD COLUMN `departure_address` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '发货地址' AFTER `vehicle_no`;
END IF;
IF NOT EXISTS (SELECT 1 FROM information_schema.columns WHERE table_schema = db_name AND table_name = 'blade_receivable_payable_detail' AND column_name = 'arrival_address') THEN
ALTER TABLE `blade_receivable_payable_detail` ADD COLUMN `arrival_address` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '收货地址' AFTER `departure_address`;
END IF;
IF NOT EXISTS (SELECT 1 FROM information_schema.columns WHERE table_schema = db_name AND table_name = 'blade_receivable_payable_detail' AND column_name = 'departure_contact') THEN
ALTER TABLE `blade_receivable_payable_detail` ADD COLUMN `departure_contact` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '发货联系人' AFTER `arrival_address`;
END IF;
IF NOT EXISTS (SELECT 1 FROM information_schema.columns WHERE table_schema = db_name AND table_name = 'blade_receivable_payable_detail' AND column_name = 'departure_phone') THEN
ALTER TABLE `blade_receivable_payable_detail` ADD COLUMN `departure_phone` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '发货联系方式' AFTER `departure_contact`;
END IF;
IF NOT EXISTS (SELECT 1 FROM information_schema.columns WHERE table_schema = db_name AND table_name = 'blade_receivable_payable_detail' AND column_name = 'arrival_contact') THEN
ALTER TABLE `blade_receivable_payable_detail` ADD COLUMN `arrival_contact` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '收货联系人' AFTER `departure_phone`;
END IF;
IF NOT EXISTS (SELECT 1 FROM information_schema.columns WHERE table_schema = db_name AND table_name = 'blade_receivable_payable_detail' AND column_name = 'arrival_phone') THEN
ALTER TABLE `blade_receivable_payable_detail` ADD COLUMN `arrival_phone` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '收货联系方式' AFTER `arrival_contact`;
END IF;
IF NOT EXISTS (SELECT 1 FROM information_schema.columns WHERE table_schema = db_name AND table_name = 'blade_pre_settlement_detail' AND column_name = 'departure_contact') THEN
ALTER TABLE `blade_pre_settlement_detail` ADD COLUMN `departure_contact` varchar(100) COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '发货联系人' AFTER `arrival_address`;
END IF;
IF NOT EXISTS (SELECT 1 FROM information_schema.columns WHERE table_schema = db_name AND table_name = 'blade_pre_settlement_detail' AND column_name = 'departure_phone') THEN
ALTER TABLE `blade_pre_settlement_detail` ADD COLUMN `departure_phone` varchar(50) COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '发货联系方式' AFTER `departure_contact`;
END IF;
IF NOT EXISTS (SELECT 1 FROM information_schema.columns WHERE table_schema = db_name AND table_name = 'blade_pre_settlement_detail' AND column_name = 'arrival_contact') THEN
ALTER TABLE `blade_pre_settlement_detail` ADD COLUMN `arrival_contact` varchar(100) COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '收货联系人' AFTER `departure_phone`;
END IF;
IF NOT EXISTS (SELECT 1 FROM information_schema.columns WHERE table_schema = db_name AND table_name = 'blade_pre_settlement_detail' AND column_name = 'arrival_phone') THEN
ALTER TABLE `blade_pre_settlement_detail` ADD COLUMN `arrival_phone` varchar(50) COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '收货联系方式' AFTER `arrival_contact`;
END IF;
IF NOT EXISTS (SELECT 1 FROM information_schema.columns WHERE table_schema = db_name AND table_name = 'blade_formal_settlement_detail' AND column_name = 'departure_contact') THEN
ALTER TABLE `blade_formal_settlement_detail` ADD COLUMN `departure_contact` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '发货联系人' AFTER `arrival_address`;
END IF;
IF NOT EXISTS (SELECT 1 FROM information_schema.columns WHERE table_schema = db_name AND table_name = 'blade_formal_settlement_detail' AND column_name = 'departure_phone') THEN
ALTER TABLE `blade_formal_settlement_detail` ADD COLUMN `departure_phone` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '发货联系方式' AFTER `departure_contact`;
END IF;
IF NOT EXISTS (SELECT 1 FROM information_schema.columns WHERE table_schema = db_name AND table_name = 'blade_formal_settlement_detail' AND column_name = 'arrival_contact') THEN
ALTER TABLE `blade_formal_settlement_detail` ADD COLUMN `arrival_contact` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '收货联系人' AFTER `departure_phone`;
END IF;
IF NOT EXISTS (SELECT 1 FROM information_schema.columns WHERE table_schema = db_name AND table_name = 'blade_formal_settlement_detail' AND column_name = 'arrival_phone') THEN
ALTER TABLE `blade_formal_settlement_detail` ADD COLUMN `arrival_phone` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '收货联系方式' AFTER `arrival_contact`;
END IF;
UPDATE `blade_receivable_payable_detail` source_detail
INNER JOIN `blade_waybill` waybill ON waybill.`id` = source_detail.`waybill_id` AND waybill.`is_deleted` = 0
SET source_detail.`departure_address` = COALESCE(NULLIF(source_detail.`departure_address`, ''), NULLIF(waybill.`departure_address`, ''), waybill.`departure_name`),
source_detail.`arrival_address` = COALESCE(NULLIF(source_detail.`arrival_address`, ''), NULLIF(waybill.`arrival_address`, ''), waybill.`arrival_name`),
source_detail.`departure_contact` = COALESCE(NULLIF(source_detail.`departure_contact`, ''), waybill.`departure_contact`),
source_detail.`departure_phone` = COALESCE(NULLIF(source_detail.`departure_phone`, ''), waybill.`departure_phone`),
source_detail.`arrival_contact` = COALESCE(NULLIF(source_detail.`arrival_contact`, ''), waybill.`arrival_contact`),
source_detail.`arrival_phone` = COALESCE(NULLIF(source_detail.`arrival_phone`, ''), waybill.`arrival_phone`)
WHERE source_detail.`is_deleted` = 0;
UPDATE `blade_pre_settlement_detail` target_detail
INNER JOIN `blade_receivable_payable_detail` source_detail ON source_detail.`id` = target_detail.`source_detail_id`
SET target_detail.`departure_address` = COALESCE(NULLIF(target_detail.`departure_address`, ''), source_detail.`departure_address`),
target_detail.`arrival_address` = COALESCE(NULLIF(target_detail.`arrival_address`, ''), source_detail.`arrival_address`),
target_detail.`departure_contact` = COALESCE(NULLIF(target_detail.`departure_contact`, ''), source_detail.`departure_contact`),
target_detail.`departure_phone` = COALESCE(NULLIF(target_detail.`departure_phone`, ''), source_detail.`departure_phone`),
target_detail.`arrival_contact` = COALESCE(NULLIF(target_detail.`arrival_contact`, ''), source_detail.`arrival_contact`),
target_detail.`arrival_phone` = COALESCE(NULLIF(target_detail.`arrival_phone`, ''), source_detail.`arrival_phone`)
WHERE target_detail.`is_deleted` = 0 AND source_detail.`is_deleted` = 0;
UPDATE `blade_formal_settlement_detail` target_detail
INNER JOIN `blade_receivable_payable_detail` source_detail ON source_detail.`id` = target_detail.`source_detail_id`
SET target_detail.`departure_address` = COALESCE(NULLIF(target_detail.`departure_address`, ''), source_detail.`departure_address`),
target_detail.`arrival_address` = COALESCE(NULLIF(target_detail.`arrival_address`, ''), source_detail.`arrival_address`),
target_detail.`departure_contact` = COALESCE(NULLIF(target_detail.`departure_contact`, ''), source_detail.`departure_contact`),
target_detail.`departure_phone` = COALESCE(NULLIF(target_detail.`departure_phone`, ''), source_detail.`departure_phone`),
target_detail.`arrival_contact` = COALESCE(NULLIF(target_detail.`arrival_contact`, ''), source_detail.`arrival_contact`),
target_detail.`arrival_phone` = COALESCE(NULLIF(target_detail.`arrival_phone`, ''), source_detail.`arrival_phone`)
WHERE target_detail.`is_deleted` = 0 AND source_detail.`is_deleted` = 0;
END$$
CALL `upgrade_settlement_detail_address_contact_20260909`()$$
DROP PROCEDURE `upgrade_settlement_detail_address_contact_20260909`$$
DELIMITER ;