2228 lines
		
	
	
		
			78 KiB
		
	
	
	
		
			C#
		
	
	
	
		
		
			
		
	
	
			2228 lines
		
	
	
		
			78 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 DeiNiu.wms.win.ServiceReferenceOutRequest; //远程 | |||
|  |   using DeiNiu.wms.win.ServiceReferenceStockOutRequest; | |||
|  | using DeiNiu.wms.win.ServiceReferenceStockOutPickRequest; | |||
|  | using Deiniu.win.elelab; | |||
|  | using DeiNiu.wms.win.waveRuleService;  //开发环境 | |||
|  | //  using DeiNiu.wms.win.ServiceReferenceOutRequestLocal;//本地 | |||
|  | 
 | |||
|  | namespace DeiNiu.wms.win | |||
|  | { | |||
|  |     public partial class GoodsOutPartionPickForm : BasicRibbonForm | |||
|  |     { | |||
|  |       | |||
|  |         private string lastQuery = ""; | |||
|  |         private DataTable dtPickOrders; | |||
|  |         private int selectedRowIndex = -1; | |||
|  |         private WmsOutPickRequest selectedRequest; | |||
|  |         int preCnt = 0; | |||
|  |         Thread threadPreProcess; | |||
|  |         bool autoOrder, autoWave =true; | |||
|  |         bool isManualRefreshPickList = false; | |||
|  |      //   string currentWaveOrder = ""; | |||
|  |         DataTable dtException; | |||
|  |         DataTable dtBulks;  | |||
|  |         WmsOutPickDetail_tmp exceptionDetail; | |||
|  |         int selectedLine = -1; | |||
|  |         string selectedSales = ""; | |||
|  |         public GoodsOutPartionPickForm() | |||
|  |         { | |||
|  |           debug("start 出库。。。。。。"); | |||
|  |           lightPart.lightOffEvent += partFinished; | |||
|  |             InitializeComponent(); | |||
|  |             initialControls(); | |||
|  |             initialBackGroundTasks(); | |||
|  |             isLoading = false; | |||
|  |             debug("end 出库。。。。。。"); | |||
|  |         } | |||
|  |         #region initialControls | |||
|  |         bool isLoading = true; | |||
|  |         private void initialControls() | |||
|  |         {    | |||
|  |             initialComboBoxes(); | |||
|  |             | |||
|  |             initialPagerControls(); | |||
|  |             initialDataGrid(); | |||
|  |             initialQueryInput();  | |||
|  |             setValidationRule(); | |||
|  |             initialTimer();  | |||
|  |            // updateLightsStatus(); | |||
|  |             getPartFinishIds(); | |||
|  |             | |||
|  |         } | |||
|  |         private void initialBackGroundTasks() | |||
|  |         { | |||
|  | 
 | |||
|  | 
 | |||
|  |             swAutoOrder.IsOn = WmsConstants.AUTO_SYNC_SALE_ORDER; | |||
|  | 
 | |||
|  |             //lgOutReq.UpdateUIDelegate += updatePreOutStatus; | |||
|  |             //lgOutReq.TaskCallBack += preOutFinished; | |||
|  |             /* | |||
|  |             if (autoOrder) | |||
|  |             { | |||
|  |                 preErpOrders(); | |||
|  |             } | |||
|  |             */ | |||
|  |             checkEditAutoInterVal.Checked = true; | |||
|  |              swAutoWave.IsOn = WmsConstants.AUTO_NEW_WAVE; | |||
|  |              //lgt.UpdateUIDelegate +=  updatePickDetails; | |||
|  |              //lgt.TaskCallBack += loadWaveDetails;// waveStart; | |||
|  | 
 | |||
|  |              lightAllLabels(); | |||
|  |             if (autoWave) | |||
|  |             { | |||
|  |                 newWave(); | |||
|  |             } | |||
|  |             else | |||
|  |             { | |||
|  |                | |||
|  |              //   lightLabelsCurrentWave(); | |||
|  |             } | |||
|  |              | |||
|  |              Thread threadPreProcess = new Thread(searchLight); | |||
|  |               threadPreProcess.IsBackground = true; | |||
|  |               threadPreProcess.Start(); | |||
|  |   | |||
|  |         } | |||
|  | 
 | |||
|  |         void lightAllLabels() | |||
|  |         { | |||
|  |             loadWaveDetails(); | |||
|  |             initLights(); | |||
|  |           //  string result = lightPart.lightsUp(pickClient.getPartPickedData((int)enumPickState.未拣), enumLabelPickType.pick); | |||
|  |             int[] parts = { 4 }; | |||
|  |             lightLables(parts); | |||
|  |             closeClient(); | |||
|  |         } | |||
|  |         | |||
|  |       private void initialComboBoxes() | |||
|  |         { | |||
|  |             Node[] nds = { }; | |||
|  |             DataTable dt = Park.getDictionary(false); | |||
|  |             if (dt.Rows.Count == 0) | |||
|  |             { | |||
|  |                 return; | |||
|  |             } | |||
|  |             DataRow[] drs = dt.Select("flag >0");  | |||
|  |             foreach (DataRow dr in drs) | |||
|  |             { | |||
|  |                 int flag = Convert.ToInt32(dr["flag"].ToString()); | |||
|  |                 int parentId = Convert.ToInt32(dr["id"].ToString()); | |||
|  |                 DataRow[] drss = Park.getDictionary(false).Select("parentId =" + parentId); | |||
|  |                 switch (flag) | |||
|  |                 { | |||
|  |                     case 2007: | |||
|  |                         initialComboBoxs(this.comException, drss ,false);   | |||
|  |                         break;   | |||
|  | 
 | |||
|  |                         | |||
|  |                 } | |||
|  |             } | |||
|  | 
 | |||
|  |             waveRuleService.WcfWaveRule[] rules = wrClient.getWaveRules(enumWaveRuleType.DPS灯光波次); | |||
|  |             closeClient(); | |||
|  | 
 | |||
|  |             Dictionary<int, string> dic = new Dictionary<int, string>(); | |||
|  | 
 | |||
|  |             foreach (WcfWaveRule rule in rules) | |||
|  |             { | |||
|  |                 dic.Add(rule.ID, rule.ruleName); | |||
|  |             } | |||
|  | 
 | |||
|  |             initialComboBoxs(comboWaveRule, dic); | |||
|  | 
 | |||
|  |             WcfWaveRule rulex = wrClient.getCurrentActiveRule(enumWaveRuleType.DPS灯光波次); | |||
|  |             closeClient(); | |||
|  | 
 | |||
|  |             if (rulex.ID > 0) | |||
|  |             { | |||
|  |                 int i = 0; | |||
|  |                 foreach (Object item in comboWaveRule.Properties.Items) | |||
|  |                 { | |||
|  |                     if (((Colitem)item).key == rulex.ID) | |||
|  |                     { | |||
|  |                         comboWaveRule.SelectedItem = item; | |||
|  |                         // comboState.SelectedIndex = i; | |||
|  |                         break; | |||
|  |                     } | |||
|  |                     i++; | |||
|  |                 } | |||
|  | 
 | |||
|  |                 this.spinWave.Value = rulex.interval; | |||
|  |             } | |||
|  |               | |||
|  |         } | |||
|  |       | |||
|  |        | |||
|  |         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 initialDataGridColumns() | |||
|  |         { | |||
|  |             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; | |||
|  |             this.gridView1.Columns.Add(myCol0); | |||
|  |             GridColumn myCol1 = new GridColumn() { Caption = "单号", Visible = true, FieldName = WmsOutPickRequest.fields.pickOrderNo.ToString() }; | |||
|  |          //   GridColumn myCol2 = new GridColumn() { Caption = "类别", Visible = true, FieldName = WmsOutPickRequest.fields.orderTypeName.ToString() }; | |||
|  |             GridColumn myCol3 = new GridColumn() { Caption = "状态", Visible = true, FieldName = WmsOutPickRequest.fields.state.ToString() }; | |||
|  | 
 | |||
|  |             GridColumn myCol4 = new GridColumn() { Caption = "客户", Visible = true, FieldName = WmsOutPickRequest.fields.customerName. ToString() }; | |||
|  |             GridColumn myCol5 = new GridColumn() { Caption = "备注", Visible = true, FieldName = WmsOutPickRequest.fields.description.ToString() }; | |||
|  |             //GridColumn myCol6 = new GridColumn() { Caption = "日期", Visible = true, FieldName = WmsOutPickRequest.fields.orderDate.ToString() }; | |||
|  | 
 | |||
|  |             GridColumn myCol7 = new GridColumn() { Caption = "优先级", Visible = true, FieldName = WmsOutPickRequest.fields.priority.ToString() }; | |||
|  | 
 | |||
|  |             this.gridView1.Columns.Add(myCol1); | |||
|  |           //  this.gridView1.Columns.Add(myCol6); | |||
|  |           //  this.gridView1.Columns.Add(myCol3);  | |||
|  | 
 | |||
|  |             this.gridView1.Columns.Add(myCol4); | |||
|  |             this.gridView1.Columns.Add(myCol5); | |||
|  |             this.gridView1.Columns.Add(myCol7);  | |||
|  |   | |||
|  |             //to show bottom scroll bar | |||
|  |             gridView1.OptionsView.ColumnAutoWidth = false; | |||
|  |             gridView1.BestFitColumns(); | |||
|  |             gridView1.Focus(); | |||
|  | 
 | |||
|  | 
 | |||
|  |         //    initialGridView2Columns(); | |||
|  |             //gridControl2.DataSource = null; | |||
|  |         } | |||
|  |         private void initialGridView2Columns(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 myCol011 = new GridColumn() { Caption = "分区", Visible = true, FieldName = "partName" }; | |||
|  |             gridview.Columns.Add(myCol011); | |||
|  |              | |||
|  |             GridColumn myCol01 = new GridColumn() { Caption = "单号", Visible = true, FieldName = WmsOutPickRequest.fields.pickOrderNo.ToString() }; | |||
|  | 
 | |||
|  |             GridColumn myCol1 = new GridColumn() { Caption = "商品编码", Visible = true, FieldName = WmsGoods.fields.goodsId.ToString() }; | |||
|  |             GridColumn myCol2 = new GridColumn() { Caption = "商品名称", Visible = true, FieldName = WmsGoods.exfields.goodsName.ToString() }; | |||
|  |             GridColumn myCol3 = new GridColumn() { Caption = "厂家", Visible = true, FieldName = WmsGoods.exfields.manufacturer.ToString() }; | |||
|  |             GridColumn myCol4 = new GridColumn() { Caption = "规格", Visible = true, FieldName = WmsGoods.exfields.spec.ToString() }; | |||
|  |             GridColumn myCol5 = new GridColumn() { Caption = "单位", Visible = true, FieldName = WmsGoods.exfields.unit.ToString() }; | |||
|  |             GridColumn myCol6 = new GridColumn() { Caption = "大包装数量", Visible = true, FieldName = WmsGoods.exfields.bigCount.ToString() }; | |||
|  |             GridColumn myCol7 = new GridColumn() { Caption = "剂型", Visible = true, FieldName = WmsGoods.exfields.type.ToString() }; | |||
|  |             GridColumn myCol8 = new GridColumn() { Caption = "商品类型", Visible = true, FieldName = WmsGoods.exfields.goodsTypeName.ToString() }; | |||
|  |           //  GridColumn myCol9 = new GridColumn() { Caption = "大零", Visible = true, FieldName = WmsGoods.fields.bulkMax.ToString() }; | |||
|  |         //    GridColumn myCol10 = new GridColumn() { Caption = "小整", Visible = true, FieldName = WmsGoods.fields.batchMax1.ToString() }; | |||
|  |         //    GridColumn myCol11 = new GridColumn() { Caption = "大整", Visible = true, FieldName = WmsGoods.fields.batchMax2.ToString() }; | |||
|  |             GridColumn myCol12 = new GridColumn() { Caption = "国药准字", Visible = true, FieldName = WmsGoods.exfields.regeditCode.ToString() }; | |||
|  | 
 | |||
|  |            // GridColumn myCol100 = new GridColumn() { Caption = "数量", Visible = true, FieldName = WmsOutDetail.fields.count.ToString() }; | |||
|  |             GridColumn myCol100 = new GridColumn() { Caption = "数量", Visible = true, FieldName = "pdaOuting" }; | |||
|  |      | |||
|  |             //   GridColumn myCol101 = new GridColumn() { Caption = "零货", Visible = true, FieldName = WmsOutDetail.fields.bulkCount.ToString() }; | |||
|  |          //   GridColumn myCol102 = new GridColumn() { Caption = "小整", Visible = true, FieldName = WmsOutDetail.fields.batch1Count.ToString() }; | |||
|  |         //    GridColumn myCol103 = new GridColumn() { Caption = "大整", Visible = true, FieldName = WmsOutDetail.fields.batch2Count.ToString() }; | |||
|  |          //   GridColumn myCol104 = new GridColumn() { Caption = "箱", Visible = true, FieldName = WmsOutDetail.fields.boxcnt.ToString() }; | |||
|  |             GridColumn myCol14 = new GridColumn() { Caption = "批号", Visible = true, FieldName = WmsOutDetail.fields.batch.ToString() }; | |||
|  |             GridColumn myCol15 = new GridColumn() { Caption = "生产日期", Visible = true, FieldName = WmsOutDetail.fields.productDate.ToString() }; | |||
|  |             GridColumn myCol16 = new GridColumn() { Caption = "有效期", Visible = true, FieldName = WmsOutDetail.fields.validDate.ToString() }; | |||
|  | 
 | |||
|  |          //   GridColumn myCol17 = new GridColumn() { Caption = "状态", Visible = true, FieldName = WmsOutDetail.fields.state.ToString() }; | |||
|  |             GridColumn myCol18 = new GridColumn() { Caption = "说明", Visible = true, FieldName = WmsOutDetail.fields.description.ToString() }; | |||
|  | 
 | |||
|  |             GridColumn myCo20 = new GridColumn() { Caption = "客户", Visible = true, FieldName = WmsOutPickRequest.fields.customerName.ToString() }; | |||
|  |             GridColumn myCol22 = new GridColumn() { Caption = "货位", Visible = true, FieldName = WmsOutPickLable.fields.locationId.ToString() }; | |||
|  |            | |||
|  |             gridview.Columns.Add(myCol01); | |||
|  |             gridview.Columns.Add(myCol2); | |||
|  |             gridview.Columns.Add(myCol22); | |||
|  |             gridview.Columns.Add(myCol100);         | |||
|  |             gridview.Columns.Add(myCo20); | |||
|  |            // gridview.Columns.Add(myCol101); | |||
|  |         //    gridview.Columns.Add(myCol102); | |||
|  |            // gridview.Columns.Add(myCol103); | |||
|  |          //   gridview.Columns.Add(myCol104); | |||
|  |             gridview.Columns.Add(myCol6); | |||
|  |             gridview.Columns.Add(myCol5); | |||
|  |          | |||
|  |             gridview.Columns.Add(myCol15); | |||
|  |             gridview.Columns.Add(myCol16); | |||
|  |             gridview.Columns.Add(myCol3); | |||
|  | 
 | |||
|  |             gridview.Columns.Add(myCol14); | |||
|  | 
 | |||
|  |             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(myCol7); | |||
|  | 
 | |||
|  |             gridview.Columns.Add(myCol12); | |||
|  |             gridview.Columns.Add(myCol1); | |||
|  |         //    gridview.Columns.Add(myCol17); | |||
|  |             gridview.Columns.Add(myCol18); | |||
|  |             //to show bottom scroll bar | |||
|  |             gridview.OptionsView.ColumnAutoWidth = false; | |||
|  |             gridview.BestFitColumns(); | |||
|  |           //  gridView2.Focus(); | |||
|  |         } | |||
|  | 
 | |||
|  |         private void initialGridView3Columns(GridView gridview) | |||
|  |         { | |||
|  |             if (gridView4 == gridview) | |||
|  |             { | |||
|  |                 setupGridView(gridview, true, false, false); | |||
|  |             } | |||
|  |             else | |||
|  |             { | |||
|  |                 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 myCol011 = new GridColumn() { Caption = "分区", Visible = true, FieldName = "partName" }; | |||
|  |             gridview.Columns.Add(myCol011); | |||
|  |              | |||
|  | 
 | |||
|  |             GridColumn myCol1 = new GridColumn() { Caption = "商品编码", Visible = true, FieldName = WmsGoods.fields.goodsId.ToString() }; | |||
|  |             GridColumn myCol2 = new GridColumn() { Caption = "商品名称", Visible = true, FieldName = WmsGoods.exfields.goodsName.ToString() }; | |||
|  |             GridColumn myCol3 = new GridColumn() { Caption = "厂家", Visible = true, FieldName = WmsGoods.exfields.manufacturer.ToString() }; | |||
|  |             GridColumn myCol4 = new GridColumn() { Caption = "规格", Visible = true, FieldName = WmsGoods.exfields.spec.ToString() }; | |||
|  |             GridColumn myCol5 = new GridColumn() { Caption = "单位", Visible = true, FieldName = WmsGoods.exfields.unit.ToString() }; | |||
|  |            // GridColumn myCol6 = new GridColumn() { Caption = "大包装数量", Visible = true, FieldName = WmsGoods.exfields.bigCount.ToString() }; | |||
|  |             GridColumn myCol7 = new GridColumn() { Caption = "剂型", Visible = true, FieldName = WmsGoods.exfields.type.ToString() }; | |||
|  |             GridColumn myCol8 = new GridColumn() { Caption = "商品类型", Visible = true, FieldName = WmsGoods.exfields.goodsTypeName.ToString() }; | |||
|  |             //  GridColumn myCol9 = new GridColumn() { Caption = "大零", Visible = true, FieldName = WmsGoods.fields.bulkMax.ToString() }; | |||
|  |             //    GridColumn myCol10 = new GridColumn() { Caption = "小整", Visible = true, FieldName = WmsGoods.fields.batchMax1.ToString() }; | |||
|  |             //    GridColumn myCol11 = new GridColumn() { Caption = "大整", Visible = true, FieldName = WmsGoods.fields.batchMax2.ToString() }; | |||
|  |             GridColumn myCol12 = new GridColumn() { Caption = "国药准字", Visible = true, FieldName = WmsGoods.exfields.regeditCode.ToString() }; | |||
|  | 
 | |||
|  |             GridColumn myCol100 = new GridColumn() { Caption = "数量", Visible = true, FieldName = WmsOutDetail.fields.count.ToString() }; | |||
|  |             GridColumn myCol101 = new GridColumn() { Caption = "零货", Visible = true, FieldName = WmsOutDetail.fields.count.ToString() }; | |||
|  |            // GridColumn myCol102 = new GridColumn() { Caption = "整货", Visible = true, FieldName = WmsOutDetail.fields.batch1Count.ToString() }; | |||
|  |            // GridColumn myCol103 = new GridColumn() { Caption = "大整", Visible = true, FieldName = WmsOutDetail.fields.batch2Count.ToString() }; | |||
|  |           //  GridColumn myCol104 = new GridColumn() { Caption = "箱", Visible = true, FieldName = WmsOutDetail.fields.boxcnt.ToString() }; | |||
|  |             GridColumn myCol14 = new GridColumn() { Caption = "批号", Visible = true, FieldName = WmsOutDetail.fields.batch.ToString() }; | |||
|  |             GridColumn myCol15 = new GridColumn() { Caption = "生产日期", Visible = true, FieldName = WmsOutDetail.fields.productDate.ToString() }; | |||
|  |             GridColumn myCol16 = new GridColumn() { Caption = "有效期", Visible = true, FieldName = WmsOutDetail.fields.validDate.ToString() }; | |||
|  | 
 | |||
|  |             GridColumn myCol17 = new GridColumn() { Caption = "状态", Visible = true, FieldName = WmsOutDetail.fields.state.ToString() }; | |||
|  |             GridColumn myCol18 = new GridColumn() { Caption = "说明", Visible = true, FieldName = WmsOutDetail.fields.description.ToString() }; | |||
|  | 
 | |||
|  | 
 | |||
|  |             GridColumn myCol20 = new GridColumn() { Caption = "波次", Visible = true, FieldName = WmsOutPickLable.fields.dpsOrder.ToString() }; | |||
|  |             GridColumn myCol21 = new GridColumn() { Caption = "颜色", Visible = true, FieldName = "colorName" }; | |||
|  |             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 = "desk" }; | |||
|  | 
 | |||
|  | 
 | |||
|  |             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 == gridView4){ | |||
|  |                 gridview.Columns.Add(myCol281);  | |||
|  |                 gridview.Columns.Add(myCol2);  | |||
|  |                 gridview.Columns.Add(myCol14); | |||
|  |                 gridview.Columns.Add(myCol26); | |||
|  |                 gridview.Columns.Add(myCol100); | |||
|  |                 gridview.Columns.Add(myCol27); | |||
|  |                 gridview.Columns.Add(myCol20); | |||
|  |                 gridview.Columns.Add(myCol21); | |||
|  |                 gridview.Columns.Add(myCol22); | |||
|  |                 gridview.Columns.Add(myCol23); | |||
|  |                 gridview.Columns.Add(myCol28); | |||
|  |                 | |||
|  |                 gridview.OptionsView.ColumnAutoWidth = false; | |||
|  |                 gridview.BestFitColumns(); | |||
|  |                 return; | |||
|  |             } | |||
|  |             if (WmsConstants.OUT_LIGHT_ENABLE) | |||
|  |             { | |||
|  |                 gridview.Columns.Add(myCol29); | |||
|  |                 gridview.Columns.Add(myCol30); | |||
|  |             } | |||
|  |          | |||
|  |             gridview.Columns.Add(myCol25); | |||
|  |             gridview.Columns.Add(myCol21); | |||
|  |             gridview.Columns.Add(myCol22); | |||
|  |             gridview.Columns.Add(myCol23); | |||
|  |         | |||
|  |             gridview.Columns.Add(myCol101); | |||
|  |             gridview.Columns.Add(myCol5); | |||
|  |           //  gridview.Columns.Add(myCol17); | |||
|  |             gridview.Columns.Add(myCol24); | |||
|  |             gridview.Columns.Add(myCol31); | |||
|  |             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(myCol18); | |||
|  |             //to show bottom scroll bar | |||
|  |             gridview.OptionsView.ColumnAutoWidth = false; | |||
|  |             gridview.BestFitColumns(); | |||
|  |             //  gridView2.Focus(); | |||
|  |         } | |||
|  | 
 | |||
|  |         #endregion | |||
|  | 
 | |||
|  |         /* | |||
|  |         void setProgressbar() | |||
|  |         { | |||
|  | 
 | |||
|  |             progressBarControl1.Visible = true; | |||
|  |             //设置一个最小值   | |||
|  |             progressBarControl1.Properties.Minimum = 0; | |||
|  |             //设置一个最大值   | |||
|  |             progressBarControl1.Properties.Maximum = WmsConstants.PREPICKING_ORDERS_CNT ; | |||
|  |             //设置步长,即每次增加的数   | |||
|  |             progressBarControl1.Properties.Step = 1; | |||
|  |             //设置进度条的样式   | |||
|  |             progressBarControl1.Properties.ProgressViewStyle = DevExpress.XtraEditors.Controls.ProgressViewStyle.Solid; | |||
|  |             //当前值   | |||
|  |             progressBarControl1.Position = 0; | |||
|  |             //是否显示进度数据   | |||
|  |             progressBarControl1.Properties.ShowTitle = true; | |||
|  |             //是否显示百分比   | |||
|  |             progressBarControl1.Properties.PercentView = true; | |||
|  | 
 | |||
|  |            | |||
|  | 
 | |||
|  |         } | |||
|  |         */ | |||
|  |         /// <summary> | |||
|  |         /// 预处理,按客户分拆订单,生成分拣单,并出库 | |||
|  |         /// </summary> | |||
|  |         private void preErpOrders() | |||
|  |         { | |||
|  |           //  swAutoWave.Enabled = false; | |||
|  |           //  btnPickOrders.Enabled = false; | |||
|  |           //  client.Open(); | |||
|  |           //  client.syncOrders(); | |||
|  |         //    showWaitForm(); | |||
|  |           //  outClient.syncOrders(); | |||
|  |           //  DataTable dt = outClient.getNewRequests().Tables[0];//.getWmsOutRequest.getNewRequests().Tables[0]; | |||
|  |           //  preCnt = dt.Rows.Count; | |||
|  |            // if (preCnt >= 0) | |||
|  |            // {  | |||
|  |                 //threadPreProcess = new Thread(lgOutReq.preProcessOutOrders); | |||
|  |                 //threadPreProcess.IsBackground = true; | |||
|  |                 //threadPreProcess.Start();  | |||
|  |              //   client.syncOrders(); | |||
|  | 
 | |||
|  |                 //threadPreProcess = new Thread(preErpOrdersInWcf); | |||
|  |                 //threadPreProcess.IsBackground = true; | |||
|  |                 //threadPreProcess.Start();   | |||
|  |                 // preErpOrdersInWcf(); | |||
|  |            // } | |||
|  |             if (InvokeRequired) | |||
|  |             { | |||
|  |                 this.Invoke(new loadNewCurrentWave(delegate() | |||
|  |                 { | |||
|  |                     loadPickOrders(); | |||
|  |                 })); | |||
|  | 
 | |||
|  |             } | |||
|  |             else | |||
|  |             { | |||
|  |                 loadPickOrders(); | |||
|  |             } | |||
|  |            // this.loadPickOrders(); | |||
|  |            // preErpOrdersInWcf(); in windows service now  | |||
|  |             btnPickOrders.Enabled = true; | |||
|  | 
 | |||
|  |           //  client.Close(); | |||
|  |         } | |||
|  | 
 | |||
|  |         /* | |||
|  |         void preErpOrdersInWcf() | |||
|  |         { | |||
|  |             try | |||
|  |             { | |||
|  |                 outClient.preProcessOutOrders(); | |||
|  |                 closeClient(); | |||
|  |             } | |||
|  |             catch (Exception e) | |||
|  |             { | |||
|  |                 showErrorMsg(e,e.Message); | |||
|  |             } | |||
|  |             finally | |||
|  |             { | |||
|  |                 closeWaitForm(); | |||
|  |             } | |||
|  |         }*/ | |||
|  | 
 | |||
|  |         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 = 15; | |||
|  |         //完成任务时需要调用 | |||
|  |         delegate void loadNewPickOrders(); | |||
|  |         private void refreshOrderList() | |||
|  |         { | |||
|  |             //还可以进行其他的一些完任务完成之后的逻辑处理 | |||
|  |   | |||
|  |             //swAutoOrder.Enabled = true; | |||
|  |             //btnPickOrders.Enabled = !autoOrder;  | |||
|  | 
 | |||
|  |             if (!autoOrder && !this.isManualRefreshPickList) | |||
|  |             { | |||
|  |                 return; | |||
|  |             } | |||
|  | 
 | |||
|  |             TimeSpan ts = DateTime.Now - lastRefreshTime; | |||
|  |             if (ts.TotalDays > 10) | |||
|  |             { | |||
|  |                // lastRefreshTime = DateTime.Now; | |||
|  |              //   return; | |||
|  |                 refreshInterval = 15;// 初次启动15秒后开始提取合并出库单 | |||
|  |             } | |||
|  |             else | |||
|  |             { | |||
|  |                 refreshInterval = 15 + Convert.ToInt32(spinOrder.Value * 60); | |||
|  |             } | |||
|  |             if (ts.TotalSeconds < refreshInterval) | |||
|  |             { | |||
|  |                 return; | |||
|  |             } | |||
|  |             | |||
|  |             this.isManualRefreshPickList = false; //手动刷新 只单独自动刷一次 | |||
|  |               | |||
|  |             lastRefreshTime = DateTime.Now; | |||
|  |             if (InvokeRequired) | |||
|  |             { | |||
|  |                 this.Invoke(new loadNewPickOrders(delegate() | |||
|  |                 { | |||
|  |                     swAutoOrder.Enabled = true; | |||
|  |                     btnPickOrders.Enabled = !autoOrder; | |||
|  |                   //  this.loadPickOrders(); | |||
|  |                     if (autoOrder) | |||
|  |                     { | |||
|  |                         setPreOrderInterVal(); | |||
|  |                     } | |||
|  |                 })); | |||
|  | 
 | |||
|  |             } | |||
|  |             else | |||
|  |             { | |||
|  |                 swAutoOrder.Enabled = true; | |||
|  |                 btnPickOrders.Enabled = !autoOrder; | |||
|  |                // this.loadPickOrders(); | |||
|  |                 if (autoOrder) | |||
|  |                 { | |||
|  |                     setPreOrderInterVal(); | |||
|  |                 } | |||
|  |             } | |||
|  |               | |||
|  |             if (autoOrder) | |||
|  |             { | |||
|  |                // setPreOrderInterVal(); | |||
|  |                // refreshInterval = 15+ Convert.ToInt32(spinOrder.Value * 60); | |||
|  |                | |||
|  |               //  Thread.CurrentThread.Join(refreshInterval); | |||
|  |                 //继续后台处理 | |||
|  |                 preErpOrders(); | |||
|  |             } | |||
|  | 
 | |||
|  | 
 | |||
|  |         } | |||
|  | 
 | |||
|  |         private void setPreOrderInterVal() | |||
|  |         {  | |||
|  |              | |||
|  | 
 | |||
|  |             if(checkEditAutoInterVal.Checked && dtPickOrders!=null){ | |||
|  |                 decimal waitingOrders = dtPickOrders.Rows.Count * pager1.PageCount; | |||
|  |                 int pickOrdersPerWave =10;  | |||
|  |                 int cacheWaves= 10; | |||
|  |                 if (waitingOrders <= pickOrdersPerWave * cacheWaves  ) | |||
|  |                 { | |||
|  |                     spinOrder.Value = 5; | |||
|  |                     return; | |||
|  |                 } | |||
|  | 
 | |||
|  |                 decimal minutesPerWave = WmsConstants.WAVE_SECONDS /60 ; //3 minues per wave | |||
|  |                 minutesPerWave = minutesPerWave > 0 ? minutesPerWave : 1; | |||
|  |               | |||
|  |              | |||
|  |                 decimal interval = (waitingOrders - pickOrdersPerWave * cacheWaves) / pickOrdersPerWave * minutesPerWave; | |||
|  |                 spinOrder.Value = interval >= 0 ? interval : spinOrder.Value; | |||
|  | 
 | |||
|  |               //  spinOrder.Value = 0; | |||
|  |             } | |||
|  |          | |||
|  | 
 | |||
|  | 
 | |||
|  |         } | |||
|  | 
 | |||
|  | 
 | |||
|  |         /// <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(); | |||
|  |             TimeSpan ts = DateTime.Now - lastWaveRequestTime; | |||
|  |             if (ts.TotalDays >10) | |||
|  |             { | |||
|  |                 lastWaveRequestTime = DateTime.Now; | |||
|  |                 return; | |||
|  |             } | |||
|  |             else | |||
|  |             { | |||
|  | 
 | |||
|  |                 int sleepTime = 5;// (int)spinWave.Value;//波次间隔 5s | |||
|  |                 if (ts.TotalSeconds < sleepTime) | |||
|  |                 { | |||
|  |                     return; | |||
|  |                 } | |||
|  | 
 | |||
|  |             } | |||
|  | 
 | |||
|  |             if (!canNewWave) // if (!lgt.canNewWave) | |||
|  |             { | |||
|  |                  | |||
|  |                 return; | |||
|  |             } | |||
|  | 
 | |||
|  |             if (autoWave) | |||
|  |             { | |||
|  |                 // 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 | |||
|  |             { | |||
|  |                 //  dtBulks  = lgt.getWmsOutPickRequest.getBulkDetailInCurrentWave().Tables[0]; | |||
|  |                 dtBulks = pickClient.getPartionBulkDetailInCurrentWave(); | |||
|  |                 closeClient(); | |||
|  |                 gridControl2.DataSource = null; | |||
|  |                 updateLableStatus(dtBulks); | |||
|  |                 debug(string.Format("load bulk details in current wave,count {0} ", dtBulks.Rows.Count)); | |||
|  |                 gridControl3.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]["dpsOrder"].ToString(); | |||
|  |                         WmsConstants.WAVE_LAST_TIME = lastWaveTime; | |||
|  |                         WmsConstants.WAVE_CURRENT_ORDER = currentWaveOrder; //只显示有零货的波次 | |||
|  |                     } | |||
|  |                     debug("start getPickDetailByWaveOrder....."); | |||
|  |                     //DataTable dtBatch = lgt.getWmsOutPickRequest.getPickDetailByWaveOrder(WmsConstants.WAVE_CURRENT_ORDER).Tables[0]; | |||
|  |                    /* | |||
|  |                     DataTable dtBatch = pickClient.getPickDetailByWaveOrder(WmsConstants.WAVE_CURRENT_ORDER); | |||
|  |                     closeClient(); | |||
|  |                     debug("end getPickDetailByWaveOrder.....1"); | |||
|  |                     DataView dv = dtBatch.DefaultView; | |||
|  |                     dv.RowFilter = "volType >0"; | |||
|  | 
 | |||
|  |                     gridControl2.DataSource = dv; | |||
|  |                     debug("end getPickDetailByWaveOrder.....2"); | |||
|  |                     * */ | |||
|  |                 } | |||
|  |                 else | |||
|  |                 { | |||
|  |                     if (WmsConstants.WAVE_LAST_FREE_TIME == DateTime.MinValue) | |||
|  |                     { | |||
|  |                         WmsConstants.WAVE_LAST_FREE_TIME = DateTime.Now; | |||
|  |                     } | |||
|  |                 } | |||
|  |                 debug("initialGridView2Columns .....1"); | |||
|  |              //   initialGridView2Columns(gridView2); | |||
|  | 
 | |||
