From 348eaae6ec7d37ea1998b6148f91fc43eaed2d8a Mon Sep 17 00:00:00 2001
From: 647556386 <647556386@qq.com>
Date: 星期二, 03 二月 2026 17:22:33 +0800
Subject: [PATCH] 1

---
 项目代码/WMS无仓储版/WIDESEA_WMSServer/WIDESEA_TaskInfoService/TaskService.cs |  235 ++++++++++++++++++++++++++++++++++++++++------------------
 1 files changed, 162 insertions(+), 73 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 5e89b8c..2816365 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"
@@ -282,11 +282,28 @@
                     _inboundOrderService.UpdateData(inboundOrder);
                 }
             }
+            Dt_OutboundOrder outboundOrder = _outboundOrderService.Db.Queryable<Dt_OutboundOrder>().Where(x => x.OrderNo == stockInfo.Details.FirstOrDefault().OrderNo).Includes(x => x.Details).First();
+
+            if (outboundOrder != null)
+            {
+                foreach (var item in stockInfo.Details.Where(x => x.OrderNo == outboundOrder.OrderNo).ToList())
+                {
+                    var inbounddetail = _allocateMaterialInfo.QueryFirst(x => x.OrderNo == item.OrderNo && x.Barcode == item.Barcode);
+                    if (inbounddetail != null)
+                    {
+                        var alldelete = _allocateMaterialInfo.DeleteAndMoveIntoHty(inbounddetail, OperateTypeEnum.鑷姩鍒犻櫎);
+                        if (!alldelete)
+                        {
+                            await Db.Deleteable(task).ExecuteCommandAsync();
+                        }
+                    }
+                }
+            }
             stockInfo.LocationCode = task.TargetAddress;
             stockInfo.StockStatus = StockStatusEmun.鍏ュ簱瀹屾垚.ObjToInt();
             stockInfo.Details.ForEach(x =>
             {
-                x.Status = StockStatusEmun.鍏ュ簱瀹屾垚.ObjToInt();
+                x.Status = StockStatusEmun.鍏ュ簱纭.ObjToInt();
             });
             _stockService.StockInfoService.Repository.UpdateData(stockInfo);
             _stockService.StockInfoDetailService.Repository.UpdateData(stockInfo.Details);
@@ -315,8 +332,6 @@
             try
             {
                 _locationStatusChangeRecordService.AddLocationStatusChangeRecord(locationInfo, beforeStatus, StockChangeType.Inbound.ObjToInt(), "", task.TaskNum);
-
-                _recordService.StockQuantityChangeRecordService.AddStockChangeRecord(stockInfo, stockInfo.Details, beforeQuantity, stockInfo.Details.Sum(x => x.StockQuantity) + beforeQuantity, WIDESEA_Common.StockEnum.StockChangeType.MaterielGroup);
             }
             catch (Exception ex)
             {
@@ -345,8 +360,9 @@
                                 Details = new List<AllocateDtoDetail>()
 
                             };
-
-                            var groupedData = inboundOrder.Details.GroupBy(item => new { item.MaterielCode, item.lineNo, item.BarcodeUnit, item.WarehouseCode })
+                            var query = inboundOrder.Details.AsQueryable();
+                            query = query.Where(item => item.ReturnToMESStatus == 0);
+                            var groupedData = query.GroupBy(item => new { item.MaterielCode, item.lineNo, item.BarcodeUnit, item.WarehouseCode })
                                .Select(group => new AllocateDtoDetail
                                {
                                    MaterialCode = group.Key.MaterielCode,
@@ -365,8 +381,6 @@
                                    }).ToList()
                                }).ToList();
                             allocatefeedmodel.Details = groupedData;
-
-                            //var feedbackresult = await _invokeMESService.FeedbackAllocate(allocatefeedmodel);
 
                             var response = responseModel(inboundOrder, 3, null, allocatefeedmodel);
                             if (response != null && response.IsSuccess)
@@ -375,65 +389,24 @@
                                 .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();
