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 a8b23e951..06e29b504 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 @@ -801,7 +801,7 @@ public class AssembleIssueJobAppService if (loctionDto.EnableAgv) { //TODO AGV - var ret = await CallAgvAsync(new List { assembleIssueJobDto }).ConfigureAwait(false); + var ret = await CallAgvAsync(assembleIssueJobDto).ConfigureAwait(false); #if DEBUG @@ -816,7 +816,6 @@ public class AssembleIssueJobAppService } } - /// /// 判断是不是有Agv /// @@ -846,35 +845,31 @@ public class AssembleIssueJobAppService /// /// [HttpPost("call-agv")] - public async Task CallAgvAsync(List inputs) + public async Task CallAgvAsync(AssembleIssueJobDTO input) { - var res = new ReusltObject(); List errors = new List(); - List successList= new List(); - foreach (var itm in inputs) + List successList = new List(); + + var jobres = await SendInterFaceAsync(input).ConfigureAwait(false); + if (jobres.Code != "0") { - var jobres= await PushOutTaskAsync(itm).ConfigureAwait(false); - if (jobres.Code != "0") - { - _logger.LogInformation(jobres.Message); - errors.Add(jobres.Message); - } - else - { - successList.Add(jobres.Message); - } + _logger.LogInformation(jobres.Message); + errors.Add(jobres.Message); } + else + { + successList.Add(jobres.Message); + } + if (errors.Count > 0) { res.Code = -1; res.Message = string.Join(",", errors); - res.Data=""; + res.Data = ""; return res; } return res; - - } [HttpPost("call-back-agv")] @@ -1039,6 +1034,74 @@ public class AssembleIssueJobAppService return ret; } + /// + /// 调用Agv接口实现 + /// + /// + /// + private async Task SendInterFaceAsync(AssembleIssueJobDTO job) + { + var ret = new AgvResultObject + { + Code = "0", + ReqCode = job.AssembleRequestNumber, + Message = "OK" + }; + using var unitOfWork = _unitOfWorkManager.Begin(); + try + { + var first = job.Details.FirstOrDefault(); + var request = new AgvRequest(); + request.MatCode = first.ItemCode; + request.MatQty = first.HandledToQty; + request.OrderNum = job.Number; + request.OrderType = EnumJobType.AssembleIssueJob.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.AssembleRequestNumber; + await unitOfWork.RollbackAsync().ConfigureAwait(false); + + } + return ret; + } + #endregion #region 私有 @@ -1165,184 +1228,5 @@ public class AssembleIssueJobAppService handledToQty).ConfigureAwait(false); } - - - - - private async Task PushOutTaskAsync(AssembleIssueJobDTO job) - { - var ret = new AgvResultObject - { - Code = "0", - ReqCode=job.AssembleRequestNumber, - Message = "OK" - }; - using var unitOfWork = _unitOfWorkManager.Begin(); - try - { - var first = job.Details.FirstOrDefault(); - var request = new AgvRequest(); - request.MatCode = first.ItemCode; - request.MatQty = first.HandledToQty; - request.OrderNum = job.Number; - request.OrderType = EnumJobType.AssembleIssueJob.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); - - } - catch (Exception e) - { - ret = new AgvResultObject(); - ret.Code = "1"; - ret.Message = e.Message; - ret.ReqCode = job.AssembleRequestNumber; - await unitOfWork.RollbackAsync().ConfigureAwait(false); - - } - return ret; - } - - - - - - LocationDTO fromlocation = null; - - if (fromloc != null) - { - fromlocation = await _locationAppService.GetByCodeAsync(fromloc.Code).ConfigureAwait(false); - } - if (fromlocation == null) - { - errors.Add($"来源起始点{detail.BeginPosition}库位没查到"); - } - - var toloc = await _postionLocationAppService.GetByCodeAsync(detail.EndPosition) - .ConfigureAwait(false); - if (toloc == null) - { - errors.Add($"结束点{detail.EndPosition}库位没查到"); - } - - LocationDTO toLocation = null; - - if (toloc != null) - { - toLocation = await _locationAppService.GetByCodeAsync(toloc.Code).ConfigureAwait(false); - } - if (toLocation == null) - { - errors.Add($"结束点{detail.EndPosition}库位没查到"); - } - - - var entity = itmDetails.FirstOrDefault(p => p.ItemCode == detail.MatCode); - if (entity == null) - { - errors.Add($"物料号{detail.MatCode}不在任务明细内!"); - } - - var dto = new AssembleIssueJobDetailDTO(); - dto.InjectFrom(entity); - dto.HandledToLocationCode = toLocation.Code; - dto.HandledToLocationGroup = 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); - - //await ExecuteDetailExtAsync(itm.Id, entity.Id, dto).ConfigureAwait(false); - } - - if (errors.Count > 0) - { - ret = new AgvResultObject() - { - Code = "-1", - ReqCode="", - Message = string.Join(",", errors.ToArray()) - }; - } - itm.Worker = "AGV"; - itm.Details = details; - - _logger.LogInformation($"{flag}接收Agv确认单据内容:" + json + "Agv任务完成"); - } - } - else - { - errors.Add("Agv确认单据里无数据! \n"); - } - } - catch (Exception ex) - { - ret = new AgvResultObject - { - Code = "-1", - ReqCode=job.AssembleRequestNumber, - Message = ex.Message, - }; - await unitOfWork.RollbackAsync(); - return ret; - } - - if (errors.Count > 0) - { - ret = new AgvResultObject - { - Code = "-1", - Message = string.Join(",", errors.ToArray()), - ReqCode=job.AssembleRequestNumber - }; - } - return ret; - } - - - - #endregion }