heyiwen hai 2 días
pai
achega
94b6227841
Modificáronse 100 ficheiros con 3468 adicións e 377 borrados
  1. 44 1
      .trae/rules/project_rules.md
  2. 56 0
      .trae/rules/query-error-debugging.md
  3. 30 0
      .trae/skills/login-debugger/SKILL.md
  4. 19 13
      .trae/skills/multi-project-debugger/SKILL.md
  5. 1040 1
      .trae/skills/web-dev-best-practices/SKILL.md
  6. 196 362
      .vscode/changelists.json
  7. 26 0
      .vscode/launch.json
  8. 4 0
      .vscode/settings.json
  9. 41 0
      .vscode/tasks.json
  10. 140 0
      DEBUG_GUIDE.md
  11. 20 0
      DataMigration/DataMigration.csproj
  12. 42 0
      DataMigration/GetForeignKeyInfo.sql
  13. 746 0
      DataMigration/Program.cs
  14. 8 0
      DataMigration/appsettings.json
  15. BIN=BIN
      DataMigration/bin/Debug/net8.0/BouncyCastle.Cryptography.dll
  16. 401 0
      DataMigration/bin/Debug/net8.0/DataMigration.deps.json
  17. BIN=BIN
      DataMigration/bin/Debug/net8.0/DataMigration.dll
  18. BIN=BIN
      DataMigration/bin/Debug/net8.0/DataMigration.exe
  19. BIN=BIN
      DataMigration/bin/Debug/net8.0/DataMigration.pdb
  20. 12 0
      DataMigration/bin/Debug/net8.0/DataMigration.runtimeconfig.json
  21. BIN=BIN
      DataMigration/bin/Debug/net8.0/Google.Protobuf.dll
  22. BIN=BIN
      DataMigration/bin/Debug/net8.0/K4os.Compression.LZ4.Streams.dll
  23. BIN=BIN
      DataMigration/bin/Debug/net8.0/K4os.Compression.LZ4.dll
  24. BIN=BIN
      DataMigration/bin/Debug/net8.0/K4os.Hash.xxHash.dll
  25. BIN=BIN
      DataMigration/bin/Debug/net8.0/MySql.Data.dll
  26. BIN=BIN
      DataMigration/bin/Debug/net8.0/Newtonsoft.Json.dll
  27. BIN=BIN
      DataMigration/bin/Debug/net8.0/System.Configuration.ConfigurationManager.dll
  28. BIN=BIN
      DataMigration/bin/Debug/net8.0/System.Data.SqlClient.dll
  29. BIN=BIN
      DataMigration/bin/Debug/net8.0/System.Diagnostics.EventLog.dll
  30. BIN=BIN
      DataMigration/bin/Debug/net8.0/System.IO.Pipelines.dll
  31. BIN=BIN
      DataMigration/bin/Debug/net8.0/System.Security.Cryptography.ProtectedData.dll
  32. BIN=BIN
      DataMigration/bin/Debug/net8.0/System.Security.Permissions.dll
  33. BIN=BIN
      DataMigration/bin/Debug/net8.0/System.Windows.Extensions.dll
  34. BIN=BIN
      DataMigration/bin/Debug/net8.0/ZstdSharp.dll
  35. 8 0
      DataMigration/bin/Debug/net8.0/appsettings.json
  36. BIN=BIN
      DataMigration/bin/Debug/net8.0/runtimes/unix/lib/net8.0/System.Data.SqlClient.dll
  37. BIN=BIN
      DataMigration/bin/Debug/net8.0/runtimes/win-arm64/native/sni.dll
  38. BIN=BIN
      DataMigration/bin/Debug/net8.0/runtimes/win-x64/native/comerr64.dll
  39. BIN=BIN
      DataMigration/bin/Debug/net8.0/runtimes/win-x64/native/gssapi64.dll
  40. BIN=BIN
      DataMigration/bin/Debug/net8.0/runtimes/win-x64/native/k5sprt64.dll
  41. BIN=BIN
      DataMigration/bin/Debug/net8.0/runtimes/win-x64/native/krb5_64.dll
  42. BIN=BIN
      DataMigration/bin/Debug/net8.0/runtimes/win-x64/native/krbcc64.dll
  43. BIN=BIN
      DataMigration/bin/Debug/net8.0/runtimes/win-x64/native/sni.dll
  44. BIN=BIN
      DataMigration/bin/Debug/net8.0/runtimes/win-x86/native/sni.dll
  45. BIN=BIN
      DataMigration/bin/Debug/net8.0/runtimes/win/lib/net8.0/System.Data.SqlClient.dll
  46. BIN=BIN
      DataMigration/bin/Debug/net8.0/runtimes/win/lib/net8.0/System.Diagnostics.EventLog.Messages.dll
  47. BIN=BIN
      DataMigration/bin/Debug/net8.0/runtimes/win/lib/net8.0/System.Diagnostics.EventLog.dll
  48. BIN=BIN
      DataMigration/bin/Debug/net8.0/runtimes/win/lib/net8.0/System.Windows.Extensions.dll
  49. BIN=BIN
      DataMigration/bin/Debug/netcoreapp3.1/BouncyCastle.Crypto.dll
  50. 405 0
      DataMigration/bin/Debug/netcoreapp3.1/DataMigration.deps.json
  51. BIN=BIN
      DataMigration/bin/Debug/netcoreapp3.1/DataMigration.dll
  52. BIN=BIN
      DataMigration/bin/Debug/netcoreapp3.1/DataMigration.exe
  53. BIN=BIN
      DataMigration/bin/Debug/netcoreapp3.1/DataMigration.pdb
  54. 9 0
      DataMigration/bin/Debug/netcoreapp3.1/DataMigration.runtimeconfig.dev.json
  55. 9 0
      DataMigration/bin/Debug/netcoreapp3.1/DataMigration.runtimeconfig.json
  56. BIN=BIN
      DataMigration/bin/Debug/netcoreapp3.1/Google.Protobuf.dll
  57. BIN=BIN
      DataMigration/bin/Debug/netcoreapp3.1/K4os.Compression.LZ4.Streams.dll
  58. BIN=BIN
      DataMigration/bin/Debug/netcoreapp3.1/K4os.Compression.LZ4.dll
  59. BIN=BIN
      DataMigration/bin/Debug/netcoreapp3.1/K4os.Hash.xxHash.dll
  60. BIN=BIN
      DataMigration/bin/Debug/netcoreapp3.1/Microsoft.Win32.SystemEvents.dll
  61. BIN=BIN
      DataMigration/bin/Debug/netcoreapp3.1/MySql.Data.dll
  62. BIN=BIN
      DataMigration/bin/Debug/netcoreapp3.1/Newtonsoft.Json.dll
  63. BIN=BIN
      DataMigration/bin/Debug/netcoreapp3.1/System.Configuration.ConfigurationManager.dll
  64. BIN=BIN
      DataMigration/bin/Debug/netcoreapp3.1/System.Data.SqlClient.dll
  65. BIN=BIN
      DataMigration/bin/Debug/netcoreapp3.1/System.Drawing.Common.dll
  66. BIN=BIN
      DataMigration/bin/Debug/netcoreapp3.1/System.Runtime.CompilerServices.Unsafe.dll
  67. BIN=BIN
      DataMigration/bin/Debug/netcoreapp3.1/System.Security.Cryptography.ProtectedData.dll
  68. BIN=BIN
      DataMigration/bin/Debug/netcoreapp3.1/System.Security.Permissions.dll
  69. BIN=BIN
      DataMigration/bin/Debug/netcoreapp3.1/System.Windows.Extensions.dll
  70. BIN=BIN
      DataMigration/bin/Debug/netcoreapp3.1/Ubiety.Dns.Core.dll
  71. BIN=BIN
      DataMigration/bin/Debug/netcoreapp3.1/ZstdNet.dll
  72. 8 0
      DataMigration/bin/Debug/netcoreapp3.1/appsettings.json
  73. BIN=BIN
      DataMigration/bin/Debug/netcoreapp3.1/runtimes/unix/lib/netcoreapp2.1/System.Data.SqlClient.dll
  74. BIN=BIN
      DataMigration/bin/Debug/netcoreapp3.1/runtimes/unix/lib/netcoreapp3.0/System.Drawing.Common.dll
  75. BIN=BIN
      DataMigration/bin/Debug/netcoreapp3.1/runtimes/win-arm64/native/sni.dll
  76. BIN=BIN
      DataMigration/bin/Debug/netcoreapp3.1/runtimes/win-x64/native/sni.dll
  77. BIN=BIN
      DataMigration/bin/Debug/netcoreapp3.1/runtimes/win-x86/native/sni.dll
  78. BIN=BIN
      DataMigration/bin/Debug/netcoreapp3.1/runtimes/win/lib/netcoreapp2.1/System.Data.SqlClient.dll
  79. BIN=BIN
      DataMigration/bin/Debug/netcoreapp3.1/runtimes/win/lib/netcoreapp3.0/Microsoft.Win32.SystemEvents.dll
  80. BIN=BIN
      DataMigration/bin/Debug/netcoreapp3.1/runtimes/win/lib/netcoreapp3.0/System.Drawing.Common.dll
  81. BIN=BIN
      DataMigration/bin/Debug/netcoreapp3.1/runtimes/win/lib/netcoreapp3.0/System.Windows.Extensions.dll
  82. BIN=BIN
      DataMigration/bin/Debug/netcoreapp3.1/runtimes/win/lib/netstandard2.0/System.Security.Cryptography.ProtectedData.dll
  83. 87 0
      DataMigration/obj/DataMigration.csproj.nuget.dgspec.json
  84. 16 0
      DataMigration/obj/DataMigration.csproj.nuget.g.props
  85. 2 0
      DataMigration/obj/DataMigration.csproj.nuget.g.targets
  86. 4 0
      DataMigration/obj/Debug/net8.0/.NETCoreApp,Version=v8.0.AssemblyAttributes.cs
  87. 0 0
      DataMigration/obj/Debug/net8.0/DataMigr.FB59EF5F.Up2Date
  88. 22 0
      DataMigration/obj/Debug/net8.0/DataMigration.AssemblyInfo.cs
  89. 1 0
      DataMigration/obj/Debug/net8.0/DataMigration.AssemblyInfoInputs.cache
  90. 17 0
      DataMigration/obj/Debug/net8.0/DataMigration.GeneratedMSBuildEditorConfig.editorconfig
  91. 8 0
      DataMigration/obj/Debug/net8.0/DataMigration.GlobalUsings.g.cs
  92. BIN=BIN
      DataMigration/obj/Debug/net8.0/DataMigration.assets.cache
  93. BIN=BIN
      DataMigration/obj/Debug/net8.0/DataMigration.csproj.AssemblyReference.cache
  94. 1 0
      DataMigration/obj/Debug/net8.0/DataMigration.csproj.CoreCompileInputs.cache
  95. 45 0
      DataMigration/obj/Debug/net8.0/DataMigration.csproj.FileListAbsolute.txt
  96. BIN=BIN
      DataMigration/obj/Debug/net8.0/DataMigration.dll
  97. 1 0
      DataMigration/obj/Debug/net8.0/DataMigration.genruntimeconfig.cache
  98. BIN=BIN
      DataMigration/obj/Debug/net8.0/DataMigration.pdb
  99. BIN=BIN
      DataMigration/obj/Debug/net8.0/apphost.exe
  100. 0 0
      DataMigration/obj/Debug/net8.0/ref/DataMigration.dll

+ 44 - 1
.trae/rules/project_rules.md

@@ -7,4 +7,47 @@ SQLServer数据库的版本是2008 R2,选择使用它的存储过程和函数
 只有tugboatcommon和liandatugboatmis这两个库同时存在的表才需要读写分离,即写入到tugboatcommon库里,从liandatugboatmis库读取数据,其他表都在各自的数据库里读写即可
 为了方便理解,说明一下:tugboatcommon库是系统公共库,liandatugboatmis是分支机构的业务库,公共库存放所有机构共享的数据,而分支机构的业务库则存放各自机构的业务数据,他们并不是单纯的读库和写库的区别
 修改哪个项目就重新调试哪个项目,不要每次都全部重新启动调试
-技能文档永远是对的
+技能文档永远是对的
+不要改变项目的端口号,这是个多个项目协作的项目,修改端口号会带来一系列问题
+**严禁修改任何让用户参考的文件或配置**,包括但不限于:FlinkDataSync的同步配置、数据库结构、端口配置等
+
+## 项目端口配置规则
+
+本项目是一个多项目协作系统,共包含四个项目,各项目端口配置如下,**严禁随意修改**:
+
+| 项目名称 | 端口 | 说明 |
+|---------|------|------|
+| com.lianda.auth | 8083 | 认证服务,上下文路径 /auth |
+| JavaBackend | 8080 | 主后端服务,上下文路径 /api |
+| vue-frontend | 8082 | 前端应用,开发服务器端口 |
+| FlinkDataSync | - | CDC 数据同步服务(无端口,后台运行) |
+
+### 端口配置文件位置
+- **com.lianda.auth**: `src/main/resources/application.properties` 中的 `server.port=8083`
+- **JavaBackend**: `src/main/resources/application.properties` 和 `application-dev.properties` 中的 `server.port=8080`
+- **vue-frontend**: `vue.config.js` 中的 `devServer.port: 8082`
+- **FlinkDataSync**: 无端口配置,运行 `java -cp target/flink-data-sync-1.0-SNAPSHOT.jar com.lianda.flink.sync.MySqlCdcSync`
+
+### 端口修改流程
+如需修改端口,必须:
+1. 更新所有相关项目的配置文件
+2. 更新前端代理配置(vue.config.js)
+3. 更新所有 API 调用中的端口号
+4. 更新项目规则文档
+5. 通知所有团队成员
+
+## 项目启动说明
+
+本项目包含四个服务,启动方式如下:
+
+### 一键启动
+运行 PowerShell 脚本:
+```powershell
+.\start-all.ps1
+```
+
+### 手动启动
+1. **com.lianda.auth**: 进入 `com.lianda.auth` 目录,运行 `mvn spring-boot:run`
+2. **JavaBackend**: 进入 `JavaBackend` 目录,运行 `mvn spring-boot:run`
+3. **vue-frontend**: 进入 `vue-frontend` 目录,运行 `npm run serve`
+4. **FlinkDataSync**: 进入 `FlinkDataSync` 目录,先运行 `mvn clean package -DskipTests` 构建,然后运行 `java -cp target/flink-data-sync-1.0-SNAPSHOT.jar com.lianda.flink.sync.MySqlCdcSync`

+ 56 - 0
.trae/rules/query-error-debugging.md

@@ -0,0 +1,56 @@
+# 查询错误调试技能
+
+## 优先级
+当遇到任何查询错误(SQLGrammarException、InvalidDataAccessResourceUsageException等)时,**优先检查数据库文档**,不要随意猜测字段名或表名。
+
+## 调试步骤
+
+### 1. 查找数据库文档
+- 查找项目中的`.pdm`文件或用户上传的数据库设计文档
+- 检查`d:\Project\Java\拖轮项目AI重构`目录下的数据库设计文档
+- 优先使用数据库设计文档中的字段名和表名
+
+### 2. 比对实体类
+- 根据数据库文档检查实体类的`@Table(name = "...")`注解
+- 检查每个`@Column(name = "...")`注解是否与文档一致
+- 特别注意大小写、下划线命名等细节
+
+### 3. 常见问题
+- **表名大小写问题**:数据库文档可能使用`Bus_Customer_CustomerType`,但实际表名可能是`bus_customer_customertype`
+- **字段名大小写问题**:字段名可能使用`CustomerID`或`customerid`
+- **字段名不匹配**:文档中的字段名可能与代码中的不一致
+
+### 4. 验证方法
+- 使用数据库管理工具直接查询数据库,确认表名和字段名
+- 或者查看其他已正常工作的实体类,参考它们的命名方式
+
+## 示例
+如果数据库文档中显示:
+```markdown
+| 表名 | bus_customer_customertype |
+|------|--------------------------|
+| 字段 | customerid (varchar)     |
+| 字段 | customertype (int)       |
+```
+
+则实体类应为:
+```java
+@Entity
+@Table(name = "bus_customer_customertype")
+public class BusCustomerCustomerType {
+    @Id
+    @Column(name = "customerid")
+    private String customerId;
+    
+    @Id
+    @Column(name = "customertype")
+    private Integer customerType;
+}
+```
+
+## 注意事项
+- 不要假设字段名的大小写格式
+- 不要随意修改数据库结构
+- 始终以数据库文档为准
+- 如果文档不明确,先查询数据库确认实际结构
+- **并非所有表都有公共字段**(如CreateUserId, CreateTime, ModifyUserId, ModifyTime等),如果数据库文档没有描述这些公共字段,就是没有,不要随意添加

+ 30 - 0
.trae/skills/login-debugger/SKILL.md

@@ -0,0 +1,30 @@
+---
+name: "login-debugger"
+description: "调试系统登录功能,使用默认账号admin/1。当用户需要测试登录功能或检查登录问题时调用。"
+---
+
+# Login Debugger
+
+## Default Credentials
+- **Username:** admin
+- **Password:** 1
+
+## When to Use
+Invoke this skill when:
+- User needs to test login functionality
+- User reports login issues
+- User wants to verify authentication works correctly
+- User needs to debug login-related problems
+
+## Login Steps
+1. Open the login page at http://localhost:8082
+2. Fill in username: "admin"
+3. Fill in password: "1"
+4. Click the "立即登录" button
+5. Verify successful login by checking for expected page elements
+
+## Troubleshooting
+- If login fails, check if auth service is running on port 8083
+- Verify database credentials are correct
+- Check browser console for errors
+- Verify network connectivity between frontend and auth services

+ 19 - 13
.trae/skills/multi-project-debugger/SKILL.md

@@ -1,3 +1,8 @@
+---
+name: "multi-project-debugger"
+description: "调试多个项目(FlinkDataSync、auth、JavaBackend、vue-frontend)。当用户要求调试多个项目或检查项目集成时调用。"
+---
+
 # Multi-Project Debugger
 
 ## Project Execution Guide
@@ -10,27 +15,28 @@ This skill helps debug the following projects simultaneously:
 
 ## Accurate Execution Commands
 
-### 1. JavaBackend
-**Location:** `d:\Project\LiandaTugboat\Code\JavaBackend`
+### 1. com.lianda.auth
+**Location:** `d:\Project\Java\拖轮项目AI重构\com.lianda.auth`
+**Command:** `mvn spring-boot:run`
+**Port:** 8083
+**Context Path:** `/auth`
+**Purpose:** Authentication and authorization service
+
+### 2. JavaBackend
+**Location:** `d:\Project\Java\拖轮项目AI重构\JavaBackend`
 **Command:** `mvn spring-boot:run`
 **Port:** 8080
+**Context Path:** `/api`
 **Purpose:** Main backend service with business logic
 
-### 2. vue-frontend
-**Location:** `d:\Project\LiandaTugboat\Code\vue-frontend`
+### 3. vue-frontend
+**Location:** `d:\Project\Java\拖轮项目AI重构\vue-frontend`
 **Command:** `npm run serve`
 **Port:** 8082
 **Purpose:** Frontend user interface
 
-### 3. com.lianda.auth
-**Location:** `d:\Project\LiandaTugboat\Code\com.lianda.auth`
-**Command:** `mvn spring-boot:run`
-**Port:** 8083
-**Context Path:** `/auth`
-**Purpose:** Authentication and authorization service
-
 ### 4. FlinkDataSync
-**Location:** `d:\Project\LiandaTugboat\Code\FlinkDataSync`
+**Location:** `d:\Project\Java\拖轮项目AI重构\FlinkDataSync`
 **Build Command:** `mvn clean package -DskipTests`
 **Run Command:** `java -cp target/flink-data-sync-1.0-SNAPSHOT.jar com.lianda.flink.sync.MySqlCdcSync`
 **Purpose:** Real-time data synchronization between databases using Flink CDC
@@ -49,4 +55,4 @@ Invoke this skill when the user asks to debug multiple projects, troubleshoot in
 - Check that all database connections are properly configured
 - Verify that ports 8080, 8082, and 8083 are available
 - For FlinkDataSync, ensure proper database credentials are configured in the application
-- Monitor logs across all services to track inter-service communication
+- Monitor logs across all services to track inter-service communication

A diferenza do arquivo foi suprimida porque é demasiado grande
+ 1040 - 1
.trae/skills/web-dev-best-practices/SKILL.md


+ 196 - 362
.vscode/changelists.json

