jt
2021-06-10 5d0d028456874576560552f5a5c4e8b801786f11
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
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()
        //{ 
        
        //}
 
    }
}