using DocumentServiceAPI.Application.ProjectInfo.Services.Interfaces; using DocumentServiceAPI.Application.ProjectInfo.ViewMode; using DocumentServiceAPI.Application.Repository; using DocumentServiceAPI.Model.cyDocumentModel; using DocumentServiceAPI.Model.UserInfoModel; using DocumentServiceAPI.Utility; using MapsterMapper; using Microsoft.AspNetCore.Mvc.RazorPages; using NetTaste; using SqlSugar.Extensions; using System; using System.Collections.Generic; using System.Data; using System.Linq; using System.Runtime.Intrinsics.Arm; using System.Security.Claims; using System.Text; using System.Threading.Tasks; namespace DocumentServiceAPI.Application.ProjectInfo.Services { public class SheZhiService : ISheZhiService, IScoped { private ISqlSugarClient _db { get; set; } private ProjectInfoRepository _projectInfoRepository { get; set; } private IMapper _mapper { get; set; } public SheZhiService(ISqlSugarClient db, ProjectInfoRepository projectInfoRepository, IMapper mapper) { _db = db; _projectInfoRepository = projectInfoRepository; _mapper = mapper; } public PageResult postDelegatePersonList(DocumentProjectInfoPageSearch page) { var aaa = 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(a => a.TenantID == aaa.TEID) //文件名称 .WhereIF(!string.IsNullOrEmpty(page.delegateName), a => a.DelegateName.Contains(page.delegateName)) .WhereIF(page.isUse > 0, a => a.IsUse == page.isUse) .OrderByDescending(a => a.DelegateId).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; } public bool GetDelDocumentDelegatePersonInfo(int ID) { _db.Deleteable().Where(x => x.DelegateId == ID).ExecuteCommand(); return true; } public bool SaveDocumentDelegatePersonInfo(Document_DelegatePersonInfo dp) { if (dp.DelegateId > 0) { _db.Updateable(dp).ExecuteCommand(); } else { _db.Insertable(dp).ExecuteCommand(); } return true; } public Document_DelegatePersonInfo GetDocumentDelegatePersonInfo(int ID) { var result = _db.Queryable().Where(x => x.DelegateId == ID).First();//执行查询 return result; } public PageResult postDocumentTenderUnitList(DocumentProjectInfoPageSearch page) { var aaa = 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(a => a.TenantId == aaa.TEID) //文件名称 .WhereIF(!string.IsNullOrEmpty(page.delegateName), a => a.UnitName.Contains(page.delegateName)) .WhereIF(page.isUse > 0, a => a.IsUsed == page.isUse) .OrderByDescending(a => a.UnitId).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; } public bool SaveDocumentTenderUnitInfo(Document_TenderUnit dp) { if (dp.UnitId > 0) { _db.Updateable(dp).ExecuteCommand(); } else { _db.Insertable(dp).ExecuteCommand(); } return true; } public Document_TenderUnit GetDocumentTenderUnitInfo(int ID) { var result = _db.Queryable().Where(x => x.UnitId == ID).First();//执行查询 return result; } public PageResult postDocumentEmployeeInfoList(DocumentProjectInfoPageSearch page) { var aaa = 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(); var document_EmployeeInfos = _db.Queryable((a, b) => new JoinQueryInfos ( JoinType.Inner, a.EmployeeId == b.EmployeeID && b.TenantID == aaa.TEID ) ) //文件名称 .WhereIF(!string.IsNullOrEmpty(page.txtName), (a, b) => a.EmployeeName.Contains(page.txtName)) .OrderByDescending((a, b) => a.EmployeeId).ToPageList(page.PageIndex, page.PageSize, ref total); var documentEmployeeInfoDTOs = _mapper.Map>(document_EmployeeInfos); if (documentEmployeeInfoDTOs != null && documentEmployeeInfoDTOs.Count > 0) { var ret = _db.Queryable().ToList(); foreach (var documentEmployeeInfoDTO in documentEmployeeInfoDTOs) { if (documentEmployeeInfoDTO.IsWork.HasValue && documentEmployeeInfoDTO.IsWork.Value>0) { documentEmployeeInfoDTO.IsWorkName = "在职"; } else { documentEmployeeInfoDTO.IsWorkName = "离职"; } if (documentEmployeeInfoDTO.IsWork.HasValue && documentEmployeeInfoDTO.IsWork.Value == 1) { documentEmployeeInfoDTO.LeaveTimeName = ""; } else { if (documentEmployeeInfoDTO.LeaveTime.HasValue) { documentEmployeeInfoDTO.LeaveTimeName = documentEmployeeInfoDTO.LeaveTime.Value.ToString("yyyy-MM-dd"); } else { documentEmployeeInfoDTO.LeaveTimeName = ""; } } var document_EmployeeRole = ret.Where(x => x.EmployeeId == documentEmployeeInfoDTO.EmployeeId && x.RoleType == 1).FirstOrDefault(); if(document_EmployeeRole != null) { documentEmployeeInfoDTO.BMRID = "是"; } else { documentEmployeeInfoDTO.BMRID = "否"; } var document_EmployeeRole1 = ret.Where(x => x.EmployeeId == documentEmployeeInfoDTO.EmployeeId && x.RoleType == 2).FirstOrDefault(); if (document_EmployeeRole1 != null) { documentEmployeeInfoDTO.BSZZRID = "是"; } else { documentEmployeeInfoDTO.BSZZRID = "否"; } var document_EmployeeRole2 = ret.Where(x => x.EmployeeId == documentEmployeeInfoDTO.EmployeeId && x.RoleType == 3).FirstOrDefault(); if (document_EmployeeRole2 != null) { documentEmployeeInfoDTO.TBRID = "是"; } else { documentEmployeeInfoDTO.TBRID = "否"; } } } result.Items = documentEmployeeInfoDTOs; result.TotalCount = total; result.TotalPage = total % page.PageSize == 0 ? total / page.PageSize : total / page.PageSize + 1; return result; } public bool GetDelDocumentEmployeeInfoInfo(int ID) { _db.Deleteable().Where(x => x.EmployeeID == ID).ExecuteCommand(); _db.Deleteable().Where(x => x.EmployeeId == ID).ExecuteCommand(); _db.Deleteable().Where(x => x.EmployeeId == ID).ExecuteCommand(); return true; } public bool SaveDocumentEmployeeInfoInfo(DocumentEmployeeInfoDTO dp) { var document_EmployeeInfo = _mapper.Map(dp); if (dp.EmployeeId > 0) { _db.Updateable(document_EmployeeInfo).ExecuteCommand(); } else { var aaa = GetJwtInfo(); dp.EmployeeId = _db.Insertable(document_EmployeeInfo).ExecuteReturnIdentity(); EmployeeAtTenant employeeAtTenant = new EmployeeAtTenant(); employeeAtTenant.EmployeeID = dp.EmployeeId; employeeAtTenant.TenantID = aaa.TEID.Value; _db.Insertable(employeeAtTenant).ExecuteCommand(); } if (!string.IsNullOrEmpty(dp.BMRID) && !string.IsNullOrEmpty(dp.BSZZRID) && !string.IsNullOrEmpty(dp.TBRID)) { _db.Deleteable().Where(x => x.EmployeeId == dp.EmployeeId).ExecuteCommand(); if (dp.BMRID == "是") { Document_EmployeeRole document_EmployeeRole = new Document_EmployeeRole(); document_EmployeeRole.EmployeeId = dp.EmployeeId; document_EmployeeRole.RoleType = 1; _db.Insertable(document_EmployeeRole).ExecuteCommand(); } if (dp.BSZZRID == "是") { Document_EmployeeRole document_EmployeeRole = new Document_EmployeeRole(); document_EmployeeRole.EmployeeId = dp.EmployeeId; document_EmployeeRole.RoleType = 2; _db.Insertable(document_EmployeeRole).ExecuteCommand(); } if (dp.TBRID == "是") { Document_EmployeeRole document_EmployeeRole = new Document_EmployeeRole(); document_EmployeeRole.EmployeeId = dp.EmployeeId; document_EmployeeRole.RoleType = 3; _db.Insertable(document_EmployeeRole).ExecuteCommand(); } } return true; } public DocumentEmployeeInfoDTO GetDocumentEmployeeInfoInfo(int ID) { var result = _db.Queryable().Where(x => x.EmployeeId == ID).First();//执行查询 var documentEmployeeInfoDTO = _mapper.Map(result); if (documentEmployeeInfoDTO != null ) { var ret = _db.Queryable().ToList(); if (documentEmployeeInfoDTO.IsWork.HasValue && documentEmployeeInfoDTO.IsWork.Value > 0) { documentEmployeeInfoDTO.IsWorkName = "在职"; } else { documentEmployeeInfoDTO.IsWorkName = "离职"; } if (documentEmployeeInfoDTO.IsWork.HasValue && documentEmployeeInfoDTO.IsWork.Value == 1) { documentEmployeeInfoDTO.LeaveTimeName = ""; } else { if (documentEmployeeInfoDTO.LeaveTime.HasValue) { documentEmployeeInfoDTO.LeaveTimeName = documentEmployeeInfoDTO.LeaveTime.Value.ToString("yyyy-MM-dd"); } else { documentEmployeeInfoDTO.LeaveTimeName = ""; } } var document_EmployeeRole = ret.Where(x => x.EmployeeId == documentEmployeeInfoDTO.EmployeeId && x.RoleType == 1).FirstOrDefault(); if (document_EmployeeRole != null) { documentEmployeeInfoDTO.BMRID = "是"; } else { documentEmployeeInfoDTO.BMRID = "否"; } var document_EmployeeRole1 = ret.Where(x => x.EmployeeId == documentEmployeeInfoDTO.EmployeeId && x.RoleType == 2).FirstOrDefault(); if (document_EmployeeRole1 != null) { documentEmployeeInfoDTO.BSZZRID = "是"; } else { documentEmployeeInfoDTO.BSZZRID = "否"; } var document_EmployeeRole2 = ret.Where(x => x.EmployeeId == documentEmployeeInfoDTO.EmployeeId && x.RoleType == 3).FirstOrDefault(); if (document_EmployeeRole2 != null) { documentEmployeeInfoDTO.TBRID = "是"; } else { documentEmployeeInfoDTO.TBRID = "否"; } } return documentEmployeeInfoDTO; } public Document_EmployeeInfo GetDocumentEmployeeInfoByName(string EmployeeName) { var aaa = GetJwtInfo(); var documentEmployeeInfoDTO = _db.Queryable((a, b) => new JoinQueryInfos ( JoinType.Inner, a.EmployeeId == b.EmployeeID && b.TenantID == aaa.TEID ) ) //文件名称 .Where((a, b) => a.EmployeeName == EmployeeName).First(); return documentEmployeeInfoDTO; } public Document_EmployeeInfo GetDocumentEmployeeInfoByLoginName(string textUserName) { var aaa = GetJwtInfo(); var documentEmployeeInfoDTO = _db.Queryable((a, b) => new JoinQueryInfos ( JoinType.Inner, a.EmployeeId == b.EmployeeID && b.TenantID == aaa.TEID ) ) //文件名称 .Where((a, b) => a.UserName == textUserName).First(); return documentEmployeeInfoDTO; } public PageResult GetDocumentPerformanceInfoListByPaper(DocumentProjectInfoPageSearch page) { var aaa = GetJwtInfo(); List m_Document_PerformanceInfoList = new List(); 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(); DateTime txtWorkStartTime = string.IsNullOrEmpty(page.txtWorkStartTime) ? DateTime.MinValue : DateTime.Parse(page.txtWorkStartTime); DateTime txtWorkEndTime = string.IsNullOrEmpty(page.txtWorkEndTime) ? DateTime.MaxValue : DateTime.Parse(page.txtWorkEndTime); var dt_Signup = _db.Queryable((a, b) => new JoinQueryInfos ( JoinType.Inner, a.ProjectId == b.ProjectId && b.TenantID == aaa.TEID ) ) .Where((a, b) => a.IsSignup == 1) //文件名称 .WhereIF(!string.IsNullOrEmpty(page.txtWorkStartTime), (a, b) => a.SignupTime >= txtWorkStartTime) .WhereIF(!string.IsNullOrEmpty(page.txtWorkEndTime), (a, b) => a.SignupTime <= txtWorkEndTime) .WhereIF(!string.IsNullOrEmpty(page.txtEmployeeId) && page.txtEmployeeId != "请选择" , (a, b) => a.SignupPerson == page.txtEmployeeId) .WhereIF(!string.IsNullOrEmpty(page.projectName), (a, b) => b.ProjectName.Contains(page.projectName)) .WhereIF(!string.IsNullOrEmpty(page.txtWorkItem), (a, b) => "报名" == page.txtWorkItem) .Select((a, b) =>new Document_PerformanceInfo { WorkTime = a.SignupTime, EmployeeName = a.SignupPerson, Price = a.SignupAllowance, ProjectName = b.ProjectName, WorkItem = "报名", }).ToList() ; var dt_Document = _db.Queryable((a, b,c) => new JoinQueryInfos ( JoinType.Inner, a.ProjectId == b.ProjectId && b.TenantID == aaa.TEID, JoinType.Left, a.ProjectId == c.ProjectId ) ) .Where((a, b, c) => a.DocumentStatus == 17) //文件名称 .WhereIF(!string.IsNullOrEmpty(page.txtWorkStartTime), (a, b, c) => c.LastUpdateTime >= txtWorkStartTime) .WhereIF(!string.IsNullOrEmpty(page.txtWorkEndTime), (a, b, c) => c.LastUpdateTime <= txtWorkEndTime) .WhereIF(!string.IsNullOrEmpty(page.txtEmployeeId) && page.txtEmployeeId != "请选择", (a, b) => a.DocumentManager == page.txtEmployeeId) .WhereIF(!string.IsNullOrEmpty(page.projectName), (a, b, c) => b.ProjectName.Contains(page.projectName)) .WhereIF(!string.IsNullOrEmpty(page.txtWorkItem), (a, b, c) => "标书制作" == page.txtWorkItem) .Select((a, b, c) => new Document_PerformanceInfo { WorkTime = c.LastUpdateTime, EmployeeName = a.DocumentManager, Price = a.DocumentPrice, ProjectName = b.ProjectName, WorkItem = "标书制作", }).ToList() ; var dt_Tender = _db.Queryable((a, b) => new JoinQueryInfos ( JoinType.Inner, a.ProjectId == b.ProjectId && b.TenantID == aaa.TEID ) ) .Where((a, b) => a.TenderStatus == 1) //文件名称 .WhereIF(!string.IsNullOrEmpty(page.txtWorkStartTime), (a, b) => b.TenderTime >= txtWorkStartTime) .WhereIF(!string.IsNullOrEmpty(page.txtWorkEndTime), (a, b) => b.TenderTime <= txtWorkEndTime) .WhereIF(!string.IsNullOrEmpty(page.txtEmployeeId) && page.txtEmployeeId != "请选择", (a, b) => a.TenderPerson == page.txtEmployeeId) .WhereIF(!string.IsNullOrEmpty(page.projectName), (a, b) => b.ProjectName.Contains(page.projectName)) .WhereIF(!string.IsNullOrEmpty(page.txtWorkItem), (a, b) => "投标" == page.txtWorkItem) .Select((a, b) => new Document_PerformanceInfo { WorkTime = b.TenderTime, EmployeeName = a.DocumentManager, Price = a.DocumentPrice, ProjectName = b.ProjectName, WorkItem = "投标", }).ToList(); var newDataTable = new List(); object[] obj = new object[newDataTable.Count]; for (int i = 0; i < dt_Signup.Count; i++) { newDataTable.Add(dt_Signup[i]); } for (int i = 0; i < dt_Document.Count; i++) { newDataTable.Add(dt_Document[i]); } for (int i = 0; i < dt_Tender.Count; i++) { newDataTable.Add(dt_Tender[i]); } for (int i = 0; i < newDataTable.Count; i++) { Document_PerformanceInfo m_Document_PerformanceInfo = new Document_PerformanceInfo(); m_Document_PerformanceInfo.EmployeeId = 0; m_Document_PerformanceInfo.Id = 0; m_Document_PerformanceInfo.ProjectName = newDataTable[i].ProjectName; m_Document_PerformanceInfo.WorkItem = newDataTable[i].WorkItem; if (newDataTable[i].Price.HasValue) { m_Document_PerformanceInfo.Price = newDataTable[i].Price; } else { m_Document_PerformanceInfo.Price = 0; } m_Document_PerformanceInfo.EmployeeName = newDataTable[i].EmployeeName; m_Document_PerformanceInfo.WorkTime = newDataTable[i].WorkTime; if (m_Document_PerformanceInfo.Price.HasValue && m_Document_PerformanceInfo.Price.Value>0) { m_Document_PerformanceInfoList.Add(m_Document_PerformanceInfo); result.AllPageMoney += m_Document_PerformanceInfo.Price.Value; } } ; //.ToPageList(page.PageIndex, page.PageSize, ref total); var document_PerformanceInfos = m_Document_PerformanceInfoList.Skip(page.PageIndex - 1).Take(page.PageSize).ToList(); foreach (var item in document_PerformanceInfos) { result.NowPageMoney += item.Price.Value; } result.Items = document_PerformanceInfos; result.TotalCount = total; result.TotalPage = total % page.PageSize == 0 ? total / page.PageSize : total / page.PageSize + 1; return result; } /// /// 获取Jwt相关信息 /// public Model.JwtInfo GetJwtInfo() { Model.JwtInfo jwtInfo = new Model.JwtInfo(); jwtInfo.LogInSource = (Model.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; } } }