From fcd49db2ee33ee2e1d33e5a41e53d9897a8a3b0f Mon Sep 17 00:00:00 2001
From: yanjinhui <3306209981@qq.com>
Date: 星期四, 05 六月 2025 19:19:10 +0800
Subject: [PATCH] 限制plc伸到位报警,和限制开始作业无限点击问题

---
 project/WCS/WIDESEAWCS_Server/WIDESEAWCS_TelescopicService/MaintenanceService.cs |  335 +++++++++++++++++++++++++++++++++++++++++++++----------
 1 files changed, 274 insertions(+), 61 deletions(-)

diff --git a/project/WCS/WIDESEAWCS_Server/WIDESEAWCS_TelescopicService/MaintenanceService.cs b/project/WCS/WIDESEAWCS_Server/WIDESEAWCS_TelescopicService/MaintenanceService.cs
index b1a2151..81671f3 100644
--- a/project/WCS/WIDESEAWCS_Server/WIDESEAWCS_TelescopicService/MaintenanceService.cs
+++ b/project/WCS/WIDESEAWCS_Server/WIDESEAWCS_TelescopicService/MaintenanceService.cs
@@ -23,11 +23,13 @@
         public IRepository<Dt_Maintenance> Repository => BaseDal;
         public readonly IRepository<Dt_MaintenanceTeam> _team;
         private readonly IRepository<Sys_User> _user;
+       
 
         public MaintenanceService(IRepository<Dt_Maintenance> BaseDal, IRepository<Sys_User> user, IRepository<Dt_MaintenanceTeam> team) : base(BaseDal)
         {
             _user = user;
-            _team = team;   
+            _team = team;
+           
         }
 
 
@@ -114,7 +116,7 @@
         /// <param name="pageIndex"></param>
         /// <param name="pageSize"></param>
         /// <param name="searchKeyword"></param>
-        /// <returns></returns>
+        /// <returns></returns>(杩欎釜娌℃湁鐢ㄥ埌浜�)
         public WebResponseContent PersonnelMonitoring(PaginationDTO pagination)
         {
             try
@@ -122,14 +124,15 @@
                 // 绗竴姝ワ細鑷姩娓呯悊杩囨湡妫�淇姸鎬�
                 var today = DateTime.Today;
                 var recordsToUpdate = Db.Queryable<Dt_Maintenance>()
-                    .Where(b => b.MaintenancStartTime != null &&
-                                b.MaintenancStartTime.Value.Date < today  ) 
+                    .Where(b => b.MaintenanceDate != null &&
+                                b.MaintenanceDate.Value.Date < today  ) 
                     .ToList();
 
                 if (recordsToUpdate.Count > 0)
                 {
                     foreach (var record in recordsToUpdate)//鏇存柊
                     {
+                        record.MaintenanceDate = null;//娓呯┖妫�淇棩鏈�
                         record.MaintenancStartTime = null;//娓呯┖寮�濮嬫椂闂�
                         record.MaintenancEendTime = null;//娓呯┖缁撴潫鏃堕棿
                         record.MaintenanceStatus = 0; // Set to false
@@ -210,7 +213,7 @@
 
 
         /// <summary>
-        /// 鏇存柊鐘舵�佹槸鍚﹀厑璁歌繘鍏ユ淇�
+        /// 鏇存柊鐘舵�佹槸鍚﹀厑璁歌繘鍏ユ淇紙娣诲姞浜嗘淇褰曪級
         /// </summary>
         /// <param name="id"></param>
         /// <param name="ispossible"></param>
@@ -230,7 +233,7 @@
                     mon.IsPossible = "true";
                     mon.MaintenanceDate = DateTime.Now;
                     BaseDal.UpdateData(mon);
-                    var recording = new Dt_MaintenanceTeam
+                    var recording = new Dt_MaintenanceTeam  //娣诲姞璁板綍
                     {
                         OperatorName = sysuer.UserTrueName,
                         TeamName = sysuer.RoleName,
@@ -257,7 +260,7 @@
 
 
         /// <summary>
-        /// 鏇存敼鐘舵��
+        /// 鏇存敼鐘舵�侊紙鏆傛椂娌℃湁鐢ㄥ埌锛�
         /// </summary>
         /// <param name="id"></param>
         /// <returns></returns>
@@ -350,29 +353,14 @@
                   query=query.OrderByDescending((a, b) => b.Creater);
                 }
 
-                // 濡傛灉涓嶆槸绠$悊鍛橈紝鏍规嵁閮ㄩ棬杩囨护
-                if (pagination.account != "admin")
-                {
-                    var currentUser = _user.Db.Queryable<Sys_User>()
-                        .Where(u => u.UserName == pagination.account)
-                        .First();
-
-                    if (currentUser == null)
-                    {
-                        return new WebResponseContent { Status = false, Data = "鏈幏鍙栧埌鐢ㄦ埛淇℃伅" };
-                    }
-
-                    int? deptId = currentUser.Dept_Id;
-
-                    query = query.Where((a, b) => a.Dept_Id == deptId);
-                }
-
+              
                 //杩斿洖缁撴灉
                 var result = query.Select((a, b) => new
                 {
                     a.UserTrueName,
                     a.Userteam,
                     a.HeadImageUrl,
+                    a.Dept_Id,
                     b.MaintenancStartTime,
                     b.MaintenancEendTime,
                 }).ToPageList(pagination.pageIndex, pagination.pageSize, ref totalCount);
@@ -398,7 +386,7 @@
 
 
         /// <summary>
-        /// 鐪嬩粖澶╃殑妫�淇换鍔�
+        /// 鏌ョ湅浠婂ぉ鐨勬淇换鍔★紙杩愯妫�淇殣钘忎簡锛岃繖涓帴鍙d篃鐢ㄤ笉閬擄級
         /// </summary>
         /// <param name="id"></param>
         /// <returns></returns>
@@ -425,52 +413,228 @@
                         b.MaintenancStartTime,
                         b.MaintenancEendTime,
                     }).ToList();
-                if (query==null)
+                if (query == null)
                 {
                     return new WebResponseContent { Status = false, Message = "浣犱粖澶╂病鏈夋淇换鍔�" };
                 }
-                
 
 
-                return new WebResponseContent { Status=true, Data = query };
+
+                return new WebResponseContent { Status = true, Data = query };
             }
             catch (Exception ex)
             {
 
                 return new WebResponseContent { Status = false, Message = "閿欒淇℃伅锛�" + ex.Message };
             }
