From 3b3ff1836b8837ffd541cc7eefde8d5e5d195110 Mon Sep 17 00:00:00 2001
From: 647556386 <647556386@qq.com>
Date: 星期四, 18 十二月 2025 16:32:13 +0800
Subject: [PATCH] 1

---
 项目代码/WMS无仓储版/WIDESEA_WMSServer/WIDESEA_TaskInfoService/TaskService.cs |  259 +++++++++++++++++++++++++++------------------------
 1 files changed, 138 insertions(+), 121 deletions(-)

diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS\346\227\240\344\273\223\345\202\250\347\211\210/WIDESEA_WMSServer/WIDESEA_TaskInfoService/TaskService.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS\346\227\240\344\273\223\345\202\250\347\211\210/WIDESEA_WMSServer/WIDESEA_TaskInfoService/TaskService.cs"
index b65d4c3..73308c9 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS\346\227\240\344\273\223\345\202\250\347\211\210/WIDESEA_WMSServer/WIDESEA_TaskInfoService/TaskService.cs"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS\346\227\240\344\273\223\345\202\250\347\211\210/WIDESEA_WMSServer/WIDESEA_TaskInfoService/TaskService.cs"
@@ -292,7 +292,7 @@
             task.TaskStatus = TaskStatusEnum.Finish.ObjToInt();
 
             //  BaseDal.DeleteAndMoveIntoHty(task, App.User.UserId == 0 ? OperateTypeEnum.鑷姩瀹屾垚 : OperateTypeEnum.浜哄伐瀹屾垚);
-            var result = _task_HtyService.DeleteAndMoveIntoHty(task, OperateTypeEnum.浜哄伐鍒犻櫎);
+            var result = _task_HtyService.DeleteAndMoveIntoHty(task, OperateTypeEnum.鑷姩瀹屾垚);
             if (!result)
             {
                 await Db.Deleteable(task).ExecuteCommandAsync();
@@ -502,27 +502,27 @@
             locationInfo.LocationStatus = LocationStatusEnum.Free.ObjToInt();
             _locationInfoService.Repository.UpdateData(locationInfo);
 
-            var outloks = await _outStockLockInfoService.Db.Queryable<Dt_OutStockLockInfo>().Where(x => x.TaskNum == task.TaskNum).ToListAsync();
-
-            var stockids = outloks.Select(x => x.StockId).ToList();
-
-            _stockService.StockInfoService.Db.Updateable<Dt_StockInfo>()
-                                  .SetColumns(it => new Dt_StockInfo
-                                  {
-                                      StockStatus = StockStatusEmun.鍑哄簱閿佸畾.ObjToInt()
-                                  })
-                                  .Where(it => stockids.Contains(it.Id))
-                                  .ExecuteCommand();
-
-            _stockService.StockInfoDetailService.Db.Updateable<Dt_StockInfoDetail>()
-                                  .SetColumns(it => new Dt_StockInfoDetail
-                                  {
-                                      Status = StockStatusEmun.鍑哄簱閿佸畾.ObjToInt()
-                                  })
-                                  .Where(it => stockids.Contains(it.StockId))
-                                  .ExecuteCommand();
+            var stock = _stockService.StockInfoService.Db.Queryable<Dt_StockInfo>()
+                                  .Includes(x => x.Details)
+                                  .Where(x => x.PalletCode == task.PalletCode)
+                                  .First();
 
 
+            stock.StockStatus = StockStatusEmun.鍑哄簱瀹屾垚.ObjToInt();
+            stock.LocationCode = "";
+
+            stock.Details.ForEach(x =>
+            {
+                x.Status = StockStatusEmun.鍑哄簱瀹屾垚.ObjToInt();
+            });
+
+            _stockService.StockInfoService.Db.UpdateNav(stock).IncludesAllFirstLayer().ExecuteCommand();
+
+            var result = _task_HtyService.DeleteAndMoveIntoHty(task, OperateTypeEnum.鑷姩瀹屾垚);
+            if (!result)
+            {
+                await Db.Deleteable(task).ExecuteCommandAsync();
+            }
 
             return WebResponseContent.Instance.OK();
 
@@ -566,10 +566,9 @@
                 stockInfo.StockStatus = StockStatusEmun.鍏ュ簱瀹屾垚.ObjToInt();
                 _stockRepository.UpdateData(stockInfo);
 
-                var outboundOrder = _outboundOrderService.Db.Queryable<Dt_OutboundOrder>().First(x => x.OrderNo == task.OrderNo);
+                //var outboundOrder = _outboundOrderService.Db.Queryable<Dt_OutboundOrder>().First(x => x.OrderNo == task.OrderNo);
 
                 task.TaskStatus = TaskStatusEnum.Finish.ObjToInt();
-                // BaseDal.DeleteAndMoveIntoHty(task, App.User.UserId == 0 ? WIDESEA_Core.Enums.OperateTypeEnum.鑷姩瀹屾垚 : OperateTypeEnum.浜哄伐瀹屾垚);
                 var result = _task_HtyService.DeleteAndMoveIntoHty(task, OperateTypeEnum.浜哄伐鍒犻櫎);
                 if (!result)
                 {
@@ -584,14 +583,14 @@
                     _logger.LogInformation($"InEmptyTaskCompleted AddLocationStatusChangeRecord : {ex.Message} ");
                 }
 
-                if (outboundOrder != null)
-                {
-                    await HandleOutboundOrderToMESCompletion(outboundOrder, outboundOrder.OrderNo);
-                }
-                else
-                {
-                    _logger.LogInformation($"TaskService  InEmptyTaskCompleted: {task.TaskNum} ,鏈壘鍒板嚭搴撳崟銆�  ");
-                }
+                //if (outboundOrder != null)
+                //{
+                //    await HandleOutboundOrderToMESCompletion(outboundOrder, outboundOrder.OrderNo);
+                //}
+                //else
+                //{
+                //    _logger.LogInformation($"TaskService  InEmptyTaskCompleted: {task.TaskNum} ,鏈壘鍒板嚭搴撳崟銆�  ");
+                //}
 
                 return content;
             }
