yanjinhui
2025-06-09 9f3858dd723a69c56dbab909e0c7e6c5ef8b85a8
project/ºǫ́¹ÜÀí/WIDESEAWCS_Server/WIDESEAWCS_TelescopicService/ParametersService.cs
@@ -5,6 +5,7 @@
using System.Text;
using System.Threading.Tasks;
using AutoMapper;
using OfficeOpenXml.FormulaParsing.Excel.Functions.Text;
using SqlSugar;
using WIDESEAWCS_Core;
using WIDESEAWCS_Core.BaseRepository;
@@ -35,121 +36,172 @@
        /// <returns></returns>
        public WebResponseContent automation(string extendedState)
        {
            var messages = new List<string>();
            //string   message = "";
            try
            {
                for (int deptId = 1; deptId <= 5; deptId++)
                {
                    var devices = GetDevicesByDeptId(deptId);
                    if (devices == null)
                    try
                    {
                        Console.WriteLine($"DeptId={deptId} æœªæ‰¾åˆ°è®¾å¤‡ï¼Œè·³è¿‡");
                        continue;
                        var devices = GetDevicesByDeptId(deptId);
                        if (devices == null)
                        {
                            messages.Add($"DeptId={deptId} æœªæ‰¾åˆ°è®¾å¤‡ï¼Œè·³è¿‡");
                            continue;
                        }
                        var para = BaseDal.QueryData()
                            .Where(x => x.Deptid == deptId)
                            .OrderByDescending(x => x.CreateDate)
                            .FirstOrDefault();
                        if (para == null)
                        {
                            messages.Add($"DeptId={deptId} æœªæ‰¾åˆ°å‚数配置,跳过");
                            continue;
                        }
                        int ext = (int)para.ExtendSpeed;
                        int ret = (int)para.RetractionSpeed;
                        int liftPos = (int)para.LeftPosition;
                        int rightPos = (int)para.RightPosition;
                        try
                        {
                            if (devices.Value.left.Communicator.Read<bool>("M117"))
                            {
                                return new WebResponseContent { Status = false, Message = "现在正在进行中,等待操作完成" };
                            }
                        }
                        catch (Exception)
                        {
                        }
                        try
                        {
                            if (devices.Value.right.Communicator.Read<bool>("M117"))
                            {
                                return new WebResponseContent { Status = false, Message = "现在正在进行中,等待操作完成" };
                            }
                        }
                        catch (Exception)
                        {
                        }
                        if (extendedState == "伸出")
                        {
                        try
                        {
                        if (devices.Value.left.Communicator.Read<float>("D80")>= liftPos-5)//到达最大位置)
                        {
                                    messages.Add($"轨道站{deptId}左伸缩杆已到最大位置");
                        }
                        else
                        {
                                    devices.Value.left.Communicator.Write<int>("D1022", liftPos);//伸出位置
                                    devices.Value.left.Communicator.Write<int>("D1002", ext);//å·¦PLC自动动伸出缩回速度
                                    devices.Value.left.Communicator.Write<bool>("M102", true);//伸出按钮
                        }
                        }
                        catch { }
                        try
                        {
                        if (devices.Value.left.Communicator.Read<float>("D80") >=rightPos-5)
                        {
                                    messages.Add($"轨道站{deptId}右伸缩杆已到最大位置");
                        }
                        else
                        {
                                    devices.Value.right.Communicator.Write<int>("D1022", rightPos);
                                    devices.Value.right.Communicator.Write<int>("D1002", ret);
                            devices.Value.right.Communicator.Write<bool>("M102", true);
                        }                        }
                        catch { }
                }
                else if (extendedState == "缩回")
                {
                        try
                        {
                        if (devices.Value.left.Communicator.Read<bool>("M115")) //到达原点位
                        {
                                    messages.Add($"轨道站{deptId}左伸缩杆已到原点");
                        }
                        else
                        {
                                    devices.Value.left.Communicator.Write<int>("D1022", liftPos);//伸出位置
                                    devices.Value.left.Communicator.Write<int>("D1002", ext);//å·¦PLC自动伸=缩回出缩回速度
                            devices.Value.left.Communicator.Write<bool>("M103", true);//å·¦plc缩回按钮
                         }
                    }
                        catch { }
                    var para = BaseDal.QueryData()
                        .Where(x => x.Deptid == deptId)
                        .OrderByDescending(x => x.CreateDate)
                        .FirstOrDefault();
                        try
                        {
                        if (devices.Value.right.Communicator.Read<bool>("M115"))
                        {
                                    messages.Add($"轨道站{deptId}右伸缩杆已到原点");
                        }
                        else
                        {
                                    devices.Value.right.Communicator.Write<int>("D1022", rightPos);
                                    devices.Value.right.Communicator.Write<int>("D1002", ret);
                            devices.Value.right.Communicator.Write<bool>("M103", true);
                         }
                        }
                        catch { }
                }
                        else
                        {
                            return new WebResponseContent { Status = false, Message = "未知操作命令" };
                        }
                    if (para == null)
                    {
                        Console.WriteLine($"DeptId={deptId} æœªæ‰¾åˆ°å‚数配置,跳过");
                        continue;
                    }
                    int ext = (int)para.ExtendSpeed;
                    int ret = (int)para.RetractionSpeed;
                    if (extendedState == "伸出")
                    catch (Exception exDept)
                    {
                        devices.Value.left.Communicator.Write<int>("D500", ext);//伸出速度
                        devices.Value.left.Communicator.Write<bool>("M100", true);//伸出按钮
                        devices.Value.right.Communicator.Write<int>("D500", ext);
                        devices.Value.right.Communicator.Write<bool>("M100", true);
                        Console.WriteLine($"DeptId={deptId} ä¼¸å‡ºæ“ä½œï¼Œé€Ÿåº¦={ext}");
                    }
                    else if (extendedState == "缩回")
                    {
                        devices.Value.left.Communicator.Write<int>("D501", ret);//伸出速度
                        devices.Value.left.Communicator.Write<bool>("M101", true);//伸出按钮
                        devices.Value.right.Communicator.Write<int>("D501", ret);
                        devices.Value.right.Communicator.Write<bool>("M101", true);
                        Console.WriteLine($"DeptId={deptId} ç¼©å›žæ“ä½œï¼Œé€Ÿåº¦={ret}");
                    }
                    else
                    {
                        return new WebResponseContent { Status = false, Message = "未知的操作命令" };
                        messages.Add($"DeptId={deptId} å¼‚常:{exDept.Message}");
                    }
                }
                return new WebResponseContent { Status = true, Message = "全部设备操作完成" };
                return new WebResponseContent
                {
                    Status = true,
                    Message = messages.Count == 0 ? "执行成功" : "部分执行失败:" + string.Join(";", messages),
                    Data = messages
                };
            }
            catch (Exception ex)
            {
                return new WebResponseContent { Status = false, Message = $"操作异常:{ex.Message}" };
                return new WebResponseContent
                {
                    Status = false,
                    Message = $"自动控制异常:{ex.Message}"
                };
            }
        }
        /// <summary>
        /// æ‰‹åŠ¨æŽ§åˆ¶ï¼Œä¼¸ç¼©æ†çš„ç¼©å›žå’Œä¼¸å‡ºé€Ÿåº¦
        /// </summary>
        /// <param name="position">伸缩杆的位置(左右)</param>
        /// <param name="ExtendedState">伸/缩状态</param>
        /// <returns></returns>
        ///
        //public WebResponseContent ManualOperation(string position, string ExtendedState)
        //{
        //    try
        //    {
        //        //俩个plc左右各一个
        //        OtherDevice liftotherDevice = (OtherDevice)Storage.Devices.Find(x => x.DeviceCode == "SSG001");
        //        OtherDevice rightotherDevice = (OtherDevice)Storage.Devices.Find(x => x.DeviceCode == "SSG002");
        //        //找到Dt_Parameters中的最新一条数据
        //        var para = BaseDal.QueryData().OrderBy(x => x.CreateDate).FirstOrDefault();
        //        int ext = (int)para.ManualExtend;//自动伸出速度
        //        int ret = (int)para.ManualRetraction;//自动缩回速度
        //            if (position == "å·¦" && ExtendedState == "伸出")
        //            {
        //                var values = liftotherDevice.Communicator.Write<int>("D500", ext);//速度
        //    var button = liftotherDevice.Communicator.Write<bool>("M100", true);//伸出按钮
        //    Console.WriteLine($"{position}伸缩杆伸出{ext}");
        //            }
        //            if (position == "å·¦" && ExtendedState == "缩回")
        //            {
        //                var values = liftotherDevice.Communicator.Write<int>("D501", ret);
        //var button = liftotherDevice.Communicator.Write<bool>("M101", true);//缩回按钮
        //Console.WriteLine($"{position}伸缩杆缩回{ret}");
        //            }
        //        if (position == "右" && ExtendedState == "伸出")
        //        {
        //            var values = rightotherDevice.Communicator.Write<int>("D500", ext);//速度
        //            var button = rightotherDevice.Communicator.Write<bool>("M100", true);//伸出按钮
        //            Console.WriteLine($"{position}伸缩杆伸出{ext}");
        //        }
        //        if (position == "右" && ExtendedState == "缩回")
        //        {
        //            var values = rightotherDevice.Communicator.Write<int>("D501", ret);
        //            var button = rightotherDevice.Communicator.Write<bool>("M101", true);//缩回按钮
        //            Console.WriteLine($"{position}伸缩杆缩回{ret}");
        //        }
        //        return new WebResponseContent { Status = true, Message = "成功" };
        //    }
        //    catch (Exception ex)
        //    {
        //        return new WebResponseContent { Status = false, Message = ex.Message };
        //    }
        //}
@@ -161,58 +213,212 @@
        /// <param name="DeptId">股道号</param>
        /// <returns></returns>
        public WebResponseContent ManualOperation(string position, string ExtendedState,int DeptId)
                {
          {
            try
            {
                if (!int.TryParse(AppSettings.Get("DepartmentID"), out int deid))
                {
                    return new WebResponseContent { Status = false, Message = "配置项 DepartmentID æ— æ³•转换为整数" };
                }
                var devices = GetDevicesByDeptId(deid);
                var devices = GetDevicesByDeptId(DeptId);
                if (devices == null)
                    return new WebResponseContent { Status = false, Message = "设备未找到" };
                //俩个plc左右各一个
                //OtherDevice liftotherDevice = (OtherDevice)Storage.Devices.Find(x => x.DeviceCode == "SSG001");
                //OtherDevice rightotherDevice = (OtherDevice)Storage.Devices.Find(x => x.DeviceCode == "SSG002");
                var para = BaseDal.QueryData(x=>x.Deptid== DeptId).OrderByDescending(x => x.CreateDate).FirstOrDefault();
                if (para == null)
                    return new WebResponseContent { Status = false, Message = "参数未配置" };
                //找到Dt_Parameters中的最新一条数据根据当前的deid
                var para = BaseDal.QueryData().Where(x => x.Deptid == deid).OrderByDescending(x => x.CreateDate).FirstOrDefault();
                int ext = (int)para.ManualExtend;//å·¦PLC手动伸出缩回速度
                int ret = (int)para.ManualRetraction;//右PLC手动伸出缩回速度
                int liftPosition = (int)para.LeftPosition;//左伸出位置
                int rigtpostition = (int)para.RightPosition;//右伸出位置
                //bool canLeft = true,
                // canRight = true;
                string message = "";
                int ext = (int)para.ExtendSpeed;
                int ret = (int)para.RetractionSpeed;
                try
                {
                    if (devices.Value.left.Communicator.Read<bool>("M117")) //默认是flase
                    {
                        return new WebResponseContent { Status = true, Message = "现在正在进行中,等待操作完成" };
                    }
                }
                catch (Exception)
                {
                }
                try
                {
                    if (devices.Value.right.Communicator.Read<bool>("M117"))
                    {
                        return new WebResponseContent { Status = false, Message = "现在正在进行中,等待操作完成" };
                    }
                }
                catch (Exception)
                {
                }
                if (position == "å·¦" && ExtendedState == "伸出")
                {
                    devices.Value.left.Communicator.Write<int>("D500", ext);//伸出速度
                    devices.Value.left.Communicator.Write<bool>("M100", true);//伸出按钮
                    Console.WriteLine($"{position}伸缩杆手动伸出{ext}");
                    if (devices.Value.left.Communicator.Read<float>("D80") >= liftPosition - 5) //到达目标位置
                    {
                        message += "左伸缩杆到达目标位置;";
                    }
                    else
                    {
                        devices.Value.left.Communicator.Write<int>("D1004", liftPosition);//左伸出位置
                        devices.Value.left.Communicator.Write<int>("D1000", ext);//å·¦PLC手动伸出缩回速度
                        devices.Value.left.Communicator.Write<bool>("M100", true);//伸出按钮
                        Thread.Sleep(100); // ç­‰å¾…100ms(模拟按钮按下)
                        devices.Value.left.Communicator.Write<bool>("M100", false); // é‡Šæ”¾æŒ‰é’®
                        Console.WriteLine($"{position}伸缩杆手动伸出{ext}");
                    }
                }
                else if (position == "å·¦" && ExtendedState == "缩回")
                {
                    devices.Value.left.Communicator.Write<int>("D501", ret);//缩回速度
                    devices.Value.left.Communicator.Write<bool>("M101", true);
                    Console.WriteLine($"{position}伸缩杆手动缩回{ret}");
                    if (devices.Value.left.Communicator.Read<bool>("M115"))//缩回的时候判断)
                    {
                        message += "å·¦PLC已到原点;";
                    }
                    else
                    {
                        devices.Value.left.Communicator.Write<int>("D1004", liftPosition);//伸出位置
                        devices.Value.left.Communicator.Write<int>("D1000", ext);//å·¦PLC手动伸出缩回速度
                        devices.Value.left.Communicator.Write<bool>("M101", true);
                        Thread.Sleep(100); // ç­‰å¾…100ms(模拟按钮按下)
                        devices.Value.left.Communicator.Write<bool>("M101", false); // é‡Šæ”¾æŒ‰é’®
                        Console.WriteLine($"{position}伸缩杆手动缩回{ext}");
                    }
                }
                else if (position == "右" && ExtendedState == "伸出")
                if (position == "右" && ExtendedState == "伸出")
                {
                    devices.Value.right.Communicator.Write<int>("D500", ext);
                    devices.Value.right.Communicator.Write<bool>("M100", true);
                    Console.WriteLine($"{position}伸缩杆手动伸出{ext}");
                    if (devices.Value.right.Communicator.Read<float>("D80") >= rigtpostition - 5)
                    {
                        message += "右伸缩杆到达目标位置;";
                    }
                    else
                    {
                        devices.Value.right.Communicator.Write<int>("D1004", rigtpostition);//右伸出位置
                        devices.Value.right.Communicator.Write<int>("D1000", ret);//右PLC手动伸出缩回速度
                        devices.Value.right.Communicator.Write<bool>("M100", true);
                        Thread.Sleep(100); // ç­‰å¾…100ms(模拟按钮按下)
                        devices.Value.right.Communicator.Write<bool>("M100", false); // é‡Šæ”¾æŒ‰é’®
                        Console.WriteLine($"{position}伸缩杆手动伸出{ret}");
                    }
                }
                else if (position == "右" && ExtendedState == "缩回")
                {
                    devices.Value.right.Communicator.Write<int>("D501", ret);
                    devices.Value.right.Communicator.Write<bool>("M101", true);
                    Console.WriteLine($"{position}伸缩杆手动缩回{ret}");
                    if (devices.Value.right.Communicator.Read<bool>("M115"))
                    {
                        message += "右伸缩杆已到原点;";
                    }
                    else
                    {
                        devices.Value.right.Communicator.Write<int>("D1004", rigtpostition);//伸出位置
                        devices.Value.right.Communicator.Write<int>("D1000", ret);//右PLC手动伸出缩回速度
                        devices.Value.right.Communicator.Write<bool>("M101", true);
                        Thread.Sleep(100); // ç­‰å¾…100ms(模拟按钮按下)
                        devices.Value.right.Communicator.Write<bool>("M101", false); // é‡Šæ”¾æŒ‰é’®
                        Console.WriteLine($"{position}伸缩杆手动缩回{ret}");
                    }
                }
                else
                return new WebResponseContent
                {
                    return new WebResponseContent { Status = false, Message = "状态参数错误" };
                }
                return new WebResponseContent { Status = true, Message = "成功" };
                    Status = true,
                    Message = string.IsNullOrEmpty(message) ? "执行成功" : $"{message}",
                    Data = new
                    {
                        ManualExtend = ext,
                        ManualRetraction = ret,
                        message
                    }
                };
            }
            catch (Exception ex)
            {
                return new WebResponseContent { Status = false, Message = ex.Message };
            }
        }
        /// <summary>
        ///当自动伸出需要暂停时,暂停按钮
        /// </summary>
        /// <returns></returns>
        public WebResponseContent PauseButton(int deptid)
        {
            try
            {
                //根据int.TryParse(AppSettings.Get("DepartmentID")读取到当前是轨道几,所有人都只能操作当前
                var devices = GetDevicesByDeptId(deptid);
                try
                {
                    devices.Value.left.Communicator.Write<bool>("M104", true);
                }
                catch (Exception)
                {
                    throw;
                }
                try
                {
                    devices.Value.right.Communicator.Write<bool>("M104", true);
                }
                catch (Exception)
                {
                    throw;
                }
                return new WebResponseContent { Status = true, Message = "暂停成功", Data = devices };
            }
            catch (Exception ex)
            {
                return new WebResponseContent { Status = false, Message = ex.Message };
            }
        }
        /// <summary>
        /// ä¼¸ç¼©æ†å½“前位置(这个没有用)
        /// <param name="deptid">轨道站号</param>
        public WebResponseContent CurrentLocation(int deptid)
        {
            try
            {
                var devices = GetDevicesByDeptId(deptid);
                if (devices == null)
                    return new WebResponseContent { Status = false, Message = "设备未找到" };
                var deviceslift = devices.Value.left.Communicator.Read<float>("D80");
                var devicesright = devices.Value.right.Communicator.Read<float>("D80");
                Console.WriteLine($"当前左右伸缩杆返回速度分别为为{deviceslift}");
                return new WebResponseContent
                {
                    Status = true,
                    Data = new { lift = deviceslift, Right = devicesright }
                };
            }
            catch (Exception ex)
            {
                return new WebResponseContent { Status=false,Message=ex.Message};
            }
        }
@@ -238,6 +444,7 @@
            return (left, right);
        }
    }
}