void saveDoc(CDianShangOutDocInfo doc) { try { string sql = string.Format("select count(*) from DianShangOutDoc where doc = '{0}'", doc.mDoc); if (int.Parse(DBHelper.GetValue(sql, false).ToString()) > 0) { //update sql = string.Format("update DianShangOutDoc set data=@data,opTime = GETDATE() where doc='{0}'", doc.mDoc); SqlParameter sp = new SqlParameter("@data", Newtonsoft.Json.JsonConvert.SerializeObject(doc)); DBHelper.ExecuteSql(sql, false, sp); } else { //insert sql = string.Format("insert into DianShangOutDoc (doc,data,opTime) values ('{0}',@data,GETDATE())", doc.mDoc); SqlParameter sp = new SqlParameter("@data", Newtonsoft.Json.JsonConvert.SerializeObject(doc)); DBHelper.ExecuteSql(sql, false, sp); } } catch (Exception ex) { MessageBox.Show(ex.ToString()); } }
CDianShangOutDocInfo getDoc(string hu) { CDianShangOutDocInfo re = new CDianShangOutDocInfo(); try { string msg = ""; re = SAPDataService.getDianShangOutInfo(hu, out msg); if (re != null && !string.IsNullOrEmpty(re.mDoc)) { //load from sql string sql = string.Format("select data from DianShangOutDoc where doc = '{0}'", re.mDoc); string data = DBHelper.GetValue(sql, false)?.ToString(); if (!string.IsNullOrEmpty(data)) { CDianShangOutDocInfo outDoc = Newtonsoft.Json.JsonConvert.DeserializeObject <CDianShangOutDocInfo>(data) as CDianShangOutDocInfo; if (outDoc != null) { re = outDoc; } } } } catch (Exception) { } return(re); }
bool isLastHu(CDianShangOutDocInfo doc, string hu) { bool re = false; if (doc.mHuDetail.Count + 1 == doc.mHu.Count && !doc.mHuDetail.ContainsKey(hu) && doc.mHu.Exists(i => i == hu)) { re = true; } return(re); }
List <CTagSumDif> getChaYi(CDianShangOutDocInfo doc, string hu) { //总数量只能小于等于,最后一箱必须等于 List <CTagSumDif> re = new List <CTagSumDif>(); try { List <CTagSum> curTagSum = getTagSum(); bool last = isLastHu(doc, hu); List <CMatQty> leftMatQty = doc.getLeftMatQty(); re = duibi(leftMatQty); if (!last) { List <string> reMat = new List <string>(); foreach (var v in re) { if (!curTagSum.Exists(k => k.mat == v.mat)) { reMat.Add(v.mat); } } foreach (var v in reMat) { re.RemoveAll(i => i.mat == v); } foreach (var v in re) { if (v.qty_diff < 0) { v.qty_diff = 0; } if (v.qty_add_diff < 0) { v.qty_add_diff = 0; } } } /* * foreach(var v in curTagSum) * { * if (doc.mMatQtyList.Exists(i => i.mat == v.mat)) * { * int shouldQty = doc.mMatQtyList.First(i => i.mat == v.mat).qty; * int hasQty = doc.mHuDetail.Values.Sum(i => i.Count(j => j.MATNR == v.mat && !j.IsAddEpc)); * if((last && hasQty + v.qty == shouldQty) || (!last && hasQty + v.qty <= shouldQty)) * { * re.Add(new CTagSumDif(v.mat, v.bar, v.barAdd, v.zsatnr, v.zcolsn, v.zsiztx, v.qty, v.qty_add, 0, string.IsNullOrEmpty(v.barAdd) ? 0 : v.qty_add - v.qty)); * } * else * { * CTagSumDif tsd = new CTagSumDif(v.mat, v.bar, v.barAdd, v.zsatnr, v.zcolsn, v.zsiztx, v.qty, v.qty_add, hasQty + v.qty - shouldQty, 0); * if (!string.IsNullOrEmpty(v.barAdd)) * { * if (v.qty_add == v.qty) * tsd.qty_add_diff = tsd.qty_diff; * else * tsd.qty_add_diff = hasQty + v.qty_add - shouldQty; * } * re.Add(tsd); * } * } * else * { * re.Add(new CTagSumDif(v.mat, v.bar, v.barAdd, v.zsatnr, v.zcolsn, v.zsiztx, v.qty, v.qty_add, v.qty, v.qty_add)); * } * }*/ } catch (Exception) { } return(re); }
CheckResult check() { CheckResult re = baseCheck(); try { string hu = getBoxNo(); if (string.IsNullOrEmpty(hu)) { re.InventoryResult = false; re.UpdateMessage("未扫到箱号"); } CDianShangOutDocInfo doc = getDoc(hu); if (string.IsNullOrEmpty(doc.mDoc)) { re.InventoryResult = false; re.UpdateMessage("箱号无绑定信息"); } if (re.InventoryResult == false) { grid.Rows.Insert(0, hu, doc.mDoc, "", "", "", "", "", "", "", re.Message); grid.Rows[0].DefaultCellStyle.BackColor = Color.OrangeRed; return(re); } //重投 商品已扫描 if (doc.mHuDetail.ContainsKey(hu)) { re.InventoryResult = false; re.UpdateMessage("重投"); } foreach (var v in doc.mHuDetail.Values) { if (v.Select(i => i.EPC).ToList().Intersect(epcList).Count() > 0) { re.InventoryResult = false; re.UpdateMessage("商品已扫描"); } } if (re.InventoryResult == false) { grid.Rows.Insert(0, hu, doc.mDoc, "", "", "", "", "", "", "", re.Message); grid.Rows[0].DefaultCellStyle.BackColor = Color.OrangeRed; return(re); } List <CTagSumDif> tagDif = getChaYi(doc, hu); foreach (var v in tagDif) { if (v.qty_diff != 0 || v.qty_add_diff != 0) { re.InventoryResult = false; re.UpdateMessage("明细不一致"); break; } } if (re.InventoryResult) { re.UpdateMessage("正常"); } //add grid foreach (var v in tagDif) { grid.Rows.Insert(0, hu, doc.mDoc, v.zsatnr, v.zcolsn, v.zsiztx, v.qty, v.qty_diff, v.qty_add, v.qty_add_diff, re.Message); if (v.qty_diff != 0 || v.qty_add_diff != 0) { grid.Rows[0].DefaultCellStyle.BackColor = Color.OrangeRed; } } //if ok,save sql if (re.InventoryResult) { doc.mHuDetail[hu] = tagDetailList.ToList(); saveDoc(doc); } //print if (re.InventoryResult) { string huCount = string.Format("{0}-{1}", doc.mHu.Count, doc.mHuDetail.Count); printOKLabel(hu, huCount, doc.WHAreaId, doc.mDocTime, doc.OrigBillId, doc.mDoc, mainEpcNumber.ToString()); } else { printErrorLabelMulti(hu, doc.mDoc, tagDif); } } catch (Exception ex) { Log4netHelper.LogError(ex); } return(re); }