|  |              //   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"); | |||
|  |                 bindException(); | |||
|  | 
 | |||
|  |                 //if (!string.IsNullOrEmpty(WmsConstants.WAVE_CURRENT_ORDER)) | |||
|  |                 //{ | |||
|  |                 //  //  timeCnt(); | |||
|  |                 //} | |||
|  | 
 | |||
|  |             } | |||
|  |               | |||
|  |             catch (Exception er) | |||
|  |             { | |||
|  |                 //  setCurrentRequestDetail(); | |||
|  |                // showErrorMsg(er.Message); | |||
|  |             }  | |||
|  |             closeWaitForm(); | |||
|  |             debug("end loadPickOrdersInWave....."); | |||
|  |         } | |||
|  | 
 | |||
|  | 
 | |||
|  |         void bindException() | |||
|  |         { | |||
|  |             debug(string.Format("begin to bindException " )); | |||
|  |            // dtException = lgt.getWmsOutPickRequest.getBulkValidationException(enumOutStockPickStatus.复核异常).Tables[0]; | |||
|  |             dtException = pickClient.getBulkValidationException((int)enumOutStockPickStatus.复核异常) ; | |||
|  |             closeClient(); | |||
|  |             DataView dv = dtException.DefaultView; | |||
|  |            // dv.RowFilter = "state =" + (int)enumOutStockDetailStatus.validatedException; | |||
|  |                  | |||
|  |             exceptionRowIndex = -1; | |||
|  |             gridControl4.DataSource = dv; | |||
|  |             initialGridView3Columns(gridView4); | |||
|  |            // debug(string.Format("end  bindException,count {0} ", dtException.Rows.Count)); | |||
|  |              | |||
|  |            // setCurrentValidationDetail(); | |||
|  | 
 | |||
|  |         } | |||
|  |         /// <summary>   | |||
|  |         /// loading waiting pick orders | |||
|  |         /// </summary>   | |||
|  |         private int pagerQuery() | |||
|  |         { | |||
|  |           //  initialRequestOrders(); | |||
|  |             //this.gridviewGoodsType.DataSource = lgt.GetAllActiveData().Tables[0].DefaultView; | |||
|  |            // debug("start pagerQuery....."); | |||
|  |              | |||
|  |             //showWaitForm(); | |||
|  | 
 | |||
|  |             try | |||
|  |             { | |||
|  |                 // this.splashScreenManager1.ShowWaitForm(); | |||
|  |                // string query = string.Format("{0} =#'{1}';", WmsOutPickRequest.fields.outStoreType.ToString(), (int)enumOutStoreType.拣货出库) | |||
|  |                //              + string.Format("{0} =#'{1}';", WmsOutRequest.fields.state.ToString(), (int)enumOutStockRequestStatus.定位完成)  | |||
|  | 
 | |||
|  |                 string query = string.Format("{0} =# {1} ;", WmsOutPickRequest.fields.outStoreType.ToString(), (int)enumOutStoreType.拣货出库) | |||
|  |                              + string.Format("{0} ># {1} ;", WmsOutPickRequest.fields.bulkCnt.ToString(), 0) | |||
|  |                              + string.Format("{0} is #{1};", WmsOutPickRequest.fields.waveOrder.ToString(), "null")  | |||
|  |          | |||
|  |                 +(lgPriority.Expanded && this.txtCustname.Text.Trim().Length > 0 ? string.Format("{0} like #'%{1}%';", WmsOutPickRequest.fields.customerName.ToString(), filtRiskChar(this.txtCustname.Text.Trim())) : ""); | |||
|  |                | |||
|  |                  | |||
|  |                  | |||
|  |                 bool isQueryNotChanged = lastQuery.Equals(query); | |||
|  |                 this.pager1.PageCurrent = isQueryNotChanged ? this.pager1.PageCurrent : 1; //根据查询条件的变化给pager赋值 | |||
|  |                 this.pager1.PageCurrent = this.pager1.PageCurrent > 0 ? this.pager1.PageCurrent : 1; | |||
|  |                 int start = (pager1.PageSize * (pager1.PageCurrent - 1) + 1); | |||
|  |                 int end = (pager1.PageSize * pager1.PageCurrent); | |||
|  |                 lastQuery = query; | |||
|  |                 DataSet ds = pickClient.Query(query, start, end); | |||
|  |                 closeClient(); | |||
|  |                 dtPickOrders = ds.Tables[0]; | |||
|  |                 int cnt = Convert.ToInt32(ds.Tables[1].Rows[0][0].ToString()); | |||
|  |                 //dt = lgt.Query(query, start, end); //string.IsNullOrEmpty(query) ? lgt.GetGoodType.getAllData(start, end) : lgt.g; | |||
|  | 
 | |||
|  |                 dtPickOrders.PrimaryKey = new DataColumn[] { dtPickOrders.Columns["ID"] }; | |||
|  |                 bool firstLoad = !isQueryNotChanged || this.gridControl1.DataSource == null; | |||
|  |                 this.gridControl1.DataSource = dtPickOrders.DefaultView; | |||
|  |                 initialDataGridColumns(); | |||
|  |                 //update selected row index to the last updated one. | |||
|  |                 | |||
|  |                 if (selectedRequest !=null) | |||
|  |                 { | |||
|  |                     selectedRowIndex = -1; | |||
|  |                     DataRow dr = dtPickOrders.Rows.Find(selectedRequest.ID); | |||
|  |                     if (dr != null) | |||
|  |                     { | |||
|  |                         selectedRowIndex = dtPickOrders.Rows.IndexOf(dr); | |||
|  |                     } | |||
|  | 
 | |||
|  |                     if (selectedRowIndex >= 0 && dtPickOrders.Rows.Count > selectedRowIndex) | |||
|  |                     { | |||
|  |                         // gridView1.SelectRow(selectedRowIndex); | |||
|  |                         gridView1.FocusedRowHandle = selectedRowIndex; | |||
|  |                         //  gridView1.MakeRowVisible(selectedRowIndex); | |||
|  | 
 | |||
|  |                     } | |||
|  | 
 | |||
|  |                     //gridView1.FocusedRowHandle = selectedRowIndex; | |||
|  |                 }else | |||
|  |                // if (firstLoad) | |||
|  |                 { | |||
|  |                     gridView1.FocusedRowHandle = 0; | |||
|  |                     gridView1.SelectRow(0); | |||
|  |                    // setCurrentRequestDetail(); | |||
|  |                 } | |||
|  |                 closeWaitForm(); | |||
|  |                 return cnt; | |||
|  |             } | |||
|  |             catch (Exception e) | |||
|  |             { | |||
|  |                // showErrorMsg(e,e.Message); | |||
|  |             } | |||
|  | 
 | |||
|  |            //closeWaitForm(); | |||
|  |             return 0;// lgt.getRowCount(query); | |||
|  |             // return lgt.GetGoodType.QueryCount();  | |||
|  |             //debug("end pagerQuery....."); | |||
|  |         } | |||
|  | 
 | |||
