#region 确定事件
private void btnConfirm_Click(object sender, EventArgs e)
{
decimal SendNumber = Convert.ToDecimal(lblSendNumber.Text.Trim().ToString() == "" ? "0" : lblSendNumber.Text.Trim().ToString());
mi.RealNum = SendNumber;
//赋值指令跟打印的状态值
if (chbmand.Checked)
{
mi.IsInstruction = 1;
}
else
{
mi.IsInstruction = 0;
}
if (ckIsPrint.Checked)
{
mi.IsPrint = 1;
}
else
{
mi.IsPrint = 0;
}
string sqlsd = string.Empty;
string value = string.Empty;
User.isYieldTransit = true;
FrmYieldTransitEdit fmm = (FrmYieldTransitEdit)this.Owner;
ListView vi = ((ListView)fmm.Controls["panshow1"].Controls["listShowCar"]);
if (YieldTransitEditBus.Add(mi) == true)
{
// 保存运送单后当前排队车辆状态改为出站,主窗体的车辆排队重新绑定第一个排队车辆
int EMTinCar_ID = mi.EMTinCar_ID;
SelectVehicleStateType_IDByTinID(EMTinCar_ID, vi);
if (chbmand.Checked)
{
string str = string.Format(@",本站坍落度:{0}", lblTankVolume.Text);
mcti.YieldTransit_ID = mi.ID;
mcti.CommandNum = SendNumber;
mcti.ISSJ = chbIssj.Checked;
mcti.EMAgitation_ID = Convert.ToInt32(mi.EMAgitation_ID);
mcti.YieldTime = Convert.ToDateTime(mi.SendTime);
mcti.Artask = mcti.Artask + str;
mcti.UserInfo_ID = User.UserID;
mcti.SetTime = DateTime.Now;
mcti.ISscreen = false;
mcti.ISGet = false;
mcti.TankVolumeRatio = lblTankVolume.Text;
if (YieldTransitEditBus.InsertCommand(mcti) == true)
{
MessageBox.Show("发送指令成功", "");
this.Close();
BindDateYieldTransitdgv();
if (ckIsPrint.Checked)
{
try
{
string strurl = YieldTransitEditBus.GetPrintSql("MenuYieldTransit");
DataTable dt = null;
string ID = mi.ID.ToString();
dt = YieldTransitEditBus.GetPrintDate("MenuYieldTransit", ID);
if (dt != null && dt.Rows.Count > 0)
{
User.Print(dt, strurl);
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
}
else
{
//MessageBox.Show("发送指令失败");
}
}
//没有选择指令
else
{
if (ckIsPrint.Checked)
{
try
{
string strurl = YieldTransitEditBus.GetPrintSql("MenuYieldTransit");
DataTable dt = null;
string ID = mi.ID.ToString();
dt = YieldTransitEditBus.GetPrintDate("MenuYieldTransit", ID);
if (dt != null && dt.Rows.Count > 0)
{
User.Print(dt, strurl);
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
this.Close();
BindDateYieldTransitdgv();
}
Thread T = new Thread(RingVoice);
T.Start();
}
#region 移除之后的数据源不管是那种车辆都应该及时刷新为排队的第一辆
ComboBox com = ((ComboBox)fmm.Controls["panshow1"].Controls["cmbEMTinCar_ID"]);
DataTable dttess = (DataTable)com.DataSource;
if (vi.Items.Count > 0)
{
string tess = vi.Items[0].Text; //获取第一项
if (dttess != null && dttess.Rows.Count > 0)
{
DataRow[] dr = dttess.Select("No='" + tess + "'"); // "fatherNum='"+fatherNum+"'"
if (dr != null && dr.Length > 0)//说明找到"fatherNum='"+fatherNum+"'"
{
com.SelectedValue = dr[0].ItemArray[0];
}
}
}
#endregion
else
{
User.isYieldTransit = false;
MessageBox.Show("保存失败");
}
}
#endregion
#region 新建运送单成功后,车辆监控及时刷新
/// <summary>
/// 新建运送单成功后,车辆监控及时刷新
/// </summary>
/// <param name="CheckVehicleOrder_ID">没有修改之前本身的排序顺序</param>
/// <param name="NewVehicleStateType_ID">之后的类型</param>
/// <param name="CheckVehicleStateType_ID">根据选中的类型传入不同的tv选中执行不同的脚本</param>
public void updates(int CheckVehicleOrder_ID, int NewVehicleStateType_ID, string CheckVehicleStateType_ID)
{
string TransportorderSQL = string.Empty;
string strMessage = string.Empty;
//之后类型最大的排序
string sqlMax = "SELECT max (VehicleOrder_ID)as VehicleOrder_ID from EMTinCar where VehicleStateType_ID=" + NewVehicleStateType_ID;
string MaxValue = Common.Conn.SqlHelper.getSqlValue(sqlMax);
int Maxvalues = 0;
if (!string.IsNullOrEmpty(MaxValue))
{
Maxvalues = Convert.ToInt32(MaxValue) + 1;
}
if (CheckVehicleStateType_ID == "1")
{
if (string.IsNullOrEmpty(MaxValue))//出站没有任何数据排序第一次
{
Maxvalues = 1;
}
tin.VehicleOrder_ID = Convert.ToInt32(Maxvalues);
}
if (CheckVehicleStateType_ID == "2")
{
if (string.IsNullOrEmpty(MaxValue))
{
Maxvalues = 1;
}
else
{
//修改之前把大于本身的小于最大的-1
TransportorderSQL = string.Format("exec UpdateTransorderByMax_Proc {0},{1},{2}", NewVehicleStateType_ID, CheckVehicleOrder_ID, MaxValue);
strMessage = Common.Conn.SqlHelper.ExecSql(TransportorderSQL);
if (strMessage != string.Empty)
{
return;
}
}
tin.VehicleOrder_ID = Convert.ToInt32(MaxValue);
}
if (CheckVehicleStateType_ID == "3")
{
if (string.IsNullOrEmpty(MaxValue))
{
Maxvalues = 1;
}
//else {
// //修改之前把大于本身的小于最大的-1
// TransportorderSQL = string.Format("exec UpdateTransorderByMax_Proc {0},{1},{2}", NewVehicleStateType_ID, CheckVehicleOrder_ID, MaxValue);
// strMessage = Common.Conn.SqlHelper.ExecSql(TransportorderSQL);
// if (strMessage != string.Empty)
// {
// return;
// }
//}
tin.VehicleOrder_ID = Convert.ToInt32(Maxvalues);
}
//移动最后
tin.VehicleStateType_ID = NewVehicleStateType_ID;
tin.ID = mi.EMTinCar_ID;
YieldTransitEditBus.updateemtin(tin);
}
#endregion
#region 根据车id查询属于老数据,排队,还是出站还是暂停
public void SelectVehicleStateType_IDByTinID(int timcarid, ListView vi)
{
FrmEMTinCar fmt = null;
Form YieldTransitEditForm = this.Owner;
TabPage tc = (TabPage)YieldTransitEditForm.Parent;
foreach (var f in tc.Controls )
{
if (tc.Controls .Count >0)
{
if (tc.Text == "生产运送")
{
fmt = null;
}else if (tc.Text != "车辆状态监控")
{
fmt = null;
}
else
{
fmt = (FrmEMTinCar)f;
}
}
}
string sqlsd = string.Empty;
string CheckVehicleOrder_ID = string.Empty;
int checkorder_id = 0;
//选中车的排序顺序
string CheckVehicleOrderSql = "SELECT VehicleOrder_ID FROM EMTinCar where ID=" + timcarid;
CheckVehicleOrder_ID = Common.Conn.SqlHelper.getSqlValue(CheckVehicleOrderSql);
if (!string.IsNullOrEmpty(CheckVehicleOrder_ID))
{
checkorder_id = Convert.ToInt32(CheckVehicleOrder_ID);
}
string CheckVehicleStateType_ID = string.Empty;//选中的类型
int oldVehicleStateType_ID = 0;
string value = string.Empty;
sqlsd = "SELECT VehicleStateType_ID FROM EMTinCar where ID=" + timcarid;
CheckVehicleStateType_ID = Common.Conn.SqlHelper.getSqlValue(sqlsd);
if (!string.IsNullOrEmpty(CheckVehicleStateType_ID))
{
oldVehicleStateType_ID = Convert.ToInt32(CheckVehicleStateType_ID);
}
if (!string.IsNullOrEmpty(CheckVehicleStateType_ID))
{
//根据查询出来的VehicleStateType_ID判断是那种车辆,原始状态,
//1排队车辆往出站车辆添加,出站车辆本身存在顺序是好的,只是往最后一个排
//2选中出站车辆发货,是顺序相当于出站车辆拖拽最后一个
//3选中车属于暂停车辆发货,跟第一种情况一样
if (CheckVehicleStateType_ID == "1")
{
sqlsd = "SELECT NO FROM EMTinCar where VehicleStateType_ID =1 AND ID=" + mi.EMTinCar_ID;
value = Common.Conn.SqlHelper.getSqlValue(sqlsd);
if (!string.IsNullOrEmpty(value))//当前车在排队里面修改为出站,还要及时更新5个车给treeview
{
updates(checkorder_id, 2, CheckVehicleStateType_ID);
updateTransportorder_proc(oldVehicleStateType_ID);
if (fmt != null)
{
RemoveMySofeNode(fmt, CheckVehicleStateType_ID, value);
}
else { //车辆监控车辆没有打开的情况下直接更新数据库的二个字段数据
}
Messages(value, CheckVehicleStateType_ID);
#region 移除刚新建的项排队车
string te = "";
foreach (ListViewItem item in vi.Items)
{
te = item.Text;
if (value.Contains(te))//找到59
{
vi.Items.Remove(item);
}
}
//vi.Items.Clear();
//fmm.BindListView();
#endregion
}
}
else if (CheckVehicleStateType_ID == "2")
{
sqlsd = "SELECT NO FROM EMTinCar where VehicleStateType_ID =2 AND ID=" + mi.EMTinCar_ID;
value = Common.Conn.SqlHelper.getSqlValue(sqlsd);
if (!string.IsNullOrEmpty(value))//当前车在出站里面重新刷新排序
{
updates(checkorder_id, 2, CheckVehicleStateType_ID);
if (fmt != null)
{
RemoveMySofeNode(fmt, CheckVehicleStateType_ID, value);
}
Messages(value, CheckVehicleStateType_ID);
}
}
else if (CheckVehicleStateType_ID == "3")
{
sqlsd = "SELECT NO FROM EMTinCar where VehicleStateType_ID =3 AND ID=" + mi.EMTinCar_ID;
value = Common.Conn.SqlHelper.getSqlValue(sqlsd);
if (!string.IsNullOrEmpty(value))//当前暂停重新排序
{
updates(checkorder_id, 2, CheckVehicleStateType_ID);
updateTransportorder_proc(oldVehicleStateType_ID);
if (fmt != null)
{
RemoveMySofeNode(fmt, CheckVehicleStateType_ID, value);
}
Messages(value, CheckVehicleStateType_ID);
}
}
else if (CheckVehicleStateType_ID == "4")//新建车辆就是不显示的车
{
//sqlsd = "SELECT NO FROM EMTinCar where VehicleStateType_ID =4 AND ID=" + mi.EMTinCar_ID;
//value = Common.Conn.SqlHelper.getSqlValue(sqlsd);
//if (!string.IsNullOrEmpty(value))//当前暂停重新排序
//{
// updates(checkorder_id, 2, CheckVehicleStateType_ID);
// updateTransportorder_proc(oldVehicleStateType_ID);
// if (fmt != null)
// {
// RemoveMySofeNode(fmt, CheckVehicleStateType_ID, value);
// }
// Messages(value, CheckVehicleStateType_ID);
//}
}
}
}
#endregion
#region 选择的车是排队的,出站的,暂停的,都出站最后,本身也及时刷新数据
public void RemoveMySofeNode(FrmEMTinCar fmt, string VehicleStateType_ID, string value)
{
//本身所在节点移除
TreeView tv = null;
if (VehicleStateType_ID == "1")
{
tv = ((TreeView)fmt.Controls["tvQueuing"]);
}
if (VehicleStateType_ID == "2")
{
tv = ((TreeView)fmt.Controls["tvDeparture"]);
}
if (VehicleStateType_ID == "3")
{
tv = ((TreeView)fmt.Controls["tvPause"]);
}
TreeNode node = new TreeNode();
node.Text = value;
tv.Nodes.Remove(node);
}
#endregion
#region 提示操作信息
public void Messages(string No, string CheckVehicleStateType_ID)
{
FrmEMTinCar f= null;
Form YieldTransitEditForm = this.Owner;
TabPage tc = (TabPage)YieldTransitEditForm.Parent;
foreach (var fmt in tc.Controls)
{
if (tc.Controls.Count > 0)
{
if (tc.Text == "生产运送")
{
f = null;
}
else if (tc.Text != "车辆状态监控")
{
f = null;
}
else
{
f = (FrmEMTinCar)fmt;
}
}
}
if (f != null)
{
Label lblMessages = ((Label)f.Controls["lblMessages"]);
if (lblMessages != null)
{
lblMessages.Visible = true;
if (CheckVehicleStateType_ID == "1")
{
lblMessages.Text = "提示:" + No + "号车已修改为出站车辆";
}
if (CheckVehicleStateType_ID == "2")
{
lblMessages.Text = "提示:" + No + "号车已修改为出站车辆"; ;
}
if (CheckVehicleStateType_ID == "3")
{
lblMessages.Text = "提示:" + No + "号车已修改为出站车辆";
}
}
}
}
#endregion
#region 重新排序修之前
public void updateTransportorder_proc(int OldVehicleStateType_ID)
{
//获取修改之前的状态值
//然后在之前的类型代表数据已经移动走了,那排序字段重新赋值排序
string TransportorderSQL = string.Format("exec UpdateTransportorder_proc {0}", OldVehicleStateType_ID);
string strMessage = Common.Conn.SqlHelper.ExecSql(TransportorderSQL);
if (strMessage != string.Empty)
{
return;
}
}
#endregion