From 2d5ac3163a20bcb5ce82cd78ad186ee5bb9e80a9 Mon Sep 17 00:00:00 2001
From: wxw <Administrator@DESKTOP-5BIMHQ3>
Date: 星期五, 09 五月 2025 08:00:50 +0800
Subject: [PATCH] 修改问题

---
 Wms/WMS.BLL/BllTransServer/HopperTransportServer.cs    |  172 +++++++++++++++++++++++++++++++++++++++++++
 Wms/WMS.IBLL/IBllTransServer/IHopperTransportServer.cs |    9 ++
 Wms/Model/InterFaceModel/AgvModel.cs                   |    9 ++
 Wms/Wms/Controllers/DownApiController.cs               |   31 +++++++
 4 files changed, 220 insertions(+), 1 deletions(-)

diff --git a/Wms/Model/InterFaceModel/AgvModel.cs b/Wms/Model/InterFaceModel/AgvModel.cs
index d352aee..c5e2f77 100644
--- a/Wms/Model/InterFaceModel/AgvModel.cs
+++ b/Wms/Model/InterFaceModel/AgvModel.cs
@@ -209,4 +209,13 @@
         /// </summary>
         public string WareHouseNo { get; set; }
     }
+
+
+    public class RCSCleanRequestModel
+    {
+        public string deviceID { get; set; }
+        public string deviceStation { get; set; }
+        public string status { get; set; }
+    }
+
 }
diff --git a/Wms/WMS.BLL/BllTransServer/HopperTransportServer.cs b/Wms/WMS.BLL/BllTransServer/HopperTransportServer.cs
index 0685595..67ed85e 100644
--- a/Wms/WMS.BLL/BllTransServer/HopperTransportServer.cs
+++ b/Wms/WMS.BLL/BllTransServer/HopperTransportServer.cs
@@ -720,6 +720,178 @@
             }
         }
 
