今日内容

1.

<%-- builed by manage.aspx.cmt [ver:2014.19.01] at 2014-12-01 16:19:20 --%>

<%@ Page Language="C#" AutoEventWireup="True" CodeBehind="BasLimitConfigManage.aspx.cs"
    Inherits="HraWeb.BasLimitConfigManage" %>

<%@ Register Assembly="Trirand.Web" TagPrefix="asp" Namespace="Trirand.Web.UI.WebControls" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head id="Head1" runat="server">
    <title></title>
    <link href="../assets/css/vendor/BootstrapSelect/bootstrap-select.css" rel="stylesheet" />
    <script src="../assets/js/vendor/BootstrapSelect/bootstrap-select.js"></script>
    <script src="../assets/js/vendor/BootstrapSelect/defaults-zh_CN.js"></script>
    <link href="../assets/css/vendor/bootstrap/bootstrap.min.css" rel="stylesheet" />
    <link href="../assets/css/vendor/jsMind/jsmind.css" rel="stylesheet" />
    <style type="text/css">
        jmnode.selected {
            background-color: #428bca;
            color: #fff;
            border: solid 0px #CCCCCC;
            box-shadow: 2px 2px 8px #000;
        }

        jmnode {
            border: solid 1px #CCCCCC;
        }
    </style>
