using System; using System.Collections.Generic; using System.Collections; using System.ComponentModel; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms; using CoreFS.CA06; using Core.StlMes.Client.LgCommon; namespace Core.StlMes.Client.LgIntegrationQuery { public partial class FrmStoresMateriel : Core.StlMes.Client.LgCommon.frmStyleBase { //string strMess = ""; //string MaterielCode = ""; //string MaterielName = ""; //string MaterielforShort = ""; //string MaterielType = ""; //string MaterielUnits=""; //string JmType = ""; public ArrayList beforeMcode = new ArrayList(); //改变前的物料编码 public ArrayList beforeMtype = new ArrayList(); //改变前的物料类型 public ArrayList beforeMname = new ArrayList(); //改变前的物料类型 public ArrayList afterMcode = new ArrayList(); //改变后的物料物料编码 public DataSet allMater; public FrmStoresMateriel() { InitializeComponent(); } private void FrmStoresMateriel_Load(object sender, EventArgs e) { QueryData(); // SetColumnMode1(); SetColumnMode2(); SetColumnMode3(); SetColumnMode4(); } private void QueryData() { dataTable1.Clear(); GetAllDataSource(getEnableSqlWhere()); GetDataSource(getMaterSqlWhere()); SetExistMaintenanceColor(); } /// /// 加料过程类型 /// private void SetColumnMode1() { DataTable dt = new DataTable(); dt.TableName = "JIALIAO"; DataColumn dc = new DataColumn("BCBM", Type.GetType("System.String")); dt.Columns.Add(dc); dc = new DataColumn("BCNA", Type.GetType("System.String")); dt.Columns.Add(dc); DataRow dr = dt.NewRow(); dr["BCBM"] = "YLGC"; dr["BCNA"] = "冶炼过程添加料"; dt.Rows.Add(dr); dr = dt.NewRow(); dr["BCBM"] = "CGGC"; dr["BCNA"] = "出钢过程添加料"; dt.Rows.Add(dr); ClsControlPack.SetGridDropDownList("JMTYPE", "Table1", "加料过程类型", 90, ultraGrid1, dt, "BCBM", "BCNA"); ClsControlPack.SetGridDropDownList("JMTYPE", "Table2", "加料过程类型", 90, ultraGrid2, dt, "BCBM", "BCNA"); } /// /// 物料单位 /// private void SetColumnMode2() { DataTable dt = new DataTable(); dt.TableName = "DANWEI"; DataColumn dc = new DataColumn("BCBM", Type.GetType("System.String")); dt.Columns.Add(dc); dc = new DataColumn("BCNA", Type.GetType("System.String")); dt.Columns.Add(dc); DataRow dr = dt.NewRow(); dr["BCBM"] = "KG"; dr["BCNA"] = "千克"; dt.Rows.Add(dr); dr = dt.NewRow(); dr["BCBM"] = "TON"; dr["BCNA"] = "吨"; dt.Rows.Add(dr); dr = dt.NewRow(); dr["BCBM"] = "D"; dr["BCNA"] = "袋"; dt.Rows.Add(dr); dr = dt.NewRow(); dr["BCBM"] = "M"; dr["BCNA"] = "米"; dt.Rows.Add(dr); dr = dt.NewRow(); dr["BCBM"] = "KM3"; dr["BCNA"] = "立方米"; dt.Rows.Add(dr); dr = dt.NewRow(); dr["BCBM"] = "KWH"; dr["BCNA"] = "千瓦时"; dt.Rows.Add(dr); ClsControlPack.SetGridDropDownList("MATERIELUNITS", "Table1", "物料单位", 90, ultraGrid1, dt, "BCBM", "BCNA"); ClsControlPack.SetGridDropDownList("MATERIELUNITS", "Table2", "物料单位", 90, ultraGrid2, dt, "BCBM", "BCNA"); } /// /// 物料类型名称 /// private void SetColumnMode3() { DataTable dt = new DataTable(); dt.TableName = "WLLX"; DataColumn dc = new DataColumn("BCBM", Type.GetType("System.String")); dt.Columns.Add(dc); dc = new DataColumn("BCNA", Type.GetType("System.String")); dt.Columns.Add(dc); DataRow dr = dt.NewRow(); dr["BCBM"] = "HJ"; dr["BCNA"] = "合金"; dt.Rows.Add(dr); dr = dt.NewRow(); dr["BCBM"] = "FL"; dr["BCNA"] = "辅料"; dt.Rows.Add(dr); dr = dt.NewRow(); dr["BCBM"] = "WS"; dr["BCNA"] = "喂线"; dt.Rows.Add(dr); dr = dt.NewRow(); dr["BCBM"] = "BH"; dr["BCNA"] = "保护渣"; dt.Rows.Add(dr); dr = dt.NewRow(); dr["BCBM"] = "GT"; dr["BCNA"] = "钢铁料"; dt.Rows.Add(dr); ClsControlPack.SetGridDropDownList("MATERIELTYPE", "Table1", "物料类型名称", 90, ultraGrid1, dt, "BCBM", "BCNA"); ClsControlPack.SetGridDropDownList("MATERIELTYPE", "Table2", "物料类型名称", 90, ultraGrid2, dt, "BCBM", "BCNA"); } /// /// 消耗类型 /// private void SetColumnMode4() { DataTable dt = new DataTable(); dt.TableName = "XHLX"; DataColumn dc = new DataColumn("BCBM", Type.GetType("System.String")); dt.Columns.Add(dc); dc = new DataColumn("BCNA", Type.GetType("System.String")); dt.Columns.Add(dc); DataRow dr = dt.NewRow(); dr["BCBM"] = "0"; dr["BCNA"] = "默认"; dt.Rows.Add(dr); dr = dt.NewRow(); dr["BCBM"] = "1"; dr["BCNA"] = "实际消耗"; dt.Rows.Add(dr); dr = dt.NewRow(); dr["BCBM"] = "2"; dr["BCNA"] = "计量点"; dt.Rows.Add(dr); ClsControlPack.SetGridDropDownList("CONSUMPTIONTYPE", "Table1", "消耗类型", 90, ultraGrid1, dt, "BCBM", "BCNA"); } // 保存物料信息 /// /// 保存物料信息 /// private void SaveData() { try { if (ultraGrid2.Rows.Count == 0) { MessageBox.Show("没有可选的物料!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Asterisk); return; } ArrayList listMcode = new ArrayList(); //物料编码 ArrayList listMtype = new ArrayList(); //物料类型 ArrayList listMname = new ArrayList(); //物料名称 ArrayList listMunits = new ArrayList(); //物料单位 string flag = "0"; string mtype = getMaterType(); bool blValue = false; if (ultraGrid2.Rows.Count > 0) { ultraGrid2.UpdateData(); for (int i = 0; i < ultraGrid2.Rows.Count; i++) { if (Convert.ToBoolean(ultraGrid2.Rows[i].Cells["Flag"].Value) == true) { //if (ultraGrid2.Rows[i].Cells["MATERIELTYPE"].Value.ToString().Trim() == "" || ultraGrid2.Rows[i].Cells["MATERIELTYPE"].Value.ToString().Trim() == mtype) //{ listMcode.Add(ultraGrid2.Rows[i].Cells["MATERIELCODE"].Value.ToString().Trim()); listMtype.Add(mtype); listMname.Add(ultraGrid2.Rows[i].Cells["MATERIELNAME"].Value.ToString().Trim()); listMunits.Add(ultraGrid2.Rows[i].Cells["MATERIELUNITS"].Value.ToString().Trim()); blValue = true; //} } } if (blValue == false) { listMcode = beforeMcode; listMtype = beforeMtype; listMname = beforeMname; flag = "1"; } //定义一个ArrayList集合存储变量[参数]值 string strErr = ""; ArrayList sArgs = new ArrayList(); sArgs.Add(listMcode); sArgs.Add(listMtype); sArgs.Add(listMname); sArgs.Add(listMunits); sArgs.Add(flag); ClsDataAccessPack.DoProcedure("frmStoresMater_Add.select", sArgs, out strErr, ob); if (strErr == "") { QueryData(); MessageBox.Show("物料保存成功!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Asterisk); } else { MessageBox.Show("物料保存失败!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Asterisk); } } } catch (System.Exception ex) { Console.WriteLine(ex.ToString()); } } // 获取SAP物料信息 /// /// 获取SAP物料信息 /// private void GetAllDataSource(string sqlWhere) { try { string strErr = ""; ArrayList codelist = new ArrayList(); //定义一个ArrayList集合存储变量[参数]值 string type = getMaterType(); ArrayList arry = new ArrayList(); ArrayList sqlList = new ArrayList(); arry.Add("FrmSapMateriel.Query"); CoreClientParam ccp = new CoreClientParam(); DataTable dt = new DataTable(); ccp.ServerName = "Core.LgMes.Server.Common.ComDBQuery"; ccp.MethodName = "doQuery"; ccp.ServerParams = new object[] { arry, sqlList }; ccp.SourceDataTable = dt; this.ExecuteSortResultByQueryToDataTable(ccp, CoreInvokeType.Internal); DataSet ds = new DataSet(); ds.Tables.Add(dt.Copy()); dataTable2.Clear(); if (strErr == "" && ds != null) { if (radEnable.Checked) { string mcode = ""; GetDataSource(""); for (int i = 0; i < ds.Tables[0].Rows.Count; i++) { mcode=""; for (int j = 0; j < allMater.Tables[0].Rows.Count; j++) { if (ds.Tables[0].Rows[i]["MaterielCode"].ToString() == allMater.Tables[0].Rows[j]["MATERIELCODE"].ToString() && allMater.Tables[0].Rows[j]["MATERIELTYPE"].ToString() != type) { mcode = ds.Tables[0].Rows[i]["MaterielCode"].ToString(); } } if (mcode == "") { DataRow dr = dataTable2.NewRow(); dr["Flag"] = "FALSE"; dr["MaterielCode"] = ds.Tables[0].Rows[i]["MaterielCode"]; dr["MaterielName"] = ds.Tables[0].Rows[i]["MaterielName"]; dr["MaterielType"] = ds.Tables[0].Rows[i]["MaterielType"]; dr["MaterielUnits"] = ds.Tables[0].Rows[i]["MaterielUnits"]; dataTable2.Rows.Add(dr); } } } else { for (int i = 0; i < ds.Tables[0].Rows.Count; i++) { DataRow dr = dataTable2.NewRow(); dr["Flag"] = "FALSE"; dr["MaterielCode"] = ds.Tables[0].Rows[i]["MaterielCode"]; dr["MaterielName"] = ds.Tables[0].Rows[i]["MaterielName"]; dr["MaterielType"] = ds.Tables[0].Rows[i]["MaterielType"]; dr["MaterielUnits"] = ds.Tables[0].Rows[i]["MaterielUnits"]; dataTable2.Rows.Add(dr); } } } ultraGrid2.UpdateData(); dataTable2.AcceptChanges(); } catch { } } // 获取类型物料信息 /// /// 获取类型物料信息 /// private void GetDataSource(string sqlWhere) { try { string strErr = ""; //定义一个ArrayList集合存储变量[参数]值 ArrayList arry = new ArrayList(); ArrayList sqlList = new ArrayList(); arry.Add("FrmStoresMateriel.Query"); sqlList.Add(sqlWhere); CoreClientParam ccp = new CoreClientParam(); DataTable dt = new DataTable(); ccp.ServerName = "Core.LgMes.Server.Common.ComDBQuery"; ccp.MethodName = "doQuery"; ccp.ServerParams = new object[] { arry, sqlList }; ccp.SourceDataTable = dt; this.ExecuteSortResultByQueryToDataTable(ccp, CoreInvokeType.Internal); if (sqlWhere == "") { allMater=new DataSet(); allMater.Tables.Add(dt.Copy()); return; } DataSet ds = new DataSet(); ds.Tables.Add(dt.Copy()); dataTable1.Clear(); if (strErr == "" && ds != null) { int i; for (i = 0; i < ds.Tables[0].Rows.Count; i++) { DataRow dr = dataTable1.NewRow(); dr["MaterielCode"] = ds.Tables[0].Rows[i]["MaterielCode"]; dr["MaterielName"] = ds.Tables[0].Rows[i]["MaterielName"]; dr["MaterielforShort"] = ds.Tables[0].Rows[i]["MaterielforShort"]; dr["MaterielType"] = ds.Tables[0].Rows[i]["MaterielType"]; dr["MaterielUnits"] = ds.Tables[0].Rows[i]["MaterielUnits"]; dr["CONSUMPTIONTYPE"] = ds.Tables[0].Rows[i]["CONSUMPTIONTYPE"]; dr["JmType"] = ds.Tables[0].Rows[i]["JmType"]; dataTable1.Rows.Add(dr); } ultraGrid1.UpdateData(); dataTable1.AcceptChanges(); } } catch { } } // 保存消耗类型 /// /// 保存消耗类型 /// private void SaveType() { try { ArrayList listMcode = new ArrayList(); //物料编码 ArrayList listMtype = new ArrayList(); //物料消耗类型 ArrayList listNameShort = new ArrayList(); //物料简称 if (ultraGrid1.Rows.Count == 0) { MessageBox.Show("该类型没有配置物料信息!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Asterisk); return; } ultraGrid1.UpdateData(); for (int i = 0; i < ultraGrid1.Rows.Count; i++) { listMcode.Add(ultraGrid1.Rows[i].Cells["MATERIELCODE"].Value.ToString().Trim()); listMtype.Add(ultraGrid1.Rows[i].Cells["CONSUMPTIONTYPE"].Value.ToString().Trim()); if (ultraGrid1.Rows[i].Cells["MATERIELFORSHORT"].Value.ToString().Trim() == "") { MessageBox.Show("物料编码为【" + ultraGrid1.Rows[i].Cells["MATERIELCODE"].Value.ToString().Trim() + "】的物料简称不能为空!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Asterisk); } else { listNameShort.Add(ultraGrid1.Rows[i].Cells["MATERIELFORSHORT"].Value.ToString().Trim()); } } string strErr = ""; ArrayList sArgs = new ArrayList(); sArgs.Add(listMcode); sArgs.Add(listMtype); sArgs.Add(listNameShort); ClsDataAccessPack.DoProcedure("frmConsumptionType_Update", sArgs, out strErr, ob); if (strErr == "") { QueryData(); MessageBox.Show("物料消耗类型保存成功!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Asterisk); } else { MessageBox.Show("物料消耗类型保存失败!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Asterisk); } } catch { } } // 获得物料类型 /// /// 获得物料类型 /// private string getMaterType() { try { string type = ""; string sqlWhere = ""; if (this.radHJ.Checked) { type = radHJ.Tag.ToString(); } else if (this.radFL.Checked) { type = radFL.Tag.ToString(); } else if (this.radWS.Checked) { type = radWS.Tag.ToString(); } else if (this.radBHZ.Checked) { type = radBHZ.Tag.ToString(); } else if (this.radGT.Checked) { type = radGT.Tag.ToString(); } return type; } catch { return ""; } } // 获得物料类型查询条件 /// /// 获得物料类型查询条件 /// private string getMaterSqlWhere() { string mater_type = getMaterType(); if (mater_type == "") return ""; string sqlWhere = ""; sqlWhere += " and MATERIELTYPE='" + mater_type + "'"; return sqlWhere; } // 获得可选的物料类型 /// /// 获得可选的物料类型 /// private string getEnableType() { string type = ""; if (this.radEnable.Checked) { type = radEnable.Tag.ToString(); } else if (this.radAll.Checked) { type = radAll.Tag.ToString(); } return type; } // 获得可选物料查询条件 /// /// 获得可选物料查询条件 /// private string getEnableSqlWhere() { string enable_type = getEnableType(); string mater_type = getMaterType(); string sqlWhere = ""; if (enable_type == "ENA") { sqlWhere += " and MATERIELTYPE='" + mater_type + "' or MATERIELTYPE is null"; } return sqlWhere; } // 标识已经配置的物料 /// /// 标识已经配置的物料 /// private void SetExistMaintenanceColor() { try { string type = getMaterType(); string mater_type = ""; beforeMcode.Clear(); beforeMtype.Clear(); beforeMname.Clear(); afterMcode.Clear(); GetDataSource(""); for (int i = 0; i < ultraGrid2.Rows.Count; i++) { for (int j = 0; j < ultraGrid1.Rows.Count; j++) { if (ultraGrid1.Rows[j].Cells["MATERIELCODE"].Value.ToString() == ultraGrid2.Rows[i].Cells["MATERIELCODE"].Value.ToString()) { beforeMcode.Add(ultraGrid2.Rows[i].Cells["MATERIELCODE"].Value.ToString()); beforeMtype.Add(type); beforeMname.Add(ultraGrid2.Rows[i].Cells["MATERIELNAME"].Value.ToString()); afterMcode.Add(ultraGrid2.Rows[i].Cells["MATERIELCODE"].Value.ToString()); ultraGrid2.Rows[i].Cells["Flag"].Value = "TRUE"; ultraGrid2.DisplayLayout.Rows[i].Cells["Flag"].Value = "TRUE"; ultraGrid2.DisplayLayout.Rows[i].CellAppearance.ForeColor = Color.Red; ultraGrid2.Rows[i].Cells["MATERIELTYPE"].Value = ultraGrid1.Rows[j].Cells["MATERIELTYPE"].Value.ToString(); } } if (radAll.Checked) { if (allMater.Tables[0].Rows.Count > 0) { for (int m = 0; m < allMater.Tables[0].Rows.Count; m++) { if (ultraGrid2.Rows[i].Cells["MATERIELCODE"].Value.ToString() == allMater.Tables[0].Rows[m]["MATERIELCODE"].ToString() && allMater.Tables[0].Rows[m]["MATERIELTYPE"].ToString() != type) { ultraGrid2.Rows[i].Cells["MATERIELTYPE"].Value = allMater.Tables[0].Rows[m]["MATERIELTYPE"].ToString(); ultraGrid2.DisplayLayout.Rows[i].Cells["Flag"].Activation = Infragistics.Win.UltraWinGrid.Activation.NoEdit; ultraGrid2.DisplayLayout.Rows[i].Appearance.BackColor = Color.PaleGoldenrod; } } } } } } catch { } } // 比较两个ArrayList是否值相等 /// /// 比较两个ArrayList是否值相等 /// /// 值型一维数组1 /// 值型一维数组2 /// 比较结果,相等则true,否则false public static bool IsEquals(ArrayList array1, ArrayList array2) { //比较类型是否一样 if (!Object.ReferenceEquals(array1.GetType(), array2.GetType())) { return false; } //比较长度是否一样 if (array1.Count != array2.Count) { return false; } //比较成员是否对应相等 for (int i = 0; i < array1.Count; i++) { string v1 = array1[i].ToString().Trim(); string v2 = array2[i].ToString().Trim(); if (v1 != v2) { return false; } } return true; } /// /// 功能按钮 /// public override void ToolBar_Click(object sender, string ToolbarKey) { switch (ToolbarKey) { case "Query": //if (!IsEquals(beforeMcode, afterMcode)) //{ // if (MessageBox.Show("物料配置已修改,还未保存!\n保存点击【是】,放弃点击【否】", "提示", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes) // { // SaveData(); // } //} QueryData(); break; case "Save": ultraGrid2.UpdateData(); SaveData(); break; case "SaveType": SaveType(); break; case "Exit": this.Close(); break; default: break; } } private void ultraToolbarsManager1_ToolClick(object sender, Infragistics.Win.UltraWinToolbars.ToolClickEventArgs e) { switch (e.Tool.Key) { default: break; } } private void radEnable_CheckedChanged(object sender, EventArgs e) { try { if (((RadioButton)sender).Checked) { //if (!IsEquals(beforeMcode, afterMcode)) //{ // if (MessageBox.Show("物料配置已修改,还未保存!\n保存点击【是】,放弃点击【否】", "提示", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes) // { // SaveData(); // } //} QueryData(); } } catch { } } private void radMater_CheckedChanged(object sender, EventArgs e) { try { if (((RadioButton)sender).Checked) { //if (!IsEquals(beforeMcode, afterMcode)) //{ // if (MessageBox.Show("物料配置已修改,还未保存!\n保存点击【是】,放弃点击【否】", "提示", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes) // { // SaveData(); // } //} QueryData(); } } catch { } } private void ultraGrid2_AfterCellUpdate(object sender, Infragistics.Win.UltraWinGrid.CellEventArgs e) { try { if (ultraGrid2.Rows.Count == 0) return; else { ultraGrid2.UpdateData(); if (Convert.ToBoolean(ultraGrid2.ActiveRow.Cells["Flag"].Value) == true) { if (!afterMcode.Contains(ultraGrid2.ActiveRow.Cells["MATERIELCODE"].Value.ToString())) { afterMcode.Add(ultraGrid2.ActiveRow.Cells["MATERIELCODE"].Value.ToString()); } ultraGrid2.ActiveRow.CellAppearance.ForeColor = Color.Red; } else { if (afterMcode.Contains(ultraGrid2.ActiveRow.Cells["MATERIELCODE"].Value.ToString())) { afterMcode.Remove(ultraGrid2.ActiveRow.Cells["MATERIELCODE"].Value.ToString()); } ultraGrid2.ActiveRow.CellAppearance.ForeColor = Color.Black; } } } catch { } } private void FrmStoresMateriel_FormClosing(object sender, FormClosingEventArgs e) { try { //if (((RadioButton)sender).Checked) //{ // if (!IsEquals(beforeMcode, afterMcode)) // { // if (MessageBox.Show("物料配置已修改,还未保存!\n保存点击【是】,放弃点击【否】", "提示", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes) // { // SaveData(); // } // } //} } catch { } } } }