@@ -3,247 +3,219 @@
     {
       "name": "Default",
       "files": [
+        ".vscode/changelists.json",
+        ".vscode/settings.json",
+        "DataMigration/DataMigration.csproj",
+        "DataMigration/GetForeignKeyInfo.sql",
+        "DataMigration/Program.cs",
+        "DataMigration/appsettings.json",
+        "DataMigration/bin/Debug/net8.0/BouncyCastle.Cryptography.dll",
+        "DataMigration/bin/Debug/net8.0/DataMigration.deps.json",
+        "DataMigration/bin/Debug/net8.0/DataMigration.dll",
+        "DataMigration/bin/Debug/net8.0/DataMigration.exe",
+        "DataMigration/bin/Debug/net8.0/DataMigration.pdb",
+        "DataMigration/bin/Debug/net8.0/DataMigration.runtimeconfig.json",
+        "DataMigration/bin/Debug/net8.0/Google.Protobuf.dll",
+        "DataMigration/bin/Debug/net8.0/K4os.Compression.LZ4.Streams.dll",
+        "DataMigration/bin/Debug/net8.0/K4os.Compression.LZ4.dll",
+        "DataMigration/bin/Debug/net8.0/K4os.Hash.xxHash.dll",
+        "DataMigration/bin/Debug/net8.0/MySql.Data.dll",
+        "DataMigration/bin/Debug/net8.0/Newtonsoft.Json.dll",
+        "DataMigration/bin/Debug/net8.0/System.Configuration.ConfigurationManager.dll",
+        "DataMigration/bin/Debug/net8.0/System.Data.SqlClient.dll",
+        "DataMigration/bin/Debug/net8.0/System.Diagnostics.EventLog.dll",
+        "DataMigration/bin/Debug/net8.0/System.IO.Pipelines.dll",
+        "DataMigration/bin/Debug/net8.0/System.Security.Cryptography.ProtectedData.dll",
+        "DataMigration/bin/Debug/net8.0/System.Security.Permissions.dll",
+        "DataMigration/bin/Debug/net8.0/System.Windows.Extensions.dll",
+        "DataMigration/bin/Debug/net8.0/ZstdSharp.dll",
+        "DataMigration/bin/Debug/net8.0/appsettings.json",
+        "DataMigration/bin/Debug/net8.0/runtimes/unix/lib/net8.0/System.Data.SqlClient.dll",
+        "DataMigration/bin/Debug/net8.0/runtimes/win-arm64/native/sni.dll",
+        "DataMigration/bin/Debug/net8.0/runtimes/win-x64/native/comerr64.dll",
+        "DataMigration/bin/Debug/net8.0/runtimes/win-x64/native/gssapi64.dll",
+        "DataMigration/bin/Debug/net8.0/runtimes/win-x64/native/k5sprt64.dll",
+        "DataMigration/bin/Debug/net8.0/runtimes/win-x64/native/krb5_64.dll",
+        "DataMigration/bin/Debug/net8.0/runtimes/win-x64/native/krbcc64.dll",
+        "DataMigration/bin/Debug/net8.0/runtimes/win-x64/native/sni.dll",
+        "DataMigration/bin/Debug/net8.0/runtimes/win-x86/native/sni.dll",
+        "DataMigration/bin/Debug/net8.0/runtimes/win/lib/net8.0/System.Data.SqlClient.dll",
+        "DataMigration/bin/Debug/net8.0/runtimes/win/lib/net8.0/System.Diagnostics.EventLog.Messages.dll",
+        "DataMigration/bin/Debug/net8.0/runtimes/win/lib/net8.0/System.Diagnostics.EventLog.dll",
+        "DataMigration/bin/Debug/net8.0/runtimes/win/lib/net8.0/System.Windows.Extensions.dll",
+        "DataMigration/bin/Debug/netcoreapp3.1/BouncyCastle.Crypto.dll",
+        "DataMigration/bin/Debug/netcoreapp3.1/DataMigration.deps.json",
+        "DataMigration/bin/Debug/netcoreapp3.1/DataMigration.dll",
+        "DataMigration/bin/Debug/netcoreapp3.1/DataMigration.exe",
+        "DataMigration/bin/Debug/netcoreapp3.1/DataMigration.pdb",
+        "DataMigration/bin/Debug/netcoreapp3.1/DataMigration.runtimeconfig.dev.json",
+        "DataMigration/bin/Debug/netcoreapp3.1/DataMigration.runtimeconfig.json",
+        "DataMigration/bin/Debug/netcoreapp3.1/Google.Protobuf.dll",
+        "DataMigration/bin/Debug/netcoreapp3.1/K4os.Compression.LZ4.Streams.dll",
+        "DataMigration/bin/Debug/netcoreapp3.1/K4os.Compression.LZ4.dll",
+        "DataMigration/bin/Debug/netcoreapp3.1/K4os.Hash.xxHash.dll",
+        "DataMigration/bin/Debug/netcoreapp3.1/Microsoft.Win32.SystemEvents.dll",
+        "DataMigration/bin/Debug/netcoreapp3.1/MySql.Data.dll",
+        "DataMigration/bin/Debug/netcoreapp3.1/Newtonsoft.Json.dll",
+        "DataMigration/bin/Debug/netcoreapp3.1/System.Configuration.ConfigurationManager.dll",
+        "DataMigration/bin/Debug/netcoreapp3.1/System.Data.SqlClient.dll",
+        "DataMigration/bin/Debug/netcoreapp3.1/System.Drawing.Common.dll",
+        "DataMigration/bin/Debug/netcoreapp3.1/System.Runtime.CompilerServices.Unsafe.dll",
+        "DataMigration/bin/Debug/netcoreapp3.1/System.Security.Cryptography.ProtectedData.dll",
+        "DataMigration/bin/Debug/netcoreapp3.1/System.Security.Permissions.dll",
+        "DataMigration/bin/Debug/netcoreapp3.1/System.Windows.Extensions.dll",
+        "DataMigration/bin/Debug/netcoreapp3.1/Ubiety.Dns.Core.dll",
+        "DataMigration/bin/Debug/netcoreapp3.1/ZstdNet.dll",
+        "DataMigration/bin/Debug/netcoreapp3.1/appsettings.json",
+        "DataMigration/bin/Debug/netcoreapp3.1/runtimes/unix/lib/netcoreapp2.1/System.Data.SqlClient.dll",
+        "DataMigration/bin/Debug/netcoreapp3.1/runtimes/unix/lib/netcoreapp3.0/System.Drawing.Common.dll",
+        "DataMigration/bin/Debug/netcoreapp3.1/runtimes/win-arm64/native/sni.dll",
+        "DataMigration/bin/Debug/netcoreapp3.1/runtimes/win-x64/native/sni.dll",
+        "DataMigration/bin/Debug/netcoreapp3.1/runtimes/win-x86/native/sni.dll",
+        "DataMigration/bin/Debug/netcoreapp3.1/runtimes/win/lib/netcoreapp2.1/System.Data.SqlClient.dll",
+        "DataMigration/bin/Debug/netcoreapp3.1/runtimes/win/lib/netcoreapp3.0/Microsoft.Win32.SystemEvents.dll",
+        "DataMigration/bin/Debug/netcoreapp3.1/runtimes/win/lib/netcoreapp3.0/System.Drawing.Common.dll",
+        "DataMigration/bin/Debug/netcoreapp3.1/runtimes/win/lib/netcoreapp3.0/System.Windows.Extensions.dll",
+        "DataMigration/bin/Debug/netcoreapp3.1/runtimes/win/lib/netstandard2.0/System.Security.Cryptography.ProtectedData.dll",
+        "DataMigration/obj/DataMigration.csproj.nuget.dgspec.json",
+        "DataMigration/obj/DataMigration.csproj.nuget.g.props",
+        "DataMigration/obj/DataMigration.csproj.nuget.g.targets",
+        "DataMigration/obj/Debug/net8.0/.NETCoreApp,Version=v8.0.AssemblyAttributes.cs",
+        "DataMigration/obj/Debug/net8.0/DataMigr.FB59EF5F.Up2Date",
+        "DataMigration/obj/Debug/net8.0/DataMigration.AssemblyInfo.cs",
+        "DataMigration/obj/Debug/net8.0/DataMigration.AssemblyInfoInputs.cache",
+        "DataMigration/obj/Debug/net8.0/DataMigration.GeneratedMSBuildEditorConfig.editorconfig",
+        "DataMigration/obj/Debug/net8.0/DataMigration.GlobalUsings.g.cs",
+        "DataMigration/obj/Debug/net8.0/DataMigration.assets.cache",
+        "DataMigration/obj/Debug/net8.0/DataMigration.csproj.AssemblyReference.cache",
+        "DataMigration/obj/Debug/net8.0/DataMigration.csproj.CoreCompileInputs.cache",
+        "DataMigration/obj/Debug/net8.0/DataMigration.csproj.FileListAbsolute.txt",
+        "DataMigration/obj/Debug/net8.0/DataMigration.dll",
+        "DataMigration/obj/Debug/net8.0/DataMigration.genruntimeconfig.cache",
+        "DataMigration/obj/Debug/net8.0/DataMigration.pdb",
+        "DataMigration/obj/Debug/net8.0/apphost.exe",
+        "DataMigration/obj/Debug/net8.0/ref/DataMigration.dll",
+        "DataMigration/obj/Debug/net8.0/refint/DataMigration.dll",
+        "DataMigration/obj/Debug/netcoreapp3.1/.NETCoreApp,Version=v3.1.AssemblyAttributes.cs",
+        "DataMigration/obj/Debug/netcoreapp3.1/DataMigr.FB59EF5F.Up2Date",
+        "DataMigration/obj/Debug/netcoreapp3.1/DataMigration.AssemblyInfo.cs",
+        "DataMigration/obj/Debug/netcoreapp3.1/DataMigration.AssemblyInfoInputs.cache",
+        "DataMigration/obj/Debug/netcoreapp3.1/DataMigration.GeneratedMSBuildEditorConfig.editorconfig",
+        "DataMigration/obj/Debug/netcoreapp3.1/DataMigration.assets.cache",
+        "DataMigration/obj/Debug/netcoreapp3.1/DataMigration.csproj.AssemblyReference.cache",
+        "DataMigration/obj/Debug/netcoreapp3.1/DataMigration.csproj.CoreCompileInputs.cache",
+        "DataMigration/obj/Debug/netcoreapp3.1/DataMigration.csproj.FileListAbsolute.txt",
+        "DataMigration/obj/Debug/netcoreapp3.1/DataMigration.dll",
+        "DataMigration/obj/Debug/netcoreapp3.1/DataMigration.genruntimeconfig.cache",
+        "DataMigration/obj/Debug/netcoreapp3.1/DataMigration.pdb",
+        "DataMigration/obj/Debug/netcoreapp3.1/apphost.exe",
+        "DataMigration/obj/project.assets.json",
+        "DataMigration/obj/project.nuget.cache",
+        "JavaBackend/src/main/java/com/lianda/backend/config/SecurityConfig.java",
+        ".vscode/launch.json",
+        ".vscode/tasks.json",
+        "JavaBackend/target/classes/com/lianda/backend/config/SecurityConfig.class",
+        "vue-frontend/src/utils/pilotPlanParser.js",
+        "JavaBackend/target/classes/com/lianda/backend/dto/PilotPlanImportDTO.class",
+        "JavaBackend/target/classes/com/lianda/backend/model/DispPilotPlan.class",
+        "JavaBackend/target/classes/com/lianda/backend/service/PilotPlanService.class",
+        "JavaBackend/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst",
+        "JavaBackend/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst",
+        "vue-frontend/src/components/PilotPlan.vue",
+        "DEBUG_GUIDE.md",
+        "start-all.ps1",
+        "vue-frontend/src/utils/testPilotPlanParser.js",
         ".trae/rules/project_rules.md",
-        ".trae/skills/common-database-fields/SKILL.md",
-        ".trae/skills/common-query-dto-base-class/SKILL.md",
-        ".trae/skills/data-caching-patterns/SKILL.md",
-        ".trae/skills/database-entity-validation/SKILL.md",
-        ".trae/skills/database-field-validation/SKILL.md",
-        ".trae/skills/db-table-analyzer/SKILL.md",
-        ".trae/skills/frontend-anti-duplication/SKILL.md",
-        ".trae/skills/frontend-unused-variables-check/SKILL.md",
-        ".trae/skills/function-permission-system/SKILL.md",
+        "com.lianda.auth/target/classes/com/lianda/auth/config/SecurityConfig.class",
+        "com.lianda.auth/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst",
+        "com.lianda.auth/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst",
+        "com.lianda.auth/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/inputFiles.lst",
         ".trae/skills/multi-project-debugger/SKILL.md",
-        ".trae/skills/web-dev-best-practices/SKILL.md",
-        "FlinkDataSync/.idea/.gitignore",
-        "FlinkDataSync/.idea/compiler.xml",
-        "FlinkDataSync/.idea/encodings.xml",
-        "FlinkDataSync/.idea/jarRepositories.xml",
-        "FlinkDataSync/.idea/misc.xml",
-        "FlinkDataSync/.idea/vcs.xml",
-        "FlinkDataSync/dependency-reduced-pom.xml",
         "FlinkDataSync/flink-sync.log",
-        "FlinkDataSync/flink-sync.log.1",
-        "FlinkDataSync/flink-sync.log.2",
-        "FlinkDataSync/flink-sync.log.3",
-        "FlinkDataSync/flink-sync.log.4",
-        "FlinkDataSync/flink-sync.log.5",
-        "FlinkDataSync/flink-sync.log.6",
-        "FlinkDataSync/flink-sync.log.7",
-        "FlinkDataSync/pom.xml",
-        "FlinkDataSync/src/main/java/com/lianda/flink/sync/MySqlCdcSync.java",
-        "FlinkDataSync/src/main/java/com/lianda/flink/sync/MySqlSink.java",
-        "FlinkDataSync/src/main/resources/log4j.properties",
         "FlinkDataSync/target/classes/com/lianda/flink/sync/MySqlCdcSync.class",
         "FlinkDataSync/target/classes/com/lianda/flink/sync/MySqlSink.class",
-        "FlinkDataSync/target/classes/log4j.properties",
         "FlinkDataSync/target/flink-data-sync-1.0-SNAPSHOT.jar",
         "FlinkDataSync/target/maven-archiver/pom.properties",
         "FlinkDataSync/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst",
         "FlinkDataSync/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst",
         "FlinkDataSync/target/original-flink-data-sync-1.0-SNAPSHOT.jar",
-        "JavaBackend/.idea/.gitignore",
-        "JavaBackend/.idea/compiler.xml",
-        "JavaBackend/.idea/encodings.xml",
-        "JavaBackend/.idea/jarRepositories.xml",
-        "JavaBackend/.idea/misc.xml",
-        "JavaBackend/.idea/vcs.xml",
-        "JavaBackend/.mvn/jvm.config",
-        "JavaBackend/.mvn/wrapper/maven-wrapper.properties",
-        "JavaBackend/hs_err_pid26756.log",
-        "JavaBackend/lib/HikariCP-4.0.3.jar",
-        "JavaBackend/lib/accessors-smart-2.4.11.jar",
-        "JavaBackend/lib/android-json-0.0.20131108.vaadin1.jar",
-        "JavaBackend/lib/antlr-2.7.7.jar",
-        "JavaBackend/lib/apiguardian-api-1.1.2.jar",
-        "JavaBackend/lib/asm-9.3.jar",
-        "JavaBackend/lib/aspectjweaver-1.9.7.jar",
-        "JavaBackend/lib/assertj-core-3.22.0.jar",
-        "JavaBackend/lib/byte-buddy-1.12.23.jar",
-        "JavaBackend/lib/byte-buddy-agent-1.12.23.jar",
-        "JavaBackend/lib/classmate-1.5.1.jar",
-        "JavaBackend/lib/commons-csv-1.9.0.jar",
-        "JavaBackend/lib/hamcrest-2.2.jar",
-        "JavaBackend/lib/hibernate-commons-annotations-5.1.2.Final.jar",
-        "JavaBackend/lib/hibernate-core-5.6.15.Final.jar",
-        "JavaBackend/lib/istack-commons-runtime-3.0.12.jar",
-        "JavaBackend/lib/jackson-annotations-2.13.5.jar",
-        "JavaBackend/lib/jackson-core-2.13.5.jar",
-        "JavaBackend/lib/jackson-databind-2.13.5.jar",
-        "JavaBackend/lib/jackson-datatype-jdk8-2.13.5.jar",
-        "JavaBackend/lib/jackson-datatype-jsr310-2.13.5.jar",
-        "JavaBackend/lib/jackson-module-parameter-names-2.13.5.jar",
-        "JavaBackend/lib/jakarta.activation-1.2.2.jar",
-        "JavaBackend/lib/jakarta.activation-api-1.2.2.jar",
-        "JavaBackend/lib/jakarta.annotation-api-1.3.5.jar",
-        "JavaBackend/lib/jakarta.persistence-api-2.2.3.jar",
-        "JavaBackend/lib/jakarta.transaction-api-1.3.3.jar",
-        "JavaBackend/lib/jakarta.xml.bind-api-2.3.3.jar",
-        "JavaBackend/lib/jandex-2.4.2.Final.jar",
-        "JavaBackend/lib/jaxb-runtime-2.3.8.jar",
-        "JavaBackend/lib/jboss-logging-3.4.3.Final.jar",
-        "JavaBackend/lib/jjwt-0.9.1.jar",
-        "JavaBackend/lib/json-path-2.7.0.jar",
-        "JavaBackend/lib/json-smart-2.4.11.jar",
-        "JavaBackend/lib/jsonassert-1.5.1.jar",
-        "JavaBackend/lib/jul-to-slf4j-1.7.36.jar",
-        "JavaBackend/lib/junit-jupiter-5.8.2.jar",
-        "JavaBackend/lib/junit-jupiter-api-5.8.2.jar",
-        "JavaBackend/lib/junit-jupiter-engine-5.8.2.jar",
-        "JavaBackend/lib/junit-jupiter-params-5.8.2.jar",
-        "JavaBackend/lib/junit-platform-commons-1.8.2.jar",
-        "JavaBackend/lib/junit-platform-engine-1.8.2.jar",
-        "JavaBackend/lib/log4j-api-2.17.2.jar",
-        "JavaBackend/lib/log4j-to-slf4j-2.17.2.jar",
-        "JavaBackend/lib/logback-classic-1.2.12.jar",
-        "JavaBackend/lib/logback-core-1.2.12.jar",
-        "JavaBackend/lib/lombok-1.18.28.jar",
-        "JavaBackend/lib/mockito-core-4.5.1.jar",
-        "JavaBackend/lib/mockito-junit-jupiter-4.5.1.jar",
-        "JavaBackend/lib/mysql-connector-java-8.0.28.jar",
-        "JavaBackend/lib/objenesis-3.2.jar",
-        "JavaBackend/lib/opentest4j-1.2.0.jar",
-        "JavaBackend/lib/protobuf-java-3.11.4.jar",
-        "JavaBackend/lib/slf4j-api-1.7.36.jar",
-        "JavaBackend/lib/snakeyaml-1.30.jar",
-        "JavaBackend/lib/spring-aop-5.3.29.jar",
-        "JavaBackend/lib/spring-aspects-5.3.29.jar",
-        "JavaBackend/lib/spring-beans-5.3.29.jar",
-        "JavaBackend/lib/spring-boot-2.7.15.jar",
-        "JavaBackend/lib/spring-boot-autoconfigure-2.7.15.jar",
-        "JavaBackend/lib/spring-boot-devtools-2.7.15.jar",
-        "JavaBackend/lib/spring-boot-starter-2.7.15.jar",
-        "JavaBackend/lib/spring-boot-starter-aop-2.7.15.jar",
-        "JavaBackend/lib/spring-boot-starter-data-jpa-2.7.15.jar",
-        "JavaBackend/lib/spring-boot-starter-jdbc-2.7.15.jar",
-        "JavaBackend/lib/spring-boot-starter-json-2.7.15.jar",
-        "JavaBackend/lib/spring-boot-starter-logging-2.7.15.jar",
-        "JavaBackend/lib/spring-boot-starter-security-2.7.15.jar",
-        "JavaBackend/lib/spring-boot-starter-test-2.7.15.jar",
-        "JavaBackend/lib/spring-boot-starter-tomcat-2.7.15.jar",
-        "JavaBackend/lib/spring-boot-starter-web-2.7.15.jar",
-        "JavaBackend/lib/spring-boot-test-2.7.15.jar",
-        "JavaBackend/lib/spring-boot-test-autoconfigure-2.7.15.jar",
-        "JavaBackend/lib/spring-context-5.3.29.jar",
-        "JavaBackend/lib/spring-core-5.3.29.jar",
-        "JavaBackend/lib/spring-data-commons-2.7.15.jar",
-        "JavaBackend/lib/spring-data-jpa-2.7.15.jar",
-        "JavaBackend/lib/spring-expression-5.3.29.jar",
-        "JavaBackend/lib/spring-jcl-5.3.29.jar",
-        "JavaBackend/lib/spring-jdbc-5.3.29.jar",
-        "JavaBackend/lib/spring-orm-5.3.29.jar",
-        "JavaBackend/lib/spring-security-config-5.7.10.jar",
-        "JavaBackend/lib/spring-security-core-5.7.10.jar",
-        "JavaBackend/lib/spring-security-crypto-5.7.10.jar",
-        "JavaBackend/lib/spring-security-web-5.7.10.jar",
-        "JavaBackend/lib/spring-test-5.3.29.jar",
-        "JavaBackend/lib/spring-tx-5.3.29.jar",
-        "JavaBackend/lib/spring-web-5.3.29.jar",
-        "JavaBackend/lib/spring-webmvc-5.3.29.jar",
-        "JavaBackend/lib/tomcat-embed-core-9.0.79.jar",
-        "JavaBackend/lib/tomcat-embed-el-9.0.79.jar",
-        "JavaBackend/lib/tomcat-embed-websocket-9.0.79.jar",
-        "JavaBackend/lib/txw2-2.3.8.jar",
-        "JavaBackend/lib/xmlunit-core-2.9.1.jar",
-        "JavaBackend/mvnvm.properties",
-        "JavaBackend/pom.xml",
-        "JavaBackend/src/main/java/com/lianda/backend/Application.java",
-        "JavaBackend/src/main/java/com/lianda/backend/annotation/RequirePermission.java",
-        "JavaBackend/src/main/java/com/lianda/backend/aspect/DataSourceAspect.java",
-        "JavaBackend/src/main/java/com/lianda/backend/config/AppConfig.java",
-        "JavaBackend/src/main/java/com/lianda/backend/config/DataSource.java",
-        "JavaBackend/src/main/java/com/lianda/backend/config/DataSourceContextHolder.java",
-        "JavaBackend/src/main/java/com/lianda/backend/config/JpaConfig.java",
-        "JavaBackend/src/main/java/com/lianda/backend/config/MultiDataSourceConfig.java",
-        "JavaBackend/src/main/java/com/lianda/backend/config/RoutingDataSourceConfig.java",
-        "JavaBackend/src/main/java/com/lianda/backend/config/SecurityConfig.java",
-        "JavaBackend/src/main/java/com/lianda/backend/config/WebConfig.java",
-        "JavaBackend/src/main/java/com/lianda/backend/controller/AuthController.java",
-        "JavaBackend/src/main/java/com/lianda/backend/controller/CustomerCompanyBusinessController.java",
-        "JavaBackend/src/main/java/com/lianda/backend/controller/DebugController.java",
-        "JavaBackend/src/main/java/com/lianda/backend/controller/MenuController.java",
-        "JavaBackend/src/main/java/com/lianda/backend/controller/PilotPlanController.java",
-        "JavaBackend/src/main/java/com/lianda/backend/controller/PortController.java",
-        "JavaBackend/src/main/java/com/lianda/backend/dto/BaseQueryDTO.java",
-        "JavaBackend/src/main/java/com/lianda/backend/dto/CustomerCompanyBusinessSearchResult.java",
-        "JavaBackend/src/main/java/com/lianda/backend/dto/LoginRequest.java",
-        "JavaBackend/src/main/java/com/lianda/backend/dto/LoginResponse.java",
-        "JavaBackend/src/main/java/com/lianda/backend/dto/PageResponse.java",
-        "JavaBackend/src/main/java/com/lianda/backend/dto/PilotPlanDTO.java",
-        "JavaBackend/src/main/java/com/lianda/backend/dto/PilotPlanDetailDTO.java",
+        "JavaBackend/src/main/resources/application.properties",
+        "JavaBackend/target/classes/application.properties",
+        "com.lianda.auth/src/main/resources/application.properties",
+        "com.lianda.auth/target/classes/application.properties",
         "JavaBackend/src/main/java/com/lianda/backend/dto/PilotPlanImportDTO.java",
-        "JavaBackend/src/main/java/com/lianda/backend/dto/PilotPlanProjection.java",
-        "JavaBackend/src/main/java/com/lianda/backend/dto/PilotPlanQueryDTO.java",
-        "JavaBackend/src/main/java/com/lianda/backend/dto/PortDTO.java",
-        "JavaBackend/src/main/java/com/lianda/backend/dto/ShippingCompanyDTO.java",
-        "JavaBackend/src/main/java/com/lianda/backend/interceptor/PermissionInterceptor.java",
-        "JavaBackend/src/main/java/com/lianda/backend/model/BusCustomerCompany.java",
-        "JavaBackend/src/main/java/com/lianda/backend/model/BusCustomerCompanyBusiness.java",
-        "JavaBackend/src/main/java/com/lianda/backend/model/BusCustomerCustomerType.java",
-        "JavaBackend/src/main/java/com/lianda/backend/model/BusCustomerCustomerTypeId.java",
-        "JavaBackend/src/main/java/com/lianda/backend/model/BusPilotTypeSetting.java",
-        "JavaBackend/src/main/java/com/lianda/backend/model/BusShip.java",
-        "JavaBackend/src/main/java/com/lianda/backend/model/DispBerthage.java",
-        "JavaBackend/src/main/java/com/lianda/backend/model/DispBerthageDictionary.java",
-        "JavaBackend/src/main/java/com/lianda/backend/model/DispBerthageSetting.java",
-        "JavaBackend/src/main/java/com/lianda/backend/model/DispDispatcher.java",
-        "JavaBackend/src/main/java/com/lianda/backend/model/DispPilot.java",
         "JavaBackend/src/main/java/com/lianda/backend/model/DispPilotPlan.java",
-        "JavaBackend/src/main/java/com/lianda/backend/model/DispPort.java",
-        "JavaBackend/src/main/java/com/lianda/backend/model/DispPortDictionary.java",
-        "JavaBackend/src/main/java/com/lianda/backend/model/DispWaterway.java",
-        "JavaBackend/src/main/java/com/lianda/backend/model/PilotPlan.java",
-        "JavaBackend/src/main/java/com/lianda/backend/model/SysDictionaryItem.java",
-        "JavaBackend/src/main/java/com/lianda/backend/model/SysMenu.java",
-        "JavaBackend/src/main/java/com/lianda/backend/model/SysUser.java",
-        "JavaBackend/src/main/java/com/lianda/backend/model/User.java",
-        "JavaBackend/src/main/java/com/lianda/backend/repository/BusCustomerCompanyBusinessRepository.java",
-        "JavaBackend/src/main/java/com/lianda/backend/repository/BusCustomerCompanyBusinessWriteRepository.java",
+        "JavaBackend/src/main/java/com/lianda/backend/service/PilotPlanService.java",
+        "vue-frontend/src/utils/tokenRefreshManager.js",
+        "JavaBackend/target/classes/com/lianda/backend/dto/LoginRequest.class",
+        "JavaBackend/target/classes/com/lianda/backend/dto/LoginResponse.class",
+        "JavaBackend/target/classes/com/lianda/backend/dto/PilotPlanDTO.class",
+        "JavaBackend/target/classes/com/lianda/backend/dto/PilotPlanQueryDTO.class",
+        "JavaBackend/target/classes/com/lianda/backend/model/DispDispatcher.class",
+        "JavaBackend/target/classes/com/lianda/backend/model/SysMenu.class",
+        "JavaBackend/target/classes/com/lianda/backend/model/User.class",
+        "JavaBackend/target/classes/com/lianda/backend/repository/BusCustomerCompanyRepository.class",
+        "JavaBackend/target/classes/com/lianda/backend/repository/BusShipRepository.class",
+        "JavaBackend/target/classes/com/lianda/backend/repository/DispBerthageRepository.class",
+        "JavaBackend/target/classes/com/lianda/backend/repository/DispDispatcherRepository.class",
+        "JavaBackend/target/classes/com/lianda/backend/repository/DispPilotRepository.class",
+        "JavaBackend/target/classes/com/lianda/backend/repository/DispPortRepository.class",
+        "JavaBackend/target/classes/com/lianda/backend/repository/DispWaterwayRepository.class",
+        "JavaBackend/target/classes/com/lianda/backend/repository/SysDictionaryItemRepository.class",
+        "JavaBackend/target/classes/com/lianda/backend/service/AuthService.class",
+        "JavaBackend/target/classes/com/lianda/backend/service/BusPilotTypeSettingCacheService.class",
+        "JavaBackend/target/classes/com/lianda/backend/service/CommonDataService.class",
+        "JavaBackend/target/classes/com/lianda/backend/service/MenuService.class",
+        "JavaBackend/src/main/java/com/lianda/backend/dto/PilotPlanDTO.java",
+        "JavaBackend/src/main/java/com/lianda/backend/repository/DispPilotPlanRepository.java",
+        "JavaBackend/target/classes/com/lianda/backend/repository/DispPilotPlanRepository.class",
+        "JavaBackend/src/main/java/com/lianda/backend/dto/PilotPlanQueryDTO.java",
         "JavaBackend/src/main/java/com/lianda/backend/repository/BusCustomerCompanyRepository.java",
-        "JavaBackend/src/main/java/com/lianda/backend/repository/BusCustomerCompanyWriteRepository.java",
-        "JavaBackend/src/main/java/com/lianda/backend/repository/BusCustomerCustomerTypeRepository.java",
-        "JavaBackend/src/main/java/com/lianda/backend/repository/BusCustomerCustomerTypeWriteRepository.java",
-        "JavaBackend/src/main/java/com/lianda/backend/repository/BusPilotTypeSettingRepository.java",
-        "JavaBackend/src/main/java/com/lianda/backend/repository/BusShipReadRepository.java",
         "JavaBackend/src/main/java/com/lianda/backend/repository/BusShipRepository.java",
-        "JavaBackend/src/main/java/com/lianda/backend/repository/BusShipWriteRepository.java",
-        "JavaBackend/src/main/java/com/lianda/backend/repository/DispBerthageDictionaryRepository.java",
         "JavaBackend/src/main/java/com/lianda/backend/repository/DispBerthageRepository.java",
-        "JavaBackend/src/main/java/com/lianda/backend/repository/DispBerthageSettingRepository.java",
-        "JavaBackend/src/main/java/com/lianda/backend/repository/DispBerthageSettingWriteRepository.java",
-        "JavaBackend/src/main/java/com/lianda/backend/repository/DispBerthageWriteRepository.java",
-        "JavaBackend/src/main/java/com/lianda/backend/repository/DispDispatcherRepository.java",
-        "JavaBackend/src/main/java/com/lianda/backend/repository/DispPilotPlanReadRepository.java",
-        "JavaBackend/src/main/java/com/lianda/backend/repository/DispPilotPlanRepository.java",
-        "JavaBackend/src/main/java/com/lianda/backend/repository/DispPilotPlanWriteRepository.java",
         "JavaBackend/src/main/java/com/lianda/backend/repository/DispPilotRepository.java",
-        "JavaBackend/src/main/java/com/lianda/backend/repository/DispPilotWriteRepository.java",
-        "JavaBackend/src/main/java/com/lianda/backend/repository/DispPortDictionaryRepository.java",
-        "JavaBackend/src/main/java/com/lianda/backend/repository/DispPortReadRepository.java",
         "JavaBackend/src/main/java/com/lianda/backend/repository/DispPortRepository.java",
-        "JavaBackend/src/main/java/com/lianda/backend/repository/DispPortWriteRepository.java",
         "JavaBackend/src/main/java/com/lianda/backend/repository/DispWaterwayRepository.java",
-        "JavaBackend/src/main/java/com/lianda/backend/repository/DispWaterwayWriteRepository.java",
-        "JavaBackend/src/main/java/com/lianda/backend/repository/PilotPlanRepository.java",
         "JavaBackend/src/main/java/com/lianda/backend/repository/SysDictionaryItemRepository.java",
-        "JavaBackend/src/main/java/com/lianda/backend/repository/SysMenuRepository.java",
-        "JavaBackend/src/main/java/com/lianda/backend/repository/UserRepository.java",
+        "JavaBackend/target/classes/com/lianda/backend/controller/PilotPlanController.class",
+        "JavaBackend/pom.xml",
+        "JavaBackend/src/main/java/com/lianda/backend/dto/LoginRequest.java",
+        "JavaBackend/src/main/java/com/lianda/backend/dto/LoginResponse.java",
+        "JavaBackend/src/main/java/com/lianda/backend/model/SysMenu.java",
+        "JavaBackend/src/main/java/com/lianda/backend/model/User.java",
+        "compile_error.txt",
+        "JavaBackend/src/main/java/com/lianda/backend/config/RoutingDataSourceConfig.java",
+        "JavaBackend/src/main/java/com/lianda/backend/controller/PilotPlanController.java",
+        "JavaBackend/src/main/java/com/lianda/backend/model/DispDispatcher.java",
+        "JavaBackend/src/main/java/com/lianda/backend/repository/DispDispatcherRepository.java",
         "JavaBackend/src/main/java/com/lianda/backend/service/AuthService.java",
         "JavaBackend/src/main/java/com/lianda/backend/service/BusPilotTypeSettingCacheService.java",
         "JavaBackend/src/main/java/com/lianda/backend/service/CommonDataService.java",
         "JavaBackend/src/main/java/com/lianda/backend/service/MenuService.java",
-        "JavaBackend/src/main/java/com/lianda/backend/service/PilotPlanService.java",
-        "JavaBackend/src/main/java/com/lianda/backend/service/UserDetailsServiceImpl.java",
-        "JavaBackend/src/main/java/com/lianda/backend/test/DatabaseMenuUpdater.java",
-        "JavaBackend/src/main/java/com/lianda/backend/test/MD5Test.class",
-        "JavaBackend/src/main/java/com/lianda/backend/test/MD5Test.java",
-        "JavaBackend/src/main/java/com/lianda/backend/test/MenuUrlUpdater.java",
-        "JavaBackend/src/main/java/com/lianda/backend/util/CurrentUserUtil.java",
-        "JavaBackend/src/main/java/com/lianda/backend/util/JwtUtil.java",
-        "JavaBackend/src/main/resources/application-dev.properties",
-        "JavaBackend/src/main/resources/application.properties",
-        "JavaBackend/target/classes/application-dev.properties",
-        "JavaBackend/target/classes/application.properties",
+        "JavaBackend/src/main/java/com/lianda/backend/controller/ShipCompanyController.java",
+        "JavaBackend/target/classes/com/lianda/backend/controller/PortController$1.class",
+        "JavaBackend/target/classes/com/lianda/backend/controller/PortController.class",
+        "JavaBackend/target/classes/com/lianda/backend/dto/ShippingCompanyDTO.class",
+        "JavaBackend/target/classes/com/lianda/backend/repository/DispPilotPlanReadRepository.class",
+        ".trae/skills/login-debugger/SKILL.md",
+        "JavaBackend/src/main/java/com/lianda/backend/controller/PortController.java",
+        "JavaBackend/src/main/java/com/lianda/backend/dto/ShippingCompanyDTO.java",
+        "JavaBackend/src/main/java/com/lianda/backend/repository/BusCustomerCustomerTypeRepository.java",
+        "com.lianda.auth/src/main/java/com/lianda/auth/config/SecurityConfig.java",
+        "com.lianda.auth/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/createdFiles.lst",
+        ".trae/rules/query-error-debugging.md",
+        "JavaBackend/src/main/java/com/lianda/backend/model/BusCustomerCustomerType.java",
+        ".trae/skills/web-dev-best-practices/SKILL.md",
+        "JavaBackend/target/classes/com/lianda/backend/model/BusCustomerCustomerType.class",
+        "JavaBackend/src/main/java/com/lianda/backend/repository/DispPilotPlanReadRepository.java",
+        "vue-frontend/src/components/AdaptiveTable.vue",
+        "vue-frontend/src/assets/styles/layout.css",
+        "vue-frontend/src/components/GridLayoutTable.vue",
+        "vue-frontend/src/components/SimpleAdaptiveTable.vue",
+        "vue-frontend/src/utils/adaptiveLayout.js",
+        "vue-frontend/src/main.js",
+        "vue-frontend/src/utils/layout-best-practices.md",
+        "pilotplan_test_data.txt",
         "JavaBackend/target/classes/com/lianda/backend/Application.class",
         "JavaBackend/target/classes/com/lianda/backend/annotation/RequirePermission.class",
         "JavaBackend/target/classes/com/lianda/backend/aspect/DataSourceAspect.class",
@@ -255,7 +227,6 @@
         "JavaBackend/target/classes/com/lianda/backend/config/RoutingDataSourceConfig$DataSourceType.class",
         "JavaBackend/target/classes/com/lianda/backend/config/RoutingDataSourceConfig$RoutingDataSource.class",
         "JavaBackend/target/classes/com/lianda/backend/config/RoutingDataSourceConfig.class",
-        "JavaBackend/target/classes/com/lianda/backend/config/SecurityConfig.class",
         "JavaBackend/target/classes/com/lianda/backend/config/WebConfig.class",
         "JavaBackend/target/classes/com/lianda/backend/controller/AuthController.class",
         "JavaBackend/target/classes/com/lianda/backend/controller/CustomerCompanyBusinessController$1.class",
@@ -263,78 +234,49 @@
         "JavaBackend/target/classes/com/lianda/backend/controller/CustomerCompanyBusinessController.class",
         "JavaBackend/target/classes/com/lianda/backend/controller/DebugController.class",
         "JavaBackend/target/classes/com/lianda/backend/controller/MenuController.class",
-        "JavaBackend/target/classes/com/lianda/backend/controller/PilotPlanController.class",
-        "JavaBackend/target/classes/com/lianda/backend/controller/PortController$1.class",
-        "JavaBackend/target/classes/com/lianda/backend/controller/PortController.class",
         "JavaBackend/target/classes/com/lianda/backend/dto/BaseQueryDTO.class",
         "JavaBackend/target/classes/com/lianda/backend/dto/CustomerCompanyBusinessSearchResult.class",
-        "JavaBackend/target/classes/com/lianda/backend/dto/LoginRequest.class",
-        "JavaBackend/target/classes/com/lianda/backend/dto/LoginResponse.class",
         "JavaBackend/target/classes/com/lianda/backend/dto/PageResponse.class",
-        "JavaBackend/target/classes/com/lianda/backend/dto/PilotPlanDTO.class",
         "JavaBackend/target/classes/com/lianda/backend/dto/PilotPlanDetailDTO.class",
-        "JavaBackend/target/classes/com/lianda/backend/dto/PilotPlanImportDTO.class",
         "JavaBackend/target/classes/com/lianda/backend/dto/PilotPlanProjection.class",
-        "JavaBackend/target/classes/com/lianda/backend/dto/PilotPlanQueryDTO.class",
         "JavaBackend/target/classes/com/lianda/backend/dto/PortDTO.class",
-        "JavaBackend/target/classes/com/lianda/backend/dto/ShippingCompanyDTO.class",
         "JavaBackend/target/classes/com/lianda/backend/interceptor/PermissionInterceptor.class",
         "JavaBackend/target/classes/com/lianda/backend/model/BusCustomerCompany.class",
         "JavaBackend/target/classes/com/lianda/backend/model/BusCustomerCompanyBusiness.class",
-        "JavaBackend/target/classes/com/lianda/backend/model/BusCustomerCustomerType.class",
         "JavaBackend/target/classes/com/lianda/backend/model/BusCustomerCustomerTypeId.class",
         "JavaBackend/target/classes/com/lianda/backend/model/BusPilotTypeSetting.class",
         "JavaBackend/target/classes/com/lianda/backend/model/BusShip.class",
         "JavaBackend/target/classes/com/lianda/backend/model/DispBerthage.class",
         "JavaBackend/target/classes/com/lianda/backend/model/DispBerthageDictionary.class",
         "JavaBackend/target/classes/com/lianda/backend/model/DispBerthageSetting.class",
-        "JavaBackend/target/classes/com/lianda/backend/model/DispDispatcher.class",
         "JavaBackend/target/classes/com/lianda/backend/model/DispPilot.class",
-        "JavaBackend/target/classes/com/lianda/backend/model/DispPilotPlan.class",
         "JavaBackend/target/classes/com/lianda/backend/model/DispPort.class",
         "JavaBackend/target/classes/com/lianda/backend/model/DispPortDictionary.class",
         "JavaBackend/target/classes/com/lianda/backend/model/DispWaterway.class",
         "JavaBackend/target/classes/com/lianda/backend/model/PilotPlan.class",
         "JavaBackend/target/classes/com/lianda/backend/model/SysDictionaryItem.class",
-        "JavaBackend/target/classes/com/lianda/backend/model/SysMenu.class",
         "JavaBackend/target/classes/com/lianda/backend/model/SysUser.class",
-        "JavaBackend/target/classes/com/lianda/backend/model/User.class",
         "JavaBackend/target/classes/com/lianda/backend/repository/BusCustomerCompanyBusinessRepository.class",
         "JavaBackend/target/classes/com/lianda/backend/repository/BusCustomerCompanyBusinessWriteRepository.class",
-        "JavaBackend/target/classes/com/lianda/backend/repository/BusCustomerCompanyRepository.class",
         "JavaBackend/target/classes/com/lianda/backend/repository/BusCustomerCompanyWriteRepository.class",
         "JavaBackend/target/classes/com/lianda/backend/repository/BusCustomerCustomerTypeRepository.class",
         "JavaBackend/target/classes/com/lianda/backend/repository/BusCustomerCustomerTypeWriteRepository.class",
         "JavaBackend/target/classes/com/lianda/backend/repository/BusPilotTypeSettingRepository.class",
         "JavaBackend/target/classes/com/lianda/backend/repository/BusShipReadRepository.class",
-        "JavaBackend/target/classes/com/lianda/backend/repository/BusShipRepository.class",
         "JavaBackend/target/classes/com/lianda/backend/repository/BusShipWriteRepository.class",
         "JavaBackend/target/classes/com/lianda/backend/repository/DispBerthageDictionaryRepository.class",
-        "JavaBackend/target/classes/com/lianda/backend/repository/DispBerthageRepository.class",
         "JavaBackend/target/classes/com/lianda/backend/repository/DispBerthageSettingRepository.class",
         "JavaBackend/target/classes/com/lianda/backend/repository/DispBerthageSettingWriteRepository.class",
         "JavaBackend/target/classes/com/lianda/backend/repository/DispBerthageWriteRepository.class",
-        "JavaBackend/target/classes/com/lianda/backend/repository/DispDispatcherRepository.class",
-        "JavaBackend/target/classes/com/lianda/backend/repository/DispPilotPlanReadRepository.class",
-        "JavaBackend/target/classes/com/lianda/backend/repository/DispPilotPlanRepository.class",
         "JavaBackend/target/classes/com/lianda/backend/repository/DispPilotPlanWriteRepository.class",
-        "JavaBackend/target/classes/com/lianda/backend/repository/DispPilotRepository.class",
         "JavaBackend/target/classes/com/lianda/backend/repository/DispPilotWriteRepository.class",
         "JavaBackend/target/classes/com/lianda/backend/repository/DispPortDictionaryRepository.class",
         "JavaBackend/target/classes/com/lianda/backend/repository/DispPortReadRepository.class",
-        "JavaBackend/target/classes/com/lianda/backend/repository/DispPortRepository.class",
         "JavaBackend/target/classes/com/lianda/backend/repository/DispPortWriteRepository.class",
-        "JavaBackend/target/classes/com/lianda/backend/repository/DispWaterwayRepository.class",
         "JavaBackend/target/classes/com/lianda/backend/repository/DispWaterwayWriteRepository.class",
         "JavaBackend/target/classes/com/lianda/backend/repository/PilotPlanRepository.class",
-        "JavaBackend/target/classes/com/lianda/backend/repository/SysDictionaryItemRepository.class",
         "JavaBackend/target/classes/com/lianda/backend/repository/SysMenuRepository.class",
         "JavaBackend/target/classes/com/lianda/backend/repository/UserRepository.class",
-        "JavaBackend/target/classes/com/lianda/backend/service/AuthService.class",
-        "JavaBackend/target/classes/com/lianda/backend/service/BusPilotTypeSettingCacheService.class",
-        "JavaBackend/target/classes/com/lianda/backend/service/CommonDataService.class",
-        "JavaBackend/target/classes/com/lianda/backend/service/MenuService.class",
-        "JavaBackend/target/classes/com/lianda/backend/service/PilotPlanService.class",
         "JavaBackend/target/classes/com/lianda/backend/service/UserDetailsServiceImpl.class",
         "JavaBackend/target/classes/com/lianda/backend/test/DatabaseMenuUpdater.class",
         "JavaBackend/target/classes/com/lianda/backend/test/MD5Test.class",
@@ -342,120 +284,12 @@
         "JavaBackend/target/classes/com/lianda/backend/util/CurrentUserUtil$1.class",
         "JavaBackend/target/classes/com/lianda/backend/util/CurrentUserUtil.class",
         "JavaBackend/target/classes/com/lianda/backend/util/JwtUtil.class",
-        "JavaBackend/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst",
-        "JavaBackend/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst",
-        "com.lianda.auth/.idea/.gitignore",
-        "com.lianda.auth/.idea/compiler.xml",
-        "com.lianda.auth/.idea/encodings.xml",
-        "com.lianda.auth/.idea/jarRepositories.xml",
-        "com.lianda.auth/.idea/misc.xml",
-        "com.lianda.auth/.idea/vcs.xml",
-        "com.lianda.auth/pom.xml",
-        "com.lianda.auth/src/main/java/com/lianda/auth/AuthApplication.java",
-        "com.lianda.auth/src/main/java/com/lianda/auth/config/AppConfig.java",
-        "com.lianda.auth/src/main/java/com/lianda/auth/config/CacheConfig.java",
-        "com.lianda.auth/src/main/java/com/lianda/auth/config/SecurityConfig.java",
-        "com.lianda.auth/src/main/java/com/lianda/auth/controller/AuthController.java",
-        "com.lianda.auth/src/main/java/com/lianda/auth/controller/UserPermissionController.java",
-        "com.lianda.auth/src/main/java/com/lianda/auth/dto/EncryptedLoginRequest.java",
-        "com.lianda.auth/src/main/java/com/lianda/auth/dto/LoginRequest.java",
-        "com.lianda.auth/src/main/java/com/lianda/auth/dto/LoginResponse.java",
-        "com.lianda.auth/src/main/java/com/lianda/auth/entity/RoleFunctionCodeKey.java",
-        "com.lianda.auth/src/main/java/com/lianda/auth/entity/SysFunctionCode.java",
-        "com.lianda.auth/src/main/java/com/lianda/auth/entity/SysRole.java",
-        "com.lianda.auth/src/main/java/com/lianda/auth/entity/SysRoleFunctionCode.java",
-        "com.lianda.auth/src/main/java/com/lianda/auth/entity/SysUser.java",
-        "com.lianda.auth/src/main/java/com/lianda/auth/entity/SysUserRole.java",
-        "com.lianda.auth/src/main/java/com/lianda/auth/entity/User.java",
-        "com.lianda.auth/src/main/java/com/lianda/auth/entity/UserRoleKey.java",
-        "com.lianda.auth/src/main/java/com/lianda/auth/filter/JwtAuthenticationFilter.java",
-        "com.lianda.auth/src/main/java/com/lianda/auth/repository/SysFunctionCodeRepository.java",
-        "com.lianda.auth/src/main/java/com/lianda/auth/repository/SysRoleFunctionCodeRepository.java",
-        "com.lianda.auth/src/main/java/com/lianda/auth/repository/SysUserRoleRepository.java",
-        "com.lianda.auth/src/main/java/com/lianda/auth/repository/UserRepository.java",
-        "com.lianda.auth/src/main/java/com/lianda/auth/service/AuthService.java",
-        "com.lianda.auth/src/main/java/com/lianda/auth/service/PermissionService.java",
-        "com.lianda.auth/src/main/java/com/lianda/auth/service/UserDetailsServiceImpl.java",
-        "com.lianda.auth/src/main/java/com/lianda/auth/service/UserPermissionService.java",
-        "com.lianda.auth/src/main/java/com/lianda/auth/service/UserPermissionServiceImpl.java",
-        "com.lianda.auth/src/main/java/com/lianda/auth/util/EncryptionUtil.java",
-        "com.lianda.auth/src/main/java/com/lianda/auth/util/JwtUtil.java",
-        "com.lianda.auth/src/main/java/com/lianda/auth/util/MD5PasswordEncoder.java",
-        "com.lianda.auth/src/main/java/com/lianda/auth/util/TestEncryptionUtil.java",
-        "com.lianda.auth/src/main/resources/application.properties",
-        "com.lianda.auth/src/test/java/com/lianda/auth/util/EncryptionUtilTest.java",
-        "com.lianda.auth/target/classes/application.properties",
-        "com.lianda.auth/target/classes/com/lianda/auth/AuthApplication.class",
-        "com.lianda.auth/target/classes/com/lianda/auth/config/AppConfig.class",
-        "com.lianda.auth/target/classes/com/lianda/auth/config/CacheConfig.class",
-        "com.lianda.auth/target/classes/com/lianda/auth/config/SecurityConfig.class",
-        "com.lianda.auth/target/classes/com/lianda/auth/controller/AuthController.class",
-        "com.lianda.auth/target/classes/com/lianda/auth/controller/UserPermissionController.class",
-        "com.lianda.auth/target/classes/com/lianda/auth/dto/EncryptedLoginRequest.class",
-        "com.lianda.auth/target/classes/com/lianda/auth/dto/LoginRequest.class",
-        "com.lianda.auth/target/classes/com/lianda/auth/dto/LoginResponse$TokenData.class",
-        "com.lianda.auth/target/classes/com/lianda/auth/dto/LoginResponse.class",
-        "com.lianda.auth/target/classes/com/lianda/auth/entity/RoleFunctionCodeKey.class",
-        "com.lianda.auth/target/classes/com/lianda/auth/entity/SysFunctionCode.class",
-        "com.lianda.auth/target/classes/com/lianda/auth/entity/SysRole.class",
-        "com.lianda.auth/target/classes/com/lianda/auth/entity/SysRoleFunctionCode.class",
-        "com.lianda.auth/target/classes/com/lianda/auth/entity/SysUser.class",
-        "com.lianda.auth/target/classes/com/lianda/auth/entity/SysUserRole.class",
-        "com.lianda.auth/target/classes/com/lianda/auth/entity/User.class",
-        "com.lianda.auth/target/classes/com/lianda/auth/entity/UserRoleKey.class",
-        "com.lianda.auth/target/classes/com/lianda/auth/filter/JwtAuthenticationFilter.class",
-        "com.lianda.auth/target/classes/com/lianda/auth/repository/SysFunctionCodeRepository.class",
-        "com.lianda.auth/target/classes/com/lianda/auth/repository/SysRoleFunctionCodeRepository.class",
-        "com.lianda.auth/target/classes/com/lianda/auth/repository/SysUserRoleRepository.class",
-        "com.lianda.auth/target/classes/com/lianda/auth/repository/UserRepository.class",
-        "com.lianda.auth/target/classes/com/lianda/auth/service/AuthService.class",
-        "com.lianda.auth/target/classes/com/lianda/auth/service/PermissionService.class",
-        "com.lianda.auth/target/classes/com/lianda/auth/service/UserDetailsServiceImpl.class",
-        "com.lianda.auth/target/classes/com/lianda/auth/service/UserPermissionService.class",
-        "com.lianda.auth/target/classes/com/lianda/auth/service/UserPermissionServiceImpl.class",
-        "com.lianda.auth/target/classes/com/lianda/auth/util/EncryptionUtil.class",
-        "com.lianda.auth/target/classes/com/lianda/auth/util/JwtUtil.class",
-        "com.lianda.auth/target/classes/com/lianda/auth/util/MD5PasswordEncoder.class",
-        "com.lianda.auth/target/classes/com/lianda/auth/util/TestEncryptionUtil.class",
-        "com.lianda.auth/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst",
-        "com.lianda.auth/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst",
-        "com.lianda.auth/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/createdFiles.lst",
-        "com.lianda.auth/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/inputFiles.lst",
-        "com.lianda.auth/target/test-classes/com/lianda/auth/util/EncryptionUtilTest.class",
-        "database_structure.md",
-        "vue-frontend/.gitignore",
-        "vue-frontend/.nvmdrc",
-        "vue-frontend/README.md",
-        "vue-frontend/babel.config.js",
-        "vue-frontend/consistency-test.js",
-        "vue-frontend/integration-test.js",
-        "vue-frontend/jsconfig.json",
-        "vue-frontend/package-lock.json",
-        "vue-frontend/package.json",
-        "vue-frontend/public/favicon.ico",
-        "vue-frontend/public/index.html",
-        "vue-frontend/src/App.vue",
-        "vue-frontend/src/assets/logo.png",
-        "vue-frontend/src/components/Announcement.vue",
-        "vue-frontend/src/components/HelloWorld.vue",
-        "vue-frontend/src/components/HomePage.vue",
-        "vue-frontend/src/components/HomeTabs.vue",
-        "vue-frontend/src/components/Login.vue",
-        "vue-frontend/src/components/MainIndex.vue",
-        "vue-frontend/src/components/MyNotice.vue",
-        "vue-frontend/src/components/PilotPlan.vue",
-        "vue-frontend/src/components/RoleManagement.vue",
-        "vue-frontend/src/components/UserManagement.vue",
-        "vue-frontend/src/directives/permission.js",
-        "vue-frontend/src/main.js",
-        "vue-frontend/src/router/index.js",
-        "vue-frontend/src/utils/permission.js",
-        "vue-frontend/src/utils/tokenRefreshManager.js",
-        "vue-frontend/src/utils/tokenUtils.js",
-        "vue-frontend/test-cryptojs-format.js",
-        "vue-frontend/test-encryption.js",
-        "vue-frontend/test-full-flow.js",
-        "vue-frontend/vue.config.js"
+        "JavaBackend/target/classes/com/lianda/backend/controller/ShipCompanyController.class",
+        "JavaBackend/src/main/java/com/lianda/backend/test/QueryFunctionCodes.java",
+        "JavaBackend/target/classes/com/lianda/backend/test/QueryFunctionCodes.class",
+        "JavaBackend/src/main/resources/logback-spring.xml",
+        "JavaBackend/target/classes/logback-spring.xml",
+        "JavaBackend/logs/JavaBackend.log"
       ]
     }
   ],

