AppealTypeService.cs 6.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214
  1. using DynamicExpresso;
  2. using Microsoft.AspNetCore.Components.Authorization;
  3. using System;
  4. using System.Collections.Generic;
  5. using System.Linq;
  6. using System.Net.Http;
  7. using System.Net.Http.Json;
  8. using System.Text.Json;
  9. using System.Threading.Tasks;
  10. using wispro.sp.entity;
  11. using wispro.sp.share;
  12. using wispro.sp.web.Auth;
  13. using wispro.sp.web.Models;
  14. namespace wispro.sp.web.Services
  15. {
  16. public class AppealTypeService
  17. {
  18. private readonly IHttpService _httpClient;
  19. private readonly JwtAuthenticationStateProvider _jwt;
  20. private List<AppealType> AppealTypes;
  21. public AppealTypeService(IHttpService httpClient, AuthenticationStateProvider jwt)
  22. {
  23. _httpClient = httpClient;
  24. _jwt = (JwtAuthenticationStateProvider)jwt;
  25. }
  26. public async Task<AppealRecord> getAppealRecord(int appealRecordId)
  27. {
  28. var data = await _httpClient.Get<AppealRecord>($"Appeal/GetAppealRecord?Id={appealRecordId}");
  29. return data;
  30. }
  31. public async Task<List<InputFieldValue>> GetInputFieldValues(int id, int state)
  32. {
  33. var data = await _httpClient.Get<List<InputFieldValue>>($"Appeal/GetInputFieldValues?Id={id}&state={state}");
  34. return data;
  35. }
  36. public async Task<List<AppealType>> GetItems()
  37. {
  38. if (AppealTypes == null)
  39. {
  40. AppealTypes = await _httpClient.Get<List<AppealType>>($"Appeal/GetAppealTypes");
  41. }
  42. return AppealTypes;
  43. }
  44. public List<AppealType> GetItems(int Type)
  45. {
  46. return AppealTypes.Where<AppealType>(at => at.Type == Type).ToList();
  47. }
  48. public List<AppealType> GetItems(PerformanceItem item)
  49. {
  50. List<AppealType> retList = new List<AppealType>();
  51. foreach (var at in GetItems(0))
  52. {
  53. if (!string.IsNullOrWhiteSpace(at.CanDoExpress))
  54. {
  55. var interpreter = new Interpreter();
  56. Func<PerformanceItem, bool> func = interpreter.ParseAsDelegate<Func<PerformanceItem, bool>>(at.CanDoExpress, "p");
  57. bool result = func.Invoke(item);
  58. if (result)
  59. {
  60. retList.Add(at);
  61. }
  62. }
  63. else
  64. {
  65. retList.Add(at);
  66. }
  67. }
  68. return retList;
  69. }
  70. public async Task<List<AppealRecord>> GetUserAppeals(int? userid)
  71. {
  72. if (userid.HasValue)
  73. {
  74. var data = await _httpClient.Get<List<AppealRecord>>($"Appeal/GetAppealRecords?userId={userid}");
  75. return data;
  76. }
  77. else
  78. {
  79. var data = await _httpClient.Get<List<AppealRecord>>($"Appeal/GetAppealRecords?userId=0");
  80. return data;
  81. }
  82. }
  83. public async Task<List<AppealRecord>> GetUserAppeals(AppealRecordFilter filter)
  84. {
  85. var data = await _httpClient.Post<List<AppealRecord>>($"Appeal/QueryByFilter",filter);
  86. return data;
  87. }
  88. public async Task<AppealType> GetItem(int appealTypeId)
  89. {
  90. if (AppealTypes == null)
  91. {
  92. AppealTypes = await _httpClient.Get<List<AppealType>>($"Appeal/GetAppealTypes");
  93. }
  94. var retData = AppealTypes.Where<AppealType>(ap => ap.Id == appealTypeId).FirstOrDefault();
  95. return retData;
  96. }
  97. public async Task<List<InputField>> GetInputFields(int appealTypeId,int State)
  98. {
  99. var data = await _httpClient.Get<List<InputField>>($"Appeal/GetInputField?appealTypeId={appealTypeId}&state={State}");
  100. return data;
  101. }
  102. public async Task<List<AttachFile>> GetAppealRecordAttachFiles(int appealRecordId)
  103. {
  104. var data = await _httpClient.Get<List<AttachFile>>($"Appeal/GetAppealRecordAttachFiles?appealRecordId={appealRecordId}");
  105. return data;
  106. }
  107. public async Task CreateAppeal(CreateAppealModel model)
  108. {
  109. List<AttachFile> attachFiles = new List<AttachFile>();
  110. Console.WriteLine(System.Text.Json.JsonSerializer.Serialize(model));
  111. foreach (var file in model.FileList)
  112. {
  113. AttachFile atfile = new AttachFile();
  114. var result = file.GetResponse<List<AttachFile>>();
  115. atfile.Id = result[0].Id;
  116. attachFiles.Add(atfile);
  117. }
  118. string strUrl = $"Appeal/CreateAppeal?ItemId={model.Item.Id}&typeid={model.AppealType.Id}&reviewerId={model.AppealRecord.ReviewerId}";
  119. AppealObject appealObject = new AppealObject();
  120. appealObject.attachFiles = attachFiles;
  121. appealObject.inputFieldValues = model.inputFieldValues;
  122. foreach(var fValue in appealObject.inputFieldValues)
  123. {
  124. fValue.InputField = null;
  125. }
  126. try
  127. {
  128. var data = await _httpClient.Post<ApiSaveResponse>(strUrl, appealObject);
  129. if (!data.Success)
  130. {
  131. if (!data.Success)
  132. {
  133. throw new ApplicationException(data.ErrorMessage);
  134. }
  135. }
  136. }
  137. catch(Exception ex)
  138. {
  139. Console.WriteLine(ex.StackTrace);
  140. throw ex;
  141. }
  142. }
  143. public async Task<ApiSaveResponse> ReviewerAppeal(ReviewerAppealModel model)
  144. {
  145. string strUrl = $"Appeal/ReviewerAppeal?appealRecordId={model.AppealRecord.Id}";
  146. AppealObject appealObject = new AppealObject();
  147. appealObject.inputFieldValues = model.inputFieldValues;
  148. foreach (var fValue in appealObject.inputFieldValues)
  149. {
  150. fValue.InputField = null;
  151. }
  152. try
  153. {
  154. var data = await _httpClient.Post<ApiSaveResponse>(strUrl, appealObject);
  155. return data;
  156. }
  157. catch(Exception ex)
  158. {
  159. return new ApiSaveResponse()
  160. {
  161. Success = false,
  162. ErrorMessage = "审核发送未知错误!"
  163. };
  164. }
  165. //if (!data.IsSuccessStatusCode)
  166. //{
  167. // string strContent = await data.Content.ReadAsStringAsync();
  168. // throw new Exception(strContent);
  169. //}
  170. }
  171. public async Task<ApiSaveResponse> ChangeReviewer(AppealRecord changedRecord)
  172. {
  173. var data = await _httpClient.Get<ApiSaveResponse>($"Appeal/ChangeRecordReviewer?RecordId={changedRecord.Id}&ReviewerId={changedRecord.ReviewerId}");
  174. return data;
  175. }
  176. }
  177. }