From 639f5a744312de88aa27fbba2e7f27eb52287ed6 Mon Sep 17 00:00:00 2001
From: dengjunjie <dengjunjie@hnkhzn.com>
Date: 星期三, 10 四月 2024 15:38:32 +0800
Subject: [PATCH] 代码优化

---
 项目资料/技术协议/方案介绍.pptx                                                     |    0 
 代码管理/WMS/WMS_Server/WIDESEA_WMS/ToMes/GetStation.cs                     |   49 ++++++++++++
 代码管理/PCS/WCS_Server/WIDESEA_WCS/JobsPart/Common/RestockHCJ.cs           |    2 
 代码管理/WMS/WMS_Server/WIDESEA_WMS/Common/AGVTask/HandleTask.cs            |   15 +++
 代码管理/WMS/WMS_Server/WIDESEA_WebApi/Controllers/JobTask.cs               |    2 
 项目资料/技术协议/信息化部分.docx                                                    |    0 
 代码管理/WMS/WMS_Server/WIDESEA_WMS/ToMes/agvTransferList.cs                |    4 
 代码管理/WMS/WMS_Server/WIDESEA_WMS/ToMes/shiftingparking.cs                |  107 ++++++++++++++++++++++++++
 代码管理/WMS/WMS_Server/WIDESEA_WebApi/Controllers/ToWms/ToWMSController.cs |   39 ++++++++-
 9 files changed, 207 insertions(+), 11 deletions(-)

diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_WCS/JobsPart/Common/RestockHCJ.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_WCS/JobsPart/Common/RestockHCJ.cs"
index 787ff0d..410a9c6 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_WCS/JobsPart/Common/RestockHCJ.cs"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_WCS/JobsPart/Common/RestockHCJ.cs"
@@ -36,7 +36,7 @@
                 {
                     if (task.agv_tasktype == "TaskType_EmptyPallet")//绌烘墭浠诲姟
                     {
-                        if (task.agv_fromaddress == "")
+                        if (task.agv_fromaddress == "" && DateTime.Now - task.agv_createtime >= TimeSpan.FromMinutes(5))
                         {
                             var Pipeline_client = PLCClient.Clients.FirstOrDefault(t => t.PLCName == "閾炬潯鏈�");
                             if (Pipeline_client == null) throw new Exception("閾炬潯鏈鸿皟搴︽湇鍔℃湭寮�鍚紒");
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WMS_Server/WIDESEA_WMS/Common/AGVTask/HandleTask.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WMS_Server/WIDESEA_WMS/Common/AGVTask/HandleTask.cs"
index 71cfa50..b1824b5 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WMS_Server/WIDESEA_WMS/Common/AGVTask/HandleTask.cs"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WMS_Server/WIDESEA_WMS/Common/AGVTask/HandleTask.cs"
@@ -67,7 +67,18 @@
         /// <param name="task"></param>
         public static void Updateinventory(dt_agvtask task)
         {
-            if (task.agv_tasktype == AGVTaskTypeEnum.TaskType_Outbound.ToString() || task.agv_tasktype == AGVTaskTypeEnum.TaskType_OutsourceCarry.ToString())
+            VOLContext context = new VOLContext();
+            Idt_inventoryRepository inventoryRepository = new dt_inventoryRepository(context);
+            if (task.agv_tasktype == AGVTaskTypeEnum.TaskType_Carry.ToString())
+            {
+                var inventorys = inventoryRepository.Find(x => x.stationCode == task.agv_fromaddress).ToList();
+                foreach (var inventory in inventorys)
+                {
+                    inventory.stationCode = task.agv_toaddress;
+                    inventoryRepository.Update(inventory, true);
+                }
+            }
+            else if (task.agv_tasktype == AGVTaskTypeEnum.TaskType_Outbound.ToString() || task.agv_tasktype == AGVTaskTypeEnum.TaskType_OutsourceCarry.ToString())
             {
                 string[] bindSNs = task.bindSN.Split(",");
                 int count = 0;
@@ -171,7 +182,7 @@
                 station2.stationType = task.agv_materielid;
                 station2.tray_status = task.agv_TrayStatus;//妯斁/绔栨斁
                 station2.tray_type = task.agv_Traytype;
-                station2.lastUpdateTime=DateTime.Now;
+                station2.lastUpdateTime = DateTime.Now;
                 stationinfoRepository.Update(station2, true);
             }
             else if (task.agv_taskstate == AGVTaskStateEnum.Complete.ToString())
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WMS_Server/WIDESEA_WMS/ToMes/GetStation.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WMS_Server/WIDESEA_WMS/ToMes/GetStation.cs"
new file mode 100644
index 0000000..013431f
--- /dev/null
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WMS_Server/WIDESEA_WMS/ToMes/GetStation.cs"
@@ -0,0 +1,49 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEA_Core.EFDbContext;
+using WIDESEA_Core.Utilities;
+using WIDESEA_Entity.DomainModels;
+using WIDESEA_WMS.IRepositories;
+using WIDESEA_WMS.Repositories;
+
+namespace WIDESEA_WMS
+{
+    public partial class ToMesServer
+    {
+        /// <summary>
+        /// 閫氳繃SN鍙疯幏鍙栬揣浣�
+        /// </summary>
+        /// <param name="saveModel"></param>
+        /// <returns></returns>
+        public WebResponseContent GetStation(SaveModel saveModel)
+        {
+            WebResponseContent content = new WebResponseContent();
+            VOLContext context = new VOLContext();
+            Idt_stationinfoRepository stationinfoRepository = new dt_stationinfoRepository(context);
+            Idt_agvtaskRepository agvtaskRepository = new dt_agvtaskRepository(context);
+            Idt_inventoryRepository inventoryRepository = new dt_inventoryRepository(context);
+            try
+            {
+                string sn = saveModel.MainData["from_address"].ToString();
+                dt_inventory inventory = inventoryRepository.Find(x => x.SN.Contains(sn)).FirstOrDefault();
+                if (inventory == null)
+                {
+                    return content.Error($"鏈壘鍒皗sn}搴撳瓨淇℃伅,璇锋牳鏌ュ簱瀛樿褰�!");
+                }
+                var station = stationinfoRepository.Find(x => x.stationCode == inventory.stationCode).FirstOrDefault();
+                if (agvtaskRepository.Find(x => x.agv_fromaddress == station.stationCode || x.agv_toaddress == station.stationCode).Any())
+                    return content.Error($"搴撲綅{station.stationCode}瀛樺湪AGV浠诲姟锛岃鏍稿疄锛�");
+                content.Code = station.stationCode;
+                content.OK();
+            }
+            catch (Exception ex)
+            {
+
+            }
+            return content;
+        }
+    }
+}
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WMS_Server/WIDESEA_WMS/ToMes/agvTransferList.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WMS_Server/WIDESEA_WMS/ToMes/agvTransferList.cs"
index 4be7204..933f469 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WMS_Server/WIDESEA_WMS/ToMes/agvTransferList.cs"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WMS_Server/WIDESEA_WMS/ToMes/agvTransferList.cs"
@@ -54,8 +54,8 @@
                     return content.Error($"鏃犳杞﹁疆{sn}SN鍙�,璇锋牳鏌ュ簱瀛樿褰�!");
                 }
                 var station = stationinfoRepository.Find(x => x.stationCode == inventory.stationCode).FirstOrDefault();
-                if (!station.enable) return content.Error($"搴撲綅{station.stationCode}鏈惎鐢紝璇锋牳瀹烇紒");
-                if (agvtaskRepository.Find(x => x.agv_fromaddress == station.stationCode).Any())
+                //if (!station.enable) return content.Error($"搴撲綅{station.stationCode}鏈惎鐢紝璇锋牳瀹烇紒");
+                if (agvtaskRepository.Find(x => x.agv_fromaddress == station.stationCode || x.agv_toaddress == station.stationCode).Any())
                     return content.Error($"搴撲綅{station.stationCode}瀛樺湪AGV浠诲姟锛岃鏍稿疄锛�");
                 List<detail> list = new List<detail>(); //杞﹁疆淇℃伅
                 foreach (var item in station.bindSN.Split(","))
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WMS_Server/WIDESEA_WMS/ToMes/shiftingparking.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WMS_Server/WIDESEA_WMS/ToMes/shiftingparking.cs"
new file mode 100644
index 0000000..dfc9c30
--- /dev/null
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WMS_Server/WIDESEA_WMS/ToMes/shiftingparking.cs"
@@ -0,0 +1,107 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEA_Comm;
+using WIDESEA_Comm.TaskNo;
+using WIDESEA_Common;
+using WIDESEA_Core.EFDbContext;
+using WIDESEA_Core.Utilities;
+using WIDESEA_Entity.DomainModels;
+using WIDESEA_WMS.IRepositories;
+using WIDESEA_WMS.Repositories;
+using static FreeSql.Internal.GlobalFilter;
+using static System.Collections.Specialized.BitVector32;
+
+namespace WIDESEA_WMS
+{
+    public partial class ToMesServer
+    {
+        /// <summary>
+        /// 搴撳唴绉诲簱
+        /// </summary>
+        /// <param name="saveModel"></param>
+        /// <returns></returns>
+        /// <exception cref="NotImplementedException"></exception>
+        public WebResponseContent shiftingparking(SaveModel saveModel)
+        {
+            WebResponseContent content = new WebResponseContent();
+            VOLContext context = new VOLContext();
+            Idt_stationinfoRepository stationinfoRepository = new dt_stationinfoRepository(context);
+            Idt_agvtaskRepository agvtaskRepository = new dt_agvtaskRepository(context);
+            Idt_inventoryRepository inventoryRepository = new dt_inventoryRepository(context);
+            try
+            {
+                string user = saveModel.MainData["creator"].ToString();
+                string from_address = saveModel.MainData["from_address"].ToString();
+                string to_address = saveModel.MainData["to_address"].ToString();
+                var station1 = stationinfoRepository.Find(t => t.stationCode == from_address).FirstOrDefault();
+                if (station1 == null) return content.Error("璇疯緭鍏ユ纭殑璧风偣鍦板潃锛�");
+                var station2 = stationinfoRepository.Find(t => t.stationCode == to_address).FirstOrDefault();
+                if (station2 == null) return content.Error("璇疯緭鍏ユ纭殑璧风偣鍦板潃锛�");
+                if (!station1.tray_type.Contains("Small") && station2.area != "4")
+                    throw new Exception($"澶ф墭鐩樺彧鑳藉瓨鏀惧湪搴撳尯4锛�");
+                if (agvtaskRepository.Find(x => x.agv_fromaddress.Contains(from_address) || x.agv_toaddress.Contains(from_address)).Any())
+                    throw new Exception($"璧风偣{from_address}宸插瓨鍦ㄤ换鍔★紒");
+                if (agvtaskRepository.Find(x => x.agv_fromaddress.Contains(to_address) || x.agv_toaddress.Contains(to_address)).Any())
+                    throw new Exception($"缁堢偣{to_address}宸插瓨鍦ㄤ换鍔★紒");
+                if (station1.location_state != LocationStateEnum.Stroge.ToString())
+                    throw new Exception($"璧风偣{from_address}涓嶆槸鏈夎揣锛�");
+                if (station2.location_state != LocationStateEnum.Empty.ToString())
+                    throw new Exception($"缁堢偣{to_address}涓嶆槸绌鸿揣浣嶏紒");
+                if (string.IsNullOrEmpty(station1.stationType))
+                    throw new Exception($"璧风偣{from_address}鏈粦瀹氱墿鏂欑被鍨嬶紒");
+                
+                if (station2.area == "1")
+                {
+                    if (stationinfoRepository.Find(x => x.area == station2.area && x.column == station2.column && x.location_state != LocationStateEnum.Empty.ToString() && x.stationType != station1.stationType).Any())
+                        throw new Exception($"缁堢偣{to_address}鍚屽垪瀛樺湪涓庤捣鐐圭墿鏂欑被鍨嬩笉鍖归厤锛�");
+                }
+                else
+                {
+                    if (stationinfoRepository.Find(x => x.area == station2.area && x.line == station2.line && x.location_state != LocationStateEnum.Empty.ToString() && x.stationType != station1.stationType).Any())
+                        throw new Exception($"缁堢偣{to_address}鍚岃瀛樺湪涓庤捣鐐圭墿鏂欑被鍨嬩笉鍖归厤锛�");
+                }
+                var inventory = inventoryRepository.Find(x => x.stationCode == station1.stationCode).FirstOrDefault();
+                if (inventory == null) throw new Exception($"璧风偣{from_address}鏈壘鍒板簱瀛樹俊鎭紒");
+
+                dt_agvtask agvtask = new dt_agvtask()
+                {
+                    agv_fromaddress = station1.stationCode,
+                    agv_id = Guid.NewGuid(),
+                    agv_tasknum = IdenxManager.GetTaskNo("KH-", "WMS"),
+                    agv_grade = 1,
+                    agv_createtime = DateTime.Now,
+                    agv_taskstate = "Create",
+                    agv_materielid = station1.stationType,
+                    agv_qty = station1.quantity,
+                    agv_tasktype = AGVTaskTypeEnum.TaskType_Carry.ToString(),
+                    agv_toaddress = station2.stationCode,
+                    agv_userid = user,//"绯荤粺",
+                    jobID = station1.Number,// mes_head.jobID,
+                    bindSN = station1.bindSN,
+                    agv_worktype = 0, //Convert.ToInt32(mes_head.processCode),
+                    agv_materbarcode = inventory.materialCode,
+                    agv_Traytype = station1.tray_type,
+                    agv_TrayStatus = station1.tray_status
+                };
+                agvtaskRepository.Add(agvtask, true);
+                station1.location_state = LocationStateEnum.OutBusy.ToString();
+                stationinfoRepository.Update(station1, true);
+                station2.location_state = LocationStateEnum.InBusy.ToString();
+                station2.heatNumber = station1.heatNumber;
+                station2.Number = station1.Number;
+                station2.stationType = station1.stationType;
+                stationinfoRepository.Update(station2, true);
+                content.OK();
+
+            }
+            catch (Exception ex)
+            {
+                content.Error($"鍛煎彨AGV澶辫触:{ex.Message}");
+            }
+            return content;
+        }
+    }
+}
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WMS_Server/WIDESEA_WebApi/Controllers/JobTask.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WMS_Server/WIDESEA_WebApi/Controllers/JobTask.cs"
index 371f541..16b2404 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WMS_Server/WIDESEA_WebApi/Controllers/JobTask.cs"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WMS_Server/WIDESEA_WebApi/Controllers/JobTask.cs"
@@ -12,7 +12,7 @@
         [Invoke(Begin = "2024-01-01 00:00", Interval = 1000 * 5, /*IsEnabled = true,*/ SkipWhileExecuting = true)]
         public void TaskTime()
         {
-            AGVServer.SendAgvTask();
+            //AGVServer.SendAgvTask();
         }
     }
 }
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WMS_Server/WIDESEA_WebApi/Controllers/ToWms/ToWMSController.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WMS_Server/WIDESEA_WebApi/Controllers/ToWms/ToWMSController.cs"
index a486605..605c66e 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WMS_Server/WIDESEA_WebApi/Controllers/ToWms/ToWMSController.cs"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WMS_Server/WIDESEA_WebApi/Controllers/ToWms/ToWMSController.cs"
@@ -12,7 +12,9 @@
     public class ToWMSController : ControllerBase
     {
         private static readonly object OutsourceInboundobj = new object();
-        private static readonly object agvTransferListbj = new object();
+        private static readonly object agvTransferListobj = new object();
+        private static readonly object shiftingparkingobj = new object();
+        private static readonly object GetStationobj = new object();
         /// <summary>
         /// 绉诲簱锛堟墜鍔紝涓存椂锛�
         /// </summary>
@@ -24,22 +26,49 @@
             return new ToMesServer().AddToFloat3(request);
         }
 
-
         /// <summary>
-        /// 澶栧崗绉诲簱
+        /// 绉诲簱澶栧崗
         /// </summary>
-        /// <param name="request"></param>
+        /// <param name="saveModel"></param>
         /// <returns></returns>
         [HttpPost, Route("agvTransferList")]
         public WebResponseContent agvTransferList([FromBody] SaveModel saveModel)
         {
-            lock (agvTransferListbj)
+            lock (agvTransferListobj)
             {
                 return new ToMesServer().agvTransferList(saveModel);
             }
         }
 
         /// <summary>
+        /// 鑾峰彇璐т綅
+        /// </summary>
+        /// <param name="request"></param>
+        /// <returns></returns>
+        [HttpPost, Route("GetStation")]
+        public WebResponseContent GetStation([FromBody] SaveModel saveModel)
+        {
+            lock (GetStationobj)
+            {
+                return new ToMesServer().GetStation(saveModel);
+            }
+        }
+
+        /// <summary>
+        /// 搴撳唴绉诲簱
+        /// </summary>
+        /// <param name="request"></param>
+        /// <returns></returns>
+        [HttpPost, Route("shiftingparking")]
+        public WebResponseContent shiftingparking([FromBody] SaveModel saveModel)
+        {
+            lock (shiftingparkingobj)
+            {
+                return new ToMesServer().shiftingparking(saveModel);
+            }
+        }
+
+        /// <summary>
         /// 澶栧崗鍑哄簱(妫�娴嬩笂鏂�)
         /// </summary>
         /// <param name="request"></param>
diff --git "a/\351\241\271\347\233\256\350\265\204\346\226\231/\346\212\200\346\234\257\345\215\217\350\256\256/\344\277\241\346\201\257\345\214\226\351\203\250\345\210\206.docx" "b/\351\241\271\347\233\256\350\265\204\346\226\231/\346\212\200\346\234\257\345\215\217\350\256\256/\344\277\241\346\201\257\345\214\226\351\203\250\345\210\206.docx"
new file mode 100644
index 0000000..6da1f40
--- /dev/null
+++ "b/\351\241\271\347\233\256\350\265\204\346\226\231/\346\212\200\346\234\257\345\215\217\350\256\256/\344\277\241\346\201\257\345\214\226\351\203\250\345\210\206.docx"
Binary files differ
diff --git "a/\351\241\271\347\233\256\350\265\204\346\226\231/\346\212\200\346\234\257\345\215\217\350\256\256/\346\226\271\346\241\210\344\273\213\347\273\215.pptx" "b/\351\241\271\347\233\256\350\265\204\346\226\231/\346\212\200\346\234\257\345\215\217\350\256\256/\346\226\271\346\241\210\344\273\213\347\273\215.pptx"
new file mode 100644
index 0000000..24f33a5
--- /dev/null
+++ "b/\351\241\271\347\233\256\350\265\204\346\226\231/\346\212\200\346\234\257\345\215\217\350\256\256/\346\226\271\346\241\210\344\273\213\347\273\215.pptx"
Binary files differ

--
Gitblit v1.9.3