+                                //鍥炰紶鎴愬姛搴撳瓨鎵嶅彲鐢�
+                                _stockRepository.Db.Updateable<Dt_StockInfoDetail>().SetColumns(it => new Dt_StockInfoDetail
+                                {
+                                    Status = StockStatusEmun.鍏ュ簱瀹屾垚.ObjToInt()
+                                }).Where(it => it.OrderNo == inboundOrder.InboundOrderNo).ExecuteCommand();
+                            }
+                            else
+                            {
+                                _inboundOrderService.Db.Updateable<Dt_InboundOrder>().SetColumns(it => new Dt_InboundOrder { ReturnToMESStatus = 2, Remark = response.ErrorMessage })
+                                .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();
                             }
                         }
                     }
                     else if (inboundOrder.OrderType == InOrderTypeEnum.ReCheck.ObjToInt()) //閲嶆鍏ュ簱
                     {
                         //涓嶉渶瑕佸洖浼犮�傚崰涓�涓綅缃��
-                    }
-                    else if (inboundOrder.OrderType == InOrderTypeEnum.InternalAllocat.ObjToInt()) //鏅轰粨璋冩櫤浠�
-                    {
-                        _logger.LogInformation($"InboundTaskCompleted 鍥炲啓MES  : {inboundOrder.InboundOrderNo}  ,ordertype: {InOrderTypeEnum.InternalAllocat.ObjToInt()} ");
-                        // BusinessTypeEnum.鏅轰粨璋冩櫤浠�
-                        if (inboundOrder != null && inboundOrder.OrderStatus == InOrderStatusEnum.鍏ュ簱瀹屾垚.ObjToInt())
-                        {
-                            var allocate = _allocateService.Repository.QueryData(x => x.OrderNo == inboundOrder.InboundOrderNo).First();
-                            var allocatefeedmodel = new AllocateDto
-                            {
-                                ReqCode = Guid.NewGuid().ToString(),
-                                ReqTime = DateTime.Now.ToString(),
-                                BusinessType = BusinessTypeEnum.鏅轰粨璋冩櫤浠�.ObjToInt().ToString(),
-                                FactoryArea = inboundOrder.FactoryArea,
-                                OperationType = 1,
-                                Operator = inboundOrder.Operator,
-                                OrderNo = inboundOrder.UpperOrderNo,
-                                fromWarehouse = allocate?.FromWarehouse ?? "",
-                                toWarehouse = allocate?.ToWarehouse ?? "",
-                                Details = new List<AllocateDtoDetail>()
-
-                            };
-
-                            var groupedData = inboundOrder.Details.GroupBy(item => new { item.MaterielCode, item.lineNo, item.BarcodeUnit, item.WarehouseCode })
-                               .Select(group => new AllocateDtoDetail
-                               {
-                                   MaterialCode = group.Key.MaterielCode,
-                                   LineNo = group.Key.lineNo,
-                                   WarehouseCode = group.Key.WarehouseCode,
-                                   Qty = group.Sum(x => x.BarcodeQty),
-                                   // warehouseCode= "1072",
-                                   Unit = group.Key.BarcodeUnit,
-                                   Barcodes = group.Select(row => new BarcodeInfo
-                                   {
-                                       Barcode = row.Barcode,
-                                       Qty = row.BarcodeQty,
-                                       BatchNo = row.BatchNo,
-                                       SupplyCode = row.SupplyCode,
-                                       Unit = row.BarcodeUnit
-                                   }).ToList()
-                               }).ToList();
-                            allocatefeedmodel.Details = groupedData;
-
-                            var feedbackresult = await _invokeMESService.FeedbackAllocate(allocatefeedmodel);
-                            if (feedbackresult != null && feedbackresult.code == 200)
-                            {
-                                _inboundOrderService.Db.Updateable<Dt_InboundOrder>().SetColumns(it => new Dt_InboundOrder { ReturnToMESStatus = 1 })
-                                .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
                     {
@@ -452,8 +425,9 @@
                                 details = new List<FeedbackInboundDetailsModel>()
 
                             };
-
-                            var groupedData = inboundOrder.Details.GroupBy(item => new { item.MaterielCode, item.SupplyCode, item.BatchNo, item.lineNo, item.BarcodeUnit, item.WarehouseCode })
+                            var query = inboundOrder.Details.AsQueryable();
+                            query = query.Where(item => item.ReturnToMESStatus == 0);
+                            var groupedData = query.GroupBy(item => new { item.MaterielCode, item.SupplyCode, item.BatchNo, item.lineNo, item.BarcodeUnit, item.WarehouseCode })
                                .Select(group => new FeedbackInboundDetailsModel
                                {
                                    materialCode = group.Key.MaterielCode,
@@ -482,6 +456,11 @@
                                 .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();
+                                //鍥炰紶鎴愬姛搴撳瓨鎵嶅彲鐢�
+                                _stockRepository.Db.Updateable<Dt_StockInfoDetail>().SetColumns(it => new Dt_StockInfoDetail
+                                {
+                                    Status = StockStatusEmun.鍏ュ簱瀹屾垚.ObjToInt()
+                                }).Where(it => it.OrderNo == inboundOrder.InboundOrderNo).ExecuteCommand();
                             }
                             else
                             {
@@ -588,7 +567,11 @@
 
             stock.Details.ForEach(x =>
             {
-                x.Status = StockStatusEmun.鍑哄簱瀹屾垚.ObjToInt();
+                if (x.Status != StockStatusEmun.鎵嬪姩鍐荤粨.ObjToInt()) 
+                {
+                    x.Status = StockStatusEmun.鍑哄簱瀹屾垚.ObjToInt();
+                }
+                
             });
 
             _stockService.StockInfoService.Db.UpdateNav(stock).IncludesAllFirstLayer().ExecuteCommand();
@@ -722,7 +705,11 @@
                 var beforelocationStatus = locationInfo.LocationStatus;
                 locationInfo.LocationStatus = LocationStatusEnum.InStock.ObjToInt();
                 _locationInfoService.Repository.UpdateData(locationInfo);
-
+                stockInfo.Details.ForEach(x =>
+                {
+                    x.Status = StockStatusEmun.鍏ュ簱瀹屾垚.ObjToInt();
+                });
+                _stockService.StockInfoDetailService.Repository.UpdateData(stockInfo.Details);
                 stockInfo.LocationCode = locationInfo.LocationCode;
                 stockInfo.PalletCode = task.PalletCode;
                 stockInfo.LocationCode = task.TargetAddress;
@@ -737,15 +724,19 @@
                     await Db.Deleteable(task).ExecuteCommandAsync();
                 }
                 Dt_OutboundOrder outboundOrder = _outboundOrderService.Db.Queryable<Dt_OutboundOrder>().Where(x => x.OrderNo == stockInfo.Details.FirstOrDefault().OrderNo).Includes(x=>x.Details).First();
-                foreach (var item in stockInfo.Details.Where(x => x.OrderNo == outboundOrder.OrderNo).ToList())
+
+                if(outboundOrder != null)
                 {
-                    var inbounddetail = _allocateMaterialInfo.QueryFirst(x => x.OrderNo == item.OrderNo && x.Barcode == item.Barcode);
-                    if (inbounddetail != null)
+                    foreach (var item in stockInfo.Details.Where(x => x.OrderNo == outboundOrder.OrderNo).ToList())
                     {
-                        var alldelete = _allocateMaterialInfo.DeleteAndMoveIntoHty(inbounddetail, OperateTypeEnum.鑷姩鍒犻櫎);
-                        if (!alldelete)
+                        var inbounddetail = _allocateMaterialInfo.QueryFirst(x => x.OrderNo == item.OrderNo && x.Barcode == item.Barcode);
+                        if (inbounddetail != null)
                         {
-                            await Db.Deleteable(task).ExecuteCommandAsync();
+                            var alldelete = _allocateMaterialInfo.DeleteAndMoveIntoHty(inbounddetail, OperateTypeEnum.鑷姩鍒犻櫎);
+                            if (!alldelete)
+                            {
+                                await Db.Deleteable(task).ExecuteCommandAsync();
+                            }
                         }
                     }
                 }
@@ -756,9 +747,9 @@
                 string reqTime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
                 string requestData = string.Empty;
                 List<string> lineNos = new List<string>();
-                if (outboundOrder.OrderStatus == OutOrderStatusEnum.鍑哄簱瀹屾垚.ObjToInt())
+                Dt_AllocateMaterialInfo allocateMaterialInfo = _allocateMaterialInfo.QueryFirst(x => x.OrderNo == outboundOrder.OrderNo);
+                if (outboundOrder.OrderStatus == OutOrderStatusEnum.鍑哄簱瀹屾垚.ObjToInt() && outboundOrder.OrderStatus == 0 && allocateMaterialInfo == null)
                 {
-                    
                     Dt_AllocateOrder allocateOrder = _allocateOrderRepository.QueryFirst(x => x.OrderNo == outboundOrder.OrderNo);
                     if (allocateOrder == null)
                     {
@@ -976,7 +967,10 @@
                 {
                     foreach (var detail in stockInfo.Details)
                     {
-                        detail.Status = StockStatusEmun.鍏ュ簱瀹屾垚.ObjToInt();
+                        if(detail.Status != StockStatusEmun.鎵嬪姩鍐荤粨.ObjToInt()&& detail.Status != StockStatusEmun.閲嶆涓�.ObjToInt())
+                        {
+                            detail.Status = StockStatusEmun.鍏ュ簱瀹屾垚.ObjToInt();
+                        }
                         detail.OutboundQuantity = 0;
                     }
                     _stockService.StockInfoDetailService.Repository.UpdateData(stockInfo.Details);
@@ -1980,6 +1974,101 @@
                 return await Task.FromResult(WebResponseContent.Instance.Error(ex.Message));
             }
         }
+
+        /// <summary>
+        /// 閲嶆鍏ュ簱瀹屾垚
+        /// </summary>
+        /// <param name="task"></param>
+        /// <returns></returns>
+        public async Task<WebResponseContent> InQualityTaskCompleted(Dt_Task task)
+        {
+
+            WebResponseContent content = new WebResponseContent();
+            try
+            {
+
+                Dt_StockInfo stockInfo = await _stockRepository.Db.Queryable<Dt_StockInfo>()
+                    .Includes(x => x.Details)
+                    .Where(x => x.PalletCode == task.PalletCode)
+                    .FirstAsync();
+
+                if (stockInfo == null)
+                {
+                    return WebResponseContent.Instance.Error($"鏈壘鍒版墭鐩樺搴旂殑缁勭洏淇℃伅");
+                }
+
+                if (stockInfo.Details.Count == 0 && stockInfo.PalletType != PalletTypeEnum.Empty.ObjToInt())
+                {
+                    _logger.LogInformation($"TaskService InPickTaskCompleted: 鏈壘鍒拌鎵樼洏搴撳瓨鏄庣粏淇℃伅.{task.TaskNum}");
+                    return WebResponseContent.Instance.Error($"鏈壘鍒拌鎵樼洏搴撳瓨鏄庣粏淇℃伅");
+                }
+                Dt_LocationInfo locationInfo = _locationInfoService.Repository.QueryFirst(x => x.LocationCode == task.TargetAddress);
+                if (locationInfo == null)
+                {
+                    return content.Error($"鏈壘鍒板搴旂殑缁堢偣璐т綅淇℃伅");
+                }
+
+                if (!string.IsNullOrEmpty(stockInfo.LocationCode))
+                {
+                    return WebResponseContent.Instance.Error($"璇ユ墭鐩樺凡缁戝畾璐т綅");
+                }
+                if (locationInfo.LocationStatus == LocationStatusEnum.InStock.ObjToInt())
+                {
+                    return WebResponseContent.Instance.Error($"璐т綅鐘舵�佷笉姝g‘");
+                }
+
+                _unitOfWorkManage.BeginTran();
+
+                var beforelocationStatus = locationInfo.LocationStatus;
+                locationInfo.LocationStatus = LocationStatusEnum.InStock.ObjToInt();
+                _locationInfoService.Repository.UpdateData(locationInfo);
+
+                stockInfo.LocationCode = locationInfo.LocationCode;
+                stockInfo.PalletCode = task.PalletCode;
+                stockInfo.LocationCode = task.TargetAddress;
+                stockInfo.StockStatus = StockStatusEmun.鍏ュ簱瀹屾垚.ObjToInt();
+                _stockRepository.UpdateData(stockInfo);
+
+                task.TaskStatus = TaskStatusEnum.Finish.ObjToInt();
+                var result = _task_HtyService.DeleteAndMoveIntoHty(task, OperateTypeEnum.鑷姩瀹屾垚);
+                _unitOfWorkManage.CommitTran();
+                if (!result)
+                {
+                    await Db.Deleteable(task).ExecuteCommandAsync();
+                }
+                Dt_OutboundOrder outboundOrder = _outboundOrderService.Db.Queryable<Dt_OutboundOrder>().Where(x => x.OrderNo == stockInfo.Details.FirstOrDefault().OrderNo).Includes(x => x.Details).First();
+
+                if (outboundOrder != null)
+                {
+                    foreach (var item in stockInfo.Details.Where(x => x.OrderNo == outboundOrder.OrderNo).ToList())
+                    {
+                        var inbounddetail = _allocateMaterialInfo.QueryFirst(x => x.OrderNo == item.OrderNo && x.Barcode == item.Barcode);
+                        if (inbounddetail != null)
+                        {
+                            var alldelete = _allocateMaterialInfo.DeleteAndMoveIntoHty(inbounddetail, OperateTypeEnum.鑷姩鍒犻櫎);
+                            if (!alldelete)
+                            {
+                                await Db.Deleteable(task).ExecuteCommandAsync();
+                            }
+                        }
+                    }
+                }
+                try
+                {
+                    _locationStatusChangeRecordService.AddLocationStatusChangeRecord(locationInfo, beforelocationStatus, StockChangeType.Inbound.ObjToInt(), "", task.TaskNum);
+                }
+                catch (Exception ex)
+                {
+                    _logger.LogInformation($"InEmptyTaskCompleted AddLocationStatusChangeRecord : {ex.Message} ");
+                }
+                return content;
+            }
+            catch (Exception ex)
+            {
+                _unitOfWorkManage.RollbackTran();
+                return await Task.FromResult(WebResponseContent.Instance.Error(ex.Message));
+            }
+        }
     }
 }
 

--
Gitblit v1.9.3