From 19724b0969eb2f91b38efb262a6ef4de04d6b0c5 Mon Sep 17 00:00:00 2001
From: huangxiaoqiang <huangxiaoqiang@hnkhzn.com>
Date: 星期二, 14 十月 2025 12:07:58 +0800
Subject: [PATCH] 新增“有货状态”显示及数据处理逻辑支持在Home.vue和 LineComponent.vue中新增了“有货状态”显示功能,为 RGV 和堆垛机对象添加了 InStock属性。 修改了 Home.vue 的 created生命周期和 LineComponent.vue的 update 方法,增加了对 inStock数据的处理逻辑。删除了三个旧的二进制文件,新增了六个新的二进制文件,可能与项目构建或依赖更新相关。优化了任务分配和状态判断逻辑,确保任务执行更加准确和高效。

---
 项目代码/WCS/WIDESEAWCS_Server/WIDESEAWCS_QuartzJob/Service/DeviceInfoService.cs |  109 ++++++++++++++++++++++++++++++++++++++++++++++++++----
 1 files changed, 101 insertions(+), 8 deletions(-)

diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_QuartzJob/Service/DeviceInfoService.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_QuartzJob/Service/DeviceInfoService.cs"
index 7742cf6..6437d86 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_QuartzJob/Service/DeviceInfoService.cs"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_QuartzJob/Service/DeviceInfoService.cs"
@@ -20,6 +20,7 @@
 using Newtonsoft.Json;
 using SixLabors.ImageSharp.ColorSpaces;
 using System;
+using System.Collections;
 using System.Collections.Generic;
 using System.Linq;
 using System.Security.Claims;
@@ -231,7 +232,14 @@
                 {
                     CommonStackerCrane commonStackerCrane = (CommonStackerCrane)device;
 
-                    commonStackerCrane.SetValue(StackerCraneDBName.WorkType, Convert.ToSByte(2));
+                    //commonStackerCrane.SetValue(StackerCraneDBName.WorkType, Convert.ToSByte(2));
+                    DeviceProDTO? devicePro = commonStackerCrane.DeviceProDTOs.Where(x => x.DeviceChildCode == commonStackerCrane.DeviceCode && x.DeviceProParamName == "WorkType").FirstOrDefault();
+
+                    byte valueToWrite = 2;
+
+                    byte[] buffer = new byte[] { valueToWrite };
+
+                    commonStackerCrane.Communicator.Write(devicePro.DeviceProAddress, buffer);
                     return content.OK();
                 }
                 else
