using ICS.WCF.Base; using System; using System.Collections.Generic; using System.Configuration; using System.Data; using System.Linq; using System.ServiceModel; using System.Text; using System.Threading.Tasks; using UFIDA.ISV.BFTransferInApprove; using UFIDA.ISV.BFTransferINDelete; using UFIDA.ISV.TransferInBatchApproveSRV; using UFIDA.ISV.TransferInBatchCommitSRV; using UFSoft.UBF.Service; using UFSoft.UBF.Util.Context; using www.ufida.org.EntityData; namespace UFIDA.ISV.CreateTransferINForJOB { public class CustCreateTransferINForJOB { public OperationResult CreateTransferINForJOB(List TransferInList) { #region 入口日志 StringBuilder beginstrlog = new StringBuilder(); beginstrlog.AppendLine("日志记录开始"); beginstrlog.AppendLine("*****************************************************"); foreach (TransferINHead TransferInInfo in TransferInList) { beginstrlog.AppendLine("调入单单据类型:" + TransferInInfo.DocType); beginstrlog.AppendLine("组织编码:" + TransferInInfo.OrgCode); beginstrlog.AppendLine("领料单号:" + TransferInInfo.LLCode); foreach (var line in TransferInInfo.lines) { beginstrlog.AppendLine("供应商编码:" + line.SupplierCode); beginstrlog.AppendLine("调入物料编码:" + line.ItemCode); beginstrlog.AppendLine("调入数量:" + line.TransferQTY); beginstrlog.AppendLine("调入仓库" + line.INWhCode); beginstrlog.AppendLine("调出仓库" + line.OutWhCode); } } beginstrlog.AppendLine("*****************************************************"); Appconfig.WriteLogFile(beginstrlog.ToString(), "WMSJOB自动创建调拨单"); #endregion #region 服务调用框架结构 UFIDAU9ISVTransferInISVICommonCreateTransferInSVClient client = new UFIDAU9ISVTransferInISVICommonCreateTransferInSVClient(); //服务返回结果 UFIDAU9CBOPubControllerCommonArchiveDataDTOData[] returnItems; //返回异常信息,目前还没有使用此属性 OperationResult res = new OperationResult(); UFSoft.UBF.Exceptions.MessageBase[] outMessages; long[] TransferInID; string[] splitMergeRule = null; //上下文信息 object context; //传入 参数 UFIDAU9ISVTransferInISVIC_TransferInDTOData[] TransferInfoArray; //空 string[] splitBy = new string[] { }; string UserID = ""; string WHCode = ""; long WHID = 0; StringBuilder strlog = new StringBuilder(); try { List rtnpos = new List(); if (TransferInList == null) { strlog.AppendLine("*****************************************************"); strlog.AppendLine("错误消息:传入数据不能为空"); strlog.AppendLine("*****************************************************"); Appconfig.WriteLogFile(strlog.ToString(), "WMSJOB自动创建调拨单"); res.IsSuccess = false; res.MESSAGE = "传入数据不能为空"; return res; } string OrgID = ""; string orgsql = @"select ID from Base_Organization where Code='{0}'"; orgsql = string.Format(orgsql, TransferInList[0].OrgCode); DataTable orgdt = DBhlper.Query(orgsql, Appconfig.GetU9ConnStr()); if (orgdt.Rows.Count != 0) { OrgID = orgdt.Rows[0]["ID"].ToString(); } else { strlog.AppendLine("*****************************************************"); strlog.AppendLine("错误消息:传入的组织:'" + TransferInList[0].OrgCode + "'不存在"); strlog.AppendLine("*****************************************************"); Appconfig.WriteLogFile(strlog.ToString(), "WMSJOB自动创建调拨单"); res.IsSuccess = false; res.MESSAGE = "传入的组织:'" + TransferInList[0].OrgCode + "'不存在"; return res; } #region 获取传入单据类型对应的ID string DocTypeID = ""; string doctypesql = @"select ID from InvDoc_TransInDocType where Code='{0}' AND Org='{1}'"; doctypesql = string.Format(doctypesql, TransferInList[0].DocType, OrgID); DataTable DocTypedt = DBhlper.Query(doctypesql, Appconfig.GetU9ConnStr()); if (DocTypedt.Rows.Count == 0) { strlog.AppendLine("*****************************************************"); strlog.AppendLine("错误消息:传入的单据类型:'" + TransferInList[0].DocType + "'在U9中不存在"); strlog.AppendLine("*****************************************************"); Appconfig.WriteLogFile(strlog.ToString(), "WMSJOB自动创建调拨单"); res.IsSuccess = false; res.MESSAGE = "传入的单据类型:'" + TransferInList[0].DocType + "'在U9中不存在"; return res; } else { DocTypeID = DocTypedt.Rows[0]["ID"].ToString(); } #endregion List TransferInfoList = new List(); UFIDAU9ISVTransferInISVIC_TransferInDTOData TransferInfo = new UFIDAU9ISVTransferInISVIC_TransferInDTOData(); List TransferLineInfoList = new List(); UFIDAU9ISVTransferInISVIC_TransInLineDTOData TransferLineInfo = new UFIDAU9ISVTransferInISVIC_TransInLineDTOData(); List TransferOutLineInfoList = new List(); UFIDAU9ISVTransferInISVIC_TransInSubLineDTOData TransferOutLineInfo = new UFIDAU9ISVTransferInISVIC_TransInSubLineDTOData(); foreach (TransferINHead TransferIN in TransferInList) { TransferInfo.m_docNo = TransferIN.DocNo; TransferInfo.m_transferType = 0; TransferInfo.m_transInDocType = new UFIDAU9CBOPubControllerCommonArchiveDataDTOData(); TransferInfo.m_transInDocType.m_iD = long.Parse(DocTypeID); TransferInfo.m_transInDocType.m_code = TransferIN.DocType; TransferInfo.m_transferDirection = 0; TransferInfo.m_descFlexField = new UFIDAU9BaseFlexFieldDescFlexFieldDescFlexSegmentsData(); TransferInfo.m_descFlexField.m_privateDescSeg1 = TransferIN.LLCode; foreach (TransferINBody line in TransferIN.lines) { #region 根据传入物料编码获取物料ID string ITEMID = ""; string itemsql = @"select ID from CBO_ItemMaster where Code='{0}' AND Org='{1}'"; itemsql = string.Format(itemsql, line.ItemCode, OrgID); DataTable itemdt = DBhlper.Query(itemsql, Appconfig.GetU9ConnStr()); if (itemdt.Rows.Count == 0) { strlog.AppendLine("*****************************************************"); strlog.AppendLine("错误消息:传入的物料编码:'" + line.ItemCode + "'在U9中不存在"); strlog.AppendLine("*****************************************************"); Appconfig.WriteLogFile(strlog.ToString(), "WMSJOB自动创建调拨单"); res.IsSuccess = false; res.MESSAGE = "传入的物料编码:'" + line.ItemCode + "'在U9中不存在"; return res; } else { ITEMID = itemdt.Rows[0]["ID"].ToString(); } #endregion #region 根据传入仓库获取仓库ID string INWHID = ""; string OUTWHID = ""; string whsql = @"select ID from CBO_WH where Code='{0}' AND Org='{1}'"; whsql = string.Format(whsql, line.INWhCode, OrgID); DataTable whdt = DBhlper.Query(whsql, Appconfig.GetU9ConnStr()); if (whdt.Rows.Count == 0) { strlog.AppendLine("*****************************************************"); strlog.AppendLine("错误消息:传入的调入仓库编码:'" + line.INWhCode + "'在U9中不存在"); strlog.AppendLine("*****************************************************"); Appconfig.WriteLogFile(strlog.ToString(), "WMSJOB自动创建调拨单"); res.IsSuccess = false; res.MESSAGE = "传入的调入仓库编码:'" + line.INWhCode + "'在U9中不存在"; return res; } else { INWHID = whdt.Rows[0]["ID"].ToString(); } whsql = @"select ID from CBO_WH where Code='{0}' AND Org='{1}'"; whsql = string.Format(whsql, line.OutWhCode, OrgID); whdt = DBhlper.Query(whsql, Appconfig.GetU9ConnStr()); if (whdt.Rows.Count == 0) { strlog.AppendLine("*****************************************************"); strlog.AppendLine("错误消息:传入的调出仓库编码:'" + line.OutWhCode + "'在U9中不存在"); strlog.AppendLine("*****************************************************"); Appconfig.WriteLogFile(strlog.ToString(), "WMSJOB自动创建调拨单"); res.IsSuccess = false; res.MESSAGE = "传入的调出仓库编码:'" + line.OutWhCode + "'在U9中不存在"; return res; } else { OUTWHID = whdt.Rows[0]["ID"].ToString(); } #endregion #region 根据传入供应商编码获取供应商ID if (line.SupplierCode != "") { long SupplierID = 0; string supsql = @"select ID from CBO_Supplier where Code='{0}' AND Org='{1}'"; supsql = string.Format(supsql, line.SupplierCode, OrgID); DataTable supdt = DBhlper.Query(supsql, Appconfig.GetU9ConnStr()); if (supdt.Rows.Count == 0) { strlog.AppendLine("*****************************************************"); strlog.AppendLine("错误消息:传入的供应商编码:'" + line.SupplierCode + "'在U9中不存在"); strlog.AppendLine("*****************************************************"); Appconfig.WriteLogFile(strlog.ToString(), "WMSJOB自动创建调拨单"); res.IsSuccess = false; res.MESSAGE = "传入的供应商编码:'" + line.SupplierCode + "'在U9中不存在"; return res; } } #endregion TransferLineInfo = new UFIDAU9ISVTransferInISVIC_TransInLineDTOData(); TransferLineInfo.m_costUOMQty = line.TransferQTY; TransferLineInfo.m_storeUOMQty = line.TransferQTY; TransferLineInfo.m_itemInfo = new UFIDAU9CBOSCMItemItemInfoData(); TransferLineInfo.m_itemInfo.m_itemCode = line.ItemCode; TransferLineInfo.m_itemInfo.ItemID = long.Parse(ITEMID); TransferLineInfo.m_storageType = 4; TransferLineInfo.m_transInWh = new UFIDAU9CBOPubControllerCommonArchiveDataDTOData(); TransferLineInfo.m_transInWh.m_iD = long.Parse(INWHID); TransferLineInfo.m_transInWh.m_code = line.INWhCode; TransferOutLineInfoList = new List(); TransferOutLineInfo = new UFIDAU9ISVTransferInISVIC_TransInSubLineDTOData(); TransferOutLineInfo.m_costUOMQty = line.TransferQTY; TransferOutLineInfo.m_storeUOMQty = line.TransferQTY; TransferOutLineInfo.m_storageType = 4; if (line.SupplierCode != "") { TransferOutLineInfo.m_transOutSuppInfo = new UFIDAU9CBOSCMSupplierSupplierMISCInfoData(); TransferOutLineInfo.m_transOutSuppInfo.m_code = line.SupplierCode; } TransferOutLineInfo.m_transOutWh = new UFIDAU9CBOPubControllerCommonArchiveDataDTOData(); TransferOutLineInfo.m_transOutWh.m_code = line.OutWhCode; TransferOutLineInfo.m_transOutWh.m_iD = long.Parse(OUTWHID); TransferOutLineInfoList.Add(TransferOutLineInfo); TransferLineInfo.m_transInSubLines = TransferOutLineInfoList.ToArray(); TransferLineInfoList.Add(TransferLineInfo); } TransferInfo.m_transInLines = TransferLineInfoList.ToArray(); TransferInfoList.Add(TransferInfo); } //给传入参数赋值 //pOList = SetrCVDtos(rCVInfoList); strlog.AppendLine("创建调入单"); strlog.AppendLine("*****************************************************"); long TransferInType = 0; //给上下文信息赋值 context = CreateContextObj(OrgID); (client.Endpoint.Binding as BasicHttpBinding).MaxReceivedMessageSize = int.MaxValue; (client.Endpoint.Binding as BasicHttpBinding).MaxBufferSize = int.MaxValue; //创建调入单 returnItems = client.Do(context, TransferInfoList.ToArray(), out outMessages); foreach (var returnline in returnItems) { if (returnline.m_code == null) { strlog.AppendLine("错误消息:调入单创建失败"); strlog.AppendLine("*****************************************************"); Appconfig.WriteLogFile(strlog.ToString(), "WMSJOB自动创建调拨单"); res.IsSuccess = false; res.MESSAGE = returnline.ExtensionData.ToString() ; return res; } else { strlog.AppendLine("正确消息:调入单创建成功,单号:'" + returnline.m_code + "'"); strlog.AppendLine("*****************************************************"); Appconfig.WriteLogFile(strlog.ToString(), "WMSJOB自动创建调拨单"); res.IsSuccess = true; res.LLCode = returnline.m_code; res.MESSAGE =""; return res; //TransferInBatchCommitSRV.OperationResult result = new TransferInBatchCommitSRV.OperationResult(); //CustTransferInBatchCommitSRV CommitTransferIN = new CustTransferInBatchCommitSRV(); //TransferInBatchCommitSRV.InPut commitinfo = new TransferInBatchCommitSRV.InPut(); //commitinfo.DocID = returnline.m_iD; //commitinfo.DocNo = returnline.m_code; //commitinfo.OrgCode = TransferInList[0].OrgCode; //result = CommitTransferIN.CustCommitTransferIn(commitinfo); //if (result.IsSuccess == true) //{ // //TransferInBatchApproveSRV.OperationResult approveresult = new TransferInBatchApproveSRV.OperationResult(); // //CustTransferInBatchApproveSRV ApproveTransferIN = new CustTransferInBatchApproveSRV(); // //TransferInBatchApproveSRV.InPut approveinfo = new TransferInBatchApproveSRV.InPut(); // //approveinfo.DocNo = returnline.m_code; // //approveinfo.approvedBy = "admin"; // //approveinfo.OrgCode = TransferInList[0].OrgCode; // //approveresult = ApproveTransferIN.CustApproveTransferIn(approveinfo); // //if (approveresult.IsSuccess == true) // //{ // strlog.AppendLine("正确消息:调入单创建成功,单号:'" + returnline.m_code + "'"); // strlog.AppendLine("*****************************************************"); // Appconfig.WriteLogFile(strlog.ToString(), "WMSJOB自动创建调拨单"); // return returnline.m_code; // //} // //else // //{ // // CustDeleteBFTransfer delTransferIN = new CustDeleteBFTransfer(); // // delTransferIN.CustBFTransferDelete(returnline.m_iD, OrgID); // // strlog.AppendLine("错误消息:调入单审核失败,单号:'" + returnline.m_code + "'"); // // strlog.AppendLine("*****************************************************"); // // Appconfig.WriteLogFile(strlog.ToString(), "WMSJOB自动创建调拨单"); // // return ""; // //} //} //else //{ // CustDeleteBFTransfer delTransferIN = new CustDeleteBFTransfer(); // delTransferIN.CustBFTransferDelete(returnline.m_iD, OrgID); // strlog.AppendLine("错误消息:调入单提交失败,单号:'" + returnline.m_code + "'"); // strlog.AppendLine("*****************************************************"); // Appconfig.WriteLogFile(strlog.ToString(), "WMSJOB自动创建调拨单"); // return ""; //} } } } catch (Exception ex) { StringBuilder strerrorlog = new StringBuilder(); strerrorlog.AppendLine("错误消息:" + GetExceptionMessage(ex)); strerrorlog.AppendLine("*****************************************************"); Appconfig.WriteLogFile(strerrorlog.ToString(), "WMSJOB自动创建调拨单"); res.IsSuccess = false; res.MESSAGE = GetExceptionMessage(ex); return res; } #endregion return res; } #region // public rtnInfo CreateTransferINForCRM(List TransferInList) // { // #region 入口日志 // StringBuilder beginstrlog = new StringBuilder(); // beginstrlog.AppendLine("日志记录开始"); // beginstrlog.AppendLine("*****************************************************"); // foreach (TransferINHead TransferInInfo in TransferInList) // { // beginstrlog.AppendLine("调入单单据类型:" + TransferInInfo.DocType); // beginstrlog.AppendLine("组织编码:" + TransferInInfo.OrgCode); // foreach (var line in TransferInInfo.lines) // { // beginstrlog.AppendLine("供应商编码:" + line.SupplierCode); // beginstrlog.AppendLine("调入物料编码:" + line.ItemCode); // beginstrlog.AppendLine("调入数量:" + line.TransferQTY); // beginstrlog.AppendLine("调入仓库" + line.INWhCode); // beginstrlog.AppendLine("调出仓库" + line.OutWhCode); // } // } // beginstrlog.AppendLine("*****************************************************"); // Appconfig.WriteLogFile(beginstrlog.ToString(), "CRM调用创建调拨单"); // #endregion // #region 服务调用框架结构 // UFIDAU9ISVTransferInISVICommonCreateTransferInSVClient client = new UFIDAU9ISVTransferInISVICommonCreateTransferInSVClient(); // //服务返回结果 // UFIDAU9CBOPubControllerCommonArchiveDataDTOData[] returnItems; // //返回异常信息,目前还没有使用此属性 // UFSoft.UBF.Exceptions.MessageBase[] outMessages; // long[] TransferInID; // //返回信息 // rtnInfo rtnpos = new rtnInfo(); // string[] splitMergeRule = null; // //上下文信息 // object context; // //传入 参数 // UFIDAU9ISVTransferInISVIC_TransferInDTOData[] TransferInfoArray; // //空 // string[] splitBy = new string[] { }; // string UserID = ""; // string WHCode = ""; // long WHID = 0; // StringBuilder strlog = new StringBuilder(); // try // { // if (TransferInList == null) // { // strlog.AppendLine("*****************************************************"); // strlog.AppendLine("错误消息:传入数据不能为空"); // strlog.AppendLine("*****************************************************"); // Appconfig.WriteLogFile(strlog.ToString(), "CRM调用创建调拨单"); // rtnpos.Message = "传入数据不能为空"; // return rtnpos; // } // string OrgID = ""; // string orgsql = @"select ID from Base_Organization // where Code='{0}'"; // orgsql = string.Format(orgsql, TransferInList[0].OrgCode); // DataTable orgdt = DBhlper.Query(orgsql, Appconfig.GetU9ConnStr()); // if (orgdt.Rows.Count != 0) // { // OrgID = orgdt.Rows[0]["ID"].ToString(); // } // else // { // strlog.AppendLine("*****************************************************"); // strlog.AppendLine("错误消息:传入的组织:'" + TransferInList[0].OrgCode + "'不存在"); // strlog.AppendLine("*****************************************************"); // Appconfig.WriteLogFile(strlog.ToString(), "CRM调用创建调拨单"); // rtnpos.Message = "传入的组织:'" + TransferInList[0].OrgCode + "'不存在"; // return rtnpos; // } // #region 获取传入单据类型对应的ID // string DocTypeID = ""; // string doctypesql = @"select ID from InvDoc_TransInDocType // where Code='{0}' AND Org='{1}'"; // doctypesql = string.Format(doctypesql, TransferInList[0].DocType, OrgID); // DataTable DocTypedt = DBhlper.Query(doctypesql, Appconfig.GetU9ConnStr()); // if (DocTypedt.Rows.Count == 0) // { // strlog.AppendLine("*****************************************************"); // strlog.AppendLine("错误消息:传入的单据类型:'" + TransferInList[0].DocType + "'在U9中不存在"); // strlog.AppendLine("*****************************************************"); // Appconfig.WriteLogFile(strlog.ToString(), "CRM调用创建调拨单"); // rtnpos.Message = "传入的单据类型:'" + TransferInList[0].DocType + "'在U9中不存在"; // return rtnpos; // } // else // { // DocTypeID = DocTypedt.Rows[0]["ID"].ToString(); // } // #endregion // List TransferInfoList = new List(); // UFIDAU9ISVTransferInISVIC_TransferInDTOData TransferInfo = new UFIDAU9ISVTransferInISVIC_TransferInDTOData(); // List TransferLineInfoList = new List(); // UFIDAU9ISVTransferInISVIC_TransInLineDTOData TransferLineInfo = new UFIDAU9ISVTransferInISVIC_TransInLineDTOData(); // List TransferOutLineInfoList = new List(); // UFIDAU9ISVTransferInISVIC_TransInSubLineDTOData TransferOutLineInfo = new UFIDAU9ISVTransferInISVIC_TransInSubLineDTOData(); // List TransferBinList = new List(); // UFIDAU9ISVTransferInISVIC_TransInBinDTOData TransferBin = new UFIDAU9ISVTransferInISVIC_TransInBinDTOData(); // List TransferOutBinList = new List(); // UFIDAU9ISVTransferInISVIC_TransInBinDTOData TransferOutBin = new UFIDAU9ISVTransferInISVIC_TransInBinDTOData(); // foreach (TransferINHead TransferIN in TransferInList) // { // TransferInfo.m_transferType = 0; // TransferInfo.m_transInDocType = new UFIDAU9CBOPubControllerCommonArchiveDataDTOData(); // TransferInfo.m_transInDocType.m_iD = long.Parse(DocTypeID); // TransferInfo.m_transInDocType.m_code = TransferIN.DocType; // TransferInfo.m_transferDirection = 0; // TransferInfo.m_descFlexField = new UFIDAU9BaseFlexFieldDescFlexFieldDescFlexSegmentsData(); // TransferInfo.m_descFlexField.m_pubDescSeg17 = TransferIN.LLCode; // foreach (TransferINBody line in TransferIN.lines) // { // #region 根据传入物料编码获取物料ID // string ITEMID = ""; // string itemsql = @"select ID from CBO_ItemMaster // where Code='{0}' AND Org='{1}'"; // itemsql = string.Format(itemsql, line.ItemCode, OrgID); // DataTable itemdt = DBhlper.Query(itemsql, Appconfig.GetU9ConnStr()); // if (itemdt.Rows.Count == 0) // { // strlog.AppendLine("*****************************************************"); // strlog.AppendLine("错误消息:传入的物料编码:'" + line.ItemCode + "'在U9中不存在"); // strlog.AppendLine("*****************************************************"); // Appconfig.WriteLogFile(strlog.ToString(), "CRM调用创建调拨单"); // rtnpos.Message = "传入的物料编码:'" + line.ItemCode + "'在U9中不存在"; // return rtnpos; // } // else // { // ITEMID = itemdt.Rows[0]["ID"].ToString(); // } // #endregion // #region 根据传入仓库获取仓库ID // string INWHID = ""; // string OUTWHID = ""; // string whsql = @"select ID from CBO_WH // where Code='{0}' AND Org='{1}'"; // whsql = string.Format(whsql, line.INWhCode, OrgID); // DataTable whdt = DBhlper.Query(whsql, Appconfig.GetU9ConnStr()); // if (whdt.Rows.Count == 0) // { // strlog.AppendLine("*****************************************************"); // strlog.AppendLine("错误消息:传入的调入仓库编码:'" + line.INWhCode + "'在U9中不存在"); // strlog.AppendLine("*****************************************************"); // Appconfig.WriteLogFile(strlog.ToString(), "CRM调用创建调拨单"); // rtnpos.Message = "传入的调入仓库编码:'" + line.INWhCode + "'在U9中不存在"; // return rtnpos; // } // else // { // INWHID = whdt.Rows[0]["ID"].ToString(); // } // whsql = @"select ID from CBO_WH // where Code='{0}' AND Org='{1}'"; // whsql = string.Format(whsql, line.OutWhCode, OrgID); // whdt = DBhlper.Query(whsql, Appconfig.GetU9ConnStr()); // if (whdt.Rows.Count == 0) // { // strlog.AppendLine("*****************************************************"); // strlog.AppendLine("错误消息:传入的调出仓库编码:'" + line.INWhCode + "'在U9中不存在"); // strlog.AppendLine("*****************************************************"); // Appconfig.WriteLogFile(strlog.ToString(), "CRM调用创建调拨单"); // rtnpos.Message = "传入的调出仓库编码:'" + line.INWhCode + "'在U9中不存在"; // return rtnpos; // } // else // { // OUTWHID = whdt.Rows[0]["ID"].ToString(); // } // #endregion // #region 根据传入库位及仓库ID获取库位ID // string InBinID = ""; // string OutBinID = ""; // if (line.INBinCode != "") // { // string binsql = @"select ID from CBO_Bin // where Warehouse='{0}' AND Code='{1}' AND Org='{2}'"; // binsql = string.Format(binsql, INWHID, line.INBinCode, OrgID); // DataTable bindt = DBhlper.Query(binsql, Appconfig.GetU9ConnStr()); // if (bindt.Rows.Count == 0) // { // strlog.AppendLine("*****************************************************"); // strlog.AppendLine("错误消息:传入的调入库位编码:'" + line.INBinCode + "'在U9中不存在"); // strlog.AppendLine("*****************************************************"); // Appconfig.WriteLogFile(strlog.ToString(), "CRM调用创建调拨单"); // rtnpos.Message = "传入的调入库位编码:'" + line.INBinCode + "'在U9中不存在"; // return rtnpos; // } // else // { // InBinID = bindt.Rows[0]["ID"].ToString(); // } // } // if (!string.IsNullOrWhiteSpace(line.OutBinCode)) // { // string binsql = @"select ID from CBO_Bin // where Warehouse='{0}' AND Code='{1}' AND Org='{2}'"; // binsql = string.Format(binsql, OUTWHID, line.OutBinCode, OrgID); // DataTable bindt = DBhlper.Query(binsql, Appconfig.GetU9ConnStr()); // if (bindt.Rows.Count == 0) // { // strlog.AppendLine("*****************************************************"); // strlog.AppendLine("错误消息:传入的调出库位编码:'" + line.OutBinCode + "'在U9中不存在"); // strlog.AppendLine("*****************************************************"); // Appconfig.WriteLogFile(strlog.ToString(), "CRM调用创建调拨单"); // rtnpos.Message = "传入的调出库位编码:'" + line.OutBinCode + "'在U9中不存在"; // return rtnpos; // } // else // { // OutBinID = bindt.Rows[0]["ID"].ToString(); // } // } // #endregion // #region 根据传入供应商编码获取供应商ID // if (line.SupplierCode != "") // { // long SupplierID = 0; // string supsql = @"select ID from CBO_Supplier // where Code='{0}' AND Org='{1}'"; // supsql = string.Format(supsql, line.SupplierCode, OrgID); // DataTable supdt = DBhlper.Query(supsql, Appconfig.GetU9ConnStr()); // if (supdt.Rows.Count == 0) // { // strlog.AppendLine("*****************************************************"); // strlog.AppendLine("错误消息:传入的供应商编码:'" + line.SupplierCode + "'在U9中不存在"); // strlog.AppendLine("*****************************************************"); // Appconfig.WriteLogFile(strlog.ToString(), "CRM调用创建调拨单"); // rtnpos.Message = "传入的供应商编码:'" + line.SupplierCode + "'在U9中不存在"; // return rtnpos; // } // } // #endregion // TransferLineInfo = new UFIDAU9ISVTransferInISVIC_TransInLineDTOData(); // TransferLineInfo.m_costUOMQty = line.TransferQTY; // TransferLineInfo.m_storeUOMQty = line.TransferQTY; // TransferLineInfo.m_itemInfo = new UFIDAU9CBOSCMItemItemInfoData(); // TransferLineInfo.m_itemInfo.m_itemCode = line.ItemCode; // TransferLineInfo.m_itemInfo.ItemID = long.Parse(ITEMID); // TransferLineInfo.m_storageType = 4; // TransferLineInfo.m_transInWh = new UFIDAU9CBOPubControllerCommonArchiveDataDTOData(); // TransferLineInfo.m_transInWh.m_iD = long.Parse(INWHID); // TransferLineInfo.m_transInWh.m_code = line.INWhCode; // if (InBinID != "") // { // TransferBinList = new List(); // TransferBin = new UFIDAU9ISVTransferInISVIC_TransInBinDTOData(); // TransferBin.m_binLineNo = 10; // TransferBin.m_storeUOMQty = line.TransferQTY; // TransferBin.m_binInfo = new UFIDAU9CBOSCMBinBinInfoData(); // TransferBin.m_binInfo.m_code = line.INBinCode; // TransferBin.m_binInfo.Bin = long.Parse(InBinID); // TransferBin.m_binInfo.Bin_SKey = new UFSoft.UBF.Business.BusinessEntity.EntityKey(); // TransferBin.m_binInfo.Bin_SKey.ID = long.Parse(InBinID); // TransferBinList.Add(TransferBin); // TransferLineInfo.m_transInBins = TransferBinList.ToArray(); // } // TransferOutLineInfoList = new List(); // TransferOutLineInfo = new UFIDAU9ISVTransferInISVIC_TransInSubLineDTOData(); // TransferOutLineInfo.m_costUOMQty = line.TransferQTY; // TransferOutLineInfo.m_storeUOMQty = line.TransferQTY; // TransferOutLineInfo.m_storageType = 4; // if (line.SupplierCode != "") // { // TransferOutLineInfo.m_transOutSuppInfo = new UFIDAU9CBOSCMSupplierSupplierMISCInfoData(); // TransferOutLineInfo.m_transOutSuppInfo.m_code = line.SupplierCode; // } // TransferOutLineInfo.m_transOutWh = new UFIDAU9CBOPubControllerCommonArchiveDataDTOData(); // TransferOutLineInfo.m_transOutWh.m_code = line.OutWhCode; // TransferOutLineInfo.m_transOutWh.m_iD = long.Parse(OUTWHID); // if (OutBinID != "") // { // TransferOutBinList = new List(); // TransferOutBin = new UFIDAU9ISVTransferInISVIC_TransInBinDTOData(); // TransferOutBin.m_binLineNo = 10; // TransferOutBin.m_storeUOMQty = line.TransferQTY; // TransferOutBin.m_binInfo = new UFIDAU9CBOSCMBinBinInfoData(); // TransferOutBin.m_binInfo.m_code = line.OutBinCode; // TransferOutBin.m_binInfo.Bin = long.Parse(OutBinID); // TransferOutBin.m_binInfo.Bin_SKey = new UFSoft.UBF.Business.BusinessEntity.EntityKey(); // TransferOutBin.m_binInfo.Bin_SKey.ID = long.Parse(OutBinID); // TransferOutBinList.Add(TransferOutBin); // TransferOutLineInfo.m_transInBins = TransferOutBinList.ToArray(); // } // TransferOutLineInfoList.Add(TransferOutLineInfo); // TransferLineInfo.m_transInSubLines = TransferOutLineInfoList.ToArray(); // TransferLineInfoList.Add(TransferLineInfo); // } // TransferInfo.m_transInLines = TransferLineInfoList.ToArray(); // TransferInfoList.Add(TransferInfo); // } // //给传入参数赋值 // //pOList = SetrCVDtos(rCVInfoList); // strlog.AppendLine("创建调入单"); // strlog.AppendLine("*****************************************************"); // long TransferInType = 0; // //给上下文信息赋值 // context = CreateContextObj(OrgID); // (client.Endpoint.Binding as BasicHttpBinding).MaxReceivedMessageSize = int.MaxValue; // (client.Endpoint.Binding as BasicHttpBinding).MaxBufferSize = int.MaxValue; // //创建调入单 // returnItems = client.Do(context, TransferInfoList.ToArray(), out outMessages); // foreach (var returnline in returnItems) // { // if (returnline.m_code == null) // { // strlog.AppendLine("错误消息:调入单创建失败"); // strlog.AppendLine("*****************************************************"); // Appconfig.WriteLogFile(strlog.ToString(), "CRM调用创建调拨单"); // rtnpos.Message = "调入单创建失败"; // return rtnpos; // } // else // { // TransferInBatchCommitSRV.OperationResult result = new TransferInBatchCommitSRV.OperationResult(); // CustTransferInBatchCommitSRV CommitTransferIN = new CustTransferInBatchCommitSRV(); // TransferInBatchCommitSRV.InPut commitinfo = new TransferInBatchCommitSRV.InPut(); // commitinfo.DocID = returnline.m_iD; // commitinfo.DocNo = returnline.m_code; // commitinfo.OrgCode = TransferInList[0].OrgCode; // result = CommitTransferIN.CustCommitTransferIn(commitinfo); // if (result.IsSuccess == true) // { // TransferInBatchApproveSRV.OperationResult approveresult = new TransferInBatchApproveSRV.OperationResult(); // CustTransferInBatchApproveSRV ApproveTransferIN = new CustTransferInBatchApproveSRV(); // TransferInBatchApproveSRV.InPut approveinfo = new TransferInBatchApproveSRV.InPut(); // approveinfo.DocNo = returnline.m_code; // approveinfo.approvedBy = "admin"; // approveinfo.OrgCode = TransferInList[0].OrgCode; // approveresult = ApproveTransferIN.CustApproveTransferIn(approveinfo); // if (approveresult.IsSuccess == true) // { // strlog.AppendLine("正确消息:调入单创建成功,单号:'" + returnline.m_code + "'"); // strlog.AppendLine("*****************************************************"); // Appconfig.WriteLogFile(strlog.ToString(), "CRM调用创建调拨单"); // rtnpos.Message = "调入单创建成功"; // rtnpos.DocNo = returnline.m_code; // return rtnpos; // } // else // { // CustDeleteBFTransfer delTransferIN = new CustDeleteBFTransfer(); // delTransferIN.CustBFTransferDelete(returnline.m_iD, OrgID); // strlog.AppendLine("错误消息:调入单审核失败,单号:'" + returnline.m_code + "'"); // strlog.AppendLine("*****************************************************"); // Appconfig.WriteLogFile(strlog.ToString(), "CRM调用创建调拨单"); // rtnpos.Message = "调入单审核失败"; // rtnpos.DocNo = returnline.m_code; // return rtnpos; // } // } // else // { // rtnpos.Message = "调入单提交失败,单号:'" + returnline.m_code + "'"; // return rtnpos; // } // } // } // } // catch (Exception ex) // { // StringBuilder strerrorlog = new StringBuilder(); // strerrorlog.AppendLine("错误消息:" + GetExceptionMessage(ex)); // strerrorlog.AppendLine("*****************************************************"); // Appconfig.WriteLogFile(strerrorlog.ToString(), "CRM调用创建调拨单"); // rtnpos.Message = GetExceptionMessage(ex); // return rtnpos; // } // #endregion // return rtnpos; // } #endregion #region 表头类 public class TransferINHead { private TransferINBody[] _lines; private string _DocType; private string _OrgCode; private string _DocNo; private string _LLCode; public TransferINBody[] lines { get { return _lines; } set { _lines = value; } } public string DocNo { get { return _DocNo; } set { _DocNo = value; } } public string DocType { get { return _DocType; } set { _DocType = value; } } public string OrgCode { get { return _OrgCode; } set { _OrgCode = value; } } public string LLCode { get { return _LLCode; } set { _LLCode = value; } } } #endregion public class OperationResult { /// /// 结果状态,默认值false /// public bool IsSuccess { get; set; } /// ///处理消息 /// public string MESSAGE { get; set; } /// /// 输出领料订单 /// public string LLCode { get; set; } } #region 表体类 public class TransferINBody { /// /// 数量 /// public decimal TransferQTY { get; set; } /// /// 调入仓库 /// public string INWhCode { get; set; } /// /// 调入库位 /// public string INBinCode { get; set; } /// /// 调出库位 /// public string OutBinCode { get; set; } /// /// 调出仓库 /// public string OutWhCode { get; set; } /// /// 调拨物料 /// public string ItemCode { get; set; } /// /// 供应商编码 /// public string SupplierCode { get; set; } } #endregion #region 提取异常信息 /// /// 提取异常信息 /// /// private string GetExceptionMessage(Exception ex) { string faultMessage = "未知错误,请查看ERP日志!"; System.TimeoutException timeoutEx = ex as System.TimeoutException; if (timeoutEx != null) { faultMessage = "访问服务超时,请修改配置信息!"; } else { FaultException faultEx = ex as FaultException; if (faultEx == null) { faultMessage = ex.Message; } else { ServiceException serviceEx = faultEx.Detail; if (serviceEx != null && !string.IsNullOrEmpty(serviceEx.Message) && !serviceEx.Message.Equals("fault", StringComparison.OrdinalIgnoreCase)) { // 错误信息在faultEx.Message中,请提取, // 格式为"Fault:料品不能为空,请录入\n 在....." int startIndex = serviceEx.Message.IndexOf(":"); int endIndex = serviceEx.Message.IndexOf("\n"); if (endIndex == -1) endIndex = serviceEx.Message.Length; if (endIndex > 0 && endIndex > startIndex + 1) { faultMessage = serviceEx.Message.Substring(startIndex + 1, endIndex - startIndex - 1); } else { faultMessage = serviceEx.Message; } } } } return faultMessage; } #endregion #region 给上下文信息赋值 /// /// 给上下文信息赋值 /// /// private ThreadContext CreateContextObj(string OrgID) { // 实例化应用上下文对象 ThreadContext thContext = new ThreadContext(); System.Collections.Generic.Dictionary ns = new Dictionary(); ns.Add("OrgID", OrgID); ns.Add("UserID", ConfigurationManager.AppSettings["userID"].ToString()); ns.Add("UserCode", ConfigurationManager.AppSettings["userCode"].ToString()); ns.Add("Datetime", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")); ns.Add("CultureName", ConfigurationManager.AppSettings["cultureName"].ToString()); ns.Add("EnterpriseID", ConfigurationManager.AppSettings["enterpriseID"].ToString()); ns.Add("DefaultCultureName", ConfigurationManager.AppSettings["cultureName"].ToString()); ns.Add("Support_CultureNameList", "zh-CN"); thContext.nameValueHas = ns; return thContext; } #endregion #region 时间戳方法 private DateTime TimestampToDateTime(long timestamp) { DateTime dateTimeStart = TimeZone.CurrentTimeZone.ToLocalTime(new DateTime(1970, 1, 1)); long lTime = timestamp * 10000000; TimeSpan nowTimeSpan = new TimeSpan(lTime); DateTime resultDateTime = dateTimeStart.Add(nowTimeSpan); return resultDateTime; } #endregion } #region 上下文类信息 public class contextInfo { private long _OrgID; private string _OrgCode; private long _UserID; private string _UserCode; private DateTime _Datetime; private string _CultureName; private string _EnterpriseID; /// /// 组织ID /// public long OrgID { get { return _OrgID; } set { _OrgID = value; } } /// /// 组织编码 /// public string OrgCode { get { return _OrgCode; } set { _OrgCode = value; } } /// /// 操作员ID /// public long UserID { get { return _UserID; } set { _UserID = value; } } /// /// 操作员编码 /// public string UserCode { get { return _UserCode; } set { _UserCode = value; } } /// /// 时间 /// public DateTime Datetime { get { return _Datetime; } set { _Datetime = value; } } /// /// 语言 /// public string CultureName { get { return _CultureName; } set { _CultureName = value; } } /// /// 企业ID号 /// public string EnterpriseID { get { return _EnterpriseID; } set { _EnterpriseID = value; } } public contextInfo() { CultureName = "zh-CN"; Datetime = DateTime.Now; } } #endregion #region 返回信息类 public class rtnTransferInfo { public string DocNo { get; set; } public bool IsSuccess { get; set; } public string Message { get; set; } public rtnTransferLine[] rtnLines { get; set; } } public class rtnTransferLine { public int LineNo { get; set; } } public class rtnInfo { public string DocNo { get; set; } public string Message { get; set; } } #endregion #region 表体类 //public class rCVLine //{ // /// // /// 来源采购订单 // /// // public string srcDocPONo { get; set; } // private int _srcDocPOLineNo; // private decimal _reqQty; // public string WhCode { get; set; } // /// // /// 炉号 // /// // public string FurnaceNo { get; set; } // /// // /// 数量 // /// // public decimal ReqQty // { // get { return _reqQty; } // set { _reqQty = value; } // } // /// // /// 来源采购订单行 // /// // public int srcDocPOLineNo // { // get { return _srcDocPOLineNo; } // set { _srcDocPOLineNo = value; } // } //} #endregion }