using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Windows; using System.Windows.Controls; using System.Windows.Data; using System.Windows.Documents; using System.Windows.Input; using System.Windows.Media; using System.Windows.Media.Imaging; using System.Windows.Shapes; using System.Configuration; using System.Data; using System.Data.SqlClient; namespace AGV_WPF { /// /// DockManage.xaml 的交互逻辑 /// public partial class DockManage : Window { //实际的AGV数量 public byte AGVNUM_MAX = Convert.ToByte(ConfigurationManager.AppSettings["AGVNUM_MAX"]); public int docknum = 0; public DAL.ZSql sql = new DAL.ZSql(); /// /// 构造函数 /// public DockManage() { InitializeComponent(); InitComboBox(); InitDockNum(); } /// /// 绑定下拉列表 /// private void InitComboBox() { BindWorkLineComboBox(); BindRouteComboBox(); BindAGVComboBox(); } /// /// 生产区下拉列表绑定 /// private void BindWorkLineComboBox() { DAL.ZSql sql1 = new DAL.ZSql(); sql1.Open("Select DISTINCT WorkLine from T_Mark"); cbSWorkLine.ItemsSource = sql1.m_table.DefaultView; cbSWorkLine.DisplayMemberPath = "WorkLine"; cbSWorkLine.SelectedValuePath = "WorkLine"; cbEWorkLine.ItemsSource = sql1.m_table.DefaultView; cbEWorkLine.DisplayMemberPath = "WorkLine"; cbEWorkLine.SelectedValuePath = "WorkLine"; sql1.Close(); } /// /// 路线下拉列表绑定 /// private void BindRouteComboBox() { //线路加载初始化 DAL.ZSql sql1 = new DAL.ZSql(); sql1.Open("select DISTINCT LineNum from T_Line order by LineNum"); cbRouteNum.ItemsSource = sql1.m_table.DefaultView; cbRouteNum.DisplayMemberPath = "LineNum"; cbRouteNum.SelectedValuePath = "LineNum"; sql1.Close(); } /// /// 车辆下拉列表绑定 /// private void BindAGVComboBox() { //小车编号加载初始化 for (int i = 0; i < AGVNUM_MAX; i++) { cbAGVNum.Items.Add((i + 1).ToString()); } } /// /// 停靠区编号绑定 /// private void InitDockNum() { DAL.ZSql sql1 = new DAL.ZSql(); sql1.Open("select DISTINCT DockNum from T_DockArea order by DockNum"); cbDockNum.ItemsSource = sql1.m_table.DefaultView; cbDockNum.DisplayMemberPath = "DockNum"; cbDockNum.SelectedValuePath = "DockNum"; sql1.Close(); } /// /// 加载表格 /// /// 停靠区编号 private void LoadDataGrid(int paradocknum) { if (paradocknum > 0) { DAL.ZSql sql1 = new DAL.ZSql(); sql1.Open("select * from T_DockSetting where DockNum=" + Convert.ToString(paradocknum) + " order by AGVNum"); dataGrid1.ItemsSource = sql1.m_table.DefaultView; sql1.Close(); DAL.ZSql sql2 = new DAL.ZSql(); sql2.Open("select * from T_DockArea where DockNum=" + Convert.ToString(paradocknum)); dataGrid2.ItemsSource = sql2.m_table.DefaultView; sql2.Close(); docknum = paradocknum; } else { dataGrid1.ItemsSource = null; dataGrid2.ItemsSource = null; } } /// /// 表格选择不同行消息触发 /// /// /// private void dataGrid1_SelectionChanged(object sender, SelectionChangedEventArgs e) { DataRowView selectItem = dataGrid1.SelectedItem as DataRowView; if (selectItem != null) { cbAGVNum.Text = selectItem["AGVNum"].ToString().Trim(); cbRouteNum.Text = selectItem["RouteNum"].ToString().Trim(); } else { cbAGVNum.Text = ""; cbRouteNum.Text = ""; } } /// /// 停靠区编号选择消息响应 /// /// /// private void cbDockNum_SelectionChanged(object sender, SelectionChangedEventArgs e) { if (cbDockNum.SelectedValue != null) { docknum = Convert.ToUInt16(cbDockNum.SelectedValue.ToString().Trim()); LoadDataGrid(docknum); } } /// /// 表格选择不同行消息触发 /// /// /// private void dataGrid2_SelectionChanged(object sender, SelectionChangedEventArgs e) { DataRowView selectItem = dataGrid2.SelectedItem as DataRowView; if (selectItem != null) { cbSWorkLine.Text = selectItem["DockSSLine"].ToString().Trim(); cbSMark.Text = selectItem["DockSSNum"].ToString().Trim(); cbEWorkLine.Text = selectItem["DockESLine"].ToString().Trim(); cbEMark.Text = selectItem["DockESNum"].ToString().Trim(); } else { cbSWorkLine.Text = ""; cbSMark.Text = ""; cbEWorkLine.Text = ""; cbEMark.Text = ""; } } /// /// 增加 /// /// /// private void btnDockAdd_Click(object sender, RoutedEventArgs e) { if (!Vertify_Input()) { return; } //验证是否已存在相同的停靠区 sql.Open("select * from T_DockArea where DockNum=" + cbDockNum.Text.Trim()); if (sql.rowcount > 0) { MessageBox.Show("输入的停靠区编号已存在!"); cbDockNum.Focus(); return; } sql.Open("insert into T_DockArea (DockNum,DockSSNum,DockSSLine,DockESNum,DockESLine) Values (@docknum,@dockssnum,@dockssline,@dockesnum,@dockesline)", new SqlParameter[]{ new SqlParameter("docknum",cbDockNum.Text.Trim()), new SqlParameter("dockssnum",cbSMark.Text.Trim()), new SqlParameter("dockssline",cbSWorkLine.Text.Trim()), new SqlParameter("dockesnum",cbEMark.Text.Trim()), new SqlParameter("dockesline",cbEWorkLine.Text.Trim()) }); sql.Close(); MessageBox.Show("添加成功!"); docknum = Convert.ToInt32(cbDockNum.Text.Trim()); InitDockNum(); LoadDataGrid(docknum); } /// /// 修改 /// /// /// private void btnDockModify_Click(object sender, RoutedEventArgs e) { if (!Vertify_Input()) { return; } //验证是否已存在相同的停靠区 sql.Open("select * from T_DockArea where DockNum=" + cbDockNum.Text.Trim()); if (sql.rowcount <= 0) { MessageBox.Show("输入的停靠区不存在!"); cbDockNum.Focus(); return; } sql.Open("update T_DockArea set DockSSNum=@dockssnum,DockSSLine=@dockssline,DockESNum=@dockesnum,DockESLine=@dockesline where DockNum=@docknum", new SqlParameter[]{ new SqlParameter("@docknum",cbDockNum.Text.Trim()), new SqlParameter("@dockssnum",cbSMark.Text.Trim()), new SqlParameter("@dockssline",cbSWorkLine.Text.Trim()), new SqlParameter("@dockesnum",cbEMark.Text.Trim()), new SqlParameter("@dockesline",cbEWorkLine.Text.Trim()) }); sql.Close(); MessageBox.Show("修改成功!"); docknum = Convert.ToInt32(cbDockNum.Text.Trim()); LoadDataGrid(docknum); } /// /// 删除 /// /// /// private void btnDockDelete_Click(object sender, RoutedEventArgs e) { if (string.IsNullOrEmpty(cbDockNum.Text.Trim())) { MessageBox.Show("请输入停靠区编号!"); return; } sql.Open("select * from T_DockArea where DockNum=" + cbDockNum.Text.Trim()); if (sql.rowcount <= 0) { MessageBox.Show("您输入的停靠区编号不存在!"); return; } sql.Open("delete from T_DockArea where DockNum=" + cbDockNum.Text.Trim()); sql.Open("delete from T_DockSetting where DockNum=" + cbDockNum.Text.Trim()); sql.Close(); MessageBox.Show("删除成功!"); InitDockNum(); cbDockNum.SelectedIndex = 0; } /// /// 增加 /// /// /// private void btnSettingAdd_Click(object sender, RoutedEventArgs e) { if (string.IsNullOrEmpty(cbDockNum.Text.Trim()) || string.IsNullOrEmpty(cbAGVNum.Text.Trim()) || string.IsNullOrEmpty(cbRouteNum.Text.Trim())) { MessageBox.Show("请输入完整信息!"); return; } sql.Open("select * from T_DockSetting where DockNum=" + cbDockNum.Text.Trim() + " and AGVNum=" + cbAGVNum.Text.Trim()); if (sql.rowcount > 0) { MessageBox.Show("添加失败!您输入的AGV车辆线路设置已存在!"); return; } sql.Open("insert into T_DockSetting (DockNum,AGVNum,RouteNum) Values (@docknum,@agvnum,@routenum)", new SqlParameter[]{ new SqlParameter("@docknum",cbDockNum.Text.Trim()), new SqlParameter("@agvnum",cbAGVNum.Text.Trim()), new SqlParameter("@routenum",cbRouteNum.Text.Trim()) }); sql.Close(); MessageBox.Show("添加成功!"); docknum = Convert.ToInt32(cbDockNum.Text.Trim()); LoadDataGrid(docknum); } /// /// 修改 /// /// /// private void btnSettingModify_Click(object sender, RoutedEventArgs e) { if (string.IsNullOrEmpty(cbDockNum.Text.Trim()) || string.IsNullOrEmpty(cbAGVNum.Text.Trim()) || string.IsNullOrEmpty(cbRouteNum.Text.Trim())) { MessageBox.Show("请输入完整信息!"); return; } sql.Open("select * from T_DockSetting where DockNum=" + cbDockNum.Text.Trim() + " and AGVNum=" + cbAGVNum.Text.Trim()); if (sql.rowcount <= 0) { MessageBox.Show("修改失败!您输入的AGV车辆线路设置不存在!"); return; } sql.Open("update T_DockSetting set RouteNum=@routenum where DockNum=@docknum and AGVNum=@agvnum", new SqlParameter[]{ new SqlParameter("@docknum",cbDockNum.Text.Trim()), new SqlParameter("@agvnum",cbAGVNum.Text.Trim()), new SqlParameter("@routenum",cbRouteNum.Text.Trim()) }); sql.Close(); MessageBox.Show("修改成功!"); docknum = Convert.ToInt32(cbDockNum.Text.Trim()); LoadDataGrid(docknum); } /// /// 删除 /// /// /// private void btnSettingDelete_Click(object sender, RoutedEventArgs e) { if (string.IsNullOrEmpty(cbDockNum.Text.Trim()) || string.IsNullOrEmpty(cbAGVNum.Text.Trim())) { MessageBox.Show("请输入停靠区编号和AGV编号!"); return; } sql.Open("select * from T_DockSetting where DockNum=" + cbDockNum.Text.Trim() + " and AGVNum=" + cbAGVNum.Text.Trim()); if (sql.rowcount <= 0) { MessageBox.Show("删除失败!您输入的AGV车辆线路设置不存在!"); return; } sql.Open("delete from T_DockSetting where DockNum=" + cbDockNum.Text.Trim() + " and AGVNum=" + cbAGVNum.Text.Trim()); sql.Close(); MessageBox.Show("删除成功!"); docknum = Convert.ToInt32(cbDockNum.Text.Trim()); LoadDataGrid(docknum); } /// /// 验证输入 /// /// 是否满足要求 private bool Vertify_Input() { if (string.IsNullOrEmpty(cbDockNum.Text.Trim()) || string.IsNullOrEmpty(cbSWorkLine.Text.Trim()) || string.IsNullOrEmpty(cbSMark.Text.Trim()) || string.IsNullOrEmpty(cbEWorkLine.Text.Trim()) || string.IsNullOrEmpty(cbEMark.Text.Trim())) { MessageBox.Show("请输入完整信息!"); return false; } sql.Open("select * from T_Mark where WorkLine=" + cbSWorkLine.Text.Trim() + " and Mark=" + cbSMark.Text.Trim() + " and VirtualMark=0"); if (sql.rowcount < 1) { MessageBox.Show("输入的起点地标不存在或为虚拟地标!"); cbSMark.Focus(); return false; } sql.Open("select * from T_Mark where WorkLine=" + cbEWorkLine.Text.Trim() + " and Mark=" + cbEMark.Text.Trim() + " and VirtualMark=0"); if (sql.rowcount < 1) { MessageBox.Show("输入的终点地标不存在或为虚拟地标!"); cbEMark.Focus(); return false; } return true; } } }