예제 #1
0
        public async Task <List <ResumeExportDto> > GetExportResumesAsync(QueryExportResumeInput input)
        {
            CancellationToken.ThrowIfCancellationRequested();
            if (input == null)
            {
                throw new ArgumentNullException(nameof(input));
            }

            var query = from a in _context.Resumes
                        join c in _context.Jobs on a.JobId equals c.Id
                        join d in _context.Users on a.CreatorUserId equals d.Id
                        join e in _context.Users on a.OwnerUserId equals e.Id
                        select new ResumeExportDto
            {
                Id            = a.Id,
                Name          = a.Name,
                JobId         = a.JobId,
                JobName       = c.Title,
                PhoneNumber   = a.PhoneNumber,
                CreationTime  = a.CreationTime,
                AuditStatus   = a.AuditStatus,
                PlatformName  = a.PlatformName,
                PlatformId    = a.PlatformId,
                CreatorUserId = a.CreatorUserId,
                OwnerUserId   = a.OwnerUserId,
                City          = a.City,
                Description   = a.Description
            };

            if (!string.IsNullOrEmpty(input.Keyword))
            {
                query = query.Where(w => w.Name.Contains(input.Keyword) ||
                                    w.PhoneNumber.Contains(input.Keyword) ||
                                    w.PlatformId.Contains(input.Keyword));
            }
            if (input.JobId.HasValue)
            {
                query = query.Where(w => w.JobId == input.JobId.Value);
            }
            if (input.CreatorUserId.HasValue)
            {
                query = query.Where(w => w.CreatorUserId == input.CreatorUserId.Value);
            }
            if (input.OwnerUserId.HasValue)
            {
                query = query.Where(w => w.OwnerUserId == input.OwnerUserId.Value);
            }
            if (input.StartTime.HasValue && input.EndTime.HasValue)
            {
                query = query.Where(w => w.CreationTime >= input.StartTime.Value && w.CreationTime <= input.EndTime.Value);
            }
            if (input.AuditStatus.HasValue)
            {
                query = query.Where(w => w.AuditStatus == (AuditStatus)input.AuditStatus.Value);
            }

            return(await query.ToListAsync(CancellationToken));
        }
예제 #2
0
        public async Task <IActionResult> Export(QueryExportResumeInput input)
        {
            var resumes = await _resumeQuerier.GetExportResumesAsync(input);

            var columnNames = new string[] {
                "简历编号",
                "职位",
                "姓名",
                "电话",
                "邮箱",
                "学历",
                "工作年限",
                "来源",
                "审核情况",
                "标签",
                "入库时间"
            };

            using (ExcelPackage package = new ExcelPackage())
            {
                var worksheet01 = package.Workbook.Worksheets.Add("简历列表");
                for (int i = 0; i < columnNames.Length; i++)
                {
                    worksheet01.Cells[1, i + 1].Value = columnNames[i];
                }
                worksheet01.Cells[1, 1, 1, 11].Style.Font.Bold = true;

                for (int i = 0; i < resumes.Count; i++)
                {
                    worksheet01.Cells[i + 2, 1].Value = resumes[i].No;
                    worksheet01.Cells[i + 2, 2].Value = resumes[i].JobName;
                    worksheet01.Cells[i + 2, 3].Value = resumes[i].Name;
                    worksheet01.Cells[i + 2, 4].Value = resumes[i].PhoneNumber;
                    worksheet01.Cells[i + 2, 5].Value = resumes[i].Email;
                    worksheet01.Cells[i + 2, 6].Value = resumes[i].Education;
                    worksheet01.Cells[i + 2, 7].Value = resumes[i].WorkIn;
                    worksheet01.Cells[i + 2, 8].Value = resumes[i].PlatformName;
                    worksheet01.Cells[i + 2, 9].Value = resumes[i].AuditStatus.GetDescription();
                    if (resumes[i].Tags != null)
                    {
                        worksheet01.Cells[i + 2, 10].Value = string.Join(' ', resumes[i].Tags);
                    }
                    else
                    {
                        worksheet01.Cells[i + 2, 10].Value = "";
                    }
                    worksheet01.Cells[i + 2, 11].Value = resumes[i].CreationTime.ToString("yyyy-MM-dd");
                }
                return(File(package.GetAsByteArray(), "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet", $"简历报告{DateTime.Now:yyyy-MM-dd_HH_mm_ss}.xlsx"));
            }
        }
