using System; using System.Collections.Generic; using System.DirectoryServices; using System.Linq; using System.Text; using System.Threading.Tasks; using AutoMapper; using SqlSugar; using WIDESEAWCS_Core; using WIDESEAWCS_Core.BaseRepository; using WIDESEAWCS_Core.BaseServices; using WIDESEAWCS_Core.Helper; using WIDESEAWCS_ITelescopicService; using WIDESEAWCS_Model.Models; using WIDESEAWCS_QuartzJob; namespace WIDESEAWCS_TelescopicService { public class ParametersService : ServiceBase>, IParametersService { public IRepository Repository => BaseDal; private readonly IRepository _user; public ParametersService(IRepository BaseDal, IRepository user) : base(BaseDal) { _user = user; } /// /// 自动控制伸缩杆的伸出和缩回速度(一次性控制所有的) /// /// 伸/出状态 /// public WebResponseContent automation(string extendedState) { try { for (int deptId = 1; deptId <= 5; deptId++) { var devices = GetDevicesByDeptId(deptId); if (devices == null) { Console.WriteLine($"DeptId={deptId} 未找到设备,跳过"); continue; } var para = BaseDal.QueryData() .Where(x => x.Deptid == deptId) .OrderByDescending(x => x.CreateDate) .FirstOrDefault(); if (para == null) { Console.WriteLine($"DeptId={deptId} 未找到参数配置,跳过"); continue; } int ext = (int)para.ExtendSpeed; int ret = (int)para.RetractionSpeed; if (extendedState == "伸出") { devices.Value.left.Communicator.Write("D500", ext);//伸出速度 devices.Value.left.Communicator.Write("M100", true);//伸出按钮 devices.Value.right.Communicator.Write("D500", ext); devices.Value.right.Communicator.Write("M100", true); Console.WriteLine($"DeptId={deptId} 伸出操作,速度={ext}"); } else if (extendedState == "缩回") { devices.Value.left.Communicator.Write("D501", ret);//伸出速度 devices.Value.left.Communicator.Write("M101", true);//伸出按钮 devices.Value.right.Communicator.Write("D501", ret); devices.Value.right.Communicator.Write("M101", true); Console.WriteLine($"DeptId={deptId} 缩回操作,速度={ret}"); } else { return new WebResponseContent { Status = false, Message = "未知的操作命令" }; } } return new WebResponseContent { Status = true, Message = "全部设备操作完成" }; } catch (Exception ex) { return new WebResponseContent { Status = false, Message = $"操作异常:{ex.Message}" }; } } /// /// 手动控制,伸缩杆的缩回和伸出速度 /// /// 伸缩杆的位置(左右) /// 伸/缩状态 /// /// //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("D500", ext);//速度 // var button = liftotherDevice.Communicator.Write("M100", true);//伸出按钮 // Console.WriteLine($"{position}伸缩杆伸出{ext}"); // } // if (position == "左" && ExtendedState == "缩回") // { // var values = liftotherDevice.Communicator.Write("D501", ret); //var button = liftotherDevice.Communicator.Write("M101", true);//缩回按钮 //Console.WriteLine($"{position}伸缩杆缩回{ret}"); // } // if (position == "右" && ExtendedState == "伸出") // { // var values = rightotherDevice.Communicator.Write("D500", ext);//速度 // var button = rightotherDevice.Communicator.Write("M100", true);//伸出按钮 // Console.WriteLine($"{position}伸缩杆伸出{ext}"); // } // if (position == "右" && ExtendedState == "缩回") // { // var values = rightotherDevice.Communicator.Write("D501", ret); // var button = rightotherDevice.Communicator.Write("M101", true);//缩回按钮 // Console.WriteLine($"{position}伸缩杆缩回{ret}"); // } // return new WebResponseContent { Status = true, Message = "成功" }; // } // catch (Exception ex) // { // return new WebResponseContent { Status = false, Message = ex.Message }; // } //} /// /// 手动控制,伸缩杆的缩回和伸出速度 /// /// 伸缩杆的位置(左右) /// 伸/缩状态 /// 股道号 /// public WebResponseContent ManualOperation(string position, string ExtendedState,int DeptId) { try { var devices = GetDevicesByDeptId(DeptId); if (devices == null) return new WebResponseContent { Status = false, Message = "设备未找到" }; var para = BaseDal.QueryData(x=>x.Deptid== DeptId).OrderByDescending(x => x.CreateDate).FirstOrDefault(); if (para == null) return new WebResponseContent { Status = false, Message = "参数未配置" }; int ext = (int)para.ExtendSpeed; int ret = (int)para.RetractionSpeed; if (position == "左" && ExtendedState == "伸出") { devices.Value.left.Communicator.Write("D500", ext);//伸出速度 devices.Value.left.Communicator.Write("M100", true);//伸出按钮 Console.WriteLine($"{position}伸缩杆手动伸出{ext}"); } else if (position == "左" && ExtendedState == "缩回") { devices.Value.left.Communicator.Write("D501", ret);//缩回速度 devices.Value.left.Communicator.Write("M101", true); Console.WriteLine($"{position}伸缩杆手动缩回{ret}"); } else if (position == "右" && ExtendedState == "伸出") { devices.Value.right.Communicator.Write("D500", ext); devices.Value.right.Communicator.Write("M100", true); Console.WriteLine($"{position}伸缩杆手动伸出{ext}"); } else if (position == "右" && ExtendedState == "缩回") { devices.Value.right.Communicator.Write("D501", ret); devices.Value.right.Communicator.Write("M101", true); Console.WriteLine($"{position}伸缩杆手动缩回{ret}"); } else { return new WebResponseContent { Status = false, Message = "状态参数错误" }; } return new WebResponseContent { Status = true, Message = "成功" }; } catch (Exception ex) { return new WebResponseContent { Status = false, Message = ex.Message }; } } /// /// 获取设备号 /// /// /// public (OtherDevice left, OtherDevice right)? GetDevicesByDeptId(int deptId) { // 左设备号:1 -> 001,2 -> 003,3 -> 005... int baseCode = 1 + (deptId - 1) * 2; string leftCode = $"SSG{baseCode.ToString("D3")}"; //右设备:1->002 ,2->004 string rightCode = $"SSG{(baseCode + 1).ToString("D3")}"; var left = (OtherDevice)Storage.Devices.Find(x => x.DeviceCode == leftCode); var right = (OtherDevice)Storage.Devices.Find(x => x.DeviceCode == rightCode); if (left == null || right == null) return null; return (left, right); } } }