yanjinhui
2025-06-09 9f3858dd723a69c56dbab909e0c7e6c5ef8b85a8
修改plc信息,以及进入检修接口
已修改5个文件
553 ■■■■ 文件已修改
project/WCS/WIDESEAWCS_Server/WIDESEAWCS_ITelescopicService/IMaintenanceService.cs 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
project/WCS/WIDESEAWCS_Server/WIDESEAWCS_Server/Controllers/Telescopic/MaintenanceController.cs 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
project/WCS/WIDESEAWCS_Server/WIDESEAWCS_TelescopicService/MaintenanceService.cs 71 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
project/WCS/WIDESEAWCS_Server/WIDESEAWCS_TelescopicService/ParametersService.cs 221 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
project/后台管理/WIDESEAWCS_Server/WIDESEAWCS_TelescopicService/ParametersService.cs 248 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
project/WCS/WIDESEAWCS_Server/WIDESEAWCS_ITelescopicService/IMaintenanceService.cs
@@ -29,11 +29,11 @@
        WebResponseContent PersonnelMonitoring(PaginationDTO pagination);
        /// <summary>
        /// æ›´æ”¹çŠ¶æ€ï¼Œè¿è¡Œè¿›å…¥æ£€ä¿®
        /// æ›´æ”¹çŠ¶æ€ï¼Œå¼ºåˆ¶ä¸‹çº¿
        /// </summary>
        /// <param name="id"></param>
        /// <returns></returns>
        WebResponseContent RunOperation(int id,string  ispossible);
        WebResponseContent RunOperation(int id, string LocalIP);
        WebResponseContent ChangeTasState(int id);
project/WCS/WIDESEAWCS_Server/WIDESEAWCS_Server/Controllers/Telescopic/MaintenanceController.cs
@@ -44,15 +44,16 @@
        /// <summary>
        /// æ›´æ”¹çŠ¶æ€ï¼Œè¿è¡Œè¿›å…¥æ£€ä¿®
        /// æ›´æ”¹çŠ¶æ€ï¼Œå¼ºåˆ¶ä¸‹çº¿
        /// </summary>
        /// <param name="id"></param>
        /// <returns></returns>
        [HttpPost, Route("RunOperation"), AllowAnonymous]
        public WebResponseContent RunOperation(int id, string ispossible)
        public WebResponseContent RunOperation(int id, string LocalIP)
        {
            //
            return Service.RunOperation(id, ispossible);
            var userIp = HttpContext.GetUserIp();//用户电脑ip
            var reslut = userIp.Replace("::ffff:", " ");
            return Service.RunOperation(id, LocalIP);
        }
        /// <summary>
project/WCS/WIDESEAWCS_Server/WIDESEAWCS_TelescopicService/MaintenanceService.cs
@@ -148,6 +148,7 @@
                        a.UserTrueName,
                        a.Userteam,//班组
                        a.Unit,//单位
                        b.ID,//id
                        b.MaintenanceStatus,//检修状态
                        b.CreateDate,//日期
                        b.MaintenancStartTime,//开始时间
