AutoFocusWindow.xaml.cs 20 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458
  1. using ivf_tl_Entity.Entity.balance;
  2. using ivf_tl_Entity.Entity.Result;
  3. using ivf_tl_Entity.Enums;
  4. using ivf_tl_Entity.Response;
  5. using ivf_tl_Manage.Converts;
  6. using ivf_tl_Manage.UserControls;
  7. using ivf_tl_Service.HttpProvider;
  8. using System;
  9. using System.Collections.Generic;
  10. using System.Linq;
  11. using System.Text;
  12. using System.Text.RegularExpressions;
  13. using System.Threading.Tasks;
  14. using System.Windows;
  15. using System.Windows.Controls;
  16. using System.Windows.Data;
  17. using System.Windows.Documents;
  18. using System.Windows.Input;
  19. using System.Windows.Media;
  20. using System.Windows.Media.Imaging;
  21. using System.Windows.Shapes;
  22. namespace ivf_tl_Manage.Win
  23. {
  24. /// <summary>
  25. /// AutoFocusWindow.xaml 的交互逻辑
  26. /// </summary>
  27. public partial class AutoFocusWindow : Window
  28. {
  29. PicProvider picProvider;
  30. string tlSn;
  31. int houseSn;
  32. public AutoFocusWindow(string tlSn, int houseSn, List<Embryo> EmbryoList, Embryo currentEmbryo)
  33. {
  34. InitializeComponent();
  35. this.Owner = AppData.Instance.MainWindow;
  36. picProvider = AppData.Instance.GetPicProvider();
  37. this.tlSn = tlSn;
  38. this.houseSn = houseSn;
  39. int currentWellSn = EmbryoList.First().wellSn;
  40. if (currentEmbryo != null && currentEmbryo.state == (int)EmbryoState.None) currentWellSn = currentEmbryo.wellSn;
  41. Loaded += (s, e) =>
  42. {
  43. List<PositionEntity> ItemSourceData = new List<PositionEntity>();
  44. var dataList = picProvider.GetPositionApi(tlSn, houseSn, EmbryoList.Select(x => x.wellSn).ToList());
  45. foreach (var item in dataList)
  46. {
  47. item.focusStartingPoint = item.verticalMotorPosition;
  48. var item11 = EmbryoList.FirstOrDefault(x => x.wellSn == item.wellSn);
  49. if (item11 != null)
  50. {
  51. item.EmbryoId = item11.id;
  52. ItemSourceData.Add(item);
  53. }
  54. }
  55. var currentPost = ItemSourceData.FirstOrDefault(x => x.wellSn == currentWellSn);
  56. this.ListBox_Well.ItemsSource = ItemSourceData;
  57. if (currentPost == null) this.ListBox_Well.SelectedIndex = 0;
  58. else this.ListBox_Well.SelectedItem = currentPost;
  59. };
  60. Unloaded += (s, e) =>
  61. {
  62. this.Canvas_BigRoot.Children.Clear();
  63. AppData.Instance.MainWindow.Activate();
  64. };
  65. }
  66. private void Button_Click(object sender, RoutedEventArgs e)
  67. {
  68. if (this.ListBox_Well.SelectedItem == null) return;
  69. if (!(this.ListBox_Well.SelectedItem is PositionEntity positionEntity)) return;
  70. string ss = this.TextBlock_focusStartingPoint.Text.Trim();
  71. if (string.IsNullOrEmpty(ss))
  72. {
  73. //new ToastMessageWindow(AppData.Instance.MainWindow, $"请输入新位置").Show();
  74. new ToastMessageWindow(AppData.Instance.MainWindow, KeyToStringConvert.GetLanguageStringByKey("0310")).Show();
  75. return;
  76. }
  77. if (!int.TryParse(ss, out int newValue))
  78. {
  79. new ToastMessageWindow(AppData.Instance.MainWindow, $"新位置只能是数字").Show();
  80. return;
  81. }
  82. positionEntity.IsUpdate = true;
  83. positionEntity.focusStartingPoint = newValue;
  84. //new ToastMessageWindow(AppData.Instance.MainWindow, $"缓存成功!").Show();
  85. new ToastMessageWindow(AppData.Instance.MainWindow, $"{KeyToStringConvert.GetLanguageStringByKey("0311")}!").Show();
  86. }
  87. Dictionary<int, PicSourceUserControl> ListPic = new Dictionary<int, PicSourceUserControl>();
  88. private void ListBox_Selected(object sender, SelectionChangedEventArgs e)
  89. {
  90. if (!(sender is ListBox source)) return;
  91. if (source.SelectedItem == null) return;
  92. if (!(source.SelectedItem is PositionEntity positionEntity)) return;
  93. this.TextBlock_verticalMotorPosition.Text = positionEntity.verticalMotorPosition.ToString();
  94. this.TextBlock_focusStartingPoint.Text = positionEntity.focusStartingPoint.ToString();
  95. int CheckBoxImageNum = 1;
  96. int ImageIndex = 1;
  97. this.Canvas_Big.Visibility = Visibility.Collapsed;
  98. Task.Run(() =>
  99. {
  100. var a = picProvider.GetAutofocusPicturesApi(tlSn, houseSn, positionEntity.EmbryoId);
  101. Dispatcher.Invoke(() =>
  102. {
  103. if (string.IsNullOrEmpty(a.autofocusTime))
  104. {
  105. this.TextBlock_Title.Visibility = Visibility.Hidden;
  106. this.TextBlock_AutoTime.Visibility = Visibility.Hidden;
  107. }
  108. else
  109. {
  110. this.TextBlock_Title.Visibility = Visibility.Visible;
  111. this.TextBlock_AutoTime.Visibility = Visibility.Visible;
  112. }
  113. this.TextBlock_AutoTime.Text = a.autofocusTime;
  114. _root_Canvas.Children.Clear();
  115. ListPic.Clear();
  116. if (!a.focusPreviewPictureVOList.Any()) return;
  117. string imageurlString = null;
  118. BitmapImage BitmapImageSource = null;
  119. //for (int i = (a.focusPreviewPictureVOList.Count - 1); i >= 12; i--)
  120. //{
  121. // var item = a.focusPreviewPictureVOList[i];
  122. // item.imageUrl = item.sourceImageUrl;
  123. //}
  124. for (int i = 0; i < a.focusPreviewPictureVOList.Count; i++)
  125. {
  126. var item = a.focusPreviewPictureVOList[i];
  127. imageurlString = item.imageUrl;
  128. if (this._yuantu.IsChecked == true)
  129. {
  130. imageurlString = item.sourceImageUrl;
  131. }
  132. if (string.IsNullOrEmpty(imageurlString))
  133. {
  134. BitmapImageSource = null;
  135. }
  136. else
  137. {
  138. BitmapImageSource = AppData.Instance.StringToBitmapImage($"{AppData.Instance.BaseUrl}{imageurlString.Replace(AppData.Instance.PicSuf, $"_180x180{AppData.Instance.PicSuf}")}?token={AppData.Instance.HttpServiceCall.GetToken()}");
  139. }
  140. PicSourceUserControl checkBoxImage = new PicSourceUserControl()
  141. {
  142. ImageSourceUrl = BitmapImageSource,
  143. ImageInfoString = $"{item.houseSn}-{item.wellSn}-{item.shootingPosition}.jpg",
  144. ImageUrl = imageurlString,
  145. };
  146. if (item.highestScore)
  147. {
  148. checkBoxImage.templateRoot.Background = new SolidColorBrush((Color)ColorConverter.ConvertFromString("#666DA5FF"));
  149. }
  150. if (CheckBoxImageNum > 7)
  151. {
  152. if ((CheckBoxImageNum - 1) % 7 == 0) checkBoxImage.Margin = new Thickness(0, 10, 0, 0);
  153. else checkBoxImage.Margin = new Thickness(10, 10, 0, 0);
  154. }
  155. else
  156. {
  157. if (CheckBoxImageNum == 1) checkBoxImage.Margin = new Thickness(0);
  158. else checkBoxImage.Margin = new Thickness(10, 0, 0, 0);
  159. }
  160. var k = ImageIndex;
  161. checkBoxImage.Tag = item;
  162. checkBoxImage.MouseDown += (s, e) =>
  163. {
  164. this.Text_Big.Text = checkBoxImage.ImageInfoString;
  165. this.Image_Big.Source = AppData.Instance.StringToBitmapImage($"{AppData.Instance.BaseUrl}{checkBoxImage.ImageUrl}?token={AppData.Instance.HttpServiceCall.GetToken()}");
  166. this.Canvas_Big.Visibility = Visibility.Visible;
  167. this.Image_Big.Tag = k;
  168. if (k < ListPic.Last().Key)
  169. {
  170. this._nextPic_Button.Visibility = Visibility.Visible;
  171. }
  172. else
  173. {
  174. this._nextPic_Button.Visibility = Visibility.Hidden;
  175. }
  176. if (k > 1)
  177. {
  178. this._prePic_Button.Visibility = Visibility.Visible;
  179. }
  180. else
  181. {
  182. this._prePic_Button.Visibility = Visibility.Hidden;
  183. }
  184. };
  185. CheckBoxImageNum++;
  186. ListPic.Add(k, checkBoxImage);
  187. ImageIndex++;
  188. _root_Canvas.Children.Add(checkBoxImage);
  189. }
  190. });
  191. });
  192. }
  193. private void Button1_Click(object sender, RoutedEventArgs e)
  194. {
  195. if (!this.ListBox_Well.HasItems) return;
  196. if (this.ListBox_Well.SelectedItem == null) return;
  197. if (!(this.ListBox_Well.SelectedItem is PositionEntity CurrentPositionEntity)) return;
  198. string ss = this.TextBlock_focusStartingPoint.Text.Trim();
  199. if (string.IsNullOrEmpty(ss))
  200. {
  201. //new ToastMessageWindow(AppData.Instance.MainWindow, $"请输入新位置").Show();
  202. new ToastMessageWindow(AppData.Instance.MainWindow, KeyToStringConvert.GetLanguageStringByKey("0310")).Show();
  203. return;
  204. }
  205. if (!int.TryParse(ss, out int newValue))
  206. {
  207. new ToastMessageWindow(AppData.Instance.MainWindow, $"新位置只能是数字").Show();
  208. return;
  209. }
  210. CurrentPositionEntity.IsUpdate = true;
  211. CurrentPositionEntity.focusStartingPoint = newValue;
  212. List<FocusStartingPointResponse> listData = new List<FocusStartingPointResponse>();
  213. foreach (var item in this.ListBox_Well.Items)
  214. {
  215. if (!(item is PositionEntity positionEntity)) continue;
  216. if (!positionEntity.IsUpdate) continue;
  217. listData.Add(new FocusStartingPointResponse
  218. {
  219. wellSn = positionEntity.wellSn,
  220. focusStartingPoint = positionEntity.focusStartingPoint
  221. });
  222. }
  223. if (picProvider.UpdateImmediatelyApi(tlSn, houseSn, listData))
  224. {
  225. new ToastWindow(this, 1920, 65, true).Show();
  226. }
  227. else
  228. {
  229. new ToastWindow(this, 1920, 65, false).Show();
  230. }
  231. }
  232. private void Cancel_Click(object sender, RoutedEventArgs e)
  233. {
  234. this.DialogResult = false;
  235. this.Close();
  236. return;
  237. }
  238. private void Aad_Click(object sender, RoutedEventArgs e)
  239. {
  240. if (this.ListBox_Well.SelectedItem == null) return;
  241. if (!(this.ListBox_Well.SelectedItem is PositionEntity positionEntity)) return;
  242. if (!int.TryParse(this.TextBlock_focusStartingPoint.Text, out int newValue))
  243. {
  244. return;
  245. }
  246. newValue += positionEntity.verticalMotorSpacePulse * 5;
  247. this.TextBlock_focusStartingPoint.Text = newValue.ToString();
  248. if (newValue < 125000)
  249. {
  250. this.Button_Add.IsEnabled = true;
  251. }
  252. else
  253. {
  254. this.Button_Add.IsEnabled = false;
  255. }
  256. if (newValue > 0)
  257. {
  258. this.Button_Sub.IsEnabled = true;
  259. }
  260. else
  261. {
  262. this.Button_Sub.IsEnabled = false;
  263. }
  264. }
  265. private void Sub_Click(object sender, RoutedEventArgs e)
  266. {
  267. if (this.ListBox_Well.SelectedItem == null) return;
  268. if (!(this.ListBox_Well.SelectedItem is PositionEntity positionEntity)) return;
  269. if (!int.TryParse(this.TextBlock_focusStartingPoint.Text, out int newValue))
  270. {
  271. return;
  272. }
  273. newValue -= positionEntity.verticalMotorSpacePulse * 5;
  274. this.TextBlock_focusStartingPoint.Text = newValue.ToString();
  275. if (newValue > 0)
  276. {
  277. this.Button_Sub.IsEnabled = true;
  278. }
  279. else
  280. {
  281. this.Button_Sub.IsEnabled = false;
  282. }
  283. if (newValue < 125000)
  284. {
  285. this.Button_Add.IsEnabled = true;
  286. }
  287. else
  288. {
  289. this.Button_Add.IsEnabled = false;
  290. }
  291. }
  292. private void ScrollViewer_ManipulationBoundaryFeedback(object sender, ManipulationBoundaryFeedbackEventArgs e)
  293. {
  294. e.Handled = true;
  295. }
  296. private void NextButton_Click(object sender, RoutedEventArgs e)
  297. {
  298. if (!int.TryParse(this.Image_Big.Tag.ToString(), out int newValue))
  299. {
  300. return;
  301. }
  302. newValue++;
  303. if (!ListPic.ContainsKey(newValue)) return;
  304. var checkBoxImage = ListPic[newValue];
  305. this.Text_Big.Text = checkBoxImage.ImageInfoString;
  306. this.Image_Big.Source = AppData.Instance.StringToBitmapImage($"{AppData.Instance.BaseUrl}{checkBoxImage.ImageUrl}?token={AppData.Instance.HttpServiceCall.GetToken()}");
  307. this.Canvas_Big.Visibility = Visibility.Visible;
  308. this.Image_Big.Tag = newValue;
  309. if (newValue < ListPic.Last().Key)
  310. {
  311. this._nextPic_Button.Visibility = Visibility.Visible;
  312. }
  313. else
  314. {
  315. this._nextPic_Button.Visibility = Visibility.Hidden;
  316. }
  317. if (newValue > 1)
  318. {
  319. this._prePic_Button.Visibility = Visibility.Visible;
  320. }
  321. else
  322. {
  323. this._prePic_Button.Visibility = Visibility.Hidden;
  324. }
  325. }
  326. private void PreButton_Click(object sender, RoutedEventArgs e)
  327. {
  328. if (!int.TryParse(this.Image_Big.Tag.ToString(), out int newValue))
  329. {
  330. return;
  331. }
  332. newValue--;
  333. if (!ListPic.ContainsKey(newValue)) return;
  334. var checkBoxImage = ListPic[newValue];
  335. this.Text_Big.Text = checkBoxImage.ImageInfoString;
  336. this.Image_Big.Source = AppData.Instance.StringToBitmapImage($"{AppData.Instance.BaseUrl}{checkBoxImage.ImageUrl}?token={AppData.Instance.HttpServiceCall.GetToken()}");
  337. this.Canvas_Big.Visibility = Visibility.Visible;
  338. this.Image_Big.Tag = newValue;
  339. if (newValue > 1)
  340. {
  341. this._prePic_Button.Visibility = Visibility.Visible;
  342. }
  343. else
  344. {
  345. this._prePic_Button.Visibility = Visibility.Hidden;
  346. }
  347. if (newValue < ListPic.Last().Key)
  348. {
  349. this._nextPic_Button.Visibility = Visibility.Visible;
  350. }
  351. else
  352. {
  353. this._nextPic_Button.Visibility = Visibility.Hidden;
  354. }
  355. }
  356. private void Close_Click(object sender, RoutedEventArgs e)
  357. {
  358. this.Canvas_Big.Visibility = Visibility.Collapsed;
  359. }
  360. private void TextBox_PreviewTextInput(object sender, TextCompositionEventArgs e)
  361. {
  362. e.Handled = !Regex.IsMatch(e.Text, @"[0-9]");
  363. }
  364. private void KouTu_Checked(object sender, RoutedEventArgs e)
  365. {
  366. if (!this.IsLoaded) return;
  367. this.Canvas_Big.Visibility = Visibility.Collapsed;
  368. BitmapImage ImageSourceUrl = null;
  369. foreach (var item in ListPic)
  370. {
  371. if (!(item.Value.Tag is AutoFocusPictureEntity tagEntity)) continue;
  372. if (string.IsNullOrEmpty(tagEntity.imageUrl))
  373. {
  374. ImageSourceUrl = null;
  375. }
  376. else
  377. {
  378. ImageSourceUrl = AppData.Instance.StringToBitmapImage($"{AppData.Instance.BaseUrl}{tagEntity.imageUrl.Replace(AppData.Instance.PicSuf, $"_180x180{AppData.Instance.PicSuf}")}?token={AppData.Instance.HttpServiceCall.GetToken()}");
  379. }
  380. item.Value.ImageUrl = tagEntity.imageUrl;
  381. item.Value.ImageSourceUrl = ImageSourceUrl;
  382. }
  383. var aa = ListPic.Where(x => x.Value.Visibility == Visibility.Visible);
  384. int CheckBoxImageNum = 1;
  385. foreach (var checkBoxImage in aa)
  386. {
  387. if (CheckBoxImageNum > 7)
  388. {
  389. if ((CheckBoxImageNum - 1) % 7 == 0) checkBoxImage.Value.Margin = new Thickness(0, 10, 0, 0);
  390. else checkBoxImage.Value.Margin = new Thickness(10, 10, 0, 0);
  391. }
  392. else
  393. {
  394. if (CheckBoxImageNum == 1) checkBoxImage.Value.Margin = new Thickness(0);
  395. else checkBoxImage.Value.Margin = new Thickness(10, 0, 0, 0);
  396. }
  397. CheckBoxImageNum++;
  398. }
  399. }
  400. private void YuanTu_Checked(object sender, RoutedEventArgs e)
  401. {
  402. if (!this.IsLoaded) return;
  403. this.Canvas_Big.Visibility = Visibility.Collapsed;
  404. BitmapImage ImageSourceUrl = null;
  405. foreach (var item in ListPic)
  406. {
  407. if (!(item.Value.Tag is AutoFocusPictureEntity tagEntity)) continue;
  408. if (string.IsNullOrEmpty(tagEntity.sourceImageUrl))
  409. {
  410. ImageSourceUrl = null;
  411. }
  412. else
  413. {
  414. ImageSourceUrl = AppData.Instance.StringToBitmapImage($"{AppData.Instance.BaseUrl}{tagEntity.sourceImageUrl.Replace(AppData.Instance.PicSuf, $"_180x180{AppData.Instance.PicSuf}")}?token={AppData.Instance.HttpServiceCall.GetToken()}");
  415. }
  416. item.Value.ImageUrl = tagEntity.sourceImageUrl;
  417. item.Value.ImageSourceUrl = ImageSourceUrl;
  418. }
  419. var aa = ListPic.Where(x => x.Value.Visibility == Visibility.Visible);
  420. int CheckBoxImageNum = 1;
  421. foreach (var checkBoxImage in aa)
  422. {
  423. if (CheckBoxImageNum > 7)
  424. {
  425. if ((CheckBoxImageNum - 1) % 7 == 0) checkBoxImage.Value.Margin = new Thickness(0, 10, 0, 0);
  426. else checkBoxImage.Value.Margin = new Thickness(10, 10, 0, 0);
  427. }
  428. else
  429. {
  430. if (CheckBoxImageNum == 1) checkBoxImage.Value.Margin = new Thickness(0);
  431. else checkBoxImage.Value.Margin = new Thickness(10, 0, 0, 0);
  432. }
  433. CheckBoxImageNum++;
  434. }
  435. }
  436. }
  437. }