|
@@ -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}");
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
|
|
|
|
|
|
|