using Infrastructure; using OpenAuth.App.Base; using OpenAuth.App.Interface; using OpenAuth.App.Request; using OpenAuth.Repository; using OpenAuth.Repository.Domain; using SqlSugar; using StackExchange.Redis; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using OpenAuth.App.BaseApp.Base; namespace OpenAuth.App { public class WFDelegateApp : SqlSugarBaseApp { ISqlSugarClient client; public WFDelegateApp(ISugarUnitOfWork unitWork, ISimpleClient repository, IAuth auth) : base(unitWork, repository, auth) { client = base.Repository.AsSugarClient(); } #region 获取数据 /// /// 获取分页列表 /// /// 分页参数 /// 查询参数 /// public async Task>> GetPageList(PageReq pageReq, WFDelegateRule queryParams) { RefAsync totalCount = 0; var userId = _auth.GetUserId(); var exp = Expressionable.Create() .AndIF(!string.IsNullOrEmpty(queryParams.ToUserName), t => t.ToUserName.Contains(queryParams.ToUserName)) .AndIF(queryParams.EnabledMark != null, t => t.EnabledMark == queryParams.EnabledMark) .AndIF(queryParams.Type != null, t => t.Type == queryParams.Type) .And(t => t.CreateUserId == userId).ToExpression(); var list = await client.Queryable().Where(exp) .ToPageListAsync(pageReq.page, pageReq.limit, totalCount); return new PageInfo> { Items = list, Total = totalCount }; } /// /// 根据委托人获取委托记录 /// /// 0 审核委托 1发起委托 /// public Task> GetList(int type = 0) { return null; } /// /// 获取关联的模板数据 /// /// public async Task> GetRelationList(string keyValue) { return await client.Queryable().Where(a => a.DelegateRuleId == keyValue).ToListAsync(); } /// /// 获取委托信息 /// /// public Task Get(string keyValue) { return null; } /// /// 获取我的委托人(发起委托) /// /// 流程模板编码 /// public async Task> GetMyUserList(string code) { var list = new List(); var userInfo = base._auth.GetCurrentUser().User; var listTmp = await GetMyUserList(userInfo, code); var dic = new Dictionary(); foreach (var item in listTmp) { if (!dic.ContainsKey(item.CreateUserId)) { dic.Add(item.CreateUserId, true); list.Add(item.CreateUserId); } } if (list.Count > 0) { return await client.Queryable().Where(t => list.Contains(t.Id.ToString())).ToListAsync(); } else { return new List(); } } public async Task GetEntity(string keyValue) { return await base.Repository.GetByIdAsync(keyValue); } #endregion #region 提交数据 /// /// 删除实体 /// /// 主键 public async Task> DeleteEntity(string keyValue) { using (var uwo = UnitWork.CreateContext()) { await uwo.WFDelegateRule.DeleteByIdAsync(keyValue); await uwo.WFDelegateRelation.DeleteAsync(t => t.DelegateRuleId == keyValue); var flag = uwo.Commit(); return new Response { Result = flag, Message = flag == true ? "success" : "error" }; } } /// /// 保存实体 /// /// 主键 /// 实体数据 /// 关联模板主键 public async Task> SaveEntity(string keyValue, WFDelegateRule wfDelegateRuleEntity, string[] schemeInfoList) { using (var uwo = UnitWork.CreateContext()) { if (string.IsNullOrEmpty(keyValue)) { wfDelegateRuleEntity.Id = Guid.NewGuid().ToString(); wfDelegateRuleEntity.CreateDate = DateTime.Now; wfDelegateRuleEntity.EnabledMark = 1; wfDelegateRuleEntity.CreateUserId = _auth.GetUserId(); wfDelegateRuleEntity.CreateUserName = _auth.GetUserName(); await uwo.WFDelegateRule.InsertAsync(wfDelegateRuleEntity); } else { wfDelegateRuleEntity.Id = keyValue; await uwo.WFDelegateRule.UpdateAsync(wfDelegateRuleEntity); await uwo.WFDelegateRelation.DeleteAsync(t => t.DelegateRuleId == keyValue); } foreach (string schemeInfoId in schemeInfoList) { WFDelegateRelation wfDelegateRuleRelationEntity = new WFDelegateRelation(); wfDelegateRuleRelationEntity.Id = Guid.NewGuid().ToString(); wfDelegateRuleRelationEntity.DelegateRuleId = wfDelegateRuleEntity.Id; wfDelegateRuleRelationEntity.SchemeInfoId = schemeInfoId; await uwo.WFDelegateRelation.InsertAsync(wfDelegateRuleRelationEntity); } var flag = uwo.Commit(); return new Response { Result = flag, Message = flag == true ? "success" : "error" }; } } /// /// 更新委托规则状态信息 /// /// 主键 /// public async Task> UpdateState(string keyValue, int state) { var flag = await base.Repository.UpdateSetColumnsTrueAsync(a => new WFDelegateRule { EnabledMark = state }, a => a.Id == keyValue); return new Response { Result = flag, Message = flag == true ? "success" : "error" }; } #endregion public async Task> GetMyUserList(SysUser userInfo, string code) { string userId = userInfo.Id.ToString(); DateTime datetime = DateTime.Now; var queryable = client.Queryable() .LeftJoin((rule, r) => rule.Id == r.DelegateRuleId); var exp = Expressionable.Create() .And((rule, r) => rule.ToUserId == userId && rule.Type == 1 && r.SchemeInfoId == code) .And((rule, r) => rule.BeginDate <= datetime && rule.EndDate >= @datetime) .ToExpression(); return await queryable.Where(exp).Select((rule, r) => rule).ToListAsync(); } } }