AppealTypeService.cs 8.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246
  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. try {
  73. if (userid.HasValue)
  74. {
  75. var data = await _httpClient.Get<List<AppealRecord>>($"Appeal/GetAppealRecords?userId={userid}");
  76. //Console.WriteLine();
  77. return data;
  78. }
  79. else
  80. {
  81. var data = await _httpClient.Get<List<AppealRecord>>($"Appeal/GetAppealRecords?userId=0");
  82. return data;
  83. }
  84. }
  85. catch(Exception ex) {
  86. //Console.WriteLine(ex);
  87. return new List<AppealRecord>();
  88. }
  89. }
  90. public async Task<List<AppealRecord>> GetUserAppeals(AppealRecordFilter filter)
  91. {
  92. var data = await _httpClient.Post<List<AppealRecord>>($"Appeal/QueryByFilter",filter);
  93. return data;
  94. }
  95. public async Task<AppealType> GetItem(int appealTypeId)
  96. {
  97. if (AppealTypes == null)
  98. {
  99. AppealTypes = await _httpClient.Get<List<AppealType>>($"Appeal/GetAppealTypes");
  100. }
  101. var retData = AppealTypes.Where<AppealType>(ap => ap.Id == appealTypeId).FirstOrDefault();
  102. return retData;
  103. }
  104. public async Task<List<InputField>> GetInputFields(int appealTypeId,int State)
  105. {
  106. var data = await _httpClient.Get<List<InputField>>($"Appeal/GetInputField?appealTypeId={appealTypeId}&state={State}");
  107. return data;
  108. }
  109. public async Task<List<AttachFile>> GetAppealRecordAttachFiles(int appealRecordId)
  110. {
  111. var data = await _httpClient.Get<List<AttachFile>>($"Appeal/GetAppealRecordAttachFiles?appealRecordId={appealRecordId}");
  112. return data;
  113. }
  114. public async Task CreateAppeal(CreateAppealModel model)
  115. {
  116. List<AttachFile> attachFiles = new List<AttachFile>();
  117. //Console.WriteLine(System.Text.Json.JsonSerializer.Serialize(model));
  118. foreach (var file in model.FileList)
  119. {
  120. AttachFile atfile = new AttachFile();
  121. var result = file.GetResponse<List<AttachFile>>();
  122. atfile.Id = result[0].Id;
  123. attachFiles.Add(atfile);
  124. }
  125. string strUrl = $"Appeal/CreateAppeal?ItemId={model.Item.Id}&typeid={model.AppealType.Id}&reviewerId={model.AppealRecord.ReviewerId}";
  126. AppealObject appealObject = new AppealObject();
  127. appealObject.attachFiles = attachFiles;
  128. appealObject.inputFieldValues = model.inputFieldValues;
  129. foreach(var fValue in appealObject.inputFieldValues)
  130. {
  131. fValue.InputField = null;
  132. }
  133. try
  134. {
  135. var data = await _httpClient.Post<ApiSaveResponse>(strUrl, appealObject);
  136. if (!data.Success)
  137. {
  138. if (!data.Success)
  139. {
  140. throw new ApplicationException(data.ErrorMessage);
  141. }
  142. }
  143. }
  144. catch(Exception ex)
  145. {
  146. //Console.WriteLine(ex.StackTrace);
  147. throw ex;
  148. }
  149. }
  150. public async Task<ApiSaveResponse> ReviewerAppeal(ReviewerAppealModel model)
  151. {
  152. string strUrl = $"Appeal/ReviewerAppeal?appealRecordId={model.AppealRecord.Id}";
  153. AppealObject appealObject = new AppealObject();
  154. appealObject.inputFieldValues = model.inputFieldValues;
  155. foreach (var fValue in appealObject.inputFieldValues)
  156. {
  157. fValue.InputField = null;
  158. }
  159. try
  160. {
  161. var data = await _httpClient.Post<ApiSaveResponse>(strUrl, appealObject);
  162. return data;
  163. }
  164. catch(Exception ex)
  165. {
  166. return new ApiSaveResponse()
  167. {
  168. Success = false,
  169. ErrorMessage = "审核发送未知错误!"
  170. };
  171. }
  172. //if (!data.IsSuccessStatusCode)
  173. //{
  174. // string strContent = await data.Content.ReadAsStringAsync();
  175. // throw new Exception(strContent);
  176. //}
  177. }
  178. public async Task<ApiSaveResponse> ChangeReviewer(AppealRecord changedRecord)
  179. {
  180. var data = await _httpClient.Get<ApiSaveResponse>($"Appeal/ChangeRecordReviewer?RecordId={changedRecord.Id}&ReviewerId={changedRecord.ReviewerId}");
  181. return data;
  182. }
  183. public async Task<CaseCoefficientStatistics> GetCaseCoefficientStatistics(int? customerId,int calmonthId)
  184. {
  185. if (customerId == null)
  186. {
  187. CaseCoefficientStatistics caseCoefficients =
  188. await _httpClient.Get<CaseCoefficientStatistics>($"Appeal/GetCCSRecord?CalmonthId={calmonthId}");
  189. return caseCoefficients;
  190. }
  191. else
  192. {
  193. CaseCoefficientStatistics caseCoefficients =
  194. await _httpClient.Get<CaseCoefficientStatistics>($"Appeal/GetCCSRecord?CustomerId={customerId.Value}&CalmonthId={calmonthId}");
  195. return caseCoefficients;
  196. }
  197. }
  198. public async Task<FileProcessTask> ExportCustomerCCSFile(int calMonthId)
  199. {
  200. FileProcessTask file =
  201. await _httpClient.Get<FileProcessTask>($"Appeal/GetStaticsReport?CalMonthId={calMonthId}");
  202. return file;
  203. }
  204. }
  205. }