From 379ae8a8a27bcd2b58b4de5e9affc6f977f9c684 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=AD=A6=20=E8=B5=B5?= <89237069@qq.com> Date: Wed, 27 Nov 2024 13:24:55 +0800 Subject: [PATCH 1/6] up --- .../BasedataApplicationAutoMapperProfile.cs | 1 + .../PostionLocationAppService.cs | 41 ++++++++++++++- .../PostionLocationAutoMapperProfile.cs | 50 ++++++++++++------- .../ProductionLineItemAppService.cs | 2 +- ...asedataDbContextModelCreatingExtensions.cs | 1 + ...ocationDbContextModelCreatingExtensions.cs | 2 +- 6 files changed, 74 insertions(+), 23 deletions(-) diff --git a/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application/BasedataApplicationAutoMapperProfile.cs b/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application/BasedataApplicationAutoMapperProfile.cs index 03ec64de1..4be81bc5d 100644 --- a/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application/BasedataApplicationAutoMapperProfile.cs +++ b/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application/BasedataApplicationAutoMapperProfile.cs @@ -57,6 +57,7 @@ public partial class BasedataApplicationAutoMapperProfile : Profile EquipmentLocAutoMapperProfile(); EquipmentPartCodeAutoMapperProfile(); EquipmentLocCapAutoMapperProfile(); + PostionLocationAutoMapperProfile(); } diff --git a/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application/PostionLocations/PostionLocationAppService.cs b/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application/PostionLocations/PostionLocationAppService.cs index 18f269f0a..0968064ee 100644 --- a/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application/PostionLocations/PostionLocationAppService.cs +++ b/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application/PostionLocations/PostionLocationAppService.cs @@ -19,10 +19,12 @@ using Win_in.Sfs.Shared.Domain; using Volo.Abp.ObjectMapping; using Win_in.Sfs.Shared.Application.Contracts; using Volo.Abp; +using Microsoft.EntityFrameworkCore; +using System.Linq; namespace Win_in.Sfs.Basedata.Application; -[Authorize] +[AllowAnonymous] [Route($"{BasedataConsts.RootPath}PostionLocation")] public class PostionLocationAppService @@ -86,7 +88,41 @@ public class PostionLocationAppService return pageResult; } - + + protected override async Task ValidateImportModelAsync(PostionLocationImportInput importInput, + List validationRresult) + { + await base.ValidateImportModelAsync(importInput, validationRresult).ConfigureAwait(false); + await CheckLocationCodeAsync(importInput.LocationCode, validationRresult).ConfigureAwait(false); + await CheckSameItem(importInput.Code,importInput.LocationCode,validationRresult).ConfigureAwait(false); + //CheckProductionLineProdLineCodeJsonAsync(importInput.RawLocationCodeListJson, validationRresult); + //CheckProductionLineProdLineCodeJsonAsync(importInput.ProductLocationCodeListJson, validationRresult); + //CheckProductionLineProdLineCodeJsonAsync(importInput.WipLocationCodeListJson, validationRresult); + + } + + private async Task CheckLocationCodeAsync(string locationCode, List validationRresult) + { + var list = await _locationAppService.GetByCodeAsync(locationCode).ConfigureAwait(false); + if (list == null) + { + validationRresult.Add(new ValidationResult($"{locationCode}库位编码不存在,请查看库位信息!")); + } + } + + private async Task CheckSameItem(string code, string locationCode, List validationRresult) + { + var item = await _repository.FirstOrDefaultAsync(r => r.Code == code && r.LocationCode == locationCode).ConfigureAwait(false); + if (item != null) + { + validationRresult.Add(new ValidationResult($"工作站编码{code}库位编码{locationCode}已存在", new string[] { "工作站编码", "库位编码" })); + } + + } + + + + [HttpPost("get-or-add")] public virtual async Task GetOrAddAsync(PostionLocationEditInput input) { @@ -94,6 +130,7 @@ public class PostionLocationAppService var result = await _repository.FirstOrDefaultAsync(p => p.Code == input.Code).ConfigureAwait(false); if (result == null) { + var entity = ObjectMapper.Map(input); result = await _repository.InsertAsync(entity, true).ConfigureAwait(false); } diff --git a/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application/PostionLocations/PostionLocationAutoMapperProfile.cs b/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application/PostionLocations/PostionLocationAutoMapperProfile.cs index 702d7c9c9..2d732d18f 100644 --- a/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application/PostionLocations/PostionLocationAutoMapperProfile.cs +++ b/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application/PostionLocations/PostionLocationAutoMapperProfile.cs @@ -12,33 +12,45 @@ public partial class BasedataApplicationAutoMapperProfile : Profile CreateMap() .ReverseMap(); + CreateMap() .IgnoreAuditedObjectProperties() .Ignore(x => x.TenantId) .Ignore(x => x.ExtraProperties) .Ignore(x => x.ConcurrencyStamp) - //.Ignore(x => x.EnableMixItem) - //.Ignore(x => x.EnableMixLot) - //.Ignore(x => x.EnableMixStatus) - //.Ignore(x => x.EnableNegative) - //.Ignore(x => x.EnableKeepZero) - //.Ignore(x => x.EnableOpportunityCount) - //.Ignore(x => x.EnablePick) - //.Ignore(x => x.EnableOverPick) - //.Ignore(x => x.EnableWholeStore) - //.Ignore(x => x.EnableBreakStore) - //.Ignore(x => x.EnableShip) - //.Ignore(x => x.EnableReceive) - //.Ignore(x => x.EnableReturnToSupplier) - //.Ignore(x => x.EnableReturnFromCustomer) - //.Ignore(x => x.EnableSplitPallet) - //.Ignore(x => x.EnableSplitBox) - - ; + .Ignore(x => x.Id) + .Ignore(x => x.Remark); + //.Ignore(x => x.EnableMixItem) + //.Ignore(x => x.EnableMixLot) + //.Ignore(x => x.EnableMixStatus) + //.Ignore(x => x.EnableNegative) + //.Ignore(x => x.EnableKeepZero) + //.Ignore(x => x.EnableOpportunityCount) + //.Ignore(x => x.EnablePick) + //.Ignore(x => x.EnableOverPick) + //.Ignore(x => x.EnableWholeStore) + //.Ignore(x => x.EnableBreakStore) + //.Ignore(x => x.EnableShip) + //.Ignore(x => x.EnableReceive) + //.Ignore(x => x.EnableReturnToSupplier) + //.Ignore(x => x.EnableReturnFromCustomer) + //.Ignore(x => x.EnableSplitPallet) + //.Ignore(x => x.EnableSplitBox) + + ; CreateMap() - .Ignore(x => x.ReportStatus) + .Ignore(x => x.ReportStatus) .Ignore(x => x.ReportReason); + CreateMap() + .IgnoreAuditedObjectProperties() + .Ignore(x => x.TenantId) + .Ignore(x => x.ExtraProperties) + .Ignore(x => x.ConcurrencyStamp) + .Ignore(x => x.Id) + .Ignore(x => x.Remark); + + } } diff --git a/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application/ProductionLineItems/ProductionLineItemAppService.cs b/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application/ProductionLineItems/ProductionLineItemAppService.cs index 5bcc8eeda..927c12e56 100644 --- a/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application/ProductionLineItems/ProductionLineItemAppService.cs +++ b/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application/ProductionLineItems/ProductionLineItemAppService.cs @@ -106,7 +106,7 @@ public class ProductionLineItemAppService : } private void CheckProductionLineProdLineCodeJsonAsync(string locationCodeList, List validationRresult) { - if (!string.IsNullOrEmpty(locationCodeList)) + if (string.IsNullOrEmpty(locationCodeList)) { validationRresult.Add(new ValidationResult($"请维护生产线和库位关系")); } diff --git a/be/Modules/BaseData/src/Win_in.Sfs.Basedata.EntityFrameworkCore/BasedataDbContextModelCreatingExtensions.cs b/be/Modules/BaseData/src/Win_in.Sfs.Basedata.EntityFrameworkCore/BasedataDbContextModelCreatingExtensions.cs index b3d8b50a5..54cb6b6ef 100644 --- a/be/Modules/BaseData/src/Win_in.Sfs.Basedata.EntityFrameworkCore/BasedataDbContextModelCreatingExtensions.cs +++ b/be/Modules/BaseData/src/Win_in.Sfs.Basedata.EntityFrameworkCore/BasedataDbContextModelCreatingExtensions.cs @@ -73,6 +73,7 @@ public static class BasedataDbContextModelCreatingExtensions builder.ConfigureKitting(options); builder.ConfigureEquipmentLoc(options); builder.ConfigureEquipmentPartCode(options); + builder.ConfigurePostionLocation(options); } diff --git a/be/Modules/BaseData/src/Win_in.Sfs.Basedata.EntityFrameworkCore/PostionLocations/PostionLocationDbContextModelCreatingExtensions.cs b/be/Modules/BaseData/src/Win_in.Sfs.Basedata.EntityFrameworkCore/PostionLocations/PostionLocationDbContextModelCreatingExtensions.cs index 7f66e95b5..d53b69eb3 100644 --- a/be/Modules/BaseData/src/Win_in.Sfs.Basedata.EntityFrameworkCore/PostionLocations/PostionLocationDbContextModelCreatingExtensions.cs +++ b/be/Modules/BaseData/src/Win_in.Sfs.Basedata.EntityFrameworkCore/PostionLocations/PostionLocationDbContextModelCreatingExtensions.cs @@ -13,7 +13,7 @@ public static class PostionLocationDbContextModelCreatingExtensions builder.Entity(b => { //Configure table & schema name - b.ToTable(options.TablePrefix + nameof(Location), options.Schema); + b.ToTable(options.TablePrefix + nameof(PostionLocation), options.Schema); //Configure ABP properties b.ConfigureByConvention(); //Configure Sfs base properties From e5956205d55baf48f52a12102fab943df32636bd 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 10:57:11 +0800 Subject: [PATCH 2/6] =?UTF-8?q?=E6=9A=82=E5=AD=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../test/TestAppService.cs | 120 ++++- .../IssueJobs/AgvJobs/IAgvJobInputService.cs | 12 + .../IssueJobs/AgvJobs/IAgvJobOutputService.cs | 12 + ...Sfs.Wms.Store.Application.Contracts.csproj | 1 + .../Jobs/IssueJobs/AgvJobs/AgvDto.cs | 76 +++ .../IssueJobs/AgvJobs/AgvJobInputService.cs | 29 ++ .../IssueJobs/AgvJobs/AgvJobOutputService.cs | 27 ++ .../Jobs/IssueJobs/proxy/AgvJobClient.cs | 459 ++++++++++++++++++ 8 files changed, 727 insertions(+), 9 deletions(-) create mode 100644 be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Jobs/IssueJobs/AgvJobs/IAgvJobInputService.cs create mode 100644 be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Jobs/IssueJobs/AgvJobs/IAgvJobOutputService.cs create mode 100644 be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Jobs/IssueJobs/AgvJobs/AgvDto.cs create mode 100644 be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Jobs/IssueJobs/AgvJobs/AgvJobInputService.cs create mode 100644 be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Jobs/IssueJobs/AgvJobs/AgvJobOutputService.cs create mode 100644 be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Jobs/IssueJobs/proxy/AgvJobClient.cs 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 60ee8ab81..468d43f51 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 @@ -1,5 +1,6 @@ using System; using System.Collections.Generic; +using System.ComponentModel.DataAnnotations; using System.Linq; using System.Threading.Tasks; using DocumentFormat.OpenXml.Office2010.Drawing; @@ -25,7 +26,7 @@ namespace Win_in.Sfs.Basedata.Application; /// 接口模拟测试 /// [AllowAnonymous] -[Route($"CargoState")] + public class TestService:ApplicationService { private readonly IServiceProvider _serviceProvider; @@ -35,7 +36,7 @@ public class TestService:ApplicationService _serviceProvider = serviceProvider; _options = options; } - + /* /// /// 生命周期操作 /// @@ -76,6 +77,7 @@ public class TestService:ApplicationService return t; } + */ //[HttpPost("SyncIssueJobStereo")] //public virtual async Task SyncIssueJobStereoAsync(IssueJobToRestoDTO input) @@ -92,22 +94,52 @@ public class TestService:ApplicationService //} - [HttpPost("GetCargoStatic1")] - /// - /// 异步开始生命周期操作不能堵塞 - /// - public async Task GetCargoStatic1(ResponCargos p_cas) + //[HttpPost("GetCargoStatic1")] + ///// + ///// 异步开始生命周期操作不能堵塞 + ///// + //public async Task GetCargoStatic1(ResponCargos p_cas) + //{ + + + + // return p_cas; + + //} + + [HttpPost("pushOutTask4FW")] + public async Task pushOutTask4FW(AgvRequest request) { + + AgvResultObject reusltObject = new AgvResultObject(); + reusltObject.Code = "0"; + reusltObject.Message = "OK"; + reusltObject.ReqCode = "T6000001970"; + return reusltObject; - return p_cas; - } + //List result = new List(); + + //result.Add(new ResponCargoItem() { AreaID = "1", CargoID = "PTXB1", PartCode = "TMDLYA0A071AB", Flag = 0 }); + //result.Add(new ResponCargoItem() { AreaID = "1", CargoID = "PTXB2", PartCode = "TMDLYA0A061AB", Flag = 0 }); + //result.Add(new ResponCargoItem() { AreaID = "2", CargoID = "ZSXB2", PartCode = "TMDLYD0ABM5A", Flag = 0 }); + //result = result.Where(p => p.AreaID == AreaID).ToList(); + //var t = new ResponCargos(); + //t.Code = 200; + //t.Msg = "Success"; + //t.Datalist = result; + + + //return t; + + } + @@ -145,6 +177,76 @@ public class ReusltObject public string Message { set; get; } public string OperateTime { set; get; } } +public class AgvResultObject +{ + public string Code { set; get; } + public string Message { set; get; } + public string ReqCode { set; get; } +} +public class AgvRequestHK +{ + [Display(Name ="请求编号")] + public string ReqCode { set; get; } + [Display(Name ="明细")] + public List Data { set; get; } + +} +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; } + +} + + +/// +/// 闻荫调海康入参 +/// +public 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; } + +} + + + 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 new file mode 100644 index 000000000..d82b05379 --- /dev/null +++ b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Jobs/IssueJobs/AgvJobs/IAgvJobInputService.cs @@ -0,0 +1,12 @@ +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.Jobs.IssueJobs.AgvServices; +public interface AgvJobOutputService: IApplicationService +{ +} 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 new file mode 100644 index 000000000..3f4a5fdd9 --- /dev/null +++ b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Jobs/IssueJobs/AgvJobs/IAgvJobOutputService.cs @@ -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.Jobs.IssueJobs.AgvServices; +public interface IAgvJobOutputService:IApplicationService +{ + public Output +} 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 4cfe35956..90381c415 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,6 +45,7 @@ + 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/Jobs/IssueJobs/AgvJobs/AgvDto.cs new file mode 100644 index 000000000..49a75f6ef --- /dev/null +++ b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Jobs/IssueJobs/AgvJobs/AgvDto.cs @@ -0,0 +1,76 @@ +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.Jobs.IssueJobs.AgvServices; +/// +/// 海康调闻荫入参数 +/// +public class AgvRequestHK +{ + [Display(Name = "请求编号")] + public string ReqCode { set; get; } + [Display(Name = "明细")] + public List Data { set; get; } + +} +/// +/// 海康调闻荫入参明细 +/// +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; } + +} +/// +/// 闻荫调海康入参 +/// +public 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; } + +} + + + 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 new file mode 100644 index 000000000..bab8297fe --- /dev/null +++ b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Jobs/IssueJobs/AgvJobs/AgvJobInputService.cs @@ -0,0 +1,29 @@ +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-out")] +public class AgvJobOutput: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 new file mode 100644 index 000000000..41ab16d3a --- /dev/null +++ b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Jobs/IssueJobs/AgvJobs/AgvJobOutputService.cs @@ -0,0 +1,27 @@ +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-in")] +public class AgvJobInputService : ApplicationService +{ + + +} 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 new file mode 100644 index 000000000..7ab2160e2 --- /dev/null +++ b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Jobs/IssueJobs/proxy/AgvJobClient.cs @@ -0,0 +1,459 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +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 _settings = new System.Lazy(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) +#pragma warning restore CS8618 // Non-nullable field must contain a non-null value when exiting constructor. Consider declaring as nullable. + { + BaseUrl = baseUrl; + _httpClient = httpClient; + 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); + + /// Success + /// A server side error occurred. + public virtual System.Threading.Tasks.Task PushOutTask4FWAsync(AgvRequest body) + { + return PushOutTask4FWAsync(body, System.Threading.CancellationToken.None); + } + + /// A cancellation token that can be used by other objects or threads to receive notice of cancellation. + /// Success + /// A server side error occurred. + public virtual async System.Threading.Tasks.Task 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>(); + 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(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(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("Forbidden", status_, objectResponse_.Text, headers_, objectResponse_.Object, null); + } + else + if (status_ == 401) + { + var objectResponse_ = await ReadObjectResponseAsync(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("Unauthorized", status_, objectResponse_.Text, headers_, objectResponse_.Object, null); + } + else + if (status_ == 400) + { + var objectResponse_ = await ReadObjectResponseAsync(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("Bad Request", status_, objectResponse_.Text, headers_, objectResponse_.Object, null); + } + else + if (status_ == 404) + { + var objectResponse_ = await ReadObjectResponseAsync(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("Not Found", status_, objectResponse_.Text, headers_, objectResponse_.Object, null); + } + else + if (status_ == 501) + { + var objectResponse_ = await ReadObjectResponseAsync(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("Server Error", status_, objectResponse_.Text, headers_, objectResponse_.Object, null); + } + else + if (status_ == 500) + { + var objectResponse_ = await ReadObjectResponseAsync(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("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 + { + 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> ReadObjectResponseAsync(System.Net.Http.HttpResponseMessage response, System.Collections.Generic.IReadOnlyDictionary> headers, System.Threading.CancellationToken cancellationToken) + { + if (response == null || response.Content == null) + { + return new ObjectResponseResult(default(T), string.Empty); + } + + if (ReadResponseAsString) + { + var responseText = await response.Content.ReadAsStringAsync().ConfigureAwait(false); + try + { + var typedBody = System.Text.Json.JsonSerializer.Deserialize(responseText, JsonSerializerSettings); + return new ObjectResponseResult(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(responseStream, JsonSerializerSettings, cancellationToken).ConfigureAwait(false); + return new ObjectResponseResult(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 Data { get; set; } + + [System.Text.Json.Serialization.JsonPropertyName("validationErrors")] + public System.Collections.Generic.ICollection 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 Members { 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 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; } + + } + + + + [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> Headers { get; private set; } + + public ApiException(string message, int statusCode, string response, System.Collections.Generic.IReadOnlyDictionary> 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 : ApiException + { + public TResult Result { get; private set; } + + public ApiException(string message, int statusCode, string response, System.Collections.Generic.IReadOnlyDictionary> headers, TResult result, System.Exception innerException) + : base(message, statusCode, response, headers, innerException) + { + Result = result; + } + } + + + From 804a70177d369ad38d90081e162a89ab302abe4f 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 11:03:44 +0800 Subject: [PATCH 3/6] up --- .../Jobs/IssueJobs/AgvJobs/IAgvJobOutputService.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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 3f4a5fdd9..7cf72dccc 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 @@ -8,5 +8,5 @@ using Volo.Abp.Application.Services; namespace Win_in.Sfs.Wms.Store.Jobs.IssueJobs.AgvServices; public interface IAgvJobOutputService:IApplicationService { - public Output + } 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 4/6] =?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; } + + + +} + + From cf621d3ae70ee4c15dfe7396247b5f74ab7b65c3 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:50:37 +0800 Subject: [PATCH 5/6] up --- .../IssueJobs/AgvJobs/AgvJobOutputService.cs | 118 +++++++++--------- 1 file changed, 59 insertions(+), 59 deletions(-) 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 a221101f6..a4db72739 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 @@ -50,68 +50,68 @@ public class AgvJobOutputService : ApplicationService, IAgvJobOutputService } - 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"; + //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 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"; + // 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); - } - } + // await OutPutTaskAsync(requst).ConfigureAwait(false); + // } + //} [HttpPost("out-put-task")] public async Task OutPutTaskAsync(AgvRequest request) { From 6a87fe26065a6fd7a6df66299b13728fa542af73 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=AD=A6=20=E8=B5=B5?= <89237069@qq.com> Date: Fri, 29 Nov 2024 10:00:47 +0800 Subject: [PATCH 6/6] =?UTF-8?q?=E6=8F=90=E4=BA=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Dy_ExchangeApplicationModule.cs | 7 +- .../DataExchangeInterfaceConfigAppService.cs | 30 ++++-- .../DataExchangeInterfaceOptions.cs | 24 +++++ .../Dy_ExchangeHttpApiHostModule.cs | 2 + .../Dy_Exchange.HttpApi.Host/appsettings.json | 60 +++++++----- .../Jobs/IssueJobs/AgvJobs/DTOS/AgvDto.cs | 14 +++ ...putService.cs => IAgvJobAccountService.cs} | 4 +- .../IssueJobs/AgvJobs/AgvJobAccountService.cs | 98 +++++++++++++++++++ .../IssueJobs/AgvJobs/AgvJobInputService.cs | 29 ------ .../AssembleIssueJobAppService.cs | 13 ++- .../KittingIssueJobAppService.cs | 1 + .../SparePartIssueJobAppService.cs | 3 +- .../settings/appsettings.Development.json | 40 +++++--- 13 files changed, 241 insertions(+), 84 deletions(-) create mode 100644 InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Application/Z_Business/DataExchangeInterfaceOptions.cs rename be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Jobs/IssueJobs/AgvJobs/{IAgvJobInputService.cs => IAgvJobAccountService.cs} (62%) create mode 100644 be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Jobs/IssueJobs/AgvJobs/AgvJobAccountService.cs delete mode 100644 be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Jobs/IssueJobs/AgvJobs/AgvJobInputService.cs diff --git a/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Application/Dy_ExchangeApplicationModule.cs b/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Application/Dy_ExchangeApplicationModule.cs index c61073b2e..13e9e1e7b 100644 --- a/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Application/Dy_ExchangeApplicationModule.cs +++ b/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Application/Dy_ExchangeApplicationModule.cs @@ -1,4 +1,6 @@ -using Volo.Abp.Account; +using Dy_Exchange.Z_Business; +using Microsoft.Extensions.DependencyInjection; +using Volo.Abp.Account; using Volo.Abp.AutoMapper; using Volo.Abp.FeatureManagement; using Volo.Abp.Identity; @@ -23,9 +25,12 @@ public class Dy_ExchangeApplicationModule : AbpModule { public override void ConfigureServices(ServiceConfigurationContext context) { + var configuration = context.Services.GetConfiguration(); Configure(options => { options.AddMaps(); }); + Configure(configuration.GetSection("DataExchangeInterfaceOptions")); + } } diff --git a/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Application/Z_Business/DataExchangeInterfaceConfigAppService.cs b/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Application/Z_Business/DataExchangeInterfaceConfigAppService.cs index 5f50aad79..ea9fd6197 100644 --- a/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Application/Z_Business/DataExchangeInterfaceConfigAppService.cs +++ b/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Application/Z_Business/DataExchangeInterfaceConfigAppService.cs @@ -6,6 +6,7 @@ using System.Net.Http; using System.Net.NetworkInformation; using System.Security.Policy; using System.Text; +using System.Text.Json; using System.Threading; using System.Threading.Tasks; using Dy_Exchange.Enums; @@ -13,6 +14,8 @@ using Dy_Exchange.Permissions; using Dy_Exchange.Z_Business.Dtos; using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Mvc; +using Microsoft.Extensions.Options; +using NPOI.SS.Formula.Functions; using Volo.Abp; using Volo.Abp.Application.Dtos; using Volo.Abp.Application.Services; @@ -33,6 +36,7 @@ public class DataExchangeInterfaceConfigAppService : ZbxBase _options; + - public DataExchangeInterfaceConfigAppService(IDataExchangeInterfaceConfigRepository repository) : base(repository) + public DataExchangeInterfaceConfigAppService(IDataExchangeInterfaceConfigRepository repository, IOptions options) : base(repository) { _repository = repository; + _options = options; + + + + } [HttpPost("CheckWmsStatusAsync")] @@ -55,6 +66,7 @@ public class DataExchangeInterfaceConfigAppService : ZbxBase CloseWmsAsync() { var list=await _repository.GetListAsync().ConfigureAwait(false); - var removeWmsCodeList=list.Where(p => p.Code != wmsCode).ToList(); + var removeWmsCodeList=list.Where(p => p.Code != _options.Value.WmsCode).ToList(); if (removeWmsCodeList.Any(p => p.Status == EnumStatus.Running||p.Active==true)) { throw new UserFriendlyException($"δرյĽӿڳ{removeWmsCodeList.First().Code}޷رWMS"); @@ -131,15 +143,15 @@ public class DataExchangeInterfaceConfigAppService : ZbxBase p.Code == wmsCode).ConfigureAwait(false); + var wmsConfig=await _repository.FindAsync(p => p.Code == _options.Value.WmsCode).ConfigureAwait(false); if (wmsConfig == null) { throw new UserFriendlyException("δҵWMSĿ"); } - var stop1= ExecuteBatFile(cmdClosePath1); + var stop1= ExecuteBatFile(_options.Value.CmdClosePath1); Thread.Sleep(2000); // 2 - var stop2 = ExecuteBatFile(cmdClosePath2); + var stop2 = ExecuteBatFile(_options.Value.CmdClosePath2); return true; } @@ -157,9 +169,9 @@ public class DataExchangeInterfaceConfigAppService : ZbxBase UpdateAsync(Guid id, CreateUpdateDataExchangeInterfaceConfigDto input) { - if (input.Code != wmsCode&&input.Active==true) + if (input.Code != _options.Value.WmsCode&&input.Active==true) { - bool isPageLoaded = await IsPageLoadedSuccessfullyAsync(wmsUrl).ConfigureAwait(false); + bool isPageLoaded = await IsPageLoadedSuccessfullyAsync(_options.Value.WmsUrl).ConfigureAwait(false); if (!isPageLoaded) { throw new UserFriendlyException("WMSδɹ,Ժӿ"); @@ -167,12 +179,12 @@ public class DataExchangeInterfaceConfigAppService : ZbxBase Data { set; get; } } +/// +/// 海康调闻荫入参数 +/// +public class AgvRequestOnlyJobHK +{ + //[Display(Name = "请求编号")] + //public string ReqCode { set; get; } + [Display(Name = "明细")] + public List Data { set; get; } + +} + + + /// /// 海康调闻荫入参明细 /// 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/IAgvJobAccountService.cs similarity index 62% rename from be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Jobs/IssueJobs/AgvJobs/IAgvJobInputService.cs rename to be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Jobs/IssueJobs/AgvJobs/IAgvJobAccountService.cs index 031cecda6..f1bbb2ead 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/IAgvJobAccountService.cs @@ -7,10 +7,10 @@ using Volo.Abp; using Volo.Abp.Application.Services; namespace Win_in.Sfs.Wms.Store.Application.Contracts; -public interface AgvJobOutputService: IApplicationService +public interface IAgvJobAccountService: IApplicationService { - Task OutTaskAsync(AgvRequest request); + Task AccountOutOrderAsync(AgvRequestOnlyJobHK request); } diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Jobs/IssueJobs/AgvJobs/AgvJobAccountService.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Jobs/IssueJobs/AgvJobs/AgvJobAccountService.cs new file mode 100644 index 000000000..6b91fc539 --- /dev/null +++ b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Jobs/IssueJobs/AgvJobs/AgvJobAccountService.cs @@ -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 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; + + } + } + + } +} 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 deleted file mode 100644 index f8bb5cba1..000000000 --- a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Jobs/IssueJobs/AgvJobs/AgvJobInputService.cs +++ /dev/null @@ -1,29 +0,0 @@ -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-out")] -public class AgvJobInputService:ApplicationService -{ - - -} 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 7f687ac22..0a6e7c99a 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 @@ -911,19 +911,22 @@ public class AssembleIssueJobAppService assembleIssueJobDetailDto.Status, assembleIssueJobDetailDto.HandledToLot, handledToQty).ConfigureAwait(false); } + + + /// - /// 调用AGV + /// 调用AgvOutPut出库 /// /// /// - private async Task Completed(AssembleIssueJobDTO job) + private async Task InvokeAgvOutput(AssembleIssueJobDTO job) { - var assemble = job; - var first = assemble.Details.FirstOrDefault(); + + var first = job.Details.FirstOrDefault(); var requst = new AgvRequest(); requst.MatCode = first.ItemCode; requst.MatQty = first.HandledToQty; - requst.OrderNum = assemble.Number; + requst.OrderNum = job.Number; requst.OrderType = "2"; return await _agvOutJob.OutPutTaskAsync(requst).ConfigureAwait(false); } 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 4548f5593..a0b973a8e 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 @@ -66,6 +66,7 @@ public class KittingIssueJobAppService _options = options; _transferLibRequestAppService = transferLibRequestAppService; _currentUser = currentUser; + _agvOutJob = agvOutJob; } [HttpPost("get-by-number-2")] 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 3d5273c3a..36339dbc1 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 @@ -49,7 +49,7 @@ public class SparePartIssueJobAppService LazyServiceProvider.LazyGetRequiredService(); public SparePartIssueJobAppService( - IAgvJobOutputService _agvOutJob, + IAgvJobOutputService agvOutJob, ISparePartIssueJobRepository repository, ISparePartIssueJobManager sparePartIssueJobManager, ILocationAppService locationAppService, ISparePartIssueNoteAppService sparePartIssueNoteAppService, IExpectOutAppService expectOutAppService @@ -65,6 +65,7 @@ public class SparePartIssueJobAppService _options = options; _transferLibRequestAppService = transferLibRequestAppService; _currentUser = currentUser; + _agvOutJob = agvOutJob; } [HttpPost("get-by-number-2")] diff --git a/build/src/docker/publish/conf/settings/appsettings.Development.json b/build/src/docker/publish/conf/settings/appsettings.Development.json index c4eba03a8..a2081799d 100644 --- a/build/src/docker/publish/conf/settings/appsettings.Development.json +++ b/build/src/docker/publish/conf/settings/appsettings.Development.json @@ -1,18 +1,32 @@ { "AlwaysAllowAuthorization": "true", - "RestoOptions": - { + "RestoOptions": { + + "Address": "http://7e42682n64.goho.co:21171/", + // 用户名 + "UserName": "", + // 密码 + "Password": "", + // 令牌 + "Token": "", + "Path": "zozocnApi/custom/receiveProductionPlan" + + }, + + "AgvOptions": { + + "Address": "http://dev.ccwin-in.com:60084/", + // 用户名 + "UserName": "", + // 密码 + "Password": "", + // 令牌 + "Token": "", + "Path": "Cargostate/pushOutTask4FW" + + }, -"Address" :"http://7e42682n64.goho.co:21171/", - // 用户名 -"UserName" :"", - // 密码 -"Password" :"", - // 令牌 -"Token" :"", -"Path" :"zozocnApi/custom/receiveProductionPlan" -}, @@ -151,11 +165,11 @@ "BaseUrl": "http://localhost:59095/" }, "Label": { - "BaseUrl": "http://dev.ccwin-in.com:60082/" + "BaseUrl": "http://dev.ccwin-in.com:60082/" //"BaseUrl": "http://localhost:59092/" }, "Message": { - "BaseUrl": "http://dev.ccwin-in.com:60082/" + "BaseUrl": "http://dev.ccwin-in.com:60082/" //"BaseUrl": "http://localhost:59092/" }, "Store": {