Browse Source

修改非生产领退料agv调用接口

Agv分支2024-11-19
赵新宇 5 months ago
parent
commit
f65bdfec67
  1. 11
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Jobs/IssueJobs/AssembleIssueJobs/AssembleIssueJobAppService.cs
  2. 202
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Jobs/UnplannedIssueJobs/UnplannedIssueJobAppService.cs
  3. 197
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Jobs/UnplannedReceiptJobs/UnplannedReceiptJobAppService.cs

11
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.HandledToWarehouseCode = tolocation.WarehouseCode;
dto.HandledToQty = detail.MatQty; 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.HandledToPackingCode = string.Empty;
dto.HandledFromWarehouseCode = fromlocation.WarehouseCode; dto.HandledFromWarehouseCode = fromlocation.WarehouseCode;
@ -1003,12 +1006,10 @@ public class AssembleIssueJobAppService
dto.HandledFromLocationArea = fromlocation.AreaCode; dto.HandledFromLocationArea = fromlocation.AreaCode;
dto.HandledFromLocationErpCode = fromlocation.ErpLocationCode; dto.HandledFromLocationErpCode = fromlocation.ErpLocationCode;
dto.HandledFromQty = detail.MatQty; 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; dto.HandledFromPackingCode = string.Empty;
details.Add(dto); 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) if (errors.Count > 0)

202
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Jobs/UnplannedIssueJobs/UnplannedIssueJobAppService.cs