+ 26 - 0
.vscode/launch.json

@@ -0,0 +1,26 @@
+{
+    "version": "0.2.0",
+    "configurations": [
+        {
+            // 使用 IntelliSense 找出 C# 调试存在哪些属性
+            // 将悬停用于现有属性的说明
+            // 有关详细信息,请访问 https://github.com/dotnet/vscode-csharp/blob/main/debugger-launchjson.md
+            "name": ".NET Core Launch (console)",
+            "type": "coreclr",
+            "request": "launch",
+            "preLaunchTask": "build",
+            // 如果已更改目标框架,请确保更新程序路径。
+            "program": "${workspaceFolder}/DataMigration/bin/Debug/netcoreapp3.1/DataMigration.dll",
+            "args": [],
+            "cwd": "${workspaceFolder}/DataMigration",
+            // 有关“控制台”字段的详细信息,请参阅 https://aka.ms/VSCode-CS-LaunchJson-Console
+            "console": "internalConsole",
+            "stopAtEntry": false
+        },
+        {
+            "name": ".NET Core Attach",
+            "type": "coreclr",
+            "request": "attach"
+        }
+    ]
+}

+ 4 - 0
.vscode/settings.json

@@ -0,0 +1,4 @@
+{
+    "java.compile.nullAnalysis.mode": "automatic",
+    "java.configuration.updateBuildConfiguration": "automatic"
+}

