NewGaoKaoApi/New_College.Api/Controllers/Front/PcVolunteerController.cs

426 lines
19 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

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
{
/// <summary>
/// PC志愿表管理
/// </summary>
[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;
}
/// <summary>
/// Pc端查询我的志愿列表
/// </summary>
/// <param name="view"></param>
/// <returns></returns>
[HttpGet("GetPage")]
public async Task<MessageModel<PageModel<VolunteerTableDtoView>>> GetPage([FromQuery] VolunteerTableRequestView view)
{
if (view.CustomerId <= 0)
{
return new MessageModel<PageModel<VolunteerTableDtoView>>()
{
msg = "CustomerId 为必传参数"
};
}
var response = new PageModel<VolunteerTableDtoView>();
Expression<Func<U_VolunteerTable, bool>> exp = Expressionable.Create<U_VolunteerTable>()
.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<PageModel<VolunteerTableDtoView>>()
{
msg = "获取成功",
success = true,
response = response
};
}
/// <summary>
/// Pc查询单个志愿表详情信息
/// </summary>
/// <param name="id">志愿表Id</param>
/// <returns></returns>
[HttpGet("Get")]
public async Task<MessageModel<VolunteerTableDetailDtoView>> Get([FromQuery] int id = 0)
{
if (id <= 0)
{
return new MessageModel<VolunteerTableDetailDtoView>()
{
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<int>();
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.Length > 2 ? "综合" : 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<VolunteerTableDetailItemsView>();
items.ForEach(s =>
{
var planids = s.PlanMajorIds.Split(",", StringSplitOptions.RemoveEmptyEntries).Select(ss => long.Parse(ss)).ToList();
var typeinfo = new List<VolteerItem>();
if (!string.IsNullOrWhiteSpace(s.VolunteerRemark))
{
typeinfo = s.VolunteerRemark.FromJson<List<VolteerItem>>();
}
var uitem = new VolunteerTableDetailItemsView()
{
// UniversityId = s.UniversityId,
UniversityName = s.UniversityName,
UniversityCode = s.UniversityCode,
Sort = s.OrderSort,
UniversityId = s.UniversityId,
_211 = planmajordesc.Any(e => e.UniversityName == s.UniversityName) ? planmajordesc.Where(e => e.UniversityName == s.UniversityName).FirstOrDefault().LnstitutionalLevel != null ? planmajordesc.Where(e => e.UniversityName == s.UniversityName).FirstOrDefault().LnstitutionalLevel.Contains("211") ? "是" : "否" : "否" : "否",
_985 = planmajordesc.Any(e => e.UniversityName == s.UniversityName) ? planmajordesc.Where(e => e.UniversityName == s.UniversityName).FirstOrDefault().LnstitutionalLevel != null ? planmajordesc.Where(e => e.UniversityName == s.UniversityName).FirstOrDefault().LnstitutionalLevel.Contains("985") ? "是" : "否" : "否" : "否",
_SYL = planmajordesc.Any(e => e.UniversityName == s.UniversityName) ? planmajordesc.Where(e => e.UniversityName == s.UniversityName).FirstOrDefault().LnstitutionalLevel != null ? planmajordesc.Where(e => e.UniversityName == s.UniversityName).FirstOrDefault().LnstitutionalLevel.Contains("双一流") ? "是" : "否" : "否" : "否",
Ownership = planmajordesc.Any(e => e.UniversityName == s.UniversityName) ? 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.Any(e => e.UniversityName == s.UniversityName) ? planmajordesc.Where(e => e.UniversityName == s.UniversityName).FirstOrDefault().Province + "|" + planmajordesc.Where(e => e.UniversityName == s.UniversityName).FirstOrDefault().City : "",
AreaName = planmajordesc.Any(e => e.UniversityName == s.UniversityName) ? planmajordesc.Where(e => e.UniversityName == s.UniversityName).FirstOrDefault().Province + "|" + (planmajordesc.Any(e => e.UniversityName == s.UniversityName) ?planmajordesc.Where(e => e.UniversityName == s.UniversityName).FirstOrDefault().City:"") : "",
Nature = planmajordesc.Any(e => e.UniversityName == s.UniversityName) ? planmajordesc.Where(e => e.UniversityName == s.UniversityName).FirstOrDefault().Nature : "",
Rank = planmajordesc.Any(e => e.UniversityName == s.UniversityName) ? (string.IsNullOrEmpty(planmajordesc.Where(e => e.UniversityName == s.UniversityName).FirstOrDefault().UniversityRank) ? "--" : planmajordesc.Where(e => e.UniversityName == s.UniversityName).FirstOrDefault().UniversityRank) : "--",
planMajorItems = planmajordesc.Where(ww => planids.Contains(ww.ID)).Select(c => new VolunteerTablePlanMajorItem()
{
fee = string.IsNullOrEmpty(c.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<PlanItem>()
{
new PlanItem() {
PlanCount=int.Parse(c._23Count),
RankLine=int.Parse(c._23ScoreLine),
Scoreline=int.Parse(c._23Score),
Year="2023"
},
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<VolunteerTableDetailDtoView>()
{
msg = "获取成功",
success = true,
response = view
};
}
/// <summary>
/// PC志愿表新增
/// </summary>
/// <param name="request"></param>
/// <returns></returns>
[HttpPost("Post")]
public async Task<MessageModel<string>> Post([FromBody] VolunteerTableDtoView request)
{
if (request.CustomerId <= 0)
{
return new MessageModel<string>()
{
msg = "用户Id"
};
}
var data = new MessageModel<string>();
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;
}
/// <summary>
/// Pc修改志愿表
/// </summary>
/// <param name="request"></param>
/// <returns></returns>
[HttpPut("Put")]
public async Task<MessageModel<string>> Put([FromBody] VolunteerTableDtoView request)
{
var data = new MessageModel<string>();
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<string>()
{
msg = "VId 必传",
success = false
};
}
return data;
}
/// <summary>
/// Pc删除志愿表
/// </summary>
/// <param name="id"></param>
/// <returns></returns>
[HttpDelete("Delete/{id}")]
public async Task<MessageModel<string>> Delete(int id = 0)
{
var data = new MessageModel<string>();
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<string>()
{
msg = "删除失败"
};
};
}
if (data.success)
{
data.msg = "删除成功";
data.response = detail?.Id.ObjToString();
}
}
return data;
}
/// <summary>
///
/// </summary>
/// <param name="url"></param>
/// <returns></returns>
[AllowAnonymous]
[HttpGet("downloadpdf")]
public async Task<IActionResult> 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");
}
}
}