SerialBinController.cs 34 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842
  1. using DBEntity;
  2. using Dm.Config;
  3. using IvfTl.Control.Entity.DBEntitys;
  4. using IvfTl.Control.Entity.DTO;
  5. using IvfTl.Control.Entity.DTO.ApiResutlDatas;
  6. using IvfTl.Control.Entity.DTO.ControllerResults;
  7. using IvfTl.Control.Entity.GlobalEntitys;
  8. using IvfTl.Control.Entity.GlobalEnums;
  9. using IvfTl.Control.Entity.InitEntitys;
  10. using IvfTl.Control.Services;
  11. using IvfTl.Control.Services.HttpServices;
  12. using ivf_tl_UtilHelper;
  13. using Newtonsoft.Json;
  14. using System;
  15. using System.Diagnostics;
  16. using System.Security.Claims;
  17. using System.Xml.Linq;
  18. namespace ivf_tl_Controller
  19. {
  20. public class SerialBinController
  21. {
  22. /// <summary>
  23. /// 日志事件
  24. /// </summary>
  25. public event Action<string, LogEnum> LogEvent;
  26. /// <summary>
  27. /// 异常日志事件
  28. /// </summary>
  29. public event Action<Exception, string, string, LogEnum> ExceptionLogEvent;
  30. private HttpService _httpService;
  31. private DBService _dBService;
  32. public SerialBinController(HttpService httpService, DBService dBService)
  33. {
  34. _httpService = httpService;
  35. _dBService = dBService;
  36. }
  37. private void Alarm()
  38. {
  39. }
  40. private void ExLog(Exception ex, string name)
  41. {
  42. ExceptionLogEvent?.Invoke(ex, $"SerialBinController.{name}", null, LogEnum.RunException);
  43. }
  44. private void ErrorLog(string message, LogEnum logType)
  45. {
  46. LogEvent?.Invoke($"SerialBinController.{message}", logType);
  47. }
  48. /// <summary>
  49. /// 每次开机都要更新TL的数据
  50. /// </summary>
  51. public TLInitControllerResult UpdateTLInfoController(TLInitData tLInitData)
  52. {
  53. try
  54. {
  55. string body = JsonConvert.SerializeObject(tLInitData);
  56. TLInitControllerResult tLInitControllerResult = null;
  57. for (int i = 0; i < 3; i++)
  58. {
  59. tLInitControllerResult = ServiceUpdateTLInfo(body);
  60. if (tLInitControllerResult != null) break;
  61. ErrorLog($"服务器第{i + 1}次获取配置文件失败,[tlsn:{tLInitData.tlSn}]", LogEnum.RunRecord);
  62. Thread.Sleep(500);
  63. }
  64. if (tLInitControllerResult == null)
  65. {
  66. ErrorLog($"读取本地配置文件,[tlsn:{tLInitData.tlSn}]", LogEnum.RunRecord);
  67. tLInitControllerResult = DbGetTLInfo(tLInitData);
  68. }
  69. else
  70. {
  71. _dBService.DBUpdateTLInfo(tLInitControllerResult);
  72. }
  73. return tLInitControllerResult;
  74. }
  75. catch (Exception ex)
  76. {
  77. ExceptionLogEvent?.Invoke(ex, "SerialBinController.TLInitController", null, LogEnum.RunException);
  78. return null;
  79. }
  80. }
  81. /// <summary>
  82. /// 获取培养以及平衡数据
  83. /// </summary>
  84. /// <param name="tlSn"></param>
  85. public HouseDataControllerResult GetDishAndBalanceDataController(string tlSn)
  86. {
  87. try
  88. {
  89. HouseDataControllerResult houseDataControllerResult = null;
  90. for (int i = 0; i < 3; i++)
  91. {
  92. houseDataControllerResult = ServiceDishAndBalanceData(tlSn);
  93. if (houseDataControllerResult != null) break;
  94. ErrorLog($"服务器第{i + 1}次读取培养记录失败,[tlsn:{tlSn}]", LogEnum.RunRecord);
  95. Thread.Sleep(500);
  96. }
  97. if (houseDataControllerResult == null)
  98. {
  99. ErrorLog($"读取本地培养记录,[tlsn:{tlSn}]", LogEnum.RunRecord);
  100. houseDataControllerResult = DbDishAndBalanceData(tlSn);
  101. }
  102. else
  103. {
  104. DbUpdateDishAndBalance(houseDataControllerResult, tlSn);
  105. }
  106. return houseDataControllerResult;
  107. }
  108. catch (Exception ex)
  109. {
  110. ExceptionLogEvent?.Invoke(ex, "SerialBinController.GetDishAndBalanceDataController", null, LogEnum.RunException);
  111. return new HouseDataControllerResult();
  112. }
  113. }
  114. /// <summary>
  115. /// mqtt处理结果
  116. /// </summary>
  117. /// <param name="code"></param>
  118. /// <param name="isSuccess"></param>
  119. /// <param name="messageId"></param>
  120. public void MqttResultController(int code, bool isSuccess, string messageId, string uuid)
  121. {
  122. string name = "MqttResultController";
  123. try
  124. {
  125. string body = JsonConvert.SerializeObject(new
  126. {
  127. code = code,
  128. message = isSuccess ? "操作成功" : "操作失败",
  129. messageId = messageId,
  130. success = isSuccess,
  131. uuid = uuid,
  132. });
  133. TLInitControllerResult tLInitControllerResult = new TLInitControllerResult();
  134. string url = $"/api/tl/control/time-lapse-equipment/result";
  135. string rsString = _httpService.callWebService(url, body);
  136. if (string.IsNullOrEmpty(rsString)) return;
  137. HttpResult apiResult = JsonConvert.DeserializeObject<HttpResult>(rsString);
  138. if (!apiResult.success)
  139. {
  140. Alarm();
  141. ErrorLog($"{name}接口返回失败,返回值{rsString}", LogEnum.RunError);
  142. return;
  143. }
  144. }
  145. catch (Exception ex)
  146. {
  147. ExLog(ex, name);
  148. return;
  149. }
  150. }
  151. /// <summary>
  152. /// mqtt处理结果
  153. /// </summary>
  154. /// <param name="code"></param>
  155. /// <param name="isSuccess"></param>
  156. /// <param name="messageId"></param>
  157. public void MqttResultController(int code, bool isSuccess, string messageId)
  158. {
  159. string name = "MqttResultController";
  160. try
  161. {
  162. string body = JsonConvert.SerializeObject(new
  163. {
  164. code = code,
  165. message = isSuccess ? "操作成功" : "操作失败",
  166. messageId = messageId,
  167. success = isSuccess,
  168. });
  169. TLInitControllerResult tLInitControllerResult = new TLInitControllerResult();
  170. string url = $"/api/tl/control/time-lapse-equipment/result";
  171. string rsString = _httpService.callWebService(url, body);
  172. if (string.IsNullOrEmpty(rsString)) return;
  173. HttpResult apiResult = JsonConvert.DeserializeObject<HttpResult>(rsString);
  174. if (!apiResult.success)
  175. {
  176. Alarm();
  177. ErrorLog($"{name}接口返回失败,返回值{rsString}", LogEnum.RunError);
  178. return;
  179. }
  180. }
  181. catch (Exception ex)
  182. {
  183. ExLog(ex, name);
  184. return;
  185. }
  186. }
  187. /// <summary>
  188. /// 上报历史数据
  189. /// </summary>
  190. /// <param name="body"></param>
  191. public void ReportDataController(string body)
  192. {
  193. string name = "ReportDataController";
  194. try
  195. {
  196. string url = $"/api/tl/control/time-lapse-equipment/report/data";
  197. string rsString = _httpService.callWebService(url, body);
  198. if (string.IsNullOrEmpty(rsString)) return;
  199. HttpResult apiResult = JsonConvert.DeserializeObject<HttpResult>(rsString);
  200. if (!apiResult.success)
  201. {
  202. Alarm();
  203. ErrorLog($"{name}接口返回失败,返回值{rsString}", LogEnum.RunError);
  204. return;
  205. }
  206. }
  207. catch (Exception ex)
  208. {
  209. ExLog(ex, $"{name}");
  210. return;
  211. }
  212. }
  213. /// <summary>
  214. /// 更新仓室自动对焦状态
  215. /// </summary>
  216. /// <param name="tlSn"></param>
  217. /// <param name="houseSN"></param>
  218. /// <param name="newValue"></param>
  219. public void UpdateAutofocusStateController(string tlSn, int houseSN, int newValue)
  220. {
  221. string name = "UpdateAutofocusStateController";
  222. try
  223. {
  224. string body = JsonConvert.SerializeObject(new
  225. {
  226. tlSn = tlSn,
  227. houseSn = houseSN,
  228. state = newValue,
  229. });
  230. string url = $"/api/tl/control/time-lapse-equipment/change/autofocus/state";
  231. string rsString = _httpService.callWebService(url, body);
  232. if (string.IsNullOrEmpty(rsString)) return;
  233. HttpResult apiResult = JsonConvert.DeserializeObject<HttpResult>(rsString);
  234. if (!apiResult.success)
  235. {
  236. Alarm();
  237. ErrorLog($"{name}接口返回失败,返回值{rsString}", LogEnum.RunError);
  238. return;
  239. }
  240. }
  241. catch (Exception ex)
  242. {
  243. ExLog(ex, name);
  244. return;
  245. }
  246. }
  247. /// <summary>
  248. /// 保存图片
  249. /// </summary>
  250. /// <param name="imageDTO"></param>
  251. public void SavePictreController(ImageDTO imageDTO)
  252. {
  253. string name = "SavePictreController";
  254. try
  255. {
  256. PictureDB pictureDB = ConvertHelper.ConvertToPictureDB(imageDTO);
  257. if (pictureDB != null)
  258. {
  259. _dBService.AddPictrue(pictureDB);
  260. }
  261. }
  262. catch (Exception ex)
  263. {
  264. ExLog(ex, name);
  265. return;
  266. }
  267. }
  268. /// <summary>
  269. /// 删除数据库图片
  270. /// </summary>
  271. /// <param name="fileName"></param>
  272. /// <param name="tlsn"></param>
  273. public void DeletePictrueController(string fileName, string tlsn)
  274. {
  275. string name = "DeletePictrueController";
  276. try
  277. {
  278. _dBService.DeletePictrue(fileName, tlsn);
  279. }
  280. catch (Exception ex)
  281. {
  282. ExLog(ex, name);
  283. return;
  284. }
  285. }
  286. /// <summary>
  287. /// 查询数据库图片
  288. /// </summary>
  289. /// <param name="fileName"></param>
  290. /// <param name="tlsn"></param>
  291. /// <returns></returns>
  292. public ImageDTO SearchPictureController(string fileName, string tlsn)
  293. {
  294. string name = "DeletePictrueController";
  295. try
  296. {
  297. var aa = _dBService.SearchPicture(fileName, tlsn);
  298. return ConvertHelper.ConvertToPictureDB(aa);
  299. }
  300. catch (Exception ex)
  301. {
  302. ExLog(ex, name);
  303. return null;
  304. }
  305. }
  306. /// <summary>
  307. /// tl心跳检测
  308. /// </summary>
  309. /// <param name="tlSn"></param>
  310. /// <param name="loginState">是否退出 0 退出 1 在线</param>
  311. public void PushMessageController(string tlSn, int loginState, DiskInfo diskInfo)
  312. {
  313. string name = "PushMessageController";
  314. try
  315. {
  316. string url = $"/api/tl/control/alarm/pushMessage";
  317. string body = JsonConvert.SerializeObject(new { tlSn = tlSn, logout = loginState });
  318. if (diskInfo != null) body = JsonConvert.SerializeObject(new { tlSn = tlSn, logout = loginState, diskPath = diskInfo.diskPath, diskExist = diskInfo.diskExist, diskSpace = diskInfo.diskSpace });
  319. string rsString = _httpService.callWebService(url, body);
  320. if (string.IsNullOrEmpty(rsString)) return;
  321. HttpResult apiResult = JsonConvert.DeserializeObject<HttpResult>(rsString);
  322. if (!apiResult.success)
  323. {
  324. Alarm();
  325. ErrorLog($"{name}接口返回失败,返回值{rsString}", LogEnum.RunError);
  326. return;
  327. }
  328. }
  329. catch (Exception ex)
  330. {
  331. ExLog(ex, name);
  332. return;
  333. }
  334. }
  335. /// <summary>
  336. /// 下位机报警
  337. /// </summary>
  338. /// <param name="tlSn"></param>
  339. /// <param name="housesn"></param>
  340. /// <param name="houseState"></param>
  341. /// <param name="comState"></param>
  342. public void ReportAlarmController(string tlSn, int housesn, int houseState, int comState, int photoState, int wellSN,int airSwapState)
  343. {
  344. string name = "ReportAlarmController";
  345. try
  346. {
  347. string url = $"/api/tl/control/alarm/reportAlarm";
  348. string body = JsonConvert.SerializeObject(new
  349. {
  350. tlSn = tlSn,
  351. houseSn = housesn,
  352. houseState = houseState,
  353. portState = comState,
  354. photoState = photoState,
  355. airSwapState= airSwapState
  356. });
  357. if (wellSN != -1)
  358. {
  359. body = JsonConvert.SerializeObject(new
  360. {
  361. tlSn = tlSn,
  362. houseSn = housesn,
  363. houseState = houseState,
  364. portState = comState,
  365. photoState = photoState,
  366. wellSn = wellSN,
  367. airSwapState = airSwapState
  368. });
  369. }
  370. string rsString = _httpService.callWebService(url, body);
  371. if (string.IsNullOrEmpty(rsString)) return;
  372. HttpResult apiResult = JsonConvert.DeserializeObject<HttpResult>(rsString);
  373. if (!apiResult.success)
  374. {
  375. Alarm();
  376. ErrorLog($"{name}接口返回失败,返回值{rsString}", LogEnum.RunError);
  377. return;
  378. }
  379. }
  380. catch (Exception ex)
  381. {
  382. ExLog(ex, name);
  383. return;
  384. }
  385. }
  386. /// <summary>
  387. /// 更新本地配置信息
  388. /// </summary>
  389. /// <param name="tlSn"></param>
  390. public TLInitControllerResult UpdataSettingController(string tlSn)
  391. {
  392. string name = "UpdataSettingController";
  393. try
  394. {
  395. string url = $"/api/tl/control/time-lapse-equipment/info";
  396. string body = JsonConvert.SerializeObject(new { tlSn = tlSn, });
  397. string rsString = _httpService.callWebService(url, body);
  398. if (string.IsNullOrEmpty(rsString)) return null;
  399. HttpResult<LinkApiResutlData> apiResult = JsonConvert.DeserializeObject<HttpResult<LinkApiResutlData>>(rsString);
  400. if (!apiResult.success)
  401. {
  402. Alarm();
  403. ErrorLog($"{name}接口返回失败,返回值{rsString}", LogEnum.RunError);
  404. return null;
  405. }
  406. if (apiResult.data == null)
  407. {
  408. Alarm();
  409. ErrorLog($"{name}接口返回成功,但是无数据,返回值{rsString}", LogEnum.RunError);
  410. return null;
  411. }
  412. List<House> houseList = new List<House>();
  413. List<HouseWellSetting> houseWellSettingList = new List<HouseWellSetting>();
  414. TLSetting tLSetting = ConvertHelper.ConvertToTLSetting(apiResult.data.tlInfo, apiResult.data.tlSetting);
  415. TLInitControllerResult tLInitControllerResult = new TLInitControllerResult();
  416. tLInitControllerResult.TLSetting = tLSetting;
  417. tLInitControllerResult.HouseList = houseList;
  418. tLInitControllerResult.HouseWellList = houseWellSettingList;
  419. foreach (var item in apiResult.data.houseList)
  420. {
  421. houseList.Add(ConvertHelper.ConvertToHouse(item));
  422. }
  423. foreach (var item in apiResult.data.houseWellSettingList)
  424. {
  425. houseWellSettingList.Add(ConvertHelper.ConvertToHouseWellSetting(item));
  426. }
  427. _dBService.DBUpdateTLInfo(tLInitControllerResult);
  428. return tLInitControllerResult;
  429. }
  430. catch (Exception ex)
  431. {
  432. ExLog(ex, name);
  433. return null;
  434. }
  435. }
  436. #region 服务器操作
  437. /// <summary>
  438. /// 服务器-->更新TL仪器的数据
  439. /// </summary>
  440. /// <param name="body"></param>
  441. private TLInitControllerResult ServiceUpdateTLInfo(string body)
  442. {
  443. string name = "ServiceUpdateTLInfo";
  444. string url = "/api/tl/control/time-lapse-equipment/link";
  445. try
  446. {
  447. string rsString = _httpService.callWebServiceSteam(url, body);
  448. if (string.IsNullOrEmpty(rsString)) return null;
  449. HttpResult<LinkApiResutlData> apiResult = JsonConvert.DeserializeObject<HttpResult<LinkApiResutlData>>(rsString);
  450. if (!apiResult.success)
  451. {
  452. Alarm();
  453. ErrorLog($"{name}接口返回失败,返回值{rsString}", LogEnum.RunError);
  454. return null;
  455. }
  456. if (apiResult.data == null)
  457. {
  458. Alarm();
  459. ErrorLog($"{name}接口返回成功,但是无数据,返回值{rsString}", LogEnum.RunError);
  460. return null;
  461. }
  462. List<House> houseList = new List<House>();
  463. List<HouseWellSetting> houseWellSettingList = new List<HouseWellSetting>();
  464. TLSetting tLSetting = ConvertHelper.ConvertToTLSetting(apiResult.data.tlInfo, apiResult.data.tlSetting);
  465. TLInitControllerResult tLInitControllerResult = new TLInitControllerResult();
  466. tLInitControllerResult.TLSetting = tLSetting;
  467. tLInitControllerResult.HouseList = houseList;
  468. tLInitControllerResult.HouseWellList = houseWellSettingList;
  469. foreach (var item in apiResult.data.houseList)
  470. {
  471. houseList.Add(ConvertHelper.ConvertToHouse(item));
  472. }
  473. foreach (var item in apiResult.data.houseWellSettingList)
  474. {
  475. houseWellSettingList.Add(ConvertHelper.ConvertToHouseWellSetting(item));
  476. }
  477. return tLInitControllerResult;
  478. }
  479. catch (Exception ex)
  480. {
  481. ExLog(ex, name);
  482. return null;
  483. }
  484. }
  485. /// <summary>
  486. /// 服务器(弃用)-->TL仪器数据初始化(仅第一次连接使用)
  487. /// </summary>
  488. /// <param name="bodu"></param>
  489. /// <returns></returns>
  490. private TLInitControllerResult ServiceInitTLInfo(string body)
  491. {
  492. string name = "ServiceInitTLInfo";
  493. try
  494. {
  495. TLInitControllerResult tLInitControllerResult = new TLInitControllerResult();
  496. string url = $"/api/tl/control/time-lapse-equipment/init";
  497. string rsString = _httpService.callWebService(url, body);
  498. if (string.IsNullOrEmpty(rsString))
  499. {
  500. ErrorLog($"{name}返回值为空", LogEnum.RunError);
  501. return null;
  502. }
  503. HttpResult<InitApiResutlData> apiResult = JsonConvert.DeserializeObject<HttpResult<InitApiResutlData>>(rsString);
  504. if (!apiResult.success)
  505. {
  506. ErrorLog($"{name}接口返回失败,返回值{rsString}", LogEnum.RunError);
  507. return null;
  508. }
  509. List<House> houseList = new List<House>();
  510. List<HouseWellSetting> houseWellSettingList = new List<HouseWellSetting>();
  511. foreach (var item in apiResult.data.houseList)
  512. {
  513. houseList.Add(ConvertHelper.ConvertToHouse(item));
  514. }
  515. foreach (var item in apiResult.data.houseWellSettingList)
  516. {
  517. houseWellSettingList.Add(ConvertHelper.ConvertToHouseWellSetting(item));
  518. }
  519. tLInitControllerResult.HouseList = houseList;
  520. tLInitControllerResult.HouseWellList = houseWellSettingList;
  521. ErrorLog($"SerialBinController.ServiceInitTLInfo,结果:{JsonConvert.SerializeObject(tLInitControllerResult)}", LogEnum.RunError);
  522. return tLInitControllerResult;
  523. }
  524. catch (Exception ex)
  525. {
  526. ExLog(ex, name);
  527. return null;
  528. }
  529. }
  530. /// <summary>
  531. /// 服务器-->获取培养以及平衡数据
  532. /// </summary>
  533. /// <param name="tlSn"></param>
  534. private HouseDataControllerResult ServiceDishAndBalanceData(string tlSn)
  535. {
  536. string name = "ServiceDishAndBalanceData";
  537. try
  538. {
  539. HouseDataControllerResult houseDataControllerResult = new HouseDataControllerResult();
  540. string url = $"/api/tl/control/time-lapse-equipment/house/data";
  541. Dictionary<string, string> keyValuePairs = new Dictionary<string, string>();
  542. keyValuePairs.Add("tlSn", tlSn);
  543. string apiResultString = _httpService.callWebService(url, keyValuePairs);
  544. if (string.IsNullOrEmpty(apiResultString)) return null;
  545. HttpResult<HouseDataApiResutlData> apiResult = JsonConvert.DeserializeObject<HttpResult<HouseDataApiResutlData>>(apiResultString);
  546. if (!apiResult.success)
  547. {
  548. Alarm();
  549. ErrorLog($"{name}接口返回失败,返回值{apiResultString}", LogEnum.RunError);
  550. return null;
  551. }
  552. if (apiResult.data == null)
  553. {
  554. Alarm();
  555. ErrorLog($"{name}接口返回成功,但是无数据,返回值{apiResultString}", LogEnum.RunError);
  556. return null;
  557. }
  558. List<Balance> balances = new List<Balance>();
  559. List<Dish> dishes = new List<Dish>();
  560. foreach (var item in apiResult.data.balanceList)
  561. {
  562. balances.Add(ConvertHelper.ConvertToBalance(item));
  563. }
  564. foreach (var item in apiResult.data.dishList)
  565. {
  566. dishes.Add(ConvertHelper.ConvertToDish(item));
  567. }
  568. houseDataControllerResult.BalanceList = balances;
  569. houseDataControllerResult.Dishes = dishes;
  570. return houseDataControllerResult;
  571. }
  572. catch (Exception ex)
  573. {
  574. ExLog(ex, name);
  575. return null;
  576. }
  577. }
  578. #endregion
  579. #region 数据库操作
  580. /// <summary>
  581. /// 从数据库获取TL设置
  582. /// </summary>
  583. /// <param name="tLInitData"></param>
  584. /// <returns></returns>
  585. private TLInitControllerResult DbGetTLInfo(TLInitData tLInitData)
  586. {
  587. try
  588. {
  589. ErrorLog("使用本地TL设置开始运行程序", LogEnum.RunRecord);
  590. var dbInfo = _dBService.DBGetTLInfo(tLInitData);
  591. TLInitControllerResult tLInitControllerResult = new TLInitControllerResult();
  592. tLInitControllerResult.TLSetting = ConvertHelper.ConvertToTLSetting(dbInfo.Item1);
  593. tLInitControllerResult.HouseList = new List<House>();
  594. foreach (var item in dbInfo.Item2)
  595. {
  596. tLInitControllerResult.HouseList.Add(ConvertHelper.ConvertToHouse(item));
  597. }
  598. tLInitControllerResult.HouseWellList = new List<HouseWellSetting>();
  599. foreach (var item in dbInfo.Item3)
  600. {
  601. tLInitControllerResult.HouseWellList.Add(ConvertHelper.ConvertToHouseWellSetting(item));
  602. }
  603. return tLInitControllerResult;
  604. }
  605. catch (Exception ex)
  606. {
  607. ExceptionLogEvent?.Invoke(ex, "HouseBinController.DbGetTLInfo", null, LogEnum.RunException);
  608. return null;
  609. }
  610. }
  611. /// <summary>
  612. /// 从数据库获取培养记录以及平衡记录
  613. /// </summary>
  614. /// <param name="tlSn"></param>
  615. /// <returns></returns>
  616. private HouseDataControllerResult DbDishAndBalanceData(string tlSn)
  617. {
  618. try
  619. {
  620. ErrorLog("从本地数据库获取培养记录以及平衡记录", LogEnum.RunRecord);
  621. HouseDataControllerResult houseDataControllerResult = new HouseDataControllerResult();
  622. houseDataControllerResult.Dishes = _dBService.GetDBDishs(tlSn);
  623. houseDataControllerResult.BalanceList = _dBService.DbGetBalances(tlSn);
  624. return houseDataControllerResult;
  625. }
  626. catch (Exception ex)
  627. {
  628. ExceptionLogEvent?.Invoke(ex, "HouseBinController.DbDishAndBalanceData", null, LogEnum.RunException);
  629. return new HouseDataControllerResult();
  630. }
  631. }
  632. /// <summary>
  633. /// 数据库-->更新培养记录以及平衡记录
  634. /// </summary>
  635. /// <param name="houseDataControllerResult"></param>
  636. /// <param name="tlsn"></param>
  637. private void DbUpdateDishAndBalance(HouseDataControllerResult houseDataControllerResult, string tlsn)
  638. {
  639. try
  640. {
  641. List<DishDB> dishDbList = new List<DishDB>();
  642. List<EmbryoDB> embryoDbList = new List<EmbryoDB>();
  643. List<BalanceDB> balanceDbList = new List<BalanceDB>();
  644. foreach (var item in houseDataControllerResult.Dishes)
  645. {
  646. dishDbList.Add(ConvertHelper.ConvertToDishDB(item));
  647. foreach (var itemEmbryo in item.Embryo)
  648. {
  649. embryoDbList.Add(ConvertHelper.ConvertToEmbryoDB(itemEmbryo));
  650. }
  651. }
  652. foreach (var item in houseDataControllerResult.BalanceList)
  653. {
  654. balanceDbList.Add(ConvertHelper.ConvertToBalanceDB(item));
  655. }
  656. _dBService.AddDishs(dishDbList, tlsn);
  657. _dBService.AddEmbryos(embryoDbList, tlsn);
  658. _dBService.AddBalances(balanceDbList, tlsn);
  659. }
  660. catch (Exception ex)
  661. {
  662. ExceptionLogEvent?.Invoke(ex, "HouseBinController.DbUpdateDishAndBalance", null, LogEnum.RunException);
  663. }
  664. }
  665. #endregion
  666. #region 弃用
  667. /// <summary>
  668. /// tl数据初始化
  669. /// </summary>
  670. /// <param name="body1"></param>
  671. /// <param name="body2"></param>
  672. /// <returns></returns>
  673. private TLInitControllerResult TLInitController(TLInitData tLInitData, List<HouseEEPROInfo> houseEEPROInfos)
  674. {
  675. try
  676. {
  677. string body1 = JsonConvert.SerializeObject(tLInitData);
  678. string body2 = JsonConvert.SerializeObject(houseEEPROInfos);
  679. TLInitControllerResult tLInitControllerResult = LinkServiceController(body1, body2);
  680. if (tLInitControllerResult == null)
  681. {
  682. }
  683. return tLInitControllerResult;
  684. }
  685. catch (Exception ex)
  686. {
  687. ExceptionLogEvent?.Invoke(ex, "SerialBinController.TLInitController", null, LogEnum.RunException);
  688. return null;
  689. }
  690. }
  691. /// <summary>
  692. /// 连接服务器获取TL数据
  693. /// </summary>
  694. /// <param name="tLInitData"></param>
  695. /// <returns></returns>
  696. private TLInitControllerResult LinkServiceController(string body1, string body2)
  697. {
  698. string name = "LinkServiceController";
  699. try
  700. {
  701. TLInitControllerResult tLInitControllerResult = new TLInitControllerResult();
  702. string url = $"/api/tl/control/time-lapse-equipment/link";
  703. string apiResultString = _httpService.callWebService(url, body1);
  704. if (string.IsNullOrEmpty(apiResultString))
  705. {
  706. ErrorLog($"{name}返回值为空", LogEnum.RunError);
  707. return null;
  708. }
  709. HttpResult<LinkApiResutlData> apiResult = JsonConvert.DeserializeObject<HttpResult<LinkApiResutlData>>(apiResultString);
  710. if (!apiResult.success)
  711. {
  712. ErrorLog($"{name}接口返回失败,返回值{apiResultString}", LogEnum.RunError);
  713. return null;
  714. }
  715. List<House> houseList = new List<House>();
  716. List<HouseWellSetting> houseWellSettingList = new List<HouseWellSetting>();
  717. TLSetting tLSetting = ConvertHelper.ConvertToTLSetting(apiResult.data.tlInfo, apiResult.data.tlSetting);
  718. tLInitControllerResult.TLSetting = tLSetting;
  719. tLInitControllerResult.HouseList = houseList;
  720. tLInitControllerResult.HouseWellList = houseWellSettingList;
  721. //if (true)
  722. //{
  723. // url = $"{_urlIp}/api/tl/control/time-lapse-equipment/init";
  724. // ss = _httpService.PostMethod(url, body2, _token);
  725. // LogEvent?.Invoke($"SerialBinController.LinkServiceController,init返回值{ss}", LogEnum.RunError);
  726. // apiResult = JsonConvert.DeserializeObject<AivfoApiResult>(ss);
  727. // if (apiResult == null)
  728. // {
  729. // LogEvent?.Invoke($"SerialBinController.LinkServiceController,init返回值反序列化失败,返回值{ss}", LogEnum.RunError);
  730. // return null;
  731. // }
  732. // if (!apiResult.success)
  733. // {
  734. // LogEvent?.Invoke($"SerialBinController.LinkServiceController,init接口返回失败,返回值{ss}", LogEnum.RunError);
  735. // return null;
  736. // }
  737. // InitApiResutlData initApiResutlData = JsonConvert.DeserializeObject<InitApiResutlData>(apiResult.data.ToString());
  738. // foreach (var item in initApiResutlData.houseList)
  739. // {
  740. // houseList.Add(ConvertHelper.ConvertToHouse(item));
  741. // }
  742. // foreach (var item in initApiResutlData.houseWellSettingList)
  743. // {
  744. // houseWellSettingList.Add(ConvertHelper.ConvertToHouseWellSetting(item));
  745. // }
  746. //}
  747. //else
  748. //{
  749. // foreach (var item in linkApiResutlData.houseList)
  750. // {
  751. // houseList.Add(ConvertHelper.ConvertToHouse(item));
  752. // }
  753. // foreach (var item in linkApiResutlData.houseWellSettingList)
  754. // {
  755. // houseWellSettingList.Add(ConvertHelper.ConvertToHouseWellSetting(item));
  756. // }
  757. //}
  758. //LogEvent?.Invoke($"tlSetting:{JsonConvert.SerializeObject(tLInitControllerResult)}", LogEnum.RunError);
  759. return tLInitControllerResult;
  760. }
  761. catch (Exception ex)
  762. {
  763. ExceptionLogEvent?.Invoke(ex, "SerialBinController.LinkServiceController", null, LogEnum.RunException);
  764. return null;
  765. }
  766. }
  767. /// <summary>
  768. /// TL仪器数据初始化(仅第一次连接使用)
  769. /// </summary>
  770. /// <param name="houseEEPROInfos"></param>
  771. /// <returns></returns>
  772. private TLInitControllerResult InitTLInfoController(List<HouseEEPROInfo> houseEEPROInfos)
  773. {
  774. try
  775. {
  776. string body = JsonConvert.SerializeObject(houseEEPROInfos);
  777. TLInitControllerResult tLInitControllerResult = ServiceInitTLInfo(body);
  778. return tLInitControllerResult;
  779. }
  780. catch (Exception ex)
  781. {
  782. ExceptionLogEvent?.Invoke(ex, "SerialBinController.TLInitController", null, LogEnum.RunException);
  783. return null;
  784. }
  785. }
  786. #endregion
  787. }
  788. }