pan
2025-11-17 5fc251a847ccc0540da8b112ed2bddba846455d8
ÏîÄ¿´úÂë/WMSÎÞ²Ö´¢°æ/WIDESEA_WMSServer/WIDESEA_TaskInfoService/TaskService.cs
@@ -108,6 +108,7 @@
            _outStockLockInfoService = outStockLockInfoService;
        }
        /// <summary>
        /// 
        /// </summary>
@@ -118,6 +119,7 @@
            try
            {
                Dt_Task task;
                if (int.TryParse(taskNum, out var newTaskNum))
                {
                    task = BaseDal.QueryFirst(x => x.TaskNum == newTaskNum);
@@ -130,6 +132,7 @@
                {
                    return WebResponseContent.Instance.Error("未找到任务信息");
                }
                _logger.LogInformation($"TaskService TaskCompleted: {JsonConvert.SerializeObject(task)} , {task.TaskType} ");
                MethodInfo? methodInfo = GetType().GetMethod(((TaskTypeEnum)task.TaskType) + "TaskCompleted");
                if (methodInfo != null)
@@ -144,6 +147,7 @@
            }
            catch (Exception ex)
            {
                _logger.LogError($"TaskService TaskCompleted:  {ex.Message} ");
                return WebResponseContent.Instance.Error(ex.Message);
            }
        }
@@ -252,22 +256,22 @@
                            business_type = inboundOrder.BusinessType,
                            factoryArea = inboundOrder.FactoryArea,
                            operationType = 1,
                            Operator = inboundOrder.Modifier,
                            Operator = inboundOrder.Operator,
                            orderNo = inboundOrder.UpperOrderNo,
                            status = inboundOrder.OrderStatus,
                            details = new List<FeedbackInboundDetailsModel>()
                        };
                        var groupedData = inboundOrder.Details.GroupBy(item => new { item.MaterielCode, item.SupplyCode, item.BatchNo, item.lineNo, item.BarcodeUnit, item.WarehouseCode})
                        var groupedData = inboundOrder.Details.GroupBy(item => new { item.MaterielCode, item.SupplyCode, item.BatchNo, item.lineNo, item.BarcodeUnit, item.WarehouseCode })
                           .Select(group => new FeedbackInboundDetailsModel
                           {
                               materialCode = group.Key.MaterielCode,
                               supplyCode = group.Key.SupplyCode,
                               batchNo = group.Key.BatchNo,
                               lineNo = group.Key.lineNo,
                               warehouseCode = group.Key.WarehouseCode ,
                              // warehouseCode= "1072",
                               warehouseCode = group.Key.WarehouseCode,
                               // warehouseCode= "1072",
                               unit = group.Key.BarcodeUnit,
                               barcodes = group.Select(row => new FeedbackBarcodesModel
                               {
@@ -276,20 +280,51 @@
                               }).ToList()
                           }).ToList();
                        feedmodel.details = groupedData;
                        _invokeMESService.FeedbackInbound(feedmodel);
                    }
                }
            }
            catch (Exception ex) {
            catch (Exception ex)
            {
                _logger.LogInformation("InboundTaskCompleted å›žå†™MES失败:  " + ex.Message);
            }
            return WebResponseContent.Instance.OK();
        }
        public WebResponseContent OutboundTaskCompleted(Dt_Task task)
        {
            _logger.LogInformation($"TaskService  OutboundTaskCompleted: {task.TaskNum}");
            //查货位
            Dt_LocationInfo locationInfo = _locationInfoService.Repository.QueryFirst(x => x.LocationCode == task.SourceAddress);
            if (locationInfo == null)
            {
                return WebResponseContent.Instance.Error($"未找到对应的终点货位信息");
            }
            locationInfo.LocationStatus = LocationStatusEnum.Free.ObjToInt();
            _locationInfoService.Repository.UpdateData(locationInfo);
            var outloks = _outStockLockInfoService.Db.Queryable<Dt_OutStockLockInfo>().Where(x => x.TaskNum == task.TaskNum).ToList();
            outloks.ForEach(o =>
            {
                o.Status = OutLockStockStatusEnum.已出库.ObjToInt();
            });
            _outStockLockInfoService.Db.Updateable(outloks).ExecuteCommand();
            var locationCodes = outloks.Select(it => it.LocationCode).Distinct().ToList();
            //_stockRepository.Db.Updateable<Dt_StockInfo>()
            //  .SetColumns(it => new Dt_StockInfo { StockStatus = StockStatusEmun.})
            //  .Where(it => locationCodes.Contains(it.LocationCode))
            //  .ExecuteCommand();
            return WebResponseContent.Instance.OK();
        }
        public async Task<WebResponseContent> InEmptyTaskCompleted(Dt_Task task)
        {
@@ -343,14 +378,20 @@
            }
        }
        public  WebResponseContent InPickTaskCompleted(Dt_Task task)
        {
            _logger.LogInformation($"TaskService  InPickTaskCompleted: {task.TaskNum}");
            return WebResponseContent.Instance.OK();
        }
        public async Task<WebResponseContent> OutEmptyTaskCompleted(Dt_Task task)
        {
            WebResponseContent content = new WebResponseContent();
            try
            {
                Dt_StockInfo stockInfo = _stockRepository.Db.Queryable<Dt_StockInfo>().Where(x => x.PalletCode == task.PalletCode && x.WarehouseId == task.WarehouseId).First();
                Dt_StockInfo stockInfo = _stockRepository.Db.Queryable<Dt_StockInfo>().Where(x => x.PalletCode == task.PalletCode).First();
                if (stockInfo == null)
                {
                    return WebResponseContent.Instance.Error($"未找到托盘对应的库存信息");
@@ -362,7 +403,6 @@
                    return content.Error($"未找到对应的终点货位信息");
                }
               // _stockRepository.Db.Deleteable(stockInfo);
                int beforeStatus = locationInfo.LocationStatus;
@@ -374,6 +414,7 @@
                task.TaskStatus = TaskStatusEnum.Finish.ObjToInt();
                BaseDal.DeleteAndMoveIntoHty(task, App.User.UserId == 0 ? OperateTypeEnum.自动完成 : OperateTypeEnum.人工完成);
                _stockService.StockInfoService.Repository.DeleteAndMoveIntoHty(stockInfo, App.User.UserId == 0 ? OperateTypeEnum.自动完成 : OperateTypeEnum.人工完成);
                _stockRepository.Db.Deleteable(stockInfo).ExecuteCommand();
                _locationStatusChangeRecordService.AddLocationStatusChangeRecord(locationInfo, beforeStatus, StockChangeType.Outbound.ObjToInt(), stockInfo.Details.FirstOrDefault()?.OrderNo ?? "", task.TaskNum);
@@ -382,16 +423,16 @@
            }
            catch (Exception ex)
            {
                _logger.LogError($"TaskService OutEmptyTaskCompleted:  {ex.Message} ");
                return await Task.FromResult(WebResponseContent.Instance.Error(ex.Message));
            }
        }
        /// <summary>
        /// å›žåº“完成回调 - AGV将托盘放回货位后调用
        /// </summary>
        /// å›žåº“完成回调
        public async Task<WebResponseContent> BackToStockComplete(Dt_Task task)
        {
            try
@@ -471,7 +512,7 @@
                //  æ›´æ–°ä»»åŠ¡çŠ¶æ€ä¸ºå·²å®Œæˆ
                task.TaskStatus = (int)TaskStatusEnum.Finish;
                await Db.Updateable(task).ExecuteCommandAsync();
                _unitOfWorkManage.CommitTran();