public bool Scan(long waveId, VScanBinRequest detail) { var pick = wmsoutbound.TOutPicks.Where(x => x.WaveId == waveId).FirstOrDefault(); if (pick == null) { throw new Exception("pick is not exist."); } //获取SKU信息 var prodSku = skuService.GetSkuByBarcode(detail.Barcode); if (prodSku == null) { throw new Exception("barcode is not exist."); } //新增拣货明细 var pickDetail = wmsoutbound.TOutPickDs.Where(x => x.HId == pick.Id && x.Barcode == detail.Barcode).FirstOrDefault(); if (pickDetail == null) { pickDetail = new TOutPickD { HId = pick.Id, }; } if (pick.FirstScanAt == null) { pick.FirstScanAt = DateTime.UtcNow; } pick.LastScanAt = DateTime.UtcNow; pick.Qty += 1; pick.Status = Enum.GetName(typeof(EnumOperateStatus), EnumOperateStatus.Doing); //获取货区货位信息 var zoneBin = binService.GetBinByCode(pick.WhId, detail.BinCode); pickDetail.ActBinId = zoneBin.Id; pickDetail.ActBinCode = detail.BinCode; pickDetail.Qty = 1; pickDetail.ActZoneCode = zoneBin.ZoneCode; pickDetail.ActZoneId = zoneBin.ZoneId; pickDetail.IsPicked = true; pickDetail.LastModifiedBy = DefaultUser.UserName; pickDetail.LastModifiedTime = DateTime.UtcNow; if (pickDetail.Id == 0) { wmsoutbound.TOutPickDs.Add(pickDetail); } return(wmsoutbound.SaveChanges() > 0); }
public VPickScanResponse Scan(long id, string TypeCode, VScanBinRequest detail) { if (TypeCode == "Pick") { var result = pickService.Scan(id, detail); return(result); } else { var result = waveService.Scan(id, detail); return(new VPickScanResponse()); } }
public VPickScanResponse Scan(long pickId, VScanBinRequest detail) { VPickScanResponse response = new VPickScanResponse { AllFinished = false, BinFinished = false, Message = "" }; var pick = wmsoutbound.TOutPicks.Where(x => x.Id == pickId).FirstOrDefault(); if (pick == null) { throw new Exception("pick is not exist."); } //获取SKU信息 var prodSku = skuService.GetSkuByBarcode(detail.Barcode); if (prodSku == null) { throw new Exception("barcode is not exist."); } //获取货区货位信息 var zoneBin = binService.GetBinByCode(pick.WhId, detail.BinCode); if (zoneBin == null) { throw new Exception("zoneBin is not exist."); } //更新拣货明细 var pickDetail = wmsoutbound.TOutPickDs.Where(x => x.HId == pickId && x.Barcode == detail.Barcode && !x.IsPicked).FirstOrDefault(); if (pickDetail == null) { throw new Exception("pickDetail is not exist."); } //计算每个条码的需要扫描的总数量和货位数量 var skuAllQty = wmsoutbound.TOutPickDs.Where(x => x.HId == pick.Id && x.Barcode == detail.Barcode).Count(); var pickAllQty = wmsoutbound.TOutPickDs.Where(x => x.HId == pick.Id && x.Barcode == detail.Barcode && x.IsPicked).Count(); //计算每个条码的当前货位需要扫描的数量 var skuBinQty = wmsoutbound.TOutPickDs.Where(x => x.HId == pickId && x.Barcode == detail.Barcode && x.BinCode == detail.AdvBinCode).Count(); //计算每个条码的当前货位已扫描的数量 var pickBinQty = wmsoutbound.TOutPickDs.Where(x => x.HId == pickId && x.Barcode == detail.Barcode && x.BinCode == detail.AdvBinCode && x.IsPicked).Count(); //计算当前货位是否已经都扫描完毕了,如果是的话,需要跳转到下一个货位的 if (skuAllQty == pickAllQty) { response.AllFinished = true; response.Message = string.Format("{0}/{1}/{2}", skuBinQty, skuBinQty, skuAllQty); } else if (pickBinQty + 1 <= skuBinQty) { response.BinFinished = true; UpdatePickDetail(zoneBin, pick, pickDetail); response.Message = string.Format("{0}/{1}/{2}", pickBinQty + 1, skuBinQty, skuAllQty); } return(response); }
public JsonResult Scan([FromUri] long id, [FromBody] VScanBinRequest detail) { var result = pickService.Scan(id, detail); return(new JsonResult(result)); }