IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 游戏开发 -> 树分组过滤实现 -> 正文阅读

[游戏开发]树分组过滤实现

方式一: js 中写过滤事件

       //页面渲染前事件
		beforePageXuanRan:function(e){
        _self.setInitComponentCallBack(function(type,option,el){ //组件初始化回调事件
            if(option.id == 'tree'){ //tree 为树组件id
                var controlUnitId =waf.getContext().controlUnit.id;
                if(controlUnitId!="00000000-0000-0000-0000-000000000000CCE7AED4"){
                    var a = waf.parseSql.getFilter("CU.id", "=",controlUnitId);
                    option.filterItems =a
                }
            }
           });
        }

方式二: handler 构建json树数数据返回

package com.kingdee.eas.assetmamage.commonmz;

import java.io.File;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.PrintWriter;
import java.sql.SQLException;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;

import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletRequest;

import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.kingdee.bos.BOSException;
import com.kingdee.bos.Context;
import com.kingdee.bos.eventbus.event.action.KDActionEvent;
import com.kingdee.bos.webframework.exception.WafException;
import com.kingdee.bos.webframework.json.JSONUtils;
import com.kingdee.bos.webframework.context.WafContext;
import com.kingdee.bos.webframework.dynamic.handler.AbstractWebEventHandler;
import com.kingdee.bos.eventbus.event.action.IActionEventHandler;
import com.kingdee.eas.basedata.org.CompanyOrgUnitInfo;
import com.kingdee.eas.basedata.org.CtrlUnitInfo;
import com.kingdee.eas.basedata.org.OrgType;
import com.kingdee.eas.common.EASBizException;
import com.kingdee.eas.util.app.DbUtil;
import com.kingdee.jdbc.rowset.IRowSet;
import com.kingdee.util.StringUtils;

public class GetChildNodesHandler extends AbstractWebEventHandler implements IActionEventHandler {
	
	public void onAction(KDActionEvent event) throws WafException,BOSException {
	    HttpServletRequest request = event.getReqeustContext().getHttpServletRequest();
	    String parentId = request.getParameter("parentId");//  F7 左树右表发送的参数
	    String level = request.getParameter("level"); // 房源树形基础资料发送的参数
	    String uipk = request.getParameter("uipk");   // 房源树形基础资料发送的参数
	    String parentId_base = request.getParameter("id");   // 房源树形基础资料发送的参数--父节点id
	    if(uipk.equals("com.kingdee.eas.assetmamage.operationmanage.basedata.CRoomList")){
	    	 JSONArray roomTree = roomTree(  parentId_base  );
	    	 writeJson(JSONUtils.convertObjectToJson(roomTree));
	     }else{
	    	  JSONUtils.SUCCESS(roomTree_F7(  parentId  ));
	    	 // writeJson(JSONUtils.convertObjectToJson(roomTree_F7(  parentId  )));
	     }
	}
	
