/// <summary> /// 提交审批(步骤流) /// </summary> /// <param name="userInfo">用户信息</param> /// <param name="categoryCode">单据类型代码</param> /// <param name="categoryFullName">单据类型名称</param> /// <param name="objectIds">单据主键组</param> /// <param name="objectFullName">单据名称</param> /// <param name="workFlowCode">工作流编号</param> /// <param name="auditIdea">审批意见</param> /// <param name="statusCode">返回码</param> /// <param name="dtWorkFlowActivity">步骤列表</param> /// <returns></returns> public string AuditStatr(BaseUserInfo userInfo, string categoryCode, string categoryFullName, string[] objectIds, string objectFullName, string workFlowCode, string auditIdea, out string statusCode, DataTable dtWorkFlowActivity = null) { string result = string.Empty; string returnCode = string.Empty; var parameter = ServiceInfo.Create(userInfo, MethodBase.GetCurrentMethod()); ServiceUtil.ProcessWorkFlowDbWithTransaction(userInfo, parameter, (dbHelper) => { // 默认的都按报表来处理,特殊的直接调用,明确指定 IWorkFlowManager userReportManager = new UserReportManager(userInfo); var workFlowCurrentManager = new BaseWorkFlowCurrentManager(dbHelper, userInfo); for (int i = 0; i < objectIds.Length; i++) { result = workFlowCurrentManager.AutoStatr(userReportManager, objectIds[i], objectFullName, categoryCode, categoryFullName, workFlowCode, auditIdea, dtWorkFlowActivity); } if (!string.IsNullOrEmpty(result)) { returnCode = Status.OK.ToString(); } // BaseLogManager.Instance.Add(result, this.serviceName, MethodBase.GetCurrentMethod()); }); statusCode = returnCode; return(result); }
/// <summary> /// 检查是否是步骤流 /// </summary> /// <param name="userInfo">用户信息</param> /// <param name="categoryCode">单据类型代码</param> /// <param name="objectIds">单据主键组</param> /// <param name="returnStatusCode">返回代码</param> /// <param name="returnStatusMessage">返回信息</param> /// <returns></returns> public bool CheckIsAutoWorkFlow(BaseUserInfo userInfo, string categoryCode, string[] objectIds, out string returnStatusCode, out string returnStatusMessage) { // 写入调试信息 #if (DEBUG) int milliStart = BaseBusinessLogic.StartDebug(userInfo, MethodBase.GetCurrentMethod()); #endif // 加强安全验证防止未授权匿名调用 #if (!DEBUG) LogOnService.UserIsLogOn(userInfo); #endif returnStatusCode = string.Empty; returnStatusMessage = string.Empty; bool returnValue = true; using (IDbHelper dbHelper = DbHelperFactory.GetHelper(BaseSystemInfo.WorkFlowDbType)) { try { // 打开数据库 dbHelper.Open(WorkFlowDbConnection); BaseWorkFlowCurrentManager workFlowCurrentManager = new BaseWorkFlowCurrentManager(dbHelper, userInfo); string processId = string.Empty; for (int i = 0; i < objectIds.Length; i++) { processId = workFlowCurrentManager.GetCurrentId(categoryCode, objectIds[i]); if (string.IsNullOrEmpty(processId)) { // 批量审批时需要返回false 含有自由流是不能批量审批的。 if (i > 0) { returnStatusMessage = "你选中的记录里包含自由审批流程所以不能批量审批。"; } return(false); } } BaseLogManager.Instance.Add(dbHelper, userInfo, this.serviceName, MethodBase.GetCurrentMethod()); } catch (Exception ex) { BaseExceptionManager.LogException(dbHelper, userInfo, ex); throw ex; } finally { dbHelper.Close(); } } // 写入调试信息 #if (DEBUG) BaseBusinessLogic.EndDebug(MethodBase.GetCurrentMethod(), milliStart); #endif return(returnValue); }
/// <summary> /// 提交审批(步骤流) /// </summary> /// <param name="userInfo">用户信息</param> /// <param name="categoryCode">单据类型代码</param> /// <param name="categoryFullName">单据类型名称</param> /// <param name="objectIds">单据主键组</param> /// <param name="objectFullName">单据名称</param> /// <param name="workFlowCode">工作流编号</param> /// <param name="auditIdea">审批意见</param> /// <param name="returnStatusCode">返回码</param> /// <param name="dtWorkFlowActivity">步骤列表</param> /// <returns></returns> public string AuditStatr(BaseUserInfo userInfo, string categoryCode, string categoryFullName, string[] objectIds, string objectFullName, string workFlowCode, string auditIdea, out string returnStatusCode, DataTable dtWorkFlowActivity = null) { // 写入调试信息 #if (DEBUG) int milliStart = BaseBusinessLogic.StartDebug(userInfo, MethodBase.GetCurrentMethod()); #endif // 加强安全验证防止未授权匿名调用 #if (!DEBUG) LogOnService.UserIsLogOn(userInfo); #endif string returnValue = string.Empty; returnStatusCode = string.Empty; using (IDbHelper dbHelper = DbHelperFactory.GetHelper(BaseSystemInfo.WorkFlowDbType)) { try { dbHelper.Open(WorkFlowDbConnection); // 默认的都按报表来处理,特殊的直接调用,明确指定 IWorkFlowManager userReportManager = new UserReportManager(userInfo); BaseWorkFlowCurrentManager workFlowCurrentManager = new BaseWorkFlowCurrentManager(dbHelper, userInfo); // 事物开始 dbHelper.BeginTransaction(); for (int i = 0; i < objectIds.Length; i++) { returnValue = workFlowCurrentManager.AutoStatr(userReportManager, objectIds[i], objectFullName, categoryCode, categoryFullName, workFlowCode, auditIdea, dtWorkFlowActivity); } BaseLogManager.Instance.Add(dbHelper, userInfo, this.serviceName, MethodBase.GetCurrentMethod()); // 提交事务 dbHelper.CommitTransaction(); if (!string.IsNullOrEmpty(returnValue)) { returnStatusCode = StatusCode.OK.ToString(); } } catch (Exception ex) { // 回滚事务 dbHelper.RollbackTransaction(); BaseExceptionManager.LogException(dbHelper, userInfo, ex); throw ex; } finally { dbHelper.Close(); } } // 写入调试信息 #if (DEBUG) BaseBusinessLogic.EndDebug(MethodBase.GetCurrentMethod(), milliStart); #endif return(returnValue); }
/// <summary> /// 流程完成时 /// 结束审核时,需要回调写入到表里,调用相应的事件 /// 若成功可以执行完成的处理 /// </summary> /// <param name="workFlowCurrentEntity">当前审批流程</param> /// <returns>成功失败</returns> public override bool OnAuditComplete(BaseWorkFlowCurrentEntity workFlowCurrentEntity) { // 审核通过后,需要把有效状态修改过来 BaseWorkFlowCurrentManager workFlowCurrentManager = new BaseWorkFlowCurrentManager(this.UserInfo); //string objectId = workFlowCurrentManager.GetObject(workFlowCurrentEntity.Id).ObjectId; string objectId = workFlowCurrentEntity.ObjectId; if (!string.IsNullOrEmpty(objectId)) { // 这里写自己的方法(审核 过程中的回调),完成审核时 using (IDbHelper dbHelper = DbHelperFactory.GetHelper(BaseSystemInfo.BusinessDbType, BaseSystemInfo.BusinessDbConnection)) { dbHelper.Open(); SQLBuilder sqlBuilder = new SQLBuilder(dbHelper); switch (workFlowCurrentEntity.CategoryCode) { case "PuTongCaiGouDan": case "GuoNeiCaiGouHeTong": case "PutongCaiGouDanDGM": case "PutongCaiGouDanManager": sqlBuilder.BeginUpdate("WL物品申购"); sqlBuilder.SetValue("AuditStatus", AuditStatus.AuditComplete.ToString()); sqlBuilder.SetValue("审核", 1); sqlBuilder.SetDBNow("审核日期"); sqlBuilder.SetValue("审核员", BaseSystemInfo.UserInfo.Code); sqlBuilder.SetWhere("申请单号", objectId); sqlBuilder.EndUpdate(); break; case "YuanFuCaiLiaoShenQingDan": sqlBuilder.BeginUpdate("WL部门物品申购"); sqlBuilder.SetValue("AuditStatus", AuditStatus.AuditComplete.ToString()); sqlBuilder.SetValue("审核", 1); sqlBuilder.SetValue("总审核", 1); sqlBuilder.SetDBNow("审核日期"); sqlBuilder.SetDBNow("总审核日期"); sqlBuilder.SetValue("审核员", BaseSystemInfo.UserInfo.Code); sqlBuilder.SetWhere("申购单号", objectId); sqlBuilder.EndUpdate(); break; case "MoJuCaiGouHeTongP": case "MoJuCaiGouHeTongGM": sqlBuilder.BeginUpdate("GCMJ模具申请"); sqlBuilder.SetValue("AuditStatus", AuditStatus.AuditComplete.ToString()); sqlBuilder.SetValue("审核", 1); sqlBuilder.SetWhere("申请单号", objectId); sqlBuilder.EndUpdate(); break; } dbHelper.Close(); } } // 若还需要有其他处理,就这后面继续处理 return(true); }
/// <summary> /// 按分页获取监控列表 /// </summary> /// <param name="userInfo">用户信息</param> /// <param name="pageSize">每页记录数</param> /// <param name="pageIndex">第几页</param> /// <param name="recordCount">总记录数</param> /// <param name="categoryCode">类型</param> /// <param name="searchValue">查找内容</param> /// <returns></returns> public DataTable GetMonitorPagedDT(BaseUserInfo userInfo, int pageSize, int pageIndex, out int recordCount, string categoryCode = null, string searchValue = null) { // 写入调试信息 #if (DEBUG) int milliStart = BaseBusinessLogic.StartDebug(userInfo, MethodBase.GetCurrentMethod()); #endif // 加强安全验证防止未授权匿名调用 #if (!DEBUG) LogOnService.UserIsLogOn(userInfo); #endif DataTable dataTable = null; recordCount = 0; using (IDbHelper dbHelper = DbHelperFactory.GetHelper(BaseSystemInfo.WorkFlowDbType)) { try { dbHelper.Open(WorkFlowDbConnection); BaseWorkFlowCurrentManager workFlowCurrentManager = new BaseWorkFlowCurrentManager(dbHelper, userInfo); if (userInfo.IsAdministrator) { // 不分页 dataTable = workFlowCurrentManager.GetDataTable(new KeyValuePair <string, object>(BaseWorkFlowCurrentEntity.FieldDeletionStateCode, 0), BaseWorkFlowCurrentEntity.FieldSendDate); // 分页 // dataTable = workFlowCurrentManager.GetPagedDT(pageSize, pageIndex, out recordCount, categoryCode, searchValue); } else { //dataTable = workFlowCurrentManager.GetMonitorDT(); dataTable = workFlowCurrentManager.GetMonitorPagedDT(pageSize, pageIndex, out recordCount, categoryCode, searchValue); } dataTable.TableName = BaseWorkFlowCurrentEntity.TableName; BaseLogManager.Instance.Add(dbHelper, userInfo, this.serviceName, MethodBase.GetCurrentMethod()); } catch (Exception ex) { BaseExceptionManager.LogException(dbHelper, userInfo, ex); throw ex; } finally { dbHelper.Close(); } } // 写入调试信息 #if (DEBUG) BaseBusinessLogic.EndDebug(MethodBase.GetCurrentMethod(), milliStart); #endif return(dataTable); }
/// <summary> /// 替换工作审核者 /// </summary> /// <param name="userInfo">用户</param> /// <param name="oldCode">原来的工号</param> /// <param name="newCode">新的工号</param> /// <returns>影响行数</returns> public int Replace(BaseUserInfo userInfo, string oldCode, string newCode) { int result = 0; var parameter = ServiceInfo.Create(userInfo, MethodBase.GetCurrentMethod()); ServiceUtil.ProcessWorkFlowDb(userInfo, parameter, (dbHelper) => { var workFlowCurrentManager = new BaseWorkFlowCurrentManager(dbHelper, userInfo); result = workFlowCurrentManager.ReplaceUser(oldCode, newCode); }); return(result); }
/// <summary> /// 启动工作流(步骤流转) /// </summary> /// <param name="userInfo">用户信息</param> /// <param name="workFlowManager">审批流程管理器</param> /// <param name="objectId">单据主键</param> /// <param name="objectFullName">单据名称</param> /// <param name="categoryCode">单据分类</param> /// <param name="categoryFullName">单据分类名称</param> /// <param name="workFlowCode">工作流程</param> /// <param name="auditIdea">审批意见</param> /// <param name="dtWorkFlowActivity">需要走的流程</param> /// <returns>主键</returns> public string AutoStatr(BaseUserInfo userInfo, IWorkFlowManager workFlowManager, string objectId, string objectFullName, string categoryCode, string categoryFullName = null, string workFlowCode = null, string auditIdea = null, DataTable dtWorkFlowActivity = null) { string result = string.Empty; var parameter = ServiceInfo.Create(userInfo, MethodBase.GetCurrentMethod()); ServiceUtil.ProcessWorkFlowDb(userInfo, parameter, (dbHelper) => { var workFlowCurrentManager = new BaseWorkFlowCurrentManager(dbHelper, userInfo); result = workFlowCurrentManager.AutoStatr(workFlowManager, objectId, objectFullName, categoryCode, categoryFullName, workFlowCode, auditIdea, dtWorkFlowActivity); }); return(result); }
/// <summary> /// 撤消审批流程中的单据 /// </summary> /// <param name="userInfo">用户</param> /// <param name="currentWorkFlowId">当前工作流主键</param> /// <param name="auditIdea">撤销意见</param> /// <returns>影响行数</returns> public int AuditQuash(BaseUserInfo userInfo, string[] currentWorkFlowIds, string auditIdea) { int result = 0; var parameter = ServiceInfo.Create(userInfo, MethodBase.GetCurrentMethod()); ServiceUtil.ProcessWorkFlowDbWithTransaction(userInfo, parameter, (dbHelper) => { var workFlowCurrentManager = new BaseWorkFlowCurrentManager(dbHelper, userInfo); result = workFlowCurrentManager.AuditQuash(currentWorkFlowIds, auditIdea); }); return(result); }
/// <summary> /// 下个流程发送给谁 /// </summary> /// <param name="userInfo">用户</param> /// <param name="id">当前主键</param> /// <param name="sendToUserId">用户主键</param> /// <param name="auditIdea">审核意见</param> /// <returns>数据权限</returns> public int AuditTransmit(BaseUserInfo userInfo, string[] ids, string workFlowCategory, string sendToUserId, string auditIdea) { int result = 0; var parameter = ServiceInfo.Create(userInfo, MethodBase.GetCurrentMethod()); ServiceUtil.ProcessWorkFlowDbWithTransaction(userInfo, parameter, (dbHelper) => { var workFlowCurrentManager = new BaseWorkFlowCurrentManager(dbHelper, userInfo); result = workFlowCurrentManager.AuditTransmit(ids, workFlowCategory, sendToUserId, auditIdea); }); return(result); }
/// <summary> /// 获取实体 /// </summary> /// <param name="userInfo">用户信息</param> /// <param name="id">主键</param> /// <returns>实体</returns> public BaseWorkFlowCurrentEntity GetObject(BaseUserInfo userInfo, string id) { BaseWorkFlowCurrentEntity result = null; var parameter = ServiceInfo.Create(userInfo, MethodBase.GetCurrentMethod()); ServiceUtil.ProcessWorkFlowDb(userInfo, parameter, (dbHelper) => { var workFlowCurrentManager = new BaseWorkFlowCurrentManager(dbHelper, userInfo); result = workFlowCurrentManager.GetObject(id); }); return(result); }
/// <summary> /// 获取已审核流程列表 /// </summary> /// <param name="userInfo">用户信息</param> /// <param name="categoryCode">单据类型</param> /// <param name="categorybillFullName">流程</param> /// <param name="searchValue">关键字</param> /// <returns></returns> public DataTable GetAuditRecord(BaseUserInfo userInfo, string categoryCode, string categorybillFullName = null, string searchValue = null) { DataTable dt = null; var parameter = ServiceInfo.Create(userInfo, MethodBase.GetCurrentMethod()); ServiceUtil.ProcessWorkFlowDb(userInfo, parameter, (dbHelper) => { var workFlowCurrentManager = new BaseWorkFlowCurrentManager(dbHelper, userInfo); dt = workFlowCurrentManager.GetAuditRecord(categoryCode, categorybillFullName, searchValue); dt.TableName = BaseWorkFlowCurrentEntity.TableName; }); return(dt); }
/// <summary> /// 自由工作流审核通过 /// </summary> /// <param name="result"></param> /// <param name="workFlowAuditInfo"></param> /// <returns></returns> public int FreeAuditPass(BaseUserInfo userInfo, BaseWorkFlowAuditInfo workFlowAuditInfo) { int result = 0; var parameter = ServiceInfo.Create(userInfo, MethodBase.GetCurrentMethod()); ServiceUtil.ProcessWorkFlowDbWithTransaction(userInfo, parameter, (dbHelper) => { var workFlowCurrentManager = new BaseWorkFlowCurrentManager(dbHelper, userInfo); IWorkFlowManager workFlowManager = workFlowCurrentManager.GetWorkFlowManager(workFlowAuditInfo.Id); result = workFlowCurrentManager.FreeAuditPass(workFlowManager, workFlowAuditInfo); }); return(result); }
/// <summary> /// 最终审核通过 /// </summary> /// <param name="userInfo">当前用户</param> /// <param name="ids">主键数组</param> /// <param name="auditIdea">审核意见</param> /// <returns>影响行数</returns> public int AuditComplete(BaseUserInfo userInfo, string[] ids, string auditIdea) { int result = 0; var parameter = ServiceInfo.Create(userInfo, MethodBase.GetCurrentMethod()); ServiceUtil.ProcessWorkFlowDbWithTransaction(userInfo, parameter, (dbHelper) => { //IWorkFlowManager userReportManager = new UserReportManager(result); var workFlowCurrentManager = new BaseWorkFlowCurrentManager(dbHelper, userInfo); result += workFlowCurrentManager.AuditComplete(ids, auditIdea); }); return(result); }
//---------------------------------------------------------------------------- // 自由流 //---------------------------------------------------------------------------- #region public string FreeAudit(BaseUserInfo userInfo, BaseWorkFlowAuditInfo workFlowAuditInfo) /// <summary> /// 提交审批(自由流) /// </summary> /// <param name="result"></param> /// <param name="workFlowAuditInfo"></param> /// <returns></returns> public string FreeAudit(BaseUserInfo userInfo, BaseWorkFlowAuditInfo workFlowAuditInfo) { string result = string.Empty; var parameter = ServiceInfo.Create(userInfo, MethodBase.GetCurrentMethod()); ServiceUtil.ProcessWorkFlowDbWithTransaction(userInfo, parameter, (dbHelper) => { // 默认的都按单据来处理,特殊的直接调用,明确指定 IWorkFlowManager workFlowManager = new BaseUserBillManager(userInfo); var workFlowCurrentManager = new BaseWorkFlowCurrentManager(dbHelper, userInfo); result = workFlowCurrentManager.FreeAudit(workFlowManager, workFlowAuditInfo); }); return(result); }
/// <summary> /// 按分页获取监控列表 /// </summary> /// <param name="userInfo">用户信息</param> /// <param name="pageSize">每页记录数</param> /// <param name="pageIndex">第几页</param> /// <param name="recordCount">总记录数</param> /// <param name="categoryCode">类型</param> /// <param name="searchValue">查找内容</param> /// <returns></returns> public DataTable GetMonitorDTByPage(BaseUserInfo userInfo, int pageSize, int pageIndex, out int recordCount, string categoryCode = null, string searchValue = null, bool unfinishedOnly = true) { DataTable dt = null; int myrecordCount = 0; var parameter = ServiceInfo.Create(userInfo, MethodBase.GetCurrentMethod()); ServiceUtil.ProcessWorkFlowDb(userInfo, parameter, (dbHelper) => { var workFlowCurrentManager = new BaseWorkFlowCurrentManager(dbHelper, userInfo); dt = workFlowCurrentManager.GetMonitorDTByPage(pageSize, pageIndex, out myrecordCount, categoryCode, searchValue, unfinishedOnly); dt.TableName = BaseWorkFlowCurrentEntity.TableName; }); recordCount = myrecordCount; return(dt); }
/// <summary> /// 获取工作流主键 /// </summary> /// <param name="userInfo">用户信息</param> /// <param name="categoryCode">类型编号</param> /// <param name="objectId">单据主键</param> /// <returns></returns> public string GetCurrentId(BaseUserInfo userInfo, string categoryCode, string objectId) { string currentId = string.Empty; var parameter = ServiceInfo.Create(userInfo, MethodBase.GetCurrentMethod()); ServiceUtil.ProcessWorkFlowDb(userInfo, parameter, (dbHelper) => { var workFlowCurrentManager = new BaseWorkFlowCurrentManager(dbHelper, userInfo); currentId = workFlowCurrentManager.GetCurrentId(categoryCode, objectId); // BaseWorkFlowCurrentEntity workFlowCurrentEntity = workFlowCurrentManager.GetObject(currentId); // workFlowCurrentEntity.ActivityId; // workFlowCurrentEntity.ActivityFullName; }); return(currentId); }
public override int SetDeleted(object id, bool enabled = false, bool modifiedUser = false) { List <KeyValuePair <string, object> > parameters = new List <KeyValuePair <string, object> >(); parameters.Add(new KeyValuePair <string, object>(BaseWorkFlowCurrentEntity.FieldCategoryCode, id)); parameters.Add(new KeyValuePair <string, object>(BaseWorkFlowCurrentEntity.FieldDeletionStateCode, 0)); parameters.Add(new KeyValuePair <string, object>(BaseWorkFlowCurrentEntity.FieldEnabled, 0)); BaseWorkFlowCurrentManager workFlowCurrentManager = new BaseWorkFlowCurrentManager(this.UserInfo); // 若现在还有流程在用这个模板,就不可以被删除 if (!workFlowCurrentManager.Exists(parameters)) { return(base.SetDeleted(id, enabled, modifiedUser)); } return(0); }
/// <summary> /// 获取审核历史明细 /// </summary> /// <param name="userInfo">用户</param> /// <param name="categoryId">单据分类主键</param> /// <param name="objectId">单据主键</param> /// <returns>数据权限</returns> public DataTable GetAuditDetailDT(BaseUserInfo userInfo, string categoryId, string objectId) { DataTable dt = null; var parameter = ServiceInfo.Create(userInfo, MethodBase.GetCurrentMethod()); ServiceUtil.ProcessWorkFlowDb(userInfo, parameter, (dbHelper) => { var workFlowCurrentManager = new BaseWorkFlowCurrentManager(dbHelper, userInfo); string[] ids = workFlowCurrentManager.GetIds(new KeyValuePair <string, object>(BaseWorkFlowCurrentEntity.FieldCategoryCode, categoryId), new KeyValuePair <string, object>(BaseWorkFlowCurrentEntity.FieldObjectId, objectId)); var workFlowHistoryManager = new BaseWorkFlowHistoryManager(dbHelper, userInfo); dt = workFlowHistoryManager.GetDataTable(BaseWorkFlowHistoryEntity.FieldCurrentFlowId, ids, BaseWorkFlowHistoryEntity.FieldCreateOn); dt.TableName = BaseWorkFlowCurrentEntity.TableName; }); return(dt); }
/// <summary> /// 获取待审批 /// </summary> /// <param name="userInfo">用户信息</param> /// <param name="userId">用户主键</param> /// <param name="categoryCode">分类代码</param> /// <param name="categorybillFullName">单据分类名称</param> /// <param name="searchValue">查询字符串</param> /// <returns></returns> public DataTable GetWaitForAudit(BaseUserInfo userInfo, string userId = null, string categoryCode = null, string categorybillFullName = null, string searchValue = null) { // 写入调试信息 #if (DEBUG) int milliStart = BaseBusinessLogic.StartDebug(userInfo, MethodBase.GetCurrentMethod()); #endif // 加强安全验证防止未授权匿名调用 #if (!DEBUG) LogOnService.UserIsLogOn(userInfo); #endif DataTable dataTable = null; using (IDbHelper dbHelper = DbHelperFactory.GetHelper(BaseSystemInfo.WorkFlowDbType)) { try { // 这个是获取用户的角色信息 dbHelper.Open(UserCenterDbConnection); BaseUserManager userManager = new BaseUserManager(dbHelper); string[] roleIds = userManager.GetAllRoleIds(userInfo.Id); dbHelper.Close(); // 这里是获取待审核信息 dbHelper.Open(WorkFlowDbConnection); BaseWorkFlowCurrentManager workFlowCurrentManager = new BaseWorkFlowCurrentManager(dbHelper, userInfo); dataTable = workFlowCurrentManager.GetWaitForAudit(userId, categoryCode, categorybillFullName, searchValue); dataTable.TableName = BaseWorkFlowCurrentEntity.TableName; BaseLogManager.Instance.Add(dbHelper, userInfo, this.serviceName, MethodBase.GetCurrentMethod()); } catch (Exception ex) { BaseExceptionManager.LogException(dbHelper, userInfo, ex); throw ex; } finally { dbHelper.Close(); } } // 写入调试信息 #if (DEBUG) BaseBusinessLogic.EndDebug(MethodBase.GetCurrentMethod(), milliStart); #endif return(dataTable); }
/// <summary> /// 获取流程当前步骤列表 /// </summary> /// <param name="userInfo">用户</param> /// <returns>数据表</returns> public DataTable GetDataTable(BaseUserInfo userInfo) { var dt = new DataTable(BaseWorkFlowCurrentEntity.TableName); var parameter = ServiceInfo.Create(userInfo, MethodBase.GetCurrentMethod()); ServiceUtil.ProcessWorkFlowDb(userInfo, parameter, (dbHelper) => { var workFlowCurrentManager = new BaseWorkFlowCurrentManager(dbHelper, userInfo); List <KeyValuePair <string, object> > parameters = new List <KeyValuePair <string, object> >(); parameters.Add(new KeyValuePair <string, object>(BaseWorkFlowCurrentEntity.FieldEnabled, 1)); parameters.Add(new KeyValuePair <string, object>(BaseWorkFlowCurrentEntity.FieldDeletionStateCode, 0)); dt = workFlowCurrentManager.GetDataTable(parameters, BaseWorkFlowCurrentEntity.FieldSendDate); dt.TableName = BaseWorkFlowCurrentEntity.TableName; }); return(dt); }
/// <summary> /// 最终审核通过 /// </summary> /// <param name="userInfo">当前用户</param> /// <param name="id">主键</param> /// <param name="auditIdea">审核意见</param> /// <returns>影响行数</returns> public int AuditComplete(BaseUserInfo userInfo, string[] ids, string auditIdea) { // 写入调试信息 #if (DEBUG) int milliStart = BaseBusinessLogic.StartDebug(userInfo, MethodBase.GetCurrentMethod()); #endif // 加强安全验证防止未授权匿名调用 #if (!DEBUG) LogOnService.UserIsLogOn(userInfo); #endif int returnValue = 0; using (IDbHelper dbHelper = DbHelperFactory.GetHelper(BaseSystemInfo.WorkFlowDbType)) { try { dbHelper.Open(WorkFlowDbConnection); //IWorkFlowManager userReportManager = new UserReportManager(userInfo); BaseWorkFlowCurrentManager workFlowCurrentManager = new BaseWorkFlowCurrentManager(dbHelper, userInfo); dbHelper.BeginTransaction(); returnValue += workFlowCurrentManager.AuditComplete(ids, auditIdea); dbHelper.CommitTransaction(); BaseLogManager.Instance.Add(dbHelper, userInfo, this.serviceName, MethodBase.GetCurrentMethod()); } catch (Exception ex) { dbHelper.RollbackTransaction(); BaseExceptionManager.LogException(dbHelper, userInfo, ex); throw ex; } finally { dbHelper.Close(); } } // 写入调试信息 #if (DEBUG) BaseBusinessLogic.EndDebug(MethodBase.GetCurrentMethod(), milliStart); #endif return(returnValue); }
/// <summary> /// 获取流程当前步骤列表 /// </summary> /// <param name="userInfo">用户</param> /// <returns>数据表</returns> public DataTable GetDataTable(BaseUserInfo userInfo) { // 写入调试信息 #if (DEBUG) int milliStart = BaseBusinessLogic.StartDebug(userInfo, MethodBase.GetCurrentMethod()); #endif // 加强安全验证防止未授权匿名调用 #if (!DEBUG) LogOnService.UserIsLogOn(userInfo); #endif DataTable dataTable = new DataTable(BaseWorkFlowCurrentEntity.TableName); using (IDbHelper dbHelper = DbHelperFactory.GetHelper(BaseSystemInfo.WorkFlowDbType)) { try { dbHelper.Open(WorkFlowDbConnection); BaseWorkFlowCurrentManager workFlowCurrentManager = new BaseWorkFlowCurrentManager(dbHelper, userInfo); List <KeyValuePair <string, object> > parameters = new List <KeyValuePair <string, object> >(); parameters.Add(new KeyValuePair <string, object>(BaseWorkFlowCurrentEntity.FieldEnabled, 1)); parameters.Add(new KeyValuePair <string, object>(BaseWorkFlowCurrentEntity.FieldDeletionStateCode, 0)); dataTable = workFlowCurrentManager.GetDataTable(parameters, BaseWorkFlowCurrentEntity.FieldSendDate); dataTable.TableName = BaseWorkFlowCurrentEntity.TableName; BaseLogManager.Instance.Add(dbHelper, userInfo, this.serviceName, MethodBase.GetCurrentMethod()); } catch (Exception ex) { BaseExceptionManager.LogException(dbHelper, userInfo, ex); throw ex; } finally { dbHelper.Close(); } } // 写入调试信息 #if (DEBUG) BaseBusinessLogic.EndDebug(MethodBase.GetCurrentMethod(), milliStart); #endif return(dataTable); }
/// <summary> /// 获取审核历史明细 /// </summary> /// <param name="userInfo">用户</param> /// <param name="categoryId">单据分类主键</param> /// <param name="objectId">单据主键</param> /// <returns>数据权限</returns> public DataTable GetAuditDetailDT(BaseUserInfo userInfo, string categoryId, string objectId) { // 写入调试信息 #if (DEBUG) int milliStart = BaseBusinessLogic.StartDebug(userInfo, MethodBase.GetCurrentMethod()); #endif // 加强安全验证防止未授权匿名调用 #if (!DEBUG) LogOnService.UserIsLogOn(userInfo); #endif DataTable dataTable = null; using (IDbHelper dbHelper = DbHelperFactory.GetHelper(BaseSystemInfo.WorkFlowDbType)) { try { dbHelper.Open(WorkFlowDbConnection); BaseWorkFlowCurrentManager workFlowCurrentManager = new BaseWorkFlowCurrentManager(dbHelper, userInfo); string[] ids = workFlowCurrentManager.GetIds(new KeyValuePair <string, object>(BaseWorkFlowCurrentEntity.FieldCategoryCode, categoryId), new KeyValuePair <string, object>(BaseWorkFlowCurrentEntity.FieldObjectId, objectId)); BaseWorkFlowHistoryManager workFlowHistoryManager = new BaseWorkFlowHistoryManager(dbHelper, userInfo); dataTable = workFlowHistoryManager.GetDataTable(BaseWorkFlowHistoryEntity.FieldCurrentFlowId, ids, BaseWorkFlowHistoryEntity.FieldCreateOn); dataTable.TableName = BaseWorkFlowCurrentEntity.TableName; BaseLogManager.Instance.Add(dbHelper, userInfo, this.serviceName, MethodBase.GetCurrentMethod()); } catch (Exception ex) { BaseExceptionManager.LogException(dbHelper, userInfo, ex); throw ex; } finally { dbHelper.Close(); } } // 写入调试信息 #if (DEBUG) BaseBusinessLogic.EndDebug(MethodBase.GetCurrentMethod(), milliStart); #endif return(dataTable); }
/// <summary> /// 获取工作流主键 /// </summary> /// <param name="userInfo">用户信息</param> /// <param name="categoryId">类型主键</param> /// <param name="objectId">单据主键</param> /// <returns></returns> public string GetCurrentId(BaseUserInfo userInfo, string categoryId, string objectId) { // 写入调试信息 #if (DEBUG) int milliStart = BaseBusinessLogic.StartDebug(userInfo, MethodBase.GetCurrentMethod()); #endif // 加强安全验证防止未授权匿名调用 #if (!DEBUG) LogOnService.UserIsLogOn(userInfo); #endif string returnValue = string.Empty; using (IDbHelper dbHelper = DbHelperFactory.GetHelper(BaseSystemInfo.WorkFlowDbType)) { try { // 打开数据库 dbHelper.Open(WorkFlowDbConnection); BaseWorkFlowCurrentManager workFlowCurrentManager = new BaseWorkFlowCurrentManager(dbHelper, userInfo); returnValue = workFlowCurrentManager.GetCurrentId(categoryId, objectId); BaseLogManager.Instance.Add(dbHelper, userInfo, this.serviceName, MethodBase.GetCurrentMethod()); } catch (Exception ex) { BaseExceptionManager.LogException(dbHelper, userInfo, ex); throw ex; } finally { dbHelper.Close(); } } // 写入调试信息 #if (DEBUG) BaseBusinessLogic.EndDebug(MethodBase.GetCurrentMethod(), milliStart); #endif return(returnValue); }
/// <summary> /// 废弃单据 /// (发出单据时)当废弃审批流时需要做的事情 /// </summary> /// <param name="id">主键</param> /// <param name="auditIdea">批示</param> /// <returns>影响行数</returns> public int AuditQuash(string id, string auditIdea) { int returnValeu = 0; // 只有还在审核中的才可以废弃 string auditStatus = this.GetProperty(id, BaseBusinessLogic.FieldAuditStatus); if (!string.IsNullOrEmpty(auditStatus)) { if (!(auditStatus.Equals(AuditStatus.StartAudit.ToString()) || auditStatus.Equals(AuditStatus.WaitForAudit.ToString()))) { return(returnValeu); } } // 若能撤销流程中的单据,才可以撤销本地的单据 BaseWorkFlowCurrentManager workFlowCurrentManager = new BaseWorkFlowCurrentManager(this.UserInfo); // 工作流里会进行撤销的工作 return(workFlowCurrentManager.AuditQuash(this, this.CurrentTableName, id, auditIdea)); }
/// <summary> /// 获取监控列表 /// </summary> /// <param name="userInfo">用户信息</param> /// <returns></returns> public DataTable GetMonitorDT(BaseUserInfo userInfo) { DataTable dt = null; var parameter = ServiceInfo.Create(userInfo, MethodBase.GetCurrentMethod()); ServiceUtil.ProcessWorkFlowDb(userInfo, parameter, (dbHelper) => { var workFlowCurrentManager = new BaseWorkFlowCurrentManager(dbHelper, userInfo); if (userInfo.IsAdministrator) { dt = workFlowCurrentManager.GetDataTable(new KeyValuePair <string, object>(BaseWorkFlowCurrentEntity.FieldDeletionStateCode, 0), BaseWorkFlowCurrentEntity.FieldSendDate); } else { dt = workFlowCurrentManager.GetMonitorDT(); } dt.TableName = BaseWorkFlowCurrentEntity.TableName; }); return(dt); }
/// <summary> /// 获取待审批 /// </summary> /// <param name="userInfo">用户信息</param> /// <param name="userId">用户主键</param> /// <param name="categoryCode">分类代码</param> /// <param name="categorybillFullName">单据分类名称</param> /// <param name="searchValue">查询字符串</param> /// <returns></returns> public DataTable GetWaitForAudit(BaseUserInfo userInfo, string userId = null, string categoryCode = null, string categorybillFullName = null, string searchValue = null) { DataTable dt = null; var parameter = ServiceInfo.Create(userInfo, MethodBase.GetCurrentMethod()); ServiceUtil.ProcessUserCenterReadDb(userInfo, parameter, (dbHelper) => { //BaseUserManager userManager = new BaseUserManager(dbHelper); var userManager = new BaseUserManager(dbHelper, userInfo); string[] roleIds = userManager.GetRoleIds(userInfo.Id); dbHelper.Close(); // 这里是获取待审核信息 dbHelper.Open(WorkFlowDbConnection); var workFlowCurrentManager = new BaseWorkFlowCurrentManager(dbHelper, userInfo); dt = workFlowCurrentManager.GetWaitForAudit(userId, categoryCode, categorybillFullName, searchValue); dt.TableName = BaseWorkFlowCurrentEntity.TableName; }); return(dt); }
/// <summary> /// 重置单据 /// (发出单据时)当废弃审批流时需要做的事情 /// </summary> /// <param name="id">主键</param> /// <param name="auditIdea">批示</param> /// <returns>影响行数</returns> public virtual int Reset(string id, string auditIdea) { int returnValeu = 0; // 只有还在审核中的才可以废弃 string auditStatus = this.GetProperty(id, BaseBusinessLogic.FieldAuditStatus); if (!string.IsNullOrEmpty(auditStatus)) { if (!(auditStatus.Equals(AuditStatus.StartAudit.ToString()) || auditStatus.Equals(AuditStatus.WaitForAudit.ToString()))) { return(returnValeu); } } // 若能撤销流程中的单据,才可以撤销本地的单据 BaseWorkFlowCurrentManager workFlowCurrentManager = new BaseWorkFlowCurrentManager(this.UserInfo); BaseWorkFlowCurrentEntity workFlowCurrentEntity = workFlowCurrentManager.GetEntity(id); // 工作流里会进行撤销的工作 return(workFlowCurrentManager.Reset(workFlowCurrentEntity)); }
/// <summary> /// 删除用户的审核步骤 /// </summary> /// <param name="userId">用户主键</param> /// <returns>影响行数</returns> public int DeleteAuditStepByUser(string userId) { int result = 0; // 1: 若还有当前审核中的记录,不能被删除掉 BaseWorkFlowCurrentManager manager = new BaseWorkFlowCurrentManager(this.DbHelper, this.UserInfo); List <KeyValuePair <string, object> > parameters = new List <KeyValuePair <string, object> >(3); parameters.Add(new KeyValuePair <string, object>(BaseWorkFlowCurrentEntity.FieldAuditUserId, userId)); parameters.Add(new KeyValuePair <string, object>(BaseWorkFlowCurrentEntity.FieldEnabled, 1)); parameters.Add(new KeyValuePair <string, object>(BaseWorkFlowCurrentEntity.FieldDeletionStateCode, 0)); if (!manager.Exists(parameters)) { // 2: 删除用户的审核步骤。 result = this.SetProperty(new KeyValuePair <string, object>(BaseWorkFlowStepEntity.FieldAuditUserId, userId), new KeyValuePair <string, object>(BaseWorkFlowStepEntity.FieldDeletionStateCode, 1)); // 3: 同时把用户设置为无效。 if (result > 0) { BaseUserManager userManager = new BaseUserManager(this.UserInfo); userManager.SetProperty(new KeyValuePair <string, object>(BaseUserEntity.FieldId, userId), new KeyValuePair <string, object>(BaseUserEntity.FieldEnabled, 0)); } } return(result); }
/// <summary> /// 检查是否是步骤流 /// </summary> /// <param name="userInfo">用户信息</param> /// <param name="currentFlowIds">主键组</param> /// <param name="returnStatusCode">返回代码</param> /// <param name="returnStatusMessage">返回信息</param> /// <returns></returns> public bool CheckIsAutoWorkFlow(BaseUserInfo userInfo, string[] currentFlowIds, out string returnStatusCode, out string returnStatusMessage) { // 写入调试信息 #if (DEBUG) int milliStart = BaseBusinessLogic.StartDebug(userInfo, MethodBase.GetCurrentMethod()); #endif // 加强安全验证防止未授权匿名调用 #if (!DEBUG) LogOnService.UserIsLogOn(userInfo); #endif returnStatusCode = string.Empty; returnStatusMessage = string.Empty; bool returnValue = false; using (IDbHelper dbHelper = DbHelperFactory.GetHelper(BaseSystemInfo.WorkFlowDbType)) { try { // 打开数据库 dbHelper.Open(WorkFlowDbConnection); BaseWorkFlowCurrentManager workFlowCurrentManager = new BaseWorkFlowCurrentManager(dbHelper, userInfo); string processId = string.Empty; for (int i = 0; i < currentFlowIds.Length; i++) { BaseWorkFlowCurrentEntity workFlowCurrentEntity = workFlowCurrentManager.GetEntity(currentFlowIds[i]); if ((workFlowCurrentEntity != null) && (!string.IsNullOrEmpty(workFlowCurrentEntity.Id))) { if (workFlowCurrentEntity.AuditStatus.Equals(AuditStatus.StartAudit.ToString()) || workFlowCurrentEntity.AuditStatus.Equals(AuditStatus.AuditPass.ToString()) || workFlowCurrentEntity.AuditStatus.Equals(AuditStatus.WaitForAudit.ToString()) || workFlowCurrentEntity.AuditStatus.Equals(AuditStatus.AuditReject.ToString())) { // 不为空的话是步骤流 if (workFlowCurrentEntity.WorkFlowId != null) { returnValue = true; } else { // 判断是否是批量审核,只有自由流才限制批量审批 if (i > 0) { returnStatusMessage = "你选中的记录里包含自由审批流程所以不能批量审批。"; } return(false); } } else { returnStatusMessage = "你选中的记录里包含状态不明确的记录。"; return(false); } } else { returnStatusMessage = "你选中的记录里可能已被删除。"; return(false); } } BaseLogManager.Instance.Add(dbHelper, userInfo, this.serviceName, MethodBase.GetCurrentMethod()); } catch (Exception ex) { BaseExceptionManager.LogException(dbHelper, userInfo, ex); throw ex; } finally { dbHelper.Close(); } } // 写入调试信息 #if (DEBUG) BaseBusinessLogic.EndDebug(MethodBase.GetCurrentMethod(), milliStart); #endif return(returnValue); }