|  | 
 | |||
|  | 
 | |||
|  |     | |||
|  |         | |||
|  | 
 | |||
|  |         /// <summary>   | |||
|  |         /// 分页控件产生的事件   | |||
|  |         /// </summary>   | |||
|  |         private int pager_EventPaging(DeiNiu.Controls.pager.EventPagingArg e) | |||
|  |         { | |||
|  |             selectedRowIndex = 0; //reset currentRowIndex | |||
|  |             return pagerQuery(); | |||
|  |         } | |||
|  | 
 | |||
|  |         private void initialPagerControls() | |||
|  |         { | |||
|  | 
 | |||
|  |             pager1.MaximumSize = new Size(0, 20); | |||
|  |             pager1.EventPaging += new DeiNiu.Controls.pager.EventPagingHandler(pager_EventPaging); | |||
|  |             #region DataGridView与Pager控件绑定 | |||
|  |             this.pager1.PageCurrent = 1;//当前页为第一页   | |||
|  |             pager1.PageSize = Utils.WmsConstants.PAGER_SIZE;//每页行数   | |||
|  |             this.pager1.Bind();//绑定   | |||
|  |             #endregion | |||
|  | 
 | |||
|  |         } | |||
|  |         | |||
|  |         private void gridView1_FocusedRowObjectChanged(object sender, FocusedRowObjectChangedEventArgs e) | |||
|  |         { | |||
|  |             if (gridView1.FocusedRowHandle <0 || gridView1.FocusedRowHandle == selectedRowIndex) | |||
|  |             { | |||
|  |                 if (gridView1.IsGroupRow(e.RowHandle)) //set first row of group selected | |||
|  |                 { | |||
|  |                     selectedRowIndex = gridView1.GetChildRowHandle(e.RowHandle, 0); | |||
|  |                   //  setCurrentRequestDetail(); | |||
|  |                 } | |||
|  |                  | |||
|  |                     return; ; | |||
|  |                  | |||
|  |             } | |||
|  |             selectedRowIndex = gridView1.FocusedRowHandle; | |||
|  |             // showErrorMsg("selection:"+ selectedRowIndex); | |||
|  |             //setCurrentRequestDetail(); | |||
|  |         } | |||
|  | 
 | |||