	/**
	 *  
	 * @param parentid
	 * @return
	 * @throws BOSException
	 * @throws EASBizException
	 */
	 protected Map<String, Map<String, String>> getExpenseTypefl(String parentid) throws BOSException, EASBizException
	  {
	    Map expenseTypes = new HashMap();
	    Context ctx = WafContext.getInstance().getContext();
	    CtrlUnitInfo companyOrgUnitInfo = (CtrlUnitInfo) ctx.get(OrgType.ControlUnit);
	    String sql = "";
	     if(companyOrgUnitInfo.getId().equals("00000000-0000-0000-0000-000000000000CCE7AED4")){
		  sql = " select  fcontrolunitid  companyId,  fid , fnumber,fname_l2  fname  , fisleaf, fparentid  from T_BAS_RoomTREE   where fparentid='"+parentid+"'  ";
	     }else{
	 	   sql = " select  fcontrolunitid  companyId,  fid , fnumber,fname_l2  fname  , fisleaf, fparentid  from T_BAS_RoomTREE   where fparentid='"+parentid+"'  and  fcontrolunitid='"+companyOrgUnitInfo.getId()+"'   ";
	     }
	    IRowSet rowSet = DbUtil.executeQuery(ctx, sql);
	    try
	    {
	      while (rowSet.next()) {
	        Map expenseType = new HashMap();
	        String expenseTypeId = (String)rowSet.getObject("fid");
	        expenseType.put("id", expenseTypeId);
	        expenseType.put("name", (String)rowSet.getObject("fname"));
	        expenseType.put("number", (String)rowSet.getObject("fnumber"));
	        expenseType.put("fparentid", rowSet.getObject("fparentid"));
	        expenseType.put("fisleaf", rowSet.getObject("fisleaf"));
	        expenseType.put("companyId", rowSet.getObject("companyId"));
	        expenseTypes.put(expenseTypeId, expenseType);
	      }
	    } catch (SQLException localSQLException) {
	    }
	    return expenseTypes;
	  }
	 
	 
 

		  protected Map<String, Map<String, String>> getExpenseType() throws BOSException, EASBizException
		  {
		   
			  
		    Map expenseTypes = new HashMap();
		    Context ctx = WafContext.getInstance().getContext();
		    CtrlUnitInfo companyOrgUnitInfo = (CtrlUnitInfo) ctx.get(OrgType.ControlUnit);
		    String sql = "";
		     if(companyOrgUnitInfo.getId().equals("00000000-0000-0000-0000-000000000000CCE7AED4")){
			  sql = " select  fcontrolunitid  companyId,  fid , fnumber  ,fname_l2  fname  , fisleaf, fparentid  from T_BAS_RoomTREE   where fparentid is null    ";
		     }else{
		       sql = " select  fcontrolunitid  companyId,  fid , fnumber  ,fname_l2  fname  , fisleaf, fparentid  from T_BAS_RoomTREE   where fparentid is null and fcontrolunitid='"+companyOrgUnitInfo.getId()+"'    ";
		     }
		    IRowSet rowSet = DbUtil.executeQuery(ctx, sql);
		    try
		    {
		      while (rowSet.next()) {
		        Map expenseType = new HashMap();
		        String expenseTypeId = (String)rowSet.getObject("fid");
		        expenseType.put("id", expenseTypeId);
		        expenseType.put("name", (String)rowSet.getObject("fname"));
		        expenseType.put("number", (String)rowSet.getObject("fnumber"));
		        expenseType.put("fparentid", rowSet.getObject("fparentid"));
		        expenseType.put("fisleaf", rowSet.getObject("fisleaf"));
		        expenseType.put("companyId", rowSet.getObject("companyId"));
		        expenseTypes.put(expenseTypeId, expenseType);
		      }
		    } catch (SQLException localSQLException) {
		    }
		    return expenseTypes;
		  }

		  
		  
		  /**
		   * F7 左树右表用
		   * @param jsonArr
		   * @param id
		   * @param name
		   * @param parentId
		   * @param isLeaf
		   * @param companyId
		   * @param number
		   */
		  private void addNode(JSONArray jsonArr, String id, String name, String parentId, Boolean isLeaf,String companyId,String number)
		  {
		    JSONObject node = new JSONObject();
		    Map dataMap = new HashMap();
		    dataMap.put("id", id);
		    dataMap.put("number", number);
		    dataMap.put("companyId", companyId);
		    node.put("id", id);
		    node.put("name", name);
		    node.put("pId", parentId);
		    node.put("isLeaf", Boolean.valueOf(isLeaf.booleanValue()));
		    node.put("data", dataMap);
		    jsonArr.add(node);
		  }
	
	
	
		  
		  
