From 157abc191c34e57c1b958ae74fc3de6518ca8a30 Mon Sep 17 00:00:00 2001
From: zhaowc <526854230@qq.com>
Date: 星期五, 28 二月 2025 11:06:36 +0800
Subject: [PATCH] 修改客户需求

---
 Wms/WMS.BLL/BllPdaServer/PdaCrServer.cs |  353 ++++++++++++++++++++++++++++++++++++++++++++++++----------
 1 files changed, 288 insertions(+), 65 deletions(-)

diff --git a/Wms/WMS.BLL/BllPdaServer/PdaCrServer.cs b/Wms/WMS.BLL/BllPdaServer/PdaCrServer.cs
index 59aeddc..73bf387 100644
--- a/Wms/WMS.BLL/BllPdaServer/PdaCrServer.cs
+++ b/Wms/WMS.BLL/BllPdaServer/PdaCrServer.cs
@@ -799,10 +799,10 @@
                     {
                         throw new Exception("鎵樼洏鍌ㄤ綅淇℃伅涓嶅瓨鍦�,璇锋鏌�!");
                     }
-                    if (models.WareHouseNo != "W02")
-                    {
-                        throw new Exception("璇ユ墭鐩樻湭鍦ㄥ钩搴撳唴,璇锋鏌�!");
-                    }
+                    //if (models.WareHouseNo != "W02")
+                    //{
+                    //    throw new Exception("璇ユ墭鐩樻湭鍦ㄥ钩搴撳唴,璇锋鏌�!");
+                    //}
                     var storageLocat = Db.Queryable<SysStorageLocat>().First(w => w.IsDel == "0" && w.LocatNo == models.LocatNo);
                     if (storageLocat == null)
                     {
@@ -890,7 +890,7 @@
         /// <param name="palletNo"></param>
         /// <param name="areaNo"></param>
         /// <param name="ruku"></param>
-        public void AgvTransport(string palletNo, string areaNo, string ruku, int userId, string url)
+        public void AgvTransport(string palletNo, string areaNo, string ruku, int userId, string url, string wcsurl)
         {
             if (string.IsNullOrEmpty(palletNo))
             {
@@ -907,7 +907,7 @@
             try
             {
                 string EndLocat = string.Empty,OrderTy = "";//鐩爣浣嶇疆
-                                               
+                var tasktype = "D00";  //灏忚溅浠诲姟绫诲瀷锛岄粯璁や负鐐瑰埌鐐逛换鍔�                              
 
                 var log = Db.Queryable<LogTask>().First(w => w.IsDel == "0" && w.PalletNo == palletNo && (w.Status == "0" || w.Status == "1"));
                 if (log != null)
@@ -969,6 +969,33 @@
                 //寮�鍚簨鍔�
                 Db.BeginTran();
 
+                //璇锋眰WCS鍏ュ簱鍙f斁璐х‘璁�
+                if (!string.IsNullOrEmpty(ruku))
+                {
+                    try
+                    {
+                        var port = new
+                        {
+                            Port = EndLocat
+                        };
+                        var json = JsonConvert.SerializeObject(port);
+                        var res = HttpHelper.DoPost(wcsurl, json, "璇锋眰WCS鍏ュ簱鍙f槸鍚﹀彲鏀捐揣", "WCS");
+
+                        //////瑙f瀽杩斿洖鏁版嵁 
+                        var ret = JsonConvert.DeserializeObject<WcsModel>(res);
+                        if (ret.StatusCode == -1)
+                        {
+                            throw new Exception(EndLocat + "鍙峰叆搴撳彛宸叉湁鍏朵粬浠诲姟鍗犵敤,璇烽�夋嫨鍏朵粬鍏ュ簱鍙�");
+                        }
+                    }
+                    catch (Exception ex)
+                    {
+                        throw new Exception(ex.Message);
+                    }
+                }
+                
+                
+
                 //娣诲姞鍑哄簱浠诲姟
                 var taskNo = new Common().GetMaxNo("TK");
                 var exTask = new LogTask
@@ -985,7 +1012,7 @@
                     IsSend = 1,//鏄惁鍙啀娆′笅鍙�
                     IsCancel = 1,//鏄惁鍙彇娑�
                     IsFinish = 1,//鏄惁鍙畬鎴�
-                    Type = "2",//浠诲姟绫诲瀷 0 鍏ュ簱浠诲姟 1 鍑哄簱浠诲姟  2 绉诲簱浠诲姟
+                    Type = OrderTy,//浠诲姟绫诲瀷 0 鍏ュ簱浠诲姟 1 鍑哄簱浠诲姟  2 绉诲簱浠诲姟
                     Status = "0",//浠诲姟鐘舵��0锛氱瓑寰呮墽琛�1姝e湪鎵ц2鎵ц瀹屾垚
                     OrderType = OrderTy,//0 鍏ュ簱鍗� 1 鍑哄簱鍗�  2 鐩樼偣鍗�  3 绉诲簱鍗�
 
@@ -1012,39 +1039,24 @@
                     Db.Updateable(storageLocatEnd).ExecuteCommand();
                 }
                 //娣诲姞鎿嶄綔鏃ュ織璁板綍
-                var k = new OperationCrServer().AddLogOperationCr("PDA妯″潡", "AGV杞繍", palletNo, "绉诲簱", $"PDA鍛煎彨灏忚溅瀵规墭鐩樺彿锛歿palletNo}鍙戣捣杞繍", userId);
+                var k = new OperationCrServer().AddLogOperationCr("PDA妯″潡", "AGV杞繍", palletNo, OrderTy == "0" ?"鍏ュ簱":"绉诲簱", $"PDA鍛煎彨灏忚溅瀵规墭鐩樺彿锛歿palletNo}鍙戣捣杞繍", userId);
 
                 #region 鍛煎彨灏忚溅浠g爜
 
                 var endlono = EndLocat;
-                var tasktype = "D00";  //榛樿涓虹偣鍒扮偣浠诲姟
-                //鏍规嵁鐩殑鍦板潃搴撳尯鑾峰彇灏忚溅浠诲姟绫诲瀷
-                switch (storageLocatEnd.AreaNo)
+                if (OrderTy == "0")
                 {
-                    case "B13" :
-                        tasktype = "D02";  // 鍙犳墭浠诲姟锛堢洰鐨勫湴鍧�涓虹┖鎵樼洏鏀堕泦鍖猴級
-                        break;
-                    case "B15":
-                        tasktype = "D01";  // 鎷嗘墭浠诲姟锛堢洰鐨勫湴鍧�涓烘嫞璐у尯锛�
-                        break;
+                    tasktype = "RK0"; //鍏ュ簱浠诲姟
                 }
 
-                //缂撳瓨搴撲綅杞崲     3妤煎師杈呮枡Y003_001锛孻003_002锛孻003_003  1妤糦138_001鍒癥138_021澶栧寘缂撳瓨鍖�   1妤糦128_001鍒癥128_015鍐呭寘缂撳瓨鍖�
+                //缂撳瓨搴撲綅杞崲     3妤兼帴椹充綅Y003_001锛孻003_002锛孻003_003  
                 if (storageLocatEnd.AreaNo == "B12")
                 {
                     switch (EndLocat.ToString().Substring(4, 1))
                     {
                         case "1":
-                            endlono = "Y003_00" + EndLocat.ToString().Substring(6, 1);
+                            endlono = "Y003_0" + EndLocat.ToString().Substring(5, 2);
                             tasktype = "D00";     //鐐瑰埌鐐逛换鍔�
-                            break;
-                        case "2":
-                            endlono = "Y138_0" + EndLocat.ToString().Substring(5, 2);
-                            tasktype = "F20";    //鐢垫浠诲姟
-                            break;
-                        case "3":
-                            endlono = "Y128_0" + EndLocat.ToString().Substring(5, 2);
-                            tasktype = "F20";     //鐢垫浠诲姟
                             break;
                         default:
                             break;
@@ -1270,21 +1282,13 @@
                             break;
                     }
 
-                    //缂撳瓨搴撲綅杞崲     3妤煎師杈呮枡Y003_001鍒癥003_009  1妤糦138_001鍒癥138_021澶栧寘缂撳瓨鍖�   1妤糦128_001鍒癥128_015鍐呭寘缂撳瓨鍖�
+                    //缂撳瓨搴撲綅杞崲     3妤煎師杈呮枡Y003_001鍒癥003_011 
                     if (storageLocatEnd.AreaNo == "B12")
                     {
                         switch (EndLocat.ToString().Substring(4, 1))
                         {
                             case "1":
-                                endlono = "Y003_00" + EndLocat.ToString().Substring(6, 1);
-                                break;
-                            case "2":
-                                endlono = "Y138_0" + EndLocat.ToString().Substring(5, 2);
-                                tasktype = "F20";    //鐢垫浠诲姟
-                                break;
-                            case "3":
-                                endlono = "Y128_0" + EndLocat.ToString().Substring(5, 2);
-                                tasktype = "F20";     //鐢垫浠诲姟
+                                endlono = "Y003_0" + EndLocat.ToString().Substring(5, 2);
                                 break;
                             default:
                                 break;
@@ -1351,9 +1355,7 @@
 
                 
 
-                var IsTrue = false;
-                while (IsTrue == true)
-                {
+                
                     // 姝e紡杩愯绋嬪簭鏀惧紑
                     string str = "";
                     var list2 = agvTaskList.Select(m => m.TaskCode).ToList();
@@ -1375,7 +1377,7 @@
                             //鏇存敼浠诲姟鐨勫彂閫佽繑鍥炴椂闂�//
                             new TaskServer().EditTaskIssueOk(list2, time1, time2);
                             str += "涓嬪彂鎴愬姛";
-                            IsTrue = true;
+                            //IsTrue = true;
                         }
                         if (agvModel.Code == "1")
                         {
@@ -1387,7 +1389,7 @@
                     {
                         throw new Exception(ex.Message);
                     }
-                }
+                
 
                 #endregion
 
@@ -1402,8 +1404,203 @@
             }
         }
 
+        /// <summary>
+        /// 绌烘墭鐩樺叆搴撳懠鍙皬杞�
+        /// </summary>
+        /// <param name="palletNo"></param>
+        /// <param name="areaNo"></param>
+        /// <param name="ruku"></param>
+        public void AgvTransport3(string palletNo, string LocatNo, string ruku, int userId, string url, string wcsurl)
+        {
+            if (string.IsNullOrEmpty(palletNo))
+            {
+                throw new Exception("璇锋壂鎻忔墭鐩樻潯鐮侊紒");
+            }
+            if (string.IsNullOrEmpty(ruku))
+            {
+                throw new Exception("璇烽�夋嫨鍏ュ簱鍙o紒");
+            }
+            try
+            {
+                if (ruku == "001")
+                {
+                    var xlocate = Db.Queryable<SysStorageLocat>().First(w => w.Status == "0" && (w.LocatNo == "B13010101" || w.LocatNo == "B13020101" || w.LocatNo == "B13030101"));
+                    if (xlocate == null)
+                    {
+                        throw new Exception("绌烘墭鐩樻敹闆嗗櫒宸叉弧");
+                    }
+                    ruku = Db.Queryable<SysStorageLocat>().First(w => w.Status == "0" && (w.LocatNo == "B13010101" || w.LocatNo == "B13020101" || w.LocatNo == "B13030101")).LocatNo;
+                }
+                if (ruku == "002")
+                {
+                    var dlocate = Db.Queryable<SysStorageLocat>().First(w => w.Status == "0" && (w.LocatNo == "B13040101" || w.LocatNo == "B13050101" || w.LocatNo == "B13060101"));
+                    if (dlocate == null)
+                    {
+                        throw new Exception("绌烘墭鐩樻敹闆嗗櫒宸叉弧");
+                    }
+                    ruku = Db.Queryable<SysStorageLocat>().First(w => w.Status == "0" && (w.LocatNo == "B13040101" || w.LocatNo == "B13050101" || w.LocatNo == "B13060101")).LocatNo;
+                }
+                if (ruku == null)
+                {
+                    throw new Exception("褰撳墠鎵樼洏鏀堕泦鍣ㄥ伐浣嶆棤绌轰綑锛岃灏嗙┖鎵樼洏鍨涘叆绔嬩綋搴�");
+                }
+                string EndLocat = ruku;//鐩爣浣嶇疆
+                string OrderTy = ruku.Length ==3 ? "0":"2";
+                var tasktype = "RK0"; //鍏ュ簱浠诲姟
+                int palnoqty = 1;
+                var log = Db.Queryable<LogTask>().First(w => w.IsDel == "0" && w.PalletNo == palletNo && (w.Status == "0" || w.Status == "1"));
+                if (log != null)
+                {
+                    throw new Exception("璇ユ墭鐩樺凡鏈夊皬杞︾瓑寰呮墽琛屾垨姝e湪鎵ц鐨勪换鍔�!");
+                }
+                //璧峰鍌ㄤ綅淇℃伅
+                var storageLocat = Db.Queryable<SysStorageLocat>().First(w => w.IsDel == "0" && w.LocatNo == LocatNo);
+                if (storageLocat == null)
+                {
+                    throw new Exception("鍌ㄤ綅淇℃伅涓嶅瓨鍦�,璇锋鏌�!");
+                }
+
+                //寮�鍚簨鍔�
+                Db.BeginTran();
+                if (EndLocat.Length == 3)
+                {
+                    //璇锋眰WCS鍏ュ簱鍙f斁璐х‘璁�
+                    try
+                    {
+                        var port = new
+                        {
+                            Port = EndLocat
+                        };
+                        var json = JsonConvert.SerializeObject(port);
+                        var res = HttpHelper.DoPost(wcsurl, json, "璇锋眰WCS鍏ュ簱鍙f槸鍚﹀彲鏀捐揣", "WCS");
+
+                        //////瑙f瀽杩斿洖鏁版嵁 
+                        var ret = JsonConvert.DeserializeObject<WcsModel>(res);
+                        if (ret.StatusCode == -1)
+                        {
+                            throw new Exception(EndLocat + "鍙峰叆搴撳彛宸叉湁鍏朵粬浠诲姟鍗犵敤,璇烽�夋嫨鍏朵粬鍏ュ簱鍙�");
+                        }
+                    }
+                    catch (Exception ex)
+                    {
+                        throw new Exception(ex.Message);
+                    }
+                }
+                else
+                {
+                    tasktype = "D02";
+                    palnoqty = (int)Db.Queryable<BllPalletBind>().First(w => w.PalletNo == palletNo && w.Status == "1" && w.IsDel == "0").Qty;
+
+                }
+
+                //娣诲姞鍏ュ簱浠诲姟
+                var taskNo = new Common().GetMaxNo("TK");
+                var exTask = new LogTask
+                {
+                    TaskNo = taskNo,
+                    Sender = "WMS",
+                    Receiver = "AGV",
+                    IsSuccess = 0, //鏄惁涓嬪彂鎴愬姛 0澶辫触 1鎴愬姛
+
+                    StartLocat = LocatNo,//璧峰浣嶇疆
+                    EndLocat = EndLocat,//鐩爣浣嶇疆
+                    PalletNo = palletNo,//鎵樼洏鐮�
+                    Msg = string.Format("杞繍浠诲姟锛歿0}=>>{1}", LocatNo, EndLocat),
+                    IsSend = 0,//鏄惁鍙啀娆′笅鍙�
+                    IsCancel = 0,//鏄惁鍙彇娑�
+                    IsFinish = 0,//鏄惁鍙畬鎴�
+                    Type = OrderTy,//浠诲姟绫诲瀷 0 鍏ュ簱浠诲姟 1 鍑哄簱浠诲姟  2 绉诲簱浠诲姟
+                    Status = "0",//浠诲姟鐘舵��0锛氱瓑寰呮墽琛�1姝e湪鎵ц2鎵ц瀹屾垚
+                    OrderType = OrderTy,//0 鍏ュ簱鍗� 1 鍑哄簱鍗�  2 鐩樼偣鍗�  3 绉诲簱鍗�
+
+                    CreateTime = DateTime.Now
+                };
+                Db.Insertable(exTask).ExecuteCommand();
+
+                //淇敼璧峰鍌ㄤ綅鍦板潃鐘舵��
+                storageLocat.Status = "5";//0锛氱┖鍌ㄤ綅 1锛氭湁鐗╁搧 2锛氬叆搴撲腑 3锛氬嚭搴撲腑 4锛氱Щ鍏ヤ腑 5锛氱Щ鍑轰腑 
+                Db.Updateable(storageLocat).ExecuteCommand();
+
+                //娣诲姞鎿嶄綔鏃ュ織璁板綍
+                var k = new OperationCrServer().AddLogOperationCr("PDA妯″潡", "绌烘墭鍏ュ簱", palletNo, OrderTy == "0" ? "鍏ュ簱" : "绉诲簱", $"PDA鍛煎彨灏忚溅瀵规墭鐩樺彿锛歿palletNo}鍙戣捣杞繍", userId);
+
+                #region 鍛煎彨灏忚溅浠g爜
+
+                //鐐瑰埌鐐规寚浠ら泦鍚�
+                object[] position = new object[2];
+                position[0] = new
+                {
+                    positionCode = LocatNo,
+                    type = "00"
+                };
+                position[1] = new
+                {
+                    positionCode = EndLocat,
+                    type = "00"
+                };
+
+                List<AgvSchedulingTask> agvTaskList = new List<AgvSchedulingTask>();
+
+
+                AgvSchedulingTask agvTask = new AgvSchedulingTask();
+                Random r = new Random();
+                long ran = DateTime.Now.Ticks;
+                agvTask.ReqCode = ran.ToString();
+                agvTask.TaskCode = taskNo;
+                agvTask.TaskTyp = tasktype;
+                agvTask.PositionCodePath = position;
+                agvTask.CtnrTyp = palnoqty.ToString();
+
+                agvTaskList.Add(agvTask);
+
+
+                // 姝e紡杩愯绋嬪簭鏀惧紑
+                string str = "";
+                var list2 = agvTaskList.Select(m => m.TaskCode).ToList();
+                var jsonData = JsonConvert.SerializeObject(agvTaskList);
+                jsonData = jsonData.Substring(1, jsonData.Length - 1);
+                jsonData = jsonData.Substring(0, jsonData.Length - 1);
+                string response = "";
+
+                try
+                {
+                    var time1 = DateTime.Now;//鍙戦�佹椂闂� .ToString("yyyy-MM-dd HH:mm:ss")
+                    response = HttpHelper.DoPost(url, jsonData, "涓嬪彂缁橝GV杞繍鍛戒护", "AGV");
+                    var time2 = DateTime.Now;//杩斿洖鏃堕棿 .ToString("yyyy-MM-dd HH:mm:ss")
+
+                    //////瑙f瀽杩斿洖鏁版嵁 
+                    var agvModel = JsonConvert.DeserializeObject<OutCommanAgvDto>(response);
+                    if (agvModel.Code == "0")
+                    {
+                        //鏇存敼浠诲姟鐨勫彂閫佽繑鍥炴椂闂�//
+                        new TaskServer().EditTaskIssueOk(list2, time1, time2);
+                        str += "涓嬪彂鎴愬姛";
+                    }
+                    if (agvModel.Code == "1")
+                    {
+                        new TaskServer().EditTaskIssueNo(list2, time1, time2, agvModel.Message);
+                        throw new Exception(agvModel.Message);
+                    }
+                }
+                catch (Exception ex)
+                {
+                    throw new Exception(ex.Message);
+                }
+
+                #endregion
+
+                //鎻愪氦浜嬪姟
+                Db.CommitTran();
+            }
+            catch (Exception ex)
+            {
+                Db.RollbackTran();
+                throw new Exception(ex.Message);
+            }
+        }
+
         #region
-        
+
         /// <summary>
         /// agv璋冨害浠诲姟涓嬪彂
         /// </summary>
@@ -1433,21 +1630,13 @@
                     break;
             }
 
-            // MES鐢宠澶囨枡锛屽鏂欏尯搴撲綅闇�瑕佽浆鎹�     杞﹂棿澶囨枡缂撳瓨浣嶅悕绉帮細3妤煎師杈呮枡Y003_001-->Y003_003  1妤煎鍖呯紦瀛樺尯Y138_001-->Y138_021   1妤煎唴鍖呯紦瀛樺尯Y128_001-->Y128_015
+            // MES鐢宠澶囨枡锛屽鏂欏尯搴撲綅闇�瑕佽浆鎹�     杞﹂棿澶囨枡缂撳瓨浣嶅悕绉帮細Y003_001-->Y003_011  
             if (storageLocatEnd.AreaNo == "B12")
             {
                 switch (endlono.ToString().Substring(4, 1))
                 {
                     case "1":
-                        endlono = "Y003_00" + endlono.Substring(6, 1);
-                        break;
-                    case "2":
-                        endlono = "Y138_0" + endlono.Substring(5, 2);
-                        tasktype = "F20";    //鐢垫浠诲姟
-                        break;
-                    case "3":
-                        endlono = "Y128_0" + endlono.Substring(5, 2);
-                        tasktype = "F20";     //鐢垫浠诲姟
+                        endlono = "Y003_0" + endlono.Substring(5, 2);
                         break;
                     default:
                         break;
@@ -1593,7 +1782,43 @@
                         endLocat = locatInfo3.LocatNo;
                     }
                 }
+                
                 return endLocat;
+            }
+            catch (Exception ex)
+            {
+                throw new Exception(ex.Message);
+            }
+        }
+
+        /// <summary>
+        /// 涓嬪彂AGV浠诲姟缁х画鎵ц
+        /// </summary>
+        /// <param name="taskno"></param>
+        /// <param name="url"></param>
+        /// <returns></returns>
+        public void AgvContinue(string taskno,string url) 
+        {
+
+            Random r = new Random();
+            long ran = DateTime.Now.Ticks;
+            var ReqCode = ran.ToString();
+            var data = new 
+            { 
+                reqCode = ReqCode, 
+                taskCode = taskno  
+            };
+            var jsonData = JsonConvert.SerializeObject(data);
+            try
+            {
+                var response = HttpHelper.DoPost(url, jsonData, "涓嬪彂缁橝GV缁х画鎵ц鍛戒护", "AGV");
+
+                //////瑙f瀽杩斿洖鏁版嵁 
+                var agvModel = JsonConvert.DeserializeObject<OutCommanAgvDto>(response);
+                if (agvModel.Code == "1")
+                {
+                    throw new Exception(agvModel.Message);
+                }
             }
             catch (Exception ex)
             {
@@ -1693,15 +1918,19 @@
                         //var boxno = boxInfo.GroupBy(w => w.BoxNo).ToList();
                         var boxno = Db.Queryable<DataBoxInfo>().Where(m => m.IsDel == "0" && m.StockDetailId == item.Id).GroupBy(m => new
                         {
-                            m.BoxNo
+                            m.BoxNo,
+                            m.ProductionTime,
+                            m.ExpirationTime,
                         }).Select(it => new DataBoxInfo()
                         {
-                            BoxNo = it.BoxNo
+                            BoxNo = it.BoxNo,
+                            ProductionTime = it.ProductionTime,
+                            ExpirationTime = it.ExpirationTime,
                         }).ToList();
 
                         //璁板綍鎵樼洏涓婁俊鎭粰MES
                         foreach (var item2 in boxno) {
-                            var a = item.ProductionTime.ToString();
+                            //var a = item.ProductionTime.ToString();
                             data.Add(new RequertBeiliaoInfoModel()
                             {
                                 no = item2.BoxNo,
@@ -1709,8 +1938,8 @@
                                 materiel_name = item.SkuName,
                                 qty = item.Qty,
                                 batch = item.LotNo,
-                                producttime = item.ProductionTime.ToString().Substring(0,10),
-                                expiry = item.ExpirationTime.ToString().Substring(0, 10)
+                                producttime = item2.ProductionTime.ToString().Substring(0,10),
+                                expiry = item2.ExpirationTime.ToString().Substring(0, 10)
 
                             });
                         }
@@ -1748,13 +1977,7 @@
                     switch (EndLocat.LocatNo.ToString().Substring(4, 1))
                     {
                         case "1":
-                            endlono = "Y003_00" + EndLocat.LocatNo.ToString().Substring(6, 1);
-                            break;
-                        case "2":
-                            endlono = "Y138_0" + EndLocat.LocatNo.ToString().Substring(5, 2);
-                            break;
-                        case"3":
-                            endlono = "Y128_0" + EndLocat.LocatNo.ToString().Substring(5, 2);
+                            endlono = "Y003_0" + EndLocat.LocatNo.ToString().Substring(5, 2);
                             break;
                         default:
                             break;

--
Gitblit v1.8.0