</head>
<body>
    <div id="jsmind_container" style="height: 800px"></div>
    <div class="modal fade" id="setModal" tabindex="-1" role="dialog" aria-labelledby="myModalLabel">
        <div class="modal-dialog" role="document" style=" 630px">
            <div class="modal-content">
                <div class="modal-header">
                    <button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>
                    <h4 class="modal-title" id="myModalLabel">添加限额</h4>
                </div>
                <div class="modal-body">
                    <form class="form-horizontal">
                        <div class="form-group">
                            <label for="txt_EffectiveDate_" class="col-md-2 control-label">有效期开始</label>
                            <div class="col-md-4">
                                <input type="text" class="form-control" id="txt_EffectiveDate_" placeholder="xxxx/xx/xx">
                            </div>
                            <label for="txt_TerminateDate_" class="col-md-2 control-label">有效期结束</label>
                            <div class="col-md-4">
                                <input type="text" class="form-control" id="txt_TerminateDate_" placeholder="xxxx/xx/xx">
                            </div>
                        </div>
                        <div class="form-group">
                            <label for="txt_LowerLimitValue_" class="col-md-2 control-label">下限值</label>
                            <div class="col-md-4">
                                <input type="text" class="form-control" id="txt_LowerLimitValue_" placeholder="数值">
                            </div>
                            <label for="txt_YellowLimitValue_" class="col-md-2 control-label">黄线值</label>
                            <div class="col-md-4">
                                <input type="text" class="form-control" id="txt_YellowLimitValue_" placeholder="数值">
                            </div>
                        </div>
                        <div class="form-group">
                            <label for="txt_RedLimitValue_" class="col-md-2 control-label">红线值</label>
                            <div class="col-md-4">
                                <input type="text" class="form-control" id="txt_RedLimitValue_" placeholder="数值">
                            </div>
                            <label for="txt_UpperLimitValue_" class="col-md-2 control-label">黄线值</label>
                            <div class="col-md-4">
                                <input type="text" class="form-control" id="txt_UpperLimitValue_" placeholder="数值">
                            </div>
                        </div>
                        <div class="form-group">
                            <label for="txt_LimitControlFreq_" class="col-md-2 control-label">检查频次</label>
                            <div class="col-md-4">
                                <input type="text" class="form-control" id="txt_LimitControlFreq_" placeholder="请选择">
                            </div>
                            <label for="txt_LimitBundleName_" class="col-md-2 control-label">限额名称</label>
                            <div class="col-md-4">
                                <input type="text" class="form-control" id="txt_LimitBundleName_" placeholder="限额名称">
                            </div>
                        </div>
                        <div class="form-group">
                            <label for="txt_EndUser_" class="col-md-2 control-label">使用机构</label>
                            <div class="col-md-4">
                                <input type="text" class="form-control" id="txt_EndUser_" placeholder="请选择">
                            </div>
                            <label for="txt_LimitUnit_" class="col-md-2 control-label">单位</label>
                            <div class="col-md-4">
                                <input type="text" class="form-control" id="txt_LimitUnit_" placeholder="限额名称">
                            </div>
                        </div>
                        <div class="form-group">
                            <label for="currency" class="col-md-2 control-label">币种</label>
                            <div class="col-md-4">
                                <input type="text" class="form-control" id="currency" placeholder="请选择">
                            </div>

                        </div>

                    </form>
                </div>

                <div class="modal-footer">
                    <button type="button" class="btn btn-primary" data-dismiss="modal">确定</button>
                </div>
            </div>
        </div>
    </div>
    <!-- myModal -->
    <div class="modal fade" id="myModal" tabindex="-1" role="dialog" aria-labelledby="myModalLabel">
        <div class="modal-dialog" role="document">
            <div class="modal-content">
                <div class="modal-header">
                    <button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>
                    <h4 class="modal-title" id="myModalLabel">限额详情</h4>
                </div>
                <div class="modal-body table-responsive">
                    <table class="table table-hover table-striped">
                        <tr>
                            <td>限额内容
                            </td>
                            <td>黄线值
                            </td>
                            <td>红线值
                            </td>
                            <td>上限值
                            </td>
                            <td>额度使用量
                            </td>
                        </tr>
                        <tr>
                            <td>单笔交易限额
                            </td>
                            <td>10000
                            </td>
                            <td>50000
                            </td>
                            <td>100000
                            </td>
                            <td>--
                            </td>
                        </tr>
                        <tr>
                            <td>单笔交易限额
                            </td>
                            <td>10000
                            </td>
                            <td>50000
                            </td>
                            <td>100000
                            </td>
                            <td>--
                            </td>
                        </tr>
                    </table>
                    <div class="text-center">
                        <ul class="pagination">
                            <li><a href="#">&laquo;</a></li>
                            <li><a href="#">1</a></li>
                            <li><a href="#">2</a></li>
                            <li><a href="#">3</a></li>
                            <li><a href="#">4</a></li>
                            <li><a href="#">5</a></li>
                            <li><a href="#">&raquo;</a></li>
                        </ul>

                    </div>

                </div>
                <div class="modal-footer">
                    <button type="button" class="btn btn-primary" data-dismiss="modal">确定</button>
                </div>
            </div>
        </div>
    </div>
    <!--newModal-->
    <div class="modal fade " id="newModal" tabindex="-1" role="dialog" aria-labelledby="myModalLabel">
        <div class="modal-dialog" role="document">
            <div class="modal-content" style=" 400px">
                <div class="modal-header">
                    <button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>
                    <h4 class="modal-title">添加限额</h4>
                </div>
                <div class="modal-body " style="min-height: 310px; max-height: 600px; overflow: auto">
                    <form class="form-inline">
                        <div class="form-group" style="display: block">
                            <label for="limitObectType" class="col-md-5 control-label" style="line-height: 34px">限额对象类型</label>
                            <div class=" col-md-7">
                                <select id="limitObectType" class="selectpicker show-tick form-control">
                                </select>
                            </div>
                        </div>
                        <div class="form-group col-md-offset-1" style="display: block">
                            <div id="collapseOne" class="panel-collapse collapse in" role="tabpanel">
                                <div class="panel-b-body" id="left" style="padding: 0; overflow: auto;  100%">
                                    <ul id="tt1" style="" class="easyui-tree"></ul>
                                </div>
                            </div>
                        </div>
                    </form>
                    <div class="panel-b panel-b-archon main-graph">

                        <div class="col-xs-6 col-sm-4">
                            <div class="form-group">
                            </div>
                        </div>


                    </div>

                </div>

                <div class="modal-footer">
                    <button type="button" class="btn btn-default" data-dismiss="modal">关闭</button>
                    <button type="button" id="btn_new" class="btn btn-primary">保存</button>
                </div>
            </div>
        </div>
    </div>
    <!--editModal-->
    <div class="modal fade" id="editModal" tabindex="-1" role="dialog" aria-labelledby="myModalLabel">
        <div class="modal-dialog" role="document">
            <div class="modal-content">
                <div class="modal-header">
                    <button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>
                    <h4 class="modal-title">编辑限额</h4>
                </div>
                <div class="modal-body">
                    <form class="form-inline">
                        <div class="form-group">
                            <label for="exampleInputEmail3">限额对象</label>
                            <input type="email" class="form-control" id="d2" placeholder="Email">
                        </div>
                    </form>
                </div>

                <div class="modal-footer">
                    <button type="button" class="btn btn-default" data-dismiss="modal">关闭</button>
                    <button type="button" id="btn_edit" class="btn btn-primary">保存</button>
                </div>
            </div>
        </div>
    </div>
    <!--delModal-->
    <div class="modal fade bs-example-modal-sm" id="delModal" tabindex="-1" role="dialog" aria-labelledby="myModalLabel">
        <div class="modal-dialog modal-sm" role="document">
            <div class="modal-content">
                <div class="modal-header">
                    <button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>
                    <h4 class="modal-title">删除</h4>
                </div>
                <div class="modal-body">
                    确定要删除此节点吗?
                </div>

                <div class="modal-footer">
                    <button type="button" class="btn btn-default" data-dismiss="modal">取消</button>
                    <button type="button" id="btn_del" class="btn btn-danger">删除</button>
                </div>
            </div>
        </div>
    </div>
    <script src="../assets/js/vendor/jsMind/jsmind.js"></script>
    <script src="../assets/js/vendor/bootstrapMenu/BootstrapMenu.js"></script>
    <script src="../assets/js/vendor/bootstrap/bootstrap.min.js"></script>
    <script type="text/javascript">
        function filterDrp(obj, nodeType, nodeId, callback) {

            var url = '/Bas/BasLimitConfigManage.aspx?_method=entity&type=' + nodeType;
            $.post(url, function (data) {
                obj.find("option").remove();
                obj.append(data);
                obj.selectpicker('refresh');
                LoadTree1(obj.val(), nodeId, nodeType);
            });
            if (callback) {
                callback();
            }

        }
        //树节点的id
        var nodeId = '';
        //树节点的name
        var nodeName = '';
        var selectedNodeId = '';
        var selectedNodeType = '';
        function LoadTree1(type, nodeId, nodeType) {

            var nodeId1 = jm.get_selected_node().id;

            var alertType = $("#limitObectType option:selected").val();
            var noalertType = jm.get_selected_node().data.type;
            //alert("nodeid=" + nodeId1);
            //alert("nt=" + noalertType);
            //alert("alertype=" + alertType);
            var postJson = [noalertType];
            //var postJson = ["Limit_Object_BusiStruc", "Limit_Object_BasProductGroup", "Limit_Object_BasCurrency"];
            postJson = JSON.stringify(postJson);
            DataGrid.WaitMessage();
            $("#tt1").tree(
            {
                url: '/BAS/LimiManagetTree/TraderLimitTreeJson.ashx?_method=GetTradeLimitBusiStrucTree&_id=0&a=' + Math.random() + "&postJson=" + postJson + "&nodeId=" + nodeId1 + "&alertnodeType=" + alertType,
                method: 'get',
                animate: true,
                formatter: function (node) {
                    var s = node.text;
                    if (node.children) {
                        s += "&nbsp;<span style='color:blue'>(" + node.children.length + ")</span>";
                    }
                    return s;
                },
                onBeforeExpand: function (node, param) {
                    var url = "/BAS/BasLimitBusiStrucManage.aspx?_method=loadChild&child=" + node.id;
                    $('#tt1').tree('options').url = url;
                },
                onClick: function (node) {
                    nodeId = node.id;
                    nodeName = node.text;
                    // $("#jq").jqGrid("setGridParam", { postData: { txt_Name_LK_: $("#txt_Name_LK_").val(), "BaslimitBusinessStruPId": node.id} }).trigger("reloadGrid");


                },
                onLoadSuccess: function (node, data) {
                    DataGrid.RemoveWaitMessage();
                    if (data.error!=undefined &&data.error == "-999") {
                        $.messager.alert("操作提示", data.message, "error");
                        return false;
                    }
                    $('#newModal').modal('show');
                }
            }
            );
            // off_id = $("#tt").selectNode.txt_OfficeId_;

        }
        var jm;
        $(function () {
            //UTIL.SetDropdownListForBootStrapByParentCode($("#limitObectType"), "Rsk_Limit_Object_Type");
            $("#limitObectType").change(function () {
                var type = $(this).find("option:checked").attr("value");
                LoadTree1(type, selectedNodeId, selectedNodeType);
            });

            jm = load_jsmind();

            //----------------------------------------------------------------------------------------------------------------
            var menu = new BootstrapMenu('jmnode', {
                actions: [{
                    name: '添加子节点',
                    onClick: function () {
                        selectedNodeType = jm.get_selected_node().data.type;
                        selectedNodeId = jm.get_selected_node().id;
                        filterDrp($("#limitObectType"), selectedNodeType, selectedNodeId, null);
                        

                    }
                }, {
                    name: '编辑此节点',
                    onClick: function () {
                        $('#editModal').modal('show');

                    }
                }, {
                    name: '删除此节点',
                    onClick: function () {
                        $('#delModal').modal('show');

                    }
                }, {
                    name: '添加限额',
                    onClick: function () {
                        $('#setModal').modal('show');
                    }
                }, {
                    name: '查看限额设置',
                    onClick: function () {
                        $('#myModal').modal('show');
                    }
                }]
            });
            $("#btn_del").click(function () {
                var nodeSelected = jm.get_selected_node();
                $('#delModal').modal('hide');
                jm.enable_edit();
                jm.remove_node(nodeSelected);
                jm.disable_edit();
            });
            $("#btn_edit").click(function () {
                var nodeSelected = jm.get_selected_node();
                $('#editModal').modal('hide');
                jm.enable_edit();
                jm.begin_edit(nodeSelected);
                $('.jsmind-editor').val($("#drp1 option:selected").text());
                jm.end_edit();
                jm.disable_edit();
            });

            $("#btn_new").click(function () {
                URL = '';
                $('#newModal').modal('hide');
                $.post(url, function (data) {
                    if (data == '1') {
                        var nodeSelected = jm.get_selected_node();
                        alert($("#limitObectType option:selected").val());
                        jm.enable_edit();
                        jm.add_node(nodeSelected, nodeId, nodeName, { type: $("#limitObectType").val() });
                        jm.end_edit();
                        jm.disable_edit();
                    } else {

                    }

                });

            });
        });
        function load_jsmind() {
            DataGrid.WaitMessage("");
            //alert(21);
            var postJson = ["Limit_Object_BusiStruc",
                            "Limit_Object_BasProductGroup",
                            "Limit_Object_RskFactor",
                            "Limit_Object_BasCurrency",
                            "Limit_Object_BasCounterparty",
                            "Limit_Object_BasPortfolio",
                            "Credit_Rate"];
            postJson = JSON.stringify(postJson);
            var datas = [];
            var url = '/BAS/LimiManagetTree/TraderLimitTreeJson.ashx?_method=GetTradeLimitBusiStrucTree' + '&postJson=' + postJson + "&isConvert=true";
            $.post(url, function (data) {
                DataGrid.RemoveWaitMessage();
                datas = JSON.parse(data);
                var mind = {
                    "meta": {
                        "name": "demo",
                        "author": "hizzgdev@163.com",
                        "version": "0.2"
                    },
                    "format": "node_array",
                    "data": datas
                };
                var options = { // options 将在下一章中详细介绍
                    container: 'jsmind_container', // [必选] 容器的ID
                    editable: false, // [可选] 是否启用编辑
                    theme: 'default', // [可选] 主题
                    mode: 'side'
                };
                var jm1 = new jsMind(options);
                jm1.show(mind);
                jm = jm1;
            });
           
;
     
        }
    </script>