		  /**
		   * 房源基础资料用 增加节点方法
		   * @param jsonArr
		   * @param id
		   * @param name
		   * @param parentId
		   * @param isLeaf
		   * @param companyId
		   * @param number
		   */
		  private void addNode_room(JSONArray jsonArr_node,   JSONObject  parentNode , String id, String name, String parentId, Boolean isLeaf,String companyId,String number)
		  {
		    JSONObject node = new JSONObject();
		    Map dataMap = new HashMap();
		    dataMap.put("id", id);
		    dataMap.put("number", number);
		    dataMap.put("companyId", companyId);
		    node.put("id", id);
		    node.put("name", name);
		    node.put("number", number);
		    node.put("pId", parentId);
		    node.put("isParent", !Boolean.valueOf(isLeaf.booleanValue()));
		    node.put("open",  !Boolean.valueOf(isLeaf.booleanValue()));
		    node.put("propMap", dataMap);
		    jsonArr_node.add(node);
		    
		  }
		  
		  
		  
		  
		  
	/**
	 * F7 房源基础资料左树右表	  
	 * @param parentId_base
	 * @return
	 */
	  public   JSONArray  roomTree_F7(  String  parentId  ){

    	  JSONArray jsonArr = new JSONArray(36);
  	     try {
  	      if (StringUtils.isEmpty(parentId)) {
  	       // addNode(jsonArr, "root", "费用类别", null, Boolean.valueOf(false));
  	    	 JSONObject node = new JSONObject();
  	    	 node.put("name", "房源分组")  ;
  	    	 node.put("id", "root")  ;
  	    	 node.put("open", "true")  ;
  	    	 jsonArr.add(node);
  	        Map provinces = getExpenseType();
  	        Set keys = provinces.keySet();
  	        Iterator iter = keys.iterator();
  	        while (iter.hasNext()) {
  	          String id = (String)iter.next();
  	          Map map = (Map)provinces.get(id);
  	          if (map.get("id") != null){
  	        	  boolean isLeaf=false;
  	        	  if(map.get("fisleaf").toString().equals("1")){
  	        		  isLeaf=true;  //是  1 的话  为子节点
  	        	  }
  	          String  parentid="root"; 
  	          if(null!=map.get("fparentid")){
  	        	  parentid=map.get("fparentid").toString();
  	          }	
  	          String number=map.get("number").toString();
  	          String companyId=map.get("companyId").toString();  
  	          addNode(jsonArr, (String)map.get("id"), 
  			  (String)map.get("name"), parentid, isLeaf,companyId ,number);
  	          }
  	          
  	        }
  	      }else{
  	    	 //如果点击了父类
  	    	   Map provinces = getExpenseTypefl(parentId);
  		        Set keys = provinces.keySet();
  		        Iterator iter = keys.iterator();
  		        while (iter.hasNext()) {
  		          String id = (String)iter.next();
  		          Map map = (Map)provinces.get(id);
  		          if (map.get("id") != null){
  		        	  boolean isLeaf=false;
  		        	  if(map.get("fisleaf").toString().equals("1")){
  		        		  isLeaf=true;  //是  1 的话  为子节点
  		        	  }
  		        	String  parentid="root"; 
  		          if(null!=map.get("fparentid")){
  		        	  parentid=map.get("fparentid").toString();
  		          }	
  		          String number=map.get("number").toString();
  		          String companyId=map.get("companyId").toString();  
  		        	  addNode(jsonArr, (String)map.get("id"), 
  				      (String)map.get("name"), parentid, isLeaf,companyId ,number);
  		          }
  		          
  		        }
  	      }
  	    } catch (Exception e) {
  	      e.printStackTrace();
  	    }
  	      return   jsonArr ;
			  
	  }  
		  
		  
			 
		  
		  
		  
	
