版博士V2.0程序
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 

301 lines
12 KiB

  1. using System;
  2. using System.Collections.Generic;
  3. using System.ComponentModel;
  4. using System.Data;
  5. using System.Drawing;
  6. using System.IO;
  7. using System.Linq;
  8. using System.Text;
  9. using System.Threading.Tasks;
  10. using System.Windows.Forms;
  11. namespace AssistClient
  12. {
  13. public partial class FrmStepInfo : Form
  14. {
  15. Service.StepService service = new Service.StepService();
  16. Models.Step model=new Models.Step();
  17. public FrmStepInfo(Models.Step m=null)
  18. {
  19. InitializeComponent();
  20. dataGridView1.AutoGenerateColumns = false;
  21. dataGridView2.AutoGenerateColumns = false;
  22. //显示行号与列宽度自动调整
  23. dataGridView2.RowHeadersVisible = true;
  24. dataGridView2.RowHeadersWidthSizeMode = DataGridViewRowHeadersWidthSizeMode.AutoSizeToAllHeaders;
  25. dataGridView2.RowPostPaint += (sender, e) =>
  26. {
  27. Utils.Util.showRowNum_onDataGrid_RowPostPaint(this.dataGridView2, sender, e);
  28. };
  29. if (m == null)
  30. model.ProcessList = new List<Models.StepProcess>();
  31. else
  32. model = m;
  33. model.Tag = 1;//*
  34. }
  35. private void initDataView()
  36. {
  37. dataGridView1.Columns.Add("colCode", "code");
  38. dataGridView1.Columns.Add("colName", "工序");
  39. dataGridView1.Columns[0].Visible = false;
  40. dataGridView1.Columns[1].AutoSizeMode = DataGridViewAutoSizeColumnMode.Fill;
  41. foreach (var item in Config.dicDevType)
  42. dataGridView1.Rows.Add(item.Key, item.Value);
  43. //
  44. this.txtCode.Text = model.Code;
  45. this.txtName.Text = model.Name;
  46. this.numStartTimeIndex.Value = model.StartTimeIndex;
  47. if (model.ProcessList!=null)
  48. dataGridView2.DataSource = new BindingSource(model.ProcessList, null);
  49. }
  50. private class Process
  51. {
  52. public Process(string code, string name)
  53. {
  54. Code = code;
  55. Name = name;
  56. }
  57. public string Code { get; set; }
  58. public string Name { get; set; }
  59. }
  60. private void FrmStepInfo_Load(object sender, EventArgs e)
  61. {
  62. initDataView();
  63. }
  64. #region private
  65. private void reOrderProcess()
  66. {
  67. for (int i = 0; i < model.ProcessList.Count; i++)
  68. model.ProcessList[i].Order = i;
  69. }
  70. private void refreshDataGridView()
  71. {
  72. dataGridView2.DataSource = null;
  73. dataGridView2.DataSource = new BindingSource(model.ProcessList, null);
  74. }
  75. #endregion
  76. private bool saveExit=false;
  77. private void tsbtnSave_Click(object sender, EventArgs e)
  78. {
  79. try
  80. {
  81. string szCode = this.txtCode.Text.Trim();
  82. string szName = this.txtName.Text.Trim();
  83. if (szCode == "" || szName == "")
  84. throw new Exception("请填写编号和名称!");
  85. if (model.ProcessList == null || model.ProcessList.Count == 0)
  86. throw new Exception("请添加流程工序!");
  87. foreach(var item in model.ProcessList)
  88. {
  89. if (string.IsNullOrWhiteSpace(item.ProcessParams))
  90. throw new Exception($"{Config.dicDevType[item.ProcessCode]} 配方未设置!");
  91. }
  92. model.Code = szCode;
  93. model.Name = szName;
  94. model.StartTimeIndex = (int)numStartTimeIndex.Value;
  95. model.ModifyUserCode = Config.loginUser.Code;
  96. bool result;
  97. if (model.Id == 0)
  98. {
  99. model.CreateUserCode=Config.loginUser.Code;
  100. result = service.InsertNav(model);
  101. }
  102. else
  103. result = service.UpdateNav(model);
  104. if (!result)
  105. throw new Exception("保存失败!");
  106. MessageBox.Show("保存成功!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
  107. saveExit=true;
  108. this.Close();
  109. }
  110. catch (Exception ex)
  111. {
  112. MessageBox.Show(ex.Message, "错误", MessageBoxButtons.OK, MessageBoxIcon.Error);
  113. }
  114. }
  115. private void btnAdd_Click(object sender, EventArgs e)
  116. {
  117. try
  118. {
  119. if (this.dataGridView1.SelectedRows.Count != 1)
  120. throw new Exception("请选择要插入的工序!");
  121. string processCode = this.dataGridView1.SelectedRows[0].Cells[0].Value.ToString();
  122. model.ProcessList.Add(new Models.StepProcess()
  123. {
  124. ProcessCode = processCode,
  125. ProcessName= Config.dicDevType[processCode],
  126. ModifyUserCode = Config.loginUser.Code,
  127. CreateUserCode = Config.loginUser.Code
  128. });
  129. reOrderProcess();
  130. this.refreshDataGridView();
  131. this.dataGridView2.Rows[this.dataGridView2.Rows.Count-1].Selected = true;
  132. dataGridView2.CurrentCell = dataGridView2.Rows[this.dataGridView2.Rows.Count - 1].Cells[1];
  133. }
  134. catch (Exception ex)
  135. {
  136. MessageBox.Show(ex.Message, "错误", MessageBoxButtons.OK, MessageBoxIcon.Error);
  137. }
  138. }
  139. private void btnInsert_Click(object sender, EventArgs e)
  140. {
  141. try
  142. {
  143. if (this.dataGridView1.SelectedRows.Count != 1)
  144. throw new Exception("请选择要插入的工序!");
  145. string processCode= this.dataGridView1.SelectedRows[0].Cells[0].Value.ToString();
  146. int liInsertIndex = this.dataGridView2.Rows.Count;
  147. if (this.dataGridView2.SelectedRows.Count > 0)
  148. liInsertIndex = this.dataGridView2.SelectedRows[0].Index;
  149. model.ProcessList.Insert(liInsertIndex, new Models.StepProcess()
  150. {
  151. ProcessCode = processCode,
  152. ProcessName = Config.dicDevType[processCode],
  153. Order = liInsertIndex,
  154. ModifyUserCode=Config.loginUser.Code,
  155. CreateUserCode=Config.loginUser.Code
  156. });
  157. reOrderProcess();
  158. this.refreshDataGridView();
  159. this.dataGridView2.Rows[liInsertIndex].Selected = true;
  160. dataGridView2.CurrentCell = dataGridView2.Rows[liInsertIndex].Cells[1];
  161. }
  162. catch (Exception ex)
  163. {
  164. MessageBox.Show(ex.Message, "错误", MessageBoxButtons.OK, MessageBoxIcon.Error);
  165. }
  166. }
  167. private void btnDel_Click(object sender, EventArgs e)
  168. {
  169. try
  170. {
  171. if (this.dataGridView2.SelectedRows.Count != 1)
  172. throw new Exception("请选择要删除的工序!");
  173. int liRowIndex = this.dataGridView2.SelectedRows[0].Index;
  174. model.ProcessList.RemoveAt(liRowIndex);
  175. if(liRowIndex>= dataGridView2.Rows.Count-1)
  176. liRowIndex= dataGridView2.Rows.Count-1;
  177. dataGridView2.CurrentCell = dataGridView2.Rows[liRowIndex].Cells[1];
  178. //reOrderProcess();
  179. this.refreshDataGridView();
  180. if (dataGridView2.Rows.Count < 1)
  181. return;
  182. if (liRowIndex >= dataGridView2.Rows.Count)
  183. liRowIndex = dataGridView2.Rows.Count - 1;
  184. dataGridView2.CurrentCell = dataGridView2.Rows[liRowIndex].Cells[1];
  185. }
  186. catch (Exception ex)
  187. {
  188. MessageBox.Show(ex.Message, "错误", MessageBoxButtons.OK, MessageBoxIcon.Error);
  189. }
  190. }
  191. private void btnUp_Click(object sender, EventArgs e)
  192. {
  193. try
  194. {
  195. if (this.dataGridView2.SelectedRows.Count != 1)
  196. throw new Exception("请选择要调整顺序的工序!");
  197. int liSelIndex = this.dataGridView2.SelectedRows[0].Index;
  198. if (liSelIndex == 0)
  199. return;
  200. model.ProcessList.Insert(liSelIndex - 1, model.ProcessList[liSelIndex]);
  201. model.ProcessList.RemoveAt(liSelIndex + 1);
  202. reOrderProcess();
  203. this.refreshDataGridView();
  204. this.dataGridView2.Rows[liSelIndex-1].Selected = true;
  205. dataGridView2.CurrentCell = dataGridView2.Rows[liSelIndex - 1].Cells[1];
  206. }
  207. catch (Exception ex)
  208. {
  209. MessageBox.Show(ex.Message, "错误", MessageBoxButtons.OK, MessageBoxIcon.Error);
  210. }
  211. }
  212. private void btnDown_Click(object sender, EventArgs e)
  213. {
  214. try
  215. {
  216. if (this.dataGridView2.SelectedRows.Count != 1)
  217. throw new Exception("请选择要调整顺序的工序!");
  218. int liSelIndex = this.dataGridView2.SelectedRows[0].Index;
  219. if (liSelIndex == this.dataGridView2.Rows.Count-1)
  220. return;
  221. model.ProcessList.Insert(liSelIndex +2, model.ProcessList[liSelIndex]);
  222. model.ProcessList.RemoveAt(liSelIndex);
  223. reOrderProcess();
  224. this.refreshDataGridView();
  225. this.dataGridView2.Rows[liSelIndex+1].Selected = true;
  226. dataGridView2.CurrentCell = dataGridView2.Rows[liSelIndex + 1].Cells[1];
  227. }
  228. catch (Exception ex)
  229. {
  230. MessageBox.Show(ex.Message, "错误", MessageBoxButtons.OK, MessageBoxIcon.Error);
  231. }
  232. }
  233. private void tsbtnDebug_Click(object sender, EventArgs e)
  234. {
  235. }
  236. private void dataGridView2_DataBindingComplete(object sender, DataGridViewBindingCompleteEventArgs e)
  237. {
  238. for(int i=0;i< dataGridView2.Rows.Count;i++)
  239. {
  240. dataGridView2.Rows[i].Cells["colTypeName"].Value = Config.dicDevType[dataGridView2.Rows[i].Cells[0].Value.ToString()];
  241. }
  242. }
  243. private void dataGridView2_CellContentClick(object sender, DataGridViewCellEventArgs e)
  244. {
  245. int Index = this.dataGridView2.CurrentRow.Index;//获取当前选中行的索引
  246. if (Index < this.dataGridView2.Rows.Count && this.dataGridView2.CurrentCell.Value.ToString() == "设置")
  247. {
  248. string processCode = this.dataGridView2.Rows[Index].Cells["colProcessCode"].Value.ToString();
  249. string processParams="";
  250. if(this.dataGridView2.Rows[Index].Cells["colProcessParams"].Value!=null)
  251. processParams=this.dataGridView2.Rows[Index].Cells["colProcessParams"].Value.ToString();
  252. FrmSetParams frm=new FrmSetParams(processCode, processParams);
  253. if (frm.ShowDialog() == DialogResult.OK)
  254. this.dataGridView2.Rows[Index].Cells["colProcessParams"].Value = frm.ParamsData;
  255. }
  256. }
  257. private void tsbtnClose_Click(object sender, EventArgs e)
  258. {
  259. this.Close();
  260. }
  261. //单元格编译完成
  262. private void dataGridView2_CellEndEdit(object sender, DataGridViewCellEventArgs e)
  263. {
  264. var value = dataGridView2.Rows[e.RowIndex].Cells["colProcessName"].Value;
  265. if (value==null || value.ToString().Trim() == "")
  266. {
  267. dataGridView2.Rows[e.RowIndex].Cells["colProcessName"].Value = dataGridView2.Rows[e.RowIndex].Cells["colTypeName"].Value;
  268. }
  269. }
  270. private void FrmStepInfo_FormClosing(object sender, FormClosingEventArgs e)
  271. {
  272. if (!saveExit && MessageBox.Show($"确认修改已保存,是否退出?", "提示", MessageBoxButtons.YesNo, MessageBoxIcon.Question) != DialogResult.Yes)
  273. {
  274. e.Cancel = true;
  275. return;
  276. }
  277. }
  278. }
  279. }