You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
204 lines
7.9 KiB
C#
204 lines
7.9 KiB
C#
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<WFDelegateRule, SugarDbContext>
|
|
{
|
|
ISqlSugarClient client;
|
|
public WFDelegateApp(ISugarUnitOfWork<SugarDbContext> unitWork, ISimpleClient<WFDelegateRule> repository, IAuth auth) : base(unitWork, repository, auth)
|
|
{
|
|
client = base.Repository.AsSugarClient();
|
|
}
|
|
|
|
|
|
#region 获取数据
|
|
/// <summary>
|
|
/// 获取分页列表
|
|
/// </summary>
|
|
/// <param name="pagination">分页参数</param>
|
|
/// <param name="queryParams">查询参数</param>
|
|
/// <returns></returns>
|
|
public async Task<PageInfo<List<WFDelegateRule>>> GetPageList(PageReq pageReq, WFDelegateRule queryParams)
|
|
{
|
|
RefAsync<int> totalCount = 0;
|
|
var userId = _auth.GetUserId();
|
|
var exp = Expressionable.Create<WFDelegateRule>()
|
|
.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<WFDelegateRule>().Where(exp)
|
|
.ToPageListAsync(pageReq.page, pageReq.limit, totalCount);
|
|
return new PageInfo<List<WFDelegateRule>>
|
|
{
|
|
Items = list,
|
|
Total = totalCount
|
|
};
|
|
|
|
}
|
|
/// <summary>
|
|
/// 根据委托人获取委托记录
|
|
/// </summary>
|
|
/// <param name="type">0 审核委托 1发起委托</param>
|
|
/// <returns></returns>
|
|
public Task<IEnumerable<WFDelegateRule>> GetList(int type = 0) { return null; }
|
|
/// <summary>
|
|
/// 获取关联的模板数据
|
|
/// </summary>
|
|
/// <returns></returns>
|
|
public async Task<List<WFDelegateRelation>> GetRelationList(string keyValue)
|
|
{
|
|
return await client.Queryable<WFDelegateRelation>().Where(a => a.DelegateRuleId == keyValue).ToListAsync();
|
|
}
|
|
/// <summary>
|
|
/// 获取委托信息
|
|
/// </summary>
|
|
/// <returns></returns>
|
|
public Task<WFDelegateRule> Get(string keyValue) { return null; }
|
|
/// <summary>
|
|
/// 获取我的委托人(发起委托)
|
|
/// </summary>
|
|
/// <param name="code">流程模板编码</param>
|
|
/// <returns></returns>
|
|
public async Task<List<SysUser>> GetMyUserList(string code)
|
|
{
|
|
var list = new List<string>();
|
|
var userInfo = base._auth.GetCurrentUser().User;
|
|
var listTmp = await GetMyUserList(userInfo, code);
|
|
var dic = new Dictionary<string, bool>();
|
|
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<SysUser>().Where(t => list.Contains(t.Id.ToString())).ToListAsync();
|
|
}
|
|
else
|
|
{
|
|
return new List<SysUser>();
|
|
}
|
|
}
|
|
|
|
public async Task<WFDelegateRule> GetEntity(string keyValue)
|
|
{
|
|
return await base.Repository.GetByIdAsync(keyValue);
|
|
}
|
|
#endregion
|
|
|
|
#region 提交数据
|
|
/// <summary>
|
|
/// 删除实体
|
|
/// </summary>
|
|
/// <param name="keyValue">主键</param>
|
|
public async Task<Response<bool>> 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<bool>
|
|
{
|
|
Result = flag,
|
|
Message = flag == true ? "success" : "error"
|
|
};
|
|
}
|
|
}
|
|
/// <summary>
|
|
/// 保存实体
|
|
/// </summary>
|
|
/// <param name="keyValue">主键</param>
|
|
/// <param name="wfDelegateRule">实体数据</param>
|
|
/// <param name="schemeInfoList">关联模板主键</param>
|
|
public async Task<Response<bool>> 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<bool>
|
|
{
|
|
Result = flag,
|
|
Message = flag == true ? "success" : "error"
|
|
};
|
|
}
|
|
}
|
|
/// <summary>
|
|
/// 更新委托规则状态信息
|
|
/// </summary>
|
|
/// <param name="keyValue">主键</param>
|
|
/// <param name="state"></param>
|
|
public async Task<Response<bool>> UpdateState(string keyValue, int state)
|
|
{
|
|
var flag = await base.Repository.UpdateSetColumnsTrueAsync(a => new WFDelegateRule { EnabledMark = state }, a => a.Id == keyValue);
|
|
return new Response<bool>
|
|
{
|
|
Result = flag,
|
|
Message = flag == true ? "success" : "error"
|
|
};
|
|
}
|
|
#endregion
|
|
|
|
|
|
public async Task<IEnumerable<WFDelegateRule>> GetMyUserList(SysUser userInfo, string code)
|
|
{
|
|
string userId = userInfo.Id.ToString();
|
|
DateTime datetime = DateTime.Now;
|
|
|
|
var queryable = client.Queryable<WFDelegateRule>()
|
|
.LeftJoin<WFDelegateRelation>((rule, r) => rule.Id == r.DelegateRuleId);
|
|
var exp = Expressionable.Create<WFDelegateRule, WFDelegateRelation>()
|
|
.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();
|
|
|
|
}
|
|
}
|
|
}
|