|
@@ -301,6 +301,115 @@ namespace Flyinsono.DBCopy.Tool.Service
|
|
|
}
|
|
|
|
|
|
|
|
|
+ /// <summary>
|
|
|
+ /// 迁移/同步补丁包数据
|
|
|
+ /// </summary>
|
|
|
+ /// <returns></returns>
|
|
|
+ public async Task MigratePatchDataInfos(SyncDBEnum syncType)
|
|
|
+ {
|
|
|
+ var patchInfos = new List<Patch>();
|
|
|
+ if (syncType == SyncDBEnum.Migrate)
|
|
|
+ {
|
|
|
+ var builder = Builders<Patch>.Filter;
|
|
|
+ var filter = builder.Where(x => x.IsDeleted == false);
|
|
|
+ patchInfos = _adminDBRepository.GetPatches(filter).OrderByDescending(x => x.CreateTime).ThenBy(x => x.Id).ToList();
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ var startTime = _migrateRecord.StartTime;
|
|
|
+ var endTime = _migrateRecord.EndTime;
|
|
|
+ var builder = Builders<Patch>.Filter;
|
|
|
+ var filter = builder.Where(x => x.IsDeleted == false && ((x.CreateTime > startTime && x.CreateTime <= endTime) || (x.UpdateTime > startTime && x.UpdateTime <= endTime)));
|
|
|
+ patchInfos = _adminDBRepository.GetPatches(filter).OrderByDescending(x => x.CreateTime).ThenBy(x => x.Id).ToList();
|
|
|
+ }
|
|
|
+ //patchInfos = patchInfos.Where(x => x.Id == "E9E0A873C7974B2381A3F97C981BAC59")?.ToList() ?? new List<Patch>();
|
|
|
+
|
|
|
+ Logger.WriteLineInfo($"patch totalCount:{patchInfos.Count}");
|
|
|
+ var pageIndex = 0;
|
|
|
+ var pageSize = 50;
|
|
|
+ var patchCount = patchInfos.Count;
|
|
|
+ while (true)
|
|
|
+ {
|
|
|
+ var pendingRecords = patchInfos.Skip(pageIndex * pageSize).Take(pageSize)?.ToList() ?? new List<Patch>();
|
|
|
+ var pendingCount = pendingRecords.Count;
|
|
|
+ if (pendingCount > 0)
|
|
|
+ {
|
|
|
+ await SendPatchInfos(patchInfos);
|
|
|
+ pageIndex++;
|
|
|
+ }
|
|
|
+ if (pageIndex * pageSize >= patchCount)
|
|
|
+ {
|
|
|
+ Logger.WriteLineInfo($"patch record processing: 100%");
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ var tempValue = patchCount == 0 ? 1 : patchCount;
|
|
|
+ Logger.WriteLineInfo($"patch record processing: {(pageIndex * pageSize * 100 / tempValue)}%");
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ /// <summary>
|
|
|
+ /// 发送补丁包
|
|
|
+ /// </summary>
|
|
|
+ /// <param name="userRecords"></param>
|
|
|
+ private async Task SendPatchInfos(IList<Patch> patches)
|
|
|
+ {
|
|
|
+ try
|
|
|
+ {
|
|
|
+ Logger.WriteLineInfo($"Patch Infos Migrate Starting");
|
|
|
+ var patchList = new List<MigrateDevicePatchInfo>();
|
|
|
+ foreach (var patch in patches)
|
|
|
+ {
|
|
|
+ var model = new MigrateDevicePatchInfo()
|
|
|
+ {
|
|
|
+ Code = patch.Id,
|
|
|
+ CreateTime = patch.CreateTime,
|
|
|
+ UpdateTime = patch.UpdateTime,
|
|
|
+ IsDelete = patch.IsDeleted,
|
|
|
+ Name = patch.Name,
|
|
|
+ Description = patch.Description,
|
|
|
+ DeviceType = patch.IsSonopost == true ? "sonopost" : patch.PatchType == DevicePatchType.FISPatch ? "FISSDK" : "US",
|
|
|
+ SoftwareVersion = patch.MinVersion,
|
|
|
+ OsVersion = patch.MaxVersion,
|
|
|
+ DeviceFileInfoList = new List<UploadDeviceFileInfoDTO>(),
|
|
|
+ FileSize = patch.Size,
|
|
|
+ };
|
|
|
+ if (!string.IsNullOrEmpty(patch.FileToken))
|
|
|
+ {
|
|
|
+ var prefix = "1!U$";
|
|
|
+ var fileList = patch.FileToken.Split(";");
|
|
|
+ for (int i = 0; i < fileList.Length; i++)
|
|
|
+ {
|
|
|
+ var child = new UploadDeviceFileInfoDTO()
|
|
|
+ {
|
|
|
+ PartNum = i + 1,
|
|
|
+ FileUrl = fileList[i].Replace(prefix, "")
|
|
|
+ };
|
|
|
+ model.DeviceFileInfoList.Add(child);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ patchList.Add(model);
|
|
|
+ }
|
|
|
+ var request = new MigrateDevicePatchRequest
|
|
|
+ {
|
|
|
+ MigrateDevicePatchInfos = patchList,
|
|
|
+ Token = DefaultToken
|
|
|
+ };
|
|
|
+ var result = await _jsonRpcProxy.Device.BatchInsertDevicePatchsDataAsync(request);
|
|
|
+ if (result)
|
|
|
+ {
|
|
|
+ Logger.WriteLineInfo($"Patch Infos Migrate Successfully");
|
|
|
+ }
|
|
|
+ }
|
|
|
+ catch (Exception ex)
|
|
|
+ {
|
|
|
+ Logger.WriteLineError($"Send Patch Infos Error, ex:{ex}");
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
public async Task DiffOrg()
|
|
|
{
|
|
|
var startTime = _migrateRecord.StartTime;
|
|
@@ -1189,10 +1298,10 @@ namespace Flyinsono.DBCopy.Tool.Service
|
|
|
//todo 同步的才生成头像,迁移的之前已经做过了更新是不需要的,如果需要重新同步头像或者清掉重新跑就需要修改一下
|
|
|
// if (syncType == SyncDBEnum.Synchronize)
|
|
|
// {
|
|
|
- if (!string.IsNullOrWhiteSpace(userItem.HeadImage))
|
|
|
- {
|
|
|
- model.HeadImageUrl = ConvertToJpg(userItem.HeadImage);
|
|
|
- }
|
|
|
+ if (!string.IsNullOrWhiteSpace(userItem.HeadImage))
|
|
|
+ {
|
|
|
+ model.HeadImageUrl = ConvertToJpg(userItem.HeadImage);
|
|
|
+ }
|
|
|
// }
|
|
|
if (!string.IsNullOrWhiteSpace(userItem.ElectronSignUrl))
|
|
|
{
|
|
@@ -1315,7 +1424,7 @@ namespace Flyinsono.DBCopy.Tool.Service
|
|
|
if (userItem.Organizations?.Count > 0)
|
|
|
{
|
|
|
var dbOrgIds = userItem.Organizations.Select(c => c.Id).Distinct().ToList();
|
|
|
- var orgFilter = builder.Where(x => x.IsDeleted == false && dbOrgIds.Contains(x.Id));
|
|
|
+ var orgFilter = builder.Where(x => x.IsDeleted == false && dbOrgIds.Contains(x.Id));
|
|
|
var orgList = MongoDbClientSingle.Instance.Organizations.Find(orgFilter)?.ToList();
|
|
|
//.Project(c => (c.Id == CommonConfigManager.FilterOrgCode ? "" : c.Id)) ?
|
|
|
var orgIds = new List<string>();
|
|
@@ -1421,8 +1530,8 @@ namespace Flyinsono.DBCopy.Tool.Service
|
|
|
var startTime = _migrateRecord.StartTime;
|
|
|
var endTime = _migrateRecord.EndTime;
|
|
|
var builder = Builders<Users>.Filter;
|
|
|
-
|
|
|
- var filter = builder.Where(x => !string.IsNullOrEmpty(x.HospitalId)&& !string.IsNullOrEmpty(x.Name) && ((x.CreateTime > startTime && x.CreateTime <= endTime) || (x.UpdateTime > startTime && x.UpdateTime <= endTime)));
|
|
|
+
|
|
|
+ var filter = builder.Where(x => !string.IsNullOrEmpty(x.HospitalId) && !string.IsNullOrEmpty(x.Name) && ((x.CreateTime > startTime && x.CreateTime <= endTime) || (x.UpdateTime > startTime && x.UpdateTime <= endTime)));
|
|
|
var userRecords = _usersDBRepository.GetUserRecords(filter).OrderByDescending(x => x.CreateTime).ThenBy(x => x._id).ToList();
|
|
|
Logger.WriteLineInfo($"user totalCount:{userRecords.Count}");
|
|
|
var pageIndex = 0;
|