From f990f95a0b5aa099212116fa7d57b7ee2abcf863 Mon Sep 17 00:00:00 2001
From: Administrator <Administrator@DESKTOP-JIE70N9>
Date: 星期五, 23 五月 2025 14:22:46 +0800
Subject: [PATCH] 拣货拼托问题修复

---
 Wms/WMS.BLL/BllPdaServer/PdaSoServer.cs |   85 ++++++++++++++++++++++++++++++------------
 1 files changed, 60 insertions(+), 25 deletions(-)

diff --git a/Wms/WMS.BLL/BllPdaServer/PdaSoServer.cs b/Wms/WMS.BLL/BllPdaServer/PdaSoServer.cs
index 3b9a7d0..93bbf2b 100644
--- a/Wms/WMS.BLL/BllPdaServer/PdaSoServer.cs
+++ b/Wms/WMS.BLL/BllPdaServer/PdaSoServer.cs
@@ -22,6 +22,7 @@
 using WMS.Entity.BllAsnEntity;
 using System.Threading.Tasks;
 using Utility;
+using WMS.BLL.Logic;
 
 namespace WMS.BLL.BllPdaServer
 {
@@ -118,12 +119,12 @@
                 #region 鎷兼墭淇℃伅
                 var sdId = 0;
                 bool isNew = false;
-                
+
                 var pinStockDetail = Db.Queryable<DataStockDetail>().First(m => m.IsDel == "0" && m.PalletNo == palletNoNew && m.SkuNo == stockDetail.SkuNo && m.LotNo == stockDetail.LotNo);
                  
-                if (pinStockDetail != null)
+                if (pinStockDetail != null) 
                 {
-                    if (palletNo != palletNoNew)//闈炴暣鎵樻嫞璐�
+                    if (palletNo != palletNoNew)//闈炴暣鎵樻嫞璐�                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          
                     {
                         var pinStockDetails = Db.Queryable<DataStockDetail>().Where(m => m.IsDel == "0" && m.PalletNo == palletNoNew && m.Id!= pinStockDetail.Id).ToList();
                         if (pinStockDetails.Count(m=>m.SONo != notice.SONo) > 0)
@@ -141,7 +142,11 @@
                     var newPalletInfo = await Db.Queryable<SysPallets>().FirstAsync(m => m.IsDel == "0" && m.PalletNo == palletNoNew && m.Status == "0");
                     if (newPalletInfo == null)
                     {
-                        throw Oops.Bah("鏂版墭鐩樹俊鎭笉瀛樺湪鎴栧凡琚娇鐢紒");
+                        var pinStockDetails = Db.Queryable<DataStockDetail>().Where(m => m.IsDel == "0" && m.PalletNo == palletNoNew && m.Id != pinStockDetail.Id).ToList();
+                        if (pinStockDetails.Count(m => m.SONo != notice.SONo) > 0)
+                        {
+                            throw Oops.Bah("鏂版墭鐩樹俊鎭笉瀛樺湪鎴栧凡琚娇鐢紒");
+                        } 
                     }
                     //淇敼鏂版墭鐩樼姸鎬�
                     newPalletInfo.Status = "1";
@@ -583,7 +588,11 @@
                     var newPalletInfo = await Db.Queryable<SysPallets>().FirstAsync(m => m.IsDel == "0" && m.PalletNo == palletNoNew && m.Status == "0");
                     if (newPalletInfo == null)
                     {
-                        throw Oops.Bah("鏂版墭鐩樹俊鎭笉瀛樺湪鎴栧凡琚娇鐢紒");
+                        var pinStockDetails = Db.Queryable<DataStockDetail>().Where(m => m.IsDel == "0" && m.PalletNo == palletNoNew && m.Id != pinStockDetail.Id).ToList();
+                        if (pinStockDetails.Count(m => m.SONo != notice.SONo) > 0)
+                        {
+                            throw Oops.Bah("鏂版墭鐩樹俊鎭笉瀛樺湪鎴栧凡琚娇鐢紒");
+                        }
                     }
                     //淇敼鏂版墭鐩樼姸鎬�
                     newPalletInfo.Status = "1";
@@ -871,6 +880,25 @@
             return allotList2;
         }
 
+
+        public async Task<List<DetailIdSkuLotNo>> GetSoSkuLotNoListBySo(string soNo)
+        {
+            if (string.IsNullOrWhiteSpace(soNo))//鍒ゆ柇鎵樼洏鏄惁涓虹┖
+            {
+                throw Oops.Bah("鍗曟嵁涓虹┖锛岃閫夋嫨鍗曟嵁");
+            }
+            //鑾峰彇鐘舵�佷负寰呮嫞璐ф垨鑰呴儴鍒嗘嫞璐х殑鍑哄簱鍗�
+            var allotList = Db.Queryable<BllExportAllot>().Where(m => m.IsDel == "0" && m.SONo == soNo && (m.Status == "0" || m.Status == "1"));
+             
+            var list = await allotList.GroupBy(m => new { m.SODetailNo, m.SkuNo, m.SkuName, m.LotNo }).Select(m => new DetailIdSkuLotNo()
+            {
+                SoDetailId = m.SODetailNo,
+                SkuName = m.SkuName,
+                LotNo = m.LotNo,
+            }).ToListAsync();
+
+            return list;
+        }
         //鑾峰彇鍑哄簱鎵樼洏涓婄殑鐗╂枡鎵规(鏍规嵁鎵樼洏鐮�)
         public async Task<List<DetailIdSkuLotNo>> GetSoSkuLotNoListByPallet(string palletNo, string soNo)
         {
@@ -1770,9 +1798,8 @@
                 //鑾峰彇褰撳墠鏃堕棿
                 DateTime serverTime = Db.GetDate();
                 //鑾峰彇搴撳瓨鏄庣粏鏄惁灏忎簬绛変簬璇ュ灈鏁�
-                //string str = "select * from DataStockDetail where IsDel = '0' and SkuNo = '100099' and Status = '0' ";
-                //var stockDetail = Db.Ado.SqlQuery<DataStockDetail>(str);
-                var stockDetail = await Db.Queryable<DataStockDetail>().Where(s => s.IsDel == "0" && s.SkuNo == "100099" && s.Status == "0").ToListAsync();
+                 
+                var stockDetail = await Db.Queryable<DataStockDetail>().Where(s => s.IsDel == "0" && s.SkuNo == "100099" && s.Status == "0" && !string.IsNullOrWhiteSpace(s.WareHouseNo)).ToListAsync();
                 if (stockDetail.Count > 0)
                 {
                     //鍒ゆ柇鏄惁澶т簬闇�瑕佸灈鏁�
@@ -1797,7 +1824,7 @@
                 foreach (var s in stockDetail)
                 {
                     //鑾峰彇鍌ㄤ綅淇℃伅
-                    var locat = await Db.Queryable<SysStorageLocat>().FirstAsync(l => l.LocatNo == s.LocatNo && l.IsDel == "0" && l.WareHouseNo == "W02");
+                    var locat = await Db.Queryable<SysStorageLocat>().FirstAsync(l => l.LocatNo == s.LocatNo && l.IsDel == "0" && (l.WareHouseNo == "W01"||l.WareHouseNo == "W02"));
 
                     if (locat == null)
                     {
@@ -1872,10 +1899,10 @@
                     {
                         TaskNo = taskNo,
                         Sender = "WMS",
-                        Receiver = "PDA",
+                        Receiver = "WCS",
                         IsSuccess = 1, //鏄惁涓嬪彂鎴愬姛 0澶辫触 1鎴愬姛
 
-                        StartLocat = locat == null ? "闆剁搴�" : s.LocatNo,//璧峰浣嶇疆
+                        StartLocat = s.LocatNo,//璧峰浣嶇疆
                         EndLocat = model.OutMode,//鐩爣浣嶇疆
                         PalletNo = s.PalletNo,//鎵樼洏鐮�
                         IsSend = 1,//鏄惁鍙啀娆′笅鍙�
@@ -1886,20 +1913,28 @@
                         OrderType = "1",//0 鍏ュ簱鍗� 1 鍑哄簱鍗�  2 鐩樼偣鍗�  3 绉诲簱鍗�
                         CreateTime = serverTime, //鍒涘缓鏃堕棿
                         CreateUser = userId, //鍒涘缓浜�
-                        Msg = "Pda绌烘墭浠�" + locat == null ? "闆剁搴�" : s.LocatNo + "鍒�" + model.OutMode + "鐨勫嚭搴撲换鍔�", //鍏抽敭淇℃伅
+                        Msg = "Pda绌烘墭浠�" + s.LocatNo + "鍒�" + model.OutMode + "鐨勫嚭搴撲换鍔�", //鍏抽敭淇℃伅
                         //FinishDate = serverTime, //瀹屾垚鏃堕棿
                     };
+                    var endroad = "";
+                    if (locat.WareHouseNo == "W01")
+                    {
+                        endroad = new AllotLocation().RoadwayToStationNum(locat.RoadwayNo, model.OutMode);
+                    }
+                    
                     outDtoList.Add(new OutCommandDto()
                     {
-                        PalletNo = exTask.PalletNo,//鎵樼洏鍙�
-                        StartLocate = exTask.StartLocat, // 璧峰浣嶇疆
-                        StartRoadway = locat.RoadwayNo, //鎵�灞炲贩閬�
-                        EndLocate = "", // 鐩爣浣嶇疆 
                         TaskNo = exTask.TaskNo, // 浠诲姟鍙�
                         TaskType = "1",// 浠诲姟绫诲瀷 (鍑哄簱)
-                        OutMode = model.OutMode,  //鐩爣鍦板潃
-                        Order = 1,
-                        Type = PLCTypeEnum.AGV
+                        PalletNo = exTask.PalletNo,//鎵樼洏鍙�
+
+                        StartLocate = exTask.StartLocat, // 璧峰浣嶇疆
+                        StartRoadway = locat.RoadwayNo, //鎵�灞炲贩閬�
+                        EndLocate = model.OutMode, // 鐩爣浣嶇疆 
+                        EndRoadway = endroad,
+
+                        Order = 999,
+                        Type = locat.WareHouseNo == "W01"?PLCTypeEnum.ShuttleCar : PLCTypeEnum.AGV
                     });
                     await Db.Insertable(exTask).ExecuteCommandAsync();
 
@@ -1926,17 +1961,17 @@
                         var time2 = DateTime.Now;//杩斿洖鏃堕棿 .ToString("yyyy-MM-dd HH:mm:ss")
 
                         ////瑙f瀽杩斿洖鏁版嵁 
-                        var wcsModel = JsonConvert.DeserializeObject<WcsModel>(response);
-                        if (wcsModel.StatusCode == 0)
+                        var wcsModel = JsonConvert.DeserializeObject<WcsModel2>(response);
+                        if (wcsModel.code == 200)
                         {
                             //鏇存敼浠诲姟鐨勫彂閫佽繑鍥炴椂闂�//
                             new TaskServer().EditTaskIssueOk(list2, time1, time2);
                             //str += "涓嬪彂鎴愬姛";
                         }
-                        if (wcsModel.StatusCode == -1)
+                        else
                         {
-                            new TaskServer().EditTaskIssueNo(list2, time1, time2, wcsModel.Msg);
-                            throw Oops.Bah(wcsModel.Msg);
+                            new TaskServer().EditTaskIssueNo(list2, time1, time2, wcsModel.message);
+                            throw Oops.Bah(wcsModel.message);
                         }
                     }
                     catch (AppFriendlyException e)
@@ -1960,7 +1995,7 @@
             catch (Exception e)
             {
                 Db.RollbackTran();
-                return e.Message;
+                throw new Exception(e.Message);
             }
 
         }

--
Gitblit v1.8.0