using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using AutoMapper; using SqlSugar; using WIDESEAWCS_Core; using WIDESEAWCS_Core.BaseRepository; using WIDESEAWCS_Core.BaseServices; using WIDESEAWCS_ITelescopicService; using WIDESEAWCS_Model.Models; using WIDESEAWCS_DTO; using OfficeOpenXml.FormulaParsing.Excel.Functions.DateTime; using WIDESEAWCS_DTO.Telescopic; namespace WIDESEAWCS_TelescopicService { public class MaintenanceService : ServiceBase>, IMaintenanceService { public IRepository Repository => BaseDal; private readonly IRepository _user; public MaintenanceService(IRepository BaseDal, IRepository user) : base(BaseDal) { _user = user; } public WebResponseContent ShowMaintence(PaginationDTO pagination) { try { int totalCount = 0; var sys = _user.Db.Queryable(); var main = Db.Queryable(); var query = sys.InnerJoin((a, b) => a.UserName == b.UserAccount); if (!string.IsNullOrEmpty(pagination.searchKeyword)) { query = query.Where((a, b) => a.UserTrueName.Contains(pagination.searchKeyword) || a.UserName.Contains(pagination.searchKeyword) || a.CardNumber.ToString().Contains(pagination.searchKeyword)|| a.Userteam.Contains(pagination.searchKeyword) ); } var result= query .Select((a, b) => new { b.ID, a.UserTrueName, a.UserName, a.CardNumber, a.Userteam, a.HeadImageUrl, b.IsPossible }).ToPageList(pagination.pageIndex, pagination.pageSize, ref totalCount); return new WebResponseContent { Status = true, Data = new { TotalCount = totalCount,//总数 PageIndex = pagination.pageIndex,//页数 PageSize = pagination.pageSize,//一页多少个数据 Items = result } }; } catch (Exception ex) { return new WebResponseContent { Status = false, Data = ex.Message }; } } /// /// 模糊查询 /// /// /// /// /// public WebResponseContent PersonnelMonitoring(PaginationDTO pagination) { try { int totalCount = 0; var sys = _user.Db.Queryable(); var main = Db.Queryable(); var query = sys.InnerJoin((a, b) => a.UserName == b.UserAccount) .Where((a, b) => b.IsPossible == "true"); // 先筛选 IsPossible 为 true 的数据 // 如果提供了搜索关键字,则进行模糊查询 if (!string.IsNullOrEmpty(pagination.searchKeyword)) { query = query.Where((a, b) => a.UserTrueName.Contains(pagination.searchKeyword) || // 按真实姓名模糊搜索 a.Userteam.Contains(pagination.searchKeyword)); // 按用户班组模糊搜索 } // 如果提供了 status 参数,则按状态筛选 if (pagination.status.HasValue)//等价if(status!=null) { query = query.Where((a, b) => b.MaintenanceStatus == pagination.status.Value); } var result = query .Select((a, b) => new { a.UserTrueName, a.Userteam, a.HeadImageUrl, b.MaintenanceStatus, b.MaintenanceDate, b.IsPossible, }) .ToPageList(pagination.pageIndex, pagination.pageSize, ref totalCount); // 分页 return new WebResponseContent { Status = true, Data = new { TotalCount = totalCount, // 总数 PageIndex = pagination.pageIndex, // 当前页码 PageSize = pagination.pageSize, // 每页数据量 Items = result } }; } catch (Exception ex) { return new WebResponseContent { Status = false, Data = ex.Message }; } } public WebResponseContent RunOperation(int id, string ispossible) { try { var mon = BaseDal.QueryFirst(x => x.ID == id); if (ispossible == "true") { mon.IsPossible = "true"; mon.MaintenanceDate = DateTime.Now; BaseDal.UpdateData(mon); } else { mon.IsPossible = "false"; BaseDal.UpdateData(mon); } return new WebResponseContent { Status = true, Data = mon }; } catch (Exception ex) { return new WebResponseContent { Status = false, Message = "失败:" + ex }; } } public WebResponseContent ChangeTasState(int id) { try { var change = BaseDal.QueryFirst(x => x.ID == id); //将数据库中的int 值转为 枚举型 if (!Enum.IsDefined(typeof(Maint), change.MaintenanceStatus)) { return new WebResponseContent { Status = false, Message = "当前状态不合法,无法更新" }; } Maint Status = (Maint)change.MaintenanceStatus; //int ->枚举 switch (Status) { case Maint.待开始: change.MaintenanceStatus = (int)Maint.检修中; change.MaintenancStartTime = DateTime.Now; break; case Maint.检修中: change.MaintenanceStatus = (int)Maint.已完成; break; case Maint.已完成: change.MaintenancEendTime = DateTime.Now; return new WebResponseContent { Status = false, Message = "当前任务已完成" }; default: return new WebResponseContent { Status = false, Message = "更新失败" }; } return new WebResponseContent { Status = true, Data = change }; } catch (Exception ex) { return new WebResponseContent { Status = false, Message = "错误:" + ex }; } } /// /// 检修操作记录 /// /// 页数 /// 一页多少个数据 /// public WebResponseContent MaintenanceOperationRecord(PaginationDTO pagination) { try { int totalCount = 0; var sys = _user.Db.Queryable(); var main = Db.Queryable(); var query = sys.InnerJoin((a, b) => a.UserName == b.UserAccount); if (!string.IsNullOrEmpty(pagination.searchKeyword)) { query = query.Where((a, b) => a.UserTrueName.Contains(pagination.searchKeyword)|| a.Userteam.Contains(pagination.searchKeyword)|| a.HeadImageUrl.Contains(pagination.searchKeyword) ); } if (pagination.startDate.HasValue && pagination.endDate.HasValue) { query = query.Where((a, b) => b.MaintenancStartTime >= pagination.startDate.Value && b.MaintenancStartTime <= pagination.endDate.Value); } var result = query.Select((a, b) => new { a.UserTrueName, a.Userteam, a.HeadImageUrl, b.MaintenancStartTime, b.MaintenancEendTime, }).ToPageList(pagination.pageIndex, pagination.pageSize, ref totalCount); return new WebResponseContent { Status = true, Data = new { TotalCount = totalCount,//总数 PageIndex = pagination.pageIndex,//页数 PageSize = pagination.pageSize,//一页多少个数据 Items = result } }; } catch (Exception ex) { return new WebResponseContent { Status = false, Message = "错误信息:" + ex.Message }; } } /// /// 状态枚举 /// private enum Maint { //待检修=0, 待开始=0, 检修中=1, 已完成=2 } } }