/// <summary>
        /// 初始化节点属性列表.
        /// </summary>
        /// <returns></returns>
        public string NodeAttrs_Init()
        {
            var strFlowId = GetRequestVal("FK_Flow");

            if (DataType.IsNullOrEmpty(strFlowId))
            {
                return("err@参数错误!");
            }

            Nodes nodes = new Nodes();

            nodes.Retrieve("FK_Flow", strFlowId);
            //因直接使用nodes.ToJson()无法获取某些字段(e.g.HisFormTypeText,原因:Node没有自己的Attr类)
            //故此处手动创建前台所需的DataTable
            DataTable dt = new DataTable();

            dt.Columns.Add("NodeID");      //节点ID
            dt.Columns.Add("Name");        //节点名称
            dt.Columns.Add("HisFormType"); //表单方案
            dt.Columns.Add("HisFormTypeText");
            dt.Columns.Add("HisRunModel"); //节点类型
            dt.Columns.Add("HisRunModelT");

            dt.Columns.Add("HisDeliveryWay");   //接收方类型
            dt.Columns.Add("HisDeliveryWayText");
            dt.Columns.Add("HisDeliveryWayJsFnPara");
            dt.Columns.Add("HisDeliveryWayCountLabel");
            dt.Columns.Add("HisDeliveryWayCount"); //接收方Count

            dt.Columns.Add("HisCCRole");           //抄送人
            dt.Columns.Add("HisCCRoleText");
            dt.Columns.Add("HisFrmEventsCount");   //消息&事件Count
            dt.Columns.Add("HisFinishCondsCount"); //流程完成条件Count
            DataRow dr;

            foreach (Node node in nodes)
            {
                dr                       = dt.NewRow();
                dr["NodeID"]             = node.NodeID;
                dr["Name"]               = node.Name;
                dr["HisFormType"]        = node.HisFormType;
                dr["HisFormTypeText"]    = node.HisFormTypeText;
                dr["HisRunModel"]        = node.HisRunModel;
                dr["HisRunModelT"]       = node.HisRunModelT;
                dr["HisDeliveryWay"]     = node.HisDeliveryWay;
                dr["HisDeliveryWayText"] = node.HisDeliveryWayText;

                //接收方数量
                var intHisDeliveryWayCount = 0;
                if (node.HisDeliveryWay == BP.WF.DeliveryWay.ByStation)
                {
                    dr["HisDeliveryWayJsFnPara"]   = "ByStation";
                    dr["HisDeliveryWayCountLabel"] = "岗位";
                    BP.WF.Template.NodeStations nss = new BP.WF.Template.NodeStations();
                    intHisDeliveryWayCount = nss.Retrieve(BP.WF.Template.NodeStationAttr.FK_Node, node.NodeID);
                }
                else if (node.HisDeliveryWay == BP.WF.DeliveryWay.ByDept)
                {
                    dr["HisDeliveryWayJsFnPara"]   = "ByDept";
                    dr["HisDeliveryWayCountLabel"] = "部门";
                    BP.WF.Template.NodeDepts nss = new BP.WF.Template.NodeDepts();
                    intHisDeliveryWayCount = nss.Retrieve(BP.WF.Template.NodeDeptAttr.FK_Node, node.NodeID);
                }
                else if (node.HisDeliveryWay == BP.WF.DeliveryWay.ByBindEmp)
                {
                    dr["HisDeliveryWayJsFnPara"]   = "ByDept";
                    dr["HisDeliveryWayCountLabel"] = "人员";
                    BP.WF.Template.NodeEmps nes = new BP.WF.Template.NodeEmps();
                    intHisDeliveryWayCount = nes.Retrieve(BP.WF.Template.NodeStationAttr.FK_Node, node.NodeID);
                }
                dr["HisDeliveryWayCount"] = intHisDeliveryWayCount;

                //抄送
                dr["HisCCRole"]     = node.HisCCRole;
                dr["HisCCRoleText"] = node.HisCCRoleText;

                //消息&事件Count
                BP.Sys.FrmEvents fes = new BP.Sys.FrmEvents();
                dr["HisFrmEventsCount"] = fes.Retrieve(BP.Sys.FrmEventAttr.FK_MapData, "ND" + node.NodeID);

                //流程完成条件Count
                BP.WF.Template.Conds conds = new BP.WF.Template.Conds(BP.WF.Template.CondType.Flow, node.NodeID);
                dr["HisFinishCondsCount"] = conds.Count;

                dt.Rows.Add(dr);
            }
            return(BP.Tools.Json.ToJson(dt));
        }
