using Admin.NET.Core.Service; using Admin.NET.Application.Const; using Admin.NET.Application.Entity; using Microsoft.AspNetCore.Http; using Magicodes.ExporterAndImporter.Core.Models; using Furion.Logging; namespace Admin.NET.Application; /// /// 申请示例服务 /// [ApiDescriptionSettings(ApplicationConst.GroupName, Order = 100)] public class Dm_ApplyDemoService : IDynamicApiController, ITransient { private readonly SqlSugarRepository _rep; public Dm_ApplyDemoService(SqlSugarRepository rep) { _rep = rep; } /// /// 分页查询申请示例 /// /// /// [HttpPost] [ApiDescriptionSettings(Name = "Page")] public async Task> Page(Dm_ApplyDemoInput input) { ISugarQueryable query = Query(input).Select(); return await query.OrderBuilder(input).ToPagedListAsync(input.Page, input.PageSize); } /// /// 查询 /// /// /// private ISugarQueryable Query(Dm_ApplyDemoInput input) { var query = _rep.AsQueryable() .WhereIF(!string.IsNullOrWhiteSpace(input.SearchKey), u => u.ApplyNO.Contains(input.SearchKey.Trim()) || u.Remark.Contains(input.SearchKey.Trim()) ) .WhereIF(input.OrgType > 0, u => u.OrgType == input.OrgType) .WhereIF(!string.IsNullOrWhiteSpace(input.ApplyNO), u => u.ApplyNO.Contains(input.ApplyNO.Trim())) .WhereIF(!string.IsNullOrWhiteSpace(input.Remark), u => u.Remark.Contains(input.Remark.Trim())) ; if (input.ApplicatDateRange != null && input.ApplicatDateRange.Count > 0) { DateTime? start = input.ApplicatDateRange[0]; query = query.WhereIF(start.HasValue, u => u.ApplicatDate > start); if (input.ApplicatDateRange.Count > 1 && input.ApplicatDateRange[1].HasValue) { var end = input.ApplicatDateRange[1].Value.AddDays(1); query = query.Where(u => u.ApplicatDate < end); } } return query; } /// /// 导出查询数据 /// /// [HttpPost] public async Task Export(Dm_ApplyDemoInput input) { //如果想速度更快,推荐使用存储过程查询导出;如果想自定义导出样式,推荐使用模板。 return await CommonUtil.ExportExcelData(Query(input)); } /// /// 增加申请示例 /// /// /// [HttpPost] [ApiDescriptionSettings(Name = "Add")] public async Task Add(AddDm_ApplyDemoInput input) { var entity = input.Adapt(); await _rep.InsertAsync(entity); return entity.Id; } /// /// 删除申请示例 /// /// /// [HttpPost] [ApiDescriptionSettings(Name = "Delete")] public async Task Delete(DeleteDm_ApplyDemoInput input) { var entity = await _rep.GetFirstAsync(u => u.Id == input.Id) ?? throw Oops.Oh(ErrorCodeEnum.D1002); await _rep.FakeDeleteAsync(entity); //假删除 //await _rep.DeleteAsync(entity); //真删除 } /// /// 更新申请示例 /// /// /// [HttpPost] [ApiDescriptionSettings(Name = "Update")] public async Task Update(UpdateDm_ApplyDemoInput input) { var entity = input.Adapt(); await _rep.AsUpdateable(entity).IgnoreColumns(ignoreAllNullColumns: true).ExecuteCommandAsync(); } /// /// 获取申请示例 /// /// /// [HttpGet] [ApiDescriptionSettings(Name = "Detail")] public async Task Detail([FromQuery] QueryByIdDm_ApplyDemoInput input) { return await _rep.GetFirstAsync(u => u.Id == input.Id); } /// /// 获取申请示例列表 /// /// /// [HttpGet] [HttpPost] [ApiDescriptionSettings(Name = "List")] public async Task> List([FromQuery] Dm_ApplyDemoInput input) { ISugarQueryable query = Query(input).Select(); return await query.Select().ToListAsync(); } /// /// 导入数据 /// /// Excel文件 /// [AllowAnonymous] public async Task> Import([Required] IFormFile file) { if (file == null) throw Oops.Oh(ErrorCodeEnum.D8000); var Importer = new Magicodes.ExporterAndImporter.Excel.ExcelImporter(); var importResult = await CommonUtil.ImportExcelData(file); string message=string.Empty; if (importResult != null) { //TODO 自定义校验 int errorCount = 0; //导入数据转为对象实例 var ysLs = new List(); var ls = CommonUtil.ParseList(importResult, (source, target) => { if (target.Id == 0) { return target; } else { _rep.Context.Updateable(target).IgnoreColumns(true).ExecuteCommand(); return null; } }); if (ls.Count > 0) { await _rep.Context.Insertable(ls).UseParameter().ExecuteCommandAsync(); } _rep.Context.Ado.CommitTran(); message = $"导入总数:{importResult.Count},导入成功:{importResult.Count- errorCount},导入失败:{ errorCount}。"; } var ret = new AdminResult() { Code = 200, Type = "success", Message = message, Result = message }; return ret; } }