@@ -177,43 +178,38 @@
        /// <summary>
        /// æ›´æ–°çŠ¶æ€æ˜¯å¦å…è®¸è¿›å…¥æ£€ä¿®ï¼ˆæ·»åŠ äº†æ£€ä¿®è®°å½•ï¼‰
        /// æ›´æ–°çŠ¶æ€å¼ºåˆ¶ä¸‹çº¿ï¼ˆæ·»åŠ äº†æ£€ä¿®è®°å½•ï¼‰
        /// </summary>
        /// <param name="id"></param>
        /// <param name="ispossible"></param>
        /// <returns></returns>
        public WebResponseContent RunOperation(int id, string  ispossible)
        public WebResponseContent RunOperation(int id,string LocalIP)
        {
            try
            {
                var mon = BaseDal.QueryFirst(x => x.ID == id);
                if (mon == null)
                var user = BaseDal.QueryData();//检修表
                var maint = user.Where(x => x.ID == id).FirstOrDefault(); //在检修表中先找到该用户
                var sysuer = _user.QueryData(x => x.UserName == maint.UserAccount).FirstOrDefault();
                if (maint == null ||sysuer==null)
                {
                    return new WebResponseContent { Status = false, Message = "无法更改,没有找到该用户" };
                    return new WebResponseContent { Status = false, Message = "没有找到该用户" };
                }
                var sysuer = _user.QueryData(x => x.UserName == mon.UserAccount).FirstOrDefault();
                if (ispossible == "true")
                {
                    mon.IsPossible = "true";
                    mon.MaintenanceDate = DateTime.Now;
                    BaseDal.UpdateData(mon);
                 maint.MaintenanceStatus = 0;//改变状态强制下线
                BaseDal.UpdateData(maint);
                                            //插入记录表
                    var recording = new Dt_MaintenanceTeam  //添加记录
                    {
                    Account = maint.UserAccount,
                    MaintenanceStatus = 0,
                        OperatorName = sysuer.UserTrueName,
                        TeamName = sysuer.RoleName,
                        DistributionTime = DateTime.Now,
                        Creater = "admin",
                        CreateDate = DateTime.Now,
                    IPAddress = LocalIP,
                    };
                    _team.AddData(recording);
                }
                else
                {
                    mon.IsPossible = "false";
                    BaseDal.UpdateData(mon);
                }
                return new WebResponseContent { Status = true, Data = mon };
                return new WebResponseContent { Status = true,Message="强制下线成功", Data = recording };
            }
            catch (Exception ex)
            {
@@ -606,10 +602,9 @@
            }
        }
        /// <summary>
        /// ç»“束检修
        /// </summary>MaintenanceStatus 0代表检修完成  1代表检修中
        /// </summary>
        /// <param name="account"></param>
        /// <returns></returns>
        public WebResponseContent StopMaintenanceTask(string account)
