|
|
@ -1,10 +1,13 @@ |
|
|
|
using System; |
|
|
|
using System.Collections.Generic; |
|
|
|
using System.Linq; |
|
|
|
using System.Net.Http.Headers; |
|
|
|
using System.Net.Http; |
|
|
|
using System.Text; |
|
|
|
using System.Threading.Tasks; |
|
|
|
using Microsoft.AspNetCore.Authorization; |
|
|
|
using Microsoft.AspNetCore.Mvc; |
|
|
|
using MyNamespace; |
|
|
|
using Volo.Abp; |
|
|
|
using Volo.Abp.Application.Services; |
|
|
|
using Volo.Abp.Uow; |
|
|
@ -16,12 +19,137 @@ using Win_in.Sfs.Shared.Domain.Shared; |
|
|
|
using Win_in.Sfs.Wms.Inventory.Application.Contracts; |
|
|
|
using Win_in.Sfs.Wms.Store.Application.Contracts; |
|
|
|
using Win_in.Sfs.Wms.Store.Domain.Shared; |
|
|
|
using Win_in.Sfs.Wms.Store.Jobs.IssueJobs.proxy; |
|
|
|
using Microsoft.Extensions.Options; |
|
|
|
using Win_in.Sfs.Wms.Store.Options; |
|
|
|
using Microsoft.Extensions.Logging; |
|
|
|
using Win_in.Sfs.Shared.Application.Contracts; |
|
|
|
|
|
|
|
namespace Win_in.Sfs.Wms.Store.Jobs.IssueJobs.AgvServices; |
|
|
|
[AllowAnonymous] |
|
|
|
[Route($"{StoreConsts.RootPath}agv-job-in")] |
|
|
|
public class AgvJobInputService : ApplicationService |
|
|
|
public class AgvJobOutputService : ApplicationService, IAgvJobOutputService |
|
|
|
{ |
|
|
|
private readonly UnitOfWorkManager _unitOfWorkManager; |
|
|
|
private readonly IHttpClientFactory _httpClientFactory; |
|
|
|
private readonly IOptions<AgvOptions> _options; |
|
|
|
private readonly ILogger<AgvJobOutputService> _logger; |
|
|
|
|
|
|
|
public AgvJobOutputService( |
|
|
|
UnitOfWorkManager unitOfWorkManager, |
|
|
|
IHttpClientFactory httpClientFactory, |
|
|
|
IOptions<AgvOptions> options, |
|
|
|
ILogger<AgvJobOutputService> logger |
|
|
|
|
|
|
|
) |
|
|
|
{ |
|
|
|
_logger = logger; |
|
|
|
_unitOfWorkManager = unitOfWorkManager; |
|
|
|
_httpClientFactory = httpClientFactory; |
|
|
|
_options = options; |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
public async Task<AgvResultObject> OutPutTaskAsync<T, TDetail>(T entity) where T : SfsJobDTOBase<TDetail> |
|
|
|
where TDetail : SfsDetailDTOBase |
|
|
|
{ |
|
|
|
if (entity is CoatingIssueJobDTO) |
|
|
|
{ |
|
|
|
var coating = entity as CoatingIssueJobDTO; |
|
|
|
var first = coating.Details.FirstOrDefault(); |
|
|
|
var requst = new AgvRequest(); |
|
|
|
requst.MatCode = first.ItemCode; |
|
|
|
requst.MatQty = first.HandledToQty; |
|
|
|
requst.OrderNum = entity.Number; |
|
|
|
requst.OrderType = "1"; |
|
|
|
await OutPutTaskAsync(requst).ConfigureAwait(false); |
|
|
|
} |
|
|
|
else if (entity is AssembleIssueJobDTO) |
|
|
|
{ |
|
|
|
var assemble = entity as AssembleIssueJobDTO; |
|
|
|
var first = assemble.Details.FirstOrDefault(); |
|
|
|
var requst = new AgvRequest(); |
|
|
|
requst.MatCode = first.ItemCode; |
|
|
|
requst.MatQty = first.HandledToQty; |
|
|
|
requst.OrderNum = entity.Number; |
|
|
|
requst.OrderType = "2"; |
|
|
|
return await OutPutTaskAsync(requst).ConfigureAwait(false); |
|
|
|
} |
|
|
|
else if (entity is InjectionIssueJobDTO) |
|
|
|
{ |
|
|
|
var injection = entity as InjectionIssueJobDTO; |
|
|
|
var first = injection.Details.FirstOrDefault(); |
|
|
|
var requst = new AgvRequest(); |
|
|
|
requst.MatCode = first.ItemCode; |
|
|
|
requst.MatQty = first.HandledToQty; |
|
|
|
requst.OrderNum = entity.Number; |
|
|
|
requst.OrderType = "3"; |
|
|
|
|
|
|
|
return await OutPutTaskAsync(requst).ConfigureAwait(false); |
|
|
|
} |
|
|
|
else if (entity is KittingIssueJobDTO) |
|
|
|
{ |
|
|
|
var kitting = entity as KittingIssueJobDTO; |
|
|
|
var first = kitting.Details.FirstOrDefault(); |
|
|
|
var requst = new AgvRequest(); |
|
|
|
requst.MatCode = first.ItemCode; |
|
|
|
requst.MatQty = first.HandledToQty; |
|
|
|
requst.OrderNum = entity.Number; |
|
|
|
requst.OrderType = "4"; |
|
|
|
|
|
|
|
return await OutPutTaskAsync(requst).ConfigureAwait(false); |
|
|
|
} |
|
|
|
else if (entity is SparePartIssueJobDTO) |
|
|
|
{ |
|
|
|
var sparePart = entity as SparePartIssueJobDTO; |
|
|
|
var first = sparePart.Details.FirstOrDefault(); |
|
|
|
var requst = new AgvRequest(); |
|
|
|
requst.MatCode = first.ItemCode; |
|
|
|
requst.MatQty = first.HandledToQty; |
|
|
|
requst.OrderNum = entity.Number; |
|
|
|
requst.OrderType = "1"; |
|
|
|
|
|
|
|
await OutPutTaskAsync(requst).ConfigureAwait(false); |
|
|
|
} |
|
|
|
} |
|
|
|
[HttpPost("out-put-task")] |
|
|
|
public async Task<AgvResultObject> OutPutTaskAsync(AgvRequest request) |
|
|
|
{ |
|
|
|
var httpclient = _httpClientFactory.CreateClient(); |
|
|
|
_options.Value.Address = string.IsNullOrEmpty(_options.Value.Address) |
|
|
|
? "http://7e42682n64.goho.co:21171/" |
|
|
|
: _options.Value.Address; //测试地址
|
|
|
|
_options.Value.Token = |
|
|
|
string.IsNullOrEmpty(_options.Value.Token) ? string.Empty : _options.Value.Token; //测试token
|
|
|
|
_options.Value.UserName = |
|
|
|
string.IsNullOrEmpty(_options.Value.UserName) ? "" : _options.Value.UserName; //测试用户名
|
|
|
|
_options.Value.Password = |
|
|
|
string.IsNullOrEmpty(_options.Value.Password) ? "" : _options.Value.Password; //测试密码
|
|
|
|
_options.Value.Path = string.IsNullOrEmpty(_options.Value.Path) |
|
|
|
? "zozocnApi/custom/receiveProductionPlan" |
|
|
|
: _options.Value.Path; //测试密码
|
|
|
|
var flag = DateTime.Now.ToString("yyyyMMddHHmmss"); |
|
|
|
// _logger.LogInformation($"标志{flag}开始调用高通WMS:传递值{JsonSerializer.Serialize(main)}");
|
|
|
|
if (!string.IsNullOrEmpty(_options.Value.Token)) |
|
|
|
{ |
|
|
|
var token = _options.Value.Token; |
|
|
|
httpclient.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", token); |
|
|
|
} |
|
|
|
|
|
|
|
if (!string.IsNullOrEmpty(_options.Value.UserName) && !string.IsNullOrEmpty(_options.Value.Password)) |
|
|
|
{ |
|
|
|
var username = _options.Value.UserName; |
|
|
|
var password = _options.Value.Password; |
|
|
|
httpclient.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Basic", |
|
|
|
Convert.ToBase64String(Encoding.ASCII.GetBytes($"{username}:{password}"))); |
|
|
|
} |
|
|
|
|
|
|
|
var client = new AgvJobClient(_options.Value.Address, httpclient, _options.Value.Path); |
|
|
|
var ret = await client.PushOutTask4FWAsync(request).ConfigureAwait(false); |
|
|
|
|
|
|
|
return ret; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
} |
|
|
|