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
}
}