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
}
}