pan
6 天以前 a7b15461d3dc6d07c18e065fa3a6acd234c2d7c8
ÏîÄ¿´úÂë/WMSÎÞ²Ö´¢°æ/WIDESEA_WMSServer/WIDESEA_TaskInfoService/TaskService.cs
@@ -130,17 +130,18 @@
            _task_HtyService = task_HtyService;
        }
        public async Task TaskStatusChange(string taskNum,TaskStatusEnum taskStatusEnum)
        public async Task TaskStatusChange(string taskNum, TaskStatusEnum taskStatusEnum)
        {
            if (int.TryParse(taskNum, out var newTaskNum))
            {
                await Db.Updateable<Dt_Task>().SetColumns(it => new Dt_Task {
                        TaskStatus = taskStatusEnum.ObjToInt()
                    })
                await Db.Updateable<Dt_Task>().SetColumns(it => new Dt_Task
                {
                    TaskStatus = taskStatusEnum.ObjToInt()
                })
                    .Where(it => it.TaskNum == newTaskNum)
                    .ExecuteCommandAsync();
            }
        }
        /// <summary>
@@ -450,10 +451,17 @@
                            var feedbackresult = await _invokeMESService.FeedbackInbound(feedmodel);
                            if (feedbackresult != null && feedbackresult.code == 200)
                            {
                                _inboundOrderService.Db.Updateable<Dt_InboundOrder>().SetColumns(it => new Dt_InboundOrder { ReturnToMESStatus = 1 })
                                _inboundOrderService.Db.Updateable<Dt_InboundOrder>().SetColumns(it => new Dt_InboundOrder { ReturnToMESStatus = 1, Remark = "" })
                                .Where(it => it.Id == inboundOrder.Id).ExecuteCommand();
                                _inboundOrderDetailService.Db.Updateable<Dt_InboundOrderDetail>().SetColumns(it => new Dt_InboundOrderDetail { ReturnToMESStatus = 1 })
                                .Where(it => it.OrderId == inboundOrder.Id).ExecuteCommand();
                            }
                            else
                            {
                                _inboundOrderService.Db.Updateable<Dt_InboundOrder>().SetColumns(it => new Dt_InboundOrder { ReturnToMESStatus = 2, Remark = feedbackresult.message })
                                .Where(it => it.Id == inboundOrder.Id).ExecuteCommand();
                                _inboundOrderDetailService.Db.Updateable<Dt_InboundOrderDetail>().SetColumns(it => new Dt_InboundOrderDetail { ReturnToMESStatus = 2 })
                               .Where(it => it.OrderId == inboundOrder.Id).ExecuteCommand();
                            }
                        }
                    }
