From 219a08427376efdd304e9b11e481ccd8276018bb Mon Sep 17 00:00:00 2001
From: zhaowc <526854230@qq.com>
Date: 星期六, 18 十月 2025 11:14:29 +0800
Subject: [PATCH] 巷道形式存取放物料

---
 Wms/Utility/Tools/RcsHelper.cs |  149 ++++++++++++++++++++++++++++++++++++++++++++-----
 1 files changed, 134 insertions(+), 15 deletions(-)

diff --git a/Wms/Utility/Tools/RcsHelper.cs b/Wms/Utility/Tools/RcsHelper.cs
index 30c1662..88d44ab 100644
--- a/Wms/Utility/Tools/RcsHelper.cs
+++ b/Wms/Utility/Tools/RcsHelper.cs
@@ -1,24 +1,61 @@
 锘縰sing Model.InterFaceModel;
+using SqlSugar;
 using Newtonsoft.Json;
 using System;
 using System.Collections.Generic;
 using System.Text;
 using ZXing;
 using static Model.InterFaceModel.RCSModel;
+using WMS.Entity.Context;
+using WMS.Entity.SysEntity;
 
 namespace Utility.Tools
 {
     public static class RcsHelper
     {
+        private static readonly SqlSugarScope Db = DataContext.Db;
+        /// <summary>
+        /// 涓嬪彂浠诲姟
+        /// </summary>
+        /// <param name="taskDetial">璇锋眰鍙傛暟</param>
+        /// <param name="url">璇锋眰鍦板潃</param>
+        /// <param name="agvMsg">杩斿洖淇℃伅</param>
+        /// <param name="priority">浼樺厛绾�</param>
+        /// <returns></returns>
         public static bool CreateTaskForAgv(TaskDetial taskDetial, string url, out string agvMsg, string priority = null)
         {
             bool result = false;
+            var tasktype = "";
+            switch (taskDetial.Crtype)
+            {
+                case "1":  //鍙《
+                    tasktype = "F12";
+                    break;
+                case "2":  //鍙溅
+                    tasktype = "F12";
+                    break;
+                case "3":  //娓呮礂鏈哄彨鑴忔《
+                    tasktype = "F20";
+                    break;
+                case "4":  //娓呮礂鏈哄彇鍑�妗�
+                    tasktype = "F21";
+                    break;
+                default:
+                    break;
+            }
+
+            //璺ㄦゼ灞備换鍔asktype鍊艰祴鍊尖�︹��
+            if (taskDetial.Endport.Substring(0,3) == "C01")
+            {
+                tasktype = "F23";
+            }
+            
 
             List<targetRoute> pahtList = new List<targetRoute>();
             //璧峰浣嶇疆
             targetRoute royte1 = new targetRoute();
             royte1.seq = 0;
-            royte1.type = "ZONE";
+            royte1.type = "SITE";
             royte1.code = taskDetial.Startport;
 
             pahtList.Add(royte1);
@@ -26,18 +63,109 @@
             //鐩爣浣嶇疆
             targetRoute royte2 = new targetRoute();
             royte2.seq = 0;
-            royte2.type = "ZONE";
+            royte2.type = "SITE";
             royte2.code = taskDetial.Endport;
 
             pahtList.Add(royte2);
 
             AgvCreateTaskModel taskModel = new AgvCreateTaskModel();
-            taskModel.taskType = "PF-LMR-COMMON";
+            taskModel.taskType = tasktype;
             taskModel.targetRoute = pahtList;
+            taskModel.initPriority = 100;
+            taskModel.robotTaskCode = taskDetial.Taskno;
+
+            //AGV浠诲姟涓嬪彂鏃跺鍔爃earder:X-LR-REQUEST-ID,鍊间负闅忔満鏁�
+            long ran = DateTime.Now.Ticks;
+            Dictionary<string, string> key = new Dictionary<string, string>();
+            key.Add("X-LR-REQUEST-ID", ran.ToString());
 
             // 姝e紡杩愯绋嬪簭鏀惧紑
             var jsonData = JsonConvert.SerializeObject(taskModel);
-            string response = HttpHelper.DoPost(url, jsonData, "涓嬪彂缁橝GV杞繍鍛戒护", "AGV");
+            string response = HttpHelper.DoPost(url, jsonData, "涓嬪彂缁橝GV杞繍鍛戒护", "AGV", key);
+            //瑙f瀽杩斿洖鏁版嵁 
+            var agvModel = JsonConvert.DeserializeObject<OutCommanAgvDto>(response);
+            if (agvModel.Code == "SUCCESS")
+            {
+                result = true;//缁欎笅杞︿笅鍙戜换鍔℃垚鍔�
+
+                agvMsg = "";
+            }
+            else
+            {
+                var logStr = $@".\log\AGV\涓嬪彂缁橝GV杞繍鍛戒护" + DateTime.Now.ToString("yyyyMMdd") + ".txt";
+                LogFile.SaveLogToFile($"涓嬪彂缁橝GV杞繍鍛戒护寮傚父锛�( {agvModel.Message} ),", logStr);
+
+                agvMsg = agvModel.Message;
+            }
+
+            return result;
+        }
+        /// <summary>
+        /// 涓嬪彂AGV缁戝畾杞藉叿鍜岀珯鐐�
+        /// </summary>
+        /// <param name="palletNo">妗跺彿L</param>
+        /// <param name="url">璇锋眰鍦板潃</param>   
+        /// <param name="agvMsg">杩斿洖淇℃伅</param>
+        /// <param name="locateNo">杩斿洖淇℃伅</param>
+        /// <returns></returns>
+        public static bool BindPalletAndSite(string palletNo,string locateNo,string url,out string agvMsg)
+        {
+            
+            bool result = false;
+            carrierInfo carrierInfo = new carrierInfo();
+            carrierInfo.carrierCode = palletNo;
+            carrierInfo.siteCode = locateNo;
+
+            //AGV浠诲姟涓嬪彂鏃跺鍔爃earder:X-LR-REQUEST-ID,鍊间负闅忔満鏁�
+            long ran = DateTime.Now.Ticks;
+            Dictionary<string, string> key = new Dictionary<string, string>();
+            key.Add("X-LR-REQUEST-ID", ran.ToString());
+
+            // 姝e紡杩愯绋嬪簭鏀惧紑
+            var jsonData = JsonConvert.SerializeObject(carrierInfo);
+            string response = HttpHelper.DoPost(url, jsonData, "涓嬪彂缁橝GV缁戝畾杞藉叿鍛戒护", "AGV", key);
+            //瑙f瀽杩斿洖鏁版嵁 
+            var agvModel = JsonConvert.DeserializeObject<AgvTaskBindBack>(response);
+            if (agvModel.code == "SUCCESS")
+            {
+                result = true;//缁欎笅杞︿笅鍙戜换鍔℃垚鍔�
+
+                agvMsg = "";
+            }
+            else
+            {
+                var logStr = $@".\log\AGV\涓嬪彂缁橝GV缁戝畾杞藉叿鍛戒护" + DateTime.Now.ToString("yyyyMMdd") + ".txt";
+                LogFile.SaveLogToFile($"涓嬪彂缁橝GV缁戝畾杞藉叿鍛戒护寮傚父锛�( {agvModel.message} ),", logStr);
+
+                agvMsg = agvModel.message;
+            }
+
+            return result;
+        }
+
+        /// <summary>
+        /// 涓嬪彂AGV瑙g粦杞藉叿鍜岀珯鐐�
+        /// </summary>                              
+        /// <param name="palletType">瀹瑰櫒绫诲瀷1锛�400L锛�2锛�800/1000L</param>
+        /// <param name="url">璇锋眰鍦板潃</param> 
+        /// <param name="agvMsg">杩斿洖淇℃伅</param>
+        /// <param name="locateNo">杩斿洖淇℃伅</param>
+        /// <returns></returns>
+        public static bool UnBindPalletAndSite(string palletType, string locateNo,string url, out string agvMsg)
+        {
+            bool result = false;
+            carrierInfo carrierInfo = new carrierInfo();
+            carrierInfo.carrierCode = palletType;
+            carrierInfo.siteCode = locateNo;
+
+            //AGV浠诲姟涓嬪彂鏃跺鍔爃earder:X-LR-REQUEST-ID,鍊间负闅忔満鏁�
+            long ran = DateTime.Now.Ticks;
+            Dictionary<string, string> key = new Dictionary<string, string>();
+            key.Add("X-LR-REQUEST-ID", ran.ToString());
+
+            // 姝e紡杩愯绋嬪簭鏀惧紑
+            var jsonData = JsonConvert.SerializeObject(carrierInfo);
+            string response = HttpHelper.DoPost(url, jsonData, "涓嬪彂缁橝GV缁戝畾杞藉叿鍛戒护", "AGV", key);
             //瑙f瀽杩斿洖鏁版嵁 
             var agvModel = JsonConvert.DeserializeObject<OutCommanAgvDto>(response);
             if (agvModel.Code == "0")
@@ -48,17 +176,8 @@
             }
             else
             {
-                string logMsg = "";
-                if (taskDetial.Crtype == "1")//鍙《锛堟《鍑哄簱锛�
-                {
-                    logMsg = "鐢宠鍙《";
-                }
-                else if (taskDetial.Crtype == "0")//鐢宠鍌ㄤ綅锛堟《鍏ュ簱锛�
-                {
-                    logMsg = "鐢宠鍌ㄤ綅";
-                }
-                var logStr = $@".\log\AGV\AGV{logMsg}" + DateTime.Now.ToString("yyyyMMdd") + ".txt";
-                LogFile.SaveLogToFile($"AGV{logMsg}寮傚父锛�( {agvModel.Message} ),", logStr);
+                var logStr = $@".\log\AGV\涓嬪彂缁橝GV瑙g粦杞藉叿鍛戒护" + DateTime.Now.ToString("yyyyMMdd") + ".txt";
+                LogFile.SaveLogToFile($"涓嬪彂缁橝GV瑙g粦杞藉叿鍛戒护寮傚父锛�( {agvModel.Message} ),", logStr);
 
                 agvMsg = agvModel.Message;
             }

--
Gitblit v1.8.0