import java.util.HashMap;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;
import net.sf.json.JSONObject;
public class Test2 {
/**
* @param args
*/
public static void main(String[] args) {
StringBuffer sbf=new StringBuffer();
sbf.append("{");
sbf.append("\"var\":");
sbf.append("{");
sbf.append("\"deptList\":");
sbf.append("[");
sbf.append("{");
sbf.append("\"id\":\"3\"").append(",");
sbf.append("\"name\":\"邮件系统开发部2\"").append(",");
sbf.append("\"deptList\":");
sbf.append("[");
sbf.append("{");
sbf.append("\"id\":\"5\"").append(",");
sbf.append("\"name\":\"企业邮箱\"").append(",");
sbf.append("\"deptList\":");
sbf.append("[");
sbf.append("{");
sbf.append("\"id\":\"6\"").append(",");
sbf.append("\"name\":\"企业邮箱1\"");
sbf.append("},");
sbf.append("{");
sbf.append("\"id\":\"7\"").append(",");
sbf.append("\"name\":\"企业邮箱2\"").append(",");
sbf.append("\"deptList\":");
sbf.append("[");
sbf.append("{");
sbf.append("\"id\":\"8\"").append(",");
sbf.append("\"name\":\"企业邮箱3\"").append(",");
sbf.append("\"deptList\":");
sbf.append("[");
sbf.append("{");
sbf.append("\"id\":\"9\"").append(",");
sbf.append("\"name\":\"企业邮箱4\"");
sbf.append("}");
sbf.append("]");
sbf.append("}");
sbf.append("]");
sbf.append("}");
sbf.append("]");
sbf.append("}");
sbf.append("]");
sbf.append("}").append(",");
sbf.append("{");
sbf.append("\"id\":\"4\"").append(",");
sbf.append("\"name\":\"平台开发部(pingtai)2\"");
sbf.append("}").append(",");
sbf.append("{");
sbf.append("\"id\":\"5\"").append(",");
sbf.append("\"name\":\"测试部\"").append(",");
sbf.append("\"deptList\":");
sbf.append("[");
sbf.append("{");
sbf.append("\"id\":\"6\"").append(",");
sbf.append("\"name\":\"测试部1\"");
sbf.append("}");
sbf.append("]");
sbf.append("}");
sbf.append("]");
sbf.append("}");
sbf.append("}");
System.out.println(sbf.toString());
Map<String, Class> classMap = new HashMap<String, Class>();
classMap.put("deptList", Dept.class);
classMap.put("dept", Dept.class);
Res resJson = (Res) JSONObject.toBean(getJsonObj(sbf.toString()), Res.class,classMap);
System.out.println(resJson.getVar().getDeptList());
List<Dept> lists=resJson.getVar().getDeptList();
long a = System.currentTimeMillis();
LinkedList list = new LinkedList();
for (int i = 0; i < lists.size(); i++) {
if(lists.get(i)!=null)
{
list.add(lists.get(i));
}
}
Dept tmp;
while (!list.isEmpty()) {
tmp = (Dept) list.removeFirst();
System.out.println("id:"+tmp.getId()+" name:"+tmp.getName());
if(tmp.getDeptList()!=null)
{
if (tmp.getDeptList().size()>0) {
List<Dept> file = tmp.getDeptList();
if (file == null)
continue;
for (int i = 0; i < file.size(); i++) {
if (file.size()>0)
{
list.add(file.get(i));
}
else
{
System.out.println(file.get(i).getName());
}
}
} else {
System.out.println(tmp.getName());
}
}
}
System.out.println(System.currentTimeMillis() - a);
}
public static JSONObject getJsonObj(String jsonStr)
{
return JSONObject.fromObject(jsonStr);
}
}
package com.ad.web.webmail.departUser.rmapi;
import java.util.ArrayList;
import java.util.LinkedList;
import java.util.List;
import org.apache.log4j.Logger;
import com.ad.web.webmail.departUser.pojo.request.Depart;
import com.ad.web.webmail.departUser.pojo.request.DepartUserfilterChar;
import com.ad.web.webmail.departUser.pojo.request.TreeBean;
import com.ad.web.webmail.departUser.pojo.request.UserInfo;
import com.ad.web.webmail.departUser.pojo.response.SellMalResp;
import com.ad.web.webmail.departUser.pojo.response.User;
/**
* 装请求数据封装成返回格式数据
*
* @author zxkj
*
*/
public class DepartUserProccess
{
private static final Logger log = Logger.getLogger(DepartUserProccess.class);
public static SellMalResp doAllDeptProcess(TreeBean treebean)
{
SellMalResp sellmalResp=new SellMalResp();
try
{
// 3.从treebean里拿到所有的人员信息
List<User> users=getAllUsers(treebean,2);
// 1.从treebean里拿到所有部门信息
List<User> dept = getDepts(treebean,1);
List<User> dept_temp =new ArrayList<User>();
if(dept!=null)
{
for(int i=0;i<dept.size();i++)
{
dept_temp.add(dept.get(i));
}
}
if(users!=null)
{
for(int k=0;k<users.size();k++)
{
dept_temp.add(users.get(k));
}
}
sellmalResp.setCode("S_OK");
sellmalResp.setVar(dept_temp);
}
catch(Exception e)
{
log.error("doAllDeptProcess is error:",e);
sellmalResp.setCode("ERROR");
return sellmalResp;
}
return sellmalResp;
}
/**
* 得到所有人员信息
* @param treebean
* @return
*/
@SuppressWarnings("unchecked")
public static List<User> getAllUsers(
TreeBean treebean,int type)
{
// 保存所有返回给客户端部门信息
List<User> usersList = new ArrayList<User>();
try
{
// 得到treebean中所有一级部门
List<Depart> departList =null;
if(treebean.getVar()!=null)
{
departList = treebean.getVar().getDeptList();
}
// 得到treebean中所有无部门人员信息
List<UserInfo> users = null;
if(treebean.getVar()!=null)
{
users = treebean.getVar().getUserList();
}
// 将所treebean中所有无部门的信息转为
if(users!=null)
{
for (int i = 0; i < users.size(); i++)
{
User u1 = new User();
u1.setEmail(DepartUserfilterChar.UserfilterChar(users.get(i).getEmail()));
u1.setId( users.get(i).getId());
u1.setName(DepartUserfilterChar.UserfilterChar(users.get(i).getFirstName()));
u1.setParentId(Long.valueOf("0"));
u1.setType(type);
usersList.add(u1);
}
}
// 得到所有部门下所属部门信息,并保存为resmail类型
LinkedList quelist = new LinkedList();
List<Depart> deptList = new ArrayList<Depart>();
if(departList!=null)
{
for (int i = 0; i < departList.size(); i++)
{
deptList.add(departList.get(i));
quelist.add(departList.get(i));
}
}
Depart tmp;
while (!quelist.isEmpty()) {
tmp = (Depart) quelist.removeFirst();
if(tmp.getDeptList()!=null)
{
List<Depart> childDepart = tmp.getDeptList();
for (int i = 0; i < childDepart.size(); i++)
{
deptList.add(childDepart.get(i));
quelist.add(childDepart.get(i));
}
}
}
for(int k=0;k<deptList.size();k++)
{
Depart dpart_inf =deptList.get(k);
List<UserInfo> d_user= dpart_inf.getUserList();
if(d_user!=null)
{
for(int n=0;n<d_user.size();n++)
{
User u1 = new User();
u1.setEmail(DepartUserfilterChar.UserfilterChar(d_user.get(n).getEmail()));
u1.setId( d_user.get(n).getId());
u1.setName(DepartUserfilterChar.UserfilterChar(d_user.get(n).getFirstName()));
u1.setParentId(dpart_inf.getId());
u1.setType(type);
usersList.add(u1);
}
}
}
}
catch(Exception e)
{
log.error("getAllUsers is error",e);
return usersList;
}
return usersList;
}
/**
* 得到所有部门信息转换为返回给前端的数据格式
*/
@SuppressWarnings("unchecked")
public static List<User> getDepts(TreeBean treebean,int type)
{
LinkedList quelist = new LinkedList();
List<User> deptList = new ArrayList<User>();
try
{
List<Depart> departList =null;
if( treebean.getVar()!=null)
{
departList = treebean.getVar().getDeptList();
}
if(departList!=null)
{
for (int i = 0; i < departList.size(); i++)
{
Depart depart = departList.get(i);
User dept = new User();
dept.setEmail("");
dept.setId(depart.getId());
dept.setName(DepartUserfilterChar.UserfilterChar(depart.getName()));
dept.setType(type);
dept.setParentId(Long.valueOf("0"));
deptList.add(dept);
quelist.add(depart);
}
}
Depart tmp;
while (!quelist.isEmpty()) {
tmp = (Depart) quelist.removeFirst();
if(tmp.getDeptList()!=null)
{
List<Depart> childDept = tmp.getDeptList();
for (int i = 0; i < childDept.size(); i++) {
User dept = new User();
dept.setEmail("");
dept.setId(childDept.get(i).getId());
dept.setName(DepartUserfilterChar.UserfilterChar(childDept.get(i).getName()));
dept.setType(type);
dept.setParentId(tmp.getId());
deptList.add(dept);
quelist.add(childDept.get(i));
}
}
}
}
catch(Exception e)
{
log.error("getDepts is error",e);
return deptList;
}
return deptList;
}
}