using Hh.Mes.Common.Infrastructure; 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.Collections.Generic; using System.Linq; using System.Linq.Expressions; using Hh.Mes.Pojo.System; namespace Hh.Mes.Service.Base { /// <summary> /// 项目角色表-基础信息 /// </summary> public class SysProjectRolesService : RepositorySqlSugar<sys_project_roles> { public dynamic Load(PageReq pageReq, sys_project_roles entity) { return ExceptionsHelp.Instance.ExecuteT(() => { var result = new Response(); var expression = LinqWhere(entity); //先组合查询表达式(多表查询查看IOT 设备列表案例) var query = Context.Queryable<sys_project_roles>().Where(expression); //Exel false 分页 if (!entity.Exel) { int total = 0; result.Result = query.ToOffsetPage(pageReq.page, pageReq.limit, ref total); result.Count = total; } else { result.Result = query.ToList(); result.Count = result.Result.Count; } return result; }, catchRetrunValue: "list"); } public dynamic Ins(sys_project_roles entity) { return ExceptionsHelp.Instance.ExecuteT(() => { var response = new Response(); entity.keys = Guid.NewGuid(); entity.createBy = sysWebUser.Account; entity.createTime = DateTime.Now; response.Status = Add(entity); if (!response.Status) { response.Message = SystemVariable.dataActionError; response.Code = 500; }; return response; }); } public dynamic Upd(sys_project_roles 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; response.Code = 500; } return response; }); } public dynamic DelByIds(Guid[] ids) { return ExceptionsHelp.Instance.ExecuteT(() => { var response = new Response(); Context.Deleteable<sys_project_roles>(t => ids.Contains(t.keys)).ExecuteCommand(); return response; }); } public Response ExportData(sys_project_roles entity) { return Load(null, entity); } public Expression<Func<sys_project_roles, bool>> LinqWhere(sys_project_roles model) { try { var exp = Expressionable.Create<sys_project_roles>(); //数据过滤条件 //if (!string.IsNullOrWhiteSpace(model.XXX)) exp.And(x => x.XXX.Contains(model.XXX)); if (!string.IsNullOrWhiteSpace(model.roles_name)) { exp.And(x => x.roles_name.Contains(model.roles_name)); } if (!string.IsNullOrWhiteSpace(model.createBy)) { exp.And(x => x.createBy.Contains(model.createBy)); } if (!string.IsNullOrWhiteSpace(model.updateBy)) { exp.And(x => x.updateBy.Contains(model.updateBy)); } return exp.ToExpression();//拼接表达式 } catch (Exception ex) { throw new Exception($"{ex.Message}"); } } public dynamic GetUserBindProjectRole(string userAccount) { var response = new Response(); return ExceptionsHelp.Instance.ExecuteT(() => { response.Result = Context.Queryable<sys_user_project_roles_rel>().Where(x => x.account == userAccount).ToList(); return response; }); } /// <summary> /// 为用户绑定项目角色 /// </summary> public dynamic UserBindProjectRoleRel(string userAccount, bool checkeds, List<Guid> projectRoleKeys) { var response = new Response(); return ExceptionsHelp.Instance.ExecuteT(() => { //原有的项目角色编码 var oldProjectRoleKeys = Context.Queryable<sys_user_project_roles_rel>().Where(x => x.account == userAccount).Select(x => x.project_roles_key).ToList(); //需新增 var addTemps = projectRoleKeys.Except(oldProjectRoleKeys); //需删除 var deleteTemps = oldProjectRoleKeys.Except(projectRoleKeys); Context.Deleteable<sys_user_project_roles_rel>().Where(x => x.account == userAccount && deleteTemps.Contains(x.project_roles_key)).AddQueue(); var models = addTemps.Select(key => new sys_user_project_roles_rel { keys = Guid.NewGuid(), account = userAccount, project_roles_key = key, createTime = DateTime.Now, createBy = sysWebUser.Account }).ToList(); Context.Insertable(models).AddQueue(); response.Status = Context.SaveQueues() > 0; if (!response.Status) response.Message = "用户绑定项目角色信息失败"; return response; }); } } }