Esempio n. 1
0
        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();
            }
        }
Esempio n. 2
0
        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);
        }