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 { /// /// 升学规划时间轴服务 /// [ApiDescriptionSettings("测评服务", Name = "BusTimeAxis", Order = 100)] public class BusTimeAxisService : IDynamicApiController, ITransient { private readonly SqlSugarRepository _busTimeAxisRep; private readonly SqlSugarRepository _sysdictdata; private readonly UserManager _userManager; /// /// /// /// /// public BusTimeAxisService( SqlSugarRepository busTimeAxisRep, SqlSugarRepository sysdictdata, UserManager userManager ) { _busTimeAxisRep = busTimeAxisRep; _sysdictdata = sysdictdata; _userManager = userManager; } /// /// 分页查询升学规划时间轴 /// /// /// [HttpGet("page")] public async Task> 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; } /// /// 增加升学规划时间轴 /// /// /// [HttpPost("add")] public async Task Add(AddBusTimeAxisInput input) { var busTimeAxis = input.Adapt(); await _busTimeAxisRep.InsertAsync(busTimeAxis); } /// /// 删除升学规划时间轴 /// /// /// [HttpPost("delete")] public async Task Delete(DeleteBusTimeAxisInput input) { var busTimeAxis = await _busTimeAxisRep.AsQueryable().FirstAsync(u => u.Id == input.Id); await _busTimeAxisRep.FakeDeleteAsync(busTimeAxis); } /// /// 更新升学规划时间轴 /// /// /// [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(); await _busTimeAxisRep.UpdateAsync(busTimeAxis); } /// /// 获取升学规划时间轴 /// /// /// [HttpGet("detail")] public async Task Get([FromQuery] QueryeBusTimeAxisInput input) { return (await _busTimeAxisRep.AsQueryable().FirstAsync(u => u.Id == input.Id)).Adapt(); } /// /// 获取升学规划时间轴列表 /// /// /// [HttpGet("list")] public async Task> 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(); } /// /// 导入 /// /// /// [HttpPost("import")] public async Task ImportCustom(IFormFile file) { var list = InputExcelUtil.InputExcel(file); var res = new List(); 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); } /// /// 根据学年级获取时间轴 /// /// /// [HttpGet("GetCustomTimeAxis")] public async Task> GetCustomTimeAxis([FromQuery] CustomTimeAxisRequestDto requestDto) { var result = new List(); 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(); 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; } /// /// 根据学年级获取时间轴(小程序) /// /// /// [HttpGet("GetMinProTimeAxis")] public async Task> GetMinProTimeAxis([FromQuery] CustomTimeAxisRequestDto requestDto) { var result = new List(); 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(); 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; } } }