| | |
| | | { |
| | | // 1. 查询到期库存 |
| | | var expiredStocks = await _stockInfoService.Repository |
| | | .QueryAsync(s => s.OutboundDate <= DateTime.Now |
| | | .QueryDataAsync(s => s.OutboundDate <= DateTime.Now |
| | | && s.StockStatus == StockStatusEmun.入库完成.GetHashCode()); |
| | | |
| | | if (expiredStocks == null || !expiredStocks.Any()) |
| | |
| | | if (stock.LocationId > 0) |
| | | { |
| | | stock.LocationDetails = await _locationInfoService.Repository |
| | | .GetFirstAsync(s => s.Id == stock.LocationId); |
| | | .QueryFirstAsync(s => s.Id == stock.LocationId); |
| | | } |
| | | } |
| | | |
| | |
| | | |
| | | // 2. 检查已存在的任务 |
| | | var palletCodes = expiredStocks.Select(s => s.PalletCode).ToList(); |
| | | var existingTasks = await Repository.QueryAsync(t => |
| | | var existingTasks = await Repository.QueryDataAsync(t => |
| | | palletCodes.Contains(t.PalletCode) |
| | | && (t.TaskStatus == TaskStatusEnum.New.GetHashCode() |
| | | || t.TaskStatus == TaskStatusEnum.Executing.GetHashCode() |
| | | || t.TaskInStatus == TaskInStatusEnum.InNew.GetHashCode())); |
| | | || t.TaskStatus == TaskStatusEnum.SC_Executing.GetHashCode() |
| | | || t.TaskStatus == TaskInStatusEnum.InNew.GetHashCode())); |
| | | |
| | | var processedPallets = existingTasks.Select(t => t.PalletCode).ToHashSet(); |
| | | |
| | |
| | | } |
| | | |
| | | // 6. 通知 WCS(异步,不影响主流程) |
| | | _ = Task.Run(async () => |
| | | _ = Task.Run(() => |
| | | { |
| | | foreach (var task in taskList) |
| | | { |
| | | try |
| | | { |
| | | var wmstaskDto = _mapper.Map<WMSTaskDTO>(task); |
| | | await _httpClientHelper.Post<WebResponseContent>( |
| | | _httpClientHelper.Post<WebResponseContent>( |
| | | "http://logistics-service/api/logistics/notifyoutbound", |
| | | JsonSerializer.Serialize(wmstaskDto)); |
| | | } |