Example #1
0
 /// <summary>
 /// 网格数据处理
 /// </summary>
 /// <param name="data"></param>
 /// <param name="otherParams"></param>
 /// <param name="currUser"></param>
 public bool PageGridDataHandle(List <Bpm_WorkToDoList> data, object[] otherParams = null, UserInfo currUser = null)
 {
     if (data != null && data.Count > 0)
     {
         string errMsg = string.Empty;
         foreach (Bpm_WorkToDoList todo in data)
         {
             todo.ModuleName = SystemOperate.GetModuleNameById(todo.ModuleId);
             if (!todo.Bpm_WorkFlowInstanceId.HasValue)
             {
                 continue;
             }
             Bpm_WorkFlowInstance flowInst = BpmOperate.GetWorkflowInstanceById(todo.Bpm_WorkFlowInstanceId.Value);
             if (flowInst == null)
             {
                 continue;
             }
             todo.StatusOfEnum = flowInst.StatusOfEnum;
             int status = (int)flowInst.StatusOfEnum;
             Bpm_WorkToDoList tempTodo = CommonOperate.GetEntity <Bpm_WorkToDoList>(x => x.Bpm_WorkFlowInstanceId == todo.Bpm_WorkFlowInstanceId.Value && x.Status == status, null, out errMsg);
             if (tempTodo != null && !string.IsNullOrEmpty(todo.NextNodeHandler))
             {
                 List <Guid> tempEmpIds = tempTodo.NextNodeHandler.Split(",".ToCharArray(), StringSplitOptions.RemoveEmptyEntries).Select(x => x.ObjToGuid()).Where(x => x != Guid.Empty).ToList();
                 if (tempEmpIds.Count > 0)
                 {
                     todo.OrgM_EmpName = string.Join(",", tempEmpIds.Select(x => OrgMOperate.GetEmpNameContainsQuit(x)).Where(x => !string.IsNullOrEmpty(x)));
                 }
             }
         }
     }
     return(false);
 }
 /// <summary>
 /// 操作前验证,如果流程已经在运行则不能删除
 /// </summary>
 /// <param name="operateType"></param>
 /// <param name="t"></param>
 /// <param name="errMsg"></param>
 /// <param name="otherParams"></param>
 /// <returns></returns>
 public bool BeforeOperateVerifyOrHandle(ModelRecordOperateType operateType, Bpm_WorkFlow t, out string errMsg, object[] otherParams = null)
 {
     errMsg = string.Empty;
     if (operateType == ModelRecordOperateType.Del)
     {
         //如果该流程存在流程实例则不允许删除
         Bpm_WorkFlowInstance workflowInst = CommonOperate.GetEntity <Bpm_WorkFlowInstance>(x => x.Bpm_WorkFlowId == t.Id, null, out errMsg);
         if (workflowInst != null)
         {
             errMsg = "运行中的流程不允许删除!";
             return(false);
         }
     }
     else if (operateType == ModelRecordOperateType.Add)
     {
         if (t.ValidEndTime != null && t.ValidEndTime.Value <= DateTime.Now)
         {
             errMsg = "结束时间必须大于今天!";
             return(false);
         }
         if (t.ValidEndTime != null)
         {
             if (t.ValidStartTime == null)
             {
                 errMsg = "设置了结束时间必须也要设置起始时间!";
                 return(false);
             }
             else if (t.ValidStartTime.Value < DateTime.Now)
             {
                 errMsg = "起始时间必须大于等于今天!";
                 return(false);
             }
         }
         if (t.ValidStartTime == null && t.ValidEndTime == null)
         {
             if (BpmOperate.GetAllWorkflows(x => x.Sys_ModuleId == t.Sys_ModuleId && x.ValidStartTime == null && x.ValidEndTime == null).Count > 0)
             {
                 errMsg = "该模块已经存在了默认流程(起始时间和结束时间为空),不允许再添加默认流程!";
                 return(false);
             }
         }
     }
     return(true);
 }
