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入库确认接口发送确认指令 /// /// WMS到货单审核调用OMS入库确认接口发送确认指令 /// /// 到货单号 /// public OperateResult ArrivalDoOmsConfirm(List opArrivalNoList) { OperateResult oresult = new OperateResult() { Success = true }; try { QimenStockInConfirmEntity InConfirmEntity = new QimenStockInConfirmEntity(); // qstcF.entryOrder. foreach (string ArrivalNo in opArrivalNoList) { DataTable dt = CreateDAL().GetArrivalOmsConfirmData(ArrivalNo); if (dt.Rows.Count == 0) continue; List orderList = new List(); 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>().Add(ril); QiMenInConfirmResponse qir = JsonConvert.DeserializeObject(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接口发送反审指令 /// /// WMS到货单反审核调用OMS接口发送反审指令 /// /// 到货单号 /// public OperateResult ReArrivalDoOmsConfirm(List opArrivalNoList) { OperateResult oresult = new OperateResult(); try { WmsReAuditToOmsEntity ReAuditToOmsEntity = new WmsReAuditToOmsEntity(); // qstcF.entryOrder. foreach (string ArrivalNo in opArrivalNoList) { DataTable dt = CreateDAL().GetArrivalOmsConfirmData(ArrivalNo); if (dt.Rows.Count == 0) continue; List inorderList = new List(); 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(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>().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接口更新采购订单待检验数量 /// /// WMS检验单提交调用OMS接口更新采购订单待检验数量 /// /// 检验单号 /// public OperateResult InspectUpdateCheckResult(List InspectNoList) { OperateResult oresult = new OperateResult(); List CheckResultlist = new List(); try { foreach (string opinspectNo in InspectNoList) { OmsCheckResultEntity CheckResult = new OmsCheckResultEntity(); DataTable dt = CreateDAL().GetOmsCheckResultData(opinspectNo); if (dt.Rows.Count == 0) continue; if (dt.Rows[0]["CN_S_OP_TYPE"].ToString() == "退库入库") continue;//业务类型:退库入库,检验单提交时无需调用OMS List inspectList = new List(); 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(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>().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 CheckResultlist = new List(); try { OmsCheckResultEntity CheckResult = new OmsCheckResultEntity(); DataTable dtDeleteIn = CreateDAL().GetDeleteInOmsModel(opNo); if (dtDeleteIn.Rows.Count == 0) { oresult.Success = false; oresult.Msg = "未获取到入库单实体!"; return oresult; } List inspectList = new List(); 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(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>().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 } }