Example #1
0
        public Tuple <bool, string> Scan(long id, TInQcD qcD)
        {
            //获取SKU的信息
            var prodSku = skuService.GetSkuByBarcode(qcD.Barcode);

            if (prodSku == null)
            {
                throw new Exception("prodSku is null.");
            }

            var qc = wmsinbound.TInQcs.Where(x => x.Id == id).FirstOrDefault();

            var qty     = wmsinbound.TInQcDs.Where(x => x.HId == id && x.SkuId == prodSku.Id).Count();
            var inbound = wmsinbound.TInInbounds.Where(x => x.Id == qc.InboundId).FirstOrDefault();

            //质检扫描的时候要校验一下扫描的数量
            var totalQty = wmsinbound.TInInboundDs.Where(x => x.HId == inbound.Id && x.SkuId == prodSku.Id).Select(x => x.Qty).FirstOrDefault();

            if (qty + 1 <= totalQty)
            {
                //新增质检扫描记录
                qcD.HId         = id;
                qcD.SkuId       = prodSku.Id;
                qcD.Sku         = prodSku.Code;
                qcD.CreatedBy   = DefaultUser.UserName;
                qcD.CreatedTime = DateTime.UtcNow;

                qc.Qty += 1;
                if (qc.Status == Enum.GetName(typeof(EnumOperateStatus), EnumOperateStatus.Init))
                {
                    qc.FirstScanAt = DateTime.UtcNow;
                }
                qc.LastScanAt    = DateTime.UtcNow;
                qc.Status        = Enum.GetName(typeof(EnumOperateStatus), EnumOperateStatus.Doing);
                inbound.QcStatus = Enum.GetName(typeof(EnumOperateStatus), EnumOperateStatus.Doing);

                wmsinbound.TInQcDs.Add(qcD);
                var b = wmsinbound.SaveChanges() > 0;
                return(new Tuple <bool, string>(false, string.Format("{0}/{1}", qty + 1, totalQty)));
            }
            else
            {
                return(new Tuple <bool, string>(true, string.Format("{0}/{1}", totalQty, totalQty)));
            }
        }
Example #2
0
 public JsonResult Scan([FromUri] long id, [FromBody] TInQcD qcD)
 {
     try
     {
         var result = qcService.Scan(id, qcD);
         return(new JsonResult(new VScanResponse
         {
             IsAllFinished = result.Item1,
             Message = result.Item2
         }));
     }
     catch (Exception ex)
     {
         var r = new ErrorResponse {
             ApiPath = "", Message = ex.Message
         };
         return(new JsonResult(r));
     }
 }