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