From f65bdfec67611a19f56a4d63187c32d413c31016 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=AD=A6=20=E8=B5=B5?= <89237069@qq.com> Date: Mon, 9 Dec 2024 11:18:48 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E9=9D=9E=E7=94=9F=E4=BA=A7?= =?UTF-8?q?=E9=A2=86=E9=80=80=E6=96=99agv=E8=B0=83=E7=94=A8=E6=8E=A5?= =?UTF-8?q?=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../AssembleIssueJobAppService.cs | 11 +- .../UnplannedIssueJobAppService.cs | 202 +++++++++++------- .../UnplannedReceiptJobAppService.cs | 197 ++++++++++------- 3 files changed, 240 insertions(+), 170 deletions(-) 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 633594201..b124e5515 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 @@ -994,7 +994,10 @@ public class AssembleIssueJobAppService dto.HandledToWarehouseCode = tolocation.WarehouseCode; dto.HandledToQty = detail.MatQty; - dto.HandledToLot = !string.IsNullOrEmpty(detail.BatchAttr07) ? detail.BatchAttr07 : string.Empty; + + + + dto.HandledToLot = !string.IsNullOrEmpty(detail.BatchAttr07) ? detail.BatchAttr07 : entity.RecommendFromLot; dto.HandledToPackingCode = string.Empty; dto.HandledFromWarehouseCode = fromlocation.WarehouseCode; @@ -1003,12 +1006,10 @@ public class AssembleIssueJobAppService dto.HandledFromLocationArea = fromlocation.AreaCode; dto.HandledFromLocationErpCode = fromlocation.ErpLocationCode; dto.HandledFromQty = detail.MatQty; - dto.HandledFromLot = !string.IsNullOrEmpty(detail.BatchAttr07) ? detail.BatchAttr07 : string.Empty; + dto.HandledFromLot = !string.IsNullOrEmpty(detail.BatchAttr07) ? detail.BatchAttr07 : entity.RecommendToLot; dto.HandledFromPackingCode = string.Empty; details.Add(dto); - - - //await ExecuteDetailExtAsync(itm.Id, entity.Id, dto).ConfigureAwait(false); + await ExecuteDetailExtAsync(itm.Id, entity.Id, dto).ConfigureAwait(false); } if (errors.Count > 0) diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Jobs/UnplannedIssueJobs/UnplannedIssueJobAppService.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Jobs/UnplannedIssueJobs/UnplannedIssueJobAppService.cs index 17b5b5558..e6ff2a2df 100644 --- a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Jobs/UnplannedIssueJobs/UnplannedIssueJobAppService.cs +++ b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Jobs/UnplannedIssueJobs/UnplannedIssueJobAppService.cs @@ -652,69 +652,46 @@ public class UnplannedIssueJobAppService return handleDto; } - [HttpPost("PushOutTask")] - public async Task PushOutTaskAsync(UnplannedIssueJobDTO job) + /// + /// 调用 Agv 接口 + /// + /// + /// + /// + /// + [HttpPost("call-agv")] + public async Task CallAgvAsync(UnplannedIssueJobDTO input) { - var ret = new AgvResultObject + var res = new ReusltObject(); + List errors = new List(); + List successList = new List(); + + var jobres = await SendInterFaceAsync(input).ConfigureAwait(false); + if (jobres.Code != "0") { - Code = "0", - ReqCode = job.UnplannedIssueRequestNumber, - Message = "OK" - }; - using var unitOfWork = _unitOfWorkManager.Begin(); - try + _logger.LogInformation(jobres.Message); + errors.Add(jobres.Message); + } + else { - var first = job.Details.FirstOrDefault(); - var request = new AgvRequest(); - request.MatCode = first.ItemCode; - request.MatQty = first.HandledQty; - request.OrderNum = job.Number; - request.OrderType = EnumJobType.UnplannedIssueJob.ToString(); ; - - var httpclient = _httpClientFactory.CreateClient(); - _agvOptions.Value.Address = string.IsNullOrEmpty(_agvOptions.Value.Address) - ? "http://7e42682n64.goho.co:21171/" - : _agvOptions.Value.Address; //测试地址 - _agvOptions.Value.Token = - string.IsNullOrEmpty(_agvOptions.Value.Token) ? string.Empty : _agvOptions.Value.Token; //测试token - _agvOptions.Value.UserName = - string.IsNullOrEmpty(_agvOptions.Value.UserName) ? "" : _agvOptions.Value.UserName; //测试用户名 - _agvOptions.Value.Password = - string.IsNullOrEmpty(_agvOptions.Value.Password) ? "" : _agvOptions.Value.Password; //测试密码 - _agvOptions.Value.Path = string.IsNullOrEmpty(_agvOptions.Value.Path) - ? "zozocnApi/custom/receiveProductionPlan" - : _agvOptions.Value.Path; //测试密码 - var flag = DateTime.Now.ToString("yyyyMMddHHmmss"); - // _logger.LogInformation($"标志{flag}开始调用高通WMS:传递值{JsonSerializer.Serialize(main)}"); - if (!string.IsNullOrEmpty(_agvOptions.Value.Token)) - { - var token = _agvOptions.Value.Token; - httpclient.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", token); - } - - if (!string.IsNullOrEmpty(_agvOptions.Value.UserName) && !string.IsNullOrEmpty(_agvOptions.Value.Password)) - { - var username = _agvOptions.Value.UserName; - var password = _agvOptions.Value.Password; - httpclient.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Basic", - Convert.ToBase64String(Encoding.ASCII.GetBytes($"{username}:{password}"))); - } - - var client = new AgvJobClient(_agvOptions.Value.Address, httpclient, _agvOptions.Value.Path); - ret = await client.PushOutTask4FWAsync(request).ConfigureAwait(false); + successList.Add(jobres.Message); } - catch (Exception e) + if (errors.Count > 0) { - ret = new AgvResultObject(); - ret.Code = "1"; - ret.Message = e.Message; - ret.ReqCode = job.UnplannedIssueRequestNumber; - await unitOfWork.RollbackAsync().ConfigureAwait(false); - + res.Code = -1; + res.Message = string.Join(",", errors); + res.Data = ""; + return res; } - return ret; + return res; } - [HttpPost("accountOutOrder")] + + /// + /// Agv 回调 接口 + /// + /// + /// + [HttpPost("call-back-agv")] public async Task CallBackAgvAsync(AgvRequestDto request) { var json = JsonSerializer.Serialize(request); @@ -725,13 +702,11 @@ public class UnplannedIssueJobAppService var errors = new List(); var first = request.Data.FirstOrDefault(); var job = await _repository.GetAsync(p => p.Number == first.OrderNum).ConfigureAwait(false); - var ret = new AgvResultObject { Code = "0", Message = "OK", ReqCode = job.UnplannedIssueRequestNumber, - }; using var unitOfWork = _unitOfWorkManager.Begin(); try @@ -747,8 +722,8 @@ public class UnplannedIssueJobAppService { errors.Add($"任务号{string.Join(",", numbers)}不存在!"); } - var dtos = ObjectMapper.Map, List>(entities); + foreach (var itm in dtos) { var arys = jobs.Where(p => p.OrderNum == itm.Number); @@ -756,7 +731,6 @@ public class UnplannedIssueJobAppService var details = new List(); foreach (var detail in arys) { - var fromloc = await _postionLocationAppService.GetByCodeAsync(detail.BeginPosition).ConfigureAwait(false); if (fromloc == null) { @@ -792,14 +766,20 @@ public class UnplannedIssueJobAppService errors.Add($"结束点{detail.EndPosition}库位没查到"); } + var item = await _itemBasicAppService.GetByCodeAsync(detail.MatCode).ConfigureAwait(false); + if (item == null) + { + errors.Add($"零件号{detail.MatCode}不存在!"); + } var entity = itmDetails.FirstOrDefault(p => p.ItemCode == detail.MatCode); if (entity == null) { - errors.Add($"物料号{detail.MatCode}不在任务明细内!"); + errors.Add($"零件号{detail.MatCode}不在任务明细内!"); } if (errors.Count > 0) { + await unitOfWork.RollbackAsync().ConfigureAwait(false); return ret = new AgvResultObject() { Code = "-1", @@ -807,40 +787,25 @@ public class UnplannedIssueJobAppService Message = string.Join(",", errors.ToArray()) }; } - - - var dto = new UnplannedIssueJobDetailDTO(); dto.InjectFrom(entity); + + dto.HandledQty = detail.MatQty; - //dto.= tolocation.LocationGroupCode; - //dto.HandledToLocationArea = tolocation.AreaCode; - //dto.HandledToLocationErpCode = tolocation.ErpLocationCode; - - //dto.HandledToWarehouseCode = tolocation.WarehouseCode; - //dto.HandledToQty = detail.MatQty; - //dto.HandledToLot = !string.IsNullOrEmpty(detail.BatchAttr07) ? detail.BatchAttr07 : string.Empty; - //dto.HandledToPackingCode = string.Empty; dto.HandledFromWarehouseCode = fromlocation.WarehouseCode; dto.HandledFromLocationCode = fromlocation.Code; dto.HandledFromLocationGroup = fromlocation.LocationGroupCode; dto.HandledFromLocationArea = fromlocation.AreaCode; dto.HandledFromLocationErpCode = fromlocation.ErpLocationCode; - //dto.HandledFromQty = detail.MatQty; - //dto.HandledFromLot = string.Empty; - //dto.HandledFromPackingCode = string.Empty; - details.Add(dto); - - - - - + details.Add(dto); + //await ExecuteDetailExtAsync(itm.Id, entity.Id, dto).ConfigureAwait(false); } if (errors.Count > 0) { + await unitOfWork.RollbackAsync().ConfigureAwait(false); ret = new AgvResultObject() { Code = "-1", @@ -865,9 +830,9 @@ public class UnplannedIssueJobAppService { Code = "-1", ReqCode = job.UnplannedIssueRequestNumber, - Message = ex.Message, + Message = ex.Message }; - await unitOfWork.RollbackAsync(); + await unitOfWork.RollbackAsync().ConfigureAwait(false); return ret; } @@ -883,5 +848,76 @@ public class UnplannedIssueJobAppService return ret; } + /// + /// 调用Agv接口实现 + /// + /// + /// + private async Task SendInterFaceAsync(UnplannedIssueJobDTO job) + { +#if DEBUG + +#endif + var ret = new AgvResultObject + { + Code = "0", + ReqCode = job.UnplannedIssueRequestNumber, + Message = "OK" + }; + using var unitOfWork = _unitOfWorkManager.Begin(); + try + { + var first = job.Details.FirstOrDefault(); + var request = new AgvRequest(); + request.MatCode = first.ItemCode; + request.MatQty = first.RecommendQty; + request.OrderNum = job.Number; + request.OrderType = EnumJobType.UnplannedIssueJob.ToString(); + + var httpclient = _httpClientFactory.CreateClient(); + _agvOptions.Value.Address = string.IsNullOrEmpty(_agvOptions.Value.Address) + ? "http://7e42682n64.goho.co:21171/" + : _agvOptions.Value.Address; //测试地址 + _agvOptions.Value.Token = + string.IsNullOrEmpty(_agvOptions.Value.Token) ? string.Empty : _agvOptions.Value.Token; //测试token + _agvOptions.Value.UserName = + string.IsNullOrEmpty(_agvOptions.Value.UserName) ? "" : _agvOptions.Value.UserName; //测试用户名 + _agvOptions.Value.Password = + string.IsNullOrEmpty(_agvOptions.Value.Password) ? "" : _agvOptions.Value.Password; //测试密码 + _agvOptions.Value.Path = string.IsNullOrEmpty(_agvOptions.Value.Path) + ? "zozocnApi/custom/receiveProductionPlan" + : _agvOptions.Value.Path; //测试密码 + var flag = DateTime.Now.ToString("yyyyMMddHHmmss"); + + if (!string.IsNullOrEmpty(_agvOptions.Value.Token)) + { + var token = _agvOptions.Value.Token; + httpclient.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", token); + } + + if (!string.IsNullOrEmpty(_agvOptions.Value.UserName) && !string.IsNullOrEmpty(_agvOptions.Value.Password)) + { + var username = _agvOptions.Value.UserName; + var password = _agvOptions.Value.Password; + httpclient.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Basic", + Convert.ToBase64String(Encoding.ASCII.GetBytes($"{username}:{password}"))); + } + + var client = new AgvJobClient(_agvOptions.Value.Address, httpclient, _agvOptions.Value.Path); + ret = await client.PushOutTask4FWAsync(request).ConfigureAwait(false); + + } + catch (Exception e) + { + ret = new AgvResultObject(); + ret.Code = "1"; + ret.Message = e.Message; + ret.ReqCode = job.UnplannedIssueRequestNumber; + await unitOfWork.RollbackAsync().ConfigureAwait(false); + throw new UserFriendlyException($"接口报错 错误信息{e.Message}"); + } + return ret; + } + } diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Jobs/UnplannedReceiptJobs/UnplannedReceiptJobAppService.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Jobs/UnplannedReceiptJobs/UnplannedReceiptJobAppService.cs index 325e8a445..90888d752 100644 --- a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Jobs/UnplannedReceiptJobs/UnplannedReceiptJobAppService.cs +++ b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Jobs/UnplannedReceiptJobs/UnplannedReceiptJobAppService.cs @@ -324,73 +324,45 @@ public class UnplannedReceiptJobAppService return true; } /// - /// + /// 调用 Agv 接口 /// - /// + /// + /// + /// /// - [HttpPost("PushOutTask")] - public async Task PushOutTaskAsync(UnplannedReceiptJobDTO job) + [HttpPost("call-agv")] + public async Task CallAgvAsync(UnplannedReceiptJobDTO input) { - var ret = new AgvResultObject + var res = new ReusltObject(); + List errors = new List(); + List successList = new List(); + + var jobres = await SendInterFaceAsync(input).ConfigureAwait(false); + if (jobres.Code != "0") { - Code = "0", - ReqCode = job.UnplannedReceiptRequestNumber, - Message = "OK" - }; - using var unitOfWork = _unitOfWorkManager.Begin(); - try + _logger.LogInformation(jobres.Message); + errors.Add(jobres.Message); + } + else { - var first = job.Details.FirstOrDefault(); - var request = new AgvRequest(); - request.MatCode = first.ItemCode; - request.MatQty = first.HandledQty; - request.OrderNum = job.Number; - request.OrderType = EnumJobType.UnplannedReceiptJob.ToString(); - - var httpclient = _httpClientFactory.CreateClient(); - _agvOptions.Value.Address = string.IsNullOrEmpty(_agvOptions.Value.Address) - ? "http://7e42682n64.goho.co:21171/" - : _agvOptions.Value.Address; //测试地址 - _agvOptions.Value.Token = - string.IsNullOrEmpty(_agvOptions.Value.Token) ? string.Empty : _agvOptions.Value.Token; //测试token - _agvOptions.Value.UserName = - string.IsNullOrEmpty(_agvOptions.Value.UserName) ? "" : _agvOptions.Value.UserName; //测试用户名 - _agvOptions.Value.Password = - string.IsNullOrEmpty(_agvOptions.Value.Password) ? "" : _agvOptions.Value.Password; //测试密码 - _agvOptions.Value.Path = string.IsNullOrEmpty(_agvOptions.Value.Path) - ? "zozocnApi/custom/receiveProductionPlan" - : _agvOptions.Value.Path; //测试密码 - var flag = DateTime.Now.ToString("yyyyMMddHHmmss"); - // _logger.LogInformation($"标志{flag}开始调用高通WMS:传递值{JsonSerializer.Serialize(main)}"); - if (!string.IsNullOrEmpty(_agvOptions.Value.Token)) - { - var token = _agvOptions.Value.Token; - httpclient.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", token); - } - - if (!string.IsNullOrEmpty(_agvOptions.Value.UserName) && !string.IsNullOrEmpty(_agvOptions.Value.Password)) - { - var username = _agvOptions.Value.UserName; - var password = _agvOptions.Value.Password; - httpclient.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Basic", - Convert.ToBase64String(Encoding.ASCII.GetBytes($"{username}:{password}"))); - } - - var client = new AgvJobClient(_agvOptions.Value.Address, httpclient, _agvOptions.Value.Path); - ret = await client.PushOutTask4FWAsync(request).ConfigureAwait(false); + successList.Add(jobres.Message); } - catch (Exception e) + if (errors.Count > 0) { - ret = new AgvResultObject(); - ret.Code = "1"; - ret.Message = e.Message; - ret.ReqCode = job.UnplannedReceiptRequestNumber; - await unitOfWork.RollbackAsync().ConfigureAwait(false); - + res.Code = -1; + res.Message = string.Join(",", errors); + res.Data = ""; + return res; } - return ret; + return res; } - [HttpPost("accountOutOrder")] + + /// + /// Agv 回调 接口 + /// + /// + /// + [HttpPost("call-back-agv")] public async Task CallBackAgvAsync(AgvRequestDto request) { var json = JsonSerializer.Serialize(request); @@ -401,13 +373,11 @@ public class UnplannedReceiptJobAppService var errors = new List(); var first = request.Data.FirstOrDefault(); var job = await _repository.GetAsync(p => p.Number == first.OrderNum).ConfigureAwait(false); - var ret = new AgvResultObject { Code = "0", Message = "OK", ReqCode = job.UnplannedReceiptRequestNumber, - }; using var unitOfWork = _unitOfWorkManager.Begin(); try @@ -423,8 +393,8 @@ public class UnplannedReceiptJobAppService { errors.Add($"任务号{string.Join(",", numbers)}不存在!"); } - var dtos = ObjectMapper.Map, List>(entities); + foreach (var itm in dtos) { var arys = jobs.Where(p => p.OrderNum == itm.Number); @@ -432,7 +402,6 @@ public class UnplannedReceiptJobAppService var details = new List(); foreach (var detail in arys) { - var fromloc = await _postionLocationAppService.GetByCodeAsync(detail.BeginPosition).ConfigureAwait(false); if (fromloc == null) { @@ -467,13 +436,21 @@ public class UnplannedReceiptJobAppService { errors.Add($"结束点{detail.EndPosition}库位没查到"); } + + var item = await _itemBasicAppService.GetByCodeAsync(detail.MatCode).ConfigureAwait(false); + + if (item == null) + { + errors.Add($"零件号{detail.MatCode}不存在!"); + } var entity = itmDetails.FirstOrDefault(p => p.ItemCode == detail.MatCode); if (entity == null) { - errors.Add($"物料号{detail.MatCode}不在任务明细内!"); + errors.Add($"零件号{detail.MatCode}不在任务明细内!"); } if (errors.Count > 0) { + await unitOfWork.RollbackAsync().ConfigureAwait(false); return ret = new AgvResultObject() { Code = "-1", @@ -483,35 +460,20 @@ public class UnplannedReceiptJobAppService } var dto = new UnplannedReceiptJobDetailDTO(); dto.InjectFrom(entity); - - - dto.HandledQty = detail.MatQty; - //dto.= tolocation.LocationGroupCode; - //dto.HandledToLocationArea = tolocation.AreaCode; - //dto.HandledToLocationErpCode = tolocation.ErpLocationCode; - - //dto.HandledToWarehouseCode = tolocation.WarehouseCode; - //dto.HandledToQty = detail.MatQty; - //dto.HandledToLot = !string.IsNullOrEmpty(detail.BatchAttr07) ? detail.BatchAttr07 : string.Empty; - //dto.HandledToPackingCode = string.Empty; - dto.HandledToWarehouseCode = fromlocation.WarehouseCode; dto.HandledToLocationCode = fromlocation.Code; dto.HandledToLocationGroup = fromlocation.LocationGroupCode; dto.HandledToLocationArea = fromlocation.AreaCode; dto.HandledToLocationErpCode = fromlocation.ErpLocationCode; - //dto.HandledFromQty = detail.MatQty; - //dto.HandledFromLot = string.Empty; - //dto.HandledFromPackingCode = string.Empty; - details.Add(dto); - + details.Add(dto); //await ExecuteDetailExtAsync(itm.Id, entity.Id, dto).ConfigureAwait(false); } if (errors.Count > 0) { + await unitOfWork.RollbackAsync().ConfigureAwait(false); ret = new AgvResultObject() { Code = "-1", @@ -536,9 +498,9 @@ public class UnplannedReceiptJobAppService { Code = "-1", ReqCode = job.UnplannedReceiptRequestNumber, - Message = ex.Message, + Message = ex.Message }; - await unitOfWork.RollbackAsync(); + await unitOfWork.RollbackAsync().ConfigureAwait(false); return ret; } @@ -553,4 +515,75 @@ public class UnplannedReceiptJobAppService } return ret; } + + /// + /// 调用Agv接口实现 + /// + /// + /// + private async Task SendInterFaceAsync(UnplannedReceiptJobDTO job) + { +#if DEBUG + +#endif + var ret = new AgvResultObject + { + Code = "0", + ReqCode = job.UnplannedReceiptRequestNumber, + Message = "OK" + }; + using var unitOfWork = _unitOfWorkManager.Begin(); + try + { + var first = job.Details.FirstOrDefault(); + var request = new AgvRequest(); + request.MatCode = first.ItemCode; + request.MatQty = first.RecommendQty; + request.OrderNum = job.Number; + request.OrderType = EnumJobType.UnplannedReceiptJob.ToString(); + + var httpclient = _httpClientFactory.CreateClient(); + _agvOptions.Value.Address = string.IsNullOrEmpty(_agvOptions.Value.Address) + ? "http://7e42682n64.goho.co:21171/" + : _agvOptions.Value.Address; //测试地址 + _agvOptions.Value.Token = + string.IsNullOrEmpty(_agvOptions.Value.Token) ? string.Empty : _agvOptions.Value.Token; //测试token + _agvOptions.Value.UserName = + string.IsNullOrEmpty(_agvOptions.Value.UserName) ? "" : _agvOptions.Value.UserName; //测试用户名 + _agvOptions.Value.Password = + string.IsNullOrEmpty(_agvOptions.Value.Password) ? "" : _agvOptions.Value.Password; //测试密码 + _agvOptions.Value.Path = string.IsNullOrEmpty(_agvOptions.Value.Path) + ? "zozocnApi/custom/receiveProductionPlan" + : _agvOptions.Value.Path; //测试密码 + var flag = DateTime.Now.ToString("yyyyMMddHHmmss"); + + if (!string.IsNullOrEmpty(_agvOptions.Value.Token)) + { + var token = _agvOptions.Value.Token; + httpclient.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", token); + } + + if (!string.IsNullOrEmpty(_agvOptions.Value.UserName) && !string.IsNullOrEmpty(_agvOptions.Value.Password)) + { + var username = _agvOptions.Value.UserName; + var password = _agvOptions.Value.Password; + httpclient.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Basic", + Convert.ToBase64String(Encoding.ASCII.GetBytes($"{username}:{password}"))); + } + + var client = new AgvJobClient(_agvOptions.Value.Address, httpclient, _agvOptions.Value.Path); + ret = await client.PushOutTask4FWAsync(request).ConfigureAwait(false); + + } + catch (Exception e) + { + ret = new AgvResultObject(); + ret.Code = "1"; + ret.Message = e.Message; + ret.ReqCode = job.UnplannedReceiptRequestNumber; + await unitOfWork.RollbackAsync().ConfigureAwait(false); + throw new UserFriendlyException($"接口报错 错误信息{e.Message}"); + } + return ret; + } }