using JSMachine.WMS.Common; using JSMachine.WMS.Infrastructure.Attributes; using JSMachine.WMS.Infrastructure.Enums; using JSMachine.WMS.Infrastructure.Helper; using JSMachine.WMS.RPC.ErpRPC.Dto.In.XRBusinessResult; using JSMachine.WMS.RPC.ErpRPC.Dto.Out.XRBusinessResult; using JSMachine.WMS.RPC.ErpRPC.IService; using Newtonsoft.Json; using RestSharp; namespace JSMachine.WMS.RPC.ErpRPC.Service.XinRong { [ErpTypeAttribute(ErpType.XinRong)] public class XinRongPaperStorageService : IPaperStorageService { private static readonly string xrUrl = Global.AppSettings.ErpConfig.ErpUrl; private static readonly string userkey = Global.AppSettings.ErpConfig.Userkey; private static readonly string queryMateriaInforUrl = Global.AppSettings.ErpConfig.QueryMateriaInforUrl; private static readonly string produceInUrl = Global.AppSettings.ErpConfig.ProduceInUrl; private static readonly string produceOutUrl = Global.AppSettings.ErpConfig.ProduceOutUrl; private static readonly string saleOutUrl = Global.AppSettings.ErpConfig.SaleOutUrl; /// /// PDA扫合格证码获取物料信息 /// /// /// public async Task GetMateriaInfo(string barCode) { var result = new XRResultDto(); try { string url = xrUrl + queryMateriaInforUrl; var jsonParam = new { barCode = barCode, user_key = userkey }; string resStr = await HttpRequestHelper.RequestByJson(url, Method.POST, JsonConvert.SerializeObject(jsonParam), 15000); if (string.IsNullOrEmpty(resStr)) { LogHelper.Error($"PDA扫合格证码获取物料信息(GetMateriaInfo)失败"); return null; } var apiResultDto = JsonConvert.DeserializeObject>(resStr); result = JsonConvert.DeserializeObject(apiResultDto.result); if (!result.success) { LogHelper.Error($"PDA扫合格证码获取物料信息(GetMateriaInfo)失败: {result.errors}"); return null; } } catch (Exception ex) { LogHelper.Error($"PDA扫合格证码获取物料信息(GetMateriaInfo)失败: {ex.Message} \n {ex.StackTrace}"); } return result; } /// /// 生产入库 /// /// /// public async Task AddProduceIn(ErpProduceInParam erpProduceInParam) { var result = new XRResultDto { success = false, status = 500 }; try { string url = xrUrl + produceInUrl; var jsonParam = new ErpProduceInParam { barCode = erpProduceInParam.barCode, materiaName = erpProduceInParam.materiaName, materiaBatch = erpProduceInParam.materiaBatch, materiaCode = erpProduceInParam.materiaCode, materiaNum = erpProduceInParam.materiaNum, user_key = userkey }; string resStr = await HttpRequestHelper.RequestByJson(url, Method.POST, JsonConvert.SerializeObject(jsonParam), 30000); if (string.IsNullOrEmpty(resStr)) { result.errors = $"调用Erp生产入库(AddProduceIn)接口失败:{url}"; return result; } var apiResultDto = JsonConvert.DeserializeObject>(resStr); result = JsonConvert.DeserializeObject(apiResultDto.result); if (result.success) { result.status = 200; result.success = true; return result; } else { result.errors = $"生产入库(AddProduceIn)接口返回失败:" + result.errors; return result; } } catch (Exception ex) { result.errors = $"生产入库(AddProduceIn)异常: {ex.Message} \n {ex.StackTrace}"; return result; } } /// /// 生产退库 /// /// /// public async Task AddProduceOut(ErpProduceOutParam erpProduceOutParam) { var result = new XRResultDto { success = false, status = 500 }; try { string url = xrUrl + produceOutUrl; var jsonParam = new ErpProduceOutParam { produceReturnCode = erpProduceOutParam.produceReturnCode, barCode = erpProduceOutParam.barCode, materiaName = erpProduceOutParam.materiaName, materiaBatch = erpProduceOutParam.materiaBatch, materiaCode = erpProduceOutParam.materiaCode, num = erpProduceOutParam.num, user_key = userkey }; string resStr = await HttpRequestHelper.RequestByJson(url, Method.POST, JsonConvert.SerializeObject(jsonParam), 30000); if (string.IsNullOrEmpty(resStr)) { result.errors = $"调用Erp生产退库(AddProduceOut)接口失败:{url}"; return result; } result = JsonConvert.DeserializeObject(resStr); if (result.success) { result.status = 200; result.success = true; return result; } else { result.errors = $"生产退库(AddProduceOut)接口返回失败:" + result.errors; return result; } } catch (Exception ex) { result.errors = $"生产退库(AddProduceOut)异常: {ex.Message} \n {ex.StackTrace}"; return result; } } /// /// 销售出库 /// /// /// public async Task AddSaleOut(StockOutParam erpSaleOutParam) { var result = new XRResultDto { success = false, status = 500 }; try { string url = xrUrl + saleOutUrl; var jsonParam = new StockOutParam { saleNo = erpSaleOutParam.saleNo, barCode = erpSaleOutParam.barCode, materiaCode = erpSaleOutParam.materiaCode, num = erpSaleOutParam.num, materiaBatch = erpSaleOutParam.materiaBatch, user_key = userkey }; string resStr = await HttpRequestHelper.RequestByJson(url, Method.POST, JsonConvert.SerializeObject(jsonParam), 30000); if (string.IsNullOrEmpty(resStr)) { result.errors = $"调用Erp销售出库(AddSaleOut)接口失败:{url}"; return result; } var apiResultDto = JsonConvert.DeserializeObject>(resStr); result = JsonConvert.DeserializeObject(apiResultDto.result); if (result.success) { result.status = 200; result.success = true; return result; } else { result.errors = $"销售出库(AddSaleOut)接口返回失败:" + result.errors; return result; } } catch (Exception ex) { result.errors = $"销售出库(AddSaleOut)异常: {ex.Message} \n {ex.StackTrace}"; return result; } } } }