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
using HH.WMS.BLL.InStock;
using HH.WMS.Common;
using HH.WMS.Common.External;
using HH.WMS.DAL;
using HH.WMS.DAL.ERP;
using HH.WMS.Entitys;
using HH.WMS.Entitys.Basic;
using HH.WMS.Entitys.ERP;
using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
 
namespace HH.WMS.BLL.ERP
{
    /// <summary>
    /// 小磅单
    /// </summary>
    public class TN_ER_ITEM_POUNDBLL : DapperBaseBLL
    {
        #region GET
 
        public TN_ER_ITEM_POUNDEntity Get(string taskNo, int sync = 0)
        {
            var data = BLLCreator.Create<DapperBLL<TN_ER_ITEM_POUNDEntity>>().GetSingleEntity(new { CN_S_TASK_NO = taskNo, CN_N_SYNC = sync });
            return data;
        }
 
        public List<TN_ER_ITEM_POUNDEntity> GetList(int sync)
        {
            return CreateDAL<DapperDAL<TN_ER_ITEM_POUNDEntity>>().GetList(new { CN_N_SYNC = sync });
        }
 
        public TN_ER_ITEM_POUNDEntity GetByTrayCode(string trayCode, string poundNo)
        {
            var data = BLLCreator.Create<DapperBLL<TN_ER_ITEM_POUNDEntity>>().GetSingleEntity(new { CN_S_TRAY_CODE = trayCode, CN_S_POUND_NO = poundNo });
            return data;
        }
 
        #endregion
 
        #region UPDATE
 
        public OperateResult UpdateSyncState(string poundNo, int syncState, IDbTransaction trans)
        {
            var result = BLLCreator.Create<DapperBLL<TN_ER_ITEM_POUNDEntity>>().Update(new { CN_N_SYNC = syncState }, new { CN_S_POUND_NO = poundNo });
            return result;
        }
 
        public OperateResult Update(string taskNo, int sync, LogPara logPara = null)
        {
            var result = DALCreator.Create<DapperDAL<TN_ER_ITEM_POUNDEntity>>().Update(new { CN_N_SYNC = sync }, new { CN_S_TASK_NO = taskNo });
            if (logPara != null) Log.Detail(logPara, "更新WMS中的小磅单" + result.Describe());
            return result;
        }
 
        public OperateResult UpdateWeightAndQty(string poundNo, string trayCode, decimal trayWeight, decimal qty, IDbTransaction trans, LogPara logPara = null)
        {
            if (logPara == null) logPara = LogType.LogPara("更新小磅单重量和数量");
            return DALCreator.Create<DapperDAL<TN_ER_ITEM_POUNDEntity>>().Update(new { CN_F_WEIGHT = trayWeight, CN_F_QTY = qty }, new { CN_S_POUND_NO = poundNo, CN_S_TRAY_CODE = trayCode });
        }
 
        #endregion
 
        #region ADD
 
        /// <summary>
        /// 添加小磅单
        /// </summary>
        /// <param name="trayCode"></param>
        /// <param name="trayWeight"></param>
        /// <param name="logPara"></param>
        /// <returns></returns>
        public OperateResult Add(string trayCode, decimal trayWeight, string taskNo, IDbTransaction trans, LogPara logPara = null)
        {
            if (logPara == null) logPara = LogType.LogPara("添加小磅单");
            var trayItems = BLLCreator.Create<TN_WM_B_TRAY_ITEM_RELBLL>().GetByTrayCode(trayCode);
            if (trayItems.Count() == 0) return OperateResult.Error("未找到当前托盘" + trayCode + "的物料!");
 
            var trayInfo = BLLCreator.Create<DapperBLL<TN_WM_B_TRAY_INFOEntity>>().GetSingleEntity(new { CN_S_TRAY_CODE = trayCode });
            var itemPounds = new List<TN_ER_ITEM_POUNDEntity>();
 
            //小磅单号
            var postData = "{\"appCode\":\"" + Constants.appCode + "\",\"ruleName\":\"" + Constants.Rule_ItemPound + "\",\"orgId\":\"0\",\"orgFlag\":\"\"}";
            var itemPoundNo = WebApiManager.HttpAutoBom_Post("api/BillRule/GenBillNo", postData);
 
            //流水号
            postData = "{\"appCode\":\"" + Constants.appCode + "\",\"ruleName\":\"" + Constants.Rule_SerialNum + "\",\"orgId\":\"0\",\"orgFlag\":\"\"}";
            var serialNum = WebApiManager.HttpAutoBom_Post("api/BillRule/GenBillNo", postData);
            if (serialNum.Length > 3)
            {
                serialNum = serialNum.Substring(3, serialNum.Length - 3);
            }
            var lotNo = DateTime.Now.ToString("yyyyMMdd") + "02" + serialNum;
 
            foreach (var trayItem in trayItems)
            {
                itemPounds.Add(new TN_ER_ITEM_POUNDEntity
                {
                    CN_GUID = Guid.NewGuid().ToString(),
                    CN_S_POUND_NO = trayItem.CN_S_FIGURE_NO,
                    CN_S_OP_NO = itemPoundNo,
                    CN_S_ITEM_CODE = trayItem.CN_S_ITEM_CODE,
                    CN_S_ITEM_NAME = trayItem.CN_S_ITEM_NAME,
                    CN_S_ITEM_SPEC = trayItem.CN_S_MODEL,
                    CN_S_STOCK_CODE = trayItem.CN_S_STOCK_CODE,
                    CN_F_WEIGHT = trayWeight,
                    CN_F_QTY = trayItem.CN_F_QUANTITY,
                    CN_DT_WEIGHT = DateTime.Now,
                    CN_S_LOT_NO = lotNo,
                    CN_DT_OPERATION = DateTime.Now,
                    CN_F_TRAY_WEIGHT = trayInfo.CN_F_GROSSWEIGHT,
                    CN_T_CREATE = DateTime.Now,
                    CN_N_SYNC = -1,
                    CN_S_TASK_NO = taskNo,
                    CN_DT_CREATE = DateTime.Now,
                    CN_S_TRAY_CODE = trayCode
                });
            }
            return DALCreator.Create<DapperDAL<TN_ER_ITEM_POUNDEntity>>().AddRange(itemPounds, trans);
        }
 
        #endregion
 
        #region DELETE
 
        public OperateResult Delete(string taskNo, LogPara logPara = null)
        {
            var result = DALCreator.Create<DapperDAL<TN_ER_ITEM_POUNDEntity>>().Delete(new { CN_N_SYNC = -1, CN_S_TASK_NO = taskNo });
            if (logPara != null) Log.Detail(logPara, "任务取消,删除WMS中的小磅单" + result.Describe());
            return result;
        }
 
        #endregion
    }
}