|  |         private void clearInputs() | |||
|  |         { | |||
|  | 
 | |||
|  |         } | |||
|  | 
 | |||
|  |          | |||
|  |         private void gridView1_DataSourceChanged(object sender, EventArgs e) | |||
|  |         { | |||
|  |             if (selectedRowIndex >= 0 && dtPickOrders.Rows.Count > selectedRowIndex) | |||
|  |             { | |||
|  |                 gridView1.FocusedRowHandle = selectedRowIndex; | |||
|  |                 gridView1.MakeRowVisible(selectedRowIndex); | |||
|  | 
 | |||
|  |             } | |||
|  |         } | |||
|  |         int exceptionRowIndex = -1; | |||
|  |         private void gridView4_FocusedRowObjectChanged(object sender, FocusedRowObjectChangedEventArgs e) | |||
|  |         { | |||
|  |             if (gridView4.FocusedRowHandle < 0 || gridView4.FocusedRowHandle == exceptionRowIndex) | |||
|  |             { | |||
|  |                 if (gridView4.IsGroupRow(e.RowHandle)) //set first row of group selected | |||
|  |                 { | |||
|  |                     exceptionRowIndex = gridView4.GetChildRowHandle(e.RowHandle, 0); | |||
|  |                     setCurrentValidationDetail(); | |||
|  |                 } | |||
|  |                 | |||
|  |                     return; ; | |||
|  |                  | |||
|  |             } | |||
|  |             exceptionRowIndex = gridView4.FocusedRowHandle; | |||
|  |             // showErrorMsg("selection:"+ selectedRowIndex); | |||
|  |             setCurrentValidationDetail(); | |||
|  |         } | |||
|  | 
 | |||
