| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450 | 
							- using DataService;
 
- using DB_Proxima;
 
- using Dm.util;
 
- using Mapster;
 
- using Newtonsoft.Json.Linq;
 
- using SqlSugar;
 
- using SqlSugar.Extensions;
 
- using SqlSugarORM;
 
- using System;
 
- using System.Diagnostics;
 
- using System.Dynamic;
 
- using System.Numerics;
 
- using System.Reflection;
 
- using System.Runtime.CompilerServices;
 
- using System.Text.Json;
 
- using Universal;
 
- namespace Test;
 
- internal class DBTest
 
- {
 
-     private SqlSugarCustom _orm;
 
-     public bool Initialize()
 
-     {
 
-         _orm = new SqlSugarCustom();
 
-         _orm.CreateDataBase("DBTest");
 
-         _orm.Initialize();
 
-         string dbString = "Database=DBTest;Password=123456;Host=localhost;Username=postgres;Persist Security Info=True";
 
-         return _orm.Open(dbString, DbType.PostgreSQL, true);
 
-     }
 
-     public void TestRaw()
 
-     {
 
-         SqlSugarCustom orm = new();
 
-         orm.Initialize();
 
-         string dbString = "Database=FROMTIN;Password=123456;Host=localhost;Username=postgres;Persist Security Info=True";
 
-         //string dbString = "Database=Kepler;Password=123456;Host=localhost;Username=postgres;Persist Security Info=True";
 
-         if (!orm.Open(dbString, SqlSugar.DbType.PostgreSQL, true))
 
-             return;
 
-         List<DbTableInfo> tables = orm.Client.DbMaintenance.GetTableInfoList();
 
-         Stopwatch sw = new();
 
-         sw.Start();
 
-         int i = 0;
 
-         Parallel.ForEach(tables, table =>
 
-         {
 
-             string localName = table.Name.Replace('.', '_');
 
-             if (localName== "Recipe_History")
 
-                 return;
 
-             if (localName == "event_data")
 
-                 return;
 
-             var client = orm.Client.CopyNew();
 
-             List<DbColumnInfo> dbColumns = client.DbMaintenance.GetColumnInfosByTableName(table.Name);
 
-             RemoteToLocal remoteToLocal = new();
 
-             //remoteToLocal.Initialize("DBTestKepler", "123456", "localhost", "postgres");
 
-             remoteToLocal.Initialize("DBTestTIN", "123456", "localhost", "postgres");
 
-             remoteToLocal.CreateTableRaw(localName, dbColumns);
 
-             int totalCount = 0;
 
-             int totalPage = 0;
 
-             int currentPage = 1;
 
-             int line = 0;
 
-             lock (this)
 
-                 line = i++;
 
-             do
 
-             {
 
-                 dynamic[] dataCollection = client.Queryable<dynamic>().AS($"\"{table.Name}\"").ToPageList(currentPage, 100, ref totalCount, ref totalPage).ToArray();
 
-                 //Console.SetCursorPosition(0, Console.CursorTop - 1);
 
-                 lock (this)
 
-                 {
 
-                     Console.SetCursorPosition(0, line);
 
-                     Console.WriteLine($"{table.Name.PadRight(35)} Columns {dbColumns.Count.ToString().PadRight(15)}  100 Rows / page     Page {currentPage}/{totalPage}");
 
-                 }
 
-                 foreach (dynamic data in dataCollection)
 
-                 {
 
-                     if (data is IDictionary<string, object> rawData)
 
-                         remoteToLocal.InsertDataRaw(localName, rawData);
 
-                 }
 
-             } while (++currentPage <= totalPage);
 
-         });
 
-         //foreach (DbTableInfo table in tables)
 
-         //{
 
-         //    string localName = table.Name.Replace('.', '_');
 
-         //    List<DbColumnInfo> dbColumns = orm.Client.DbMaintenance.GetColumnInfosByTableName(table.Name);
 
-         //    RemoteToLocal remoteToLocal = new();
 
-         //    remoteToLocal.Initialize("DBTestKepler", "123456", "localhost", "postgres");
 
-         //    remoteToLocal.CreateTableRaw(localName, dbColumns);
 
-         //    int totalCount = 0;
 
-         //    int totalPage = 0;
 
-         //    int currentPage = 1;
 
-         //    Console.WriteLine($"Move Table {localName} total column {dbColumns.Count}");
 
-         //    Console.WriteLine();
 
-         //    do
 
-         //    {
 
-         //        dynamic[] dataCollection = orm.Client!.Queryable<dynamic>().AS($"\"{table.Name}\"").ToPageList(currentPage, 100, ref totalCount, ref totalPage).ToArray();
 
-         //        Console.SetCursorPosition(0, Console.CursorTop - 1);
 
-         //        Console.WriteLine($"Page {currentPage}/{totalPage}");
 
-         //        foreach (dynamic data in dataCollection)
 
-         //        {
 
-         //            if (data is IDictionary<string, object> rawData)
 
-         //                remoteToLocal.InsertDataRaw(localName, rawData);
 
-         //        }
 
-         //    } while (++currentPage <= totalPage);
 
-         //}
 
-         sw.Stop();
 
-         Console.SetCursorPosition(0, ++i);
 
-         Console.WriteLine($"{sw.Elapsed.TotalSeconds} seconds");
 
-     }
 
-     public void TestOthers()
 
-     {
 
-         SqlSugarCustom orm = new();
 
-         orm.Initialize();
 
-         string dbString = "Database=tin01_db;Password=123456;Host=10.4.6.48;Username=postgres;Persist Security Info=True";
 
-         if (!orm.Open(dbString, SqlSugar.DbType.PostgreSQL, true))
 
-             return;
 
-         dynamic system = orm.Client!.Queryable<dynamic>().AS("\"20250708.System\"").First();
 
-         dynamic pm = orm.Client!.Queryable<dynamic>().AS("\"20250708.PM1\"").First();
 
-         GeneralProcessData processData = new(0);
 
-         if (!processData.ToDictionary(system, out Dictionary<string, object>? systemDic) || systemDic is null)
 
-             return;
 
-         if (!processData.ToDictionary(pm, out Dictionary<string, object>? pmDic) || pmDic is null)
 
-             return;
 
-         if (pmDic["PM1"] is not IDictionary<string, object> data)
 
-             return;
 
-         RemoteToLocal remoteToLocal = new();
 
-         remoteToLocal.Initialize("DBTest", "123456", "localhost", "postgres");
 
-         //remoteToLocal.CreateTableSystem(systemDic);
 
-         remoteToLocal.CreateTablePM(data);
 
-         Stopwatch sw = new();
 
-         sw.Start();
 
-         int totalCount = 0;
 
-         int totalPage = 0;
 
-         int currentPage = 1;
 
-         do
 
-         {
 
-             Console.WriteLine($"page {currentPage}");
 
-             foreach (var item in orm.Client!.Queryable<dynamic>().AS("\"20250708.PM1\"").ToPageList(currentPage, 1000, ref totalCount, ref totalPage).ToArray())
 
-             {
 
-                 if (!processData.ToDictionary(item, out Dictionary<string, object>? pms) || pms is null)
 
-                     return;
 
-                 DateTime time = LongToDateTime(pms["time"]).Value;
 
-                 Guid guid = Guid.NewGuid();
 
-                 if (pms["PM1"] is not IDictionary<string, object> pmc)
 
-                     return;
 
-                 remoteToLocal.InsertDataPM(pmc, guid, time);
 
-             }
 
-         } while (++currentPage <= totalPage);
 
-         //foreach (dynamic item in orm.Client!.Queryable<dynamic>().AS("\"20250708.PM1\"").ToArray())
 
-         //{
 
-         //    if (!processData.ToDictionary(item, out Dictionary<string, object>? pms) || pms is null)
 
-         //        return;
 
-         //    DateTime time = LongToDateTime(pms["time"]).Value;
 
-         //    Guid guid = Guid.NewGuid();
 
-         //    if (pms["PM1"] is not IDictionary<string, object> pmc)
 
-         //        return;
 
-         //    remoteToLocal.InsertDataPM(pmc, guid, time);
 
-         //}
 
-         sw.Stop();
 
-         Console.WriteLine(sw.Elapsed.TotalSeconds);
 
-     }
 
-     //public void Test(IDictionary<string, object> data, Guid guid, DateTime time)
 
-     public void Test()
 
-     {
 
-         SqlSugarCustom orm = new();
 
-         orm.Initialize();
 
-         string dbString = "Database=tin01_db;Password=123456;Host=10.4.6.48;Username=postgres;Persist Security Info=True";
 
-         if (!orm.Open(dbString, SqlSugar.DbType.PostgreSQL, true))
 
-             return;
 
-         dynamic t = orm.Client!.Queryable<dynamic>().AS("\"20250708.PM1\"").First();
 
-         GeneralProcessData processData = new(0);
 
-         if (!processData.ToDictionary(t, out Dictionary<string, object>? outputs) || outputs is null)
 
-             return;
 
-         DateTime time = LongToDateTime(outputs["time"]).Value;
 
-         if (outputs["PM1"] is not IDictionary<string, object> data)
 
-             return;
 
-         Guid guid = Guid.NewGuid();
 
-         _orm.CreateTable<FFU>("FFU");
 
-         _orm.CreateTable<MFC>("MFC");
 
-         _orm.CreateTable<GaslineHeater>("GaslineHeater");
 
-         _orm.CreateTable<BufferFoup>("GaslineHeater");
 
-         _orm.CreateTable<AvValue>("AvValue");
 
-         Dictionary<string, object> ValueSensor = [];
 
-         Dictionary<string, object> StatusSensor = [];
 
-         Dictionary<string, object> leakCheck = [];
 
-         Dictionary<string, object> recipe = [];
 
-         Dictionary<string, object> aoValue = [];
 
-         foreach (var item in data)
 
-         {
 
-             if (item.Value is not IDictionary<string, object> values)
 
-             {
 
-                 switch (item.Key)
 
-                 {
 
-                     case string s when s.EndsWith("Enable"):
 
-                         continue;
 
-                     case string s when s.startsWith("LeakCheck"):
 
-                         leakCheck.Add(item.Key, item.Value);
 
-                         continue;
 
-                     default:
 
-                         recipe.Add(item.Key, item.Value);
 
-                         continue;
 
-                 }
 
-             }
 
-             switch (item.Key)
 
-             {
 
-                 case "APC":
 
-                 case "APCVATGV":
 
-                 case "BoatElevatorServo":
 
-                 case "BoatRotationServo":
 
-                 case "BufferServo":
 
-                 case "Shutter":
 
-                     CreateTable(item.Key, values);
 
-                     InsertData(item.Key, time, guid, values);
 
-                     continue;
 
-                 case string s when s.startsWith("Trig"):
 
-                     if (item.Value is IDictionary<string, object> value)
 
-                         aoValue.Add(item.Key, value["AOValue"]);
 
-                     continue;
 
-                 case string s when s.startsWith("FS"):
 
-                 case string s1 when s1.startsWith("PG"):
 
-                 case string s2 when s2.startsWith("PS"):
 
-                 case string s3 when s3.startsWith("VG"):
 
-                     if (item.Value is IDictionary<string, object> vss)
 
-                         ValueSensor.Add(item.Key, vss["Value"]);
 
-                     continue;
 
-                 case string s when s.startsWith("ValveAV"):
 
-                     _orm.Insert<AvValue>("AvValue", CreateData<AvValue>(guid, time, item));
 
-                     continue;
 
-                 case string s when s.startsWith("Sensor"):
 
-                     if (item.Value is IDictionary<string, object> status)
 
-                         StatusSensor.Add(item.Key, status["Value"]);
 
-                     continue;
 
-                 case string s when s.startsWith("FFU"):
 
-                     _orm.Insert<FFU>("FFU", CreateData<FFU>(guid, time, item));
 
-                     continue;
 
-                 case string s when s.startsWith("GaslineHeater"):
 
-                     _orm.Insert<GaslineHeater>("GaslineHeater", CreateData<GaslineHeater>(guid, time, item));
 
-                     continue;
 
-                 case string s when s.startsWith("MFC"):
 
-                     _orm.Insert<MFC>("MFC", CreateData<MFC>(guid, time, item));
 
-                     continue;
 
-                 default:
 
-                     continue;
 
-             }
 
-         }
 
-         CreateTable("ValueSensor", ValueSensor);
 
-         CreateTable("StatusSensor", StatusSensor);
 
-         CreateTable("Recipe", recipe);
 
-         CreateTable("LeakCheck", leakCheck);
 
-         CreateTable("AoValue", aoValue);
 
-         InsertData("ValueSensor", time, guid, ValueSensor);
 
-         InsertData("StatusSensor", time, guid, StatusSensor);
 
-         InsertData("Recipe", time, guid, recipe);
 
-         InsertData("LeakCheck", time, guid, leakCheck);
 
-         InsertData("AoValue", time, guid, aoValue);
 
-     }
 
-     public void TestSystem()
 
-     {
 
-         SqlSugarCustom orm = new();
 
-         orm.Initialize();
 
-         string dbString = "Database=tin01_db;Password=123456;Host=10.4.6.48;Username=postgres;Persist Security Info=True";
 
-         if (!orm.Open(dbString, SqlSugar.DbType.PostgreSQL, true))
 
-             return;
 
-         dynamic t = orm.Client!.Queryable<dynamic>().AS("\"20250708.System\"").First();
 
-         GeneralProcessData processData = new(0);
 
-         if (!processData.ToDictionary(t, out Dictionary<string, object>? outputs) || outputs is null)
 
-             return;
 
-         DateTime time = LongToDateTime(outputs["time"]).Value;
 
-         Guid guid = Guid.NewGuid();
 
-         Dictionary<string, object> systemCollection = [];
 
-         Dictionary<string, object> alarmCollection = [];
 
-         _orm.CreateTable<DB_Proxima.Heater>("Heater");
 
-         _orm.CreateTable<Stocker>("Stocker");
 
-         _orm.CreateTable<LoadPort>("LoadPort");
 
-         _orm.CreateTable<FIMS>("FIMS");
 
-         foreach (var item in outputs)
 
-         {
 
-             if (item.Value is not IDictionary<string, object> values)
 
-                 continue;
 
-             switch (item.Key)
 
-             {
 
-                 case "Boat":
 
-                 case "CarrierRobot":
 
-                 case "Scheduler":
 
-                 case "WaferRobot":
 
-                     CreateTable(item.Key, values);
 
-                     InsertData(item.Key, time, guid, values);
 
-                     continue;
 
-                 case "System":
 
-                     if (values is not IDictionary<string, object> systems)
 
-                         continue;
 
-                     foreach (var system in systems)
 
-                     {
 
-                         switch (system.Key)
 
-                         {
 
-                             case string s when s.startsWith("Heater"):
 
-                                 _orm.Insert<DB_Proxima.Heater>("Heater", CreateData<DB_Proxima.Heater>(guid, time, item));
 
-                                 continue;
 
-                             case string s when s.startsWith("AlarmSignalHeater"):
 
-                                 alarmCollection.Add(system.Key, ((IDictionary<string, object>)system.Value)["Value"] ??= false);
 
-                                 continue;
 
-                             default:
 
-                                 systemCollection.Add(system.Key, system.Value);
 
-                                 break;
 
-                         }
 
-                     }
 
-                     continue;
 
-                 case string s when s.startsWith("Stocker"):
 
-                     _orm.Insert<Stocker>("Stocker", CreateData<Stocker>(guid, time, item));
 
-                     continue;
 
-                 case string s when s.startsWith("LP"):
 
-                     continue;
 
-                 case string s when s.startsWith("FIMS"):
 
-                     continue;
 
-                 default:
 
-                     break;
 
-             }
 
-         }
 
-         CreateTable("System", systemCollection);
 
-         CreateTable("AlarmSignalHeater", alarmCollection);
 
-         InsertData("System", time, guid, systemCollection);
 
-         InsertData("AlarmSignalHeater", time, guid, alarmCollection);
 
-     }
 
-     public static T? CreateData<T>(Guid guid, DateTime time, KeyValuePair<string, object> input) where T : class, new()
 
-     {
 
-         if (input.Value is not IDictionary<string, object> values)
 
-             return null;
 
-         T source = new();
 
-         if (source is not IBasicInfo basicInfo)
 
-             return null;
 
-         basicInfo.UID = guid;
 
-         basicInfo.Time = time;
 
-         basicInfo.Name = input.Key;
 
-         DicToClass(ref source, values);
 
-         return source;
 
-     }
 
-     public static DateTime? LongToDateTime(object o)
 
-     {
 
-         if (o is not long l)
 
-             return null;
 
-         return new(l);
 
-     }
 
-     public static void DicToClass<T>(ref T input, IDictionary<string, object> source)
 
-     {
 
-         foreach (PropertyInfo property in input.GetType().GetProperties())
 
-         {
 
-             if (!source.TryGetValue(property.Name, out object value) || value is null)
 
-                 continue;
 
-             property.SetValue(input, value);
 
-         }
 
-     }
 
-     public void CreateTable(string tableName, IDictionary<string, object> source)
 
-     {
 
-         DynamicProperyBuilder builder = _orm.Client.DynamicBuilder().CreateClass(tableName, new SugarTable());
 
-         builder.CreateProperty("UID", typeof(Guid), new SugarColumn() { IsPrimaryKey = true });
 
-         builder.CreateProperty("time", typeof(DateTime), new SugarColumn() { });
 
-         foreach (var item in source)
 
-             builder.CreateProperty(item.Key, item.Value.GetType(), new SugarColumn() { IsNullable = true });
 
-         var type = builder.BuilderType();
 
-         _orm.Client.CodeFirst.InitTables(type);
 
-     }
 
-     public int InsertData(string tableName, DateTime dateTime, Guid guid, IDictionary<string, object> source)
 
-     {
 
-         var dc = new Dictionary<string, object>();
 
-         dc.Add("UID", guid);
 
-         dc.Add("time", dateTime);
 
-         foreach (var item in source)
 
-             dc.Add(item.Key, item.Value);
 
-         return _orm.Client.Insertable(dc).AS(tableName).ExecuteCommand();
 
-     }
 
- }
 
 
  |