</body>
</html>
2.aspx.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using HraWeb.Common;
using WebApp.Common;
using Contract.Domain;
using System.Collections;

namespace HraWeb
{
    public partial class BasLimitConfigManage : JQEntityManage<Contract.Domain.BasLimitConfig>
    {
        protected override void Page_Load(object sender, EventArgs e)
        {
            if (Request["_method"] == "entity")
            {
                string type = Request["type"];
                Response.Write(Psvc.TypeFilter(type));
                Response.End();
            }
            if (Request["_method"] == "addNode")
            {
                string nodeType = Request["nodeType"];
                string nodeId = Request["nodeId"];
                string selectedNodeId = Request["selectedNodeId"];
                string selectedNodeType = Request["selectedNodeType"];
                IList<RskLimitObject> list = Psvc.AddNode(nodeId, nodeType, selectedNodeId, selectedNodeType);
                Response.Write("");
                Response.End();
            }
            base.Page_Load(sender, e);
        }
        /// <summary>
        /// 设置查询条件或者语句
        /// </summary>
        /// <returns></returns>
        protected override Framework.QueryInfo SetInfo()
        {
            info = base.SetInfo();
            return info;
        }
        /// <summary>
        /// 初始化页面控件
        /// </summary>
        protected override void InitPage()
        {
            base.InitPage();

            // BindDrop(drp_Unit, "SPSW", true);
        }
        private Contract.IService.IBasLimitConfigService psvc;
        /// <summary>
        /// 初始化
        /// </summary>
        Contract.IService.IBasLimitConfigService Psvc
        {
            get
            {
                if (psvc == null)
                {
                    psvc = ctx.GetObject("BasLimitConfigService") as Contract.IService.IBasLimitConfigService;
                }
                return psvc;

            }
        }
    }

    public class jsMindEntity
    {
        public string id { get; set; }
        public bool isroot { get; set; }
        
        public string topic { get; set; }

        public string type { get; set; }

        public string parentid { get; set; }
    }
}

3.traderlimitjson.ashx.cs

using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using System.Reflection;
using System.Web;
using Contract.Domain;
using DevExpress.Data.PLinq.Helpers;
using Framework;
using WebApp.Common;
using Contract.Domain.Enum.EnumList;
using BASBLL.BasLimitLayer.BasLimitBusiStrucLayer;
using HRAModel.Sys.Enum;
using Holworth.Utility;
using Contract.Domain.Enum.EnumCommon;

namespace HraWeb.Common
{
    /// <summary>
    /// 业务结构选择类型
    /// </summary>
    public enum BusiStrucEnum
    {

        BasLimitBusiStruc = -1,
        BasEnterprice = 0,
        BasLegalEntity = 1,
        BasBusinessUnit = 2,
        BasTradeDesk = 3,
        BasPortfolio = 4,
        User = 5
    }

    /// <summary>
    /// EntityJsonList 的摘要说明
    /// </summary>
    public class TraderLimitTreeJson : BasePage, IHttpHandler, System.Web.SessionState.IRequiresSessionState
    {

        /// <summary>
        /// 根据条件过滤busistruc
        /// </summary>
        /// <param name="where"></param>
        /// <returns></returns>
        private IList<BasLimitBusiStruc> loadBusiStruc(string where)
        {
            QueryInfo info = new QueryInfo();
            if (string.IsNullOrEmpty(where))
            {
                if (!string.IsNullOrEmpty(where))
                {
                    info.Where.Add("where1", where);
                }
            }
            info.QueryObject = "BasLimitBusiStruc";
            var busiList = Dao.FindList<BasLimitBusiStruc>(info);

            return busiList;
        }
        private EasyUiTree loadBusiTree(string nodeId, EasyUiTree node, string where)
        {

            var busiList = loadBusiStruc(where);
            var trees = BusiList2Tree(busiList, null, null);
            foreach (var item in trees)
            {
                node.children.Add(item);
            }
            return node;
        }

        private IList<EasyUiTree> BusiList2Tree(IList<BasLimitBusiStruc> busiList, BasLimitBusiStruc bb, EasyUiTree ee, bool isfirst = true)
        {
            EasyUiTree e1 = null;
            IList<EasyUiTree> nodes = new List<EasyUiTree>();
            IList<BasLimitBusiStruc> tmpList = null;
            if (bb.Children.Count > 0)
            {
                tmpList = bb.Children;
            }
            else
            {
                tmpList = busiList;
            }
            foreach (var b1 in tmpList)
            {
                e1 = new EasyUiTree();
                e1.id = b1.Id;
                e1.text = b1.Name;
                e1.attributes = new
                {
                    RefTableName = "BasLimitBusiStruc",
                    DataValueField = "Id",
                    TextValueField = "Name",
                    LimitObjectType = (int)Limit_Object.Limit_Object_BusiStruc
                };
                if (b1.Children.Count > 0)
                {
                    if (e1.children == null)
                    {
                        e1.children = new List<EasyUiTree>();
                    }

                    BusiList2Tree(busiList, b1, e1, false);

                }
                if (isfirst)
                    //node.children.Add(e1);
                    nodes.Add(e1);
                else
                {
                    ee.children.Add(e1);
                }
            }

            return nodes;
        }