@@ -619,6 +614,7 @@
                var user = BaseDal.QueryData();//检修表
                var maint = user.Where(x => x.UserAccount == account).FirstOrDefault();
                var sysuer = _user.QueryData(x => x.UserName == account).FirstOrDefault();//用户表
                if (maint == null || sysuer == null)
                {
                    return new WebResponseContent { Status = false, Message = "没有找到该用户" };
@@ -634,21 +630,34 @@
                    return new WebResponseContent { Status = false, Message = "你还没有开始检修,请先点击开始检修" };
                }
                if (maint.IsLeader == 1)//如果该用户是班长,那么要等全部人都检修完成,他才可以结束检修
                // æ£€æŸ¥æ˜¯å¦è‡³å°‘有一个组长在场
                var activeLeaders = user.Where(x => x.IsLeader == 1 && x.MaintenanceStatus == 1).ToList();
                // å¦‚果当前用户是组长
                if (maint.IsLeader == 1)
                {
                    //先查找所有用户的组是那个组的,组员状态有一个不是1
                    // æŸ¥æ‰¾åŒç»„未完成的组员(IsLeader=0 && MaintenanceStatus=1)
                    var hasUnfinishedMembers = user.Where(x =>x.IsLeader == 0 &&x.MaintenanceStatus == 1).ToList(); //:Any()有一个满足就返回true表示存在满足条件的记录
                    if (hasUnfinishedMembers.Count>0)
                    // å¦‚果是最后一个在场的组长
                    if (activeLeaders.Count == 1 && activeLeaders[0].UserAccount == account)
                    {
                        return new WebResponseContent { Status = false, Message = "还有组员未完成当前批次检修" };
                        // æ£€æŸ¥æ˜¯å¦è¿˜æœ‰æœªå®Œæˆçš„组员
                        var unfinishedMembers = user.Where(x => x.IsLeader == 0 && x.MaintenanceStatus == 1).Any();
                        if (unfinishedMembers)
                        {
                            return new WebResponseContent
                            {
                                Status = false,
                                Message = "您是最后一个在场的组长,请等待所有组员完成检修后再结束"
                            };
                    }
                }
                //如果满足下面的条件就开始
                }
                // æ›´æ–°å½“前用户的检修状态
                maint.MaintenancEendTime = DateTime.Now;//记录结束时间
                maint.MaintenanceStatus = 0;//更改状态
                BaseDal.UpdateData(maint);
                ////插入记录表
                // æ’入记录表
                var recording = new Dt_MaintenanceTeam  //添加记录
                {
                    Account = account,
project/WCS/WIDESEAWCS_Server/WIDESEAWCS_TelescopicService/ParametersService.cs
@@ -15,6 +15,7 @@
using WIDESEAWCS_ITelescopicService;
using WIDESEAWCS_Model.Models;
using WIDESEAWCS_QuartzJob;
using static WIDESEAWCS_Common.Face.TH_Faces;
namespace WIDESEAWCS_TelescopicService
@@ -37,6 +38,7 @@
        /// <returns></returns>
        public WebResponseContent automation(string ExtendedState)
        {
            try
            {
@@ -56,54 +58,27 @@
                int ret = (int)para.RetractionSpeed;//右PLC自动伸出缩回速度
                int liftPosition = (int)para.LeftPosition;//左伸出位置
                int rigtpostition = (int)para.RightPosition;//右伸出位置
                bool canLeftWork = true;
                bool canRightWork = true;
                string message = "";
                    try
                    {
                        var leftorigin = devices.Value.left.Communicator.Read<bool>("M115");  //到达原点位置
                        if (leftorigin)
                    if (devices.Value.left.Communicator.Read<bool>("M117"))
                        {
                            canLeftWork = false;
                            message += "å·¦PLC已到原点;";
                        return new WebResponseContent { Status = true, Message = "现在正在进行中,等待操作完成" };
                        }
                    }
                    catch (Exception)
                    {  
                    }
                    try
                    {
                        var rightorigin = devices.Value.right.Communicator.Read<bool>("M115");
                        if (rightorigin)
                    if (devices.Value.right.Communicator.Read<bool>("M117"))
                        {
                            canRightWork = false;
                            message += "右PLC已到原点;";
                        }
                    }
                    catch (Exception)
                    {
                        return new WebResponseContent { Status = true, Message = "现在正在进行中,等待操作完成" };
                    }
                try
                {
                    var lefttarget = devices.Value.left.Communicator.Read<bool>("M116"); //到达最大位置
                    if (lefttarget)
                    {
                        canLeftWork = false;
                        message += "å·¦PLC已到最大值;";
                    }
                }
                catch { }
                try
                {
                    var righttarget = devices.Value.right.Communicator.Read<bool>("M116");
                    if (righttarget)
                    {
                        canRightWork = false;
                        message += "右PLC已到最大值;";
                    }
                }
                catch (Exception)
                {
@@ -111,51 +86,79 @@
                if (ExtendedState == "伸出")
                {
                    if (canLeftWork)
                    {
                        try
                        {
                            devices.Value.left.Communicator.Write<int>("D1001", ext);//å·¦PLC自动动伸出缩回速度
                            devices.Value.left.Communicator.Write<bool>("M102", true);//伸出按钮
                            devices.Value.left.Communicator.Write<int>("D1002", liftPosition);//伸出位置
                        }
                        catch { }
                    }
                    if (canRightWork)
                    {
                        try
                        {
                            devices.Value.right.Communicator.Write<int>("D1001", ret);
                            devices.Value.right.Communicator.Write<bool>("M102", true);
                            devices.Value.right.Communicator.Write<int>("D1002", rigtpostition);
                        if (devices.Value.left.Communicator.Read<float>("D80")>= liftPosition-5)//到达最大位置)
                        {
                            message += "å·¦PLC已到最大位置;";
                        }
                        else
                        {
                            devices.Value.left.Communicator.Write<int>("D1022", liftPosition);//伸出位置
                            devices.Value.left.Communicator.Write<int>("D1002", ext);//å·¦PLC自动动伸出缩回速度
                            devices.Value.left.Communicator.Write<bool>("M102", true);//伸出按钮
                        }
                        }
                        catch { }
                        try
                        {
                        if (devices.Value.right.Communicator.Read<float>("D80") >= rigtpostition-5)
                        {
                            message += "右PLC已到最大位置;";
                    }
                        else
                        {
                            devices.Value.right.Communicator.Write<int>("D1022", rigtpostition);
                            devices.Value.right.Communicator.Write<int>("D1002", ret);
                            devices.Value.right.Communicator.Write<bool>("M102", true);
                        }                        }
                        catch { }
                }
                else if (ExtendedState == "缩回")
                {
                    if (canLeftWork)
                    {
                        try
                        {
                            devices.Value.left.Communicator.Write<int>("D1001", ext);//å·¦PLC自动伸=缩回出缩回速度
                        if (devices.Value.left.Communicator.Read<bool>("M115")) //到达原点位
                        {
                            message += "左伸缩杆已到原点;";
                        }
                        else
                        {
                            devices.Value.left.Communicator.Write<int>("D1022", liftPosition);
                            devices.Value.left.Communicator.Write<int>("D1002", ext);//å·¦PLC自动伸=缩回出缩回速度
                            devices.Value.left.Communicator.Write<bool>("M103", true);//å·¦plc缩回按钮
                            
                        }
                        }
                        catch { }
                    }
                    if (canRightWork)
                    {
                        try
                        {
                            devices.Value.right.Communicator.Write<int>("D1001", ret);
                        if (devices.Value.right.Communicator.Read<bool>("M115"))
                        {
                            message += "右伸缩杆已到原点;";
                        }
                        else
                        {
                            devices.Value.right.Communicator.Write<int>("D1022", rigtpostition);
                            devices.Value.right.Communicator.Write<int>("D1002", ret);
                            devices.Value.right.Communicator.Write<bool>("M103", true);
                        }
                          
                        }
                        catch { }
                    }
                }
                else
                {
@@ -165,8 +168,8 @@
                return new WebResponseContent
                {
                    Status = true,
                    Message = string.IsNullOrEmpty(message) ? "执行成功" : $"部分PLC未执行:{message}",
                    Data = new { ExtendSpeed = ext, RetractionSpeed = ret }
                    Message = string.IsNullOrEmpty(message) ? "执行成功" : $"{message}",
                    Data = new { ExtendSpeed = ext, RetractionSpeed = ret,liftweiz= liftPosition,rightweiz= rigtpostition }
                };
            }
@@ -207,114 +210,112 @@
                int ret = (int)para.ManualRetraction;//右PLC手动伸出缩回速度
                int liftPosition = (int)para.LeftPosition;//左伸出位置
                int rigtpostition = (int)para.RightPosition;//右伸出位置
                bool canLeft = true,
                 canRight = true;
                //bool canLeft = true,
                // canRight = true;
                string message = "";
                try
                {
                    var leftOrigin = devices.Value.left.Communicator.Read<bool>("M115");
                    if (leftOrigin)
                    if (devices.Value.left.Communicator.Read<bool>("M117")) //默认是flase
                    {
                        message += "å·¦PLC已到原点;";
                        canLeft=false;
                        return new WebResponseContent { Status = true, Message = "现在正在进行中,等待操作完成" };
                    }
                  
                }
                catch (Exception )
                {     }
                try
                {
                    var rightOrigin = devices.Value.right.Communicator.Read<bool>("M115");
                    if (rightOrigin)
                    {
                        message += "右PLC已到原点;";
                        canRight = false;
                    }
                }
                catch (Exception)
                {
                }
                try
                {
                    try
                    {
                        var lefttarget = devices.Value.left.Communicator.Read<bool>("M116");//å·¦plc到达目标位置
                        if (lefttarget)
                        {
                            message += "å·¦plc到达目标位置;";
                            canLeft = false;
                        }
                    }
                    catch (Exception)
                    {
                    }
                    try
                    {
                        var righttarget = devices.Value.right.Communicator.Read<bool>("M116");//右plc到达目标位置
                        if (righttarget)
                    if (devices.Value.right.Communicator.Read<bool>("M117"))
                        {
                            message += "右plc到达目标位置;";
                            canRight = false;
                        return new WebResponseContent { Status = false, Message = "现在正在进行中,等待操作完成" };
                        }
                    }
                    catch (Exception)
                    {
                    }
                }
                catch (Exception )
                { }
                if (canLeft) //没有到原点或最大值的时候才执行下面的语句
                {
                    if (position == "å·¦" && ExtendedState == "伸出")
                    {
                    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); // é‡Šæ”¾æŒ‰é’®
                        devices.Value.left.Communicator.Write<int>("D1002", liftPosition);//左伸出位置
                        Console.WriteLine($"{position}伸缩杆手动伸出{ext}");
                    }
                    }
                    else if (position == "å·¦" && ExtendedState == "缩回")
                    {
                    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}");
                    }
                }
                if (canRight)
                {
                }
                    if (position == "右" && ExtendedState == "伸出")
                    {
                    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); // é‡Šæ”¾æŒ‰é’®
                        devices.Value.right.Communicator.Write<int>("D1002", liftPosition);//左伸出位置
                        Console.WriteLine($"{position}伸缩杆手动伸出{ret}");
                    }
                    }
                    else if (position == "右" && ExtendedState == "缩回")
                    {
                    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}");
                    }
                }             
                return new WebResponseContent { Status = true,
                    Message = string.IsNullOrEmpty(message) ? "执行成功" : $"执行失败:{message}",
                return new WebResponseContent
                {
                    Status = true,
                    Message = string.IsNullOrEmpty(message) ? "执行成功" : $"{message}",
                    Data = new
                    {
                        ManualExtend = ext,
@@ -323,6 +324,8 @@
                    }
                };
            }
            catch (Exception ex)
            {
                return new WebResponseContent { Status = false, Message = ex.Message };
project/ºǫ́¹ÜÀí/WIDESEAWCS_Server/WIDESEAWCS_TelescopicService/ParametersService.cs
@@ -67,54 +67,23 @@
                        int liftPos = (int)para.LeftPosition;
                        int rightPos = (int)para.RightPosition;
                        // ç‹¬ç«‹åˆ¤æ–­å·¦/右是否可执行
                        bool canLeft = true, canRight = true;
                        try
                        {
                            var leftOrigin = devices.Value.left.Communicator.Read<bool>("M115");//到达原点
                            if (leftOrigin)
                            if (devices.Value.left.Communicator.Read<bool>("M117"))
                            {
                                messages.Add($"{deptId}轨道左PLC已到原点");
                                canLeft = false;
                                return new WebResponseContent { Status = false, Message = "现在正在进行中,等待操作完成" };
                            }
                        }
                        catch (Exception)
                        { }
                        try
                        {
                            var rightOrigin = devices.Value.right.Communicator.Read<bool>("M115");
                            if (rightOrigin)
                            {
                                messages.Add($"{deptId}轨道右PLC已到原点");
                                canRight = false;
                            }
                        }
                        catch (Exception)
                        {
                        }
                        try
                        {
                            var lefttarget = devices.Value.left.Communicator.Read<bool>("M116");//å·¦plc到达目标位置
                            if (lefttarget)
                            {
                                messages.Add($"{deptId}轨道左plc到达目标位置");
                                canLeft = false;
                            }
                        }
                        catch (Exception)
                        {
                        }
                        try
                        {
                            var righttarget = devices.Value.right.Communicator.Read<bool>("M116");//右plc到达目标位置
                            if (righttarget)
                            if (devices.Value.right.Communicator.Read<bool>("M117"))
                            {
                                messages.Add($"{deptId}轨道右plc到达目标位置");
                                canRight = false;
                                return new WebResponseContent { Status = false, Message = "现在正在进行中,等待操作完成" };
                            }
                        }
@@ -124,70 +93,82 @@
                        if (extendedState == "伸出")
                        {
                            if (canLeft)
                            {
                                try
                                {
                                    devices.Value.left.Communicator.Write<int>("D1001", ext);
                                    devices.Value.left.Communicator.Write<bool>("M102", true);
                                    devices.Value.left.Communicator.Write<int>("D1002", liftPos);
                                }
                                catch (Exception)
                        if (devices.Value.left.Communicator.Read<float>("D80")>= liftPos-5)//到达最大位置)
                                {
                                    messages.Add($"轨道站{deptId}左伸缩杆已到最大位置");
                                    
                                }
                            }
                            if (canRight)
                        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}右伸缩杆已到最大位置");
                                    devices.Value.right.Communicator.Write<int>("D1001", ret);
                        }
                        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);
                                    devices.Value.right.Communicator.Write<int>("D1002", rightPos);
                                }
                                catch (Exception)
                                {
                                }
                        }                        }
                        catch { }
                              
                            }
                        }
                        else if (extendedState == "缩回")
                        {
                            if (canLeft)
                            {
                                try
                                {
                                        devices.Value.left.Communicator.Write<int>("D1001", ext);
                                        devices.Value.left.Communicator.Write<bool>("M103", true);
                                    }
                                catch (Exception)
                        if (devices.Value.left.Communicator.Read<bool>("M115")) //到达原点位
                                {
                                    messages.Add($"轨道站{deptId}左伸缩杆已到原点");
                                }
                            }
                            if (canRight)
                        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 { }
                                try
                                {
                                        devices.Value.right.Communicator.Write<int>("D1001", ret);
                        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 (Exception)
                                {
                                }
                            }
                        catch { }
                        }
                        else
                        {
@@ -235,141 +216,144 @@
                {
            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;
                //bool canLeft = true,
                // canRight = true;
                string message = "";
                try
                {
                    var leftOrigin = devices.Value.left.Communicator.Read<bool>("M115");
                    if (leftOrigin)
                    if (devices.Value.left.Communicator.Read<bool>("M117")) //默认是flase
                    {
                        message += "å·¦PLC已到原点;";
                        canLeft = false;
                        return new WebResponseContent { Status = true, Message = "现在正在进行中,等待操作完成" };
                    }
                }
                catch (Exception)
                { }
                try
                {
                    var rightOrigin = devices.Value.right.Communicator.Read<bool>("M115");
                    if (rightOrigin)
                    {
                        message += "右PLC已到原点;";
                        canRight = false;
                    }
                }
                catch (Exception)
                {
                }
                    try
                    {
                        var lefttarget = devices.Value.left.Communicator.Read<bool>("M116");//å·¦plc到达目标位置
                        if (lefttarget)
                        {
                            message += "å·¦plc到达目标位置;";
                            canLeft = false;
                        }
                    }
                    catch (Exception)
                    {
                    }
                    try
                    {
                        var righttarget = devices.Value.right.Communicator.Read<bool>("M116");//右plc到达目标位置
                        if (righttarget)
                    if (devices.Value.right.Communicator.Read<bool>("M117"))
                        {
                            message += "右plc到达目标位置;";
                            canRight = false;
                        return new WebResponseContent { Status = false, Message = "现在正在进行中,等待操作完成" };
                        }
                    }
                    catch (Exception)
                    {
                    }
                if (canLeft)
                {
                    if (position == "å·¦" && ExtendedState == "伸出")
                    {
                    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); // é‡Šæ”¾æŒ‰é’®
                        devices.Value.left.Communicator.Write<int>("D1002", liftPosition);//左伸出位置
                        Console.WriteLine($"{position}伸缩杆手动伸出{ext}");
                    }
                    }
                    else if (position == "å·¦" && ExtendedState == "缩回")
                    {
                    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}");
                    }
                }
                if (canRight)
                {
                    if (position == "右" && ExtendedState == "伸出")
                    {
                    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); // é‡Šæ”¾æŒ‰é’®
                        devices.Value.right.Communicator.Write<int>("D1002", liftPosition);//左伸出位置
                        Console.WriteLine($"{position}伸缩杆手动伸出{ret}");
                    }
                    }
                    else if (position == "右" && ExtendedState == "缩回")
                    {
                    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 = string.IsNullOrEmpty(message) ? "执行成功" : $"执行失败:{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 };
            }
        }