|  |         private void gridView4_DataSourceChanged(object sender, EventArgs e) | |||
|  |         { | |||
|  |             if (selectedRowIndex >= 0 && dtPickOrders.Rows.Count > exceptionRowIndex) | |||
|  |             { | |||
|  |                 gridView4.FocusedRowHandle = exceptionRowIndex; | |||
|  |                 gridView4.MakeRowVisible(exceptionRowIndex); | |||
|  | 
 | |||
|  |             } | |||
|  |         } | |||
|  |        | |||
|  |         void setCurrentValidationDetail() | |||
|  |         { | |||
|  |             if (gridView4.FocusedRowHandle == -1) | |||
|  |             { | |||
|  |                 return; | |||
|  |             } | |||
|  |             resetExceptionDetails(); | |||
|  |             DataRow dr = dtException.Rows[gridView4.FocusedRowHandle]; | |||
|  |             exceptionDetail = new WmsOutPickDetail_tmp(dr); | |||
|  |             if (dr == null) | |||
|  |             { | |||
|  |                 return; | |||
|  |             } | |||
|  |             lbException.Text = dr["exception"].ToString(); | |||
|  |             lbGoodsName.Text = dr["goodsName"].ToString(); | |||
|  |             lbPickOrderNo.Text = dr["pickOrderNo"].ToString(); | |||
|  |            // lbWaveNo.Text = dr["dpsOrder"].ToString(); | |||
|  | 
 | |||
|  | 
 | |||
|  |              | |||
|  | 
 | |||
|  |               | |||
|  |         } | |||
|  | 
 | |||
|  | 
 | |||
|  |         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(); | |||
|  |                         waveStart();  | |||
|  |                        /* | |||
|  |                         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(); | |||
|  |                     waveStart(); | |||
|  |                     /* | |||
|  |                     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 .... ")); | |||
|  |              | |||
|  | 
 | |||
|  |         } | |||
|  |         | |||
|  |         void resetExceptionDetails() | |||
|  |         { | |||
|  |             exceptionDetail = null; | |||
|  |             lbException.Text =""; | |||
|  |             lbGoodsName.Text = ""; | |||
|  |             lbPickOrderNo.Text = ""; | |||
|  |             comException.SelectedIndex = -1; | |||
|  |             textEditExRemark.Text = ""; | |||
|  |           //  lbWaveNo.Text = ""; | |||
|  |         } | |||
|  | 
 | |||
|  |         private void btnDelete_Click(object sender, EventArgs e) | |||
|  |         {  | |||
|  | 
 | |||
|  |         } | |||
|  | 
 | |||
|  |         protected void query() | |||
|  |         { | |||
|  |             pager1.Bind(); | |||
|  |         } | |||
|  | 
 | |||
|  | 
 | |||
|  |         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 void updateObjects(List<WmsGoods> goods) | |||
|  |         {  | |||
|  |             showWaitForm(); | |||
|  |             //WaitFormService.Show(this);  | |||
|  |             try | |||
|  |             { | |||
|  |         | |||
|  |                 query(); | |||
|  | 
 | |||
|  |             } | |||
|  |             catch (Exception e) | |||
|  |             { | |||
|  |                 showErrorMsg(e.Message); | |||
|  |             } | |||
|  |             finally | |||
|  |             { | |||
|  |                 // WaitFormService.Close(); | |||
|  |                 closeWaitForm(); | |||
|  |               | |||
|  |             } | |||
|  |               | |||
|  | 
 | |||
|  |         } | |||
|  | 
 | |||
|  |         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 gridView1_SelectionChanged(object sender, DevExpress.Data.SelectionChangedEventArgs e) | |||
|  |         { | |||
|  |             if (gridView1.FocusedRowHandle <0 || gridView1.FocusedRowHandle == selectedRowIndex) | |||
|  |             { | |||
|  |                 return; | |||
|  |             } | |||
|  |             selectedRowIndex = gridView1.FocusedRowHandle; | |||
|  |             // showErrorMsg("selection:"+ selectedRowIndex); | |||
|  |            // setCurrentRequestDetail(); | |||
|  |         } | |||
|  | 
 | |||
|  |         private void initialDataGrid() | |||
|  |         { | |||
|  | 
 | |||
|  |             gridControl4.Size = new Size( gridControl4.Size.Width,105) ; | |||
|  | 
 | |||
|  |             gridView1.OptionsSelection.MultiSelect = true;//按shift / control 多选 | |||
|  |             this.gridView1.OptionsBehavior.AutoPopulateColumns = false; | |||
|  |             this.gridView1.FocusRectStyle = DevExpress.XtraGrid.Views.Grid.DrawFocusRectStyle.RowFocus; | |||
|  |             this.gridView1.FocusRectStyle = DevExpress.XtraGrid.Views.Grid.DrawFocusRectStyle.CellFocus; | |||
|  |             this.gridView1.OptionsBehavior.Editable = false; | |||
|  |             //    this.gridView1.OptionsSelection.EnableAppearanceFocusedCell = false; | |||
|  | 
 | |||
|  |             this.gridView1.FocusedRowObjectChanged += new DevExpress.XtraGrid.Views.Base.FocusedRowObjectChangedEventHandler(this.gridView1_FocusedRowObjectChanged); | |||
|  |             this.gridView1.DataSourceChanged += new System.EventHandler(this.gridView1_DataSourceChanged); | |||
|  | 
 | |||
|  |             //show line number | |||
|  |             this.gridView1.IndicatorWidth = 40; | |||
|  |             this.gridView1.CustomDrawRowIndicator += new DevExpress.XtraGrid.Views.Grid.RowIndicatorCustomDrawEventHandler(gridView_CustomDrawRowIndicator); | |||
|  |             this.gridView2.IndicatorWidth = 40; | |||
|  |             this.gridView2.CustomDrawRowIndicator += new DevExpress.XtraGrid.Views.Grid.RowIndicatorCustomDrawEventHandler(gridView_CustomDrawRowIndicator); | |||
|  | 
 | |||
|  |             this.gridView3.IndicatorWidth = 40; | |||
|  |             this.gridView3.CustomDrawRowIndicator += new DevExpress.XtraGrid.Views.Grid.RowIndicatorCustomDrawEventHandler(gridView_CustomDrawRowIndicator); | |||
|  |             //this.gridView3.IndicatorWidth = 40; | |||
|  |             //this.gridView3.CustomDrawRowIndicator += new DevExpress.XtraGrid.Views.Grid.RowIndicatorCustomDrawEventHandler(gridView_CustomDrawRowIndicator); | |||
|  | 
 | |||
|  | 
 | |||
|  |             this.gridView4.IndicatorWidth = 40; | |||
|  |             this.gridView4.CustomDrawRowIndicator += new DevExpress.XtraGrid.Views.Grid.RowIndicatorCustomDrawEventHandler(gridView_CustomDrawRowIndicator); | |||
|  |              | |||
|  |             this.gridView4.FocusedRowObjectChanged += new DevExpress.XtraGrid.Views.Base.FocusedRowObjectChangedEventHandler(this.gridView4_FocusedRowObjectChanged); | |||
|  |             this.gridView4.DataSourceChanged += new System.EventHandler(this.gridView4_DataSourceChanged); | |||
|  |              | |||
|  |            // gridView3.RowCellStyle += gridView_RowCellStyle; | |||
|  |            gridView1.RowCellStyle += gridView_RowCellStyle; | |||
|  |            gridView1.CustomColumnDisplayText += gridView1_CustomColumnDisplayText; | |||
|  |         } | |||
|  |     | |||
|  | 
 | |||
|  | 
 | |||
|  | 
 | |||
|  |        private void gridView2_CustomColumnDisplayText(object sender, DevExpress.XtraGrid.Views.Base.CustomColumnDisplayTextEventArgs e) | |||
|  |         { | |||
|  | 
 | |||
|  |             if (sender == gridView2) | |||
|  |             { | |||
|  | 
 | |||
|  |                 if (e.Column.FieldName == "state") | |||
|  |                 { | |||
|  |                    | |||
|  |                     switch (e.DisplayText) | |||
|  |                     { | |||
|  |                         case "1" : | |||
|  |                             e.DisplayText = "已出货"; | |||
|  |                             break; | |||
|  |                         case "0": | |||
|  |                             e.DisplayText = "待出货"; | |||
|  | 
 | |||
|  |                             break; | |||
|  |                         case "2": | |||
|  |                             e.DisplayText = "出现错误"; | |||
|  |                             break; | |||
|  |                         case "": | |||
|  |                             e.DisplayText = "待出货"; | |||
|  |                             break; | |||
|  |                         //default:  | |||
|  |                         //    e.DisplayText = "未分配货位"; | |||
|  |                     } | |||
|  |                 } | |||
|  |             } | |||
|  |         } | |||
|  |   | |||
|  | 
 | |||
|  |        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); | |||
|  |            /* | |||
|  |            if (sender == this.gridView2) | |||
|  |            { | |||
|  |                if (this.gridView2.GetDataRow(e.RowHandle)["state"].ToString().Trim() == "2") | |||
|  |                { | |||
|  |                    DevExpress.Utils.AppearanceHelper.Apply(e.Appearance, alert); | |||
|  |                } | |||
|  |            }else if(sender == this.gridView1){ | |||
|  |                  | |||
|  |                if ( state == "2") | |||
|  |                { | |||
|  |                    if (currentView != null && e.RowHandle == currentView.FocusedRowHandle) | |||
|  |                    { | |||
|  |                        DevExpress.Utils.AppearanceHelper.Apply(e.Appearance, alertFocus); | |||
|  |                    } | |||
|  |                    else | |||
|  |                    { | |||
|  |                        DevExpress.Utils.AppearanceHelper.Apply(e.Appearance, alert); | |||
|  |                    } | |||
|  |                } | |||
|  |                else if (state == "1") | |||
|  |                { | |||
|  |                    DevExpress.Utils.AppearanceHelper.Apply(e.Appearance, passed); | |||
|  |                }  | |||
|  |            } | |||
|  |            */ | |||
|  |        } | |||
|  | 
 | |||
