From cff60cb1cccf70fe33ed9c951c46143fe41fc43a Mon Sep 17 00:00:00 2001
From: IPC-610 <IPC-610@DESKTOP-6LEOOS3>
Date: 星期四, 26 九月 2024 19:09:52 +0800
Subject: [PATCH] 设备呼叫空托跺

---
 Admin.NET/WCS.Application/PLC/PLCService.cs    |   79 +++++++++++++++++++++++++
 Admin.NET/WCS.Application/Util/HttpService.cs  |   59 +++++++++++++++++++
 Admin.NET/WCS.Application/Model/TaskRequest.cs |   28 +++++++++
 3 files changed, 163 insertions(+), 3 deletions(-)

diff --git a/Admin.NET/WCS.Application/Model/TaskRequest.cs b/Admin.NET/WCS.Application/Model/TaskRequest.cs
index 0f41063..fc7a5c1 100644
--- a/Admin.NET/WCS.Application/Model/TaskRequest.cs
+++ b/Admin.NET/WCS.Application/Model/TaskRequest.cs
@@ -276,4 +276,32 @@
     public int TaskType { get; set; }
 }
 
+/// <summary>
+/// 绌烘墭鐩樺嚭搴�
+/// </summary>
+public class OutPalletModel
+{
+    /// <summary>
+    /// 鍑哄簱鍨涙暟
+    /// </summary>
+    public string Num { get; set; }
+    /// <summary>
+    /// 鍑哄簱鍙�
+    /// </summary>
+    public string OutMode { get; set; }
+}
+
+
+/// <summary>
+/// 鐢宠绌烘墭鍑哄簱WMS杩斿洖鐨勫疄浣�
+/// </summary>
+public class ResponseOutPallet
+{
+    public string StatusCode { get; set; }
+    public int Success { get; set; }
+
+    public string Message { get; set; }
+
+    public List<ResponseTasksModel> TaskList { get; set; }
+}
 
diff --git a/Admin.NET/WCS.Application/PLC/PLCService.cs b/Admin.NET/WCS.Application/PLC/PLCService.cs
index c9b3ec2..e0ef176 100644
--- a/Admin.NET/WCS.Application/PLC/PLCService.cs
+++ b/Admin.NET/WCS.Application/PLC/PLCService.cs
@@ -1345,20 +1345,95 @@
 
             #endregion
 
+            #region 鍙┖鎵樼洏璺�
             case "50":
                 // plc鐢宠绌烘墭
                 {
                     // 璋冪敤WMS绌烘墭鍑哄簱鎺ュ彛锛岃繑鍥炲嚭搴撲换鍔″瓨鍏ュ嚭搴撹〃
-
-                    // 鍐欏叆
+                    var strMsg = "";
+                    var http = new HttpService();
+                    strMsg = http.IssuePlnOutHouseWcs("1", "205");
+                    if (!strMsg.Contains("-1"))
+                    {
+                        // 鍐欏叆plc娴佺▼瀛�60
+                        var ret = plcConn.SetPlcDBValue(modDevice.PosType, modDevice.DbNumber, modDevice.WcsPos, "60");
+                    }
+                    else
+                    {
+                        // 鐢宠宸烽亾澶辫触锛丩ED鏄剧ず
+                        Log.Error(string.Format($"宸ヤ綅鍙凤細{modDevice.StationNum}鐢宠绌烘墭璺哄け璐�:{strMsg};"));
+                    }                    
                 }
                 break;
             case "80":
                 // 绌烘墭鐩樿泛宸插埌浣�
                 {
+                    // 璋冪敤wms浠诲姟鍑哄簱浠诲姟瀹屾垚
+                    // 鑾峰彇璺烘満鐐逛綅閰嶇疆
+                    var modPosTask = modDevice.listStation.FirstOrDefault(m => m.Text == "浠诲姟鍙�");
+                    var (res, val) = plcConn.GetPlcDBValue(PLCDataTypeEnum.String, modDevice.DbNumber, modPosTask.PlcPos);
+                    // 鏍规嵁浠诲姟鍙疯幏鍙栦换鍔′俊鎭�
+                    if (res.IsSucceed)
+                    {
+                        string tasknoVal = val.ToString();
+                        var modTask = _db.Queryable<WcsTask>().First(m => m.Status == TaskStatusEnum.Doing && m.TaskNo == tasknoVal && m.IsDelete == false);
+                        if (modTask == null)
+                        {
+                            Log.Error(string.Format($"宸ヤ綅鍙凤細{modDevice.StationNum}绌烘墭鐩樺埌杈撅紝鏈壘鍒板搴旂殑浠诲姟!浠诲姟鍙穥tasknoVal};"));
+                            break;
+                        }
+                        // 鍐欏叆plc娴佺▼瀛�90
+                        var ret = plcConn.SetPlcDBValue(modDevice.PosType, modDevice.DbNumber, modDevice.WcsPos, "90");
+                        if (ret.IsSucceed)
+                        {
+                            // 鏀瑰彉浠诲姟鐘舵��
+                            modTask.Status = TaskStatusEnum.Complete;
+                            modTask.FinishDate = DateTime.Now;
+                            _db.Updateable(modTask).ExecuteCommand();
 
+                            HubUtil.PublicTask(modTask.Adapt<WcsTaskOutput>());
+                            var modTaskMonitor = new WcsTaskMonitor()
+                            {
+                                TaskNo = modTask.TaskNo,
+                                PlcId = modDevice.Id,
+                                PlcName = modDevice.Text,
+                                PalletNo = modTask.PalletNo,
+                                Status = TaskStatusEnum.Complete,
+                                StartLocat = modTask.StartLocate,
+                                EndLocat = modTask.EndLocate,
+                                InteractiveMsg = $"浠诲姟瀹屾垚"
+                            };
+                            if (modTask.Origin == "WMS")
+                            {
+                                // 鍙嶉WMS
+                                var requestMode = new TaskRequestWMS()
+                                {
+                                    TaskNo = modTask.TaskNo,
+                                    PalletNo = modTask.PalletNo,
+                                    TaskType = ((int)TaskTypeEnum.Out).ToString(),
+                                    TaskStatus = ((int)TaskStatusEnum.Complete).ToString()
+                                };
+                                HttpService httpService = new HttpService();
+                                var modResponseTask = httpService.RequestTask(requestMode).Result;
+                                if (modResponseTask.StatusCode == 0)
+                                {
+                                    modTaskMonitor.InteractiveMsg = "浠诲姟瀹屾垚锛岃繑鍥炵粰WMS浠诲姟瀹屾垚";
+                                }
+                                else
+                                {
+                                    Log.Error(string.Format("浠诲姟鍙嶉澶辫触锛歋tatusCode锛歿0};Msg锛歿1}", modResponseTask.StatusCode, modResponseTask.Msg));
+                                }
+                            }
+                            // 鎻掑叆浜や簰鏃ュ織
+                            _db.Insertable(modTaskMonitor).ExecuteCommand();
+                            //涓嬪彂浠诲姟鏃ュ織
+                            HubUtil.PublicTaskMonitor(modTaskMonitor.Adapt<WcsTaskMonitorOutput>());
+                        }
+                    }                    
                 }
                 break;