예제 #3
0
        public async Task <IActionResult> Export(QueryExportResumeInput input)
        {
            var resumes = await _resumeQuerier.GetExportResumesAsync(input);

            var columnNames = new string[] {
                "简历编号",
                "来源",
                "职位",
                "简历",
                "审核情况",
                "姓名",
                "电话",
                "求职意向城市",
            };

            using (ExcelPackage package = new ExcelPackage())
            {
                var worksheet01 = package.Workbook.Worksheets.Add("简历列表");
                for (int i = 0; i < columnNames.Length; i++)
                {
                    worksheet01.Cells[1, i + 1].Value = columnNames[i];
                }
                worksheet01.Cells[1, 1, 1, 6].Style.Font.Bold = true;

                for (int i = 0; i < resumes.Count; i++)
                {
                    worksheet01.Cells[i + 2, 1].Value = resumes[i].PlatformName;
                    worksheet01.Cells[i + 2, 2].Value = resumes[i].JobName;
                    if (!string.IsNullOrEmpty(resumes[i].Description))
                    {
                        //添加简历记录
                        var name            = !string.IsNullOrEmpty(resumes[i].Name) ? resumes[i].Name : i.ToString();
                        var resumeWorksheet = package.Workbook.Worksheets.Add($"简历{name}");
                        AddHtmlToWorksheet(resumes[i].Description, resumeWorksheet, "简历列表!A1");

                        worksheet01.Cells[i + 2, 4].Style.Font.UnderLine = true;
                        worksheet01.Cells[i + 2, 4].Style.Font.Color.SetColor(Color.Blue);
                        worksheet01.Cells[i + 2, 4].Hyperlink = new ExcelHyperLink($"简历{name}!A1", "简历");
                    }

                    worksheet01.Cells[i + 2, 5].Value = resumes[i].AuditStatus.GetDescription();
                    worksheet01.Cells[i + 2, 6].Value = resumes[i].Name;
                    worksheet01.Cells[i + 2, 7].Value = resumes[i].PhoneNumber;
                    worksheet01.Cells[i + 2, 8].Value = resumes[i].City;
                }
                return(File(package.GetAsByteArray(), "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet", "简历报告.xlsx"));
            }
        }
예제 #4
0
        public async Task <List <ResumeExportDto> > GetExportResumesAsync(QueryExportResumeInput input)
        {
            CancellationToken.ThrowIfCancellationRequested();
            if (input == null)
            {
                throw new ArgumentNullException(nameof(input));
            }

            var query = from a in _context.Resumes
                        join b in _context.Investigations on a.Id equals b.ResumeId into bb
                        from bbb in bb.DefaultIfEmpty()
                        join c in _context.Jobs on a.JobId equals c.Id into cc
                        from ccc in cc.DefaultIfEmpty()
                        join d in _context.Users on a.CreatorUserId equals d.Id
                        join e in _context.Users on a.OwnerUserId equals e.Id
                        select new ResumeExportDto
            {
                Id            = a.Id,
                No            = a.No,
                Name          = a.Name,
                JobId         = ccc == null ? Guid.Empty : ccc.Id,
                JobName       = ccc == null ? "" : ccc.Title,
                PhoneNumber   = a.PhoneNumber,
                CreationTime  = a.CreationTime,
                CreatorUserId = a.CreatorUserId,
                OwnerUserId   = a.OwnerUserId,
                AuditStatus   = a.AuditStatus,
                PlatformName  = a.PlatformName,
                PlatformId    = a.PlatformId,
                Education     = a.Education,
                WorkIn        = a.WorkIn
            };

            if (!string.IsNullOrEmpty(input.Keyword))
            {
                query = query.Where(w => w.Name.Contains(input.Keyword) ||
                                    w.PhoneNumber.Contains(input.Keyword) ||
                                    w.PlatformId.Contains(input.Keyword) ||
                                    w.No.Contains(input.Keyword));
                if (Guid.TryParse(input.Keyword, out var id))
                {
                    query = query.Where(w => w.Id == id);
                }
            }

            if (input.JobId.HasValue)
            {
                query = query.Where(w => w.JobId == input.JobId.Value);
            }
            if (input.CreatorUserId.HasValue)
            {
                query = query.Where(w => w.CreatorUserId == input.CreatorUserId.Value);
            }
            if (input.OwnerUserId.HasValue && input.OwnerUserId != Guid.Empty)
            {
                query = query.Where(w => w.OwnerUserId == input.OwnerUserId.Value);
            }
            if (input.StartTime.HasValue && input.EndTime.HasValue)
            {
                query = query.Where(w => w.CreationTime >= input.StartTime.Value && w.CreationTime <= input.EndTime.Value);
            }
            if (input.AuditStatus.HasValue)
            {
                query = query.Where(w => w.AuditStatus == (AuditStatus)input.AuditStatus.Value);
            }
            if (!string.IsNullOrEmpty(input.Tag))
            {
                var tagQuery = from a in _context.Tags where a.Value == input.Tag select a;
                query = from a in query
                        join b in tagQuery on a.Id equals b.ResumeId
                        select a;
            }
            if (!string.IsNullOrEmpty(input.Education))
            {
                query = query.Where(w => w.Education == input.Education);
            }
            if (input.WorkInYears.HasValue)
            {
                query = query.Where(w => w.WorkIn <= DateTime.Now.AddYears(-input.WorkInYears.Value));
            }

            var resumes = await query.ToListAsync(CancellationToken);

            foreach (var resume in resumes)
            {
                var tags = await _context.Tags.Where(w => w.ResumeId == resume.Id).ToListAsync(CancellationToken);

                resume.Tags = tags.Select(s => s.Value).ToList();
            }
            return(resumes);
        }
예제 #5
0
 public async Task <List <ResumeExportDto> > GetExportResumesAsync(QueryExportResumeInput input)
 {
     return(await Task.FromResult <List <ResumeExportDto> >(null));
 }