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 生成波次分拣单
|
/// <summary>
|
/// 生成波次分拣单
|
/// </summary>
|
/// <param name="r"></param>
|
/// <returns></returns>
|
public OperateResult WaveCreate(BatchesResult r)
|
{
|
return UseTransaction(trans =>
|
{
|
//生成波次主表
|
CreateDAL<DapperDAL<TN_WM_WAVE_MSTEntity>>().Add(r.WaveMst, trans);
|
//生成波次子表
|
CreateDAL<DapperDAL<TN_WM_WAVE_DTLEntity>>().AddRange(r.WaveMst.WaveDtlList, trans);
|
|
if (r.ShortageOutList.Any())
|
{
|
//存缺件的生成新的发货单--主表
|
CreateDAL<DapperDAL<TN_WM_OUT_MSTEntity>>().AddRange(r.ShortageOutList, trans);
|
var shortageOutDtl = new List<TN_WM_OUT_DTLEntity>();
|
r.ShortageOutList.ForEach(f => shortageOutDtl.AddRange(f.OutDtlList));
|
//子表
|
CreateDAL<DapperDAL<TN_WM_OUT_DTLEntity>>().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<WaveServiceDAL>().UpdateOutState(stayOutMst, trans);
|
}
|
//全部缺货和取消的出库单
|
CreateDAL<WaveServiceDAL>().CancelAndAllShortageOut(r.CancelAndAllShortageOut, trans);
|
//记录仓库库存锁定明细
|
CreateDAL<DapperDAL<TN_WM_B_OUTLOCKING_DTLEntity>>().AddRange(r.OutLockingDtlList, trans);
|
//生成减少库存业务主表
|
CreateDAL<DapperDAL<TN_WM_REDUCE_INVENTORY_MSTEntity>>().AddRange(r.ReduceInventoryMstList, trans);
|
//生成减少库存业务子表
|
r.ReduceInventoryMstList.ForEach(p =>
|
{
|
//所有出库单子表数据
|
r.ReduceInventoryDtlList.AddRange(p.reduceInventoryDtlList);
|
});
|
CreateDAL<DapperDAL<TN_WM_REDUCE_INVENTORY_DTLEntity>>().AddRange(r.ReduceInventoryDtlList, trans);
|
//生成分拣单主表
|
CreateDAL<DapperDAL<TN_WM_SORTING_LISTEntity>>().AddRange(r.SortingList, trans);
|
//分拣单子表数据
|
var sortingDtlList = new List<TN_WM_SORTING_DTLEntity>();
|
r.SortingList.ForEach(p =>
|
{
|
sortingDtlList.AddRange(p.SortingDtlList);
|
});
|
//生成分拣单子表
|
CreateDAL<DapperDAL<TN_WM_SORTING_DTLEntity>>().AddRange(sortingDtlList, trans);
|
//库区量表分配量上升
|
CreateDAL<WaveServiceDAL>().UpdateAreaAlloc(r.StockAreaList, trans);
|
});
|
}
|
#endregion
|
|
//public OperateResult ExecuteSorting()
|
//{
|
|
//}
|
|
}
|
}
|