@@ -586,7 +594,7 @@
            _logger.LogInformation($"TaskService InPickTaskCompleted: {task.TaskNum}");
            try
            {
            {
                // æŸ¥åº“å­˜
                Dt_StockInfo stockInfo = await _stockRepository.Db.Queryable<Dt_StockInfo>()
                    .Includes(x => x.Details)
@@ -624,7 +632,7 @@
                // æ›´æ–°å‡ºåº“锁定记录状态为回库完成
                foreach (var lockInfo in returnLocks)
                {
                    lockInfo.Status = (int)OutLockStockStatusEnum.已回库;
                    lockInfo.Status = (int)OutLockStockStatusEnum.已回库;
                }
                if (returnLocks.Any())
@@ -685,7 +693,7 @@
                );
                await RecalculateOrderStatus(task.OrderNo);
                _logger.LogInformation($"托盘回库完成处理成功 - ä»»åŠ¡å·: {task.TaskNum}, æ‰˜ç›˜: {task.PalletCode}, è®¢å•: {task.OrderNo}");
                _ = Task.Run(async () =>
                {
@@ -729,60 +737,62 @@
        {
            try
            {
                // èŽ·å–å—å½±å“çš„è®¢å•æ˜Žç»†ID(去重)
                var affectedDetailIds = returnLocks
                    .Select(x => x.OrderDetailId)
                    .Distinct()
                    .ToList();
                //var affectedDetailIds = returnLocks
                //    .Select(x => x.OrderDetailId)
                //    .Distinct()
                //    .ToList();
                if (!affectedDetailIds.Any())
                {
                    _logger.LogInformation($"没有受影响的订单明细 - OrderNo: {orderNo}");
                    return;
                }
                //if (!affectedDetailIds.Any())
                //{
                //    _logger.LogInformation($"没有受影响的订单明细 - OrderNo: {orderNo}");
                //    return;
                //}
                _logger.LogInformation($"更新{affectedDetailIds.Count}个受影响的订单明细 - OrderNo: {orderNo}");
                //_logger.LogInformation($"更新{affectedDetailIds.Count}个受影响的订单明细 - OrderNo: {orderNo}");
                foreach (var detailId in affectedDetailIds)
                {
                    // é‡æ–°è®¡ç®—该订单明细的锁定数量
                    decimal currentLockQty = await CalculateOrderDetailLockQuantity(detailId);
                //foreach (var detailId in affectedDetailIds)
                //{
                //    // é‡æ–°è®¡ç®—该订单明细的锁定数量
                //    decimal currentLockQty = await CalculateOrderDetailLockQuantity(detailId);
                    // æ£€æŸ¥æ•°æ®ä¸€è‡´æ€§
                    if (currentLockQty < 0)
                    {
                        _logger.LogWarning($"锁定数量计算为负值 - OrderDetailId: {detailId}, å½“前值: {currentLockQty},重置为0");
                        currentLockQty = 0;
                    }
                //    // æ£€æŸ¥æ•°æ®ä¸€è‡´æ€§
                //    if (currentLockQty < 0)
                //    {
                //        _logger.LogWarning($"锁定数量计算为负值 - OrderDetailId: {detailId}, å½“前值: {currentLockQty},重置为0");
                //        currentLockQty = 0;
                //    }
                    // èŽ·å–è®¢å•æ˜Žç»†
                    var orderDetail = await _outboundOrderDetailService.Db.Queryable<Dt_OutboundOrderDetail>()
                        .FirstAsync(x => x.Id == detailId);
                //    // èŽ·å–è®¢å•æ˜Žç»†
                //    var orderDetail = await _outboundOrderDetailService.Db.Queryable<Dt_OutboundOrderDetail>()
                //        .FirstAsync(x => x.Id == detailId);
                    if (orderDetail == null)
                    {
                        _logger.LogWarning($"未找到订单明细 - OrderDetailId: {detailId}");
                        continue;
                    }
                //    if (orderDetail == null)
                //    {
                //        _logger.LogWarning($"未找到订单明细 - OrderDetailId: {detailId}");
                //        continue;
                //    }
                    // æ›´æ–°é”å®šæ•°é‡
                    if (orderDetail.LockQuantity != currentLockQty)
                    {
                        await _outboundOrderDetailService.Db.Updateable<Dt_OutboundOrderDetail>()
                            .SetColumns(it => new Dt_OutboundOrderDetail
                            {
                                LockQuantity = currentLockQty,
                            })
                            .Where(it => it.Id == detailId)
                            .ExecuteCommandAsync();
                //    // æ›´æ–°é”å®šæ•°é‡
                //    if (orderDetail.LockQuantity != currentLockQty)
                //    {
                //        await _outboundOrderDetailService.Db.Updateable<Dt_OutboundOrderDetail>()
                //            .SetColumns(it => new Dt_OutboundOrderDetail
                //            {
                //                LockQuantity = currentLockQty,
                //            })
                //            .Where(it => it.Id == detailId)
                //            .ExecuteCommandAsync();
                        _logger.LogInformation($"更新订单明细锁定数量 - OrderDetailId: {detailId}, " +
                                              $"旧值: {orderDetail.LockQuantity}, æ–°å€¼: {currentLockQty}");
                    }
                //        _logger.LogInformation($"更新订单明细锁定数量 - OrderDetailId: {detailId}, " +
                //                              $"旧值: {orderDetail.LockQuantity}, æ–°å€¼: {currentLockQty}");
                //    }
                    // æ›´æ–°è®¢å•明细状态
                    await UpdateOrderDetailStatus(orderDetail);
                }
                //    // æ›´æ–°è®¢å•明细状态
                //    await UpdateOrderDetailStatus(orderDetail);
                //}
            }
            catch (Exception ex)
            {
@@ -931,6 +941,7 @@
                    {
                        hasInProgress = true;
                    }
                    await UpdateOrderDetailStatus(detail);
                }
                var outboundOrder = await _outboundOrderService.Db.Queryable<Dt_OutboundOrder>()
@@ -961,13 +972,14 @@
                    await _outboundOrderService.Db.Updateable<Dt_OutboundOrder>()
                        .SetColumns(x => new Dt_OutboundOrder
                        {
                            OrderStatus = newStatus,
                            OrderStatus = newStatus,
                        })
                        .Where(x => x.OrderNo == orderNo)
                        .ExecuteCommandAsync();
                    _logger.LogInformation($"更新订单状态 - OrderNo: {orderNo}, æ—§çŠ¶æ€: {outboundOrder.OrderStatus}, æ–°çŠ¶æ€: {newStatus}");
                }
            }
            catch (Exception ex)
            {
@@ -1037,7 +1049,7 @@
                if (allCompleted && newStatus == (int)OutOrderStatusEnum.出库完成)
                {
                    if (outboundOrder.OrderType == OutOrderTypeEnum.Allocate.ObjToInt())
                    if (outboundOrder.OrderType == OutOrderTypeEnum.Allocate.ObjToInt() || outboundOrder.OrderType == OutOrderTypeEnum.InternalAllocat.ObjToInt())
                    {
                        var allocate = _allocateService.Repository.QueryData(x => x.UpperOrderNo == outboundOrder.UpperOrderNo).First();
                        var allocatefeedmodel = new AllocateDto
@@ -1115,7 +1127,7 @@
                                await _outboundOrderService.Db.Updateable<Dt_OutboundOrder>()
                                      .SetColumns(x => new Dt_OutboundOrder
                                      {
                                          ReturnToMESStatus = 1,
                                          ReturnToMESStatus = 1,
                                      }).Where(x => x.OrderNo == orderNo).ExecuteCommandAsync();
                            }
                        }
@@ -1200,8 +1212,20 @@
                                    .ExecuteCommandAsync();
                                await _outboundOrderService.Db.Updateable<Dt_OutboundOrder>()
                                    .SetColumns(x => x.ReturnToMESStatus == 1)
                                    .SetColumns(it => new Dt_OutboundOrder { ReturnToMESStatus = 2, Remark = "" })
                                    .Where(x => x.OrderNo == orderNo)
                                    .ExecuteCommandAsync();
                            }
                            else
                            {
                                await _outboundOrderDetailService.Db.Updateable<Dt_OutboundOrderDetail>()
                                 .SetColumns(x => x.ReturnToMESStatus == 2)
                                 .Where(x => x.OrderId == outboundOrder.Id)
                                 .ExecuteCommandAsync();
                                await _outboundOrderService.Db.Updateable<Dt_OutboundOrder>()
                                    .SetColumns(it => new Dt_OutboundOrder { ReturnToMESStatus = 2, Remark = result.message })
                                     .Where(x => x.OrderNo == orderNo)
                                    .ExecuteCommandAsync();
                            }
                        }
@@ -1256,7 +1280,7 @@
                var stockresult = _stockService.StockInfoService.Repository.DeleteAndMoveIntoHty(stockInfo, App.User.UserId == 0 ? OperateTypeEnum.自动完成 : OperateTypeEnum.人工完成);
                if (!stockresult)
                {
                {
                    _stockRepository.Db.Deleteable(stockInfo).ExecuteCommand();
                }
                _stockService.StockInfoService.DeleteData(stockInfo);