using LeaRun.Application.Entity.FlowManage; using LeaRun.Application.IService.FlowManage; using LeaRun.Application.Service.FlowManage; using LeaRun.Util.WebControl; using LeaRun.Data.Repository; using System; using System.Data; using LeaRun.Util.Extension; using System.Collections.Generic; namespace LeaRun.Application.Busines.FlowManage { /// /// 版 本 6.1 /// Copyright (c) 2013-2016 上海力软信息技术有限公司 /// 创建人:陈彬彬 /// 日 期:2016.03.19 13:57 /// 描 述:工作流流程模板操作(支持:SqlServer) /// public class WFSchemeInfoBLL { private WFSchemeInfoIService infoserver = new WFSchemeInfoService(); private WFSchemeContentIService schemeserver = new WFSchemeContentService(); #region 获取数据 /// /// 获取流程列表分页数据 /// /// 分页参数 /// 查询参数 /// public DataTable GetPageList(Pagination pagination, string queryJson) { return infoserver.GetPageList(pagination, queryJson); } /// /// 获取流程列表数据 /// /// /// public DataTable GetList(string queryJson) { return infoserver.GetList(queryJson); } /// /// 获取所有表单数据 /// /// public DataTable GetList() { return infoserver.GetList(); } /// /// 获取工作流模板对象列表 /// /// 工作流模板信息表Id /// public IEnumerable GetSchemeEntityList(string wfSchemeInfoId) { return schemeserver.GetEntityList(wfSchemeInfoId); } /// /// 获取对象列表(不包括模板内容) /// /// 工作流模板信息表Id /// public DataTable GetTableList(string wfSchemeInfoId) { return schemeserver.GetTableList(wfSchemeInfoId); } /// /// 获取对象 /// /// 主键 /// public WFSchemeInfoEntity GetEntity(string keyValue) { try { return infoserver.GetEntity(keyValue); } catch (Exception) { throw; } } /// /// 获取工作流模板对象 /// /// /// /// public WFSchemeContentEntity GetSchemeEntity(string wfSchemeInfoId, string schemeVersion) { try { return schemeserver.GetEntity(wfSchemeInfoId, schemeVersion); } catch (Exception) { throw; } } /// /// 获取权限列表数据 /// /// /// public IEnumerable GetAuthorizeEntityList(string schemeInfoId) { return infoserver.GetAuthorizeEntityList(schemeInfoId); } #endregion #region 提交数据 /// /// 删除流程 /// /// 主键 public void RemoveForm(string keyValue) { IRepository db = new RepositoryFactory().BaseRepository().BeginTrans(); try { WFSchemeInfoEntity entity = db.FindEntity(keyValue); db.Delete(keyValue); var expression = LinqExtensions.True(); expression = expression.And(t => t.WFSchemeInfoId == entity.Id); db.Delete(expression); db.Commit(); } catch (Exception) { db.Rollback(); throw; } } /// /// 保存流程 /// /// 表单模板实体类 /// 主键 /// public int SaveForm(string keyValue, WFSchemeInfoEntity entity, WFSchemeContentEntity modelentity, string[] shcemeAuthorizeData) { IRepository db = new RepositoryFactory().BaseRepository().BeginTrans(); try { if (string.IsNullOrEmpty(keyValue)) { entity.Create(); entity.SchemeVersion = DateTime.Now.ToString("yyyyMMddHHmmssffff"); db.Insert(entity); modelentity.Create(); modelentity.WFSchemeInfoId = entity.Id; modelentity.SchemeVersion = entity.SchemeVersion; db.Insert(modelentity); } else { WFSchemeContentEntity modelentityold = schemeserver.GetEntity(keyValue, entity.SchemeVersion); if (modelentityold.SchemeContent != modelentity.SchemeContent) { if (modelentity.SchemeVersion == "cg") { modelentityold.SchemeContent = modelentity.SchemeContent; modelentityold.SchemeVersion = DateTime.Now.ToString("yyyyMMddHHmmssffff"); modelentity.SchemeVersion = modelentityold.SchemeVersion; db.Update(modelentityold); } else { modelentity.Create(); modelentity.WFSchemeInfoId = keyValue; modelentity.SchemeVersion = DateTime.Now.ToString("yyyyMMddHHmmssffff"); db.Insert(modelentity); } } else { modelentity.SchemeVersion = modelentityold.SchemeVersion; } entity.Modify(keyValue); entity.SchemeVersion = modelentity.SchemeVersion; db.Update(entity); } db.Delete(entity.Id, "SchemeInfoId"); foreach (string item in shcemeAuthorizeData) { if (item != "") { WFSchemeInfoAuthorizeEntity _authorizeEntity = new WFSchemeInfoAuthorizeEntity(); _authorizeEntity.Create(); _authorizeEntity.SchemeInfoId = entity.Id; _authorizeEntity.ObjectId = item; db.Insert(_authorizeEntity); } } db.Commit(); return 1; } catch (Exception) { db.Rollback(); throw; } } /// /// 更新流程模板状态(启用,停用) /// /// 主键 /// 状态 1:启用;0.停用 public void UpdateState(string keyValue, int state) { try { infoserver.UpdateState(keyValue, state); } catch (Exception) { throw; } } #endregion } }