diff --git a/code/fms/FMS业务表设计.md b/code/fms/FMS业务表设计.md index f0290fe7..ff73ee5b 100644 --- a/code/fms/FMS业务表设计.md +++ b/code/fms/FMS业务表设计.md @@ -73,7 +73,7 @@ create table dbo.b_othercompany_partner_type ( b_updated_at datetime2 null ); -create table dbo.b_othercompany_bmfl ( +create table dbo.b_othercompany_category ( b_id varchar(150) not null primary key, b_parent_id varchar(150) null, b_depth int not null default 0, @@ -88,10 +88,10 @@ create table dbo.b_othercompany_bmfl ( b_updated_at datetime2 null ); -create index ix_b_othercompany_bmfl_parent - on dbo.b_othercompany_bmfl (b_parent_id, b_canuse, b_depth, b_xh, b_id); -create index ix_b_othercompany_bmfl_path - on dbo.b_othercompany_bmfl (b_path, b_canuse, b_id); +create index ix_b_othercompany_category_parent + on dbo.b_othercompany_category (b_parent_id, b_canuse, b_depth, b_xh, b_id); +create index ix_b_othercompany_category_path + on dbo.b_othercompany_category (b_path, b_canuse, b_id); -- 注:b_grade 由「其他数据」迁移重建为雪花主键(原为级别编码) create table dbo.b_grade ( diff --git a/code/fms/FMS新系统核心表结构设计.md b/code/fms/FMS新系统核心表结构设计.md index 2fb687c9..c62b32db 100644 --- a/code/fms/FMS新系统核心表结构设计.md +++ b/code/fms/FMS新系统核心表结构设计.md @@ -993,7 +993,7 @@ create table dbo.bf_files ( mx_fileext varchar(50) null, -- 扩展名(小写、不含点) mx_mapfilename nvarchar(500) null, -- 访问地址:本地为 {url-prefix}/{org}/{yyyy}/{MM}/{dd}/{uuid}.{ext},OSS 为完整 URL mx_moduleid varchar(50) null, -- 业务模块编码(s_module.b_id) - mx_cate_id varchar(50) null, -- 文件分类(bf_files_cateid.b_id) + mx_cate_id bigint null, -- 文件分类(bf_files_category.b_id,雪花主键) mx_xh int not null default 0, -- 排序号(保留;当前实现固定 0,列表按 subid 倒序) mx_sh tinyint not null default 0, -- 审核标识(保留;当前实现固定 0) mx_shuser_id varchar(50) null, -- 审核人(保留) @@ -1011,19 +1011,24 @@ create table dbo.bf_files ( create index ix_bf_files_host on dbo.bf_files (father, mx_moduleid, mx_cate_id, mx_xh, subid); --- 文件分类表 -create table dbo.bf_files_cateid ( - b_id varchar(50) not null primary key, -- 分类编码 - b_name nvarchar(50) null, -- 分类名称 - b_files_type varchar(50) null, -- 允许的扩展名(逗号分隔,空 = 不限;保留) +-- 文件分类表(按模块划分;b_module_id 为空表示跨模块通用分类) +create table dbo.bf_files_category ( + b_id bigint not null primary key, -- 主键(雪花,新增行由前端 nextIdApi 生成) + b_module_id varchar(50) null, -- 归属模块(s_module.b_id);NULL = 通用分类 + b_name nvarchar(50) not null, -- 分类名称 + b_i18n varchar(150) null, -- 多语言资源键(s_i18n.b_key) + b_files_type varchar(50) null, -- 允许的扩展名(逗号分隔,空 = 不限;预留) b_xh int not null default 0, -- 显示顺序 b_canuse tinyint not null default 1, -- 是否启用(0/1) b_bz nvarchar(200) null, -- 备注 - b_inputuser_id varchar(50) null, -- 创建人 - b_inputdatetime datetime2 null, -- 创建时间 - b_updateuser_id varchar(50) null, -- 最后修改人 - b_updatedatetime datetime2 null -- 最后修改时间 + b_created_by varchar(50) null, -- 创建人(用户账号) + b_created_at datetime2 null, -- 创建时间 + b_updated_by varchar(50) null, -- 最后修改人 + b_updated_at datetime2 null -- 最后修改时间 ); + +create index ix_bf_files_category_module + on dbo.bf_files_category (b_module_id, b_canuse, b_xh, b_id); ``` 要点: @@ -1032,6 +1037,8 @@ create table dbo.bf_files_cateid ( - **宿主关联**:`father` 存宿主业务主键(业务表 `b_id`,bigint 雪花),不建外键;删除业务数据时由业务层级联清理附件(先删存储、后删行)。 - **存储地址**:`mx_mapfilename` 即访问地址,前端预览 / 下载直接使用。本地模式写入 `{fms.file.local.url-prefix}/{orgId}/{yyyy}/{MM}/{dd}/{uuid}.{ext}`,物理文件落在 `{fms.file.local.storage-dir}` 下的同路径;OSS 模式写入 g3oss 返回的完整 URL。 - **保留字段**:`mx_sh*`(审核)、`mx_cut*`(缩略图)、`mx_orderid`、`mx_bz`、`mx_xh` 沿用旧库结构,当前实现未使用(写 0 / 空值),保留以兼容历史数据迁移。 +- **分类归属模块**:`bf_files_category.b_module_id` 指定分类所属模块,不填(NULL)为跨模块通用分类;分类树按当前模块过滤(`b_module_id IS NULL OR b_module_id = 当前模块`)。分类主键与 `bf_files.mx_cate_id` 类型保持一致(bigint 雪花)。 +- **风格**:分类表按新版字典表风格(应用层雪花主键、`b_created_*` 审计列、`b_canuse tinyint`);`bf_files` 的 `subid` / `father` / `mx_*` 列名已被前后端实现引用,保持现状。表名 `bf_*` 属于"明确的业务域前缀",符合第 1 节表名规范。 - **旧库遗留**:`bf_files_type`(模块文件类型 / 数量配置)在旧库存在,但新旧系统均未使用,不迁移。 存储配置(`application.yaml`): diff --git a/code/fms/fms-api/config/migrations/tools/VerifyBusinessMigration.java b/code/fms/fms-api/config/migrations/tools/VerifyBusinessMigration.java index 565eb37e..520c45a2 100644 --- a/code/fms/fms-api/config/migrations/tools/VerifyBusinessMigration.java +++ b/code/fms/fms-api/config/migrations/tools/VerifyBusinessMigration.java @@ -88,7 +88,7 @@ public final class VerifyBusinessMigration { } private static void verifyCoreTables(Connection connection) throws Exception { - for (String table : List.of("b_othercompany", "b_contact", "b_othercompany_bmfl")) { + for (String table : List.of("b_othercompany", "b_contact", "b_othercompany_category")) { if (!tableExists(connection, table)) { throw new IllegalStateException("Missing core business table: dbo." + table); } diff --git a/code/fms/fms-api/src/main/java/cn/g3soft/fmsapi/service/FileService.java b/code/fms/fms-api/src/main/java/cn/g3soft/fmsapi/service/FileService.java index 39c6f805..7c657118 100644 --- a/code/fms/fms-api/src/main/java/cn/g3soft/fmsapi/service/FileService.java +++ b/code/fms/fms-api/src/main/java/cn/g3soft/fmsapi/service/FileService.java @@ -140,7 +140,8 @@ public class FileService { ps.setString(6, mapfilename); // 字符串业务键:模块编码 / 分类编码 / 用户账号均按字符串存储 ps.setString(7, moduleId); - ps.setString(8, cateId); + // 分类主键为 bigint 雪花(bf_files_category.b_id),按数字写入 + ps.setObject(8, toLongOrNull(cateId)); ps.setString(9, userId); ps.executeUpdate(); } diff --git a/code/fms/fms-api/target/classes/cn/g3soft/fmsapi/FmsApiApplication.class b/code/fms/fms-api/target/classes/cn/g3soft/fmsapi/FmsApiApplication.class deleted file mode 100644 index 559592fc..00000000 Binary files a/code/fms/fms-api/target/classes/cn/g3soft/fmsapi/FmsApiApplication.class and /dev/null differ diff --git a/code/fms/fms-api/target/classes/cn/g3soft/fmsapi/config/AuthProperties.class b/code/fms/fms-api/target/classes/cn/g3soft/fmsapi/config/AuthProperties.class deleted file mode 100644 index 22cfa4af..00000000 Binary files a/code/fms/fms-api/target/classes/cn/g3soft/fmsapi/config/AuthProperties.class and /dev/null differ diff --git a/code/fms/fms-api/target/classes/cn/g3soft/fmsapi/config/FileStorageProperties$Local.class b/code/fms/fms-api/target/classes/cn/g3soft/fmsapi/config/FileStorageProperties$Local.class deleted file mode 100644 index 5ac35469..00000000 Binary files a/code/fms/fms-api/target/classes/cn/g3soft/fmsapi/config/FileStorageProperties$Local.class and /dev/null differ diff --git a/code/fms/fms-api/target/classes/cn/g3soft/fmsapi/config/FileStorageProperties$Oss.class b/code/fms/fms-api/target/classes/cn/g3soft/fmsapi/config/FileStorageProperties$Oss.class deleted file mode 100644 index aba3549e..00000000 Binary files a/code/fms/fms-api/target/classes/cn/g3soft/fmsapi/config/FileStorageProperties$Oss.class and /dev/null differ diff --git a/code/fms/fms-api/target/classes/cn/g3soft/fmsapi/config/FileStorageProperties.class b/code/fms/fms-api/target/classes/cn/g3soft/fmsapi/config/FileStorageProperties.class deleted file mode 100644 index 7ca39c05..00000000 Binary files a/code/fms/fms-api/target/classes/cn/g3soft/fmsapi/config/FileStorageProperties.class and /dev/null differ diff --git a/code/fms/fms-api/target/classes/cn/g3soft/fmsapi/config/JacksonConfig.class b/code/fms/fms-api/target/classes/cn/g3soft/fmsapi/config/JacksonConfig.class deleted file mode 100644 index 37408c3f..00000000 Binary files a/code/fms/fms-api/target/classes/cn/g3soft/fmsapi/config/JacksonConfig.class and /dev/null differ diff --git a/code/fms/fms-api/target/classes/cn/g3soft/fmsapi/config/JwtAuthFilter.class b/code/fms/fms-api/target/classes/cn/g3soft/fmsapi/config/JwtAuthFilter.class deleted file mode 100644 index 95fc0f2f..00000000 Binary files a/code/fms/fms-api/target/classes/cn/g3soft/fmsapi/config/JwtAuthFilter.class and /dev/null differ diff --git a/code/fms/fms-api/target/classes/cn/g3soft/fmsapi/controller/AuthController.class b/code/fms/fms-api/target/classes/cn/g3soft/fmsapi/controller/AuthController.class deleted file mode 100644 index 6c7b72f2..00000000 Binary files a/code/fms/fms-api/target/classes/cn/g3soft/fmsapi/controller/AuthController.class and /dev/null differ diff --git a/code/fms/fms-api/target/classes/cn/g3soft/fmsapi/controller/DataController.class b/code/fms/fms-api/target/classes/cn/g3soft/fmsapi/controller/DataController.class deleted file mode 100644 index 25c4e52f..00000000 Binary files a/code/fms/fms-api/target/classes/cn/g3soft/fmsapi/controller/DataController.class and /dev/null differ diff --git a/code/fms/fms-api/target/classes/cn/g3soft/fmsapi/controller/FileController.class b/code/fms/fms-api/target/classes/cn/g3soft/fmsapi/controller/FileController.class deleted file mode 100644 index cd9ccdb5..00000000 Binary files a/code/fms/fms-api/target/classes/cn/g3soft/fmsapi/controller/FileController.class and /dev/null differ diff --git a/code/fms/fms-api/target/classes/cn/g3soft/fmsapi/database/OrgContext.class b/code/fms/fms-api/target/classes/cn/g3soft/fmsapi/database/OrgContext.class deleted file mode 100644 index b441b83e..00000000 Binary files a/code/fms/fms-api/target/classes/cn/g3soft/fmsapi/database/OrgContext.class and /dev/null differ diff --git a/code/fms/fms-api/target/classes/cn/g3soft/fmsapi/database/OrgDataSourceFactory.class b/code/fms/fms-api/target/classes/cn/g3soft/fmsapi/database/OrgDataSourceFactory.class deleted file mode 100644 index 73a3db58..00000000 Binary files a/code/fms/fms-api/target/classes/cn/g3soft/fmsapi/database/OrgDataSourceFactory.class and /dev/null differ diff --git a/code/fms/fms-api/target/classes/cn/g3soft/fmsapi/database/OrgDataSourceManager$PoolEntry.class b/code/fms/fms-api/target/classes/cn/g3soft/fmsapi/database/OrgDataSourceManager$PoolEntry.class deleted file mode 100644 index c5e35b10..00000000 Binary files a/code/fms/fms-api/target/classes/cn/g3soft/fmsapi/database/OrgDataSourceManager$PoolEntry.class and /dev/null differ diff --git a/code/fms/fms-api/target/classes/cn/g3soft/fmsapi/database/OrgDataSourceManager.class b/code/fms/fms-api/target/classes/cn/g3soft/fmsapi/database/OrgDataSourceManager.class deleted file mode 100644 index 3c371400..00000000 Binary files a/code/fms/fms-api/target/classes/cn/g3soft/fmsapi/database/OrgDataSourceManager.class and /dev/null differ diff --git a/code/fms/fms-api/target/classes/cn/g3soft/fmsapi/database/OrgDatabaseConfig.class b/code/fms/fms-api/target/classes/cn/g3soft/fmsapi/database/OrgDatabaseConfig.class deleted file mode 100644 index 62e91cad..00000000 Binary files a/code/fms/fms-api/target/classes/cn/g3soft/fmsapi/database/OrgDatabaseConfig.class and /dev/null differ diff --git a/code/fms/fms-api/target/classes/cn/g3soft/fmsapi/database/OrgDatabaseConfigLoader.class b/code/fms/fms-api/target/classes/cn/g3soft/fmsapi/database/OrgDatabaseConfigLoader.class deleted file mode 100644 index 126443e6..00000000 Binary files a/code/fms/fms-api/target/classes/cn/g3soft/fmsapi/database/OrgDatabaseConfigLoader.class and /dev/null differ diff --git a/code/fms/fms-api/target/classes/cn/g3soft/fmsapi/database/OrgDatabaseConfigWatcher.class b/code/fms/fms-api/target/classes/cn/g3soft/fmsapi/database/OrgDatabaseConfigWatcher.class deleted file mode 100644 index cfe4f00c..00000000 Binary files a/code/fms/fms-api/target/classes/cn/g3soft/fmsapi/database/OrgDatabaseConfigWatcher.class and /dev/null differ diff --git a/code/fms/fms-api/target/classes/cn/g3soft/fmsapi/database/OrgDatabaseProperties$Pool.class b/code/fms/fms-api/target/classes/cn/g3soft/fmsapi/database/OrgDatabaseProperties$Pool.class deleted file mode 100644 index b5cb3e35..00000000 Binary files a/code/fms/fms-api/target/classes/cn/g3soft/fmsapi/database/OrgDatabaseProperties$Pool.class and /dev/null differ diff --git a/code/fms/fms-api/target/classes/cn/g3soft/fmsapi/database/OrgDatabaseProperties.class b/code/fms/fms-api/target/classes/cn/g3soft/fmsapi/database/OrgDatabaseProperties.class deleted file mode 100644 index 6123a420..00000000 Binary files a/code/fms/fms-api/target/classes/cn/g3soft/fmsapi/database/OrgDatabaseProperties.class and /dev/null differ diff --git a/code/fms/fms-api/target/classes/cn/g3soft/fmsapi/database/OrgRoutingDataSource.class b/code/fms/fms-api/target/classes/cn/g3soft/fmsapi/database/OrgRoutingDataSource.class deleted file mode 100644 index 78d12c4f..00000000 Binary files a/code/fms/fms-api/target/classes/cn/g3soft/fmsapi/database/OrgRoutingDataSource.class and /dev/null differ diff --git a/code/fms/fms-api/target/classes/cn/g3soft/fmsapi/exception/AuthenticationException.class b/code/fms/fms-api/target/classes/cn/g3soft/fmsapi/exception/AuthenticationException.class deleted file mode 100644 index e1560d86..00000000 Binary files a/code/fms/fms-api/target/classes/cn/g3soft/fmsapi/exception/AuthenticationException.class and /dev/null differ diff --git a/code/fms/fms-api/target/classes/cn/g3soft/fmsapi/exception/BusinessException.class b/code/fms/fms-api/target/classes/cn/g3soft/fmsapi/exception/BusinessException.class deleted file mode 100644 index 94af84fa..00000000 Binary files a/code/fms/fms-api/target/classes/cn/g3soft/fmsapi/exception/BusinessException.class and /dev/null differ diff --git a/code/fms/fms-api/target/classes/cn/g3soft/fmsapi/exception/GlobalExceptionHandler.class b/code/fms/fms-api/target/classes/cn/g3soft/fmsapi/exception/GlobalExceptionHandler.class deleted file mode 100644 index 0eea0492..00000000 Binary files a/code/fms/fms-api/target/classes/cn/g3soft/fmsapi/exception/GlobalExceptionHandler.class and /dev/null differ diff --git a/code/fms/fms-api/target/classes/cn/g3soft/fmsapi/exception/SaveObjectException.class b/code/fms/fms-api/target/classes/cn/g3soft/fmsapi/exception/SaveObjectException.class deleted file mode 100644 index e523a194..00000000 Binary files a/code/fms/fms-api/target/classes/cn/g3soft/fmsapi/exception/SaveObjectException.class and /dev/null differ diff --git a/code/fms/fms-api/target/classes/cn/g3soft/fmsapi/service/ActiveSessionRegistry$AccountKey.class b/code/fms/fms-api/target/classes/cn/g3soft/fmsapi/service/ActiveSessionRegistry$AccountKey.class deleted file mode 100644 index 6dbac1f8..00000000 Binary files a/code/fms/fms-api/target/classes/cn/g3soft/fmsapi/service/ActiveSessionRegistry$AccountKey.class and /dev/null differ diff --git a/code/fms/fms-api/target/classes/cn/g3soft/fmsapi/service/ActiveSessionRegistry.class b/code/fms/fms-api/target/classes/cn/g3soft/fmsapi/service/ActiveSessionRegistry.class deleted file mode 100644 index 322ba8eb..00000000 Binary files a/code/fms/fms-api/target/classes/cn/g3soft/fmsapi/service/ActiveSessionRegistry.class and /dev/null differ diff --git a/code/fms/fms-api/target/classes/cn/g3soft/fmsapi/service/AuthService.class b/code/fms/fms-api/target/classes/cn/g3soft/fmsapi/service/AuthService.class deleted file mode 100644 index 46d3a22b..00000000 Binary files a/code/fms/fms-api/target/classes/cn/g3soft/fmsapi/service/AuthService.class and /dev/null differ diff --git a/code/fms/fms-api/target/classes/cn/g3soft/fmsapi/service/DataSaveService$AutoCodeFormat.class b/code/fms/fms-api/target/classes/cn/g3soft/fmsapi/service/DataSaveService$AutoCodeFormat.class deleted file mode 100644 index db35bf62..00000000 Binary files a/code/fms/fms-api/target/classes/cn/g3soft/fmsapi/service/DataSaveService$AutoCodeFormat.class and /dev/null differ diff --git a/code/fms/fms-api/target/classes/cn/g3soft/fmsapi/service/DataSaveService$AutoCodeRule.class b/code/fms/fms-api/target/classes/cn/g3soft/fmsapi/service/DataSaveService$AutoCodeRule.class deleted file mode 100644 index 9b1b0238..00000000 Binary files a/code/fms/fms-api/target/classes/cn/g3soft/fmsapi/service/DataSaveService$AutoCodeRule.class and /dev/null differ diff --git a/code/fms/fms-api/target/classes/cn/g3soft/fmsapi/service/DataSaveService$CodeCandidate.class b/code/fms/fms-api/target/classes/cn/g3soft/fmsapi/service/DataSaveService$CodeCandidate.class deleted file mode 100644 index e8093600..00000000 Binary files a/code/fms/fms-api/target/classes/cn/g3soft/fmsapi/service/DataSaveService$CodeCandidate.class and /dev/null differ diff --git a/code/fms/fms-api/target/classes/cn/g3soft/fmsapi/service/DataSaveService.class b/code/fms/fms-api/target/classes/cn/g3soft/fmsapi/service/DataSaveService.class deleted file mode 100644 index 17968130..00000000 Binary files a/code/fms/fms-api/target/classes/cn/g3soft/fmsapi/service/DataSaveService.class and /dev/null differ diff --git a/code/fms/fms-api/target/classes/cn/g3soft/fmsapi/service/DataService.class b/code/fms/fms-api/target/classes/cn/g3soft/fmsapi/service/DataService.class deleted file mode 100644 index 28c8b8c9..00000000 Binary files a/code/fms/fms-api/target/classes/cn/g3soft/fmsapi/service/DataService.class and /dev/null differ diff --git a/code/fms/fms-api/target/classes/cn/g3soft/fmsapi/service/FileService.class b/code/fms/fms-api/target/classes/cn/g3soft/fmsapi/service/FileService.class deleted file mode 100644 index 56a57557..00000000 Binary files a/code/fms/fms-api/target/classes/cn/g3soft/fmsapi/service/FileService.class and /dev/null differ diff --git a/code/fms/fms-api/target/classes/cn/g3soft/fmsapi/service/LoginLogService.class b/code/fms/fms-api/target/classes/cn/g3soft/fmsapi/service/LoginLogService.class deleted file mode 100644 index 38e12466..00000000 Binary files a/code/fms/fms-api/target/classes/cn/g3soft/fmsapi/service/LoginLogService.class and /dev/null differ diff --git a/code/fms/fms-api/target/classes/cn/g3soft/fmsapi/utils/ApiResponse.class b/code/fms/fms-api/target/classes/cn/g3soft/fmsapi/utils/ApiResponse.class deleted file mode 100644 index f0537e84..00000000 Binary files a/code/fms/fms-api/target/classes/cn/g3soft/fmsapi/utils/ApiResponse.class and /dev/null differ diff --git a/code/fms/fms-api/target/classes/cn/g3soft/fmsapi/utils/ClientInfo.class b/code/fms/fms-api/target/classes/cn/g3soft/fmsapi/utils/ClientInfo.class deleted file mode 100644 index 0ad5d9dd..00000000 Binary files a/code/fms/fms-api/target/classes/cn/g3soft/fmsapi/utils/ClientInfo.class and /dev/null differ diff --git a/code/fms/fms-api/target/classes/cn/g3soft/fmsapi/utils/ClientInfoExtractor.class b/code/fms/fms-api/target/classes/cn/g3soft/fmsapi/utils/ClientInfoExtractor.class deleted file mode 100644 index fc329abc..00000000 Binary files a/code/fms/fms-api/target/classes/cn/g3soft/fmsapi/utils/ClientInfoExtractor.class and /dev/null differ diff --git a/code/fms/fms-api/target/classes/cn/g3soft/fmsapi/utils/DbUtils$ColumnMetadata.class b/code/fms/fms-api/target/classes/cn/g3soft/fmsapi/utils/DbUtils$ColumnMetadata.class deleted file mode 100644 index e064289b..00000000 Binary files a/code/fms/fms-api/target/classes/cn/g3soft/fmsapi/utils/DbUtils$ColumnMetadata.class and /dev/null differ diff --git a/code/fms/fms-api/target/classes/cn/g3soft/fmsapi/utils/DbUtils$PageResult.class b/code/fms/fms-api/target/classes/cn/g3soft/fmsapi/utils/DbUtils$PageResult.class deleted file mode 100644 index d178f86c..00000000 Binary files a/code/fms/fms-api/target/classes/cn/g3soft/fmsapi/utils/DbUtils$PageResult.class and /dev/null differ diff --git a/code/fms/fms-api/target/classes/cn/g3soft/fmsapi/utils/DbUtils$TableMetadata.class b/code/fms/fms-api/target/classes/cn/g3soft/fmsapi/utils/DbUtils$TableMetadata.class deleted file mode 100644 index 02f56571..00000000 Binary files a/code/fms/fms-api/target/classes/cn/g3soft/fmsapi/utils/DbUtils$TableMetadata.class and /dev/null differ diff --git a/code/fms/fms-api/target/classes/cn/g3soft/fmsapi/utils/DbUtils.class b/code/fms/fms-api/target/classes/cn/g3soft/fmsapi/utils/DbUtils.class deleted file mode 100644 index e085f3dc..00000000 Binary files a/code/fms/fms-api/target/classes/cn/g3soft/fmsapi/utils/DbUtils.class and /dev/null differ diff --git a/code/fms/fms-api/target/classes/cn/g3soft/fmsapi/utils/IpRegionSearcher.class b/code/fms/fms-api/target/classes/cn/g3soft/fmsapi/utils/IpRegionSearcher.class deleted file mode 100644 index 23cd6142..00000000 Binary files a/code/fms/fms-api/target/classes/cn/g3soft/fmsapi/utils/IpRegionSearcher.class and /dev/null differ diff --git a/code/fms/fms-api/target/classes/cn/g3soft/fmsapi/utils/IpUtils.class b/code/fms/fms-api/target/classes/cn/g3soft/fmsapi/utils/IpUtils.class deleted file mode 100644 index f20a9e5e..00000000 Binary files a/code/fms/fms-api/target/classes/cn/g3soft/fmsapi/utils/IpUtils.class and /dev/null differ diff --git a/code/fms/fms-api/target/classes/cn/g3soft/fmsapi/utils/JwtUtils$TokenClaims.class b/code/fms/fms-api/target/classes/cn/g3soft/fmsapi/utils/JwtUtils$TokenClaims.class deleted file mode 100644 index e8ad6365..00000000 Binary files a/code/fms/fms-api/target/classes/cn/g3soft/fmsapi/utils/JwtUtils$TokenClaims.class and /dev/null differ diff --git a/code/fms/fms-api/target/classes/cn/g3soft/fmsapi/utils/JwtUtils.class b/code/fms/fms-api/target/classes/cn/g3soft/fmsapi/utils/JwtUtils.class deleted file mode 100644 index 6b2812aa..00000000 Binary files a/code/fms/fms-api/target/classes/cn/g3soft/fmsapi/utils/JwtUtils.class and /dev/null differ diff --git a/code/fms/fms-api/target/classes/cn/g3soft/fmsapi/utils/ParamUtils.class b/code/fms/fms-api/target/classes/cn/g3soft/fmsapi/utils/ParamUtils.class deleted file mode 100644 index 12d7c118..00000000 Binary files a/code/fms/fms-api/target/classes/cn/g3soft/fmsapi/utils/ParamUtils.class and /dev/null differ diff --git a/code/fms/fms-api/target/classes/cn/g3soft/fmsapi/utils/StringUtils.class b/code/fms/fms-api/target/classes/cn/g3soft/fmsapi/utils/StringUtils.class deleted file mode 100644 index b485b135..00000000 Binary files a/code/fms/fms-api/target/classes/cn/g3soft/fmsapi/utils/StringUtils.class and /dev/null differ diff --git a/code/fms/fms-api/target/classes/cn/g3soft/fmsapi/utils/UuidV7Generator.class b/code/fms/fms-api/target/classes/cn/g3soft/fmsapi/utils/UuidV7Generator.class deleted file mode 100644 index aeec4597..00000000 Binary files a/code/fms/fms-api/target/classes/cn/g3soft/fmsapi/utils/UuidV7Generator.class and /dev/null differ diff --git a/code/fms/fms-api/target/classes/cn/g3soft/fmsapi/utils/snowflake/contract/IIdGenerator.class b/code/fms/fms-api/target/classes/cn/g3soft/fmsapi/utils/snowflake/contract/IIdGenerator.class deleted file mode 100644 index 2ea9b922..00000000 Binary files a/code/fms/fms-api/target/classes/cn/g3soft/fmsapi/utils/snowflake/contract/IIdGenerator.class and /dev/null differ diff --git a/code/fms/fms-api/target/classes/cn/g3soft/fmsapi/utils/snowflake/contract/ISnowWorker.class b/code/fms/fms-api/target/classes/cn/g3soft/fmsapi/utils/snowflake/contract/ISnowWorker.class deleted file mode 100644 index 9a5ea458..00000000 Binary files a/code/fms/fms-api/target/classes/cn/g3soft/fmsapi/utils/snowflake/contract/ISnowWorker.class and /dev/null differ diff --git a/code/fms/fms-api/target/classes/cn/g3soft/fmsapi/utils/snowflake/contract/IdGeneratorException.class b/code/fms/fms-api/target/classes/cn/g3soft/fmsapi/utils/snowflake/contract/IdGeneratorException.class deleted file mode 100644 index 39db6908..00000000 Binary files a/code/fms/fms-api/target/classes/cn/g3soft/fmsapi/utils/snowflake/contract/IdGeneratorException.class and /dev/null differ diff --git a/code/fms/fms-api/target/classes/cn/g3soft/fmsapi/utils/snowflake/contract/IdGeneratorOptions.class b/code/fms/fms-api/target/classes/cn/g3soft/fmsapi/utils/snowflake/contract/IdGeneratorOptions.class deleted file mode 100644 index f67aad8a..00000000 Binary files a/code/fms/fms-api/target/classes/cn/g3soft/fmsapi/utils/snowflake/contract/IdGeneratorOptions.class and /dev/null differ diff --git a/code/fms/fms-api/target/classes/cn/g3soft/fmsapi/utils/snowflake/contract/OverCostActionArg.class b/code/fms/fms-api/target/classes/cn/g3soft/fmsapi/utils/snowflake/contract/OverCostActionArg.class deleted file mode 100644 index c6f83b73..00000000 Binary files a/code/fms/fms-api/target/classes/cn/g3soft/fmsapi/utils/snowflake/contract/OverCostActionArg.class and /dev/null differ diff --git a/code/fms/fms-api/target/classes/cn/g3soft/fmsapi/utils/snowflake/core/SnowWorkerM1.class b/code/fms/fms-api/target/classes/cn/g3soft/fmsapi/utils/snowflake/core/SnowWorkerM1.class deleted file mode 100644 index 06a6e877..00000000 Binary files a/code/fms/fms-api/target/classes/cn/g3soft/fmsapi/utils/snowflake/core/SnowWorkerM1.class and /dev/null differ diff --git a/code/fms/fms-api/target/classes/cn/g3soft/fmsapi/utils/snowflake/core/SnowWorkerM2.class b/code/fms/fms-api/target/classes/cn/g3soft/fmsapi/utils/snowflake/core/SnowWorkerM2.class deleted file mode 100644 index 0d4a11dc..00000000 Binary files a/code/fms/fms-api/target/classes/cn/g3soft/fmsapi/utils/snowflake/core/SnowWorkerM2.class and /dev/null differ diff --git a/code/fms/fms-api/target/classes/cn/g3soft/fmsapi/utils/snowflake/idgen/DefaultIdGenerator.class b/code/fms/fms-api/target/classes/cn/g3soft/fmsapi/utils/snowflake/idgen/DefaultIdGenerator.class deleted file mode 100644 index 3679d9f8..00000000 Binary files a/code/fms/fms-api/target/classes/cn/g3soft/fmsapi/utils/snowflake/idgen/DefaultIdGenerator.class and /dev/null differ diff --git a/code/fms/fms-api/target/classes/cn/g3soft/fmsapi/utils/snowflake/idgen/IdGenerator.class b/code/fms/fms-api/target/classes/cn/g3soft/fmsapi/utils/snowflake/idgen/IdGenerator.class deleted file mode 100644 index a289499c..00000000 Binary files a/code/fms/fms-api/target/classes/cn/g3soft/fmsapi/utils/snowflake/idgen/IdGenerator.class and /dev/null differ diff --git a/code/fms/fms-api/tools/migration/rename-impact-out.txt b/code/fms/fms-api/tools/migration/rename-impact-out.txt new file mode 100644 index 00000000..38409375 --- /dev/null +++ b/code/fms/fms-api/tools/migration/rename-impact-out.txt @@ -0,0 +1,29 @@ +=== 1. 视图 / 过程 / 函数中引用 b_othercompany_bmfl 的对象 === +name | type_desc +(共 0 行) + +=== 2. s_module 模块配置中的表名引用 === +b_id | b_module_type | b_view_table | b_save_table +(共 0 行) + +=== 3. v_b_othercompany 定义(确认是否 join 分类表) === +definition +create view dbo.v_b_othercompany as +select o.b_id, o.b_ywid, o.b_pycode, o.b_type, o.b_name, o.b_shortname, + o.b_linkman, o.b_phone, o.b_addr, o.b_firstlinkdate, + o.b_htno, o.b_htdate, o.b_htexpiredate, o.b_black, o.b_canuse, + o.b_zl, o.b_tel, o.b_fax, o.b_www, o.b_email, + o.b_bankacount, o.b_invaccount, o.b_cate_id, + o.b_bz1, o.b_bz2, o.b_bz3, o.b_bz4, + o.b_province, o.b_city, o.b_area, o.b_country, + o.b_edicode, o.b_showcolor, o.b_type_id, o.b_from_id, + o.b_type1_id, o.b_type2_id, o.b_type3_id, o.b_type4_id, o.b_type5_id, + o.b_owner_id, ...(截断) +(共 1 行) + +=== 4. 表与索引现状 === +index_name | type_desc +PK__b_otherc__4E29C30D79EECCD3 | CLUSTERED +ix_b_othercompany_bmfl_parent | NONCLUSTERED +ix_b_othercompany_bmfl_path | NONCLUSTERED +(共 3 行) diff --git a/code/fms/fms-vue/src/components/fms-file/composables/useFileCategory.js b/code/fms/fms-vue/src/components/fms-file/composables/useFileCategory.js index a8232e7a..c35e49a9 100644 --- a/code/fms/fms-vue/src/components/fms-file/composables/useFileCategory.js +++ b/code/fms/fms-vue/src/components/fms-file/composables/useFileCategory.js @@ -2,7 +2,7 @@ import { ref } from 'vue' import { loadDataApi } from '@/services/api' /** - * 文件分类逻辑 —— 加载 bf_files_cateid 扁平表,供 FmsTree 展示(分类为平铺列表,无层级)。 + * 文件分类逻辑 —— 加载 bf_files_category 扁平表,供 FmsTree 展示(分类为平铺列表,无层级)。 * 「全部分类」虚拟根由 FmsTree 的 showRoot 注入,本组合式函数只负责取数与选中状态。 */ export function useFileCategory() { @@ -16,11 +16,7 @@ export function useFileCategory() { loading.value = true error.value = null try { - const res = await loadDataApi( - 'bf_files_cateid', - 'b_canuse = 1', - 'b_xh ASC, b_id ASC', - ) + const res = await loadDataApi('bf_files_category', 'b_canuse = 1', 'b_xh ASC, b_id ASC') categories.value = res.data || [] } catch (e) { error.value = e?.message || String(e) diff --git a/code/fms/fms-vue/src/views/base/othercompany/index.vue b/code/fms/fms-vue/src/views/base/othercompany/index.vue index 97971e2f..47731883 100644 --- a/code/fms/fms-vue/src/views/base/othercompany/index.vue +++ b/code/fms/fms-vue/src/views/base/othercompany/index.vue @@ -2,7 +2,7 @@ /** * 往来单位(合作伙伴)—— 左侧分类树 + 右侧模块列表。 * - * 左树是 b_othercompany_bmfl(b_parent_id 是权威关系,b_depth / b_path 为派生字段), + * 左树是 b_othercompany_category(b_parent_id 是权威关系,b_depth / b_path 为派生字段), * 右表由 FmsModuleListPage 按模块 v_b_othercompany 的配置驱动。页面负责三件事: * 选中分类 → 固定查询条件(含全部下级)、b_cate_id 列显示分类名称、分类树的维护 * (新增 / 修改 / 删除 / 刷新 / 拖拽调层级与顺序)。 @@ -30,7 +30,7 @@ import { usePermissionStore } from '@/stores/permissions' import { buildTree, collectAllKeys, filterTreeByText, findTreeNode, sortTree } from '@/utils/tree' const MODULE_CODE = 'v_b_othercompany' // 右侧列表模块 -const CATEGORY_TABLE = 'b_othercompany_bmfl' // 左侧分类树表 +const CATEGORY_TABLE = 'b_othercompany_category' // 左侧分类树表 /** 必须与 FmsTree 的 rootKey 默认值一致 */ const ALL_CATEGORY_KEY = '__fms_tree_root__' diff --git a/code/fms/fms-vue/tests/views/othercompany.spec.js b/code/fms/fms-vue/tests/views/othercompany.spec.js index b1282c31..787560f3 100644 --- a/code/fms/fms-vue/tests/views/othercompany.spec.js +++ b/code/fms/fms-vue/tests/views/othercompany.spec.js @@ -1,5 +1,5 @@ /** - * 回归用例:往来单位分类树(b_othercompany_bmfl)的新增 / 修改 / 删除 / 拖拽排序。 + * 回归用例:往来单位分类树(b_othercompany_category)的新增 / 修改 / 删除 / 拖拽排序。 * * 1) b_path 为 not null 且无默认值(b_depth / b_xh / b_canuse 才有默认值),新增分类时 * 必须按父级派生 b_depth / b_path 一起写入,否则插入直接失败; @@ -77,7 +77,7 @@ beforeEach(() => { Message.warning.mockClear() modalConfirm.mockReset() loadDataApi.mockImplementation((view) => { - if (view === 'b_othercompany_bmfl') + if (view === 'b_othercompany_category') return Promise.resolve({ data: CATEGORIES.map((row) => ({ ...row })) }) return Promise.resolve({ data: [] }) }) @@ -110,7 +110,7 @@ describe('往来单位:新增分类写派生树字段', () => { await wrapper.vm.onCategorySubmit({ b_id: 'newcat', b_name: '新分类', b_xh: 30 }) await flushPromises() - const request = lastRequestOf('b_othercompany_bmfl') + const request = lastRequestOf('b_othercompany_category') expect(request.key_field).toBe('b_id') expect(request.inserts).toHaveLength(1) expect(request.inserts[0]).toMatchObject({ @@ -131,7 +131,7 @@ describe('往来单位:新增分类写派生树字段', () => { await wrapper.vm.onCategorySubmit({ b_id: 'child2', b_name: '三级分类', b_xh: 20 }) await flushPromises() - expect(lastRequestOf('b_othercompany_bmfl').inserts[0]).toMatchObject({ + expect(lastRequestOf('b_othercompany_category').inserts[0]).toMatchObject({ b_id: 'child2', b_parent_id: 'root1', b_depth: 1, @@ -148,7 +148,7 @@ describe('往来单位:修改分类', () => { await wrapper.vm.onCategorySubmit({ b_id: 'child1', b_name: '改过的名字', b_xh: 99 }) await flushPromises() - const request = lastRequestOf('b_othercompany_bmfl') + const request = lastRequestOf('b_othercompany_category') expect(request.inserts).toBeUndefined() expect(request.updates).toHaveLength(1) expect(request.updates[0]).toEqual({ b_id: 'child1', b_name: '改过的名字', b_xh: 99 }) @@ -190,7 +190,7 @@ describe('往来单位:删除分类的两条守卫', () => { await modalConfirm.mock.calls[0][0].onOk() await flushPromises() - const request = lastRequestOf('b_othercompany_bmfl') + const request = lastRequestOf('b_othercompany_category') expect(request.deletes).toEqual([{ b_id: 'child1' }]) }) }) diff --git a/code/fms/sql/fms_business_othercompany.sql b/code/fms/sql/fms_business_othercompany.sql index 00aefc79..9e6010fb 100644 --- a/code/fms/sql/fms_business_othercompany.sql +++ b/code/fms/sql/fms_business_othercompany.sql @@ -22,7 +22,7 @@ GO drop table if exists dbo.b_othercompany_accountbank; GO -drop table if exists dbo.b_othercompany_bmfl; +drop table if exists dbo.b_othercompany_category; GO drop table if exists dbo.b_othercompany_partner_type; @@ -126,7 +126,7 @@ GO 分类树 ============================================================================ */ -create table dbo.b_othercompany_bmfl ( +create table dbo.b_othercompany_category ( b_id varchar(150) not null primary key, -- 节点编码(创建后不可改) b_parent_id varchar(150) null, -- 父节点编码,NULL 表示根节点 b_depth int not null default 0, -- 树层级,根节点为 0 @@ -142,12 +142,12 @@ create table dbo.b_othercompany_bmfl ( ); GO -create index ix_b_othercompany_bmfl_parent - on dbo.b_othercompany_bmfl (b_parent_id, b_canuse, b_depth, b_xh, b_id); +create index ix_b_othercompany_category_parent + on dbo.b_othercompany_category (b_parent_id, b_canuse, b_depth, b_xh, b_id); GO -create index ix_b_othercompany_bmfl_path - on dbo.b_othercompany_bmfl (b_path, b_canuse, b_id); +create index ix_b_othercompany_category_path + on dbo.b_othercompany_category (b_path, b_canuse, b_id); GO /* ============================================================================ diff --git a/code/fms/sql/fms_files.sql b/code/fms/sql/fms_files.sql new file mode 100644 index 00000000..bb9f6bce --- /dev/null +++ b/code/fms/sql/fms_files.sql @@ -0,0 +1,70 @@ +/* ============================================================================ + 文件表:bf_files(文件记录)/ bf_files_category(文件分类) + ---------------------------------------------------------------------------- + 文件统一由文件服务托管:本地模式由后端写盘后落库,OSS 模式由前端取号直传后 + 回调落库;业务表不存文件二进制,只通过 father 关联宿主业务主键。 + 主键为应用层雪花(subid),不使用 identity —— OSS 直传链路由前端先取号。 + 结构说明见《FMS新系统核心表结构设计.md》第 15 节。 + ============================================================================ */ + +/* ---------------------------------------------------------------------------- + 1. 文件分类(先建,被 bf_files.mx_cate_id 引用) + ---------------------------------------------------------------------------- */ + +drop table if exists dbo.bf_files_category; +GO + +create table dbo.bf_files_category ( + b_id bigint not null primary key, -- 主键(雪花,新增行由前端 nextIdApi 生成) + b_module_id varchar(50) null, -- 归属模块(s_module.b_id);NULL = 通用分类 + b_name nvarchar(50) not null, -- 分类名称 + b_i18n varchar(150) null, -- 多语言资源键(s_i18n.b_key) + b_files_type varchar(50) null, -- 允许的扩展名(逗号分隔,空 = 不限;预留) + b_xh int not null default 0, -- 显示顺序 + b_canuse tinyint not null default 1, -- 是否启用(0/1) + b_bz nvarchar(200) null, -- 备注 + b_created_by varchar(50) null, -- 创建人(用户账号) + b_created_at datetime2 null, -- 创建时间 + b_updated_by varchar(50) null, -- 最后修改人 + b_updated_at datetime2 null -- 最后修改时间 +); +GO + +create index ix_bf_files_category_module + on dbo.bf_files_category (b_module_id, b_canuse, b_xh, b_id); +GO + +/* ---------------------------------------------------------------------------- + 2. 文件记录 + ---------------------------------------------------------------------------- */ + +drop table if exists dbo.bf_files; +GO + +create table dbo.bf_files ( + subid bigint not null primary key, -- 文件主键(雪花,应用层取号:本地由后端、OSS 直传由前端先取号) + father bigint null, -- 宿主业务主键(业务表 b_id),列表按它聚合 + mx_filename nvarchar(500) null, -- 原始文件名(含扩展名,展示与下载用) + mx_filesize varchar(50) null, -- 文件大小(字节,字符串存储) + mx_fileext varchar(50) null, -- 扩展名(小写、不含点) + mx_mapfilename nvarchar(500) null, -- 访问地址:本地为 {url-prefix}/{org}/{yyyy}/{MM}/{dd}/{uuid}.{ext},OSS 为完整 URL + mx_moduleid varchar(50) null, -- 业务模块编码(s_module.b_id) + mx_cate_id bigint null, -- 文件分类(bf_files_category.b_id) + mx_xh int not null default 0, -- 排序号(保留;当前实现固定 0,列表按 subid 倒序) + mx_sh tinyint not null default 0, -- 审核标识(保留;当前实现固定 0) + mx_shuser_id varchar(50) null, -- 审核人(保留) + mx_shdatetime datetime2 null, -- 审核时间(保留) + mx_cutfilename nvarchar(500) null, -- 缩略图地址(保留) + mx_cutfilesize varchar(50) null, -- 缩略图大小(保留) + mx_orderid varchar(50) null, -- 排序组(保留) + mx_bz nvarchar(500) null, -- 备注(保留) + mx_inputuser_id varchar(50) null, -- 上传人(用户账号) + mx_inputdatetime datetime2 null, -- 上传时间 + mx_updateuser_id varchar(50) null, -- 最后修改人 + mx_updatedatetime datetime2 null -- 最后修改时间 +); +GO + +create index ix_bf_files_host + on dbo.bf_files (father, mx_moduleid, mx_cate_id, mx_xh, subid); +GO diff --git a/code/fms/sql/fms_rename_othercompany_category.sql b/code/fms/sql/fms_rename_othercompany_category.sql new file mode 100644 index 00000000..d04975d0 --- /dev/null +++ b/code/fms/sql/fms_rename_othercompany_category.sql @@ -0,0 +1,18 @@ +/* ============================================================================ + 分类表改名:b_othercompany_bmfl → b_othercompany_category + ---------------------------------------------------------------------------- + 分类表命名统一为 <域>_category(去掉拼音缩写 bmfl)。 + 原地改名(sp_rename),数据不动;同步改两个自定义索引名。 + 已确认库内无视图 / 存储过程 / 模块配置引用旧表名,无需连带重建。 + ============================================================================ */ + +exec sp_rename 'dbo.b_othercompany_bmfl', 'b_othercompany_category'; +GO + +exec sp_rename 'dbo.b_othercompany_category.ix_b_othercompany_bmfl_parent', + 'ix_b_othercompany_category_parent', 'INDEX'; +GO + +exec sp_rename 'dbo.b_othercompany_category.ix_b_othercompany_bmfl_path', + 'ix_b_othercompany_category_path', 'INDEX'; +GO diff --git a/code/fms/test.html b/code/fms/test.html deleted file mode 100644 index e7ea45c3..00000000 --- a/code/fms/test.html +++ /dev/null @@ -1,971 +0,0 @@ -```html - - - - - -FMS Advanced Search Demo - - - - - - -
- - -
-
订舱管理
-
Booking Orders
- -
- - - - -
- - -
- - -
- -
- -
-
订舱号
- -
- -
-
客户
- -
- -
-
业务员
- -
- -
-
状态
- -
- -
- -
- - -
- -
- - -
- 当前条件: - - - 客户 = ABC Logistics - × - - - - 金额 > 10000 - × - - - - 日期 ≥ 2026-09-01 - × - -
- - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
订舱号客户业务员金额开船日期状态
BK202609001ABC Logistics张三25,800.002026-09-05已确认
BK202609002XYZ Shipping李四18,600.002026-09-08已完成
BK202609003ABC Logistics王五12,500.002026-09-12已确认
- -
-
-
- - -
- - -
- -
-
高级搜索
-
- -
- -
- - -
- - 查询方案 - - - - -
- - -
- -
- - - 满足以下全部条件 - - -
- - -
- -
- -
- - -
- - - - - - - - - -
- - -
- AND -
- - -
- - - - - - - - - -
- - -
- AND -
- - -
- - - - - - - - - -
- -
- -
- -
- -
- - -
- -
- - 满足以下任一条件 - - -
- -
-
- -
- -
- - - - - - - - - -
- -
- OR -
- -
- - - - - - - - - -
- -
- -
- -
- -
- -
- - - -
- - - - - -```