using Hh.Mes.Common.log; using Hh.Mes.Common.Request; using Hh.Mes.POJO.Entity; using Hh.Mes.POJO.Response; using Hh.Mes.Service.Repository; using SqlSugar; using System; using System.Linq; using System.Linq.Expressions; using Hh.Mes.Pojo.System; using Hh.Mes.Service.SystemAuth; namespace Hh.Mes.Service.Configure { /// <summary> /// 客户端状态 /// </summary> public class DaqClientStatusService : RepositorySqlSugar<daq_client_status> { public DaqClientStatusService(IAuth auth) : base(auth) { } public dynamic Load(PageReq pageReq, daq_client_status entity) { return ExceptionsHelp.Instance.ExecuteT(() => { var result = new Response(); var expression = LinqWhere(entity); //先组合查询表达式(多表查询查看IOT 设备列表案例) var query = Context.Queryable<daq_client_status, base_project>((c, p) => new JoinQueryInfos(JoinType.Left, c.projectCode == p.projectCode)).Where(expression).OrderBy((c, p) => c.projectCode); //Exel false 分页 if (!entity.Exel) { int total = 0; result.Result = query.Select((c, p) => new { c.id, c.clientKeys, c.clientName, c.projectCode, p.projectName, c.lastSeenDate, c.remark, }).ToOffsetPage(pageReq.page, pageReq.limit, ref total); result.Count = total; } else { result.Result = query.Select((c, p) => new { c.id, c.clientKeys, c.clientName, c.projectCode, p.projectName, c.lastSeenDate }).ToList(); result.Count = result.Result.Count; } return result; }, catchRetrunValue: "list"); } public dynamic Ins(daq_client_status entity) { return ExceptionsHelp.Instance.ExecuteT(() => { var response = new Response(); //entity.createBy = sysWebUser.Account; //entity.createTime = DateTime.Now; response.Status = Add(entity); if (!response.Status) response.Message = SystemVariable.dataActionError; return response; }); } public dynamic Upd(daq_client_status entity) { return ExceptionsHelp.Instance.ExecuteT(() => { var response = new Response(); //entity.updateBy = sysWebUser.Account; //entity.updateTime = DateTime.Now; response.Status = Update(entity); if (!response.Status) response.Message = SystemVariable.dataActionError; return response; }); } public dynamic DelByIds(int[] ids) { return ExceptionsHelp.Instance.ExecuteT(() => { var response = new Response(); Context.Deleteable<daq_client_status>(t => ids.Contains(t.id)).ExecuteCommand(); return response; }); } public Response ExportData(daq_client_status entity) { return Load(null, entity); } public Expression<Func<daq_client_status, base_project, bool>> LinqWhere(daq_client_status client) { var exp = Expressionable.Create<daq_client_status, base_project>(); //数据过滤条件 //if (!string.IsNullOrWhiteSpace(model.XXX)) exp.And(x => x.XXX.Contains(model.XXX)); if (!string.IsNullOrWhiteSpace(client.clientName)) { exp.And((c, p) => c.clientName.Contains(client.clientName)); } if (!string.IsNullOrWhiteSpace(client.remark)) { exp.And((c, p) => c.remark.Contains(client.remark)); } if (!string.IsNullOrWhiteSpace(client.projectCode)) { exp.And((c, p) => c.projectCode == client.projectCode); } string user = sysWebUser.Account; if (user != SystemVariable.DefaultCreated) { var projectRoleKeys = GetProjectRoleKeys(user); exp.And((c, p) => SqlFunc.Subqueryable<sys_role_projects_rel>().Where(x => projectRoleKeys.Contains(x.project_roles_key) && x.project_key == p.keys).Any()); } return exp.ToExpression();//拼接表达式 } } }