        private void LoadSelNodeTypeEasyuiTree(Limit_Object limitObject, EasyUiTree node, string nodeId, string where)
        {
            EasyUiTree e;
            var currNode = new EasyUiTree();
            currNode.children = new List<EasyUiTree>();
            switch (limitObject)
            {
              
                case Limit_Object.Limit_Object_BusiStruc:
                    #region 业务结构
                    BusiStrucEnum strucEnum = 0;
                    var busiInfo = new QueryInfo("BasLimitBusiStruc");
                    busiInfo.AddParam("Id", nodeId);
                    var busi = Dao.FindOne(busiInfo) as BasLimitBusiStruc;
                    if (busi == null)
                    {
                        throw new Exception("节点不存在,或者节点已经被移除!");
                    }
                    if (busi.NodeSource == "User")
                    {
                        //Utility.JSUtil.ExecuteScript(string.Format(" $.messager.alert('操作提示', '{0}', '{1}')", "用户级没有子节点", "warning"));

                        //return;
                        var obj = new { error = -999, message = "用户级没有子节点" };
                        Context.Response.Write(Newtonsoft.Json.JsonConvert.SerializeObject(obj));
                        Context.Response.End();

                    }
                  
                   
                    currNode.attributes = new
                    {
                        RefTableName = "BasLimitBusiStruc",
                        DataValueField = "Id",
                        TextValueField = "Name",
                        LimitObjectType = (int)Limit_Object.Limit_Object_BusiStruc
                    };
                    //currNode.id = nodeId;
                    //currNode.text = busi.Name;
                   
                    if (busi.ProLevel == 1)
                    {
                        strucEnum = BusiStrucEnum.BasLegalEntity;
                    }
                    if (busi.ProLevel == 2)
                    {
                        strucEnum = BusiStrucEnum.BasBusinessUnit;
                    }
                    if (busi.ProLevel == 3)
                    {
                        strucEnum = BusiStrucEnum.BasTradeDesk;
                    }
                    if (busi.ProLevel == 4)
                    {
                        strucEnum = BusiStrucEnum.BasPortfolio;
                    }
                    if (busi.ProLevel == 5)
                    {
                        strucEnum = BusiStrucEnum.User;
                    }
                    switch (strucEnum)
                    {
                        case BusiStrucEnum.BasLimitBusiStruc:
                            loadBusiTree(nodeId, node, where);
                            break;
                        case BusiStrucEnum.BasEnterprice:
                            break;
                        case BusiStrucEnum.BasLegalEntity:
                            currNode.id = ((int)BusiStrucEnum.BasLegalEntity).ToString();
                            currNode.text = "法人实体";
                            var entitylist = Dao.FindList<BasLegalEntity>(new QueryInfo("BasLegalEntity"));
                            foreach (var item in entitylist)
                            {
                                 e = new EasyUiTree();
                                e.id = item.Id;
                                e.text = item.LegalEntityName;
                                currNode.children.Add(e);
                            }
                            break;
                        case BusiStrucEnum.BasBusinessUnit:
                            currNode.id = ((int)BusiStrucEnum.BasBusinessUnit).ToString();
                            currNode.text = "业务单位";
                            var unitList = Dao.FindList<BasBusinessUnit>(new QueryInfo("BasBusinessUnit"));
                            foreach (var item in unitList)
                            {
                                 e = new EasyUiTree();
                                e.attributes = new
                                {
                                    RefTableName = "BasLimitBusiStruc",
                                    DataValueField = "Id",
                                    TextValueField = "Name",
                                    LimitObjectType = (int)Limit_Object.Limit_Object_BusiStruc,
                                    Ori = new
                                    {
                                        RefTableName = "BasBusinessUnit",
                                        DataValueField = "Id",
                                        TextValueField = "BusinessUnitName",
                                    }
                                };
                                e.id = item.Id;
                                e.text = item.BusinessUnitName;
                                currNode.children.Add(e);
                            }
                            break;
                        case BusiStrucEnum.BasTradeDesk:
                            currNode.id = ((int)BusiStrucEnum.BasTradeDesk).ToString();
                            currNode.text = "交易前台";
                            var traderDeskList = Dao.FindList<BasTradeDesk>(new QueryInfo("BasTradeDesk"));
                            foreach (var item in traderDeskList)
                            {
                                 e = new EasyUiTree();
                                e.attributes = new
                                {
                                    RefTableName = "BasLimitBusiStruc",
                                    DataValueField = "Id",
                                    TextValueField = "Name",
                                    LimitObjectType = (int)Limit_Object.Limit_Object_BusiStruc,
                                    Ori = new
                                    {
                                        RefTableName = "BasTradeDesk",
                                        DataValueField = "Id",
                                        TextValueField = "TradeDeskName",
                                    }
                                };
                                e.id = item.Id;
                                e.text = item.TradeDeskName;
                                currNode.children.Add(e);
                            }
                            break;
                        case BusiStrucEnum.BasPortfolio:
                            currNode.id = ((int)BusiStrucEnum.BasPortfolio).ToString();
                            currNode.text = "投资组合";
                            var portfolioList = Dao.FindList<BasPortfolio>(new QueryInfo("BasPortfolio"));
                            foreach (var item in portfolioList)
                            {
                                 e = new EasyUiTree();
                                e.attributes = new
                                {
                                    RefTableName = "BasLimitBusiStruc",
                                    DataValueField = "Id",
                                    TextValueField = "Name",
                                    LimitObjectType = (int)Limit_Object.Limit_Object_BusiStruc,
                                    Ori = new
                                    {
                                        RefTableName = "BasPortfolio",
                                        DataValueField = "Id",
                                        TextValueField = "PortfolioName",
                                    }
                                };
                                e.id = item.Id;
                                e.text = item.PortfolioName;
                                currNode.children.Add(e);
                            }
                            break;
                        case BusiStrucEnum.User:
                            currNode.id = ((int)BusiStrucEnum.User).ToString();
                            currNode.text = "交易员";
                            var userList = Dao.FindList<User>(new QueryInfo("User"));
                            foreach (var item in userList)
                            {
                                 e = new EasyUiTree();
                                e.attributes = new
                                {
                                    RefTableName = "BasLimitBusiStruc",
                                    DataValueField = "Id",
                                    TextValueField = "Name",
                                    LimitObjectType = (int)Limit_Object.Limit_Object_BusiStruc,
                                    Ori = new
                                    {
                                        RefTableName = "User",
                                        DataValueField = "Id",
                                        TextValueField = "Name",
                                    }
                                };
                                e.id = item.Id;
                                e.text = item.Name;
                                currNode.children.Add(e);
                            }
                            break;
                        default:
                            break;
                    }
                    #endregion
                    break;
                //case Limit_Object.Limit_Object_BasProductGroup:
                //    #region 产品群
                //    #endregion
                //    break;
                case Limit_Object.Limit_Object_RskFactor:
                    #region 风险因子
                    var rskfactorInfo = new QueryInfo("RskFactor");
                    rskfactorInfo.AddParam("Id", nodeId);
                    var currfactor = Dao.FindOne(rskfactorInfo) as RskFactor;
                    if (currfactor != null)
                    {
                        var obj = new { error = -999, message = "不能添加子节点,已经属于叶子节点" };
                        Context.Response.Write(Newtonsoft.Json.JsonConvert.SerializeObject(obj));
                        Context.Response.End();

                    }
                    currNode.id = ((int)EnumComon.RskFactor).ToString();
                    currNode.text = "风险因子";
                    var factorList = Dao.FindList<RskFactor>(new QueryInfo("RskFactor"));
                    foreach (var item in factorList)
                    {
                         e = new EasyUiTree();
                        e.attributes = new
                        {
                            RefTableName = "RskFactor",
                            DataValueField = "Id",
                            TextValueField = "RiskFactorName",
                            LimitObjectType = (int)Limit_Object.Limit_Object_RskFactor,
                          
                        };
                        e.id = item.Id;
                        e.text = item.RiskFactorName;
                        currNode.children.Add(e);

                    }
                    #endregion
                    break;
                case Limit_Object.Limit_Object_BasCurrency:
                    #region 币种
                    
                    var currenyInfo = new QueryInfo("BasCurrency");
                    currenyInfo.AddParam("Id", nodeId);
                    var curreny = Dao.FindOne(currenyInfo) as BasCurrency;
                    if (curreny != null)
                    {
                        var obj = new { error = -999, message = "不能添加子节点,已经属于叶子节点" };
                        Context.Response.Write(Newtonsoft.Json.JsonConvert.SerializeObject(obj));
                        Context.Response.End();

                    }
                    currNode.id = ((int)EnumComon.BasCurrency).ToString();
                    currNode.text = "币种";
                    var currencys = Dao.FindList<BasCurrency>(new QueryInfo("BasCurrency"));
                    foreach (var item in currencys)
                    {
                        e = new EasyUiTree();
                        e.attributes = new
                        {
                            RefTableName = "BasCurrency",
                            DataValueField = "Id",
                            TextValueField = "CurrencyName",
                            LimitObjectType = (int)Limit_Object.Limit_Object_BasCurrency,

                        };
                        e.id = item.Id;
                        e.text = item.CurrencyName;
                        currNode.children.Add(e);

                    }
                    #endregion
                    break;
                case Limit_Object.Limit_Object_BasCounterparty:
                    #region 交易对手
                    var partyInfo = new QueryInfo("BasCounterparty");
                    partyInfo.AddParam("Id", nodeId);
                    var party = Dao.FindOne(partyInfo) as BasCounterparty;
                    if (party != null)
                    {
                        var obj = new { error = -999, message = "不能添加子节点,已经属于叶子节点" };
                        Context.Response.Write(Newtonsoft.Json.JsonConvert.SerializeObject(obj));
                        Context.Response.End();

                    }
                    currNode.id = ((int)EnumComon.BasCounterparty).ToString();
                    currNode.text = "交易对手";
                    var partys = Dao.FindList<BasCounterparty>(new QueryInfo("BasCounterparty"));
                    foreach (var item in partys)
                    {
                        e = new EasyUiTree();
                        e.attributes = new
                        {
                            RefTableName = "BasCounterparty",
                            DataValueField = "Id",
                            TextValueField = "CounterpartyName",
                            LimitObjectType = (int)Limit_Object.Limit_Object_BasCounterparty,

                        };
                        e.id = item.Id;
                        e.text = item.CounterpartyName;
                        currNode.children.Add(e);

                    }
                    #endregion
                    break;
                case Limit_Object.Limit_Object_BasPortfolio:
                    #region 投资组合
                    var portfolioInfo = new QueryInfo("BasPortfolio");
                    portfolioInfo.AddParam("Id", nodeId);
                    var portfolio = Dao.FindOne(portfolioInfo) as BasPortfolio;
                    if (portfolio != null)
                    {
                        var obj = new { error = -999, message = "不能添加子节点,已经属于叶子节点" };
                        Context.Response.Write(Newtonsoft.Json.JsonConvert.SerializeObject(obj));
                        Context.Response.End();

                    }
                    currNode.id = ((int)EnumComon.BasPortfolio).ToString();
                    currNode.text = "投资组合";
                    var portfolios = Dao.FindList<BasPortfolio>(new QueryInfo("BasPortfolio"));
                    foreach (var item in portfolios)
                    {
                        e = new EasyUiTree();
                        e.attributes = new
                        {
                            RefTableName = "BasPortfolio",
                            DataValueField = "Id",
                            TextValueField = "PortfolioName",
                            LimitObjectType = (int)Limit_Object.Limit_Object_BasPortfolio,

                        };
                        e.id = item.Id;
                        e.text = item.PortfolioName;
                        currNode.children.Add(e);

                    }
                    #endregion
                    break;
                case Limit_Object.Credit_Rate:
                    #region 信用等级
                    #endregion
                    break;
                default:
                    break;
            }
            node.children.Add(currNode);

        }

