|
@@ -193,10 +193,10 @@ namespace TEAMModeBI.Controllers.BISchool
|
|
|
List<Task<ItemResponse<Ability>>> abilities = new List<Task<ItemResponse<Ability>>>(); //存储数据
|
|
|
List<Task<ItemResponse<AbilityTask>>> abilityTasks = new List<Task<ItemResponse<AbilityTask>>>(); //存储章节
|
|
|
|
|
|
- List<Ability> abilities1 = null; //存储数据 测试使用,后期删除
|
|
|
- List<AbilityTask> abilityTasks1 = null; //存储章节 测试使用,后期删除
|
|
|
- List<StandardFile> standardFiles = null; // 显示新的政策文件 //测试使用,后期删除
|
|
|
- List<AreaSetting> areaSettings = null; // 显示新的区域配置 //测试使用,后期删除
|
|
|
+ List<Ability> abilities1 = new List<Ability>(); //存储数据 测试使用,后期删除
|
|
|
+ List<AbilityTask> abilityTasks1 = new List<AbilityTask>(); //存储章节 测试使用,后期删除
|
|
|
+ List<StandardFile> standardFiles = new List<StandardFile>(); // 显示新的政策文件 //测试使用,后期删除
|
|
|
+ List<AreaSetting> areaSettings = new List<AreaSetting>(); // 显示新的区域配置 //测试使用,后期删除
|
|
|
|
|
|
//分区键
|
|
|
string partitionCode = "copyAbility-mark";
|
|
@@ -435,6 +435,72 @@ namespace TEAMModeBI.Controllers.BISchool
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+ /// <summary>
|
|
|
+ /// 创区后切换能力点, 先删除原来的能力点,后复制新的能力点 待完成
|
|
|
+ /// </summary>
|
|
|
+ /// <param name="jsonElement"></param>
|
|
|
+ /// <returns></returns>
|
|
|
+ [ProducesDefaultResponseType]
|
|
|
+ [HttpPost("cut-standard")]
|
|
|
+ public async Task<IActionResult> CutStandard(JsonElement jsonElement)
|
|
|
+ {
|
|
|
+ try
|
|
|
+ {
|
|
|
+ if (!jsonElement.TryGetProperty("oldstandard", out JsonElement _oldStandard)) return BadRequest();
|
|
|
+ if (!jsonElement.TryGetProperty("newStandard", out JsonElement _newStandard)) return BadRequest();
|
|
|
+
|
|
|
+ var cosmosClient = _azureCosmos.GetCosmosClient();
|
|
|
+
|
|
|
+ List<Ability> abilitys = new List<Ability>();
|
|
|
+ List<string> abilityIds = new List<string>();
|
|
|
+
|
|
|
+ //查询册别信息
|
|
|
+ await foreach (var tempAbility in cosmosClient.GetContainer(Constant.TEAMModelOS, "Normal").GetItemQueryIterator<Ability>(queryText: $"select value(c) from c", requestOptions: new QueryRequestOptions() { PartitionKey = new PartitionKey($"Ability-{_oldStandard}") }))
|
|
|
+ {
|
|
|
+ abilitys.Add(tempAbility); //查询出来册别添加至册别集合中
|
|
|
+ abilityIds.Add(tempAbility.id); //查询出来册别ID添加册别ID集合
|
|
|
+ }
|
|
|
+ //删除册别
|
|
|
+ if (abilityIds.IsNotEmpty())
|
|
|
+ {
|
|
|
+ //var sresponse = await cosmosClient.GetContainer(Constant.TEAMModelOS, "Normal").DeleteItemsStreamAsync(abilityIds, $"Ability-{_oldStandard}");
|
|
|
+ }
|
|
|
+
|
|
|
+ List<AbilityTask> abilityTasks = new List<AbilityTask>();
|
|
|
+ List<string> abilityTaskIds = new List<string>();
|
|
|
+ foreach (var abilityId in abilityIds)
|
|
|
+ {
|
|
|
+ await foreach (var item in cosmosClient.GetContainer(Constant.TEAMModelOS, "Normal").GetItemQueryIterator<AbilityTask>(queryText: $"select value(c) from c where c.abilityId='{abilityId}'", requestOptions: new QueryRequestOptions() { PartitionKey = new PartitionKey($"AbilityTask-{_oldStandard}") }))
|
|
|
+ {
|
|
|
+ abilityTasks.Add(item); //查询出来章节信息添加至章节集合
|
|
|
+ abilityTaskIds.Add(item.id); //查询出来的章节信息ID添加到战绩集合
|
|
|
+ }
|
|
|
+ }
|
|
|
+ //删除章节
|
|
|
+ if (abilityTaskIds.IsNotEmpty())
|
|
|
+ {
|
|
|
+ //var sresponse = await cosmosClient.GetContainer(Constant.TEAMModelOS, "Normal").DeleteItemsStreamAsync(abilityTaskIds, $"AbilityTask-{_oldStandard}");
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ return Ok(new { state = 200, abilitys.Count, idscount= abilityIds.Count, taskcount = abilityTasks.Count });
|
|
|
+
|
|
|
+ }
|
|
|
+ catch (Exception ex)
|
|
|
+ {
|
|
|
+ await _dingDing.SendBotMsg($"BI,{_option.Location} batcharea/cutstandard \r {ex.Message}{ex.StackTrace}", GroupNames.醍摩豆服務運維群組);
|
|
|
+ return BadRequest();
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
/// <summary>
|
|
|
/// 测试复制Blob中的文件 批量创区接口测试完成后删除
|
|
|
/// </summary>
|
|
@@ -512,10 +578,12 @@ namespace TEAMModeBI.Controllers.BISchool
|
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
|
- /// 批量删除在复制文件 待完成
|
|
|
+ /// 批量删除在复制文件接口 正式完成后删除该接口
|
|
|
/// </summary>
|
|
|
/// <param name="jsonElement"></param>
|
|
|
/// <returns></returns>
|
|
|
+ [ProducesDefaultResponseType]
|
|
|
+ [HttpPost("copyafterdel")]
|
|
|
public async Task<IActionResult> CopyAfterDel(JsonElement jsonElement)
|
|
|
{
|
|
|
|
|
@@ -524,12 +592,53 @@ namespace TEAMModeBI.Controllers.BISchool
|
|
|
if (!jsonElement.TryGetProperty("copystandard", out JsonElement _copystandard)) return BadRequest();
|
|
|
|
|
|
var blobClient = _azureStorage.GetBlobContainerClient($"{_cntr}"); //获取地址
|
|
|
- await foreach (BlobItem blobItem in blobClient.GetBlobsAsync(BlobTraits.None, BlobStates.None,$"yxpt/{_delstandard}/"))
|
|
|
+
|
|
|
+ //先删除原有的文件
|
|
|
+ List<Task<Response<bool>>> DelList = new List<Task<Response<bool>>>();
|
|
|
+ await foreach (BlobItem blobItem in blobClient.GetBlobsAsync(BlobTraits.None, BlobStates.None, $"{_delstandard}/"))
|
|
|
+ {
|
|
|
+ //await blobClient.GetBlobClient(blobItem.Name).DeleteIfExistsAsync();
|
|
|
+ DelList.Add(blobClient.GetBlobBaseClient(blobItem.Name).DeleteIfExistsAsync());
|
|
|
+ }
|
|
|
+
|
|
|
+ if (DelList.Count <= 256)
|
|
|
+ {
|
|
|
+ await Task.WhenAll(DelList);
|
|
|
+ }
|
|
|
+ else
|
|
|
{
|
|
|
+ int pages = (DelList.Count + 255) / 256;
|
|
|
+ for (int i = 0; i < pages; i++)
|
|
|
+ {
|
|
|
+ List<Task<Response<bool>>> delList = DelList.Skip((i) * 256).Take(256).ToList();
|
|
|
+ await Task.WhenAll(delList);
|
|
|
+ }
|
|
|
+ }
|
|
|
|
|
|
+ //在复制新的文件
|
|
|
+ List<Task<Response<BlobCopyInfo>>> CopyList = new List<Task<Response<BlobCopyInfo>>>();
|
|
|
+ await foreach (BlobItem blobItem in blobClient.GetBlobsAsync(BlobTraits.None, BlobStates.None, $"{_copystandard}/"))
|
|
|
+ {
|
|
|
+ string oldurl = $"{blobItem.Name}".Replace($"{_copystandard}/", $"{_delstandard}/"); //替换旧文件
|
|
|
+ var copyUrlSas = _azureStorage.GetBlobSAS($"{_cntr}", blobItem.Name, BlobSasPermissions.Read | BlobSasPermissions.List);
|
|
|
|
|
|
+ //await blobClient.GetBlobClient(oldurl).SyncCopyFromUriAsync(new Uri(copyUrlSas));
|
|
|
+ CopyList.Add(blobClient.GetBlobClient(oldurl).SyncCopyFromUriAsync(new Uri(copyUrlSas)));
|
|
|
}
|
|
|
|
|
|
+ if (CopyList.Count <= 256)
|
|
|
+ {
|
|
|
+ await Task.WhenAll(CopyList);
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ int pages = (CopyList.Count + 255) / 256;
|
|
|
+ for (int i = 0; i < pages; i++)
|
|
|
+ {
|
|
|
+ List<Task<Response<BlobCopyInfo>>> copyList = CopyList.Skip((i) * 256).Take(256).ToList();
|
|
|
+ await Task.WhenAll(copyList);
|
|
|
+ }
|
|
|
+ }
|
|
|
|
|
|
return Ok(new { state = 200 });
|
|
|
|