@@ -257,7 +265,77 @@
                 {
                     CommonStackerCrane commonStackerCrane = (CommonStackerCrane)device;
 
-                    commonStackerCrane.SetValue(StackerCraneDBName.WorkType, Convert.ToSByte(2));
+                    //commonStackerCrane.SetValue(StackerCraneDBName.WorkType, Convert.ToSByte(4));
+                    DeviceProDTO? devicePro = commonStackerCrane.DeviceProDTOs.Where(x => x.DeviceChildCode == commonStackerCrane.DeviceCode && x.DeviceProParamName == "WorkType").FirstOrDefault();
+
+                    byte valueToWrite = 4;
+
+                    byte[] buffer = new byte[] { valueToWrite };
+
+                    commonStackerCrane.Communicator.Write(devicePro.DeviceProAddress, buffer);
+                    return content.OK();
+                }
+                else
+                {
+                    return content.Error("鏈壘鍒拌澶囦俊鎭鑱旂郴IT");
+                }
+            }
+            catch (Exception ex)
+            {
+                return content.Error(ex.Message);
+            }
+        }
+        public WebResponseContent StackerDisconnected(string DeviceCode)
+        {
+            WriteLog.GetLog("鍫嗗灈鏈烘墜鍔ㄤ换鍔�").Write($"銆愪腑鏂懡浠ゃ�憑JsonConvert.SerializeObject(DeviceCode)}", "鍫嗗灈鏈烘墜鍔ㄤ换鍔�");
+            WebResponseContent content = new WebResponseContent();
+            try
+            {
+                IDevice? device = Storage.Devices.FirstOrDefault(x => x.DeviceCode == DeviceCode);
+
+                if (device != null)
+                {
+                    CommonStackerCrane commonStackerCrane = (CommonStackerCrane)device;
+                    DeviceProDTO? devicePro = commonStackerCrane.DeviceProDTOs.Where(x => x.DeviceChildCode == commonStackerCrane.DeviceCode && x.DeviceProParamName == "WorkType").FirstOrDefault();
+
+                    byte valueToWrite = 1;
+
+                    byte[] buffer = new byte[] { valueToWrite };
+
+                    commonStackerCrane.Communicator.Write(devicePro.DeviceProAddress, buffer);
+
+                    return content.OK();
+                }
+                else
+                {
+                    return content.Error("鏈壘鍒拌澶囦俊鎭鑱旂郴IT");
+                }
+            }
+            catch (Exception ex)
+            {
+                return content.Error(ex.Message);
+            }
+        }
+
+        public WebResponseContent StackerRecall(string DeviceCode)
+        {
+            WriteLog.GetLog("鍫嗗灈鏈烘墜鍔ㄤ换鍔�").Write($"銆愪腑鏂懡浠ゃ�憑JsonConvert.SerializeObject(DeviceCode)}", "鍫嗗灈鏈烘墜鍔ㄤ换鍔�");
+            WebResponseContent content = new WebResponseContent();
+            try
+            {
+                IDevice? device = Storage.Devices.FirstOrDefault(x => x.DeviceCode == DeviceCode);
+
+                if (device != null)
+                {
+                    CommonStackerCrane commonStackerCrane = (CommonStackerCrane)device;
+                    DeviceProDTO? devicePro = commonStackerCrane.DeviceProDTOs.Where(x => x.DeviceChildCode == commonStackerCrane.DeviceCode && x.DeviceProParamName == "WorkType").FirstOrDefault();
+
+                    byte valueToWrite = 144;
+
+                    byte[] buffer = new byte[] { valueToWrite };
+
+                    commonStackerCrane.Communicator.Write(devicePro.DeviceProAddress, buffer);
+
                     return content.OK();
                 }
                 else
@@ -314,19 +392,19 @@
 
         public int GetRowCode(int number)
         {
-            if (number == 1 || number == 15 || number == 11 || number == 19)
+            if (number == 1 || number == 15 || number == 11 || number == 18)
             {
                 return 1;
             }
-            else if (number == 2 || number == 5 || number == 8 || number == 12 || number == 16 || number == 20)
+            else if (number == 2 || number == 5 || number == 8 || number == 12 || number == 16 || number == 19)
             {
                 return 2;
             }
-            else if (number == 3 || number == 6 || number == 9 || number == 13 || number == 17 || number == 21)
+            else if (number == 3 || number == 6 || number == 9 || number == 13 || number == 17 || number == 20)
             {
                 return 3;
             }
-            else if (number == 4 || number == 7 || number == 10 || number == 14 || number == 18 || number == 22)
+            else if (number == 4 || number == 7 || number == 10 || number == 14 || number == 21)
             {
                 return 4;
             }
@@ -532,7 +610,7 @@
                         {
                             InStock = structs[2] == true ? "鏈夎揣" : "绌洪棽",
                             TaskNum = ConveyorLineTaskNum.ToString(),
-                            Alarm = AlarmInfo(ConveyorLineAlarm)
+                            Alarm = GetAlarm(ConveyorLineAlarm)
                         };
                         return content.OK(data:obj);
                     }
@@ -724,7 +802,22 @@
             }
         }
 
-        string AlarmInfo(uint Alarm) => Alarm switch
+        public string GetAlarm(uint value)
+        {
+            byte[] bytes = BitConverter.GetBytes(value);
+            BitArray bits = new BitArray(bytes);
+
+            for (int i = 0; i < bits.Length; i++)
+            {
+                if (bits[i])
+                {
+                    return AlarmInfo(i);
+                }
+            }
+            return "";
+        }
+
+        string AlarmInfo(int Alarm) => Alarm switch
         {
             0 => "鎬ュ仠",
             1 => "鍙橀鍣ㄦ姤璀�1",

--
Gitblit v1.9.3