Browse Source

设备类型

denny 11 months ago
parent
commit
05c7bd4fb3

+ 3 - 3
Tools/Flyinsono.DBCopy.Tool/Config/AppSetting.json

@@ -7,7 +7,7 @@
     "StartTimeDiffMintues": 60
   },
   "DirectServer": {
-    "Host": "http://192.168.6.62:8303/"
+    "Host": "http://192.168.6.65:8303/"
   },
   "ThirdPartyServer": {
     "ServerUrl": "http://192.168.1.31:7020/ISyncBaseDataServices",
@@ -15,8 +15,8 @@
   },
   "Database": {
     "DbName": "vCloudDb",
-    "Host": "192.168.6.109",
-    "Port": 9100
+    "Host": "192.168.6.65",
+    "Port": 8303
   },
   "TerminalRecordSync": {
     "StartTime": "2023-10-21 19:00:00",

+ 2 - 0
Tools/Flyinsono.DBCopy.Tool/MainWindow.xaml

@@ -93,6 +93,8 @@
                 <Button Command="{Binding MigratePackageDataCommand}">SyncPackages</Button>
                 <Button Command="{Binding MigrateVinnoDeviceDataCommand}" MinWidth="110">SyncVinnoDevice</Button>
                 <Button Command="{Binding MigrateCertifiedInstructorUserCommand}" MinWidth="110">SyncCertifiedUser</Button>
+                <Button Command="{Binding DeleteDictionDataCommand}" MinWidth="110">ClearRepeatDic</Button>
+                
             </StackPanel>
             <StackPanel Grid.Row="5" Orientation="Horizontal">
                 <Label VerticalAlignment="Center">Real-time Sync:</Label>

+ 92 - 0
Tools/Flyinsono.DBCopy.Tool/Service/MigrateService.BasicInfo.cs

@@ -34,11 +34,103 @@ using System.Net.Http.Json;
 using WingInterfaceLibrary.DTO.Measure;
 using System.Collections.Concurrent;
 using System.Security.Principal;
+using Org.BouncyCastle.Asn1.Ocsp;
 
 namespace Flyinsono.DBCopy.Tool.Service
 {
     internal partial class MigrateService
     {
+        public async Task DeleteRepeatDicData()
+        {
+            try
+            {
+                var waitDeleteIds = new List<string>();
+                var length = 10000;
+                var findModelList = new List<string>();
+                for (var i = 0; i < length; i++)
+                {
+                    var request = new GetDeviceTypePagesRequest
+                    {
+                        DictionaryType = 0,
+                        PageIndex = (i + 1),
+                        PageSize = 100,
+                        Token = DefaultToken
+                    };
+                    var result = await _jsonRpcProxy.Management.GetDeviceTypePages(request);
+                    if (result?.PageData?.Count > 0)
+                    {
+                        foreach (var item in result.PageData)
+                        {
+                            var tempVal = item.ParentCode + "_" + item.Value;
+                            if (findModelList.Contains(tempVal))
+                            {
+                                waitDeleteIds.Add(item.DictionaryCode);
+                            }
+                            else
+                            {
+                                findModelList.Add(tempVal);
+                            }
+                        }
+                    }
+                    else
+                    {
+                        break;
+                    }
+                }
+
+                Logger.WriteLineInfo($"Wait GetDeviceTypePages totalCount:{waitDeleteIds.Count}");
+
+
+                if (waitDeleteIds?.Count > 0)
+                {
+                    var pageIndex = 0;
+                    var pageSize = 50;
+                    var reportTemplateCount = waitDeleteIds.Count;
+                    while (true)
+                    {
+                        var pendingRecords = waitDeleteIds.Skip(pageIndex * pageSize).Take(pageSize)?.ToList() ?? new List<string>();
+                        var pendingCount = pendingRecords.Count;
+                        if (pendingCount > 0)
+                        {
+                            try
+                            {
+                                foreach (var idItem in pendingRecords)
+                                {
+                                    var reqStr = $"{{\"Token\": \"{DefaultToken}\",\"DeviceTypeCode\": \"{idItem}\"}}";
+                                    Logger.WriteLineInfo($"DeleteDeviceTypeAsync request:{reqStr}");
+                                    var serPath = CommonConfigManager.DirectServer.Host + "/IManagementService";
+                                    var resStr = await SendRequest(serPath, "DeleteDeviceTypeAsync", reqStr);
+                                    Logger.WriteLineWarn($"DeleteDeviceTypeAsync result, id: {idItem}, resStr: {resStr}");
+                                }
+                            }
+                            catch (Exception ex)
+                            {
+                                Logger.WriteLineError($"DeleteDeviceTypeAsync Error, ex:{ex}");
+                            }
+                            pageIndex++;
+                        }
+                        if (pageIndex * pageSize >= reportTemplateCount)
+                        {
+                            Logger.WriteLineInfo($"DeleteDeviceTypeAsync processing: 100%");
+                            break;
+                        }
+                        else
+                        {
+                            var tempValue = reportTemplateCount == 0 ? 1 : reportTemplateCount;
+                            Logger.WriteLineInfo($"DeleteDeviceTypeAsync processing: {(pageIndex * pageSize * 100 / tempValue)}%");
+                        }
+                        System.Threading.Thread.Sleep(5000);
+                    }
+                }
+            }
+            catch (Exception ex)
+            {
+                Logger.WriteLineError($"DeleteDeviceTypeAsync Error, ex:{ex}");
+            }
+
+        }
+
+
         /// <summary>
         /// 迁移基础数据
         /// </summary>

+ 37 - 0
Tools/Flyinsono.DBCopy.Tool/ViewModels/MainWindowViewModel.cs

@@ -65,6 +65,7 @@ namespace Flyinsono.DBCopy.Tool
         private static bool _migrateReportResult = false;
         private static bool _migrateUpgrade = false;
         private static bool _migrateUserInfo = false;
+        private static bool _migrateDicInfo = false;
         private static bool _synchronizeTerminalRecord = false;
         private static long _visitWebErrorNum = 0;
         private COSClear _cosClear = new COSClear();
@@ -344,6 +345,8 @@ namespace Flyinsono.DBCopy.Tool
 
         public ButtonCommand MigrateBasicDataCommand { get; set; }
         public ButtonCommand MigrateIsOldAgentUserDataCommand { get; set; }
+
+        public ButtonCommand DeleteDictionDataCommand { get; set; }
         public ButtonCommand ReadFeedBackExcelDataCommand { get; set; }
         public ButtonCommand UpgradeBussinessDataCommand { get; set; }
         public ButtonCommand MigratePrintDataCommand { get; set; }
@@ -442,6 +445,8 @@ namespace Flyinsono.DBCopy.Tool
             MigrateStaticCommand = new ButtonCommand(OnMigrateStatic);
             MigrateBasicDataCommand = new ButtonCommand(OnMigrateBasicData);
             MigrateIsOldAgentUserDataCommand = new ButtonCommand(OnMigrateIsOldAgentUserInfosData);
+
+            DeleteDictionDataCommand = new ButtonCommand(OnDeleteDictionData); 
             ReadFeedBackExcelDataCommand = new ButtonCommand(OnReadFeedBackExcelData);
             UpgradeBussinessDataCommand = new ButtonCommand(OnUpgradeBussinessDataCommand);
             MigratePrintDataCommand = new ButtonCommand(OnMigratePrintData);
@@ -1402,6 +1407,38 @@ namespace Flyinsono.DBCopy.Tool
             }
         }
 
+        private void OnDeleteDictionData(object obj)
+        {
+            if (_migrateDicInfo)
+            {
+                Logger.WriteLineWarn($"Migrate DeleteDictionData Processing");
+                return;
+            }
+            try
+            {
+                _migrateDicInfo = true;
+                Task.Run(async () =>
+                {
+                    try
+                    {
+                        await MigrateServiceReal.DeleteRepeatDicData();
+                    }
+                    catch (Exception ex)
+                    {
+                        Logger.WriteLineWarn($"Migrate DeleteDictionData err, ex:{ex}");
+                    }
+                    finally
+                    {
+                        _migrateDicInfo = false;
+                    }
+                });
+            }
+            catch (Exception ex)
+            {
+                Logger.WriteLineWarn($"Migrate DeleteDictionData err, ex:{ex}");
+            }
+        }
+
         /// <summary>
         /// 同步老的代理商用户数据
         /// </summary>

+ 42 - 1
src/Plugin/LicensePlugin.cs

@@ -88,7 +88,48 @@ namespace WingCloudServer.Plugin
                         ThrowCustomerException(CustomerRpcCode.ExceedMaxDevice, "Exceed max device");
                     }
                     break;
