| | |
| | | a.UserTrueName, |
| | | a.Userteam,//班组 |
| | | a.Unit,//单位 |
| | | b.ID,//id |
| | | b.MaintenanceStatus,//检修状态 |
| | | b.CreateDate,//日期 |
| | | b.MaintenancStartTime,//开始时间 |
| | |
| | | |
| | | |
| | | /// <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) |
| | | { |
| | |
| | | } |
| | | } |
| | | |
| | | |
| | | /// <summary> |
| | | /// 结束检修 |
| | | /// </summary>MaintenanceStatus 0代表检修完成 1代表检修中 |
| | | /// </summary> |
| | | /// <param name="account"></param> |
| | | /// <returns></returns> |
| | | public WebResponseContent StopMaintenanceTask(string account) |
| | |
| | | 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 = "你还没有开始检修,请先点击开始检修" }; |
| | | } |
| | | |
| | | 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, |