From 28f223131f9b42769aa5204877aa0d972e169d41 Mon Sep 17 00:00:00 2001
From: hwh <332078369@qq.com>
Date: 星期三, 11 九月 2024 16:49:15 +0800
Subject: [PATCH] 空取货和满放货逻辑

---
 Admin.NET/WCS.Application/PLC/PLCService.cs |  124 ++++++++++++++++++++++++++++++++++++++++-
 1 files changed, 121 insertions(+), 3 deletions(-)

diff --git a/Admin.NET/WCS.Application/PLC/PLCService.cs b/Admin.NET/WCS.Application/PLC/PLCService.cs
index 26c39e3..3ebf90d 100644
--- a/Admin.NET/WCS.Application/PLC/PLCService.cs
+++ b/Admin.NET/WCS.Application/PLC/PLCService.cs
@@ -4,8 +4,10 @@
 using Furion.Logging;
 using IoTClient;
 using Microsoft.AspNetCore.SignalR;
+using Qiniu.Storage;
 using RazorEngine.Compilation.ImpromptuInterface.Dynamic;
 using SKIT.FlurlHttpClient.Wechat.TenpayV3.ExtendedSDK.Global.Models;
+using System;
 using System.Data;
 using System.Reflection.Emit;
 
@@ -143,7 +145,7 @@
                             .SetColumns(s => s.Status == TaskStatusEnum.Doing)
                             .Where(s => s.Id == modTask.Id)
                             .ExecuteCommand();