@@ -636,23 +635,23 @@
                 var beforelocationStatus = locationInfo.LocationStatus;
 
                 // 鑾峰彇鎵�鏈夊洖搴撲腑鐨勫嚭搴撻攣瀹氳褰�
-                var returnLocks = await _outStockLockInfoService.Db.Queryable<Dt_OutStockLockInfo>()
-                    .Where(it => it.OrderNo == task.OrderNo &&
-                               it.PalletCode == task.PalletCode &&
-                               it.Status == (int)OutLockStockStatusEnum.鍥炲簱涓�)
-                    .ToListAsync();
+                //var returnLocks = await _outStockLockInfoService.Db.Queryable<Dt_OutStockLockInfo>()
+                //    .Where(it => it.OrderNo == task.OrderNo &&
+                //               it.PalletCode == task.PalletCode &&
+                //               it.Status == (int)OutLockStockStatusEnum.鍥炲簱涓�)
+                //    .ToListAsync();
 
                 // 鏇存柊鍑哄簱閿佸畾璁板綍鐘舵�佷负鍥炲簱瀹屾垚
-                foreach (var lockInfo in returnLocks)
-                {
-                    lockInfo.Status = (int)OutLockStockStatusEnum.宸插洖搴�;
-                }
+                //foreach (var lockInfo in returnLocks)
+                //{
+                //    lockInfo.Status = (int)OutLockStockStatusEnum.宸插洖搴�;
+                //}
 
-                if (returnLocks.Any())
-                {
-                    await _outStockLockInfoService.Db.Updateable(returnLocks).ExecuteCommandAsync();
-                    _logger.LogInformation($"鏇存柊{returnLocks.Count}鏉¢攣瀹氳褰曚负宸插洖搴撶姸鎬�");
-                }
+                //if (returnLocks.Any())
+                //{
+                //    await _outStockLockInfoService.Db.Updateable(returnLocks).ExecuteCommandAsync();
+                //    _logger.LogInformation($"鏇存柊{returnLocks.Count}鏉¢攣瀹氳褰曚负宸插洖搴撶姸鎬�");
+                //}
 
                 // 鏇存柊搴撳瓨淇℃伅
                 stockInfo.LocationCode = task.TargetAddress;
@@ -664,7 +663,7 @@
                     foreach (var detail in stockInfo.Details)
                     {
                         detail.Status = StockStatusEmun.鍏ュ簱瀹屾垚.ObjToInt();
-                        detail.OutboundQuantity = 0; // 鍏ュ簱瀹屾垚鏃跺嚭搴撴暟閲忔竻闆�
+                        detail.OutboundQuantity = 0;
                     }
                     _stockService.StockInfoDetailService.Repository.UpdateData(stockInfo.Details);
                 }
@@ -673,7 +672,7 @@
                 // 鍒犻櫎闆跺簱瀛樻暟鎹�
                 await DeleteZeroQuantityStockDetails(stockInfo.Id);
 
-                await UpdateAffectedOrderDetails(task.OrderNo, returnLocks);
+                //await UpdateAffectedOrderDetails(task.OrderNo, returnLocks);
                 // 鏇存柊璐т綅鐘舵��
                 if (stockInfo.PalletType == PalletTypeEnum.Empty.ObjToInt())
                 {
@@ -697,7 +696,7 @@
                     await Db.Deleteable(task).ExecuteCommandAsync();
                 }
 
