using MaiMuAOI.SysCtrl; using MaiMuAOI.SysUI.ProductAndStep; using Newtonsoft.Json; using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; namespace MaiMuAOI.SysUI.ProcessStep { public partial class StepInfoFrm : Form { public int StepID = 0; Service.StepService service = new Service.StepService(); Models.Step model = new Models.Step(); public StepInfoFrm(Models.Step m = null) { InitializeComponent(); UIStyle.SetUIStyle(this); this.uiTitel1.FatherForm = this; dataGridView1.AutoGenerateColumns = false; dataGridView2.AutoGenerateColumns = false; //显示行号与列宽度自动调整 dataGridView2.RowHeadersVisible = true; dataGridView2.RowHeadersWidthSizeMode = DataGridViewRowHeadersWidthSizeMode.AutoSizeToAllHeaders; dataGridView2.RowPostPaint += (sender, e) => { SysMgr.showRowNum_onDataGrid_RowPostPaint(this.dataGridView2, sender, e); }; if (m == null) model.ProcessList = new List(); else model = m; dataGridView1.DefaultCellStyle.ForeColor = Color.Black; dataGridView2.DefaultCellStyle.ForeColor = Color.Black; } private void InitDataView() { this.Cursor = Cursors.WaitCursor; dataGridView1.Columns.Add("colCode", "code"); dataGridView1.Columns.Add("colName", "工序"); dataGridView1.Columns[0].Visible = false; dataGridView1.Columns[1].AutoSizeMode = DataGridViewAutoSizeColumnMode.Fill; foreach (var item in SysMgr.dicDevType) dataGridView1.Rows.Add(item.Key, item.Value); // this.txtCode.Text = model.Code; this.txtName.Text = model.Name; this.numStartTimeIndex.Value = model.StartTimeIndex; if (model.ProcessList != null) dataGridView2.DataSource = new BindingSource(model.ProcessList, null); this.Cursor = Cursors.Default; } private void StepInfoFrm_Load(object sender, EventArgs e) { InitDataView(); } #region private private void reOrderProcess() { for (int i = 0; i < model.ProcessList.Count; i++) model.ProcessList[i].Order = i; } private void refreshDataGridView() { dataGridView2.DataSource = null; dataGridView2.DataSource = new BindingSource(model.ProcessList, null); } #endregion private void tsbtnSave_Click(object sender, EventArgs e) { try { //string szCode = this.txtCode.Text.Trim(); string szCode = this.txtName.Text.Trim(); string szName = this.txtName.Text.Trim(); if (szCode == "" || szName == "") throw new Exception("请填写编号和名称!"); if (model.ProcessList == null || model.ProcessList.Count == 0) throw new Exception("请添加流程工序!"); foreach (var item in model.ProcessList) { if (string.IsNullOrWhiteSpace(item.ProcessParams)) throw new Exception($"{SysMgr.dicDevType[item.ProcessCode]} 配方未设置!"); } model.ProcessType = "高级流程"; model.Code = szCode; model.Name = szName; model.StartTimeIndex = (int)numStartTimeIndex.Value; model.ModifyUserCode = SysMgr.Instance.UserMgr.LoginUser.Code; bool result; if (model.Id == 0) { model.CreateUserCode = SysMgr.Instance.UserMgr.LoginUser.Code; result = service.InsertNav(model); model = service.GetListNav(0).Find(x => x.Code == szCode && x.Name == szName); } else result = service.UpdateNav(model); StepID = model.Id; if (!result) throw new Exception("保存失败!"); SysMgr.Instance.WriteSysEditLog("老流程修改", JsonConvert.SerializeObject(model)); MessageBox.Show("保存成功!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information); this.Close(); } catch (Exception ex) { MessageBox.Show(ex.Message, "错误", MessageBoxButtons.OK, MessageBoxIcon.Error); } } private void btnAdd_Click(object sender, EventArgs e) { try { if (this.dataGridView1.SelectedRows.Count != 1) throw new Exception("请选择要插入的工序!"); string processCode = this.dataGridView1.SelectedRows[0].Cells[0].Value.ToString(); model.ProcessList.Add(new Models.StepProcess() { ProcessCode = processCode, ProcessName = SysMgr.dicDevType[processCode], ModifyUserCode = SysMgr.Instance.UserMgr.LoginUser.Code, CreateUserCode = SysMgr.Instance.UserMgr.LoginUser.Code }); reOrderProcess(); this.refreshDataGridView(); this.dataGridView2.Rows[this.dataGridView2.Rows.Count - 1].Selected = true; dataGridView2.CurrentCell = dataGridView2.Rows[this.dataGridView2.Rows.Count - 1].Cells[1]; } catch (Exception ex) { MessageBox.Show(ex.Message, "错误", MessageBoxButtons.OK, MessageBoxIcon.Error); } } private void btnInsert_Click(object sender, EventArgs e) { try { if (this.dataGridView1.SelectedRows.Count != 1) throw new Exception("请选择要插入的工序!"); string processCode = this.dataGridView1.SelectedRows[0].Cells[0].Value.ToString(); int liInsertIndex = this.dataGridView2.Rows.Count; if (this.dataGridView2.SelectedRows.Count > 0) liInsertIndex = this.dataGridView2.SelectedRows[0].Index; model.ProcessList.Insert(liInsertIndex, new Models.StepProcess() { ProcessCode = processCode, ProcessName = SysMgr.dicDevType[processCode], Order = liInsertIndex, ModifyUserCode = SysMgr.Instance.UserMgr.LoginUser.Code, CreateUserCode = SysMgr.Instance.UserMgr.LoginUser.Code }); reOrderProcess(); this.refreshDataGridView(); this.dataGridView2.Rows[liInsertIndex].Selected = true; dataGridView2.CurrentCell = dataGridView2.Rows[liInsertIndex].Cells[1]; } catch (Exception ex) { MessageBox.Show(ex.Message, "错误", MessageBoxButtons.OK, MessageBoxIcon.Error); } } private void btnDel_Click(object sender, EventArgs e) { try { if (this.dataGridView2.SelectedRows.Count != 1) throw new Exception("请选择要删除的工序!"); int liRowIndex = this.dataGridView2.SelectedRows[0].Index; model.ProcessList.RemoveAt(liRowIndex); if (liRowIndex >= dataGridView2.Rows.Count - 1) liRowIndex = dataGridView2.Rows.Count - 1; dataGridView2.CurrentCell = dataGridView2.Rows[liRowIndex].Cells[1]; //reOrderProcess(); this.refreshDataGridView(); if (dataGridView2.Rows.Count < 1) return; if (liRowIndex >= dataGridView2.Rows.Count) liRowIndex = dataGridView2.Rows.Count - 1; dataGridView2.CurrentCell = dataGridView2.Rows[liRowIndex].Cells[1]; } catch (Exception ex) { MessageBox.Show(ex.Message, "错误", MessageBoxButtons.OK, MessageBoxIcon.Error); } } private void btnUp_Click(object sender, EventArgs e) { try { if (this.dataGridView2.SelectedRows.Count != 1) throw new Exception("请选择要调整顺序的工序!"); int liSelIndex = this.dataGridView2.SelectedRows[0].Index; if (liSelIndex == 0) return; model.ProcessList.Insert(liSelIndex - 1, model.ProcessList[liSelIndex]); model.ProcessList.RemoveAt(liSelIndex + 1); reOrderProcess(); this.refreshDataGridView(); this.dataGridView2.Rows[liSelIndex - 1].Selected = true; dataGridView2.CurrentCell = dataGridView2.Rows[liSelIndex - 1].Cells[1]; } catch (Exception ex) { MessageBox.Show(ex.Message, "错误", MessageBoxButtons.OK, MessageBoxIcon.Error); } } private void btnDown_Click(object sender, EventArgs e) { try { if (this.dataGridView2.SelectedRows.Count != 1) throw new Exception("请选择要调整顺序的工序!"); int liSelIndex = this.dataGridView2.SelectedRows[0].Index; if (liSelIndex == this.dataGridView2.Rows.Count - 1) return; model.ProcessList.Insert(liSelIndex + 2, model.ProcessList[liSelIndex]); model.ProcessList.RemoveAt(liSelIndex); reOrderProcess(); this.refreshDataGridView(); this.dataGridView2.Rows[liSelIndex + 1].Selected = true; dataGridView2.CurrentCell = dataGridView2.Rows[liSelIndex + 1].Cells[1]; } catch (Exception ex) { MessageBox.Show(ex.Message, "错误", MessageBoxButtons.OK, MessageBoxIcon.Error); } } private void dataGridView2_DataBindingComplete(object sender, DataGridViewBindingCompleteEventArgs e) { for (int i = 0; i < dataGridView2.Rows.Count; i++) { if(SysMgr.dicDevType.ContainsKey(dataGridView2.Rows[i].Cells[0].Value.ToString())) { dataGridView2.Rows[i].Cells["colTypeName"].Value = SysMgr.dicDevType[dataGridView2.Rows[i].Cells[0].Value.ToString()]; } else { dataGridView2.Rows[i].Cells["colTypeName"].Value = "不支持"; dataGridView2.Rows[i].DefaultCellStyle.BackColor = Color.Yellow; } } } private void dataGridView2_CellContentClick(object sender, DataGridViewCellEventArgs e) { int Index = this.dataGridView2.CurrentRow.Index;//获取当前选中行的索引 if (Index < this.dataGridView2.Rows.Count && this.dataGridView2.CurrentCell.Value.ToString() == "设置") { string processCode = this.dataGridView2.Rows[Index].Cells["colProcessCode"].Value.ToString(); string processParams = ""; if (this.dataGridView2.Rows[Index].Cells["colProcessParams"].Value != null) processParams = this.dataGridView2.Rows[Index].Cells["colProcessParams"].Value.ToString(); bool IsSupport = SysMgr.dicDevType.ContainsKey(processCode); if (IsSupport) { SetParamsFrm frm = new SetParamsFrm(processCode, processParams); if (frm.ShowDialog() == DialogResult.OK) this.dataGridView2.Rows[Index].Cells["colProcessParams"].Value = frm.ParamsData; } else { //MessageBox.Show("不支持改功能!", "警告", MessageBoxButtons.OK, MessageBoxIcon.Information ); } } } private void tsbtnClose_Click(object sender, EventArgs e) { this.Close(); } //单元格编译完成 private void dataGridView2_CellEndEdit(object sender, DataGridViewCellEventArgs e) { var value = dataGridView2.Rows[e.RowIndex].Cells["colProcessName"].Value; if (value == null || value.ToString().Trim() == "") { dataGridView2.Rows[e.RowIndex].Cells["colProcessName"].Value = dataGridView2.Rows[e.RowIndex].Cells["colTypeName"].Value; } } } }