yanjinhui
7 天以前 b9c76ce85e533250cd36de670146530f970859e7
ÏîÄ¿´úÂë/ºó¶Ë/WCS/WIDESEAWCS_Server/WIDESEAWCS_TelescopicService/MaintenanceService.cs
@@ -174,14 +174,24 @@
        //        return new WebResponseContent { Status = false, Data = ex.Message };
        //    }
        //}
        public WebResponseContent PersonnelMonitoring(PaginationDTO pagination)
        /// <summary>
        /// äººå‘˜ç›‘控(数字大屏)
        /// </summary>
        /// <param name="pageIndex"></param>
        /// <param name="pageSize"></param>
        /// <param name="searchKeyw
        public WebResponseContent PersonnelMonitoring(PaginationDTO pagination, string LocalIP)
        {
            try
            {
                int totalCount = 0;
                var ip = LocalIP?.Replace("::ffff:", "") ?? ""; // å¦‚æžœ LocalIP æ˜¯ null,ip ä¼šæ˜¯ ""
                var cunstomip = _ipaddress.QueryData(x => x.IPaddress == ip).FirstOrDefault();
                var query = _user.Db.Queryable<Dt_Maintenance>()
                    .Where(b => b.MaintenanceStatus == 1)
                    .Where(b => b.MaintenanceStatus == 1&&b.StationID==cunstomip.StationID)
                    .InnerJoin<Sys_User>((b, a) => b.UserAccount == a.UserName)
                    .LeftJoin<Dt_CustomIPaddress>((b, a, c) => b.IPAddress == c.IPaddress);
@@ -235,11 +245,12 @@
            {
                // 1. æŸ¥æ‰¾ç›®æ ‡ç”¨æˆ·ï¼ˆè¦è¢«å¼ºåˆ¶ä¸‹çº¿çš„人)
                var maint = BaseDal.QueryData().FirstOrDefault(x => x.ID == id);
                var sysuer = _user.QueryData(x => x.UserName == maint.UserAccount).FirstOrDefault();//user表
                if (maint == null || sysuer==null)
                if (maint==null)
                {
                    return new WebResponseContent { Status = false, Message = "没有找到该用户" };
                }
                var sysuer = _user.QueryData(x => x.UserName == maint.UserAccount).FirstOrDefault();//user表
               
                // 2. æŸ¥æ‰¾å½“前登录用户(执行操作的人)
@@ -260,7 +271,11 @@
                // 4. æ‰§è¡Œå¼ºåˆ¶ä¸‹çº¿
                maint.MaintenanceStatus = 0;  // æ”¹å˜çŠ¶æ€ä¸ºä¸‹çº¿
                maint.IPAddress = "";//将ip地址为null
                maint.StationID = null;
                BaseDal.UpdateData(maint);
                var ip = LocalIP?.Replace("::ffff:", "") ?? ""; // å¦‚æžœ LocalIP æ˜¯ null,ip ä¼šæ˜¯ ""
                // 5. è®°å½•操作日志
                var recording = new Dt_MaintenanceTeam
@@ -270,7 +285,7 @@
                    OperatorName = sysuer.UserTrueName,  // æ“ä½œäººå§“名
                    TeamName = sysuer.RoleName,         // æ“ä½œäººè§’色
                    DistributionTime = DateTime.Now,
                    IPAddress = LocalIP,
                    IPAddress = ip,
                };
                _team.AddData(recording);
@@ -499,108 +514,6 @@
        ///// <summary>
        ///// å¼€å§‹æ£€ä¿®
        ///// </summary>
        ///// <param name="account">账号</param>
        ///// <param name="LocalIP">那台电脑登入的ip地址</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)//如果该用户不是班长,那么要等班长先做,他才可以做
        //        {
        //            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代表检修完成  1代表检修中
        ///// <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)//如果该用户是班长,那么要等全部人都检修完成,他才可以结束检修
        //        {
        //            //先查找所有用户的组是那个组的,组员状态有一个不是1
        //            // æŸ¥æ‰¾åŒç»„未完成的组员(IsLeader=0 && MaintenanceStatus=1)
        //            bool hasUnfinishedMembers = user.Any(x =>x.Roleid == maint.Roleid && x.IsLeader == 0 &&
        //                x.MaintenanceStatus == 1); //:Any()有一个满足就返回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>
@@ -614,7 +527,14 @@
                var user = BaseDal.QueryData();//检修表
                var maint = user.Where(x => x.UserAccount == account).FirstOrDefault(); //在检修表中先找到该用户
                var sysuer = _user.QueryData(x => x.UserName == account).FirstOrDefault();//在用户表中找到用户
                var ip = LocalIP?.Replace("::ffff:", "") ?? ""; // å¦‚æžœ LocalIP æ˜¯ null,ip ä¼šæ˜¯ ""
                //找设备ip地址表
                var address = _ipaddress.QueryData(x => x.IPaddress == ip).FirstOrDefault();
                if (address==null)
                {
                    return new WebResponseContent { Status = false, Message = "你没有配置对应的ip地址,请先配置,在操作" };
                }
                if (maint == null || sysuer == null)
                {
                    return new WebResponseContent { Status = false, Message = "没有找到该用户" };
@@ -632,19 +552,24 @@
                //先要找到该用户属于那个角色的,这个角色中属于那个什么类型(组长/组员)
                if (maint.IsLeader != 1)//如果该用户不是班长,那么要等班长先做,他才可以做
                {
                    bool leaderStarted = user.Any(x =>  x.IsLeader == 1 && x.MaintenanceStatus == 1); //否有满足条件 æ‰¾åˆ°ä¸€æ¡å°±è¿”回true MaintenanceStatus(0没有开始,1开始)
                    //找该轨道站上的组长,是否开始检修
                    bool leaderStarted = user.Any(x =>  x.IsLeader == 1 && x.MaintenanceStatus == 1&&x.StationID==address.StationID); //否有满足条件 æ‰¾åˆ°ä¸€æ¡å°±è¿”回true; MaintenanceStatus(0没有开始,1开始)
                    if (!leaderStarted)
                    {
                        return new WebResponseContent { Status = false, Message = "请等待一级人员开始检修" };
                    }
                }
                //如果满足下面的条件就开始
                maint.MaintenancStartTime = DateTime.Now;//记录开始时间
                maint.MaintenanceStatus = 1;//更改状态
                maint.IPAddress = LocalIP;//更改ip地址
                maint.IPAddress = ip;//更改ip地址
                maint.StationID = address.StationID;//记录该用户是那个轨道站开始作业
                BaseDal.UpdateData(maint);
                var address = _ipaddress.QueryData(x=>x.IPaddress== LocalIP).FirstOrDefault();
                var addressIp = "";
                if (address!=null) //找到了
                {
@@ -652,7 +577,7 @@
                }
                else
                {
                    addressIp = LocalIP;
                    addressIp = ip;
                }
                //插入记录表
                var recording = new Dt_MaintenanceTeam  //添加记录
@@ -660,7 +585,7 @@
                    Account = account,
                    MaintenanceStatus=1,
                    OperatorName = sysuer.UserTrueName,
                    TeamName = sysuer.RoleName,
                    TeamName = sysuer.Userteam,
                    DistributionTime = DateTime.Now,
                    IPAddress = addressIp,
                };
@@ -684,8 +609,18 @@
            try
            {
                var user = BaseDal.QueryData(); // æ£€ä¿®è¡¨
                var maint = user.Where(x => x.UserAccount == account).FirstOrDefault();
                var maint = user.Where(x => x.UserAccount == account).FirstOrDefault();// æ£€ä¿®è¡¨
                var sysuer = _user.QueryData(x => x.UserName == account).FirstOrDefault(); // ç”¨æˆ·è¡¨
                var ip = LocalIP?.Replace("::ffff:", "") ?? ""; // å¦‚æžœ LocalIP æ˜¯ null,ip ä¼šæ˜¯ ""
                var address = _ipaddress.QueryData(x => x.IPaddress == ip).FirstOrDefault();
                var addressIp = "";
                //如果用户不在原本轨道站上结束任务,那么就提示他要他回去
                if (maint.IPAddress != ip)
                {
                    return new WebResponseContent { Status = false, Message = "请回到原来的轨道站结束任务" };
                }
                if (maint == null || sysuer == null)
                {
@@ -718,7 +653,7 @@
                            return new WebResponseContent
                            {
                                Status = false,
                                Message = "您是最后一个在场的组长,请等待所有组员完成检修后再结束"
                                Message = "您是最后一个在场的一级人员,请等待所有二级人员完成检修后再结束"
                            };
                        }
                    }
@@ -727,20 +662,22 @@
                //{
                //    return new WebResponseContent { Status = false, Message = "操作设备不同,请回到原本设备再点击结束检修" };
                //}
                var address = _ipaddress.QueryData(x => x.IPaddress == LocalIP).FirstOrDefault();
                var addressIp = "";
                if (address != null) //找到了
                {
                    addressIp = address.Addressname;
                }
                else
                {
                    addressIp = LocalIP;
                    addressIp = ip;
                }
                // æ›´æ–°å½“前用户的检修状态
                maint.MaintenancEendTime = DateTime.Now; // è®°å½•结束时间
                maint.MaintenanceStatus = 0; // æ›´æ”¹çŠ¶æ€
                maint.IPAddress= "";//结束任务后将ip地址改为null
                maint.StationID = null;//将轨道站号改为null
                BaseDal.UpdateData(maint);
                // æ’入记录表
@@ -749,7 +686,7 @@
                    Account = account,
                    MaintenanceStatus = 0,
                    OperatorName = sysuer.UserTrueName,
                    TeamName = sysuer.RoleName,
                    TeamName = sysuer.Userteam,
                    IPAddress = addressIp,
                    EndTime = DateTime.Now,
                };
@@ -768,11 +705,16 @@
        ///  å±•示开始检修人员
        /// </summary>
        /// <returns></returns>
        public WebResponseContent YShowStartTake()
        public WebResponseContent YShowStartTake(string LocalIP)
        {
            try
            {
                var reslut=BaseDal.QueryData(x => x.MaintenanceStatus == 1).ToList();
                var ip = LocalIP?.Replace("::ffff:", "") ?? ""; // å¦‚æžœ LocalIP æ˜¯ null,ip ä¼šæ˜¯ ""
                //找设备ip地址表
                var address = _ipaddress.QueryData(x => x.IPaddress == ip).FirstOrDefault();
                var reslut=BaseDal.QueryData(x => x.MaintenanceStatus == 1&&x.IPAddress==address.IPaddress).ToList();
                if (reslut.Count<=0)
                {
                    return new WebResponseContent { Status = false, Message = "还没有人开始检修" };