Files
ww-jst/wmsjst/JSMachine.WMS.RPC/ErpRPC/Service/IBS/IBSPaperStorageService.cs
T
2026-09-02 16:31:50 +08:00

324 lines
13 KiB
C#

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.BusinessParam;
using JSMachine.WMS.RPC.ErpRPC.Dto.In.XRBusinessResult;
using JSMachine.WMS.RPC.ErpRPC.Dto.Out;
using JSMachine.WMS.RPC.ErpRPC.Dto.Out.BusinessResult;
using JSMachine.WMS.RPC.ErpRPC.Dto.Out.IBSBusinessResult;
using JSMachine.WMS.RPC.ErpRPC.Dto.Out.XRBusinessResult;
using JSMachine.WMS.RPC.ErpRPC.IService;
using Newtonsoft.Json;
namespace JSMachine.WMS.RPC.ErpRPC.Service.IBS
{
[ErpTypeAttribute(ErpType.IBS)]
public class IBSPaperStorageService : IPaperStorageService
{
private static readonly string IbsUrl = Global.AppSettings.ErpConfig.ErpUrl;
private static readonly string QueryByPaperLabelUrl = Global.AppSettings.ErpConfig.QueryByPaperLabelUrl;
private static readonly string PaperStockOutUrl = Global.AppSettings.ErpConfig.PaperStockOutUrl;
private static readonly string QueryByPaperWidthAndCodeUrl = Global.AppSettings.ErpConfig.QueryByPaperWidthAndCodeUrl;
private static readonly string RePaperStockInUrl = Global.AppSettings.ErpConfig.RePaperStockInUrl;
private static readonly Dictionary<string, string> header = new Dictionary<string, string>
{
{ "AppId", Global.AppSettings.ErpConfig.AppId },
{ "AppKey", Global.AppSettings.ErpConfig.AppKey }
};
/// <summary>
/// 新增纸卷领用记录(原纸出库)
/// </summary>
/// <param name="paperReceiptRecordParam"></param>
/// <returns></returns>
public async Task<PaperReceiptRecordAddResult> AddPaperReceiptRecord(PaperReceiptRecordAddParam paperReceiptRecordParam)
{
try
{
var url = IbsUrl + PaperStockOutUrl;
var parameters = new Dictionary<string, string>
{
{ "PaperLabel", paperReceiptRecordParam.Barcode }
};
var resStr = await HttpRequestHelper.Post(url, parameters, header);
if (resStr == null)
{
LogHelper.Error($"IBS原纸出库(PaperStockOut)失败");
return null;
}
var ibsResult = JsonConvert.DeserializeObject<IbsApiResult<IbsResultDto>>(resStr);
if (ibsResult == null || !ibsResult.Data.State)
return null;
return new PaperReceiptRecordAddResult();
}
catch (Exception ex)
{
LogHelper.Error($"IBS原纸出库(PaperStockOut)失败: {ex.Message} \n {ex.StackTrace}");
return null;
}
}
/// <summary>
/// 新增纸卷领用记录(原纸出库)
/// </summary>
/// <param name="paperReceiptRecordParam"></param>
/// <returns></returns>
public async Task<ApiResult<PaperReceiptRecordAddResult>> AddPaperReceiptRecordSource(PaperReceiptRecordAddParam paperReceiptRecordParam)
{
var ibsResult = new IbsApiResult<IbsResultDto>();
try
{
var url = IbsUrl + PaperStockOutUrl;
var parameters = new Dictionary<string, string>
{
{ "PaperLabel", paperReceiptRecordParam.Barcode }
};
var resStr = await HttpRequestHelper.Post(url, parameters, header);
if (resStr == null)
{
LogHelper.Error($"IBS原纸出库(PaperStockOut)失败");
return null;
}
ibsResult = JsonConvert.DeserializeObject<IbsApiResult<IbsResultDto>>(resStr);
}
catch (Exception ex)
{
LogHelper.Error($"IBS原纸出库(PaperStockOut)失败: {ex.Message} \n {ex.StackTrace}");
}
ApiResult<PaperReceiptRecordAddResult> apiResult = new()
{
ResultCode = ibsResult != null && ibsResult.Data.State ? "200" : "500",
ErrorMsg = ibsResult == null ? "" : ibsResult.Data.Messages
};
return apiResult;
}
/// <summary>
/// 新增纸卷退库记录(入库)
/// </summary>
/// <param name="paperReturnAddParam"></param>
/// <returns></returns>
/// <exception cref="NotImplementedException"></exception>
public async Task<PaperReturnAddResult> AddPaperReturn(PaperReturnAddParam paperReturnAddParam)
{
try
{
var url = IbsUrl + RePaperStockInUrl;
var parameters = new Dictionary<string, string>
{
{ "PaperLabel", paperReturnAddParam.Barcode },
{ "Weight", paperReturnAddParam.ReturnQty.ToString() },
{ "Meters", paperReturnAddParam.ReturnMeter.ToString() }
};
var resStr = await HttpRequestHelper.Post(url, parameters, header);
if (resStr == null)
{
LogHelper.Error($"IBS残卷回库(RePaperStockIn)失败");
return null;
}
var ibsResult = JsonConvert.DeserializeObject<IbsApiResult<IbsResultDto>>(resStr);
return ibsResult == null || !ibsResult.Data.State ? null : new PaperReturnAddResult();
}
catch (Exception ex)
{
LogHelper.Error($"IBS残卷回库(RePaperStockIn)失败: {ex.Message} \n {ex.StackTrace}");
return null;
}
}
/// <summary>
/// 纸卷退库记录新增
/// 返回原生的接口调用信息
/// </summary>
/// <param name="paperReturnAddParam"></param>
/// <returns></returns>
public async Task<ApiResult<PaperReturnAddResult>> AddPaperReturnSource(PaperReturnAddParam paperReturnAddParam)
{
var ibsResult = new IbsApiResult<IbsResultDto>();
try
{
var url = IbsUrl + RePaperStockInUrl;
var parameters = new Dictionary<string, string>
{
{ "PaperLabel", paperReturnAddParam.Barcode },
{ "Weight", paperReturnAddParam.ReturnQty.ToString() },
{ "Meters", paperReturnAddParam.ReturnMeter.ToString() }
};
var resStr = await HttpRequestHelper.Post(url, parameters, header);
if (resStr == null)
{
LogHelper.Error($"IBS残卷回库(RePaperStockIn)失败");
return null;
}
ibsResult = JsonConvert.DeserializeObject<IbsApiResult<IbsResultDto>>(resStr);
}
catch (Exception ex)
{
LogHelper.Error($"IBS残卷回库(RePaperStockIn)失败: {ex.Message} \n {ex.StackTrace}");
}
ApiResult<PaperReturnAddResult> apiResult = new()
{
ResultCode = ibsResult != null && ibsResult.Data != null && ibsResult.Data.State ? "200" : "500",
ErrorMsg = ibsResult != null && ibsResult.Data != null ? ibsResult.Data.Messages : ""
};
return apiResult;
}
public Task<bool> DelPaperReceiptRecord(PaperReceiptRecordDelParam paperReceiptRecordDelParam)
{
throw new NotImplementedException();
}
public Task<bool> DelPaperReturn(PaperReturnDelParam paperReturnDelParam)
{
throw new NotImplementedException();
}
/// <summary>
/// 纸卷库存按条码查询(获取某卷纸的库存信息)
/// </summary>
/// <param name="barcode"></param>
/// <returns></returns>
public async Task<PaperStorageResult> QueryByBarcode(string barcode)
{
var ibsResult = new IbsApiResult<PaperBaseInfoDto>();
try
{
var url = IbsUrl + QueryByPaperLabelUrl + barcode;
var resStr = await HttpRequestHelper.Get(url, header);
if (resStr == null)
{
LogHelper.Error($"IBS原纸信息,按原纸卷标查询(GetPaperMessage)出错");
return null;
}
ibsResult = JsonConvert.DeserializeObject<IbsApiResult<PaperBaseInfoDto>>(resStr);
}
catch (Exception ex)
{
LogHelper.Error($"IBS原纸信息,按原纸卷标查询(GetPaperMessage)出错: {ex.Message} \n {ex.StackTrace}");
}
if (ibsResult?.Data == null)
{
return null;
}
PaperStorageResult paperStorageResult = new()
{
Maker = ibsResult.Data.MakerName,
ActualQty = ibsResult.Data.InWeight.ToString(),
StockMeter = ibsResult.Data.Meters.ToString(),
Paper = ibsResult.Data.PaperCode,
GPerM2 = ibsResult.Data.PaperUnitWeight?.ToString(),
PaperWidth = ibsResult.Data.PaperWidth.ToString(),
Barcode = ibsResult.Data.PaperLabel,
SuppShortName = ibsResult.Data.Phonetic,
Location = ibsResult.Data.StockHouseCode,
LocSub = ibsResult.Data.LocationMark,
ObjID = ibsResult.Data.ID.ToString("N"),
};
return paperStorageResult;
}
/// <summary>
/// 原纸库存,按门幅、纸质编码查询
/// </summary>
/// <param name="param"></param>
/// <returns></returns>
/// <exception cref="NotImplementedException"></exception>
public async Task<List<PaperStockQueryResult>> QueryByPaperWidthAndCode(PaperPreparationQueryParam param)
{
var ibsResult = new IbsApiResult<List<PaperBaseInfoDto>>();
try
{
var url = IbsUrl + QueryByPaperWidthAndCodeUrl + "?paperWidth=" + param.PaperWidth + "&paperCode=" + param.Paper.Replace("-", "");
var resStr = await HttpRequestHelper.Get(url, header);
if (resStr == null)
{
LogHelper.Error($"IBS原纸库存,按门幅、纸质编码查询(GetPaperMessage)出错");
return null;
}
ibsResult = JsonConvert.DeserializeObject<IbsApiResult<List<PaperBaseInfoDto>>>(resStr);
}
catch (Exception ex)
{
LogHelper.Error($"IBS原纸库存,按门幅、纸质编码查询(GetPaperMessage)出错: {ex.Message} \n {ex.StackTrace}");
}
if (ibsResult?.Data == null)
{
return null;
}
var paperStorageResultList = new List<PaperStockQueryResult>();
foreach (PaperBaseInfoDto item in ibsResult.Data)
{
paperStorageResultList.Add(new PaperStockQueryResult
{
Paper = item.PaperCode,
Barcode = item.PaperLabel,
PaperWidth = item.PaperWidth.ToString(),
StockMeter = item.Meters == 0m ? "" : Math.Round(item.Meters, 2).ToString(),
ActualQty = item.InWeight == 0 ? "" : item.InWeight.ToString(),
Location = item.StockHouseCode,
LocSub = item.LocationMark,
GPerM2 = item.PaperUnitWeight?.ToString(),
SuppShortName = item.Phonetic,
Maker = item.Phonetic,
ObjID = item.ID.ToString("N"),
});
}
return paperStorageResultList;
}
public Task<List<PaperStorageResult>> RollNewQueryByTime(PaperStorageQueryParam param)
{
throw new NotImplementedException();
}
/// <summary>
/// PDA扫合格证码获取物料信息
/// </summary>
/// <returns></returns>
public async Task<XRResultDto> GetMateriaInfo(string barCode)
{
throw new NotImplementedException();
}
/// <summary>
/// 生产入库
/// </summary>
/// <returns></returns>
public async Task<bool> AddProduceIn(ErpProduceInParam erpMateriaInDto)
{
throw new NotImplementedException();
}
/// <summary>
/// 生产退库
/// </summary>
/// <param name="erpProduceOutParam"></param>
/// <returns></returns>
public async Task<bool> AddProduceOut(ErpProduceOutParam erpProduceOutParam)
{
throw new NotImplementedException();
}
/// <summary>
/// 销售出库
/// </summary>
/// <param name="erpSaleOutParam"></param>
/// <returns></returns>
public async Task<bool> AddSaleOut(ErpSaleOutParam erpSaleOutParam)
{
throw new NotImplementedException();
}
}
}