+        /// <summary>
+        /// 娓呮礂鏈哄彨鏂欑姸鎬�
+        /// </summary>
+        /// <param name="deviceID">娓呮礂鏈虹紪鍙�</param>
+        /// <param name="deviceStation">鍙枡鐐逛綅锛氣�漣nput鈥�-鍏ュ彛锛堝彨鑴忔《锛夛紝鈥漮utput鈥�-鍑哄彛锛堝噣妗剁敵璇峰偍浣嶏級</param>
+        /// <param name="status"></param>
+        /// <exception cref="Exception"></exception>
+        public void RCSCleanRequest(string deviceID,string deviceStation,string status,string url)
+        {
+            try
+            {
+                if (string.IsNullOrEmpty(deviceID))
+                {
+                    throw new Exception("娓呮礂鏈虹紪鍙蜂笉鑳戒负绌�");
+                }
+                if (status != "1")
+                {
+                    throw new Exception("闈炲彨鏂欑姸鎬�");
+                }
+                //閫氳繃璁惧鍙锋煡鎵惧埌鎵�灞炶澶囷紙鍖哄煙锛�
+                var deviceInfo = Db.Queryable<SysStorageArea>().First(w => w.IsDel == "0" && w.DeviceCode == deviceID);
+                if (deviceInfo == null)
+                {
+                    throw new Exception("璁惧淇℃伅涓嶅瓨鍦�");
+                }
+                var houseNo = deviceInfo.WareHouseNo;//鍙《璁惧鎵�灞炶溅闂寸紪鍙�
+
+                var startLoction = new SysStorageLocat();//璧峰鍌ㄤ綅淇℃伅
+                var endLoction = new SysStorageLocat();//鐩爣鍌ㄤ綅淇℃伅
+                var palletModel = new DataStockDetail();//鍒嗛厤妗朵俊鎭�
+
+                //寮�鍚簨鍔�
+                Db.BeginTran();
+
+                //鍙枡鐐逛綅
+                switch (deviceStation)
+                {
+                    case "input"://鍙剰妗�
+                        //鍙《璁惧鎵�鍦ㄥ偍浣嶄俊鎭紙鐩爣鍌ㄤ綅锛�
+                        endLoction = Db.Queryable<SysStorageLocat>().First(w => w.IsDel == "0" && w.WareHouseNo == houseNo && w.AreaNo == deviceInfo.AreaNo);
+
+                        // 鎵�鏈夊緟鍒嗛厤鐨勮剰妗�
+                        var stockDetail = Db.Queryable<DataStockDetail>().Where(w => w.Status == "0" && w.PalletStatus == "3");
+                       
+                        //浼樺厛鏌ユ壘鑴忔《缂撳瓨杞﹂棿
+                        palletModel = stockDetail.Where(w => w.AreaNo == "C43").OrderByDescending(o => o.UpdateTime).First();
+                        if (palletModel == null)//鑴忔《缂撳瓨杞﹂棿娌℃湁鑴忔《锛屽啀浠庝笁妤间腑闂寸珯鑴忔《鍖烘煡鎵�
+                        {
+                            palletModel = stockDetail.Where(w =>w.WareHouseNo=="M16" && w.AreaNo == "C26").OrderByDescending(o => o.UpdateTime).First();
+                        }
+                        if (palletModel == null)//涓夋ゼ涓棿绔欒剰妗跺尯娌℃湁鑴忔《锛屽啀浠庡洓妤间腑闂寸珯鑴忔《鍖烘煡鎵�
+                        {
+                            palletModel = stockDetail.Where(w => w.WareHouseNo == "M01" && w.AreaNo == "C03").OrderByDescending(o => o.UpdateTime).First();
+                        }
+                        if (palletModel == null)
+                        {
+                            throw new Exception("鏃犺剰妗跺彲鍒嗛厤");
+                        }
+                        //璧峰鍌ㄤ綅鍦板潃淇℃伅
+                        startLoction = Db.Queryable<SysStorageLocat>().First(w => w.IsDel == "0" && w.Status == "1" && w.LocatNo == palletModel.LocatNo);
+                        if (startLoction == null)
+                        {
+                            throw new Exception($"璧峰鐩爣鍌ㄤ綅淇℃伅涓嶅瓨鍦紝妗跺彿锛歿palletModel.LocatNo}");
+                        }
+
+                        break;
+
+                    case "output"://鍑�妗剁敵璇峰偍浣�
+                        //鍙《璁惧鎵�鍦ㄥ偍浣嶄俊鎭紙璧峰鍌ㄤ綅锛�
+                        startLoction = Db.Queryable<SysStorageLocat>().First(w => w.IsDel == "0" && w.WareHouseNo == houseNo && w.AreaNo == deviceInfo.AreaNo);
+                        //妗朵俊鎭�
+                        palletModel = Db.Queryable<DataStockDetail>().Where(w => w.WareHouseNo==houseNo && w.AreaNo==deviceInfo.AreaNo && w.LocatNo==startLoction.LocatNo).First();
+                        if (palletModel == null)
+                        {
+                            throw new Exception("鏈煡璇㈠埌鍑�妗朵俊鎭�");
+                        }
+                        //鍒嗛厤鍌ㄤ綅
+                        //浼樺厛鍒嗛厤鍥涙ゼ涓棿绔欏噣妗跺尯
+                        endLoction= Db.Queryable<SysStorageLocat>().Where(w => w.IsDel == "0" && w.Status == "0" && w.Flag == "0"
+                                            && w.WareHouseNo == "M01" && w.AreaNo == "C01")
+                                            .OrderBy(o => o.Row).OrderByDescending(o => o.Column).First();
+                        if (endLoction == null)//鍥涙ゼ涓棿绔欏噣妗跺尯娌℃湁绌哄偍浣嶏紝鍐嶄粠涓夋ゼ涓棿绔欏噣妗跺尯鏌ユ壘
+                        {
+                            endLoction = Db.Queryable<SysStorageLocat>().Where(w => w.IsDel == "0" && w.Status == "0" && w.Flag == "0"
+                                            && w.WareHouseNo == "M16" && w.AreaNo == "C24")
+                                            .OrderBy(o => o.Row).OrderByDescending(o => o.Column).First();
+                        }
+                        if (endLoction == null)//涓夋ゼ涓棿绔欏噣妗跺尯娌℃湁绌哄偍浣嶏紝鍐嶄粠涓夋ゼ娓呮礂闂寸紦瀛樺尯鏌ユ壘
+                        {
+                            endLoction = Db.Queryable<SysStorageLocat>().Where(w => w.IsDel == "0" && w.Status == "0" && w.Flag == "0"
+                                            && w.WareHouseNo == "M44" && w.AreaNo == "C55")
+                                            .OrderBy(o => o.Row).OrderByDescending(o => o.Column).First();
+                        }
+                        if (endLoction == null)
+                        {
+                            throw new Exception("鏈煡璇㈠埌鍚堥�傚偍浣�");
+                        }
+                        break;
+
+                    default:
+                        throw new Exception("鍙枡鐐逛綅寮傚父");
+     
+                }
+                var taskNo = new Common().GetMaxNo("TK");
+                //娣诲姞浠诲姟
+                var logTaskEntry = new LogTask
+                {
+                    TaskNo = taskNo,
+                    Sender = "WMS",
+                    Receiver = "RCS",
+                    IsSuccess = 0, //鏄惁涓嬪彂鎴愬姛 0澶辫触 1鎴愬姛
+
+                    StartLocat = "",//璧峰浣嶇疆
+                    EndLocat = endLoction.LocatNo,//鐩爣浣嶇疆
+                    PalletNo = "",//鎵樼洏鐮�
+                    IsSend = 1,//鏄惁鍙啀娆′笅鍙�
+                    IsCancel = 1,//鏄惁鍙彇娑�
+                    IsFinish = 1,//鏄惁鍙畬鎴�
+                    Type = "1",//浠诲姟绫诲瀷 0 鍏ュ簱浠诲姟 1 鍑哄簱浠诲姟  2 绉诲簱浠诲姟
+                    Status = "0",//浠诲姟鐘舵��0锛氱瓑寰呮墽琛�1姝e湪鎵ц2鎵ц瀹屾垚
+                    OrderType = "3",//0 鍏ュ簱鍗� 1 鍑哄簱鍗�  2 鐩樼偣鍗�  3 绉诲簱鍗�
+
+                    CreateTime = DateTime.Now
+                };
+                Db.Insertable(logTaskEntry).ExecuteCommand();
+
+                //缁勭粐涓嬪彂灏忚溅浠诲姟淇℃伅
+                var task = new TaskDetial
+                {
+                    Taskno = taskNo,//浠诲姟鍙�
+                    Startport = palletModel.LocatNo,//璧峰浣嶇疆
+                    Endport = endLoction.LocatNo,//鐩爣浣嶇疆
+                    Pallno = palletModel.PalletNo,//妗跺彿
+                    Crtype = "1",//鍙《
+                };
+
+                string agvMsg = string.Empty;
+                //缁欎笅杞︿笅鍙戜换鍔�
+                logTaskEntry.SendDate = DateTime.Now;//鍙戦�佹椂闂�
+                var agvResult = RcsHelper.CreateTaskForAgv(task, url, out agvMsg);
+                if (agvResult)//鎴愬姛
+                {
+                    //璇锋眰鎴愬姛淇敼浠诲姟琛ㄧ浉搴斿瓧娈电姸鎬�
+                    logTaskEntry.IsSuccess = 1;
+                    logTaskEntry.IsSend = 0;
+                    //logTaskEntry.IsCancel = 0;
+                    logTaskEntry.BackDate = DateTime.Now;
+                    logTaskEntry.Status = "1";//姝e湪鎵ц
+                    Db.Insertable(logTaskEntry).ExecuteCommand();
+
+                    startLoction.Status = "3";//鍑哄簱涓�
+                    Db.Updateable(startLoction).ExecuteCommand();
+
+                    endLoction.Status = "2";//鍏ュ簱涓�
+                    Db.Updateable(endLoction).ExecuteCommand();
+                }
+                else//澶辫触
+                {
+                    logTaskEntry.IsSuccess = 0;
+                    logTaskEntry.Information = agvMsg;
+                    Db.Insertable(logTaskEntry).ExecuteCommand();
+                }
+                //鎻愪氦浜嬪姟
+                Db.CommitTran();
+            }
+            catch (Exception e)
+            {
+                //鍥炴粴浜嬪姟
+                Db.RollbackTran();
+                throw new Exception(e.Message);
+            }
+        }
 
         private bool YikuTask(string palletNo, string taskNo, string url)
         {
diff --git a/Wms/WMS.IBLL/IBllTransServer/IHopperTransportServer.cs b/Wms/WMS.IBLL/IBllTransServer/IHopperTransportServer.cs
index 2c296cd..45a3ed2 100644
--- a/Wms/WMS.IBLL/IBllTransServer/IHopperTransportServer.cs
+++ b/Wms/WMS.IBLL/IBllTransServer/IHopperTransportServer.cs
@@ -19,6 +19,13 @@
         void jiaoLiaoHopper(string areaNo, string endLocate, string plnStatus, string standard, string skuNo, string lotNo, string url, int userId);
         void jiaoCheHopper(string areaNo, string StartLocate, string plnNo, string plnStatus, decimal weight, string skuNo, string lotNo, string url, int userId);
 
-
+        /// <summary>
+        /// 娓呮礂鏈哄彨鏂欑姸鎬�
+        /// </summary>
+        /// <param name="deviceID">娓呮礂鏈虹紪鍙�</param>
+        /// <param name="deviceStation">鍙枡鐐逛綅锛氣�漣nput鈥�-鍏ュ彛锛堝彨鑴忔《锛夛紝鈥漮utput鈥�-鍑哄彛锛堝噣妗剁敵璇峰偍浣嶏級</param>
+        /// <param name="status"></param>
+        /// <exception cref="Exception"></exception>
+        void RCSCleanRequest(string deviceID, string deviceStation, string status, string url);
     }
 }
