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
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
using HH.WMS.Common;
using HH.WMS.DAL;
using HH.WMS.DAL.InStock;
using HH.WMS.Entitys;
using HH.WMS.Entitys.Basic;
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.Interface
{
    public class InfOMSRequest : DapperBaseBLL
    {
        #region WMS到货单审核调用OMS入库确认接口发送确认指令
        /// <summary>
        /// WMS到货单审核调用OMS入库确认接口发送确认指令
        /// </summary>
        /// <param name="opArrivalNoList">到货单号</param>
        /// <returns></returns>
        public OperateResult ArrivalDoOmsConfirm(List<string> opArrivalNoList)
        {
            OperateResult oresult = new OperateResult() { Success = true };
            try
            {
                QimenStockInConfirmEntity InConfirmEntity = new QimenStockInConfirmEntity();
                //  qstcF.entryOrder.
 
                foreach (string ArrivalNo in opArrivalNoList)
                {
                    DataTable dt = CreateDAL<TN_WM_ARRIVALDAL>().GetArrivalOmsConfirmData(ArrivalNo);
                    if (dt.Rows.Count == 0) continue;
 
                    List<orderLines> orderList = new List<orderLines>();
                    entryOrder entryOrderEntity = new entryOrder()
                    {
                        entryOrderCode = dt.Rows[0]["CN_S_OP_NO"].ToString(),         //入库单号
                        purchaseOrderCode = dt.Rows[0]["CN_S_FROM_NO"].ToString(),    //采购订单号(WMS系统:上游来源业务号)
                        ownerCode = dt.Rows[0]["CN_S_OWNER"].ToString(),              //货主
                        warehouseCode = dt.Rows[0]["CN_S_STOCK_CODE"].ToString(),     //仓库编码
                        outBizCode = dt.Rows[0]["CN_GUID"].ToString(),                //外部业务编码,讲究唯一性
                        status = dt.Rows[0]["CN_S_STATE"].ToString()                  //状态
                    };
 
                    for (int i = 0; i < dt.Rows.Count; i++)
                    {
                        orderLines orderEntity = new orderLines()
                        {
                            ownerCode = dt.Rows[0]["CN_S_OWNER"].ToString(),          //货主
                            itemCode = dt.Rows[i]["CN_S_ITEM_CODE"].ToString(),       //物料编码
                            itemName = dt.Rows[i]["CN_S_ITEM_NAME"].ToString(),       //物料名称
                            planQty = int.Parse(decimal.Parse(dt.Rows[i]["PLANQTY"].ToString()).ToString("0")),    //订单总数量
                            actualQty = int.Parse(decimal.Parse(dt.Rows[i]["ACTUALQTY"].ToString()).ToString("0")) //实收数量(WMS系统:本次到货数)
                        };
                        orderList.Add(orderEntity);
                    }
                    InConfirmEntity.entryOrder = entryOrderEntity;
                    InConfirmEntity.orderLines = orderList;
 
                    string postData = JsonConvert.SerializeObject(InConfirmEntity);
                    string resultEntity = WebApiManager.HttpOms_Post("api/PurchaseService/UpdateAccArriveNum", postData);
                    if (!string.IsNullOrEmpty(resultEntity))
                    {
                        oresult.Success = false;
                        oresult.Msg = "UpdateAccArriveNum接口未调通!";
                        return oresult;
                    }
 
 
                    TN_WMS_REQ_LOGEntity ril = new TN_WMS_REQ_LOGEntity()
                    {
                        CN_GUID = System.Guid.NewGuid().ToString().ToUpper(),
                        CN_S_INTERFACE = "ArrivalDoOmsConfirm",
                        CN_S_INTERFACE_NAME = "WMS到货单审核调用OMS入库确认接口发送确认指令",
                        CN_S_REQUEST = postData,
                        CN_S_RESPONSE = resultEntity,
                        CN_T_CREATE = DateTime.Now
                    };
 
                    CreateDAL<DapperDAL<TN_WMS_REQ_LOGEntity>>().Add(ril);
                    QiMenInConfirmResponse qir = JsonConvert.DeserializeObject<QiMenInConfirmResponse>(resultEntity);
 
                    if (qir.flag == "failure")
                    {
                        oresult.Success = false;
                        oresult.Msg = qir.message;
                        return oresult;
                    }
                }
 
            }
            catch (Exception ex)
            {
                oresult.Success = false;
                oresult.Msg = ex.Message.ToString();
                Log.Info("WMS入库确认调用OMS接口发送确认指令报错!!!", oresult.Msg);
                return oresult;
            }
            return oresult;
        }
        #endregion
 
        #region WMS到货单反审核调用OMS接口发送反审指令
        /// <summary>
        /// WMS到货单反审核调用OMS接口发送反审指令
        /// </summary>
        /// <param name="opArrivalNoList">到货单号</param>
        /// <returns></returns>
        public OperateResult ReArrivalDoOmsConfirm(List<string> opArrivalNoList)
        {
            OperateResult oresult = new OperateResult();
            try
            {
                WmsReAuditToOmsEntity ReAuditToOmsEntity = new WmsReAuditToOmsEntity();
                //  qstcF.entryOrder.
 
                foreach (string ArrivalNo in opArrivalNoList)
                {
                    DataTable dt = CreateDAL<TN_WM_ARRIVALDAL>().GetArrivalOmsConfirmData(ArrivalNo);
                    if (dt.Rows.Count == 0) continue;
                    List<InOrderList> inorderList = new List<InOrderList>();
                    for (int i = 0; i < dt.Rows.Count; i++)
                    {
                        InOrderList inorderEntity = new InOrderList()
                        {
                            purchaseOrderCode = dt.Rows[i]["CN_S_FROM_NO"].ToString(),          //采购单
                            itemCode = dt.Rows[i]["CN_S_ITEM_CODE"].ToString(),                //物料编码
                            rowNum = int.Parse(string.IsNullOrEmpty(dt.Rows[i]["CN_N_FROM_ROW_NO"].ToString()) ? "0" : dt.Rows[i]["CN_N_FROM_ROW_NO"].ToString()),//采购单行号
                            Nums = decimal.Parse(string.IsNullOrEmpty(dt.Rows[i]["ACTUALQTY"].ToString()) ? "0" : dt.Rows[i]["ACTUALQTY"].ToString())           //到货数量
                        };
                        inorderList.Add(inorderEntity);
                    }
                    ReAuditToOmsEntity.InOrderList = inorderList;
 
                    string postData = JsonConvert.SerializeObject(ReAuditToOmsEntity.InOrderList);
                    string resultEntity = WebApiManager.HttpOms_Post("api/PurchaseService/UpdateAccArriveNumDesc", postData);
                    if (!string.IsNullOrEmpty(resultEntity))
                    {
                        oresult.Success = false;
                        oresult.Msg = "UpdateAccArriveNumDesc接口未调通!";
                        return oresult;
                    }
 
                    QiMenInConfirmResponse qir = JsonConvert.DeserializeObject<QiMenInConfirmResponse>(resultEntity);
 
                    TN_WMS_REQ_LOGEntity ril = new TN_WMS_REQ_LOGEntity()
                    {
                        CN_GUID = System.Guid.NewGuid().ToString().ToUpper(),
                        CN_S_INTERFACE = "ArrivalDoOmsConfirm",
                        CN_S_INTERFACE_NAME = "WMS入库确认调用OMS接口发送反审核指令",
                        CN_S_REQUEST = postData,
                        CN_S_RESPONSE = resultEntity,
                        CN_T_CREATE = DateTime.Now
                    };
                    CreateDAL<DapperDAL<TN_WMS_REQ_LOGEntity>>().Add(ril);
 
                    if (qir.flag == "failure")
                    {
                        oresult.Success = false;
                        oresult.Msg = qir.message;
                        return oresult;
                    }
                }
            }
            catch (Exception ex)
            {
                oresult.Success = false;
                oresult.Msg = ex.Message.ToString();
                Log.Info("WMS入库确认调用OMS接口发送反审核指令报错!!!", oresult.Msg);
                return oresult;
            }
            return oresult;
        }
        #endregion
 
        #region WMS检验单提交调用OMS接口更新采购订单待检验数量
        /// <summary>
        /// WMS检验单提交调用OMS接口更新采购订单待检验数量
        /// </summary>
        /// <param name="InspectNoList">检验单号</param>
        /// <returns></returns>
        public OperateResult InspectUpdateCheckResult(List<string> InspectNoList)
        {
            OperateResult oresult = new OperateResult();
 
            List<OmsCheckResultEntity> CheckResultlist = new List<OmsCheckResultEntity>();
            try
            {
                foreach (string opinspectNo in InspectNoList)
                {
                    OmsCheckResultEntity CheckResult = new OmsCheckResultEntity();
                    DataTable dt = CreateDAL<TN_WM_INSPECTDAL>().GetOmsCheckResultData(opinspectNo);
                    if (dt.Rows.Count == 0) continue;
                    if (dt.Rows[0]["CN_S_OP_TYPE"].ToString() == "退库入库") continue;//业务类型:退库入库,检验单提交时无需调用OMS
 
                    List<Inspects> inspectList = new List<Inspects>();
                    for (int i = 0; i < dt.Rows.Count; i++)
                    {
                        Inspects inspect = new Inspects();
                        inspect.CN_S_OP_NO = dt.Rows[i]["CN_S_FROM_NO"].ToString();
                        inspect.CN_N_ROW = dt.Rows[i]["CN_N_ROW_NO"].ToString();
                        inspect.CN_S_ITEM_CODE = dt.Rows[i]["CN_S_ITEM_CODE"].ToString();
                        inspect.CN_S_CHECK_QTY = int.Parse(decimal.Parse(dt.Rows[i]["CN_F_QUANTITY"].ToString()).ToString("0"));
                        inspect.CN_S_REGULAR_QTY = int.Parse(decimal.Parse(dt.Rows[i]["CN_F_QUALIFIED"].ToString()).ToString("0"));
                        inspect.CN_S_NREG_QTY = int.Parse(decimal.Parse(dt.Rows[i]["CN_F_UNQUALIFIED"].ToString()).ToString("0"));
 
                        inspectList.Add(inspect);
                    }
                    CheckResult.CN_S_INSPECT_NO = opinspectNo;
                    CheckResult.InspectList = inspectList;
 
                    CheckResultlist.Add(CheckResult);
                }
                if (CheckResultlist.Count > 0)
                {
                    string postOmsData = JsonConvert.SerializeObject(CheckResultlist);
                    string resultEntity = WebApiManager.HttpOms_Post("api/PurchaseService/UpdateCheckResult", postOmsData);
                    if (!string.IsNullOrEmpty(resultEntity))
                    {
                        oresult.Success = false;
                        oresult.Msg = "UpdateCheckResult接口未调通!";
                        return oresult;
                    }
 
                    OmsCheckResultResponse qir = JsonConvert.DeserializeObject<OmsCheckResultResponse>(resultEntity);
                    TN_WMS_REQ_LOGEntity ril = new TN_WMS_REQ_LOGEntity()
                    {
                        CN_GUID = System.Guid.NewGuid().ToString().ToUpper(),
                        CN_S_INTERFACE = "InspectUpdateCheckResult",
                        CN_S_INTERFACE_NAME = "WMS调用OMS更新待检验数量接口发送指令",
                        CN_S_REQUEST = postOmsData,
                        CN_S_RESPONSE = resultEntity,
                        CN_T_CREATE = DateTime.Now
                    };
                    CreateDAL<DapperDAL<TN_WMS_REQ_LOGEntity>>().Add(ril);
 
                    if (qir.Success)
                    {
                        oresult.Success = false;
                        oresult.Msg = qir.ErrorMes;
                        return oresult;
                    }
                }
                else
                {
                    Log.Info("WMS检验单提交调用OMS接口更新采购订单待检验数量报错!!!", "没组织到数据");
                    oresult.Success = true;
                    oresult.Msg = "没组织到数据";
                    return oresult;
                }
            }
            catch (Exception ex)
            {
                oresult.Success = false;
                oresult.Msg = ex.Message.ToString();
                Log.Info("WMS检验单提交调用OMS接口更新采购订单待检验数量报错!!!", oresult.Msg);
                return oresult;
            }
            return oresult;
        }
        #endregion
 
        #region WMS调用OMS删除入库单发送删除指令
        public OperateResult InspectUpdateCheckResultDesc(string opNo)
        {
            OperateResult oresult = new OperateResult();
 
            //拼接调用OMS参数,删除入库单需要发送OMS指令
            List<OmsCheckResultEntity> CheckResultlist = new List<OmsCheckResultEntity>();
            try
            {
                OmsCheckResultEntity CheckResult = new OmsCheckResultEntity();
                DataTable dtDeleteIn = CreateDAL<TN_WM_INCREASE_INVENTORYDAL>().GetDeleteInOmsModel(opNo);
                if (dtDeleteIn.Rows.Count == 0)
                {
                    oresult.Success = false;
                    oresult.Msg = "未获取到入库单实体!";
                    return oresult;
                }
 
                List<Inspects> inspectList = new List<Inspects>();
                for (int i = 0; i < dtDeleteIn.Rows.Count; i++)
                {
                    Inspects inspect = new Inspects();
                    inspect.CN_S_OP_NO = dtDeleteIn.Rows[0]["CN_S_FROM_NO"].ToString();
                    inspect.CN_S_ITEM_CODE = dtDeleteIn.Rows[i]["CN_S_ITEM_CODE"].ToString();
                    inspect.CN_S_CHECK_QTY = int.Parse(decimal.Parse(dtDeleteIn.Rows[i]["CN_F_QUANTITY"].ToString()).ToString("0"));
                    inspect.CN_S_REGULAR_QTY = int.Parse(decimal.Parse(dtDeleteIn.Rows[i]["CN_F_QUALIFIED"].ToString()).ToString("0"));
                    inspect.CN_S_NREG_QTY = int.Parse(decimal.Parse(dtDeleteIn.Rows[i]["CN_F_UNQUALIFIED"].ToString()).ToString("0"));
 
                    inspectList.Add(inspect);
                }
                CheckResult.CN_S_INSPECT_NO = dtDeleteIn.Rows[0]["CN_S_INSPECT_NO"].ToString();
                CheckResult.InspectList = inspectList;
 
                CheckResultlist.Add(CheckResult);
 
                string postOmsData = JsonConvert.SerializeObject(CheckResultlist);
                string resultEntity = WebApiManager.HttpOms_Post("api/PurchaseService/UpdateCheckResultDesc", postOmsData);
                if (!string.IsNullOrEmpty(resultEntity))
                {
                    oresult.Success = false;
                    oresult.Msg = "UpdateCheckResultDesc接口未调通!";
                    return oresult;
                }
 
                OmsCheckResultResponse qir = JsonConvert.DeserializeObject<OmsCheckResultResponse>(resultEntity);
                TN_WMS_REQ_LOGEntity ril = new TN_WMS_REQ_LOGEntity()
                {
                    CN_GUID = System.Guid.NewGuid().ToString().ToUpper(),
                    CN_S_INTERFACE = "Increase-Delete",
                    CN_S_INTERFACE_NAME = "WMS调用OMS删除入库单发送删除指令",
                    CN_S_REQUEST = postOmsData,
                    CN_S_RESPONSE = resultEntity,
                    CN_T_CREATE = DateTime.Now
                };
                CreateDAL<DapperDAL<TN_WMS_REQ_LOGEntity>>().Add(ril);
 
                if (!qir.Success)
                {
                    oresult.Success = false;
                    oresult.Msg = "调用删除入库单失败!";
                    return oresult;
                }
            }
            catch (Exception ex)
            {
                oresult.Success = false;
                oresult.Msg = ex.Message.ToString();
                Log.Info("WMS调用OMS删除入库单发送删除指令报错!!!", oresult.Msg);
                return oresult;
            }
            return oresult;
        }
        #endregion
    }
}