コード例 #1
0
ファイル: WorkFlowManagerDAL.cs プロジェクト: zkg642/JXXZ
        /// <summary>
        /// 流程提交
        /// </summary>
        /// <param name="workflow">流程实例模型</param>
        /// <param name="TableModel">具体表模型</param>
        /// <returns></returns>
        public string WF_Submit(WorkFlowClass workflow, object TableModel)
        {
            #region 获取数据
            string tableName     = workflow.FunctionName;  //获取表名
            string WFID          = workflow.WFID;          //工作流编号
            string WFDID         = workflow.WFDID;         //工作流环节编号
            string WFSID         = workflow.WFSID;         //活动实例编号
            string WFSAID        = workflow.WFSAID;        //当前环节实例编号
            string dealContent   = workflow.DEALCONTENT;   //会签意见
            string NextWFDID     = workflow.NextWFDID;     //下一个环节编号
            string NextWFUSERIDS = workflow.NextWFUSERIDS; //获取下一个环节的用户
            string IsSendMsg     = workflow.IsSendMsg;     //是否发送短信
            string Remark        = workflow.Remark;
            string processmode   = workflow.processmode;
            string satisfaction  = workflow.satisfaction;
            #endregion

            #region 增加/修改 对应的流程
            string TABLENAMEID = string.Empty; //对应表数据编号
            string WFSNAME     = string.Empty; //活动流程名称
            switch (workflow.FunctionName)
            {
            case "sm_citizenservices":    //市民服务基础表
                TABLENAMEID = function_citizenservices(out WFSNAME, workflow.WFSID, (sm_citizenservices)TableModel);
                break;

            case "yh_yhtasks":    //养护任务基础表
                TABLENAMEID = function_yhtasks(out WFSNAME, workflow.WFSID, (yh_yhtasks)TableModel);
                break;

            case "zxzz_tasks":    //专项整治基础表
                TABLENAMEID = function_specialtasks(out WFSNAME, workflow.WFSID, (zxzz_tasks)TableModel);
                break;

            case "audit_project_w":    //行政审批基础表
                TABLENAMEID = workflow.syncrowguid;
                break;

            default:
                break;
            }
            #endregion

            #region 检查是否存在当前实例,如果不存在则增加当前活动实例

            wf_workflowspecifics WFSModel = null;
            if (!string.IsNullOrEmpty(workflow.WFSID))
            {
                WFSModel = new WF_WorkFlowSpecificDAL().GetSingle(workflow.WFSID);
                if (WFSModel == null)
                {
                    WFSID = "";
                }
                else
                {
                    WFSModel.wfsname = WFSNAME;
                    new WF_WorkFlowSpecificDAL().Update(WFSModel);
                }
            }

            if (string.IsNullOrEmpty(WFSID))
            {
                WFSModel              = new wf_workflowspecifics();
                WFSModel.wfsid        = GetNewId();
                WFSModel.wfid         = WFID;
                WFSModel.tablename    = tableName;
                WFSModel.createuserid = workflow.WFCreateUserID;
                WFSModel.createtime   = DateTime.Now;
                WFSModel.status       = 1;
                WFSModel.tablenameid  = TABLENAMEID;
                WFSModel.wfsname      = WFSNAME;
                new WF_WorkFlowSpecificDAL().Add(WFSModel);
                WFSID = WFSModel.wfsid;
            }
            #endregion

            #region 增加活动实例具体的流程

            #region 更新当前环节
            decimal oldStatus;//当前环节是否已经处理完成 1:未处理,2已经处理
            //更新或者增加当前流程的具体事例---返回当前环节编号
            WFSAID = function_WF_DealCurentActivity(WFSAID, WFSID, workflow.WFCreateUserID.Value, 2, WFDID, out oldStatus);
            //更新或者增加当前环节用户处理的意见---返回当前环节用户需要处理的编号
            string WFSUID = function_WF_DealCurentActivityUser(WFSAID, workflow.WFCreateUserID.Value, dealContent, 2, DateTime.Now, "false", WFSNAME, workflow.WFCreateUserID.Value, Remark, processmode, satisfaction);
            //增加当前处理用户的附件
            switch (workflow.FunctionName)
            {
            case "sm_citizenservices":    //市民服务
                function_WF_WorkFlowAttrach_smsj(WFSUID, workflow.files, workflow.FileSource);
                break;

            case "yh_yhtasks":    //养护任务
                function_WF_WorkFlowAttrach_smsj(WFSUID, workflow.files, workflow.FileSource);
                break;

            case "zxzz_tasks":    //专项整治
                function_WF_WorkFlowAttrach_smsj(WFSUID, workflow.files, workflow.FileSource);
                break;

            case "audit_project_w":    //行政审批基础表
                function_WF_WorkFlowAttrach_smsj(WFSUID, workflow.files, workflow.FileSource);
                break;

            default:
                break;
            }

            #endregion
            //当前状态为处理,则说明是第一个人处理,则需要增加下一个环节,如果当前环节已经处理,则不需要增加下一个环节
            string NextWFSAID = "";
            if (oldStatus == 1)
            {
                //获取该环节是否为最后一个环节
                wf_workflowdetails wfdModel = new WF_WorkFlowDetailDAL().GetSingle(NextWFDID);
                //如果下一个环节的子环节存在,则状态为执行中,内容为空,否则下一个环节状态为结束,内容为已结束
                int    status_wfsa  = 0;
                string content_wfsa = string.Empty;
                if (wfdModel != null && !string.IsNullOrEmpty(wfdModel.nextid))
                {
                    status_wfsa  = 1;
                    content_wfsa = "";
                }
                else
                {
                    //结束该流程
                    WFSModel = new WF_WorkFlowSpecificDAL().GetSingle(WFSID);
                    if (WFSModel != null)
                    {
                        WFSModel.status = 2;
                        new WF_WorkFlowSpecificDAL().Update(WFSModel);
                    }
                    status_wfsa  = 2;
                    content_wfsa = "已结束";
                }

                #region 增加下一个环节

                //增加环节
                NextWFSAID = function_WF_DealCurentActivity("", WFSID, workflow.WFCreateUserID.Value, status_wfsa, NextWFDID, out oldStatus);

                #region 更新活动实例的当前环节编号
                WFSModel = new WF_WorkFlowSpecificDAL().GetSingle(WFSID);
                if (WFSModel != null)
                {
                    WFSModel.currentwfsaid = NextWFSAID;
                    WFSModel.status        = status_wfsa;
                    new WF_WorkFlowSpecificDAL().Update(WFSModel);
                }
                #endregion

                //增加下一个环节的能操作的用户
                if (!string.IsNullOrEmpty(NextWFUSERIDS))
                {
                    string[] NextWFUSERIDS_split = NextWFUSERIDS.Split(',');
                    foreach (var item in NextWFUSERIDS_split)
                    {
                        decimal  userid;
                        DateTime?dealTime = null;
                        if (decimal.TryParse(item, out userid))
                        {
                            if (status_wfsa == 2)
                            {
                                userid    = workflow.WFCreateUserID.Value;
                                dealTime  = DateTime.Now;
                                IsSendMsg = "false";
                            }
                            //增加流程能操作的用户
                            function_WF_DealCurentActivityUser(NextWFSAID, (int)userid, content_wfsa, status_wfsa, dealTime, IsSendMsg, WFSNAME, workflow.WFCreateUserID, Remark, processmode, satisfaction);
                        }
                    }
                }

                #endregion
            }
            #endregion
            return(WFSID + "," + NextWFSAID + "," + TABLENAMEID);
        }