diff --git a/Wms/Wms/Controllers/DownApiController.cs b/Wms/Wms/Controllers/DownApiController.cs
index abf4422..75d7a71 100644
--- a/Wms/Wms/Controllers/DownApiController.cs
+++ b/Wms/Wms/Controllers/DownApiController.cs
@@ -1311,8 +1311,39 @@
                 return Ok(new { data = "", code = 1, msg = e.Message });
             }
         }
+        /// <summary>
+        /// 娓呮礂鏈哄彨鏂欑姸鎬�
+        /// </summary>
+        /// <param name="model"></param>
+        /// <returns></returns>
+        [HttpPost]
+        public IActionResult RCSCleanRequest(RCSCleanRequestModel model)
+        {
+            var logStr = $@".\log\AGV\娓呮礂鏈哄彨鏂�" + DateTime.Now.ToString("yyyyMMdd") + ".txt";
+            AgvResultModel resultModel = null;//杩斿洖淇℃伅
+            try
+            {
+                var jsonData = JsonConvert.SerializeObject(model);
+                LogFile.SaveLogToFile($"娓呮礂鏈哄彨鏂�-璇锋眰鎶ユ枃锛�( {jsonData} ),", logStr);
 
+                //鍏蜂綋澶勭悊鏂规硶
+                _hopper.RCSCleanRequest(model.deviceID,model.deviceStation,model.status, _config.AgvHost + _config.GenAgvSchedulingTask);
 
+                resultModel = new AgvResultModel { code = "0", message = "璇锋眰鎴愬姛!"};
+                var jsonData2 = JsonConvert.SerializeObject(resultModel);
+                LogFile.SaveLogToFile($"娓呮礂鏈哄彨鏂�-杩斿洖鎶ユ枃锛�( {jsonData2} ),", logStr);
+                return Ok(resultModel);
+            }
+            catch (Exception e)
+            {
+                LogFile.SaveLogToFile($"娓呮礂鏈哄彨鏂欏紓甯革細( {e.Message} ),", logStr);
+
+                resultModel = new AgvResultModel { code = "1", message = e.Message, data = "", reqCode = "" };
+                var jsonData2 = JsonConvert.SerializeObject(resultModel);
+                LogFile.SaveLogToFile($"娓呮礂鏈哄彨鏂�-杩斿洖鎶ユ枃锛�( {jsonData2} ),", logStr);
+                return Ok(resultModel);
+            }
+        }
         #endregion
 
     }

--
Gitblit v1.8.0