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 b5e17451b..7981b9ec2 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
@@ -293,7 +293,6 @@ public class AssembleIssueJobAppService
/// 执行任务明细
///
///
-
private async Task ExecuteDetailExtAsync(Guid masterId, Guid detailId, AssembleIssueJobDetailDTO issueJobDetailDto)
{
var assembleIssueJob = await _repository.GetAsync(masterId).ConfigureAwait(false);
@@ -502,10 +501,23 @@ public class AssembleIssueJobAppService
jobDetail.TransferLibToSupplierBatch = transferLibNoteDetail.HandledToSupplierBatch;
jobDetail.TransferLibToWarehouseCode = transferLibNoteDetail.HandledToWarehouseCode;
- job=await _repository.UpdateAsync(job).ConfigureAwait(false);
var jobDto=ObjectMapper.Map(job);
- await DoingAgvAsync(jobDto, jobDetail.TransferLibToLocationCode,jobDetail.RecommendToLocationCode).ConfigureAwait(false);
+ var isDoingAgv=await DoingAgvAsync(jobDto, jobDetail.TransferLibToLocationCode,jobDetail.RecommendToLocationCode).ConfigureAwait(false);
+
+ if (isDoingAgv)
+ {
+ job.JobStatus = EnumJobStatus.WaitAgv;
+ job.IsClaims = true;
+ job.ClaimsUserId = string.IsNullOrEmpty(_options.Value.StereosUser)
+ ? "AGV"
+ : _options.Value.StereosUser;
+ job.ClaimsUserName = string.IsNullOrEmpty(_options.Value.StereosPassword)
+ ? "AGV"
+ : _options.Value.StereosPassword;
+ }
+
+ job = await _repository.UpdateAsync(job).ConfigureAwait(false);
}
#endregion
@@ -818,7 +830,7 @@ public class AssembleIssueJobAppService
///
///
///
- private async Task DoingAgvAsync(AssembleIssueJobDTO assembleIssueJobDto,string fromLocationCode,string toLocationCode)
+ private async Task DoingAgvAsync(AssembleIssueJobDTO assembleIssueJobDto,string fromLocationCode,string toLocationCode)
{
var jobDetailInputdetail = assembleIssueJobDto.Details.FirstOrDefault();
var locationDeliveryDto = await _locationDeliveryAppService.GetByFromLocationCodeAndToLocationCodeAsync(
@@ -832,7 +844,7 @@ public class AssembleIssueJobAppService
#if DEBUG
- return;
+ return true;
#endif
@@ -841,6 +853,8 @@ public class AssembleIssueJobAppService
throw new UserFriendlyException($"调用AGV不成功!原因:{ret.Message}");
}
}
+
+ return false;
}
///
@@ -906,183 +920,73 @@ public class AssembleIssueJobAppService
[HttpPost("call-back-agv")]
public async Task CallBackAgvAsync(AgvRequestDto request)
{
- using var unitOfWork = _unitOfWorkManager.Begin();
- var ret = new AgvResultObject
+ var entity=await _repository.FindAsync(p => p.Number == request.Data.First().OrderNum).ConfigureAwait(false);
+ var dto=ObjectMapper.Map(entity);
+
+ foreach (var detail in entity.Details)
{
- Code = "1",
- Message = "Json转换错误",
- ReqCode = "Json转换错误"
- };
+ var detailDto = new AssembleIssueJobDetailDTO();
+ if (!string.IsNullOrEmpty(detail.TransferLibFromLocationCode))
+ {
+ //库移的最终目标 挪到 推荐的目标
+ var fromloc = await _locationAppService.GetByCodeAsync(detail.TransferLibToLocationCode).ConfigureAwait(false);
+ var toloc =await _locationAppService.GetByCodeAsync(detail.RecommendToLocationCode).ConfigureAwait(false);
+
+ detailDto.InjectFrom(detail);
+
+ detailDto.HandledToLocationCode = toloc.Code;
+ detailDto.HandledToLocationGroup = toloc.LocationGroupCode;
+ detailDto.HandledToLocationArea = toloc.AreaCode;
+ detailDto.HandledToLocationErpCode = toloc.ErpLocationCode;
+ detailDto.HandledToWarehouseCode = toloc.WarehouseCode;
+ detailDto.HandledToQty = request.Data.First().MatQty;
+ detailDto.HandledToLot = detail.TransferLibToLot;
+ detailDto.HandledToPackingCode = detail.TransferLibToPackingCode;
+
+ detailDto.HandledFromLocationCode = fromloc.Code;
+ detailDto.HandledFromLocationGroup = fromloc.LocationGroupCode;
+ detailDto.HandledFromLocationArea = fromloc.AreaCode;
+ detailDto.HandledFromLocationErpCode = fromloc.ErpLocationCode;
+ detailDto.HandledFromWarehouseCode = fromloc.WarehouseCode;
+ detailDto.HandledFromQty = request.Data.First().MatQty;//2024-12-16 和励 张旭确认的 因为没有人工干预 也没校验 一托就直接顶走了
+ detailDto.HandledFromLot = detail.TransferLibToLot;
+ detailDto.HandledFromPackingCode = detail.TransferLibToPackingCode;
+ }
+ else
+ {
+ var toloc = await _locationAppService.GetByCodeAsync(detail.RecommendToLocationCode).ConfigureAwait(false);
+ var fromloc = await _locationAppService.GetByCodeAsync(detail.RecommendFromLocationCode).ConfigureAwait(false);
+
+ detailDto.InjectFrom(detail);
+
+ detailDto.HandledToLocationCode = toloc.Code;
+ detailDto.HandledToLocationGroup = toloc.LocationGroupCode;
+ detailDto.HandledToLocationArea = toloc.AreaCode;
+ detailDto.HandledToLocationErpCode = toloc.ErpLocationCode;
+ detailDto.HandledToWarehouseCode = toloc.WarehouseCode;
+ detailDto.HandledToQty = request.Data.First().MatQty;
+ detailDto.HandledToLot = detail.RecommendToLot;
+ detailDto.HandledToPackingCode = detail.RecommendToPackingCode;
+
+ detailDto.HandledFromLocationCode = fromloc.Code;
+ detailDto.HandledFromLocationGroup = fromloc.LocationGroupCode;
+ detailDto.HandledFromLocationArea = fromloc.AreaCode;
+ detailDto.HandledFromLocationErpCode = fromloc.ErpLocationCode;
+ detailDto.HandledFromWarehouseCode = fromloc.WarehouseCode;
+ detailDto.HandledFromQty = request.Data.First().MatQty;//2024-12-16 和励 张旭确认的 因为没有人工干预 也没校验 一托就直接顶走了
+ detailDto.HandledFromLot = detail.RecommendToLot;
+ detailDto.HandledFromPackingCode = detail.RecommendToPackingCode;
+ }
-// try
-// {
-// var json = JsonSerializer.Serialize(request);
-// var flag = DateTime.Now.ToString("yyyyMMddHHmmss");
-// _logger.LogInformation($"{flag}接收到AGV确认单据内容:" + json);
-//#if DEBUG
-
-//#endif
-
-// foreach (var agvRequestDetailDto in request.Data)
-// {
-// var job = await _repository.FindAsync(p => p.Number == agvRequestDetailDto.OrderNum).ConfigureAwait(false);
-// if (job == null)
-// {
-// ret.ReqCode = agvRequestDetailDto.OrderNum;
-// throw new UserFriendlyException($"未找到{agvRequestDetailDto.OrderNum}单号");
-// }
-// if (job.JobStatus != EnumJobStatus.WaitAgv)
-// {
-// throw new UserFriendlyException($"{agvRequestDetailDto.OrderNum}单号的任务状态错误");
-// }
-// var postionLocationDtoFrom= await _postionLocationAppService.GetByCodeAsync(agvRequestDetailDto.BeginPosition).ConfigureAwait(false);
-// if (postionLocationDtoFrom == null)
-// {
-// throw new UserFriendlyException($"{agvRequestDetailDto.BeginPosition}起始点位未找到");
-// }
-// var postionLocationDtoEnd=await _postionLocationAppService.GetByCodeAsync(agvRequestDetailDto.EndPosition).ConfigureAwait(false);
-// if (postionLocationDtoEnd==null)
-// {
-// throw new UserFriendlyException($"{agvRequestDetailDto.EndPosition}目标点位未找到");
-// }
-// }
-
-
-
-// var locationDeliveryDto = await _locationDeliveryAppService.GetByFromLocationCodeAndToLocationCodeAsync(
-// jobDetailInputdetail.RecommendFromLocationCode, jobDetailInputdetail.RecommendToLocationCode).ConfigureAwait(false);
-
-// if (locationDeliveryDto != null && locationDeliveryDto.EnumLocationDeliveryType == EnumLocationDeliveryType.Agv)
-// {
-
-// }
-
-
-
-
-
-// foreach (var itm in dtos)
-// {
-// var arys = jobs.Where(p => p.OrderNum == itm.Number);
-// var itmDetails = itm.Details.ToList();
-// var details = new List();
-// foreach (var detail in arys)
-// {
-
-// if (fromloc == null)
-// {
-// errors.Add($"来源起始点{detail.BeginPosition}没查到");
-// }
-
-// LocationDTO fromlocation = null;
-
-// if (fromloc != null)
-// {
-// fromlocation = await _locationAppService.GetByCodeAsync(fromloc.LocationCode).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.LocationCode).ConfigureAwait(false);
-// }
-// if (tolocation == null)
-// {
-// 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}不在任务明细内!");
-// }
-// if (errors.Count > 0)
-// {
-// await unitOfWork.RollbackAsync().ConfigureAwait(false);
-// return ret = new AgvResultObject()
-// {
-// Code = "-1",
-// ReqCode = "",
-// Message = string.Join(",", errors.ToArray())
-// };
-// }
-// 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 : entity.RecommendFromLot;
-// 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.IsNullOrEmpty(detail.BatchAttr07) ? detail.BatchAttr07 : entity.RecommendToLot;
-// dto.HandledFromPackingCode = string.Empty;
-// 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",
-// ReqCode = "",
-// Message = string.Join(",", errors.ToArray())
-// };
-// }
-// itm.Worker = "AGV";
-// itm.Details = details;
-
-// _logger.LogInformation($"{flag}接收Agv确认单据内容:" + json + "Agv任务完成");
-// }
-// }
-// catch (Exception ex)
-// {
-// await unitOfWork.RollbackAsync().ConfigureAwait(false);
-// return ret;
-// }
-
-// if (errors.Count > 0)
-// {
-// ret = new AgvResultObject
-// {
-// Code = "-1",
-// Message = string.Join(",", errors.ToArray()),
-// ReqCode = first.OrderNum
-// };
-// }
- return ret;
+ await ExecuteDetailExtAsync(entity.Id, entity.Details.First().Id, detailDto).ConfigureAwait(false);
+ }
+
+ return new AgvResultObject
+ {
+ Code = "0",
+ Message = "OK",
+ ReqCode = "",
+ };
}
///