+ 41 - 0
.vscode/tasks.json

@@ -0,0 +1,41 @@
+{
+    "version": "2.0.0",
+    "tasks": [
+        {
+            "label": "build",
+            "command": "dotnet",
+            "type": "process",
+            "args": [
+                "build",
+                "${workspaceFolder}/DataMigration/DataMigration.csproj",
+                "/property:GenerateFullPaths=true",
+                "/consoleloggerparameters:NoSummary;ForceNoAlign"
+            ],
+            "problemMatcher": "$msCompile"
+        },
+        {
+            "label": "publish",
+            "command": "dotnet",
+            "type": "process",
+            "args": [
+                "publish",
+                "${workspaceFolder}/DataMigration/DataMigration.csproj",
+                "/property:GenerateFullPaths=true",
+                "/consoleloggerparameters:NoSummary;ForceNoAlign"
+            ],
+            "problemMatcher": "$msCompile"
+        },
+        {
+            "label": "watch",
+            "command": "dotnet",
+            "type": "process",
+            "args": [
+                "watch",
+                "run",
+                "--project",
+                "${workspaceFolder}/DataMigration/DataMigration.csproj"
+            ],
+            "problemMatcher": "$msCompile"
+        }
+    ]
+}

+ 140 - 0
DEBUG_GUIDE.md

@@ -0,0 +1,140 @@
+# 拖轮项目多服务调试指南
+
+## 项目结构
+
+本项目由四个服务组成:
+
+1. **com.lianda.auth** - 认证服务
+   - 端口: 8083
+   - 路径: `/auth` 作为认证服务根路径
+
+2. **JavaBackend** - Spring Boot 后端服务
+   - 端口: 8080
+   - 路径: `/api` 作为API根路径
+
+3. **Vue Frontend** - Vue.js 前端服务
+   - 端口: 8082
+   - API代理: 将 `/api` 请求代理到后端
+
+4. **FlinkDataSync** - CDC 数据同步服务
+   - 无端口,后台运行
+   - 功能: 实时将 TugboatCommon 数据库同步到 LiandaTugboatMIS 数据库
+
+## 启动方式
+
+### 方式一:一键启动脚本
+
+运行 PowerShell 脚本:
+```powershell
+.\start-all.ps1
+```
+
+### 方式二:手动启动
+
+#### 1. 启动认证服务
+
+进入 com.lianda.auth 目录:
+```bash
+cd com.lianda.auth
+```
+
+使用 Maven 启动:
+```bash
+mvn spring-boot:run
+```
+
+#### 2. 启动后端服务
+
+进入 JavaBackend 目录:
+```bash
+cd JavaBackend
+```
+
+使用 Maven 启动:
+```bash
+mvn spring-boot:run
+```
+
+或者打包后运行:
+```bash
+mvn clean package -DskipTests
+java -jar target/java-backend-1.0-SNAPSHOT.jar
+```
+
+#### 3. 启动前端服务
+
+进入 vue-frontend 目录:
+```bash
+cd vue-frontend
+```
+
+安装依赖(首次运行时):
+```bash
+npm install
+```
+
+启动开发服务器:
+```bash
+npm run serve
+```
+
+#### 4. 启动数据同步服务
+
+进入 FlinkDataSync 目录:
+```bash
+cd FlinkDataSync
+```
+
+构建项目:
+```bash
+mvn clean package -DskipTests
+```
+
+运行数据同步服务:
+```bash
+java -cp target/flink-data-sync-1.0-SNAPSHOT.jar com.lianda.flink.sync.MySqlCdcSync
+```
+
+## 服务地址
+
+- **认证服务地址**: http://localhost:8083/auth
+- **前端访问地址**: http://localhost:8082
+- **后端API地址**: http://localhost:8080/api
+- **API代理**: 前端通过 `/api` 路径代理到后端
+- **数据同步服务**: 后台运行,无前端访问地址
+
+## 数据库配置
+
+后端配置了双数据源:
+
+- **读库 (liandatugboatmis)**: 用于读取业务数据
+- **写库 (tugboatcommon)**: 用于写入公共数据
+
+数据库连接信息在 `application.properties` 中配置。
+
+## 调试注意事项
+
+1. 确保数据库服务正在运行且可以连接
+2. 检查防火墙设置,确保端口 8080、8082 和 8083 可访问
+3. 前端通过代理自动处理跨域问题
+4. 后端JWT认证机制需要正确配置密钥
+5. FlinkDataSync 需要连接到 MySQL 数据库,确保数据库可访问
+
+## 常见问题
+
+### 1. 端口被占用
+- 检查是否有其他进程占用了 8080、8082 或 8083 端口
+- 修改相应配置文件中的端口号
+
+### 2. 数据库连接失败
+- 确认数据库服务正在运行
+- 检查 `application.properties` 中的数据库连接信息
+
+### 3. 前端无法访问后端API
+- 确认后端服务已启动
+- 检查 `vue.config.js` 中的代理配置
+
+### 4. FlinkDataSync 启动失败
+- 确认 MySQL 数据库可访问
+- 检查数据库连接配置(hostname: 192.168.0.77, port: 3306)
+- 确认数据库用户权限正确(root/bowin@2023)

+ 20 - 0
DataMigration/DataMigration.csproj

@@ -0,0 +1,20 @@
+<Project Sdk="Microsoft.NET.Sdk">
+
+  <PropertyGroup>
+    <OutputType>Exe</OutputType>
+    <TargetFramework>netcoreapp3.1</TargetFramework>
+  </PropertyGroup>
+
+  <ItemGroup>
+    <PackageReference Include="MySql.Data" Version="8.0.28" />
+    <PackageReference Include="Newtonsoft.Json" Version="13.0.1" />
+    <PackageReference Include="System.Data.SqlClient" Version="4.8.3" />
+  </ItemGroup>
+
+  <ItemGroup>
+    <None Update="appsettings.json">
+      <CopyToOutputDirectory>Always</CopyToOutputDirectory>
+    </None>
+  </ItemGroup>
+
+</Project>

+ 42 - 0
DataMigration/GetForeignKeyInfo.sql

@@ -0,0 +1,42 @@
+-- SQL Server 查询外键和索引信息的脚本
+
+-- 查询所有外键信息
+SELECT 
+    fk.name AS ForeignKeyName,
+    t1.name AS TableName,
+    c1.name AS ColumnName,
+    t2.name AS ReferencedTableName,
+    c2.name AS ReferencedColumnName
+FROM sys.foreign_keys AS fk
+INNER JOIN sys.foreign_key_columns AS fkc ON fk.object_id = fkc.constraint_object_id
+INNER JOIN sys.tables AS t1 ON fkc.parent_object_id = t1.object_id
+INNER JOIN sys.columns AS c1 ON fkc.parent_object_id = c1.object_id AND fkc.parent_column_id = c1.column_id
+INNER JOIN sys.tables AS t2 ON fkc.referenced_object_id = t2.object_id
+INNER JOIN sys.columns AS c2 ON fkc.referenced_object_id = c2.object_id AND fkc.referenced_column_id = c2.column_id;
+
+-- 查询所有表的索引信息
+SELECT 
+    t.name AS TableName,
+    i.name AS IndexName,
+    c.name AS ColumnName,
+    ic.index_column_id AS ColumnPosition,
+    i.is_unique AS IsUnique,
+    i.is_primary_key AS IsPrimaryKey
+FROM sys.tables AS t
+INNER JOIN sys.indexes AS i ON t.object_id = i.object_id
+INNER JOIN sys.index_columns AS ic ON i.object_id = ic.object_id AND i.index_id = ic.index_id
+INNER JOIN sys.columns AS c ON ic.object_id = c.object_id AND ic.column_id = c.column_id
+WHERE i.type > 0  -- 忽略堆表(无聚集索引的表)
+ORDER BY t.name, i.name, ic.index_column_id;
+
+-- 查询主键信息(作为参考)
+SELECT 
+    t.name AS TableName,
+    c.name AS ColumnName,
+    i.name AS IndexName
+FROM sys.tables AS t
+INNER JOIN sys.indexes AS i ON t.object_id = i.object_id
+INNER JOIN sys.index_columns AS ic ON i.object_id = ic.object_id AND i.index_id = ic.index_id
+INNER JOIN sys.columns AS c ON ic.object_id = c.object_id AND ic.column_id = c.column_id
+WHERE i.is_primary_key = 1
+ORDER BY t.name, c.name;

+ 746 - 0
DataMigration/Program.cs

