qiuyao
2025-04-28 bb7f59a301a390e04443fa4745bd2afa1fa58e0f
ÏîÄ¿´úÂë/WCS/WIDESEAWCS_Server/WIDESEAWCS_TelescopicService/MaintenanceService.cs
@@ -4,11 +4,15 @@
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
{
@@ -22,69 +26,144 @@
            _user = user;
        }
        public WebResponseContent ShowMaintence()
        public WebResponseContent ShowMaintence(PaginationDTO pagination)
        {
            try
            {
                var sys = _user.QueryData();
                var main = BaseDal.QueryData();
                int totalCount = 0;
                var sys = _user.Db.Queryable<Sys_User>();
                var main = Db.Queryable<Dt_Maintenance>();
                var result = sys.Join(main,
                    u => u.UserName,
                    m => m.UserAccount,
                    (u, m) => new
                var query = sys.InnerJoin<Dt_Maintenance>((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
                    {
                        u.UserTrueName,
                        u.UserName,
                        u.CardNumber,
                        u.RoleName,
                        u.HeadImageUrl,
                        m.IsPossible,
                    });
                return new WebResponseContent { Status = true, Data = result };
                        TotalCount = totalCount,//总数
                        PageIndex = pagination.pageIndex,//页数
                        PageSize = pagination.pageSize,//一页多少个数据
                        Items = result
                    }
                };
            }
            catch (Exception ex)
            {
                return new WebResponseContent { Status = false, Data = ex };
                return new WebResponseContent { Status = false, Data = ex.Message };
            }
        }
        public WebResponseContent PersonnelMonitoring(bool ispossible)
        /// <summary>
        /// äººå‘˜ç›‘控
        /// </summary>
        /// <param name="pageIndex"></param>
        /// <param name="pageSize"></param>
        /// <param name="searchKeyword"></param>
        /// <returns></returns>
        public WebResponseContent PersonnelMonitoring(PaginationDTO pagination)
        {
            try
            {
                var sys = _user.QueryData();
                var main = BaseDal.QueryData();
                int totalCount = 0;
                var sys = _user.Db.Queryable<Sys_User>();
                var main = Db.Queryable<Dt_Maintenance>();
                var result = sys.Join(main,
                    u => u.UserName,
                    m => m.UserAccount,
                    (u, m) => new
                var query = sys.InnerJoin<Dt_Maintenance>((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
                    {
                        u.UserTrueName,
                        u.RoleName,
                        u.HeadImageUrl,
                        m.MaintenanceStatus,
                        m.MaintenanceDate,
                        m.IsPossible,
                    }).Where(x=>x.IsPossible== ispossible);
                return new WebResponseContent { Status = true, Data = result };
                        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 };
                return new WebResponseContent { Status = false, Data = ex.Message };
            }
        }
        public WebResponseContent RunOperation(int id)
        /// <summary>
        /// æ›´æ–°çŠ¶æ€æ˜¯å¦å…è®¸è¿›å…¥æ£€ä¿®
        /// </summary>
        /// <param name="id"></param>
        /// <param name="ispossible"></param>
        /// <returns></returns>
        public WebResponseContent RunOperation(int id, string  ispossible)
        {
            try
            {
                var mon = BaseDal.QueryFirst(x => x.ID == id);
                mon.IsPossible = true;
                BaseDal.UpdateData(mon);
                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)
@@ -94,6 +173,12 @@
            }
        }
        /// <summary>
        /// æ›´æ”¹çŠ¶æ€
        /// </summary>
        /// <param name="id"></param>
        /// <returns></returns>
        public WebResponseContent ChangeTasState(int id)
        {
            try
@@ -134,6 +219,202 @@
        }
        /// <summary>
        /// æ£€ä¿®æ“ä½œè®°å½•
        /// </summary>
        /// <param name="pageIndex">页数</param>
        /// <param name="pageSize">一页多少个数据</param>
        /// <returns></returns>
        public WebResponseContent MaintenanceOperationRecord(PaginationDTO pagination)
        {
            try
            {
                int totalCount = 0;
                var sys = _user.Db.Queryable<Sys_User>();
                var main = Db.Queryable<Dt_Maintenance>();
                //模糊查询
                var query = sys.InnerJoin<Dt_Maintenance>((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);
                }
                //排序
                if (!string.IsNullOrEmpty(pagination.sortField))
                {
                    var isAcs = pagination.sortOrder?.ToLower() == "asc";
                    query = pagination.sortField.ToLower() switch
                    {
                        "maintenancstarttime" => isAcs ? query.OrderBy((a, b) => b.MaintenancStartTime) : query.OrderByDescending((a, b) => b.MaintenancStartTime),
                        "maintenancenendtime" => isAcs ? query.OrderBy((a, b) => b.MaintenancEendTime) : query.OrderByDescending((a, b) => b.MaintenancEendTime),
                        _ => query.OrderByDescending((a, b) => b.Creater) // é»˜è®¤æŒ‰åˆ›å»ºæ—¶é—´é™åº
                    };
                }
                else
                {
                  query=query.OrderByDescending((a, b) => b.Creater);
                }
                //返回结果
                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 };
            }
        }
        /// <summary>
        /// çœ‹ä»Šå¤©çš„æ£€ä¿®ä»»åŠ¡
        /// </summary>
        /// <param name="id"></param>
        /// <returns></returns>
        public WebResponseContent MaintenanceTasksOfTheDay(string account)
        {
            try
            {
                var today = DateTime.Today;               // ä»Šå¤©çš„零点
                var tomorrow = today.AddDays(1);         // æ˜Žå¤©çš„零点
                var query = _user.Db.Queryable<Sys_User>()
                    .InnerJoin<Dt_Maintenance>((a, b) => a.UserName == b.UserAccount)
                    .Where((a, b) => b.IsPossible == "true" && b.UserAccount == account &&
                    b.MaintenanceDate >= today && b.MaintenanceDate < tomorrow).Select((a, b) => new
                    {
                        b.ID,
                        a.UserTrueName,
                        a.UserName,
                        a.CardNumber,
                        a.Userteam,
                        a.HeadImageUrl,
                        b.IsPossible,
                        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>
        /// <returns></returns>
        public WebResponseContent StartMaintenceTask(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)
                {
                    return new WebResponseContent { Status = false, Message = "未找到今日的维护任务记录" };
                }
                maint.MaintenancStartTime = DateTime.Now;
                BaseDal.UpdateData(maint);
                return new WebResponseContent { Status = true, Data = maint };
            }
            catch (Exception ex)
            {
                return new WebResponseContent { Status = false, Message = "错误信息:" + ex.Message };
            }
        }
        /// <summary>
        /// ç»“束检修
        /// </summary>
        /// <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)
                {
                    return new WebResponseContent { Status = false, Message = "未找到可用的维护任务记录" };
                }
                // ä¿®æ”¹å…¶ç»“束时间
                maint.MaintenancEendTime = DateTime.Now;
                maint.IsPossible = "ok";//ok就代表完成了
                BaseDal.UpdateData(maint);
                return new WebResponseContent { Status = true, Data = maint };
            }
            catch (Exception ex)
            {
                return new WebResponseContent { Status = false, Message = "错误信息:" + ex.Message };
            }
        }
        /// <summary>
        /// çŠ¶æ€æžšä¸¾
        /// </summary>
        private enum Maint