+            #endregion
+
             default: break;
         }
 
diff --git a/Admin.NET/WCS.Application/Util/HttpService.cs b/Admin.NET/WCS.Application/Util/HttpService.cs
index 05ea89e..5295530 100644
--- a/Admin.NET/WCS.Application/Util/HttpService.cs
+++ b/Admin.NET/WCS.Application/Util/HttpService.cs
@@ -227,7 +227,6 @@
         }
 
         return returnStr;
-        
     }
 
 
@@ -269,4 +268,62 @@
         Log.Information("璋冪敤WMS鎺ュ彛鍙嶉婊″彇寮傚父鎺ュ彛" + result.ToJson());
         return result;
     }
+
+    /// <summary>
+    /// 璋冪敤WMS鎺ュ彛鐢宠绌烘墭璺哄嚭搴�
+    /// </summary>
+    /// <param name="Num"></param>
+    /// <param name="OutMode"></param>
+    /// <returns></returns>
+    public string IssuePlnOutHouseWcs(string Num,string OutMode)
+    {
+        string returnStr = "";
+
+        var model = new OutPalletModel()
+        {
+            Num = Num,//鍑哄簱璺烘暟
+            OutMode = OutMode//鍑哄簱鍙�
+        };
+        string url = Urls.WMSAddress + ":" + Urls.WMSPort;
+        var result = (url + "/api/DownAPi/IssuePlnOutHouseWcs").SetBody(model, "application/json", Encoding.UTF8).PostAsAsync<ResponseOutPallet>().Result;
+        Log.Information("璋冪敤WMS鎺ュ彛鍙嶉浠诲姟鎺ュ彛" + result.ToJson());
+
+        if (result.Success == 0)
+        {
+            foreach (var item in result.TaskList)
+            {
+                var taskUp = _db.Queryable<WcsTask>().First(m => m.IsDelete == false && m.TaskNo == item.TaskNo);
+                if (taskUp == null)
+                {
+                    var taskAdd = new WcsTask()
+                    {
+                        TaskNo = item.TaskNo,
+                        TaskType = TaskTypeEnum.Out,
+                        Status = TaskStatusEnum.Wait,
+                        //IsSuccess =TaskSuccessEnum.Success,
+                        Origin = "WMS",
+                        StartLocate = item.StartLocate,
+                        PalletNo = item.PalletNo,
+                        EndLocate = item.EndLocate,
+                        EndRoadway = item.EndRoadway
+                    };
+                    _db.Insertable(taskAdd).ExecuteCommand();
+                    HubUtil.PublicTask(taskAdd.Adapt<WcsTaskOutput>());
+                }
+                else
+                {
+                    taskUp.EndRoadway = item.EndRoadway;
+                    taskUp.EndLocate = item.EndLocate;
+                    _db.Updateable(taskUp).ExecuteCommand();
+                    HubUtil.PublicTask(taskUp.Adapt<WcsTaskOutput>());
+                }
+            }
+        }
+        else
+        {
+            returnStr = "-1:" + result.Message;
+            return returnStr;
+        }
+        return returnStr;
+    }
 }

--
Gitblit v1.8.0