using DevComponents.DotNetBar; using HH.WMS.Client.Common; using HH.WMS.Entitys.Basic; using HH.WMS.Entitys.Common; using Newtonsoft.Json; using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; namespace HH.WMS.Client.frm { public partial class frmScanParent : DevComponents.DotNetBar.Metro.MetroForm { public delegate void ScanTrayEventHander(object sender, ScanTrayEventArgs e); public event ScanTrayEventHander ScanTrayEvent; public delegate void ScanItemEventHander(object sender, ScanItemEventArgs e); public event ScanItemEventHander ScanItemEvent; public delegate void ScanItemUniqueCodeEventHander(object sender, ScanItemUniqueCodeEventArgs e); public event ScanItemUniqueCodeEventHander ScanItemUniqueCodeEvent; public delegate void ScanEnterEventHander(object sender, EventArgs e); public event ScanEnterEventHander ScanEnterEvent; public delegate void ScanLocationEventHander(object sender, ScanLocationEventArgs e); public event ScanLocationEventHander ScanLocationEvent; public frmScanParent() { InitializeComponent(); } public void ScanCode(string code) { OperateResult results; string str = ""; if (code == "Enter") { this.ScanEnterEvent(code, null); return; } TN_AB_B_NUMRULEEntity rule = StaticUtil.Numrules.Find(x => (code.StartsWith(x.CN_S_RULE_FIX) && x.CN_N_RULE_NUM == 0) || (code.StartsWith(x.CN_S_RULE_FIX) && x.CN_N_RULE_NUM == code.Length)); if (rule != null) { switch (rule.CN_S_RULE_NAME) { case "托盘码": str = WebApiManager.HttpWMS_Get("/api/Tray/GetModel?trayCode=" + code); results = JsonConvert.DeserializeObject(str); if (results.Success) { this.ScanTrayEvent(code, new ScanTrayEventArgs() { trayInfo = JsonConvert.DeserializeObject(results.Data.ToString()) }); return; } else { MessageBoxEx.Show("未找到该容器!"); return; } case "物料编码": str = WebApiManager.HttpWMS_Get("/api/Item/GetItemModel?itemCode=" + code); results = JsonConvert.DeserializeObject(str); if (results.Success) { this.ScanItemEvent(code, new ScanItemEventArgs() { itemInfo = JsonConvert.DeserializeObject(results.Data.ToString()) }); return; } else { MessageBoxEx.Show("未找到该物料!"); return; } case "物料唯一码": break; case "货位码": //str = WebApiManager.HttpWMS_Get("/api/Item/GetItemModel?itemCode=" + code); //results = JsonConvert.DeserializeObject(str); //if(results.Success) //{ // this.ScanLocationEvent(code, new ScanLocationEventArgs() { itemInfo = JsonConvert.DeserializeObject(results.Data.ToString()) }); // return; //} //else //{ // MessageBoxEx.Show("未找到该货位!"); // return; //} break; } } str = WebApiManager.HttpWMS_Get("/api/ScanCode/AnalysisCode?barCode=" + code); results = JsonConvert.DeserializeObject(str); if (results.Success) { ScanCodeClass scc = JsonConvert.DeserializeObject(results.Data.ToString()); switch (scc.Type) { case "1": ScanItemUniqueCodeEvent(code, new ScanItemUniqueCodeEventArgs() { itemInfo = scc.PrintBarCode }); return; case "2": return; case "3": return; case "4": this.ScanItemEvent(code, new ScanItemEventArgs() { itemInfo = scc.Item.itemEntity }); return; case "5": return; } } MessageBoxEx.Show("无效码值!"); return; } public class ScanTrayEventArgs : EventArgs { public TN_WM_B_TRAY_INFOEntity trayInfo { get; set; } } public class ScanItemEventArgs : EventArgs { public AutoBomItemEntity itemInfo { get; set; } } public class ScanItemUniqueCodeEventArgs : EventArgs { public MONGO_PRINT_BARCODE itemInfo { get; set; } } public class ScanLocationEventArgs : EventArgs { public AutoBomLocationEntity Location { get; set; } } } }