HH.WCS.Mobox3.pinggao.csproj | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
api/ApibackModel.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
api/WmsSapController.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
api/WmsSpaHelper.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
api/ZSCM2_CXPZ.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
models/MaterialVoucher.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
models/SapRoot.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
models/TN_Distribution_CNTR.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
models/TN_Outbound_Order.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
HH.WCS.Mobox3.pinggao.csproj
@@ -172,6 +172,7 @@ <Compile Include="api\WmsSpaHelper.cs" /> <Compile Include="api\ZCCM_NC.cs" /> <Compile Include="api\ZSCM2_CBZX.cs" /> <Compile Include="api\ZSCM2_CXPZ.cs" /> <Compile Include="api\ZSCM2_SCFLJHW.cs" /> <Compile Include="App_Start\SwaggerControllerDescProvider.cs" /> <Compile Include="core\WMSCore.cs" /> api/ApibackModel.cs
@@ -177,6 +177,56 @@ } #endregion #region 通用冲销回调入参 public class ReturnTYBcak { public class ITEM { /// <summary> /// 唯一标识 /// </summary> public string YWLPZBH { get; set; } /// <summary> /// 物料凭证号 /// </summary> public string YWLPZND { get; set; } /// <summary> /// 物料凭年度 /// </summary> public string YWLPZHXM { get; set; } public string WLPZBH { get; set; } public string WLPZND { get; set; } /// <summary> /// 返回结果标识(0成功或者1失败)字符长度1 /// </summary> public string WLPZHXM { get; set; } public int MSGCODE { get; set; } /// <summary> /// 失败原因或者成功信息字符长度255 /// </summary> public string MSGDESP { get; set; } } public class ROOT { /// <summary> /// /// </summary> public List<ITEM> ITEM { get; set; } } public class Root { /// <summary> /// /// </summary> public ROOT ROOT { get; set; } } } #endregion #region 内采入库审核完成回调入参 public class NcRkDto { public class HEAD @@ -423,7 +473,7 @@ /// <summary> /// /// </summary> public HEAD HEAD { get; set; } public List<HEAD> HEAD { get; set; } } public class Root api/WmsSapController.cs
@@ -115,7 +115,7 @@ /// <returns></returns> [HttpPost] public SimpleResult MaterReceiveXmlData([FromBody] MaterDto.Root xmlData) public WLReturnRoot.Root MaterReceiveXmlData([FromBody] MaterDto.Root xmlData) { #region xml数据接收转数组 @@ -135,7 +135,7 @@ #endregion #region 外采入库业务流程 SimpleResult simpleResult = WmsSpaHelper.Mater_In(xmlData); WLReturnRoot.Root simpleResult = WmsSpaHelper.Mater_In(xmlData); //接收返回参数 生成sap对接文档返回格式 //var json = WmsSpaHelper.GetJsonResult(simpleResult.WLPZBH, simpleResult.resultCode.ToString(), simpleResult.resultMsg); @@ -148,6 +148,8 @@ // Content = new StringContent(xml, Encoding.UTF8, "application/xml") //}; //return response; var json = JsonConvert.SerializeObject(simpleResult); return simpleResult; #endregion } api/WmsSpaHelper.cs
@@ -821,17 +821,28 @@ /// </summary> /// <param name="model"></param> /// <returns></returns> internal static SimpleResult Mater_In(MaterDto.Root model) internal static WLReturnRoot.Root Mater_In(MaterDto.Root model) { var db = new SqlHelper<object>().GetInstance(); var result = new SimpleResult(); result.resultMsg = "成功"; try var response = new WLReturnRoot.Root { ROOT = new WLReturnRoot.ROOT { ITEM = new List<WLReturnRoot.ITEM> { } } }; db.BeginTran(); List<TN_Material> list = new List<TN_Material>(); List<WLReturnRoot.ITEM> list = new List<WLReturnRoot.ITEM>(); foreach (var item in model.ROOT.ITEM) { try { var result = new WLReturnRoot.ITEM(); var materlist = db.Queryable<TN_Material>().Where(it => it.S_ITEM_CODE == item.WLBM).First(); if (materlist == null) { @@ -849,20 +860,54 @@ tN_Material.S_CPZ = item.CPZ; tN_Material.S_CPZMS = item.CPZMS; tN_Material.S_ITEM_NAME = item.VTEXT; list.Add(tN_Material); db.Insertable<TN_Material>(tN_Material).ExecuteCommand(); result.MSGDESP = "成功"; result.MSGCODE = 0; result.GCBM = item.GCBM; result.WLBM = item.WLBM; list.Add(result); } else { materlist.S_ITEM_CODE = item.WLBM; materlist.S_GCBM = item.GCBM; materlist.S_WLZBM = item.WLZBM; materlist.S_WLZMS = item.WLZMS; materlist.S_WLLX = item.WLLX; materlist.S_WLMS = item.WLMS; materlist.S_WLCMS = item.WLCMS; materlist.S_DWBM = item.DWBM; materlist.S_DWMS = item.DWMS; materlist.S_JBM = item.JBM; materlist.S_CPZ = item.CPZ; materlist.S_CPZMS = item.CPZMS; materlist.S_ITEM_NAME = item.VTEXT; db.Updateable<TN_Material>(materlist).ExecuteCommand(); result.MSGDESP = "成功"; result.MSGCODE = 0; result.GCBM = item.GCBM; result.WLBM = item.WLBM; list.Add(result); } db.Insertable<TN_Material>(list).ExecuteCommand(); db.CommitTran(); } catch (Exception e) { var result = new WLReturnRoot.ITEM(); result.MSGDESP = e.Message; result.MSGCODE = 1; result.GCBM = item.GCBM; result.WLBM = item.WLBM; list.Add(result); db.RollbackTran(); throw; } return result; } response.ROOT.ITEM = list; //db.Insertable<TN_Material>(list).ExecuteCommand(); db.CommitTran(); return response; } @@ -1749,7 +1794,7 @@ S_START_AREA = locinfo.S_AREA_CODE, S_START_WH = locinfo.S_WH_CODE, S_END_LOC = model.start, //S_BS_NO = model.arrival_no, S_BS_NO = model.MaterList[0].arrival_no, N_TYPE = 1, S_TYPE = WMSTask.GetTypeStr(1), S_OP_DEF_CODE = "", @@ -1838,7 +1883,8 @@ var startinfo = db.Queryable<Location>().Where(it => it.S_CODE == start).First(); //出库单详情 var po = db.Queryable<TN_Outbound_Order>().Includes(s => s.Details).Where(a => a.S_NO == arrival_no).First(); //分拣单 //var popp = db.Queryable<TN_Distribution_CNTR>().Where(a => a.S_BS_NO == arrival_no&&a.S_SORT_TYPE=="未分类" && a.N_B_STATE == 2).First(); //回参物料信息 List<OutboundRecord> records = new List<OutboundRecord>(); @@ -2253,13 +2299,19 @@ //添加凭证记录表 result.resultMsg = data.ROOT.ITEM.MSGDESP; result.resultCode = data.ROOT.ITEM.MSGCODE; foreach (var item in MaterList) { MaterialVoucher materialVoucher = new MaterialVoucher(); materialVoucher.S_NO = po.S_NO; materialVoucher.S_TYPE = po.S_OUT_TYPE; materialVoucher.S_WLBM = item.item_code; materialVoucher.S_WLH = item.N_ROW_NO; materialVoucher.S_WLPZBH = data.ROOT.ITEM?.WLPZBH; materialVoucher.S_WLPZND = data.ROOT.ITEM?.WLPZND; materialVoucher.STATUS = 0; db.Insertable<MaterialVoucher>(materialVoucher).ExecuteCommand(); } #endregion db.CommitTran(); @@ -2298,6 +2350,13 @@ var startinfo = db.Queryable<Location>().Where(it => it.S_CODE == start).First(); //出库单详情 var po = db.Queryable<TN_Outbound_Order>().Includes(s => s.Details).Where(a => a.S_NO == arrival_no).First(); string GZRQ = ""; if (po.BUDAT != null) { GZRQ = DateTime.Parse(po.BUDAT.ToString()).ToString("yyyyMMdd"); } //来源冲销凭证对应的物料凭证信息 //var poIn = db.Queryable<TN_Inbound_Order>().Includes(s => s.Details).Where(a => a.S_NO == po.S_BS_NO).First(); //根据入库查看凭证编号信息 @@ -2307,71 +2366,102 @@ { ROOT = new CXCkBackDto.ROOT { HEAD = new CXCkBackDto.HEAD HEAD = new List<CXCkBackDto.HEAD> { WLPZ = po.S_WLPZ, WLPZNF = po.S_WLPZNF, WLPZXM = MaterList[0].N_ROW_NO, GZRQ = "2025-03-20", SRRQ = "2025-03-19", GZRY = "过账人员姓名" //GZRQ = GZRQ, //SRRQ = PZZDRQ, //WLPZ = po.S_WLPZ, //WLPZNF = po.S_WLPZNF, //WLPZXM = MaterList[0].N_ROW_NO, //GZRY = po.UNAME } } }; //回参物料信息 //List<OutboundRecord> records = new List<OutboundRecord>(); //foreach (var item in MaterList) //{ List<CXCkBackDto.HEAD> listhead = new List<CXCkBackDto.HEAD>(); foreach (var item in po.Details) { CXCkBackDto.HEAD hEAD = new CXCkBackDto.HEAD(); hEAD.GZRQ = GZRQ; hEAD.SRRQ = DateTime.Now.ToString("yyyyMMdd"); hEAD.WLPZ = po.S_NO; hEAD.WLPZNF = po.S_WLPZND; hEAD.WLPZXM = item.N_ROW_NO; hEAD.GZRY = po.UNAME; listhead.Add(hEAD); } myRoot.ROOT.HEAD = listhead; // db.BeginTran(); // //出库记录 // var pz = db.Queryable<MaterialVoucher>().Where(a => a.S_NO == arrival_no).First(); // OutboundRecord outboundRecord = new OutboundRecord(); // outboundRecord.S_WLPZBH = pz.S_WLPZBH; // outboundRecord.S_WLPZND = pz.S_WLPZND; // outboundRecord.S_NO = arrival_no; // outboundRecord.S_WLBM = item.item_code; // outboundRecord.S_SL = item.qty; // outboundRecord.S_CNTR_CODE = cntr_code; // records.Add(outboundRecord); //} //db.Insertable<OutboundRecord>(records).ExecuteCommand(); #region wms-sap回调 //类转json var json = JsonConvert.SerializeObject(myRoot.ROOT); //json转xml string xml = JsonConvert.DeserializeXmlNode(json, "ROOT").OuterXml; LogHelper.Info($"冲销出库回调xml数据{xml}"); // 创建 StringContent 并指定媒体类型为 "text/xml" HttpContent content = new StringContent(xml, Encoding.UTF8, "application/xml"); string url = Settings.WCSSeverUrl + "/api/WmsSap/cesReceiveXmlData"; string responseXml = ""; using (HttpClient client = new HttpClient()) { // 发送 POST 请求并接收响应 HttpResponseMessage responsess = await client.PostAsync(url, content); responseXml = await responsess.Content.ReadAsStringAsync(); } ZSCM2_CXPZ service = new ZSCM2_CXPZ(); // service.Credentials = new NetworkCredential("CONN_RFC", "Init.1234"); // 准备请求参数 ZfmScm2CxpzMm001 request = new ZfmScm2CxpzMm001(); request.Input = "<?xml version=\"1.0\" encoding=\"utf-8\" ?>" + xml; LogHelper.Info($"通用冲销SAP回调"); // 调用Web Service ZfmScm2CxpzMm001Response responses = service.ZfmScm2CxpzMm001(request); // 处理响应 LogHelper.Info("通用冲销SAP返回结果: " + responses.Output); XmlDocument xmlDoc = new XmlDocument(); xmlDoc.LoadXml(responseXml.ToString()); xmlDoc.LoadXml(responses.Output.ToString()); JObject jsonObject = JsonConvert.DeserializeObject<JObject>(JsonConvert.SerializeXmlNode(xmlDoc)); var data = JsonConvert.DeserializeObject<ReturnWcBcak.Root>(jsonObject.ToString()); var data = JsonConvert.DeserializeObject<ReturnTYBcak.Root>(jsonObject.ToString()); var resmeg = ""; int rescode = 0; //添加凭证记录表 result.resultMsg = data.ROOT.ITEM.MSGDESP; result.resultCode = data.ROOT.ITEM.MSGCODE; if (data!=null) { List<MaterialVoucher> materiallist = new List<MaterialVoucher>(); foreach (var item in data.ROOT.ITEM) { if (item.MSGCODE == 0) { MaterialVoucher materialVoucher = new MaterialVoucher(); materialVoucher.S_NO = po.S_NO; materialVoucher.S_TYPE = po.S_OUT_TYPE; materialVoucher.S_WLPZBH = data.ROOT.ITEM?.WLPZBH; materialVoucher.S_WLPZND = data.ROOT.ITEM?.WLPZND; materialVoucher.S_WLPZBH = item?.WLPZBH; materialVoucher.S_WLPZND = item?.WLPZND; materialVoucher.S_WLPZHXM = item?.WLPZHXM; materialVoucher.S_YWLPZBH = item?.YWLPZBH; materialVoucher.S_YWLPZND = item?.YWLPZND; materialVoucher.S_YWLPZHXM = item?.YWLPZHXM; materialVoucher.STATUS = 0; db.Insertable<MaterialVoucher>(materialVoucher).ExecuteCommand(); resmeg += item?.MSGDESP; materiallist.Add(materialVoucher); } else { rescode = 1; } } if (materiallist.Count()>0) { db.Insertable<MaterialVoucher>(materiallist).ExecuteCommand(); } } result.resultMsg = resmeg; result.resultCode = rescode; #endregion db.CommitTran(); @@ -2605,7 +2695,10 @@ try { if (MaterList.Count()<1) { throw new Exception("累计码盘数量物料数据为空"); } foreach (var item in MaterList) { var allInfolist = db.Queryable<TN_Inbound_Detail>() @@ -3867,14 +3960,14 @@ { ROOT = new CXCkBackDto.ROOT { HEAD = new CXCkBackDto.HEAD HEAD = new List<CXCkBackDto.HEAD> { WLPZ = materpz.S_WLPZ, WLPZNF = materpz.S_WLPZNF, WLPZXM = null, GZRQ = "2025-03-20", SRRQ = DateTime.Now.ToString(), GZRY = "过账人员姓名" //WLPZ = materpz.S_WLPZ, //WLPZNF = materpz.S_WLPZNF, //WLPZXM = null, //GZRQ = "2025-03-20", //SRRQ = DateTime.Now.ToString(), //GZRY = "过账人员姓名" } } }; @@ -3923,7 +4016,7 @@ } catch (Exception ex) { LogHelper.Info($"入库回调报错{ex.Message}"); LogHelper.Info($"冲销回库回调报错{ex.Message}"); db.RollbackTran(); throw; } api/ZSCM2_CXPZ.cs
New file @@ -0,0 +1,158 @@ //------------------------------------------------------------------------------ // <auto-generated> // 此代码由工具生成。 // 运行时版本:4.0.30319.42000 // // 对此文件的更改可能会导致不正确的行为,并且如果 // 重新生成代码,这些更改将会丢失。 // </auto-generated> //------------------------------------------------------------------------------ using System; using System.ComponentModel; using System.Diagnostics; using System.Web.Services; using System.Web.Services.Protocols; using System.Xml.Serialization; // // 此源代码由 wsdl 自动生成, Version=4.8.3928.0。 // /// <remarks/> // CODEGEN: 未处理命名空间“http://schemas.xmlsoap.org/ws/2004/09/policy”中的可选 WSDL 扩展元素“Policy”。 [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "4.8.3928.0")] [System.Diagnostics.DebuggerStepThroughAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] [System.Web.Services.WebServiceBindingAttribute(Name="binding", Namespace="urn:sap-com:document:sap:soap:functions:mc-style")] public partial class ZSCM2_CXPZ : System.Web.Services.Protocols.SoapHttpClientProtocol { private System.Threading.SendOrPostCallback ZfmScm2CxpzMm001OperationCompleted; /// <remarks/> public ZSCM2_CXPZ() { this.Url = "http://10.89.33.217:8000/sap/bc/srt/rfc/sap/zscm2_cxpz/110/zscm2_cxpz/bin" + "ding"; } /// <remarks/> public event ZfmScm2CxpzMm001CompletedEventHandler ZfmScm2CxpzMm001Completed; /// <remarks/> [System.Web.Services.Protocols.SoapDocumentMethodAttribute("", Use=System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle=System.Web.Services.Protocols.SoapParameterStyle.Bare)] [return: System.Xml.Serialization.XmlElementAttribute("ZfmScm2CxpzMm001Response", Namespace="urn:sap-com:document:sap:soap:functions:mc-style")] public ZfmScm2CxpzMm001Response ZfmScm2CxpzMm001([System.Xml.Serialization.XmlElementAttribute("ZfmScm2CxpzMm001", Namespace="urn:sap-com:document:sap:soap:functions:mc-style")] ZfmScm2CxpzMm001 ZfmScm2CxpzMm0011) { object[] results = this.Invoke("ZfmScm2CxpzMm001", new object[] { ZfmScm2CxpzMm0011}); return ((ZfmScm2CxpzMm001Response)(results[0])); } /// <remarks/> public System.IAsyncResult BeginZfmScm2CxpzMm001(ZfmScm2CxpzMm001 ZfmScm2CxpzMm0011, System.AsyncCallback callback, object asyncState) { return this.BeginInvoke("ZfmScm2CxpzMm001", new object[] { ZfmScm2CxpzMm0011}, callback, asyncState); } /// <remarks/> public ZfmScm2CxpzMm001Response EndZfmScm2CxpzMm001(System.IAsyncResult asyncResult) { object[] results = this.EndInvoke(asyncResult); return ((ZfmScm2CxpzMm001Response)(results[0])); } /// <remarks/> public void ZfmScm2CxpzMm001Async(ZfmScm2CxpzMm001 ZfmScm2CxpzMm0011) { this.ZfmScm2CxpzMm001Async(ZfmScm2CxpzMm0011, null); } /// <remarks/> public void ZfmScm2CxpzMm001Async(ZfmScm2CxpzMm001 ZfmScm2CxpzMm0011, object userState) { if ((this.ZfmScm2CxpzMm001OperationCompleted == null)) { this.ZfmScm2CxpzMm001OperationCompleted = new System.Threading.SendOrPostCallback(this.OnZfmScm2CxpzMm001OperationCompleted); } this.InvokeAsync("ZfmScm2CxpzMm001", new object[] { ZfmScm2CxpzMm0011}, this.ZfmScm2CxpzMm001OperationCompleted, userState); } private void OnZfmScm2CxpzMm001OperationCompleted(object arg) { if ((this.ZfmScm2CxpzMm001Completed != null)) { System.Web.Services.Protocols.InvokeCompletedEventArgs invokeArgs = ((System.Web.Services.Protocols.InvokeCompletedEventArgs)(arg)); this.ZfmScm2CxpzMm001Completed(this, new ZfmScm2CxpzMm001CompletedEventArgs(invokeArgs.Results, invokeArgs.Error, invokeArgs.Cancelled, invokeArgs.UserState)); } } /// <remarks/> public new void CancelAsync(object userState) { base.CancelAsync(userState); } } /// <remarks/> [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "4.8.3928.0")] [System.SerializableAttribute()] [System.Diagnostics.DebuggerStepThroughAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] [System.Xml.Serialization.XmlTypeAttribute(AnonymousType=true, Namespace="urn:sap-com:document:sap:soap:functions:mc-style")] public partial class ZfmScm2CxpzMm001 { private string inputField; /// <remarks/> [System.Xml.Serialization.XmlElementAttribute(Form=System.Xml.Schema.XmlSchemaForm.Unqualified)] public string Input { get { return this.inputField; } set { this.inputField = value; } } } /// <remarks/> [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "4.8.3928.0")] [System.SerializableAttribute()] [System.Diagnostics.DebuggerStepThroughAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] [System.Xml.Serialization.XmlTypeAttribute(AnonymousType=true, Namespace="urn:sap-com:document:sap:soap:functions:mc-style")] public partial class ZfmScm2CxpzMm001Response { private string outputField; /// <remarks/> [System.Xml.Serialization.XmlElementAttribute(Form=System.Xml.Schema.XmlSchemaForm.Unqualified)] public string Output { get { return this.outputField; } set { this.outputField = value; } } } /// <remarks/> [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "4.8.3928.0")] public delegate void ZfmScm2CxpzMm001CompletedEventHandler(object sender, ZfmScm2CxpzMm001CompletedEventArgs e); /// <remarks/> [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "4.8.3928.0")] [System.Diagnostics.DebuggerStepThroughAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] public partial class ZfmScm2CxpzMm001CompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs { private object[] results; internal ZfmScm2CxpzMm001CompletedEventArgs(object[] results, System.Exception exception, bool cancelled, object userState) : base(exception, cancelled, userState) { this.results = results; } /// <remarks/> public ZfmScm2CxpzMm001Response Result { get { this.RaiseExceptionIfNecessary(); return ((ZfmScm2CxpzMm001Response)(this.results[0])); } } } models/MaterialVoucher.cs
@@ -16,11 +16,17 @@ /// </summary> public string S_NO { get; set; } public string S_TYPE { get; set; } public string S_WLBM { get; set; } public string S_WLH { get; set; } /// <summary> /// 物料编码 /// </summary> public string S_WLPZBH { get; set; } public string S_WLPZND { get; set; } public string S_WLPZHXM { get; set; } public string S_YWLPZBH { get; set; } public string S_YWLPZND { get; set; } public string S_YWLPZHXM { get; set; } /// <summary> /// 0有效 1冲销 /// </summary> models/SapRoot.cs
@@ -244,6 +244,52 @@ } } #endregion #region 物料收货回参 /// <summary> /// 物料收货回参 /// </summary> public class WLReturnRoot { public class ITEM { /// <summary> /// 物料凭证号 /// </summary> public string GCBM { get; set; } public string WLBM { get; set; } /// <summary> /// 返回结果标识(0成功或者1失败)字符长 /// </summary> public int MSGCODE { get; set; } /// <summary> /// 失败原因或者成功信息字符长度255 /// </summary> public string MSGDESP { get; set; } } public class ROOT { /// <summary> /// /// </summary> public List<ITEM> ITEM { get; set; } } public class Root { /// <summary> /// /// </summary> public ROOT ROOT { get; set; } } } #endregion #region 领料单回参 public class LLDReturnRoot { models/TN_Distribution_CNTR.cs
@@ -56,6 +56,7 @@ /// 来源业务编码 /// </summary> public string S_BS_NO { get; set; } public string S_SORT_TYPE { get; set; } /// <summary> /// 自动生成作业 /// </summary> models/TN_Outbound_Order.cs
@@ -20,7 +20,7 @@ /// <summary> /// 年份 /// </summary> public string S_WLPZNF { get; set; } //public string S_WLPZNF { get; set; } public string S_WLPZHXM { get; set; } public string S_WLPZ { get; set; } public string S_WLPZND { get; set; }