-                await RecalculateOrderStatus(task.OrderNo);
+                //await RecalculateOrderStatus(task.OrderNo);
                 try
                 {
                     // 璁板綍璐т綅鐘舵�佸彉鏇�
@@ -714,32 +713,32 @@
                     _logger.LogInformation($"InPickTaskCompleted AddLocationStatusChangeRecord : {ex.Message} ");
                 }
 
-                _logger.LogInformation($"鎵樼洏鍥炲簱瀹屾垚澶勭悊鎴愬姛 - 浠诲姟鍙�: {task.TaskNum}, 鎵樼洏: {task.PalletCode}, 璁㈠崟: {task.OrderNo}");
-                _ = Task.Run(async () =>
-                {
-                    try
-                    {
-                        var outboundOrder = await _outboundOrderService.Db.Queryable<Dt_OutboundOrder>()
-                            .FirstAsync(x => x.OrderNo == task.OrderNo);
+                //_logger.LogInformation($"鎵樼洏鍥炲簱瀹屾垚澶勭悊鎴愬姛 - 浠诲姟鍙�: {task.TaskNum}, 鎵樼洏: {task.PalletCode}, 璁㈠崟: {task.OrderNo} 璐т綅鐘舵�侊細{locationInfo.LocationStatus}");
+                //_ = Task.Run(async () =>
+                //{
+                //    try
+                //    {
+                //        var outboundOrder = await _outboundOrderService.Db.Queryable<Dt_OutboundOrder>()
+                //            .FirstAsync(x => x.OrderNo == task.OrderNo);
 
-                        if (outboundOrder != null)
-                        {
-                            // 妫�鏌ヨ鍗曟槸鍚﹀凡瀹屾垚锛屽彧鏈夊畬鎴愭椂鎵嶅悜MES鍙嶉
-                            if (outboundOrder.OrderStatus == (int)OutOrderStatusEnum.鍑哄簱瀹屾垚)
-                            {
-                                await HandleOutboundOrderToMESCompletion(outboundOrder, outboundOrder.OrderNo);
-                            }
-                            else
-                            {
-                                _logger.LogInformation($"璁㈠崟{task.OrderNo}鐘舵�佷负{outboundOrder.OrderStatus}锛屾殏涓嶅悜MES鍙嶉");
-                            }
-                        }
-                    }
-                    catch (Exception ex)
-                    {
-                        _logger.LogError($"寮傛MES鍙嶉澶勭悊澶辫触 - OrderNo: {task.OrderNo}, Error: {ex.Message}");
-                    }
-                });
+                //        if (outboundOrder != null)
+                //        {
+                //            // 妫�鏌ヨ鍗曟槸鍚﹀凡瀹屾垚锛屽彧鏈夊畬鎴愭椂鎵嶅悜MES鍙嶉
+                //            if (outboundOrder.OrderStatus == (int)OutOrderStatusEnum.鍑哄簱瀹屾垚)
+                //            {
+                //                await HandleOutboundOrderToMESCompletion(outboundOrder, outboundOrder.OrderNo);
+                //            }
+                //            else
+                //            {
+                //                _logger.LogInformation($"璁㈠崟{task.OrderNo}鐘舵�佷负{outboundOrder.OrderStatus}锛屾殏涓嶅悜MES鍙嶉");
+                //            }
+                //        }
+                //    }
+                //    catch (Exception ex)
+                //    {
+                //        _logger.LogError($"寮傛MES鍙嶉澶勭悊澶辫触 - OrderNo: {task.OrderNo}, Error: {ex.Message}");
+                //    }
+                //});
             }
             catch (Exception ex)
             {
@@ -1136,33 +1135,36 @@
 
                                 allocatefeedmodel.Details.Add(detailModel);
                             }
