1284 lines
		
	
	
		
			40 KiB
		
	
	
	
		
			C#
		
	
	
	
		
		
			
		
	
	
			1284 lines
		
	
	
		
			40 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.Base; | |||
|  | //using DeiNiu.wms.Logical; | |||
|  | using DeiNiu.wms.Data; | |||
|  | using DevExpress.XtraGrid.Columns; | |||
|  |   | |||
|  | using System.Threading; | |||
|  | using DevExpress.XtraGrid.Views.Grid; | |||
|  | using DevExpress.XtraEditors.DXErrorProvider; | |||
|  | using DeiNiu.wms.Data.Model; | |||
|  | using DevExpress.XtraEditors; | |||
|  | using DevExpress.XtraEditors.Controls; | |||
|  | using DeiNiu.Utils; | |||
|  | using DevExpress.XtraEditors.Repository;  | |||
|  | using elelab; | |||
|  | using DeiNiu.wms.Logical; | |||
|  | using Model; | |||
|  | 
 | |||
|  | namespace DeiNiu.wms.win | |||
|  | { | |||
|  |     public partial class GoodsOutForm : BasicRibbonForm | |||
|  |     { | |||
|  |   | |||
|  |       //  lWmsStock ls = new lWmsStock(); | |||
|  |         lWmsOutPickLable lgt = new lWmsOutPickLable(); | |||
|  |       //  WmsOutPickRequest outRequest = new WmsOutPickRequest(); | |||
|  |      //   lWmsOutRequest lgOutReq = new lWmsOutRequest(); | |||
|  |        // lWmsOutPickRequest outPickRequest = new lWmsOutPickRequest(); | |||
|  |         private string lastQuery = ""; | |||
|  |         private DataTable dtPickOrders; | |||
|  |         private int selectedRowIndex = -1; | |||
|  |      //   private WmsOutPickRequest selectedRequest; | |||
|  |         int preCnt = 0; | |||
|  |         Thread threadPreProcess; | |||
|  |         bool autoOrder, autoWave; | |||
|  |         bool isManualRefreshPickList = false; | |||
|  |      //   string currentWaveOrder = ""; | |||
|  |         DataTable dtException; | |||
|  |         DataTable dtBulks;  | |||
|  |     //    WmsOutPickDetail_tmp exceptionDetail; | |||
|  | 
 | |||
|  |         public GoodsOutForm() | |||
|  |         { | |||
|  |           debug("start 出库。。。。。。"); | |||
|  |               | |||
|  |             InitializeComponent(); | |||
|  |             initialControls(); | |||
|  |             initialBackGroundTasks(); | |||
|  |             debug("end 出库。。。。。。"); | |||
|  |         } | |||
|  |         #region initialControls | |||
|  |         private void initialControls() | |||
|  |         { | |||
|  |             WmsConstants.MAX_COLORS = Convert.ToInt16(spinColors.Value); | |||
|  |             initialDataGrid(); | |||
|  |             initialQueryInput();  | |||
|  |             setValidationRule(); | |||
|  |             initialTimer(); | |||
|  |            // setProgressbar(); | |||
|  |              | |||
|  |         } | |||
|  |         private void initialBackGroundTasks() | |||
|  |         { | |||
|  | 
 | |||
|  | 
 | |||
|  |              | |||
|  | 
 | |||
|  |             //lgOutReq.UpdateUIDelegate += updatePreOutStatus; | |||
|  |             //lgOutReq.TaskCallBack += preOutFinished; | |||
|  |             if (autoOrder) | |||
|  |             { | |||
|  |                 preErpOrders(); | |||
|  |             } | |||
|  |            | |||
|  |              swAutoWave.IsOn = WmsConstants.AUTO_NEW_WAVE; | |||
|  |             //lgt.UpdateUIDelegate +=  updatePickDetails; | |||
|  |             //lgt.TaskCallBack += loadWaveDetails;// waveStart; | |||
|  |             lightLabelsCurrentWave(); | |||
|  |             if (autoWave) | |||
|  |             { | |||
|  |                 newWave(); | |||
|  |             } | |||
|  |             else | |||
|  |             { | |||
|  |                | |||
|  |              //   lightLabelsCurrentWave(); | |||
|  |             } | |||
|  | 
 | |||
|  |             //Thread threadPreProcess = new Thread(searchLight); | |||
|  |             // threadPreProcess.IsBackground = true; | |||
|  |             // threadPreProcess.Start(); | |||
|  |   | |||
|  |         } | |||
|  |         | |||
|  |          | |||
|  |        | |||
|  |         private void setValidationRule() | |||
|  |         { | |||
|  |           //  dxValidationProvider.SetValidationRule(comWarehouse, ValidationRules.notEmptyValidationRule); | |||
|  |             //txtGoodType.Properties.MaxLength = 40; | |||
|  |             //txtGoodDesc.Properties.MaxLength = 250; | |||
|  |             //textEdit1.Properties.MaxLength = txtGoodType.Properties.MaxLength; | |||
|  |         } | |||
|  | 
 | |||
|  |         private void initialQueryInput() | |||
|  |         { | |||
|  | 
 | |||
|  |         } | |||
|  |        | |||
|  |         | |||
|  |          | |||
|  | 
 | |||
|  |         private void initialGridView3Columns(GridView gridview) | |||
|  |         { | |||
|  |               | |||
|  |             { | |||
|  |                 setupGridView(gridview, true, true, false); | |||
|  |             } | |||
|  |             gridview.FocusRectStyle = DrawFocusRectStyle.None; | |||
|  |             //   gridviewGoodsType.PopulateColumns(); | |||
|  |             gridview.Columns.Clear(); | |||
|  |             // gridviewGoodsType.Columns.Remove(gridviewGoodsType.Columns["DealerPrice"]);  | |||
|  |             GridColumn myCol0 = new GridColumn() { Caption = "ID", Visible = true, FieldName = "id" }; | |||
|  |             myCol0.Visible = false; | |||
|  |             gridview.Columns.Add(myCol0); | |||
|  |         | |||
|  |             GridColumn myCol17 = new GridColumn() { Caption = "状态", Visible = true, FieldName ="state" }; | |||
|  |             GridColumn myCol18 = new GridColumn() { Caption = "说明", Visible = true, FieldName ="description" }; | |||
|  |             GridColumn myCol100 = new GridColumn() { Caption = "数量", Visible = true, FieldName = "count" }; | |||
|  | 
 | |||
|  |             GridColumn myCol20 = new GridColumn() { Caption = "波次", Visible = true, FieldName = WmsOutPickLable.fields.waveOrder.ToString() }; | |||
|  |             GridColumn myCol21 = new GridColumn() { Caption = "颜色", Visible = true, FieldName = "color" }; | |||
|  |             GridColumn myCol22 = new GridColumn() { Caption = "货位", Visible = true, FieldName = WmsOutPickLable.fields.locationId.ToString() }; | |||
|  |             GridColumn myCol23 = new GridColumn() { Caption = "标签", Visible = true, FieldName = WmsOutPickLable.fields.elabId.ToString() }; | |||
|  |            /* | |||
|  |             GridColumn myCol24 = new GridColumn() { Caption = "客户", Visible = true, FieldName = WmsOutPickRequest.fields.customerName.ToString() }; | |||
|  |             GridColumn myCol25 = new GridColumn() { Caption = "出库单", Visible = true, FieldName = WmsOutPickRequest.fields.pickOrderNo.ToString() }; | |||
|  |             GridColumn myCol26 = new GridColumn() { Caption = "复核异常", Visible = true, FieldName = "exception" }; | |||
|  |             GridColumn myCol27 = new GridColumn() { Caption = "复核数量", Visible = true, FieldName = WmsOutPickDetail.fields.confirmedCount.ToString() }; | |||
|  |             GridColumn myCol28 = new GridColumn() { Caption = "说明", Visible = true, FieldName = WmsOutPickDetail.fields.validRemark.ToString() }; | |||
|  |             GridColumn myCol281 = new GridColumn() { Caption = "复核台", Visible = true, FieldName = "desk" }; | |||
|  |             */ | |||
|  |             GridColumn myCol29 = new GridColumn() { Caption = "标签点亮", Visible = true, FieldName = "isLightUp" }; | |||
|  |             GridColumn myCol30 = new GridColumn() { Caption = "拣货状态", Visible = true, FieldName = "isPicked" }; | |||
|  |             GridColumn myCol31 = new GridColumn() { Caption = "端口", Visible = true, FieldName = "port" }; | |||
|  |             GridColumn myCol32 = new GridColumn() { Caption = "坐标", Visible = true, FieldName = "elabAddress" }; | |||
|  |             GridColumn myCol25 = new GridColumn() { Caption = "拣货单", Visible = true, FieldName = "pickOrderNo" }; | |||
|  |   | |||
|  | 
 | |||
|  |             RepositoryItemImageComboBox repositoryImageComboBox2 = new RepositoryItemImageComboBox();//新建一个RepositoryItemImageComboBox   | |||
|  |             repositoryImageComboBox2.GlyphAlignment = DevExpress.Utils.HorzAlignment.Center; | |||
|  |             repositoryImageComboBox2.SmallImages = imageList1; //指定一组图片   | |||
|  |             string[] s = new String[] {"1","0"}; | |||
|  |             for (int i = 0; i < s.Length; i++) | |||
|  |                 repositoryImageComboBox2.Items.Add(new ImageComboBoxItem(s[i], i + 1, i));//对应值绑定对应的图片   | |||
|  |             RepositoryItem ri = repositoryImageComboBox2 as RepositoryItem; | |||
|  |             gridControl1.RepositoryItems.Add(ri); | |||
|  |             myCol29.ColumnEdit = ri;      //绑定到GridColumn   | |||
|  | 
 | |||
|  |             myCol30.ColumnEdit = ri; | |||
|  | 
 | |||
|  | 
 | |||
|  |             if (gridview == gridView1) | |||
|  |             {  | |||
|  |                 gridview.Columns.Add(myCol22); | |||
|  |                 gridview.OptionsView.ColumnAutoWidth = false; | |||
|  |                 gridview.BestFitColumns(); | |||
|  |                 return; | |||
|  |             } | |||
|  | 
 | |||
|  |             gridview.Columns.Add(myCol25); | |||
|  |             gridview.Columns.Add(myCol29); | |||
|  |             gridview.Columns.Add(myCol30);  | |||
|  |          | |||
|  |             gridview.Columns.Add(myCol22); | |||
|  |             gridview.Columns.Add(myCol100); | |||
|  |             gridview.Columns.Add(myCol21); | |||
|  |             | |||
|  |             gridview.Columns.Add(myCol23); | |||
|  |          /* | |||
|  |             gridview.Columns.Add(myCol25); | |||
|  |             gridview.Columns.Add(myCol101); | |||
|  |             gridview.Columns.Add(myCol5); | |||
|  |           //  gridview.Columns.Add(myCol17); | |||
|  |             gridview.Columns.Add(myCol24); | |||
|  | 
 | |||
|  |             gridview.Columns.Add(myCol7); | |||
|  | 
 | |||
|  |             gridview.Columns.Add(myCol14); | |||
|  |             gridview.Columns.Add(myCol3); | |||
|  | 
 | |||
|  |             gridview.Columns.Add(myCol15); | |||
|  |             gridview.Columns.Add(myCol16); | |||
|  |             gridview.Columns.Add(myCol3);  | |||
|  |             gridview.Columns.Add(myCol8); | |||
|  |             //gridview.Columns.Add(myCol9); | |||
|  |               | |||
|  |             gridview.Columns.Add(myCol2); | |||
|  |             //   gridview.Columns.Add(myCol6); | |||
|  |               | |||
|  |             gridview.Columns.Add(myCol4); | |||
|  |               | |||
|  |             gridview.Columns.Add(myCol12); | |||
|  |             gridview.Columns.Add(myCol1); | |||
|  |            */ | |||
|  |             gridview.Columns.Add(myCol32); | |||
|  |             gridview.Columns.Add(myCol31); | |||
|  |             gridview.Columns.Add(myCol18); | |||
|  |             //to show bottom scroll bar | |||
|  |             gridview.OptionsView.ColumnAutoWidth = false; | |||
|  |             gridview.BestFitColumns(); | |||
|  |             //  gridView2.Focus(); | |||
|  |         } | |||
|  | 
 | |||
|  |         #endregion | |||
|  | 
 | |||
|  |          | |||
|  |         /// <summary> | |||
|  |         /// 预处理,按客户分拆订单,生成分拣单,并出库 | |||
|  |         /// </summary> | |||
|  |         private void preErpOrders() | |||
|  |         { | |||
|  |    | |||
|  |            | |||
|  |             this.loadPickOrders(); | |||
|  |              | |||
|  | 
 | |||
|  |           //  client.Close(); | |||
|  |         } | |||
|  | 
 | |||
|  |      | |||
|  | 
 | |||
|  |         delegate void AsynUpdateUI(int step); | |||
|  |         | |||
|  |         private void updatePreOutStatus(int i) | |||
|  |         { | |||
|  |             if (InvokeRequired) | |||
|  |             { | |||
|  |                 this.Invoke(new AsynUpdateUI(delegate(int s) | |||
|  |                 { | |||
|  |                     //progressBarControl1.Properties.Maximum = WmsConstants.PREPICKING_ORDERS_CNT; | |||
|  |                     //progressBarControl1.Position = i; | |||
|  |                     //this.prgbar. += s; | |||
|  |                    // this.prgbar.Text = i + "/" + preCnt; | |||
|  |                 }), i); | |||
|  |                 if (i == dtPickOrders.Rows.Count) | |||
|  |                 { | |||
|  |                  //   loadData();//更新界面列表 | |||
|  |                 } | |||
|  |             } | |||
|  |             else | |||
|  |             { | |||
|  |                 //progressBarControl1.Properties.Maximum = WmsConstants.PREPICKING_ORDERS_CNT; | |||
|  |                 //progressBarControl1.Position += 1; | |||
|  |               //  this.prgbar.Text = i + "/" + preCnt; | |||
|  |                 if (i == dtPickOrders.Rows.Count) | |||
|  |                 { | |||
|  |                  //   loadData();//更新界面列表 | |||
|  |                 } | |||
|  |             } | |||
|  |         } | |||
|  | 
 | |||
|  |         DateTime lastRefreshTime; | |||
|  |         int refreshInterval = 5; | |||
|  |         //完成任务时需要调用 | |||
|  |         delegate void loadNewPickOrders(); | |||
|  |         private void refreshOrderList() | |||
|  |         { | |||
|  |             //还可以进行其他的一些完任务完成之后的逻辑处理 | |||
|  |   | |||
|  |             //swAutoOrder.Enabled = true; | |||
|  |             //btnPickOrders.Enabled = !autoOrder;  | |||
|  | 
 | |||
|  |             if (!autoOrder && !this.isManualRefreshPickList) | |||
|  |             { | |||
|  |                 return; | |||
|  |             } | |||
|  | 
 | |||
|  |             TimeSpan ts = DateTime.Now - lastRefreshTime; | |||
|  | 
 | |||
|  |             if (ts.TotalSeconds < refreshInterval) | |||
|  |             { | |||
|  |                 return; | |||
|  |             } | |||
|  |             | |||
|  |             this.isManualRefreshPickList = false; //手动刷新 只单独自动刷一次 | |||
|  |               | |||
|  |             lastRefreshTime = DateTime.Now; | |||
|  |             if (InvokeRequired) | |||
|  |             { | |||
|  |                 this.Invoke(new loadNewPickOrders(delegate() | |||
|  |                 { | |||
|  |                      | |||
|  |                     this.loadPickOrders(); | |||
|  |                     if (autoOrder) | |||
|  |                     { | |||
|  |                         setPreOrderInterVal(); | |||
|  |                     } | |||
|  |                 })); | |||
|  | 
 | |||
|  |             } | |||
|  |             else | |||
|  |             { | |||
|  |                | |||
|  |                 this.loadPickOrders(); | |||
|  |                 if (autoOrder) | |||
|  |                 { | |||
|  |                     setPreOrderInterVal(); | |||
|  |                 } | |||
|  |             } | |||
|  |   | |||
|  | 
 | |||
|  | 
 | |||
|  |         } | |||
|  | 
 | |||
|  |         private void setPreOrderInterVal() | |||
|  |         { | |||
|  |              | |||
|  |         } | |||
|  | 
 | |||
|  |          | |||
|  | 
 | |||
|  | 
 | |||
|  |         /// <summary> | |||
|  |         /// 更新拣选明细 | |||
|  |         /// </summary> | |||
|  |         private void   updatePickDetails() { | |||
|  | 
 | |||
|  |         } | |||
|  |         DateTime lastWaveRequestTime; | |||
|  |         delegate void loadNewCurrentWave(); | |||
|  |         /// <summary> | |||
|  |         /// start new wave | |||
|  |         /// </summary> | |||
|  |         public void waveStart() { | |||
|  | 
 | |||
|  |             //swAutoWave.Enabled = true; | |||
|  |             //btnNewWave.Enabled = !autoWave; | |||
|  | 
 | |||
|  |           //  loadWaveDetails(); | |||
|  | 
 | |||
|  |             if (lastWaveRequestTime == null) | |||
|  |             { | |||
|  |                 lastWaveRequestTime = DateTime.Now; | |||
|  |             } | |||
|  |             else | |||
|  |             { | |||
|  |                 TimeSpan ts = DateTime.Now - lastWaveRequestTime; | |||
|  |                 int sleepTime = (int) spinWave.Value ;//波次间隔 5s | |||
|  |                 if (ts.TotalSeconds < sleepTime) | |||
|  |                 { | |||
|  |                     return; | |||
|  |                 } | |||
|  | 
 | |||
|  |             } | |||
|  | 
 | |||
|  |             if (!canNewWave) // if (!lgt.canNewWave) | |||
|  |             { | |||
|  |                  | |||
|  |                 return; | |||
|  |             } | |||
|  | 
 | |||
|  |             if (swAutoWave.IsOn) | |||
|  |             { | |||
|  |                 // int sleepTime = (int) spinWave.Value * 1000;//波次间隔 5s | |||
|  |                 //while (!lgt.canNewWave) | |||
|  |                 //{  | |||
|  |                 //    Thread.CurrentThread.Join(1000);  | |||
|  |                 //} | |||
|  |                 // Thread.CurrentThread.Join(sleepTime);   | |||
|  | 
 | |||
|  |                 this.clearWaveData(); | |||
|  |                 newWave(); | |||
|  |                 lastWaveRequestTime = DateTime.Now; | |||
|  |             } | |||
|  |             else | |||
|  |             { | |||
|  |                 btnNewWave.Enabled = dtBulks== null || dtBulks.Rows.Count == 0 ; | |||
|  |             } | |||
|  | 
 | |||
|  |         } | |||
|  | 
 | |||
|  |         void loadWaveDetails() | |||
|  |         { | |||
|  |             debug("start to loadWaveDetails....."); | |||
|  |             if (InvokeRequired) | |||
|  |             { | |||
|  |                 this.Invoke(new loadNewCurrentWave(delegate() | |||
|  |                 { | |||
|  |                     swAutoWave.Enabled = true; | |||
|  |                     btnNewWave.Enabled = !autoWave; | |||
|  |                     this.loadPickOrdersInWave(); | |||
|  |                     this.loadPickOrders();//更新等待订单列表 | |||
|  |                  //   btnEndWave.Enabled = true; | |||
|  |                 })); | |||
|  | 
 | |||
|  |             } | |||
|  |             else | |||
|  |             { | |||
|  |                 swAutoWave.Enabled = true; | |||
|  |                 btnNewWave.Enabled = !autoWave; | |||
|  |                 this.loadPickOrdersInWave(); | |||
|  |              //   btnEndWave.Enabled = true; | |||
|  |             } | |||
|  |             debug("end loadWaveDetails...."); | |||
|  |         } | |||
|  | 
 | |||
|  | 
 | |||
|  | 
 | |||
|  |        // Thread threadNewWave; | |||
|  |         private void newWave() | |||
|  |         { | |||
|  |             try | |||
|  |             { | |||
|  |                 debug("start to create new wave ....."); | |||
|  |                 Thread threadNewWave = new Thread(newPickWave); | |||
|  |                 threadNewWave.IsBackground = true; | |||
|  |                 threadNewWave.Start(); | |||
|  |                // loadWaveDetails(); | |||
|  |                 // lgt.newPickWave(); | |||
|  | 
 | |||
|  |                 debug(" create new wave in new thread....."); | |||
|  |             } | |||
|  |             catch (DeiNiuException de) | |||
|  |             { | |||
|  |                 showErrorMsg(de.Message); | |||
|  |             } | |||
|  |             catch (Exception er) | |||
|  |             { | |||
|  |                 showErrorMsg(er.Message); | |||
|  |             } | |||
|  | 
 | |||
|  |         } | |||
|  |   | |||
|  | 
 | |||
|  |          | |||
|  |         private void loadPickOrdersInWave() | |||
|  |         { | |||
|  | 
 | |||
|  |             debug("start loadPickOrdersInWave....."); | |||
|  |             showWaitForm(); | |||
|  |             try | |||
|  |             { | |||
|  |                 DataSet ds = lgt.getWmsOutPickLable.getCurrentWavePick(); | |||
|  |                 dtBulks = ds .Tables[0]; | |||
|  | 
 | |||
|  |                 gridControl1.DataSource = ds.Tables[1].DefaultView; | |||
|  |                 initialGridView3Columns(gridView1); | |||
|  |                 updateLableStatus(dtBulks); | |||
|  |                 debug(string.Format("load bulk details in current wave,count {0} ", dtBulks.Rows.Count)); | |||
|  |                 gridControl2.DataSource = dtBulks.DefaultView; | |||
|  |                 initialGridView3Columns(gridView3); | |||
|  |                 btnRelight.Enabled = dtBulks.Rows.Count > 0; | |||
|  |                 WmsConstants.WAVE_CURRENT_ORDER = ""; | |||
|  |                 btnNewWave.Enabled = dtBulks.Rows.Count == 0; | |||
|  |                 if (dtBulks.Rows.Count > 0) | |||
|  |                 { | |||
|  |                     WmsConstants.WAVE_LAST_FREE_TIME = DateTime.MinValue; | |||
|  |                     //if (string.IsNullOrEmpty(WmsConstants.WAVE_CURRENT_ORDER)) | |||
|  |                     { | |||
|  | 
 | |||
|  |                         string waveStarTime = dtBulks.Rows[0]["createtime"].ToString(); | |||
|  |                         DateTime lastWaveTime = Convert.ToDateTime(waveStarTime); | |||
|  |                         string currentWaveOrder = dtBulks.Rows[0]["waveOrder"].ToString(); | |||
|  |                         WmsConstants.WAVE_LAST_TIME = lastWaveTime; | |||
|  |                         WmsConstants.WAVE_CURRENT_ORDER = currentWaveOrder; //只显示有零货的波次 | |||
|  |                     } | |||
|  |                      | |||
|  |                 } | |||
|  |                 else | |||
|  |                 { | |||
|  |                     if (WmsConstants.WAVE_LAST_FREE_TIME == DateTime.MinValue) | |||
|  |                     { | |||
|  |                         WmsConstants.WAVE_LAST_FREE_TIME = DateTime.Now; | |||
|  |                     } | |||
|  |                 } | |||
|  |                 debug("initialGridView2Columns .....1"); | |||
|  |                 | |||
|  |                 lbWaveNo.Text = string.IsNullOrEmpty(WmsConstants.WAVE_CURRENT_ORDER) ? "空闲" : WmsConstants.WAVE_CURRENT_ORDER; | |||
|  |                 btnEndWave.Enabled = !string.IsNullOrEmpty(WmsConstants.WAVE_CURRENT_ORDER); | |||
|  |                 //get validaiton exception list | |||
|  |                 debug("initialGridView2Columns .....2"); | |||
|  |                 | |||
|  |   | |||
|  |             } | |||
|  |               | |||
|  |             catch (Exception er) | |||
|  |             { | |||
|  |                 //  setCurrentRequestDetail(); | |||
|  |                // showErrorMsg(er.Message); | |||
|  |             }  | |||
|  |             closeWaitForm(); | |||
|  |             debug("end loadPickOrdersInWave....."); | |||
|  |         } | |||
|  | 
 | |||
|  | 
 | |||
|  |          | |||
|  |          | |||
|  |         private void clearInputs() | |||
|  |         { | |||
|  | 
 | |||
|  |         } | |||
|  | 
 | |||
|  |          | |||
|  |         | |||
|  | 
 | |||
|  |         System.Timers.Timer timer = new System.Timers.Timer();//实例化Timer类 | |||
|  | 
 | |||
|  |         //private void timeCnt() | |||
|  |         //{ | |||
|  |         //    timer.Start(); ; | |||
|  |         //} | |||
|  |         private void initialTimer() | |||
|  |         { | |||
|  |             int intTime = 1000; | |||
|  |             timer.Interval = intTime;//设置间隔时间,为毫秒; | |||
|  |             timer.Elapsed += new System.Timers.ElapsedEventHandler(showWaveSpan);//到达时间的时候执行事件; | |||
|  |             timer.AutoReset = true;//设置是执行一次(false)还是一直执行(true); | |||
|  |             timer.Enabled = true;//是否执行System.Timers.Timer.Elapsed事件; | |||
|  |              timer.Start();  | |||
|  |         } | |||
|  | 
 | |||
|  |         private void showWaveSpan(object source, System.Timers.ElapsedEventArgs e) | |||
|  |         { | |||
|  |          //   debug(string.Format(" timer loop begin .... " )); | |||
|  |             TimeSpan ts = DateTime.Now - WmsConstants.WAVE_LAST_TIME;// WmsConstants.WAVE_LAST_TIME;  | |||
|  |             try | |||
|  |             { | |||
|  |                 if (InvokeRequired) | |||
|  |                 { | |||
|  |                     this.Invoke(new loadNewCurrentWave(delegate() | |||
|  |                     { | |||
|  |                       //  lbLightsInfo.Text = (lights.Count > 0 ? "" : "未检测到通道灯"); | |||
|  |                         refreshOrderList(); | |||
|  | 
 | |||
|  |                         updateLableStatus(); | |||
|  |                         if (string.IsNullOrEmpty(WmsConstants.WAVE_CURRENT_ORDER)) //start new wave | |||
|  |                         { | |||
|  |                             lbWaveSpan.ForeColor = Color.Green; | |||
|  | 
 | |||
|  |                             TimeSpan ts1 = DateTime.Now - WmsConstants.WAVE_LAST_FREE_TIME; | |||
|  |                             lbWaveSpan.Text = string.Format("{0:D2}:{1:D2}:{2:D2}", ts1.Hours, ts1.Minutes, ts1.Seconds); | |||
|  |                            // debug(string.Format(" timer loop to start new wave.... ")); | |||
|  |                           //  this.clearWaveData(); | |||
|  |                             waveStart();// newWave(); | |||
|  |                         } | |||
|  |                         else | |||
|  |                         { | |||
|  |                             lbWaveSpan.ForeColor = Color.Black; | |||
|  |                             lbWaveSpan.Text = string.Format("{0:D2}:{1:D2}:{2:D2}", ts.Hours, ts.Minutes, ts.Seconds); | |||
|  |                         } | |||
|  |                     }));  | |||
|  | 
 | |||
|  |                 } | |||
|  |                 else | |||
|  |                 { | |||
|  |                     //lbLightsInfo.Text = (lights.Count > 0 ? "" : "未检测到通道灯"); | |||
|  |                     updateLableStatus(); | |||
|  |                     if (string.IsNullOrEmpty(WmsConstants.WAVE_CURRENT_ORDER)) //start new wave | |||
|  |                     { | |||
|  |                         lbWaveSpan.ForeColor = Color.Green; | |||
|  |                         TimeSpan ts1 = DateTime.Now - WmsConstants.WAVE_LAST_FREE_TIME; | |||
|  |                         lbWaveSpan.Text = string.Format("{0:D2}:{1:D2}:{2:D2}", ts1.Hours, ts1.Minutes, ts1.Seconds); | |||
|  |                        // this.clearWaveData(); | |||
|  |                         waveStart();// newWave(); | |||
|  |                     } | |||
|  |                     else | |||
|  |                     { | |||
|  |                         lbWaveSpan.ForeColor = Color.Black; | |||
|  |                         lbWaveSpan.Text = string.Format("{0:D2}:{1:D2}:{2:D2}", ts.Hours, ts.Minutes, ts.Seconds); | |||
|  |                     } | |||
|  |                 } | |||
|  |             } | |||
|  |             catch (Exception er) | |||
|  |             { | |||
|  |                 LogHelper.WriteLog(typeof(GoodsOutForm), er); | |||
|  |             } | |||
|  | 
 | |||
|  |          //   debug(string.Format(" timer loop end .... ")); | |||
|  |              | |||
|  | 
 | |||
|  |         } | |||
|  | 
 | |||
|  |         | |||
|  | 
 | |||
|  |         private void btnDelete_Click(object sender, EventArgs e) | |||
|  |         {  | |||
|  |         } | |||
|  | 
 | |||
|  |         protected void query() | |||
|  |         { | |||
|  |              | |||
|  |         } | |||
|  | 
 | |||
|  | 
 | |||
|  |         private void loadPickOrders() | |||
|  |         { | |||
|  | 
 | |||
|  |           //  showWaitForm(); | |||
|  |             try | |||
|  |             { | |||
|  |                 query();// loadData();   | |||
|  |             } | |||
|  |             catch (Exception e) | |||
|  |             { | |||
|  |                 showErrorMsg(e.Message); | |||
|  |             } | |||
|  |             finally | |||
|  |             { | |||
|  |                 // WaitFormService.Close(); | |||
|  |              //   closeWaitForm(); | |||
|  |                 bbQuery.Enabled = true; | |||
|  |             } | |||
|  | 
 | |||
|  |         } | |||
|  |           | |||
|  |         private void bbQuery_ItemClick_1(object sender, ItemClickEventArgs e) | |||
|  |         { | |||
|  |             this.bbQuery.Enabled = false; | |||
|  |             loadPickOrders(); | |||
|  |         } | |||
|  | 
 | |||
|  |         | |||
|  |   | |||
|  |         private bool getCurrentObject() | |||
|  |         { | |||
|  |             if (selectedRowIndex <0 || selectedRowIndex >= dtPickOrders.Rows.Count) | |||
|  |             { | |||
|  |                 return false; | |||
|  |             } | |||
|  |             | |||
|  |             //DataRow currentRow = dtPickOrders.Rows[selectedRowIndex]; | |||
|  |             //selectedRequest = new WmsOutPickRequest(currentRow);  | |||
|  |              return true; | |||
|  | 
 | |||
|  |         } | |||
|  |         | |||
|  |               | |||
|  | 
 | |||
|  |        | |||
|  |         private void initialDataGrid() | |||
|  |         { | |||
|  |             this.gridView3.IndicatorWidth = 40; | |||
|  |             this.gridView3.CustomDrawRowIndicator += new DevExpress.XtraGrid.Views.Grid.RowIndicatorCustomDrawEventHandler(gridView_CustomDrawRowIndicator); | |||
|  |      | |||
|  |             this.gridView1.IndicatorWidth = 40; | |||
|  |             this.gridView1.CustomDrawRowIndicator += new DevExpress.XtraGrid.Views.Grid.RowIndicatorCustomDrawEventHandler(gridView_CustomDrawRowIndicator); | |||
|  | 
 | |||
|  |              | |||
|  |             gridView3.CustomColumnDisplayText += gridView3_CustomColumnDisplayText; | |||
|  |         } | |||
|  |     | |||
|  | 
 | |||
|  | 
 | |||
|  |   | |||
|  | 
 | |||
|  |        void gridView_RowCellStyle(object sender,DevExpress.XtraGrid.Views.Grid.RowCellStyleEventArgs e) | |||
|  |        { | |||
|  | 
 | |||
|  |             var currentView = sender as GridView; | |||
|  |            if( currentView == null){return;} | |||
|  |            string state = currentView.GetDataRow(e.RowHandle)["priority"].ToString().Trim(); | |||
|  |             | |||
|  |            if (state == "0") | |||
|  |            { | |||
|  |                return; | |||
|  |            } | |||
|  | 
 | |||
|  |            bool isFocused = e.RowHandle == currentView.FocusedRowHandle; | |||
|  |            DevExpress.Utils.AppearanceDefault rowStyle = null; | |||
|  |             DevExpress.Utils.AppearanceDefault appBlueRed =  | |||
|  |                new DevExpress.Utils.AppearanceDefault (Color.White, Color.Red, Color.Empty, Color.Blue, System.Drawing.Drawing2D.LinearGradientMode.Horizontal); | |||
|  |            DevExpress.Utils.AppearanceDefault appYB = | |||
|  |             new DevExpress.Utils.AppearanceDefault(Color.White, Color.Red, Color.Green); | |||
|  | 
 | |||
|  |            DevExpress.Utils.AppearanceDefault alertFocus = new DevExpress.Utils.AppearanceDefault(Color.White, Color.Red, Color.Green,  Color.Yellow); | |||
|  |            DevExpress.Utils.AppearanceDefault alert  = new DevExpress.Utils.AppearanceDefault(Color.Red, Color.White ); | |||
|  | 
 | |||
|  |            DevExpress.Utils.AppearanceDefault highPriorityFocus = new DevExpress.Utils.AppearanceDefault(Color.White, Color.Green); | |||
|  |            DevExpress.Utils.AppearanceDefault highPriority = new DevExpress.Utils.AppearanceDefault(Color.Green, Color.White); | |||
|  | 
 | |||
|  |            if (state == "1") | |||
|  |            { | |||
|  |                rowStyle = isFocused ? highPriorityFocus : highPriority; | |||
|  |            } | |||
|  |            else if (state == "2") | |||
|  |            { | |||
|  |                rowStyle = isFocused ? alertFocus : alert; | |||
|  |            } | |||
|  | 
 | |||
|  |              | |||
|  |            DevExpress.Utils.AppearanceHelper.Apply(e.Appearance, rowStyle); | |||
|  |             | |||
|  |        } | |||
|  | 
 | |||
|  |         | |||
|  |          | |||
|  |   | |||
|  | 
 | |||
|  |         private void btnNewWave_Click(object sender, EventArgs e) | |||
|  |         { | |||
|  |             clearWaveData(); | |||
|  |             btnNewWave.Enabled = false; | |||
|  |             newWave(); | |||
|  |         } | |||
|  |          | |||
|  |   | |||
|  |   | |||
|  |   | |||
|  | 
 | |||
|  |         private void btnEndWave_Click(object sender, EventArgs e) | |||
|  |         { | |||
|  |            | |||
|  | 
 | |||
|  |             if (MessageBox.Show("确定确认货物已经拣选完毕,并强制结束本轮拣货吗?", "强制结束", MessageBoxButtons.OKCancel) == DialogResult.Cancel) | |||
|  |             { | |||
|  |                 return; | |||
|  |                 | |||
|  | 
 | |||
|  |             }          | |||
|  | 
 | |||
|  | 
 | |||
|  | 
 | |||
|  |             endWave(true); | |||
|  |         } | |||
|  | 
 | |||
|  |         void turnOffLights() | |||
|  |         { | |||
|  |             if (lights.Count == 0) | |||
|  |             { | |||
|  |                 //searchLight(); | |||
|  |                 return; | |||
|  |             } | |||
|  |                | |||
|  |            // Model.dis_id_comment id; | |||
|  |             dis_id id; | |||
|  |             //id.ele_id = Convert.ToInt16(new_id.Text); | |||
|  |             id.order = 1; | |||
|  |             id.ele_id = 65535;  | |||
|  |             id.state = 1; | |||
|  |             //id. | |||
|  | 
 | |||
|  |             foreach (int port in pick.activeComports) | |||
|  |             { | |||
|  |                 if (port == 0) | |||
|  |                 { | |||
|  |                     continue; | |||
|  |                 } | |||
|  |               //  unart_manage.com_manage[port].write_reset_device(); 复位各个硬件,通道灯,标签。。。 | |||
|  | 
 | |||
|  |                 unart_manage.com_manage[port].init_port.write_clear_comment(id); | |||
|  | 
 | |||
|  |                 if (!lights.ContainsKey(port)) | |||
|  |                 { | |||
|  |                     continue; | |||
|  |                 } | |||
|  | 
 | |||
|  |                 foreach (int light in lights[port]) | |||
|  |                 { | |||
|  |                     channel_led idx = new channel_led(); | |||
|  |                     idx.channel_id = light;   | |||
|  |                     idx.state = 1; | |||
|  |                     unart_manage.com_manage[port].init_port.write_close_channel_led(idx); | |||
|  |                 }  | |||
|  |                | |||
|  |                // a.write_clear_comment(id); | |||
|  |             } | |||
|  |         } | |||
|  | 
 | |||
|  |         Dictionary<int, List<int>> lights = new Dictionary<int, List<int>>(); | |||
|  |         void searchLight() | |||
|  |         { | |||
|  |             Model.modify_id id; | |||
|  | 
 | |||
|  |          //   System.Threading.Thread.Sleep(50); | |||
|  |             foreach (int port in pick.activeComports) | |||
|  |             { | |||
|  |                 if (port == 0) | |||
|  |                 { | |||
|  |                     continue; | |||
|  |                 } | |||
|  |                 for (int i = 5000; i <= 5100; i++) | |||
|  |                 { | |||
|  |                     id.order = 0; | |||
|  |                     id.new_ele_id = 0; | |||
|  |                     id.old_ele_id = i; | |||
|  |                     id.state = 1; | |||
|  |                     bool ret = unart_manage.com_manage[port].init_port.search_light_id(id); | |||
|  |                     if (ret) | |||
|  |                     { | |||
|  |                         if (!lights.ContainsKey(port)) | |||
|  |                         {                            | |||
|  |                             lights[port] = new List<int>(); | |||
|  |                         } | |||
|  |                         lights[port].Add(i); | |||
|  |                         | |||
|  |                     } | |||
|  |                 } | |||
|  |             } | |||
|  |               | |||
|  | 
 | |||
|  |         } | |||
|  | 
 | |||
|  |         void endWave(bool isForce=false) | |||
|  |         { | |||
|  |             if (isForce)                | |||
|  |             { | |||
|  |               //  pick.init_port(enumLabelPickType.pick); | |||
|  |                 turnOffLights(); | |||
|  |             } | |||
|  |             try | |||
|  |             { | |||
|  |                 lgt.finishCurrentWave( WmsConstants.WAVE_CURRENT_ORDER, isForce); | |||
|  |                   | |||
|  |             } | |||
|  |             catch(Exception e) | |||
|  |             { | |||
|  |                 showErrorMsg(e.Message); | |||
|  |             } | |||
|  |             clearWaveData(); | |||
|  |             waveStart(); | |||
|  |             btnEndWave.Enabled = false; | |||
|  |             btnRelight.Enabled = false; | |||
|  |             _canNewWave = true; | |||
|  | 
 | |||
|  |         } | |||
|  |         private void clearWaveData() | |||
|  |         { | |||
|  | 
 | |||
|  |             WmsConstants.WAVE_CURRENT_ORDER = ""; | |||
|  |             lbWaveNo.Text = "空闲"; | |||
|  |      | |||
|  |             if (dtBulks != null) | |||
|  |             { | |||
|  |                 dtBulks.Clear(); | |||
|  |             } | |||
|  |        //     gridControl3.DataSource = null; | |||
|  |              | |||
|  | 
 | |||
|  |         } | |||
|  |         private void swAutoOrder_Toggled(object sender, EventArgs e) | |||
|  |         { | |||
|  |           | |||
|  |             if (autoOrder) | |||
|  |             { | |||
|  |                 preErpOrders(); | |||
|  |             } | |||
|  |         } | |||
|  | 
 | |||
|  |         private void swAutoWave_Toggled(object sender, EventArgs e) | |||
|  |         { | |||
|  |             autoWave = swAutoWave.IsOn; | |||
|  |             btnNewWave.Enabled = !autoWave; | |||
|  |             btnNewWave.Enabled =!autoWave &&( dtBulks == null || dtBulks.Rows.Count == 0); | |||
|  | 
 | |||
|  |             if (autoWave) | |||
|  |             { | |||
|  |                 newWave(); | |||
|  |             } | |||
|  |         } | |||
|  | 
 | |||
|  |         private void btnRefresh_Click(object sender, EventArgs e) | |||
|  |         { | |||
|  |             loadPickOrdersInWave(); | |||
|  |         } | |||
|  | 
 | |||
|  |         private void btnRelight_Click(object sender, EventArgs e) | |||
|  |         { | |||
|  |             turnOffLights(); | |||
|  |             lightLabelsCurrentWave(); | |||
|  |         } | |||
|  | 
 | |||
|  |         private void lightLabelsCurrentWave() | |||
|  |         { | |||
|  |              | |||
|  |             debug("start relightCurrentWave....."); | |||
|  |             //Thread light = new Thread(lgt.lightLables); | |||
|  |             //light.IsBackground = true; | |||
|  |             //light.Start(); | |||
|  |             | |||
|  |             loadWaveDetails(); | |||
|  |             closeWaitForm(); | |||
|  |             showWaitForm("正在点亮标签..."); | |||
|  |             try | |||
|  |             { | |||
|  |                 lightLables(); // lgt.lightLables(); | |||
|  |             } | |||
|  |             catch(Exception er) | |||
|  |             { | |||
|  |                 closeWaitForm(); | |||
|  |                 showErrorMsg(er.Message); | |||
|  |             } | |||
|  |             finally | |||
|  |             { | |||
|  |              closeWaitForm(); | |||
|  |             } | |||
|  |              debug("end relightCurrentWave....."); | |||
|  |         } | |||
|  | 
 | |||
|  |         //private void checkAuto_CheckedChanged(object sender, EventArgs e) | |||
|  |         //{ | |||
|  |         //    spinOrder.Enabled = checkAuto.Checked; | |||
|  |         //} | |||
|  | 
 | |||
|  |          | |||
|  |         private void updateLableStatus(DataTable dt = null) | |||
|  |         { | |||
|  | 
 | |||
|  |            string key = ""; | |||
|  | 
 | |||
|  |             if (dt != null) | |||
|  |             { | |||
|  |                 foreach (DataRow dr in dt.Rows) | |||
|  |                 { | |||
|  | 
 | |||
|  |                     if (dr["state"].ToString().Equals("1")) | |||
|  |                     { | |||
|  |                        key = Util.getLightKey(Convert.ToInt16(dr["color"].ToString()), Convert.ToInt16(dr["elabId"].ToString()), Convert.ToInt16(dr["elabAddress"].ToString())); | |||
|  | 
 | |||
|  |                        WmsConstants.WAVE_CURRENT_PICK_STATUS[key] = true; | |||
|  | 
 | |||
|  |                     }  | |||
|  | 
 | |||
|  |                 } | |||
|  | 
 | |||
|  |                   | |||
|  |             } | |||
|  | 
 | |||
|  |             if (dtBulks == null || dtBulks.Rows.Count == 0) | |||
|  |             { | |||
|  |                 return; | |||
|  |             } | |||
|  |            | |||
|  |             WmsOutPickLable label; | |||
|  | 
 | |||
|  |             DataView dv = dtBulks.DefaultView; | |||
|  | 
 | |||
|  |             dv.RowFilter = "isPicked =0"; | |||
|  |             dv.Sort = "isPicked"; | |||
|  | 
 | |||
|  |             if (dv.Count ==0) | |||
|  |             { | |||
|  |                 //all picked, wave end | |||
|  |          | |||
|  |                 endWave(); | |||
|  |                 return; | |||
|  |             }  | |||
|  | 
 | |||
|  |             foreach (DataRow dr in dtBulks.Rows) | |||
|  |             {  | |||
|  |                 label = new  WmsOutPickLable(dr);  | |||
|  |                 key = Util.getLightKey(label.color, label.elabId, label.elabAddress); | |||
|  |                 if( WmsConstants.WAVE_CURRENT_LIGHTS_STATUS.ContainsKey(key)){ | |||
|  |                     dr["isLightUp"] = WmsConstants.WAVE_CURRENT_LIGHTS_STATUS[key] ? 1 : 0; | |||
|  |                       | |||
|  |                 } | |||
|  |                 if (WmsConstants.WAVE_CURRENT_PICK_STATUS.ContainsKey(key)) | |||
|  |                 { | |||
|  |                     dr["isPicked"] = WmsConstants.WAVE_CURRENT_PICK_STATUS[key] ? 1 : 0; | |||
|  | 
 | |||
|  |                 }   | |||
|  | 
 | |||
|  |             } | |||
|  |             dv.RowFilter = ""; // 如果   dv.RowFilter ="isPicked =0"; 则已拣的不再显示 | |||
|  |             gridControl2.DataSource = dtBulks.DefaultView; | |||
|  |              | |||
|  | 
 | |||
|  |         } | |||
|  | 
 | |||
|  |         private void GoodsOutForm_FormClosing(object sender, FormClosingEventArgs e) | |||
|  |         { | |||
|  |           //  outClient.Close(); | |||
|  |           //  pickClient.Close(); | |||
|  |         } | |||
|  | 
 | |||
|  | 
 | |||
|  |         //-------------below moved from logic layer | |||
|  | 
 | |||
|  |   | |||
|  | 
 | |||
|  |          /// <summary> | |||
|  |         /// 点亮待拣选标签 | |||
|  |         /// </summary> | |||
|  |         private void lightLablesInSvc() | |||
|  |         { | |||
|  |             | |||
|  |         } | |||
|  | 
 | |||
|  |         /// <summary> | |||
|  |         /// 点亮待拣选标签 | |||
|  |         /// </summary> | |||
|  |         private void lightLables() | |||
|  |         { | |||
|  | 
 | |||
|  |           //  lightLablesInSvc(); | |||
|  | 
 | |||
|  |             //lightLabelsInWinformSvc(); | |||
|  |   | |||
|  |             if (InvokeRequired) | |||
|  |             { | |||
|  |                 this.Invoke(new loadNewCurrentWave(delegate() | |||
|  |                 { | |||
|  |                     lbLightsInfo.Text = "连接正常"; | |||
|  |                     elelab.pick.init_port(enumLabelPickType.pick); | |||
|  |                     if (elelab.pick.activeComports.Count == 0) | |||
|  |                     { | |||
|  |                         lbLightsInfo.Text = "拣选设备连接错误"; | |||
|  |                         // showErrorMsg("拣选设备连接错误,请检查设备连接"); | |||
|  |                         return; | |||
|  |                     } | |||
|  | 
 | |||
|  |                 })); | |||
|  | 
 | |||
|  |             } | |||
|  |             else | |||
|  |             { | |||
|  |                 lbLightsInfo.Text = "连接正常"; | |||
|  |                 elelab.pick.init_port(enumLabelPickType.pick); | |||
|  |                 if (elelab.pick.activeComports.Count == 0) | |||
|  |                 { | |||
|  |                     lbLightsInfo.Text = "拣选设备连接错误"; | |||
|  |                     // showErrorMsg("拣选设备连接错误,请检查设备连接"); | |||
|  |                     return; | |||
|  |                 } | |||
|  |             } | |||
|  |         | |||
|  |              | |||
|  |             lastWave = DateTime.Now; | |||
|  |             WmsConstants.WAVE_CURRENT_LIGHTS_STATUS.Clear(); | |||
|  | 
 | |||
|  | 
 | |||
|  |             string result = elelab.pick.send_data_pick(lgt.getWmsOutPickLable.getData4Pick(WmsConstants.WAVE_CURRENT_ORDER).Tables[0], enumLabelPickType.pick); | |||
|  |              | |||
|  |  //#if DEBUG  | |||
|  |             closeWaitForm(); | |||
|  |             if (!string.IsNullOrEmpty(result)) | |||
|  |             { | |||
|  |                 if (InvokeRequired) | |||
|  |                 { | |||
|  |                     this.Invoke(new loadNewCurrentWave(delegate() | |||
|  |                     { | |||
|  |                         lbLightsInfo.Text = result; | |||
|  | 
 | |||
|  |                     })); | |||
|  | 
 | |||
|  |                 } | |||
|  |                 else | |||
|  |                 { | |||
|  |                     lbLightsInfo.Text = result; | |||
|  |                 } | |||
|  |         | |||
|  |                | |||
|  |                 //showErrorMsg(result); | |||
|  |             } | |||
|  | //#endif | |||
|  |         } | |||
|  | 
 | |||
|  |         private static bool _canNewWave = true; | |||
|  |         //Int64 lastWave =0; | |||
|  |         DateTime lastWave; | |||
|  |         public bool canNewWave | |||
|  |         { | |||
|  |             get | |||
|  |             { | |||
|  |                   | |||
|  |               //  _canNewWave = _canNewWave && outRequest.canNewWave(); | |||
|  | 
 | |||
|  |                 if (!autoWave) | |||
|  |                 { | |||
|  |                     return true; | |||
|  |                 } | |||
|  | 
 | |||
|  |                 if (_canNewWave) | |||
|  |                 { | |||
|  |                     lastWave = DateTime.Now; | |||
|  |                 } | |||
|  |                 else | |||
|  |                 { | |||
|  |                     TimeSpan ts = DateTime.Now - lastWave; | |||
|  |                     if (ts.TotalMilliseconds > WmsConstants.MAX_SECONDS_BETWEEN_WAVES) //强制开始新波次,有可能会有再次发送亮灯数据时 | |||
|  |                     { | |||
|  |                         _canNewWave = true; | |||
|  |                         lastWave = DateTime.Now; | |||
|  |                     } | |||
|  |                 } | |||
|  | 
 | |||
|  | 
 | |||
|  |                 return _canNewWave;//|| outRequest.canNewWave() ;//|| true; | |||
|  |                 //  return _canNewWave; // pickLabelDetail.getCurrentPickList(enumLabelPickState.notPicked).Tables[0].Rows.Count > 0; | |||
|  |             } | |||
|  |         } | |||
|  | 
 | |||
|  |         public void newPickWave() | |||
|  |         { | |||
|  |             if (!canNewWave) | |||
|  |             { | |||
|  |                 return; | |||
|  |             } | |||
|  | 
 | |||
|  |             _canNewWave = false; | |||
|  |             bool exist = false; | |||
|  |             try | |||
|  |             { | |||
|  |                 exist = lgt.getWmsOutPickLable.getCurrentPickList().Tables[0].Rows.Count > 0; | |||
|  |                 | |||
|  | 
 | |||
|  | 
 | |||
|  |                 // bool exist = outRequest.getRequests(enumOutOrderType.pickOrder, enumOutStockRequestStatus.picking).Tables[0].Rows.Count >0; | |||
|  |                 if (exist) | |||
|  |                 { | |||
|  |                     if (WmsConstants.WAVE_CURRENT_LIGHTS_STATUS.ContainsValue(false)) | |||
|  |                     { | |||
|  |                         lightLables(); | |||
|  |                     } | |||
|  |                     // TaskCallBack(); | |||
|  |                     return; | |||
|  |                     //  throw new DeiNiuException("当前波次还未处理完毕,不能开始新的波次。"); | |||
|  |                 } | |||
|  | 
 | |||
|  |                 // List<WmsOutPickRequest> requests = outRequest.getRequestObjects(enumOutOrderType.拣货单, enumOutStockRequestStatus.波次处理); | |||
|  |                /* int cnt = lgt.getRequests4WaveCnt((int)enumOutOrderType.拣货单, (int)enumOutStockRequestStatus.波次处理); | |||
|  |                  | |||
|  |                 if (cnt == 0) | |||
|  |                 { | |||
|  |                     _canNewWave = true; | |||
|  |                     //   TaskCallBack(); | |||
|  |                     return; | |||
|  |                     //throw new DeiNiuException("没有待出库数据需要处理的。"); | |||
|  |                 }*/ | |||
|  | 
 | |||
|  | 
 | |||
|  |                 //to call client for new wave | |||
|  |                 showWaitForm("正在配置新波次"); | |||
|  |                 lgt.newPickWave(); | |||
|  |                  | |||
|  |             } | |||
|  |             catch (Exception er) | |||
|  |             { | |||
|  |                 LogHelper.WriteLog(this.GetType(), er); | |||
|  | #if debug | |||
|  |                 showErrorMsg(er.Message); | |||
|  | #endif | |||
|  |             } | |||
|  |             lastWaveRequestTime = DateTime.Now; | |||
|  |             WmsConstants.WAVE_CURRENT_PICK_STATUS.Clear(); | |||
|  |             lightLabelsCurrentWave(); | |||
|  |             _canNewWave = true; | |||
|  | 
 | |||
|  | 
 | |||
|  |         } | |||
|  | 
 | |||
|  |         private void label1_Click(object sender, EventArgs e) | |||
|  |         { | |||
|  | 
 | |||
|  |         } | |||
|  |       //  bool isPriorityQuery = false; | |||
|  |         private void btnQuery_Click_1(object sender, EventArgs e) | |||
|  |         { | |||
|  |           //  isPriorityQuery = true; | |||
|  |             this.query(); | |||
|  |           //  isPriorityQuery = false; | |||
|  |         } | |||
|  | 
 | |||
|  |           | |||
|  | 
 | |||
|  |         private void lgPriority_CustomButtonChecked(object sender, DevExpress.XtraBars.Docking2010.BaseButtonEventArgs e) | |||
|  |         { | |||
|  |             lastQuery = ""; | |||
|  |              query(); | |||
|  |         } | |||
|  | 
 | |||
|  |         private void lgPriority_CustomButtonUnchecked(object sender, DevExpress.XtraBars.Docking2010.BaseButtonEventArgs e) | |||
|  |         { | |||
|  |             | |||
|  |         } | |||
|  | 
 | |||
|  |         private void btnExport_Click(object sender, EventArgs e) | |||
|  |         { | |||
|  |             exportExcel("",gridView1); | |||
|  |         } | |||
|  |         string[] colors = new string[] { "1", "2", "3", "4", "5", "6", "7", "8", "9", "10" }; | |||
|  |         private void gridView3_CustomColumnDisplayText(object sender, DevExpress.XtraGrid.Views.Base.CustomColumnDisplayTextEventArgs e) | |||
|  |         { | |||
|  |             if (string.IsNullOrEmpty(e.DisplayText)) | |||
|  |             { | |||
|  |                 return; | |||
|  |             } | |||
|  | 
 | |||
|  |             if (e.Column.FieldName == "color") | |||
|  |             { | |||
|  | 
 | |||
|  |                 if (colors.Contains(e.DisplayText)) | |||
|  |                 { | |||
|  | 
 | |||
|  |                     int display = -100; | |||
|  |                     string disTxt = e.DisplayText; | |||
|  | 
 | |||
|  |                     try | |||
|  |                     { | |||
|  |                         display = Convert.ToInt16(e.DisplayText); | |||
|  | 
 | |||
|  |                         e.DisplayText =getColor(display); | |||
|  | 
 | |||
|  |                     } | |||
|  |                     catch | |||
|  |                     { | |||
|  |                         return; | |||
|  |                     } | |||
|  | 
 | |||
|  |                 } | |||
|  | 
 | |||
|  | 
 | |||
|  |                | |||
|  | 
 | |||
|  |             } | |||
|  | 
 | |||
|  | 
 | |||
|  | 
 | |||
|  | 
 | |||
|  |         } | |||
|  |         string getColor(int color) | |||
|  |         { | |||
|  |             string colorName = ""; | |||
|  |             switch (color) | |||
|  |             { | |||
|  |                 case 1: | |||
|  |                     colorName = "红"; | |||
|  |                     break; | |||
|  |                 case 2: | |||
|  |                     colorName = "绿"; | |||
|  |                     break; | |||
|  |                 case 3: | |||
|  |                     colorName = "蓝"; | |||
|  |                     break; | |||
|  |                 case 4: | |||
|  |                     colorName = "红闪"; | |||
|  |                     break; | |||
|  |                 case 5: | |||
|  |                     colorName = "绿闪"; | |||
|  |                     break; | |||
|  |                 case 6: | |||
|  |                     colorName = "蓝闪"; | |||
|  |                     break; | |||
|  |                 case 7: | |||
|  |                     colorName = "红绿"; | |||
|  |                     break; | |||
|  |                 case 8: | |||
|  |                     colorName = "红蓝"; | |||
|  |                     break; | |||
|  |                 case 9: | |||
|  |                     colorName = "绿蓝"; | |||
|  |                     break; | |||
|  |                 case 10: | |||
|  |                     colorName = "红绿蓝"; | |||
|  |                     break; | |||
|  |                | |||
|  |                 default: | |||
|  |                     colorName = "红"; | |||
|  |                     break; | |||
|  |             } | |||
|  | 
 | |||
|  |             return colorName; | |||
|  |         } | |||
|  | 
 | |||
|  |         private void GoodsOutForm_Load(object sender, EventArgs e) | |||
|  |         { | |||
|  | 
 | |||
|  |         } | |||
|  | 
 | |||
|  |         private void spinColors_EditValueChanged(object sender, EventArgs e) | |||
|  |         { | |||
|  |             WmsConstants.MAX_COLORS = Convert.ToInt16( spinColors.Value) ; | |||
|  |         } | |||
|  | 
 | |||
|  |     } | |||
|  | } |