ThirdService.cs 3.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  1. using Azure.Cosmos;
  2. using HTEXLib.COMM.Helpers;
  3. using System;
  4. using System.Collections.Generic;
  5. using System.Linq;
  6. using System.Text;
  7. using System.Text.Json;
  8. using System.Threading.Tasks;
  9. using TEAMModelOS.SDK.DI;
  10. using TEAMModelOS.SDK.Extension;
  11. namespace TEAMModelOS.SDK.Models
  12. {
  13. public static class ThirdService
  14. {
  15. public static async Task<(string accessConfig, Area area, AreaSetting setting)> GetAccessConfig(CosmosClient client,string standard) {
  16. Area area = null;
  17. await foreach (var item in client.GetContainer(Constant.TEAMModelOS, "Normal").
  18. GetItemQueryIterator<Area>($"select value(c) from c where c.standard='{standard}'", requestOptions: new QueryRequestOptions { PartitionKey = new PartitionKey("Base-Area") }))
  19. {
  20. area = item;
  21. break;
  22. }
  23. AreaSetting setting = null;
  24. if (area != null)
  25. {
  26. try
  27. {
  28. setting = await client.GetContainer(Constant.TEAMModelOS, "Normal").ReadItemAsync<AreaSetting>(area.id, new PartitionKey("AreaSetting"));
  29. }
  30. catch (CosmosException)
  31. {
  32. setting = null;
  33. }
  34. }
  35. if (setting == null|| string.IsNullOrEmpty(setting.accessConfig))
  36. {
  37. return (null,null,null);
  38. }
  39. else {
  40. return (setting.accessConfig,area,setting);
  41. }
  42. }
  43. public static async Task<List<Ability>> GetDiagnosisList(CosmosClient client, string standard,DingDing dingDing, AreaSetting setting, HttpTrigger httpTrigger, HashSet<string> pxids, TEAMModelOS.Models.Option _option) {
  44. List<string> abilityNos = new List<string>() ;
  45. var config= setting.accessConfig.ToObject<JsonElement>();
  46. config.TryGetProperty("config", out JsonElement _config);
  47. if ($"{_config}".Equals("scsyxpt"))
  48. {
  49. foreach (var pxid in pxids) {
  50. Dictionary<string, object> dict = new Dictionary<string, object>() { { "accessConfig", setting.accessConfig },{ "pxid",pxid } };
  51. (int status, string json) = await httpTrigger.RequestHttpTrigger(dict, _option.Location, "GetDiagnosisListByProject_V2");
  52. if (status == 200)
  53. {
  54. List<string> nos = json.ToObject<List<string>>();
  55. if (nos.IsNotEmpty()) {
  56. abilityNos.AddRange(nos);
  57. }
  58. }
  59. }
  60. }
  61. //获取能力点
  62. List<Ability> abilities = null;
  63. if (abilityNos.IsNotEmpty()) {
  64. abilities = new List<Ability>();
  65. StringBuilder sql = new StringBuilder($"select value(c) from c where c.no in ({string.Join(",", abilityNos.Select(x => $"'{x}'"))})");
  66. await foreach (var item in client.GetContainer("TEAMModelOS", "Normal")
  67. .GetItemQueryIterator<Ability>(queryText: sql.ToString(), requestOptions: new QueryRequestOptions() { PartitionKey = new PartitionKey($"Ability-{standard}") }))
  68. {
  69. abilities.Add(item);
  70. }
  71. }
  72. return abilities;
  73. }
  74. }
  75. }