-                    
+
         }
+
+        /// <summary>
+        /// 鐪嬩粖澶╃殑妫�淇换鍔★紙杩愯妫�淇殣钘忎簡锛岃繖涓帴鍙d篃鐢ㄤ笉閬擄級
+        /// </summary>
+        /// <param name="id"></param>
+        /// <returns></returns>
+        //public WebResponseContent MaintenanceTasksOfTheDay(string account)
+        //{
+        //    try
+        //    {
+
+        //        var query = _user.Db.Queryable<Sys_User>()
+        //            .InnerJoin<Dt_Maintenance>((a, b) => a.UserName == b.UserAccount)
+        //            .Where((a,b) =>  b.UserAccount == account ).Select((a, b) => new
+        //            {
+        //                b.ID,
+        //                a.UserTrueName,
+        //                a.UserName,
+        //                a.CardNumber,
+        //                a.Userteam,
+        //                a.HeadImageUrl,
+        //                b.IsPossible,
+        //                b.MaintenanceStatus,
+        //                b.MaintenanceDate,
+        //                b.MaintenancStartTime,
+        //                b.MaintenancEendTime,
+        //            }).ToList();
+        //        if (query == null)
+        //        {
+        //            return new WebResponseContent { Status = false, Message = "浣犱粖澶╂病鏈夋淇换鍔�" };
+        //        }
+
+
+
+        //        return new WebResponseContent { Status = true, Data = query };
+        //    }
+        //    catch (Exception ex)
+        //    {
+
+        //        return new WebResponseContent { Status = false, Message = "閿欒淇℃伅锛�" + ex.Message };
+        //    }
+
+        //}
+
+
+
+
+        ///// <summary>
+        ///// 寮�濮嬫淇�
+        ///// </summary>
+        ///// <param name="account">璐﹀彿</param>
+        ///// <param name="LocalIP">閭e彴鐢佃剳鐧诲叆鐨刬p鍦板潃</param>
+        ///// <returns></returns>
+        //public WebResponseContent StartMaintenceTask(string account,string LocalIP)
+        //{
+        //    try
+        //    {
+        //        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 = "娌℃湁鎵惧埌璇ョ敤鎴�" };
+        //        }
+        //        if (maint.IsLeader!=1)//濡傛灉璇ョ敤鎴蜂笉鏄彮闀匡紝閭d箞瑕佺瓑鐝暱鍏堝仛锛屼粬鎵嶅彲浠ュ仛
+        //        {
+        //            bool leaderStarted = user.Any(x =>x.Roleid == maint.Roleid &&x.IsLeader == 1 &&x.MaintenanceStatus == 1); //娌℃壘鍒拌偗瀹氭槸false
+        //            if (!leaderStarted)
+        //            {
+        //                return new WebResponseContent { Status = false, Message = "璇风瓑寰呯粍闀垮紑濮嬫淇�" };
+        //            }
+
+        //        }
+        //       //濡傛灉婊¤冻涓嬮潰鐨勬潯浠跺氨寮�濮�
+        //        maint.MaintenancStartTime = DateTime.Now;//璁板綍寮�濮嬫椂闂�
+        //        maint.MaintenanceStatus = 1;//鏇存敼鐘舵��
+        //        BaseDal.UpdateData(maint);
+        //        //鎻掑叆璁板綍琛�
+        //        var recording = new Dt_MaintenanceTeam  //娣诲姞璁板綍
+        //        {
+        //            OperatorName = sysuer.UserTrueName,
+        //            TeamName = sysuer.RoleName,
+        //            DistributionTime = DateTime.Now,
+        //            IPAddress= LocalIP,
+        //            //Creater = "admin",
+        //            //CreateDate = DateTime.Now,
+        //        };
+        //        _team.AddData(recording);
+
+        //        return new WebResponseContent { Status = true, Data = maint,Message="寮�濮嬫淇�" };
+        //    }
+        //    catch (Exception ex)
+        //    {
+        //        return new WebResponseContent { Status = false, Message = "閿欒淇℃伅锛�" + ex.Message };
+        //    }
+        //}
+
+
+        ///// <summary>
+        ///// 缁撴潫妫�淇�
+        ///// </summary>MaintenanceStatus 0浠h〃妫�淇畬鎴�  1浠h〃妫�淇腑
+        ///// <param name="account"></param>
+        ///// <returns></returns>
+        //public WebResponseContent StopMaintenanceTask(string account)
+        //{
+        //    try
+        //    {
+        //        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 = "娌℃湁鎵惧埌璇ョ敤鎴�" };
+        //        }
+        //        if (maint.IsLeader == 1)//濡傛灉璇ョ敤鎴锋槸鐝暱锛岄偅涔堣绛夊叏閮ㄤ汉閮芥淇畬鎴愶紝浠栨墠鍙互缁撴潫妫�淇�
+        //        {
+        //            //鍏堟煡鎵炬墍鏈夌敤鎴风殑缁勬槸閭d釜缁勭殑锛岀粍鍛樼姸鎬佹湁涓�涓笉鏄�1               
+        //            // 鏌ユ壘鍚岀粍鏈畬鎴愮殑缁勫憳锛圛sLeader=0 && MaintenanceStatus=1锛�
+        //            bool hasUnfinishedMembers = user.Any(x =>x.Roleid == maint.Roleid && x.IsLeader == 0 &&
+        //                x.MaintenanceStatus == 1); //锛欰ny()鏈変竴涓弧瓒冲氨杩斿洖true琛ㄧず瀛樺湪婊¤冻鏉′欢鐨勮褰�
+        //            if (hasUnfinishedMembers)
+        //            {
+        //                return new WebResponseContent { Status = false, Message = "杩樻湁缁勫憳鏈畬鎴愬綋鍓嶆壒娆℃淇�" };
+        //            }
+        //        }
+        //        //濡傛灉婊¤冻涓嬮潰鐨勬潯浠跺氨寮�濮�
+        //        maint.MaintenancEendTime = DateTime.Now;//璁板綍缁撴潫鏃堕棿
+        //        maint.MaintenanceStatus = 0;//鏇存敼鐘舵��
+        //        BaseDal.UpdateData(maint);
+        //        ////鎻掑叆璁板綍琛�
+        //        //var recording = new Dt_MaintenanceTeam  //娣诲姞璁板綍
+        //        //{
+        //        //    OperatorName = sysuer.UserTrueName,
+        //        //    TeamName = sysuer.RoleName,
+        //        //    DistributionTime = DateTime.Now,
+        //        //    EndTime=DateTime.Now,
+        //        //};
+        //        //_team.AddData(recording);
+
+        //        return new WebResponseContent { Status = true, Data = maint, Message = "瀹屾垚妫�淇�" };
+        //    }
+        //    catch (Exception ex)
+        //    {
+        //        return new WebResponseContent { Status = false, Message = "閿欒淇℃伅锛�" + ex.Message };
+        //    }
+        //}
+
 
         /// <summary>
         /// 寮�濮嬫淇�
         /// </summary>
