public JsonResult Scan([FromUri] long id, [FromBody] TInPutawayD d) { var result = putAwayService.Scan(id, d); return(new JsonResult(new VScanResponse { IsAllFinished = result.Item1, IsFinished = result.Item1, Message = result.Item2 })); }
public Tuple<bool, string> Scan(long id, TInPutawayD detail) { //校验商品 var prodSku = skuService.GetSkuByBarcode(detail.Barcode); if (prodSku == null) return new Tuple<bool, string>(false, "barcode is not exist."); var pt = wmsinbound.TInPutaways.Where(x => x.Id == id).FirstOrDefault(); //校验货位 var bin = binService.GetBinByCode(pt.WhId, detail.BinCode); if (bin == null) return new Tuple<bool, string>(false, "binCode is not exist."); var zone = zoneService.GetZoneByCode(pt.WhId, bin.ZoneCode); //校验数量 var skuQty = wmsinbound.TInPutawayDs.Where(x => x.HId == pt.Id && x.SkuId == prodSku.Id).Sum(x => x.Qty); var inboundSkuQty = wmsinbound.TInInboundDs.Where(x => x.HId == pt.InboundId && x.SkuId == prodSku.Id) .Select(x => x.Qty).FirstOrDefault(); var inbound = wmsinbound.TInInbounds.Where(x => x.Id == pt.InboundId).FirstOrDefault(); if (skuQty + 1 <= inboundSkuQty) { if (pt.FirstScanAt == null) pt.FirstScanAt = DateTime.UtcNow; pt.LastScanAt = DateTime.UtcNow; pt.Qty += skuQty + 1; pt.Status = Enum.GetName(typeof(EnumOperateStatus), EnumOperateStatus.Doing); detail.SkuId = prodSku.Id; detail.ZoneId = zone.Id; detail.ZoneCode = zone.Code; detail.BinId = bin.Id; detail.BinCode = bin.Code; detail.HId = id; detail.CreatedBy = DefaultUser.UserName; detail.CreatedTime = DateTime.UtcNow; detail.Qty = 1; inbound.PStatus = pt.Status; wmsinbound.TInPutawayDs.Add(detail); var r = wmsinbound.SaveChanges() > 0; return new Tuple<bool, string>(false, string.Format("{0}/{1}", skuQty + 1, inboundSkuQty)); } else { return new Tuple<bool, string>(true, string.Format("{0}/{1}", inboundSkuQty, inboundSkuQty)); } }