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;
}
}
}
}
}