20260802220544

This commit is contained in:
oneao committed 2026-08-02 22:05:44 +08:00
1 parent c00329b5a4
commit 4fc9040a8a
60 files changed
+6273 -908

No files matched your search

@@ -0,0 +1,24 @@
/* 为合作伙伴分类树增加多语言键。*/
SET NOCOUNT ON;
SET XACT_ABORT ON;
BEGIN TRANSACTION;
IF OBJECT_ID(N'dbo.b_othercompany_bmfl', N'U') IS NOT NULL
BEGIN
IF NOT EXISTS (
SELECT 1 FROM sys.columns
WHERE object_id = OBJECT_ID(N'dbo.b_othercompany_bmfl') AND name = 'b_i18n'
)
BEGIN
ALTER TABLE dbo.b_othercompany_bmfl
ADD b_i18n varchar(150) NULL;
END;
EXEC sys.sp_executesql N'
UPDATE dbo.b_othercompany_bmfl
SET b_i18n = ''category.base_othercompany.'' + CAST(b_id AS varchar(30))
WHERE b_i18n IS NULL OR b_i18n = '''''';
END;
COMMIT TRANSACTION;
@@ -0,0 +1,13 @@
/* 为编辑配置增加列宽字段,支持可编辑表格保存栏位设置。 */
SET NOCOUNT ON;
IF NOT EXISTS (
SELECT 1
FROM sys.columns
WHERE object_id = OBJECT_ID(N'dbo.s_module_field_edit')
AND name = N'b_width'
)
BEGIN
ALTER TABLE dbo.s_module_field_edit
ADD b_width int NULL;
END;
@@ -0,0 +1,63 @@
/* 为"其他数据"可编辑表格的行拖拽排序提供排序字段。
1) b_port / b_city / b_oceanline 补 b_xh 列(b_money 已有);
2) 按 b_code 顺序为 b_xh 为空的存量数据初始化排序值(幂等,不覆盖已有排序);
3) 对应数据模块默认排序改为 b_xh ASC,使拖拽后的顺序在刷新后保持。 */
SET NOCOUNT ON;
SET XACT_ABORT ON;
BEGIN TRANSACTION;
/* ================= 1. b_port ================= */
IF COL_LENGTH(N'dbo.b_port', N'b_xh') IS NULL
BEGIN
EXEC sys.sp_executesql N'ALTER TABLE dbo.b_port ADD b_xh int NULL;';
END;
EXEC sys.sp_executesql N'
WITH numbered AS (
SELECT b_id, b_xh, ROW_NUMBER() OVER (ORDER BY b_code ASC, b_id ASC) AS row_no
FROM dbo.b_port
WHERE b_xh IS NULL
)
UPDATE numbered SET b_xh = row_no * 10;';
/* ================= 2. b_city ================= */
IF COL_LENGTH(N'dbo.b_city', N'b_xh') IS NULL
BEGIN
EXEC sys.sp_executesql N'ALTER TABLE dbo.b_city ADD b_xh int NULL;';
END;
EXEC sys.sp_executesql N'
WITH numbered AS (
SELECT b_id, b_xh, ROW_NUMBER() OVER (ORDER BY b_code ASC, b_id ASC) AS row_no
FROM dbo.b_city
WHERE b_xh IS NULL
)
UPDATE numbered SET b_xh = row_no * 10;';
/* ================= 3. b_oceanline ================= */
IF COL_LENGTH(N'dbo.b_oceanline', N'b_xh') IS NULL
BEGIN
EXEC sys.sp_executesql N'ALTER TABLE dbo.b_oceanline ADD b_xh int NULL;';
END;
EXEC sys.sp_executesql N'
WITH numbered AS (
SELECT b_id, b_xh, ROW_NUMBER() OVER (ORDER BY b_code ASC, b_id ASC) AS row_no
FROM dbo.b_oceanline
WHERE b_xh IS NULL
)
UPDATE numbered SET b_xh = row_no * 10;';
/* ================= 4. 模块默认排序切到 b_xh =================
base_otherdata 页面下的所有数据模块统一按 b_xh 排序,
拖拽后的顺序在刷新后才会保持。 */
UPDATE m
SET m.b_orderfield = N'b_xh ASC'
FROM dbo.s_module m
INNER JOIN dbo.s_module p
ON p.b_id = m.b_parent_id
AND p.b_code = N'base_otherdata'
WHERE m.b_module_type = N'data';
COMMIT TRANSACTION;
@@ -0,0 +1,19 @@
/* 移除其他数据分类树的多语言列。此前通过 025 添加,现决定暂不做多语言。*/
SET NOCOUNT ON;
SET XACT_ABORT ON;
BEGIN TRANSACTION;
IF OBJECT_ID(N'dbo.b_other_bmfl', N'U') IS NOT NULL
BEGIN
IF EXISTS (
SELECT 1 FROM sys.columns
WHERE object_id = OBJECT_ID(N'dbo.b_other_bmfl') AND name = 'b_i18n'
)
BEGIN
ALTER TABLE dbo.b_other_bmfl
DROP COLUMN b_i18n;
END;
END;
COMMIT TRANSACTION;
@@ -0,0 +1,19 @@
/* 移除合作伙伴分类树的多语言列。此前通过 027 添加,现决定暂不做多语言。*/
SET NOCOUNT ON;
SET XACT_ABORT ON;
BEGIN TRANSACTION;
IF OBJECT_ID(N'dbo.b_othercompany_bmfl', N'U') IS NOT NULL
BEGIN
IF EXISTS (
SELECT 1 FROM sys.columns
WHERE object_id = OBJECT_ID(N'dbo.b_othercompany_bmfl') AND name = 'b_i18n'
)
BEGIN
ALTER TABLE dbo.b_othercompany_bmfl
DROP COLUMN b_i18n;
END;
END;
COMMIT TRANSACTION;
@@ -0,0 +1,384 @@
/* 032_rebuild_otherdata.sql — 重做"其他数据"子系统迁移
*
* 背景:此前用 OtherDataMigration 工具迁移产生错误结果——
* 1. 分类树被连跑 7 次产生重复分支;
* 2. 只有 b_port 一个数据模块,城市/币种/航线模块缺失;
* 3. b_port 真实数据未迁入(旧 b_id 含中文港口名,b_code 列 SQL_Latin1 排序规则存不下,
* 插入时中文转 '?' 触发 UQ_b_port_b_code 唯一索引冲突而整表回滚)。
*
* 本脚本(前置:026、030 已应用,b_other_bmfl 已无 b_level/b_path/b_i18n 列):
* 1. 清空并重建分类树(基础信息/财务信息/物流信息 + 4 个数据节点,模块编码沿用表名 b_*);
* 2. 移除 022 的 mock 占位数据;
* 3. b_port.b_code 排序规则改为 Chinese_PRC_CI_AS,迁入 193 条真实港口数据;
* 4. 补建 b_city / b_money / b_oceanline 数据模块(字段/列表/查询/编辑配置);
* 5. 回填 b_city / b_oceanline 迁移数据的 b_xh 排序值。
*
* 幂等:可重复执行。
*/
SET NOCOUNT ON;
SET XACT_ABORT ON;
BEGIN TRANSACTION;
/* =========================================================================
1. 清理错乱的分类树
========================================================================= */
DELETE FROM dbo.b_other_bmfl;
/* =========================================================================
2. 移除 022 mock 占位数据(按预留 ID 段精确删除)
========================================================================= */
DELETE FROM dbo.b_port WHERE b_id BETWEEN 920000000000110001 AND 920000000000110005;
DELETE FROM dbo.b_city WHERE b_id BETWEEN 920000000000110101 AND 920000000000110104;
DELETE FROM dbo.b_money WHERE b_id BETWEEN 920000000000110201 AND 920000000000110204;
DELETE FROM dbo.b_oceanline WHERE b_id BETWEEN 920000000000110301 AND 920000000000110304;
/* =========================================================================
3. b_port.b_code 排序规则改为 Chinese_PRC_CI_AS(容纳中文港口代码)
(需先删依赖该列的唯一索引,改完再重建)
========================================================================= */
IF EXISTS (
SELECT 1 FROM sys.columns
WHERE object_id = OBJECT_ID(N'dbo.b_port')
AND name = N'b_code'
AND collation_name <> N'Chinese_PRC_CI_AS'
)
BEGIN
IF EXISTS (
SELECT 1 FROM sys.key_constraints
WHERE parent_object_id = OBJECT_ID(N'dbo.b_port')
AND name = N'UQ_b_port_b_code'
)
ALTER TABLE dbo.b_port DROP CONSTRAINT [UQ_b_port_b_code];
ALTER TABLE dbo.b_port ALTER COLUMN b_code varchar(50) COLLATE Chinese_PRC_CI_AS NOT NULL;
IF NOT EXISTS (
SELECT 1 FROM sys.key_constraints
WHERE parent_object_id = OBJECT_ID(N'dbo.b_port')
AND name = N'UQ_b_port_b_code'
)
ALTER TABLE dbo.b_port ADD CONSTRAINT [UQ_b_port_b_code] UNIQUE NONCLUSTERED (b_code);
END;
GO
/* =========================================================================
4. 迁移 b_port 真实数据(193 行,含中文代码)
========================================================================= */
INSERT INTO dbo.b_port (
b_id, b_name_c, b_name_e, b_country, b_oceanline, b_edicode, b_bz, b_tz,
b_inputdatetime, b_code, b_xh
)
SELECT 920000000000110005 + ROW_NUMBER() OVER (ORDER BY LTRIM(RTRIM(old.b_id))),
old.b_name_c, old.b_name_e, old.b_country, old.b_oceanline, old.b_edicode,
old.b_bz, old.b_tz,
SYSDATETIME(),
LTRIM(RTRIM(old.b_id)),
ROW_NUMBER() OVER (ORDER BY LTRIM(RTRIM(old.b_id))) * 10
FROM G3HY2025.dbo.b_port old
WHERE NOT EXISTS (
SELECT 1 FROM dbo.b_port new WHERE new.b_code = LTRIM(RTRIM(old.b_id))
);
/* =========================================================================
5. 补建数据模块 b_city / b_money / b_oceanline
========================================================================= */
DECLARE @PageId bigint = 920000000000001100;
DECLARE @DataId bigint;
DECLARE @DataCode varchar(100);
/* ---- 5.1 b_city(城市) ---- */
SET @DataCode = 'b_city';
SET @DataId = 920000000000001102;
IF NOT EXISTS (SELECT 1 FROM dbo.s_module WHERE b_code = @DataCode)
BEGIN
INSERT INTO dbo.s_module (
b_id, b_code, b_parent_id, b_name, b_i18n, b_module_type, b_route,
b_viewtable, b_savetable, b_keyfield, b_orderfield, b_canmenu, b_canuse, b_xh
) VALUES (
@DataId, @DataCode, @PageId, N'城市', 'module.b_city', 'data', NULL,
'b_city', 'b_city', 'b_id', 'b_xh ASC', 0, 1, 20
);
END
DECLARE @CityFields TABLE (b_id bigint NOT NULL, b_field varchar(50) NOT NULL, b_name nvarchar(200) NOT NULL, b_type varchar(30) NOT NULL, b_xh int NOT NULL);
INSERT INTO @CityFields VALUES
(920000000000010201, 'b_id', N'系统编号', 'input', 10),
(920000000000010202, 'b_code', N'城市代码', 'input', 20),
(920000000000010203, 'b_name_c', N'中文名称', 'input', 30),
(920000000000010204, 'b_name_e', N'英文名称', 'input', 40),
(920000000000010205, 'b_country_name_c', N'国家(中)', 'input', 50),
(920000000000010206, 'b_country_name_e', N'国家(英)', 'input', 60),
(920000000000010207, 'b_bz', N'备注', 'input', 70);
INSERT INTO dbo.s_module_field (b_id, b_module_id, b_field, b_name, b_i18n, b_type, b_canuse)
SELECT source.b_id, @DataId, source.b_field, source.b_name,
'field.b_city.' + source.b_field, source.b_type, 1
FROM @CityFields source
WHERE NOT EXISTS (
SELECT 1 FROM dbo.s_module_field t WHERE t.b_id = source.b_id
);
DECLARE @CityList TABLE (b_id bigint NOT NULL, b_field varchar(50) NOT NULL, b_xh int NOT NULL, b_width int NOT NULL);
INSERT INTO @CityList VALUES
(920000000000020201, 'b_code', 10, 120),
(920000000000020202, 'b_name_c', 20, 150),
(920000000000020203, 'b_name_e', 30, 180),
(920000000000020204, 'b_country_name_c', 40, 140),
(920000000000020205, 'b_country_name_e', 50, 140);
INSERT INTO dbo.s_module_field_list (b_id, b_module_id, b_field_id, b_i18n, b_visible, b_xh, b_width)
SELECT source.b_id, @DataId, f.b_id, 'field.b_city.' + f.b_field, 1, source.b_xh, source.b_width
FROM @CityList source
JOIN dbo.s_module_field f ON f.b_module_id = @DataId AND f.b_field = source.b_field
WHERE NOT EXISTS (
SELECT 1 FROM dbo.s_module_field_list t WHERE t.b_id = source.b_id
);
DECLARE @CityQuery TABLE (b_id bigint NOT NULL, b_field varchar(50) NOT NULL, b_xh int NOT NULL);
INSERT INTO @CityQuery VALUES
(920000000000030201, 'b_code', 10),
(920000000000030202, 'b_name_c', 20);
INSERT INTO dbo.s_module_field_query (b_id, b_module_id, b_field_id, b_component, b_operator, b_default_value, b_xh, b_canuse)
SELECT source.b_id, @DataId, f.b_id, 'input', 'like', NULL, source.b_xh, 1
FROM @CityQuery source
JOIN dbo.s_module_field f ON f.b_module_id = @DataId AND f.b_field = source.b_field
WHERE NOT EXISTS (
SELECT 1 FROM dbo.s_module_field_query t WHERE t.b_id = source.b_id
);
DECLARE @CityEdit TABLE (b_id bigint NOT NULL, b_field varchar(50) NOT NULL, b_visible int NOT NULL, b_xh int NOT NULL);
INSERT INTO @CityEdit VALUES
(920000000000050201, 'b_id', 0, 10),
(920000000000050202, 'b_code', 1, 20),
(920000000000050203, 'b_name_c', 1, 30),
(920000000000050204, 'b_name_e', 1, 40),
(920000000000050205, 'b_country_name_c', 1, 50),
(920000000000050206, 'b_country_name_e', 1, 60),
(920000000000050207, 'b_bz', 1, 70);
INSERT INTO dbo.s_module_field_edit (b_id, b_module_id, b_field_id, b_required, b_readonly, b_disabled, b_xh, b_visible)
SELECT source.b_id, @DataId, f.b_id, 0, 0, 0, source.b_xh, source.b_visible
FROM @CityEdit source
JOIN dbo.s_module_field f ON f.b_module_id = @DataId AND f.b_field = source.b_field
WHERE NOT EXISTS (
SELECT 1 FROM dbo.s_module_field_edit t WHERE t.b_id = source.b_id
);
/* ---- 5.2 b_money(币种) ---- */
SET @DataCode = 'b_money';
SET @DataId = 920000000000001103;
IF NOT EXISTS (SELECT 1 FROM dbo.s_module WHERE b_code = @DataCode)
BEGIN
INSERT INTO dbo.s_module (
b_id, b_code, b_parent_id, b_name, b_i18n, b_module_type, b_route,
b_viewtable, b_savetable, b_keyfield, b_orderfield, b_canmenu, b_canuse, b_xh
) VALUES (
@DataId, @DataCode, @PageId, N'币种', 'module.b_money', 'data', NULL,
'b_money', 'b_money', 'b_id', 'b_xh ASC', 0, 1, 30
);
END
DECLARE @MoneyFields TABLE (b_id bigint NOT NULL, b_field varchar(50) NOT NULL, b_name nvarchar(200) NOT NULL, b_type varchar(30) NOT NULL, b_xh int NOT NULL);
INSERT INTO @MoneyFields VALUES
(920000000000010301, 'b_id', N'系统编号', 'input', 10),
(920000000000010302, 'b_code', N'币种代码', 'input', 20),
(920000000000010303, 'b_name', N'名称', 'input', 30),
(920000000000010304, 'b_edicode', N'EDI代码', 'input', 40),
(920000000000010305, 'b_symbol', N'符号', 'input', 50),
(920000000000010306, 'b_hl', N'汇率', 'number', 60),
(920000000000010307, 'b_isconvert', N'可兑换', 'checkbox', 70),
(920000000000010308, 'b_canuse', N'启用', 'checkbox', 80),
(920000000000010309, 'b_xh', N'排序', 'number', 90),
(920000000000010310, 'b_bz', N'备注', 'input', 100);
INSERT INTO dbo.s_module_field (b_id, b_module_id, b_field, b_name, b_i18n, b_type, b_canuse)
SELECT source.b_id, @DataId, source.b_field, source.b_name,
'field.b_money.' + source.b_field, source.b_type, 1
FROM @MoneyFields source
WHERE NOT EXISTS (
SELECT 1 FROM dbo.s_module_field t WHERE t.b_id = source.b_id
);
DECLARE @MoneyList TABLE (b_id bigint NOT NULL, b_field varchar(50) NOT NULL, b_xh int NOT NULL, b_width int NOT NULL);
INSERT INTO @MoneyList VALUES
(920000000000020301, 'b_code', 10, 120),
(920000000000020302, 'b_name', 20, 150),
(920000000000020303, 'b_edicode', 30, 120),
(920000000000020304, 'b_symbol', 40, 80),
(920000000000020305, 'b_hl', 50, 120),
(920000000000020306, 'b_canuse', 60, 80);
INSERT INTO dbo.s_module_field_list (b_id, b_module_id, b_field_id, b_i18n, b_visible, b_xh, b_width)
SELECT source.b_id, @DataId, f.b_id, 'field.b_money.' + f.b_field, 1, source.b_xh, source.b_width
FROM @MoneyList source
JOIN dbo.s_module_field f ON f.b_module_id = @DataId AND f.b_field = source.b_field
WHERE NOT EXISTS (
SELECT 1 FROM dbo.s_module_field_list t WHERE t.b_id = source.b_id
);
DECLARE @MoneyQuery TABLE (b_id bigint NOT NULL, b_field varchar(50) NOT NULL, b_xh int NOT NULL);
INSERT INTO @MoneyQuery VALUES
(920000000000030301, 'b_code', 10),
(920000000000030302, 'b_name', 20);
INSERT INTO dbo.s_module_field_query (b_id, b_module_id, b_field_id, b_component, b_operator, b_default_value, b_xh, b_canuse)
SELECT source.b_id, @DataId, f.b_id, 'input', 'like', NULL, source.b_xh, 1
FROM @MoneyQuery source
JOIN dbo.s_module_field f ON f.b_module_id = @DataId AND f.b_field = source.b_field
WHERE NOT EXISTS (
SELECT 1 FROM dbo.s_module_field_query t WHERE t.b_id = source.b_id
);
DECLARE @MoneyEdit TABLE (b_id bigint NOT NULL, b_field varchar(50) NOT NULL, b_visible int NOT NULL, b_xh int NOT NULL);
INSERT INTO @MoneyEdit VALUES
(920000000000050301, 'b_id', 0, 10),
(920000000000050302, 'b_code', 1, 20),
(920000000000050303, 'b_name', 1, 30),
(920000000000050304, 'b_edicode', 1, 40),
(920000000000050305, 'b_symbol', 1, 50),
(920000000000050306, 'b_hl', 1, 60),
(920000000000050307, 'b_isconvert', 1, 70),
(920000000000050308, 'b_canuse', 1, 80),
(920000000000050309, 'b_xh', 1, 90),
(920000000000050310, 'b_bz', 1, 100);
INSERT INTO dbo.s_module_field_edit (b_id, b_module_id, b_field_id, b_required, b_readonly, b_disabled, b_xh, b_visible)
SELECT source.b_id, @DataId, f.b_id, 0, 0, 0, source.b_xh, source.b_visible
FROM @MoneyEdit source
JOIN dbo.s_module_field f ON f.b_module_id = @DataId AND f.b_field = source.b_field
WHERE NOT EXISTS (
SELECT 1 FROM dbo.s_module_field_edit t WHERE t.b_id = source.b_id
);
/* ---- 5.3 b_oceanline(航线) ---- */
SET @DataCode = 'b_oceanline';
SET @DataId = 920000000000001104;
IF NOT EXISTS (SELECT 1 FROM dbo.s_module WHERE b_code = @DataCode)
BEGIN
INSERT INTO dbo.s_module (
b_id, b_code, b_parent_id, b_name, b_i18n, b_module_type, b_route,
b_viewtable, b_savetable, b_keyfield, b_orderfield, b_canmenu, b_canuse, b_xh
) VALUES (
@DataId, @DataCode, @PageId, N'航线', 'module.b_oceanline', 'data', NULL,
'b_oceanline', 'b_oceanline', 'b_id', 'b_xh ASC', 0, 1, 40
);
END
DECLARE @OceanFields TABLE (b_id bigint NOT NULL, b_field varchar(50) NOT NULL, b_name nvarchar(200) NOT NULL, b_type varchar(30) NOT NULL, b_xh int NOT NULL);
INSERT INTO @OceanFields VALUES
(920000000000010401, 'b_id', N'系统编号', 'input', 10),
(920000000000010402, 'b_code', N'航线代码', 'input', 20),
(920000000000010403, 'b_name', N'名称', 'input', 30),
(920000000000010404, 'b_edicode', N'EDI代码', 'input', 40),
(920000000000010405, 'b_bz', N'备注', 'input', 50);
INSERT INTO dbo.s_module_field (b_id, b_module_id, b_field, b_name, b_i18n, b_type, b_canuse)
SELECT source.b_id, @DataId, source.b_field, source.b_name,
'field.b_oceanline.' + source.b_field, source.b_type, 1
FROM @OceanFields source
WHERE NOT EXISTS (
SELECT 1 FROM dbo.s_module_field t WHERE t.b_id = source.b_id
);
DECLARE @OceanList TABLE (b_id bigint NOT NULL, b_field varchar(50) NOT NULL, b_xh int NOT NULL, b_width int NOT NULL);
INSERT INTO @OceanList VALUES
(920000000000020401, 'b_code', 10, 120),
(920000000000020402, 'b_name', 20, 180),
(920000000000020403, 'b_edicode', 30, 120);
INSERT INTO dbo.s_module_field_list (b_id, b_module_id, b_field_id, b_i18n, b_visible, b_xh, b_width)
SELECT source.b_id, @DataId, f.b_id, 'field.b_oceanline.' + f.b_field, 1, source.b_xh, source.b_width
FROM @OceanList source
JOIN dbo.s_module_field f ON f.b_module_id = @DataId AND f.b_field = source.b_field
WHERE NOT EXISTS (
SELECT 1 FROM dbo.s_module_field_list t WHERE t.b_id = source.b_id
);
DECLARE @OceanQuery TABLE (b_id bigint NOT NULL, b_field varchar(50) NOT NULL, b_xh int NOT NULL);
INSERT INTO @OceanQuery VALUES
(920000000000030401, 'b_code', 10),
(920000000000030402, 'b_name', 20);
INSERT INTO dbo.s_module_field_query (b_id, b_module_id, b_field_id, b_component, b_operator, b_default_value, b_xh, b_canuse)
SELECT source.b_id, @DataId, f.b_id, 'input', 'like', NULL, source.b_xh, 1
FROM @OceanQuery source
JOIN dbo.s_module_field f ON f.b_module_id = @DataId AND f.b_field = source.b_field
WHERE NOT EXISTS (
SELECT 1 FROM dbo.s_module_field_query t WHERE t.b_id = source.b_id
);
DECLARE @OceanEdit TABLE (b_id bigint NOT NULL, b_field varchar(50) NOT NULL, b_visible int NOT NULL, b_xh int NOT NULL);
INSERT INTO @OceanEdit VALUES
(920000000000050401, 'b_id', 0, 10),
(920000000000050402, 'b_code', 1, 20),
(920000000000050403, 'b_name', 1, 30),
(920000000000050404, 'b_edicode', 1, 40),
(920000000000050405, 'b_bz', 1, 50);
INSERT INTO dbo.s_module_field_edit (b_id, b_module_id, b_field_id, b_required, b_readonly, b_disabled, b_xh, b_visible)
SELECT source.b_id, @DataId, f.b_id, 0, 0, 0, source.b_xh, source.b_visible
FROM @OceanEdit source
JOIN dbo.s_module_field f ON f.b_module_id = @DataId AND f.b_field = source.b_field
WHERE NOT EXISTS (
SELECT 1 FROM dbo.s_module_field_edit t WHERE t.b_id = source.b_id
);
/* =========================================================================
6. 回填 b_city / b_oceanline 迁移数据的 b_xh(b_money 旧库自带 b_xh)
========================================================================= */
WITH numbered AS (
SELECT b_id, b_xh, ROW_NUMBER() OVER (ORDER BY b_code ASC, b_id ASC) AS row_no
FROM dbo.b_city WHERE b_xh IS NULL
)
UPDATE numbered SET b_xh = row_no * 10;
WITH numbered AS (
SELECT b_id, b_xh, ROW_NUMBER() OVER (ORDER BY b_code ASC, b_id ASC) AS row_no
FROM dbo.b_oceanline WHERE b_xh IS NULL
)
UPDATE numbered SET b_xh = row_no * 10;
/* =========================================================================
7. 重建分类树(引用设计:category 仅结构,module 引用 s_module.b_code)
========================================================================= */
DECLARE @CatBasic bigint = 930000000000000101;
DECLARE @CatFinance bigint = 930000000000000102;
DECLARE @CatLogistics bigint = 930000000000000103;
IF NOT EXISTS (SELECT 1 FROM dbo.b_other_bmfl WHERE b_id = @CatBasic)
INSERT INTO dbo.b_other_bmfl (b_id, b_parent_id, b_name, b_node_type, b_module_code, b_xh, b_canuse)
VALUES (@CatBasic, NULL, N'基础信息', 'category', NULL, 10, 1);
IF NOT EXISTS (SELECT 1 FROM dbo.b_other_bmfl WHERE b_id = @CatFinance)
INSERT INTO dbo.b_other_bmfl (b_id, b_parent_id, b_name, b_node_type, b_module_code, b_xh, b_canuse)
VALUES (@CatFinance, NULL, N'财务信息', 'category', NULL, 20, 1);
IF NOT EXISTS (SELECT 1 FROM dbo.b_other_bmfl WHERE b_id = @CatLogistics)
INSERT INTO dbo.b_other_bmfl (b_id, b_parent_id, b_name, b_node_type, b_module_code, b_xh, b_canuse)
VALUES (@CatLogistics, NULL, N'物流信息', 'category', NULL, 30, 1);
DECLARE @NodePort bigint = 930000000000000201;
DECLARE @NodeCity bigint = 930000000000000202;
DECLARE @NodeMoney bigint = 930000000000000203;
DECLARE @NodeOceanline bigint = 930000000000000204;
IF NOT EXISTS (SELECT 1 FROM dbo.b_other_bmfl WHERE b_id = @NodePort)
INSERT INTO dbo.b_other_bmfl (b_id, b_parent_id, b_name, b_node_type, b_module_code, b_xh, b_canuse)
VALUES (@NodePort, @CatBasic, N'港口', 'module', 'b_port', 10, 1);
IF NOT EXISTS (SELECT 1 FROM dbo.b_other_bmfl WHERE b_id = @NodeCity)
INSERT INTO dbo.b_other_bmfl (b_id, b_parent_id, b_name, b_node_type, b_module_code, b_xh, b_canuse)
VALUES (@NodeCity, @CatBasic, N'城市', 'module', 'b_city', 20, 1);
IF NOT EXISTS (SELECT 1 FROM dbo.b_other_bmfl WHERE b_id = @NodeMoney)
INSERT INTO dbo.b_other_bmfl (b_id, b_parent_id, b_name, b_node_type, b_module_code, b_xh, b_canuse)
VALUES (@NodeMoney, @CatFinance, N'币种', 'module', 'b_money', 10, 1);
IF NOT EXISTS (SELECT 1 FROM dbo.b_other_bmfl WHERE b_id = @NodeOceanline)
INSERT INTO dbo.b_other_bmfl (b_id, b_parent_id, b_name, b_node_type, b_module_code, b_xh, b_canuse)
VALUES (@NodeOceanline, @CatLogistics, N'航线', 'module', 'b_oceanline', 10, 1);
COMMIT TRANSACTION;