private void CreateWaveByWhId(long whId, TOut[] outbounds) { var wave = new TOutWave { Code = "WAV" + DateTime.Now.ToString(FormatString.DefaultFormat), WhId = whId, Size = outbounds.Count(), Status = Enum.GetName(typeof(EnumOperateStatus), EnumOperateStatus.Init), CreatedBy = DefaultUser.UserName, CreatedTime = DateTime.UtcNow, }; using (var transaction = wmsoutbound.Database.BeginTransaction()) { wmsoutbound.TOutWaves.Add(wave); wmsoutbound.SaveChanges(); //增加事务控制 pickService.UseTransaction(transaction); foreach (var outbound in outbounds) { outbound.PickStatus = Enum.GetName(typeof(EnumOperateStatus), EnumOperateStatus.Init); pickService.CreatePick(outbound, wave.Id); } wmsoutbound.SaveChanges(); wmsoutbound.Database.CommitTransaction(); } }
public bool CreateWaveAuto(long whId, long custId, long brandId) { //获取波次策略 var st = strategyService.WaveSt(whId, custId, brandId); //查找满足条件的单据 var outbounds = wmsoutbound.TOuts.Where(x => x.WhId == whId && x.CustId == custId && x.BrandId == brandId && x.AllotStatus == 2 && x.PickStatus == "None") .ToList(); var waveSize = st.WaveSize; for (int i = 0; i < outbounds.Count(); i += waveSize) { //产生波次 var wave = new TOutWave { Code = "WAV" + DateTime.Now.ToString(FormatString.DefaultFormat), WhId = whId, Size = waveSize, //Status = Enum.GetName(typeof(EnumOperateStatus), EnumOperateStatus.Init), CreatedBy = DefaultUser.UserName, CreatedTime = DateTime.UtcNow, }; //产生拣货单和拣货明细 var prePicks = outbounds.Skip(i).Take(waveSize).ToList(); var ids = prePicks.Select(x => x.Id).ToList(); var prePickDetailList = wmsoutbound.TOutDs.Where(x => ids.Contains(x.HId)).ToList(); foreach (var prePick in prePicks) { pickService.CreatePick(prePick); } } return(wmsoutbound.SaveChanges() > 0); }