Exemple #2
0
        /// <summary>
        /// 获取指定部门下一级子部门及人员列表
        /// </summary>
        /// <returns></returns>
        public string Dot2DotStationModel_GetSubUnits()
        {
            string parentid = this.GetRequestVal("parentid");
            string nid      = this.GetRequestVal("nodeid");
            string tp       = this.GetRequestVal("stype"); //ST,UNIT
            string ttype    = this.GetRequestVal("ttype"); //STROOT,UNITROOT,ST,CST,S

            if (string.IsNullOrWhiteSpace(parentid))
            {
                throw new Exception("参数parentid不能为空");
            }
            if (string.IsNullOrWhiteSpace(nid))
            {
                throw new Exception("参数nodeid不能为空");
            }

            EasyuiTreeNode        node = null;
            List <EasyuiTreeNode> d    = new List <EasyuiTreeNode>();
            string    sql = string.Empty;
            DataTable dt  = null;

            BP.WF.Template.NodeStations sts = new BP.WF.Template.NodeStations();
            string sortField = CheckStationTypeIdxExists() ? "Idx" : "No";

            sts.Retrieve(BP.WF.Template.NodeStationAttr.FK_Node, int.Parse(nid));

            if (tp == "ST")
            {
                if (ttype == "STROOT")
                {
                    sql = "SELECT No,Name FROM Port_StationType ORDER BY " + sortField + " ASC";
                    dt  = DBAccess.RunSQLReturnTable(sql);

                    foreach (DataRow row in dt.Rows)
                    {
                        node                     = new EasyuiTreeNode();
                        node.id                  = "ST_" + row["No"];
                        node.text                = row["Name"] as string;
                        node.iconCls             = "icon-department";
                        node.attributes          = new EasyuiTreeNodeAttributes();
                        node.attributes.No       = row["No"] as string;
                        node.attributes.Name     = row["Name"] as string;
                        node.attributes.ParentNo = "-1";
                        node.attributes.TType    = "ST";
                        node.state               = "closed";
                        node.children            = new List <EasyuiTreeNode>();
                        node.children.Add(new EasyuiTreeNode());
                        node.children[0].text = "loading...";

                        d.Add(node);
                    }
                }
                else
                {
                    sql =
                        string.Format(
                            "SELECT ps.No,ps.Name,ps.FK_StationType,pst.Name FK_StationTypeName FROM Port_Station ps"
                            + " INNER JOIN Port_StationType pst ON pst.No = ps.FK_StationType"
                            + " WHERE ps.FK_StationType = '{0}' ORDER BY ps.Name ASC", parentid);
                    dt = DBAccess.RunSQLReturnTable(sql);

                    foreach (DataRow row in dt.Rows)
                    {
                        node          = new EasyuiTreeNode();
                        node.id       = "S_" + parentid + "_" + row["No"];
                        node.text     = row["Name"] as string;
                        node.iconCls  = "icon-user";
                        node.@checked =
                            sts.GetEntityByKey(BP.WF.Template.NodeStationAttr.FK_Station, row["No"]) != null;
                        node.attributes            = new EasyuiTreeNodeAttributes();
                        node.attributes.No         = row["No"] as string;
                        node.attributes.Name       = row["Name"] as string;
                        node.attributes.ParentNo   = row["FK_StationType"] as string;
                        node.attributes.ParentName = row["FK_StationTypeName"] as string;
                        node.attributes.TType      = "S";
                        node.attributes.Code       = BP.Tools.chs2py.ConvertStr2Code(row["Name"] as string);

                        d.Add(node);
                    }
                }
            }
            else
            {
                //岗位所属单位UNIT
                dt = DBAccess.RunSQLReturnTable(string.Format("SELECT * FROM Port_Dept WHERE IsUnit = 1 AND ParentNo='{0}' ORDER BY Name ASC", parentid));

                foreach (DataRow dept in dt.Rows)
                {
                    node                     = new EasyuiTreeNode();
                    node.id                  = "UNIT_" + dept["No"];
                    node.text                = dept["Name"] as string;
                    node.iconCls             = "icon-department";
                    node.attributes          = new EasyuiTreeNodeAttributes();
                    node.attributes.No       = dept["No"] as string;
                    node.attributes.Name     = dept["Name"] as string;
                    node.attributes.ParentNo = dept["ParentNo"] as string;
                    node.attributes.TType    = "UNIT";
                    node.attributes.Code     = BP.Tools.chs2py.ConvertStr2Code(dept["Name"] as string);
                    node.state               = "closed";
                    node.children            = new List <EasyuiTreeNode>();
                    node.children.Add(new EasyuiTreeNode());
                    node.children[0].text = "loading...";

                    d.Add(node);
                }

                dt = DBAccess.RunSQLReturnTable(
                    string.Format(
                        "SELECT ps.No,ps.Name,pst.No FK_StationType, pst.Name FK_StationTypeName,ps.FK_Unit,pd.Name FK_UnitName FROM Port_Station ps"
                        + " INNER JOIN Port_StationType pst ON pst.No = ps.FK_StationType"
                        + " INNER JOIN Port_Dept pd ON pd.No = ps.FK_Unit"
                        + " WHERE ps.FK_Unit = '{0}' ORDER BY pst.{1} ASC,ps.Name ASC", parentid, sortField));

                //增加岗位
                foreach (DataRow st in dt.Rows)
                {
                    node                       = new EasyuiTreeNode();
                    node.id                    = "S_" + st["FK_Unit"] + "_" + st["No"];
                    node.text                  = st["Name"] + "[" + st["FK_StationTypeName"] + "]";
                    node.iconCls               = "icon-user";
                    node.@checked              = sts.GetEntityByKey(BP.WF.Template.NodeStationAttr.FK_Station, st["No"]) != null;
                    node.attributes            = new EasyuiTreeNodeAttributes();
                    node.attributes.No         = st["No"] as string;
                    node.attributes.Name       = st["Name"] as string;
                    node.attributes.ParentNo   = st["FK_Unit"] as string;
                    node.attributes.ParentName = st["FK_UnitName"] as string;
                    node.attributes.TType      = "S";
                    node.attributes.Code       = BP.Tools.chs2py.ConvertStr2Code(st["Name"] as string);

                    d.Add(node);
                }
            }

            return(Newtonsoft.Json.JsonConvert.SerializeObject(d));
        }