@@ -0,0 +1,746 @@
+using System;
+using System.Collections.Generic;
+using System.Data;
+using System.Data.SqlClient;
+using System.IO;
+using System.Linq;
+using System.Text;
+using MySql.Data.MySqlClient;
+using Newtonsoft.Json;
+
+namespace DataMigration
+{
+    class Program
+    {
+        static void Main(string[] args)
+        {
+            Console.WriteLine("开始数据迁移...");
+            
+            try
+            {
+                // 读取配置
+                var config = ReadConfig();
+                
+                // 迁移TugboatCommon数据库
+                Console.WriteLine("\n迁移TugboatCommon数据库...");
+                MigrateTugboatCommon(config);
+                
+                // 迁移LiandaTugboatMIS数据库
+                Console.WriteLine("\n迁移LiandaTugboatMIS数据库...");
+                MigrateLiandaTugboatMIS(config);
+                
+                Console.WriteLine("\n数据迁移完成!");
+            }
+            catch (Exception ex)
+            {
+                Console.WriteLine($"迁移过程中出错: {ex.Message}");
+                Console.WriteLine(ex.StackTrace);
+            }
+            
+            Console.WriteLine("\n按任意键退出...");
+            Console.ReadKey();
+        }
+        
+        static Config ReadConfig()
+        {
+            var configPath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "appsettings.json");
+            var json = File.ReadAllText(configPath);
+            return JsonConvert.DeserializeObject<Config>(json);
+        }
+        
+        static void MigrateTugboatCommon(Config config)
+        {
+            using (var sqlConn = new SqlConnection(config.ConnectionStrings.SqlServerCommonDataContext))
+            using (var mysqlConn = new MySqlConnection(config.ConnectionStrings.MySqlTugboatCommon))
+            {
+                sqlConn.Open();
+                mysqlConn.Open();
+                
+                Console.WriteLine("连接数据库成功");
+                
+                // 动态获取SQL Server中的所有表名
+                var tablesToMigrate = GetAllSqlServerTables(sqlConn);
+                Console.WriteLine($"在SQL Server中找到{tablesToMigrate.Count}个表:");
+                foreach (var tableName in tablesToMigrate)
+                {
+                    Console.WriteLine($"- {tableName}");
+                }
+                
+                // 首先删除所有表,以避免外键约束的干扰
+                DropAllTables(mysqlConn, tablesToMigrate);
+                
+                // 迁移所有表
+                foreach (var tableName in tablesToMigrate)
+                {
+                    MigrateTable(sqlConn, mysqlConn, tableName);
+                }
+                
+                Console.WriteLine("TugboatCommon数据库迁移完成");
+            }
+        }
+        
+        static void DropAllTables(MySqlConnection conn, List<string> tables)
+        {
+            Console.WriteLine("\n开始删除所有表...");
+            
+            // 禁用外键约束检查
+            using (var cmd = new MySqlCommand("SET FOREIGN_KEY_CHECKS = 0", conn))
+            {
+                cmd.ExecuteNonQuery();
+            }
+            
+            // 禁用唯一约束检查
+            using (var cmd = new MySqlCommand("SET UNIQUE_CHECKS = 0", conn))
+            {
+                cmd.ExecuteNonQuery();
+            }
+            
+            // 逆序删除表,以避免外键约束问题
+            for (int i = tables.Count - 1; i >= 0; i--)
+            {
+                string tableName = tables[i];
+                try
+                {
+                    using (var cmd = new MySqlCommand($"DROP TABLE IF EXISTS {tableName}", conn))
+                    {
+                        cmd.ExecuteNonQuery();
+                        Console.WriteLine($"删除表: {tableName}");
+                    }
+                }
+                catch (Exception ex)
+                {
+                    Console.WriteLine($"删除表{tableName}时出错: {ex.Message}");
+                }
+            }
+            
+            Console.WriteLine("删除所有表完成");
+        }
+        
+        static void MigrateLiandaTugboatMIS(Config config)
+        {
+            using (var sqlConn = new SqlConnection(config.ConnectionStrings.SqlServerDataContext))
+            using (var mysqlConn = new MySqlConnection(config.ConnectionStrings.MySqlLiandaTugboatMIS))
+            {
+                sqlConn.Open();
+                mysqlConn.Open();
+                
+                Console.WriteLine("连接数据库成功");
+                
+                // 动态获取SQL Server中的所有表名
+                var allTables = GetAllSqlServerTables(sqlConn);
+                Console.WriteLine($"在SQL Server中找到{allTables.Count}个表:");
+                foreach (var tableName in allTables)
+                {
+                    Console.WriteLine($"- {tableName}");
+                }
+                
+                // 首先删除所有表,以避免外键约束的干扰
+                DropAllTables(mysqlConn, allTables);
+                
+                // 定义无外键依赖的表名模式
+                var independentTablePatterns = new List<string>
+                {
+                    "Sys_User",
+                    "Sys_Role",
+                    "Sys_Menu",
+                    "Sys_Function",
+                    "Sys_Dictionary",
+                    "Fin_AssistCode",
+                    "Fin_Subject",
+                    "Fin_TaxRule",
+                    "Pro_FeeItemSettings",
+                    "Xh_ReceiptDictionary",
+                    "Bus_Holiday",
+                    "Bus_ShipPaymentType",
+                    "Disp_Port",
+                    "Disp_PortDictionary",
+                    "Sal_Department",
+                    "Sal_Employee"
+                };
+                
+                // 先迁移无外键依赖的表
+                var independentTables = allTables.Where(t => independentTablePatterns.Any(p => t.Contains(p))).ToList();
+                Console.WriteLine($"\n先迁移无外键依赖的{independentTables.Count}个表:");
+                foreach (var tableName in independentTables)
+                {
+                    MigrateTable(sqlConn, mysqlConn, tableName);
+                }
+                
+                // 再迁移其他表(可能有外键依赖)
+                var dependentTables = allTables.Except(independentTables).ToList();
+                Console.WriteLine($"\n再迁移其他{dependentTables.Count}个表:");
+                foreach (var tableName in dependentTables)
+                {
+                    MigrateTable(sqlConn, mysqlConn, tableName);
+                }
+                
+                Console.WriteLine("LiandaTugboatMIS数据库迁移完成");
+            }
+        }
+        
+        static void MigrateTable(SqlConnection sqlConn, MySqlConnection mysqlConn, string tableName)
+        {
+            // 检查是否是Sys_Log表(操作日志,数据量很大,对系统逻辑没有太大帮助)
+            bool isSysLogTable = tableName.Equals("Sys_Log", StringComparison.OrdinalIgnoreCase) || 
+                                tableName.Equals("Sys_log", StringComparison.OrdinalIgnoreCase);
+            
+            Console.WriteLine($"\n迁移{tableName}表...");
+            
+            try
+            {
+                // 从SQL Server读取表结构
+                DataTable schemaTable = GetSqlServerTableSchema(sqlConn, tableName);
+                Console.WriteLine($"读取SQL Server表结构完成,包含{schemaTable.Columns.Count}列");
+                
+                // 打印SQL Server表的所有列信息
+                Console.WriteLine("SQL Server表列信息:");
+                foreach (DataColumn column in schemaTable.Columns)
+                {
+                    Console.WriteLine($"  - {column.ColumnName} ({column.DataType.Name}, AllowDBNull: {column.AllowDBNull})");
+                }
+                
+                // 确保MySQL表结构与SQL Server一致
+                EnsureTableStructure(mysqlConn, sqlConn, tableName, schemaTable);
+                
+                // 如果是Sys_Log表,只迁移表结构,不迁移数据
+                if (isSysLogTable)
+                {
+                    Console.WriteLine($"跳过{tableName}表的数据迁移(操作日志,数据量较大)");
+                    return;
+                }
+                
+                // 读取SQL Server数据
+                var dataTable = ReadTableFromSqlServer(sqlConn, tableName);
+                Console.WriteLine($"从SQL Server读取到{dataTable.Rows.Count}条记录");
+                
+                if (dataTable.Rows.Count > 0)
+                {
+                    // 清空MySQL表
+                    ClearMySqlTable(mysqlConn, tableName);
+                    
+                    // 写入MySQL
+                    WriteTableToMySql(mysqlConn, tableName, dataTable);
+                    Console.WriteLine($"成功写入MySQL");
+                }
+            }
+            catch (Exception ex)
+            {
+                if (ex.Message.Contains("对象名 '" + tableName + "' 无效"))
+                {
+                    Console.WriteLine($"SQL Server中不存在表{tableName},跳过迁移");
+                }
+                else
+                {
+                    Console.WriteLine($"迁移过程中出错: {ex.Message}");
+                    throw;
+                }
+            }
+        }
+        
+        static DataTable GetSqlServerTableSchema(SqlConnection sqlConn, string tableName)
+        {
+            string query = $"SELECT * FROM {tableName} WHERE 1=0";
+            using (SqlCommand cmd = new SqlCommand(query, sqlConn))
+            using (SqlDataAdapter adapter = new SqlDataAdapter(cmd))
+            {
+                DataTable schemaTable = new DataTable();
+                adapter.FillSchema(schemaTable, SchemaType.Source);
+                return schemaTable;
+            }
+        }
+        
+        static string EscapeMySqlIdentifier(string identifier)
+        {
+            // MySQL保留关键字列表
+            var reservedKeywords = new HashSet<string>
+            {
+                "MAXVALUE", "MINVALUE", "ORDER", "GROUP", "BY", "SELECT", "INSERT", "UPDATE", "DELETE", "FROM", "WHERE", "JOIN", "ON", "IN", "NOT", "AND", "OR", "LIKE", "LIMIT"
+            };
+            
+            // 如果是保留关键字,使用反引号包围
+            if (reservedKeywords.Contains(identifier.ToUpper()))
+            {
+                return $"`{identifier}`";
+            }
+            return identifier;
+        }
+        
+        static void EnsureTableStructure(MySqlConnection conn, SqlConnection sqlConn, string tableName, DataTable schemaTable)
+        {
+            Console.WriteLine($"检查{tableName}表结构...");
+            
+            // 执行一系列SQL语句来禁用所有可能的约束检查
+            string[] disableConstraintsSql = new string[]
+            {
+                "SET FOREIGN_KEY_CHECKS = 0",
+                "SET UNIQUE_CHECKS = 0",
+                "SET SQL_MODE = 'NO_ENGINE_SUBSTITUTION'",
+                "SET AUTOCOMMIT = 0"
+            };
+            
+            foreach (string sql in disableConstraintsSql)
+            {
+                try
+                {
+                    using (var cmd = new MySqlCommand(sql, conn))
+                    {
+                        cmd.ExecuteNonQuery();
+                        Console.WriteLine($"执行SQL成功: {sql}");
+                    }
+                }
+                catch (Exception ex)
+                {
+                    Console.WriteLine($"执行SQL时出错: {sql}, 错误信息: {ex.Message}");
+                }
+            }
+            
+            // 删除旧表
+            try
+            {
+                using (var cmd = new MySqlCommand($"DROP TABLE IF EXISTS {tableName}", conn))
+                {
+                    cmd.ExecuteNonQuery();
+                    Console.WriteLine($"删除旧表: {tableName}");
+                }
+            }
+            catch (Exception ex)
+            {
+                Console.WriteLine($"删除表时出错: {ex.Message}");
+            }
+            
+            // 从SQL Server获取主键信息
+            var primaryKeys = GetSqlServerPrimaryKeys(sqlConn, tableName);
+            Console.WriteLine($"从SQL Server获取到{primaryKeys.Count}个主键列: {string.Join(", ", primaryKeys)}");
+            
+            // 根据SQL Server表结构动态创建MySQL表
+            var createTableSql = new StringBuilder();
+            createTableSql.AppendLine($"CREATE TABLE IF NOT EXISTS {tableName} (");
+            
+            var columns = new List<string>();
+            
+            // 遍历SQL Server表的所有列
+            foreach (DataColumn column in schemaTable.Columns)
+            {
+                string columnName = EscapeMySqlIdentifier(column.ColumnName);
+                string mysqlType = GetMySqlDataType(column.DataType);
+                
+                // 构建列定义
+                string columnDef = $"    {columnName} {mysqlType}";
+                
+                // 检查是否允许空值
+                if (!column.AllowDBNull)
+                {
+                    columnDef += " NOT NULL";
+                }
+                
+                columns.Add(columnDef);
+            }
+            
+            // 添加主键约束
+            if (primaryKeys.Count > 0)
+            {
+                var primaryKeyColumns = primaryKeys.Select(k => EscapeMySqlIdentifier(k)).ToList();
+                columns.Add($"    PRIMARY KEY ({string.Join(", ", primaryKeyColumns)})");
+                Console.WriteLine($"为表{tableName}添加主键约束: {string.Join(", ", primaryKeys)}");
+            }
+            else
+            {
+                Console.WriteLine($"表{tableName}在SQL Server中没有主键");
+            }
+            
+            // 添加列定义到创建表语句
+            createTableSql.AppendLine(string.Join(",\n", columns));
+            createTableSql.AppendLine(") ENGINE=MyISAM DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;");
+            
+            // 执行创建表语句
+            try
+            {
+                Console.WriteLine($"创建表SQL: {createTableSql.ToString().Substring(0, Math.Min(500, createTableSql.Length))}...");
+                using (var cmd = new MySqlCommand(createTableSql.ToString(), conn))
+                {
+                    cmd.ExecuteNonQuery();
+                    Console.WriteLine($"创建新表: {tableName}");
+                    Console.WriteLine($"表结构创建成功,包含{schemaTable.Columns.Count}列");
+                    if (primaryKeys.Count > 0)
+                    {
+                        Console.WriteLine($"已添加主键约束: {string.Join(", ", primaryKeys)}");
+                    }
+                }
+            }
+            catch (Exception ex)
+            {
+                Console.WriteLine($"创建表时出错: {ex.Message}");
+                // 如果创建表失败,尝试一个更简单的方法
+                Console.WriteLine("尝试使用更简单的方法创建表...");
+                string simpleCreateSql = $"CREATE TABLE IF NOT EXISTS {tableName} (";
+                
+                // 添加所有列,但使用最简单的定义
+                var simpleColumns = new List<string>();
+                foreach (DataColumn column in schemaTable.Columns)
+                {
+                    string columnName = EscapeMySqlIdentifier(column.ColumnName);
+                    string mysqlType = "VARCHAR(255)";
+                    simpleColumns.Add($"    {columnName} {mysqlType}");
+                }
+                
+                // 添加主键约束
+                if (primaryKeys.Count > 0)
+                {
+                    var primaryKeyColumns = primaryKeys.Select(k => EscapeMySqlIdentifier(k)).ToList();
+                    simpleColumns.Add($"    PRIMARY KEY ({string.Join(", ", primaryKeyColumns)})");
+                }
+                
+                simpleCreateSql += string.Join(",\n", simpleColumns);
+                simpleCreateSql += ") ENGINE=MyISAM DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci";
+                
+                try
+                {
+                    using (var cmd = new MySqlCommand(simpleCreateSql, conn))
+                    {
+                        cmd.ExecuteNonQuery();
+                        Console.WriteLine($"使用简单方法创建表成功: {tableName}");
+                        if (primaryKeys.Count > 0)
+                        {
+                            Console.WriteLine($"已添加主键约束: {string.Join(", ", primaryKeys)}");
+                        }
+                    }
+                }
+                catch (Exception simpleEx)
+                {
+                    Console.WriteLine($"使用简单方法创建表时出错: {simpleEx.Message}");
+                    // 如果仍然失败,创建一个只有ID列的表
+                    try
+                    {
+                        string minimalCreateSql = $"CREATE TABLE IF NOT EXISTS {tableName} (ID VARCHAR(36) PRIMARY KEY) ENGINE=MyISAM DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci";
+                        using (var cmd = new MySqlCommand(minimalCreateSql, conn))
+                        {
+                            cmd.ExecuteNonQuery();
+                            Console.WriteLine($"使用最小方法创建表成功: {tableName}");
+                            Console.WriteLine("已添加默认主键约束: ID");
+                        }
+                    }
+                    catch (Exception minimalEx)
+                    {
+                        Console.WriteLine($"使用最小方法创建表时出错: {minimalEx.Message}");
+                        // 如果所有方法都失败,抛出异常
+                        throw new Exception($"无法创建表{tableName},请检查数据库配置和权限", minimalEx);
+                    }
+                }
+            }
+            
+            // 提交事务
+            try
+            {
+                using (var cmd = new MySqlCommand("COMMIT", conn))
+                {
+                    cmd.ExecuteNonQuery();
+                    Console.WriteLine("提交事务成功");
+                }
+            }
+            catch (Exception ex)
+            {
+                Console.WriteLine($"提交事务时出错: {ex.Message}");
+            }
+            
+            // 重新启用自动提交
+            try
+            {
+                using (var cmd = new MySqlCommand("SET AUTOCOMMIT = 1", conn))
+                {
+                    cmd.ExecuteNonQuery();
+                    Console.WriteLine("重新启用自动提交成功");
+                }
+            }
+            catch (Exception ex)
+            {
+                Console.WriteLine($"重新启用自动提交时出错: {ex.Message}");
+            }
+        }
+        
+        static List<string> GetSqlServerPrimaryKeys(SqlConnection conn, string tableName)
+        {
+            var primaryKeys = new List<string>();
+            
+            try
+            {
+                // 使用sp_pkeys系统存储过程获取主键信息,这是获取表主键最可靠的方法
+                using (var cmd = new SqlCommand("sp_pkeys", conn))
+                {
+                    cmd.CommandType = CommandType.StoredProcedure;
+                    cmd.Parameters.AddWithValue("@table_name", tableName);
+                    cmd.Parameters.AddWithValue("@table_owner", DBNull.Value);
+                    cmd.Parameters.AddWithValue("@table_qualifier", DBNull.Value);
+                    
+                    Console.WriteLine($"执行存储过程获取主键: sp_pkeys @table_name = {tableName}");
+                    
+                    using (var reader = cmd.ExecuteReader())
+                    {
+                        while (reader.Read())
+                        {
+                            string columnName = reader["COLUMN_NAME"].ToString();
+                            primaryKeys.Add(columnName);
+                            Console.WriteLine($"找到主键列: {columnName}");
+                        }
+                    }
+                }
+                
+                // 如果sp_pkeys没有返回结果,尝试使用sys系统视图
+                if (primaryKeys.Count == 0)
+                {
+                    Console.WriteLine("sp_pkeys未返回结果,尝试使用sys系统视图获取主键");
+                    
+                    string query = @"
+                        SELECT col.name AS COLUMN_NAME
+                        FROM sys.indexes AS idx
+                        INNER JOIN sys.index_columns AS ic ON idx.object_id = ic.object_id AND idx.index_id = ic.index_id
+                        INNER JOIN sys.columns AS col ON ic.object_id = col.object_id AND ic.column_id = col.column_id
+                        INNER JOIN sys.tables AS tab ON col.object_id = tab.object_id
+                        WHERE idx.is_primary_key = 1 AND tab.name = @TableName
+                        ORDER BY ic.key_ordinal
+                    ";
+                    
+                    using (var cmd = new SqlCommand(query, conn))
+                    {
+                        cmd.Parameters.AddWithValue("@TableName", tableName);
+                        using (var reader = cmd.ExecuteReader())
+                        {
+                            while (reader.Read())
+                            {
+                                string columnName = reader["COLUMN_NAME"].ToString();
+                                primaryKeys.Add(columnName);
+                                Console.WriteLine($"从sys视图找到主键列: {columnName}");
+                            }
+                        }
+                    }
+                }
+                
+                Console.WriteLine($"主键获取完成,共找到{primaryKeys.Count}个主键列");
+            }
+            catch (Exception ex)
+            {
+                Console.WriteLine($"获取SQL Server主键信息时出错: {ex.Message}");
+                Console.WriteLine($"错误堆栈: {ex.StackTrace}");
+            }
+            
+            return primaryKeys;
+        }
+        
+        static string GetMySqlDataType(Type sqlServerType)
+        {
+            if (sqlServerType == typeof(Guid) || sqlServerType == typeof(string))
+            {
+                return "VARCHAR(36)";
+            }
+            else if (sqlServerType == typeof(int))
+            {
+                return "INT";
+            }
+            else if (sqlServerType == typeof(DateTime))
+            {
+                return "DATETIME";
+            }
+            else if (sqlServerType == typeof(decimal))
+            {
+                return "DECIMAL(18, 2)";
+            }
+            else if (sqlServerType == typeof(bool))
+            {
+                return "BOOLEAN";
+            }
+            else
+            {
+                return "VARCHAR(255)";
+            }
+        }
+        
+        static List<string> GetAllSqlServerTables(SqlConnection conn)
+        {
+            var tables = new List<string>();
+            using (var cmd = new SqlCommand("SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_TYPE = 'BASE TABLE' AND TABLE_CATALOG = DB_NAME()", conn))
+            using (var reader = cmd.ExecuteReader())
+            {
+                while (reader.Read())
+                {
+                    tables.Add(reader["TABLE_NAME"].ToString());
+                }
+            }
+            return tables;
+        }
+        
+        static DataTable ReadTableFromSqlServer(SqlConnection conn, string tableName)
+        {
+            var dt = new DataTable();
+            using (var cmd = new SqlCommand($"SELECT * FROM {tableName}", conn))
+            using (var adapter = new SqlDataAdapter(cmd))
+            {
+                adapter.Fill(dt);
+            }
+            
+            // 调试信息:检查返回的列
+            if (tableName == "Sys_Menu")
+            {
+                Console.WriteLine($"Sys_Menu表返回的列数: {dt.Columns.Count}");
+                Console.WriteLine("列名列表:");
+                foreach (DataColumn column in dt.Columns)
+                {
+                    Console.WriteLine($"- {column.ColumnName}");
+                }
+            }
+            
+            return dt;
+        }
+        
+        static void ClearMySqlTable(MySqlConnection conn, string tableName)
+        {
+            // 禁用外键约束
+            using (var cmd = new MySqlCommand("SET FOREIGN_KEY_CHECKS = 0", conn))
+            {
+                cmd.ExecuteNonQuery();
+            }
+            
+            try
+            {
+                // 清空表
+                using (var cmd = new MySqlCommand($"TRUNCATE TABLE {tableName}", conn))
+                {
+                    cmd.ExecuteNonQuery();
+                }
+            }
+            finally
+            {
+                // 启用外键约束
+                using (var cmd = new MySqlCommand("SET FOREIGN_KEY_CHECKS = 1", conn))
+                {
+                    cmd.ExecuteNonQuery();
+                }
+            }
+        }
+        
+        static void WriteTableToMySql(MySqlConnection conn, string tableName, DataTable dataTable)
+        {
+            if (dataTable.Rows.Count == 0) return;
+            
+            Console.WriteLine($"开始写入{dataTable.Rows.Count}条记录到{tableName}表...");
+            
+            // 构建列名列表
+            var columns = new List<string>();
+            for (int i = 0; i < dataTable.Columns.Count; i++)
+            {
+                columns.Add(EscapeMySqlIdentifier(dataTable.Columns[i].ColumnName));
+            }
+            var columnList = string.Join(", ", columns);
+            
+            // 批量插入的大小
+            const int batchSize = 1000;
+            int totalRows = dataTable.Rows.Count;
+            int processedRows = 0;
+            
+            using (var transaction = conn.BeginTransaction())
+            {
+                try
+                {
+                    // 分批处理数据
+                    while (processedRows < totalRows)
+                    {
+                        // 计算当前批次的行数
+                        int currentBatchSize = Math.Min(batchSize, totalRows - processedRows);
+                        
+                        // 构建批量插入语句
+                        var insertSqlBuilder = new StringBuilder();
+                        insertSqlBuilder.AppendLine($"INSERT INTO {tableName} ({columnList}) VALUES");
+                        
+                        // 构建值列表
+                        var valuesList = new List<string>();
+                        for (int i = 0; i < currentBatchSize; i++)
+                        {
+                            var row = dataTable.Rows[processedRows + i];
+                            var valueBuilder = new StringBuilder("(");
+                            
+                            for (int j = 0; j < dataTable.Columns.Count; j++)
+                            {
+                                var value = row[j] == DBNull.Value ? null : row[j];
+                                
+                                if (value is System.Guid)
+                                {
+                                    valueBuilder.Append($"'{value.ToString().Replace("'", "''")}'");
+                                }
+                                else if (value is string)
+                                {
+                                    valueBuilder.Append($"'{value.ToString().Replace("'", "''")}'");
+                                }
+                                else if (value is DateTime)
+                                {
+                                    valueBuilder.Append($"'{((DateTime)value).ToString("yyyy-MM-dd HH:mm:ss")}'");
+                                }
+                                else if (value is bool)
+                                {
+                                    valueBuilder.Append(((bool)value) ? "1" : "0");
+                                }
+                                else if (value is byte[])
+                                {
+                                    // 对于字节数组,使用NULL值
+                                    valueBuilder.Append("NULL");
+                                }
+                                else if (value == null)
+                                {
+                                    valueBuilder.Append("NULL");
+                                }
+                                else
+                                {
+                                    valueBuilder.Append(value.ToString());
+                                }
+                                
+                                if (j < dataTable.Columns.Count - 1)
+                                {
+                                    valueBuilder.Append(", ");
+                                }
+                            }
+                            
+                            valueBuilder.Append(")");
+                            valuesList.Add(valueBuilder.ToString());
+                        }
+                        
+                        insertSqlBuilder.AppendLine(string.Join(",\n", valuesList));
+                        string insertSql = insertSqlBuilder.ToString();
+                        
+                        // 执行批量插入
+                        using (var cmd = new MySqlCommand(insertSql, conn, transaction))
+                        {
+                            cmd.ExecuteNonQuery();
+                        }
+                        
+                        // 更新处理进度
+                        processedRows += currentBatchSize;
+                        
+                        // 显示进度
+                        if (processedRows % 10000 == 0 || processedRows == totalRows)
+                        {
+                            Console.WriteLine($"已处理{processedRows}/{totalRows}条记录...");
+                        }
+                    }
+                    
+                    transaction.Commit();
+                    Console.WriteLine($"成功写入{totalRows}条记录到{tableName}表");
+                }
+                catch (Exception ex)
+                {
+                    transaction.Rollback();
+                    throw new Exception($"写入{tableName}表时出错: {ex.Message}", ex);
+                }
+            }
+        }
+    }
+    
+    class Config
+    {
+        public ConnectionStrings ConnectionStrings { get; set; }
+    }
+    
+    class ConnectionStrings
+    {
+        public string SqlServerDataContext { get; set; }
+        public string SqlServerCommonDataContext { get; set; }
+        public string MySqlTugboatCommon { get; set; }
+        public string MySqlLiandaTugboatMIS { get; set; }
+    }
+}

+ 8 - 0
DataMigration/appsettings.json

@@ -0,0 +1,8 @@
+{
+  "ConnectionStrings": {
+    "SqlServerDataContext": "Server=192.168.0.66;Database=ChiwanTugboatMIS20251107;User ID=sa;Password=Bowin2023!;MultipleActiveResultSets=true;",
+    "SqlServerCommonDataContext": "Server=192.168.0.66;Database=TugboatMISCommon;User ID=sa;Password=Bowin2023!;MultipleActiveResultSets=true;",
+    "MySqlTugboatCommon": "Server=192.168.0.77;Port=3306;Database=TugboatCommon;Uid=root;Pwd=bowin@2023;",
+    "MySqlLiandaTugboatMIS": "Server=192.168.0.77;Port=3306;Database=liandatugboatmis;Uid=root;Pwd=bowin@2023;"
+  }
+}

BIN=BIN
DataMigration/bin/Debug/net8.0/BouncyCastle.Cryptography.dll


+ 401 - 0
DataMigration/bin/Debug/net8.0/DataMigration.deps.json

@@ -0,0 +1,401 @@
+{
+  "runtimeTarget": {
+    "name": ".NETCoreApp,Version=v8.0",
+    "signature": ""
+  },
+  "compilationOptions": {},
+  "targets": {
+    ".NETCoreApp,Version=v8.0": {
+      "DataMigration/1.0.0": {
+        "dependencies": {
+          "MySql.Data": "9.6.0",
+          "Newtonsoft.Json": "13.0.4",
+          "System.Data.SqlClient": "4.9.0"
+        },
+        "runtime": {
+          "DataMigration.dll": {}
+        }
+      },
+      "BouncyCastle.Cryptography/2.6.2": {
+        "runtime": {
+          "lib/net6.0/BouncyCastle.Cryptography.dll": {
+            "assemblyVersion": "2.0.0.0",
+            "fileVersion": "2.6.2.46322"
+          }
+        }
+      },
+      "Google.Protobuf/3.32.0": {
+        "runtime": {
+          "lib/net5.0/Google.Protobuf.dll": {
+            "assemblyVersion": "3.32.0.0",
+            "fileVersion": "3.32.0.0"
+          }
+        }
+      },
+      "K4os.Compression.LZ4/1.3.8": {
+        "runtime": {
+          "lib/net6.0/K4os.Compression.LZ4.dll": {
+            "assemblyVersion": "1.3.8.0",
+            "fileVersion": "1.3.8.0"
+          }
+        }
+      },
+      "K4os.Compression.LZ4.Streams/1.3.8": {
+        "dependencies": {
+          "K4os.Compression.LZ4": "1.3.8",
+          "K4os.Hash.xxHash": "1.0.8",
+          "System.IO.Pipelines": "6.0.3"
+        },
+        "runtime": {
+          "lib/net6.0/K4os.Compression.LZ4.Streams.dll": {
+            "assemblyVersion": "1.3.8.0",
+            "fileVersion": "1.3.8.0"
+          }
+        }
+      },
+      "K4os.Hash.xxHash/1.0.8": {
+        "runtime": {
+          "lib/net6.0/K4os.Hash.xxHash.dll": {
+            "assemblyVersion": "1.0.8.0",
+            "fileVersion": "1.0.8.0"
+          }
+        }
+      },
+      "MySql.Data/9.6.0": {
+        "dependencies": {
+          "BouncyCastle.Cryptography": "2.6.2",
+          "Google.Protobuf": "3.32.0",
+          "K4os.Compression.LZ4.Streams": "1.3.8",
+          "System.Configuration.ConfigurationManager": "8.0.0",
+          "System.Security.Permissions": "8.0.0",
+          "ZstdSharp.Port": "0.8.6"
+        },
+        "runtime": {
+          "lib/net8.0/MySql.Data.dll": {
+            "assemblyVersion": "9.6.0.0",
+            "fileVersion": "9.6.0.0"
+          }
+        },
+        "runtimeTargets": {
+          "runtimes/win-x64/native/comerr64.dll": {
+            "rid": "win-x64",
+            "assetType": "native",
+            "fileVersion": "4.3.0.1"
+          },
+          "runtimes/win-x64/native/gssapi64.dll": {
+            "rid": "win-x64",
+            "assetType": "native",
+            "fileVersion": "4.3.0.1"
+          },
+          "runtimes/win-x64/native/k5sprt64.dll": {
+            "rid": "win-x64",
+            "assetType": "native",
+            "fileVersion": "4.3.0.1"
+          },
+          "runtimes/win-x64/native/krb5_64.dll": {
+            "rid": "win-x64",
+            "assetType": "native",
+            "fileVersion": "4.3.0.1"
+          },
+          "runtimes/win-x64/native/krbcc64.dll": {
+            "rid": "win-x64",
+            "assetType": "native",
+            "fileVersion": "4.3.0.1"
+          }
+        }
+      },
+      "Newtonsoft.Json/13.0.4": {
+        "runtime": {
+          "lib/net6.0/Newtonsoft.Json.dll": {
+            "assemblyVersion": "13.0.0.0",
+            "fileVersion": "13.0.4.30916"
+          }
+        }
+      },
+      "runtime.native.System.Data.SqlClient.sni/4.4.0": {
+        "dependencies": {
+          "runtime.win-arm64.runtime.native.System.Data.SqlClient.sni": "4.4.0",
+          "runtime.win-x64.runtime.native.System.Data.SqlClient.sni": "4.4.0",
+          "runtime.win-x86.runtime.native.System.Data.SqlClient.sni": "4.4.0"
+        }
+      },
+      "runtime.win-arm64.runtime.native.System.Data.SqlClient.sni/4.4.0": {
+        "runtimeTargets": {
+          "runtimes/win-arm64/native/sni.dll": {
+            "rid": "win-arm64",
+            "assetType": "native",
+            "fileVersion": "4.6.25512.1"
+          }
+        }
+      },
+      "runtime.win-x64.runtime.native.System.Data.SqlClient.sni/4.4.0": {
+        "runtimeTargets": {
+          "runtimes/win-x64/native/sni.dll": {
+            "rid": "win-x64",
+            "assetType": "native",
+            "fileVersion": "4.6.25512.1"
+          }
+        }
+      },
+      "runtime.win-x86.runtime.native.System.Data.SqlClient.sni/4.4.0": {
+        "runtimeTargets": {
+          "runtimes/win-x86/native/sni.dll": {
+            "rid": "win-x86",
+            "assetType": "native",
+            "fileVersion": "4.6.25512.1"
+          }
+        }
+      },
+      "System.Configuration.ConfigurationManager/8.0.0": {
+        "dependencies": {
+          "System.Diagnostics.EventLog": "8.0.0",
+          "System.Security.Cryptography.ProtectedData": "8.0.0"
+        },
+        "runtime": {
+          "lib/net8.0/System.Configuration.ConfigurationManager.dll": {
+            "assemblyVersion": "8.0.0.0",
+            "fileVersion": "8.0.23.53103"
+          }
+        }
+      },
+      "System.Data.SqlClient/4.9.0": {
+        "dependencies": {
+          "runtime.native.System.Data.SqlClient.sni": "4.4.0"
+        },
+        "runtime": {
+          "lib/net8.0/System.Data.SqlClient.dll": {
+            "assemblyVersion": "4.6.1.6",
+            "fileVersion": "4.900.24.56208"
+          }
+        },
+        "runtimeTargets": {
+          "runtimes/unix/lib/net8.0/System.Data.SqlClient.dll": {
+            "rid": "unix",
+            "assetType": "runtime",
+            "assemblyVersion": "4.6.1.6",
+            "fileVersion": "4.900.24.56208"
+          },
+          "runtimes/win/lib/net8.0/System.Data.SqlClient.dll": {
+            "rid": "win",
+            "assetType": "runtime",
+            "assemblyVersion": "4.6.1.6",
+            "fileVersion": "4.900.24.56208"
+          }
+        }
+      },
+      "System.Diagnostics.EventLog/8.0.0": {
+        "runtime": {
+          "lib/net8.0/System.Diagnostics.EventLog.dll": {
+            "assemblyVersion": "8.0.0.0",
+            "fileVersion": "8.0.23.53103"
+          }
+        },
+        "runtimeTargets": {
+          "runtimes/win/lib/net8.0/System.Diagnostics.EventLog.Messages.dll": {
+            "rid": "win",
+            "assetType": "runtime",
+            "assemblyVersion": "8.0.0.0",
+            "fileVersion": "0.0.0.0"
+          },
+          "runtimes/win/lib/net8.0/System.Diagnostics.EventLog.dll": {
+            "rid": "win",
+            "assetType": "runtime",
+            "assemblyVersion": "8.0.0.0",
+            "fileVersion": "8.0.23.53103"
+          }
+        }
+      },
+      "System.IO.Pipelines/6.0.3": {
+        "runtime": {
+          "lib/net6.0/System.IO.Pipelines.dll": {
+            "assemblyVersion": "6.0.0.0",
+            "fileVersion": "6.0.522.21309"
+          }
+        }
+      },
+      "System.Security.Cryptography.ProtectedData/8.0.0": {
+        "runtime": {
+          "lib/net8.0/System.Security.Cryptography.ProtectedData.dll": {
+            "assemblyVersion": "8.0.0.0",
+            "fileVersion": "8.0.23.53103"
+          }
+        }
+      },
+      "System.Security.Permissions/8.0.0": {
+        "dependencies": {
+          "System.Windows.Extensions": "8.0.0"
+        },
+        "runtime": {
+          "lib/net8.0/System.Security.Permissions.dll": {
+            "assemblyVersion": "8.0.0.0",
+            "fileVersion": "8.0.23.53103"
+          }
+        }
+      },
+      "System.Windows.Extensions/8.0.0": {
+        "runtime": {
+          "lib/net8.0/System.Windows.Extensions.dll": {
+            "assemblyVersion": "8.0.0.0",
+            "fileVersion": "8.0.23.53103"
+          }
+        },
+        "runtimeTargets": {
+          "runtimes/win/lib/net8.0/System.Windows.Extensions.dll": {
+            "rid": "win",
+            "assetType": "runtime",
+            "assemblyVersion": "8.0.0.0",
+            "fileVersion": "8.0.23.53103"
+          }
+        }
+      },
+      "ZstdSharp.Port/0.8.6": {
+        "runtime": {
+          "lib/net8.0/ZstdSharp.dll": {
+            "assemblyVersion": "0.8.6.0",
+            "fileVersion": "0.8.6.0"
+          }
+        }
+      }
+    }
+  },
+  "libraries": {
+    "DataMigration/1.0.0": {
+      "type": "project",
+      "serviceable": false,
+      "sha512": ""
+    },
+    "BouncyCastle.Cryptography/2.6.2": {
+      "type": "package",
+      "serviceable": true,
+      "sha512": "sha512-7oWOcvnntmMKNzDLsdxAYqApt+AjpRpP2CShjMfIa3umZ42UQMvH0tl1qAliYPNYO6vTdcGMqnRrCPmsfzTI1w==",
+      "path": "bouncycastle.cryptography/2.6.2",
+      "hashPath": "bouncycastle.cryptography.2.6.2.nupkg.sha512"
+    },
+    "Google.Protobuf/3.32.0": {
+      "type": "package",
+      "serviceable": true,
+      "sha512": "sha512-fsKxV5bhcvXmZi+cUo5+IxzRMBHwHeFO8G5utNa9f+Mu37kmfy8JcUVvWPt4cX7EuQWAjjHUjZqVl7nGSTRHRg==",
+      "path": "google.protobuf/3.32.0",
+      "hashPath": "google.protobuf.3.32.0.nupkg.sha512"
+    },
+    "K4os.Compression.LZ4/1.3.8": {
+      "type": "package",
+      "serviceable": true,
+      "sha512": "sha512-LhwlPa7c1zs1OV2XadMtAWdImjLIsqFJPoRcIWAadSRn0Ri1DepK65UbWLPmt4riLqx2d40xjXRk0ogpqNtK7g==",
+      "path": "k4os.compression.lz4/1.3.8",
+      "hashPath": "k4os.compression.lz4.1.3.8.nupkg.sha512"
+    },
+    "K4os.Compression.LZ4.Streams/1.3.8": {
+      "type": "package",
+      "serviceable": true,
+      "sha512": "sha512-P15qr8dZAeo9GvYbUIPEYFQ0MEJ0i5iqr37wsYeRC3la2uCldOoeCa6to0CZ1taiwxIV+Mk8NGuZi+4iWivK9w==",
+      "path": "k4os.compression.lz4.streams/1.3.8",
+      "hashPath": "k4os.compression.lz4.streams.1.3.8.nupkg.sha512"
+    },
+    "K4os.Hash.xxHash/1.0.8": {
+      "type": "package",
+      "serviceable": true,
+      "sha512": "sha512-Wp2F7BamQ2Q/7Hk834nV9vRQapgcr8kgv9Jvfm8J3D0IhDqZMMl+a2yxUq5ltJitvXvQfB8W6K4F4fCbw/P6YQ==",
+      "path": "k4os.hash.xxhash/1.0.8",
+      "hashPath": "k4os.hash.xxhash.1.0.8.nupkg.sha512"
+    },
+    "MySql.Data/9.6.0": {
+      "type": "package",
+      "serviceable": true,
+      "sha512": "sha512-jjCXNBxLLQHBcyYyOP4yp5jqljStH2qGFXXg3jBMdwYQk9ihpLH9BXoMyc/J3421pENBDjCf/eGi9Ow0Ib7LUA==",
+      "path": "mysql.data/9.6.0",
+      "hashPath": "mysql.data.9.6.0.nupkg.sha512"
+    },
+    "Newtonsoft.Json/13.0.4": {
+      "type": "package",
+      "serviceable": true,
+      "sha512": "sha512-pdgNNMai3zv51W5aq268sujXUyx7SNdE2bj1wZcWjAQrKMFZV260lbqYop1d2GM67JI1huLRwxo9ZqnfF/lC6A==",
+      "path": "newtonsoft.json/13.0.4",
+      "hashPath": "newtonsoft.json.13.0.4.nupkg.sha512"
+    },
+    "runtime.native.System.Data.SqlClient.sni/4.4.0": {
+      "type": "package",
+      "serviceable": true,
+      "sha512": "sha512-A8v6PGmk+UGbfWo5Ixup0lPM4swuSwOiayJExZwKIOjTlFFQIsu3QnDXECosBEyrWSPryxBVrdqtJyhK3BaupQ==",
+      "path": "runtime.native.system.data.sqlclient.sni/4.4.0",
+      "hashPath": "runtime.native.system.data.sqlclient.sni.4.4.0.nupkg.sha512"
+    },
+    "runtime.win-arm64.runtime.native.System.Data.SqlClient.sni/4.4.0": {
+      "type": "package",
+      "serviceable": true,
+      "sha512": "sha512-LbrynESTp3bm5O/+jGL8v0Qg5SJlTV08lpIpFesXjF6uGNMWqFnUQbYBJwZTeua6E/Y7FIM1C54Ey1btLWupdg==",
+      "path": "runtime.win-arm64.runtime.native.system.data.sqlclient.sni/4.4.0",
+      "hashPath": "runtime.win-arm64.runtime.native.system.data.sqlclient.sni.4.4.0.nupkg.sha512"
+    },
+    "runtime.win-x64.runtime.native.System.Data.SqlClient.sni/4.4.0": {
+      "type": "package",
+      "serviceable": true,
+      "sha512": "sha512-38ugOfkYJqJoX9g6EYRlZB5U2ZJH51UP8ptxZgdpS07FgOEToV+lS11ouNK2PM12Pr6X/PpT5jK82G3DwH/SxQ==",
+      "path": "runtime.win-x64.runtime.native.system.data.sqlclient.sni/4.4.0",
+      "hashPath": "runtime.win-x64.runtime.native.system.data.sqlclient.sni.4.4.0.nupkg.sha512"
+    },
+    "runtime.win-x86.runtime.native.System.Data.SqlClient.sni/4.4.0": {
+      "type": "package",
+      "serviceable": true,
+      "sha512": "sha512-YhEdSQUsTx+C8m8Bw7ar5/VesXvCFMItyZF7G1AUY+OM0VPZUOeAVpJ4Wl6fydBGUYZxojTDR3I6Bj/+BPkJNA==",
+      "path": "runtime.win-x86.runtime.native.system.data.sqlclient.sni/4.4.0",
+      "hashPath": "runtime.win-x86.runtime.native.system.data.sqlclient.sni.4.4.0.nupkg.sha512"
+    },
+    "System.Configuration.ConfigurationManager/8.0.0": {
+      "type": "package",
+      "serviceable": true,
+      "sha512": "sha512-JlYi9XVvIREURRUlGMr1F6vOFLk7YSY4p1vHo4kX3tQ0AGrjqlRWHDi66ImHhy6qwXBG3BJ6Y1QlYQ+Qz6Xgww==",
+      "path": "system.configuration.configurationmanager/8.0.0",
+      "hashPath": "system.configuration.configurationmanager.8.0.0.nupkg.sha512"
+    },
+    "System.Data.SqlClient/4.9.0": {
+      "type": "package",
+      "serviceable": true,
+      "sha512": "sha512-j4KJO+vC62NyUtNHz854njEqXbT8OmAa5jb1nrGfYWBOcggyYUQE0w/snXeaCjdvkSKWuUD+hfvlbN8pTrJTXg==",
+      "path": "system.data.sqlclient/4.9.0",
+      "hashPath": "system.data.sqlclient.4.9.0.nupkg.sha512"
+    },
+    "System.Diagnostics.EventLog/8.0.0": {
+      "type": "package",
+      "serviceable": true,
+      "sha512": "sha512-fdYxcRjQqTTacKId/2IECojlDSFvp7LP5N78+0z/xH7v/Tuw5ZAxu23Y6PTCRinqyu2ePx+Gn1098NC6jM6d+A==",
+      "path": "system.diagnostics.eventlog/8.0.0",
+      "hashPath": "system.diagnostics.eventlog.8.0.0.nupkg.sha512"
+    },
+    "System.IO.Pipelines/6.0.3": {
+      "type": "package",
+      "serviceable": true,
+      "sha512": "sha512-ryTgF+iFkpGZY1vRQhfCzX0xTdlV3pyaTTqRu2ETbEv+HlV7O6y7hyQURnghNIXvctl5DuZ//Dpks6HdL/Txgw==",
+      "path": "system.io.pipelines/6.0.3",
+      "hashPath": "system.io.pipelines.6.0.3.nupkg.sha512"
+    },
+    "System.Security.Cryptography.ProtectedData/8.0.0": {
+      "type": "package",
+      "serviceable": true,
+      "sha512": "sha512-+TUFINV2q2ifyXauQXRwy4CiBhqvDEDZeVJU7qfxya4aRYOKzVBpN+4acx25VcPB9ywUN6C0n8drWl110PhZEg==",
+      "path": "system.security.cryptography.protecteddata/8.0.0",
+      "hashPath": "system.security.cryptography.protecteddata.8.0.0.nupkg.sha512"
+    },
+    "System.Security.Permissions/8.0.0": {
+      "type": "package",
+      "serviceable": true,
+      "sha512": "sha512-v/BBylw7XevuAsHXoX9dDUUfmBIcUf7Lkz8K3ZXIKz3YRKpw8YftpSir4n4e/jDTKFoaK37AsC3xnk+GNFI1Ow==",
+      "path": "system.security.permissions/8.0.0",
+      "hashPath": "system.security.permissions.8.0.0.nupkg.sha512"
+    },
+    "System.Windows.Extensions/8.0.0": {
+      "type": "package",
+      "serviceable": true,
+      "sha512": "sha512-Obg3a90MkOw9mYKxrardLpY2u0axDMrSmy4JCdq2cYbelM2cUwmUir5Bomvd1yxmPL9h5LVHU1tuKBZpUjfASg==",
+      "path": "system.windows.extensions/8.0.0",
+      "hashPath": "system.windows.extensions.8.0.0.nupkg.sha512"
+    },
+    "ZstdSharp.Port/0.8.6": {
+      "type": "package",
+      "serviceable": true,
+      "sha512": "sha512-iP4jVLQoQmUjMU88g1WObiNr6YKZGvh4aOXn3yOJsHqZsflwRsxZPcIBvNXgjXO3vQKSLctXGLTpcBPLnWPS8A==",
+      "path": "zstdsharp.port/0.8.6",
+      "hashPath": "zstdsharp.port.0.8.6.nupkg.sha512"
+    }
+  }
+}

BIN=BIN
DataMigration/bin/Debug/net8.0/DataMigration.dll


BIN=BIN
DataMigration/bin/Debug/net8.0/DataMigration.exe


BIN=BIN
DataMigration/bin/Debug/net8.0/DataMigration.pdb


+ 12 - 0
DataMigration/bin/Debug/net8.0/DataMigration.runtimeconfig.json

@@ -0,0 +1,12 @@
+{
+  "runtimeOptions": {
+    "tfm": "net8.0",
+    "framework": {
+      "name": "Microsoft.NETCore.App",
+      "version": "8.0.0"
+    },
+    "configProperties": {
+      "System.Runtime.Serialization.EnableUnsafeBinaryFormatterSerialization": false
+    }
+  }
+}

BIN=BIN
DataMigration/bin/Debug/net8.0/Google.Protobuf.dll


BIN=BIN
DataMigration/bin/Debug/net8.0/K4os.Compression.LZ4.Streams.dll


BIN=BIN
DataMigration/bin/Debug/net8.0/K4os.Compression.LZ4.dll


BIN=BIN
DataMigration/bin/Debug/net8.0/K4os.Hash.xxHash.dll


BIN=BIN
DataMigration/bin/Debug/net8.0/MySql.Data.dll


BIN=BIN
DataMigration/bin/Debug/net8.0/Newtonsoft.Json.dll


BIN=BIN
DataMigration/bin/Debug/net8.0/System.Configuration.ConfigurationManager.dll


BIN=BIN
DataMigration/bin/Debug/net8.0/System.Data.SqlClient.dll


BIN=BIN
DataMigration/bin/Debug/net8.0/System.Diagnostics.EventLog.dll


BIN=BIN
DataMigration/bin/Debug/net8.0/System.IO.Pipelines.dll


BIN=BIN
DataMigration/bin/Debug/net8.0/System.Security.Cryptography.ProtectedData.dll


BIN=BIN
DataMigration/bin/Debug/net8.0/System.Security.Permissions.dll


BIN=BIN
DataMigration/bin/Debug/net8.0/System.Windows.Extensions.dll


BIN=BIN
DataMigration/bin/Debug/net8.0/ZstdSharp.dll


+ 8 - 0
DataMigration/bin/Debug/net8.0/appsettings.json

@@ -0,0 +1,8 @@
+{
+  "ConnectionStrings": {
+    "SqlServerDataContext": "Server=192.168.0.66;Database=ChiwanTugboatMIS20251107;User ID=sa;Password=Bowin2023!;MultipleActiveResultSets=true;",
+    "SqlServerCommonDataContext": "Server=192.168.0.66;Database=TugboatMISCommon;User ID=sa;Password=Bowin2023!;MultipleActiveResultSets=true;",
+    "MySqlTugboatCommon": "Server=192.168.0.77;Port=3306;Database=TugboatCommon;Uid=root;Pwd=bowin@2023;",
+    "MySqlLiandaTugboatMIS": "Server=192.168.0.77;Port=3306;Database=LiandaTugboatMIS;Uid=root;Pwd=bowin@2023;"
+  }
+}

BIN=BIN
DataMigration/bin/Debug/net8.0/runtimes/unix/lib/net8.0/System.Data.SqlClient.dll


BIN=BIN
DataMigration/bin/Debug/net8.0/runtimes/win-arm64/native/sni.dll


BIN=BIN
DataMigration/bin/Debug/net8.0/runtimes/win-x64/native/comerr64.dll


BIN=BIN
DataMigration/bin/Debug/net8.0/runtimes/win-x64/native/gssapi64.dll


BIN=BIN
DataMigration/bin/Debug/net8.0/runtimes/win-x64/native/k5sprt64.dll


BIN=BIN
DataMigration/bin/Debug/net8.0/runtimes/win-x64/native/krb5_64.dll


BIN=BIN
DataMigration/bin/Debug/net8.0/runtimes/win-x64/native/krbcc64.dll


BIN=BIN
DataMigration/bin/Debug/net8.0/runtimes/win-x64/native/sni.dll


BIN=BIN
DataMigration/bin/Debug/net8.0/runtimes/win-x86/native/sni.dll


BIN=BIN
DataMigration/bin/Debug/net8.0/runtimes/win/lib/net8.0/System.Data.SqlClient.dll


BIN=BIN
DataMigration/bin/Debug/net8.0/runtimes/win/lib/net8.0/System.Diagnostics.EventLog.Messages.dll


BIN=BIN
DataMigration/bin/Debug/net8.0/runtimes/win/lib/net8.0/System.Diagnostics.EventLog.dll


BIN=BIN
DataMigration/bin/Debug/net8.0/runtimes/win/lib/net8.0/System.Windows.Extensions.dll


BIN=BIN
DataMigration/bin/Debug/netcoreapp3.1/BouncyCastle.Crypto.dll


+ 405 - 0
DataMigration/bin/Debug/netcoreapp3.1/DataMigration.deps.json

@@ -0,0 +1,405 @@
+{
+  "runtimeTarget": {
+    "name": ".NETCoreApp,Version=v3.1",
+    "signature": ""
+  },
+  "compilationOptions": {},
+  "targets": {
+    ".NETCoreApp,Version=v3.1": {
+      "DataMigration/1.0.0": {
+        "dependencies": {
+          "MySql.Data": "8.0.28",
+          "Newtonsoft.Json": "13.0.1",
+          "System.Data.SqlClient": "4.8.3"
+        },
+        "runtime": {
+          "DataMigration.dll": {}
+        }
+      },
+      "BouncyCastle.NetCore/1.8.5": {
+        "runtime": {
+          "lib/netstandard2.0/BouncyCastle.Crypto.dll": {
+            "assemblyVersion": "1.8.5.0",
+            "fileVersion": "1.8.19031.1"
+          }
+        }
+      },
+      "Google.Protobuf/3.14.0": {
+        "dependencies": {
+          "System.Runtime.CompilerServices.Unsafe": "5.0.0"
+        },
+        "runtime": {
+          "lib/netstandard2.0/Google.Protobuf.dll": {
+            "assemblyVersion": "3.14.0.0",
+            "fileVersion": "3.14.0.0"
+          }
+        }
+      },
+      "K4os.Compression.LZ4/1.2.6": {
+        "runtime": {
+          "lib/netstandard2.0/K4os.Compression.LZ4.dll": {
+            "assemblyVersion": "1.2.6.0",
+            "fileVersion": "1.2.6.0"
+          }
+        }
+      },
+      "K4os.Compression.LZ4.Streams/1.2.6": {
+        "dependencies": {
+          "K4os.Compression.LZ4": "1.2.6",
+          "K4os.Hash.xxHash": "1.0.6"
+        },
+        "runtime": {
+          "lib/netstandard2.1/K4os.Compression.LZ4.Streams.dll": {
+            "assemblyVersion": "1.2.6.0",
+            "fileVersion": "1.2.6.0"
+          }
+        }
+      },
+      "K4os.Hash.xxHash/1.0.6": {
+        "runtime": {
+          "lib/netstandard2.0/K4os.Hash.xxHash.dll": {
+            "assemblyVersion": "1.0.6.0",
+            "fileVersion": "1.0.6.0"
+          }
+        }
+      },
+      "Microsoft.Win32.SystemEvents/4.7.0": {
+        "runtime": {
+          "lib/netstandard2.0/Microsoft.Win32.SystemEvents.dll": {
+            "assemblyVersion": "4.0.2.0",
+            "fileVersion": "4.700.19.56404"
+          }
+        },
+        "runtimeTargets": {
+          "runtimes/win/lib/netcoreapp3.0/Microsoft.Win32.SystemEvents.dll": {
+            "rid": "win",
+            "assetType": "runtime",
+            "assemblyVersion": "4.0.2.0",
+            "fileVersion": "4.700.19.56404"
+          }
+        }
+      },
+      "MySql.Data/8.0.28": {
+        "dependencies": {
+          "BouncyCastle.NetCore": "1.8.5",
+          "Google.Protobuf": "3.14.0",
+          "K4os.Compression.LZ4.Streams": "1.2.6",
+          "System.Configuration.ConfigurationManager": "4.4.1",
+          "System.Runtime.CompilerServices.Unsafe": "5.0.0",
+          "System.Security.Permissions": "4.7.0"
+        },
+        "runtime": {
+          "lib/netstandard2.1/MySql.Data.dll": {
+            "assemblyVersion": "8.0.28.0",
+            "fileVersion": "8.0.28.0"
+          },
+          "lib/netstandard2.1/Ubiety.Dns.Core.dll": {
+            "assemblyVersion": "2.2.1.0",
+            "fileVersion": "2.2.1.0"
+          },
+          "lib/netstandard2.1/ZstdNet.dll": {
+            "assemblyVersion": "1.4.5.0",
+            "fileVersion": "1.4.5.0"
+          }
+        }
+      },
+      "Newtonsoft.Json/13.0.1": {
+        "runtime": {
+          "lib/netstandard2.0/Newtonsoft.Json.dll": {
+            "assemblyVersion": "13.0.0.0",
+            "fileVersion": "13.0.1.25517"
+          }
+        }
+      },
+      "runtime.native.System.Data.SqlClient.sni/4.7.0": {
+        "dependencies": {
+          "runtime.win-arm64.runtime.native.System.Data.SqlClient.sni": "4.4.0",
+          "runtime.win-x64.runtime.native.System.Data.SqlClient.sni": "4.4.0",
+          "runtime.win-x86.runtime.native.System.Data.SqlClient.sni": "4.4.0"
+        }
+      },
+      "runtime.win-arm64.runtime.native.System.Data.SqlClient.sni/4.4.0": {
+        "runtimeTargets": {
+          "runtimes/win-arm64/native/sni.dll": {
+            "rid": "win-arm64",
+            "assetType": "native",
+            "fileVersion": "4.6.25512.1"
+          }
+        }
+      },
+      "runtime.win-x64.runtime.native.System.Data.SqlClient.sni/4.4.0": {
+        "runtimeTargets": {
+          "runtimes/win-x64/native/sni.dll": {
+            "rid": "win-x64",
+            "assetType": "native",
+            "fileVersion": "4.6.25512.1"
+          }
+        }
+      },
+      "runtime.win-x86.runtime.native.System.Data.SqlClient.sni/4.4.0": {
+        "runtimeTargets": {
+          "runtimes/win-x86/native/sni.dll": {
+            "rid": "win-x86",
+            "assetType": "native",
+            "fileVersion": "4.6.25512.1"
+          }
+        }
+      },
+      "System.Configuration.ConfigurationManager/4.4.1": {
+        "dependencies": {
+          "System.Security.Cryptography.ProtectedData": "4.4.0"
+        },
+        "runtime": {
+          "lib/netstandard2.0/System.Configuration.ConfigurationManager.dll": {
+            "assemblyVersion": "4.0.0.0",
+            "fileVersion": "4.6.25921.2"
+          }
+        }
+      },
+      "System.Data.SqlClient/4.8.3": {
+        "dependencies": {
+          "runtime.native.System.Data.SqlClient.sni": "4.7.0"
+        },
+        "runtime": {
+          "lib/netcoreapp2.1/System.Data.SqlClient.dll": {
+            "assemblyVersion": "4.6.1.3",
+            "fileVersion": "4.700.21.41603"
+          }
+        },
+        "runtimeTargets": {
+          "runtimes/unix/lib/netcoreapp2.1/System.Data.SqlClient.dll": {
+            "rid": "unix",
+            "assetType": "runtime",
+            "assemblyVersion": "4.6.1.3",
+            "fileVersion": "4.700.21.41603"
+          },
+          "runtimes/win/lib/netcoreapp2.1/System.Data.SqlClient.dll": {
+            "rid": "win",
+            "assetType": "runtime",
+            "assemblyVersion": "4.6.1.3",
+            "fileVersion": "4.700.21.41603"
+          }
+        }
+      },
+      "System.Drawing.Common/4.7.0": {
+        "dependencies": {
+          "Microsoft.Win32.SystemEvents": "4.7.0"
+        },
+        "runtime": {
+          "lib/netstandard2.0/System.Drawing.Common.dll": {
+            "assemblyVersion": "4.0.0.1",
+            "fileVersion": "4.6.26919.2"
+          }
+        },
+        "runtimeTargets": {
+          "runtimes/unix/lib/netcoreapp3.0/System.Drawing.Common.dll": {
+            "rid": "unix",
+            "assetType": "runtime",
+            "assemblyVersion": "4.0.2.0",
+            "fileVersion": "4.700.19.56404"
+          },
+          "runtimes/win/lib/netcoreapp3.0/System.Drawing.Common.dll": {
+            "rid": "win",
+            "assetType": "runtime",
+            "assemblyVersion": "4.0.2.0",
+            "fileVersion": "4.700.19.56404"
+          }
+        }
+      },
+      "System.Runtime.CompilerServices.Unsafe/5.0.0": {
+        "runtime": {
+          "lib/netcoreapp2.0/System.Runtime.CompilerServices.Unsafe.dll": {
+            "assemblyVersion": "5.0.0.0",
+            "fileVersion": "5.0.20.51904"
+          }
+        }
+      },
+      "System.Security.Cryptography.ProtectedData/4.4.0": {
+        "runtime": {
+          "lib/netstandard2.0/System.Security.Cryptography.ProtectedData.dll": {
+            "assemblyVersion": "4.0.2.0",
+            "fileVersion": "4.6.25519.3"
+          }
+        },
+        "runtimeTargets": {
+          "runtimes/win/lib/netstandard2.0/System.Security.Cryptography.ProtectedData.dll": {
+            "rid": "win",
+            "assetType": "runtime",
+            "assemblyVersion": "4.0.2.0",
+            "fileVersion": "4.6.25519.3"
+          }
+        }
+      },
+      "System.Security.Permissions/4.7.0": {
+        "dependencies": {
+          "System.Windows.Extensions": "4.7.0"
+        },
+        "runtime": {
+          "lib/netcoreapp3.0/System.Security.Permissions.dll": {
+            "assemblyVersion": "4.0.3.0",
+            "fileVersion": "4.700.19.56404"
+          }
+        }
+      },
+      "System.Windows.Extensions/4.7.0": {
+        "dependencies": {
+          "System.Drawing.Common": "4.7.0"
+        },
+        "runtime": {
+          "lib/netcoreapp3.0/System.Windows.Extensions.dll": {
+            "assemblyVersion": "4.0.1.0",
+            "fileVersion": "4.700.19.56404"
+          }
+        },
+        "runtimeTargets": {
+          "runtimes/win/lib/netcoreapp3.0/System.Windows.Extensions.dll": {
+            "rid": "win",
+            "assetType": "runtime",
+            "assemblyVersion": "4.0.1.0",
+            "fileVersion": "4.700.19.56404"
+          }
+        }
+      }
+    }
+  },
+  "libraries": {
+    "DataMigration/1.0.0": {
+      "type": "project",
+      "serviceable": false,
+      "sha512": ""
+    },
+    "BouncyCastle.NetCore/1.8.5": {
+      "type": "package",
+      "serviceable": true,
+      "sha512": "sha512-6uxsQw2UXrt82VQAWC2td3oBSJjUZ3P4u4DliagB8wf67KsU53V8sW9xwdF+IwZOOZFR0TCZuv/YKZ2BlrfAag==",
+      "path": "bouncycastle.netcore/1.8.5",
+      "hashPath": "bouncycastle.netcore.1.8.5.nupkg.sha512"
+    },
+    "Google.Protobuf/3.14.0": {
+      "type": "package",
+      "serviceable": true,
+      "sha512": "sha512-9AkodyGNmLI+wJJPbwpWLmh4BMHoXDQ9+8qvDPhQQi/BNsleqKMBn3OlyLwC6CALwan2kc5+Cenb8fJSITX3nQ==",
+      "path": "google.protobuf/3.14.0",
+      "hashPath": "google.protobuf.3.14.0.nupkg.sha512"
+    },
+    "K4os.Compression.LZ4/1.2.6": {
+      "type": "package",
+      "serviceable": true,
+      "sha512": "sha512-4EN8EE6bZG2U8dFfeqn+Om3UNajK3cPYHvyQROCFm4jNFVLuRB7Nl5bDkjBSAjfctS6konm+ay3u5RafBzltDA==",
+      "path": "k4os.compression.lz4/1.2.6",
+      "hashPath": "k4os.compression.lz4.1.2.6.nupkg.sha512"
+    },
+    "K4os.Compression.LZ4.Streams/1.2.6": {
+      "type": "package",
+      "serviceable": true,
+      "sha512": "sha512-5KMcNFRHeRrnJ9c8k5fZcfAJJEY0FndMiDiHIYa35Mx5KCMkeSNo/PEXu7YmtCoVczJagx+Vt7J/F+//S1PcJQ==",
+      "path": "k4os.compression.lz4.streams/1.2.6",
+      "hashPath": "k4os.compression.lz4.streams.1.2.6.nupkg.sha512"
+    },
+    "K4os.Hash.xxHash/1.0.6": {
+      "type": "package",
+      "serviceable": true,
+      "sha512": "sha512-jCfNP0inx1sGcP3KSbpiDEH3km2e1sVBjMfKo+V92jr1dL4ZYgA1uhRMl1wAtdGZcbObXIikKqtVlgx3j/CW6g==",
+      "path": "k4os.hash.xxhash/1.0.6",
+      "hashPath": "k4os.hash.xxhash.1.0.6.nupkg.sha512"
+    },
+    "Microsoft.Win32.SystemEvents/4.7.0": {
+      "type": "package",
+      "serviceable": true,
+      "sha512": "sha512-mtVirZr++rq+XCDITMUdnETD59XoeMxSpLRIII7JRI6Yj0LEDiO1pPn0ktlnIj12Ix8bfvQqQDMMIF9wC98oCA==",
+      "path": "microsoft.win32.systemevents/4.7.0",
+      "hashPath": "microsoft.win32.systemevents.4.7.0.nupkg.sha512"
+    },
+    "MySql.Data/8.0.28": {
+      "type": "package",
+      "serviceable": true,
+      "sha512": "sha512-7b699tU9ba0r7SBK7K9snGJB9ulnOdwEXG28kpVvaQSN0hHenfoJ/ADOtdfhcvcn1KStBX8pFK5qIl8scdBL2g==",
+      "path": "mysql.data/8.0.28",
+      "hashPath": "mysql.data.8.0.28.nupkg.sha512"
+    },
+    "Newtonsoft.Json/13.0.1": {
+      "type": "package",
+      "serviceable": true,
+      "sha512": "sha512-ppPFpBcvxdsfUonNcvITKqLl3bqxWbDCZIzDWHzjpdAHRFfZe0Dw9HmA0+za13IdyrgJwpkDTDA9fHaxOrt20A==",
+      "path": "newtonsoft.json/13.0.1",
+      "hashPath": "newtonsoft.json.13.0.1.nupkg.sha512"
+    },
+    "runtime.native.System.Data.SqlClient.sni/4.7.0": {
+      "type": "package",
+      "serviceable": true,
+      "sha512": "sha512-9kyFSIdN3T0qjDQ2R0HRXYIhS3l5psBzQi6qqhdLz+SzFyEy4sVxNOke+yyYv8Cu8rPER12c3RDjLT8wF3WBYQ==",
+      "path": "runtime.native.system.data.sqlclient.sni/4.7.0",
+      "hashPath": "runtime.native.system.data.sqlclient.sni.4.7.0.nupkg.sha512"
+    },
+    "runtime.win-arm64.runtime.native.System.Data.SqlClient.sni/4.4.0": {
+      "type": "package",
+      "serviceable": true,
+      "sha512": "sha512-LbrynESTp3bm5O/+jGL8v0Qg5SJlTV08lpIpFesXjF6uGNMWqFnUQbYBJwZTeua6E/Y7FIM1C54Ey1btLWupdg==",
+      "path": "runtime.win-arm64.runtime.native.system.data.sqlclient.sni/4.4.0",
+      "hashPath": "runtime.win-arm64.runtime.native.system.data.sqlclient.sni.4.4.0.nupkg.sha512"
+    },
+    "runtime.win-x64.runtime.native.System.Data.SqlClient.sni/4.4.0": {
+      "type": "package",
+      "serviceable": true,
+      "sha512": "sha512-38ugOfkYJqJoX9g6EYRlZB5U2ZJH51UP8ptxZgdpS07FgOEToV+lS11ouNK2PM12Pr6X/PpT5jK82G3DwH/SxQ==",
+      "path": "runtime.win-x64.runtime.native.system.data.sqlclient.sni/4.4.0",
+      "hashPath": "runtime.win-x64.runtime.native.system.data.sqlclient.sni.4.4.0.nupkg.sha512"
+    },
+    "runtime.win-x86.runtime.native.System.Data.SqlClient.sni/4.4.0": {
+      "type": "package",
+      "serviceable": true,
+      "sha512": "sha512-YhEdSQUsTx+C8m8Bw7ar5/VesXvCFMItyZF7G1AUY+OM0VPZUOeAVpJ4Wl6fydBGUYZxojTDR3I6Bj/+BPkJNA==",
+      "path": "runtime.win-x86.runtime.native.system.data.sqlclient.sni/4.4.0",
+      "hashPath": "runtime.win-x86.runtime.native.system.data.sqlclient.sni.4.4.0.nupkg.sha512"
+    },
+    "System.Configuration.ConfigurationManager/4.4.1": {
+      "type": "package",
+      "serviceable": true,
+      "sha512": "sha512-jz3TWKMAeuDEyrPCK5Jyt4bzQcmzUIMcY9Ud6PkElFxTfnsihV+9N/UCqvxe1z5gc7jMYAnj7V1COMS9QKIuHQ==",
+      "path": "system.configuration.configurationmanager/4.4.1",
+      "hashPath": "system.configuration.configurationmanager.4.4.1.nupkg.sha512"
+    },
+    "System.Data.SqlClient/4.8.3": {
+      "type": "package",
+      "serviceable": true,
+      "sha512": "sha512-yERfVLXAY0QbylAgaGLByYN0hFxX28aeEQ0hUgJO+Ntn1AfmWl5HHUoYJA0Yl9HhIUUJHVaS/Sw/RLZr5aaC+A==",
+      "path": "system.data.sqlclient/4.8.3",
+      "hashPath": "system.data.sqlclient.4.8.3.nupkg.sha512"
+    },
+    "System.Drawing.Common/4.7.0": {
+      "type": "package",
+      "serviceable": true,
+      "sha512": "sha512-v+XbyYHaZjDfn0ENmJEV1VYLgGgCTx1gnfOBcppowbpOAriglYgGCvFCPr2EEZyBvXlpxbEsTwkOlInl107ahA==",
+      "path": "system.drawing.common/4.7.0",
+      "hashPath": "system.drawing.common.4.7.0.nupkg.sha512"
+    },
+    "System.Runtime.CompilerServices.Unsafe/5.0.0": {
+      "type": "package",
+      "serviceable": true,
+      "sha512": "sha512-ZD9TMpsmYJLrxbbmdvhwt9YEgG5WntEnZ/d1eH8JBX9LBp+Ju8BSBhUGbZMNVHHomWo2KVImJhTDl2hIgw/6MA==",
+      "path": "system.runtime.compilerservices.unsafe/5.0.0",
+      "hashPath": "system.runtime.compilerservices.unsafe.5.0.0.nupkg.sha512"
+    },
+    "System.Security.Cryptography.ProtectedData/4.4.0": {
+      "type": "package",
+      "serviceable": true,
+      "sha512": "sha512-cJV7ScGW7EhatRsjehfvvYVBvtiSMKgN8bOVI0bQhnF5bU7vnHVIsH49Kva7i7GWaWYvmEzkYVk1TC+gZYBEog==",
+      "path": "system.security.cryptography.protecteddata/4.4.0",
+      "hashPath": "system.security.cryptography.protecteddata.4.4.0.nupkg.sha512"
+    },
+    "System.Security.Permissions/4.7.0": {
+      "type": "package",
+      "serviceable": true,
+      "sha512": "sha512-dkOV6YYVBnYRa15/yv004eCGRBVADXw8qRbbNiCn/XpdJSUXkkUeIvdvFHkvnko4CdKMqG8yRHC4ox83LSlMsQ==",
+      "path": "system.security.permissions/4.7.0",
+      "hashPath": "system.security.permissions.4.7.0.nupkg.sha512"
+    },
+    "System.Windows.Extensions/4.7.0": {
+      "type": "package",
+      "serviceable": true,
+      "sha512": "sha512-CeWTdRNfRaSh0pm2gDTJFwVaXfTq6Xwv/sA887iwPTneW7oMtMlpvDIO+U60+3GWTB7Aom6oQwv5VZVUhQRdPQ==",
+      "path": "system.windows.extensions/4.7.0",
+      "hashPath": "system.windows.extensions.4.7.0.nupkg.sha512"
+    }
+  }
+}

BIN=BIN
DataMigration/bin/Debug/netcoreapp3.1/DataMigration.dll


BIN=BIN
DataMigration/bin/Debug/netcoreapp3.1/DataMigration.exe


BIN=BIN
DataMigration/bin/Debug/netcoreapp3.1/DataMigration.pdb


+ 9 - 0
DataMigration/bin/Debug/netcoreapp3.1/DataMigration.runtimeconfig.dev.json

@@ -0,0 +1,9 @@
+{
+  "runtimeOptions": {
+    "additionalProbingPaths": [
+      "C:\\Users\\reica\\.dotnet\\store\\|arch|\\|tfm|",
+      "D:\\software\\tool\\nuget",
+      "D:\\Program Files (x86)\\Microsoft Visual Studio\\Shared\\NuGetPackages"
+    ]
+  }
+}

+ 9 - 0
DataMigration/bin/Debug/netcoreapp3.1/DataMigration.runtimeconfig.json

@@ -0,0 +1,9 @@
+{
+  "runtimeOptions": {
+    "tfm": "netcoreapp3.1",
+    "framework": {
+      "name": "Microsoft.NETCore.App",
+      "version": "3.1.0"
+    }
+  }
+}

BIN=BIN
DataMigration/bin/Debug/netcoreapp3.1/Google.Protobuf.dll


BIN=BIN
DataMigration/bin/Debug/netcoreapp3.1/K4os.Compression.LZ4.Streams.dll


BIN=BIN
DataMigration/bin/Debug/netcoreapp3.1/K4os.Compression.LZ4.dll


BIN=BIN
DataMigration/bin/Debug/netcoreapp3.1/K4os.Hash.xxHash.dll


BIN=BIN
DataMigration/bin/Debug/netcoreapp3.1/Microsoft.Win32.SystemEvents.dll


BIN=BIN
DataMigration/bin/Debug/netcoreapp3.1/MySql.Data.dll


BIN=BIN
DataMigration/bin/Debug/netcoreapp3.1/Newtonsoft.Json.dll


BIN=BIN
DataMigration/bin/Debug/netcoreapp3.1/System.Configuration.ConfigurationManager.dll


BIN=BIN
DataMigration/bin/Debug/netcoreapp3.1/System.Data.SqlClient.dll


BIN=BIN
DataMigration/bin/Debug/netcoreapp3.1/System.Drawing.Common.dll


BIN=BIN
DataMigration/bin/Debug/netcoreapp3.1/System.Runtime.CompilerServices.Unsafe.dll


BIN=BIN
DataMigration/bin/Debug/netcoreapp3.1/System.Security.Cryptography.ProtectedData.dll


BIN=BIN
DataMigration/bin/Debug/netcoreapp3.1/System.Security.Permissions.dll


BIN=BIN
DataMigration/bin/Debug/netcoreapp3.1/System.Windows.Extensions.dll


BIN=BIN
DataMigration/bin/Debug/netcoreapp3.1/Ubiety.Dns.Core.dll


BIN=BIN
DataMigration/bin/Debug/netcoreapp3.1/ZstdNet.dll


+ 8 - 0
DataMigration/bin/Debug/netcoreapp3.1/appsettings.json

@@ -0,0 +1,8 @@
+{
+  "ConnectionStrings": {
+    "SqlServerDataContext": "Server=192.168.0.66;Database=ChiwanTugboatMIS20251107;User ID=sa;Password=Bowin2023!;MultipleActiveResultSets=true;",
+    "SqlServerCommonDataContext": "Server=192.168.0.66;Database=TugboatMISCommon;User ID=sa;Password=Bowin2023!;MultipleActiveResultSets=true;",
+    "MySqlTugboatCommon": "Server=192.168.0.77;Port=3306;Database=TugboatCommon;Uid=root;Pwd=bowin@2023;",
+    "MySqlLiandaTugboatMIS": "Server=192.168.0.77;Port=3306;Database=liandatugboatmis;Uid=root;Pwd=bowin@2023;"
+  }
+}

BIN=BIN
DataMigration/bin/Debug/netcoreapp3.1/runtimes/unix/lib/netcoreapp2.1/System.Data.SqlClient.dll


BIN=BIN
DataMigration/bin/Debug/netcoreapp3.1/runtimes/unix/lib/netcoreapp3.0/System.Drawing.Common.dll


BIN=BIN
DataMigration/bin/Debug/netcoreapp3.1/runtimes/win-arm64/native/sni.dll


BIN=BIN
DataMigration/bin/Debug/netcoreapp3.1/runtimes/win-x64/native/sni.dll


BIN=BIN
DataMigration/bin/Debug/netcoreapp3.1/runtimes/win-x86/native/sni.dll


BIN=BIN
DataMigration/bin/Debug/netcoreapp3.1/runtimes/win/lib/netcoreapp2.1/System.Data.SqlClient.dll


BIN=BIN
DataMigration/bin/Debug/netcoreapp3.1/runtimes/win/lib/netcoreapp3.0/Microsoft.Win32.SystemEvents.dll


BIN=BIN
DataMigration/bin/Debug/netcoreapp3.1/runtimes/win/lib/netcoreapp3.0/System.Drawing.Common.dll


BIN=BIN
DataMigration/bin/Debug/netcoreapp3.1/runtimes/win/lib/netcoreapp3.0/System.Windows.Extensions.dll


BIN=BIN
DataMigration/bin/Debug/netcoreapp3.1/runtimes/win/lib/netstandard2.0/System.Security.Cryptography.ProtectedData.dll


+ 87 - 0
DataMigration/obj/DataMigration.csproj.nuget.dgspec.json

@@ -0,0 +1,87 @@
+{
+  "format": 1,
+  "restore": {
+    "d:\\Project\\LiandaTugboat\\Code\\DataMigration\\DataMigration.csproj": {}
+  },
+  "projects": {
+    "d:\\Project\\LiandaTugboat\\Code\\DataMigration\\DataMigration.csproj": {
+      "version": "1.0.0",
+      "restore": {
+        "projectUniqueName": "d:\\Project\\LiandaTugboat\\Code\\DataMigration\\DataMigration.csproj",
+        "projectName": "DataMigration",
+        "projectPath": "d:\\Project\\LiandaTugboat\\Code\\DataMigration\\DataMigration.csproj",
+        "packagesPath": "D:\\software\\tool\\nuget",
+        "outputPath": "d:\\Project\\LiandaTugboat\\Code\\DataMigration\\obj\\",
+        "projectStyle": "PackageReference",
+        "fallbackFolders": [
+          "D:\\Program Files (x86)\\Microsoft Visual Studio\\Shared\\NuGetPackages"
+        ],
+        "configFilePaths": [
+          "C:\\Users\\reica\\AppData\\Roaming\\NuGet\\NuGet.Config",
+          "C:\\Program Files (x86)\\NuGet\\Config\\Microsoft.VisualStudio.FallbackLocation.config",
+          "C:\\Program Files (x86)\\NuGet\\Config\\Microsoft.VisualStudio.Offline.config"
+        ],
+        "originalTargetFrameworks": [
+          "netcoreapp3.1"
+        ],
+        "sources": {
+          "C:\\Program Files (x86)\\Microsoft SDKs\\NuGetPackages\\": {},
+          "https://api.nuget.org/v3/index.json": {}
+        },
+        "frameworks": {
+          "netcoreapp3.1": {
+            "targetAlias": "netcoreapp3.1",
+            "projectReferences": {}
+          }
+        },
+        "warningProperties": {
+          "warnAsError": [
+            "NU1605"
+          ]
+        },
+        "restoreAuditProperties": {
+          "enableAudit": "true",
+          "auditLevel": "low",
+          "auditMode": "direct"
+        },
+        "SdkAnalysisLevel": "10.0.200"
+      },
+      "frameworks": {
+        "netcoreapp3.1": {
+          "targetAlias": "netcoreapp3.1",
+          "dependencies": {
+            "MySql.Data": {
+              "target": "Package",
+              "version": "[8.0.28, )"
+            },
+            "Newtonsoft.Json": {
+              "target": "Package",
+              "version": "[13.0.1, )"
+            },
+            "System.Data.SqlClient": {
+              "target": "Package",
+              "version": "[4.8.3, )"
+            }
+          },
+          "imports": [
+            "net461",
+            "net462",
+            "net47",
+            "net471",
+            "net472",
+            "net48",
+            "net481"
+          ],
+          "assetTargetFallback": true,
+          "warn": true,
+          "frameworkReferences": {
+            "Microsoft.NETCore.App": {
+              "privateAssets": "all"
+            }
+          },
+          "runtimeIdentifierGraphPath": "C:\\Program Files\\dotnet\\sdk\\10.0.200-preview.0.26103.119\\RuntimeIdentifierGraph.json"
+        }
+      }
+    }
+  }
+}

+ 16 - 0
DataMigration/obj/DataMigration.csproj.nuget.g.props

@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="utf-8" standalone="no"?>
+<Project ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <PropertyGroup Condition=" '$(ExcludeRestorePackageImports)' != 'true' ">
+    <RestoreSuccess Condition=" '$(RestoreSuccess)' == '' ">True</RestoreSuccess>
+    <RestoreTool Condition=" '$(RestoreTool)' == '' ">NuGet</RestoreTool>
+    <ProjectAssetsFile Condition=" '$(ProjectAssetsFile)' == '' ">$(MSBuildThisFileDirectory)project.assets.json</ProjectAssetsFile>
+    <NuGetPackageRoot Condition=" '$(NuGetPackageRoot)' == '' ">D:\software\tool\nuget</NuGetPackageRoot>
+    <NuGetPackageFolders Condition=" '$(NuGetPackageFolders)' == '' ">D:\software\tool\nuget;D:\Program Files (x86)\Microsoft Visual Studio\Shared\NuGetPackages</NuGetPackageFolders>
+    <NuGetProjectStyle Condition=" '$(NuGetProjectStyle)' == '' ">PackageReference</NuGetProjectStyle>
+    <NuGetToolVersion Condition=" '$(NuGetToolVersion)' == '' ">7.0.0</NuGetToolVersion>
+  </PropertyGroup>
+  <ItemGroup Condition=" '$(ExcludeRestorePackageImports)' != 'true' ">
+    <SourceRoot Include="D:\software\tool\nuget\" />
+    <SourceRoot Include="D:\Program Files (x86)\Microsoft Visual Studio\Shared\NuGetPackages\" />
+  </ItemGroup>
+</Project>

+ 2 - 0
DataMigration/obj/DataMigration.csproj.nuget.g.targets

@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8" standalone="no"?>
+<Project ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" />

+ 4 - 0
DataMigration/obj/Debug/net8.0/.NETCoreApp,Version=v8.0.AssemblyAttributes.cs

@@ -0,0 +1,4 @@
+// <autogenerated />
+using System;
+using System.Reflection;
+[assembly: global::System.Runtime.Versioning.TargetFrameworkAttribute(".NETCoreApp,Version=v8.0", FrameworkDisplayName = ".NET 8.0")]

+ 0 - 0
DataMigration/obj/Debug/net8.0/DataMigr.FB59EF5F.Up2Date


+ 22 - 0
DataMigration/obj/Debug/net8.0/DataMigration.AssemblyInfo.cs

@@ -0,0 +1,22 @@
+//------------------------------------------------------------------------------
+// <auto-generated>
+//     This code was generated by a tool.
+//
+//     Changes to this file may cause incorrect behavior and will be lost if
+//     the code is regenerated.
+// </auto-generated>
+//------------------------------------------------------------------------------
+
+using System;
+using System.Reflection;
+
+[assembly: System.Reflection.AssemblyCompanyAttribute("DataMigration")]
+[assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")]
+[assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")]
+[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+1f9e3464dc9c478b71650a9d56d9a86e299c49d7")]
+[assembly: System.Reflection.AssemblyProductAttribute("DataMigration")]
+[assembly: System.Reflection.AssemblyTitleAttribute("DataMigration")]
+[assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")]
+
+// 由 MSBuild WriteCodeFragment 类生成。
+

+ 1 - 0
DataMigration/obj/Debug/net8.0/DataMigration.AssemblyInfoInputs.cache

@@ -0,0 +1 @@
+ea4903af609b60febc0277577efe83a856fb2f8a13f6512ae7d30ec2d0abcf61

+ 17 - 0
DataMigration/obj/Debug/net8.0/DataMigration.GeneratedMSBuildEditorConfig.editorconfig

@@ -0,0 +1,17 @@
+is_global = true
+build_property.TargetFramework = net8.0
+build_property.TargetFrameworkIdentifier = .NETCoreApp
+build_property.TargetFrameworkVersion = v8.0
+build_property.TargetPlatformMinVersion = 
+build_property.UsingMicrosoftNETSdkWeb = 
+build_property.ProjectTypeGuids = 
+build_property.InvariantGlobalization = 
+build_property.PlatformNeutralAssembly = 
+build_property.EnforceExtendedAnalyzerRules = 
+build_property._SupportedPlatformList = Linux,macOS,Windows
+build_property.RootNamespace = DataMigration
+build_property.ProjectDir = D:\Project\LiandaTugboat\Code\DataMigration\
+build_property.EnableComHosting = 
+build_property.EnableGeneratedComInterfaceComImportInterop = 
+build_property.EffectiveAnalysisLevelStyle = 8.0
+build_property.EnableCodeStyleSeverity = 

+ 8 - 0
DataMigration/obj/Debug/net8.0/DataMigration.GlobalUsings.g.cs

@@ -0,0 +1,8 @@
+// <auto-generated/>
+global using System;
+global using System.Collections.Generic;
+global using System.IO;
+global using System.Linq;
+global using System.Net.Http;
+global using System.Threading;
+global using System.Threading.Tasks;

BIN=BIN
DataMigration/obj/Debug/net8.0/DataMigration.assets.cache


BIN=BIN
DataMigration/obj/Debug/net8.0/DataMigration.csproj.AssemblyReference.cache


+ 1 - 0
DataMigration/obj/Debug/net8.0/DataMigration.csproj.CoreCompileInputs.cache

@@ -0,0 +1 @@
+743df7b08971cacc69129f6f09acc81399592202596f1f0c41cc84e8bff00063

+ 45 - 0
DataMigration/obj/Debug/net8.0/DataMigration.csproj.FileListAbsolute.txt

@@ -0,0 +1,45 @@
+D:\Project\LiandaTugboat\Code\DataMigration\bin\Debug\net8.0\DataMigration.exe
+D:\Project\LiandaTugboat\Code\DataMigration\bin\Debug\net8.0\appsettings.json
+D:\Project\LiandaTugboat\Code\DataMigration\bin\Debug\net8.0\DataMigration.deps.json
+D:\Project\LiandaTugboat\Code\DataMigration\bin\Debug\net8.0\DataMigration.runtimeconfig.json
+D:\Project\LiandaTugboat\Code\DataMigration\bin\Debug\net8.0\DataMigration.dll
+D:\Project\LiandaTugboat\Code\DataMigration\bin\Debug\net8.0\DataMigration.pdb
+D:\Project\LiandaTugboat\Code\DataMigration\bin\Debug\net8.0\BouncyCastle.Cryptography.dll
+D:\Project\LiandaTugboat\Code\DataMigration\bin\Debug\net8.0\Google.Protobuf.dll
+D:\Project\LiandaTugboat\Code\DataMigration\bin\Debug\net8.0\K4os.Compression.LZ4.dll
+D:\Project\LiandaTugboat\Code\DataMigration\bin\Debug\net8.0\K4os.Compression.LZ4.Streams.dll
+D:\Project\LiandaTugboat\Code\DataMigration\bin\Debug\net8.0\K4os.Hash.xxHash.dll
+D:\Project\LiandaTugboat\Code\DataMigration\bin\Debug\net8.0\MySql.Data.dll
+D:\Project\LiandaTugboat\Code\DataMigration\bin\Debug\net8.0\Newtonsoft.Json.dll
+D:\Project\LiandaTugboat\Code\DataMigration\bin\Debug\net8.0\System.Configuration.ConfigurationManager.dll
+D:\Project\LiandaTugboat\Code\DataMigration\bin\Debug\net8.0\System.Data.SqlClient.dll
+D:\Project\LiandaTugboat\Code\DataMigration\bin\Debug\net8.0\System.Diagnostics.EventLog.dll
+D:\Project\LiandaTugboat\Code\DataMigration\bin\Debug\net8.0\System.IO.Pipelines.dll
+D:\Project\LiandaTugboat\Code\DataMigration\bin\Debug\net8.0\System.Security.Cryptography.ProtectedData.dll
+D:\Project\LiandaTugboat\Code\DataMigration\bin\Debug\net8.0\System.Security.Permissions.dll
+D:\Project\LiandaTugboat\Code\DataMigration\bin\Debug\net8.0\System.Windows.Extensions.dll
+D:\Project\LiandaTugboat\Code\DataMigration\bin\Debug\net8.0\ZstdSharp.dll
+D:\Project\LiandaTugboat\Code\DataMigration\bin\Debug\net8.0\runtimes\win-x64\native\comerr64.dll
+D:\Project\LiandaTugboat\Code\DataMigration\bin\Debug\net8.0\runtimes\win-x64\native\gssapi64.dll
+D:\Project\LiandaTugboat\Code\DataMigration\bin\Debug\net8.0\runtimes\win-x64\native\k5sprt64.dll
+D:\Project\LiandaTugboat\Code\DataMigration\bin\Debug\net8.0\runtimes\win-x64\native\krb5_64.dll
+D:\Project\LiandaTugboat\Code\DataMigration\bin\Debug\net8.0\runtimes\win-x64\native\krbcc64.dll
+D:\Project\LiandaTugboat\Code\DataMigration\bin\Debug\net8.0\runtimes\win-arm64\native\sni.dll
+D:\Project\LiandaTugboat\Code\DataMigration\bin\Debug\net8.0\runtimes\win-x64\native\sni.dll
+D:\Project\LiandaTugboat\Code\DataMigration\bin\Debug\net8.0\runtimes\win-x86\native\sni.dll
+D:\Project\LiandaTugboat\Code\DataMigration\bin\Debug\net8.0\runtimes\unix\lib\net8.0\System.Data.SqlClient.dll
+D:\Project\LiandaTugboat\Code\DataMigration\bin\Debug\net8.0\runtimes\win\lib\net8.0\System.Data.SqlClient.dll
+D:\Project\LiandaTugboat\Code\DataMigration\bin\Debug\net8.0\runtimes\win\lib\net8.0\System.Diagnostics.EventLog.Messages.dll
+D:\Project\LiandaTugboat\Code\DataMigration\bin\Debug\net8.0\runtimes\win\lib\net8.0\System.Diagnostics.EventLog.dll
+D:\Project\LiandaTugboat\Code\DataMigration\bin\Debug\net8.0\runtimes\win\lib\net8.0\System.Windows.Extensions.dll
+D:\Project\LiandaTugboat\Code\DataMigration\obj\Debug\net8.0\DataMigration.csproj.AssemblyReference.cache
+D:\Project\LiandaTugboat\Code\DataMigration\obj\Debug\net8.0\DataMigration.GeneratedMSBuildEditorConfig.editorconfig
+D:\Project\LiandaTugboat\Code\DataMigration\obj\Debug\net8.0\DataMigration.AssemblyInfoInputs.cache
+D:\Project\LiandaTugboat\Code\DataMigration\obj\Debug\net8.0\DataMigration.AssemblyInfo.cs
+D:\Project\LiandaTugboat\Code\DataMigration\obj\Debug\net8.0\DataMigration.csproj.CoreCompileInputs.cache
+D:\Project\LiandaTugboat\Code\DataMigration\obj\Debug\net8.0\DataMigr.FB59EF5F.Up2Date
+D:\Project\LiandaTugboat\Code\DataMigration\obj\Debug\net8.0\DataMigration.dll
+D:\Project\LiandaTugboat\Code\DataMigration\obj\Debug\net8.0\refint\DataMigration.dll
+D:\Project\LiandaTugboat\Code\DataMigration\obj\Debug\net8.0\DataMigration.pdb
+D:\Project\LiandaTugboat\Code\DataMigration\obj\Debug\net8.0\DataMigration.genruntimeconfig.cache
+D:\Project\LiandaTugboat\Code\DataMigration\obj\Debug\net8.0\ref\DataMigration.dll

BIN=BIN
DataMigration/obj/Debug/net8.0/DataMigration.dll


+ 1 - 0
DataMigration/obj/Debug/net8.0/DataMigration.genruntimeconfig.cache

@@ -0,0 +1 @@
+5a2f300309b6db07feb1310ad7b8cd6d453b0fe133796147976bf72958948927

BIN=BIN
DataMigration/obj/Debug/net8.0/DataMigration.pdb


BIN=BIN
DataMigration/obj/Debug/net8.0/apphost.exe


+ 0 - 0
DataMigration/obj/Debug/net8.0/ref/DataMigration.dll


Algúns arquivos non se mostraron porque demasiados arquivos cambiaron neste cambio