using Azure.Cosmos;
using HTEXLib.COMM.Helpers;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Text.Json;
using System.Threading.Tasks;
using TEAMModelOS.SDK.DI;
using TEAMModelOS.SDK.Extension;
namespace TEAMModelOS.SDK.Models
{
public static class ThirdService
{
public static async Task<(string accessConfig, Area area, AreaSetting setting)> GetAccessConfig(CosmosClient client,string standard) {
Area area = null;
await foreach (var item in client.GetContainer(Constant.TEAMModelOS, "Normal").
GetItemQueryIterator($"select value(c) from c where c.standard='{standard}'", requestOptions: new QueryRequestOptions { PartitionKey = new PartitionKey("Base-Area") }))
{
area = item;
break;
}
AreaSetting setting = null;
if (area != null)
{
try
{
setting = await client.GetContainer(Constant.TEAMModelOS, "Normal").ReadItemAsync(area.id, new PartitionKey("AreaSetting"));
}
catch (CosmosException)
{
setting = null;
}
}
if (setting == null|| string.IsNullOrEmpty(setting.accessConfig))
{
return (null,null,null);
}
else {
return (setting.accessConfig,area,setting);
}
}
public static async Task> GetDiagnosisList(CosmosClient client, string standard,DingDing dingDing, AreaSetting setting, HttpTrigger httpTrigger, HashSet pxids, TEAMModelOS.Models.Option _option) {
List abilityNos = new List() ;
var config= setting.accessConfig.ToObject();
config.TryGetProperty("config", out JsonElement _config);
if ($"{_config}".Equals("scsyxpt"))
{
foreach (var pxid in pxids) {
Dictionary dict = new Dictionary() { { "accessConfig", setting.accessConfig },{ "pxid",pxid } };
(int status, string json) = await httpTrigger.RequestHttpTrigger(dict, _option.Location, "GetDiagnosisListByProject_V2");
if (status == 200)
{
List nos = json.ToObject>();
if (nos.IsNotEmpty()) {
abilityNos.AddRange(nos);
}
}
}
}
//获取能力点
List abilities = null;
if (abilityNos.IsNotEmpty()) {
abilities = new List();
StringBuilder sql = new StringBuilder($"select value(c) from c where c.no in ({string.Join(",", abilityNos.Select(x => $"'{x}'"))})");
await foreach (var item in client.GetContainer("TEAMModelOS", "Normal")
.GetItemQueryIterator(queryText: sql.ToString(), requestOptions: new QueryRequestOptions() { PartitionKey = new PartitionKey($"Ability-{standard}") }))
{
abilities.Add(item);
}
}
return abilities;
}
}
}