-                            var groupedResult = allocatefeedmodel.Details.GroupBy(item => new
-                            {
-                                item.WarehouseCode,
-                                item.MaterialCode,
-                                item.Unit,
-                                item.LineNo
-                            }).Select(group => new AllocateDtoDetail
-                            {
-                                 WarehouseCode = group.Key.WarehouseCode,
-                                 MaterialCode = group.Key.MaterialCode,
-                                 LineNo = group.Key.LineNo,                              
-                                 Qty = group.Sum(x => x.Qty),  
-                                 Unit = group.Key.Unit, 
-                                 Barcodes = group.SelectMany(x => x.Barcodes) 
-                                                       .GroupBy(b => b.Barcode) 
-                                                       .Select(b => new BarcodeInfo
-                                                       {
-                                                           Barcode = b.Key,
-                                                           BatchNo = b.First().BatchNo,
-                                                           SupplyCode = b.First().SupplyCode,
-                                                           Qty = b.Max(x => x.Qty), 
-                                                           Unit = b.First().Unit
-                                                       }) .ToList()
-                             }) .ToList();
+                            var groupedResult = allocatefeedmodel.Details
+                                .GroupBy(item => new { item.WarehouseCode, item.MaterialCode, item.Unit, item.LineNo })
+                                .Select(group =>
+                                {
+
+                                    var deduplicatedBarcodes = group.SelectMany(x => x.Barcodes)
+                                                                   .GroupBy(b => b.Barcode)
+                                                                   .Select(b => new BarcodeInfo
+                                                                   {
+                                                                       Barcode = b.Key,
+                                                                       BatchNo = b.First().BatchNo,
+                                                                       SupplyCode = b.First().SupplyCode,
+                                                                       Qty = b.Max(x => x.Qty),
+                                                                       Unit = b.First().Unit
+                                                                   }).ToList();
+                                    return new AllocateDtoDetail
+                                    {
+                                        WarehouseCode = group.Key.WarehouseCode,
+                                        MaterialCode = group.Key.MaterialCode,
+                                        LineNo = group.Key.LineNo,
+                                        Qty = deduplicatedBarcodes.Sum(b => b.Qty),
+                                        Unit = group.Key.Unit,
+                                        Barcodes = deduplicatedBarcodes
+                                    };
+                                }).ToList();
+
                             allocatefeedmodel.Details = groupedResult;
 
-                          var result = await _invokeMESService.FeedbackAllocate(allocatefeedmodel);
+
+                            var result = await _invokeMESService.FeedbackAllocate(allocatefeedmodel);
                             if (result != null && result.code == 200)
                             {
                                 await _outboundOrderDetailService.Db.Updateable<Dt_OutboundOrderDetail>()
@@ -1175,6 +1177,19 @@
                                           ReturnToMESStatus = 1,
                                       }).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();
+                            }
+
                         }
                     }
                     else if (outboundOrder.OrderType == OutOrderTypeEnum.ReCheck.ObjToInt())
@@ -1247,30 +1262,32 @@
                                 }
                                 feedmodel.details.Add(detailModel);
                             }
-                            var groupedResult = feedmodel.details.GroupBy(item => new
-                            {
-                                item.warehouseCode,
-                                item.materialCode,
-                                item.unit,
-                                item.lineNo
-                            }).Select(group => new FeedbackOutboundDetailsModel
-                            {
-                                warehouseCode = group.Key.warehouseCode,
-                                materialCode = group.Key.materialCode,
-                                lineNo = group.Key.lineNo,
-                                qty = group.Sum(x => x.qty),
-                                unit = group.Key.unit,
-                                barcodes = group.SelectMany(x => x.barcodes)
-                                                       .GroupBy(b => b.barcode)
-                                                       .Select(b => new WIDESEA_DTO.Outbound.BarcodesModel
-                                                       {
-                                                           barcode = b.Key,
-                                                           batchNo = b.First().batchNo,
-                                                           supplyCode = b.First().supplyCode,
-                                                           qty = b.Max(x => x.qty),
-                                                           unit = b.First().unit
-                                                       }).ToList()
-                            }).ToList();
+
+                            var groupedResult = feedmodel.details
+                               .GroupBy(item => new { item.warehouseCode, item.materialCode, item.unit, item.lineNo })
+                               .Select(group =>
+                               {
+                                   var deduplicatedBarcodes = group.SelectMany(x => x.barcodes)
+                                                                  .GroupBy(b => b.barcode)
+                                                                  .Select(b => new WIDESEA_DTO.Outbound.BarcodesModel
+                                                                  {
+                                                                      barcode = b.Key,
+                                                                      batchNo = b.First().batchNo,
+                                                                      supplyCode = b.First().supplyCode,
+                                                                      qty = b.Max(x => x.qty),
+                                                                      unit = b.First().unit
+                                                                  }).ToList();
+                                   return new FeedbackOutboundDetailsModel
+                                   {
+                                       warehouseCode = group.Key.warehouseCode,
+                                       materialCode = group.Key.materialCode,
+                                       lineNo = group.Key.lineNo,
+                                       qty = deduplicatedBarcodes.Sum(b => b.qty),
+                                       unit = group.Key.unit,
+                                       barcodes = deduplicatedBarcodes
+                                   };
+                               }).ToList();
+
                             feedmodel.details = groupedResult;
 
                             var result = await _invokeMESService.FeedbackOutbound(feedmodel);

--
Gitblit v1.9.3