using Dapper; using Learun.DataBase.Repository; using Learun.Util; using System; using System.Collections.Generic; using System.Data; using System.Text; namespace Learun.Application.WorkFlow { /// /// 版 本 Learun-ADMS V7.0.3 力软敏捷开发框架 /// Copyright (c) 2013-2018 上海力软信息技术有限公司 /// 创建人:力软-框架开发组 /// 日 期:2018.12.06 /// 描 述:工作流模板(新) /// public class NWFSchemeService : RepositoryFactory { #region 获取数据 /// /// 获取流程分页列表 /// /// 分页参数 /// 查询条件 /// public IEnumerable GetInfoPageList(Pagination pagination, string queryJson) { try { var strSql = new StringBuilder(); strSql.Append("SELECT t.* "); strSql.Append(",t1.F_Type,t1.F_CreateDate,t1.F_CreateUserId,t1.F_CreateUserName "); strSql.Append(" FROM LR_NWF_SchemeInfo t LEFT JOIN LR_NWF_Scheme t1 ON t.F_SchemeId = t1.F_Id WHERE 1=1 "); var dp = new DynamicParameters(); if (!string.IsNullOrEmpty(queryJson)) { var queryParam = queryJson.ToJObject(); if (!queryParam["keyword"].IsEmpty()) { strSql.Append(" AND ( t.F_Name like @keyword OR t.F_Code like @keyword ) "); dp.Add("keyword", "%" + queryParam["keyword"].ToString() + "%", DbType.String); } if (!queryParam["category"].IsEmpty()) { strSql.Append(" AND t.F_Category = @category "); dp.Add("category", queryParam["category"].ToString(), DbType.String); } } return this.BaseRepository().FindList(strSql.ToString(), dp, pagination); } catch (Exception ex) { if (ex is ExceptionEx) { throw; } else { throw ExceptionEx.ThrowServiceException(ex); } } } /// /// 获取自定义流程列表 /// /// 用户信息 /// public IEnumerable GetInfoList(UserInfo userInfo) { try { string userId = userInfo.userId; string postIds = userInfo.postIds; string roleIds = userInfo.roleIds; List list = (List)this.BaseRepository().FindList(t => t.F_ObjId == null || userId.Contains(t.F_ObjId) || postIds.Contains(t.F_ObjId) || roleIds.Contains(t.F_ObjId) ); string schemeinfoIds = ""; foreach (var item in list) { schemeinfoIds += "'" + item.F_SchemeInfoId + "',"; } schemeinfoIds = "(" + schemeinfoIds.Remove(schemeinfoIds.Length - 1, 1) + ")"; var strSql = new StringBuilder(); strSql.Append("SELECT * "); strSql.Append(" FROM LR_NWF_SchemeInfo t WHERE (t.F_EnabledMark = 1 AND t.F_Mark = 1 AND t.F_Kind = 1 AND t.F_Id in " + schemeinfoIds + ")"); strSql.Append(" or t.F_Id in('3a9e9db8-a928-435b-a9d2-4a4660b4cdeb','307b2c75-174f-424d-84d8-e0f8374ec6d1')"); return this.BaseRepository().FindList(strSql.ToString()); } catch (Exception ex) { if (ex is ExceptionEx) { throw; } else { throw ExceptionEx.ThrowServiceException(ex); } } } /// /// 获取流程列表 /// /// public IEnumerable GetInfoList() { try { var strSql = new StringBuilder(); strSql.Append("SELECT * "); strSql.Append(" FROM LR_NWF_SchemeInfo t WHERE t.F_EnabledMark = 1 "); return this.BaseRepository().FindList(strSql.ToString()); } catch (Exception ex) { if (ex is ExceptionEx) { throw; } else { throw ExceptionEx.ThrowServiceException(ex); } } } /// /// 获取流程模板分页列表 /// /// 分页参数 /// 登录者信息 /// 查询参数 /// public IEnumerable GetAppInfoPageList(Pagination pagination, UserInfo userInfo, string queryJson) { try { string userId = userInfo.userId; string postIds = userInfo.postIds; string roleIds = userInfo.roleIds; List list = (List)this.BaseRepository().FindList(t => t.F_ObjId == null || userId.Contains(t.F_ObjId) || postIds.Contains(t.F_ObjId) || roleIds.Contains(t.F_ObjId) ); string schemeinfoIds = ""; foreach (var item in list) { schemeinfoIds += "'" + item.F_SchemeInfoId + "',"; } schemeinfoIds = "(" + schemeinfoIds.Remove(schemeinfoIds.Length - 1, 1) + ")"; var strSql = new StringBuilder(); strSql.Append("SELECT * "); strSql.Append(" FROM LR_NWF_SchemeInfo t WHERE t.F_EnabledMark = 1 AND t.F_Mark = 1 AND F_IsInApp = 1 AND t.F_Kind = 1 AND t.F_Id in " + schemeinfoIds); var queryParam = queryJson.ToJObject(); string keyword = ""; if (!queryParam["keyword"].IsEmpty()) { strSql.Append(" AND ( t.F_Name like @keyword OR t.F_Code like @keyword ) "); keyword = "%" + queryParam["keyword"].ToString() + "%"; } return this.BaseRepository().FindList(strSql.ToString(), new { keyword }, pagination); } catch (Exception ex) { if (ex is ExceptionEx) { throw; } else { throw ExceptionEx.ThrowServiceException(ex); } } } /// /// 获取模板基础信息的实体 /// /// 主键 /// public NWFSchemeInfoEntity GetInfoEntity(string keyValue) { try { return this.BaseRepository().FindEntity(keyValue); } catch (Exception ex) { if (ex is ExceptionEx) { throw; } else { throw ExceptionEx.ThrowServiceException(ex); } } } /// /// 获取模板基础信息的实体 /// /// 流程编号 /// public NWFSchemeInfoEntity GetInfoEntityByCode(string code) { try { return this.BaseRepository().FindEntity(t => t.F_Code == code); } catch (Exception ex) { if (ex is ExceptionEx) { throw; } else { throw ExceptionEx.ThrowServiceException(ex); } } } /// /// 获取流程模板权限列表 /// /// 模板信息主键 /// public IEnumerable GetAuthList(string schemeInfoId) { try { return this.BaseRepository().FindList(t => t.F_SchemeInfoId == schemeInfoId); } catch (Exception ex) { if (ex is ExceptionEx) { throw; } else { throw ExceptionEx.ThrowServiceException(ex); } } } /// /// 获取模板列表 /// /// 分页参数 /// 流程信息主键 /// public IEnumerable GetSchemePageList(Pagination pagination, string schemeInfoId) { try { var strSql = new StringBuilder(); strSql.Append("SELECT t.F_Id,t.F_SchemeInfoId,t.F_Type,t.F_CreateDate,t.F_CreateUserId,t.F_CreateUserName"); strSql.Append(" FROM LR_NWF_Scheme t "); strSql.Append(" WHERE t.F_SchemeInfoId = @schemeInfoId "); return this.BaseRepository().FindList(strSql.ToString(), new { schemeInfoId }, pagination); } catch (Exception ex) { if (ex is ExceptionEx) { throw; } else { throw ExceptionEx.ThrowServiceException(ex); } } } /// /// 获取模板的实体 /// /// 主键 /// public NWFSchemeEntity GetSchemeEntity(string keyValue) { try { return this.BaseRepository().FindEntity(keyValue); } catch (Exception ex) { if (ex is ExceptionEx) { throw; } else { throw ExceptionEx.ThrowServiceException(ex); } } } #endregion #region 提交数据 /// /// 虚拟删除模板信息 /// /// 主键 public void DeleteEntity(string keyValue) { var db = this.BaseRepository().BeginTrans(); try { db.Delete(t => t.F_Id.Equals(keyValue)); db.Delete(t => t.F_SchemeInfoId.Equals(keyValue)); db.Delete(t => t.F_SchemeInfoId.Equals(keyValue)); db.Commit(); } catch (Exception ex) { db.Rollback(); if (ex is ExceptionEx) { throw; } else { throw ExceptionEx.ThrowServiceException(ex); } } } /// /// 保存模板信息 /// /// 主键 /// 模板基础信息 /// 模板信息 /// 模板权限信息 public void SaveEntity(string keyValue, NWFSchemeInfoEntity infoEntity, NWFSchemeEntity schemeEntity, List authList) { IRepository db = new RepositoryFactory().BaseRepository().BeginTrans(); try { if (string.IsNullOrEmpty(keyValue)) { infoEntity.Create(); } else { infoEntity.Modify(keyValue); } #region 模板信息 if (schemeEntity != null) { schemeEntity.F_SchemeInfoId = infoEntity.F_Id; schemeEntity.Create(); db.Insert(schemeEntity); infoEntity.F_SchemeId = schemeEntity.F_Id; } #endregion #region 模板基础信息 if (!string.IsNullOrEmpty(keyValue)) { db.Update(infoEntity); } else { db.Insert(infoEntity); } #endregion #region 流程模板权限信息 string schemeInfoId = infoEntity.F_Id; db.Delete(t => t.F_SchemeInfoId == schemeInfoId); foreach (var item in authList) { item.Create(); item.F_SchemeInfoId = schemeInfoId; db.Insert(item); } #endregion db.Commit(); } catch (Exception ex) { db.Rollback(); if (ex is ExceptionEx) { throw; } else { throw ExceptionEx.ThrowServiceException(ex); } } } /// /// 更新流程模板 /// /// 模板信息主键 /// 模板主键 public void UpdateScheme(string schemeInfoId, string schemeId) { try { NWFSchemeEntity nWFSchemeEntity = GetSchemeEntity(schemeId); NWFSchemeInfoEntity entity = new NWFSchemeInfoEntity { F_Id = schemeInfoId, F_SchemeId = schemeId }; if (nWFSchemeEntity.F_Type != 1) { entity.F_EnabledMark = 0; } this.BaseRepository().Update(entity); } catch (Exception ex) { if (ex is ExceptionEx) { throw; } else { throw ExceptionEx.ThrowServiceException(ex); } } } /// /// 更新自定义表单模板状态 /// /// 模板信息主键 /// 状态1启用0禁用 public void UpdateState(string schemeInfoId, int state) { try { NWFSchemeInfoEntity entity = new NWFSchemeInfoEntity { F_Id = schemeInfoId, F_EnabledMark = state }; this.BaseRepository().Update(entity); } catch (Exception ex) { if (ex is ExceptionEx) { throw; } else { throw ExceptionEx.ThrowServiceException(ex); } } } #endregion #region 扩展数据 /// /// 获取流程模板使用次数列表 /// /// 查询参数 /// public IEnumerable GetNWFSchemeUseList(string queryJson) { try { var dp = new object(); var queryParam = queryJson.ToJObject(); var strSql = new StringBuilder(); strSql.Append("select si.*,p.F_Id as F_ProcessId,p.F_CreateDate from LR_NWF_SchemeInfo si"); strSql.Append(" left join LR_NWF_Scheme s on si.F_Id=s.F_SchemeInfoId and s.F_Type=1 "); strSql.Append(" left join LR_NWF_Process p on s.F_Id=p.F_SchemeId "); if (!queryParam["year"].IsEmpty()) { dp = new { year = queryParam["year"].ToInt() }; strSql.Append(" and DATEPART(yyyy,p.F_CreateDate) = @year "); } strSql.Append(" where si.F_EnabledMark=1 "); return this.BaseRepository().FindList(strSql.ToString(), dp); } catch (Exception ex) { if (ex is ExceptionEx) { throw; } else { throw ExceptionEx.ThrowServiceException(ex); } } } #endregion } }