-        /// <param name="account"></param>
+        /// <param name="account">璐﹀彿</param>
+        /// <param name="LocalIP">閭e彴鐢佃剳鐧诲叆鐨刬p鍦板潃</param>
         /// <returns></returns>
-        public WebResponseContent StartMaintenceTask(string account)
+        public WebResponseContent StartMaintenceTask(string account, string LocalIP)
         {
             try
             {
-                var today = DateTime.Today;               // 浠婂ぉ鐨勯浂鐐�
-                var tomorrow = today.AddDays(1);         // 鏄庡ぉ鐨勯浂鐐�
-
-
-                var maint = BaseDal.QueryData(x =>
-                    x.UserAccount == account &&
-                    x.IsPossible == "true" &&
-                    x.MaintenanceDate >= today &&
-                    x.MaintenanceDate < tomorrow
-                ).FirstOrDefault();
-
-                if (maint == null)
+                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 = "鏈壘鍒颁粖鏃ョ殑缁存姢浠诲姟璁板綍" };
+                    return new WebResponseContent { Status = false, Message = "娌℃湁鎵惧埌璇ョ敤鎴�" };
+                }
+                // 鏌ユ壘璇ョ敤鎴峰湪 _team 琛ㄤ腑鐨勬渶鏂颁竴鏉¤褰�
+                var lastRecord = _team.QueryData(x => x.Account == account)
+                                      .OrderByDescending(x => x.CreateDate)
+                                      .FirstOrDefault();
+
+                if (lastRecord != null && lastRecord.MaintenanceStatus == 1)
+                {
+                    return new WebResponseContent { Status = false, Message = "浣犲凡缁忓湪寮�濮嬫淇簡锛岃涓嶈閲嶅鐐瑰嚮" };
                 }
 
