Files
ww-jst/wmsjst/JSMachine.WMS.RPC/RcsRPC/Service/RcsService.cs
T

121 lines
4.7 KiB
C#
Raw Normal View History

2026-09-02 16:31:50 +08:00
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
{
/// <summary>
/// RCS HTTP RPC 客户端,封装任务创建和取消接口调用及统一错误转换。
/// </summary>
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;
/// <summary>
/// 创建任务
/// </summary>
/// <param name="createTaskParam"></param>
/// <returns></returns>
/// <remarks>外部接口返回码为 1000 时转换为本地成功码 200。</remarks>
public async Task<ApiReturnResult<bool>> CreateTask(CreateTaskParam createTaskParam)
{
var result = new ApiReturnResult<bool>();
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<RcsApiResult>(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;
}
/// <summary>
/// 向 RCS 批量提交任务取消请求。
/// </summary>
/// <param name="cancelTaskParams">待取消的 RCS 任务参数。</param>
/// <returns>外部接口成功时返回本地成功码,否则携带错误信息。</returns>
public async Task<ApiReturnResult<bool>> CancelTask(List<CancelTaskParam> cancelTaskParams)
{
var result = new ApiReturnResult<bool>();
try
{
var url = rcsUrl + cancelTaskUrl;
var jsonParam = new List<CancelTaskParam>();
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<RcsApiResult>(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;
}
}
}