|  |        /* | |||
|  |         private void setCurrentRequestDetail() | |||
|  |         { | |||
|  |             if (!getCurrentObject() || selectedRequest == null ) | |||
|  |             { | |||
|  |                 return; | |||
|  |             } | |||
|  |   | |||
|  |             showWaitForm(); | |||
|  | 
 | |||
|  |             try | |||
|  |             { | |||
|  | 
 | |||
|  |     | |||
|  |             } | |||
|  |             catch (Exception e) | |||
|  |             { | |||
|  |                 showErrorMsg(e.Message); | |||
|  |             } | |||
|  |             closeWaitForm(); | |||
|  | 
 | |||
|  |         } | |||
|  |         */ | |||
|  | 
 | |||
|  |          | |||
|  |   | |||
|  | 
 | |||
|  |         /* | |||
|  |         private void btnNewWave_Click(object sender, EventArgs e) | |||
|  |         { | |||
|  |             clearWaveData(); | |||
|  |             btnNewWave.Enabled = false; | |||
|  |             newWave(); | |||
|  |         } | |||
|  |          | |||
|  |         */ | |||
|  |   | |||
|  |   | |||
|  |         private void btnPickOrders_Click(object sender, EventArgs e) | |||
|  |         { | |||
|  |             showWaitForm(); | |||
|  |             autoOrder = false; | |||
|  |             btnPickOrders.Enabled = false; | |||
|  |             try | |||
|  |             { | |||
|  |                 preErpOrders(); | |||
|  | 
 | |||
|  |             } | |||
|  |             catch (Exception er) | |||
|  |             { | |||
|  |                 showErrorMsg(er.Message); | |||
|  |             } | |||
|  |             closeWaitForm(); | |||
|  |             setPreOrderInterVal(); | |||
|  |             isManualRefreshPickList = true; | |||
|  |             lastRefreshTime = DateTime.Now; | |||
|  |             autoOrder = swAutoOrder.IsOn; | |||
|  |         } | |||
|  | 
 | |||
|  |         private void btnEndWave_Click(object sender, EventArgs e) | |||
|  |         { | |||
|  |             //if (pickClient.finishCurrentWave(true)) | |||
|  |             //{ | |||
|  |             //    clearWaveData(); | |||
|  |             //} | |||
|  | 
 | |||
|  |             if (MessageBox.Show("确定确认货物已经拣选完毕,并强制结束本轮拣货吗?", "强制结束", MessageBoxButtons.OKCancel) == DialogResult.Cancel) | |||
|  |             { | |||
|  |                 return; | |||
|  |                 | |||
|  | 
 | |||
|  |             }     | |||
|  | 
 | |||
|  |             endWave(true); | |||
|  |         } | |||
|  | 
 | |||