        private IBasLimitBusiStrucLayerService _basLimitBusiStrucLayerService;

        public IBasLimitBusiStrucLayerService BasLimitBusiStrucLayerService
        {
            get
            {
                if (_basLimitBusiStrucLayerService == null)
                {
                    _basLimitBusiStrucLayerService = ctx["BasLimitBusiStrucLayerService"] as IBasLimitBusiStrucLayerService;
                }
                return _basLimitBusiStrucLayerService;
            }


        }
        /// <summary>
        /// 通过限额对象,检测是否加载该指标类型
        /// </summary>
        /// <param name="limitObject"></param>
        /// <returns></returns>
        private bool checkLimitIndexTypeisLoad(Limit_Index_Type limitIndexType, object limitObject)
        {

            bool ispass = true;
            if (limitObject == null || limitObject.ToString() == "")
            {
                return true;
            }
            switch (int.Parse(limitObject.ToString()))
            {

                case (int)Limit_Object.Limit_Object_BusiStruc:
                    ispass = true;
                    break;
                case (int)Limit_Object.Limit_Object_BasProductGroup:
                    ispass = true;
                    break;
                case (int)Limit_Object.Limit_Object_RskFactor:
                    ispass = true;
                    break;
                case (int)Limit_Object.Limit_Object_BasCurrency:
                    switch (limitIndexType)
                    {

                        case Limit_Index_Type.Limit_Index_Type_Trade_Quantity:
                            ispass = true;
                            break;
                        case Limit_Index_Type.Limit_Index_Type_Trade_Amount:
                            ispass = true;
                            break;
                        case Limit_Index_Type.Limit_Index_Type_Cash_Outflow:
                            ispass = true;
                            break;
                        case Limit_Index_Type.Limit_Index_Type_Value_At_Risk:
                            ispass = true;
                            break;
                        case Limit_Index_Type.Limit_Index_Type_Loss:
                            ispass = true;
                            break;
                        case Limit_Index_Type.Limit_Index_Type_Credit_Rating:
                            ispass = true;
                            break;
                        case Limit_Index_Type.Limit_Index_Type_Credit_Line:
                            ispass = false;
                            break;
                        case Limit_Index_Type.Limit_Index_Type_Tenor:
                            ispass = true;
                            break;
                        case Limit_Index_Type.Limit_Index_Type_Sensitivity:
                            ispass = true;
                            break;
                        case Limit_Index_Type.Limit_Index_Type_CutLoss:
                            ispass = true;
                            break;
                        case Limit_Index_Type.Limit_Index_Type_TakeProfit:
                            ispass = true;
                            break;

                    }
                    break;
                case (int)Limit_Object.Limit_Object_BasCounterparty:
                    ispass = true;
                    break;
                case (int)Limit_Object.Limit_Object_BasPortfolio:
                    ispass = true;
                    break;
                case (int)EnumComon.BasLimitProStruc:
                    break;
                case (int)EnumComon.BasLimitBusiStruc:
                    ispass = true;
                    break;
                case (int)EnumComon.BasProductGroup:
                    ispass = true;
                    break;
                case (int)EnumComon.RskFactor:
                    ispass = true;
                    break;
                case (int)EnumComon.BasCurrency:
                    switch (limitIndexType)
                    {

                        case Limit_Index_Type.Limit_Index_Type_Trade_Quantity:
                            ispass = true;
                            break;
                        case Limit_Index_Type.Limit_Index_Type_Trade_Amount:
                            ispass = true;
                            break;
                        case Limit_Index_Type.Limit_Index_Type_Cash_Outflow:
                            ispass = true;
                            break;
                        case Limit_Index_Type.Limit_Index_Type_Value_At_Risk:
                            ispass = true;
                            break;
                        case Limit_Index_Type.Limit_Index_Type_Loss:
                            ispass = true;
                            break;
                        case Limit_Index_Type.Limit_Index_Type_Credit_Rating:
                            ispass = true;
                            break;
                        case Limit_Index_Type.Limit_Index_Type_Credit_Line:
                            ispass = false;
                            break;
                        case Limit_Index_Type.Limit_Index_Type_Tenor:
                            ispass = true;
                            break;
                        case Limit_Index_Type.Limit_Index_Type_Sensitivity:
                            ispass = true;
                            break;
                        case Limit_Index_Type.Limit_Index_Type_CutLoss:
                            ispass = true;
                            break;
                        case Limit_Index_Type.Limit_Index_Type_TakeProfit:
                            ispass = true;
                            break;
                        default:
                            break;
                    }
                    break;
                case (int)EnumComon.BasCounterparty:
                    ispass = true;
                    break;
                case (int)EnumComon.BasPortfolio:
                    ispass = true;
                    break;
            }




            return ispass;
        }





