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))); } }
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)); } }