From 6838a011e81628e202088a7f9049b57dfe0c85bd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=AD=A6=20=E8=B5=B5?= <89237069@qq.com> Date: Thu, 28 Nov 2024 15:37:05 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0AGV=E5=8F=91=E8=B4=A7?= =?UTF-8?q?=E6=8E=A5=E5=8F=A3=E5=92=8CDTO?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../test/TestAppService.cs | 16 ++- .../Jobs/IssueJobs/AgvJobs/DTOS}/AgvDto.cs | 63 +++++++-- .../IssueJobs/AgvJobs/IAgvJobInputService.cs | 6 +- .../IssueJobs/AgvJobs/IAgvJobOutputService.cs | 4 +- ...Sfs.Wms.Store.Application.Contracts.csproj | 1 - .../IssueJobs/AgvJobs/AgvJobInputService.cs | 2 +- .../IssueJobs/AgvJobs/AgvJobOutputService.cs | 130 +++++++++++++++++- .../AssembleIssueJobAppService.cs | 37 ++++- .../CoatingIssueJobAppService.cs | 25 +++- .../InjectionIssueJobAppService.cs | 21 ++- .../KittingIssueJobAppService.cs | 25 +++- .../SparePartIssueJobAppService.cs | 22 ++- .../Jobs/IssueJobs/proxy/AgvJobClient.cs | 64 +-------- .../StoreApplicationModule.cs | 1 + .../Options/RestoOptions.cs | 25 ++++ 15 files changed, 355 insertions(+), 87 deletions(-) rename be/Modules/Store/src/{Win_in.Sfs.Wms.Store.Application/Jobs/IssueJobs/AgvJobs => Win_in.Sfs.Wms.Store.Application.Contracts/Jobs/IssueJobs/AgvJobs/DTOS}/AgvDto.cs (54%) diff --git a/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application/test/TestAppService.cs b/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application/test/TestAppService.cs index 468d43f51..c07f8a8ae 100644 --- a/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application/test/TestAppService.cs +++ b/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application/test/TestAppService.cs @@ -183,6 +183,7 @@ public class AgvResultObject public string Message { set; get; } public string ReqCode { set; get; } } +#region AGV public class AgvRequestHK { [Display(Name ="请求编号")] @@ -191,6 +192,19 @@ public class AgvRequestHK public List Data { set; get; } } + +public class AgvRequestInputHK +{ + //[Display(Name = "请求编号")] + //public string ReqCode { set; get; } + [Display(Name = "明细")] + public List Data { set; get; } + +} + + + + public class AgvRequestHKDetail { [Display(Name = "任务类型")] @@ -244,7 +258,7 @@ public class AgvRequest public string EndPosition { set; get; } } - +#endregion diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Jobs/IssueJobs/AgvJobs/AgvDto.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Jobs/IssueJobs/AgvJobs/DTOS/AgvDto.cs similarity index 54% rename from be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Jobs/IssueJobs/AgvJobs/AgvDto.cs rename to be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Jobs/IssueJobs/AgvJobs/DTOS/AgvDto.cs index 49a75f6ef..52c7c35e6 100644 --- a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Jobs/IssueJobs/AgvJobs/AgvDto.cs +++ b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Jobs/IssueJobs/AgvJobs/DTOS/AgvDto.cs @@ -5,7 +5,7 @@ using System.Linq; using System.Text; using System.Threading.Tasks; -namespace Win_in.Sfs.Wms.Store.Jobs.IssueJobs.AgvServices; +namespace Win_in.Sfs.Wms.Store.Application.Contracts; /// /// 海康调闻荫入参数 /// @@ -57,20 +57,59 @@ public class AgvRequestHKDetail /// /// 闻荫调海康入参 /// -public class AgvRequest +[System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "14.2.0.0 (NJsonSchema v11.1.0.0 (Newtonsoft.Json v13.0.0.0))")] +public partial class AgvRequest { - [Display(Name = "任务类型")] - public string OrderType { set; get; } - [Display(Name = "任务编号")] - public string OrderNum { set; get; } - [Display(Name = "物料编号")] - public string MatCode { set; get; } - [Display(Name = "物料数量")] - public string MatQty { set; get; } - [Display(Name = "目标工位")] - public string EndPosition { set; get; } + /// + /// 任务类型 + /// + + [System.Text.Json.Serialization.JsonPropertyName("orderType")] + public string OrderType { get; set; } + + /// + /// 任务编号 + /// + + [System.Text.Json.Serialization.JsonPropertyName("orderNum")] + public string OrderNum { get; set; } + + /// + /// 物料编号 + /// + + [System.Text.Json.Serialization.JsonPropertyName("matCode")] + public string MatCode { get; set; } + + /// + /// 物料数量 + /// + + [System.Text.Json.Serialization.JsonPropertyName("matQty")] + public decimal MatQty { get; set; } + + /// + /// 目标工位 + /// + + [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; } + +} diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Jobs/IssueJobs/AgvJobs/IAgvJobInputService.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Jobs/IssueJobs/AgvJobs/IAgvJobInputService.cs index d82b05379..031cecda6 100644 --- a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Jobs/IssueJobs/AgvJobs/IAgvJobInputService.cs +++ b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Jobs/IssueJobs/AgvJobs/IAgvJobInputService.cs @@ -6,7 +6,11 @@ using System.Threading.Tasks; using Volo.Abp; using Volo.Abp.Application.Services; -namespace Win_in.Sfs.Wms.Store.Jobs.IssueJobs.AgvServices; +namespace Win_in.Sfs.Wms.Store.Application.Contracts; public interface AgvJobOutputService: IApplicationService { + + Task OutTaskAsync(AgvRequest request); + + } diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Jobs/IssueJobs/AgvJobs/IAgvJobOutputService.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Jobs/IssueJobs/AgvJobs/IAgvJobOutputService.cs index 7cf72dccc..386784f8b 100644 --- a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Jobs/IssueJobs/AgvJobs/IAgvJobOutputService.cs +++ b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Jobs/IssueJobs/AgvJobs/IAgvJobOutputService.cs @@ -5,8 +5,8 @@ using System.Text; using System.Threading.Tasks; using Volo.Abp.Application.Services; -namespace Win_in.Sfs.Wms.Store.Jobs.IssueJobs.AgvServices; +namespace Win_in.Sfs.Wms.Store.Application.Contracts; public interface IAgvJobOutputService:IApplicationService { - + Task OutPutTaskAsync(AgvRequest request); } diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Win_in.Sfs.Wms.Store.Application.Contracts.csproj b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Win_in.Sfs.Wms.Store.Application.Contracts.csproj index 90381c415..4cfe35956 100644 --- a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Win_in.Sfs.Wms.Store.Application.Contracts.csproj +++ b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Win_in.Sfs.Wms.Store.Application.Contracts.csproj @@ -45,7 +45,6 @@ - diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Jobs/IssueJobs/AgvJobs/AgvJobInputService.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Jobs/IssueJobs/AgvJobs/AgvJobInputService.cs index bab8297fe..f8bb5cba1 100644 --- a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Jobs/IssueJobs/AgvJobs/AgvJobInputService.cs +++ b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Jobs/IssueJobs/AgvJobs/AgvJobInputService.cs @@ -22,7 +22,7 @@ namespace Win_in.Sfs.Wms.Store.Jobs.IssueJobs.AgvServices; [AllowAnonymous] [Route($"{StoreConsts.RootPath}agv-job-out")] -public class AgvJobOutput:ApplicationService +public class AgvJobInputService:ApplicationService { diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Jobs/IssueJobs/AgvJobs/AgvJobOutputService.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Jobs/IssueJobs/AgvJobs/AgvJobOutputService.cs index 41ab16d3a..a221101f6 100644 --- a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Jobs/IssueJobs/AgvJobs/AgvJobOutputService.cs +++ b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Jobs/IssueJobs/AgvJobs/AgvJobOutputService.cs @@ -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 _options; + private readonly ILogger _logger; + + public AgvJobOutputService( + UnitOfWorkManager unitOfWorkManager, + IHttpClientFactory httpClientFactory, + IOptions options, + ILogger logger + + ) + { + _logger = logger; + _unitOfWorkManager = unitOfWorkManager; + _httpClientFactory = httpClientFactory; + _options = options; + } + + + public async Task OutPutTaskAsync(T entity) where T : SfsJobDTOBase + 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 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; + + } } diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Jobs/IssueJobs/AssembleIssueJobs/AssembleIssueJobAppService.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Jobs/IssueJobs/AssembleIssueJobs/AssembleIssueJobAppService.cs index 4f9f966a0..7f687ac22 100644 --- a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Jobs/IssueJobs/AssembleIssueJobs/AssembleIssueJobAppService.cs +++ b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Jobs/IssueJobs/AssembleIssueJobs/AssembleIssueJobAppService.cs @@ -14,6 +14,7 @@ using Microsoft.Extensions.Options; using MyNamespace; using Omu.ValueInjecter; using Volo.Abp; +using Volo.Abp.Domain.Entities; using Volo.Abp.Uow; using Volo.Abp.Users; using Win_in.Sfs.Basedata.Application.Contracts; @@ -50,15 +51,22 @@ public class AssembleIssueJobAppService private readonly ICurrentUser _currentUser; private readonly UnitOfWorkManager _unitOfWorkManager; + + private readonly IAgvJobOutputService _agvOutJob; + public AssembleIssueJobAppService( ILogger logger, + IAgvJobOutputService agvOutJob, IAssembleIssueJobRepository repository, IAssembleIssueJobManager assembleIssueJobManager, ILocationAppService locationAppService, IAssembleIssueNoteAppService assembleIssueNoteAppService, IExpectOutAppService expectOutAppService - , IHttpClientFactory httpClientFactory - , IOptions options, ITransferLibRequestAppService transferLibRequestAppService, + ,IHttpClientFactory httpClientFactory + ,IOptions options, ITransferLibRequestAppService transferLibRequestAppService, ICurrentUser currentUser, UnitOfWorkManager unitOfWorkManager) : base( - repository, assembleIssueJobManager) + repository, assembleIssueJobManager + + + ) { _assembleIssueJobManager = assembleIssueJobManager; _locationAppService = locationAppService; @@ -70,6 +78,8 @@ public class AssembleIssueJobAppService _currentUser = currentUser; _unitOfWorkManager = unitOfWorkManager; _logger = logger; + _agvOutJob = agvOutJob; + } [HttpPost("get-by-number-2")] @@ -120,6 +130,10 @@ public class AssembleIssueJobAppService return assembleIssueJobDto; } + + + + [HttpPost("invalid")] public override async Task CancelAsync(Guid id) @@ -897,6 +911,23 @@ public class AssembleIssueJobAppService assembleIssueJobDetailDto.Status, assembleIssueJobDetailDto.HandledToLot, handledToQty).ConfigureAwait(false); } + /// + /// 调用AGV + /// + /// + /// + private async Task Completed(AssembleIssueJobDTO job) + { + var assemble = job; + var first = assemble.Details.FirstOrDefault(); + var requst = new AgvRequest(); + requst.MatCode = first.ItemCode; + requst.MatQty = first.HandledToQty; + requst.OrderNum = assemble.Number; + requst.OrderType = "2"; + return await _agvOutJob.OutPutTaskAsync(requst).ConfigureAwait(false); + } + #endregion } diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Jobs/IssueJobs/CoatingIssueJobs/CoatingIssueJobAppService.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Jobs/IssueJobs/CoatingIssueJobs/CoatingIssueJobAppService.cs index cc142eca0..7037b6de8 100644 --- a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Jobs/IssueJobs/CoatingIssueJobs/CoatingIssueJobAppService.cs +++ b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Jobs/IssueJobs/CoatingIssueJobs/CoatingIssueJobAppService.cs @@ -47,13 +47,14 @@ public class CoatingIssueJobAppService private readonly IOptions _options; private readonly ILogger _logger; private readonly ICurrentUser _currentUser; + private readonly IAgvJobOutputService _agvOutJob; protected ICoatingIssueRequestAppService CoatingIssueRequestAppService => LazyServiceProvider.LazyGetRequiredService(); public CoatingIssueJobAppService( - - ILogger logger, + IAgvJobOutputService agvOutJob, + ILogger logger, ICoatingIssueJobRepository repository, ICoatingIssueJobManager coatingIssueJobManager, ILocationAppService locationAppService, ICoatingIssueNoteAppService coatingIssueNoteAppService, IExpectOutAppService expectOutAppService @@ -70,6 +71,7 @@ public class CoatingIssueJobAppService _transferLibRequestAppService = transferLibRequestAppService; _currentUser = currentUser; _logger = logger; + _agvOutJob = agvOutJob; } [HttpPost("get-by-number-2")] @@ -722,6 +724,25 @@ public class CoatingIssueJobAppService coatingIssueJobDetailDto.Status, coatingIssueJobDetailDto.HandledToLot, handledToQty).ConfigureAwait(false); } + /// + /// 调用AgvOutPut出库 + /// + /// + /// + private async Task InvokeAgvOutput(CoatingIssueJob job) + { + + var first = job.Details.FirstOrDefault(); + var requst = new AgvRequest(); + requst.MatCode = first.ItemCode; + requst.MatQty = first.HandledToQty; + requst.OrderNum = job.Number; + requst.OrderType = "2"; + return await _agvOutJob.OutPutTaskAsync(requst).ConfigureAwait(false); + } + + + #endregion } diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Jobs/IssueJobs/InjectionIssueJobs/InjectionIssueJobAppService.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Jobs/IssueJobs/InjectionIssueJobs/InjectionIssueJobAppService.cs index 38de02d7f..306e2a1be 100644 --- a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Jobs/IssueJobs/InjectionIssueJobs/InjectionIssueJobAppService.cs +++ b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Jobs/IssueJobs/InjectionIssueJobs/InjectionIssueJobAppService.cs @@ -43,12 +43,14 @@ public class InjectionIssueJobAppService private readonly ITransferLibRequestAppService _transferLibRequestAppService; private readonly IOptions _options; private readonly ICurrentUser _currentUser; + private readonly IAgvJobOutputService _agvOutJob; protected IInjectionIssueRequestAppService InjectionIssueRequestAppService => LazyServiceProvider.LazyGetRequiredService(); public InjectionIssueJobAppService( - IInjectionIssueJobRepository repository, IInjectionIssueJobManager injectionIssueJobManager, + IAgvJobOutputService agvOutJob, + IInjectionIssueJobRepository repository, IInjectionIssueJobManager injectionIssueJobManager, ILocationAppService locationAppService, IInjectionIssueNoteAppService injectionIssueNoteAppService, IExpectOutAppService expectOutAppService , IHttpClientFactory httpClientFactory @@ -63,6 +65,7 @@ public class InjectionIssueJobAppService _options = options; _transferLibRequestAppService = transferLibRequestAppService; _currentUser = currentUser; + _agvOutJob = agvOutJob; } [HttpPost("get-by-number-2")] public async Task GetByNumber2Async(string number) @@ -670,6 +673,22 @@ public class InjectionIssueJobAppService injectionIssueJobDetailDto.Status, injectionIssueJobDetailDto.HandledToLot, handledToQty).ConfigureAwait(false); } + /// + /// 调用AgvOutPut出库 + /// + /// + /// + private async Task InvokeAgvOutput(InjectionIssueJob job) + { + + var first = job.Details.FirstOrDefault(); + var requst = new AgvRequest(); + requst.MatCode = first.ItemCode; + requst.MatQty = first.HandledToQty; + requst.OrderNum = job.Number; + requst.OrderType = "2"; + return await _agvOutJob.OutPutTaskAsync(requst).ConfigureAwait(false); + } #endregion } diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Jobs/IssueJobs/KittingIssueJobs/KittingIssueJobAppService.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Jobs/IssueJobs/KittingIssueJobs/KittingIssueJobAppService.cs index f7ced55b9..4548f5593 100644 --- a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Jobs/IssueJobs/KittingIssueJobs/KittingIssueJobAppService.cs +++ b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Jobs/IssueJobs/KittingIssueJobs/KittingIssueJobAppService.cs @@ -43,18 +43,21 @@ public class KittingIssueJobAppService private readonly ITransferLibRequestAppService _transferLibRequestAppService; private readonly IOptions _options; private readonly ICurrentUser _currentUser; + private readonly IAgvJobOutputService _agvOutJob; protected IKittingIssueRequestAppService KittingIssueRequestAppService => LazyServiceProvider.LazyGetRequiredService(); public KittingIssueJobAppService( - IKittingIssueJobRepository repository, IKittingIssueJobManager kittingIssueJobManager, + IAgvJobOutputService agvOutJob, + IKittingIssueJobRepository repository, IKittingIssueJobManager kittingIssueJobManager, ILocationAppService locationAppService, IKittingIssueNoteAppService kittingIssueNoteAppService, IExpectOutAppService expectOutAppService , IHttpClientFactory httpClientFactory , IOptions options, ITransferLibRequestAppService transferLibRequestAppService, ICurrentUser currentUser) : base( repository, kittingIssueJobManager) { + _agvOutJob = agvOutJob; _kittingIssueJobManager = kittingIssueJobManager; _locationAppService = locationAppService; _kittingIssueNoteAppService = kittingIssueNoteAppService; @@ -680,7 +683,23 @@ public class KittingIssueJobAppService kittingIssueJobDetailDto.Status, kittingIssueJobDetailDto.HandledToLot, handledToQty).ConfigureAwait(false); } - - + /// + /// 调用AgvOutPut出库 + /// + /// + /// + private async Task InvokeAgvOutput(KittingIssueJobDTO job) + { + + var first = job.Details.FirstOrDefault(); + var requst = new AgvRequest(); + requst.MatCode = first.ItemCode; + requst.MatQty = first.HandledToQty; + requst.OrderNum = job.Number; + requst.OrderType = "2"; + return await _agvOutJob.OutPutTaskAsync(requst).ConfigureAwait(false); + } + + #endregion } diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Jobs/IssueJobs/SparePartIssueJobs/SparePartIssueJobAppService.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Jobs/IssueJobs/SparePartIssueJobs/SparePartIssueJobAppService.cs index f481bddf1..3d5273c3a 100644 --- a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Jobs/IssueJobs/SparePartIssueJobs/SparePartIssueJobAppService.cs +++ b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Jobs/IssueJobs/SparePartIssueJobs/SparePartIssueJobAppService.cs @@ -43,12 +43,14 @@ public class SparePartIssueJobAppService private readonly ITransferLibRequestAppService _transferLibRequestAppService; private readonly IOptions _options; private readonly ICurrentUser _currentUser; + private readonly IAgvJobOutputService _agvOutJob; protected ISparePartIssueRequestAppService SparePartIssueRequestAppService => LazyServiceProvider.LazyGetRequiredService(); public SparePartIssueJobAppService( - ISparePartIssueJobRepository repository, ISparePartIssueJobManager sparePartIssueJobManager, + IAgvJobOutputService _agvOutJob, + ISparePartIssueJobRepository repository, ISparePartIssueJobManager sparePartIssueJobManager, ILocationAppService locationAppService, ISparePartIssueNoteAppService sparePartIssueNoteAppService, IExpectOutAppService expectOutAppService , IHttpClientFactory httpClientFactory @@ -662,5 +664,23 @@ public class SparePartIssueJobAppService handledToQty).ConfigureAwait(false); } + /// + /// 调用AgvOutPut出库 + /// + /// + /// + private async Task InvokeAgvOutput(SparePartIssueJobDTO job) + { + + var first = job.Details.FirstOrDefault(); + var requst = new AgvRequest(); + requst.MatCode = first.ItemCode; + requst.MatQty = first.HandledToQty; + requst.OrderNum = job.Number; + requst.OrderType = "2"; + return await _agvOutJob.OutPutTaskAsync(requst).ConfigureAwait(false); + } + + #endregion } diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Jobs/IssueJobs/proxy/AgvJobClient.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Jobs/IssueJobs/proxy/AgvJobClient.cs index 7ab2160e2..7c23313c4 100644 --- a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Jobs/IssueJobs/proxy/AgvJobClient.cs +++ b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Jobs/IssueJobs/proxy/AgvJobClient.cs @@ -3,6 +3,7 @@ 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; @@ -19,11 +20,14 @@ namespace Win_in.Sfs.Wms.Store.Jobs.IssueJobs.proxy; 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) + 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(); } @@ -360,63 +364,7 @@ namespace Win_in.Sfs.Wms.Store.Jobs.IssueJobs.proxy; } - /// - /// 闻荫调海康入参 - /// - [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "14.2.0.0 (NJsonSchema v11.1.0.0 (Newtonsoft.Json v13.0.0.0))")] - public partial class AgvRequest - { - /// - /// 任务类型 - /// - - [System.Text.Json.Serialization.JsonPropertyName("orderType")] - public string OrderType { get; set; } - - /// - /// 任务编号 - /// - - [System.Text.Json.Serialization.JsonPropertyName("orderNum")] - public string OrderNum { get; set; } - - /// - /// 物料编号 - /// - - [System.Text.Json.Serialization.JsonPropertyName("matCode")] - public string MatCode { get; set; } - - /// - /// 物料数量 - /// - - [System.Text.Json.Serialization.JsonPropertyName("matQty")] - public string MatQty { get; set; } - - /// - /// 目标工位 - /// - - [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; } - - } + diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/StoreApplicationModule.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/StoreApplicationModule.cs index 62a70b216..5c87cbb67 100644 --- a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/StoreApplicationModule.cs +++ b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/StoreApplicationModule.cs @@ -29,6 +29,7 @@ public class StoreApplicationModule : AbpModule Configure(configuration.GetSection("RestoOptions")); + Configure(configuration.GetSection("AgvOptions")); //context.Services.Replace(ServiceDescriptor.Transient()); //context.Services.Replace(ServiceDescriptor.Transient()); diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Options/RestoOptions.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Options/RestoOptions.cs index e4fbb583f..13059560a 100644 --- a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Options/RestoOptions.cs +++ b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Options/RestoOptions.cs @@ -27,3 +27,28 @@ public class RestoOptions } + +public class AgvOptions +{ + // IP 地址 + public string Address { set; get; } + // 用户名 + public string UserName { set; get; } + // 密码 + public string Password { set; get; } + // 令牌 + public string Token { set; get; } + // 路径 + public string Path { set; get; } + + //立体库用户名 + public string StereosUser { set; get; } + + //立体库密码 + public string StereosPassword { set; get; } + + + +} + +