522 lines
		
	
	
		
			16 KiB
		
	
	
	
		
			C#
		
	
	
	
		
		
			
		
	
	
			522 lines
		
	
	
		
			16 KiB
		
	
	
	
		
			C#
		
	
	
	
|  | using System; | |||
|  | using System.Collections.Generic; | |||
|  | using System.ComponentModel; | |||
|  | using System.Data; | |||
|  | using System.Drawing; | |||
|  | using System.Text; | |||
|  | using System.Linq; | |||
|  | using System.Windows.Forms; | |||
|  | using DevExpress.XtraBars;  | |||
|  | using DevExpress.XtraGrid.Views.Grid; | |||
|  | using DevExpress.XtraGrid.Columns; | |||
|  | using DeiNiu.Utils; | |||
|  | using DevExpress.XtraEditors.Controls; | |||
|  |   | |||
|  | 
 | |||
|  | namespace DeiNiu.wms.win | |||
|  | { | |||
|  |     public partial class BoxReg : BasicRibbonForm | |||
|  |     {  | |||
|  |         DataTable dtWaves; | |||
|  |         DataTable dtCurrentWave; | |||
|  |         bool isAfter = false; | |||
|  |         public BoxReg() | |||
|  |         { | |||
|  |             InitializeComponent(); | |||
|  |             txtBoxID.GotFocus += new EventHandler(textEditBarcode_GotFocus); | |||
|  |             txtBoxID.MouseUp += new MouseEventHandler(textEditBarcode_MouseUp); | |||
|  |             isAfter = WmsConstants.OUT_REGIST_BOX_AFTER_PICKED;  | |||
|  |            // rdGrpType.SelectedIndex = isAfter ? 0 : 1; | |||
|  |             lgAfter.Visibility = isAfter ? DevExpress.XtraLayout.Utils.LayoutVisibility.Always:DevExpress.XtraLayout.Utils.LayoutVisibility.Never; | |||
|  |              | |||
|  |             refreshData(); | |||
|  |             initialTimer();            | |||
|  |             initialDataGrid(); | |||
|  |             bindWaves(); | |||
|  |            // focusInput(); | |||
|  |             resetInfo(); | |||
|  |              | |||
|  |         } | |||
|  | 
 | |||
|  | 
 | |||
|  |         void textEditBarcode_MouseUp(object sender, MouseEventArgs e) | |||
|  |         { | |||
|  |             //如果鼠标左键操作并且标记存在,则执行全选              | |||
|  |             if (e.Button == MouseButtons.Left && this.txtBoxID.Tag != null && (bool)txtBoxID.Tag == true) | |||
|  |             { | |||
|  |                 txtBoxID.SelectAll(); | |||
|  |             } | |||
|  | 
 | |||
|  |             //取消全选标记               | |||
|  |             txtBoxID.Tag = false; | |||
|  |         } | |||
|  | 
 | |||
|  | 
 | |||
|  |         void textEditBarcode_GotFocus(object sender, EventArgs e) | |||
|  |         { | |||
|  |             txtBoxID.Tag = true;    //设置标记               | |||
|  |            // txtBoxID.SelectAll();   //注意1          | |||
|  |         } | |||
|  | 
 | |||
|  | 
 | |||
|  |         void initialDataGrid() | |||
|  |         { | |||
|  |             this.gvBoxes.OptionsSelection.MultiSelect = false;//按shift / control 多选 | |||
|  |             this.gvBoxes.OptionsBehavior.AutoPopulateColumns = false; | |||
|  |             this.gvBoxes.FocusRectStyle = DevExpress.XtraGrid.Views.Grid.DrawFocusRectStyle.RowFocus; | |||
|  |             this.gvBoxes.FocusRectStyle = DevExpress.XtraGrid.Views.Grid.DrawFocusRectStyle.CellFocus; | |||
|  |             this.gvBoxes.OptionsBehavior.Editable = false; | |||
|  |             this.gvBoxes.OptionsSelection.EnableAppearanceFocusedCell = false; | |||
|  |             //show line number | |||
|  |             this.gvBoxes.IndicatorWidth = 40; | |||
|  |             this.gvBoxes.CustomDrawRowIndicator += new DevExpress.XtraGrid.Views.Grid.RowIndicatorCustomDrawEventHandler(gridView_CustomDrawRowIndicator); | |||
|  |             gvBoxes.CustomColumnDisplayText += gridv_CustomColumnDisplayText; | |||
|  |             gvBoxes.RowCellStyle += gridView1_RowCellStyle; | |||
|  |         } | |||
|  |         private void initialDataGridColumns(GridView gridView1) | |||
|  |         { | |||
|  |             setupGridView(gridView1, false); | |||
|  |             //setupGridView(gridView2, false,false); | |||
|  |             //setupGridView(gridView3, false,false); | |||
|  |             //   gridviewGoodsType.PopulateColumns(); | |||
|  |             gridView1.Columns.Clear(); | |||
|  |             // gridviewGoodsType.Columns.Remove(gridviewGoodsType.Columns["DealerPrice"]);  | |||
|  |             GridColumn myCol0 = new GridColumn() { Caption = "ID", Visible = true, FieldName = "id" }; | |||
|  |             myCol0.Visible = false; | |||
|  |             gridView1.Columns.Add(myCol0);   | |||
|  |             GridColumn myCol1 = new GridColumn() { Caption = "颜色", Visible = true, FieldName = "color"}; | |||
|  |             GridColumn myCol2 = new GridColumn() { Caption = "箱子编号", Visible = true, FieldName = "boxid" };  | |||
|  |             GridColumn myCol3 = new GridColumn() { Caption = "容积", Visible = true, FieldName = "volume" }; | |||
|  |             GridColumn myCol4 = new GridColumn() { Caption = "", Visible = true, FieldName = " " }; | |||
|  |            | |||
|  |              gridView1.Columns.Add(myCol1); | |||
|  |              gridView1.Columns.Add(myCol4);  | |||
|  |              gridView1.Columns.Add(myCol2); | |||
|  |              gridView1.Columns.Add(myCol4);  | |||
|  |              gridView1.Columns.Add(myCol3);  | |||
|  |             //to show bottom scroll bar | |||
|  |              gridView1.OptionsView.ColumnAutoWidth = true; | |||
|  |          //   gridView1.BestFitColumns(); | |||
|  |             gridView1.Focus(); | |||
|  | 
 | |||
|  | 
 | |||
|  |             //    initialGridView2Columns(); | |||
|  |             //gridControl2.DataSource = null; | |||
|  |         } | |||
|  | 
 | |||
|  |         private void gridv_CustomColumnDisplayText(object sender, DevExpress.XtraGrid.Views.Base.CustomColumnDisplayTextEventArgs e) | |||
|  |         { | |||
|  |             //if (sender == gridViewValidated) | |||
|  |             { | |||
|  | 
 | |||
|  | 
 | |||
|  |                 if (e.Column.FieldName == "color") | |||
|  |                 { | |||
|  | 
 | |||
|  |                     if (!pickDetailStatus.ContainsValue(e.DisplayText)) | |||
|  |                     { | |||
|  | 
 | |||
|  |                         int display = -100; | |||
|  |                         string disTxt = e.DisplayText; | |||
|  | 
 | |||
|  |                         try | |||
|  |                         { | |||
|  |                             display = Convert.ToInt16(e.DisplayText); | |||
|  | 
 | |||
|  |                             e.DisplayText = enumColors[display]; | |||
|  | 
 | |||
|  |                         } | |||
|  |                         catch | |||
|  |                         { | |||
|  |                             return; | |||
|  |                         } | |||
|  |                     } | |||
|  | 
 | |||
|  | 
 | |||
|  |                 } | |||
|  | 
 | |||
|  | 
 | |||
|  |             } | |||
|  |         } | |||
|  |         private void gridView1_RowCellStyle(object sender, DevExpress.XtraGrid.Views.Grid.RowCellStyleEventArgs e) | |||
|  |         { | |||
|  |             //e.Appearance.Font = new System.Drawing.Font("", 20, FontStyle.Bold); | |||
|  |           | |||
|  |             //下面是指定到具体单元格的字体显示红色 | |||
|  |             //if (e.RowHandle == 2 && e.Column.FieldName == "kunZs") | |||
|  |             //{ | |||
|  |             //    e.Appearance.ForeColor = Color.Red; | |||
|  |             //} | |||
|  |             /* | |||
|  |             //而下面则是指定到具体某列的字体显示红色 | |||
|  |             if (e.Column.FieldName == "kunZs" || e.Column.FieldName == "Zzl" || e.Column.FieldName == "mperz" || e.Column.FieldName == "kunZl" || e.Column.FieldName == "mperkun") | |||
|  |             { | |||
|  |                 e.Appearance.ForeColor = Color.Red; | |||
|  |                 e.Appearance.Font = new System.Drawing.Font("", 9, FontStyle.Bold); | |||
|  |             } | |||
|  | 
 | |||
|  |             if (e.Column.FieldName == "整件" || e.Column.FieldName == "散件") | |||
|  |             { | |||
|  |                 e.Appearance.ForeColor = Color.Red; | |||
|  |                 e.Appearance.Font = new System.Drawing.Font("", 10, FontStyle.Bold); | |||
|  |             } | |||
|  |              * */ | |||
|  |         } | |||
|  |         private void txtBoxID_KeyUp(object sender, KeyEventArgs e) | |||
|  |         { | |||
|  |             string boxId = txtBoxID.Text.Trim(); | |||
|  | 
 | |||
|  |             resetInfo(); | |||
|  |             if (boxId.Length < 6) | |||
|  |             { | |||
|  |                 return; | |||
|  |             } | |||
|  |             string waveNo = isAfter ? | |||
|  |                   tabWaves.SelectedTabPageIndex == 0 ? comboWaves.Text : lastpickingWave | |||
|  |                   : currentWave; | |||
|  |             if (string.IsNullOrEmpty(currentWave)) | |||
|  |             { | |||
|  |                 this.lbRegResult.Text = "注册失败,无波次信息"; | |||
|  |                 txtBoxID.SelectAll(); | |||
|  |                 return; | |||
|  |             } | |||
|  | 
 | |||
|  | 
 | |||
|  |             try | |||
|  |             { | |||
|  |                 int color = Convert.ToInt16( boxId.Substring(0, 2)); | |||
|  | 
 | |||
|  | 
 | |||
|  |                // if (!isAfter || tabWaves.SelectedTabPageIndex == 0) | |||
|  |                // {  | |||
|  |                     if (ComboColors.SelectedIndex > 0) | |||
|  |                     { | |||
|  |                         string colorText = ComboColors.Properties.Items[ ComboColors.SelectedIndex].Description; | |||
|  |                         if (enumColors.ContainsValue(colorText)) | |||
|  |                         { | |||
|  | 
 | |||
|  |                             foreach (int key in enumColors.Keys) | |||
|  |                             { | |||
|  |                                 if (enumColors[key] == colorText) | |||
|  |                                 { | |||
|  |                                     color = key; | |||
|  |                                     break; | |||
|  |                                 } | |||
|  | 
 | |||
|  |                             } | |||
|  | 
 | |||
|  |                         } | |||
|  | 
 | |||
|  |                     } | |||
|  |                // } | |||
|  | 
 | |||
|  |               | |||
|  | 
 | |||
|  | 
 | |||
|  |              lbColor.Text = enumColors.ContainsKey(color)?enumColors[color] :"未知颜色"; | |||
|  |              this.lbRegResult.Text = pickClient.regBox(boxId, waveNo, color) ? "注册成功" : "注册失败"; closeClient(); | |||
|  |              closeClient(); | |||
|  |              // | |||
|  |              queryBoundBoxes(); | |||
|  |              txtBoxID.Text = ""; | |||
|  |             // txtBoxID.SelectAll(); | |||
|  |              focusInput(); | |||
|  |             } | |||
|  |             catch(Exception er) | |||
|  |             { | |||
|  |                // showErrorMsg(er,""); | |||
|  | 
 | |||
|  |                 lbRegResult.Text = er.Message; | |||
|  |                 focusInput(); | |||
|  | 
 | |||
|  | 
 | |||
|  |             } | |||
|  |               | |||
|  | 
 | |||
|  |         } | |||
|  | 
 | |||
|  |         private void resetInfo() | |||
|  |         { | |||
|  |             lbRegResult.Text = ""; | |||
|  |             lbColor.Text = ""; | |||
|  |            // lbCurrentWave.Text = ""; | |||
|  |         } | |||
|  | 
 | |||
|  |         void refreshData() | |||
|  |         { | |||
|  |             DataSet ds = pickClient.getBoxRegWaves(); closeClient(); | |||
|  |             dtWaves = ds.Tables[0]; | |||
|  |             dtCurrentWave = ds.Tables[1]; | |||
|  |         } | |||
|  |         void bindWaves() | |||
|  |         { | |||
|  |             if (!isAfter) | |||
|  |             {  | |||
|  |                 return; | |||
|  |             } | |||
|  |             try | |||
|  |             { | |||
|  |                 if (dtWaves == null) | |||
|  |                 { | |||
|  |                     refreshData(); | |||
|  |                 } | |||
|  | 
 | |||
|  |                 List<string> waves = new List<string>(); | |||
|  |                 string lastwave = ""; | |||
|  |                 foreach (DataRow dr in dtWaves.Rows) | |||
|  |                 { | |||
|  |                     if (lastwave == dr["waveOrder"].ToString()) | |||
|  |                     { | |||
|  |                         continue; | |||
|  |                     } | |||
|  |                     lastwave = dr["waveOrder"].ToString(); | |||
|  |                     waves.Add(lastwave); | |||
|  |                 } | |||
|  | 
 | |||
|  |                 initialComboBoxs(comboWaves, waves.ToArray(), ""); | |||
|  | 
 | |||
|  |                 // bindColors();   | |||
|  |             } | |||
|  |             catch (Exception e) | |||
|  |             { | |||
|  |                 showErrorMsg(e, e.Message); | |||
|  |             } | |||
|  |             finally | |||
|  |             { | |||
|  |                  focusInput(); | |||
|  |             } | |||
|  | 
 | |||
|  |            | |||
|  | 
 | |||
|  |         } | |||
|  | 
 | |||
|  |         void bindColors() | |||
|  |         { | |||
|  |             if (dtWaves == null) | |||
|  |             { | |||
|  |                 return; | |||
|  |             } | |||
|  |             DataView dv = isAfter ? dtWaves.DefaultView : dtCurrentWave.DefaultView ; | |||
|  |           | |||
|  |             string waveOrder = isAfter ? | |||
|  |                 this.tabWaves.SelectedTabPageIndex ==0 ?comboWaves.Text:this.lbLastPickingWaveNo.Text | |||
|  |                 :currentWave; | |||
|  |            | |||
|  |             dv.RowFilter = string.Format("dpsOrder ='{0}'", waveOrder); | |||
|  |             List<string> colors = new List<string>(); | |||
|  |             colors.Add("自动"); | |||
|  |             foreach (DataRowView dr in dv) | |||
|  |             { | |||
|  | 
 | |||
|  |                 colors.Add(enumColors[Convert.ToInt16(dr["desk"].ToString().Trim())]); | |||
|  |             } | |||
|  | 
 | |||
|  |            // initialComboBoxs(ComboColors, colors.ToArray(), "自动"); | |||
|  | 
 | |||
|  |             ComboColors.Properties.Items.Clear(); | |||
|  | 
 | |||
|  |             foreach(string color in colors){ | |||
|  |                 RadioGroupItem rgi = new RadioGroupItem(); | |||
|  |                 rgi.Description = color;  | |||
|  |                 ComboColors.Properties.Items.Add(rgi); | |||
|  |             } | |||
|  | 
 | |||
|  | 
 | |||
|  | 
 | |||
|  | 
 | |||
|  | 
 | |||
|  | 
 | |||
|  |              | |||
|  |          //   ComboColors.Lines = colors.ToArray(); | |||
|  |             | |||
|  | 
 | |||
|  |          //   this.gridControlBoxes.DataSource = dv; | |||
|  | 
 | |||
|  |         } | |||
|  | 
 | |||
|  |         void queryBoundBoxes() | |||
|  |         { | |||
|  | 
 | |||
|  |             try | |||
|  |             { | |||
|  |                 string waveOrder = isAfter ?  | |||
|  |                     this.tabWaves.SelectedTabPageIndex == 0 ? comboWaves.Text: this.lbLastPickingWaveNo.Text  | |||
|  |                     :currentWave; | |||
|  |                 lbCurrentWave.Text = waveOrder; | |||
|  |                 DataTable dt = pickClient.getBoxsByWave(waveOrder, -1); closeClient(); | |||
|  |                 initialDataGridColumns(gvBoxes); | |||
|  |                 gridControlBoxes.DataSource = dt; | |||
|  | 
 | |||
|  |             } | |||
|  |             catch (Exception e) | |||
|  |             { | |||
|  |                 showErrorMsg(e, ""); | |||
|  |             } | |||
|  |             finally | |||
|  |             { | |||
|  |              //   focusInput(); | |||
|  |             } | |||
|  | 
 | |||
|  |         } | |||
|  | 
 | |||
|  |         private void comboWaves_SelectedIndexChanged(object sender, EventArgs e) | |||
|  |         { | |||
|  |             if (tabWaves.SelectedTabPageIndex == 1) | |||
|  |             { | |||
|  |                 bindColors(); | |||
|  |                 queryBoundBoxes(); | |||
|  |             } | |||
|  |         } | |||
|  | 
 | |||
|  |         private void btnRefresh_Click(object sender, EventArgs e) | |||
|  |         { | |||
|  |             bindWaves(); | |||
|  |             bindCurrentWave(null,null); | |||
|  |         } | |||
|  | 
 | |||
|  |         string lastpickingWave = "",currentWave =""; | |||
|  |          | |||
|  |         delegate void whatisthisfor(); | |||
|  |         private void bindCurrentWave(object source, System.Timers.ElapsedEventArgs e) | |||
|  |         { | |||
|  |             try | |||
|  |             { | |||
|  |                 DataSet ds = pickClient.getBoxRegWaves(); closeClient(); | |||
|  |                 dtCurrentWave = ds.Tables[1]; | |||
|  |                 DataTable dt = ds.Tables[0]; | |||
|  |                 string tmpC ="",tmpL = ""; | |||
|  |                 if (dtCurrentWave.Rows.Count > 0) | |||
|  |                 { | |||
|  |                     tmpC = dtCurrentWave.Rows[0][0].ToString(); | |||
|  |                  } | |||
|  |                 if (dt.Rows.Count > 0) | |||
|  |                 { | |||
|  |                     tmpL = dt.Rows[0][0].ToString(); | |||
|  |                 } | |||
|  |                  | |||
|  | 
 | |||
|  | 
 | |||
|  |                 if (InvokeRequired) | |||
|  |                 { | |||
|  |                     this.Invoke(new whatisthisfor(delegate() | |||
|  |                     { | |||
|  |                       //  focusInput(); | |||
|  |                         if(!isAfter && tmpC != currentWave){  | |||
|  |                             lbCurrentWave.Text = tmpC; | |||
|  |                             currentWave = tmpC; | |||
|  |                         } | |||
|  | 
 | |||
|  |                         if (!isAfter) | |||
|  |                         { | |||
|  |                             bindColors(); | |||
|  |                             queryBoundBoxes(); | |||
|  |                             focusInput(); | |||
|  |                             return; | |||
|  |                         } | |||
|  | 
 | |||
|  |                         if (tmpL != lastpickingWave) | |||
|  |                         { | |||
|  |                             this.lbLastPickingWaveNo.Text = tmpL; | |||
|  |                             lastpickingWave = tmpL; | |||
|  | 
 | |||
|  |                           //  if (tabWaves.SelectedTabPageIndex == 0) | |||
|  |                             { | |||
|  |                                 bindColors(); | |||
|  |                                 queryBoundBoxes(); | |||
|  |                             } | |||
|  |                             bindWaves(); | |||
|  |                         } | |||
|  |                         else | |||
|  |                         { | |||
|  |                             focusInput();  | |||
|  |                         } | |||
|  |                         | |||
|  |                         | |||
|  |                       //  focusInput();  | |||
|  |                     })); | |||
|  |                     return; | |||
|  |                 } | |||
|  | 
 | |||
|  |                 if (!isAfter && tmpC != currentWave) | |||
|  |                 { | |||
|  |                     lbCurrentWave.Text = tmpC; | |||
|  |                     currentWave = tmpC; | |||
|  |                 } | |||
|  | 
 | |||
|  |                 if (!isAfter) | |||
|  |                 { | |||
|  |                     bindColors(); | |||
|  |                     queryBoundBoxes(); | |||
|  |                     focusInput();  | |||
|  |                     return; | |||
|  |                 } | |||
|  | 
 | |||
|  | 
 | |||
|  |                 if (tmpL != lastpickingWave) | |||
|  |                 { | |||
|  |                     this.lbLastPickingWaveNo.Text = tmpL; | |||
|  |                     lastpickingWave = tmpL; | |||
|  | 
 | |||
|  |                    // if (tabWaves.SelectedTabPageIndex == 0) | |||
|  |                     { | |||
|  |                         bindColors(); | |||
|  |                         queryBoundBoxes(); | |||
|  |                     } | |||
|  |                     bindWaves(); | |||
|  |                 }  | |||
|  |                // focusInput(); | |||
|  | 
 | |||
|  |             } | |||
|  |             catch (Exception er) | |||
|  |             { | |||
|  |                 showErrorMsg(er, ""); | |||
|  |             } | |||
|  | 
 | |||
|  |         } | |||
|  | 
 | |||
|  | 
 | |||
|  |         System.Timers.Timer timer = new System.Timers.Timer();//实例化Timer类 | |||
|  | 
 | |||
|  |          | |||
|  |         private void initialTimer() | |||
|  |         { | |||
|  |             int intTime = 5000; | |||
|  |             timer.Interval = intTime;//设置间隔时间,为毫秒; | |||
|  |             timer.Elapsed += new System.Timers.ElapsedEventHandler(bindCurrentWave );//到达时间的时候执行事件; | |||
|  |             timer.AutoReset = true;//设置是执行一次(false)还是一直执行(true); | |||
|  |             timer.Enabled = true;//是否执行System.Timers.Timer.Elapsed事件; | |||
|  |             timer.Start(); | |||
|  |         } | |||
|  | 
 | |||
|  |         private void tabWaves_SelectedPageChanged(object sender, DevExpress.XtraLayout.LayoutTabPageChangedEventArgs e) | |||
|  |         { | |||
|  |             bindColors(); | |||
|  |             queryBoundBoxes(); | |||
|  |             focusInput(); | |||
|  |         } | |||
|  | 
 | |||
|  |         private void focusInput() | |||
|  |         { | |||
|  |             LogHelper.debug(this.GetType(),string.Format("当前是焦点吗?{0}。。。。开始获得焦点",txtBoxID.Focused)); | |||
|  |              | |||
|  |             if (!txtBoxID.Focused) | |||
|  |             { | |||
|  |                 txtBoxID.Focus(); | |||
|  |             } | |||
|  |         } | |||
|  |        | |||
|  |         private void rdGrpType_SelectedIndexChanged(object sender, EventArgs e) | |||
|  |         { | |||
|  |             isAfter = rdGrpType.SelectedIndex == 0; | |||
|  |             lgAfter.Visibility = isAfter ? DevExpress.XtraLayout.Utils.LayoutVisibility.Always : DevExpress.XtraLayout.Utils.LayoutVisibility.Never; | |||
|  |               | |||
|  |             bindCurrentWave(null,null); | |||
|  |             bindColors(); | |||
|  |             queryBoundBoxes(); | |||
|  |             focusInput(); | |||
|  |         } | |||
|  | 
 | |||
|  | 
 | |||
|  | 
 | |||
|  |     } | |||
|  | } |