-
+                // case "IResearchEditionService/GetResearchProjectListAsync":
+                //     if (ExceedMaxDevice().Result)
+                //     {
+                //         Logger.WriteLineError("Server exceed max device, server is stopped");
+                //         ThrowCustomerException(CustomerRpcCode.ExceedMaxDevice, "Exceed max device");
+                //     }
+                //     break;
+                // case "IResearchEditionService/CreateResearchProjectAsync":
+                //     if (ExceedMaxDevice().Result)
+                //     {
+                //         Logger.WriteLineError("Server exceed max device, server is stopped");
+                //         ThrowCustomerException(CustomerRpcCode.ExceedMaxDevice, "Exceed max device");
+                //     }
+                //     break;
+                // case "IResearchEditionService/CreateResearchProjectTaskAsync":
+                //     if (ExceedMaxDevice().Result)
+                //     {
+                //         Logger.WriteLineError("Server exceed max device, server is stopped");
+                //         ThrowCustomerException(CustomerRpcCode.ExceedMaxDevice, "Exceed max device");
+                //     }
+                //     break;
+                // case "IResearchEditionService/StartAnalysisAsync":
+                //     if (ExceedMaxDevice().Result)
+                //     {
+                //         Logger.WriteLineError("Server exceed max device, server is stopped");
+                //         ThrowCustomerException(CustomerRpcCode.ExceedMaxDevice, "Exceed max device");
+                //     }
+                //     break;                
+                // case "IResearchEditionService/BatchAnalysisAsync":
+                //     if (ExceedMaxDevice().Result)
+                //     {
+                //         Logger.WriteLineError("Server exceed max device, server is stopped");
+                //         ThrowCustomerException(CustomerRpcCode.ExceedMaxDevice, "Exceed max device");
+                //     }
+                //     break;                              
+                // case "IResearchEditionService/AddRemedicalMeasuredInfoAsync":
+                //     if (ExceedMaxDevice().Result)
+                //     {
+                //         Logger.WriteLineError("Server exceed max device, server is stopped");
+                //         ThrowCustomerException(CustomerRpcCode.ExceedMaxDevice, "Exceed max device");
+                //     }
+                //     break;
             }
             return new PluginProcessResult(requestData, false);
         }