Ejemplo n.º 1
0
        /// <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);
        }
Ejemplo n.º 2
0
        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();
        }