ldj/winform/epick/SeedsDeskOut.cs

1384 lines
44 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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 DeiNiu.wms.win.utils;
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 DeiNiu.wms.win.utils.print;
using DeiNiu.wms.Logical;
using System.Net;
using System.IO;
using elelab;
using System.ServiceModel;
using System.ServiceModel.Description;
using DevExpress.XtraEditors.Repository;
using dn_wms;
using Model;
namespace DeiNiu.wms.win
{
public partial class SeedsDeskOut : BasicRibbonForm
{
private ServiceHost host = null;
public static List<ELabel> labelPool = new List<ELabel>();
string svrUrl = "http://127.0.0.1:9998/DNLight";
lWmsImportSeeds lis = new lWmsImportSeeds();
WmsImportSeeds wis = new WmsImportSeeds();
// lWmslocation lgt = new lWmslocation();
private string fieldName = Wmslocation.fields.locationId.ToString();
int count, selectedId,status;
private string lastQuery = "";
private DataTable dt;
private int selectedRowIndex = -1;
private bool isAdding = true;
private LocStructs locs;
// private List<Wmslocation> selectedLocations;
private List<int> selectedIds;
String oDeskId="";
String oCom = "";
public SeedsDeskOut()
{
InitializeComponent();
initialControls();
WmsConstants.WAVE_CURRENT_LIGHTS_STATUS.Clear();
WmsConstants.WAVE_CURRENT_PICK_STATUS.Clear();
elelab.pick.init_port(enumLabelPickType.seed,true);
elelab.pick.lightOffEvent += testPicked;
btnShowId.Enabled = false;
if (elelab.pick.activeComports.Count == 0)
{
lbLightsInfo.Text = "拣选设备连接错误";
}
else
{
initComs();
lbLightsInfo.Text = "拣选设备连接正常";
}
/* 启动播种服务远程终端如pda分播时启动该服务
Thread threadPreProcess = new Thread(startHost2);
threadPreProcess.IsBackground = true;
threadPreProcess.Start();
*/
initialTimer();
oDeskId = System.Configuration.ConfigurationManager.AppSettings["DeskId"];
if (!string.IsNullOrEmpty(oDeskId))
{
txtDeskId.Text = oDeskId;
txtOperater.SelectAll();
txtOperater.Focus();
}
}
#region initialControls
private void initialControls()
{
initialComboBoxes();
initialPagerControls();
initialDataGrid();
initialQueryInput();
setValidationRule();
txtBarcode.GotFocus += new EventHandler(txtBarcode_GotFocus);
txtBarcode.MouseUp += new MouseEventHandler(txtBarcode_MouseUp);
txtSeedNo.GotFocus += new EventHandler(txtSeedNo_GotFocus);
txtSeedNo.MouseUp += new MouseEventHandler(txtSeedNo_MouseUp);
txtOperater.GotFocus += new EventHandler(txtOperater_GotFocus);
txtOperater.MouseUp += new MouseEventHandler(txtOperater_MouseUp);
}
void txtOperater_GotFocus(object sender, EventArgs e)
{
txtOperater.Tag = true; //设置标记
txtOperater.SelectAll(); //注意1
}
void txtOperater_MouseUp(object sender, MouseEventArgs e)
{
//如果鼠标左键操作并且标记存在,则执行全选
if (e.Button == MouseButtons.Left && txtOperater.Tag != null && (bool)txtOperater.Tag == true)
{
txtOperater.SelectAll();
}
//取消全选标记
txtOperater.Tag = false;
}
void txtSeedNo_GotFocus(object sender, EventArgs e)
{
txtSeedNo.Tag = true; //设置标记
txtSeedNo.SelectAll(); //注意1
}
void txtSeedNo_MouseUp(object sender, MouseEventArgs e)
{
//如果鼠标左键操作并且标记存在,则执行全选
if (e.Button == MouseButtons.Left && txtSeedNo.Tag != null && (bool)txtSeedNo.Tag == true)
{
txtSeedNo.SelectAll();
}
//取消全选标记
txtSeedNo.Tag = false;
}
void txtBarcode_GotFocus(object sender, EventArgs e)
{
txtBarcode.Tag = true; //设置标记
txtBarcode.SelectAll(); //注意1
}
void txtBarcode_MouseUp(object sender, MouseEventArgs e)
{
//如果鼠标左键操作并且标记存在,则执行全选
if (e.Button == MouseButtons.Left && txtBarcode.Tag != null && (bool)txtBarcode.Tag == true)
{
txtBarcode.SelectAll();
}
//取消全选标记
txtBarcode.Tag = false;
}
private void initialComboBoxes()
{
}
private void setValidationRule()
{
// dxValidationProvider1.SetValidationRule(comWarehouseQuery, ValidationRules.notEmptyValidationRule);
//txtGoodType.Properties.MaxLength = 40;
//txtGoodDesc.Properties.MaxLength = 250;
//textEdit1.Properties.MaxLength = txtGoodType.Properties.MaxLength;
}
private void initialQueryInput()
{
}
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 = 200;//每页行数
// this.pager1.Bind();//绑定
#endregion
}
private void initialDataGrid()
{
this.gridView1.OptionsBehavior.AutoPopulateColumns = false;
this.gridView1.FocusRectStyle = DevExpress.XtraGrid.Views.Grid.DrawFocusRectStyle.RowFocus;
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 = 60;
this.gridView1.CustomDrawRowIndicator += new DevExpress.XtraGrid.Views.Grid.RowIndicatorCustomDrawEventHandler(gridView1_CustomDrawRowIndicator);
gridView1.CustomColumnDisplayText += gridView_CustomColumnDisplayText;
gridView1.RowCellStyle += gridView1_RowCellStyle;
gridView1.CustomColumnDisplayText += gridView1_CustomColumnDisplayText;
}
//显示行的序号
private void gridView1_CustomDrawRowIndicator(object sender, RowIndicatorCustomDrawEventArgs e)
{
if (e.Info.IsRowIndicator && e.RowHandle >= 0)
{
e.Info.DisplayText = (e.RowHandle + 1).ToString();
}
}
private void initialDataGridColumns()
{
setupGridView(gridView1, true);
// 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 = WmsImportSeeds.fields.seedsNo.ToString(), MinWidth = 100 };
GridColumn myCol2 = new GridColumn() { Caption = "商品编号", Visible = true, FieldName = WmsImportSeeds.fields.barcode.ToString(), MinWidth = 100 };
GridColumn myCol3 = new GridColumn() { Caption = "商品名称", Visible = true, FieldName = WmsImportSeeds.fields.itemName.ToString(), MaxWidth = 300 };
// GridColumn myCol4 = new GridColumn() { Caption = "大类名", Visible = true, FieldName = WmsImportSeeds.fields.category1.ToString(), MaxWidth = 100 };
// GridColumn myCol5 = new GridColumn() { Caption = "中类名", Visible = true, FieldName = WmsImportSeeds.fields.category2.ToString(), MaxWidth = 100 };
// GridColumn myCol6 = new GridColumn() { Caption = "小类名", Visible = true, FieldName = WmsImportSeeds.fields.category3.ToString(), MaxWidth = 100 };
// GridColumn myCol7 = new GridColumn() { Caption = "门店名称", Visible = true, FieldName = WmsImportSeeds.fields.custName.ToString(), MaxWidth = 200 };
GridColumn myCol8 = new GridColumn() { Caption = "单位", Visible = true, FieldName = WmsImportSeeds .fields.unit.ToString(), MaxWidth = 80};
GridColumn myCol9 = new GridColumn() { Caption = "规格", Visible = true, FieldName = WmsImportSeeds.fields.spec.ToString(), MaxWidth = 120 };
// GridColumn myCol10 = new GridColumn() { Caption = "发货数量", Visible = true, FieldName = WmsImportSeeds.fields.count.ToString(), MaxWidth = 80 };
GridColumn myCol11 = new GridColumn() { Caption = "实发数量", Visible = true, FieldName = WmsImportSeeds.fields.countOut.ToString(), MaxWidth = 80 };
// GridColumn myCol12 = new GridColumn() { Caption = "分播台", Visible = true, FieldName = WmsImportSeeds.fields.deskId.ToString(), MaxWidth = 80 };
GridColumn myCol16 = new GridColumn() { Caption = "端口号", Visible = true, FieldName = WmsImportSeeds.fields.port.ToString(), MaxWidth = 80 };
GridColumn myCol13 = new GridColumn() { Caption = "员工编号", Visible = true, FieldName = WmsImportSeeds.fields.operater.ToString(), MaxWidth = 80 };
GridColumn myCol14 = new GridColumn() { Caption = "分播台", Visible = true, FieldName = WmsImportSeeds.fields.deskId.ToString(), MaxWidth = 80 };
// GridColumn myCol15 = new GridColumn() { Caption = "备注", Visible = true, FieldName = WmsImportSeeds.fields.description.ToString(), MaxWidth = 80 };
//GridColumn myCol17 = new GridColumn() { Caption = "灯色", Visible = true, FieldName = WmsImportSeeds.fields.color.ToString(), MaxWidth = 80 };
GridColumn myCol29 = new GridColumn() { Caption = "标签点亮", Visible = true, FieldName = "isLightUp" };
GridColumn myCol30 = new GridColumn() { Caption = "分货状态", Visible = true, FieldName = "category1" };
GridColumn myCol18 = new GridColumn() { Caption = "分播时间", Visible = true, FieldName = WmsImportSeeds.fields.picktime.ToString(), MinWidth = 150, MaxWidth = 250 };
this.gridView1.Columns.Add(myCol30);
this.gridView1.Columns.Add(myCol1);
this.gridView1.Columns.Add(myCol2);
this.gridView1.Columns.Add(myCol3);
// this.gridView1.Columns.Add(myCol7);
// this.gridView1.Columns.Add(myCol10);
this.gridView1.Columns.Add(myCol14);
this.gridView1.Columns.Add(myCol11);
this.gridView1.Columns.Add(myCol8);
// this.gridView1.Columns.Add(myCol12);
// this.gridView1.Columns.Add(myCol18);
// this.gridView1.Columns.Add(myCol29);
// this.gridView1.Columns.Add(myCol17);
this.gridView1.Columns.Add(myCol13);
// this.gridView1.Columns.Add(myCol15);
// this.gridView1.Columns.Add(myCol16);
this.gridView1.Columns.Add(myCol9);
//this.gridView1.Columns.Add(myCol4);
// this.gridView1.Columns.Add(myCol5);
// this.gridView1.Columns.Add(myCol6);
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
gridView1.BestFitColumns();
//gridView1.Focus();
gridView1.OptionsView.ColumnAutoWidth = false;
//自动列宽
//gridView1.OptionsView.ColumnAutoWidth = false;
//this.gridView1.BestFitColumns();
//this.gridView1.Columns[2].MinWidth = 500;
//this.gridView1.Columns[1].BestFit();
//for (int I = 0; I < gridView1.Columns.Count; I++)
//{
// this.gridView1.Columns[I].BestFit()
//}
}
/// <summary>
/// 设置列表数据的日期格式
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
public static void gridView1_RowCellStyle(object sender, DevExpress.XtraGrid.Views.Grid.RowCellStyleEventArgs e)
{
if (e.Column.FieldName == "createtime" || e.Column.FieldName == "picktime")
{
e.Column.DisplayFormat.FormatString = "yyyy-MM-dd HH:mm:ss";
}
}
#endregion
/// <summary>
/// loading data
/// </summary>
private int loadData()
{
//this.gridviewGoodsType.DataSource = lgt.GetAllActiveData().Tables[0].DefaultView;
try
{
clearInputs();
showWaitForm();
string query = "";
query = (this.txtBarcode.Text.Trim().Length == 0 ? "" : string.Format("{0} =#'{1}';", WmsImportSeeds.fields.barcode.ToString(), txtBarcode.Text.Trim()))
+ (this.txtOperater.Text.Trim().Length == 0 ? "" : string.Format("{0} =#{1};", WmsImportSeeds.fields.operater.ToString(), txtOperater.Text.Trim()))
+ (this.txtSeedNo.Text.Trim().Length == 0 ? "" : string.Format("{0} =#'{1}';", WmsImportSeeds.fields.seedsNo.ToString(), txtSeedNo.Text.Trim()))
+ (!this.chkValid.Checked ? "" : string.Format("{0} =#'{1}';", WmsImportSeeds.fields.category1.ToString(), "1"))
;
if (query == string.Empty)
{
showErrorMsg("请输入查询条件");
btnQuery.Enabled = true;
closeWaitForm();
return 0;
}
this.pager1.PageCurrent = lastQuery.Equals(query) ? this.pager1.PageCurrent : 1; //根据查询条件的变化给pager赋值
int start = (pager1.PageSize * (pager1.PageCurrent - 1) + 1);
int end = (pager1.PageSize * pager1.PageCurrent);
lastQuery = query;
DataSet ds = lis.queryDesk(query, start, end);
dt = 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;
// dt.PrimaryKey = new DataColumn[] { dt.Columns["ID"] };
this.gridControl1.DataSource = dt.DefaultView;
initialDataGridColumns();
//update selected row index to the last updated one.
this.btnQuery.Enabled = true;
decimal countOut=0;
foreach (DataRow dr in dt.Rows)
{
WmsImportSeeds_tmp wis = new WmsImportSeeds_tmp(dr);
countOut += wis.countOut;
}
lbSumCnt.Text = countOut+"";
closeWaitForm();
return cnt;// lgt.getRowCount(query);
// return lgt.GetGoodType.QueryCount();
}
catch (Exception er)
{
closeWaitForm();
showErrorMsg(er.Message);
btnQuery.Enabled = true;
}
return 0;
}
/// <summary>
/// 分页控件产生的事件
/// </summary>
private int pager_EventPaging(DeiNiu.Controls.pager.EventPagingArg e)
{
selectedRowIndex = 0; //reset currentRowIndex
return loadData();
}
private void gridView_CustomColumnDisplayText(object sender, DevExpress.XtraGrid.Views.Base.CustomColumnDisplayTextEventArgs e)
{
}
private bool validData()
{
bool isvalid = dxValidationProvider1.Validate();
// MessageBox.Show("goodtype is " + txtGoodType.Text +", is valid ? " + isvalid);
return isvalid;
//String gdtype = txtGoodType.Text.Trim();
//if (gdtype.Length == 0)
//{
// dxValidationProvider.Validate();
// return false;
//}
//return true;
}
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; ;
}
}
private void clearInputs()
{
}
private bool getCurrentObject()
{
if (selectedRowIndex < 0 || dt.Rows.Count <= selectedRowIndex)
{
MessageBox.Show("请在列表里选择数据");
return false;
}
// DataRow currentRow = dt.Rows[selectedRowIndex];
DataRowView dr = (DataRowView)(GetGridViewFilteredAndSortedData(gridView1)[selectedRowIndex]);
wis.getModel(dr.Row);
return true;
}
private void gridView1_FocusedRowChanged(object sender, FocusedRowChangedEventArgs e)
{
}
private void gridView1_DataSourceChanged(object sender, EventArgs e)
{
if (selectedRowIndex > 0 && dt.Rows.Count > selectedRowIndex)
{
gridView1.FocusedRowHandle = selectedRowIndex;
gridView1.MakeRowVisible(selectedRowIndex);
}
}
protected void query()
{
pager1.Bind();
}
private void startQuery()
{
this.btnQuery.Enabled = false;
showWaitForm();
try
{
query();// loadData();
}
catch (Exception e)
{
MessageBox.Show(e.Message);
}
finally
{
// WaitFormService.Close();
closeWaitForm();
}
}
private void txtQuery_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyValue == 13)
{
query();
}
}
private void tabControl1_SelectedIndexChanged(object sender, EventArgs e)
{
}
bool isNewLocationQuery = false;
private void SeedsOut_FormClosing(object sender, FormClosingEventArgs e)
{
/*
int port = Convert.ToInt16(combComs.Text.Substring(3));
if (unart_manage.com_manage[port] == null)
{
return;
}*/
try
{
resetLights(); //pick.clearLabels(port); // client.Close();
}
catch
{
}
}
private bool getCurrentObjects()
{
int[] selectedRows = gridView1.GetSelectedRows();
// selectedLocations = new List<Wmslocation>();
selectedIds = new List<int>();
foreach (int i in selectedRows)
{
DataRow currentRow = dt.Rows[i];
selectedIds.Add(Convert.ToInt32(currentRow["ID"].ToString()));
}
if (selectedRows.Length == 0)
{
showErrorMsg("请选择一条数据");
return false;
}
DialogResult r = MessageBox.Show(string.Format("确定要更新选中的{0}条货位信息吗?", selectedRows.Length), "确认修改", MessageBoxButtons.YesNo, MessageBoxIcon.Warning);
return r == DialogResult.Yes;
}
private void bbiExport_ItemClick(object sender, ItemClickEventArgs e)
{
exportExcel("分播记录",gridView1);
}
private void gridView1_SelectionChanged(object sender, DevExpress.Data.SelectionChangedEventArgs e)
{
if (gridView1.FocusedRowHandle <0 || gridView1.FocusedRowHandle == selectedRowIndex)
{
// return;
}
selectedRowIndex = gridView1.FocusedRowHandle;
clearInputs();
if (selectedRowIndex < 0)
{
return;
}
getCurrentObject();
if (wis.ID > 0)
{
}
// showErrorMsg("selection:"+ selectedRowIndex);
// setCurrentRequestDetail();
}
private void txtBarcode_Enter(object sender, EventArgs e)
{
}
private void txtBarcode_EditValueChanged(object sender, EventArgs e)
{
}
String lastScanBarcode = String.Empty;
private void txtBarcode_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyCode != Keys.Enter)
{
return;
}
string barcode = txtBarcode.Text;
if (string.IsNullOrEmpty(barcode))
{
return;
}
if (!validSeeds())
{
return;
}
try
{
operater = Convert.ToInt32(this.txtOperater.Text.Trim());
}
catch
{
showErrorMsg("请扫描输入正确的操作员ID");
txtOperater.SelectAll();
txtOperater.Focus();
return;
}
int color = getColor(1);
if (lastScanBarcode !=String.Empty && lastScanBarcode != barcode)
{
elelab.pick.clearOrder(currentPort, color);
}
lastScanBarcode = barcode;
bool isValidData = chkValid.Checked;
lightUp( lis.startNewDeskSeed( seedsNo, barcode, operater, color,isValidData),color);
//lightSeeds(barcode);
startQuery();
txtBarcode.Focus();
if (chkPrint.Checked)
{
try
{
printIn.printDeskBarcodes(lis.getPrintCodes(seedsNo, barcode));
}
catch (Exception er)
{
showErrorMsg(er.InnerException.Message);
}
}
}
Dictionary<int, int> colors = new Dictionary<int, int>();
int colorcnt = 0;
private int getColor(int operater)
{
int color = 0;
if (colors.ContainsKey(operater))
{
color = colors[operater];
}
else
{
colors[operater] = ++colorcnt;
color = colors[operater];
}
//红蓝调换
if (color == 3)
{
return 1;
}else if (color == 1)
{
return 3;
}else
return color;
}
void lightSeeds(String barcode)
{
String svrUrl = System.Configuration.ConfigurationManager.AppSettings["BaseUri"];
svrUrl = svrUrl + "lightSeed?deskId={0}&seedsNo={1}&barcode={2}";
svrUrl = string.Format(svrUrl, deskId, seedsNo, barcode);
lbUrl.Text = HttpGet(svrUrl, null);
}
public static string HttpGet(string Url, string postDataStr)
{
try
{
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(Url + (string.IsNullOrEmpty(postDataStr) ? "" : "?") + postDataStr);
request.Method = "GET";
request.ContentType = "text/html;charset=UTF-8";
request.Timeout = 10000;
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
Stream myResponseStream = response.GetResponseStream();
StreamReader myStreamReader = new StreamReader(myResponseStream, Encoding.UTF8);
string retString = myStreamReader.ReadToEnd();
myStreamReader.Close();
myResponseStream.Close();
return retString;
}
catch (Exception ex)
{
return ex.Message;
}
}
private void btnCreateOrder_Click(object sender, EventArgs e)
{
int cnt = 0;
if (validSeeds())
{
colors = new Dictionary<int, int>();
colorcnt = 0;
cnt = lis.loadNewSeeds(deskId,seedsNo);
}
query();
showInfoMsg(String.Format("共导入了{0}条数据",cnt/2));
}
int deskId = 0;
int operater = 0;
String seedsNo = String.Empty;
private bool validSeeds()
{
seedsNo = this.txtSeedNo.Text.Trim() ;
if (seedsNo == String.Empty)
{
showErrorMsg("请检查输入的分播单编号是否正确");
this.txtSeedNo.SelectAll();
this.txtSeedNo.Focus();
return false;
}
return seedsNo!=String.Empty;
}
private void btnQuery_Click(object sender, EventArgs e)
{
this.btnQuery.Enabled = false;
startQuery();
}
Dictionary<int, int> portOrder = new Dictionary<int, int>();
int getOrder(int port)
{
if (portOrder.ContainsKey(port))
{
if (portOrder[port] > 250)
{
portOrder[port] = 1;
}
else
{
portOrder[port]++;
}
}
else
{
portOrder[port] = 1;
}
return portOrder[port];
}
void lightUp(List<ELabel> lables, int color)
{
//to lightup
if (lables.Count == 0 || currentPort==0)
{
return;
}
int port = lables[0].port;
// if (port > 0)
{
port = currentPort;
}
color = lables[0].color;
#if DEBUG
// port = 17;
#endif
// int order =getOrder(port);
int order = color;
/*
int[] ids = new int[2];
string[] ele_address = new string[2];
List<ELabel> lables1 = new List<ELabel>();
for (int i = 0; i < lables.Count; i++)
{
ELabel el = lables[i];
el.labelId = new Random().Next(1,3);
el.color = new Random().Next(1, 3);
el.address = 10 + i;
lables1.Add(el);
}*/
elelab.pick.init_port(enumLabelPickType.seedsDesk);
elelab.pick.lightLabels2(lables, port, order, enumLabelPickType.seedsDesk);
if (elelab.pick.activeComports.Count == 0)
{
lbLightsInfo.Text = "拣选设备连接错误";
}
else
{
lbLightsInfo.Text = "连接正常";
}
}
delegate void showStatus();
void startHost2()
{
// lbStatus.Text = "服务启动失败";
try
{
svrUrl = System.Configuration.ConfigurationManager.AppSettings["BaseUri"];
Uri baseAddress = new Uri(svrUrl);
ServiceLight service = new ServiceLight();
service.newLabels += this.newLabels;
service.lightUp += this.lightUp;
service.turnOff += this.turnOff;
host = new ServiceHost(service, baseAddress);
elelab.pick.lightOffEvent += testPicked;
WebHttpBinding binding = new WebHttpBinding();
ServiceEndpoint endpoint = host.AddServiceEndpoint(typeof(IServiceLight), binding, baseAddress);
WebHttpBehavior httpBehavior = new WebHttpBehavior();
endpoint.Behaviors.Add(httpBehavior);
host.Opened += delegate
{
if (InvokeRequired)
{
this.Invoke(new showStatus(delegate()
{
lbStatus.Text = "服务已启动";
lbUrl.Text = svrUrl;
}));
}
else
{
lbStatus.Text = "服务已启动";
lbUrl.Text = svrUrl;
// lbStatus.Text = "服务启动失败";
// lbUrl.Text ="";
}
};
host.Open();
}
catch (Exception e)
{
MessageBox.Show("启动服务失败: "+e.Message);
}
}
void newLabels(List<ELabel> lables)
{
labelPool = labelPool.Union(lables).ToList<ELabel>();
labelPool = labelPool.Concat(lables).ToList<ELabel>();
}
void turnOff(int portNo)
{
if (unart_manage.com_manage[portNo] == null)
{
return;
}
Model.dis_id id;
//id.ele_id = Convert.ToInt16(new_id.Text);
id.order = 1;
id.ele_id = 65535;
id.state = 1;
unart_manage.com_manage[portNo].init_port.write_clear_comment(id);
}
void testPicked(int eleId, int port, int eleAddress, int count)
{
if (InvokeRequired)
{
this.Invoke(new showStatus(delegate()
{
showResult(eleId, port, eleAddress, count);
}));
}
else
{
showResult(eleId, port, eleAddress, count);
}
}
void showResult(int eleId, int color, int eleAddress, int count)
{
lbreturn.Text = string.Format("标签ID{0} 颜色:{1} 地址:{2} 数量:{3}", eleId, color, eleAddress, count);
}
private void btnExport_Click(object sender, EventArgs e)
{
int pageSize = pager1.PageSize;
pager1.PageSize = pager1.NMax;;
query();
seedsNo = this.txtSeedNo.Text.Trim();
exportExcel("分播明细-" + seedsNo + "-" + this.txtOperater.Text, gridView1);
pager1.PageSize = pageSize;
query();
closeWaitForm();
}
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(updateLableStatus);//到达时间的时候执行事件;
timer.AutoReset = true;//设置是执行一次false还是一直执行(true)
timer.Enabled = true;//是否执行System.Timers.Timer.Elapsed事件
timer.Start();
}
delegate void loadNewCurrentWave();
private void updateLableStatus(object source, System.Timers.ElapsedEventArgs e)
{
try
{
if (InvokeRequired)
{
this.Invoke(new loadNewCurrentWave(delegate()
{
// lbLightsInfo.Text = (lights.Count > 0 ? "" : "未检测到通道灯");
updateLableStatus();
}));
}
else
{
//lbLightsInfo.Text = (lights.Count > 0 ? "" : "未检测到通道灯");
updateLableStatus();
}
}
catch (Exception er)
{
LogHelper.WriteLog(typeof(GoodsOutForm), er);
}
}
private void updateLableStatus(){
string key = "";
if (dt == null || dt.Rows.Count == 0)
{
return;
}
WmsImportSeeds label;
DataView dv = dt.DefaultView;
// dv.RowFilter = "category1 =3";
dv.Sort = "category1";
if (dv.Count == 0)
{
//all picked, wave end
// endWave();
return;
}
foreach (DataRow dr in dt.Rows)
{
label = new WmsImportSeeds(dr);
key = Util.getLightKey(getColor(operater), label.deskId, 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["category1"] = "1";// WmsConstants.WAVE_CURRENT_PICK_STATUS[key] ? 1 : 0;
}
}
dv.RowFilter = ""; // 如果 dv.RowFilter ="isPicked =0"; 则已拣的不再显示
gridControl1.DataSource = dt.DefaultView;
}
string[] color = new string[] { "1", "2", "3", "4", "5", "6", "7", "8", "9", "10" };
private void gridView1_CustomColumnDisplayText(object sender, DevExpress.XtraGrid.Views.Base.CustomColumnDisplayTextEventArgs e)
{
if (string.IsNullOrEmpty(e.DisplayText))
{
// return;
}
if (e.Column.FieldName == "color")
{
if (color.Contains(e.DisplayText))
{
int display = -100;
string disTxt = e.DisplayText;
try
{
display = Convert.ToInt16(e.DisplayText);
e.DisplayText = getColorD(display);
}
catch
{
return;
}
}
}
else if (e.Column.FieldName == "category1")
{
if (string.IsNullOrEmpty(e.DisplayText))
{
e.DisplayText = "等待分播";
}
else if("0".Equals(e.DisplayText))
{
e.DisplayText = "正在分播";
}
else if ("1".Equals(e.DisplayText))
{
e.DisplayText = "完成分播";
}
}
}
string getColorD(int color)
{
string colorName = "";
switch (color)
{
case 1:
colorName = "红";
break;
case 2:
colorName = "绿";
break;
case 3:
colorName = "蓝";
break;
case 4:
colorName = "红闪";
break;
case 5:
colorName = "绿闪";
break;
case 6:
colorName = "蓝闪";
break;
case 7:
colorName = "红绿";
break;
case 8:
colorName = "红蓝";
break;
case 9:
colorName = "绿蓝";
break;
case 10:
colorName = "红绿蓝";
break;
default:
colorName = "红";
break;
}
return colorName;
}
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> coms = new Dictionary<int, dnwms>();
dnwms activePort;
int currentPort = 0;
void initialCom()
{
try
{
int port = Convert.ToInt16(combComs.Text.Substring(3));
resetLights();
if (coms.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 (unart_manage.com_manage[port] == null)
{
return;
}
activePort = unart_manage.com_manage[port].init_port;
//activePort.check_state = true;
if (pick.reset_device(port))
{
coms[port] = activePort;
}
/*
dis_id id;
id.order = 0;
id.ele_id = 65535;
id.state = 1;
bool ret = activePort.write_reset_device(id);
System.Threading.Thread.Sleep(100);
id.order = 1;
id.ele_id = 0;
id.state = 1;
ret = activePort.write_reset_device(id);
lbLightsInfo.Text = string.Format(combComs.Text + "打开{0}", ret ? "成功" : "失败");
* */
}
private void btnInitialCom_Click(object sender, EventArgs e)
{
initialCom();
}
private void txtDeskId_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyCode != Keys.Enter)
{
return;
}
string id = txtDeskId.Text.Trim();
if (string.IsNullOrEmpty(id))
{
txtDeskId.SelectAll();
txtDeskId.Focus();
}
try
{
deskId = Convert.ToInt16(id);
}
catch (Exception er)
{
txtDeskId.SelectAll();
txtDeskId.Focus();
return ;
}
txtOperater.SelectAll();
txtOperater.Focus();
}
private void txtOperater_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyCode != Keys.Enter)
{
return;
}
string id = txtOperater.Text;
if (string.IsNullOrEmpty(id))
{
txtOperater.SelectAll();
txtOperater.Focus();
return;
}
try
{
operater = Convert.ToInt32(id);
}
catch (Exception er)
{
txtOperater.SelectAll();
txtOperater.Focus();
return;
}
txtSeedNo.SelectAll();
txtSeedNo.Focus();
}
private void txtSeedNo_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyCode != Keys.Enter)
{
return;
}
txtBarcode.SelectAll();
txtBarcode.Focus();
}
bool showId = true;
private void simpleButton1_Click(object sender, EventArgs e)
{
if (currentPort == 0)
{
return;
}
if (showId)
{
pick.displayLabels(currentPort);
}
else
{
pick.clearLabels(currentPort);
}
showId = !showId;
}
private void chkValid_CheckedChanged(object sender, EventArgs e)
{
if (chkValid.Checked)
{
txtBarcode.BackColor = Color.Red;
}
else
{
txtBarcode.BackColor = Color.White;
}
txtBarcode.SelectAll();
txtBarcode.Focus();
try
{
operater = Convert.ToInt32(this.txtOperater.Text.Trim());
}
catch
{
showErrorMsg("请扫描输入正确的操作员ID");
txtOperater.SelectAll();
txtOperater.Focus();
return;
}
elelab.pick.clearOrder(currentPort, getColor(operater));
}
}
}