|
@@ -6,18 +6,14 @@ using Newtonsoft.Json;
|
|
|
using System;
|
|
|
using System.Collections.Generic;
|
|
|
using System.Linq;
|
|
|
-using System.Security.Cryptography.Xml;
|
|
|
-using System.Text;
|
|
|
+using System.Net.Http;
|
|
|
+using System.Net;
|
|
|
using System.Threading.Tasks;
|
|
|
using WingInterfaceLibrary.DTO;
|
|
|
-using WingInterfaceLibrary.DTO.DataCenter;
|
|
|
-using WingInterfaceLibrary.DTO.Management;
|
|
|
-using WingInterfaceLibrary.DTO.Region;
|
|
|
using WingInterfaceLibrary.Enum;
|
|
|
-using WingInterfaceLibrary.Internal.Request;
|
|
|
-using WingInterfaceLibrary.Request;
|
|
|
using WingInterfaceLibrary.Request.Management;
|
|
|
using WingInterfaceLibrary.Request.User;
|
|
|
+using WingServerCommon.Interfaces.FileTransfer;
|
|
|
|
|
|
namespace Flyinsono.DBCopy.Tool.Service
|
|
|
{
|
|
@@ -33,9 +29,190 @@ namespace Flyinsono.DBCopy.Tool.Service
|
|
|
var orgDiagnosisModulesList = await MigrateTerminalsInfos(relationList);
|
|
|
await MigrateOrganizationInfos(orgDiagnosisModulesList);
|
|
|
await MigrateUserInfos();
|
|
|
+ await MigrateAdminInfos();
|
|
|
+ await MigrateReportTemplateInfos();
|
|
|
Logger.WriteLineInfo($"Basic Infos Migrate Successfully");
|
|
|
}
|
|
|
|
|
|
+ /// <summary>
|
|
|
+ /// 同步报告模板
|
|
|
+ /// </summary>
|
|
|
+ /// <returns></returns>
|
|
|
+ private async Task MigrateReportTemplateInfos()
|
|
|
+ {
|
|
|
+ var startTime = _migrateRecord.StartTime;
|
|
|
+ var endTime = _migrateRecord.EndTime;
|
|
|
+ var builder = Builders<ReportTemplates>.Filter;
|
|
|
+ var filter = builder.Where(x => (x.CreateTime > startTime && x.CreateTime <= endTime) || (x.UpdateTime > startTime && x.UpdateTime <= endTime));
|
|
|
+ var reportTemplateRecords = _reportTemplateDBRepository.GetReportTemplateRecords(filter).OrderByDescending(x => x.CreateTime).ThenBy(x => x.Id).ToList();
|
|
|
+ Logger.WriteLineInfo($"ReportTemplates totalCount:{reportTemplateRecords.Count}");
|
|
|
+
|
|
|
+ var reportTemplateCount = reportTemplateRecords.Count;
|
|
|
+ var processNumbers = 0;
|
|
|
+ var processNumber = 100;
|
|
|
+ while (true)
|
|
|
+ {
|
|
|
+ var pendingRecords = reportTemplateRecords.Skip(processNumbers).Take(processNumber)?.ToList() ?? new List<ReportTemplates>();
|
|
|
+ var pendingCount = pendingRecords.Count;
|
|
|
+ if (pendingCount > 0)
|
|
|
+ {
|
|
|
+ await SendReportTemplatesInfos(pendingRecords);
|
|
|
+ processNumbers += pendingCount;
|
|
|
+ }
|
|
|
+ if (processNumbers % (processNumber * 100) == 0)
|
|
|
+ {
|
|
|
+ Logger.WriteLineInfo($"ReportTemplates record processing: {(processNumbers * 100 / reportTemplateCount)}%");
|
|
|
+ }
|
|
|
+
|
|
|
+ if (pendingCount < processNumber)
|
|
|
+ {
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ /// <summary>
|
|
|
+ /// 发送报告模板数据
|
|
|
+ /// </summary>
|
|
|
+ /// <param name="userRecords"></param>
|
|
|
+ private async Task SendReportTemplatesInfos(IList<ReportTemplates> reportTemplateRecords)
|
|
|
+ {
|
|
|
+ try
|
|
|
+ {
|
|
|
+ Logger.WriteLineInfo($"ReportTemplates Infos Migrate Starting");
|
|
|
+ var reportTemplateList = new List<ReportTemplateMigratoryInfo>();
|
|
|
+ foreach (var reportTemplateItem in reportTemplateRecords)
|
|
|
+ {
|
|
|
+ bool isAnimals = false;
|
|
|
+ if (CommonConfigManager.FilterPatientType?.Count > 0)
|
|
|
+ {
|
|
|
+ foreach (var item in CommonConfigManager.FilterPatientType)
|
|
|
+ {
|
|
|
+ if (reportTemplateItem.Name.Contains(item))
|
|
|
+ {
|
|
|
+ isAnimals = true;
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ //下载文件,并读取文件内容
|
|
|
+ var fileUrl = GetFileUrl(reportTemplateItem.TemplateUrl);
|
|
|
+ var model = new ReportTemplateMigratoryInfo()
|
|
|
+ {
|
|
|
+ ReportTemplateCode = reportTemplateItem.Id,
|
|
|
+ CreateTime = reportTemplateItem.CreateTime,
|
|
|
+ UpdateTime = reportTemplateItem.UpdateTime,
|
|
|
+ ReportTemplateName = reportTemplateItem.Name,
|
|
|
+ ReportTemplateUsageType = isAnimals ? ReportTemplateUsageTypeEnum.Animal : ReportTemplateUsageTypeEnum.People,
|
|
|
+ ReportTemplateJson = fileUrl
|
|
|
+ };
|
|
|
+ reportTemplateList.Add(model);
|
|
|
+ }
|
|
|
+ var request = new BatchInsertReportTemplateRequest
|
|
|
+ {
|
|
|
+ ReportTemplateMigratorys = reportTemplateList,
|
|
|
+ Token = DefaultToken
|
|
|
+ };
|
|
|
+ var result = await _jsonRpcProxy.Management.BatchInsertReportTemplateDataAsync(request);
|
|
|
+ if (result)
|
|
|
+ {
|
|
|
+ Logger.WriteLineInfo($"ReportTemplates Infos Migrate Successfully");
|
|
|
+ }
|
|
|
+ }
|
|
|
+ catch (Exception ex)
|
|
|
+ {
|
|
|
+ Logger.WriteLineError($"Send ReportTemplates Infos Error, ex:{ex}");
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ /// <summary>
|
|
|
+ /// 同步管理员数据
|
|
|
+ /// </summary>
|
|
|
+ /// <returns></returns>
|
|
|
+ private async Task MigrateAdminInfos()
|
|
|
+ {
|
|
|
+ var startTime = _migrateRecord.StartTime;
|
|
|
+ var endTime = _migrateRecord.EndTime;
|
|
|
+ var builder = Builders<Admins>.Filter;
|
|
|
+ var filter = builder.Where(x => (x.CreateTime > startTime && x.CreateTime <= endTime) || (x.UpdateTime > startTime && x.UpdateTime <= endTime));
|
|
|
+ var adminRecords = _adminDBRepository.GetAdminsRecords(filter).OrderByDescending(x => x.CreateTime).ThenBy(x => x._id).ToList();
|
|
|
+ Logger.WriteLineInfo($"admin totalCount:{adminRecords.Count}");
|
|
|
+
|
|
|
+ var adminCount = adminRecords.Count;
|
|
|
+ var processNumbers = 0;
|
|
|
+ var processNumber = 100;
|
|
|
+ while (true)
|
|
|
+ {
|
|
|
+ var pendingRecords = adminRecords.Skip(processNumbers).Take(processNumber)?.ToList() ?? new List<Admins>();
|
|
|
+ var pendingCount = pendingRecords.Count;
|
|
|
+ if (pendingCount > 0)
|
|
|
+ {
|
|
|
+ await SendAdminInfos(pendingRecords);
|
|
|
+ processNumbers += pendingCount;
|
|
|
+ }
|
|
|
+ if (processNumbers % (processNumber * 100) == 0)
|
|
|
+ {
|
|
|
+ Logger.WriteLineInfo($"Admins record processing: {(processNumbers * 100 / adminCount)}%");
|
|
|
+ }
|
|
|
+
|
|
|
+ if (pendingCount < processNumber)
|
|
|
+ {
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ /// <summary>
|
|
|
+ /// 发送管理员数据
|
|
|
+ /// </summary>
|
|
|
+ /// <param name="userRecords"></param>
|
|
|
+ private async Task SendAdminInfos(IList<Admins> adminRecords)
|
|
|
+ {
|
|
|
+ try
|
|
|
+ {
|
|
|
+ Logger.WriteLineInfo($"Admins Infos Migrate Starting");
|
|
|
+ var adminList = new List<AdminMigratoryInfo>();
|
|
|
+ foreach (var adminItem in adminRecords)
|
|
|
+ {
|
|
|
+ var fullName = string.IsNullOrEmpty(adminItem.FullName) ? adminItem.LastName : adminItem.FullName;
|
|
|
+ var model = new AdminMigratoryInfo()
|
|
|
+ {
|
|
|
+ AdminCode = adminItem._id,
|
|
|
+ CreateTime = adminItem.CreateTime,
|
|
|
+ UpdateTime = adminItem.UpdateTime,
|
|
|
+ FatherCode = "PrimaryAdmin01",
|
|
|
+ AdminName = adminItem.Name,
|
|
|
+ SecretPassword = adminItem.Password,
|
|
|
+ Phone = adminItem.Phone,
|
|
|
+ Email = adminItem.Email,
|
|
|
+ FullName = fullName,
|
|
|
+ };
|
|
|
+ if (adminItem.Level == 2)
|
|
|
+ {
|
|
|
+ model.AdminRole = AdminMigratoryRoleEnum.GeneralAdmin;
|
|
|
+ }
|
|
|
+ else if (adminItem.Level == 1)
|
|
|
+ {
|
|
|
+ model.AdminRole = AdminMigratoryRoleEnum.PrimaryAdmin01;
|
|
|
+ }
|
|
|
+ adminList.Add(model);
|
|
|
+ }
|
|
|
+ var request = new BatchInsertAdminRequest
|
|
|
+ {
|
|
|
+ AdminMigratorys = adminList,
|
|
|
+ Token = DefaultToken
|
|
|
+ };
|
|
|
+ var result = await _jsonRpcProxy.Management.BatchInsertAdminDataAsync(request);
|
|
|
+ if (result)
|
|
|
+ {
|
|
|
+ Logger.WriteLineInfo($"Admins Infos Migrate Successfully");
|
|
|
+ }
|
|
|
+ }
|
|
|
+ catch (Exception ex)
|
|
|
+ {
|
|
|
+ Logger.WriteLineError($"Send Admins Infos Error, ex:{ex}");
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
/// <summary>
|
|
|
/// 同步机构数据
|
|
|
/// </summary>
|