Example #3
0
 /// <summary>
 /// 添加后台系统任务
 /// </summary>
 /// <param name="obj"></param>
 /// <param name="e"></param>
 public static void SysBackgroundTaskAdd(object obj, EventArgs e)
 {
     if (WebConfigHelper.GetAppSettingValue("IsRunBgTask") == "true")
     {
         try
         {
             #region 重建索引
             //重建索引任务
             BackgroundTask reBuildIndexTask = new BackgroundTask((args) =>
             {
                 if (DateTime.Now.Hour == 4 && DateTime.Now.Minute == 0)
                 {
                     SystemOperate.RebuildAllTableIndex();
                 }
                 return(true);
             }, null, false, 45, false);
             AutoProcessTask.AddTask(reBuildIndexTask);
             #endregion
             #region 迁移历史审批数据
             //审批完成后的数据迁移到待办历史数据表中,针对审批是迁移失败的处理
             BackgroundTask todoStatusHandleTask = new BackgroundTask((args) =>
             {
                 if ((DateTime.Now.Hour == 3 && DateTime.Now.Minute == 0) ||
                     (DateTime.Now.Hour == 12 && DateTime.Now.Minute == 40))
                 {
                     //审批完成数据迁移异常处理
                     try
                     {
                         string errMsg    = string.Empty;
                         int refuseStatus = (int)WorkFlowStatusEnum.Refused;
                         int overStatus   = (int)WorkFlowStatusEnum.Over;
                         int obsoStatus   = (int)WorkFlowStatusEnum.Obsoleted;
                         List <Bpm_WorkFlowInstance> flowInsts = CommonOperate.GetEntities <Bpm_WorkFlowInstance>(out errMsg, x => x.Status == refuseStatus || x.Status == overStatus || x.Status == obsoStatus, null, false);
                         if (flowInsts != null && flowInsts.Count > 0)
                         {
                             foreach (Bpm_WorkFlowInstance flowInst in flowInsts)
                             {
                                 BpmOperate.TransferWorkToDoHistory(flowInst, null);
                             }
                         }
                     }
                     catch { }
                 }
                 return(true);
             }, null, false, 45, false);
             AutoProcessTask.AddTask(todoStatusHandleTask);
             #endregion
             #region 附件在线预览生成
             BackgroundTask attachOnlineViewHandleTask = new BackgroundTask((args) =>
             {
                 if (DateTime.Now.Hour == 4 && DateTime.Now.Minute == 0)
                 {
                     string attachWeb = WebConfigHelper.GetAppSettingValue("AttachmentWeb");
                     if (!string.IsNullOrEmpty(attachWeb))
                     {
                         if (!attachWeb.EndsWith("/"))
                         {
                             attachWeb += "/";
                         }
                         string apiUrl        = attachWeb + "api/AnnexApi/ExecCreateSwfTask.html";
                         DataMutual dataMutal = new DataMutual(apiUrl);
                         dataMutal.Start(null);
                     }
                 }
                 return(true);
             }, null, false, 45, false);
             AutoProcessTask.AddTask(attachOnlineViewHandleTask);
             #endregion
             #region 基于DB的失效分布式锁释放
             BackgroundTask dbLockReleaseHandleTask = new BackgroundTask((args) =>
             {
                 if (WebConfigHelper.GetAppSettingValue("EnabledDistributeLock") == "true") //启用分布式锁
                 {
                     string errMsg      = string.Empty;
                     double nowTimesamp = Globals.GetTimestamp(DateTime.Now);//当前时间戳
                     CommonOperate.DeleteRecordsByExpression <Other_DistributedLock>(x => x.Invalid_Timesamp < nowTimesamp, out errMsg);
                 }
                 return(true);
             }, null, false, 60, false);
             AutoProcessTask.AddTask(dbLockReleaseHandleTask);
             #endregion
         }
         catch { }
     }
     try
     {
         InitFactory factory = InitFactory.GetInstance();
         if (factory != null)
         {
             factory.AddBackgroundTask();
         }
     }
     catch { }
 }