Нет описания

DailyCheck.xaml.cs 7.9KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Windows;
  6. using System.Windows.Controls;
  7. using System.Windows.Data;
  8. using System.Windows.Documents;
  9. using System.Windows.Input;
  10. using System.Windows.Media;
  11. using System.Windows.Media.Imaging;
  12. using System.Windows.Shapes;
  13. using System.Collections.ObjectModel;
  14. using System.Data.SqlClient;
  15. using System.Data;
  16. namespace WpfApplication19
  17. {
  18. /// <summary>
  19. /// Interaction logic for DailyCheck.xaml
  20. /// </summary>
  21. public partial class DailyCheck : Window
  22. {
  23. ObservableCollection<DailyChecker> _dailyChecks = new ObservableCollection<DailyChecker>();
  24. DataGridCellInfo _cell;
  25. DataGridColumn _col;
  26. DailyChecker _item;
  27. SqlConnection _proConn;
  28. DateTime _now, _tomorrow;
  29. string _shift;
  30. public DailyCheck()
  31. {
  32. InitializeComponent();
  33. //nowLabel.Content = String.Format("{0:dd/MM/yyyy}", DateTime.Now);
  34. //var test = DateTime.Now + 1;
  35. _now = DateTime.Now.Date;
  36. _tomorrow = _now.AddDays(1);
  37. var c = DateTime.Now.AddDays(1);
  38. var hr = DateTime.Now.TimeOfDay.Hours;
  39. //shiftCB.SelectionChanged -= shiftCB_SelectionChanged;
  40. if(hr >= 8 && hr <= 19){
  41. _shift = "day";
  42. shiftCB.SelectedIndex = 0;
  43. }else{
  44. _shift = "night";
  45. shiftCB.SelectedIndex = 1;
  46. }
  47. datePicker.SelectedDateChanged -= datePicker_SelectedDateChanged;
  48. datePicker.SelectedDate =_now;
  49. datePicker.SelectedDateChanged += datePicker_SelectedDateChanged;
  50. shiftCB.SelectionChanged += shiftCB_SelectionChanged;
  51. try
  52. {
  53. _proConn = Utils.createSqlConnection("productionDbCS");
  54. }
  55. catch (SqlException se)
  56. {
  57. MessageBox.Show("productionDbCS : ", se.Message);
  58. }
  59. //var w = (MainWindow)Application.Current.MainWindow;
  60. //_proConn = w.proConn;
  61. initDataGrid();
  62. //dailyCheckGrid.Focus();
  63. }
  64. void initDataGrid(){
  65. setGrid(_now, _tomorrow, _shift);
  66. }
  67. private void setGrid(DateTime from, DateTime to, string shift)
  68. {
  69. var id = Utils.getSetting("currentMachine");
  70. var sql = string.Format("select * from daily_checks where created_at >= '{0:yyyy-MM-dd}' and created_at < '{1:yyyy-MM-dd}' and machine_id = {2} and shift = '{3}'"
  71. , from,to, id, shift);
  72. var reader = Utils.Query(_proConn, sql);
  73. dailyCheckGrid.ItemsSource = null;
  74. _dailyChecks.Clear();
  75. if (reader.HasRows)
  76. {
  77. while (reader.Read())
  78. {
  79. _dailyChecks.Add(new DailyChecker()
  80. {
  81. header = reader["header"].ToString().ToUpper(),
  82. p1 = Math.Round(Convert.ToDouble(reader["p1"]), 2),
  83. p2 = Math.Round(Convert.ToDouble(reader["p2"]), 2),
  84. p3 = Math.Round(Convert.ToDouble(reader["p3"]), 2),
  85. avg = Math.Round(Convert.ToDouble(reader["avg"]), 2),
  86. result = reader["result"].ToString()
  87. });
  88. }
  89. }
  90. else
  91. {
  92. _dailyChecks.Add(new DailyChecker() { header = "OB", p1 = 0, p2 = 0, p3 = 0, avg = 0 });
  93. _dailyChecks.Add(new DailyChecker() { header = "OC", p1 = 0, p2 = 0, p3 = 0, avg = 0 });
  94. _dailyChecks.Add(new DailyChecker() { header = "RH", p1 = 0, p2 = 0, p3 = 0, avg = 0 });
  95. }
  96. reader.Close();
  97. dailyCheckGrid.Items.Clear();
  98. dailyCheckGrid.ItemsSource = _dailyChecks;
  99. }
  100. private void saveBtn_Click(object sender, RoutedEventArgs e)
  101. {
  102. int row, col;
  103. string header;
  104. //dailyCheckGrid.Focus();
  105. try{
  106. header = _cell.Column.Header.ToString();
  107. row = _dailyChecks.IndexOf((_cell.Item as DailyChecker));
  108. col = _col.DisplayIndex;
  109. }catch{
  110. dailyCheckGrid.Focus();
  111. dailyCheckGrid.CurrentCell = new DataGridCellInfo(
  112. dailyCheckGrid.Items[0], dailyCheckGrid.Columns[1]);
  113. dailyCheckGrid.BeginEdit();
  114. header = "P1";
  115. row = 0;
  116. col = 1;
  117. _item = _dailyChecks[0];
  118. }
  119. switch(header){
  120. case "P1":
  121. //var c = dailyCheckGrid.CurrentItem as DailyChecker;
  122. _item.p1 = Convert.ToDouble(measureBlock.Text);
  123. break;
  124. case "P2":
  125. _item.p2 = Convert.ToDouble(measureBlock.Text);
  126. break;
  127. case "P3":
  128. _item.p3 = Convert.ToDouble(measureBlock.Text);
  129. break;
  130. }
  131. _item.avg = Math.Round((_item.p1 + _item.p2 + _item.p3)/3, 2);
  132. if(_item.header == "OB"){
  133. if(_item.avg >= 0.59 && _item.avg <= 0.70){
  134. _item.result = "OK";
  135. }else {
  136. _item.result = "NG";
  137. }
  138. }
  139. if(_item.header == "OC"){
  140. if (_item.avg >= 0.28 && _item.avg <= 0.37)
  141. {
  142. _item.result = "OK";
  143. }
  144. else
  145. {
  146. _item.result = "NG";
  147. }
  148. }
  149. dailyCheckGrid.Items.Refresh();
  150. dailyCheckGrid.Focus();
  151. if(header != "Header" && header != "Avg" && header != "P3"){
  152. dailyCheckGrid.CurrentCell = new DataGridCellInfo(
  153. dailyCheckGrid.Items[row], dailyCheckGrid.Columns[col + 1]);
  154. dailyCheckGrid.BeginEdit();
  155. }
  156. if(header == "P3"){
  157. try{
  158. dailyCheckGrid.CurrentCell = new DataGridCellInfo(
  159. dailyCheckGrid.Items[row+1], dailyCheckGrid.Columns[1]);
  160. dailyCheckGrid.SelectedItem = dailyCheckGrid.Items[row + 1];
  161. dailyCheckGrid.BeginEdit();
  162. }catch{
  163. dailyCheckGrid.CurrentCell = new DataGridCellInfo(
  164. dailyCheckGrid.Items[0], dailyCheckGrid.Columns[1]);
  165. dailyCheckGrid.SelectedItem = dailyCheckGrid.Items[0];
  166. dailyCheckGrid.BeginEdit();
  167. }
  168. }
  169. }
  170. private void dailyCheckGrid_GotFocus(object sender, RoutedEventArgs e)
  171. {
  172. _cell = dailyCheckGrid.CurrentCell;
  173. _col = dailyCheckGrid.CurrentColumn;
  174. _item = dailyCheckGrid.CurrentItem as DailyChecker;
  175. }
  176. private void dailyCheckGrid_Loaded(object sender, RoutedEventArgs e)
  177. {
  178. dailyCheckGrid.Focus();
  179. dailyCheckGrid.CurrentCell = new DataGridCellInfo(
  180. dailyCheckGrid.Items[0], dailyCheckGrid.Columns[1]);
  181. dailyCheckGrid.BeginEdit();
  182. }
  183. private void commitBtn_Click(object sender, RoutedEventArgs e)
  184. {
  185. commitData();
  186. MessageBox.Show("Commit Daily Check Complete");
  187. Close();
  188. }
  189. private void commitData()
  190. {
  191. var id = Utils.getSetting("currentMachine");
  192. var sql = string.Format("delete daily_checks where machine_id = {0} and created_at >= '{1:yyyy-MM-dd}' and created_at < '{2:yyyy-MM-dd}' and shift = '{3}'", id, _now, _tomorrow, _shift);
  193. var reader = Utils.Query(_proConn, sql);
  194. reader.Close();
  195. string empid = GlobalVars.user.empid;
  196. foreach (var item in _dailyChecks)
  197. {
  198. sql = string.Format("insert into daily_checks(header, p1, p2, p3, avg, created_at, updated_at,machine_id, empid, shift, result) values('{0}', {1}, {2}, {3}, {4}, '{5}', '{6}', {7}, '{8}', '{9}', '{10}')"
  199. , item.header.ToUpper(), item.p1, item.p2, item.p3, item.avg, _now, DateTime.Now, id, empid, _shift, item.result);
  200. reader = Utils.Query(_proConn, sql);
  201. reader.Close();
  202. }
  203. }
  204. private void datePicker_SelectedDateChanged(object sender, SelectionChangedEventArgs e)
  205. {
  206. //MessageBox.Show("change date");
  207. if (commitBtn.IsEnabled == true)
  208. commitData();
  209. var d = (DateTime)datePicker.SelectedDate;
  210. var shift = (shiftCB.SelectedItem as ComboBoxItem).Tag.ToString();
  211. if (d.Date == DateTime.Now.Date && shift == _shift)
  212. {
  213. saveBtn.IsEnabled = true;
  214. commitBtn.IsEnabled = true;
  215. }
  216. else
  217. {
  218. saveBtn.IsEnabled = false;
  219. commitBtn.IsEnabled = false;
  220. }
  221. var from = (DateTime)datePicker.SelectedDate;
  222. setGrid(from.Date, from.Date.AddDays(1), shift);
  223. }
  224. private void shiftCB_SelectionChanged(object sender, SelectionChangedEventArgs e)
  225. {
  226. //var d = (DateTime)datePicker.SelectedDate;
  227. if( commitBtn.IsEnabled == true)
  228. commitData();
  229. var d = (DateTime)datePicker.SelectedDate;
  230. var shift = (shiftCB.SelectedItem as ComboBoxItem).Tag.ToString();
  231. if (d.Date == DateTime.Now.Date && shift == _shift)
  232. {
  233. saveBtn.IsEnabled = true;
  234. commitBtn.IsEnabled = true;
  235. }
  236. else
  237. {
  238. saveBtn.IsEnabled = false;
  239. commitBtn.IsEnabled = false;
  240. }
  241. var from = (DateTime)datePicker.SelectedDate;
  242. setGrid(from.Date, from.Date.AddDays(1), shift);
  243. }
  244. private void Window_Closed(object sender, EventArgs e)
  245. {
  246. if (commitBtn.IsEnabled == true)
  247. commitData();
  248. }
  249. }
  250. }