|
|
@ -801,7 +801,7 @@ public class AssembleIssueJobAppService |
|
|
|
if (loctionDto.EnableAgv) |
|
|
|
{ |
|
|
|
//TODO AGV
|
|
|
|
var ret = await CallAgvAsync(new List<AssembleIssueJobDTO> { assembleIssueJobDto }).ConfigureAwait(false); |
|
|
|
var ret = await CallAgvAsync(assembleIssueJobDto).ConfigureAwait(false); |
|
|
|
|
|
|
|
#if DEBUG
|
|
|
|
|
|
|
@ -816,7 +816,6 @@ public class AssembleIssueJobAppService |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
/// 判断是不是有Agv
|
|
|
|
/// </summary>
|
|
|
@ -846,25 +845,23 @@ public class AssembleIssueJobAppService |
|
|
|
/// <param name="uid"></param>
|
|
|
|
/// <returns></returns>
|
|
|
|
[HttpPost("call-agv")] |
|
|
|
public async Task<ReusltObject> CallAgvAsync(List<AssembleIssueJobDTO> inputs) |
|
|
|
public async Task<ReusltObject> CallAgvAsync(AssembleIssueJobDTO input) |
|
|
|
{ |
|
|
|
|
|
|
|
var res = new ReusltObject(); |
|
|
|
List<string> errors = new List<string>(); |
|
|
|
List<string> successList = new List<string>(); |
|
|
|
foreach (var itm in inputs) |
|
|
|
|
|
|
|
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; |
|
|
@ -873,8 +870,6 @@ public class AssembleIssueJobAppService |
|
|
|
return res; |
|
|
|
} |
|
|
|
return res; |
|
|
|
|
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
[HttpPost("call-back-agv")] |
|
|
@ -1039,6 +1034,74 @@ public class AssembleIssueJobAppService |
|
|
|
return ret; |
|
|
|
} |
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
/// 调用Agv接口实现
|
|
|
|
/// </summary>
|
|
|
|
/// <param name="job"></param>
|
|
|
|
/// <returns></returns>
|
|
|
|
private async Task<AgvResultObject> 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,73 +1228,5 @@ public class AssembleIssueJobAppService |
|
|
|
handledToQty).ConfigureAwait(false); |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
private async Task<AgvResultObject> 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; |
|
|
|
} |
|
|
|
#endregion
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|