-                maint.MaintenancStartTime = DateTime.Now;
-                BaseDal.UpdateData(maint);
+                //鍏堣鎵惧埌璇ョ敤鎴峰睘浜庨偅涓鑹茬殑锛岃繖涓鑹蹭腑灞炰簬閭d釜浠�涔堢被鍨嬶紙缁勯暱/缁勫憳锛�
+                if (maint.IsLeader != 1)//濡傛灉璇ョ敤鎴蜂笉鏄彮闀匡紝閭d箞瑕佺瓑鐝暱鍏堝仛锛屼粬鎵嶅彲浠ュ仛
+                {
+                    bool leaderStarted = user.Any(x =>  x.IsLeader == 1 && x.MaintenanceStatus == 1); //鍚︽湁婊¤冻鏉′欢 鎵惧埌涓�鏉″氨杩斿洖true MaintenanceStatus锛�0娌℃湁寮�濮嬶紝1寮�濮嬶級
+                    if (!leaderStarted)
+                    {
+                        return new WebResponseContent { Status = false, Message = "璇风瓑寰呯粍闀垮紑濮嬫淇�" };
+                    }
 
-                return new WebResponseContent { Status = true, Data = maint };
+                }
+                if (true)
+                {
+
+                }
+                //濡傛灉婊¤冻涓嬮潰鐨勬潯浠跺氨寮�濮�
+                maint.MaintenancStartTime = DateTime.Now;//璁板綍寮�濮嬫椂闂�
+                maint.MaintenanceStatus = 1;//鏇存敼鐘舵��
+                BaseDal.UpdateData(maint);
+                //鎻掑叆璁板綍琛�
+                var recording = new Dt_MaintenanceTeam  //娣诲姞璁板綍
+                {
+                    Account = account,
+                    MaintenanceStatus=1,
+                    OperatorName = sysuer.UserTrueName,
+                    TeamName = sysuer.RoleName,
+                    DistributionTime = DateTime.Now,
+                    IPAddress = LocalIP,
+                };
+                _team.AddData(recording);
+
+                return new WebResponseContent { Status = true, Data = maint, Message = "寮�濮嬫淇�" };
             }
             catch (Exception ex)
             {
@@ -481,37 +645,86 @@
 
         /// <summary>
         /// 缁撴潫妫�淇�
-        /// </summary>
+        /// </summary>MaintenanceStatus 0浠h〃妫�淇畬鎴�  1浠h〃妫�淇腑
         /// <param name="account"></param>
         /// <returns></returns>
         public WebResponseContent StopMaintenanceTask(string account)
         {
             try
             {
-                var today = DateTime.Today;               // 浠婂ぉ鐨勯浂鐐�
-                var tomorrow = today.AddDays(1);         // 鏄庡ぉ鐨勯浂鐐�
-
-                var maint = BaseDal.QueryData(x => x.UserAccount == account && x.IsPossible == "true"
-                && x.MaintenanceDate >= today &&x.MaintenanceDate < tomorrow).FirstOrDefault();
-                if (maint == null)
+                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 = "鏈壘鍒板彲鐢ㄧ殑缁存姢浠诲姟璁板綍" };
+                    return new WebResponseContent { Status = false, Message = "娌℃湁鎵惧埌璇ョ敤鎴�" };
                 }
-                // 淇敼鍏剁粨鏉熸椂闂�
-                maint.MaintenancEendTime = DateTime.Now;
-                maint.IsPossible = "ok";//ok灏变唬琛ㄥ畬鎴愪簡
-                BaseDal.UpdateData(maint);
-                return new WebResponseContent { Status = true, Data = maint };
 
+                // 鏌ユ壘璇ョ敤鎴峰湪 _team 琛ㄤ腑鐨勬渶鏂颁竴鏉¤褰�
+                var lastRecord = _team.QueryData(x => x.Account == account)
+                                      .OrderByDescending(x => x.CreateDate)
+                                      .FirstOrDefault();
+
+                if (lastRecord == null || lastRecord.MaintenanceStatus != 1)
+                {
+                    return new WebResponseContent { Status = false, Message = "浣犺繕娌℃湁寮�濮嬫淇紝璇峰厛鐐瑰嚮寮�濮嬫淇�" };
+                }
+
+                if (maint.IsLeader == 1)//濡傛灉璇ョ敤鎴锋槸鐝暱锛岄偅涔堣绛夊叏閮ㄤ汉閮芥淇畬鎴愶紝浠栨墠鍙互缁撴潫妫�淇�
+                {
+                    //鍏堟煡鎵炬墍鏈夌敤鎴风殑缁勬槸閭d釜缁勭殑锛岀粍鍛樼姸鎬佹湁涓�涓笉鏄�1               
+                    // 鏌ユ壘鍚岀粍鏈畬鎴愮殑缁勫憳锛圛sLeader=0 && MaintenanceStatus=1锛�
+                    var hasUnfinishedMembers = user.Where(x =>x.IsLeader == 0 &&x.MaintenanceStatus == 1).ToList(); //锛欰ny()鏈変竴涓弧瓒冲氨杩斿洖true琛ㄧず瀛樺湪婊¤冻鏉′欢鐨勮褰�
+                    if (hasUnfinishedMembers.Count>0)
+                    {
+                        return new WebResponseContent { Status = false, Message = "杩樻湁缁勫憳鏈畬鎴愬綋鍓嶆壒娆℃淇�" };
+                    }
+                }
+                //濡傛灉婊¤冻涓嬮潰鐨勬潯浠跺氨寮�濮�
+                maint.MaintenancEendTime = DateTime.Now;//璁板綍缁撴潫鏃堕棿
+                maint.MaintenanceStatus = 0;//鏇存敼鐘舵��
+                BaseDal.UpdateData(maint);
+                ////鎻掑叆璁板綍琛�
+                var recording = new Dt_MaintenanceTeam  //娣诲姞璁板綍
+                {
+                    Account = account,
+                    MaintenanceStatus=0,
+                    OperatorName = sysuer.UserTrueName,
+                    TeamName = sysuer.RoleName,
+                    EndTime = DateTime.Now,
+                };
+                _team.AddData(recording);
+
+                return new WebResponseContent { Status = true, Data = maint, Message = "瀹屾垚妫�淇�" };
             }
             catch (Exception ex)
             {
-
                 return new WebResponseContent { Status = false, Message = "閿欒淇℃伅锛�" + ex.Message };
             }
         }
 
 
+        /// <summary>
+        ///  灞曠ず寮�濮嬫淇汉鍛�
+        /// </summary>
+        /// <returns></returns>
+        public WebResponseContent YShowStartTake()
+        {
+            try
+            {
+                var reslut=BaseDal.QueryData(x => x.MaintenanceStatus == 1).ToList();
+                if (reslut.Count<=0)
+                {
+                    return new WebResponseContent { Status = false, Message = "杩樻病鏈変汉寮�濮嬫淇�" };
+                }
+                return new WebResponseContent { Status = true, Data = reslut,Message="妫�淇汉鍛樻湁浠ヤ笅" };
+            }
+            catch (Exception ex)
+            {
+
+                return new WebResponseContent { Status = false, Message = ex.Message };
+            }
+        }
 
         /// <summary>
         /// 鐘舵�佹灇涓�

--
Gitblit v1.9.3