@ -652,69 +652,46 @@ public class UnplannedIssueJobAppService
return handleDto; return handleDto;
} }
[HttpPost("PushOutTask")] /// <summary>
public async Task<AgvResultObject> PushOutTaskAsync(UnplannedIssueJobDTO job) /// 调用 Agv 接口
/// </summary>
/// <param name="input"></param>
/// <param name="pLoc"></param>
/// <param name="uid"></param>
/// <returns></returns>
[HttpPost("call-agv")]
public async Task<ReusltObject> CallAgvAsync(UnplannedIssueJobDTO input)
{ {
var ret = new AgvResultObject var res = new ReusltObject();
List<string> errors = new List<string>();
List<string> successList = new List<string>();
var jobres = await SendInterFaceAsync(input).ConfigureAwait(false);
if (jobres.Code != "0")
{ {
Code = "0", _logger.LogInformation(jobres.Message);
ReqCode = job.UnplannedIssueRequestNumber, errors.Add(jobres.Message);
Message = "OK" }
}; else
using var unitOfWork = _unitOfWorkManager.Begin();
try
{ {
var first = job.Details.FirstOrDefault(); successList.Add(jobres.Message);
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);
} }
catch (Exception e) if (errors.Count > 0)
{ {
ret = new AgvResultObject(); res.Code = -1;
ret.Code = "1"; res.Message = string.Join(",", errors);
ret.Message = e.Message; res.Data = "";
ret.ReqCode = job.UnplannedIssueRequestNumber; return res;
await unitOfWork.RollbackAsync().ConfigureAwait(false);
} }
return ret; return res;
} }
[HttpPost("accountOutOrder")]
/// <summary>
/// Agv 回调 接口
/// </summary>
/// <param name="request"></param>
/// <returns></returns>
[HttpPost("call-back-agv")]
public async Task<AgvResultObject> CallBackAgvAsync(AgvRequestDto request) public async Task<AgvResultObject> CallBackAgvAsync(AgvRequestDto request)
{ {
var json = JsonSerializer.Serialize(request); var json = JsonSerializer.Serialize(request);
@ -725,13 +702,11 @@ public class UnplannedIssueJobAppService
var errors = new List<string>(); var errors = new List<string>();
var first = request.Data.FirstOrDefault(); var first = request.Data.FirstOrDefault();
var job = await _repository.GetAsync(p => p.Number == first.OrderNum).ConfigureAwait(false); var job = await _repository.GetAsync(p => p.Number == first.OrderNum).ConfigureAwait(false);
var ret = new AgvResultObject var ret = new AgvResultObject
{ {
Code = "0", Code = "0",
Message = "OK", Message = "OK",
ReqCode = job.UnplannedIssueRequestNumber, ReqCode = job.UnplannedIssueRequestNumber,
}; };
using var unitOfWork = _unitOfWorkManager.Begin(); using var unitOfWork = _unitOfWorkManager.Begin();
try try
@ -747,8 +722,8 @@ public class UnplannedIssueJobAppService
{ {
errors.Add($"任务号{string.Join(",", numbers)}不存在!"); errors.Add($"任务号{string.Join(",", numbers)}不存在!");
} }
var dtos = ObjectMapper.Map<List<UnplannedIssueJob>, List<UnplannedIssueJobDTO>>(entities); var dtos = ObjectMapper.Map<List<UnplannedIssueJob>, List<UnplannedIssueJobDTO>>(entities);
foreach (var itm in dtos) foreach (var itm in dtos)
{ {
var arys = jobs.Where(p => p.OrderNum == itm.Number); var arys = jobs.Where(p => p.OrderNum == itm.Number);
@ -756,7 +731,6 @@ public class UnplannedIssueJobAppService
var details = new List<UnplannedIssueJobDetailDTO>(); var details = new List<UnplannedIssueJobDetailDTO>();
foreach (var detail in arys) foreach (var detail in arys)
{ {
var fromloc = await _postionLocationAppService.GetByCodeAsync(detail.BeginPosition).ConfigureAwait(false); var fromloc = await _postionLocationAppService.GetByCodeAsync(detail.BeginPosition).ConfigureAwait(false);
if (fromloc == null) if (fromloc == null)
{ {
@ -792,14 +766,20 @@ public class UnplannedIssueJobAppService
errors.Add($"结束点{detail.EndPosition}库位没查到"); 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); var entity = itmDetails.FirstOrDefault(p => p.ItemCode == detail.MatCode);
if (entity == null) if (entity == null)
{ {
errors.Add($"物料号{detail.MatCode}不在任务明细内!"); errors.Add($"零件号{detail.MatCode}不在任务明细内!");
} }
if (errors.Count > 0) if (errors.Count > 0)
{ {
await unitOfWork.RollbackAsync().ConfigureAwait(false);
return ret = new AgvResultObject() return ret = new AgvResultObject()
{ {
Code = "-1", Code = "-1",
@ -807,40 +787,25 @@ public class UnplannedIssueJobAppService
Message = string.Join(",", errors.ToArray()) Message = string.Join(",", errors.ToArray())
}; };
} }
var dto = new UnplannedIssueJobDetailDTO(); var dto = new UnplannedIssueJobDetailDTO();
dto.InjectFrom(entity); dto.InjectFrom(entity);
dto.HandledQty = detail.MatQty; 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.HandledFromWarehouseCode = fromlocation.WarehouseCode;
dto.HandledFromLocationCode = fromlocation.Code; dto.HandledFromLocationCode = fromlocation.Code;
dto.HandledFromLocationGroup = fromlocation.LocationGroupCode; dto.HandledFromLocationGroup = fromlocation.LocationGroupCode;
dto.HandledFromLocationArea = fromlocation.AreaCode; dto.HandledFromLocationArea = fromlocation.AreaCode;
dto.HandledFromLocationErpCode = fromlocation.ErpLocationCode; 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) if (errors.Count > 0)
{ {
await unitOfWork.RollbackAsync().ConfigureAwait(false);
ret = new AgvResultObject() ret = new AgvResultObject()
{ {
Code = "-1", Code = "-1",
@ -865,9 +830,9 @@ public class UnplannedIssueJobAppService
{ {
Code = "-1", Code = "-1",
ReqCode = job.UnplannedIssueRequestNumber, ReqCode = job.UnplannedIssueRequestNumber,
Message = ex.Message, Message = ex.Message
}; };
await unitOfWork.RollbackAsync(); await unitOfWork.RollbackAsync().ConfigureAwait(false);
return ret; return ret;
} }
@ -883,5 +848,76 @@ public class UnplannedIssueJobAppService
return ret; return ret;
} }
/// <summary>
/// 调用Agv接口实现
/// </summary>
/// <param name="job"></param>
/// <returns></returns>
private async Task<AgvResultObject> 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;
}
} }

197
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Jobs/UnplannedReceiptJobs/UnplannedReceiptJobAppService.cs

@ -324,73 +324,45 @@ public class UnplannedReceiptJobAppService
return true; return true;
} }
/// <summary> /// <summary>
/// /// 调用 Agv 接口
/// </summary> /// </summary>
/// <param name="job"></param> /// <param name="input"></param>
/// <param name="pLoc"></param>
/// <param name="uid"></param>
/// <returns></returns> /// <returns></returns>
[HttpPost("PushOutTask")] [HttpPost("call-agv")]
public async Task<AgvResultObject> PushOutTaskAsync(UnplannedReceiptJobDTO job) public async Task<ReusltObject> CallAgvAsync(UnplannedReceiptJobDTO input)
{ {
var ret = new AgvResultObject var res = new ReusltObject();
List<string> errors = new List<string>();
List<string> successList = new List<string>();
var jobres = await SendInterFaceAsync(input).ConfigureAwait(false);
if (jobres.Code != "0")
{ {
Code = "0", _logger.LogInformation(jobres.Message);
ReqCode = job.UnplannedReceiptRequestNumber, errors.Add(jobres.Message);
Message = "OK" }
}; else
using var unitOfWork = _unitOfWorkManager.Begin();
try
{ {
var first = job.Details.FirstOrDefault(); successList.Add(jobres.Message);
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);
} }
catch (Exception e) if (errors.Count > 0)
{ {
ret = new AgvResultObject(); res.Code = -1;
ret.Code = "1"; res.Message = string.Join(",", errors);
ret.Message = e.Message; res.Data = "";
ret.ReqCode = job.UnplannedReceiptRequestNumber; return res;
await unitOfWork.RollbackAsync().ConfigureAwait(false);
} }
return ret; return res;
} }
[HttpPost("accountOutOrder")]
/// <summary>
/// Agv 回调 接口
/// </summary>
/// <param name="request"></param>
/// <returns></returns>
[HttpPost("call-back-agv")]
public async Task<AgvResultObject> CallBackAgvAsync(AgvRequestDto request) public async Task<AgvResultObject> CallBackAgvAsync(AgvRequestDto request)
{ {
var json = JsonSerializer.Serialize(request); var json = JsonSerializer.Serialize(request);
@ -401,13 +373,11 @@ public class UnplannedReceiptJobAppService
var errors = new List<string>(); var errors = new List<string>();
var first = request.Data.FirstOrDefault(); var first = request.Data.FirstOrDefault();
var job = await _repository.GetAsync(p => p.Number == first.OrderNum).ConfigureAwait(false); var job = await _repository.GetAsync(p => p.Number == first.OrderNum).ConfigureAwait(false);
var ret = new AgvResultObject var ret = new AgvResultObject
{ {
Code = "0", Code = "0",
Message = "OK", Message = "OK",
ReqCode = job.UnplannedReceiptRequestNumber, ReqCode = job.UnplannedReceiptRequestNumber,
}; };
using var unitOfWork = _unitOfWorkManager.Begin(); using var unitOfWork = _unitOfWorkManager.Begin();
try try
@ -423,8 +393,8 @@ public class UnplannedReceiptJobAppService
{ {
errors.Add($"任务号{string.Join(",", numbers)}不存在!"); errors.Add($"任务号{string.Join(",", numbers)}不存在!");
} }
var dtos = ObjectMapper.Map<List<UnplannedReceiptJob>, List<UnplannedReceiptJobDTO>>(entities); var dtos = ObjectMapper.Map<List<UnplannedReceiptJob>, List<UnplannedReceiptJobDTO>>(entities);
foreach (var itm in dtos) foreach (var itm in dtos)
{ {
var arys = jobs.Where(p => p.OrderNum == itm.Number); var arys = jobs.Where(p => p.OrderNum == itm.Number);
@ -432,7 +402,6 @@ public class UnplannedReceiptJobAppService
var details = new List<UnplannedReceiptJobDetailDTO>(); var details = new List<UnplannedReceiptJobDetailDTO>();
foreach (var detail in arys) foreach (var detail in arys)
{ {
var fromloc = await _postionLocationAppService.GetByCodeAsync(detail.BeginPosition).ConfigureAwait(false); var fromloc = await _postionLocationAppService.GetByCodeAsync(detail.BeginPosition).ConfigureAwait(false);
if (fromloc == null) if (fromloc == null)
{ {
@ -467,13 +436,21 @@ public class UnplannedReceiptJobAppService
{ {
errors.Add($"结束点{detail.EndPosition}库位没查到"); 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); var entity = itmDetails.FirstOrDefault(p => p.ItemCode == detail.MatCode);
if (entity == null) if (entity == null)
{ {
errors.Add($"物料号{detail.MatCode}不在任务明细内!"); errors.Add($"零件号{detail.MatCode}不在任务明细内!");
} }
if (errors.Count > 0) if (errors.Count > 0)
{ {
await unitOfWork.RollbackAsync().ConfigureAwait(false);
return ret = new AgvResultObject() return ret = new AgvResultObject()
{ {
Code = "-1", Code = "-1",
@ -483,35 +460,20 @@ public class UnplannedReceiptJobAppService
} }
var dto = new UnplannedReceiptJobDetailDTO(); var dto = new UnplannedReceiptJobDetailDTO();
dto.InjectFrom(entity); dto.InjectFrom(entity);
dto.HandledQty = detail.MatQty; 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.HandledToWarehouseCode = fromlocation.WarehouseCode;
dto.HandledToLocationCode = fromlocation.Code; dto.HandledToLocationCode = fromlocation.Code;
dto.HandledToLocationGroup = fromlocation.LocationGroupCode; dto.HandledToLocationGroup = fromlocation.LocationGroupCode;
dto.HandledToLocationArea = fromlocation.AreaCode; dto.HandledToLocationArea = fromlocation.AreaCode;
dto.HandledToLocationErpCode = fromlocation.ErpLocationCode; 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); //await ExecuteDetailExtAsync(itm.Id, entity.Id, dto).ConfigureAwait(false);
} }
if (errors.Count > 0) if (errors.Count > 0)
{ {
await unitOfWork.RollbackAsync().ConfigureAwait(false);
ret = new AgvResultObject() ret = new AgvResultObject()
{ {
Code = "-1", Code = "-1",
@ -536,9 +498,9 @@ public class UnplannedReceiptJobAppService
{ {
Code = "-1", Code = "-1",
ReqCode = job.UnplannedReceiptRequestNumber, ReqCode = job.UnplannedReceiptRequestNumber,
Message = ex.Message, Message = ex.Message
}; };
await unitOfWork.RollbackAsync(); await unitOfWork.RollbackAsync().ConfigureAwait(false);
return ret; return ret;
} }
@ -553,4 +515,75 @@ public class UnplannedReceiptJobAppService
} }
return ret; return ret;
} }
/// <summary>
/// 调用Agv接口实现
/// </summary>
/// <param name="job"></param>
/// <returns></returns>
private async Task<AgvResultObject> 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;
}
} }

Loading…
Cancel
Save