HttpHelper.cs 69 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579
  1. using ivf_tl_Entity;
  2. using ivf_tl_Entity.DebugEntitys;
  3. using ivf_tl_Entity.DTO;
  4. using ivf_tl_Entity.GlobalEntitys;
  5. using ivf_tl_Entity.GlobalEnums;
  6. using Newtonsoft.Json;
  7. using Newtonsoft.Json.Linq;
  8. using System;
  9. using System.Collections.Generic;
  10. using System.Collections.ObjectModel;
  11. using System.Diagnostics;
  12. using System.IO;
  13. using System.Linq;
  14. using System.Net;
  15. using System.Net.Http;
  16. using System.Net.Http.Headers;
  17. using System.Security.Principal;
  18. using System.Text;
  19. using System.Threading;
  20. using System.Threading.Tasks;
  21. using System.Windows.Documents;
  22. using System.Xml.Linq;
  23. namespace ivf_tl_Services
  24. {
  25. public class HttpHelper
  26. {
  27. private HttpClient client;
  28. private LogHelper logHelper = null;
  29. private string token = null;
  30. private string Account = null;
  31. private string PassWord = null;
  32. //����߳�ʱ
  33. private TimeSpan AsyncTimeout = new TimeSpan(0, 0, 10);
  34. //��������ʱ
  35. TimeSpan ServiceTimeout = new TimeSpan(0, 0, 12);
  36. public HttpHelper(string account, string passWord, LogHelper logHelper)
  37. {
  38. // client.DefaultRequestHeaders.Add("token", Token);
  39. //BaseAddress = new Uri(baseAddress),
  40. Account = account;
  41. PassWord = passWord;
  42. this.logHelper = logHelper;
  43. }
  44. public ExUserInfo Init(string baseAddress)
  45. {
  46. client = new HttpClient()
  47. {
  48. BaseAddress = new Uri(baseAddress),
  49. Timeout = ServiceTimeout
  50. };
  51. client.DefaultRequestHeaders.ExpectContinue = false;
  52. System.Net.ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;
  53. return Login();
  54. }
  55. private void ExLog(Exception ex, string name)
  56. {
  57. logHelper.ExceptionLog(ex, $"HttpHelper.{name}", LogEnum.RunException);
  58. }
  59. private void ErrorLog(string message, LogEnum logType)
  60. {
  61. logHelper.TLLog($"HttpHelper.{message}", logType);
  62. }
  63. public void GetMp4()
  64. {
  65. try
  66. {
  67. string newFile = @"C:\Users\20552\Desktop\123\1.mp4";
  68. string url = "http://gateway.aivfo.com:36000/group1/M00/01/26/wKgfWWTDS1OAJAeCAABDxrBoDoo005.mp4?token=token";
  69. HttpResponseMessage res = client.GetAsync(url).Result;
  70. using (var fs = File.Create(newFile))
  71. {
  72. var resultStream = res.Content.ReadAsStreamAsync().Result;
  73. resultStream.CopyTo(fs);
  74. fs.Close();
  75. }
  76. string sss = "";
  77. }
  78. catch (Exception ex)
  79. {
  80. }
  81. }
  82. #region ����
  83. public async Task<int> DownLoadFileAsync(string url, string newFileName)
  84. {
  85. string traceId = Guid.NewGuid().ToString("N");
  86. try
  87. {
  88. url = url.Replace("+", "%2B");
  89. url = url.Replace(",", "%2C");
  90. if (string.IsNullOrEmpty(GetToken())) return 0;
  91. var request = new HttpRequestMessage(HttpMethod.Get, url);
  92. request.Headers.Add("token", token);
  93. request.Headers.Add("traceId", traceId);
  94. //CancellationTokenSource cancellationTokenSource = new CancellationTokenSource();
  95. //cancellationTokenSource.CancelAfter(AsyncTimeout);
  96. var responseMessage = await client.SendAsync(request, HttpCompletionOption.ResponseHeadersRead);
  97. if (responseMessage.StatusCode != HttpStatusCode.OK)
  98. {
  99. ErrorLog($"DownLoadFile���ʷ�����ʧ�ܣ�[url:{url}],[traceId:{traceId}]", LogEnum.RunError);
  100. return 0;
  101. }
  102. using (var fs = File.Create(newFileName))
  103. {
  104. using (var download = await responseMessage.Content.ReadAsStreamAsync())
  105. {
  106. var buffer = new byte[10240];
  107. int bytesRead;
  108. while ((bytesRead = await download.ReadAsync(buffer, 0, buffer.Length).ConfigureAwait(false)) != 0)
  109. {
  110. await fs.WriteAsync(buffer, 0, bytesRead).ConfigureAwait(false);
  111. }
  112. }
  113. }
  114. return 1;
  115. }
  116. catch (Exception ex)
  117. {
  118. ExLog(ex, $"DownLoadFileAsync���ʷ������쳣��[url:{url}],[traceId:{traceId}]");
  119. return -1;
  120. }
  121. }
  122. public async Task<int> DownLoadFileAsync(string url, string newFileName, string body)
  123. {
  124. string traceId = Guid.NewGuid().ToString("N");
  125. try
  126. {
  127. url = url.Replace("+", "%2B");
  128. url = url.Replace(",", "%2C");
  129. if (string.IsNullOrEmpty(GetToken())) return 0;
  130. HttpContent httpContent = new StringContent(body);
  131. httpContent.Headers.ContentType = new MediaTypeHeaderValue("application/json");
  132. httpContent.Headers.ContentType.CharSet = "utf-8";
  133. var request = new HttpRequestMessage(HttpMethod.Get, url) { Content = httpContent };
  134. request.Headers.Add("token", token);
  135. request.Headers.Add("traceId", traceId);
  136. //CancellationTokenSource cancellationTokenSource = new CancellationTokenSource();
  137. //cancellationTokenSource.CancelAfter(AsyncTimeout);
  138. var responseMessage = await client.SendAsync(request, HttpCompletionOption.ResponseHeadersRead);
  139. if (responseMessage.StatusCode != HttpStatusCode.OK)
  140. {
  141. ErrorLog($"DownLoadFile���ʷ�����ʧ�ܣ�[url:{url}],[traceId:{traceId}]", LogEnum.RunError);
  142. return 0;
  143. }
  144. using (var fs = File.Create(newFileName))
  145. {
  146. using (var download = await responseMessage.Content.ReadAsStreamAsync())
  147. {
  148. var buffer = new byte[10240];
  149. int bytesRead;
  150. while ((bytesRead = await download.ReadAsync(buffer, 0, buffer.Length).ConfigureAwait(false)) != 0)
  151. {
  152. await fs.WriteAsync(buffer, 0, bytesRead).ConfigureAwait(false);
  153. }
  154. }
  155. }
  156. return 1;
  157. }
  158. catch (Exception ex)
  159. {
  160. ExLog(ex, $"DownLoadFileAsync���ʷ������쳣��[url:{url}],[traceId:{traceId}]");
  161. return -1;
  162. }
  163. }
  164. #endregion
  165. #region ����ƽ��ӿ�
  166. public bool StartBalanceApi(int houseSn, string tlSn)
  167. {
  168. string funcName = "StartBalanceApi";
  169. try
  170. {
  171. string url = "/api/businessManage/surface/balance/startBalance";
  172. string body = JsonConvert.SerializeObject(new { houseSn = houseSn, tlSn = tlSn });
  173. string resultString = callWebService(url, body);
  174. if (string.IsNullOrEmpty(resultString)) return false;
  175. HttpResult<object> rs = JsonConvert.DeserializeObject<HttpResult<object>>(resultString);
  176. if (!rs.success)
  177. {
  178. ErrorLog($"{funcName}�ӿڷ���ʧ��:{resultString}", LogEnum.RunError);
  179. return false;
  180. }
  181. return true;
  182. }
  183. catch (Exception ex)
  184. {
  185. ExLog(ex, funcName);
  186. return false;
  187. }
  188. }
  189. public bool StopBalanceApi(long id)
  190. {
  191. string funcName = "StopBalanceApi";
  192. try
  193. {
  194. string url = "/api/businessManage/surface/balance/stopBalance";
  195. string body = JsonConvert.SerializeObject(new { id = id });
  196. string resultString = callWebService(url, body);
  197. if (string.IsNullOrEmpty(resultString)) return false;
  198. HttpResult<object> rs = JsonConvert.DeserializeObject<HttpResult<object>>(resultString);
  199. if (!rs.success)
  200. {
  201. ErrorLog($"{funcName}�ӿڷ���ʧ��:{resultString}", LogEnum.RunError);
  202. return false;
  203. }
  204. return true;
  205. }
  206. catch (Exception ex)
  207. {
  208. ExLog(ex, funcName);
  209. return false;
  210. }
  211. }
  212. #endregion
  213. #region ���������ӿ�
  214. /// <summary>
  215. /// ���߹��� - �����б�
  216. /// </summary>
  217. /// <param name="tlsn"></param>
  218. /// <returns></returns>
  219. public GetHouseStateData GetHouseCultureListApi(string tlsn)
  220. {
  221. string funcName = "GetHouseCultureListApi";
  222. try
  223. {
  224. string url = "/api/businessManage/surface/embryoCultureRecord/getHouseCultureList";
  225. Dictionary<string, string> keyValuePairs = new Dictionary<string, string>();
  226. keyValuePairs.Add("tlSn", tlsn);
  227. var resultString = callWebService(url, keyValuePairs);
  228. if (string.IsNullOrEmpty(resultString)) return new GetHouseStateData();
  229. HttpResult<GetHouseStateData> rs = JsonConvert.DeserializeObject<HttpResult<GetHouseStateData>>(resultString);
  230. if (!rs.success)
  231. {
  232. ErrorLog($"{funcName}�ӿڷ���ʧ��:{resultString}", LogEnum.RunError);
  233. return new GetHouseStateData();
  234. }
  235. if (rs.data != null) return rs.data;
  236. ErrorLog($"{funcName}�ӿڷ��سɹ����������� {resultString}", LogEnum.RunError);
  237. return new GetHouseStateData();
  238. }
  239. catch (Exception ex)
  240. {
  241. ExLog(ex, funcName);
  242. return new GetHouseStateData();
  243. }
  244. }
  245. /// <summary>
  246. /// ��ʼ���� - ���ӻ�����Ϣ
  247. /// </summary>
  248. /// <param name="exDish"></param>
  249. /// <returns></returns>
  250. public string AddCultureRecordApi(ExDish exDish)
  251. {
  252. string funcName = "AddCultureRecordApi";
  253. try
  254. {
  255. string url = "/api/businessManage/surface/embryoCultureRecord/addCultureRecord";
  256. string body = JsonConvert.SerializeObject(exDish);
  257. var resultString = callWebService(url, body);
  258. if (string.IsNullOrEmpty(resultString)) return "����������ʧ��";
  259. HttpResult rs = JsonConvert.DeserializeObject<HttpResult>(resultString);
  260. if (!rs.success)
  261. {
  262. ErrorLog($"{funcName}�ӿڷ���ʧ��:{resultString}", LogEnum.RunError);
  263. return rs.message;
  264. }
  265. return null;
  266. }
  267. catch (Exception ex)
  268. {
  269. ExLog(ex, funcName);
  270. return ex.Message;
  271. }
  272. }
  273. /// <summary>
  274. /// ��������
  275. /// </summary>
  276. /// <param name="id"></param>
  277. /// <returns></returns>
  278. public bool EndCultureRecordApi(long id)
  279. {
  280. string funcName = "EndCultureRecordApi";
  281. try
  282. {
  283. string url = "/api/businessManage/surface/embryoCultureRecord/endCultureRecord";
  284. Dictionary<string, string> keyValuePairs = new Dictionary<string, string>();
  285. keyValuePairs.Add("id", id.ToString());
  286. string resultString = callWebService(url, keyValuePairs);
  287. if (string.IsNullOrEmpty(resultString)) return false;
  288. HttpResult rs = JsonConvert.DeserializeObject<HttpResult>(resultString);
  289. if (!rs.success)
  290. {
  291. ErrorLog($"{funcName}�ӿڷ���ʧ�ܣ�{resultString}", LogEnum.RunError);
  292. return false;
  293. }
  294. return true;
  295. }
  296. catch (Exception ex)
  297. {
  298. ExLog(ex, funcName);
  299. return false;
  300. }
  301. }
  302. public bool UpdateDishInfoApi(string body)
  303. {
  304. string funcName = "UpdateDishInfoApi";
  305. try
  306. {
  307. string url = "/api/businessManage/surface/embryoCultureRecord/updateCultureRecord";
  308. string resultString = callWebService(url, body);
  309. if (string.IsNullOrEmpty(resultString)) return false;
  310. HttpResult rs = JsonConvert.DeserializeObject<HttpResult>(resultString);
  311. if (!rs.success)
  312. {
  313. ErrorLog($"{funcName}�ӿڷ���ʧ�ܣ�{resultString}", LogEnum.RunError);
  314. return false;
  315. }
  316. return true;
  317. }
  318. catch (Exception ex)
  319. {
  320. ExLog(ex, funcName);
  321. return false;
  322. }
  323. }
  324. #endregion
  325. #region �豸���ݽӿ�
  326. /// <summary>
  327. /// ��ȡͼƬ��Ƶ
  328. /// </summary>
  329. /// <param name="tlsn"></param>
  330. /// <param name="housesn"></param>
  331. /// <param name="dishId"></param>
  332. /// <returns></returns>
  333. public List<GetPicturesByRecordIdData> GetPicturesByRecordIdApi(string tlsn, int housesn, long dishId, List<int> wellList)
  334. {
  335. string funcName = "GetPicturesByRecordIdApi";
  336. try
  337. {
  338. string url = "/api/businessManage/surface/resource/getPicturesByRecordId";
  339. string body = JsonConvert.SerializeObject(new { tlSn = tlsn, houseSn = housesn, id = dishId, wellSnList = wellList });
  340. string resultString = callWebService(url, body);
  341. if (string.IsNullOrEmpty(resultString)) return new List<GetPicturesByRecordIdData>();
  342. HttpResult<List<GetPicturesByRecordIdData>> rs = JsonConvert.DeserializeObject<HttpResult<List<GetPicturesByRecordIdData>>>(resultString);
  343. if (!rs.success)
  344. {
  345. ErrorLog($"{funcName}�ӿڷ���ʧ�� {resultString}", LogEnum.RunError);
  346. return new List<GetPicturesByRecordIdData>();
  347. }
  348. if (rs.data == null)
  349. {
  350. ErrorLog($"{funcName}�ӿڷ��سɹ����������� {resultString}", LogEnum.RunError);
  351. return new List<GetPicturesByRecordIdData>();
  352. }
  353. foreach (var item in rs.data)
  354. {
  355. if (item.videoPictures == null) item.videoPictures = new List<PictureEntity>();
  356. if (item.videos == null) item.videos = new List<VideoEntity>();
  357. if (item.videoPictures.Any()) item.videoPictures = item.videoPictures.OrderBy(x => x.developTime).ToList();
  358. if (item.videos.Any()) item.videos = item.videos.OrderBy(x => x.pictureLayer).ToList();
  359. }
  360. return rs.data;
  361. }
  362. catch (Exception ex)
  363. {
  364. ExLog(ex, funcName);
  365. return new List<GetPicturesByRecordIdData>();
  366. }
  367. }
  368. public List<DishPicAndVideo> GetRecordDetailApi(string tlsn, int housesn, long dishId, List<int> wellList)
  369. {
  370. string funcName = "GetRecordDetailApi";
  371. try
  372. {
  373. string url = "/api/businessManage/surface/resource/getRecordDetail";
  374. string body = JsonConvert.SerializeObject(new { tlSn = tlsn, houseSn = housesn, id = dishId, wellSnList = wellList });
  375. //ErrorLog($"/api/businessManage/surface/resource/getRecordDetail�ӿڲ�����{body}", LogEnum.RunRecord);
  376. string resultString = callWebService(url, body);
  377. //ErrorLog($"/api/businessManage/surface/resource/getRecordDetail�ӿڷ��أ�{resultString}", LogEnum.RunRecord);
  378. if (string.IsNullOrEmpty(resultString)) return new List<DishPicAndVideo>();
  379. HttpResult<List<DishPicAndVideo>> rs = JsonConvert.DeserializeObject<HttpResult<List<DishPicAndVideo>>>(resultString);
  380. if (!rs.success)
  381. {
  382. ErrorLog($"{funcName}�ӿڷ���ʧ�� {resultString}", LogEnum.RunError);
  383. return new List<DishPicAndVideo>();
  384. }
  385. if (rs.data != null) return rs.data;
  386. ErrorLog($"{funcName}�ӿڷ��سɹ����������� {resultString}", LogEnum.RunError);
  387. return new List<DishPicAndVideo>();
  388. }
  389. catch (Exception ex)
  390. {
  391. ExLog(ex, funcName);
  392. return new List<DishPicAndVideo>();
  393. }
  394. }
  395. /// <summary>
  396. /// ��ȡָ��wellָ��ͼ���ͼƬ
  397. /// </summary>
  398. /// <param name="tlsn"></param>
  399. /// <param name="housesn"></param>
  400. /// <param name="dishId"></param>
  401. /// <param name="wellList"></param>
  402. /// <param name="layerList"></param>
  403. public List<SwitchVideoPictureLayersData> SwitchVideoPictureLayersApi(string tlsn, int housesn, long dishId, List<int> wellList, List<int> layerList)
  404. {
  405. string funcName = "SwitchVideoPictureLayersApi";
  406. try
  407. {
  408. string url = "/api/businessManage/surface/resource/switchVideoPictureLayers";
  409. string body = JsonConvert.SerializeObject(new { tlSn = tlsn, houseSn = housesn, id = dishId, wellSnList = wellList, pictureLayer = layerList });
  410. string resultString = callWebService(url, body);
  411. if (string.IsNullOrEmpty(resultString)) return new List<SwitchVideoPictureLayersData>();
  412. HttpResult<List<SwitchVideoPictureLayersData>> rs = JsonConvert.DeserializeObject<HttpResult<List<SwitchVideoPictureLayersData>>>(resultString);
  413. if (!rs.success)
  414. {
  415. ErrorLog($"{funcName}�ӿڷ���ʧ�� {resultString}", LogEnum.RunError);
  416. return new List<SwitchVideoPictureLayersData>();
  417. }
  418. if (rs.data != null) return rs.data;
  419. ErrorLog($"{funcName}�ӿڷ��سɹ����������� {resultString}", LogEnum.RunError);
  420. return new List<SwitchVideoPictureLayersData>();
  421. }
  422. catch (Exception ex)
  423. {
  424. ExLog(ex, funcName);
  425. return new List<SwitchVideoPictureLayersData>();
  426. }
  427. }
  428. #endregion
  429. #region
  430. public List<ButtonEntity> GetQuickButtonsApi()
  431. {
  432. string funcName = "GetQuickButtonsApi";
  433. try
  434. {
  435. string url = "/api/businessManage/surface/photoSearchButton/getButtons";
  436. string body = JsonConvert.SerializeObject(new { types = new List<string> { "QUICK_BUTTON" } });
  437. string resultString = callWebService(url, body);
  438. if (string.IsNullOrEmpty(resultString)) return new List<ButtonEntity>();
  439. HttpResult<List<GetButtonsResult>> rs = JsonConvert.DeserializeObject<HttpResult<List<GetButtonsResult>>>(resultString);
  440. if (!rs.success)
  441. {
  442. ErrorLog($"{funcName}�ӿڷ���ʧ�� {resultString}", LogEnum.RunError);
  443. return new List<ButtonEntity>();
  444. }
  445. if (rs.data.Any() && rs.data.First().button != null && rs.data.First().button.Any())
  446. {
  447. return rs.data.First().button;
  448. }
  449. ErrorLog($"{funcName}�ӿڷ��سɹ����������� {resultString}", LogEnum.RunError);
  450. return new List<ButtonEntity>();
  451. }
  452. catch (Exception ex)
  453. {
  454. ExLog(ex, funcName);
  455. return new List<ButtonEntity>();
  456. }
  457. }
  458. public List<GetButtonsResult> GetTimeButtonsApi()
  459. {
  460. string funcName = "GetTimeButtonsApi";
  461. try
  462. {
  463. string url = "/api/businessManage/surface/photoSearchButton/getButtons";
  464. string body = JsonConvert.SerializeObject(new { types = new List<string> { "COMMON_BUTTON", "KEY_BUTTON " } });
  465. string resultString = callWebService(url, body);
  466. if (string.IsNullOrEmpty(resultString)) return new List<GetButtonsResult>();
  467. HttpResult<List<GetButtonsResult>> rs = JsonConvert.DeserializeObject<HttpResult<List<GetButtonsResult>>>(resultString);
  468. if (!rs.success)
  469. {
  470. ErrorLog($"{funcName}�ӿڷ���ʧ�� {resultString}", LogEnum.RunError);
  471. return new List<GetButtonsResult>();
  472. }
  473. if (rs.data != null && rs.data.Any()) return rs.data;
  474. ErrorLog($"{funcName}�ӿڷ��سɹ����������� {resultString}", LogEnum.RunError);
  475. return new List<GetButtonsResult>();
  476. }
  477. catch (Exception ex)
  478. {
  479. ExLog(ex, funcName);
  480. return new List<GetButtonsResult>();
  481. }
  482. }
  483. #endregion
  484. #region �������� TL��λ��ͨѶ�����ӿ�
  485. /// <summary>
  486. /// ��ȡ��������
  487. /// </summary>
  488. public SettingDataApiData GetSettingDataApi(TLInitData tLInitData)
  489. {
  490. string funcName = "GetSettingDataApi";
  491. try
  492. {
  493. string url = "/api/tl/control/time-lapse-equipment/setting/data";
  494. string body = JsonConvert.SerializeObject(tLInitData);
  495. string resultString = callWebService(url, body);
  496. if (string.IsNullOrEmpty(resultString)) return null;
  497. HttpResult<SettingDataApiData> rs = JsonConvert.DeserializeObject<HttpResult<SettingDataApiData>>(resultString);
  498. if (!rs.success)
  499. {
  500. logHelper.TLLog($"{funcName}�ӿڷ���ʧ�ܣ�{resultString}", LogEnum.RunError);
  501. return null;
  502. }
  503. if (rs.data != null) return rs.data;
  504. ErrorLog($"{funcName}�ӿڷ��سɹ����������� {resultString}", LogEnum.RunError);
  505. return null;
  506. }
  507. catch (Exception ex)
  508. {
  509. ExLog(ex, funcName);
  510. return null;
  511. }
  512. }
  513. #endregion
  514. #region ��λ���������� TL����������ݽӿ�
  515. /// <summary>
  516. /// ��ȡָ��tlSn��ϵͳ����
  517. /// </summary>
  518. /// <param name="tlsn"></param>
  519. /// <returns></returns>
  520. public TLSettingModel SettingSystemApi(string tlsn)
  521. {
  522. string funcName = "SettingSystemApi";
  523. try
  524. {
  525. string url = "/api/tl/control/setting/system";
  526. Dictionary<string, string> keyValuePairs = new Dictionary<string, string>();
  527. keyValuePairs.Add("tlSn", tlsn);
  528. string resultString = callWebService(url, keyValuePairs);
  529. if (string.IsNullOrEmpty(resultString)) return new TLSettingModel();
  530. HttpResult<TLSettingModel> rs = JsonConvert.DeserializeObject<HttpResult<TLSettingModel>>(resultString);
  531. if (!rs.success)
  532. {
  533. logHelper.TLLog($"{funcName}�ӿڷ���ʧ�ܣ�{resultString}", LogEnum.RunError);
  534. return new TLSettingModel();
  535. }
  536. if (rs.data != null) return rs.data;
  537. ErrorLog($"{funcName}�ӿڷ��سɹ����������� {resultString}", LogEnum.RunError);
  538. return new TLSettingModel();
  539. }
  540. catch (Exception ex)
  541. {
  542. ExLog(ex, funcName);
  543. return new TLSettingModel();
  544. }
  545. }
  546. /// <summary>
  547. /// ����ָ��tlSnϵͳ����
  548. /// </summary>
  549. /// <param name="tLSettingModel"></param>
  550. /// <returns></returns>
  551. public string SystemUpdateApi(TLSettingModel tLSettingModel)
  552. {
  553. string funcName = "SystemUpdateApi";
  554. try
  555. {
  556. string url = "/api/tl/control/setting/system/update";
  557. string body = JsonConvert.SerializeObject(tLSettingModel);
  558. string resultString = callWebService(url, body);
  559. if (string.IsNullOrEmpty(resultString)) return "���������ؿ�";
  560. HttpResult rs = JsonConvert.DeserializeObject<HttpResult>(resultString);
  561. if (!rs.success)
  562. {
  563. ErrorLog($"{funcName}�ӿڷ���ʧ�ܣ�{resultString}", LogEnum.RunError);
  564. return rs.message;
  565. }
  566. return null;
  567. }
  568. catch (Exception ex)
  569. {
  570. ExLog(ex, funcName);
  571. return ex.Message;
  572. }
  573. }
  574. public VersionEntity GetVersionBySnApi(string tlsn)
  575. {
  576. string funcName = "GetVersionBySnApi";
  577. try
  578. {
  579. string url = "/api/tl/control/tlInfo/getVersionBySn";
  580. Dictionary<string, string> keyValuePairs = new Dictionary<string, string>();
  581. keyValuePairs.Add("tlSn", tlsn);
  582. string resultString = callWebService(url, keyValuePairs);
  583. if (string.IsNullOrEmpty(resultString)) return new VersionEntity();
  584. var rs = JsonConvert.DeserializeObject<HttpResult<VersionEntity>>(resultString);
  585. if (!rs.success)
  586. {
  587. logHelper.TLLog($"{funcName}�ӿڷ���ʧ�ܣ�{resultString}", LogEnum.RunError);
  588. return new VersionEntity();
  589. }
  590. if (rs.data != null) return rs.data;
  591. ErrorLog($"{funcName}�ӿڷ��سɹ����������� {resultString}", LogEnum.RunError);
  592. return new VersionEntity();
  593. }
  594. catch (Exception ex)
  595. {
  596. ExLog(ex, funcName);
  597. return new VersionEntity();
  598. }
  599. }
  600. /// <summary>
  601. /// ��ȡָ��tlSn�IJ�������
  602. /// </summary>
  603. /// <param name="tlSn"></param>
  604. /// <returns></returns>
  605. public List<HouseInfo> GetSettingHouseApi(string tlSn)
  606. {
  607. string funcName = "GetSettingHouseApi";
  608. try
  609. {
  610. string url = "/api/tl/control/setting/house";
  611. string body = JsonConvert.SerializeObject(new { tlSn = tlSn, size = 100, current = 1 });
  612. string resultString = callWebService(url, body);
  613. if (string.IsNullOrEmpty(resultString)) return new List<HouseInfo>();
  614. HttpResult<SettingHouseData> rs = JsonConvert.DeserializeObject<HttpResult<SettingHouseData>>(resultString);
  615. if (!rs.success)
  616. {
  617. ErrorLog($"{funcName}�ӿڷ���ʧ�ܣ�{resultString}", LogEnum.RunError);
  618. return new List<HouseInfo>();
  619. }
  620. if (rs.data != null && rs.data.records != null) return rs.data.records;
  621. ErrorLog($"{funcName}�ӿڷ��سɹ����������� {resultString}", LogEnum.RunError);
  622. return new List<HouseInfo>();
  623. }
  624. catch (Exception ex)
  625. {
  626. ExLog(ex, funcName);
  627. return new List<HouseInfo>();
  628. }
  629. }
  630. /// <summary>
  631. /// ����ָ��tlSn��������
  632. /// </summary>
  633. /// <param name="houseList"></param>
  634. public bool HouseUpdateApi(ObservableCollection<HouseInfo> houseList)
  635. {
  636. string funcName = "HouseUpdateApi";
  637. try
  638. {
  639. string url = "/api/tl/control/setting/house/update";
  640. List<object> list = new List<object>();
  641. foreach (var item in houseList)
  642. {
  643. list.Add(new
  644. {
  645. id = item.id,
  646. openCcd = item.openCcd,
  647. openPort = item.openPort,
  648. });
  649. }
  650. string body = JsonConvert.SerializeObject(list);
  651. string resultString = callWebService(url, body);
  652. if (string.IsNullOrEmpty(resultString)) return false;
  653. HttpResult rs = JsonConvert.DeserializeObject<HttpResult>(resultString);
  654. if (!rs.success)
  655. {
  656. ErrorLog($"{funcName}�ӿڷ���ʧ�ܣ�{resultString}", LogEnum.RunError);
  657. return false;
  658. }
  659. return true;
  660. }
  661. catch (Exception ex)
  662. {
  663. ExLog(ex, funcName);
  664. return false;
  665. }
  666. }
  667. /// <summary>
  668. /// ��ȡָ��tlSn��tlͨ������
  669. /// </summary>
  670. /// <param name="tlsn"></param>
  671. public TLSettingCommon SettingCommonApi(string tlsn)
  672. {
  673. string funcName = "SettingCommonApi";
  674. try
  675. {
  676. string url = "/api/tl/control/setting/common";
  677. Dictionary<string, string> body = new Dictionary<string, string>();
  678. body.Add("tlSn", tlsn);
  679. string resultString = callWebService(url, body);
  680. if (string.IsNullOrEmpty(resultString)) return new TLSettingCommon();
  681. HttpResult<TLSettingCommon> rs = JsonConvert.DeserializeObject<HttpResult<TLSettingCommon>>(resultString);
  682. if (!rs.success)
  683. {
  684. ErrorLog($"{funcName}�ӿڷ���ʧ�ܣ�{resultString}", LogEnum.RunError);
  685. return new TLSettingCommon();
  686. }
  687. if (rs.data != null) return rs.data;
  688. ErrorLog($"{funcName}�ӿڷ��سɹ����������� {resultString}", LogEnum.RunError);
  689. return new TLSettingCommon();
  690. }
  691. catch (Exception ex)
  692. {
  693. ExLog(ex, funcName);
  694. return new TLSettingCommon();
  695. }
  696. }
  697. /// <summary>
  698. /// ����ָ��tlSn��tlͨ������
  699. /// </summary>
  700. /// <param name="tLSettingCommon"></param>
  701. /// <returns></returns>
  702. public bool CommonUpdateApi(TLSettingCommon tLSettingCommon)
  703. {
  704. string funcName = "CommonUpdateApi";
  705. try
  706. {
  707. string url = "/api/tl/control/setting/common/update";
  708. string body = JsonConvert.SerializeObject(tLSettingCommon);
  709. string resultString = callWebService(url, body);
  710. if (string.IsNullOrEmpty(resultString)) return false;
  711. HttpResult rs = JsonConvert.DeserializeObject<HttpResult>(resultString);
  712. if (!rs.success)
  713. {
  714. ErrorLog($"{funcName}�ӿڷ���ʧ�ܣ�{resultString}", LogEnum.RunError);
  715. return false;
  716. }
  717. return true;
  718. }
  719. catch (Exception ex)
  720. {
  721. ExLog(ex, funcName);
  722. return false;
  723. }
  724. }
  725. /// <summary>
  726. /// ���²��ҵ��Ե�������Ϣ
  727. /// </summary>
  728. /// <param name="body"></param>
  729. /// <returns></returns>
  730. public bool HouseDebuggingApi(string body)
  731. {
  732. string funcName = "HouseDebuggingApi";
  733. try
  734. {
  735. string url = "/api/tl/control/setting/house/debugging";
  736. string resultString = callWebService(url, body);
  737. if (string.IsNullOrEmpty(resultString)) return false;
  738. HttpResult rs = JsonConvert.DeserializeObject<HttpResult>(resultString);
  739. if (!rs.success)
  740. {
  741. ErrorLog($"{funcName}�ӿڷ���ʧ�ܣ�{resultString}", LogEnum.RunError);
  742. return false;
  743. }
  744. return true;
  745. }
  746. catch (Exception ex)
  747. {
  748. ExLog(ex, funcName);
  749. return false;
  750. }
  751. }
  752. /// <summary>
  753. /// ����well��λ����Ϣ
  754. /// </summary>
  755. /// <param name="body"></param>
  756. /// <returns></returns>
  757. public bool WellUpdateApi(string body)
  758. {
  759. string funcName = "WellUpdateApi";
  760. try
  761. {
  762. string url = "/api/tl/control/setting/house/well/update";
  763. string resultString = callWebService(url, body);
  764. if (string.IsNullOrEmpty(resultString)) return false;
  765. HttpResult rs = JsonConvert.DeserializeObject<HttpResult>(resultString);
  766. if (!rs.success)
  767. {
  768. ErrorLog($"{funcName}�ӿڷ���ʧ�ܣ�{resultString}", LogEnum.RunError);
  769. return false;
  770. }
  771. return true;
  772. }
  773. catch (Exception ex)
  774. {
  775. ExLog(ex, funcName);
  776. return false;
  777. }
  778. }
  779. /// <summary>
  780. /// ��ȡ�Խ���������
  781. /// </summary>
  782. /// <param name="tlsn"></param>
  783. public List<AutoFocusHouseInfo> FocusSettingApi(string tlsn)
  784. {
  785. string funcName = "FocusSettingApi";
  786. try
  787. {
  788. string url = "/api/tl/control/setting/house/focus/setting";
  789. Dictionary<string, string> body = new Dictionary<string, string>();
  790. body.Add("tlSn", tlsn);
  791. string resultString = callWebService(url, body);
  792. if (string.IsNullOrEmpty(resultString)) return new List<AutoFocusHouseInfo>();
  793. HttpResult<List<AutoFocusHouseInfo>> rs = JsonConvert.DeserializeObject<HttpResult<List<AutoFocusHouseInfo>>>(resultString);
  794. if (!rs.success)
  795. {
  796. ErrorLog($"{funcName}�ӿڷ���ʧ�ܣ�{resultString}", LogEnum.RunError);
  797. return new List<AutoFocusHouseInfo>();
  798. }
  799. if (rs.data != null) return rs.data;
  800. ErrorLog($"{funcName}�ӿڷ��سɹ����������� {resultString}", LogEnum.RunError);
  801. return new List<AutoFocusHouseInfo>();
  802. }
  803. catch (Exception ex)
  804. {
  805. ExLog(ex, funcName);
  806. return new List<AutoFocusHouseInfo>();
  807. }
  808. }
  809. /// <summary>
  810. /// �Խ����������Խ�
  811. /// </summary>
  812. /// <param name="tlsn"></param>
  813. public bool HouseImmediatelyAPi(List<AutoFocusHouseInfoRequest> list)
  814. {
  815. string funcName = "HouseImmediatelyAPi";
  816. try
  817. {
  818. string url = "/api/tl/control/setting/house/immediately";
  819. string body = JsonConvert.SerializeObject(list);
  820. string resultString = callWebService(url, body);
  821. if (string.IsNullOrEmpty(resultString)) return false;
  822. HttpResult rs = JsonConvert.DeserializeObject<HttpResult>(resultString);
  823. if (!rs.success)
  824. {
  825. ErrorLog($"{funcName}�ӿڷ���ʧ�ܣ�{resultString}", LogEnum.RunError);
  826. return false;
  827. }
  828. return true;
  829. }
  830. catch (Exception ex)
  831. {
  832. ExLog(ex, funcName);
  833. return false;
  834. }
  835. }
  836. /// <summary>
  837. /// ����ָ��tlSn�ƹ�ǿ���Լ�����ƿ��������ʱ��
  838. /// </summary>
  839. /// <returns></returns>
  840. public bool LightsUpdateApi(string _tlsn, int _dayLighting, int _inletValveOpeningTime)
  841. {
  842. string funcName = "LightsUpdateApi";
  843. try
  844. {
  845. string url = "/api/tl/control/setting/lights/update";
  846. string body = JsonConvert.SerializeObject(new
  847. {
  848. dayLighting = _dayLighting,
  849. inletValveOpeningTime = _inletValveOpeningTime,
  850. tlSn = _tlsn,
  851. });
  852. string resultString = callWebService(url, body);
  853. if (string.IsNullOrEmpty(resultString)) return false;
  854. HttpResult rs = JsonConvert.DeserializeObject<HttpResult>(resultString);
  855. if (!rs.success)
  856. {
  857. ErrorLog($"{funcName}�ӿڷ���ʧ�ܣ�{resultString}", LogEnum.RunError);
  858. return false;
  859. }
  860. return true;
  861. }
  862. catch (Exception ex)
  863. {
  864. ExLog(ex, funcName);
  865. return false;
  866. }
  867. }
  868. /// <summary>
  869. /// ��ȡTL��ص�ʱ��
  870. /// </summary>
  871. /// <param name="tlsn"></param>
  872. public TlInfoTimeData TlInfoTimeApi(string tlsn)
  873. {
  874. string funcName = "TlInfoTimeApi";
  875. try
  876. {
  877. string url = "/api/tl/control/tlInfo/time";
  878. Dictionary<string, string> body = new Dictionary<string, string>();
  879. body.Add("tlSn", tlsn);
  880. string resultString = callWebService(url, body);
  881. if (string.IsNullOrEmpty(resultString)) return new TlInfoTimeData();
  882. HttpResult<TlInfoTimeData> rs = JsonConvert.DeserializeObject<HttpResult<TlInfoTimeData>>(resultString);
  883. if (!rs.success)
  884. {
  885. ErrorLog($"{funcName}�ӿڷ���ʧ�� {resultString}", LogEnum.RunError);
  886. return new TlInfoTimeData();
  887. }
  888. if (rs.data != null) return rs.data;
  889. ErrorLog($"{funcName}�ӿڷ��سɹ����������� {resultString}", LogEnum.RunError);
  890. return new TlInfoTimeData();
  891. }
  892. catch (Exception ex)
  893. {
  894. ExLog(ex, funcName);
  895. return new TlInfoTimeData();
  896. }
  897. }
  898. #endregion
  899. /// <summary>
  900. /// �����ֵ�Type��ѯ - �������ڵ�
  901. /// </summary>
  902. /// <param name="queryType"></param>
  903. public List<FertilizationTypeEntity> QueryDictionaryByTypeApi(string queryType)
  904. {
  905. string funcName = "QueryDictionaryByTypeApi";
  906. try
  907. {
  908. string url = "/api/businessManage/surface/dictionary/queryDictionaryByType";
  909. string resultString = callWebService(url, JsonConvert.SerializeObject(new { type = queryType }));
  910. if (string.IsNullOrEmpty(resultString)) return new List<FertilizationTypeEntity>();
  911. HttpResult<List<FertilizationTypeEntity>> rs = JsonConvert.DeserializeObject<HttpResult<List<FertilizationTypeEntity>>>(resultString);
  912. if (!rs.success)
  913. {
  914. ErrorLog($"{funcName}�ӿڷ���ʧ�� {resultString}", LogEnum.RunError);
  915. return new List<FertilizationTypeEntity>();
  916. }
  917. if (rs.data != null) return rs.data;
  918. ErrorLog($"{funcName}�ӿڷ��سɹ����������� {resultString}", LogEnum.RunError);
  919. return new List<FertilizationTypeEntity>();
  920. }
  921. catch (Exception ex)
  922. {
  923. ExLog(ex, funcName);
  924. return new List<FertilizationTypeEntity>();
  925. }
  926. }
  927. public string GetImageUrlApi(string tlSn, int houseSn, long id, int layer, int developTime)
  928. {
  929. string funcName = "GetImageUrlApi";
  930. try
  931. {
  932. string url = "/api/businessManage/surface/resource/switchVideoLayerByPicture";
  933. string resultString = callWebService(url, JsonConvert.SerializeObject(new { tlSn, houseSn, id, layer, developTime }));
  934. if (string.IsNullOrEmpty(resultString)) return null;
  935. var rs = JsonConvert.DeserializeObject<HttpResult<string>>(resultString);
  936. if (!rs.success)
  937. {
  938. ErrorLog($"{funcName}�ӿڷ���ʧ�� {resultString}", LogEnum.RunError);
  939. return null;
  940. }
  941. return rs.data;
  942. }
  943. catch (Exception ex)
  944. {
  945. ExLog(ex, funcName);
  946. return null;
  947. }
  948. }
  949. public List<DetailPic> GetVideoTimeLineApi(string tlSn, int houseSn, long id, int layer)
  950. {
  951. string funcName = "GetVideoTimeLineApi";
  952. try
  953. {
  954. string url = "/api/businessManage/surface/resource/getVideoTimeLine";
  955. string resultString = callWebService(url, JsonConvert.SerializeObject(new { tlSn, houseSn, id, layer }));
  956. if (string.IsNullOrEmpty(resultString)) return null;
  957. var rs = JsonConvert.DeserializeObject<HttpResult<List<DetailPic>>>(resultString);
  958. if (!rs.success)
  959. {
  960. ErrorLog($"{funcName}�ӿڷ���ʧ�� {resultString}", LogEnum.RunError);
  961. return null;
  962. }
  963. if (rs.data != null && rs.data.Any()) return rs.data;
  964. ErrorLog($"{funcName}�ӿڷ��سɹ����������� {resultString}", LogEnum.RunError);
  965. return new List<DetailPic>();
  966. }
  967. catch (Exception ex)
  968. {
  969. ExLog(ex, funcName);
  970. return null;
  971. }
  972. }
  973. public HouseChartEntity GetHouseEnvironmentListApi(string tlSn, int houseSn, string startTime, string endTime)
  974. {
  975. string funcName = "GetHouseEnvironmentListApi";
  976. try
  977. {
  978. string url = "/api/tl/control/houseCollect/getHouseEnvironmentList";
  979. string resultString = callWebService(url, JsonConvert.SerializeObject(new { tlSn, houseSn, startTime, endTime }));
  980. if (string.IsNullOrEmpty(resultString)) return new HouseChartEntity();
  981. var rs = JsonConvert.DeserializeObject<HttpResult<HouseChartEntity>>(resultString);
  982. if (!rs.success)
  983. {
  984. ErrorLog($"{funcName}�ӿڷ���ʧ�� {resultString}", LogEnum.RunError);
  985. return null;
  986. }
  987. if (rs.data != null) return rs.data;
  988. ErrorLog($"{funcName}�ӿڷ��سɹ����������� {resultString}", LogEnum.RunError);
  989. return new HouseChartEntity();
  990. }
  991. catch (Exception ex)
  992. {
  993. ExLog(ex, funcName);
  994. return new HouseChartEntity();
  995. }
  996. }
  997. public bool MarkEmbryoDestinationApi(long id, int state)
  998. {
  999. string funcName = "MarkEmbryoDestinationApi";
  1000. try
  1001. {
  1002. string url = "/api/businessManage/surface/embryoMark/markEmbryoDestination";
  1003. string resultString = callWebService(url, JsonConvert.SerializeObject(new { id, state }));
  1004. if (string.IsNullOrEmpty(resultString)) return false;
  1005. var rs = JsonConvert.DeserializeObject<HttpResult>(resultString);
  1006. if (!rs.success)
  1007. {
  1008. ErrorLog($"{funcName}�ӿڷ���ʧ�� {resultString}", LogEnum.RunError);
  1009. return false;
  1010. }
  1011. return true;
  1012. }
  1013. catch (Exception ex)
  1014. {
  1015. ExLog(ex, funcName);
  1016. return false;
  1017. }
  1018. }
  1019. public DishRecordResult SearchDishRecordApi(SearchDishRecordResponse searchDishRecord)
  1020. {
  1021. string funcName = "SearchDishRecordApi";
  1022. try
  1023. {
  1024. string url = "/api/businessManage/surface/embryoCultureRecord/getEmbryoCultureRecord";
  1025. string body = JsonConvert.SerializeObject(searchDishRecord, new JsonSerializerSettings { NullValueHandling = NullValueHandling.Ignore });
  1026. string resultString = callWebService(url, body);
  1027. if (string.IsNullOrEmpty(resultString)) return new DishRecordResult() { IsSuccess = false };
  1028. var rs = JsonConvert.DeserializeObject<HttpResult<DishRecordResult>>(resultString);
  1029. if (!rs.success)
  1030. {
  1031. ErrorLog($"{funcName}�ӿڷ���ʧ�� {resultString}", LogEnum.RunError);
  1032. return new DishRecordResult() { IsSuccess = false };
  1033. }
  1034. if (rs.data != null) return rs.data;
  1035. ErrorLog($"{funcName}�ӿڷ��سɹ����������� {resultString}", LogEnum.RunError);
  1036. return new DishRecordResult();
  1037. }
  1038. catch (Exception ex)
  1039. {
  1040. ExLog(ex, funcName);
  1041. return new DishRecordResult() { IsSuccess = false };
  1042. }
  1043. }
  1044. public DishRecordCountResult SearchDishRecordCountApi(SearchDishRecordResponse searchDishRecord)
  1045. {
  1046. string funcName = "SearchDishRecordCountApi";
  1047. try
  1048. {
  1049. string url = "/api/businessManage/surface/embryoCultureRecord/getEmbryoCultureRecordNum";
  1050. string body = JsonConvert.SerializeObject(searchDishRecord, new JsonSerializerSettings { NullValueHandling = NullValueHandling.Ignore });
  1051. string resultString = callWebService(url, body);
  1052. if (string.IsNullOrEmpty(resultString)) return new DishRecordCountResult();
  1053. var rs = JsonConvert.DeserializeObject<HttpResult<DishRecordCountResult>>(resultString);
  1054. if (!rs.success)
  1055. {
  1056. ErrorLog($"{funcName}�ӿڷ���ʧ�� {resultString}", LogEnum.RunError);
  1057. return new DishRecordCountResult();
  1058. }
  1059. if (rs.data != null) return rs.data;
  1060. ErrorLog($"{funcName}�ӿڷ��سɹ����������� {resultString}", LogEnum.RunError);
  1061. return new DishRecordCountResult();
  1062. }
  1063. catch (Exception ex)
  1064. {
  1065. ExLog(ex, funcName);
  1066. return new DishRecordCountResult();
  1067. }
  1068. }
  1069. public DishRecordCountResult SearchAlarmHistoryNumApi(SearchAlarmResponse searchAlarm)
  1070. {
  1071. string funcName = "SearchAlarmHistoryNumApi";
  1072. try
  1073. {
  1074. string url = "/api/tl/control/alarm/getAlarmNum";
  1075. string body = JsonConvert.SerializeObject(searchAlarm, new JsonSerializerSettings { NullValueHandling = NullValueHandling.Ignore });
  1076. string resultString = callWebService(url, body);
  1077. if (string.IsNullOrEmpty(resultString)) return new DishRecordCountResult();
  1078. var rs = JsonConvert.DeserializeObject<HttpResult<DishRecordCountResult>>(resultString);
  1079. if (!rs.success)
  1080. {
  1081. ErrorLog($"{funcName}�ӿڷ���ʧ�� {resultString}", LogEnum.RunError);
  1082. return new DishRecordCountResult();
  1083. }
  1084. if (rs.data != null) return rs.data;
  1085. ErrorLog($"{funcName}�ӿڷ��سɹ����������� {resultString}", LogEnum.RunError);
  1086. return new DishRecordCountResult();
  1087. }
  1088. catch (Exception ex)
  1089. {
  1090. ExLog(ex, funcName);
  1091. return new DishRecordCountResult();
  1092. }
  1093. }
  1094. public AlarmHistoryResult SearchAlarmHistoryApi(SearchAlarmResponse searchAlarm)
  1095. {
  1096. string funcName = "SearchAlarmHistoryApi";
  1097. try
  1098. {
  1099. string url = "/api/tl/control/alarm/getAlarm";
  1100. string body = JsonConvert.SerializeObject(searchAlarm, new JsonSerializerSettings { NullValueHandling = NullValueHandling.Ignore });
  1101. string resultString = callWebService(url, body);
  1102. if (string.IsNullOrEmpty(resultString)) return new AlarmHistoryResult() { IsSuccess = false };
  1103. var rs = JsonConvert.DeserializeObject<HttpResult<AlarmHistoryResult>>(resultString);
  1104. if (!rs.success)
  1105. {
  1106. ErrorLog($"{funcName}�ӿڷ���ʧ�� {resultString}", LogEnum.RunError);
  1107. return new AlarmHistoryResult() { IsSuccess = false };
  1108. }
  1109. if (rs.data != null) return rs.data;
  1110. ErrorLog($"{funcName}�ӿڷ��سɹ����������� {resultString}", LogEnum.RunError);
  1111. return new AlarmHistoryResult();
  1112. }
  1113. catch (Exception ex)
  1114. {
  1115. ExLog(ex, funcName);
  1116. return new AlarmHistoryResult() { IsSuccess = false };
  1117. }
  1118. }
  1119. public List<PictureView> GetPictureViewApi(string tlSn, int houseSn, long embryoId, int pictureLayer)
  1120. {
  1121. string funcName = "GetPictureViewApi";
  1122. try
  1123. {
  1124. string url = "/api/businessManage/surface/resource/getPictures";
  1125. string body = JsonConvert.SerializeObject(new { tlSn, houseSn, embryoId, pictureLayer });
  1126. string resultString = callWebService(url, body);
  1127. if (string.IsNullOrEmpty(resultString)) return new List<PictureView>();
  1128. var rs = JsonConvert.DeserializeObject<HttpResult<List<PictureView>>>(resultString);
  1129. if (!rs.success)
  1130. {
  1131. ErrorLog($"{funcName}����������ʧ�� {resultString}", LogEnum.RunError);
  1132. return new List<PictureView>();
  1133. }
  1134. if (rs.data != null && rs.data.Any()) return rs.data;
  1135. ErrorLog($"{funcName}�ӿڷ��سɹ����������� {resultString}", LogEnum.RunError);
  1136. return new List<PictureView>();
  1137. }
  1138. catch (Exception ex)
  1139. {
  1140. ExLog(ex, funcName);
  1141. return new List<PictureView>();
  1142. }
  1143. }
  1144. public List<PictureView> GetSourcePictureViewApi(string tlSn, int houseSn, long embryoId, int pictureLayer)
  1145. {
  1146. string funcName = "GetSourcePictureViewApi";
  1147. try
  1148. {
  1149. string url = "/api/businessManage/surface/resource/getSourcePictures";
  1150. string body = JsonConvert.SerializeObject(new { tlSn, houseSn, embryoId, pictureLayer });
  1151. string resultString = callWebService(url, body);
  1152. if (string.IsNullOrEmpty(resultString)) return new List<PictureView>();
  1153. var rs = JsonConvert.DeserializeObject<HttpResult<List<PictureView>>>(resultString);
  1154. if (!rs.success)
  1155. {
  1156. ErrorLog($"{funcName}����������ʧ�� {resultString}", LogEnum.RunError);
  1157. return new List<PictureView>();
  1158. }
  1159. if (rs.data != null && rs.data.Any()) return rs.data;
  1160. ErrorLog($"{funcName}�ӿڷ��سɹ����������� {resultString}", LogEnum.RunError);
  1161. return new List<PictureView>();
  1162. }
  1163. catch (Exception ex)
  1164. {
  1165. ExLog(ex, funcName);
  1166. return new List<PictureView>();
  1167. }
  1168. }
  1169. public ExDish GetExdishByIdApi(long id)
  1170. {
  1171. string funcName = "GetExdishByIdApi";
  1172. try
  1173. {
  1174. string url = "/api/businessManage/pc/embryoCultureRecord/getCultureRecordById";
  1175. var body = new Dictionary<string, string>() { { "id", id.ToString() } };
  1176. string resultString = callWebService(url, body);
  1177. if (string.IsNullOrEmpty(resultString)) return null;
  1178. var rs = JsonConvert.DeserializeObject<HttpResult<ExDish>>(resultString);
  1179. if (!rs.success)
  1180. {
  1181. ErrorLog($"{funcName}����������ʧ�� {resultString}", LogEnum.RunError);
  1182. return null;
  1183. }
  1184. if (rs.data != null) return rs.data;
  1185. ErrorLog($"{funcName}�ӿڷ��سɹ����������� {resultString}", LogEnum.RunError);
  1186. return null;
  1187. }
  1188. catch (Exception ex)
  1189. {
  1190. ExLog(ex, funcName);
  1191. return null;
  1192. }
  1193. }
  1194. public bool MuteAlarmApi(long id, int mute)
  1195. {
  1196. string funcName = "MuteAlarmApi";
  1197. try
  1198. {
  1199. string url = "/api/tl/control/alarm/muteAlarm";
  1200. string resultString = callWebService(url, JsonConvert.SerializeObject(new { id, mute }));
  1201. if (string.IsNullOrEmpty(resultString)) return false;
  1202. var rs = JsonConvert.DeserializeObject<HttpResult>(resultString);
  1203. if (!rs.success)
  1204. {
  1205. ErrorLog($"{funcName}����������ʧ�� {resultString}", LogEnum.RunError);
  1206. return false;
  1207. }
  1208. return true;
  1209. }
  1210. catch (Exception ex)
  1211. {
  1212. ExLog(ex, funcName);
  1213. return false;
  1214. }
  1215. }
  1216. public List<HouseCropAlarmResult> GetHouseCropAlarmApi(HouseCropAlarmResponse houseCropAlarmResponse)
  1217. {
  1218. string funcName = "GetHouseCropAlarmApi";
  1219. try
  1220. {
  1221. string url = "/api/tl/control/alarm/getHouseCropAlarm";
  1222. string body = JsonConvert.SerializeObject(houseCropAlarmResponse);
  1223. string resultString = callWebService(url, body);
  1224. if (string.IsNullOrEmpty(resultString)) return new List<HouseCropAlarmResult>();
  1225. HttpResult<List<HouseCropAlarmResult>> rs = JsonConvert.DeserializeObject<HttpResult<List<HouseCropAlarmResult>>>(resultString);
  1226. if (!rs.success)
  1227. {
  1228. ErrorLog($"{funcName}�ӿڷ���ʧ�� {resultString}", LogEnum.RunError);
  1229. return new List<HouseCropAlarmResult>();
  1230. }
  1231. if (rs.data != null && rs.data.Any()) return rs.data;
  1232. //ErrorLog($"{funcName}�ӿڷ��سɹ����������� {resultString}", LogEnum.RunError);
  1233. return new List<HouseCropAlarmResult>();
  1234. }
  1235. catch (Exception ex)
  1236. {
  1237. ExLog(ex, funcName);
  1238. return new List<HouseCropAlarmResult>();
  1239. }
  1240. }
  1241. #region ��������ʵ��
  1242. public ExUserInfo Login()
  1243. {
  1244. string funcName = "Login";
  1245. try
  1246. {
  1247. string resultString = callWebServiceNoToken("/api/gateway/auth/login", JsonConvert.SerializeObject(new { account = Account, password = PassWord }));
  1248. if (string.IsNullOrEmpty(resultString)) return null;
  1249. var rs = JsonConvert.DeserializeObject<HttpResult<LoginData>>(resultString);
  1250. if (!rs.success)
  1251. {
  1252. ErrorLog($"{funcName}����������ʧ�ܣ�{resultString}", LogEnum.RunError);
  1253. token = null;
  1254. return null;
  1255. }
  1256. if (rs.data != null)
  1257. {
  1258. token = rs.data.token;
  1259. return rs.data.userInfo;
  1260. }
  1261. ErrorLog($"{funcName}�ӿڷ��سɹ����������� {resultString}", LogEnum.RunError);
  1262. token = null;
  1263. return null;
  1264. }
  1265. catch (Exception ex)
  1266. {
  1267. ExLog(ex, funcName);
  1268. token = null;
  1269. return null;
  1270. }
  1271. }
  1272. public string GetToken()
  1273. {
  1274. string funcName = "GetToken";
  1275. try
  1276. {
  1277. if (!string.IsNullOrEmpty(token)) return token;
  1278. string resultString = callWebServiceNoToken("/api/gateway/auth/login", JsonConvert.SerializeObject(new { account = Account, password = PassWord }));
  1279. if (string.IsNullOrEmpty(resultString)) return null;
  1280. var rs = JsonConvert.DeserializeObject<HttpResult<LoginData>>(resultString);
  1281. if (!rs.success)
  1282. {
  1283. ErrorLog($"{funcName}����������ʧ�ܣ�{resultString}", LogEnum.RunError);
  1284. token = null;
  1285. return null;
  1286. }
  1287. if (rs.data != null)
  1288. {
  1289. token = rs.data.token;
  1290. return token;
  1291. }
  1292. ErrorLog($"{funcName}���سɹ����������� {resultString}", LogEnum.RunError);
  1293. token = null;
  1294. return null;
  1295. }
  1296. catch (Exception ex)
  1297. {
  1298. ExLog(ex, funcName);
  1299. token = null;
  1300. return null;
  1301. }
  1302. }
  1303. public string callWebService(string url)
  1304. {
  1305. try
  1306. {
  1307. if (string.IsNullOrEmpty(GetToken())) return null;
  1308. using var requestNew = new HttpRequestMessage(HttpMethod.Post, url);
  1309. requestNew.Headers.Add("token", token);
  1310. return HttpClientSendAsync(requestNew, url).ConfigureAwait(false).GetAwaiter().GetResult();
  1311. }
  1312. catch (Exception ex)
  1313. {
  1314. logHelper.ExceptionLog(ex, $"���ʷ������쳣��[url:{url}]", LogEnum.RunException);
  1315. return null;
  1316. }
  1317. }
  1318. public string callWebService(string url, string body)
  1319. {
  1320. try
  1321. {
  1322. if (string.IsNullOrEmpty(GetToken())) return null;
  1323. using var requestNew = new HttpRequestMessage(HttpMethod.Post, url);
  1324. using HttpContent httpContent1 = new StringContent(body, Encoding.UTF8, "application/json");
  1325. requestNew.Content = httpContent1;
  1326. requestNew.Headers.Add("token", token);
  1327. return HttpClientSendAsync(requestNew, url).ConfigureAwait(false).GetAwaiter().GetResult();
  1328. }
  1329. catch (Exception ex)
  1330. {
  1331. logHelper.ExceptionLog(ex, $"���ʷ������쳣��[url:{url}],body��{body}", LogEnum.RunException);
  1332. return null;
  1333. }
  1334. }
  1335. public string callWebService(string url, Dictionary<string, string> body)
  1336. {
  1337. try
  1338. {
  1339. if (string.IsNullOrEmpty(GetToken())) return null;
  1340. using var requestNew = new HttpRequestMessage(HttpMethod.Post, url);
  1341. using HttpContent httpContent1 = new FormUrlEncodedContent(body);
  1342. requestNew.Content = httpContent1;
  1343. requestNew.Headers.Add("token", token);
  1344. return HttpClientSendAsync(requestNew, url).ConfigureAwait(false).GetAwaiter().GetResult();
  1345. }
  1346. catch (Exception ex)
  1347. {
  1348. logHelper.ExceptionLog(ex, $"���ʷ������쳣��[url:{url}],body��{JsonConvert.SerializeObject(body)}", LogEnum.RunException);
  1349. return null;
  1350. }
  1351. }
  1352. public string callWebServiceNoToken(string url, string body)
  1353. {
  1354. try
  1355. {
  1356. using var requestNew = new HttpRequestMessage(HttpMethod.Post, url);
  1357. using HttpContent httpContent1 = new StringContent(body, Encoding.UTF8, "application/json");
  1358. requestNew.Content = httpContent1;
  1359. return HttpClientSendAsync(requestNew, url).ConfigureAwait(false).GetAwaiter().GetResult();
  1360. }
  1361. catch (Exception ex)
  1362. {
  1363. logHelper.ExceptionLog(ex, $"���ʷ������쳣��[url:{url}],body��{body}", LogEnum.RunException);
  1364. return null;
  1365. }
  1366. }
  1367. public async Task<string> HttpClientSendAsync(HttpRequestMessage request, string url)
  1368. {
  1369. // M8-P3b:HTTP 边界统一埋点 + traceId 透传给 Java 后端(实现 C#→Java 链路串联)。
  1370. // traceId 取操作日志上下文(无则新建),写入请求 header "traceId"(与 Java 网关读取对齐,见 §9 待对齐点)。
  1371. string traceId = Aivfo.OperationLog.OperationLogContext.TraceId
  1372. ?? Aivfo.OperationLog.OperationLogContext.NewTraceId();
  1373. string result;
  1374. var sw = System.Diagnostics.Stopwatch.StartNew();
  1375. using var cts = new CancellationTokenSource(AsyncTimeout);
  1376. try
  1377. {
  1378. request.Headers.Add("traceId", traceId);
  1379. using var response = await client.SendAsync(request, HttpCompletionOption.ResponseHeadersRead, cts.Token).ConfigureAwait(false);
  1380. if (!response.IsSuccessStatusCode)
  1381. {
  1382. logHelper.TLLog($"HttpClientSendAsync���ʷ�����ʧ�� [url:{url}],[TraceID:{traceId}][code:{response.StatusCode}]", LogEnum.RunError);
  1383. sw.Stop();
  1384. SafeOpLog(url, traceId, sw.ElapsedMilliseconds, "失败", $"HTTP {(int)response.StatusCode}", null);
  1385. return null;
  1386. }
  1387. result = response.Content.ReadAsStringAsync().ConfigureAwait(false).GetAwaiter().GetResult();
  1388. sw.Stop();
  1389. SafeOpLog(url, traceId, sw.ElapsedMilliseconds, "成功", null, result);
  1390. return result;
  1391. }
  1392. catch (TaskCanceledException ex) when (cts.IsCancellationRequested)
  1393. {
  1394. logHelper.TLLog($"HttpClientSendAsync����ʱ [url:{url}],[TraceID:{traceId}]", LogEnum.RunError);
  1395. sw.Stop();
  1396. SafeOpLog(url, traceId, sw.ElapsedMilliseconds, "失败", "超时", null);
  1397. return null;
  1398. }
  1399. catch (HttpRequestException ex)
  1400. {
  1401. logHelper.ExceptionLog(ex, $"HttpClientSendAsync�����쳣 [url:{url}],[TraceID:{traceId}]", LogEnum.RunException);
  1402. sw.Stop();
  1403. SafeOpLog(url, traceId, sw.ElapsedMilliseconds, "失败", ex.GetType().Name + ": " + ex.Message, null);
  1404. return null;
  1405. }
  1406. catch (Exception ex)
  1407. {
  1408. logHelper.ExceptionLog(ex, $"HttpClientSendAsync���ʷ������쳣��[url:{url}],[traceId:{traceId}],", LogEnum.RunException);
  1409. sw.Stop();
  1410. SafeOpLog(url, traceId, sw.ElapsedMilliseconds, "失败", ex.GetType().Name + ": " + ex.Message, null);
  1411. return null;
  1412. }
  1413. }
  1414. /// <summary>
  1415. /// M8-P3b:HTTP 边界操作日志(module="HTTP",operation=接口路径)。全 try 兜底,绝不抛。
  1416. /// output 截断防止过大;result/error 透传调用结果。traceId 显式传入与请求 header 一致。
  1417. /// </summary>
  1418. private void SafeOpLog(string url, string traceId, long elapsedMs, string result, string error, string output)
  1419. {
  1420. try
  1421. {
  1422. string outBrief = output;
  1423. if (!string.IsNullOrEmpty(outBrief) && outBrief.Length > 2000)
  1424. outBrief = outBrief.Substring(0, 2000) + "...(truncated)";
  1425. // 进入 scope 让本次 traceId 与请求 header 完全一致。
  1426. using (Aivfo.OperationLog.OperationLogContext.BeginScope(traceId))
  1427. {
  1428. Aivfo.OperationLog.OperationLogger.Log(
  1429. module: "HTTP",
  1430. operation: url,
  1431. output: outBrief,
  1432. result: result,
  1433. error: error,
  1434. elapsedMs: elapsedMs);
  1435. }
  1436. }
  1437. catch { /* 兜底:记日志失败不影响 HTTP 业务 */ }
  1438. }
  1439. public async Task<string> HttpClientSendAsyncStream(HttpRequestMessage request, string url)
  1440. {
  1441. string result = string.Empty;
  1442. // M8-P3b:traceId 取操作日志上下文(无则新建),透传 Java 后端。
  1443. string traceId = Aivfo.OperationLog.OperationLogContext.TraceId
  1444. ?? Aivfo.OperationLog.OperationLogContext.NewTraceId();
  1445. using var cts = new CancellationTokenSource(AsyncTimeout);
  1446. try
  1447. {
  1448. request.Headers.Add("traceId", traceId);
  1449. using var response = await client.SendAsync(request, HttpCompletionOption.ResponseHeadersRead, cts.Token).ConfigureAwait(false);
  1450. if (!response.IsSuccessStatusCode)
  1451. {
  1452. logHelper.TLLog($"HttpClientSendAsyncStream���ʷ�����ʧ�� [url:{url}],[TraceID:{traceId}][code:{response.StatusCode}]", LogEnum.RunError);
  1453. return null;
  1454. }
  1455. var buffer = new char[4096];
  1456. int bytesRead;
  1457. var StringBuilderResult = new StringBuilder();
  1458. using (var stream = await response.Content.ReadAsStreamAsync().ConfigureAwait(false))
  1459. {
  1460. using (var reader = new StreamReader(stream, Encoding.UTF8))
  1461. {
  1462. while ((bytesRead = await reader.ReadAsync(buffer).ConfigureAwait(false)) > 0)
  1463. {
  1464. StringBuilderResult.Append(buffer, 0, bytesRead);
  1465. }
  1466. }
  1467. }
  1468. result = StringBuilderResult.ToString();
  1469. StringBuilderResult.Clear();
  1470. return result;
  1471. }
  1472. catch (TaskCanceledException ex) when (cts.IsCancellationRequested)
  1473. {
  1474. logHelper.TLLog($"HttpClientSendAsyncStream����ʱ [url:{url}],[TraceID:{traceId}]", LogEnum.RunError);
  1475. return null;
  1476. }
  1477. catch (HttpRequestException ex)
  1478. {
  1479. logHelper.ExceptionLog(ex, $"HttpClientSendAsyncStream�����쳣 [url:{url}],[TraceID:{traceId}]", LogEnum.RunException);
  1480. return null;
  1481. }
  1482. catch (Exception ex)
  1483. {
  1484. logHelper.ExceptionLog(ex, $"HttpClientSendAsyncStream���ʷ������쳣��[url:{url}],[traceId:{traceId}],", LogEnum.RunException);
  1485. return null;
  1486. }
  1487. }
  1488. #endregion
  1489. }
  1490. }