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 System.ServiceModel ;
using DNLightSvr ;
using System.ServiceModel.Description ; //开发环境
// using DeiNiu.wms.win.ServiceReferenceOutRequestLocal;//本地
namespace DeiNiu.wms.win
{
public partial class GoodsOutSeedsPickForm : 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 = "" ;
Dictionary < int , bool > partionLighting = new Dictionary < int , bool > ( ) ;
public GoodsOutSeedsPickForm ( )
{
// debug("start 出库。。。。。。");
lightPart . lightOffEvent + = partFinished ;
InitializeComponent ( ) ;
initialControls ( ) ;
initialBackGroundTasks ( ) ;
isLoading = false ;
// debug("end 出库。。。。。。");
startHost ( ) ;
initLights ( ) ;
}
#region initialControls
bool isLoading = true ;
private void initialControls ( )
{
initialComboBoxes ( ) ;
initialPagerControls ( ) ;
initialDataGrid ( ) ;
initialQueryInput ( ) ;
setValidationRule ( ) ;
initialTimer ( ) ;
// updateLightsStatus();
getPartFinishIds ( ) ;
initialGridView3Columns ( gridView3 ) ;
}
private void initialBackGroundTasks ( )
{
initLights ( ) ;
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 ( ) } ;
2023-09-04 22:41:19 +08:00
GridColumn myCol6 = new GridColumn ( ) { Caption = "大包装数量" , Visible = true , FieldName = WmsGoods . fields . bigCount . ToString ( ) } ;
2023-05-23 16:13:17 +08:00
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 ( myCol100 ) ;
gridview . Columns . Add ( myCol22 ) ;
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 = "color" } ;
GridColumn myCol32 = new GridColumn ( ) { Caption = "周转箱" , Visible = true , FieldName = WmsOutPickLable . fields . plate . ToString ( ) } ;
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 ( myCol22 ) ;
gridview . Columns . Add ( myCol100 ) ;
gridview . Columns . Add ( myCol2 ) ;
gridview . Columns . Add ( myCol14 ) ;
gridview . Columns . Add ( myCol281 ) ;
gridview . Columns . Add ( myCol26 ) ;
gridview . Columns . Add ( myCol27 ) ;
gridview . Columns . Add ( myCol20 ) ;
gridview . Columns . Add ( myCol32 ) ;
gridview . Columns . Add ( myCol21 ) ;
gridview . Columns . Add ( myCol23 ) ;
gridview . Columns . Add ( myCol28 ) ;
gridview . OptionsView . ColumnAutoWidth = false ;
gridview . BestFitColumns ( ) ;
return ;
}
//if (WmsConstants.OUT_LIGHT_ENABLE)
{
// gridview.Columns.Add(myCol30);
}
gridview . Columns . Add ( myCol2 ) ;
gridview . Columns . Add ( myCol22 ) ;
gridview . Columns . Add ( myCol100 ) ;
gridview . Columns . Add ( myCol23 ) ;
if ( WmsConstants . OUT_LIGHT_ENABLE )
{
gridview . Columns . Add ( myCol29 ) ;
}
gridview . Columns . Add ( myCol32 ) ;
gridview . Columns . Add ( myCol31 ) ;
gridview . Columns . Add ( myCol21 ) ;
gridview . Columns . Add ( myCol25 ) ;
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(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);
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 ;
}
}
// Thread threadNewWave;
private void newWave ( )
{
try
{
debug ( "start to create new wave ....." ) ;
Thread threadNewWave = new Thread ( newPickWave ) ;
threadNewWave . IsBackground = true ;
threadNewWave . Start ( ) ;
//newPickWave();
debug ( " create new wave in new thread....." ) ;
}
catch ( DeiNiuException de )
{
showErrorMsg ( de . Message ) ;
}
catch ( Exception er )
{
showErrorMsg ( er . Message ) ;
}
}
private void loadPickOrdersInWave ( )
{
// showErrorMsg("开始加载波次明细");
debug ( "start loadPickOrdersInWave....." ) ;
showWaitForm ( ) ;
try
{
// dtBulks = lgt.getWmsOutPickRequest.getBulkDetailInCurrentWave().Tables[0];
dtBulks = pickClient . getPartionBulkDetailInCurrentWave ( ) ;
closeClient ( ) ;
gridControl3 . DataSource = null ;
// gridControl2.DataSource = null;
// updateLableStatus(dtBulks);
debug ( string . Format ( "load bulk details in current wave,count {0} " , dtBulks . Rows . Count ) ) ;
gridControl3 . DataSource = dtBulks . DefaultView ;
updateLableStatus ( dtBulks ) ;
// 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....." ) ;
}
else
{
if ( WmsConstants . WAVE_LAST_FREE_TIME = = DateTime . MinValue )
{
WmsConstants . WAVE_LAST_FREE_TIME = DateTime . Now ;
}
}
// initialGridView3Columns(gridView3);
checkAndLightParts ( ) ;
}
catch ( Exception er )
{
// setCurrentRequestDetail();
showErrorMsg ( er . Message ) ;
}
try
{
gridView3 . BestFitColumns ( ) ;
}
catch ( Exception er )
{
// showErrorMsg(er.StackTrace);
}
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 . 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 ( dtPickOrders ! = null & & 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 = 5000 ;
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 ( )
{
updateLableStatus ( ) ;
waveStart ( ) ;
} ) ) ;
}
else
{
updateLableStatus ( ) ;
waveStart ( ) ;
}
}
catch ( Exception er )
{
// showErrorMsg(er.StackTrace);
// 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 lightSeeds . activeComports )
{
if ( port = = 0 )
{
continue ;
}
// unart_manage.com_manage[port].write_reset_device(); 复位各个硬件,通道灯,标签。。。
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 lightSeeds . 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 lightSeeds = new Thread(lgt.lightLables);
//lightSeeds.IsBackground = true;
//lightSeeds.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" ) )
{
// int color= lightSeeds.getMapColor(Convert.ToInt16(dr["partion"].ToString()), Convert.ToInt16(dr["color"].ToString()));
int color = Convert . ToInt16 ( dr [ "color" ] . ToString ( ) ) ;
key = Util . getLightKey ( color , 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 ) ;
// int color = lightSeeds.getMapColor(Convert.ToInt16(dr["partion"].ToString()), Convert.ToInt16(dr["color"].ToString()));
int color = Convert . ToInt16 ( dr [ "color" ] . ToString ( ) ) ;
key = Util . getLightKey ( 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 )
{
if ( host . State = = CommunicationState . Opened )
{
host . Close ( ) ;
}
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>
/// 点亮待拣选标签
/// 区域未亮灯的任务
/// 按waveorder,deskid asc 排序, 取前n个desk的亮灯任务
/// </summary>
private void lightLables ( int partId )
{
// lightLablesInSvc();
//lightLabelsInWinformSvc();
if ( ! WmsConstants . OUT_LIGHT_ENABLE )
{
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;
//}
DataTable dt = pickClient . getSeedDesksPickList ( partId , ( int ) enumPickState . 未 拣 ) ;
showWaitForm ( "正在点亮标签..." ) ;
string result = lightSeeds . lightsUp ( dt , enumLabelPickType . seedPick ) ;
closeClient ( ) ;
//#if DEBUG
closeWaitForm ( ) ;
partionLighting [ partId ] = true ;
}
void initLights ( )
{
string errorMsg = "灯光设备连接错误" ;
if ( InvokeRequired )
{
this . Invoke ( new loadNewCurrentWave ( delegate ( )
{
lbLightsInfo . Text = "设备连接正常" ;
lightSeeds . initPort ( enumLabelPickType . pick ) ;
if ( lightSeeds . activeComports . Count = = 0 )
{
lbLightsInfo . Text = errorMsg ;
// showErrorMsg("拣选设备连接错误,请检查设备连接");
return ;
}
initComs ( ) ;
} ) ) ;
}
else
{
lbLightsInfo . Text = "设备连接正常" ;
lightSeeds . initPort ( enumLabelPickType . pick ) ;
if ( lightSeeds . activeComports . Count = = 0 )
{
lbLightsInfo . Text = errorMsg ;
// showErrorMsg("拣选设备连接错误,请检查设备连接");
return ;
}
initComs ( ) ;
}
}
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 ( "正在配置新波次" ) ;
pickClient . newSeedsWave ( ) ;
closeClient ( ) ;
// WmsConstants.WAVE_CURRENT_PICK_STATUS.Clear();
if ( InvokeRequired )
{
this . Invoke ( new loadNewCurrentWave ( delegate ( )
{
loadPickOrdersInWave ( ) ;
bindException ( ) ;
pagerQuery ( ) ;
} ) ) ;
}
else
{
loadPickOrdersInWave ( ) ;
bindException ( ) ;
pagerQuery ( ) ;
}
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 ;
closeWaitForm ( ) ;
//_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 getPartFinishIds ( )
{
WmsConstants . PART_FINISH_LABLE_IDS = pickClient . getPartsFinishIds ( ) ;
closeClient ( ) ;
}
private void btnRelight_Click_1 ( object sender , EventArgs e )
{
startHost ( ) ;
}
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 ( "请选择波次规则" ) ;
}
}
//---------------------service
private ServiceHost host = null ;
// public static List<ELabel> labelPool = new List<ELabel>();
string svrUrl = "http://127.0.0.1:9998/DNLightSvc" ; //WmsConstants.LIGHT_SVR_ADDRESS;
string wmsUrl = "" ;
string postUrl = "" ;
delegate void showStatus ( ) ;
void startHost ( )
{
// lbStatus.Text = "服务启动失败";
try
{
// svrUrl = System.Configuration.ConfigurationManager.AppSettings["BaseUri"];
wmsUrl = System . Configuration . ConfigurationManager . AppSettings [ "WMSuri" ] ;
Uri baseAddress = new Uri ( svrUrl ) ;
LightService service = new LightService ( ) ;
service . lightPl + = this . lightByPlate ;
// service.lightUp += this.lightUp;
host = new ServiceHost ( service , baseAddress ) ;
// elelab.DNLights.lightOffEvent += testPicked;
WebHttpBinding binding = new WebHttpBinding ( ) ;
ServiceEndpoint endpoint = host . AddServiceEndpoint ( typeof ( ILightService ) , binding , baseAddress ) ;
WebHttpBehavior httpBehavior = new WebHttpBehavior ( ) ;
endpoint . Behaviors . Add ( httpBehavior ) ;
List < string > lstIp = Util . GetLocalIpAddress ( "InterNetwork" ) ;
// string showSvr = svrUrl;
if ( lstIp . Count > 0 )
{
svrUrl = svrUrl . Replace ( "127.0.0.1" , lstIp [ 0 ] ) ;
}
host . Opened + = delegate
{
// addLog("服务已启动");
if ( InvokeRequired )
{
this . Invoke ( new showStatus ( delegate ( )
{
lbStatus . Text = "服务已启动" ;
lbUrl . Text = "亮灯服务地址:" + svrUrl ; ;
} ) ) ;
}
else
{
lbStatus . Text = "服务已启动" ;
lbUrl . Text = "亮灯服务地址:" + svrUrl ;
}
} ;
host . Open ( ) ;
}
catch ( Exception e )
{
// addLog("启动服务失败: " + e.Message);
MessageBox . Show ( "启动服务失败: " + e . Message ) ;
}
}
public string lightByPlate ( string plateId , int part )
{
DataTable dt = pickClient . getPlatePickList ( plateId , part ) ;
closeClient ( ) ;
addLog ( "------------------------------------->" ) ;
addLog ( "开始亮灯: plateId: " + plateId + ", partion: " + part ) ;
#if DEBUG
if ( currentPort > 0 )
{
foreach ( DataRow dr in dt . Rows )
{
dr [ "port" ] = currentPort ;
}
}
//addLog("label COUNT 1: " + dt.Rows.Count);
#endif
DataView dv = dtBulks . DefaultView ;
dv . RowFilter = "partion=" + part + " and plate='" + plateId + "'" ;
// addLog("label COUNT 2: " + dt.Rows.Count);
foreach ( DataRowView drv in dv )
{
WmsOutPickLable_tmp wp = new WmsOutPickLable_tmp ( drv . Row ) ;
string json = String . Format ( "\"labelId\":{0},\"num1\":{1},\"num3\":{2},\"color\":{3},\"port\":{4}"
, wp . elabId , wp . elabAddress , wp . count , wp . color , wp . port ) ;
addLog ( "{" + json + "}" ) ;
}
dv . RowFilter = "" ;
if ( dt . Rows . Count > 0 )
{
showWaitForm ( "正在点亮标签..." ) ;
string result = lightSeeds . lightsUp ( dt , enumLabelPickType . seedPick ) ;
closeWaitForm ( ) ;
addLog ( result ) ;
addLog ( "<-------------------------------------" ) ;
return result ;
}
addLog ( "无亮灯任务" ) ;
addLog ( "<-------------------------------------" ) ;
return "无亮灯任务" ;
}
private void btnInitialCom_Click ( object sender , EventArgs e )
{
initialCom ( ) ;
}
void initComs ( )
{
String [ ] Portname = System . IO . Ports . SerialPort . GetPortNames ( ) ;
combComs . Properties . TextEditStyle = TextEditStyles . DisableTextEditor ;
combComs . Properties . Items . Clear ( ) ;
ComboBoxItemCollection col = combComs . Properties . Items ;
col . BeginUpdate ( ) ;
oCom = System . Configuration . ConfigurationManager . AppSettings [ "Com" ] ;
int oldIndex = 0 ;
try
{
for ( int i = 0 ; i < Portname . Length ; i + + )
{
//col.Add(i);
col . Add ( Portname [ i ] ) ;
if ( ! string . IsNullOrEmpty ( oCom ) & & oCom = = Portname [ i ] )
{
oldIndex = i ;
}
}
}
finally
{
col . EndUpdate ( ) ;
}
combComs . SelectedIndex = oldIndex ;
if ( combComs . Properties . Items . Count > 0 )
{
initialCom ( ) ;
}
}
Dictionary < int , dnwms > activeComs = new Dictionary < int , dnwms > ( ) ;
dnwms activePort ;
int currentPort = 0 ;
String oCom = "" ;
void initialCom ( )
{
try
{
int port = Convert . ToInt16 ( combComs . Text . Substring ( 3 ) ) ;
resetLights ( ) ;
if ( activeComs . Keys . Contains ( port ) )
{
if ( String . IsNullOrEmpty ( oCom ) | | ! oCom . Equals ( combComs . Text ) )
{
writeConfig ( "Com" , combComs . Text ) ;
oCom = combComs . Text ;
}
currentPort = port ;
this . lbComstatus . Text = string . Format ( combComs . Text + " 打开{0}" , "成功" ) ;
}
else
{
this . lbComstatus . Text = string . Format ( combComs . Text + " 打开{0}" , "失败" ) ;
}
}
catch ( Exception e )
{
lbStatus . Text = string . Format ( e . Message ) ;
}
btnShowId . Enabled = currentPort > 0 ;
}
private void resetLights ( )
{
int port = Convert . ToInt16 ( combComs . Text . Substring ( 3 ) ) ;
if ( Deiniu . win . elelab . coms . com_manage [ port ] = = null )
{
return ;
}
activePort = Deiniu . win . elelab . coms . com_manage [ port ] . init_port ;
//activePort.check_state = true;
if ( lightSeeds . resetDevice ( port ) )
{
activeComs [ port ] = activePort ;
}
}
bool showId = true ;
private void btnShowId_Click ( object sender , EventArgs e )
{
if ( currentPort = = 0 )
{
return ;
}
if ( showId )
{
lightSeeds . displayLabels ( currentPort ) ;
}
else
{
lightSeeds . clearLabels ( currentPort ) ;
}
showId = ! showId ;
}
void addLog ( string info )
{
if ( InvokeRequired )
{
this . Invoke ( new showStatus ( delegate ( )
{
doLogTxt ( info ) ;
} ) ) ;
}
else
{
doLogTxt ( info ) ;
}
}
void doLogTxt ( string info )
{
if ( this . textBoxLightLog . Lines . Length > 100 )
{
this . textBoxLightLog . Text = "" ;
}
while ( info . Length < 100 )
{
info + = " " ;
}
//log.Debug(getMsg("ServiceForm", info));
info = " " + System . DateTime . Now + " " + info ;
this . textBoxLightLog . Text = info + "\r\n" + this . textBoxLightLog . Text ;
if ( this . textBoxLightLog . Lines . Length > 100 )
{
this . textBoxLightLog . Text = "" ;
}
// this.textBoxLightLog.Text = "\r\n" + info + "\r\n" + this.textBoxLightLog.Text;
}
void partFinished ( int eleId )
// 上一批次完成, 则对已完成的partion,desk的订单做状态处理, 获取下一批任务
{
partionLighting [ eleId ] = false ;
newWave ( ) ;
//如果有拣货任务,则加载任务点亮标签
Thread . Sleep ( 2000 ) ;
lightLables ( eleId ) ;
loadPickOrdersInWave ( ) ; //加载点亮所有partion 新任务
// newWave();
}
void checkAndLightParts ( )
{
List < int > partions = new List < int > ( ) ;
List < int > partionsTasks = new List < int > ( ) ;
foreach ( DataRow dr in dtBulks . Rows )
{
WmsOutPickLable_tmp wt = new WmsOutPickLable_tmp ( dr ) ;
if ( wt ! = null & & ! partions . Contains ( wt . partion ) )
{
partions . Add ( wt . partion ) ;
}
}
foreach ( int partion in partions )
{
if ( ! partionLighting . ContainsKey ( partion ) //partion 从未点亮
| | ! partionLighting [ ( partion ) ] ) //partion 有新任务
{
partionsTasks . Add ( partion ) ;
}
}
foreach ( int partion in partionsTasks )
{
Thread . Sleep ( 500 ) ;
lightLables ( partion ) ;
}
}
}
}