BinSetting.xaml.cs 21 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452
  1. using ivf_tl_CustomControls;
  2. using ivf_tl_Entity.Entity;
  3. using ivf_tl_Entity.Entity.balance;
  4. using ivf_tl_Manage.Converts;
  5. using ivf_tl_Manage.ViewModels;
  6. using ivf_tl_Manage.ViewModels.Win;
  7. using ivf_tl_Manage.Win;
  8. using ivf_tl_Service;
  9. using ivf_tl_Service.HttpProvider;
  10. using System;
  11. using System.Collections;
  12. using System.Collections.Generic;
  13. using System.Diagnostics;
  14. using System.IO;
  15. using System.Linq;
  16. using System.Text;
  17. using System.Threading;
  18. using System.Threading.Tasks;
  19. using System.Windows;
  20. using System.Windows.Controls;
  21. using System.Windows.Data;
  22. using System.Windows.Documents;
  23. using System.Windows.Input;
  24. using System.Windows.Media;
  25. using System.Windows.Media.Imaging;
  26. using System.Windows.Navigation;
  27. using static System.Windows.Forms.AxHost;
  28. namespace ivf_tl_Manage.Views
  29. {
  30. /// <summary>
  31. /// BinSetting.xaml 的交互逻辑
  32. /// </summary>
  33. public partial class BinSetting : UserControl
  34. {
  35. private BinSettingViewModel vm;
  36. public BinSetting()
  37. {
  38. InitializeComponent();
  39. Loaded += (s, e) =>
  40. {
  41. //tb_T_now.Text = $"{1}{KeyToStringConvert.GetLanguageStringByKey("0058")}";
  42. //tb_P_now.Text = $"{1}{KeyToStringConvert.GetLanguageStringByKey("0059")}";
  43. //tb_T_history.Text = $"{1}{KeyToStringConvert.GetLanguageStringByKey("0060")}";
  44. //tb_P_history.Text = $"{1}{KeyToStringConvert.GetLanguageStringByKey("0061")}";
  45. vm = (BinSettingViewModel)this.DataContext;
  46. lb_House.SelectedIndex = 0;
  47. if (vm.SelectTL == null) test.SelectedIndex = 0;
  48. if (test.SelectedItem == null) return;
  49. tlSn = ((TLInfo)test.SelectedItem).tlSn;
  50. vm.StartTimer();
  51. if (lb_House.SelectedValue == null) return;
  52. houseSn = lb_House.SelectedValue.ToString();
  53. if (tlSn == null || houseSn == null) return;
  54. //UpdateData();
  55. //Dictionary<DateTime,double> keyValuePairs = new Dictionary<DateTime,double>();
  56. //keyValuePairs.Add(DateTime.Now, 10d);
  57. //keyValuePairs.Add(DateTime.Now.AddHours(1), 80d);
  58. //keyValuePairs.Add(DateTime.Now.AddHours(2), 30d);
  59. //keyValuePairs.Add(DateTime.Now.AddHours(3), 50d);
  60. //vm.UpdateTemperatureHistoryModel(keyValuePairs);
  61. //vm.UpdatePressureHistoryModel(keyValuePairs);
  62. DateTime start = DateTime.Now;
  63. DateTime end = DateTime.Now;
  64. SetDateAndTbText(start, end);
  65. //tlSn = test.SelectedValue.ToString();
  66. vm.SetTlSn(tlSn, houseSn, startTime, endTime);
  67. };
  68. this.Unloaded += (s, e) =>
  69. {
  70. vm.DisposeTimer();
  71. };
  72. this.PreviewMouseDown += (s, e) =>
  73. {
  74. // if(s as )
  75. };
  76. }
  77. private void SetDateAndTbText(DateTime start, DateTime end)
  78. {
  79. DateTime now = DateTime.Now;
  80. startTime = start.ToString("yyyy-MM-dd") + " 00:00:00";
  81. endTime = end.ToString("yyyy-MM-dd") + $" {now.Hour.ToString("D2")}:{now.Minute.ToString("D2")}:{now.Second.ToString("D2")}";
  82. tb_startTime.Text = start.ToString("yyyy-MM-dd") + " 00:00";
  83. tb_endTime.Text = end.ToString("yyyy-MM-dd") + $" {now.Hour.ToString("D2")}:{now.Minute.ToString("D2")}";
  84. }
  85. private string tlSn = null;
  86. private string houseSn = null;
  87. private void TL_DropDownClosed(object sender, EventArgs e)
  88. {
  89. if (vm == null) return;
  90. if (!(sender is ComBoxCustom2 source)) return;
  91. if (!source.IsLoaded) return;
  92. if (source.SelectedItem == null || tlSn == null || houseSn == null) return;
  93. if (lb_House.SelectedValue == null) return;
  94. tlSn = ((TLInfo)source.SelectedItem).tlSn;
  95. houseSn = lb_House.SelectedValue.ToString();
  96. UpdateData();
  97. vm.StartTimer();
  98. }
  99. public string startTime { get; set; } = null;
  100. public string endTime { get; set; } = null;
  101. public void UpdateData()
  102. {
  103. startTime = tb_startTime.Text + ":00";
  104. endTime = tb_endTime.Text + ":00";
  105. vm.SetTlSn(tlSn, houseSn, startTime, endTime);
  106. }
  107. public void UpdateData(DateTime start, DateTime end)
  108. {
  109. string startTime = start.ToString("yyyy-MM-dd HH:mm:ss");
  110. string endTime = end.ToString("yyyy-MM-dd HH:mm:ss");
  111. vm.SetTlSn(tlSn, houseSn, startTime, endTime);
  112. }
  113. private void ListBox_SelectionChanged(object sender, SelectionChangedEventArgs e)
  114. {
  115. if (vm == null) return;
  116. if (!(sender is ListBox source)) return;
  117. if (!source.IsLoaded) return;
  118. if (lb_House.SelectedValue == null || source.SelectedValue == null || tlSn == null || houseSn == null)
  119. return;
  120. houseSn = lb_House.SelectedValue.ToString();
  121. //tb_T_now.Text = $"{houseSn}号舱室实时温度(℃)";
  122. //tb_T_now.Text = $"{houseSn}{KeyToStringConvert.GetLanguageStringByKey("0058")}";
  123. //tb_P_now.Text = $"{houseSn}号舱室实时气压(mbar)";
  124. //tb_P_now.Text = $"{houseSn}{KeyToStringConvert.GetLanguageStringByKey("0059")}";
  125. //tb_T_history.Text = $"{houseSn}号舱室历史温度(℃)";
  126. //tb_T_history.Text = $"{houseSn}{KeyToStringConvert.GetLanguageStringByKey("0060")}";
  127. //tb_P_history.Text = $"{houseSn}号舱室历史气压(mbar)";
  128. //tb_P_history.Text = $"{houseSn}{KeyToStringConvert.GetLanguageStringByKey("0061")}";
  129. UpdateData();
  130. vm.StartTimer();
  131. }
  132. private void img_Date_MouseEnter(object sender, MouseEventArgs e)
  133. {
  134. img_Date.Source = new BitmapImage(new Uri("pack://application:,,,/ivf_tl_Manage;component/Resources/Images/date_bg.png", UriKind.Absolute));
  135. }
  136. private void img_Date_MouseLeave(object sender, MouseEventArgs e)
  137. {
  138. img_Date.Source = new BitmapImage(new Uri("pack://application:,,,/ivf_tl_Manage;component/Resources/Images/date_bg1.png", UriKind.Absolute));
  139. }
  140. bool isOpen = false;
  141. private void db_selectTime_MouseDown(object sender, MouseButtonEventArgs e)
  142. {
  143. isOpen = !isOpen;
  144. pp_time.IsOpen = isOpen;
  145. }
  146. private void CustomerDateControl_SelectDateAction(string obj)
  147. {
  148. tb_startTime.Text = obj;
  149. }
  150. private void CustomerDateControl_SelectDateAction_1(string obj)
  151. {
  152. tb_endTime.Text = obj;
  153. }
  154. private void Border_MouseEnter(object sender, MouseEventArgs e)
  155. {
  156. tb_confirm.Foreground = new SolidColorBrush((Color)ColorConverter.ConvertFromString("#FFFFFF"));
  157. }
  158. private void Border_MouseLeave(object sender, MouseEventArgs e)
  159. {
  160. tb_confirm.Foreground = new SolidColorBrush((Color)ColorConverter.ConvertFromString("#707070"));
  161. }
  162. private void Border_MouseEnter_1(object sender, MouseEventArgs e)
  163. {
  164. tb_cancel.Foreground = new SolidColorBrush((Color)ColorConverter.ConvertFromString("#FFFFFF"));
  165. }
  166. private void Border_MouseLeave_1(object sender, MouseEventArgs e)
  167. {
  168. tb_cancel.Foreground = new SolidColorBrush((Color)ColorConverter.ConvertFromString("#707070"));
  169. }
  170. /// <summary>
  171. /// 取消
  172. /// </summary>
  173. /// <param name="sender"></param>
  174. /// <param name="e"></param>
  175. private void Border_MouseDown(object sender, MouseButtonEventArgs e)
  176. {
  177. #region 重置日期到当前时间
  178. //starDate_Control.ReSetDate();
  179. //end_Control.ReSetDate();
  180. #endregion
  181. isOpen = false;
  182. pp_time.IsOpen = isOpen;
  183. e.Handled = true;
  184. }
  185. /// <summary>
  186. /// 确认
  187. /// </summary>
  188. /// <param name="sender"></param>
  189. /// <param name="e"></param>
  190. private void Border_MouseDown_1(object sender, MouseButtonEventArgs e)
  191. {
  192. if (DateTime.TryParse(tb_startTime.Text, out DateTime start) && DateTime.TryParse(tb_endTime.Text, out DateTime end))
  193. {
  194. if (start < end)
  195. {
  196. isOpen = false;
  197. pp_time.IsOpen = isOpen;
  198. UpdateData();
  199. }
  200. else
  201. new ToastMessageWindow(AppData.Instance.MainWindow, KeyToStringConvert.GetLanguageStringByKey("0283")).Show();
  202. //new ToastMessageWindow(AppData.Instance.MainWindow, $"结束时间必须大于开始时间").Show();
  203. }
  204. else
  205. {
  206. new ToastMessageWindow(AppData.Instance.MainWindow, KeyToStringConvert.GetLanguageStringByKey("0321")).Show();
  207. //new ToastMessageWindow(AppData.Instance.MainWindow, $"未选中开始或结束时间").Show();
  208. }
  209. }
  210. /// <summary>
  211. /// 近7天
  212. /// </summary>
  213. /// <param name="sender"></param>
  214. /// <param name="e"></param>
  215. private void Image_MouseDown(object sender, MouseButtonEventArgs e)
  216. {
  217. DateTime start = DateTime.Now.AddDays(-7);
  218. DateTime now = DateTime.Now;
  219. SetDateAndTbText(start, now);
  220. UpdateData();
  221. }
  222. /// <summary>
  223. /// 近30天
  224. /// </summary>
  225. /// <param name="sender"></param>
  226. /// <param name="e"></param>
  227. private void Image_MouseDown_1(object sender, MouseButtonEventArgs e)
  228. {
  229. DateTime start = DateTime.Now.AddDays(-30);
  230. DateTime now = DateTime.Now;
  231. SetDateAndTbText(start, now);
  232. UpdateData();
  233. }
  234. /// <summary>
  235. /// 导出
  236. /// </summary>
  237. /// <param name="sender"></param>
  238. /// <param name="e"></param>
  239. private List<int> houseSns = new List<int>();
  240. private async void Image_MouseDown_2(object sender, MouseButtonEventArgs e)
  241. {
  242. if (DateTime.TryParse(tb_startTime.Text, out DateTime start) && DateTime.TryParse(tb_endTime.Text, out DateTime end))
  243. {
  244. if (start < end)
  245. {
  246. if (new BulkExportChartWindow(AppData.Instance.MainWindow, houseSns).ShowDialog() != true) return;
  247. if (!houseSns.Any()) return;
  248. //string fileFullPath = SaveFileName($"{tlSn}舱室历史数据_{start.ToString("yy-MM-dd-HH-mm")}_{end.ToString("yy-MM-dd-HH-mm")}.zip");
  249. string fileFullPath = SaveFileName($"{tlSn}{KeyToStringConvert.GetLanguageStringByKey("0322")}_{start.ToString("yy-MM-dd-HH-mm")}_{end.ToString("yy-MM-dd-HH-mm")}.zip");
  250. //System.Windows.Forms.FolderBrowserDialog folderBrowserDialog = new System.Windows.Forms.FolderBrowserDialog();
  251. //if (folderBrowserDialog.ShowDialog() == System.Windows.Forms.DialogResult.OK)
  252. //{
  253. // path= folderBrowserDialog.SelectedPath;
  254. //}
  255. if (string.IsNullOrEmpty(fileFullPath))
  256. return;
  257. AppData.Instance.MainWindowViewModel.DownLoadStart(new ivf_tl_Entity.Entity.DownLoad.DownLoadEntity
  258. {
  259. DownLoadUrl = $"/api/tl/control/houseCollect/exportHouseEnvironment?houseSn={string.Join(',', houseSns)}&tlSn={tlSn}&startTime={start.ToString("yyyy-MM-dd HH:mm:ss")}&endTime={end.ToString("yyyy-MM-dd HH:mm:ss")}",
  260. NewFileFullName = fileFullPath,
  261. FileName = Path.GetFileName(fileFullPath),
  262. });
  263. return;
  264. foreach (var houseSn in houseSns)
  265. {
  266. string startTime = start.ToString("yyyy-MM-dd HH:mm:ss");
  267. string endTime = end.ToString("yyyy-MM-dd HH:mm:ss");
  268. List<SettingEntity> binSettings = vm.GetSettingEntities(tlSn, houseSn.ToString(), startTime, endTime);
  269. string csvName = $"House{houseSn}_{start.ToString("yyyy-MM--dd-HH-mm-ss")}_{end.ToString("yyyy-MM--dd-HH-mm-ss")}.csv";
  270. //csvName = System.IO.Path.Combine(path, csvName);
  271. var aa = await ExportHouse(csvName, houseSn, start, end, binSettings);
  272. }
  273. }
  274. else
  275. new ToastMessageWindow(AppData.Instance.MainWindow, KeyToStringConvert.GetLanguageStringByKey("0283")).Show();
  276. //new ToastMessageWindow(AppData.Instance.MainWindow, $"结束时间必须大于开始时间").Show();
  277. }
  278. else
  279. {
  280. new ToastMessageWindow(AppData.Instance.MainWindow, KeyToStringConvert.GetLanguageStringByKey("0321")).Show();
  281. //new ToastMessageWindow(AppData.Instance.MainWindow, $"未选择开始或结束时间").Show();
  282. }
  283. }
  284. public async Task<int> ExportHouse(string csvName, int houseid, DateTime leftDate, DateTime rightDate, List<SettingEntity> settingEntities)
  285. {
  286. Stopwatch sw = new Stopwatch();
  287. sw.Start();
  288. StringBuilder csvContent = new StringBuilder();
  289. //csvContent.Append($"注意事项:温压历史数据1分钟记录一次,换气过程中1秒记录一次");
  290. //csvContent.Append($"{Environment.NewLine}舱室记录时间,舱室编号,舱室温度,舱室压力,是否换气,舱室上盖板温度,舱室下盖板温度,舱室玻璃片下方温度,仪器记录时间,仪器温度1,仪器温度2");
  291. csvContent.Append(KeyToStringConvert.GetLanguageStringByKey("0323"));
  292. csvContent.Append($"{Environment.NewLine}{KeyToStringConvert.GetLanguageStringByKey("0324")},舱室编号,{KeyToStringConvert.GetLanguageStringByKey("0325")},{KeyToStringConvert.GetLanguageStringByKey("0326")},{KeyToStringConvert.GetLanguageStringByKey("0327")},{KeyToStringConvert.GetLanguageStringByKey("0328")},{KeyToStringConvert.GetLanguageStringByKey("0329")},{KeyToStringConvert.GetLanguageStringByKey("0330")},{KeyToStringConvert.GetLanguageStringByKey("0331")},{KeyToStringConvert.GetLanguageStringByKey("0332")},{KeyToStringConvert.GetLanguageStringByKey("0333")}");
  293. string shi = KeyToStringConvert.GetLanguageStringByKey("0123");//是
  294. string fou = KeyToStringConvert.GetLanguageStringByKey("0124");//否
  295. string hao = KeyToStringConvert.GetLanguageStringByKey("0163");//号舱室
  296. for (int i = 0; i < settingEntities.Count; i++)
  297. {
  298. var houseItem = settingEntities[i];
  299. string isVentilation = houseItem.airSwap == 0 ? fou : shi;
  300. //csvContent.Append($"{Environment.NewLine}{houseItem.createTime.ToString("G")},{houseid}号舱室,{houseItem.temperature},{houseItem.pressure},{isVentilation},{houseItem.temperatureUpperCover},{houseItem.temperatureLowerCover},{houseItem.temperatureLowerGlass}");
  301. csvContent.Append($"{Environment.NewLine}{houseItem.createTime.ToString("G")},{houseid}{hao},{houseItem.temperature},{houseItem.pressure},{isVentilation},{houseItem.temperatureUpperCover},{houseItem.temperatureLowerCover},{houseItem.temperatureLowerGlass}");
  302. }
  303. string content1 = $"{csvContent}";
  304. CSVHelper.WriteFile(csvName, content1, false);
  305. sw.Stop();
  306. //string ss = $"耗时:{sw.ElapsedMilliseconds}毫秒";
  307. string ss = $"{KeyToStringConvert.GetLanguageStringByKey("0334")}:{sw.ElapsedMilliseconds}{KeyToStringConvert.GetLanguageStringByKey("0335")}";
  308. CSVHelper.WriteFile(csvName, ss, true);
  309. return 1;
  310. }
  311. public string SaveFileName(string filename)
  312. {
  313. var dialog = new Microsoft.Win32.SaveFileDialog();
  314. dialog.FileName = filename;
  315. dialog.DefaultExt = ".zip";
  316. dialog.Filter = "zip|*.zip";
  317. dialog.AddExtension = true;
  318. if (dialog.ShowDialog() != true)
  319. {
  320. return null;
  321. }
  322. return dialog.FileName;
  323. }
  324. private void Canvas_PreviewMouseDown(object sender, MouseButtonEventArgs e)
  325. {
  326. TextBlock source = e.OriginalSource as TextBlock;
  327. if (source != null)
  328. {
  329. ContentPresenter contentPresenter = source.TemplatedParent as ContentPresenter;
  330. if (contentPresenter != null)
  331. {
  332. if (contentPresenter.Name == "hello")
  333. return;
  334. }
  335. }
  336. Border border =e.OriginalSource as Border;
  337. if (border != null) {
  338. if (border.Name == "hello1")
  339. return;
  340. }
  341. if (!pp_time.IsMouseOver)
  342. {
  343. isOpen = false;
  344. pp_time.IsOpen = isOpen;
  345. }
  346. }
  347. private void Next7_Click(object sender, RoutedEventArgs e)
  348. {
  349. DateTime start = DateTime.Now.AddDays(-7);
  350. DateTime now = DateTime.Now;
  351. SetDateAndTbText(start, now);
  352. UpdateData();
  353. }
  354. private void Next30_Click(object sender, RoutedEventArgs e)
  355. {
  356. DateTime start = DateTime.Now.AddDays(-30);
  357. DateTime now = DateTime.Now;
  358. SetDateAndTbText(start, now);
  359. UpdateData();
  360. }
  361. private void Export_Click(object sender, RoutedEventArgs e)
  362. {
  363. if (DateTime.TryParse(tb_startTime.Text, out DateTime start) && DateTime.TryParse(tb_endTime.Text, out DateTime end))
  364. {
  365. if (start < end)
  366. {
  367. if (new BulkExportChartWindow(AppData.Instance.MainWindow, houseSns).ShowDialog() != true) return;
  368. if (!houseSns.Any()) return;
  369. //string fileFullPath = SaveFileName($"{tlSn}舱室历史数据_{start.ToString("yy-MM-dd-HH-mm")}_{end.ToString("yy-MM-dd-HH-mm")}.zip");
  370. string fileFullPath = SaveFileName($"{tlSn}{KeyToStringConvert.GetLanguageStringByKey("0322")}_{start.ToString("yy-MM-dd-HH-mm")}_{end.ToString("yy-MM-dd-HH-mm")}.zip");
  371. //System.Windows.Forms.FolderBrowserDialog folderBrowserDialog = new System.Windows.Forms.FolderBrowserDialog();
  372. //if (folderBrowserDialog.ShowDialog() == System.Windows.Forms.DialogResult.OK)
  373. //{
  374. // path= folderBrowserDialog.SelectedPath;
  375. //}
  376. if (string.IsNullOrEmpty(fileFullPath))
  377. return;
  378. AppData.Instance.MainWindowViewModel.DownLoadStart(new ivf_tl_Entity.Entity.DownLoad.DownLoadEntity
  379. {
  380. DownLoadUrl = $"/api/tl/control/houseCollect/exportHouseEnvironment?houseSn={string.Join(',', houseSns)}&tlSn={tlSn}&startTime={start.ToString("yyyy-MM-dd HH:mm:ss")}&endTime={end.ToString("yyyy-MM-dd HH:mm:ss")}",
  381. NewFileFullName = fileFullPath,
  382. FileName = Path.GetFileName(fileFullPath),
  383. });
  384. return;
  385. foreach (var houseSn in houseSns)
  386. {
  387. string startTime = start.ToString("yyyy-MM-dd HH:mm:ss");
  388. string endTime = end.ToString("yyyy-MM-dd HH:mm:ss");
  389. List<SettingEntity> binSettings = vm.GetSettingEntities(tlSn, houseSn.ToString(), startTime, endTime);
  390. string csvName = $"House{houseSn}_{start.ToString("yyyy-MM--dd-HH-mm-ss")}_{end.ToString("yyyy-MM--dd-HH-mm-ss")}.csv";
  391. //csvName = System.IO.Path.Combine(path, csvName);
  392. //var aa = await ExportHouse(csvName, houseSn, start, end, binSettings);
  393. }
  394. }
  395. else
  396. new ToastMessageWindow(AppData.Instance.MainWindow, KeyToStringConvert.GetLanguageStringByKey("0283")).Show();
  397. //new ToastMessageWindow(AppData.Instance.MainWindow, $"结束时间必须大于开始时间").Show();
  398. }
  399. else
  400. {
  401. new ToastMessageWindow(AppData.Instance.MainWindow, KeyToStringConvert.GetLanguageStringByKey("0321")).Show();
  402. //new ToastMessageWindow(AppData.Instance.MainWindow, $"未选择开始或结束时间").Show();
  403. }
  404. }
  405. }
  406. }