public static YKBoxInfo GetBoxByHu(string hu) { string sql = string.Format(@"SELECT * FROM dbo.YKBox WHERE Hu = '{0}' AND Status = 'S' SELECT * FROM dbo.YKBoxDetail WHERE Hu = '{0}'", hu); DataSet ds = DBHelper.GetDataSet(sql, false); YKBoxInfo result = null; if (ds?.Tables?.Count == 2) { DataTable dtMain = ds.Tables[0]; DataTable dtDetail = ds.Tables[1]; if (dtMain.Rows.Count > 0) { result = YKBoxInfo.BuildBoxInfo(dtMain.Rows[0]); if (dtDetail.Rows.Count > 0) { foreach (DataRow row in dtDetail.Rows) { result.Details.Add(YKBoxDetailInfo.BuildBoxDetailInfo(row)); } } } } return(result); }
private void AddGrid(YKBoxInfo box) { if (box.Details != null && box.Details.Count > 0) { List <string> matnrlist = box.Details.Select(i => i.Matnr).Distinct().ToList(); Invoke(new Action(() => { foreach (string matnr in matnrlist) { grid.Rows.Insert(0, box.Source, box.Target, box.Hu, box.Details.First(i => i.Matnr == matnr).Zsatnr, box.Details.First(i => i.Matnr == matnr).Zcolsn, box.Details.First(i => i.Matnr == matnr).Zsiztx, box.Details.Count(i => i.Matnr == matnr && i.IsAdd == 0), box.Remark + " SAP:" + box.SapRemark); grid.Rows[0].Tag = matnr; if (box.Status == "E" || box.SapStatus == "E") { grid.Rows[0].DefaultCellStyle.BackColor = Color.OrangeRed; } } })); } else { Invoke(new Action(() => { grid.Rows.Insert(0, box.Source, box.Target, box.Hu, "", "", "", 0, box.Remark); grid.Rows[0].Tag = ""; grid.Rows[0].DefaultCellStyle.BackColor = Color.OrangeRed; })); } }
private YKBoxInfo GetCurrentYKBox(CheckResult cr) { YKBoxInfo result = new YKBoxInfo() { EquipHla = SysConfig.DeviceInfo.EQUIP_HLA, EquipXindeco = SysConfig.DeviceNO, Hu = lblHu.Text, IsFull = (byte)(isFull ? 1 : 0), LouCeng = SysConfig.DeviceInfo.LOUCENG, Remark = cr.Message, IsHandover = 0, Status = cr.InventoryResult ? "S" : "E", Source = cboSource.Text, Target = cboTarget.Text, SubUser = SysConfig.CurrentLoginUser.UserId, SapRemark = "", SapStatus = "", PackMat = packmat, LIFNR = lifnr }; tagDetailList.ForEach(a => { result.Details.Add(new YKBoxDetailInfo() { Barcd = a.BARCD, Epc = a.EPC, Hu = result.Hu, Matnr = a.MATNR, Zcolsn = a.ZCOLSN, Zsatnr = a.ZSATNR, Zsiztx = a.ZSIZTX, IsAdd = (byte)(a.IsAddEpc ? 1 : 0) }); }); return(result); }
public static List <YKBoxInfo> GetUnHandoverBoxList(string device) { List <YKBoxInfo> result = new List <YKBoxInfo>(); string sql = string.Format(@"SELECT * FROM dbo.YKBox WHERE EquipXindeco = '{0}' AND IsHandover = 0 AND Status='S' SELECT * FROM dbo.YKBoxDetail WHERE Hu IN (SELECT Hu FROM dbo.YKBox WHERE EquipXindeco = '{0}' AND IsHandover = 0 AND Status='S') ", device); DataSet ds = DBHelper.GetDataSet(sql, false); if (ds != null && ds.Tables.Count == 2) { result = new List <YKBoxInfo>(); DataTable dtBox = ds.Tables[0]; DataTable dtDetail = ds.Tables[1]; if (dtBox != null && dtBox.Rows.Count > 0) { foreach (DataRow row in dtBox.Rows) { YKBoxInfo item = YKBoxInfo.BuildBoxInfo(row); DataRow[] rowsDetail = dtDetail.Select(string.Format("Hu ='{0}'", item.Hu)); if (rowsDetail.Length > 0) { foreach (DataRow rowdetail in rowsDetail) { YKBoxDetailInfo detail = YKBoxDetailInfo.BuildBoxDetailInfo(rowdetail); item.Details.Add(detail); } } result.Add(item); } } } return(result); }
private void savingDataThreadFunc() { while (true) { try { if (mCancel) { return; } CUploadData ud = getQueueData(); if (ud != null) { YKBoxInfo upData = ud.Data as YKBoxInfo; if (upData != null) { //upload string uploadRe = ""; string sapMsg = ""; SapResult result = SAPDataService.UploadYKBoxInfo(SysConfig.LGNUM, upData); uploadRe = result.STATUS; sapMsg = result.MSG; if (uploadRe == "E") { SqliteDataService.updateMsgToSqlite(ud.Guid, sapMsg); playSoundWarn(); } else { SqliteDataService.delUploadFromSqlite(ud.Guid); } upData.SapRemark = result.MSG; upData.SapStatus = result.STATUS; //save YKBoxService.SaveBox(upData); if (upData.Status == "S" && uploadRe == "S") { updateBoxList(upData); UpdateTotalInfo(); } updateUploadCount(); updateExpButton(); } } Thread.Sleep(500); } catch (Exception) { //LogHelper.WriteLine(ex.Message + "\r\n" + ex.StackTrace.ToString()); } } }
void updateBoxList(YKBoxInfo box) { Invoke(new Action(() => { mBoxList.RemoveAll(i => i.Hu == box.Hu); mBoxList.Add(box); })); }
public override void StopInventory() { try { if (isInventory) { Invoke(new Action(() => { lblWorkStatus.Text = "停止扫描"; })); isInventory = false; //reader.StopInventory(); stopTarReader(); CheckResult checkResult = CheckData(); Invoke(new Action(() => { lblResult.Text = checkResult.Message; })); if (checkResult.Message.Contains("重投")) { AddGrid(checkResult.Message); playSound(false); SetInventoryResult(1); return; } YKBoxInfo box = GetCurrentYKBox(checkResult); updateSAP(box); playSound(checkResult.InventoryResult && box.SapStatus == "S"); AddGrid(box); SetInventoryResult(1); if (dmLabel1_peibi.DM_Key == DMSkin.Controls.DMLabelKey.错误) { if (lblUsePrint.DM_Key == DMSkin.Controls.DMLabelKey.正确) { if (checkResult.InventoryResult) { PrintHelper.PrintRightTag(box, materialList); } else { PrintHelper.PrintErrorTag(box, lblCheckSku.DM_Key == DMSkin.Controls.DMLabelKey.正确); } } } } } catch (Exception ex) { Log4netHelper.LogError(ex); SetInventoryResult(1); } }
private void btnClear_Click(object sender, EventArgs e) { List <YKBoxInfo> rowBoxList = new List <YKBoxInfo>(); List <DataGridViewRow> rows = GetCheckedRows(); if (rows != null && rows.Count > 0) { foreach (DataGridViewRow row in rows) { YKBoxInfo box = row.Tag as YKBoxInfo; if (box != null) { if (!rowBoxList.Exists(r => r.Hu == box.Hu)) { rowBoxList.Add(box); } } } } if (rowBoxList.Count > 0) { if (MetroMessageBox.Show(this, "确认清除列表中箱记录?", "提示", MessageBoxButtons.OKCancel, MessageBoxIcon.Information) == DialogResult.OK) { if (YKBoxService.DeleteBoxByHu(rowBoxList.Select(i => i.Hu).Distinct().ToList())) { MetroMessageBox.Show(this, "清除成功", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information); DialogResult = DialogResult.OK; currentBoxList.RemoveAll(i => rowBoxList.Exists(j => j.Hu == i.Hu)); updateGrid(); } else { MetroMessageBox.Show(this, "清除失败,可能是网络不稳定,请稍候再试", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information); } } } //if (boxList!=null && boxList.Count>0) //{ // if (MetroMessageBox.Show(this, "确认清除列表中所有箱记录?", "提示", MessageBoxButtons.OKCancel, MessageBoxIcon.Information) == DialogResult.OK) // { // if(YKBoxService.DeleteBoxByHu(boxList.Select(i=>i.Hu).Distinct().ToList())) // { // MetroMessageBox.Show(this, "清除成功", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information); // DialogResult = DialogResult.OK; // Close(); // } // else // { // MetroMessageBox.Show(this, "清除失败,可能是网络不稳定,请稍候再试", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information); // } // } //} }
public override void StopInventory() { try { if (!isInventory) { SetInventoryResult(1); return; } Invoke(new Action(() => { lblWorkStatus.Text = "停止扫描"; })); isInventory = false; reader.StopInventory(); CheckResult checkResult = CheckData(); playSound(checkResult); YKBoxInfo box = GetCurrentYKBox(checkResult); if (lblUsePrint.DM_Key == DMSkin.Controls.DMLabelKey.正确) { if (checkResult.InventoryResult) { PrintHelper.PrintRightTag(box, materialList); } else { PrintHelper.PrintErrorTag(box, lblCheckSku.DM_Key == DMSkin.Controls.DMLabelKey.正确); } } if (!checkResult.IsRecheck) { addToSavingQueue(box); } AddGrid(box); if (checkResult.InventoryResult || checkResult.IsRecheck) { SetInventoryResult(1); } else { SetInventoryResult(1); } } catch (Exception ex) { Log4netHelper.LogError(ex); SetInventoryResult(1); } }
bool checkSame(ref CheckResult result) { bool re = false; YKBoxInfo box = mBoxList == null ? null : mBoxList.Find(i => i.Hu == lblHu.Text); if (box != null && box.Status != null && box.Status == "S" && box.SapStatus == "S") { re = true; //上次检测结果为正常, bool isAllSame = true; bool isAllNotSame = true; List <YKBoxDetailInfo> lastCheckDetail = box.Details; if (lastCheckDetail != null && lastCheckDetail.Count > 0) { if (lastCheckDetail.Count != epcList.Count) { isAllSame = false; } foreach (YKBoxDetailInfo item in lastCheckDetail) { if (!epcList.Contains(item.Epc)) { isAllSame = false; break; } else { isAllNotSame = false; } } } else { isAllSame = false; isAllNotSame = true; } if (isAllSame) { result.IsRecheck = true; } else if (isAllNotSame) { //两批EPC对比,完全不一样,示为箱码重复使用 result.UpdateMessage(Consts.Default.XIANG_MA_CHONG_FU_SHI_YONG); result.InventoryResult = false; } if (lastCheckDetail.Count > 0 && !isAllSame && !isAllNotSame) { result.UpdateMessage(Consts.Default.EPC_YI_SAO_MIAO); result.InventoryResult = false; } } return(re); }
private void EnqueueUploadData(YKBoxInfo data) { SqliteUploadDataInfo ud = new SqliteUploadDataInfo(); ud.Guid = Guid.NewGuid().ToString(); ud.Data = data; ud.IsUpload = 0; ud.CreateTime = DateTime.Now; YKBoxSqliteService.InsertUploadData(ud); UploadServer.GetInstance().CurrentUploadQueue.Push(ud); }
public static bool SaveBox(YKBoxInfo box) { if (SysConfig.IsTest) { return(true); } try { string sql = string.Format(@" delete from YKBox where HU='{0}' delete from YKBoxDetail where HU='{0}'", box.Hu); string sql1 = string.Format(@"INSERT INTO dbo.YKBox( Hu ,Source , Target , Status , Remark , Timestamps , EquipHla , EquipXindeco , IsHandover , IsFull , SubUser,SapStatus,SapRemark,LouCeng,PackMat,LIFNR) VALUES ( '{0}' , '{1}' , '{2}' , '{3}' , '{4}' , GETDATE() , '{5}' , '{6}' , {7} , {8} , '{9}','{10}','{11}','{12}','{13}','{14}')", box.Hu, box.Source, box.Target, box.Status, box.Remark, box.EquipHla, box.EquipXindeco, box.IsHandover, box.IsFull, box.SubUser, box.SapStatus, box.SapRemark.Replace("'", ""), box.LouCeng, box.PackMat, box.LIFNR); string sql2 = ""; if (box.Details != null && box.Details.Count > 0) { sql2 = string.Format(@" INSERT INTO dbo.YKBoxDetail( Hu , Epc , Matnr , Zsatnr , Zcolsn , Zsiztx , Timestamps , Barcd, IsAdd) VALUES"); foreach (YKBoxDetailInfo item in box.Details) { string sonsql = string.Format(@"('{0}','{1}','{2}','{3}','{4}','{5}',GETDATE() ,'{6}',{7}),", item.Hu, item.Epc, item.Matnr, item.Zsatnr, item.Zcolsn, item.Zsiztx, item.Barcd, item.IsAdd); sql2 += sonsql; } if (sql2.EndsWith(",")) { sql2 = sql2.Remove(sql2.Length - 1, 1); } } return(DBHelper.ExecuteNonQuery(sql + " " + sql1 + " " + sql2) > 0); } catch (Exception ex) { Log4netHelper.LogError(ex); } return(true); }
bool checkSame() { bool re = false; if (mBoxList != null && mBoxList.Exists(i => i.Hu == lblHu.Text)) { YKBoxInfo box = mBoxList.First(i => i.Hu == lblHu.Text); if (box.Status == "S" && box.SapStatus == "S") { List <string> a = box.Details.Select(i => i.Epc).ToList(); re = LocalDataService.compareListStr(a, epcList); } } return(re); }
public void updateSAP(YKBoxInfo uploadData) { CUploadData ud = new CUploadData(); ud.Guid = Guid.NewGuid().ToString(); ud.Data = uploadData; ud.IsUpload = 0; ud.CreateTime = DateTime.Now; SqliteDataService.saveToSqlite(ud); YKBoxInfo upData = ud.Data as YKBoxInfo; if (upData == null) { return; } string uploadRe = ""; string sapMsg = ""; SapResult result = SAPDataService.UploadYKBoxInfo(SysConfig.LGNUM, upData); uploadRe = result.STATUS; sapMsg = result.MSG; if (uploadRe == "E") { SqliteDataService.updateMsgToSqlite(ud.Guid, sapMsg); } else { SqliteDataService.delUploadFromSqlite(ud.Guid); } upData.SapRemark = result.MSG; upData.SapStatus = result.STATUS; //save YKBoxService.SaveBox(upData); if (upData.Status == "S" && uploadRe == "S") { updateBoxList(upData); UpdateTotalInfo(); } }
public void addToSavingQueue(YKBoxInfo uploadData) { CUploadData ud = new CUploadData(); ud.Guid = Guid.NewGuid().ToString(); ud.Data = uploadData; ud.IsUpload = 0; ud.CreateTime = DateTime.Now; SqliteDataService.saveToSqlite(ud); lock (savingDataLockObject) { savingData.Enqueue(ud); } updateUploadCount(); }
/// <summary> /// 取出队列中第一个上传任务,进行上传,上传完成后删除这条 /// </summary> public void Upload() { lock (_lockObject) { if (isbusy) { return; } else { isbusy = true; } try { if (CurrentUploadQueue.Count > 0) { //取出任务上传 object o = CurrentUploadQueue.Pop(); if (o.GetType() == typeof(SqliteUploadDataInfo)) { YKBoxInfo box = (o as SqliteUploadDataInfo).Data; //if(box.Status == "S") //{ SapResult result = SAPDataService.UploadYKBoxInfo(SysConfig.LGNUM, box); box.SapRemark = result.MSG; box.SapStatus = result.STATUS; bool xdSaveResult = YKBoxService.SaveBox(box); YKBoxSqliteService.SetUploaded((o as SqliteUploadDataInfo).Guid); if (OnUploaded != null) { OnUploaded(box); } //} } } } catch (Exception ex) { LogHelper.WriteLine(ex.Message + "\r\n" + ex.StackTrace); } isbusy = false; } }
private void initData() { grid.Rows.Clear(); List <CUploadData> list = SqliteDataService.GetExpUploadFromSqlite <YKBoxInfo>(); if (list != null && list.Count > 0) { foreach (var item in list) { YKBoxInfo ju = item.Data as YKBoxInfo; if (ju != null) { grid.Rows.Insert(0, false, ju.Hu, item.MSG); grid.Rows[0].Tag = item; } } } }
//private object boxListLock = new object(); private void UploadServer_OnUploaded(YKBoxInfo Box) { if (boxList == null) { boxList = new List <YKBoxInfo>(); } foreach (YKBoxInfo item in boxList) { if (item.Hu == Box.Hu) { item.SapRemark = Box.SapRemark; item.SapStatus = Box.SapStatus; break; } } UpdateErrorBoxButton(); UpdateTotalInfo(); }
private void AddGrid(YKBoxInfo box) { if (box.Details != null && box.Details.Count > 0) { List <string> matnrlist = box.Details.Select(i => i.Matnr).Distinct().ToList(); foreach (string matnr in matnrlist) { grid.Rows.Insert(0, false, box.Source, box.Target, box.Hu, box.Details.First(i => i.Matnr == matnr).Zsatnr, box.Details.First(i => i.Matnr == matnr).Zcolsn, box.Details.First(i => i.Matnr == matnr).Zsiztx, box.Details.Count(i => i.Matnr == matnr), box.SapRemark); grid.Rows[0].Tag = box; } } else { grid.Rows.Insert(0, false, box.Source, box.Target, box.Hu, "", "", "", 0, box.SapRemark); grid.Rows[0].Tag = box; } }
void uploadSap(YKBoxInfo box) { try { SqliteUploadDataInfo ud = new SqliteUploadDataInfo(); ud.Guid = Guid.NewGuid().ToString(); ud.Data = box; ud.IsUpload = 0; ud.CreateTime = DateTime.Now; YKBoxSqliteService.InsertUploadData(ud); SapResult result = SAPDataService.UploadYKBoxInfo(SysConfig.LGNUM, box); box.SapRemark = result.MSG; box.SapStatus = result.STATUS; bool xdSaveResult = YKBoxService.SaveBox(box); YKBoxSqliteService.SetUploaded(ud.Guid); } catch (Exception e) { Log4netHelper.LogError(e); } }
private void uploadAgainButton_Click(object sender, EventArgs e) { List <YKBoxInfo> rowBoxList = new List <YKBoxInfo>(); List <DataGridViewRow> rows = GetCheckedRows(); if (rows != null && rows.Count > 0) { foreach (DataGridViewRow row in rows) { YKBoxInfo box = row.Tag as YKBoxInfo; if (box != null) { if (!rowBoxList.Exists(r => r.Hu == box.Hu)) { rowBoxList.Add(box); } } } } foreach (YKBoxInfo data in rowBoxList) { SqliteUploadDataInfo ud = new SqliteUploadDataInfo(); ud.Guid = Guid.NewGuid().ToString(); ud.Data = data; ud.IsUpload = 0; ud.CreateTime = DateTime.Now; YKBoxSqliteService.InsertUploadData(ud); UploadServer.GetInstance().CurrentUploadQueue.Push(ud); } if (rowBoxList.Count > 0) { MetroMessageBox.Show(this, "成功加入上传列表", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information); Close(); } }
public override void StopInventory() { try { if (isInventory) { Invoke(new Action(() => { lblWorkStatus.Text = "停止扫描"; })); isInventory = false; reader.StopInventory(); CheckResult checkResult = CheckData(); playSound(checkResult); YKBoxInfo box = GetCurrentYKBox(checkResult); if (lblUsePrint.DM_Key == DMSkin.Controls.DMLabelKey.正确) { if (checkResult.InventoryResult) { PrintHelper.PrintRightTag(box, materialList); } else { PrintHelper.PrintErrorTag(box, lblCheckSku.DM_Key == DMSkin.Controls.DMLabelKey.正确); } } if (!checkResult.IsRecheck) { uploadSap(box); } if (boxList == null) { boxList = new List <YKBoxInfo>(); } if (lblCheckPinSe.DM_Key == DMSkin.Controls.DMLabelKey.正确) { if (boxList.Count(i => i.Status == "S") == 0 && box.Status == "S") { currentZcolsn = box.Details?.First().Zcolsn; currentZsatnr = box.Details?.First().Zsatnr; } } if (!checkResult.IsRecheck) { boxList.RemoveAll(i => i.Hu == box.Hu); boxList.Add(box); } AddGrid(box); updateUIInfo(); if (checkResult.InventoryResult || checkResult.IsRecheck) { SetInventoryResult(1); } else { SetInventoryResult(1); } } } catch (Exception ex) { Log4netHelper.LogError(ex); SetInventoryResult(1); } }
public static void PrintRightTag(YKBoxInfo box,List<MaterialInfo> mats) { try { int skuCount = 0; if(box.Details!=null && box.Details.Count>0) { skuCount = box.Details.Select(i => i.Matnr).Distinct().Count(); } string filepath = ""; if (skuCount>1) { filepath = Application.StartupPath + "\\LabelMultiSku.mrt"; } else if(skuCount == 1) { filepath = Application.StartupPath + "\\LabelSku.mrt"; } if(filepath == "") { throw new Exception("no sku"); } StiReport report = new StiReport(); report.Load(filepath); report.Compile(); if(skuCount>1) { //multi report["HU"] = box.Hu; report["STORAGETYPE"] = box.Target; string content = ""; List<string> matnrlist = box.Details.Select(i => i.Matnr).Distinct().ToList(); foreach (string matnr in matnrlist) { string zsatnr = box?.Details?.First(i => i.Matnr == matnr).Zsatnr; string zcolsn = box?.Details?.First(i => i.Matnr == matnr).Zcolsn; string zsiztx = box?.Details?.First(i => i.Matnr == matnr).Zsiztx; int count = box.Details.FindAll(i => i.Matnr == matnr).Count; string controlFlag = ""; controlFlag = mats.FirstOrDefault(i => i.MATNR == matnr).PUT_STRA; content += string.Format("|{0,-13}|{1,-7}|{2,-14}|{3,-3}|{4,-7}|\r\n", zsatnr, zcolsn, zsiztx, count, controlFlag); } report["CONTENT"] = content; } else { string zsatnr = box?.Details?.First().Zsatnr; string zcolsn = box?.Details?.First().Zcolsn; string zsiztx = box?.Details?.First().Zsiztx; int count = box.Details.Count(i => i.IsAdd != 1); string controlFlag = ""; string mat = box?.Details?.First().Matnr; controlFlag = mats.FirstOrDefault(i => i.MATNR == mat).PUT_STRA; string MAKTX = mats.FirstOrDefault(i => i.MATNR == mat).MAKTX; report["HU"] = box.Hu; report["STORAGETYPE"] = box.Target; report["RUKUBIAOZHI"] = controlFlag; report["LIFNR"] = box.LIFNR; report["PINHAO"] = zsatnr; report["SEHAO"] = zcolsn; report["GUIGE"] = zsiztx; report["SHULIANG"] = count.ToString(); report["MAKTX"] = MAKTX; } PrinterSettings printerSettings = new PrinterSettings(); report.Print(false, printerSettings); } catch (Exception ex) { LogHelper.Error("打印正常箱标(按规格)出错", ex.Message + "\r\n" + ex.StackTrace); } }
public static void PrintErrorTag(YKBoxInfo box,bool checkSku) { try { string content = ""; string filepath = Application.StartupPath + "\\LabelError.mrt"; if (box.Details.Count > 0) { List<string> matnrlist = box.Details.Select(i => i.Matnr).Distinct().ToList(); if (matnrlist.Count > 10) { if (checkSku) { content = Consts.Default.SHANG_PIN_DA_YU_SHI; } } else { bool isExist = false; foreach (string matnr in matnrlist) { string zsatnr = box?.Details?.First(i => i.Matnr == matnr).Zsatnr; string zcolsn = box?.Details?.First(i => i.Matnr == matnr).Zcolsn; string zsiztx = box?.Details?.First(i => i.Matnr == matnr).Zsiztx; int count = box.Details.FindAll(i => i.Matnr == matnr).Count; if (zsiztx.Contains("/")) { } else { isExist = true; } content += string.Format("{0}/{1}/{2}/{3}\r\n", zsatnr, zcolsn, zsiztx, count); } if(isExist) { filepath = Application.StartupPath + "\\LabelError_Small.mrt"; } } } else { content = "未扫描到商品"; } StiReport report = new StiReport(); report.Load(filepath); report.Compile(); report["HU"] = box.Hu; report["CONTENT"] = content; PrinterSettings printerSettings = new PrinterSettings(); report.Print(false, printerSettings); } catch (Exception ex) { LogHelper.Error("打印异常箱标出错", ex.Message + "\r\n" + ex.StackTrace); } }
public override CheckResult CheckData() { CheckResult result = new CheckResult(); try { result = base.CheckData(); //检查商品已扫描,重投,箱码重复使用 if (string.IsNullOrEmpty(lblHu.Text.Trim())) { result.UpdateMessage(Consts.Default.WEI_SAO_DAO_XIANG_MA); result.InventoryResult = false; string hu = LocalDataService.GetNewErrorHu(SysConfig.DeviceNO); Invoke(new Action(() => { lblHu.Text = hu; })); } if (tagDetailList.Count > 0) { if (tagDetailList.First().LIFNRS?.Count > 1) { result.UpdateMessage(Consts.Default.JIAO_JIE_HAO_BU_YI_ZHI); result.InventoryResult = false; } else { lifnr = tagDetailList.First().LIFNRS?.FirstOrDefault(); } YKBoxInfo box = boxList == null ? null : boxList.Find(i => i.Hu == lblHu.Text); if (box != null && box.Status != null && box.Status == "S" && box.SapStatus == "S") { //上次检测结果为正常, bool isAllSame = true; bool isAllNotSame = true; List <YKBoxDetailInfo> lastCheckDetail = box.Details; if (lastCheckDetail != null && lastCheckDetail.Count > 0) { if (lastCheckDetail.Count != epcList.Count) { isAllSame = false; } foreach (YKBoxDetailInfo item in lastCheckDetail) { if (!epcList.Contains(item.Epc)) { isAllSame = false; break; } else { isAllNotSame = false; } } } else { isAllSame = false; isAllNotSame = true; } if (isAllSame) { result.IsRecheck = true; } else if (isAllNotSame) { //两批EPC对比,完全不一样,示为箱码重复使用 result.UpdateMessage(Consts.Default.XIANG_MA_CHONG_FU_SHI_YONG); result.InventoryResult = false; } if (lastCheckDetail.Count > 0 && !isAllSame && !isAllNotSame) { result.UpdateMessage(Consts.Default.EPC_YI_SAO_MIAO); result.InventoryResult = false; } } else { if (tagDetailList.Select(i => i.MATNR).Distinct().Count() > 10) { if (lblCheckSku.DM_Key == DMSkin.Controls.DMLabelKey.正确) { result.UpdateMessage(Consts.Default.SHANG_PIN_DA_YU_SHI); result.InventoryResult = false; } } if (lblCheckPinSe.DM_Key == DMSkin.Controls.DMLabelKey.正确) { if (!string.IsNullOrEmpty(currentZsatnr) && !string.IsNullOrEmpty(currentZcolsn)) { if (tagDetailList?.First().ZSATNR != currentZsatnr || tagDetailList?.First().ZCOLSN != currentZcolsn) { result.UpdateMessage(Consts.Default.PIN_SE_BU_FU); result.InventoryResult = false; } } } if (ExistsSameEpc()) { result.UpdateMessage(Consts.Default.EPC_YI_SAO_MIAO); result.InventoryResult = false; } if (GetCurrentReceiveMode() == ReceiveMode.品色装箱) { if (!IsOnePinSe()) { result.UpdateMessage(Consts.Default.DUO_GE_PIN_SE); result.InventoryResult = false; } } if (GetCurrentReceiveMode() == ReceiveMode.规格装箱) { if (!IsOneSku()) { result.UpdateMessage(Consts.Default.DUO_GE_SHANG_PIN); result.InventoryResult = false; } int pxqty = 0; MaterialInfo material = materialList.Find(i => i.MATNR == tagDetailList.First().MATNR); if (material.PUT_STRA == "ADM1" || cboTarget.Text == "BDMX") { pxqty = material.PXQTY; packmat = material.PXMAT; } else { pxqty = material.PXQTY_FH; packmat = material.PXMAT_FH; } /* * 如果设备信息中配置了带G开头的权限信息 * 且对应的AUTH_VALUE的值与当前选择的源存储类型一致 * 则取收货箱规 */ if (GAuthList?.Count > 0 && GAuthList.Exists(i => i.AUTH_VALUE == cboSource.Text)) { pxqty = material.PXQTY; } if (lblUseBoxStandard.DM_Key == DMSkin.Controls.DMLabelKey.正确) { if (mainEpcNumber != pxqty) { isFull = false; result.UpdateMessage(Consts.Default.BU_FU_HE_XIANG_GUI + string.Format("({0})", pxqty)); result.InventoryResult = false; } else { isFull = true; } } else { if (mainEpcNumber > pxqty) { result.UpdateMessage(Consts.Default.SHU_LIANG_DA_YU_XIANG_GUI + string.Format("({0})", pxqty)); result.InventoryResult = false; } } } else { if (shouldCheckNum()) { //075接口获取数量对比 string sapRe = ""; string sapMsg = ""; int re = SAPDataService.RFID_075F(lblHu.Text, ref sapRe, ref sapMsg); if (sapRe == "E") { result.UpdateMessage(string.Format("未获取到装箱数据 {0}", lblHu.Text)); result.InventoryResult = false; } else { if (mainEpcNumber != re) { result.UpdateMessage(string.Format("装箱数量错误 {0}-{1}", re, mainEpcNumber)); result.InventoryResult = false; } } } } if (lblUseBoxStandard.DM_Key != DMSkin.Controls.DMLabelKey.正确) { packmat = cboPxmat.SelectedValue.CastTo("未选择包材"); } } } } catch (Exception ex) { Log4netHelper.LogError(ex); result.InventoryResult = false; result.IsRecheck = false; result.Message = ex.ToString(); } if (result.InventoryResult || result.IsRecheck) { result.UpdateMessage(result.IsRecheck ? Consts.Default.CHONG_TOU : Consts.Default.RIGHT); } lblResult.Text = result.Message; return(result); }