|  |         void turnOffLights() | |||
|  |         { | |||
|  |             if (lights.Count == 0) | |||
|  |             { | |||
|  |                 //searchLight(); | |||
|  |             //    return; | |||
|  |             } | |||
|  |                | |||
|  |            // Model.dis_id_comment id; | |||
|  |             Model.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 light.activeComports) | |||
|  |             { | |||
|  |                 if (port == 0) | |||
|  |                 { | |||
|  |                     continue; | |||
|  |                 } | |||
|  |               //  unart_manage.com_manage[port].write_reset_device(); 复位各个硬件,通道灯,标签。。。 | |||
|  | 
 | |||
|  |                 coms.com_manage[port].init_port.write_clear_comment(id); | |||
|  | 
 | |||
|  |                 if (!lights.ContainsKey(port)) | |||
|  |                 { | |||
|  |                     continue; | |||
|  |                 } | |||
|  | 
 | |||
|  |                 foreach (int lt in lights[port]) | |||
|  |                 { | |||
|  |                     Model.close_channel_led idx; | |||
|  |                     idx.channel_id = lt;   | |||
|  |                     idx.state = 1; | |||
|  |                     coms.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 light.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 = coms.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) | |||
|  |         { | |||
|  |             showWaitForm(); | |||
|  |             if (isForce)                | |||
|  |             { | |||
|  |               //  pick.init_port(enumLabelPickType.pick); | |||
|  |                 turnOffLights(); | |||
|  |             } | |||
|  |             try | |||
|  |             { | |||
|  |                 pickClient.finishCurrentWave(WmsConstants.WAVE_CURRENT_ORDER,isForce); | |||
|  |                 closeClient(); | |||
|  |             } | |||
|  |             catch(Exception e) | |||
|  |             { | |||
|  |                 closeWaitForm(); | |||
|  |                 showErrorMsg(e.Message); | |||
|  |             } | |||
|  |             clearWaveData(); | |||
|  |           //  waveStart(); | |||
|  |          //   btnEndWave.Enabled = false; | |||
|  |          //   btnRelight.Enabled = false; | |||
|  |             _canNewWave = true; | |||
|  |             closeWaitForm(); | |||
|  |         } | |||
|  |         private void clearWaveData() | |||
|  |         { | |||
|  | 
 | |||
|  |             WmsConstants.WAVE_CURRENT_ORDER = ""; | |||
|  |         //    lbWaveNo.Text = "空闲"; | |||
|  |           //  WmsConstants.WAVE_LAST_FREE_TIME = DateTime.Now; | |||
|  | 
 | |||
|  |           //  timer.Stop(); | |||
|  |             //lbWaveSpan.Text = "00:00:00"; | |||
|  |             //lbWaveSpan.Text = string.Format(" "); | |||
|  |           //  loadPickOrdersInWave(); | |||
|  |             //gridControl3.DataSource =null; | |||
|  |             if (dtBulks != null) | |||
|  |             { | |||
|  |           //      dtBulks.Clear(); | |||
|  |             } | |||
|  |        //     gridControl3.DataSource = null; | |||
|  |           //  gridControl2.DataSource = null; | |||
|  | 
 | |||
|  |         } | |||
|  |         private void swAutoOrder_Toggled(object sender, EventArgs e) | |||
|  |         { | |||
|  |             | |||
|  |             autoOrder = swAutoOrder.IsOn; | |||
|  |             btnPickOrders.Enabled = !autoOrder; | |||
|  |             if (autoOrder) | |||
|  |             { | |||
|  |                 preErpOrders(); | |||
|  |             } | |||
|  |         } | |||
|  |          | |||
|  |         private void swAutoWave_Toggled(object sender, EventArgs e) | |||
|  |         { | |||
|  |           | |||
|  |             autoWave = swAutoWave.IsOn;  | |||
|  |             if (autoWave) | |||
|  |             { | |||
|  |                 newWave(); | |||
|  |             } | |||
|  |         } | |||
|  |          | |||
|  | 
 | |||
|  |         private void btnRefresh_Click(object sender, EventArgs e) | |||
|  |         { | |||
|  |             showWaitForm(); | |||
|  |            // elelab.pick.init_port(enumLabelPickType.pick); | |||
|  |              loadPickOrdersInWave(); | |||
|  |              closeWaitForm(); | |||
|  | 
 | |||
|  |         } | |||
|  | 
 | |||
|  |         private void btnRelight_Click(object sender, EventArgs e) | |||
|  |         { | |||
|  |            // turnOffLights(); | |||
|  |             //lightLabelsCurrentWave(); | |||
|  |         } | |||
|  | 
 | |||
|  |         private void lightLabelsCurrentWave(int[] parts) | |||
|  |         { | |||
|  |             if (!WmsConstants.OUT_LIGHT_ENABLE) | |||
|  |             { | |||
|  |                 return; | |||
|  |             } | |||
|  |              | |||
|  | 
 | |||
|  |             debug("start relightCurrentWave....."); | |||
|  |             //Thread light = new Thread(lgt.lightLables); | |||
|  |             //light.IsBackground = true; | |||
|  |             //light.Start(); | |||
|  |             | |||
|  |              | |||
|  |             closeWaitForm(); | |||
|  | 
 | |||
|  |             if (parts.Length == 0) | |||
|  |             { | |||
|  |                 return; | |||
|  |             } | |||
|  |             //showWaitForm("正在点亮标签..."); | |||
|  |             if (InvokeRequired) | |||
|  |             { | |||
|  |                 this.Invoke(new loadNewCurrentWave(delegate() | |||
|  |                 { loadWaveDetails(); | |||
|  |                     loadPickOrders(); | |||
|  |                 })); | |||
|  | 
 | |||
|  |             } | |||
|  |             else | |||
|  |             { | |||
|  |                 loadWaveDetails(); | |||
|  |                  loadPickOrders(); | |||
|  |             } | |||
|  | 
 | |||
|  |             | |||
|  |             try | |||
|  |             { | |||
|  |                 lightLables(parts); // lgt.lightLables(); | |||
|  |                 | |||
|  |             } | |||
|  |             catch(Exception er) | |||
|  |             { | |||
|  |                 closeWaitForm(); | |||
|  |                 showErrorMsg(er,er.Message); | |||
|  |             } | |||
|  |             finally | |||
|  |             { | |||
|  |              closeWaitForm(); | |||
|  |             } | |||
|  |              debug("end relightCurrentWave....."); | |||
|  |         } | |||
|  | 
 | |||
|  |         //private void checkAuto_CheckedChanged(object sender, EventArgs e) | |||
|  |         //{ | |||
|  |         //    spinOrder.Enabled = checkAuto.Checked; | |||
|  |         //} | |||
|  | 
 | |||
|  |         private void btnCorrect_Click(object sender, EventArgs e) | |||
|  |         { | |||
|  |            | |||
|  |             if (exceptionDetail == null) | |||
|  |             { | |||
|  |                 return; | |||
|  |             } | |||
|  |             if (comException.SelectedItem == null) | |||
|  |             { | |||
|  |                 showErrorMsg("请选择处理结果"); | |||
|  |                 comException.Focus(); | |||
|  |                 return; | |||
|  |             } | |||
|  |             exceptionDetail.validSolution = ((Node)comException.SelectedItem).ID; | |||
|  |             exceptionDetail.solutionRemark = textEditExRemark.Text; | |||
|  |             exceptionDetail.bulkPickState = (int)enumOutStockPickStatus.复核异常处理;  | |||
|  |           //  exceptionDetail.Update(); | |||
|  | 
 | |||
|  |             try | |||
|  |             { | |||
|  | 
 | |||
|  |                 bool b = this.pickClient.updateValidBulkPickExceptionStatus(exceptionDetail.ID, exceptionDetail.bulkPickState, | |||
|  |                     exceptionDetail.solutionRemark, exceptionDetail.validSolution); | |||
|  |                 closeClient(); | |||
|  | 
 | |||
|  |                 resetExceptionDetails(); | |||
|  |                 bindException(); | |||
|  |             } | |||
|  |             catch (Exception ex) | |||
|  |             { | |||
|  |                 showErrorMsg(ex,ex.Message); | |||
|  |             } | |||
|  | 
 | |||
|  | 
 | |||
|  | 
 | |||
|  |         } | |||
|  | 
 | |||
|  |       | |||
|  |         private void checkEditAutoInterVal_CheckedChanged(object sender, EventArgs e) | |||
|  |         { | |||
|  |             spinOrder.Enabled = !checkEditAutoInterVal.Checked; | |||
|  |         } | |||
|  | 
 | |||
|  |         private void updateLableStatus(DataTable dt = null) | |||
|  |         { | |||
|  |             if (!WmsConstants.OUT_LIGHT_ENABLE) | |||
|  |             { | |||
|  |                 return; | |||
|  |             } | |||
|  |            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"; 则已拣的不再显示 | |||
|  |            gridControl3.DataSource = dtBulks.DefaultView; | |||
|  |              | |||
|  | 
 | |||
|  |         } | |||
|  | 
 | |||
|  |         private void GoodsOutForm_FormClosing(object sender, FormClosingEventArgs e) | |||
|  |         { | |||
|  |             timer.Stop(); | |||
|  |             timer.Close();  | |||
|  |             //  closeClient(); | |||
|  |           //  closeClient(); | |||
|  |             autoWave = false;  | |||
|  |             turnOffLights();// elelab.pick.init_port(enumLabelPickType.pick); | |||
|  |         } | |||
|  | 
 | |||
|  | 
 | |||
|  |         //-------------below moved from logic layer | |||
|  | 
 | |||
|  | 
 | |||
|  | 
 | |||
|  | 
 | |||
|  | 
 | |||
|  |         WmsOutPickRequest outRequest = new WmsOutPickRequest(); | |||
|  |         WmsStockRecord stkRecord = new WmsStockRecord(); | |||
|  |         WmsOutPickLable pickLabelDetail = new WmsOutPickLable(); | |||
|  | 
 | |||
|  | 
 | |||
|  |          /// <summary> | |||
|  |         /// 点亮待拣选标签 | |||
|  |         /// </summary> | |||
|  |         private void lightLablesInSvc() | |||
|  |         { | |||
|  |             pickClient.lightLables(); | |||
|  |         } | |||
|  | 
 | |||
|  |         /// <summary> | |||
|  |         /// 点亮待拣选标签 | |||
|  |         /// </summary> | |||
|  |         private void lightLables(int[] parts) | |||
|  |         { | |||
|  | 
 | |||
|  |           //  lightLablesInSvc(); | |||
|  | 
 | |||
|  |             //lightLabelsInWinformSvc(); | |||
|  | 
 | |||
|  |             if (!WmsConstants.OUT_LIGHT_ENABLE) | |||
|  |             { | |||
|  |                 return; | |||
|  |             } | |||
|  |             if (parts.Length == 0) | |||
|  |             { | |||
|  |                 return; | |||
|  |             } | |||
|  | 
 | |||
|  |             initLights(); | |||
|  |               | |||
|  |            // turnOffLights(); | |||
|  |              | |||
|  |             lastWave = DateTime.Now; | |||
|  |             WmsConstants.WAVE_CURRENT_LIGHTS_STATUS.Clear(); | |||
|  | 
 | |||
|  |             bool exist = pickClient.getCurrentPickList((int)enumPickState.未拣).Rows.Count > 0; | |||
|  |             closeClient(); | |||
|  |             if (!exist) | |||
|  |             { | |||
|  |                 return; | |||
|  |             } | |||
|  |               | |||
|  |             showWaitForm("正在点亮标签..."); | |||
|  |             string result = lightPart.lightsUp(pickClient.getPartsPickList(  parts,(int)enumPickState.未拣), enumLabelPickType.pick); | |||
|  |             closeClient(); | |||
|  | 
 | |||
|  |  //#if DEBUG  | |||
|  |             closeWaitForm(); | |||
|  |             /* | |||
|  |             if (!string.IsNullOrEmpty(result)) | |||
|  |             { | |||
|  |               //  lbLightsInfo.Text = result; | |||
|  |                 if (WmsConstants.OUT_SPEAK_WAVE) | |||
|  |                 { | |||
|  |                     speak(errorMsg); | |||
|  |                 } | |||
|  |                 // showErrorMsg(result); | |||
|  |             } | |||
|  |             else if ( light.activeComports.Count == 0) | |||
|  |             { | |||
|  |                 if ( WmsConstants.OUT_SPEAK_WAVE) | |||
|  |                 { | |||
|  |                     speak(errorMsg);  | |||
|  |                 } | |||
|  |                  | |||
|  |             } | |||
|  |             else | |||
|  |             { | |||
|  |                 //#endif | |||
|  |                 //speak(WmsConstants.WAVE_CURRENT_ORDER); | |||
|  |                 if (WmsConstants.WAVE_CURRENT_ORDER.Length > 0) | |||
|  |                 { | |||
|  |                     if (WmsConstants.OUT_SPEAK_WAVE) | |||
|  |                     { | |||
|  |                         speak(WmsConstants.WAVE_CURRENT_ORDER + " 开始捡货啦"); | |||
|  |                     } | |||
|  |                      | |||
|  |                 } | |||
|  |                 LogHelper.debug(typeof(GoodsOutForm), "开始拣货 :" + WmsConstants.WAVE_CURRENT_ORDER); | |||
|  |             } | |||
|  | 
 | |||
|  |             */ | |||
|  |            // speak("Go! Go! Go!"); | |||
|  |              | |||
|  |         } | |||
|  |         void initLights() | |||
|  |         { | |||
|  |             string errorMsg = "灯光设备连接错误"; | |||
|  |             if (InvokeRequired) | |||
|  |             { | |||
|  |                 this.Invoke(new loadNewCurrentWave(delegate() | |||
|  |                 { | |||
|  |                     lbLightsInfo.Text = "设备连接正常"; | |||
|  |                     lightPart.initPort(enumLabelPickType.pick); | |||
|  |                     if (lightPart.activeComports.Count == 0) | |||
|  |                     { | |||
|  |                         lbLightsInfo.Text = errorMsg; | |||
|  |                         // showErrorMsg("拣选设备连接错误,请检查设备连接"); | |||
|  |                         return; | |||
|  |                     } | |||
|  | 
 | |||
|  |                 })); | |||
|  | 
 | |||
|  |             } | |||
|  |             else | |||
|  |             { | |||
|  |                 lbLightsInfo.Text = "设备连接正常"; | |||
|  |                 lightPart.initPort(enumLabelPickType.pick); | |||
|  |                 if (lightPart.activeComports.Count == 0) | |||
|  |                 { | |||
|  |                     lbLightsInfo.Text = errorMsg; | |||
|  |                     // showErrorMsg("拣选设备连接错误,请检查设备连接"); | |||
|  |                     return; | |||
|  |                 } | |||
|  |             } | |||
|  |         } | |||
|  | 
 | |||
|  |         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; | |||
|  |             } | |||
|  |             int[] lstPartion ; | |||
|  |             _canNewWave = false; | |||
|  |           //  bool exist = false; | |||
|  |             try | |||
|  |             { | |||
|  |                 | |||
|  |                 showWaitForm("正在配置新波次"); | |||
|  | 
 | |||
|  | 
 | |||
|  |                 lstPartion= pickClient.newPartPickWave(); | |||
|  |                 closeClient(); | |||
|  |               //  WmsConstants.WAVE_CURRENT_PICK_STATUS.Clear(); | |||
|  |                lightLabelsCurrentWave(lstPartion); | |||
|  |                 LogHelper.debug(typeof(GoodsOutForm), "开始新波次 :" + WmsConstants.WAVE_CURRENT_ORDER); | |||
|  |             } | |||
|  |             catch (Exception er) | |||
|  |             { | |||
|  |                 LogHelper.WriteLog(this.GetType(), er); | |||
|  | #if debug | |||
|  |                 showErrorMsg(er.Message); | |||
|  | #endif | |||
|  |             } | |||
|  |             lastWaveRequestTime = DateTime.Now; | |||
|  |            | |||
|  |             //_canNewWave = true; | |||
|  | 
 | |||
