using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; using CoreFS.CA03; using CoreFS.CA04; using CoreFS.CA06; using System.Collections; using Infragistics.Win.UltraWinGrid; using Core.Mes.Client.Comm.Server; using Core.Mes.Client.Comm.Control; using Core.Mes.Client.Comm.Tool; namespace Core.StlMes.Client.SaleOrder { public partial class dlgTransitPlan : FrmBase { public dlgTransitPlan() { InitializeComponent(); } public dlgTransitPlan(OpeBase ob) { InitializeComponent(); this.ob = ob; } /// /// 管理卡号 /// private string manageNo = ""; public string ManageNo { get { return manageNo; } set { manageNo = value; } } /// /// 合同号 /// private string orderNo = ""; public string OrderNo { get { return orderNo; } set { orderNo = value; } } /// /// 合同行号 /// private string orderSeq = ""; public string OrderSeq { get { return orderSeq; } set { orderSeq = value; } } /// /// 交货编码 /// private string deliveryNo = ""; public string DeliveryNo { get { return deliveryNo; } set { deliveryNo = value; } } /// /// DataSet,如果有数据,则需要将数据查询出来。 /// private DataTable transitTable; public DataTable TransitTable { get { return transitTable; } set { transitTable = value; } } private void dlgTransitPlan_Load(object sender, EventArgs e) { //运输方式 bindYsfs(); //到站 bindCmbStation(); //专用线 bindCmbCollege(); //港口、码头 bindCmbWater(); //承运单位 bindCydw(); cmbCydw.SelectedIndex = 0; doQuery(); //除选择外,全部单元格不允许编辑。 for (int i = 0; i < ultraGrid2.Rows.Count; i++) { for (int j = 0; j < ultraGrid2.Rows[i].Cells.Count; j++) { if (!ultraGrid2.Rows[i].Cells[j].Column.Key.Equals("CHK")) { ultraGrid2.Rows[i].Cells[j].Activation = Infragistics.Win.UltraWinGrid.Activation.NoEdit; } } } } /// /// 承运单位 /// private void bindCydw() { DataTable dt = ServerHelper.GetData("com.steering.pss.sale.order.CoreTransitLine.GetCydw", null, this.ob); //起始地数据源绑定 cmbCydw.DataSource = dt; cmbCydw.DisplayMember = "BASENAME"; cmbCydw.ValueMember = "BASECODE"; cmbCydw.DataBind(); } /// /// 港口、码头 /// private void bindCmbWater() { //港口码头 DataTable dt = ServerHelper.GetData("com.steering.pss.sale.order.CoreTransitLine.GetPort", null, this.ob); ComboBoxHelper.FillUlcmItemsAddEmpty(cmbWater, dt); cmbWater.SelectedIndex = 0; } /// /// 专用线 /// private void bindCmbCollege() { DataTable dt = ServerHelper.GetData("com.steering.pss.sale.order.CoreTransitLine.GetSpclNo", null, this.ob); ComboBoxHelper.FillUlcmItemsAddEmpty(cmbCollege, dt); cmbCollege.SelectedIndex = 0; } /// /// 铁路到站 /// private void bindCmbStation() { DataTable dt = ServerHelper.GetData("com.steering.pss.sale.base.CoreSpeclLine.GetStation", null, this.ob); ComboBoxHelper.FillUlcmItemsAddEmpty(cmbStationName, dt); cmbStationName.SelectedIndex = 0; } /// /// 运输方式 /// private void bindYsfs() { DataTable dt = ServerHelper.GetData("com.steering.pss.sale.order.CoreTransitLine.GetYsfs", null, this.ob); cmbYsfs.DataSource = dt; cmbYsfs.DisplayMember = "BASENAME"; cmbYsfs.ValueMember = "BASECODE"; cmbYsfs.DataBind(); cmbYsfs.SelectedIndex = 0; } /// /// 查询 /// private void doQuery() { //依据管理卡号、合同号、合同行号、交货编码展示对应的信息。 //DataTable dt = ServerHelper.GetData("com.steering.pss.sale.order.CoreDlgTransitPlan.doQuery", new Object[] { ManageNo, OrderNo, OrderSeq }, this.ob); DataTable dt = ServerHelper.GetData("com.steering.pss.sale.order.CoreDlgTransitPlan.doQuery", new Object[] { ManageNo, OrderNo }, this.ob); GridHelper.CopyDataToDatatable(ref dt, ref this.dataTable2, true); dataTable2.AcceptChanges(); for (int i = 0; i < ultraGrid2.Rows.Count; i++) { if ("1".Equals(ultraGrid2.Rows[i].Cells["AGENCY_FL"].Value.ToString())) { ultraGrid2.Rows[i].Cells["AGENCY_FL"].Value = true; } else { ultraGrid2.Rows[i].Cells["AGENCY_FL"].Value = false; } } //GridHelper.RefreshAndAutoSizeExceptRows(ultraGrid2, new UltraGridColumn[] { //ultraGrid2.DisplayLayout.Bands[0].Columns["CHK"] //}); } /// /// 列触发事件 /// /// /// private void ultraGrid2_CellChange(object sender, Infragistics.Win.UltraWinGrid.CellEventArgs e) { ultraGrid2.UpdateData(); if (e.Cell.Value != null && !string.IsNullOrEmpty(e.Cell.Value.ToString())) { if (e.Cell.Column.Key.Equals("CHK")) { if (Convert.ToBoolean(e.Cell.Value)) { for (int i = 0; i < e.Cell.Row.Cells.Count;i++ ) { e.Cell.Row.Cells[i].Activation = Infragistics.Win.UltraWinGrid.Activation.AllowEdit; } } else { for (int i = 0; i < e.Cell.Row.Cells.Count; i++) { if (e.Cell.Row.Cells[i].Column.Key.Equals("CHK")) { e.Cell.Row.Cells[i].Activation = Infragistics.Win.UltraWinGrid.Activation.AllowEdit; } else { e.Cell.Row.Cells[i].Activation = Infragistics.Win.UltraWinGrid.Activation.NoEdit; } } } } } } /// /// Toop事件 /// /// /// private void ultraToolbarsManager1_ToolClick(object sender, Infragistics.Win.UltraWinToolbars.ToolClickEventArgs e) { switch (e.Tool.Key) { case "doOk": doOk(); break; case "doDelete": doDelete(); break; } } /// /// 删除 /// private void doDelete() { #region "WQ" ultraGrid2.UpdateData(); ArrayList deleteParms = new ArrayList(); int j = 0; //判断当前Table选中项。 foreach (DataRow row in dataTable2.Rows) { if (Convert.ToBoolean(row["CHK"])) { ArrayList parms = new ArrayList(); parms.Add(ManageNo); parms.Add(OrderNo); parms.Add(OrderSeq); deleteParms.Add(parms); //if (!"".Equals(row["INDEX_SEQ"].ToString())) //{ // parms.Add(row["INDEX_SEQ"].ToString()); // deleteParms.Add(parms); //} j++; } } if (j <= 0) { MessageBox.Show("请先勾选!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Asterisk); } if (deleteParms.Count > 0) { //执行数据库相关操作 CoreClientParam ccp = new CoreClientParam(); //服务端的包名+类名 ccp.ServerName = "com.steering.pss.sale.order.CoreDlgTransitPlan"; //类里的方法名 ccp.MethodName = "doDelete"; ccp.ServerParams = new object[] { deleteParms }; try { ccp = this.ExecuteNonQuery(ccp, CoreInvokeType.Internal); } catch (Exception ex) { MessageBox.Show("错误提示:" + ex.Message, "提示", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } if (ccp.ReturnCode == -1) { return; } else { MessageBox.Show("删除成功!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Asterisk); doQuery(); } } #endregion } /// /// 委托方法 /// /// public delegate void GetTransitPlanHander(DataTable dt); public event GetTransitPlanHander GetTransitPlan; /// /// 确认 /// private void doOk() { ultraGrid2.UpdateData(); //#region "xiekh" //this.ultraGrid2.UpdateData(); //GetTransitPlan(dataSet1.Tables[0]); //#endregion #region "WQ" ArrayList AddParms = new ArrayList(); ArrayList UpdateParms = new ArrayList(); DataTable dataRowChk = new DataTable(); dataRowChk = dataTable2.Copy(); dataRowChk.Clear(); int j = 0; int i = 0; foreach (DataRow row in dataTable2.Rows) { if (Convert.ToBoolean(row["CHK"])) { row[7] = row[7].ToString() == "" ? ultraGrid2.Rows[i].Cells["LV_FACTY_TYP"].Text : row[7].ToString(); row[10] = row[10].ToString() == "" ? ultraGrid2.Rows[i].Cells["STATION_NO"].Text : row[10].ToString(); row[12] = row[12].ToString() == "" ? ultraGrid2.Rows[i].Cells["SPCL_LN_NO"].Text : row[12].ToString(); row[14] = row[14].ToString() == "" ? ultraGrid2.Rows[i].Cells["PORT_NO"].Text : row[14].ToString(); dataRowChk.Rows.Add(row.ItemArray); j++; //验证非空项,提取方法。 if (ValidRow(row)) { if (row.RowState == DataRowState.Added) { ////查询运输方式顺序号 OrderSeq = ServerHelper.GetData("com.steering.pss.sale.order.CoreDlgTransitPlan.doLineLnQuery", new Object[] { OrderNo, OrderNo }, this.ob).Rows[0][0].ToString(); if (j > 1) { OrderSeq = OrderSeq.Substring(0, 35) + (Convert.ToInt32(OrderSeq.Substring(35, 3)) + j - 1).ToString().PadLeft(3, '0'); } ArrayList parms = new ArrayList(); parms.Add(ManageNo); parms.Add(OrderNo); parms.Add(OrderSeq); //parms.Add(row["INDEX_SEQ"].ToString()); //代办标识 if (Convert.ToBoolean(row["AGENCY_FL"])) { parms.Add(1); } else { parms.Add(0); } parms.Add(row["LV_FACTY_TYP"].ToString()); //parms.Add(row["TRANSIT_TYP"].ToString()); parms.Add(row["DESTINATION"].ToString()); parms.Add(row["STATION_NO"].ToString()); //parms.Add(row["STATION_NM"].ToString()); parms.Add(row["SPCL_LN_NO"].ToString()); //parms.Add(row["SPCL_LN_NM"].ToString()); parms.Add(row["PORT_NO"].ToString()); //parms.Add(row["PORT_DESC"].ToString()); parms.Add(row["CARRIER_UNIT"].ToString()); parms.Add(row["RECEIVOR"].ToString()); parms.Add(row["TRANSIT_LN_MNY"].ToString()); parms.Add(UserInfo.GetUserName()); AddParms.Add(parms); } else if (row.RowState == DataRowState.Modified) { ArrayList parms = new ArrayList(); //代办标识 if (Convert.ToBoolean(row["AGENCY_FL"])) { parms.Add(1); } else { parms.Add(0); } parms.Add(row["LV_FACTY_TYP"].ToString()); //parms.Add(row["TRANSIT_TYP"].ToString()); parms.Add(row["DESTINATION"].ToString()); parms.Add(row["STATION_NO"].ToString()); //parms.Add(row["STATION_NM"].ToString()); parms.Add(row["SPCL_LN_NO"].ToString()); //parms.Add(row["SPCL_LN_NM"].ToString()); parms.Add(row["PORT_NO"].ToString()); //parms.Add(row["PORT_DESC"].ToString()); parms.Add(row["CARRIER_UNIT"].ToString()); parms.Add(row["RECEIVOR"].ToString()); parms.Add(row["TRANSIT_LN_MNY"].ToString()); parms.Add(UserInfo.GetUserName()); parms.Add(ManageNo); parms.Add(OrderNo); parms.Add(OrderSeq); UpdateParms.Add(parms); } } else { return; } } i++; } if (j <= 0) { if (MessageBox.Show("未勾选任何行,确认提交吗?", "提示", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes) { //不做任何操作跳转到交货信息界面。 doQuery(); GetTransitPlan(this.dataTable2); this.Close(); return; } else { return; } } //传递到服务端,运用事物处理。记不清楚了,但以前有类似的代码。 //执行数据库相关操作 CoreClientParam ccp = new CoreClientParam(); //服务端的包名+类名 ccp.ServerName = "com.steering.pss.sale.order.CoreDlgTransitPlan"; //类里的方法名 ccp.MethodName = "doOk"; ccp.ServerParams = new object[] { AddParms, UpdateParms }; try { ccp = this.ExecuteNonQuery(ccp, CoreInvokeType.Internal); } catch (Exception ex) { MessageBox.Show("错误提示:" + ex.Message, "提示", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } if (ccp.ReturnCode == -1) { return; } else { MessageBox.Show("保存成功!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Asterisk); doQuery(); GetTransitPlan(dataRowChk); this.Close(); } //DataTable saveLine = dataTable2.Clone(); ////必须重构DataTable,不能直接传递。涉及到顺序号的问题。 //if (ultraGrid2.Rows.Count > 0) //{ // if (ValidInput()) // { // foreach (UltraGridRow rowLine in ultraGrid2.Rows) // { // if (Convert.ToBoolean(rowLine.Cells["chk"].Value)) // { // DataRow row = saveLine.NewRow(); // //顺序号INDEX_SEQ // row["INDEX_SEQ"] = rowLine.Cells["INDEX_SEQ"].Value.ToString(); // //代办标识AGENCY_FL // row["AGENCY_FL"] = rowLine.Cells["AGENCY_FL"].Value.ToString(); // //运输方式编码 // row["LV_FACTY_TYP"] = rowLine.Cells["TRANSIT_TYP"].Value.ToString(); // //运输方式(''1105'')TRANSIT_TYP // string transitTyp = rowLine.Cells["TRANSIT_TYP"].Text.ToString(); // row["TRANSIT_TYP"] = transitTyp; // if ("船舶".Equals(transitTyp)) // { // if ("".Equals(rowLine.Cells["PORT_DESC"].Value.ToString())) // { // //港口/码头 // row["PORT_NO"] = rowLine.Cells["PORT_DESC"].Value.ToString(); // //港口/码头描述 // row["PORT_DESC"] = rowLine.Cells["PORT_DESC"].Text.ToString(); // } // } // else if ("汽运".Equals(transitTyp)) // { // //目的地 // row["DESTINATION"] = rowLine.Cells["DESTINATION"].Value.ToString(); // } // else if ("火运".Equals(transitTyp)) // { // //到站编码 // row["STATION_NO"] = rowLine.Cells["STATION_NM"].Value.ToString(); // //到站名称 // row["STATION_NM"] = rowLine.Cells["STATION_NM"].Text.ToString(); // //专用线编码 // row["SPCL_LN_NO"] = rowLine.Cells["SPCL_LN_NM"].Value.ToString(); // //专用线名称 // row["SPCL_LN_NM"] = rowLine.Cells["SPCL_LN_NM"].Text.ToString(); // } // //承运单位 // row["CARRIER_UNIT"] = rowLine.Cells["CARRIER_UNIT"].Text.ToString(); // //接货人 // row["RECEIVOR"] = rowLine.Cells["RECEIVOR"].Text.ToString(); // //吨运费 // row["TRANSIT_LN_MNY"] = rowLine.Cells["TRANSIT_LN_MNY"].Value.ToString(); // saveLine.Rows.Add(row); // } // } // GetTransitPlan(saveLine); // this.Close(); // } //} #endregion } /// /// 验证当前行非空项。 /// /// /// private bool ValidRow(DataRow row) { string transitTyp = row["LV_FACTY_TYP"].ToString(); if ("".Equals(transitTyp)) { MessageBox.Show("请输入运输方式!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning); return false; } if ("110503".Equals(transitTyp)) { if ("".Equals(row["PORT_NO"].ToString())) { MessageBox.Show("请输入港口/码头!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning); return false; } } else if ("110501".Equals(transitTyp)) { if ("".Equals(row["DESTINATION"].ToString())) { MessageBox.Show("请输入目的地!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning); return false; } } else if ("110502".Equals(transitTyp)) { if ("".Equals(row["STATION_NO"].ToString())) { MessageBox.Show("请输入到站!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning); return false; } } //if ("".Equals(row["CARRIER_UNIT"].ToString())) //{ // MessageBox.Show("请输入承运单位!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning); // return false; //} //if ("".Equals(row["RECEIVOR"].ToString())) //{ // MessageBox.Show("请输入接货人!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning); // return false; //} //if ("".Equals(row["TRANSIT_LN_MNY"].ToString())) //{ // MessageBox.Show("请输入吨运费!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning); // return false; //} return true; } /// /// 验证非空项。 /// /// private bool ValidInput() { foreach (UltraGridRow row in ultraGrid2.Rows) { string transitTyp = row.Cells["TRANSIT_TYP"].Text.Trim(); if ("".Equals(transitTyp)) { MessageBox.Show("请输入运输方式!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning); return false; } if ("船舶".Equals(transitTyp)) { if ("".Equals(row.Cells["PORT_DESC"].Value.ToString())) { MessageBox.Show("请输入港口/码头!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning); return false; } } else if ("汽运".Equals(transitTyp)) { if ("".Equals(row.Cells["DESTINATION"].Value.ToString())) { MessageBox.Show("请输入目的地!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning); return false; } } else if ("火运".Equals(transitTyp)) { if ("".Equals(row.Cells["STATION_NM"].Value.ToString())) { MessageBox.Show("请输入到站!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning); return false; } } //if ("".Equals(row.Cells["CARRIER_UNIT"].Value.ToString())) //{ // MessageBox.Show("请输入承运单位!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning); // return false; //} //if ("".Equals(row.Cells["RECEIVOR"].Value.ToString())) //{ // MessageBox.Show("请输入接货人!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning); // return false; //} //if ("".Equals(row.Cells["TRANSIT_LN_MNY"].Value.ToString())) //{ // MessageBox.Show("请输入吨运费!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning); // return false; //} } return true; } private void ultraGrid2_AfterRowInsert(object sender, RowEventArgs e) { e.Row.Cells["CHK"].Value = false; e.Row.Cells["AGENCY_FL"].Value = true; for (int j = 0; j < e.Row.Cells.Count; j++) { if (!e.Row.Cells[j].Column.Key.Equals("CHK")) { e.Row.Cells[j].Activation = Infragistics.Win.UltraWinGrid.Activation.NoEdit; } } } } }