using JSMachine.WMS.Common; using JSMachine.WMS.Infrastructure.Helper; using JSMachine.WMS.RPC.ErpRPC.Dto.Out; using JSMachine.WMS.RPC.RcsRPC.Dto; using JSMachine.WMS.RPC.RcsRPC.Dto.In; using JSMachine.WMS.RPC.RcsRPC.IService; using Newtonsoft.Json; using RestSharp; namespace JSMachine.WMS.RPC.RcsRPC.Service { /// /// RCS HTTP RPC 客户端,封装任务创建和取消接口调用及统一错误转换。 /// public class RcsService: IRcsService { private static readonly string rcsUrl = Global.AppSettings.RcsConfig.RcsUrl; private static readonly string createTaskUrl = Global.AppSettings.RcsConfig.CreateTaskUrl; private static readonly string cancelTaskUrl = Global.AppSettings.RcsConfig.CancelTaskUrl; /// /// 创建任务 /// /// /// /// 外部接口返回码为 1000 时转换为本地成功码 200。 public async Task> CreateTask(CreateTaskParam createTaskParam) { var result = new ApiReturnResult(); try { var url = rcsUrl + createTaskUrl; var jsonParam = new CreateTaskParam { modelProcessCode = createTaskParam.modelProcessCode, priority = createTaskParam.priority, fromSystem = createTaskParam.fromSystem, orderId = createTaskParam.orderId, }; jsonParam.taskOrderDetail = new TaskOrderDetailDto { taskPath = createTaskParam.taskOrderDetail.taskPath, shelfNumber = createTaskParam.taskOrderDetail.shelfNumber, }; string resStr = await HttpRequestHelper.RequestByJson(url, Method.POST, JsonConvert.SerializeObject(jsonParam)); if (string.IsNullOrEmpty(resStr)) { var msg = $"调用Rcs创建任务接口失败(CreateTask)"; LogHelper.Error(msg); result.ErrorMsg = msg; return result; } var apiResult = JsonConvert.DeserializeObject(resStr); if (apiResult.code != 1000) { var msg = $"创建任务失败(CreateTask): {apiResult.desc}"; LogHelper.Error(msg); result.ErrorMsg = msg; return result; } result.ResultCode = "200"; } catch (Exception ex) { var msg = $"创建任务异常(CreateTask):: {ex.Message} \n {ex.StackTrace}"; LogHelper.Error(msg); result.ErrorMsg = msg; } return result; } /// /// 向 RCS 批量提交任务取消请求。 /// /// 待取消的 RCS 任务参数。 /// 外部接口成功时返回本地成功码,否则携带错误信息。 public async Task> CancelTask(List cancelTaskParams) { var result = new ApiReturnResult(); try { var url = rcsUrl + cancelTaskUrl; var jsonParam = new List(); foreach (var item in cancelTaskParams) { jsonParam.Add(item); } string resStr = await HttpRequestHelper.RequestByJson(url, Method.POST, JsonConvert.SerializeObject(jsonParam)); if (string.IsNullOrEmpty(resStr)) { var msg = $"调用Rcs取消任务接口失败(CancelTask)"; LogHelper.Error(msg); result.ErrorMsg = msg; return result; } var apiResult = JsonConvert.DeserializeObject(resStr); if (apiResult.code != 1000) { var msg = $"取消任务失败(CancelTask): {apiResult.desc}"; LogHelper.Error(msg); result.ErrorMsg = msg; return result; } result.ResultCode = "200"; } catch (Exception ex) { var msg = $"取消任务异常(CancelTask):: {ex.Message} \n {ex.StackTrace}"; LogHelper.Error(msg); result.ErrorMsg = msg; } return result; } } }