예제 #1
0
 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());
     }
 }
예제 #2
0
        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);
        }
예제 #3
0
        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);
        }
예제 #4
0
        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);
        }
예제 #5
0
        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);
        }