TplService.txt 9.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232
  1. using Infrastructure.Attribute;
  2. using Infrastructure.Extensions;
  3. using ${options.DtosNamespace}.${options.SubNamespace}.Dto;
  4. using ${options.ModelsNamespace}.${options.SubNamespace};
  5. using ${options.RepositoriesNamespace};
  6. using ${options.IServicsNamespace}.${options.SubNamespace}.I${options.SubNamespace}Service;
  7. $if(genTable.TplCategory == "tree")
  8. using System.Collections.Generic;
  9. $end
  10. namespace ${options.ServicesNamespace}.${options.SubNamespace}
  11. {
  12. /// <summary>
  13. /// ${genTable.FunctionName}Service业务层处理
  14. /// </summary>
  15. [AppService(ServiceType = typeof(I${replaceDto.ModelTypeName}Service), ServiceLifetime = LifeTime.Transient)]
  16. public class ${replaceDto.ModelTypeName}Service : BaseService<${replaceDto.ModelTypeName}>, I${replaceDto.ModelTypeName}Service
  17. {
  18. /// <summary>
  19. /// 查询${genTable.FunctionName}列表
  20. /// </summary>
  21. /// <param name="parm"></param>
  22. /// <returns></returns>
  23. public PagedInfo<${replaceDto.ModelTypeName}Dto> GetList(${replaceDto.ModelTypeName}QueryDto parm)
  24. {
  25. var predicate = QueryExp(parm);
  26. var response = Queryable()
  27. $if(null != genTable.SubTableName && "" != genTable.SubTableName)
  28. //.Includes(x => x.${genTable.SubTable.ClassName}Nav) //填充子对象
  29. $end
  30. $if(genTable.Options.SortField != "" && genTable.Options.SortField != null)
  31. //.OrderBy("${genTable.Options.SortField} ${genTable.Options.SortType}")
  32. $end
  33. .Where(predicate.ToExpression())
  34. .ToPage<${replaceDto.ModelTypeName}, ${replaceDto.ModelTypeName}Dto>(parm);
  35. return response;
  36. }
  37. $if(genTable.TplCategory == "tree")
  38. /// <summary>
  39. /// 查询${genTable.FunctionName}树列表
  40. /// </summary>
  41. /// <param name="parm"></param>
  42. /// <returns></returns>
  43. public List<${replaceDto.ModelTypeName}> GetTreeList(${replaceDto.ModelTypeName}QueryDto parm)
  44. {
  45. var predicate = Expressionable.Create<${replaceDto.ModelTypeName}>();
  46. $foreach(column in genTable.Columns)
  47. $if(column.IsQuery)
  48. $if(column.CsharpType == "string")
  49. predicate = predicate.AndIF(!string.IsNullOrEmpty(parm.${column.CsharpField}), ${tool.QueryExp(column.CsharpField, column.QueryType)};
  50. $elseif(column.CsharpType == "int" || column.CsharpType == "long")
  51. predicate = predicate.AndIF(parm.${column.CsharpField} != null, ${tool.QueryExp(column.CsharpField, column.QueryType)};
  52. $end
  53. $end
  54. $end
  55. var response = Queryable()
  56. .Where(predicate.ToExpression())
  57. .ToTree(it => it.Children, it => it.${genTable.Options.TreeParentCode}, 0);
  58. return response;
  59. }
  60. $end
  61. /// <summary>
  62. /// 获取详情
  63. /// </summary>
  64. /// <param name="${replaceDto.PKName}"></param>
  65. /// <returns></returns>
  66. public ${replaceDto.ModelTypeName} GetInfo(${replaceDto.PKType} ${replaceDto.PKName})
  67. {
  68. var response = Queryable()
  69. $if(null != genTable.SubTableName && "" != genTable.SubTableName)
  70. .Includes(x => x.${genTable.SubTable.ClassName}Nav) //填充子对象
  71. $end
  72. .Where(x => x.${replaceDto.PKName} == ${replaceDto.PKName})
  73. .First();
  74. return response;
  75. }
  76. /// <summary>
  77. /// 添加${genTable.FunctionName}
  78. /// </summary>
  79. /// <param name="model"></param>
  80. /// <returns></returns>
  81. public ${replaceDto.ModelTypeName} Add${replaceDto.ModelTypeName}(${replaceDto.ModelTypeName} model)
  82. {
  83. $if(null != genTable.SubTableName && "" != genTable.SubTableName)
  84. return Context.InsertNav(model).Include(s1 => s1.${genTable.SubTable.ClassName}Nav).ExecuteReturnEntity();
  85. $else
  86. $if(replaceDto.useSnowflakeId)
  87. Insertable(model).ExecuteReturnSnowflakeId();
  88. return model;
  89. $else
  90. return Insertable(model).ExecuteReturnEntity();
  91. $end
  92. $end
  93. }
  94. $if(replaceDto.ShowBtnEdit)
  95. /// <summary>
  96. /// 修改${genTable.FunctionName}
  97. /// </summary>
  98. /// <param name="model"></param>
  99. /// <returns></returns>
  100. public int Update${replaceDto.ModelTypeName}(${replaceDto.ModelTypeName} model)
  101. {
  102. $if(null != genTable.SubTableName && "" != genTable.SubTableName)
  103. return Context.UpdateNav(model).Include(z1 => z1.${genTable.SubTable.ClassName}Nav).ExecuteCommand() ? 1 : 0;
  104. $else
  105. return Update(model, true$if(replaceDto.enableLog), "修改${genTable.FunctionName}"$end);
  106. $end
  107. }
  108. $end
  109. $if(replaceDto.ShowBtnTruncate)
  110. /// <summary>
  111. /// 清空${genTable.FunctionName}
  112. /// </summary>
  113. /// <returns></returns>
  114. public bool Truncate${replaceDto.ModelTypeName}()
  115. {
  116. var newTableName = $"${genTable.TableName}_{DateTime.Now:yyyyMMdd}";
  117. if (Queryable().Any() && !Context.DbMaintenance.IsAnyTable(newTableName))
  118. {
  119. Context.DbMaintenance.BackupTable("${genTable.TableName}", newTableName);
  120. }
  121. return Truncate();
  122. }
  123. $end
  124. $if(replaceDto.ShowBtnImport)
  125. /// <summary>
  126. /// 导入${genTable.FunctionName}
  127. /// </summary>
  128. /// <returns></returns>
  129. public (string, object, object) Import${replaceDto.ModelTypeName}(List<${replaceDto.ModelTypeName}> list)
  130. {
  131. var x = Context.Storageable(list)
  132. .SplitInsert(it => !it.Any())
  133. $foreach(column in genTable.Columns)
  134. $if(column.IsRequired && column.IsIncrement == false)
  135. .SplitError(x => x.Item.${column.CsharpField}.IsEmpty(), "${column.ColumnComment}不能为空")
  136. $end
  137. $end
  138. //.WhereColumns(it => it.UserName)//如果不是主键可以这样实现(多字段it=>new{it.x1,it.x2})
  139. .ToStorage();
  140. var result = x.AsInsertable.ExecuteCommand();//插入可插入部分;
  141. string msg = $"插入{x.InsertList.Count} 更新{x.UpdateList.Count} 错误数据{x.ErrorList.Count} 不计算数据{x.IgnoreList.Count} 删除数据{x.DeleteList.Count} 总共{x.TotalList.Count}";
  142. Console.WriteLine(msg);
  143. //输出错误信息
  144. foreach (var item in x.ErrorList)
  145. {
  146. Console.WriteLine("错误" + item.StorageMessage);
  147. }
  148. foreach (var item in x.IgnoreList)
  149. {
  150. Console.WriteLine("忽略" + item.StorageMessage);
  151. }
  152. return (msg, x.ErrorList, x.IgnoreList);
  153. }
  154. $end
  155. $if(replaceDto.ShowBtnExport)
  156. /// <summary>
  157. /// 导出${genTable.FunctionName}
  158. /// </summary>
  159. /// <param name="parm"></param>
  160. /// <returns></returns>
  161. public PagedInfo<${replaceDto.ModelTypeName}Dto> ExportList(${replaceDto.ModelTypeName}QueryDto parm)
  162. {
  163. parm.PageNum = 1;
  164. parm.PageSize = 100000;
  165. var predicate = QueryExp(parm);
  166. var response = Queryable()
  167. .Where(predicate.ToExpression())
  168. .Select((it) => new ${replaceDto.ModelTypeName}Dto()
  169. {
  170. $foreach(column in dicts)
  171. $if(column.DictType != "")
  172. ${column.CsharpField}Label = it.${column.CsharpField}.GetConfigValue<Model.System.SysDictData>("${column.DictType}"),
  173. $end
  174. $end
  175. }, true)
  176. .ToPage(parm);
  177. return response;
  178. }
  179. $end
  180. /// <summary>
  181. /// 查询导出表达式
  182. /// </summary>
  183. /// <param name="parm"></param>
  184. /// <returns></returns>
  185. private static Expressionable<${replaceDto.ModelTypeName}> QueryExp(${replaceDto.ModelTypeName}QueryDto parm)
  186. {
  187. var predicate = Expressionable.Create<${replaceDto.ModelTypeName}>();
  188. $foreach(column in genTable.Columns)
  189. $if(column.IsQuery)
  190. $if(column.HtmlType == "selectMulti")
  191. predicate = predicate.AndIF(parm.${column.CsharpField} != null, it => parm.${column.CsharpField}.Contains(it.${column.CsharpField}));
  192. $elseif(column.CsharpType == "string")
  193. predicate = predicate.AndIF(!string.IsNullOrEmpty(parm.${column.CsharpField}), ${tool.QueryExp(column.CsharpField, column.QueryType)};
  194. $elseif(column.CsharpType == "DateTime")
  195. $if(column.HtmlType == "month")
  196. DateTime monthEnd = Convert.ToDateTime(parm.${column.CsharpField}).AddMonths(1);
  197. predicate = predicate.AndIF(parm.${column.CsharpField} != null, it => it.${column.CsharpField} >= parm.${column.CsharpField} && it.${column.CsharpField} < monthEnd);
  198. $else
  199. predicate = predicate.AndIF(parm.Begin${column.CsharpField} == null, it => it.${column.CsharpField} >= DateTime.Now.ToShortDateString().ParseToDateTime());
  200. predicate = predicate.AndIF(parm.Begin${column.CsharpField} != null, it => it.${column.CsharpField} >= parm.Begin${column.CsharpField});
  201. predicate = predicate.AndIF(parm.End${column.CsharpField} != null, it => it.${column.CsharpField} <= parm.End${column.CsharpField});
  202. $end
  203. $elseif(column.CsharpType == "int" || column.CsharpType == "long")
  204. predicate = predicate.AndIF(parm.${column.CsharpField} != null, ${tool.QueryExp(column.CsharpField, column.QueryType)};
  205. $end
  206. $end
  207. $end
  208. return predicate;
  209. }
  210. }
  211. }