コード例 #2
0
ファイル: WorkFlowManagerDAL.cs プロジェクト: zkg642/JXXZ
        /// <summary>
        /// 活动流程
        /// </summary>
        /// <param name="WFID">流程ID</param>
        /// <param name="WFSID">实例编号</param>
        /// <returns></returns>
        public WorkFlowClass ProcessIndex(string WFID, string WFDID, string WFSID, string WFSAID)
        {
            WorkFlowClass workflow = new WorkFlowClass();

            if (!string.IsNullOrEmpty(WFID))
            {
                wf_workflows wfModel = new WF_WorkFlowsDAL().GetSingle(WFID);
                if (wfModel != null)
                {
                    workflow.currentActivityName = wfModel.wfname;
                    //跳转的方法
                    workflow.FunctionName    = wfModel.tablename;
                    workflow.WFID            = WFID;
                    workflow.WFDID           = WFDID;
                    workflow.WFSID           = WFSID;
                    workflow.WFSAID          = WFSAID;
                    workflow.GetTableColumns = new WF_WorkFlowsDAL().GetTableColumns(wfModel.tablename);
                }
                else
                {
                    workflow.WorkFlowState = 1;//表示该流程不存在
                }


                IList <wf_workflowdetails> wfdList = new WF_WorkFlowDetailDAL()
                                                     .GetList().Where(a => a.wfid == WFID).ToList();//获取当前流程所有环节
                if (wfdList == null && wfdList.Count() <= 0)
                {
                    workflow.WorkFlowState = 2;
                    return(workflow);
                }
                ////获取主要内容
                //if (!string.IsNullOrEmpty(WFSID))
                //{
                //    workflow.contentPath = new WF_WorkFlowSpecificDAL().GetContentPath(WFSID);
                //}

                #region 获取下一步流程

                //下一步流程编号集合 格式为:【,流程编号,流程编号,流程编号,】
                string             nextWFDIDS = string.Empty;
                wf_workflowdetails wfdModel   = new WF_WorkFlowDetailDAL().GetSingle(WFDID);
                if (wfdModel != null)
                {
                    nextWFDIDS = wfdModel.nextid;
                }
                else
                {
                    workflow.WorkFlowState = 2;
                    return(workflow);
                }

                if (!string.IsNullOrEmpty(nextWFDIDS))
                {
                    #region  一步的所有流程
                    //下一步流程 格式为:【;流程编号,流程名称,是否有下一个流程;流程编号,流程名称,是否有下一个流程;流程编号,流程名称,是否有下一个流程;】
                    string nextWFDIDNames = "";

                    string[] nextWFDIDS_split = nextWFDIDS.Split(',');
                    foreach (string NEXTID in nextWFDIDS_split)
                    {
                        if (!string.IsNullOrEmpty(NEXTID))
                        {
                            string             temp     = "";
                            string             WFDNAME  = string.Empty;
                            wf_workflowdetails wfdMpdel = wfdList.FirstOrDefault(a => a.wfdid == NEXTID);
                            if (wfdMpdel == null || string.IsNullOrEmpty(wfdMpdel.wfdname))
                            {
                                workflow.WorkFlowState = 2;
                                return(workflow);
                            }
                            else
                            {
                                WFDNAME = wfdMpdel.wfdname;
                            }
                            //int isNextW = 0;//是否还有下步流程,如果没有则表示结束
                            //if (string.IsNullOrEmpty(wfdMpdel.nextid))
                            //    isNextW = 1;

                            temp += NEXTID;

                            if (!string.IsNullOrEmpty(nextWFDIDNames))
                            {
                                nextWFDIDNames += temp + ";";
                            }
                            else
                            {
                                nextWFDIDNames += ";" + temp + ";";
                            }
                        }
                    }

                    workflow.nextWFDIDNames = nextWFDIDNames;//下一步流程
                    #endregion

                    #region 查找下一步默认的用户 如果默认下一个步骤只有一步,并且明确制定用户,则直接将对应的用户加载出来
                    string UserIDs   = string.Empty;
                    string UserNames = string.Empty;
                    string NextWFDID = string.Empty;

                    if (!string.IsNullOrEmpty(wfdModel.nextiddefaultuser))
                    {
                        string[] nextDefaultUser = wfdModel.nextiddefaultuser.Split(',');
                        for (int i = 0; i < nextDefaultUser.Length; i++)
                        {
                            if (!string.IsNullOrEmpty(nextDefaultUser[i]))
                            {
                                UserNames += ",";
                                if (nextDefaultUser[i] == "0")
                                {
                                    UserNames += "暂无,";
                                }
                                else
                                {
                                    UserNames += UserDAL.GetUserNameByUserID(Convert.ToDecimal(nextDefaultUser[i])) + ",";
                                }
                            }
                        }

                        workflow.NextWFUSERIDS = wfdModel.nextiddefaultuser;
                        workflow.NextUserNames = UserNames;
                        workflow.NextWFDID     = wfdModel.nextiddefault;
                    }
                    if (!string.IsNullOrEmpty(wfdModel.nextiddefaultdept))
                    {
                        string[] nextDefaultDept = wfdModel.nextiddefaultdept.Split(',');
                        for (int i = 0; i < nextDefaultDept.Length; i++)
                        {
                            if (!string.IsNullOrEmpty(nextDefaultDept[i]))
                            {
                                UserNames += ",";
                                if (nextDefaultDept[i] == "0")
                                {
                                    UserNames += "暂无,";
                                }
                                else
                                {
                                    UserNames += UserDAL.GetUserNameByDeptID(Convert.ToDecimal(nextDefaultDept[i])) + ",";
                                }
                                UserNames = "";
                            }
                        }
                        workflow.NextWFUSERIDS = wfdModel.nextiddefaultuser;
                        workflow.NextUserNames = UserNames;
                        workflow.NextWFDID     = wfdModel.nextiddefault;
                    }

                    if (!string.IsNullOrEmpty(wfdModel.nextiddefaultrole))
                    {
                        string[] nextDefaultRole = wfdModel.nextiddefaultrole.Split(',');
                        for (int i = 0; i < nextDefaultRole.Length; i++)
                        {
                            if (!string.IsNullOrEmpty(nextDefaultRole[i]))
                            {
                                UserNames += ",";
                                if (nextDefaultRole[i] == "0")
                                {
                                    UserNames += "暂无,";
                                }
                                else
                                {
                                    UserNames += UserDAL.GetUserNameByRoleID(Convert.ToDecimal(nextDefaultRole[i])) + ",";
                                }
                            }
                        }
                        workflow.NextWFUSERIDS = wfdModel.nextiddefaultuser;
                        workflow.NextUserNames = UserNames;
                        workflow.NextWFDID     = wfdModel.nextiddefault;
                    }

                    #endregion
                }
                #endregion
            }
            return(workflow);
        }