	 /**
	  *  房源基础资料树列表
	  */
	public   JSONArray  roomTree(  String  parentId_base  ){
  	  JSONArray jsonArr = new JSONArray(36);
	     try {
	      if (StringUtils.isEmpty(parentId_base)) {
	       // addNode(jsonArr, "root", "费用类别", null, Boolean.valueOf(false));
	    	 JSONObject parentNode = new JSONObject();
	    	 parentNode.put("name", "房源分组")  ;
	    	 parentNode.put("id", "rootId")  ;
	    	 parentNode.put("pId", null)  ;
	    	 parentNode.put("number", "rootNumber")  ;
	    	 parentNode.put("open", true)  ;
	    	 parentNode.put("isParent", false)  ;
	    	 parentNode.put("parentId", null);
	    	
	        JSONArray jsonArr_node = new JSONArray(36);
	        Map provinces = getExpenseType();    //查找 所有父节点
	        Set keys = provinces.keySet();
	        Iterator iter = keys.iterator();
	        while (iter.hasNext()) {
	          String id = (String)iter.next();
	          Map map = (Map)provinces.get(id);
	          if (map.get("id") != null){
	        	  boolean isLeaf=false;
	        	  if(map.get("fisleaf").toString().equals("1")){
	        		  isLeaf=true;  //是  1 的话  为子节点
	        	  }
	          String  parentid=null; 
	          if(null!=map.get("fparentid")){
	        	  parentid=map.get("fparentid").toString();
	          }	
	          String number=map.get("number").toString();
	          String companyId=map.get("companyId").toString();  
	          addNode_room( jsonArr_node ,  parentNode, (String)map.get("id"), (String)map.get("name"), parentid, isLeaf,companyId ,number);
	          }
	        }
	        parentNode.put("children", jsonArr_node);
	        jsonArr.add(parentNode);
	      }else{
	    	  
	    	   //如果点击了父类
	    	   JSONArray jsonArr_node = new JSONArray(36);
	    	    Map provinces = getExpenseTypefl(parentId_base);
		        Set keys = provinces.keySet();
		        Iterator iter = keys.iterator();
		        while (iter.hasNext()) {
		          String id = (String)iter.next();
		          Map map = (Map)provinces.get(id);
		          if (map.get("id") != null){
		        	  boolean isLeaf=false;
		        	  if(map.get("fisleaf").toString().equals("1")){
		        		  isLeaf=true;  //是  1 的话  为子节点
		        	  }
		        	String  parentid="root"; 
		          if(null!=map.get("fparentid")){
		        	  parentid=map.get("fparentid").toString();
		          }	
		          String number=map.get("number").toString();
		          String companyId=map.get("companyId").toString();  
		          addNode_room(jsonArr_node ,  null,  (String)map.get("id"), (String)map.get("name"), parentid, isLeaf,companyId ,number);
		          }
		          
		        }
		        return jsonArr_node;
	      }
	    } catch (Exception e) {
	      e.printStackTrace();
	    }
	    return jsonArr;
	 
	}
	   
	
 	private static void writeJson(String json) throws WafException {
		ServletResponse response = WafContext.getInstance().getResponse();
		response.setContentType("application/json;charset=UTF-8");
		PrintWriter pw;
		try {
			pw = response.getWriter();
		} catch (IOException e) {
			throw new WafException(
					"An exception happend on \"response.getWriter()\" ");
		}

		if (json == null)
			return;
		pw.write(json);
		pw.flush();
	}
	 
	
}

  游戏开发 最新文章
6、英飞凌-AURIX-TC3XX: PWM实验之使用 GT
泛型自动装箱
CubeMax添加Rtthread操作系统 组件STM32F10
python多线程编程:如何优雅地关闭线程
数据类型隐式转换导致的阻塞
WebAPi实现多文件上传,并附带参数
from origin ‘null‘ has been blocked by
UE4 蓝图调用C++函数(附带项目工程)
Unity学习笔记(一)结构体的简单理解与应用
【Memory As a Programming Concept in C a
上一篇文章           查看所有文章
加:2022-04-29 12:26:54  更:2022-04-29 12:29:50 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2025年1日历 -2025/1/17 1:15:56-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码