using System; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Mvc; using New_College.Model; using New_College.Model.ViewModels; using New_College.IServices; using New_College.Model.Models; using New_College.Services; using System.Linq.Expressions; using New_College.IRepository.UnitOfWork; using New_College.Repository.UnitOfWork; using SqlSugar; using New_College.Common; using Microsoft.AspNetCore.Authorization; using StackExchange.Profiling.Internal; using Newtonsoft.Json; using NPOI.SS.Formula.Functions; namespace New_College.Api.Controllers.Front { /// /// PC志愿表管理 /// [Route("api/front/[controller]")] [ApiController] public class PcVolunteerController : ControllerBase { private readonly IU_VolunteerTableServices _VolunteerTableServices; private readonly IU_VolunteerTableDetailServices _VolunteerTableDetailServices; private readonly IUnitOfWork _unitOfWork; private readonly IT_TbSNeedDataInfoServices _TbSNeedDataInfoServices; public PcVolunteerController(IU_VolunteerTableServices volunteerTableServices, IU_VolunteerTableDetailServices volunteerTableDetailServices, IUnitOfWork unitOfWork, IT_TbSNeedDataInfoServices tbSNeedDataInfoServices) { _VolunteerTableServices = volunteerTableServices; _VolunteerTableDetailServices = volunteerTableDetailServices; _unitOfWork = unitOfWork; _TbSNeedDataInfoServices = tbSNeedDataInfoServices; } /// /// Pc端查询我的志愿列表 /// /// /// [HttpGet("GetPage")] public async Task>> GetPage([FromQuery] VolunteerTableRequestView view) { if (view.CustomerId <= 0) { return new MessageModel>() { msg = "CustomerId 为必传参数" }; } var response = new PageModel(); Expression> exp = Expressionable.Create() .And(c => c.IsDelete == false) .And(c => c.CustomerId == view.CustomerId) .ToExpression(); var pagemodel = await _VolunteerTableServices.QueryPage(exp, view.PageIndex, view.PageSize, " CreateTime desc"); response.data = pagemodel.data.Select(c => new VolunteerTableDtoView() { CustomerId = c.CustomerId, Score = c.Score, SubjectClaim = c.SubjectClaim, Type = c.Type, VId = c.Id, VolunteerTableName = c.VolunteerTableName, BatchName = c.BatchName, CreateTime = c.CreateTime, ModifyTime = c.ModifyTime, CP = "靠谱99%" }).ToList(); response.pageCount = pagemodel.pageCount; response.page = pagemodel.page; response.PageSize = view.PageSize; response.dataCount = pagemodel.dataCount; return new MessageModel>() { msg = "获取成功", success = true, response = response }; } /// /// Pc查询单个志愿表详情信息 /// /// 志愿表Id /// [HttpGet("Get")] public async Task> Get([FromQuery] int id = 0) { if (id <= 0) { return new MessageModel() { msg = "id 为必传参数" }; } var view = new VolunteerTableDetailDtoView(); var query = await _VolunteerTableServices.QueryById(id); var items = await _VolunteerTableDetailServices.Query(c => c.VolunteerTableId == id); var PlanMajorIds = new List(); foreach (var item in items) { var ids = item.PlanMajorIds.Split(",", StringSplitOptions.RemoveEmptyEntries).Select(c => int.Parse(c)).ToList(); PlanMajorIds.AddRange(ids); } var planmajordesc = await _TbSNeedDataInfoServices.Query(c => SqlFunc.ContainsArray(PlanMajorIds, c.ID));// var location = planmajordesc.FirstOrDefault().Location; var majorlist = planmajordesc.Select(c => c.MajorName).ToList(); var universityname = planmajordesc.Select(c => c.UniversityName).Distinct().ToList(); var planmajorcomplist = await _TbSNeedDataInfoServices.Query(c => c.Location == location && SqlFunc.ContainsArray(majorlist, c.MajorName) && SqlFunc.ContainsArray(universityname, c.UniversityName));// view.VolunteerTableName = query.VolunteerTableName; view.SubjectClaim = query.SubjectClaim; view.CustomerId = query.CustomerId; view.Score = query.Score; view.Type = query.Type; view.BatchName = query.BatchName; view.CreateTime = query.CreateTime; view.ModifyTime = query.ModifyTime; var tableDetailItemsViews = new List(); items.ForEach(s => { var planids = s.PlanMajorIds.Split(",", StringSplitOptions.RemoveEmptyEntries).Select(ss => long.Parse(ss)).ToList(); var typeinfo = new List(); if (!string.IsNullOrWhiteSpace(s.VolunteerRemark)) { typeinfo = s.VolunteerRemark.FromJson>(); } var uitem = new VolunteerTableDetailItemsView() { // UniversityId = s.UniversityId, UniversityName = s.UniversityName, UniversityCode = s.UniversityCode, Sort = s.OrderSort, UniversityId = s.UniversityId, _211 = planmajordesc.Where(e => e.UniversityName == s.UniversityName).FirstOrDefault().LnstitutionalLevel != null ? planmajordesc.Where(e => e.UniversityName == s.UniversityName).FirstOrDefault().LnstitutionalLevel.Contains("211") ? "是" : "否" : "否", _985 = planmajordesc.Where(e => e.UniversityName == s.UniversityName).FirstOrDefault().LnstitutionalLevel != null ? planmajordesc.Where(e => e.UniversityName == s.UniversityName).FirstOrDefault().LnstitutionalLevel.Contains("985") ? "是" : "否" : "否", _SYL = planmajordesc.Where(e => e.UniversityName == s.UniversityName).FirstOrDefault().LnstitutionalLevel != null ? planmajordesc.Where(e => e.UniversityName == s.UniversityName).FirstOrDefault().LnstitutionalLevel.Contains("双一流") ? "是" : "否" : "否", Ownership = planmajordesc.Where(e => e.UniversityName == s.UniversityName).FirstOrDefault().Ownership.Contains("省") ? "省属" : planmajordesc.Where(e => e.UniversityName == s.UniversityName).FirstOrDefault().Ownership.Contains("市") ? "市属" : planmajordesc.Where(e => e.UniversityName == s.UniversityName).FirstOrDefault().Ownership, AreaName = planmajordesc.Where(e => e.UniversityName == s.UniversityName).FirstOrDefault().Province + "|" + planmajordesc.Where(e => e.UniversityName == s.UniversityName).FirstOrDefault().City, Nature = planmajordesc.Where(e => e.UniversityName == s.UniversityName).FirstOrDefault().Nature, Rank = planmajordesc.Where(e => e.UniversityName == s.UniversityName).FirstOrDefault().UniversityRank, planMajorItems = planmajordesc.Where(ww => planids.Contains(ww.ID)).Select(c => new VolunteerTablePlanMajorItem() { fee = c.Fee, Major = c.MajorName, MajorCode = c.MajorCode, // MajorGroup = c.MajorGroup, MajorRemark = c.Remark, planCount = int.Parse(c._23Count), PlanId = c.ID, AcademicYear = c.AcademicYear, Sort = s.OrderSort, SubjectClam = c._23subject, Percentage = typeinfo.Any() && typeinfo.Count() > 0 ? typeinfo.FirstOrDefault(d => d.planId == c.ID).tage : 0, Type = typeinfo.Any() && typeinfo.Count() > 0 ? typeinfo.FirstOrDefault(d => d.planId == c.ID).type : 0, PlanItems = new List() { new PlanItem() { PlanCount=int.Parse(c._22Count), RankLine=int.Parse(c._22ScoreLine), Scoreline=int.Parse(c._22Score), Year="2022" }, new PlanItem() { PlanCount=int.Parse(c._21Count), RankLine=int.Parse(c._21ScoreLine), Scoreline=int.Parse(c._21Score), Year="2021" } } }).ToList() }; tableDetailItemsViews.Add(uitem); }); view.tableDetailItemsViews = tableDetailItemsViews; return new MessageModel() { msg = "获取成功", success = true, response = view }; } /// /// PC志愿表新增 /// /// /// [HttpPost("Post")] public async Task> Post([FromBody] VolunteerTableDtoView request) { if (request.CustomerId <= 0) { return new MessageModel() { msg = "用户Id" }; } var data = new MessageModel(); int ordersort = 0; if (string.IsNullOrWhiteSpace(request.VolunteerTableName)) { var vol = (await _VolunteerTableServices.Query(c => c.CustomerId == request.CustomerId)); if (vol.Any()) { request.VolunteerTableName = "我的志愿表" + (vol.OrderByDescending(c => c.CreateTime).FirstOrDefault().OrderSort + 1); ordersort = (vol.OrderByDescending(c => c.CreateTime).FirstOrDefault().OrderSort + 1); } else { request.VolunteerTableName = "我的志愿表01"; ordersort = 1; } } _unitOfWork.BeginTran(); var id = await _VolunteerTableServices.Add(new U_VolunteerTable() { CreateTime = DateTime.Now, CustomerId = request.CustomerId, ModifyTime = DateTime.Now, OrderSort = ordersort, IsDelete = false, SubjectClaim = request.SubjectClaim, Type = request.Type, Score = request.Score, BatchName = request.BatchName, VolunteerTableName = request.VolunteerTableName, }); int itemIds = 0; if (id > 0) { var itemlist = request.volunteerTableDetailViews.Select(c => new U_VolunteerTableDetail() { CreateTime = DateTime.Now, IsDelete = false, ModifyTime = DateTime.Now, OrderSort = c.Sort, PlanMajorIds = c.PlanMajorIds, UniversityCode = c.UniversityCode, UniversityId = c.UniversityId, UniversityName = c.UniversityName, VolunteerTableId = id, VolunteerRemark = JsonConvert.SerializeObject(c.VolunteerRemark) }).ToList(); itemIds = await _VolunteerTableDetailServices.Add(itemlist); } if (id > 0 && itemIds == request.volunteerTableDetailViews.Count() && itemIds > 0) { _unitOfWork.CommitTran(); } else { _unitOfWork.RollbackTran(); } data.success = id > 0; if (data.success) { data.response = id.ObjToString(); data.msg = "添加成功"; } return data; } /// /// Pc修改志愿表 /// /// /// [HttpPut("Put")] public async Task> Put([FromBody] VolunteerTableDtoView request) { var data = new MessageModel(); if (request.VId > 0) { var model = await _VolunteerTableServices.QueryById(request.VId); _unitOfWork.BeginTran(); if (!string.IsNullOrWhiteSpace(request.BatchName)) { model.BatchName = request.BatchName; } if (!string.IsNullOrWhiteSpace(request.SubjectClaim)) { model.SubjectClaim = request.SubjectClaim; } if (!string.IsNullOrWhiteSpace(request.Type)) { model.Type = request.Type; } if (!string.IsNullOrWhiteSpace(request.VolunteerTableName)) { model.VolunteerTableName = request.VolunteerTableName; } if (request.CustomerId > 0) { model.CustomerId = request.CustomerId; } if (request.Score > 0) { model.Score = request.Score; } model.ModifyTime = DateTime.Now; data.success = await _VolunteerTableServices.Update(model); //删掉之前的志愿表,更新新的匹配进来 var itemids = (await _VolunteerTableDetailServices.Query(c => c.VolunteerTableId == request.VId)).Select(c => (object)c.Id).ToArray(); var status = await _VolunteerTableDetailServices.DeleteByIds(itemids); var itemlist = request.volunteerTableDetailViews.Select(c => new U_VolunteerTableDetail() { CreateTime = DateTime.Now, IsDelete = false, ModifyTime = DateTime.Now, OrderSort = c.Sort, PlanMajorIds = c.PlanMajorIds, UniversityCode = c.UniversityCode, UniversityId = c.UniversityId, UniversityName = c.UniversityName, VolunteerRemark = JsonConvert.SerializeObject(c.VolunteerRemark), VolunteerTableId = request.VId, }).ToList(); var itemIds = await _VolunteerTableDetailServices.Add(itemlist); if (itemIds > 0 && data.success) { _unitOfWork.CommitTran(); data.msg = "更新成功"; data.response = request?.VId.ObjToString(); } else { _unitOfWork.RollbackTran(); } } else { return new MessageModel() { msg = "VId 必传", success = false }; } return data; } /// /// Pc删除志愿表 /// /// /// [HttpDelete("Delete/{id}")] public async Task> Delete(int id = 0) { var data = new MessageModel(); if (id > 0) { var detail = await _VolunteerTableServices.QueryById(id); detail.IsDelete = true; if (detail != null) { _unitOfWork.BeginTran(); data.success = await _VolunteerTableServices.Update(detail); var itemids = (await _VolunteerTableDetailServices.Query(c => c.VolunteerTableId == id)).Select(c => (object)c.Id).ToArray(); var status = await _VolunteerTableDetailServices.DeleteByIds(itemids); if (status && data.success) { _unitOfWork.CommitTran(); } else { _unitOfWork.RollbackTran(); return new MessageModel() { msg = "删除失败" }; }; } if (data.success) { data.msg = "删除成功"; data.response = detail?.Id.ObjToString(); } } return data; } /// /// /// /// /// [AllowAnonymous] [HttpGet("downloadpdf")] public async Task DownloadPdf(string url) { var htmlContent = await HtmlHeplerFetcher.GetHtmlContentAsync(url); // 假设pdfBytes是已存在的PDF文件字节流 byte[] pdfBytes = new HtmlToPdfConverter().ConvertHtmlToPdf(htmlContent); // 设置响应头,指定Content-Type和文件名 Response.Headers.Add("Content-Disposition", string.Format("attachment; filename={0}.pdf", DateTime.Now.ToString("MMddHHmmssfff"))); Response.ContentType = "application/pdf"; return File(pdfBytes, "application/pdf"); } } }