UNIVPLMDataIntegration/Admin.NET/Admin.NET.Web.Entry/wwwroot/template/service_Mid.cs.vm
lqc f0ab2f2bd9 修复service_Mid.cs.vm修复中间件跨服务器异库因主库权限无法读取问题;
新增缓存批量设置和获取的扩展(只对雪花Id有效),适用实体大数据量碎片化存储缓存操作,自动分批处理
2025-03-10 01:17:32 +08:00

116 lines
5.5 KiB
Plaintext

@{
string joinTableName = "u";
Dictionary<string, int> definedObjects = new Dictionary<string, int>();
bool haveLikeCdt = false;
string RemoteField="";
string PKName="";
foreach (var column in Model.TableField){
if (column.QueryWhether == "Y" && column.QueryType == "like"){
haveLikeCdt = true;
}
if(column.RemoteVerify){
RemoteField=@column.PropertyName;
}
if(column.ColumnKey == "True"){
PKName=column.PropertyName;
}
}
}
@if(@Model.NameSpace != "Admin.NET.Core"){
@:using Admin.NET.Core;
}
namespace @(@Model.NameSpace);
public partial class @(@Model.ClassName)Mid
{
/// <summary>
/// 获取查询
/// </summary>
/// <param name="_@(@Model.LowerClassName)Rep"></param>
/// <param name="input"></param>
/// <returns></returns>
public static ISugarQueryable<@(@Model.ClassName)Output> GetQuery(SqlSugarRepository<@(@Model.ClassName)> _@(@Model.LowerClassName)Rep,Page@(@Model.ClassName)Input input)
{
var sysCacheService = App.GetRequiredService<SysCacheService>();
var db = App.GetRequiredService<ISqlSugarClient>();
@if (haveLikeCdt) {
@:input.SearchKey = input.SearchKey?.Trim();
}
var query = _@(@Model.LowerClassName)Rep.AsQueryable()
@{string conditionFlag = "";}
@if (haveLikeCdt) {
@:.WhereIF(!string.IsNullOrEmpty(input.SearchKey), u =>
@foreach (var column in Model.TableField){
if (@column.QueryWhether == "Y" && column.QueryType == "like"){
@:@(conditionFlag)u.@(@column.PropertyName).Contains(input.SearchKey)
conditionFlag="|| ";
}
}
@:)
}
@foreach (var column in Model.TableField){
if (@column.QueryWhether == "Y"){
if (@column.NetType?.TrimEnd('?') == "string"){
if(@column.QueryType == "like"){
@:.WhereIF(!string.IsNullOrWhiteSpace(input.@column.PropertyName), u => u.@(@column.PropertyName).Contains(input.@(@column.PropertyName).Trim()))
}else{
@:.WhereIF(!string.IsNullOrWhiteSpace(input.@column.PropertyName), u => u.@(@column.PropertyName) @column.QueryType input.@(@column.PropertyName))
}
}else if(@column.NetType?.TrimEnd('?') == "int" || @column.NetType?.TrimEnd('?') == "long"){
@:.WhereIF(input.@column.PropertyName>0, u => u.@(@column.PropertyName) @column.QueryType input.@(@column.PropertyName))
}else if(@column.NetType?.TrimEnd('?') == "DateTime" && @column.QueryType == "~"){
@:.WhereIF(input.@(@column.PropertyName)Range != null && input.@(@column.PropertyName)Range.Length == 2, u => u.@(@column.PropertyName) >= input.@(@column.PropertyName)Range[0] && u.@(@column.PropertyName) <= input.@(@column.PropertyName)Range[1])
}else if(@column.NetType?.TrimEnd('?').EndsWith("Enum") == true) {
@:.WhereIF(input.@(@column.PropertyName).HasValue, u => u.@(@column.PropertyName) @column.QueryType input.@(@column.PropertyName))
}
}
}
.Select<@(@Model.ClassName)Output>()
@if(!string.IsNullOrEmpty(Model.TreeName)){
@:.Mapper(c => c.Name= c.@(@Model.TreeName).ToString())
}
@foreach (var column in Model.TableField){
if(@column.EffectType == "Upload"){
@://.Mapper(c => c.@(@column.PropertyName)Attachment, c => c.@(@column.PropertyName))
}
else if(@column.EffectType == "ForeignKey"){
@:.Mapper(t =>
@:{
@: //使用缓存
@: var key = $"@(@column.FkEntityName)_{t.@(@column.PropertyName)}";
@: if (!sysCacheService.ExistKey(key))
@: {
@: var m = db.Queryable<@(@column.FkEntityName)>().FirstAsync(f => f.@(@column.FkLinkColumnName) == t.@(@column.PropertyName));
@: if (m != null) sysCacheService.Set(key, m);
@: }
@: t.@(@column.PropertyName)@(@column.FkColumnName) = sysCacheService.Get<@(@column.FkEntityName)>(key)?.@(@column.FkColumnName);
@: //t.@(@column.PropertyName)@(@column.FkColumnName)=db.Queryable<@(@column.FkEntityName)>().FirstAsync(f => f.@(@column.FkLinkColumnName) == t.@(@column.PropertyName))).@(@column.FkColumnName);//
@:})
}
else if(@column.EffectType == "ApiTreeSelector"){
@:.Mapper(t =>
@:{
@: //使用缓存
@: var key = $"@(@column.FkEntityName)_{t.@(@column.PropertyName)}";
@: if (!sysCacheService.ExistKey(key))
@: {
@: var m = db.Queryable<@(@column.FkEntityName)>().FirstAsync(f => f.@(@column.ValueColumn) == t.@(@column.PropertyName));
@: if (m != null) sysCacheService.Set(key, m);
@: }
@: t.@(@column.PropertyName)@(@column.DisplayColumn) = sysCacheService.Get<@(@column.FkEntityName)>(key)?.@(@column.DisplayColumn);
@: //t.@(@column.PropertyName)@(@column.FkColumnName)=db.Queryable<@(@column.FkEntityName)>().FirstAsync(f => f.@(@column.FkLinkColumnName) == t.@(@column.PropertyName))).@(@column.FkColumnName);//
@:})
}
}
;
return query;
}
}
@{
string LowerFirstLetter(string text)
{
return text.ToString()[..1].ToLower() + text[1..]; // 首字母小写
}
}