using Core.Mes.Client.Comm.Control; using Core.Mes.Client.Comm.Format; using Core.Mes.Client.Comm.Server; using Core.Mes.Client.Comm.Tool; using Core.StlMes.Client.Qcm.model; using CoreFS.CA06; using Infragistics.Win.UltraWinEditors; using Infragistics.Win.UltraWinGrid; using System; using System.Collections; using System.Data; using System.Drawing; using System.Linq; using System.Windows.Forms; namespace Core.StlMes.Client.Qcm { public partial class FrmComBaseWellPline : FrmBase { int _jic = 1; string _PlineName = ""; string errMessage = ""; private UltraComboEditor _cmbProcess = new UltraComboEditor(); public FrmComBaseWellPline() { InitializeComponent(); ExceptionHelper.RegistException(); } private void InitUi() { _cmbProcess.Visible = false; this.Controls.Add(_cmbProcess); QcmBaseQuery.NitializeProcess(_cmbProcess, false, ob); ultraGrid1.DisplayLayout.Bands[0].Columns["PROCESS_CDOE"].EditorComponent = _cmbProcess; ultraGrid1.DisplayLayout.Bands[0].Columns["PROCESS_CDOE"].Style = Infragistics.Win.UltraWinGrid.ColumnStyle.DropDownList; } public override void ToolBar_Click(object sender, string ToolbarKey) { switch (ToolbarKey) { case "Query": DoQuery(true); break; case "Save": DoSave(); break; case "Delete": DeleteOrResume(true); break; case "Resume": DeleteOrResume(false); break; case "Invalid": DoQuery(false); break; case "Close": this.Close(); break; } } /// /// 查询 /// private void DoQuery(Boolean flag) { string validFlag = "1"; if (!flag) validFlag = "0"; DataTable dt = ServerHelper.GetData("com.steering.pss.qcm.ComBaseWellPline.getComBaseWellPlineData", new Object[] { validFlag }, this.ob); GridHelper.CopyDataToDatatable(ref dt, ref this.dataTable1, true); SetUltraGridStyle(); UltraGridColumn[] col = new UltraGridColumn[] { ultraGrid1.DisplayLayout.Bands[0].Columns["MEMO"] }; GridHelper.RefreshAndAutoSizeExceptColumns(ultraGrid1, col); UltraGridRow[] rows = GridHelper.GetRowsWithKey(ultraGrid1, new string[] { "PLINE_NAME" }, new string[] { _PlineName }); if (rows.Length > 0) { rows[0].Activate(); } foreach (UltraGridRow row in ultraGrid1.Rows) { ControlGrid1Edit(row); } _PlineName = ""; } private void DoSave() { ultraGrid1.UpdateData(); ultraGrid2.UpdateData(); UltraGridRow ugr = ultraGrid1.ActiveRow; ArrayList baseWell = new ArrayList(); ArrayList monthWell = new ArrayList(); int grid1Cnt = ultraGrid1.Rows.AsQueryable().Where("CHK = 'True'").Count(); int grid2Cnt = ultraGrid2.Rows.AsQueryable().Where("CHK = 'True'").Count(); if ((grid1Cnt + grid2Cnt) == 0) { MessageUtil.ShowWarning("请选择你要操作的记录!"); return; } ComBasePlineEntity com = GetBaseWell(ugr); if (com == null) return; if (!CheckWellData(com)) { MessageUtil.ShowWarning(errMessage); return; } _PlineName = com.PlineName; baseWell.Add(JSONFormat.Format(com)); foreach (UltraGridRow row in ultraGrid2.Rows) { if (row.Cells["CHK"].Value.ToString() == "True") { ComBaseWellMonthPlineEntity comm = GetMonthWell(row); if (comm != null) { if (!CheckMonthData(comm, row)) { MessageUtil.ShowWarning(errMessage); return; } monthWell.Add(JSONFormat.Format(comm)); } else { return; } } } if (MessageBox.Show("是否保存选择记录?", "提示", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.No) { return; } if (baseWell.Count > 0 || monthWell.Count > 0) { int count = ServerHelper.SetData("com.steering.pss.qcm.ComBaseWellPline.saveWell", new Object[] { baseWell, monthWell }, this.ob); if (count > 0) { MessageBox.Show("保存成功", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information); DoQuery(true); } } } private ComBasePlineEntity GetBaseWell(UltraGridRow row) { if (row.Cells["PLINE_NAME"].Value.ToString() == "") { MessageUtil.ShowWarning("请输入产能井描述!"); return null; } ComBasePlineEntity com = new ComBasePlineEntity(); com.PlineCode = row.Cells["PLINE_CODE"].Value.ToString(); com.PlineName = row.Cells["PLINE_NAME"].Value.ToString(); com.CreateName = this.UserInfo.GetUserName(); com.Validflag = row.Cells["VALIDFLAG"].Value.ToString(); com.UpdateName = UserInfo.GetUserName(); com.Memo = row.Cells["MEMO"].Value.ToString(); com.ProcessCode = row.GetValue("PROCESS_CODE"); com.ProcessDesc = row.GetText("PROCESS_CODE"); com.SpecName = row.GetValue("SPEC_NAME"); return com; } /// /// 检查标准数据 /// /// /// private bool CheckWellData(ComBasePlineEntity com) { if (com.Validflag.Equals("无效")) { errMessage = "无效记录不能操作"; return false; } //验证标准名称在ultraGrid1是否重复 UltraGridRow[] rows = GridHelper.GetRowsWithKey(ultraGrid1, new string[] { "PLINE_NAME", "CHK" }, new string[] { com.PlineName, "True" }); if (rows.Length > 1) { errMessage = "产能井描述:" + com.PlineName + " 重复,请重新输入"; return false; } if (com.Validflag.Equals("")) { //验证标准名称在数据表是否重复 DataTable dt = ServerHelper.GetData("com.steering.pss.qcm.ComBaseWellPline.checkComBaseWell", new Object[] { com.PlineName }, this.ob); if (dt != null && dt.Rows.Count > 0) { errMessage = "产能井描述:" + com.PlineName + " 重复,请重新输入"; return false; } } else { //验证标准名称是否重复 DataTable dt = ServerHelper.GetData("com.steering.pss.qcm.ComBaseWellPline.checkBaseWellUpdate", new Object[] { com.PlineName, com.PlineCode }, this.ob); if (dt != null && dt.Rows.Count > 0) { errMessage = "产能井描述:" + com.PlineName + " 重复,请重新输入"; return false; } } return true; } private bool CheckMonthData(ComBaseWellMonthPlineEntity com, UltraGridRow row) { ultraGrid1.UpdateData(); UltraGridRow ugr = ultraGrid1.ActiveRow; if (com.Validflag.Equals("无效")) { errMessage = "无效记录不能操作"; return false; } //验证标准名称在ultraGrid2是否重复 UltraGridRow[] rows = GridHelper.GetRowsWithKey(ultraGrid2, new string[] { "YEAR", "CHK" }, new string[] { com.Year, "True" }); if (rows.Length > 1) { errMessage = "年份:" + com.Year + " 重复,请重新输入"; return false; } if (com.Validflag.Equals("")) { //验证标准名称在数据表是否重复 DataTable dt = ServerHelper.GetData("com.steering.pss.qcm.ComBaseWellPline.checkYear", new Object[] { com.PlineCode, com.Year }, this.ob); if (dt != null && dt.Rows.Count > 0) { errMessage = "年份:" + com.Year + " 重复,请重新输入"; return false; } } else { //验证标准名称是否重复 if (com.Year != row.GetValue("YEAR_OLD")) { DataTable dt = ServerHelper.GetData("com.steering.pss.qcm.ComBaseWellPline.checkYear", new Object[] { com.PlineCode, com.Year }, this.ob); if (dt != null && dt.Rows.Count > 0) { errMessage = "年份:" + com.Year + " 重复,请重新输入"; return false; } } } //string weight = ugr.Cells["WEIGHT"].Value.ToString(); //if (weight != "") //{ // double wellNum = Convert.ToDouble(weight); // if (com.Month1 != "") // { // if (!StringUtil.IsNumber(com.Month1)) // { // errMessage = "1月份的产能值请输入数字!"; // return false; // } // if (Convert.ToDouble(com.Month1) > wellNum) // { // errMessage = "1月份的产能值不能超过最大产能值!"; // return false; // } // } // if (com.Month2 != "") // { // if (!StringUtil.IsNumber(com.Month2)) // { // errMessage = "2月份的产能值请输入数字!"; // return false; // } // if (Convert.ToDouble(com.Month2) > wellNum) // { // errMessage = "2月份的产能值不能超过最大产能值!"; // return false; // } // } // if (com.Month3 != "") // { // if (!StringUtil.IsNumber(com.Month3)) // { // errMessage = "3月份的产能值请输入数字!"; // return false; // } // if (Convert.ToDouble(com.Month3) > wellNum) // { // errMessage = "3月份的产能值不能超过最大产能值!"; // return false; // } // } // if (com.Month4 != "") // { // if (!StringUtil.IsNumber(com.Month4)) // { // errMessage = "4月份的产能值请输入数字!"; // return false; // } // if (Convert.ToDouble(com.Month4) > wellNum) // { // errMessage = "4月份的产能值不能超过最大产能值!"; // return false; // } // } // if (com.Month5 != "") // { // if (!StringUtil.IsNumber(com.Month5)) // { // errMessage = "5月份的产能值请输入数字!"; // return false; // } // if (Convert.ToDouble(com.Month5) > wellNum) // { // errMessage = "5月份的产能值不能超过最大产能值!"; // return false; // } // } // if (com.Month6 != "") // { // if (!StringUtil.IsNumber(com.Month6)) // { // errMessage = "6月份的产能值请输入数字!"; // return false; // } // if (Convert.ToDouble(com.Month6) > wellNum) // { // errMessage = "6月份的产能值不能超过最大产能值!"; // return false; // } // } // if (com.Month7 != "") // { // if (!StringUtil.IsNumber(com.Month7)) // { // errMessage = "7月份的产能值请输入数字!"; // return false; // } // if (Convert.ToDouble(com.Month7) > wellNum) // { // errMessage = "7月份的产能值不能超过最大产能值!"; // return false; // } // } // if (com.Month8 != "") // { // if (!StringUtil.IsNumber(com.Month8)) // { // errMessage = "8月份的产能值请输入数字!"; // return false; // } // if (Convert.ToDouble(com.Month8) > wellNum) // { // errMessage = "8月份的产能值不能超过最大产能值!"; // return false; // } // } // if (com.Month9 != "") // { // if (!StringUtil.IsNumber(com.Month9)) // { // errMessage = "9月份的产能值请输入数字!"; // return false; // } // if (Convert.ToDouble(com.Month9) > wellNum) // { // errMessage = "9月份的产能值不能超过最大产能值!"; // return false; // } // } // if (com.Month10 != "") // { // if (!StringUtil.IsNumber(com.Month10)) // { // errMessage = "10月份的产能值请输入数字!"; // return false; // } // if (Convert.ToDouble(com.Month10) > wellNum) // { // errMessage = "10月份的产能值不能超过最大产能值!"; // return false; // } // } // if (com.Month11 != "") // { // if (!StringUtil.IsNumber(com.Month11)) // { // errMessage = "11月份的产能值请输入数字!"; // return false; // } // if (Convert.ToDouble(com.Month11) > wellNum) // { // errMessage = "11月份的产能值不能超过最大产能值!"; // return false; // } // } // if (com.Month12 != "") // { // if (!StringUtil.IsNumber(com.Month12)) // { // errMessage = "12月份的产能值请输入数字!"; // return false; // } // if (Convert.ToDouble(com.Month12) > wellNum) // { // errMessage = "12月份的产能值不能超过最大产能值!"; // return false; // } // } //} //else //{ // errMessage = "请维护产能井的最大产能!"; // return false; //} return true; } private ComBaseWellMonthPlineEntity GetMonthWell(UltraGridRow row) { ComBaseWellMonthPlineEntity com = new ComBaseWellMonthPlineEntity(); if (row.Cells["YEAR"].Value.ToString() == "") { MessageUtil.ShowWarning("请选择年份!"); return null; } com.PlineCode = row.Cells["PLINE_CODE"].Value.ToString(); com.PlineName = row.Cells["PLINE_NAME"].Value.ToString(); com.Year = row.Cells["YEAR"].Value.ToString(); com.Month1 = row.Cells["MONTH_1"].Value.ToString(); com.Month2 = row.Cells["MONTH_2"].Value.ToString(); com.Month3 = row.Cells["MONTH_3"].Value.ToString(); com.Month4 = row.Cells["MONTH_4"].Value.ToString(); com.Month5 = row.Cells["MONTH_5"].Value.ToString(); com.Month6 = row.Cells["MONTH_6"].Value.ToString(); com.Month7 = row.Cells["MONTH_7"].Value.ToString(); com.Month8 = row.Cells["MONTH_8"].Value.ToString(); com.Month9 = row.Cells["MONTH_9"].Value.ToString(); com.Month10 = row.Cells["MONTH_10"].Value.ToString(); com.Month11 = row.Cells["MONTH_11"].Value.ToString(); com.Month12 = row.Cells["MONTH_12"].Value.ToString(); com.CreateName = UserInfo.GetUserName(); com.UpdateName = UserInfo.GetUserName(); com.Validflag = row.GetValue("VALIDFLAG"); com.Memo = row.GetValue("MEMO"); com.YearOld = row.GetValue("YEAR_OLD"); com.HaltHour1 = row.Cells["HALT_HOUR_1"].Value.ToString(); com.HaltHour2 = row.Cells["HALT_HOUR_2"].Value.ToString(); com.HaltHour3 = row.Cells["HALT_HOUR_3"].Value.ToString(); com.HaltHour4 = row.Cells["HALT_HOUR_4"].Value.ToString(); com.HaltHour5 = row.Cells["HALT_HOUR_5"].Value.ToString(); com.HaltHour6 = row.Cells["HALT_HOUR_6"].Value.ToString(); com.HaltHour7 = row.Cells["HALT_HOUR_7"].Value.ToString(); com.HaltHour8 = row.Cells["HALT_HOUR_8"].Value.ToString(); com.HaltHour9 = row.Cells["HALT_HOUR_9"].Value.ToString(); com.HaltHour10 = row.Cells["HALT_HOUR_10"].Value.ToString(); com.HaltHour11 = row.Cells["HALT_HOUR_11"].Value.ToString(); com.HaltHour12 = row.Cells["HALT_HOUR_12"].Value.ToString(); return com; } /// /// 设置ultraGrid1行颜色 /// private void SetUltraGridStyle() { for (int i = 0; i < ultraGrid1.Rows.Count; i++) { Infragistics.Win.UltraWinGrid.UltraGridRow row = ultraGrid1.Rows[i]; if (!row.Cells["VALIDFLAG"].Value.ToString().Equals("有效")) { row.Appearance.ForeColor = Color.Red; } else { row.Appearance.ForeColor = Color.Black; } } } private void ultraGrid1_AfterRowInsert(object sender, RowEventArgs e) { ultraGrid1.UpdateData(); UltraGridRow ugr = ultraGrid1.ActiveRow; DataRow[] dr = dataTable1.Select("", "PLINE_CODE DESC"); string jic = ""; string jicStr = ""; if (dr.Length > 0) { jic = dr[0]["PLINE_CODE"].ToString(); } if (!jic.Equals("")) { int number = int.Parse(jic.Substring(1, 3)); jicStr = "J" + string.Format("{0:000}", number + 1); _jic = number + 1; } else { jicStr = "J" + string.Format("{0:000}", _jic); _jic = _jic + 1; } //赋值理化索引号 ugr.Cells["PLINE_CODE"].Value = jicStr; ControlGrid1Edit(e.Row); } private void ultraGrid1_AfterRowActivate(object sender, EventArgs e) { ultraGrid1.UpdateData(); UltraGridRow ugr = ultraGrid1.ActiveRow; for (int i = 0; i < ultraGrid1.Rows.Count; i++) { if (!ultraGrid1.Rows[i].Equals(ugr)) { ultraGrid1.Rows[i].Cells["CHK"].Value = false; } } string PlineCode = ugr.Cells["PLINE_CODE"].Value.ToString(); QueryMonthWell(PlineCode); if (ugr == null || ugr.GetValue("VALIDFLAG") != "有效") { ultraGrid2.Enabled = false; dataTable2.Clear(); return; } else ultraGrid2.Enabled = true; for (int i = 0; i < ultraGrid2.Rows.Count; i++) { Infragistics.Win.UltraWinGrid.UltraGridRow row = ultraGrid2.Rows[i]; if (!row.Cells["VALIDFLAG"].Value.ToString().Equals("有效")) { row.Appearance.ForeColor = Color.Red; } else { row.Appearance.ForeColor = Color.Black; } } } private void QueryMonthWell(string PlineCode) { DataTable dt = ServerHelper.GetData("com.steering.pss.qcm.ComBaseWellPline.getMonthWell", new Object[] { PlineCode }, this.ob); GridHelper.CopyDataToDatatable(ref dt, ref dataTable2, true); //foreach (UltraGridRow row in ultraGrid2.Rows) //{ // for (int i = 0; i < row.Cells.Count; i++) // { // if (!row.Cells[i].Column.Key.Equals("CHK")) // row.Cells[i].Activation = Activation.ActivateOnly; // } //} } private void ultraGrid2_AfterRowInsert(object sender, RowEventArgs e) { UltraGridRow ugr1 = ultraGrid1.ActiveRow; UltraGridRow ugr2 = ultraGrid2.ActiveRow; ugr2.Cells["PLINE_CODE"].Value = ugr1.Cells["PLINE_CODE"].Value.ToString(); ugr2.Cells["PLINE_NAME"].Value = ugr1.Cells["PLINE_NAME"].Value.ToString(); //增加行如果没有勾选则不可编辑 if (!Convert.ToBoolean(ugr2.Cells["CHK"].Value)) { for (int i = 0; i < ugr2.Cells.Count; i++) { if (!ugr2.Cells[i].Column.Key.Equals("CHK")) ugr2.Cells[i].Activation = Activation.ActivateOnly; } } } private void ultraGrid2_CellChange(object sender, CellEventArgs e) { ultraGrid2.UpdateData(); if (e.Cell.Column.Key.Equals("CHK")) { if (e.Cell.Value.ToString() == "True") { CellsCollection cells = e.Cell.Row.Cells; for (int i = 0; i < cells.Count; i++) { if (!cells[i].Column.Key.Equals("CHK")) { e.Cell.Row.Cells[i].Activation = Activation.AllowEdit; } } } else { CellsCollection cells = e.Cell.Row.Cells; for (int i = 0; i < cells.Count; i++) { if (!cells[i].Column.Key.Equals("CHK")) { e.Cell.Row.Cells[i].Activation = Activation.ActivateOnly; } } } } } private void InitYear() { UltraComboEditor uce = new UltraComboEditor(); DataTable dt = new DataTable(); dt.Columns.Add("YEAR", Type.GetType("System.Int32")); for (int i = 2000; i <= 2100; i++) dt.Rows.Add(new object[] { i }); uce.DataSource = dt; uce.ValueMember = "YEAR"; uce.DisplayMember = "YEAR"; this.Controls.Add(uce); uce.Visible = false; ultraGrid2.DisplayLayout.Bands[0].Columns["YEAR"].EditorComponent = uce; ultraGrid2.DisplayLayout.Bands[0].Columns["YEAR"].Style = Infragistics.Win.UltraWinGrid.ColumnStyle.DropDownList; } private void FrmComBaseWellPline_Load(object sender, EventArgs e) { InitYear(); ultraGrid2.Enabled = false; //InitUi(); } private int IsSelected() { int i = 0; foreach (UltraGridRow row in ultraGrid1.Rows) { if (row.Cells["CHK"].Value.ToString() == "True") i++; } foreach (UltraGridRow row in ultraGrid2.Rows) { if (row.Cells["CHK"].Value.ToString() == "True") i++; } if (i > 0) return 0; else return -1; } /// /// 检验作废或者恢复 /// /// 有效标识 /// /// private bool CheckDeleteOrResume(string valid, bool flag) { if (valid.Equals("")) { errMessage = "记录未保存,不能" + (flag ? "作废" : "恢复"); return false; } if (flag) { if (valid.Equals("无效")) { errMessage = "无效记录不能作废"; return false; } } else { if (valid.Equals("有效")) { errMessage = "有效记录不能恢复"; return false; } } return true; } private void DeleteOrResume(bool flag) { ultraGrid1.UpdateData(); ultraGrid2.UpdateData(); if (IsSelected() == -1) { MessageUtil.ShowWarning("请选择你要操作的记录!"); return; } UltraGridRow[] rows = GridHelper.GetRowsWithKey(ultraGrid1, new string[] { "CHK" }, new string[] { "True" }); ArrayList wellData = new ArrayList(); if (rows.Length > 0) { foreach (UltraGridRow ugr in rows) { ComBasePlineEntity com = GetBaseWell(ugr); com.DeleteName = UserInfo.GetUserName(); wellData.Add(JSONFormat.Format(com)); if (!CheckDeleteOrResume(com.Validflag, flag)) { MessageBox.Show(errMessage, "提示", MessageBoxButtons.OK, MessageBoxIcon.Information); return; } } } //产能井月量 ArrayList monthData = new ArrayList(); rows = GridHelper.GetRowsWithKey(ultraGrid2, new string[] { "CHK" }, new string[] { "True" }); if (rows.Length > 0) { foreach (UltraGridRow ugr in rows) { ComBaseWellMonthPlineEntity com = GetMonthWell(ugr); monthData.Add(JSONFormat.Format(com)); if (!CheckDeleteOrResume(com.Validflag, flag)) { MessageBox.Show(errMessage, "提示", MessageBoxButtons.OK, MessageBoxIcon.Information); return; } if (flag) { //预留判断是否被引用 } _PlineName = com.PlineName; } } if (MessageBox.Show("是否" + (flag ? "作废" : "恢复") + "选择记录", "提示", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.No) { return; } if (monthData.Count > 0 || wellData.Count > 0) { int count = ServerHelper.SetData("com.steering.pss.qcm.ComBaseWellPline.deleteOrResume", new Object[] { wellData,monthData, flag }, this.ob); if (count > 0) { MessageBox.Show((flag ? "作废" : "恢复") + "成功!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Question); DoQuery(true); } } } private void ultraGrid1_CellChange(object sender, CellEventArgs e) { ultraGrid1.UpdateData(); if (e.Cell.Column.Key == "CHK") { ControlGrid1Edit(e.Cell.Row); } } private void ControlGrid1Edit(UltraGridRow row) { //if (row.GetValue("CHK") == "True") //{ // row.Cells["PLINE_NAME"].Activation = Activation.AllowEdit; // row.Cells["PROCESS_CODE"].Activation = Activation.AllowEdit; // row.Cells["MEMO"].Activation = Activation.AllowEdit; //} //else //{ // row.Cells["PLINE_NAME"].Activation = Activation.ActivateOnly; // row.Cells["PROCESS_CDOE"].Activation = Activation.ActivateOnly; // row.Cells["MEMO"].Activation = Activation.ActivateOnly; //} } } }