private void tspStart_Click(object sender, EventArgs e) { ///判定每个节点是否选择了签批用户 ///步骤:1.找到该工作流实例对应工作模板中的所有节点,在handle表中判定是否有对应签批用户信息,有的话进行下一步check,否则提示直接返回 StringBuilder stbMain = new StringBuilder(); stbMain.Append(" ComboBoxValue WHERE COMBVALUE IN( "); stbMain.Append(" SELECT WFT_CURRENT_STEP_ID FROM WF_TEMPLATES_STEP "); stbMain.AppendFormat(" WHERE WFT_ID='{0}' ", this.WfTemplatesID); stbMain.Append(" AND DEL_FLAG='N' AND WFT_CURRENT_STEP_ID NOT IN (SELECT Current_STEP_ID FROM WF_APP_HANDLE "); stbMain.AppendFormat(" WHERE WFA_ID='{0}' AND DEL_FLAG='N'))", this.WfAppID); DataTable dt = CommonFuns.getDataTableBySql(" COMBID,COMBTEXT", "", stbMain.ToString()); if (dt == null || dt.Rows.Count == 0) { //说明每个节点都设定了签批人员 } else { StringBuilder stb = new StringBuilder("以下步骤:"); foreach (DataRow dr in dt.Rows) { stb.Append("【" + dr["COMBTEXT"].ToString() + "】"); } stb.Append(",没有设定签批人员,请设定完毕后再进行工作流的启用动作!"); MessageBox.Show(stb.ToString(), "工作流实例建立向导提示您:", MessageBoxButtons.OK, MessageBoxIcon.Warning, MessageBoxDefaultButton.Button1); return; } string contentMsg; string nowDate = System.DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"); string loginID = CommonFuns.NewInstance.LoginInfo.LoginID; IWFTemplatesStepService _wfService = ServiceContainer.GetService<WFTemplatesStepService>(); WF_APP app = WorkFlow.NewInstance.GetWFappByWFID(this.WfAppID); FlowStepHandle flowstep = new FlowStepHandle(); if (flowstep.ShowDialog() == DialogResult.OK) { contentMsg = flowstep.ContentMsg; if (app == null) { MessageBox.Show("获取流程实例异常", "工作流实例建立向导提示您:", MessageBoxButtons.OK, MessageBoxIcon.Warning, MessageBoxDefaultButton.Button1); return; } else { if (app.STATUS == DataType.WFDetailSTATUS.Activated.ToString()) { MessageBox.Show("当前工作流已经启用,无需再一次启用!", "工作流实例建立向导提示您:", MessageBoxButtons.OK, MessageBoxIcon.Information, MessageBoxDefaultButton.Button1); return; } else { app.LASTUPDATEUSER = loginID; app.LASTUPDATEDATE = nowDate; app.START_DATE = nowDate; app.STATUS = DataType.WFDetailSTATUS.Activated.ToString(); try { app.Update(); this.txtStatus.Text = "已激活"; ///新增拟制节点完成信息 WF_DETAIL detail = new HYPDM.Entities.WF_DETAIL(); WF_TEMPLATES_STEP step = WorkFlow.NewInstance.GetWFStartStepByWFID(app.WFT_ID); detail.Current_STEP_ID = step.WFT_CURRENT_STEP_ID; // detail.CURRENT_STEP_NAME = _wfService.GetWFStep(WorkFlow.NewInstance.GetWFStepInfoByStepID(detail.CURRENT_STEP_ID).WFT_CURRENT_STEP_ID).COMBTEXT; detail.MSG = contentMsg; detail.DEL_FLAG = "N"; detail.IS_Through = "Y"; detail.COMPLEMENTDATE = nowDate; detail.RECIVEDATE = nowDate; detail.WFD_ID = Guid.NewGuid().ToString(); detail.WFA_ID = app.WFA_ID; detail.WFT_STEP_ID = step.WFT_STEP_ID; try { detail.Save(); ///新增WF_DETAIL记录,指向下一工作流信息 // wfah.Current_STEP_ID = WorkFlow.NewInstance.GetWFStepInfoByStepID(wftStepID).WFT_CURRENT_STEP_ID; WF_DETAIL detailNew = new HYPDM.Entities.WF_DETAIL(); detailNew.Current_STEP_ID = WorkFlow.NewInstance.GetWFStartStepByWFID(app.WFT_ID).WFT_NEXT_STEP_ID; //_wfService.GetWFStep(detailNew.Current_STEP_ID).COMBTEXT; // WorkFlow.NewInstance.GetWFStepInfoByStepID(detail.Current_STEP_ID).WFT_NEXT_STEP_ID; // detailNew.CURRENT_STEP_NAME = _wfService.GetWFStep(detailNew.CURRENT_STEP_ID).COMBTEXT; detailNew.MSG = ""; // detailNew.Current_STEP_ID = WorkFlow.NewInstance.GetWFStepInfoByStepID(wftStepID).WFT_CURRENT_STEP_ID; detailNew.IS_Through = ""; detailNew.DEL_FLAG = "N"; detailNew.COMPLEMENTDATE = ""; detailNew.RECIVEDATE = detail.COMPLEMENTDATE; detailNew.WFD_ID = Guid.NewGuid().ToString(); detailNew.WFA_ID = detail.WFA_ID; detailNew.WFT_STEP_ID = WorkFlow.NewInstance.GetWftStepIDByStepIDAndAppID(detailNew.WFA_ID, detailNew.Current_STEP_ID); detailNew.Save(); ///更新表WF_APP_HANDLE WF_APP_HANDLE item = WorkFlow.NewInstance.GetWfAppHandleItem(detail.WFA_ID, detail.Current_STEP_ID, loginID); item.DEL_FLAG = "N"; item.LASTUPDATEDATE = nowDate; item.LASTUPDATEUSER = loginID; item.IS_THROUGH = "Y"; item.MSG = contentMsg; item.Update(); } catch (Exception ex) { MessageBox.Show("信息存储异常,错误信息如下:" + "\n" + ex.Message.ToString(), "工作流实例建立向导提示您:", MessageBoxButtons.OK, MessageBoxIcon.Warning, MessageBoxDefaultButton.Button1); return; } MessageBox.Show("当前工作流启用成功!", "工作流实例建立向导提示您:", MessageBoxButtons.OK, MessageBoxIcon.Information, MessageBoxDefaultButton.Button1); this.tspStart.Enabled = false; this.btnModify.Enabled = false; this.txtSubject.ReadOnly = true; this.btnSubmit.Enabled = false; this.gpFlowDetail.Enabled = false; this.tspDelete.Enabled = false; } catch (Exception ex) { MessageBox.Show("当前工作流启用失败,错误信息如下:" + "\n" + ex.Message.ToString(), "工作流实例建立向导提示您:", MessageBoxButtons.OK, MessageBoxIcon.Warning, MessageBoxDefaultButton.Button1); return; } } } } }
private void tspStart_Click(object sender, EventArgs e) { ///判定每个节点是否选择了签批用户 ///步骤:1.找到该工作流实例对应工作模板中的所有节点,在handle表中判定是否有对应签批用户信息,有的话进行下一步check,否则提示直接返回 StringBuilder stbMain = new StringBuilder(); stbMain.Append(" ComboBoxValue WHERE COMBVALUE IN( "); stbMain.Append(" SELECT WFT_CURRENT_STEP_ID FROM WF_TEMPLATES_STEP "); stbMain.AppendFormat(" WHERE WFT_ID='{0}' ", this.WfTemplatesID); stbMain.Append(" AND DEL_FLAG='N' AND WFT_CURRENT_STEP_ID NOT IN (SELECT Current_STEP_ID FROM WF_APP_HANDLE "); stbMain.AppendFormat(" WHERE WFA_ID='{0}' AND DEL_FLAG='N'))", this.WfAppID); DataTable dt = CommonFuns.getDataTableBySql(" COMBID,COMBTEXT", "", stbMain.ToString()); if (dt == null || dt.Rows.Count == 0) { //说明每个节点都设定了签批人员 } else { StringBuilder stb = new StringBuilder("以下步骤:"); foreach (DataRow dr in dt.Rows) { stb.Append("【" + dr["COMBTEXT"].ToString() + "】"); } stb.Append(",没有设定签批人员,请设定完毕后再进行工作流的启用动作!"); MessageBox.Show(stb.ToString(), "工作流实例建立向导提示您:", MessageBoxButtons.OK, MessageBoxIcon.Warning, MessageBoxDefaultButton.Button1); return; } string contentMsg; string nowDate = System.DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"); string loginID = CommonFuns.NewInstance.LoginInfo.LoginID; IWFTemplatesStepService _wfService = ServiceContainer.GetService <WFTemplatesStepService>(); WF_APP app = WorkFlow.NewInstance.GetWFappByWFID(this.WfAppID); FlowStepHandle flowstep = new FlowStepHandle(); if (flowstep.ShowDialog() == DialogResult.OK) { contentMsg = flowstep.ContentMsg; if (app == null) { MessageBox.Show("获取流程实例异常", "工作流实例建立向导提示您:", MessageBoxButtons.OK, MessageBoxIcon.Warning, MessageBoxDefaultButton.Button1); return; } else { if (app.STATUS == DataType.WFDetailSTATUS.Activated.ToString()) { MessageBox.Show("当前工作流已经启用,无需再一次启用!", "工作流实例建立向导提示您:", MessageBoxButtons.OK, MessageBoxIcon.Information, MessageBoxDefaultButton.Button1); return; } else { app.LASTUPDATEUSER = loginID; app.LASTUPDATEDATE = nowDate; app.START_DATE = nowDate; app.STATUS = DataType.WFDetailSTATUS.Activated.ToString(); try { app.Update(); this.txtStatus.Text = "已激活"; ///新增拟制节点完成信息 WF_DETAIL detail = new HYPDM.Entities.WF_DETAIL(); WF_TEMPLATES_STEP step = WorkFlow.NewInstance.GetWFStartStepByWFID(app.WFT_ID); detail.Current_STEP_ID = step.WFT_CURRENT_STEP_ID; // detail.CURRENT_STEP_NAME = _wfService.GetWFStep(WorkFlow.NewInstance.GetWFStepInfoByStepID(detail.CURRENT_STEP_ID).WFT_CURRENT_STEP_ID).COMBTEXT; detail.MSG = contentMsg; detail.DEL_FLAG = "N"; detail.IS_Through = "Y"; detail.COMPLEMENTDATE = nowDate; detail.RECIVEDATE = nowDate; detail.WFD_ID = Guid.NewGuid().ToString(); detail.WFA_ID = app.WFA_ID; detail.WFT_STEP_ID = step.WFT_STEP_ID; try { detail.Save(); ///新增WF_DETAIL记录,指向下一工作流信息 // wfah.Current_STEP_ID = WorkFlow.NewInstance.GetWFStepInfoByStepID(wftStepID).WFT_CURRENT_STEP_ID; WF_DETAIL detailNew = new HYPDM.Entities.WF_DETAIL(); detailNew.Current_STEP_ID = WorkFlow.NewInstance.GetWFStartStepByWFID(app.WFT_ID).WFT_NEXT_STEP_ID; //_wfService.GetWFStep(detailNew.Current_STEP_ID).COMBTEXT; // WorkFlow.NewInstance.GetWFStepInfoByStepID(detail.Current_STEP_ID).WFT_NEXT_STEP_ID; // detailNew.CURRENT_STEP_NAME = _wfService.GetWFStep(detailNew.CURRENT_STEP_ID).COMBTEXT; detailNew.MSG = ""; // detailNew.Current_STEP_ID = WorkFlow.NewInstance.GetWFStepInfoByStepID(wftStepID).WFT_CURRENT_STEP_ID; detailNew.IS_Through = ""; detailNew.DEL_FLAG = "N"; detailNew.COMPLEMENTDATE = ""; detailNew.RECIVEDATE = detail.COMPLEMENTDATE; detailNew.WFD_ID = Guid.NewGuid().ToString(); detailNew.WFA_ID = detail.WFA_ID; detailNew.WFT_STEP_ID = WorkFlow.NewInstance.GetWftStepIDByStepIDAndAppID(detailNew.WFA_ID, detailNew.Current_STEP_ID); detailNew.Save(); ///更新表WF_APP_HANDLE WF_APP_HANDLE item = WorkFlow.NewInstance.GetWfAppHandleItem(detail.WFA_ID, detail.Current_STEP_ID, loginID); item.DEL_FLAG = "N"; item.LASTUPDATEDATE = nowDate; item.LASTUPDATEUSER = loginID; item.IS_THROUGH = "Y"; item.MSG = contentMsg; item.Update(); } catch (Exception ex) { MessageBox.Show("信息存储异常,错误信息如下:" + "\n" + ex.Message.ToString(), "工作流实例建立向导提示您:", MessageBoxButtons.OK, MessageBoxIcon.Warning, MessageBoxDefaultButton.Button1); return; } MessageBox.Show("当前工作流启用成功!", "工作流实例建立向导提示您:", MessageBoxButtons.OK, MessageBoxIcon.Information, MessageBoxDefaultButton.Button1); this.tspStart.Enabled = false; this.btnModify.Enabled = false; this.txtSubject.ReadOnly = true; this.btnSubmit.Enabled = false; this.gpFlowDetail.Enabled = false; this.tspDelete.Enabled = false; } catch (Exception ex) { MessageBox.Show("当前工作流启用失败,错误信息如下:" + "\n" + ex.Message.ToString(), "工作流实例建立向导提示您:", MessageBoxButtons.OK, MessageBoxIcon.Warning, MessageBoxDefaultButton.Button1); return; } } } } }