/// <summary> /// 获取部门树 /// </summary> /// <returns></returns> private string getTreeDateMet() { string sql = ""; if (BP.WF.Glo.OSModel == OSModel.BPM) { sql = "select NO,NAME,ParentNo from port_dept ORDER BY Idx"; } else { sql = "select NO,NAME,ParentNo from port_dept "; } DataTable dt_dept = DBAccess.RunSQLReturnTable(sql); string s_responsetext = string.Empty; string s_checkded = string.Empty; //节点部门集合 NodeDepts nodeDepts = new NodeDepts(); QueryObject obj = new QueryObject(nodeDepts); obj.AddWhere(NodeDeptAttr.FK_Node, this.FK_Node); obj.DoQuery(); //将已有部门,拼接字符串 if (nodeDepts != null && nodeDepts.Count > 0) { foreach (NodeDept item in nodeDepts) { s_checkded += "," + item.FK_Dept + ","; } } s_responsetext = GetTreeJsonByTable(dt_dept, "NO", "NAME", "ParentNo", "0", s_checkded); if (string.IsNullOrEmpty(s_responsetext) || s_responsetext == "[]")//如果为空,使用另一种查询 { treeResult.Clear(); s_responsetext = GetTreeJsonByTable(dt_dept, "NO", "NAME", "ParentNo", "O0", s_checkded); } return(s_responsetext); }
protected void Btn_Save_Click(object sender, EventArgs e) { //获取选择的 09.与指定节点处理人相同. string strzdjd = ""; foreach (ListItem li in this.CBL_BySpecNodeEmp.Items) { if (li.Selected) { strzdjd += li.Value + ","; } } strzdjd = strzdjd.TrimEnd(','); //12.按指定节点的人员岗位计算 string strzdjdgw = ""; foreach (ListItem li in this.CBL_BySpecNodeEmpStation.Items) { if (li.Selected) { strzdjdgw += li.Value + ","; } } strzdjdgw = strzdjdgw.TrimEnd(','); Node nd = new Node(this.NodeID); string sql = ""; if (this.RB_ByStation.Checked) { //按岗位(以部门为纬度) nd.HisDeliveryWay = DeliveryWay.ByStation; nd.DirectUpdate(); //按照岗位. NodeStations nss = new NodeStations(); nss.Retrieve(NodeStationAttr.FK_Node, this.NodeID); if (nss.Count == 0) { BP.Sys.PubClass.Alert("@您选择的是请设置岗位来计算接受人,请设置岗位没有岗位无法计算该节点的接受人。"); } } if (this.RB_ByDept.Checked) { // 按部门 nd.HisDeliveryWay = DeliveryWay.ByDept; nd.DirectUpdate(); //按照岗位. NodeDepts nss = new NodeDepts(); nss.Retrieve(NodeStationAttr.FK_Node, this.NodeID); if (nss.Count == 0) { BP.Sys.PubClass.Alert("@您选择的是请设置部门来计算接受人,请设置部门没有部门无法计算该节点的接受人。"); } } if (this.RB_BySQL.Checked) { //按SQL nd.HisDeliveryWay = DeliveryWay.BySQL; nd.DeliveryParas = this.TB_BySQL.Text; nd.DirectUpdate(); sql = this.TB_BySQL.Text; if (sql.Length <= 5) { BP.Sys.PubClass.Alert("@请设置完整的SQL"); } //检查SQL是否符合要求. try { sql = BP.WF.Glo.DealExp(sql, null, null); DataTable dt = BP.DA.DBAccess.RunSQLReturnTable(sql); if (dt.Columns.Contains("No") == false || dt.Columns.Contains("Name") == false) { BP.Sys.PubClass.Alert("@查询结果集合里不包含No,Name两个列, 分别标识操作员编号,操作员名称。"); } } catch (Exception ex) { BP.Sys.PubClass.Alert("@设置的SQL不符合要求SQL=" + sql + ",其他信息:" + ex.Message); } } if (this.RB_ByBindEmp.Checked) { //按本节点绑定的人员 nd.HisDeliveryWay = DeliveryWay.ByBindEmp; nd.DirectUpdate(); //按照岗位. NodeEmps nss = new NodeEmps(); nss.Retrieve(NodeEmpAttr.FK_Node, this.NodeID); if (nss.Count == 0) { BP.Sys.PubClass.Alert("@您选择的是请设置人员来计算接受人,请设置人员没有人员无法计算该节点的接受人。"); } } if (this.RB_BySelected.Checked) { //由上一步发送人选择 nd.HisDeliveryWay = DeliveryWay.BySelected; } if (this.RB_ByPreviousNodeFormEmpsField.Checked) { //按表单选择人员 nd.HisDeliveryWay = DeliveryWay.ByPreviousNodeFormEmpsField; nd.DeliveryParas = this.DDL_ByPreviousNodeFormEmpsField.SelectedValue; } if (this.RB_ByPreviousNodeEmp.Checked) { //与上一节点的人员相同 nd.HisDeliveryWay = DeliveryWay.ByPreviousNodeEmp; } if (this.RB_ByStarter.Checked) { //与开始节点的人员相同 nd.HisDeliveryWay = DeliveryWay.ByStarter; } if (this.RB_BySpecNodeEmp.Checked) { //与指定节点的人员相同 nd.HisDeliveryWay = DeliveryWay.BySpecNodeEmp; nd.DeliveryParas = strzdjd; } if (this.RB_ByDeptAndStation.Checked) { //按岗位与部门交集计算 nd.HisDeliveryWay = DeliveryWay.ByDeptAndStation; } if (this.RB_ByStationAndEmpDept.Checked) { //按岗位计算(以部门集合为纬度) nd.HisDeliveryWay = DeliveryWay.ByStationAndEmpDept; } if (this.RB_BySpecNodeEmpStation.Checked) { //按指定节点的人员或者指定字段作为人员的岗位计算 nd.HisDeliveryWay = DeliveryWay.BySpecNodeEmpStation; nd.DeliveryParas = strzdjdgw; } if (this.RB_BySQLAsSubThreadEmpsAndData.Checked) { sql = this.TB_BySQLAsSubThreadEmpsAndData.Text; if (sql.Length <= 5) { BP.Sys.PubClass.Alert("@请设置完整的SQL"); } //按SQL确定子线程接受人与数据源. nd.HisDeliveryWay = DeliveryWay.BySQLAsSubThreadEmpsAndData; nd.DeliveryParas = this.TB_BySQLAsSubThreadEmpsAndData.Text; } if (this.RB_ByDtlAsSubThreadEmps.Checked) { sql = this.TB_ByDtlAsSubThreadEmps.Text; if (sql.Length <= 5) { BP.Sys.PubClass.Alert("@请设置完整的SQL"); } //按明细表确定子线程接受人. nd.HisDeliveryWay = DeliveryWay.ByDtlAsSubThreadEmps; nd.DeliveryParas = this.TB_ByDtlAsSubThreadEmps.Text; } if (this.RB_ByStationOnly.Checked) { //仅按岗位计算. nd.HisDeliveryWay = DeliveryWay.ByStationOnly; } if (this.RB_ByFEE.Checked) { // FEE计算. nd.HisDeliveryWay = DeliveryWay.ByFEE; } if (this.RB_BySetDeptAsSubthread.Checked) { //按照按绑定部门计算,该部门一人处理标识该工作结束(子线程) nd.HisDeliveryWay = DeliveryWay.BySetDeptAsSubthread; } if (this.RB_ByCCFlowBPM.Checked) { //按照ccflow的BPM模式处理 nd.HisDeliveryWay = DeliveryWay.ByCCFlowBPM; } //是否可以分配工作? nd.IsTask = this.CB_IsSSS.Checked; //是否启用自动记忆功能 nd.IsRememberMe = this.CB_IsRememme.Checked; //本节点接收人不允许包含上一步发送人 nd.IsExpSender = this.CB_IsExpSender.Checked; //发送后转向 nd.DirectUpdate(); }