yanjinhui
2025-06-05 fcd49db2ee33ee2e1d33e5a41e53d9897a8a3b0f
project/WCS/WIDESEAWCS_Server/WIDESEAWCS_TelescopicService/MaintenanceService.cs
@@ -23,13 +23,13 @@
        public IRepository<Dt_Maintenance> Repository => BaseDal;
        public readonly IRepository<Dt_MaintenanceTeam> _team;
        private readonly IRepository<Sys_User> _user;
        private readonly IRepository<Sys_Role> _role;
        public MaintenanceService(IRepository<Sys_Role> role,IRepository<Dt_Maintenance> BaseDal, IRepository<Sys_User> user, IRepository<Dt_MaintenanceTeam> team) : base(BaseDal)
        public MaintenanceService(IRepository<Dt_Maintenance> BaseDal, IRepository<Sys_User> user, IRepository<Dt_MaintenanceTeam> team) : base(BaseDal)
        {
            _user = user;
            _team = team;
            _role = role;
        }
@@ -116,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
@@ -353,23 +353,7 @@
                  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
                {
@@ -604,13 +588,22 @@
            try
            {
                var user = BaseDal.QueryData();//检修表
                var Role = _role.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 = "没有找到该用户" };
                }
                // 查找该用户在 _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)//如果该用户不是班长,那么要等班长先做,他才可以做
                {
@@ -621,6 +614,10 @@
                    }
                }
                if (true)
                {
                }
                //如果满足下面的条件就开始
                maint.MaintenancStartTime = DateTime.Now;//记录开始时间
                maint.MaintenanceStatus = 1;//更改状态
@@ -628,6 +625,8 @@
                //插入记录表
                var recording = new Dt_MaintenanceTeam  //添加记录
                {
                    Account = account,
                    MaintenanceStatus=1,
                    OperatorName = sysuer.UserTrueName,
                    TeamName = sysuer.RoleName,
                    DistributionTime = DateTime.Now,
@@ -660,6 +659,17 @@
                {
                    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 = "你还没有开始检修,请先点击开始检修" };
                }
                if (maint.IsLeader == 1)//如果该用户是班长,那么要等全部人都检修完成,他才可以结束检修
                {
                    //先查找所有用户的组是那个组的,组员状态有一个不是1               
@@ -675,14 +685,15 @@
                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);
                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 = "完成检修" };
            }
@@ -692,6 +703,29 @@
            }
        }
        /// <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>
        /// 状态枚举
        /// </summary>