|  | 
 | |||
|  |         } | |||
|  | 
 | |||
|  |         private void label1_Click(object sender, EventArgs e) | |||
|  |         { | |||
|  | 
 | |||
|  |         } | |||
|  |       //  bool isPriorityQuery = false; | |||
|  |         private void btnQuery_Click_1(object sender, EventArgs e) | |||
|  |         { | |||
|  |           //  isPriorityQuery = true; | |||
|  |             | |||
|  |             | |||
|  |           //  isPriorityQuery = false; | |||
|  |             showWaitForm(); | |||
|  |             try | |||
|  |             { | |||
|  |                 this.query(); | |||
|  | 
 | |||
|  |             } | |||
|  |             catch (Exception er) | |||
|  |             { | |||
|  |                 showErrorMsg(er.Message); | |||
|  |             } | |||
|  |             closeWaitForm(); | |||
|  | 
 | |||
|  |         } | |||
|  | 
 | |||
|  |         private void btnPriority_Click(object sender, EventArgs e) | |||
|  |         { | |||
|  |             if (dtPickOrders== null || dtPickOrders.Rows.Count == 0) | |||
|  |             { | |||
|  |                 showErrorMsg("没有要处理的出库订单"); | |||
|  |                 return; | |||
|  |             } | |||
|  | 
 | |||
|  |             List<string> orders = new List<string>();  | |||
|  |             int[] selectedRows = gridView1.GetSelectedRows();  | |||
|  |             foreach (int i in selectedRows) | |||
|  |             { | |||
|  |                 DataRowView row = (DataRowView)(GetGridViewFilteredAndSortedData(gridView1)[i]);// dt.Rows[i]; | |||
|  |                 orders.Add(row[WmsOutPickRequest.fields.pickOrderNo.ToString()].ToString()); | |||
|  | 
 | |||
|  |             }  | |||
|  | 
 | |||
|  |             if (orders.Count == 0) | |||
|  |             { | |||
|  |                 showErrorMsg("请选择订单"); | |||
|  |                 return; | |||
|  |             } | |||
|  |             int priority = comPriority.SelectedIndex; | |||
|  | 
 | |||
|  |             try | |||
|  |             { | |||
|  |                 if (pickClient.updatePriority(orders.ToArray(), priority)) | |||
|  |                 { | |||
|  |                     MessageBox.Show("设置成功"); | |||
|  |                 } | |||
|  |                 lgPriority.Expanded = false; | |||
|  |             } | |||
|  |             catch | |||
|  |             { | |||
|  |                 showErrorMsg("出错了"); | |||
|  | 
 | |||
|  |             } | |||
|  |             finally | |||
|  |             { | |||
|  |                 closeClient(); | |||
|  |             } | |||
|  | 
 | |||
|  | 
 | |||
|  |   | |||
|  |         } | |||
|  | 
 | |||
|  |         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 gridView1_CustomColumnDisplayText(object sender, DevExpress.XtraGrid.Views.Base.CustomColumnDisplayTextEventArgs e) | |||
|  |         { | |||
|  |             if (string.IsNullOrEmpty(e.DisplayText)) | |||
|  |             { | |||
|  |                 return; | |||
|  |             } | |||
|  | 
 | |||
|  |             if (e.Column.FieldName == WmsOutPickRequest.fields.priority.ToString()) | |||
|  |             { | |||
|  | 
 | |||
|  |                 if (!pickDetailStatus.ContainsValue(e.DisplayText)) | |||
|  |                 { | |||
|  | 
 | |||
|  |                     int display = -100; | |||
|  |                     string disTxt = e.DisplayText; | |||
|  | 
 | |||
|  |                     try | |||
|  |                     { | |||
|  |                         display = Convert.ToInt16(e.DisplayText); | |||
|  | 
 | |||
|  |                         e.DisplayText = this.pickPriority[display]; | |||
|  | 
 | |||
|  |                     } | |||
|  |                     catch | |||
|  |                     { | |||
|  |                         return; | |||
|  |                     } | |||
|  | 
 | |||
|  |                 } | |||
|  | 
 | |||
|  | 
 | |||
|  |                 //    e.DisplayText = pickDetailStatus.ContainsKey(display) ? pickDetailStatus[display] : display+""; | |||
|  | 
 | |||
|  |             } | |||
|  |               | |||
|  | 
 | |||
|  | 
 | |||
|  | 
 | |||
|  |         } | |||
|  |           | |||
|  |          | |||
|  |         /* | |||
|  |         private void lightSwitch_Toggled(object sender, EventArgs e) | |||
|  |         { | |||
|  |             if (isLoading) | |||
|  |             { | |||
|  |                 return; | |||
|  |             } | |||
|  |             try | |||
|  |             { | |||
|  |                 pickClient.switchLights(lightSwitch.IsOn); | |||
|  |                 closeClient(); | |||
|  |             } | |||
|  |             catch (Exception er) | |||
|  |             { | |||
|  |                 showErrorMsg(er, "出错了"); | |||
|  | 
 | |||
|  |             } | |||
|  |             finally | |||
|  |             { | |||
|  |                 closeClient(); | |||
|  |             } | |||
|  | 
 | |||
|  |             WmsConstants.OUT_LIGHT_ENABLE = lightSwitch.IsOn; | |||
|  |             updateLightsStatus(); | |||
|  |             string msg = WmsConstants.OUT_LIGHT_ENABLE ? "灯光分拣模式已开启" : "灯光分拣模式已关闭"; | |||
|  |             showInfoMsg(msg); | |||
|  |         } | |||
|  | 
 | |||
|  |         void updateLightsStatus() | |||
|  |         { | |||
|  |             lightSwitch.IsOn = WmsConstants.OUT_LIGHT_ENABLE; | |||
|  |             btnPrintPick.Enabled = !WmsConstants.OUT_LIGHT_ENABLE; | |||
|  |             btnRelight.Enabled = WmsConstants.OUT_LIGHT_ENABLE; | |||
|  |             lbLightsInfo.Text = WmsConstants.OUT_LIGHT_ENABLE ? "灯光分拣模式已开启" : "灯光分拣模式已关闭"; | |||
|  |         } | |||
|  |         */ | |||
|  |         private void btnPrintPick_Click(object sender, EventArgs e) | |||
|  |         { | |||
|  | 
 | |||
|  |         } | |||
|  | 
 | |||
|  |         void partFinished(int eleId) | |||
|  |         { | |||
|  |             int partion = eleId;// -WmsConstants.PART_FINISH_LABLE_ID_PLUS; | |||
|  |             // see if all lights data picked  | |||
|  |             int[] parts = {partion}; | |||
|  |             DataTable dt = pickClient.getPartsPickList(parts,(int)enumPickState.未拣); | |||
|  |             if (dt.Rows.Count > 0) //未完成,则重新点亮本区域任务 | |||
|  |             { | |||
|  |                 Thread.Sleep(2000); | |||
|  |               // WmsConstants.partStatus[eleId] = true; | |||
|  |                 lightLables(parts); | |||
|  |                 return; | |||
|  |             } | |||
|  |             pickClient.finishPartWave(partion, false); | |||
|  |             closeClient(); | |||
|  |             loadPickOrdersInWave(); | |||
|  |             newWave();  | |||
|  |               | |||
|  |         } | |||
|  | 
 | |||
|  |         void getPartFinishIds() | |||
|  |         { | |||
|  |             WmsConstants.PART_FINISH_LABLE_IDS = pickClient.getPartsFinishIds(); | |||
|  |             closeClient(); | |||
|  |         } | |||
|  | 
 | |||
|  |         private void btnRelight_Click_1(object sender, EventArgs e) | |||
|  |         { | |||
|  |             | |||
|  |             lightAllLabels(); | |||
|  |         } | |||
|  | 
 | |||
|  |         private void btnSetWaveRule_Click(object sender, EventArgs e) | |||
|  |         { | |||
|  |             WcfWaveRule waveRule = new WcfWaveRule(); | |||
|  | 
 | |||
|  |             waveRule.ID = ((Colitem)comboWaveRule.SelectedItem).key; | |||
|  | 
 | |||
|  |             waveRule.type = (int)enumWaveRuleType.DPS灯光波次; | |||
|  |             waveRule.interval = (int)spinWave.Value; | |||
|  | 
 | |||
|  |             if (waveRule.ID > 0) | |||
|  |             { | |||
|  | 
 | |||
|  |                 bool rs = wrClient.setRule(waveRule); | |||
|  |                 bool a = rs; | |||
|  |             } | |||
|  |             else | |||
|  |             { | |||
|  |                 showErrorMsg("请选择波次规则"); | |||
|  |             } | |||
|  | 
 | |||
|  |         } | |||
|  | 
 | |||
|  |     } | |||
|  | } |