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
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
using HH.WMS.Common;
using HH.WMS.Common.External;
using HH.WMS.DAL;
using HH.WMS.DAL.MoveStock;
using HH.WMS.Entitys;
using HH.WMS.Entitys.MoveStock;
using Newtonsoft.Json;
using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
 
namespace HH.WMS.BLL.MoveStock
{
    public class MoveStockTaskBLL : DapperBaseBLL
    {
 
        public DataTable GetDataList(string tableName, int pageIndex, int pageSize, out long total, string orderBy = "")
        {
            return CreateDAL<MoveStockTaskDAL>().GetDataList(tableName, pageIndex, pageSize, out total, orderBy);
        }
 
        public TN_WM_MOVE_STOCK_TASK_MSTEntity GetMst()
        {
            return CreateDAL<MoveStockTaskDAL>().GetMst();
        }
 
        public TN_WM_MOVE_STOCK_TASK_DTLEntity GetDtlByTaskNo(string taskNo)
        {
            return CreateDAL<MoveStockTaskDAL>().GetDtlByTaskNo(taskNo);
        }
 
        public OperateResult AddMst(TN_WM_MOVE_STOCK_TASK_MSTEntity moveStockTaskMst, IDbTransaction tran)
        {
            return CreateDAL<MoveStockTaskDAL>().AddMst(moveStockTaskMst, tran);
        }
 
        public OperateResult AddDtl(string parentGuid, string taskNo, string taskType, decimal quantity, IDbTransaction tran, LogPara logPara = null)
        {
            try
            {
                var dtl = new TN_WM_MOVE_STOCK_TASK_DTLEntity
                {
                    CN_GUID = Guid.NewGuid().ToString(),
                    CN_PARENT_GUID = parentGuid,
                    CN_S_TASK_NO = taskNo,
                    CN_S_TASK_TYPE = taskType,
                    CN_F_QUANTITY = quantity,
                    CN_T_CREATE = DateTime.Now,
                    CN_T_MODIFY = DateTime.Now
                };
 
                if (logPara != null)
                    Log.Detail(logPara, LogDescribe.Content(dtl));
 
                if (taskType.Equals("移库"))
                {
                    //增主表移动数
                    AddMoveAllocQty(parentGuid, quantity.ToString(), tran, logPara);
                }
                return CreateDAL<MoveStockTaskDAL>().AddDtl(dtl, tran);
            }
            catch (Exception ex)
            {
                return OperateResult.Error("新增移库任务子表失败!原因:" + ex.Message);
            }
          
        }
 
        public OperateResult AddMoveAllocQty(string guid, string qty, IDbTransaction trans, LogPara logPara = null)
        {
            if (logPara != null)
            {
                Log.Detail(logPara, "增加移库任务主表:" + guid + "的移动数:" + qty);
            }
            return CreateDAL<MoveStockTaskDAL>().AddMoveAllocQty(guid, qty, trans);
        }
 
        public OperateResult ReduceMoveQty(string guid, string qty, IDbTransaction trans, LogPara logPara = null)
        {
            if (logPara != null)
            {
                Log.Detail(logPara, "降移库任务主表:" + guid + "的移动数:" + qty);
            }
            return CreateDAL<MoveStockTaskDAL>().ReduceMoveQty(guid, qty, trans);
        }
 
        public OperateResult UpdateMstState(string guid, string state, IDbTransaction trans, LogPara logPara = null)
        {
            if (logPara != null)
            {
                Log.Detail(logPara, "更新移库任务主表guid:" + guid + " 的状态为:" + state);
            }
            return CreateDAL<MoveStockTaskDAL>().UpdateMstState(guid, state, trans);
        }
 
        public OperateResult CheckComplete(string taskNo, IDbTransaction trans, LogPara logPara = null)
        {
            if (logPara != null)
                Log.Detail(logPara, "检查移库任务是否完成,当前任务号taskNo:" + taskNo);
 
            try
            {
                var dtl = CreateDAL<MoveStockTaskDAL>().GetDtlByTaskNo(taskNo);
                var mst = CreateDAL<MoveStockTaskDAL>().GetMst(dtl.CN_PARENT_GUID);
                var result = CreateDAL<MoveStockTaskDAL>().AddMoveQty(dtl.CN_PARENT_GUID, trans);
                Log.Detail(logPara, "新增移库数量结果:" + JsonConvert.SerializeObject(result));
                
                if (mst.CN_F_QUANTITY <= (mst.CN_F_MOVE_QUANTITY + mst.CN_F_ALLOC_QUANTITY))
                {
                    return UpdateMstState(dtl.CN_PARENT_GUID, "完成", trans);
                }
                return new OperateResult { Success = true };
            }
            catch (Exception ex)
            {
                return new OperateResult { Success = false, Msg = "检查移库任务是否完成 出错!" + ex.Message };
            }
          
            
        }
 
        #region 删除移库
        /// <summary>
        /// 删除移库
        /// </summary>
        /// <param name="CN_S_OP_NO">移库单号</param>
        /// <returns></returns>
        /// <history>[HanHe(lt)] CREATED 2018/9/18</history>
        public OperateResult Delete(string opNo)
        {
            return UseTransaction(trans =>
            {
                CreateDAL<MoveStockTaskDAL>().Cancel("where CN_GUID in ('" + opNo + "')", trans);//删除移库主表
                //CreateDAL<MoveStockTaskDAL>().DeleteDtl(" CN_PARENT_GUID in ('" + opNo + "')", trans);//删除移库子表
            });
        }
        #endregion
    }
}