        public void ProcessRequest(HttpContext context)
        {

            var isConvert = context.Request["isConvert"] ?? "";
            context.Response.ContentType = "text/plain";
            context.Response.Cache.SetCacheability(HttpCacheability.NoCache);
            var alertType = context.Request["alertnodeType"] ?? "";
            var nodeId = context.Request["nodeId"] ?? "";
            var csEnumList = EnumUtil.GetEnumDataSource<Inst_Type>();
            switch (context.Request["_method"])
            {
                #region 交易限额 限额对象
                case "GetTradeLimitBusiStrucTree":
                    List<string> postJson = Newtonsoft.Json.JsonConvert.DeserializeObject<List<string>>(context.Request["postJson"]);
                    #region 业务结构
                    EasyUiTree node = new EasyUiTree();
                    node.text = EnumComon.BasLimitBusiStruc.GetEnumDefaultName().ToString();
                    node.id = ((int)EnumComon.BasLimitBusiStruc).ToString();
                    node.attributes = new
                    {

                        LimitObjectType = (int)EnumComon.BasLimitBusiStruc
                    };
                    node.children = new List<EasyUiTree>();

                    #endregion

                    IList<EasyUiTree> list = new List<EasyUiTree>();
                    list.Add(node);
                    EasyUiTree rskFactorTree = new EasyUiTree();
                    EasyUiTree basCurrencyTree = new EasyUiTree();
                    EasyUiTree basCounterpartyTree = new EasyUiTree();
                    EasyUiTree basProductGroupTree = new EasyUiTree();
                    EasyUiTree basPortfolioTree = new EasyUiTree();

                    IList<EasyUiTree> busiTreeList = TreeJSON.LoadEntityTree("ID", "BAS_LIMIT_BUSI_STRUC", "", "PARENT_ID", "NAME", "");

                    if (postJson.Contains(Limit_Object.Limit_Object_BusiStruc.ToString()) || postJson.Contains(((int)Limit_Object.Limit_Object_BusiStruc).ToString())
                        || postJson.Contains(((int)EnumComon.BasLimitBusiStruc).ToString())
                        )
                    {
                        #region 业务结构
                        if (string.IsNullOrEmpty(nodeId))
                        {
                            foreach (EasyUiTree e1 in busiTreeList)
                            {

                                e1.attributes = new
                                {
                                    RefTableName = "BasLimitBusiStruc",
                                    DataValueField = "Id",
                                    TextValueField = "Name",
                                    LimitObjectType = (int)Limit_Object.Limit_Object_BusiStruc
                                };
                                if (e1.children.Count > 0)
                                {
                                    SetEasyUiTreeTag1(e1.children, "BasLimitBusiStruc", "Id", "Name", (int)Limit_Object.Limit_Object_BusiStruc, nodeId);
                                }
                                node.children.Add(e1);
                            }
                        }
                        else
                        {
                            LoadSelNodeTypeEasyuiTree(Limit_Object.Limit_Object_BusiStruc, node, nodeId, "");
                        }

                        #endregion
                    }
                    if (postJson.Contains(Limit_Object.Limit_Object_RskFactor.ToString()) || postJson.Contains(((int)Limit_Object.Limit_Object_RskFactor).ToString())
                        || postJson.Contains(((int)EnumComon.RskFactor).ToString()))
                    {
                        if (string.IsNullOrEmpty(nodeId))
                        {
                            #region 风险因子

                            rskFactorTree.id = ((int)Limit_Object.Limit_Object_RskFactor).ToString();
                            rskFactorTree.text = Limit_Object.Limit_Object_RskFactor.GetEnumDefaultName().ToString();
                            rskFactorTree.attributes = new
                            {
                                LimitObjectType = (int)EnumComon.RskFactor
                            };

                            rskFactorTree.children = new List<EasyUiTree>();
                            var factorTreeList = Holworth.Utility.HraUtility.ListToT<RskFactor>(Dao.FindList(new QueryInfo("RskFactor"))).ToList();
                            if (factorTreeList.Count > 0)
                            {
                                rskFactorTree.state = "closed";
                            }
                            foreach (RskFactor r in factorTreeList)
                            {
                                EasyUiTree n = new EasyUiTree();
                                n.id = r.Id;
                                n.text = r.RiskFactorName;
                                n.attributes = new
                                {
                                    RefTableName = "RskFactor",
                                    DataValueField = "Id",
                                    TextValueField = "RiskFactorName",
                                    LimitObjectType = (int)Limit_Object.Limit_Object_RskFactor
                                };
                                rskFactorTree.children.Add(n);
                            }
                            node.children.Add(rskFactorTree);
                            #endregion
                        }
                        else
                        {
                            LoadSelNodeTypeEasyuiTree(Limit_Object.Limit_Object_RskFactor, node, nodeId, "");
                        }
                    }

                    if (postJson.Contains(Limit_Object.Limit_Object_BasCurrency.ToString()) || postJson.Contains(((int)Limit_Object.Limit_Object_BasCurrency).ToString())
                        || postJson.Contains(((int)EnumComon.BasCurrency).ToString()))
                    {
                        if (string.IsNullOrEmpty(nodeId))
                        {
                            #region 币种

                            basCurrencyTree.id = ((int)Limit_Object.Limit_Object_BasCurrency).ToString();
                            basCurrencyTree.text = Limit_Object.Limit_Object_BasCurrency.GetEnumDefaultName().ToString();
                            basCurrencyTree.attributes = new
                            {
                                LimitObjectType = (int)EnumComon.BasCurrency
                            };
                            basCurrencyTree.children = new List<EasyUiTree>();
                            var basCurrencyTreeList = Holworth.Utility.HraUtility.ListToT<BasCurrency>(Dao.FindList(new QueryInfo("BasCurrency"))).ToList();
                            if (basCurrencyTreeList.Count > 0)
                            {
                                basCurrencyTree.state = "closed";
                            }
                            foreach (BasCurrency r in basCurrencyTreeList)
                            {
                                EasyUiTree n = new EasyUiTree();
                                n.id = r.Id;
                                n.text = r.CurrencyName;
                                n.attributes = new
                                {
                                    RefTableName = "BasCurrency",
                                    DataValueField = "Id",
                                    TextValueField = "CurrencyName",
                                    LimitObjectType = (int)Limit_Object.Limit_Object_BasCurrency
                                };
                                basCurrencyTree.children.Add(n);
                            }
                            node.children.Add(basCurrencyTree);
                            #endregion
                        }
                        else
                        {
                            LoadSelNodeTypeEasyuiTree(Limit_Object.Limit_Object_BasCurrency, node, nodeId, "");
                        }

                    }

                    if (postJson.Contains(Limit_Object.Limit_Object_BasCounterparty.ToString()) || postJson.Contains(((int)Limit_Object.Limit_Object_BasCounterparty).ToString())
                        || postJson.Contains(((int)EnumComon.BasCounterparty).ToString()))
                    {
                        if (string.IsNullOrEmpty(nodeId))
                        {
                            #region 交易对手

                            basCounterpartyTree.id = ((int)Limit_Object.Limit_Object_BasCounterparty).ToString();
                            basCounterpartyTree.text = Limit_Object.Limit_Object_BasCounterparty.GetEnumDefaultName().ToString();
                            basCounterpartyTree.attributes = new
                            {
                                LimitObjectType = (int)EnumComon.BasCounterparty
                            };
                            basCounterpartyTree.children = new List<EasyUiTree>();
                            var basCounterpartyTreeList = Holworth.Utility.HraUtility.ListToT<BasCounterparty>(Dao.FindList(new QueryInfo("BasCounterparty"))).ToList();
                            if (basCounterpartyTreeList.Count > 0)
                            {
                                basCounterpartyTree.state = "closed";
                            }
                            foreach (BasCounterparty r in basCounterpartyTreeList)
                            {
                                EasyUiTree n = new EasyUiTree();
                                n.id = r.Id;
                                n.text = r.CounterpartyName;
                                n.attributes = new
                                {
                                    RefTableName = "BasCounterparty",
                                    DataValueField = "Id",
                                    TextValueField = "CounterpartyName",
                                    LimitObjectType = (int)Limit_Object.Limit_Object_BasCounterparty
                                };
                                basCounterpartyTree.children.Add(n);
                            }
                            node.children.Add(basCounterpartyTree);
                            #endregion
                        }
                        else
                        {
                            LoadSelNodeTypeEasyuiTree(Limit_Object.Limit_Object_BasCounterparty, node, nodeId, "");
                        }
                    }

                    if (postJson.Contains(Limit_Object.Limit_Object_BasProductGroup.ToString()) || postJson.Contains(((int)Limit_Object.Limit_Object_BasProductGroup).ToString())
                        || postJson.Contains(((int)EnumComon.BasProductGroup).ToString()))
                    {
                        if (string.IsNullOrEmpty(nodeId))
                        {
                            #region 金融产品群

                            basProductGroupTree.id = ((int)Limit_Object.Limit_Object_BasProductGroup).ToString();
                            basProductGroupTree.text = Limit_Object.Limit_Object_BasProductGroup.GetEnumDefaultName();
                            basProductGroupTree.attributes = new
                            {
                                LimitObjectType = (int)EnumComon.BasProductGroup
                            };
                            basProductGroupTree.children = new List<EasyUiTree>();
                            IList<EasyUiTree> basProductGroupTreeList = TreeJSON.LoadEntityTree("PRODUCT_GROUP_ID", "BAS_PRODUCT_GROUP", "", "PARENT_ID", "PRODUCT_GROUP_NAME", "");

                            if (basProductGroupTreeList.Count > 0)
                            {
                                basProductGroupTree.state = "closed";
                            }
                            foreach (EasyUiTree e1 in basProductGroupTreeList)
                            {

                                e1.attributes = new
                                {
                                    RefTableName = "BasProductGroup",
                                    DataValueField = "Id",
                                    TextValueField = "ProductGroupName",
                                    LimitObjectType = (int)Limit_Object.Limit_Object_BasProductGroup
                                };
                                if (e1.children.Count > 0)
                                {
                                    SetEasyUiTreeTag1(e1.children, "BasProductGroup", "Id", "ProductGroupName", (int)Limit_Object.Limit_Object_BasProductGroup);
                                }
                                basProductGroupTree.children.Add(e1);
                            }
                            node.children.Add(basProductGroupTree);
                            #endregion
                        }
                        else
                        {
                            LoadSelNodeTypeEasyuiTree(Limit_Object.Limit_Object_BasProductGroup, node, nodeId, "");
                        }
                    }

                    if (postJson.Contains(Limit_Object.Limit_Object_BasPortfolio.ToString()) || postJson.Contains(((int)Limit_Object.Limit_Object_BasPortfolio).ToString())
                        || postJson.Contains(((int)EnumComon.BasPortfolio).ToString()))
                    {
                        if (string.IsNullOrEmpty(nodeId))
                        {
                            #region 投资组合

                            basPortfolioTree.id = ((int)Limit_Object.Limit_Object_BasPortfolio).ToString();
                            basPortfolioTree.text = Limit_Object.Limit_Object_BasPortfolio.GetEnumDefaultName().ToString();
                            basPortfolioTree.attributes = new
                            {
                                LimitObjectType = (int)EnumComon.BasPortfolio
                            };
                            basPortfolioTree.children = new List<EasyUiTree>();
                            var basPortfolioTreeTreeList = Holworth.Utility.HraUtility.ListToT<BasPortfolio>(Dao.FindList(new QueryInfo("BasPortfolio"))).ToList();
                            if (basPortfolioTreeTreeList.Count > 0)
                            {
                                basPortfolioTree.state = "closed";
                            }
                            foreach (BasPortfolio r in basPortfolioTreeTreeList)
                            {
                                EasyUiTree n = new EasyUiTree();
                                n.id = r.Id;
                                n.text = r.PortfolioName;
                                n.attributes = new
                                {
                                    RefTableName = "BasPortfolio",
                                    DataValueField = "Id",
                                    TextValueField = "PortfolioName",
                                    LimitObjectType = (int)Limit_Object.Limit_Object_BasPortfolio
                                };
                                basPortfolioTree.children.Add(n);
                            }
                            node.children.Add(basPortfolioTree);
                            #endregion
                        }
                        else
                        {
                            LoadSelNodeTypeEasyuiTree(Limit_Object.Limit_Object_BasPortfolio, node, nodeId, "");
                        }
                    }

                    //list.Add(node);
                    //list.Add(basProductGroupTree);
                    //list.Add(rskFactorTree);
                    //list.Add(basCurrencyTree);
                    //list.Add(basCounterpartyTree);
                    var json = Newtonsoft.Json.JsonConvert.SerializeObject(list);
                    if (!string.IsNullOrEmpty(isConvert) && isConvert == "true")
                    {
                        IList<jsMindEntity> minds = new List<jsMindEntity>();
                        json = Convert2MindEntity(list, minds);
                    }
                    context.Response.Write(json);
                    context.Response.End();
                    break;
                #endregion
                #region 交易限额 限额内容
                case "GetTradeLimitProStrucTree":
                    string reqlimitObject = context.Request["limitObject"];
                    Limit_Object selLimitObject = 0;
                    if (!string.IsNullOrEmpty(reqlimitObject))
                    {
                        selLimitObject = (Limit_Object)int.Parse(reqlimitObject);
                    }
                    int LimitType = int.Parse(context.Request["LimitType"]);
                    QueryInfo basLimitTypeInfo = new QueryInfo();
                    basLimitTypeInfo.QueryObject = "BasLimitType";
                    var basLimitTypeList = Holworth.Utility.HraUtility.ListToT<BasLimitType>(Dao.FindList(basLimitTypeInfo)).ToList();
                    var typeList = basLimitTypeList.Where(x => ((int)x.LimitType) == LimitType).Select(x => x.LimitIndexType).Distinct(new LimitIndexTypeDistinct()).ToList();
                    IList<EasyUiTree> list1 = new List<EasyUiTree>();
                    EasyUiTree rootNode = new EasyUiTree();
                    rootNode.id = ((int)EnumComon.BasLimitProStruc).ToString();
                    rootNode.text = EnumComon.BasLimitProStruc.GetEnumDefaultName();
                    rootNode.attributes = new
                    {
                        LimitType = ((int)EnumComon.BasLimitProStruc).ToString()

                    };
                    //加载指标
                    if (typeList.Count > 0)
                    {

                        //rootNode.state = "closed";
                        rootNode.children = new List<EasyUiTree>();
                        typeList.ForEach(t =>
                        {
                            //判断限额指标类型是否属于选中的限额对象
                            if (checkLimitIndexTypeisLoad(t, reqlimitObject))
                            {
                                EasyUiTree e2 = new EasyUiTree();
                                //id存的就是指标类型
                                e2.id = ((int)t).ToString();
                                //e2.attributes = "LimitIndexType";
                                e2.text = csEnumList.First(x => x.IntValue.ToString().Equals(e2.id)).DisplayValue;
                                e2.attributes = new
                                {
                                    LimitIndexType = t,
                                    LimitType = ""
                                };
                                rootNode.children.Add(e2);
                            }
                        });
                    }
                    //加载具体的限额类型
                    //(这里其实是个自关联)
                    // (指标1 类型1) (指标1 类型2)
                    if (rootNode.children != null && rootNode.children.Count > 0)
                    {
                        foreach (EasyUiTree child in rootNode.children)
                        {
                            foreach (var t in basLimitTypeList)
                            {

                                //按理说我们只要过滤指标类属不属于选定的限额对象就好了 这里正常都要返回true,因为这里的内容就是幸存的指标的具体类型比如 指标1 类型1
                                if (checkLimitIndexTypeisLoad(t.LimitIndexType, reqlimitObject))
                                {
                                    if (((int)t.LimitIndexType).ToString().Equals(child.id) && t.Id != child.id)
                                    {
                                        child.state = "closed";
                                        if (child.children == null || child.children.Count <= 0)
                                            child.children = new List<EasyUiTree>();
                                        EasyUiTree e3 = new EasyUiTree();
                                        e3.id = t.Id;
                                        e3.text = t.LimitIndexName;
                                        e3.attributes = new
                                        {
                                            LimitType = (int)t.LimitType,
                                            LimitIndexType = t.LimitIndexType,
                                        };
                                        child.children.Add(e3);
                                    }
                                }
                            }

                        }
                    }
                    list1.Add(rootNode);
                    var json2 = Newtonsoft.Json.JsonConvert.SerializeObject(list1);
                    if (!string.IsNullOrEmpty(isConvert) && isConvert == "true")
                    {
                        IList<jsMindEntity> minds = new List<jsMindEntity>();
                        json2 = Convert2MindEntity(list1, minds);
                    }
                    context.Response.Write(json2);
                    context.Response.End();
                    break;
                    #endregion

            }
        }

