using DocumentServiceAPI.Application.Repository; using DocumentServiceAPI.Application.UserAndLogin.Services.Interfaces; using DocumentServiceAPI.Application.UserAndLogin.ViewMode; using DocumentServiceAPI.Application.WorkRemind.Services.Interfaces; using DocumentServiceAPI.Application.WorkRemind.ViewMode; using DocumentServiceAPI.Model; using DocumentServiceAPI.Model.cyDocumentModel; using DocumentServiceAPI.Model.UserInfoModel; using DocumentServiceAPI.Utility; using Furion.Logging.Extensions; using Furion.Schedule; using MapsterMapper; using SqlSugar.Extensions; using System; using System.Collections.Generic; using System.Linq; using System.Security.Claims; using System.Text; using System.Threading.Tasks; namespace DocumentServiceAPI.Application.WorkRemind.Services { public class WorkRemindService : IWorkRemindService, IScoped { private ISqlSugarClient _db { get; set; } private WorkRemindRepository _workRemindRepository { get; set; } private IMapper _mapper { get; set; } public WorkRemindService(ISqlSugarClient db, WorkRemindRepository workRemindRepository, IMapper mapper) { _db = db; _workRemindRepository = workRemindRepository; _mapper = mapper; } /// /// 提醒详情 /// /// /// public Document_WorkRemind GetWorkRemindInfo(int ID) { var ret = _db.Queryable().Where(x => x.WorkRemindId == ID).First(); return ret; } public bool UpEmployee(Document_WorkRemind dw) { dw.LastUpTime = DateTime.Now; return _workRemindRepository.Update(dw); } public bool InEmployee(Document_WorkRemind dw) { var a = GetJwtInfo(); dw.LastUpTime = DateTime.Now; dw.CreatEmployeeId = a.EID; var tentlist = _db.Queryable() .Where(x => x.EmployeeId == a.EID ).First(); if (tentlist != null) { dw.CreatEmployeeName = tentlist.EmployeeName; } return _workRemindRepository.Insert(dw); } public bool DelEmployee(int ID) { var workRemind = _workRemindRepository.GetById(ID); return _workRemindRepository.Delete(workRemind); } /// /// 获取提醒列表 /// /// /// public PageResult postWorkRemindList(WorkRemindPageSearch page) { var a = GetJwtInfo(); SqlSugar.PageModel pg = new SqlSugar.PageModel(); pg.PageSize = page.PageSize; pg.PageIndex = page.PageIndex; page.ToEmployeeId = a.EID; int total = 0; PageResult result = new PageResult(); //result.Items = _db.Queryable().Where(x => ((page.ToEmployeeId ==null || page.ToEmployeeId>0 ) || x.ToEmployeeId == page.ToEmployeeId) //&& (!page.WorkRemindTimeStart.HasValue || x.WorkRemindTime >= page.WorkRemindTimeStart.Value) // && (!page.WorkRemindTimeEnd.HasValue || x.WorkRemindTime <= page.WorkRemindTimeEnd.Value) //) // .OrderByDescending(x => x.WorkRemindTime).ToPageList(page.PageIndex, page.PageSize, ref total); result.Items = _db.Queryable() .WhereIF(page.ToEmployeeId != null && page.ToEmployeeId > 0 , x => (x.ToEmployeeId == page.ToEmployeeId) ) .WhereIF(page.WorkRemindTimeStart.HasValue, x => x.WorkRemindTime >= page.WorkRemindTimeStart.Value) .WhereIF(page.WorkRemindTimeEnd.HasValue, x=>x.WorkRemindTime <= page.WorkRemindTimeEnd.Value) .WhereIF(!string.IsNullOrEmpty(page.ProjectName), x => x.ProjectName.Contains(page.ProjectName)) .WhereIF(!string.IsNullOrEmpty(page.WorkRemindContent), x => x.WorkRemindContent.Contains(page.WorkRemindContent)) .OrderByDescending(x => x.WorkRemindTime).ToPageList(page.PageIndex, page.PageSize, ref total); result.TotalCount = total; result.TotalPage = total%page.PageSize==0 ? total / page.PageSize : total / page.PageSize + 1; return result; } /// /// 获取em列表 /// /// public List GetUEmployeeInfoList() { var a = GetJwtInfo(); //if (a.EID != null) // throw Oops.Oh($"没有权限"); var tentlist = _db.Queryable((et, ei) => new JoinQueryInfos ( JoinType.Right, ei.EmployeeId == et.EmployeeID ) ) .Where((et, ei) => (et.TenantID == a.TEID) && (ei.IsWork == null || ei.IsWork == 1)) .Select((et, ei) => new Document_EmployeeInfo { EmployeeId = ei.EmployeeId, EmployeeName = ei.EmployeeName, Job = ei.Job, Phone = ei.Phone, IsWork = ei.IsWork, LeaveTime = ei.LeaveTime, CardPositive = ei.CardPositive, CardPositiveVersionNo = ei.CardPositiveVersionNo, CardPositiveSize = ei.CardPositiveSize, LastUpdateTime = ei.LastUpdateTime, LastUpdateName = ei.LastUpdateName, UserName = ei.UserName, UserPassWord = ei.UserPassWord, LoginTime = ei.LoginTime, IsLogin = ei.IsLogin, AdviseFlag = ei.AdviseFlag, UserId = ei.UserId, } ).ToList(); return tentlist; } /// /// 获取Jwt相关信息 /// public JwtInfo GetJwtInfo() { JwtInfo jwtInfo = new JwtInfo(); jwtInfo.LogInSource = (LogInFrom)(App.User?.FindFirstValue("loginfrom")?.ObjToInt() ?? 0); jwtInfo.EID = App.User?.FindFirstValue("eid")?.ObjToInt(); jwtInfo.UID = App.User?.FindFirstValue("uid")?.ObjToInt(); jwtInfo.TEID = App.User?.FindFirstValue("teid")?.ObjToInt(); var guid = App.User?.FindFirstValue("jid"); jwtInfo.JID = string.IsNullOrEmpty(guid) ? null : new Guid(guid); return jwtInfo; } /// /// 查询数据字典 /// /// public List GetDictionaryList() { var ret = _db.Queryable().ToList(); return ret; } /// /// 查询省市 /// /// /// public List GetCitySiteList(int CityLevel) { var ret = _db.Queryable().WhereIF(CityLevel>0,x=>x.CityLevel == CityLevel).ToList(); return ret; } /// /// 获取em列表 /// /// /// /// public List GetEmployeeListByStatus(int isWork, int Role) { var a = GetJwtInfo(); //if (a.EID != null) // throw Oops.Oh($"没有权限"); var tentlist = _db.Queryable((ei, et, er) => new JoinQueryInfos ( JoinType.Inner, ei.EmployeeId == et.EmployeeID && et.TenantID == a.TEID, JoinType.Left, ei.EmployeeId == er.EmployeeId ) ) .Where((ei, et, er) => et.TenantID == a.TEID) .WhereIF(isWork >0,(ei, et, er) => ei.IsWork == isWork) .WhereIF(Role > 0, (ei, et, er) => er.RoleType == Role) .Select(expression: (ei, et, er) => new DocumentEmployeeInfoDTO { EmployeeId = ei.EmployeeId, EmployeeName = ei.EmployeeName, Job = ei.Job, Phone = ei.Phone, IsWork = ei.IsWork, LeaveTime = ei.LeaveTime, CardPositive = ei.CardPositive, CardPositiveVersionNo = ei.CardPositiveVersionNo, CardPositiveSize = ei.CardPositiveSize, LastUpdateTime = ei.LastUpdateTime, LastUpdateName = ei.LastUpdateName, UserName = ei.UserName, UserPassWord = ei.UserPassWord, LoginTime = ei.LoginTime, IsLogin = ei.IsLogin, AdviseFlag = ei.AdviseFlag, UserId = ei.UserId, } ).ToList(); return tentlist; } } }