Files
ww-jst/wmsjst/JSMachine.WMS.RPC/PmsRPC/Service/ACS/AcsPaperPreparService.cs
T
2026-09-02 16:31:50 +08:00

100 lines
4.2 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
using JSMachine.WMS.Common;
using JSMachine.WMS.Infrastructure.Attributes;
using JSMachine.WMS.Infrastructure.Enums;
using JSMachine.WMS.Infrastructure.Helper;
using JSMachine.WMS.RPC.PmsRPC.Dto.In;
using JSMachine.WMS.RPC.PmsRPC.Dto.Out;
using JSMachine.WMS.RPC.PmsRPC.Enum;
using JSMachine.WMS.RPC.PmsRPC.IService;
using Newtonsoft.Json;
using RestSharp;
namespace JSMachine.WMS.RPC.PmsRPC.Service.ACS
{
[PmsTypeAttribute(PmsType.ACS)]
/// <summary>
/// ACS 系统备纸需求接口实现,将外部响应转换为按机台分类的备纸需求。
/// </summary>
public class AcsPaperPreparService : IPaperPreparService
{
private static readonly string acsUrl = "Global.AppSettings.PmsConfig.PmsUrl";
private static readonly string queryPmsOrdersUrl = "throw new NotImplementedException();";
/// <summary>
/// 处理后的备纸需求
/// </summary>
/// <param name="pageIndex"></param>
/// <param name="pageSize"></param>
/// <returns></returns>
public async Task<List<MachinePaperNeedDto>> GetMachinePaperNeeds()
{
ApiResult<PaperPreparDto[]> apiResult = await this.GetPaperPrepars(1, 10000);
PaperPreparDto[] paperPrepars = apiResult?.Data;
if (paperPrepars == null)
return null;
IEnumerable<PaperNeed> hc = paperPrepars
.Where(p => !string.IsNullOrEmpty(p.DC_PaperMass))
.Select(p => new PaperNeed { PaperMassCode = p.DC_PaperMass, Web = p.Web });
IEnumerable<PaperNeed> sc1W = paperPrepars
.Where(p => !string.IsNullOrEmpty(p.SC1_CorrPaperMass))
.Select(p => new PaperNeed { PaperMassCode = p.SC1_CorrPaperMass, Web = p.Web });
IEnumerable<PaperNeed> sc1X = paperPrepars
.Where(p => !string.IsNullOrEmpty(p.SC1_SurfPaperMass))
.Select(p => new PaperNeed { PaperMassCode = p.SC1_SurfPaperMass, Web = p.Web });
IEnumerable<PaperNeed> sc2W = paperPrepars
.Where(p => !string.IsNullOrEmpty(p.SC2_CorrPaperMass))
.Select(p => new PaperNeed { PaperMassCode = p.SC2_CorrPaperMass, Web = p.Web });
IEnumerable<PaperNeed> sc2X = paperPrepars
.Where(p => !string.IsNullOrEmpty(p.SC2_SurfPaperMass))
.Select(p => new PaperNeed { PaperMassCode = p.SC2_SurfPaperMass, Web = p.Web });
List<MachinePaperNeedDto> machinePaperNeeds = new(5)
{
new MachinePaperNeedDto {PlateType=PlateType.HC,PaperNeeds=hc.ToList()},
new MachinePaperNeedDto {PlateType=PlateType.SC1W,PaperNeeds=sc1W.ToList()},
new MachinePaperNeedDto {PlateType=PlateType.SC1X,PaperNeeds=sc1X.ToList()},
new MachinePaperNeedDto {PlateType=PlateType.SC2W,PaperNeeds=sc2W.ToList()},
new MachinePaperNeedDto {PlateType=PlateType.SC2X,PaperNeeds=sc2X.ToList()}
};
return machinePaperNeeds;
}
/// <summary>
/// 获取ACS,Token
/// </summary>
/// <returns></returns>
public async Task<string> GetACSToken()
{
throw new NotImplementedException();
}
/// <summary>
/// 获取ACS湿段+干段备注
/// </summary>
/// <param name="pageIndex"></param>
/// <param name="pageSize"></param>
/// <returns></returns>
public async Task<ApiResult<PaperPreparDto[]>> GetPaperPrepars(int pageIndex, int pageSize)
{
string url = acsUrl + queryPmsOrdersUrl;
var jsonParam = new
{
PageIndex = pageIndex,
PageSize = pageSize,
};
// 先获取访问令牌,再携带令牌调用 ACS 接口;空响应直接转换为空结果。
var token = await GetACSToken();
string resStr = await HttpRequestHelper.RequestByJson(url, Method.POST, JsonConvert.SerializeObject(jsonParam), token);
if (string.IsNullOrEmpty(resStr))
return null;
var apiResultDto = JsonConvert.DeserializeObject<ApiResult<PaperPreparDto[]>>(resStr);
return apiResultDto;
}
}
}