        private string Convert2MindEntity(IList<EasyUiTree> list1, IList<jsMindEntity> minds, string parentid = "", bool isfirst = true)
        {

            jsMindEntity mind = null;
            foreach (var item in list1)
            {

                mind = new jsMindEntity();
                mind.id = item.id;
                mind.topic = item.text;
                mind.parentid = parentid;
                if (isfirst == true)
                {

                    mind.isroot = true;
                }
                else
                {

                    mind.isroot = false;
                }
                mind.type = ((int)((item.attributes as dynamic).LimitObjectType)).ToString();
                minds.Add(mind);
                if (item.children != null && item.children.Count > 0)
                {
                    Convert2MindEntity(item.children, minds, item.id, false);
                }
            }
            return Newtonsoft.Json.JsonConvert.SerializeObject(minds);
        }

        private void SetEasyUiTreeTag1(IList<EasyUiTree> children, string RefTableName, string DataValueField, string DataTextField, int LimitObjectType, string nodeId = "")
        {
            var limit_Object_type = (Limit_Object)LimitObjectType;
            if (children.Count > 0)
            {
                if (!string.IsNullOrEmpty(nodeId))
                {

                }
                foreach (EasyUiTree e in children)
                {
                    e.attributes = new
                    {
                        RefTableName = RefTableName,
                        DataValueField = DataValueField,
                        TextValueField = DataTextField,
                        LimitObjectType = LimitObjectType
                    };
                    if (e.children != null && e.children.Count > 0)
                    {

                        SetEasyUiTreeTag1(e.children, RefTableName, DataValueField, DataTextField, LimitObjectType);
                    }
                }

            }
        }

        public bool IsReusable
        {
            get
            {
                return false;
            }
        }
    }
}
原文地址:https://www.cnblogs.com/kexb/p/5604516.html