wanshenmean
2026-03-06 b5f60c0333d5bd2cccfc541e744638252c0390b8
fix: 优化自动出库任务性能 - 批量查询和任务号生成
已修改1个文件
26 ■■■■ 文件已修改
Code/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/TaskService.cs 26 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Code/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/TaskService.cs
@@ -413,13 +413,29 @@
                    return WebResponseContent.Instance.OK("无到期库存需要处理");
                }
                // 加载位置详情
                // 批量加载位置详情(优化 N+1 查询问题)
                var locationIds = expiredStocks
                    .Where(s => s.LocationId > 0)
                    .Select(s => s.LocationId)
                    .Distinct()
                    .Cast<object>()
                    .ToList();
                if (locationIds.Any())
                {
                    var locations = await _locationInfoService.Repository
                        .QureyDataByIdsAsync(locationIds);
                    // 创建位置字典以便快速查找
                    var locationDict = locations.ToDictionary(l => l.Id, l => l);
                    // 为每个库存关联位置详情
                foreach (var stock in expiredStocks)
                {
                    if (stock.LocationId > 0)
                        if (stock.LocationId > 0 && locationDict.ContainsKey(stock.LocationId))
                    {
                        stock.LocationDetails = await _locationInfoService.Repository
                            .QueryFirstAsync(s => s.Id == stock.LocationId);
                            stock.LocationDetails = locationDict[stock.LocationId];
                        }
                    }
                }
@@ -481,7 +497,7 @@
                        TaskType = TaskTypeEnum.Outbound.GetHashCode(),
                        TaskStatus = TaskStatusEnum.New.GetHashCode(),
                        Grade = 1,
                        TaskNum = await Repository.GetTaskNo(),
                        TaskNum = 0,  // 使用 0 让数据库自动生成任务号
                        Creater = "system_auto"
                    };
                    taskList.Add(task);