From e53663247b2d2395a6bbaa485e3b4e5c85f0fb92 Mon Sep 17 00:00:00 2001
From: 647556386 <647556386@qq.com>
Date: 星期三, 04 二月 2026 19:18:47 +0800
Subject: [PATCH] 1

---
 项目代码/WMS无仓储版/WIDESEA_WMSServer/WIDESEA_OutboundService/OutboundOrderService.cs |   66 +++++++++++++++++++++------------
 项目代码/WMS无仓储版/WIDESEA_WMSServer/WIDESEA_InboundService/InboundService.cs        |    5 ++
 项目代码/WMS无仓储版/WIDESEA_WMSServer/WIDESEA_TaskInfoService/TaskService.cs          |    2 
 3 files changed, 47 insertions(+), 26 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_InboundService/InboundService.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_InboundService/InboundService.cs"
index 7609081..ec2c977 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_InboundService/InboundService.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_InboundService/InboundService.cs"
@@ -318,7 +318,10 @@
                 {
                     return content.Error($"鏈壘鍒拌鏉$爜{palletDto.Barcode}闇�璋冨叆鏅轰粨鐨勪俊鎭�");
                 }
-
+                if(allocateMaterialInfo.WarehouseCode != palletDto.WarehouseType)
+                {
+                    return content.Error($"璇ユ潯鐮佽皟鍏ヤ粨搴撲负{allocateMaterialInfo.WarehouseCode},涓庨�夋嫨鐨剓palletDto.WarehouseType}浠撳簱涓嶄竴鑷�");
+                }
                 stockInfo.Details.Add(new Dt_StockInfoDetail
                 {
                     StockId = stockInfo == null ? 0 : stockInfo.Id,
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_OutboundService/OutboundOrderService.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_OutboundService/OutboundOrderService.cs"
index f2260cb..965212f 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_OutboundService/OutboundOrderService.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_OutboundService/OutboundOrderService.cs"
@@ -103,8 +103,10 @@
         {
             try
             {
-
-                var outboundOrder = Db.Queryable<Dt_OutboundOrder>().Where(x => x.UpperOrderNo == model.UpperOrderNo).Includes(x => x.Details).First();
+                var outboundOrder = Db.Queryable<Dt_OutboundOrder>()
+                    .Where(x => x.UpperOrderNo == model.UpperOrderNo)
+                    .Includes(x => x.Details)
+                    .First();
                 if (outboundOrder == null)
                 {
                     return WebResponseContent.Instance.Error($"鏈壘鍒板嚭搴撳崟淇℃伅");
@@ -118,12 +120,12 @@
                 List<int> detailIds = new List<int>();
 
                 var materielCodes = model.Details.Select(x => x.MaterielCode).Distinct().ToList();
-                var materielInfos = _materielInfoService.Db.Queryable<Dt_MaterielInfo>().Where(x => materielCodes.Contains(x.MaterielCode)).ToList();
-
+                var materielInfos = _materielInfoService.Db.Queryable<Dt_MaterielInfo>()
+                    .Where(x => materielCodes.Contains(x.MaterielCode))
+                    .ToList();
 
                 foreach (var item in model.Details)
                 {
-
                     var outboundOrderDetail = outboundOrder.Details.FirstOrDefault(x => x.lineNo == item.lineNo);
                     if (outboundOrderDetail == null)
                     {
@@ -143,25 +145,43 @@
                             BarcodeUnit = item.Unit,
                         };
                         var issueoStockResult = await _materialUnitService.ConvertFromToStockAsync(item.MaterielCode, item.BarcodeUnit, item.BarcodeQty);
-                        item.Unit = issueoStockResult.Unit;
-                        item.OrderQuantity = issueoStockResult.Quantity;
+                        outboundOrderDetail.Unit = issueoStockResult.Unit;
+                        outboundOrderDetail.OrderQuantity = issueoStockResult.Quantity;
                         var moveissueoStockResult = await _materialUnitService.ConvertFromToStockAsync(item.MaterielCode, item.BarcodeUnit, item.BarcodeMoveQty);
-                        item.MoveQty = moveissueoStockResult.Quantity;
+                        outboundOrderDetail.MoveQty = moveissueoStockResult.Quantity;
 
-                        if (materielInfos.Any())
-                        {
-                            outboundOrderDetail.MaterielName = materielInfos.FirstOrDefault(x => x.MaterielCode == item.MaterielCode)?.MaterielName ?? "";
-                        }
-
+                        outboundOrderDetail.MaterielName = materielInfos.FirstOrDefault(x => x.MaterielCode == item.MaterielCode)?.MaterielName ?? "";
                         outboundOrderDetails.Add(outboundOrderDetail);
                     }
                     else
                     {
-                        if(item.OrderQuantity < outboundOrderDetail.LockQuantity + outboundOrderDetail.MoveQty)
+                        #region 閿佸畾鐘舵�佷笅闈炴暟閲忓瓧娈典竴鑷存�ф牎楠�
+                        if (outboundOrderDetail.LockQuantity != 0)
+                        {
+                            var isFieldChanged = !string.Equals(outboundOrderDetail.MaterielCode, item.MaterielCode)
+                                || !string.Equals(outboundOrderDetail.SupplyCode, item.SupplyCode)
+                                || !string.Equals(outboundOrderDetail.BatchNo, item.BatchNo)
+                                || !string.Equals(outboundOrderDetail.Unit, item.Unit)
+                                || !string.Equals(outboundOrderDetail.WarehouseCode, item.WarehouseCode)
+                                || !string.Equals(outboundOrderDetail.lineNo, item.lineNo)
+                                || outboundOrderDetail.MoveQty != item.MoveQty;
+
+                            if (isFieldChanged)
+                            {
+                                return WebResponseContent.Instance.Error($"琛屽彿{item.lineNo}宸查攣瀹氬嚭搴擄紙閿佸畾鏁伴噺锛歿outboundOrderDetail.LockQuantity}锛夛紝浠呭厑璁镐慨鏀硅鍗曟暟閲忥紝绂佹淇敼鐗╂枡/鎵规/浠撳簱绛夊叾浠栦俊鎭�");
+                            }
+                        }
+                        #endregion
+
+                        #region 鍘熸湁鏁伴噺鏍¢獙閫昏緫淇濈暀
+                        if (item.OrderQuantity < outboundOrderDetail.LockQuantity + outboundOrderDetail.MoveQty)
                         {
                             return WebResponseContent.Instance.Error($"淇敼鐨勮鍙穥item.lineNo}鏁伴噺瓒呰繃浜嗘櫤浠撳嚭搴撻攣瀹氭暟閲忓姞涓婃尓鏂欐暟閲忥紝涓嶅厑璁镐慨鏀�");
                         }
-                        if(outboundOrderDetail.LockQuantity == 0)
+                        #endregion
+
+                        #region 瀛楁璧嬪�奸�昏緫锛氶攣瀹氱姸鎬佷粎鏀规暟閲忥紝鏈攣瀹氬垯鍏ㄩ噺鏇存柊
+                        if (outboundOrderDetail.LockQuantity == 0)
                         {
                             outboundOrderDetail.lineNo = item.lineNo;
                             outboundOrderDetail.MaterielCode = item.MaterielCode;
@@ -170,10 +190,10 @@
                             outboundOrderDetail.Unit = item.Unit;
                             outboundOrderDetail.WarehouseCode = item.WarehouseCode;
                             outboundOrderDetail.MoveQty = item.MoveQty;
-                            outboundOrderDetail.OrderQuantity = item.OrderQuantity;
                             outboundOrderDetail.BarcodeMoveQty = item.MoveQty;
                             outboundOrderDetail.BarcodeQty = item.OrderQuantity;
                             outboundOrderDetail.BarcodeUnit = item.Unit;
+
                             var issueoStockResult = await _materialUnitService.ConvertFromToStockAsync(item.MaterielCode, item.BarcodeUnit, item.BarcodeQty);
                             outboundOrderDetail.Unit = issueoStockResult.Unit;
                             outboundOrderDetail.OrderQuantity = issueoStockResult.Quantity;
@@ -184,16 +204,14 @@
                         {
                             outboundOrderDetail.OrderQuantity = item.OrderQuantity;
                         }
-                        if (materielInfos.Any())
-                        {
-                            outboundOrderDetail.MaterielName = materielInfos.FirstOrDefault(x => x.MaterielCode == item.MaterielCode)?.MaterielName ?? "";
-                        }
+                        #endregion
+
+                        outboundOrderDetail.MaterielName = materielInfos.FirstOrDefault(x => x.MaterielCode == item.MaterielCode)?.MaterielName ?? "";
 
                         updateoutboundOrderDetails.Add(outboundOrderDetail);
                         detailIds.Add(outboundOrderDetail.Id);
                     }
                 }
-
 
                 outboundOrder.UpperOrderNo = model.UpperOrderNo;
                 outboundOrder.BusinessType = model.BusinessType;
@@ -205,22 +223,22 @@
                 _unitOfWorkManage.BeginTran();
                 foreach (var item in deletePurchaseOrderDetails)
                 {
-                    if(item.LockQuantity > 0)
+                    if (item.LockQuantity > 0)
                     {
                         return WebResponseContent.Instance.Error($"鍘熷崟鎹鍙穥item.lineNo}宸茬粡閿佸畾鍑哄簱锛屼笉鍏佽鍒犻櫎锛岃閲嶆柊鏇存敼鏁版嵁鎺ㄩ��");
                     }
-                    // _outboundOrderDetailRepository.DeleteAndMoveIntoHty(item, OperateTypeEnum.鑷姩鍒犻櫎);
                     _outboundOrderDetailRepository.DeleteData(item);
                 }
 
                 _outboundOrderDetailRepository.UpdateData(updateoutboundOrderDetails);
                 _outboundOrderDetailRepository.AddData(outboundOrderDetails);
 
-                if(outboundOrder.Details.All(x => x.OverOutQuantity >= x.OrderQuantity - x.MoveQty))
+                if (outboundOrder.Details.All(x => x.OverOutQuantity >= x.OrderQuantity - x.MoveQty))
                 {
                     outboundOrder.OrderStatus = (int)OutOrderStatusEnum.鍑哄簱瀹屾垚;
                 }
                 BaseDal.UpdateData(outboundOrder);
+
                 _unitOfWorkManage.CommitTran();
 
                 return WebResponseContent.Instance.OK();
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 2816365..99cb413 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"
@@ -748,7 +748,7 @@
                 string requestData = string.Empty;
                 List<string> lineNos = new List<string>();
                 Dt_AllocateMaterialInfo allocateMaterialInfo = _allocateMaterialInfo.QueryFirst(x => x.OrderNo == outboundOrder.OrderNo);
-                if (outboundOrder.OrderStatus == OutOrderStatusEnum.鍑哄簱瀹屾垚.ObjToInt() && outboundOrder.OrderStatus == 0 && allocateMaterialInfo == null)
+                if (outboundOrder.OrderStatus == OutOrderStatusEnum.鍑哄簱瀹屾垚.ObjToInt() && outboundOrder.ReturnToMESStatus == 0 && allocateMaterialInfo == null)
                 {
                     Dt_AllocateOrder allocateOrder = _allocateOrderRepository.QueryFirst(x => x.OrderNo == outboundOrder.OrderNo);
                     if (allocateOrder == null)

--
Gitblit v1.9.3