using HH.WMS.CoreServer.DAL; using HH.WMS.Entitys; using HH.WMS.Entitys.Common; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using HH.WMS.CoreServer.Entity; using HH.WMS.Entitys.Basic; using HH.WMS.DAL; namespace HH.WMS.CoreServer.BLL { public class WaveServiceBLL : DapperBaseBLL { #region 生成波次分拣单 /// /// 生成波次分拣单 /// /// /// public OperateResult WaveCreate(BatchesResult r) { return UseTransaction(trans => { //生成波次主表 CreateDAL>().Add(r.WaveMst, trans); //生成波次子表 CreateDAL>().AddRange(r.WaveMst.WaveDtlList, trans); if (r.ShortageOutList.Any()) { //存缺件的生成新的发货单--主表 CreateDAL>().AddRange(r.ShortageOutList, trans); var shortageOutDtl = new List(); r.ShortageOutList.ForEach(f => shortageOutDtl.AddRange(f.OutDtlList)); //子表 CreateDAL>().AddRange(shortageOutDtl, trans); } //没有缺货的出库单,要改变状态 var stayOutMst = r.OutMstList.FindAll(f => !r.ShortageOutList.Exists(e => e.CN_S_OP_NO == f.CN_S_OP_NO)); if (stayOutMst.Any()) { //设置状态为待出库,赋值所属波次 CreateDAL().UpdateOutState(stayOutMst, trans); } //全部缺货和取消的出库单 CreateDAL().CancelAndAllShortageOut(r.CancelAndAllShortageOut, trans); //记录仓库库存锁定明细 CreateDAL>().AddRange(r.OutLockingDtlList, trans); //生成减少库存业务主表 CreateDAL>().AddRange(r.ReduceInventoryMstList, trans); //生成减少库存业务子表 r.ReduceInventoryMstList.ForEach(p => { //所有出库单子表数据 r.ReduceInventoryDtlList.AddRange(p.reduceInventoryDtlList); }); CreateDAL>().AddRange(r.ReduceInventoryDtlList, trans); //生成分拣单主表 CreateDAL>().AddRange(r.SortingList, trans); //分拣单子表数据 var sortingDtlList = new List(); r.SortingList.ForEach(p => { sortingDtlList.AddRange(p.SortingDtlList); }); //生成分拣单子表 CreateDAL>().AddRange(sortingDtlList, trans); //库区量表分配量上升 CreateDAL().UpdateAreaAlloc(r.StockAreaList, trans); }); } #endregion //public OperateResult ExecuteSorting() //{ //} } }