-
+                        _taskLogHubContext.Clients.All.PublicTask(modTask.Adapt<WcsTaskOutput>());
                         WcsTaskMonitor modInsertTaskMonitor;
                         if (string.IsNullOrEmpty(taskInfo.EndStation))
                         {
@@ -338,7 +340,7 @@
                                     modTask.Status = TaskStatusEnum.Complete;
                                     modTask.FinishDate = DateTime.Now;
                                     _db.Updateable(modTask).ExecuteCommand();
-
+                                    _taskLogHubContext.Clients.All.PublicTask(modTask.Adapt<WcsTaskOutput>());
                                     var modcTaskMonitor = new WcsTaskMonitor()
                                     {
                                         TaskNo = modTask.TaskNo,
@@ -516,12 +518,128 @@
                 break;
             case "843":
                 {
-
+                    //绌哄彇璐у紓甯�
+                    var modPosTask = modDevice.listStation.FirstOrDefault(s => s.Text == "浠诲姟鍙�");
+                    var (result, TaskNo) = plcConn.GetPlcDBValue(modPosTask.PosType, modDevice.DbNumber, modPosTask.PlcPos);
+                    if (!result.IsSucceed)
+                        break;
+                    string taskNo = Convert.ToString(TaskNo);
+                    var modTask = _db.Queryable<WcsTask>().First(s => s.TaskNo == taskNo && s.Status == TaskStatusEnum.Doing);
+                    if (modTask == null)
+                    {
+                        Log.Error($"銆愬爢鍨涙満銆戝綋鍓嶄换鍔″彿涓嶅瓨鍦ㄥ搴旂殑浠诲姟锛屼换鍔″彿锛歿modTask.TaskNo}");
+                        break;
+                    }
+                    var res = plcConn.SetPlcDBValue(modDevice.PosType, modDevice.DbNumber, modDevice.WcsPos, "844");
+                    if (!res.IsSucceed)
+                        break;
+                    modTask.Status = TaskStatusEnum.Exception;
+                    _db.Updateable(modTask).UpdateColumns(s => s.Status).ExecuteCommand();
+                    _taskLogHubContext.Clients.All.PublicTask(modTask.Adapt<WcsTaskOutput>());
+                    Log.Information($"銆愬爢鍨涙満銆憌cs浠诲姟鍙樻洿绌哄彇寮傚父锛屼换鍔″彿锛歿modTask.TaskNo}");
+                    var modTaskRequest = modTask.Adapt<TaskRequest>();
+                    HttpService httpService = new HttpService();
+                    var modResponseTask = httpService.RequestEmptyException(modTaskRequest).Result;
+                    if (modResponseTask.StatusCode == "0")
+                    {
+                        //璇锋眰鎴愬姛
+                        modTask.IsSuccess = TaskSuccessEnum.Success;
+                        _db.Updateable(modTask).UpdateColumns(s => s.IsSuccess).ExecuteCommand();
+                        //涓嬪彂浠诲姟鏃ュ織
+                        _taskLogHubContext.Clients.All.PublicTask(modTask.Adapt<WcsTaskOutput>());
+                    }
+                    else
+                    {
+                        //璇锋眰澶辫触
+                        modTask.IsSuccess = TaskSuccessEnum.Fail;
+                        modTask.Information = modResponseTask.Message;
+                        _db.Updateable(modTask).UpdateColumns(s => new { s.IsSuccess, s.Information }).ExecuteCommand();
+                        _taskLogHubContext.Clients.All.PublicTask(modTask.Adapt<WcsTaskOutput>());
+                    }
                 }
                 break;
             case "861":
                 {
+                    //婊℃斁璐у紓甯�
+                    var modPosTask = modDevice.listStation.FirstOrDefault(s => s.Text == "浠诲姟鍙�");
+                    var modPosPalletNo = modDevice.listStation.FirstOrDefault(s => s.Text == "鎵樼洏鍙�");
+                    var (result, TaskNo) = plcConn.GetPlcDBValue(modPosTask.PosType, modDevice.DbNumber, modPosTask.PlcPos);
+                    if (!result.IsSucceed)
+                        break;
+                    string taskNo = Convert.ToString(TaskNo);
+                    var modTask = _db.Queryable<WcsTask>().First(s => s.TaskNo == taskNo && s.Status == TaskStatusEnum.Doing);
+                    if (modTask == null)
+                    {
+                        Log.Error($"銆愬爢鍨涙満銆戝綋鍓嶄换鍔″彿涓嶅瓨鍦ㄥ搴旂殑浠诲姟锛屼换鍔″彿锛歿modTask.TaskNo}");
+                        break;
+                    }
+                    modTask.Status = TaskStatusEnum.Exception;
+                    _db.Updateable(modTask).UpdateColumns(s => s.Status).ExecuteCommand();
+                    _taskLogHubContext.Clients.All.PublicTask(modTask.Adapt<WcsTaskOutput>());
+                    Log.Information($"銆愬爢鍨涙満銆憌cs浠诲姟鍙樻洿婊″彇寮傚父锛屼换鍔″彿锛歿modTask.TaskNo}");
+                    var modTaskRequest = modTask.Adapt<TaskRequest>();
+                    HttpService httpService = new HttpService();
+                    var modResponseTask = httpService.RequestFullException(modTaskRequest).Result;
+                    if (modResponseTask.StatusCode == "0")
+                    {
+                        //淇敼浠诲姟涓烘鍦ㄦ墽琛�
+                        modTask.Status = TaskStatusEnum.Doing;
+                        _db.Updateable(modTask).UpdateColumns(s => s.Status).ExecuteCommand();
+                        // 璧峰鎺掑垪灞�
+                        var modPosRow = modDevice.listStation.FirstOrDefault(s => s.Text == "鍙栬揣鎺�");
+                        var modPosColumn = modDevice.listStation.FirstOrDefault(s => s.Text == "鍙栬揣鍒�");
+                        var modPosStorey = modDevice.listStation.FirstOrDefault(s => s.Text == "鍙栬揣灞�");
+                        // 鐩爣鏀捐揣宸ヤ綅
+                        var modPosEndRow = modDevice.listStation.FirstOrDefault(s => s.Text == "鏀捐揣鎺�");
+                        var modPosEndColumn = modDevice.listStation.FirstOrDefault(s => s.Text == "鏀捐揣鍒�");
+                        var modPosEndStorey = modDevice.listStation.FirstOrDefault(s => s.Text == "鏀捐揣灞�");
+                        string endLocat = modResponseTask.TaskList.EndLocate;
+                        string row = int.Parse(endLocat.Substring(0, 2)).ToString();
+                        string column = int.Parse(endLocat.Substring(2, 2)).ToString();
+                        string storey = int.Parse(endLocat.Substring(4, 2)).ToString();
 
+                        // 缁橮LC鍐欏叆浠诲姟鏁版嵁
+                        var listResult = new List<Result>();
+                        // 浠诲姟鍙锋墭鐩樺彿
+                        listResult.Add(plcConn.SetPlcDBValue(modPosTask.PosType, modDevice.DbNumber, modPosTask.PlcPos, modTask.TaskNo));
+                        listResult.Add(plcConn.SetPlcDBValue(modPosPalletNo.PosType, modDevice.DbNumber, modPosPalletNo.PlcPos, modTask.PalletNo));
+                        // 璧峰鎺掑垪灞�
+                        listResult.Add(plcConn.SetPlcDBValue(modPosRow.PosType, modDevice.DbNumber, modPosRow.PlcPos, "2"));
+                        listResult.Add(plcConn.SetPlcDBValue(modPosColumn.PosType, modDevice.DbNumber, modPosColumn.PlcPos, "100"));
+                        listResult.Add(plcConn.SetPlcDBValue(modPosStorey.PosType, modDevice.DbNumber, modPosStorey.PlcPos, "1"));
+                        listResult.Add(plcConn.SetPlcDBValue(modPosEndRow.PosType, modDevice.DbNumber, modPosEndRow.PlcPos, row));
+                        listResult.Add(plcConn.SetPlcDBValue(modPosEndColumn.PosType, modDevice.DbNumber, modPosEndColumn.PlcPos, column));
+                        listResult.Add(plcConn.SetPlcDBValue(modPosEndStorey.PosType, modDevice.DbNumber, modPosEndStorey.PlcPos, storey));
+                        // 鏄惁鍐欏叆鎴愬姛
+                        if (listResult.All(s => s.IsSucceed))
+                        {
+                            // 鍚戣泛鏈哄啓鍏ユ帶鍒舵祦绋嬪瓧
+                            var res = modDevice.PLCUtil.SetPlcDBValue(modDevice.PosType, modDevice.WcsPos, "862");
+                            var modcTaskMonitor = new WcsTaskMonitor()
+                            {
+                                TaskNo = modTask.TaskNo,
+                                PlcId = modDevice.Id,
+                                PlcName = modDevice.Text,
+                                PalletNo = modTask.PalletNo,
+                                Status = TaskStatusEnum.Complete,
+                                StartLocat = modDevice.StationNum,
+                                EndLocat = endLocat,
+                                InteractiveMsg = $"鍐欏叆鎸囦护锛歿modDevice.StationNum}宸ヤ綅====銆�" + endLocat + "鍌ㄤ綅鍦板潃!"
+                            };
+                            // 鎻掑叆浜や簰鏃ュ織
+                            _db.Insertable(modcTaskMonitor).ExecuteCommand();
+                            //涓嬪彂浠诲姟鏃ュ織
+                            _taskLogHubContext.Clients.All.PublicTaskMonitor(modcTaskMonitor.Adapt<WcsTaskMonitorOutput>());
+                        }
+
+                    }
+                    //else
+                    //{
+                    //    //璇锋眰澶辫触
+                    //    modTask.IsSuccess = TaskSuccessEnum.Fail;
+                    //    modTask.Information = modResponseTask.Message;
+                    //    _db.Updateable(modTask).UpdateColumns(s => new { s.IsSuccess, s.Information }).ExecuteCommand();
+                    //}
                 }
                 break;
             default:

--
Gitblit v1.8.0