26 changed files with 1283 additions and 89 deletions
@ -0,0 +1,24 @@ |
|||||
|
using System; |
||||
|
using System.Collections.Generic; |
||||
|
using System.Linq; |
||||
|
using System.Text; |
||||
|
using System.Threading.Tasks; |
||||
|
|
||||
|
namespace Dy_Exchange.Z_Business |
||||
|
{ |
||||
|
public class DataExchangeInterfaceOptions |
||||
|
{ |
||||
|
//public string wmsCode = "WMS";
|
||||
|
//public string cmdStartPath = @"D:\Proc_DyNevWms\publish\start.cmd";
|
||||
|
//public string cmdClosePath1 = @"D:\Proc_DyNevWms\publish\stop.cmd";
|
||||
|
//public string cmdClosePath2 = @"D:\Proc_DyNevWms\publish\TaskKill.exe";
|
||||
|
//public string wmsUrl = "http://10.164.233.5:60085/swagger/AbpTenant/swagger.json";
|
||||
|
|
||||
|
|
||||
|
public string WmsCode { get; set; } |
||||
|
public string CmdStartPath { get; set; } |
||||
|
public string CmdClosePath1 { get; set; } |
||||
|
public string CmdClosePath2 { get; set; } |
||||
|
public string WmsUrl { get; set; } |
||||
|
} |
||||
|
} |
@ -1,26 +1,38 @@ |
|||||
{ |
{ |
||||
"App": { |
"App": { |
||||
"CorsOrigins": "http://192.168.0.146:20033", |
"CorsOrigins": "http://192.168.0.146:20033", |
||||
"Audit": { |
"Audit": { |
||||
"IsEnabled": false // 禁用审计功能 |
"IsEnabled": false // 禁用审计功能 |
||||
// 其他审计相关设置项 |
// 其他审计相关设置项 |
||||
} |
} |
||||
}, |
}, |
||||
"ConnectionStrings": { |
"ConnectionStrings": { |
||||
"Default": "Server=.;Database=Dy_FasterZ_Exchange;uid=sa;pwd=sasa;timeout=6000;Encrypt=False;", |
"Default": "Server=.;Database=Dy_FasterZ_Exchange;uid=sa;pwd=sasa;timeout=6000;Encrypt=False;", |
||||
"Dy_Exchange": "Server=dev.ccwin-in.com,13319;Database=WMS_DongYang_DataExchange_CC;uid=ccwin-in;pwd=Microsoft@2022;timeout=60000;Encrypt=False;" |
"Dy_Exchange": "Server=dev.ccwin-in.com,13319;Database=WMS_DongYang_DataExchange_CC;uid=ccwin-in;pwd=Microsoft@2022;timeout=60000;Encrypt=False;" |
||||
}, |
}, |
||||
"Redis": { |
"Redis": { |
||||
"Configuration": "127.0.0.1" |
"Configuration": "127.0.0.1" |
||||
}, |
}, |
||||
"AuthServer": { |
|
||||
"Authority": "http://192.168.1.75:60080", |
|
||||
"RequireHttpsMetadata": "false", |
|
||||
"SwaggerClientId": "Dy_Exchange_Swagger" |
"AuthServer": { |
||||
}, |
"Authority": "http://192.168.1.75:60080", |
||||
"StringEncryption": { |
"RequireHttpsMetadata": "false", |
||||
"DefaultPassPhrase": "ybgU8NieQZNjguXe" |
"SwaggerClientId": "Dy_Exchange_Swagger" |
||||
}, |
}, |
||||
"AlwaysAllowAuthorization": "true", |
"StringEncryption": { |
||||
"urls": "http://192.168.1.75:60081" |
"DefaultPassPhrase": "ybgU8NieQZNjguXe" |
||||
|
}, |
||||
|
"AlwaysAllowAuthorization": "true", |
||||
|
"urls": "http://192.168.1.75:60081", |
||||
|
"DataExchangeInterfaceOptions": { |
||||
|
"WmsCode": "WMS", |
||||
|
"CmdStartPath": "D:\\Proc_DyNevWms\\publish\\start.cmd", |
||||
|
"CmdClosePath1": "D:\\Proc_DyNevWms\\publish\\stop.cmd", |
||||
|
"CmdClosePath2": "D:\\Proc_DyNevWms\\publish\\TaskKill.exe", |
||||
|
"WmsUrl": "http://10.164.233.5:60085/swagger/AbpTenant/swagger.json" |
||||
|
|
||||
|
} |
||||
} |
} |
||||
|
|
||||
|
@ -0,0 +1,129 @@ |
|||||
|
using System; |
||||
|
using System.Collections.Generic; |
||||
|
using System.ComponentModel.DataAnnotations; |
||||
|
using System.Linq; |
||||
|
using System.Text; |
||||
|
using System.Threading.Tasks; |
||||
|
|
||||
|
namespace Win_in.Sfs.Wms.Store.Application.Contracts; |
||||
|
/// <summary>
|
||||
|
/// 海康调闻荫入参数
|
||||
|
/// </summary>
|
||||
|
public class AgvRequestHK |
||||
|
{ |
||||
|
[Display(Name = "请求编号")] |
||||
|
public string ReqCode { set; get; } |
||||
|
[Display(Name = "明细")] |
||||
|
public List<AgvRequestHKDetail> Data { set; get; } |
||||
|
|
||||
|
} |
||||
|
/// <summary>
|
||||
|
/// 海康调闻荫入参数
|
||||
|
/// </summary>
|
||||
|
public class AgvRequestOnlyJobHK |
||||
|
{ |
||||
|
//[Display(Name = "请求编号")]
|
||||
|
//public string ReqCode { set; get; }
|
||||
|
[Display(Name = "明细")] |
||||
|
public List<AgvRequestHKDetail> Data { set; get; } |
||||
|
|
||||
|
} |
||||
|
|
||||
|
|
||||
|
|
||||
|
/// <summary>
|
||||
|
/// 海康调闻荫入参明细
|
||||
|
/// </summary>
|
||||
|
public class AgvRequestHKDetail |
||||
|
{ |
||||
|
[Display(Name = "任务类型")] |
||||
|
public string OrderType { set; get; } |
||||
|
[Display(Name = "任务编号")] |
||||
|
public string OrderNum { set; get; } |
||||
|
[Display(Name = "物料编号")] |
||||
|
public string MatCode { set; get; } |
||||
|
[Display(Name = "物料数量")] |
||||
|
public decimal MatQty { set; get; } |
||||
|
[Display(Name = "起始点")] |
||||
|
public string BeginPosition { set; get; } |
||||
|
[Display(Name = "终点")] |
||||
|
public string EndPosition { set; get; } |
||||
|
[Display(Name = "批次属性07")] |
||||
|
public string BatchAttr07 { set; get; } |
||||
|
[Display(Name = "批次属性08")] |
||||
|
public string BatchAttr08 { set; get; } |
||||
|
[Display(Name = "批次属性09")] |
||||
|
public string BatchAttr09 { set; get; } |
||||
|
[Display(Name = "批次属性10")] |
||||
|
public string BatchAttr10 { set; get; } |
||||
|
[Display(Name = "批次属性11")] |
||||
|
public string BatchAttr11 { set; get; } |
||||
|
[Display(Name = "批次属性12")] |
||||
|
public string BatchAttr12 { set; get; } |
||||
|
[Display(Name = "批次属性13")] |
||||
|
public string BatchAttr13 { set; get; } |
||||
|
[Display(Name = "批次属性14")] |
||||
|
public string BatchAttr14 { set; get; } |
||||
|
[Display(Name = "批次属性15")] |
||||
|
public string BatchAttr15 { set; get; } |
||||
|
|
||||
|
} |
||||
|
/// <summary>
|
||||
|
/// 闻荫调海康入参
|
||||
|
/// </summary>
|
||||
|
[System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "14.2.0.0 (NJsonSchema v11.1.0.0 (Newtonsoft.Json v13.0.0.0))")] |
||||
|
public partial class AgvRequest |
||||
|
{ |
||||
|
/// <summary>
|
||||
|
/// 任务类型
|
||||
|
/// </summary>
|
||||
|
|
||||
|
[System.Text.Json.Serialization.JsonPropertyName("orderType")] |
||||
|
public string OrderType { get; set; } |
||||
|
|
||||
|
/// <summary>
|
||||
|
/// 任务编号
|
||||
|
/// </summary>
|
||||
|
|
||||
|
[System.Text.Json.Serialization.JsonPropertyName("orderNum")] |
||||
|
public string OrderNum { get; set; } |
||||
|
|
||||
|
/// <summary>
|
||||
|
/// 物料编号
|
||||
|
/// </summary>
|
||||
|
|
||||
|
[System.Text.Json.Serialization.JsonPropertyName("matCode")] |
||||
|
public string MatCode { get; set; } |
||||
|
|
||||
|
/// <summary>
|
||||
|
/// 物料数量
|
||||
|
/// </summary>
|
||||
|
|
||||
|
[System.Text.Json.Serialization.JsonPropertyName("matQty")] |
||||
|
public decimal MatQty { get; set; } |
||||
|
|
||||
|
/// <summary>
|
||||
|
/// 目标工位
|
||||
|
/// </summary>
|
||||
|
|
||||
|
[System.Text.Json.Serialization.JsonPropertyName("endPosition")] |
||||
|
public string EndPosition { get; set; } |
||||
|
|
||||
|
} |
||||
|
|
||||
|
[System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "14.2.0.0 (NJsonSchema v11.1.0.0 (Newtonsoft.Json v13.0.0.0))")] |
||||
|
public partial class AgvResultObject |
||||
|
{ |
||||
|
|
||||
|
[System.Text.Json.Serialization.JsonPropertyName("code")] |
||||
|
public string Code { get; set; } |
||||
|
|
||||
|
[System.Text.Json.Serialization.JsonPropertyName("message")] |
||||
|
public string Message { get; set; } |
||||
|
|
||||
|
[System.Text.Json.Serialization.JsonPropertyName("reqCode")] |
||||
|
public string ReqCode { get; set; } |
||||
|
|
||||
|
} |
||||
|
|
||||
|
|
@ -0,0 +1,16 @@ |
|||||
|
using System; |
||||
|
using System.Collections.Generic; |
||||
|
using System.Linq; |
||||
|
using System.Text; |
||||
|
using System.Threading.Tasks; |
||||
|
using Volo.Abp; |
||||
|
using Volo.Abp.Application.Services; |
||||
|
|
||||
|
namespace Win_in.Sfs.Wms.Store.Application.Contracts; |
||||
|
public interface IAgvJobAccountService: IApplicationService |
||||
|
{ |
||||
|
|
||||
|
Task<AgvResultObject> AccountOutOrderAsync(AgvRequestOnlyJobHK request); |
||||
|
|
||||
|
|
||||
|
} |
@ -0,0 +1,12 @@ |
|||||
|
using System; |
||||
|
using System.Collections.Generic; |
||||
|
using System.Linq; |
||||
|
using System.Text; |
||||
|
using System.Threading.Tasks; |
||||
|
using Volo.Abp.Application.Services; |
||||
|
|
||||
|
namespace Win_in.Sfs.Wms.Store.Application.Contracts; |
||||
|
public interface IAgvJobOutputService:IApplicationService |
||||
|
{ |
||||
|
Task<AgvResultObject> OutPutTaskAsync(AgvRequest request); |
||||
|
} |
@ -0,0 +1,98 @@ |
|||||
|
using System; |
||||
|
using System.Collections.Generic; |
||||
|
using System.Linq; |
||||
|
using System.Text; |
||||
|
using System.Threading.Tasks; |
||||
|
using Microsoft.AspNetCore.Authorization; |
||||
|
using Microsoft.AspNetCore.Mvc; |
||||
|
using Volo.Abp; |
||||
|
using Volo.Abp.Application.Services; |
||||
|
using Volo.Abp.Uow; |
||||
|
using Volo.Abp.Users; |
||||
|
using Win_in.Sfs.Basedata.Application.Contracts; |
||||
|
using Win_in.Sfs.Basedata.Domain; |
||||
|
using Win_in.Sfs.Basedata.Domain.Shared; |
||||
|
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; |
||||
|
|
||||
|
namespace Win_in.Sfs.Wms.Store.Jobs.IssueJobs.AgvServices; |
||||
|
|
||||
|
|
||||
|
[AllowAnonymous] |
||||
|
[Route($"{StoreConsts.RootPath}agv-job-Account")] |
||||
|
public class AgvJobAccountService : ApplicationService, IAgvJobAccountService |
||||
|
{ |
||||
|
private IAssembleIssueJobAppService _assembleIssueJobAppService; |
||||
|
private ICoatingIssueJobAppService _coatingIssueJobAppService; |
||||
|
private IInjectionIssueJobAppService _injectionIssueJobAppService; |
||||
|
private IKittingIssueJobAppService _kittingIssueJobAppService; |
||||
|
private ISparePartIssueJobAppService _sparePartIssueJobAppService; |
||||
|
|
||||
|
public AgvJobAccountService( |
||||
|
|
||||
|
IAssembleIssueJobAppService assembleIssueJobAppService, |
||||
|
ICoatingIssueJobAppService coatingIssueJobAppService, |
||||
|
IInjectionIssueJobAppService injectionIssueJobAppService, |
||||
|
IKittingIssueJobAppService kittingIssueJobAppService, |
||||
|
ISparePartIssueJobAppService sparePartIssueJobAppService |
||||
|
|
||||
|
) |
||||
|
{ |
||||
|
_assembleIssueJobAppService = assembleIssueJobAppService; |
||||
|
_coatingIssueJobAppService= coatingIssueJobAppService; |
||||
|
_injectionIssueJobAppService= injectionIssueJobAppService; |
||||
|
_kittingIssueJobAppService = kittingIssueJobAppService; |
||||
|
_sparePartIssueJobAppService= sparePartIssueJobAppService; |
||||
|
} |
||||
|
|
||||
|
public async Task<AgvResultObject> AccountOutOrderAsync(AgvRequestOnlyJobHK request) |
||||
|
{ |
||||
|
var res=new AgvResultObject(); |
||||
|
res.Code = "0"; |
||||
|
|
||||
|
foreach (var itm in request.Data) |
||||
|
{ |
||||
|
switch (itm.OrderType) |
||||
|
{ |
||||
|
case "1": |
||||
|
|
||||
|
var assemblejob= new AssembleIssueJobDTO(); |
||||
|
|
||||
|
foreach (var detail in request.Data) |
||||
|
{ |
||||
|
|
||||
|
} |
||||
|
|
||||
|
|
||||
|
|
||||
|
|
||||
|
var assemb=await _assembleIssueJobAppService.GetByNumberAsync(itm.OrderNum).ConfigureAwait(false); |
||||
|
await _assembleIssueJobAppService.CompleteAsync(assemb.Id).ConfigureAwait(false); |
||||
|
res.ReqCode = assemb.AssembleRequestNumber; |
||||
|
res.Message = "OK"; |
||||
|
break; |
||||
|
case "2": |
||||
|
var coating = await _coatingIssueJobAppService.GetByNumberAsync(itm.OrderNum).ConfigureAwait(false); |
||||
|
await _coatingIssueJobAppService.CompleteAsync(coating.Id).ConfigureAwait(false); |
||||
|
break; |
||||
|
case "3": |
||||
|
var injection = await _injectionIssueJobAppService.GetByNumberAsync(itm.OrderNum).ConfigureAwait(false); |
||||
|
await _injectionIssueJobAppService.CompleteAsync(injection.Id).ConfigureAwait(false); |
||||
|
break; |
||||
|
case "4": |
||||
|
var kitting = await _kittingIssueJobAppService.GetByNumberAsync(itm.OrderNum).ConfigureAwait(false); |
||||
|
await _kittingIssueJobAppService.CompleteAsync(kitting.Id).ConfigureAwait(false); |
||||
|
|
||||
|
break; |
||||
|
case "5": |
||||
|
var sparePart = await _sparePartIssueJobAppService.GetByNumberAsync(itm.OrderNum).ConfigureAwait(false); |
||||
|
await _sparePartIssueJobAppService.CompleteAsync(sparePart.Id).ConfigureAwait(false); |
||||
|
break; |
||||
|
|
||||
|
} |
||||
|
} |
||||
|
|
||||
|
} |
||||
|
} |
@ -0,0 +1,155 @@ |
|||||
|
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; |
||||
|
using Volo.Abp.Users; |
||||
|
using Win_in.Sfs.Basedata.Application.Contracts; |
||||
|
using Win_in.Sfs.Basedata.Domain; |
||||
|
using Win_in.Sfs.Basedata.Domain.Shared; |
||||
|
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 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; |
||||
|
|
||||
|
} |
||||
|
|
||||
|
|
||||
|
} |
@ -0,0 +1,407 @@ |
|||||
|
using System; |
||||
|
using System.Collections.Generic; |
||||
|
using System.Linq; |
||||
|
using System.Text; |
||||
|
using System.Threading.Tasks; |
||||
|
using Win_in.Sfs.Wms.Store.Application.Contracts; |
||||
|
|
||||
|
namespace Win_in.Sfs.Wms.Store.Jobs.IssueJobs.proxy; |
||||
|
|
||||
|
|
||||
|
[System.CodeDom.Compiler.GeneratedCode("NSwag", "14.2.0.0 (NJsonSchema v11.1.0.0 (Newtonsoft.Json v13.0.0.0))")] |
||||
|
public partial class AgvJobClient |
||||
|
{ |
||||
|
#pragma warning disable 8618
|
||||
|
private string _baseUrl; |
||||
|
#pragma warning restore 8618
|
||||
|
|
||||
|
private System.Net.Http.HttpClient _httpClient; |
||||
|
private static System.Lazy<System.Text.Json.JsonSerializerOptions> _settings = new System.Lazy<System.Text.Json.JsonSerializerOptions>(CreateSerializerSettings, true); |
||||
|
private System.Text.Json.JsonSerializerOptions _instanceSettings; |
||||
|
|
||||
|
#pragma warning disable CS8618 // Non-nullable field must contain a non-null value when exiting constructor. Consider declaring as nullable.
|
||||
|
public AgvJobClient(string baseUrl, System.Net.Http.HttpClient httpClient,string path) |
||||
|
#pragma warning restore CS8618 // Non-nullable field must contain a non-null value when exiting constructor. Consider declaring as nullable.
|
||||
|
{ |
||||
|
BaseUrl = baseUrl; |
||||
|
_httpClient = httpClient; |
||||
|
_path = path; |
||||
|
|
||||
|
|
||||
|
Initialize(); |
||||
|
} |
||||
|
|
||||
|
private static System.Text.Json.JsonSerializerOptions CreateSerializerSettings() |
||||
|
{ |
||||
|
var settings = new System.Text.Json.JsonSerializerOptions(); |
||||
|
UpdateJsonSerializerSettings(settings); |
||||
|
return settings; |
||||
|
} |
||||
|
|
||||
|
public string BaseUrl |
||||
|
{ |
||||
|
get { return _baseUrl; } |
||||
|
set |
||||
|
{ |
||||
|
_baseUrl = value; |
||||
|
if (!string.IsNullOrEmpty(_baseUrl) && !_baseUrl.EndsWith("/")) |
||||
|
_baseUrl += '/'; |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
private string _path; |
||||
|
public string Path |
||||
|
{ |
||||
|
get { return _path; } |
||||
|
set |
||||
|
{ |
||||
|
_path = value; |
||||
|
|
||||
|
} |
||||
|
} |
||||
|
|
||||
|
|
||||
|
protected System.Text.Json.JsonSerializerOptions JsonSerializerSettings { get { return _instanceSettings ?? _settings.Value; } } |
||||
|
|
||||
|
static partial void UpdateJsonSerializerSettings(System.Text.Json.JsonSerializerOptions settings); |
||||
|
|
||||
|
partial void Initialize(); |
||||
|
|
||||
|
partial void PrepareRequest(System.Net.Http.HttpClient client, System.Net.Http.HttpRequestMessage request, string url); |
||||
|
partial void PrepareRequest(System.Net.Http.HttpClient client, System.Net.Http.HttpRequestMessage request, System.Text.StringBuilder urlBuilder); |
||||
|
partial void ProcessResponse(System.Net.Http.HttpClient client, System.Net.Http.HttpResponseMessage response); |
||||
|
|
||||
|
/// <returns>Success</returns>
|
||||
|
/// <exception cref="ApiException">A server side error occurred.</exception>
|
||||
|
public virtual System.Threading.Tasks.Task<AgvResultObject> PushOutTask4FWAsync(AgvRequest body) |
||||
|
{ |
||||
|
return PushOutTask4FWAsync(body, System.Threading.CancellationToken.None); |
||||
|
} |
||||
|
|
||||
|
/// <param name="cancellationToken">A cancellation token that can be used by other objects or threads to receive notice of cancellation.</param>
|
||||
|
/// <returns>Success</returns>
|
||||
|
/// <exception cref="ApiException">A server side error occurred.</exception>
|
||||
|
public virtual async System.Threading.Tasks.Task<AgvResultObject> PushOutTask4FWAsync(AgvRequest body, System.Threading.CancellationToken cancellationToken) |
||||
|
{ |
||||
|
var client_ = _httpClient; |
||||
|
var disposeClient_ = false; |
||||
|
try |
||||
|
{ |
||||
|
using (var request_ = new System.Net.Http.HttpRequestMessage()) |
||||
|
{ |
||||
|
var json_ = System.Text.Json.JsonSerializer.SerializeToUtf8Bytes(body, JsonSerializerSettings); |
||||
|
var content_ = new System.Net.Http.ByteArrayContent(json_); |
||||
|
content_.Headers.ContentType = System.Net.Http.Headers.MediaTypeHeaderValue.Parse("application/json"); |
||||
|
request_.Content = content_; |
||||
|
request_.Method = new System.Net.Http.HttpMethod("POST"); |
||||
|
request_.Headers.Accept.Add(System.Net.Http.Headers.MediaTypeWithQualityHeaderValue.Parse("text/plain")); |
||||
|
|
||||
|
var urlBuilder_ = new System.Text.StringBuilder(); |
||||
|
if (!string.IsNullOrEmpty(_baseUrl)) urlBuilder_.Append(_baseUrl); |
||||
|
// Operation Path: "pushOutTask4FW"
|
||||
|
urlBuilder_.Append(_path); |
||||
|
|
||||
|
PrepareRequest(client_, request_, urlBuilder_); |
||||
|
|
||||
|
var url_ = urlBuilder_.ToString(); |
||||
|
request_.RequestUri = new System.Uri(url_, System.UriKind.RelativeOrAbsolute); |
||||
|
|
||||
|
PrepareRequest(client_, request_, url_); |
||||
|
|
||||
|
var response_ = await client_.SendAsync(request_, System.Net.Http.HttpCompletionOption.ResponseHeadersRead, cancellationToken).ConfigureAwait(false); |
||||
|
var disposeResponse_ = true; |
||||
|
try |
||||
|
{ |
||||
|
var headers_ = new System.Collections.Generic.Dictionary<string, System.Collections.Generic.IEnumerable<string>>(); |
||||
|
foreach (var item_ in response_.Headers) |
||||
|
headers_[item_.Key] = item_.Value; |
||||
|
if (response_.Content != null && response_.Content.Headers != null) |
||||
|
{ |
||||
|
foreach (var item_ in response_.Content.Headers) |
||||
|
headers_[item_.Key] = item_.Value; |
||||
|
} |
||||
|
|
||||
|
ProcessResponse(client_, response_); |
||||
|
|
||||
|
var status_ = (int)response_.StatusCode; |
||||
|
if (status_ == 200) |
||||
|
{ |
||||
|
var objectResponse_ = await ReadObjectResponseAsync<AgvResultObject>(response_, headers_, cancellationToken).ConfigureAwait(false); |
||||
|
if (objectResponse_.Object == null) |
||||
|
{ |
||||
|
throw new ApiException("Response was null which was not expected.", status_, objectResponse_.Text, headers_, null); |
||||
|
} |
||||
|
return objectResponse_.Object; |
||||
|
} |
||||
|
else |
||||
|
if (status_ == 403) |
||||
|
{ |
||||
|
var objectResponse_ = await ReadObjectResponseAsync<RemoteServiceErrorResponse>(response_, headers_, cancellationToken).ConfigureAwait(false); |
||||
|
if (objectResponse_.Object == null) |
||||
|
{ |
||||
|
throw new ApiException("Response was null which was not expected.", status_, objectResponse_.Text, headers_, null); |
||||
|
} |
||||
|
throw new ApiException<RemoteServiceErrorResponse>("Forbidden", status_, objectResponse_.Text, headers_, objectResponse_.Object, null); |
||||
|
} |
||||
|
else |
||||
|
if (status_ == 401) |
||||
|
{ |
||||
|
var objectResponse_ = await ReadObjectResponseAsync<RemoteServiceErrorResponse>(response_, headers_, cancellationToken).ConfigureAwait(false); |
||||
|
if (objectResponse_.Object == null) |
||||
|
{ |
||||
|
throw new ApiException("Response was null which was not expected.", status_, objectResponse_.Text, headers_, null); |
||||
|
} |
||||
|
throw new ApiException<RemoteServiceErrorResponse>("Unauthorized", status_, objectResponse_.Text, headers_, objectResponse_.Object, null); |
||||
|
} |
||||
|
else |
||||
|
if (status_ == 400) |
||||
|
{ |
||||
|
var objectResponse_ = await ReadObjectResponseAsync<RemoteServiceErrorResponse>(response_, headers_, cancellationToken).ConfigureAwait(false); |
||||
|
if (objectResponse_.Object == null) |
||||
|
{ |
||||
|
throw new ApiException("Response was null which was not expected.", status_, objectResponse_.Text, headers_, null); |
||||
|
} |
||||
|
throw new ApiException<RemoteServiceErrorResponse>("Bad Request", status_, objectResponse_.Text, headers_, objectResponse_.Object, null); |
||||
|
} |
||||
|
else |
||||
|
if (status_ == 404) |
||||
|
{ |
||||
|
var objectResponse_ = await ReadObjectResponseAsync<RemoteServiceErrorResponse>(response_, headers_, cancellationToken).ConfigureAwait(false); |
||||
|
if (objectResponse_.Object == null) |
||||
|
{ |
||||
|
throw new ApiException("Response was null which was not expected.", status_, objectResponse_.Text, headers_, null); |
||||
|
} |
||||
|
throw new ApiException<RemoteServiceErrorResponse>("Not Found", status_, objectResponse_.Text, headers_, objectResponse_.Object, null); |
||||
|
} |
||||
|
else |
||||
|
if (status_ == 501) |
||||
|
{ |
||||
|
var objectResponse_ = await ReadObjectResponseAsync<RemoteServiceErrorResponse>(response_, headers_, cancellationToken).ConfigureAwait(false); |
||||
|
if (objectResponse_.Object == null) |
||||
|
{ |
||||
|
throw new ApiException("Response was null which was not expected.", status_, objectResponse_.Text, headers_, null); |
||||
|
} |
||||
|
throw new ApiException<RemoteServiceErrorResponse>("Server Error", status_, objectResponse_.Text, headers_, objectResponse_.Object, null); |
||||
|
} |
||||
|
else |
||||
|
if (status_ == 500) |
||||
|
{ |
||||
|
var objectResponse_ = await ReadObjectResponseAsync<RemoteServiceErrorResponse>(response_, headers_, cancellationToken).ConfigureAwait(false); |
||||
|
if (objectResponse_.Object == null) |
||||
|
{ |
||||
|
throw new ApiException("Response was null which was not expected.", status_, objectResponse_.Text, headers_, null); |
||||
|
} |
||||
|
throw new ApiException<RemoteServiceErrorResponse>("Server Error", status_, objectResponse_.Text, headers_, objectResponse_.Object, null); |
||||
|
} |
||||
|
else |
||||
|
{ |
||||
|
var responseData_ = response_.Content == null ? null : await response_.Content.ReadAsStringAsync().ConfigureAwait(false); |
||||
|
throw new ApiException("The HTTP status code of the response was not expected (" + status_ + ").", status_, responseData_, headers_, null); |
||||
|
} |
||||
|
} |
||||
|
finally |
||||
|
{ |
||||
|
if (disposeResponse_) |
||||
|
response_.Dispose(); |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
finally |
||||
|
{ |
||||
|
if (disposeClient_) |
||||
|
client_.Dispose(); |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
protected struct ObjectResponseResult<T> |
||||
|
{ |
||||
|
public ObjectResponseResult(T responseObject, string responseText) |
||||
|
{ |
||||
|
this.Object = responseObject; |
||||
|
this.Text = responseText; |
||||
|
} |
||||
|
|
||||
|
public T Object { get; } |
||||
|
|
||||
|
public string Text { get; } |
||||
|
} |
||||
|
|
||||
|
public bool ReadResponseAsString { get; set; } |
||||
|
|
||||
|
protected virtual async System.Threading.Tasks.Task<ObjectResponseResult<T>> ReadObjectResponseAsync<T>(System.Net.Http.HttpResponseMessage response, System.Collections.Generic.IReadOnlyDictionary<string, System.Collections.Generic.IEnumerable<string>> headers, System.Threading.CancellationToken cancellationToken) |
||||
|
{ |
||||
|
if (response == null || response.Content == null) |
||||
|
{ |
||||
|
return new ObjectResponseResult<T>(default(T), string.Empty); |
||||
|
} |
||||
|
|
||||
|
if (ReadResponseAsString) |
||||
|
{ |
||||
|
var responseText = await response.Content.ReadAsStringAsync().ConfigureAwait(false); |
||||
|
try |
||||
|
{ |
||||
|
var typedBody = System.Text.Json.JsonSerializer.Deserialize<T>(responseText, JsonSerializerSettings); |
||||
|
return new ObjectResponseResult<T>(typedBody, responseText); |
||||
|
} |
||||
|
catch (System.Text.Json.JsonException exception) |
||||
|
{ |
||||
|
var message = "Could not deserialize the response body string as " + typeof(T).FullName + "."; |
||||
|
throw new ApiException(message, (int)response.StatusCode, responseText, headers, exception); |
||||
|
} |
||||
|
} |
||||
|
else |
||||
|
{ |
||||
|
try |
||||
|
{ |
||||
|
using (var responseStream = await response.Content.ReadAsStreamAsync().ConfigureAwait(false)) |
||||
|
{ |
||||
|
var typedBody = await System.Text.Json.JsonSerializer.DeserializeAsync<T>(responseStream, JsonSerializerSettings, cancellationToken).ConfigureAwait(false); |
||||
|
return new ObjectResponseResult<T>(typedBody, string.Empty); |
||||
|
} |
||||
|
} |
||||
|
catch (System.Text.Json.JsonException exception) |
||||
|
{ |
||||
|
var message = "Could not deserialize the response body stream as " + typeof(T).FullName + "."; |
||||
|
throw new ApiException(message, (int)response.StatusCode, string.Empty, headers, exception); |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
private string ConvertToString(object value, System.Globalization.CultureInfo cultureInfo) |
||||
|
{ |
||||
|
if (value == null) |
||||
|
{ |
||||
|
return ""; |
||||
|
} |
||||
|
|
||||
|
if (value is System.Enum) |
||||
|
{ |
||||
|
var name = System.Enum.GetName(value.GetType(), value); |
||||
|
if (name != null) |
||||
|
{ |
||||
|
var field = System.Reflection.IntrospectionExtensions.GetTypeInfo(value.GetType()).GetDeclaredField(name); |
||||
|
if (field != null) |
||||
|
{ |
||||
|
var attribute = System.Reflection.CustomAttributeExtensions.GetCustomAttribute(field, typeof(System.Runtime.Serialization.EnumMemberAttribute)) |
||||
|
as System.Runtime.Serialization.EnumMemberAttribute; |
||||
|
if (attribute != null) |
||||
|
{ |
||||
|
return attribute.Value != null ? attribute.Value : name; |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
var converted = System.Convert.ToString(System.Convert.ChangeType(value, System.Enum.GetUnderlyingType(value.GetType()), cultureInfo)); |
||||
|
return converted == null ? string.Empty : converted; |
||||
|
} |
||||
|
} |
||||
|
else if (value is bool) |
||||
|
{ |
||||
|
return System.Convert.ToString((bool)value, cultureInfo).ToLowerInvariant(); |
||||
|
} |
||||
|
else if (value is byte[]) |
||||
|
{ |
||||
|
return System.Convert.ToBase64String((byte[])value); |
||||
|
} |
||||
|
else if (value is string[]) |
||||
|
{ |
||||
|
return string.Join(",", (string[])value); |
||||
|
} |
||||
|
else if (value.GetType().IsArray) |
||||
|
{ |
||||
|
var valueArray = (System.Array)value; |
||||
|
var valueTextArray = new string[valueArray.Length]; |
||||
|
for (var i = 0; i < valueArray.Length; i++) |
||||
|
{ |
||||
|
valueTextArray[i] = ConvertToString(valueArray.GetValue(i), cultureInfo); |
||||
|
} |
||||
|
return string.Join(",", valueTextArray); |
||||
|
} |
||||
|
|
||||
|
var result = System.Convert.ToString(value, cultureInfo); |
||||
|
return result == null ? "" : result; |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
[System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "14.2.0.0 (NJsonSchema v11.1.0.0 (Newtonsoft.Json v13.0.0.0))")] |
||||
|
public partial class RemoteServiceErrorInfo |
||||
|
{ |
||||
|
|
||||
|
[System.Text.Json.Serialization.JsonPropertyName("code")] |
||||
|
public string Code { get; set; } |
||||
|
|
||||
|
[System.Text.Json.Serialization.JsonPropertyName("message")] |
||||
|
public string Message { get; set; } |
||||
|
|
||||
|
[System.Text.Json.Serialization.JsonPropertyName("details")] |
||||
|
public string Details { get; set; } |
||||
|
|
||||
|
[System.Text.Json.Serialization.JsonPropertyName("data")] |
||||
|
public System.Collections.Generic.IDictionary<string, object> Data { get; set; } |
||||
|
|
||||
|
[System.Text.Json.Serialization.JsonPropertyName("validationErrors")] |
||||
|
public System.Collections.Generic.ICollection<RemoteServiceValidationErrorInfo> ValidationErrors { get; set; } |
||||
|
|
||||
|
} |
||||
|
|
||||
|
[System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "14.2.0.0 (NJsonSchema v11.1.0.0 (Newtonsoft.Json v13.0.0.0))")] |
||||
|
public partial class RemoteServiceErrorResponse |
||||
|
{ |
||||
|
|
||||
|
[System.Text.Json.Serialization.JsonPropertyName("error")] |
||||
|
public RemoteServiceErrorInfo Error { get; set; } |
||||
|
|
||||
|
} |
||||
|
|
||||
|
[System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "14.2.0.0 (NJsonSchema v11.1.0.0 (Newtonsoft.Json v13.0.0.0))")] |
||||
|
public partial class RemoteServiceValidationErrorInfo |
||||
|
{ |
||||
|
|
||||
|
[System.Text.Json.Serialization.JsonPropertyName("message")] |
||||
|
public string Message { get; set; } |
||||
|
|
||||
|
[System.Text.Json.Serialization.JsonPropertyName("members")] |
||||
|
public System.Collections.Generic.ICollection<string> Members { get; set; } |
||||
|
|
||||
|
} |
||||
|
|
||||
|
|
||||
|
|
||||
|
|
||||
|
|
||||
|
[System.CodeDom.Compiler.GeneratedCode("NSwag", "14.2.0.0 (NJsonSchema v11.1.0.0 (Newtonsoft.Json v13.0.0.0))")] |
||||
|
public partial class ApiException : System.Exception |
||||
|
{ |
||||
|
public int StatusCode { get; private set; } |
||||
|
|
||||
|
public string Response { get; private set; } |
||||
|
|
||||
|
public System.Collections.Generic.IReadOnlyDictionary<string, System.Collections.Generic.IEnumerable<string>> Headers { get; private set; } |
||||
|
|
||||
|
public ApiException(string message, int statusCode, string response, System.Collections.Generic.IReadOnlyDictionary<string, System.Collections.Generic.IEnumerable<string>> headers, System.Exception innerException) |
||||
|
: base(message + "\n\nStatus: " + statusCode + "\nResponse: \n" + ((response == null) ? "(null)" : response.Substring(0, response.Length >= 512 ? 512 : response.Length)), innerException) |
||||
|
{ |
||||
|
StatusCode = statusCode; |
||||
|
Response = response; |
||||
|
Headers = headers; |
||||
|
} |
||||
|
|
||||
|
public override string ToString() |
||||
|
{ |
||||
|
return string.Format("HTTP Response: \n\n{0}\n\n{1}", Response, base.ToString()); |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
[System.CodeDom.Compiler.GeneratedCode("NSwag", "14.2.0.0 (NJsonSchema v11.1.0.0 (Newtonsoft.Json v13.0.0.0))")] |
||||
|
public partial class ApiException<TResult> : ApiException |
||||
|
{ |
||||
|
public TResult Result { get; private set; } |
||||
|
|
||||
|
public ApiException(string message, int statusCode, string response, System.Collections.Generic.IReadOnlyDictionary<string, System.Collections.Generic.IEnumerable<string>> headers, TResult result, System.Exception innerException) |
||||
|
: base(message, statusCode, response, headers, innerException) |
||||
|
{ |
||||
|
Result = result; |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
|
||||
|
|
Loading…
Reference in new issue