2023-05-23 16:13:17 +08:00
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 GoodsOutForm : BasicRibbonForm
{
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 ;
int selectedLine = - 1 ;
string selectedSales = "" ;
public GoodsOutForm ( )
{
debug ( "start 出库。。。。。。" ) ;
InitializeComponent ( ) ;
initialControls ( ) ;
initialBackGroundTasks ( ) ;
isLoading = false ;
debug ( "end 出库。。。。。。" ) ;
}
#region initialControls
bool isLoading = true ;
private void initialControls ( )
{
btnRefresh . Width = btnQuery . Width = btnPriority . Width =
btnNewWave . Width = btnPickOrders . Width = btnPrintPick . Width = btnCorrect . Width = btnEndWave . Width = 23 ;
btnRefresh . Height = btnQuery . Height = btnPriority . Height =
btnNewWave . Height = btnPickOrders . Height = btnPrintPick . Height = btnCorrect . Height = btnEndWave . Height = 78 ;
initialComboBoxes ( ) ;
initialPagerControls ( ) ;
initialDataGrid ( ) ;
initialQueryInput ( ) ;
setValidationRule ( ) ;
initialTimer ( ) ;
updateLightsStatus ( ) ;
#if debug
layoutControlItem9 . Visibility = DevExpress . XtraLayout . Utils . LayoutVisibility . Always ;
#endif
}
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;
//lightLabelsCurrentWave();
/ *
if ( autoWave )
{
newWave ( ) ;
}
else
{
// lightLabelsCurrentWave();
}
Thread threadPreProcess = new Thread ( searchLight ) ;
threadPreProcess . IsBackground = true ;
threadPreProcess . Start ( ) ; * /
}
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 ;
case 3001 :
initialComboBoxs ( this . comboWaveRule , drss , true ) ;
break ;
}
}
this . initialComboBoxs ( this . comPriority , this . pickPriority , false ) ;
waveRuleService . WcfWaveRule [ ] rules = wrClient . getWaveRules ( enumWaveRuleType . DPS灯光波次 ) ;
//pickClient.Close();
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灯光波次 ) ;
//pickClient.Close();
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 ( myCol7 ) ;
// this.gridView1.Columns.Add(myCol5);
this . gridView1 . Columns . Add ( myCol4 ) ;
this . gridView1 . Columns . Add ( myCol1 ) ;
// this.gridView1.Columns.Add(myCol6);
// this.gridView1.Columns.Add(myCol3);
//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 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 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 = "port" } ;
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 ( myCol31 ) ;
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 ( 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(); it is in windows service now.
btnPickOrders . Enabled = true ;
// client.Close();
}
/ *
void preErpOrdersInWcf ( )
{
try
{
outClient . preProcessOutOrders ( ) ;
//pickClient.Close();
}
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 )
{
debug ( "refreshOrderList, return with reason..... !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 * 25 ) ;
}
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 ;
DateTime lastNoWaveRequestTime ;
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 )
{
LogHelper . debug ( typeof ( GoodsOutForm ) , string . Format ( " ts.TotalDays...{0} " , ts . TotalDays ) ) ;
lastWaveRequestTime = DateTime . Now ;
return ;
}
else
{
int sleepTime = ( int ) spinWave . Value ; //波次间隔 5s
LogHelper . debug ( typeof ( GoodsOutForm ) , string . Format ( " ts.TotalSeconds...{0} ,sleepTime {1} " , ts . TotalSeconds , sleepTime ) ) ;
if ( ts . TotalSeconds < sleepTime )
{
return ;
}
}
debug ( string . Format ( " canNewWave {0} " , canNewWave ) ) ;
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);
newWave ( ) ;
// this.clearWaveData();
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 . getBulkDetailInCurrentWave ( ) ;
//pickClient.Close();
// 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);
//pickClient.Close();
// 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 )
{
//pickClient.Close();
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 . 复 核 异 常 ) ;
//pickClient.Close();
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.正在分拣)
2024-11-04 23:34:38 +08:00
string query = string . Format ( "{0} =# {1} ;" , WmsOutPickRequest . fields . outStoreType . ToString ( ) , ( int ) enumOutStoreType . 拣 货 出 库 )
+ string . Format ( "{0} =#'{1}';" , WmsOutRequest . fields . state . ToString ( ) , ( int ) enumOutStockRequestStatus . 正 在 分 拣 )
2023-05-23 16:13:17 +08:00
+ 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 ) ;
//pickClient.Close();
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 )
{
//pickClient.Close();
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
{
debug ( "WmsConstants.WAVE_CURRENT_ORDER :" + WmsConstants . WAVE_CURRENT_ORDER ) ;
if ( InvokeRequired )
{
this . Invoke ( new loadNewCurrentWave ( delegate ( )
{
// lbLightsInfo.Text = (lights.Count > 0 ? "" : "未检测到通道灯");
refreshOrderList ( ) ;
updateLableStatus ( ) ;
if ( dtBulks = = null )
{
lightLabelsCurrentWave ( ) ;
} else
if ( string . IsNullOrEmpty ( WmsConstants . WAVE_CURRENT_ORDER ) ) //start new wave
{
lbWaveSpan . ForeColor = Color . Green ;
if ( lastNoWaveRequestTime = = DateTime . MinValue )
{
lastNoWaveRequestTime = DateTime . Now ;
}
// 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);
TimeSpan ts1 = DateTime . Now - lastNoWaveRequestTime ;
// lbWaveSpan.Text = string.Format("{0:D2}:{1:D2}:{2:D2}", 0, 0, spinWave.Value -(int)ts1.TotalSeconds);
// lbWaveSpan.Text = (spinWave.Value - (int)ts1.TotalSeconds)+"" ;
// lbWaveSpan.Text = (int)ts1.TotalSeconds + "";
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
{
lastNoWaveRequestTime = DateTime . MinValue ;
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 ;
if ( lastNoWaveRequestTime = = DateTime . MinValue )
{
lastNoWaveRequestTime = DateTime . Now ;
}
// 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);
TimeSpan ts1 = DateTime . Now - lastNoWaveRequestTime ;
// lbWaveSpan.Text = string.Format("{0:D2}:{1:D2}:{2:D2}", 0, 0, spinWave.Value -(int)ts1.TotalSeconds);
// lbWaveSpan.Text = (spinWave.Value - (int)ts1.TotalSeconds)+"" ;
// lbWaveSpan.Text = (int)ts1.TotalSeconds + "";
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
{
lastNoWaveRequestTime = DateTime . MinValue ;
lbWaveSpan . ForeColor = Color . Black ;
lbWaveSpan . Text = string . Format ( "{0:D2}:{1:D2}:{2:D2}" , ts . Hours , ts . Minutes , ts . Seconds ) ;
}
}
}
catch ( Exception er )
{
//pickClient.Close();
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 )
{
//pickClient.Close();
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
{
// lgt.update(goods);
//get updated data
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 = = "0" )
{
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 ;
2023-09-04 22:41:19 +08:00
//id.ele_id = Convert.ToInt32(new_id.Text);
2023-05-23 16:13:17 +08:00
id . order = 1 ;
id . ele_id = 65535 ;
id . state = 1 ;
//id.
foreach ( int port in light . activeComports )
{
if ( port = = 0 )
{
continue ;
}
// coms.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 ) ;
//pickClient.Close();
}
catch ( Exception e )
{
closeWaitForm ( ) ;
showErrorMsg ( e . Message ) ;
}
lastWaveRequestTime = DateTime . Now ;
clearWaveData ( ) ;
waveStart ( ) ;
btnEndWave . Enabled = false ;
btnRelight . Enabled = false ;
_canNewWave = true ;
closeWaitForm ( ) ;
}
private void clearWaveData ( )
{
LogHelper . debug ( this . GetType ( ) , "clear wave data..............." ) ;
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 ;
WmsConstants . WAVE_CURRENT_PICK_STATUS . Clear ( ) ;
WmsConstants . WAVE_CURRENT_LIGHTS_STATUS . Clear ( ) ;
}
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 ;
btnNewWave . Enabled = ! autoWave ;
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 ( )
{
if ( ! WmsConstants . OUT_LIGHT_ENABLE )
{
return ;
}
debug ( "start relightCurrentWave....." ) ;
//Thread light = new Thread(lgt.lightLables);
//light.IsBackground = true;
//light.Start();
loadWaveDetails ( ) ;
closeWaitForm ( ) ;
//showWaitForm("正在点亮标签...");
if ( InvokeRequired )
{
this . Invoke ( new loadNewCurrentWave ( delegate ( )
{
loadPickOrders ( ) ;
} ) ) ;
}
else
{
loadPickOrders ( ) ;
}
try
{
lightLables ( ) ; // 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 ) ;
//pickClient.Close();
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" ) )
{
2023-09-04 22:41:19 +08:00
key = Util . getLightKey ( Convert . ToInt32 ( dr [ "color" ] . ToString ( ) ) , Convert . ToInt32 ( dr [ "elabId" ] . ToString ( ) ) , Convert . ToInt32 ( dr [ "elabAddress" ] . ToString ( ) ) ) ;
2023-05-23 16:13:17 +08:00
WmsConstants . WAVE_CURRENT_PICK_STATUS [ key ] = true ;
}
}
}
if ( dtBulks = = null | | dtBulks . Rows . Count = = 0 )
{
return ;
}
WmsOutPickLable label ;
DataView dv = dtBulks . DefaultView ;
debug ( String . Format ( "updateLableStatus ...dtBulks row count {0}" , dv . Count ) ) ;
/ * foreach ( DataRowView dvRow in dv )
{
debug ( String . Format ( "dtBulks row isPicked value {0}" , dvRow [ "isPicked" ] . ToString ( ) ) ) ;
debug ( String . Format ( "dtBulks row isLightUp value {0}" , dvRow [ "isLightUp" ] . ToString ( ) ) ) ;
} * /
dv . RowFilter = "isPicked =0" ;
dv . Sort = "isPicked" ;
if ( dv . Count = = 0 )
{
//all picked, wave end
debug ( String . Format ( "updateLableStatus ...to end wave" ) ) ;
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 ( ) ;
//pickClient.Close();
autoWave = false ;
// timer.Enabled = 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 lightLables ( )
{
// lightLablesInSvc();
//lightLabelsInWinformSvc();
if ( ! WmsConstants . OUT_LIGHT_ENABLE )
{
return ;
}
string errorMsg = "灯光设备连接错误" ;
if ( InvokeRequired )
{
this . Invoke ( new loadNewCurrentWave ( delegate ( )
{
lbLightsInfo . Text = "连接正常" ;
light . initPort ( enumLabelPickType . pick ) ;
if ( light . activeComports . Count = = 0 )
{
lbLightsInfo . Text = errorMsg ;
// showErrorMsg("拣选设备连接错误,请检查设备连接");
return ;
}
} ) ) ;
}
else
{
lbLightsInfo . Text = "" ;
light . initPort ( enumLabelPickType . pick ) ;
if ( light . activeComports . Count = = 0 )
{
lbLightsInfo . Text = errorMsg ;
// showErrorMsg("拣选设备连接错误,请检查设备连接");
return ;
}
}
// turnOffLights();
lastWave = DateTime . Now ;
WmsConstants . WAVE_CURRENT_LIGHTS_STATUS . Clear ( ) ;
bool exist = pickClient . getCurrentPickList ( ( int ) enumPickState . 未 拣 ) . Rows . Count > 0 ;
//pickClient.Close();
if ( ! exist )
{
return ;
}
showWaitForm ( "正在点亮标签..." ) ;
string result = light . lightsUp ( pickClient . getPickedData ( ( int ) enumPickState . 未 拣 ) , enumLabelPickType . pick ) ;
//pickClient.Close();
//#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!");
closeWaitForm ( ) ;
}
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 ) //强制开始新波次,有可能会有再次发送亮灯数据时
{
debug ( "ts.TotalMilliseconds > WmsConstants.MAX_SECONDS_BETWEEN_WAVES, canNewWave now" ) ;
_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 = pickClient . getCurrentPickList ( ( int ) enumPickState . 未 拣 ) . Rows . Count > 0 ;
//pickClient.Close();
debug ( string . Format ( "newPickWave ... exist {0}" , exist ) ) ;
// bool exist = outRequest.getRequests(enumOutOrderType.pickOrder, enumOutStockRequestStatus.picking).Tables[0].Rows.Count >0;
if ( exist )
{
if ( WmsConstants . WAVE_CURRENT_LIGHTS_STATUS . Count = = 0 | | WmsConstants . WAVE_CURRENT_LIGHTS_STATUS . ContainsValue ( false ) )
{
try
{
// lightLables(); // lgt.lightLables();
lightLabelsCurrentWave ( ) ;
}
catch ( Exception er )
{
closeWaitForm ( ) ;
showErrorMsg ( er , er . Message ) ;
}
finally
{
closeWaitForm ( ) ;
}
}
// TaskCallBack();
return ;
// throw new DeiNiuException("当前波次还未处理完毕,不能开始新的波次。");
}
// List<WmsOutPickRequest> requests = outRequest.getRequestObjects(enumOutOrderType.拣货单, enumOutStockRequestStatus.波次处理);
/ * int cnt = pickClient . getRequests4WaveCnt ( ( int ) enumOutOrderType . 拣 货 单 , ( int ) enumOutStockRequestStatus . 等 待 波 次 ) ;
//pickClient.Close();
if ( cnt = = 0 )
{
_canNewWave = true ;
// TaskCallBack();
return ;
//throw new DeiNiuException("没有待出库数据需要处理的。");
} * /
//string newWave = "开始新波次";// "New Wave is comming";
// speak(newWave);
//to call client for new wave
showWaitForm ( "正在配置新波次" ) ;
pickClient . newPickWave ( ) ;
//pickClient.Close();
closeWaitForm ( ) ;
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 ;
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;
// 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
{
//pickClient.Close();
}
}
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 ( ! pickPriority . ContainsValue ( e . DisplayText ) )
{
int display = - 100 ;
string disTxt = e . DisplayText ;
try
{
2023-09-04 22:41:19 +08:00
display = Convert . ToInt32 ( e . DisplayText ) ;
2023-05-23 16:13:17 +08:00
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 ) ;
//pickClient.Close();
}
catch ( Exception er )
{
showErrorMsg ( er , "出错了" ) ;
}
finally
{
//pickClient.Close();
}
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 )
{
}
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 ( "请选择波次规则" ) ;
}
}
}
}