using Infrastructure.Attribute; using Microsoft.AspNetCore.Http; using SqlSugar; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using Infrastructure; using ARW.Model; using ARW.Repository; using ARW.Repository.Business.${genTable.moduleName}; using ARW.Service.Business.IBusinessService.${genTable.moduleName}; using ARW.Model.Dto.Business.${genTable.moduleName}; using ARW.Model.Models.Business.${genTable.moduleName}; using ARW.Model.Vo.Business.${genTable.moduleName}; namespace ARW.Service.Business.BusinessService.${genTable.moduleName} { /// /// ${genTable.FunctionName}接口实现类 /// /// @author ${replaceDto.Author} /// @date ${replaceDto.AddTime} /// [AppService(ServiceType = typeof(I${replaceDto.ModelTypeName}Service), ServiceLifetime = LifeTime.Transient)] public class ${replaceDto.ModelTypeName}ServiceImpl : BaseService<${replaceDto.ModelTypeName}>, I${replaceDto.ModelTypeName}Service { private readonly ${replaceDto.ModelTypeName}Repository _${replaceDto.ModelTypeName}Repository; public ${replaceDto.ModelTypeName}ServiceImpl(${replaceDto.ModelTypeName}Repository ${replaceDto.ModelTypeName}Repository) { this._${replaceDto.ModelTypeName}Repository = ${replaceDto.ModelTypeName}Repository; } #region 业务逻辑代码 $if(genTable.TplCategory == "tree") /// /// 查询${genTable.FunctionName}树形列表 /// public async Task> Get${replaceDto.ModelTypeName}TreeList(${replaceDto.ModelTypeName}QueryDto parm) { //开始拼装查询条件 var predicate = Expressionable.Create<${replaceDto.ModelTypeName}>(); $foreach(column in genTable.Columns) $if(column.IsQuery) $if(column.CsharpType == "string") $if(genTable.TplCategory != "tree") predicate = predicate.AndIF(!string.IsNullOrEmpty(parm.${column.CsharpField}), ${codeTool.QueryExp(column.CsharpField, column.QueryType)}; $end $elseif(column.CsharpType == "DateTime") predicate = predicate.AndIF(parm.BeginTime != null && parm.EndTime != null, s => s.${column.CsharpField} >= parm.BeginTime && s.${column.CsharpField} <= parm.EndTime); $elseif(column.CsharpType == "int" || column.CsharpType == "long") predicate = predicate.AndIF(parm.${column.CsharpField} != null, ${codeTool.QueryExp(column.CsharpField, column.QueryType)}; $end $end ${end} var query = _${replaceDto.ModelTypeName}Repository .Queryable() .LeftJoin<${replaceDto.ModelTypeName}>((s, c) => s.${genTable.Options.TreeParentCode} == c.${genTable.Options.TreeCode}) .Where(predicate.ToExpression()) $if(genTable.Options.SortField != "" && genTable.Options.SortField != null) .OrderBy(s => s.${genTable.Options.SortField},OrderByType.${genTable.Options.SortType}) $end .Select((s,c) => new ${replaceDto.ModelTypeName}Vo { $foreach(item in genTable.Columns) $if(item.IsInit != true) $if((item.IsList || item.IsPk)) ${item.CsharpField} = s.${item.CsharpField}, $end $end $end ParentName = c.${genTable.Options.TreeName}, }); return await query.ToTreeAsync(it => it.Children, it => it.${genTable.Options.TreeParentCode}, 0); } /// /// 查询${genTable.FunctionName}列表 /// public Task> Get${replaceDto.ModelTypeName}List(${replaceDto.ModelTypeName}QueryDto parm) { //开始拼装查询条件d var predicate = Expressionable.Create<${replaceDto.ModelTypeName}>(); $foreach(column in genTable.Columns) $if(column.IsQuery) $if(column.CsharpType == "string") predicate = predicate.AndIF(!string.IsNullOrEmpty(parm.${column.CsharpField}), ${codeTool.QueryExp(column.CsharpField, column.QueryType)}; $elseif(column.CsharpType == "DateTime") predicate = predicate.AndIF(parm.BeginTime != null && parm.EndTime != null, it => it.${column.CsharpField} >= parm.BeginTime && it.${column.CsharpField} <= parm.EndTime); $elseif(column.CsharpType == "int" || column.CsharpType == "long") predicate = predicate.AndIF(parm.${column.CsharpField} != null, ${codeTool.QueryExp(column.CsharpField, column.QueryType)}; $end $end ${end} var query = _${replaceDto.ModelTypeName}Repository .Queryable() .Where(predicate.ToExpression()) $if(genTable.Options.SortField != "" && genTable.Options.SortField != null) .OrderBy(s => s.${genTable.Options.SortField},OrderByType.${genTable.Options.SortType}) $end .Select(s => new ${replaceDto.ModelTypeName}Vo { $foreach(item in genTable.Columns) $if(item.IsInit != true) $if((item.IsList || item.IsPk)) ${item.CsharpField} = s.${item.CsharpField}, $end $end $end }); return query.ToListAsync(); } $else /// /// 查询${genTable.FunctionName}分页列表 /// public Task> Get${replaceDto.ModelTypeName}List(${replaceDto.ModelTypeName}QueryDto parm) { //开始拼装查询条件d var predicate = Expressionable.Create<${replaceDto.ModelTypeName}>(); $foreach(column in genTable.Columns) $if(column.IsQuery) $if(column.CsharpType == "string") predicate = predicate.AndIF(!string.IsNullOrEmpty(parm.${column.CsharpField}), ${codeTool.QueryExp(column.CsharpField, column.QueryType)}; $elseif(column.CsharpType == "DateTime") predicate = predicate.AndIF(parm.BeginTime != null && parm.EndTime != null, it => it.${column.CsharpField} >= parm.BeginTime && it.${column.CsharpField} <= parm.EndTime); $elseif(column.CsharpType == "int" || column.CsharpType == "long") predicate = predicate.AndIF(parm.${column.CsharpField} != null, ${codeTool.QueryExp(column.CsharpField, column.QueryType)}; $end $end ${end} var query = _${replaceDto.ModelTypeName}Repository .Queryable() .Where(predicate.ToExpression()) $if(genTable.Options.SortField != "" && genTable.Options.SortField != null) .OrderBy(s => s.${genTable.Options.SortField},OrderByType.${genTable.Options.SortType}) $end .Select(s => new ${replaceDto.ModelTypeName}Vo { $foreach(item in genTable.Columns) $if(item.IsInit != true) $if((item.IsList || item.IsPk)) ${item.CsharpField} = s.${item.CsharpField}, $end $end $end }); return query.ToPageAsync(parm); } $end /// /// 添加或修改${genTable.FunctionName} /// public async Task AddOrUpdate${replaceDto.ModelTypeName}(${replaceDto.ModelTypeName} model) { if (model.${replaceDto.ModelTypeName}Id != 0) { $if(genTable.TplCategory == "tree") var type = await _${replaceDto.ModelTypeName}Repository.GetListAsync(s => s.${genTable.Options.TreeParentCode} == model.${genTable.Options.TreeCode}); if (type != null) { foreach (var item in type) { if (model.${genTable.Options.TreeParentCode} == item.${genTable.Options.TreeCode}) throw new CustomException("上级菜单不能选择自己的子级!"); } } if (model.${genTable.Options.TreeParentCode} == model.${genTable.Options.TreeCode}) throw new CustomException("上级菜单不能选择与当前菜单一样的!"); $end var response = await _${replaceDto.ModelTypeName}Repository.UpdateAsync(model); return "修改成功!"; } else { $if(genTable.TplCategory == "tree") var info = _${replaceDto.ModelTypeName}Repository.GetFirst(it => it.${genTable.Options.TreeCode} == model.${genTable.Options.TreeParentCode}); model.${replaceDto.ModelTypeName}AncestralGuid = "0"; if (info != null) model.${replaceDto.ModelTypeName}AncestralGuid = info.${replaceDto.ModelTypeName}AncestralGuid + "," + model.${genTable.Options.TreeParentCode}; $end var response = await _${replaceDto.ModelTypeName}Repository.InsertReturnSnowflakeIdAsync(model); return "添加成功!"; } } #region Excel处理 $if(replaceDto.ShowBtnImport) /// /// 数据导入处理 /// public async Task<${replaceDto.ModelTypeName}Vo> HandleImportData(${replaceDto.ModelTypeName}Vo ${replaceDto.ModelTypeName}) { return ${replaceDto.ModelTypeName}; } /// /// Excel导入 /// public async Task ImportExcel(${replaceDto.ModelTypeName} ${replaceDto.ModelTypeName},int index,bool isUpdateSupport,string user) { try { // 空值判断 // if (${replaceDto.ModelTypeName}.${replaceDto.ModelTypeName}Id == null) throw new CustomException("${genTable.FunctionName}不能为空"); if (isUpdateSupport) { // 判断唯一值 var model = await GetFirstAsync(s => s.${replaceDto.ModelTypeName}Id == ${replaceDto.ModelTypeName}.${replaceDto.ModelTypeName}Id); // 如果为空就新增数据 if (model == null) { // 开启事务 var res = await UseTranAsync(async () => { var addRes = await AddOrUpdate${replaceDto.ModelTypeName}(${replaceDto.ModelTypeName}); }); var addStr = $"第 {index} 行 => ${genTable.FunctionName}:【{${replaceDto.ModelTypeName}.${replaceDto.ModelTypeName}Id}】新增成功!
"; return addStr; } else { // 如果有数据就进行修改 // 开启事务 await UseTranAsync(async () => { ${replaceDto.ModelTypeName}.${replaceDto.ModelTypeName}Id = model.${replaceDto.ModelTypeName}Id; ${replaceDto.ModelTypeName}.${replaceDto.ModelTypeName}Guid = model.${replaceDto.ModelTypeName}Guid; ${replaceDto.ModelTypeName}.Update_by = user; ${replaceDto.ModelTypeName}.Update_time = DateTime.Now; var editRes = await AddOrUpdate${replaceDto.ModelTypeName}(${replaceDto.ModelTypeName}); }); var editStr = $"第 {index} 行 => ${genTable.FunctionName}:【{${replaceDto.ModelTypeName}.${replaceDto.ModelTypeName}Id}】更新成功!
"; return editStr; } } else{ // 开启事务 var res = await UseTranAsync(async () => { var addRes = await AddOrUpdate${replaceDto.ModelTypeName}(${replaceDto.ModelTypeName}); }); //Console.WriteLine(res.IsSuccess); var addStr = $"第 {index} 行 => ${genTable.FunctionName}:【{${replaceDto.ModelTypeName}.${replaceDto.ModelTypeName}Id}】新增成功!
"; return addStr; } } catch (Exception ex) { var errorRes = $"第 {index} 行 => ${genTable.FunctionName}:【{${replaceDto.ModelTypeName}.${replaceDto.ModelTypeName}Id}】导入失败!{ex.Message}
"; return errorRes; throw; } } $end $if(replaceDto.ShowBtnExport) /// /// Excel数据导出处理 /// public async Task> HandleExportData(List<${replaceDto.ModelTypeName}Vo> data) { return data; } $end #endregion $if(replaceDto.ShowBtnAudit) /// /// 审核 /// public async Task Audit(int id, int status, long userGuid) { try { var res = await _${replaceDto.ModelTypeName}Repository.GetFirstAsync(s => s.${replaceDto.ModelTypeName}Id == id); await UseTranAsync(async () => { await _${replaceDto.ModelTypeName}Repository.UpdateAsync(f => new ${replaceDto.ModelTypeName} { ${replaceDto.ModelTypeName}AuditStatus = status, ${replaceDto.ModelTypeName}AuditUserGuid = userGuid, Update_time = DateTime.Now, Update_by = userGuid.ToString() }, s => s.${replaceDto.ModelTypeName}Id == id); }); if (res.${replaceDto.ModelTypeName}AuditStatus == 2) { var errorRes = $"${genTable.FunctionName}:【{res.${replaceDto.ModelTypeName}Name}】已通过审核!
"; return errorRes; } if (res.${replaceDto.ModelTypeName}AuditStatus == 3) { var errorRes = $"${genTable.FunctionName}:【{res.${replaceDto.ModelTypeName}Name}】已被驳回!
"; return errorRes; } else if (res.${replaceDto.ModelTypeName}AuditStatus == 1) { var addStr = $"${genTable.FunctionName}:【{res.${replaceDto.ModelTypeName}Name}】审核通过!
"; return addStr; } return ""; } catch (Exception) { throw; } } $end #endregion } }