肖洋
2024-12-10 578c0eefb1f2e945c4d22ddcd1ab5d20b9c036f6
Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StorageTaskServices/Task/Dt_TaskService.cs
@@ -102,6 +102,7 @@
            // 更新库存状态和任务状态
            (var loc, var tas) = UpdateStockAndTaskStatus(stock, task);
            var taskHty = task.Adapt<Dt_Task_Hty>();
            // 事务处理
            await _unitOfWorkManage.UseTranAsync(async () =>
@@ -114,6 +115,7 @@
                await UpdateLocationAsync(loc);
                //if (task.Roadway.Contains("FR") || task.Roadway.Contains("GW") || task.TaskType == (int)TaskOutboundTypeEnum.OutTray)   //如果是分容或高温出库 将任务删除
                await DeleteTaskAsync(task.TaskId);
                await AddTaskHtyAsync(taskHty);
            });
            return content.OK("任务完成成功", task.Remark);
@@ -233,6 +235,15 @@
        if (!isTaskUpdated)
        {
            throw new Exception("任务信息更新失败");
        }
    }
    private async Task AddTaskHtyAsync(Dt_Task_Hty taskHty)
    {
        var isTaskAdd = await _task_HtyRepository.AddDataAsync(taskHty) > 0;
        if (!isTaskAdd)
        {
            throw new Exception("历史任务信息添加失败");
        }
    }
@@ -967,15 +978,15 @@
    /// <param name="areaCode">区域编码</param>
    /// <param name="roadways">巷道编码集合</param>
    /// <returns>返回结果集</returns>
    public async Task<WebResponseContent> RequestTrayOutTaskAsync(string position, int tag, string areaCode, List<string> roadways)
    public async Task<WebResponseContent> RequestTrayOutTaskAsync(string position, int tag, string areaCode, string productionLine)
    {
        WebResponseContent content = new WebResponseContent();
        try
        {
            // 根据托盘类型查询库存信息
            DtStockInfo stockInfo = tag == (int)TaskOutboundTypeEnum.Outbound
                ? QueryStockInfoForRealTrayAsync(areaCode, roadways).Result
                : QueryStockInfoForEmptyTrayAsync(areaCode, roadways).Result;
                ? QueryStockInfoForRealTrayAsync(areaCode, productionLine).Result
                : QueryStockInfoForEmptyTrayAsync(areaCode).Result;
            if (stockInfo == null)
            {
@@ -1022,7 +1033,7 @@
    /// <summary>
    /// 查询实盘库存信息
    /// </summary>
    private async Task<DtStockInfo> QueryStockInfoForRealTrayAsync(string areaCode, List<string> roadways)
    private async Task<DtStockInfo> QueryStockInfoForRealTrayAsync(string areaCode, string productionLine)
    {
        var area = await _areaInfoRepository.QueryFirstAsync(x => x.AreaCode == areaCode);
@@ -1030,6 +1041,7 @@
            .Includes(x => x.LocationInfo) // 预加载LocationInfo
            .Includes(x => x.StockInfoDetails) // 预加载StockInfoDetails
            .Where(x => x.AreaCode == areaCode && x.OutboundTime < DateTime.Now && x.IsFull == true) // 过滤条件
            .WhereIF(!productionLine.IsNullOrEmpty(), x => x.ProductionLine == productionLine)
            .Where(x => x.LocationInfo.LocationStatus == (int)LocationEnum.InStock && x.LocationInfo.AreaId == area.AreaID) // 过滤条件
            .OrderBy(x => x.OutboundTime) // 排序
            .FirstAsync(); // 获取第一个元素
@@ -1043,7 +1055,7 @@
    /// <summary>
    /// 查询空盘库存信息
    /// </summary>
    private async Task<DtStockInfo> QueryStockInfoForEmptyTrayAsync(string areaCode, List<string> roadways)
    private async Task<DtStockInfo> QueryStockInfoForEmptyTrayAsync(string areaCode)
    {
        var area = await _areaInfoRepository.QueryFirstAsync(x => x.AreaCode == areaCode);