tuiwucarrer/Admin.NET/Admin.NET.Application/Service/CePing/BusTimeAxis/BusTimeAxisService.cs

314 lines
13 KiB
C#

using Admin.NET.Core;
using Furion.DatabaseAccessor;
using Furion.DependencyInjection;
using Furion.DynamicApiController;
using Furion.FriendlyException;
using Mapster;
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;
using System.Collections.Generic;
using System.Linq;
using System.Linq.Dynamic.Core;
using System.Threading.Tasks;
namespace Admin.NET.Application
{
/// <summary>
/// 升学规划时间轴服务
/// </summary>
[ApiDescriptionSettings("测评服务", Name = "BusTimeAxis", Order = 100)]
public class BusTimeAxisService : IDynamicApiController, ITransient
{
private readonly SqlSugarRepository<BusTimeAxis> _busTimeAxisRep;
private readonly SqlSugarRepository<SysDictData> _sysdictdata;
private readonly UserManager _userManager;
/// <summary>
///
/// </summary>
/// <param name="busTimeAxisRep"></param>
/// <param name="sysdictdata"></param>
public BusTimeAxisService(
SqlSugarRepository<BusTimeAxis> busTimeAxisRep,
SqlSugarRepository<SysDictData> sysdictdata,
UserManager userManager
)
{
_busTimeAxisRep = busTimeAxisRep;
_sysdictdata = sysdictdata;
_userManager = userManager;
}
/// <summary>
/// 分页查询升学规划时间轴
/// </summary>
/// <param name="input"></param>
/// <returns></returns>
[HttpGet("page")]
public async Task<SqlSugarPagedList<BusTimeAxisOutput>> Page([FromQuery] BusTimeAxisInput input)
{
var busTimeAxiss = await _busTimeAxisRep.AsQueryable()
.WhereIF(!string.IsNullOrEmpty(input.TimeAxis), u => u.TimeAxis == input.TimeAxis)
// .Where(input.Grade > 0, u => u.Grade == input.Grade)
// .Where(u => u.StudyYear == input.StudyYear)
.WhereIF(!string.IsNullOrEmpty(input.BigTitle), u => u.BigTitle == input.BigTitle)
.WhereIF(!string.IsNullOrEmpty(input.Title), u => u.Title == input.Title)
// .Where(u => u.IsColor == input.IsColor)
.WhereIF(!string.IsNullOrEmpty(input.Summary), u => u.Summary == input.Summary)
.WhereIF(!string.IsNullOrEmpty(input.Url), u => u.Url == input.Url)
// .Where(u => u.Sort == input.Sort)
.OrderBy(u => u.CreateTime, OrderByType.Desc)
.OrderBuilder(input)
.Select(s => new BusTimeAxisOutput()
{
TimeAxis = s.TimeAxis,
Grade = s.Grade,
StudyYear = s.StudyYear,
BigTitle = s.BigTitle,
Title = s.Title,
IsColor = s.IsColor,
Summary = s.Summary,
Url = s.Url,
Sort = s.Sort,
Id = s.Id
})
.ToPagedListAsync(input.Page, input.PageSize);
return busTimeAxiss;
}
/// <summary>
/// 增加升学规划时间轴
/// </summary>
/// <param name="input"></param>
/// <returns></returns>
[HttpPost("add")]
public async Task Add(AddBusTimeAxisInput input)
{
var busTimeAxis = input.Adapt<BusTimeAxis>();
await _busTimeAxisRep.InsertAsync(busTimeAxis);
}
/// <summary>
/// 删除升学规划时间轴
/// </summary>
/// <param name="input"></param>
/// <returns></returns>
[HttpPost("delete")]
public async Task Delete(DeleteBusTimeAxisInput input)
{
var busTimeAxis = await _busTimeAxisRep.AsQueryable().FirstAsync(u => u.Id == input.Id);
await _busTimeAxisRep.FakeDeleteAsync(busTimeAxis);
}
/// <summary>
/// 更新升学规划时间轴
/// </summary>
/// <param name="input"></param>
/// <returns></returns>
[HttpPost("edit")]
public async Task Update(UpdateBusTimeAxisInput input)
{
var isExist = await _busTimeAxisRep.AsQueryable().AnyAsync(u => u.Id == input.Id);
if (!isExist) throw Oops.Oh(ErrorCodeEnum.D3000);
var busTimeAxis = input.Adapt<BusTimeAxis>();
await _busTimeAxisRep.UpdateAsync(busTimeAxis);
}
/// <summary>
/// 获取升学规划时间轴
/// </summary>
/// <param name="input"></param>
/// <returns></returns>
[HttpGet("detail")]
public async Task<BusTimeAxisOutput> Get([FromQuery] QueryeBusTimeAxisInput input)
{
return (await _busTimeAxisRep.AsQueryable().FirstAsync(u => u.Id == input.Id)).Adapt<BusTimeAxisOutput>();
}
/// <summary>
/// 获取升学规划时间轴列表
/// </summary>
/// <param name="input"></param>
/// <returns></returns>
[HttpGet("list")]
public async Task<List<BusTimeAxisOutput>> List([FromQuery] BusTimeAxisInput input)
{
return await _busTimeAxisRep.AsQueryable()
.Select(s => new BusTimeAxisOutput()
{
TimeAxis = s.TimeAxis,
Grade = s.Grade,
StudyYear = s.StudyYear,
BigTitle = s.BigTitle,
Title = s.Title,
IsColor = s.IsColor,
Summary = s.Summary,
Url = s.Url,
Sort = s.Sort,
Id = s.Id
}).ToListAsync();
}
/// <summary>
/// 导入
/// </summary>
/// <param name="file"></param>
/// <returns></returns>
[HttpPost("import")]
public async Task ImportCustom(IFormFile file)
{
var list = InputExcelUtil<BusTimeAxisOutDTO>.InputExcel(file);
var res = new List<BusTimeAxis>();
var gradeinfo = await _sysdictdata.AsQueryable().Where(e => e.DictTypeId == 340927002796101).ToListAsync();
var studyyears = await _sysdictdata.AsQueryable().Where(e => e.DictTypeId == 340927375392837).ToListAsync();
for (int i = 0; i < list.Count(); i++)
{
var item = list[i];
res.Add(new BusTimeAxis()
{
Grade = int.Parse(gradeinfo.FirstOrDefault(e => e.Value == item.Grade.Trim()).Code),
BigTitle = item.BigTitle,
CreateTime = DateTime.Now,
CreateUserId = _userManager.UserId,
CreateUserName = _userManager.Account,
IsColor = item.IsColor,
Sort = item.Sort,
StudyYear = int.Parse(studyyears.FirstOrDefault(s => s.Value == item.StudyYear.Trim()).Code),
Summary = item.Summary,
TimeAxis = item.TimeAxis,
Title = "",
Url = ""
});
}
await _busTimeAxisRep.InsertRangeAsync(res);
}
/// <summary>
/// 根据学年级获取时间轴
/// </summary>
/// <param name="requestDto"></param>
/// <returns></returns>
[HttpGet("GetCustomTimeAxis")]
public async Task<List<CustomTimeAxisDTO>> GetCustomTimeAxis([FromQuery] CustomTimeAxisRequestDto requestDto)
{
var result = new List<CustomTimeAxisDTO>();
var gradeinfo = await _sysdictdata.AsQueryable().Where(e => e.DictTypeId == 340927002796101).ToListAsync();
var studyyears = await _sysdictdata.AsQueryable().Where(e => e.DictTypeId == 340927375392837).ToListAsync();
var timeaxislist = await _busTimeAxisRep.AsQueryable().ToListAsync();
gradeinfo.ForEach(e =>
{
int grade = int.Parse(e.Code);
studyyears.Where(e.Value != "高考后", k => k.Value != "高考后").Where(e.Value == "高考后", k => k.Value == "高考后").ToList().ForEach(c =>
{
var customtimeaxis = new CustomTimeAxisDTO();
int code = int.Parse(c.Code);
var timlist = timeaxislist.Where(o => o.StudyYear == code && o.Grade == grade).ToList();
if (timlist.Any())
{
var timeaixs = new List<TimeAxisItems>();
timlist.ForEach(h =>
{
var timeaixsitem = new TimeAxisItems();
timeaixsitem.BigTitle = h.BigTitle;
timeaixsitem.IsColor = h.IsColor;
timeaixsitem.Summary = h.Summary;
timeaixsitem.TimeAxis = h.TimeAxis;
timeaixsitem.Sort = h.Sort;
timeaixs.Add(timeaixsitem);
});
switch (e.Value)
{
case "高一":
customtimeaxis.StudyYears = c.Value == "上学期" ? "高一上" : "高一下";
break;
case "高二":
customtimeaxis.StudyYears = c.Value == "上学期" ? "高二上" : "高二下";
break;
case "高三":
customtimeaxis.StudyYears = c.Value == "上学期" ? "高三上" : "高三下";
break;
case "高考后":
customtimeaxis.StudyYears = "高考后";
break;
}
customtimeaxis.axisItems = timeaixs;
}
customtimeaxis.Title = e.Value == "高一" ? "生涯认知与探索" : e.Value == "高二" ? "探索与决策" : "准备与行动";
customtimeaxis.GradeName = e.Value;
result.Add(customtimeaxis);
});
});
return result;
}
/// <summary>
/// 根据学年级获取时间轴(小程序)
/// </summary>
/// <param name="requestDto"></param>
/// <returns></returns>
[HttpGet("GetMinProTimeAxis")]
public async Task<List<minProgTimeAxisDTO>> GetMinProTimeAxis([FromQuery] CustomTimeAxisRequestDto requestDto)
{
var result = new List<minProgTimeAxisDTO>();
var gradeinfo = await _sysdictdata.AsQueryable().Where(e => e.DictTypeId == 340927002796101 && e.Value == requestDto.GradeName.Trim()).ToListAsync();
var studyyears = await _sysdictdata.AsQueryable().Where(e => e.DictTypeId == 340927375392837).ToListAsync();
var timeaxislist = await _busTimeAxisRep.AsQueryable().ToListAsync();
gradeinfo.ForEach(e =>
{
int grade = int.Parse(e.Code);
//studyyears.Where(e.Value != "高考后", k => k.Value != "高考后").Where(e.Value == "高考后", k => k.Value == "高考后").ToList().ForEach(c =>
//{
var customtimeaxis = new minProgTimeAxisDTO();
// int code = int.Parse(c.Code);
var timlist = timeaxislist.Where(o => o.Grade == grade).ToList();
if (timlist.Any())
{
var timeaixs = new List<TimeAxisItems>();
timlist.ForEach(h =>
{
var timeaixsitem = new TimeAxisItems();
timeaixsitem.BigTitle = h.BigTitle;
timeaixsitem.IsColor = h.IsColor;
timeaixsitem.Summary = h.Summary;
timeaixsitem.TimeAxis = h.TimeAxis;
timeaixsitem.Sort = h.Sort;
timeaixs.Add(timeaixsitem);
});
customtimeaxis.axisItems = timeaixs;
}
customtimeaxis.Title = e.Value == "高一" ? "生涯认知与探索" : e.Value == "高二" ? "探索与决策" : "准备与行动";
customtimeaxis.GradeName = e.Value;
result.Add(customtimeaxis);
// });
});
return result;
}
}
}