yanjinhui
7 天以前 b9c76ce85e533250cd36de670146530f970859e7
ÏîÄ¿´úÂë/ºó¶Ë/WCS/WIDESEAWCS_Server/WIDESEAWCS_TelescopicService/ParametersService.cs
@@ -5,6 +5,7 @@
using System.Text;
using System.Threading.Tasks;
using AutoMapper;
using OfficeOpenXml.FormulaParsing.Excel.Functions.DateTime;
using OfficeOpenXml.FormulaParsing.Excel.Functions.Text;
using SqlSugar;
using WIDESEAWCS_Core;
@@ -24,30 +25,46 @@
    {
        public IRepository<Dt_Parameters> Repository => BaseDal;
        private readonly IRepository<Sys_User> _user;
        private readonly IRepository<Dt_AlarmResetHsy> _alarm;
        private readonly IRepository<Dt_CustomIPaddress> _cunstomip;
        public ParametersService(IRepository<Dt_Parameters> BaseDal, IRepository<Sys_User> user) : base(BaseDal)
        public ParametersService(IRepository<Dt_Parameters> BaseDal, IRepository<Sys_User> user, IRepository<Dt_AlarmResetHsy> alarm, IRepository<Dt_CustomIPaddress> cunstomip) : base(BaseDal)
        {
            _user = user;
            _user = user;
            _alarm = alarm;
            _cunstomip = cunstomip;
        }
        /// <summary>
        /// è‡ªåŠ¨æŽ§åˆ¶ä¼¸ç¼©æ†çš„ä¼¸å‡ºå’Œç¼©å›žé€Ÿåº¦
        /// è‡ªåŠ¨æŽ§åˆ¶è­¦æƒ•æœºæž„çš„ä¼¸å‡ºå’Œç¼©å›žé€Ÿåº¦
        /// </summary>
        /// <param name="ExtendedState">伸/出状态</param>
        /// <returns></returns>
        public WebResponseContent automation(string ExtendedState)
        public WebResponseContent automation(string ExtendedState, string LocalIP)
        {
            
            try
            {
                //根据int.TryParse(AppSettings.Get("DepartmentID")读取到当前是轨道几,所有人都只能操作当前
                if (!int.TryParse(AppSettings.Get("DepartmentID"), out int deid))
                ////根据int.TryParse(AppSettings.Get("DepartmentID")读取到当前是轨道几,所有人都只能操作当前
                //if (!int.TryParse(AppSettings.Get("DepartmentID"), out int deid))
                //{
                //    return new WebResponseContent { Status = false, Message = "配置项 DepartmentID æ— æ³•转换为整数" };
                //};
                //var devices = GetDevicesByDeptId(deid);
                //先查询设备ip配置表(Dt_CustomIPaddress),看是否有配置,没有就提示他配置
                var customip=_cunstomip.QueryData(x=>x.IPaddress==LocalIP).FirstOrDefault();
                if (customip == null)
                {
                    return new WebResponseContent { Status = false, Message = "配置项 DepartmentID æ— æ³•转换为整数" };
                };
                    return new WebResponseContent { Status = false, Message = "你还没有配置该轨道站的IP地址,请先配置在操作" };
                }
                var deid = customip.StationID;
                var devices = GetDevicesByDeptId(deid);
                //找到Dt_Parameters中的最新一条数据
                var para = BaseDal.QueryData().Where(x => x.Deptid == deid).OrderByDescending(x => x.CreateDate).FirstOrDefault();
@@ -60,8 +77,16 @@
                int rigtpostition = (int)para.RightPosition;//右伸出位置
                string message = "";
                var alarm = _alarm.QueryData(x => x.ResetStatus == true && x.Deptid == deid && !x.AlarmContent.Contains("障碍"));  // æŽ’除 AlarmContent åŒ…含 "障碍s" çš„记录.ToList();
                if (alarm.Count > 0)
                {
                    return new WebResponseContent { Status = true, Message = "警惕机构报警,请先复位" };
                }
                try
                {
                    if (devices.Value.left.Communicator.Read<bool>("M117"))
                    {
                        
@@ -74,6 +99,8 @@
                }
                try
                {
                    if (devices.Value.right.Communicator.Read<bool>("M117"))
                    {
                        return new WebResponseContent { Status = true, Message = "现在正在进行中,等待操作完成" };
@@ -91,11 +118,11 @@
                        {
                        if (devices.Value.left.Communicator.Read<float>("D80")>= liftPosition-5)//到达最大位置)
                        {
                            message += "左伸缩杆到达目标位置;";
                            message += "左警惕机构到达目标位置;";
                        }
                        else
                        {
                            devices.Value.left.Communicator.Write<int>("D1022", liftPosition);//伸出位置
                            devices.Value.left.Communicator.Write<int>("D1004", liftPosition);//伸出位置
                            devices.Value.left.Communicator.Write<int>("D1002", ext);//å·¦PLC自动动伸出缩回速度
                            devices.Value.left.Communicator.Write<bool>("M102", true);//伸出按钮
                            
@@ -107,11 +134,11 @@
                        {
                        if (devices.Value.right.Communicator.Read<float>("D80") >= rigtpostition-5)
                        {
                            message += "右伸缩杆到达目标位置;";
                            message += "右警惕机构到达目标位置;";
                        }
                        else
                        {
                            devices.Value.right.Communicator.Write<int>("D1022", rigtpostition);
                            devices.Value.right.Communicator.Write<int>("D1004", rigtpostition);
                            devices.Value.right.Communicator.Write<int>("D1002", ret);
                            devices.Value.right.Communicator.Write<bool>("M102", true);
                            
@@ -126,11 +153,11 @@
                        {
                        if (devices.Value.left.Communicator.Read<bool>("M115")) //到达原点位
                        {
                            message += "左伸缩杆已到原点;";
                            message += "左警惕机构已到原点;";
                        }
                        else
                        {
                            devices.Value.left.Communicator.Write<int>("D1022", liftPosition);
                            //devices.Value.left.Communicator.Write<int>("D1004", liftPosition);
                            devices.Value.left.Communicator.Write<int>("D1002", ext);//å·¦PLC自动伸=缩回出缩回速度
                            devices.Value.left.Communicator.Write<bool>("M103", true);//å·¦plc缩回按钮
                            
@@ -144,11 +171,11 @@
                        {
                        if (devices.Value.right.Communicator.Read<bool>("M115"))
                        {
                            message += "右伸缩杆已到原点;";
                            message += "右警惕机构已到原点;";
                        }
                        else
                        {
                            devices.Value.right.Communicator.Write<int>("D1022", rigtpostition);
                            //devices.Value.right.Communicator.Write<int>("D1004", rigtpostition);
                            devices.Value.right.Communicator.Write<int>("D1002", ret);
                            devices.Value.right.Communicator.Write<bool>("M103", true);
                            
@@ -184,20 +211,22 @@
        /// <summary>
        /// æ‰‹åŠ¨æŽ§åˆ¶ï¼Œä¼¸ç¼©æ†çš„ç¼©å›žå’Œä¼¸å‡ºé€Ÿåº¦
        /// æ‰‹åŠ¨æŽ§åˆ¶ï¼Œè­¦æƒ•æœºæž„çš„ç¼©å›žå’Œä¼¸å‡ºé€Ÿåº¦
        /// </summary>
        /// <param name="position">伸缩杆的位置(左右)</param>
        /// <param name="position">警惕机构的位置(左右)</param>
        /// <param name="ExtendedState">伸/缩状态</param>
        /// <returns></returns>
        /// 
        public WebResponseContent ManualOperation(string position, string ExtendedState)
        public WebResponseContent ManualOperation(string position, string ExtendedState, string LocalIP)
        {
            try
            {
                if (!int.TryParse(AppSettings.Get("DepartmentID"), out int deid))
                var customip = _cunstomip.QueryData(x => x.IPaddress == LocalIP).FirstOrDefault();
                if (customip == null)
                {
                    return new WebResponseContent { Status = false, Message = "配置项 DepartmentID æ— æ³•转换为整数" };
                    return new WebResponseContent { Status = false, Message = "你还没有配置该轨道站的IP地址,请先配置在操作" };
                }
                var deid = customip.StationID;
                var devices = GetDevicesByDeptId(deid);
                //俩个plc左右各一个
@@ -213,9 +242,20 @@
                //bool canLeft = true,
                // canRight = true;
                string message = "";
                var alarm = _alarm.QueryData(x => x.ResetStatus == true && x.Deptid == deid && !x.AlarmContent.Contains("障碍"));  // æŽ’除 AlarmContent åŒ…含 "障碍s" çš„记录.ToList();
                if (alarm.Count > 0)
                {
                    return new WebResponseContent { Status = true, Message = "警惕机构报警,请先复位" };
                }
                try
                {
                    //var alarmSignals = new[] { "M109", "M111", "M110", "M120" };
                    //if (alarmSignals.Any(signal => devices.Value.left.Communicator.Read<bool>(signal)))
                    //{
                    //    return new WebResponseContent { Status = true, Message = "警惕机构报警,请先复位" };
                    //}
                    if (devices.Value.left.Communicator.Read<bool>("M117")) //默认是flase 
                    {
@@ -228,6 +268,8 @@
                }
                try
                {
                    if (devices.Value.right.Communicator.Read<bool>("M117"))
                    {
                        return new WebResponseContent { Status = true, Message = "现在正在进行中,等待操作完成" };
@@ -241,7 +283,7 @@
                {
                    if (devices.Value.left.Communicator.Read<float>("D80") >= liftPosition - 5) //到达目标位置
                    {
                        message += "左伸缩杆到达目标位置;";
                        message += "左警惕机构到达目标位置;";
                    }
                    else
                    {
@@ -252,7 +294,7 @@
                        devices.Value.left.Communicator.Write<bool>("M100", false); // é‡Šæ”¾æŒ‰é’®
                        
                        Console.WriteLine($"{position}伸缩杆手动伸出{ext}");
                        Console.WriteLine($"{position}警惕机构手动伸出{ext}");
                    }
                }
@@ -260,7 +302,7 @@
                {
                    if (devices.Value.left.Communicator.Read<bool>("M115"))//缩回的时候判断) 
                    {
                        message += "左伸缩杆已到原点;";
                        message += "左警惕机构已到原点;";
                    }
                    else
                    {
@@ -269,7 +311,7 @@
                        devices.Value.left.Communicator.Write<bool>("M101", true);
                        Thread.Sleep(100); // ç­‰å¾…100ms(模拟按钮按下)
                        devices.Value.left.Communicator.Write<bool>("M101", false); // é‡Šæ”¾æŒ‰é’®
                        Console.WriteLine($"{position}伸缩杆手动缩回{ext}");
                        Console.WriteLine($"{position}警惕机构手动缩回{ext}");
                    }
                }
@@ -278,7 +320,7 @@
                {
                    if (devices.Value.right.Communicator.Read<float>("D80") >= rigtpostition - 5)
                    {
                        message += "右伸缩杆到达目标位置;";
                        message += "右警惕机构到达目标位置;";
                    }
                    else
                    {
@@ -287,7 +329,7 @@
                        devices.Value.right.Communicator.Write<bool>("M100", true);
                        Thread.Sleep(100); // ç­‰å¾…100ms(模拟按钮按下)
                        devices.Value.right.Communicator.Write<bool>("M100", false); // é‡Šæ”¾æŒ‰é’®
                        Console.WriteLine($"{position}伸缩杆手动伸出{ret}");
                        Console.WriteLine($"{position}警惕机构手动伸出{ret}");
                    }
@@ -296,7 +338,7 @@
                {
                    if (devices.Value.right.Communicator.Read<bool>("M115"))
                    {
                        message += "右伸缩杆已到原点;";
                        message += "右警惕机构已到原点;";
                    }
                    else
                    {
@@ -305,7 +347,7 @@
                        devices.Value.right.Communicator.Write<bool>("M101", true);
                        Thread.Sleep(100); // ç­‰å¾…100ms(模拟按钮按下)
                        devices.Value.right.Communicator.Write<bool>("M101", false); // é‡Šæ”¾æŒ‰é’®
                        Console.WriteLine($"{position}伸缩杆手动缩回{ret}");
                        Console.WriteLine($"{position}警惕机构手动缩回{ret}");
                    }
                }
@@ -336,39 +378,46 @@
        /// <summary>
        /// æ ¹æ®ç”¨æˆ·æ·»åŠ é€Ÿåº¦
        /// æ ¹æ®å½“前机械ip地址来添加速度
        /// </summary>
        /// <param name="entity"></param>
        /// <returns></returns>
        public  WebResponseContent AddSpeed(SpeedDTO entity)
        public  WebResponseContent AddSpeed(SpeedDTO entity,string LocalIP)
        {
            try
            {
                // èŽ·å–å½“å‰ç™»å½•ç”¨æˆ·
                var user = _user.QueryData(x => x.UserName == entity.account).FirstOrDefault();
               // åˆ¤æ–­ï¼šå¦‚果不是管理员 && Dept_Id ä¸ºç©ºï¼Œåˆ™æç¤ºé”™è¯¯
                if (user.UserName != "admin" && user.Dept_Id == null)
                // // èŽ·å–å½“å‰ç™»å½•ç”¨æˆ·
                // var user = _user.QueryData(x => x.UserName == entity.account).FirstOrDefault();
                //// åˆ¤æ–­ï¼šå¦‚果不是管理员 && Dept_Id ä¸ºç©ºï¼Œåˆ™æç¤ºé”™è¯¯
                // if (user.UserName != "admin" && user.Dept_Id == null)
                // {
                //     return new WebResponseContent { Status = false, Message = "你的账号没有设置轨道站号,无法添加,请联系管理员" };
                // }
                //var dept = user.Dept_Id;
                ////  èŽ·å–é…ç½®æ–‡ä»¶ä¸­çš„ DepartmentID(管理员专用)
                //if (!int.TryParse(AppSettings.Get("DepartmentID"), out int deid))
                //{
                //    return new WebResponseContent
                //    {
                //        Status = false,
                //        Message = "配置项 DepartmentID æ— æ³•转换为整数"
                //    };
                //}
                //// åˆ¤æ–­æ˜¯å¦ä¸ºç®¡ç†å‘˜è´¦å·
                //bool isAdmin = user?.UserName?.Equals("admin") == true; //如果当前用户不为空,且用户名是 "admin",就认为这个用户是管理员
                //去读取对应设备的ip地址
                var customip = _cunstomip.QueryData(x => x.IPaddress == LocalIP).FirstOrDefault();
                if (customip == null)
                {
                    return new WebResponseContent { Status = false, Message = "你的账号没有设置轨道站号,无法添加,请联系管理员" };
                    return new WebResponseContent { Status = false, Message = "你还没有配置该轨道站的IP地址,请先配置在操作" };
                }
                var dept = user.Dept_Id;
                var deid = customip.StationID;
                //  èŽ·å–é…ç½®æ–‡ä»¶ä¸­çš„ DepartmentID(管理员专用)
                if (!int.TryParse(AppSettings.Get("DepartmentID"), out int deid))
                {
                    return new WebResponseContent
                    {
                        Status = false,
                        Message = "配置项 DepartmentID æ— æ³•转换为整数"
                    };
                }
                // åˆ¤æ–­æ˜¯å¦ä¸ºç®¡ç†å‘˜è´¦å·
                bool isAdmin = user?.UserName?.Equals("admin") == true; //如果当前用户不为空,且用户名是 "admin",就认为这个用户是管理员
                // æ ¹æ®æ˜¯å¦æ˜¯ç®¡ç†å‘˜å†³å®šä½¿ç”¨å“ªä¸ª Deptid
                var parmet = new Dt_Parameters
                {
                    ExtendSpeed = entity.ExtendSpeed,
@@ -376,8 +425,9 @@
                    ManualExtend = entity.ManualExtend,
                    ManualRetraction = entity.ManualRetraction,
                    LeftPosition = entity.LeftPosition,
                    RightPosition = entity.RightPosition,
                    Deptid = isAdmin ? deid : dept.GetValueOrDefault()//如果当前用户是管理员,就用配置文件中的 DepartmentID,否则用传入的 entity å‚数中的 Deptid
                    RightPosition = entity.RightPosition,
                    //Deptid = isAdmin ? deid : dept.GetValueOrDefault()//如果当前用户是管理员,就用配置文件中的 DepartmentID,否则用传入的 entity å‚数中的 Deptid
                    Deptid = deid
                };
                // æ·»åŠ æ•°æ®
                AddData(parmet);
@@ -402,16 +452,24 @@
        ///当自动伸出需要暂停时,暂停按钮
        /// </summary>
        /// <returns></returns>
        public WebResponseContent PauseButton()
        public WebResponseContent PauseButton(string LocalIP)
        {
            try
            {
                //根据int.TryParse(AppSettings.Get("DepartmentID")读取到当前是轨道几,所有人都只能操作当前
                if (!int.TryParse(AppSettings.Get("DepartmentID"), out int deid))
                ////根据int.TryParse(AppSettings.Get("DepartmentID")读取到当前是轨道几,所有人都只能操作当前
                //if (!int.TryParse(AppSettings.Get("DepartmentID"), out int deid))
                //{
                //    return new WebResponseContent { Status = false, Message = "配置项 DepartmentID æ— æ³•转换为整数" };
                //};
                //var devices = GetDevicesByDeptId(deid);
                var customip = _cunstomip.QueryData(x => x.IPaddress == LocalIP).FirstOrDefault();
                if (customip == null)
                {
                    return new WebResponseContent { Status = false, Message = "配置项 DepartmentID æ— æ³•转换为整数" };
                };
                    return new WebResponseContent { Status = false, Message = "你还没有配置该轨道站的IP地址,请先配置在操作" };
                }
                var deid = customip.StationID;
                var devices = GetDevicesByDeptId(deid);
                try
                {
                    devices.Value.left.Communicator.Write<bool>("M104", true);
@@ -443,18 +501,24 @@
        /// <summary>
        /// èŽ·å–å½“å‰ç¨‹åºæœ€æ–°çš„ä¼¸ç¼©æ†é€Ÿåº¦
        /// èŽ·å–å½“å‰ç¨‹åºæœ€æ–°çš„è­¦æƒ•æœºæž„é€Ÿåº¦
        /// </summary>
        /// <returns></returns>
        public WebResponseContent BackfillSpeed()
        public WebResponseContent BackfillSpeed(string LocalIP)
        {
            try
            {
                if (!int.TryParse(AppSettings.Get("DepartmentID"), out int deid))
                {
                    return new WebResponseContent { Status = false, Message = "配置项 DepartmentID æ— æ³•转换为整数" };
                //if (!int.TryParse(AppSettings.Get("DepartmentID"), out int deid))
                //{
                //    return new WebResponseContent { Status = false, Message = "配置项 DepartmentID æ— æ³•转换为整数" };
                //}
                var customip = _cunstomip.QueryData(x => x.IPaddress == LocalIP).FirstOrDefault();
                if (customip == null)
                {
                    return new WebResponseContent { Status = false, Message = "你还没有配置该轨道站的IP地址,请先配置在操作" };
                }
                var deid = customip.StationID;
                var para = BaseDal.QueryData().Where(x => x.Deptid == deid).OrderByDescending(x => x.CreateDate).FirstOrDefault();
                if (para == null)
                {
@@ -470,7 +534,7 @@
        }
        /// <summary>
        /// èŽ·å–å½“å‰ä¼¸ç¼©æ†çš„ä½ç½®(自动)
        /// èŽ·å–å½“å‰è­¦æƒ•æœºæž„çš„ä½ç½®(自动)
        /// </summary>
        /// <param name="ExtendedState"></param>
        /// <returns></returns>
@@ -488,7 +552,7 @@
            
                    var deviceslift = devices.Value.left.Communicator.Read<float>("D80");
                    var devicesright = devices.Value.right.Communicator.Read<float>("D80");
                    Console.WriteLine($"当前左右伸缩杆返回速度分别为为{deviceslift}");
                    Console.WriteLine($"当前左右警惕机构返回速度分别为为{deviceslift}");
             
                return new WebResponseContent