Browse Source

提交

Agv分支2024-11-19
赵新宇 5 months ago
parent
commit
41896d9ed1
  1. 167
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Jobs/IssueJobs/AssembleIssueJobs/AssembleIssueJobAppService.cs

167
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> { 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
}

Loading…
Cancel
Save