⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 xmlservice.java

📁 电信的网厅的整站代码
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
package com.doone.fj1w.fjmgr.sysmgr.uurm;

import java.io.IOException;
import java.io.InputStream;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Map;
import java.util.Properties;

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

import com.altova.types.SchemaBoolean;
import com.altova.xml.Node;
import com.doone.data.DacClient;
import com.doone.data.DataRow;
import com.doone.data.DataTable;
import com.doone.fj1w.fjmgr.sysmgr.Tf_OrganiseCityRela;
import com.doone.fj1w.fjmgr.tree.menuType;
import com.doone.fj1w.fjmgr.tree.rootType;
import com.doone.fj1w.fjmgr.tree.treeDoc;
import com.doone.util.ExtString;
import com.doone.util.FileLogger;
import com.doone.uurm.Purview;
import com.doone.uurm.StateEnum;
import com.doone.uurm.Sys_Authority;
import com.doone.uurm.Sys_OPAndAuth;
import com.doone.uurm.Sys_Organise;
import com.doone.uurm.UserFactory;
import com.doone.uurm.WebAuth;

/**
 * 统一用户资源管理获取XML数据的相关服务。
 * 
 * @author janage
 * @createdate 2005年8月24日
 */
public class XmlService {
	public static Node getXmlFromTable(Node menu, DataTable dt, String[] fields, String sValue,
			boolean addparam) {
		Node ret = null;
		try {
			ArrayList list = new ArrayList();
			int index = 0;
			int count = dt.getRows().getCount();
			for (int i = 0; i < count; i++) {
				DataRow dr = dt.getRow(index);
				if (dr.getString(fields[1]).equals(sValue)) {
					list.add(dr);
					dt.getRows().remove(dr);
				} else {
					index++;
				}
			}

			for (int i = 0; i < list.size(); i++) {
				DataRow dr = (DataRow) list.get(i);
				if (fields.length == 8 && fields[6] != null && fields[7] != null) {
					if (fields[7].equalsIgnoreCase(dr.getString(fields[6])))
						continue;
				}

				menuType submenu = new menuType();
				try {
					submenu.addid(dr.getString(fields[0]));

					submenu.addtext(dr.getString(fields[3]));
					if (fields[4] != null && ! ExtString.isEmpty(dr.getString(fields[4]))) {
						// menuclick的参数是option,id,code,name。
						String href = "javascript:menuclick('";
						href += dr.getString(fields[4]);
						href += "', " + dr.getString(fields[0]);
						href += ", '" + dr.getString(fields[2]);
						href += "', '" + dr.getString(fields[3]);
						href += "', " + Boolean.toString(addparam) + ")";
						submenu.addhref(href);
					} else if (fields.length == 6) {
						String href = "javascript:menuclick('";
						href += fields[5];
						href += "', " + dr.getString(fields[0]);
						href += ", '" + dr.getString(fields[2]);
						href += "', '" + dr.getString(fields[3]);
						href += "', " + Boolean.toString(addparam) + ")";
						submenu.addhref(href);
					} else {
						submenu.addhref("javascript:menuclick()");
					}
				} catch (Exception e) {
					FileLogger.getLogger().warn("newMenu:" + e.getMessage(), e);
				}

				Node tmp = getXmlFromTable(submenu, dt, fields, dr.getString(fields[0]), addparam);
				if (tmp != null) {
					if (menu.getClass() == rootType.class)
						((rootType) menu).addmenu((menuType) tmp);
					else
						((menuType) menu).addmenu((menuType) tmp);
				}
			}

			ret = menu;
		} catch (Exception ex) {
			FileLogger.getLogger().warn(ex.getMessage(), ex);
			ret = null;
		}

		return ret;
	}

	/**
	 * 获取员工权限信息
	 * 
	 * @param StaffCode
	 *            员工工号信息;
	 * @param OrganiseId
	 *            组织编号信息,如果该参数为-1则无效。
	 * @return 指定员工的所有有权限的权限信息树(XML字符串);
	 */
	public static String getStaffPurview(ServletRequest request, ServletResponse response, Map param) {
		String ret = "";
		try {
			WebAuth auth = WebAuth.getInstance((HttpServletRequest) request);
			String StaffCode = auth.getUserCode();
			long postID = auth.getCurrPostID();

			Purview purv = new Purview();
			DataTable dt = null;
			if (postID == -1) {
				dt = purv.GetInfoByUserNo(StaffCode);
			} else {
				dt = purv.GetInfoByUserOrg(StaffCode, postID);
			}

			String[] fields = new String[8];
			fields[0] = "PURVIEWID";
			fields[1] = "UPPURVIEWID";
			fields[2] = "PURVIEWCODE";
			fields[3] = "PURVIEWNAME";
			fields[4] = "PURVIEWOPER";
			fields[5] = null;

			// 添加过滤内容。
			fields[6] = "PURVIEWMODE";
			fields[7] = "O";

			treeDoc doc = new treeDoc();
			rootType root = new rootType();
			root.addopen_action(new SchemaBoolean(true));
			root.adddbl_click(new SchemaBoolean(true));
			root.addtext("ROOT");

			doc.setEncoding("GBK");
			doc.setRootElementName("", "root");
			doc.setSchemaLocation("tree.xsd");

			String str = (String) param.get("PID");
			FileLogger.getLogger().info("upid-->" + str);
			try {
				if (Integer.parseInt(str) <= 0) {
					str = "0";
				}
			} catch (Exception ex) {
				FileLogger.getLogger().debug(str, ex);
				str = "0";
			}

			rootType menu = (rootType) getXmlFromTable(root, dt, fields, str, false);

			ret = doc.saveToString(menu);
			// doc.save(ret, menu);
		} catch (Exception ex) {
			FileLogger.getLogger().warn(ex.getMessage(), ex);
			ret = "";
		}

		return ret;
	}

	public static String getOrganiseTree(ServletRequest request, ServletResponse response, Map param) {
		String ret = "";
		try {
			WebAuth auth = WebAuth.getInstance((HttpServletRequest) request);
			long postID = auth.getCurrPostID();

			DataTable dt = null;
			String firstStr = "";
			if (postID == -1) {
				dt = UserFactory.getOrgList(0, null);

				firstStr = "0";

				DataRow dr = dt.newRow();
				dr.setValue("ORGANISEID", new Long(0));
				dr.setValue("UPORGANISEID", new Long(0));
				dr.setValue("INDEXCODE", "");
				dr.setValue("NAME", "组织根节点");
				dr.setValue("STATE", StateEnum.ENABLED);

				dt.getRows().insertAt(dr, 0);
			} else {
				DacClient dbClient = new DacClient();
				Sys_Organise org = Sys_Organise.getInstance(dbClient, postID);
				dt = UserFactory.getOrgList(org.getUpOrganiseId(), null);

				Sys_Organise upOrg = Sys_Organise.getInstance(dbClient, org.getUpOrganiseId());
				firstStr = String.valueOf(upOrg.getUpOrganiseId());
			}

			String[] fields = new String[5];
			fields[0] = "ORGANISEID";
			fields[1] = "UPORGANISEID";
			fields[2] = "INDEXCODE";
			fields[3] = "NAME";
			fields[4] = "/view/sysmgr/OrgMgr.jsp";

			treeDoc doc = new treeDoc();
			rootType root = new rootType();
			root.addopen_action(new SchemaBoolean(true));
			root.adddbl_click(new SchemaBoolean(true));
			root.addtext("ROOT");

			doc.setEncoding("GBK");
			doc.setRootElementName("", "root");
			doc.setSchemaLocation("tree.xsd");

			String str = null;
			if (param != null)
				str = (String) param.get("PID");
			try {
				if (Integer.parseInt(str) < 0) {
					str = firstStr;
				}
			} catch (Exception ex) {
				FileLogger.getLogger().debug(str, ex);
				str = firstStr;
			}

			FileLogger.getLogger().info("upid-->" + str);
			rootType menu = (rootType) getXmlFromTableByOrg(root, dt, str, fields, true);

			ret = doc.saveToString(menu);
		} catch (Exception ex) {
			FileLogger.getLogger().warn(ex.getMessage(), ex);
			ret = "";
		}

		return ret;
	}

	/**
	 * 人员管理中使用的组织树列表,它与上面组织树列表区别是: 人员管理的组织树列表不显示已经被禁用的组织,及链接地址不一样。
	 * 
	 * @param request
	 * @param response
	 * @param param
	 * @return
	 */
	public static String getOrganiseTreeByStaff(ServletRequest request, ServletResponse response,
			Map param) {
		String ret = "";
		try {
			WebAuth auth = WebAuth.getInstance((HttpServletRequest) request);
			long postID = auth.getCurrPostID();

			DataTable dt = null;
			String firstStr = "";
			if (postID == -1) {
				dt = UserFactory.getOrgList(0, StateEnum.ENABLED);

				firstStr = "0";
			} else {
				DacClient dbClient = new DacClient();
				Sys_Organise org = Sys_Organise.getInstance(dbClient, postID);
				dt = UserFactory.getOrgList(org.getUpOrganiseId(), StateEnum.ENABLED);

				Sys_Organise upOrg = Sys_Organise.getInstance(dbClient, org.getUpOrganiseId());
				firstStr = String.valueOf(upOrg.getUpOrganiseId());
			}

			if (firstStr.equals("0")) {
				DataRow dr = dt.newRow();
				dr.setValue("ORGANISEID", new Long(0));
				dr.setValue("UPORGANISEID", new Long(0));
				dr.setValue("INDEXCODE", "");
				dr.setValue("NAME", "组织根节点");
				dr.setValue("STATE", StateEnum.ENABLED);

				dt.getRows().insertAt(dr, 0);
			}

			String[] fields = new String[5];
			fields[0] = "ORGANISEID";
			fields[1] = "UPORGANISEID";
			fields[2] = "INDEXCODE";
			fields[3] = "NAME";
			fields[4] = "/view/sysmgr/StaffList.jsp";

			treeDoc doc = new treeDoc();
			rootType root = new rootType();
			root.addopen_action(new SchemaBoolean(true));
			root.adddbl_click(new SchemaBoolean(true));
			root.addtext("ROOT");

			doc.setEncoding("GBK");
			doc.setRootElementName("", "root");
			doc.setSchemaLocation("tree.xsd");

			String str = (String) param.get("PID");
			FileLogger.getLogger().info("upid-->" + str);
			try {
				if (Integer.parseInt(str) < 0) {
					str = firstStr;
				}
			} catch (Exception ex) {
				FileLogger.getLogger().debug(str, ex);
				str = firstStr;
			}

			rootType menu = (rootType) getXmlFromTableByOrg(root, dt, str, fields, true);

			ret = doc.saveToString(menu);
		} catch (Exception ex) {
			FileLogger.getLogger().warn(ex.getMessage(), ex);
			ret = "";
		}

		return ret;
	}

	private static Node getXmlFromTableByOrg(Node menu, DataTable dt, String sValue,
			String[] fields, boolean addparam) {
		Node ret = null;
		try {
			ArrayList list = new ArrayList();
			int index = 0;
			int count = dt.getRows().getCount();
			for (int i = 0; i < count; i++) {
				DataRow dr = dt.getRow(index);
				if (dr.getString(fields[1]).equals(sValue)) {
					list.add(dr);
					dt.getRows().remove(dr);
				} else {
					index++;
				}
			}

			for (int i = 0; i < list.size(); i++) {
				DataRow dr = (DataRow) list.get(i);
				menuType submenu = new menuType();
				try {
					submenu.addid(dr.getString(fields[0]));

					submenu.addtext(dr.getString(fields[3]));

					// 设置不同状态的颜色
					String stateColor = "black";
					if (dr.getString("state").equals("E")) {
						long start = (dr.getDate("starttime") == null) ? Long.MIN_VALUE : dr
								.getDate("starttime").getTime();
						long end = (dr.getDate("endtime") == null) ? Long.MAX_VALUE : dr.getDate(
								"endtime").getTime();
						if (start > System.currentTimeMillis()) {
							stateColor = "orange";
						} else if (end < System.currentTimeMillis()) {
							stateColor = "MediumPurple";
						}
					} else {
						stateColor = "red";
					}

					submenu.addtext_color(stateColor);

					String href = "javascript:menuclick('";
					href += fields[4];
					href += "', " + dr.getString(fields[0]);
					href += ", '" + dr.getString(fields[2]);
					href += "', '" + dr.getString(fields[3]);
					href += "', " + Boolean.toString(addparam) + ")";
					submenu.addhref(href);
				} catch (Exception e) {
					FileLogger.getLogger().warn("newMenu:" + e.getMessage(), e);
				}

				Node tmp = getXmlFromTableByOrg(submenu, dt, dr.getString(fields[0]), fields,
						addparam);
				if (tmp != null) {
					if (menu.getClass() == rootType.class)
						((rootType) menu).addmenu((menuType) tmp);
					else
						((menuType) menu).addmenu((menuType) tmp);
				}
			}

			ret = menu;
		} catch (Exception ex) {
			FileLogger.getLogger().warn(ex.getMessage(), ex);
			ret = null;
		}

		return ret;
	}

	/**
	 * 获取权限列表信息(所有权限信息)。
	 * 
	 * @return 指定员工的所有有权限的权限信息树(XML字符串);
	 */
	public static String getPurviewList(ServletRequest request, ServletResponse response, Map param) {
		String ret = "";
		try {
			long parentId = (param.get("PID") == null) ? 0 : Long.parseLong((String) param
					.get("PID"));

			Purview purv = new Purview();
			DataTable dt = null;
			if (parentId < 0)
				parentId = 0;

			String[] fields = new String[9];
			fields[0] = "PURVIEWID";
			fields[1] = "UPPURVIEWID";
			fields[2] = "PURVIEWCODE";

			WebAuth auth = WebAuth.getInstance((HttpServletRequest) request);
			long currPostID = auth.getCurrPostID();

			if (currPostID < 0)
				currPostID = 1;
			if (currPostID == 1) {
				// 系统管理员处理,获取所有在用模块的模块信息。
				dt = purv.SubList(parentId);

				// 移除所有禁用的模块。
				int index = 0;
				while (index < dt.getRows().getCount()) {
					DataRow dr = dt.getRow(index);
					if (!dr.getString("STATE").equalsIgnoreCase("E")) {
						dt.getRows().remove(dr);
					} else {
						index++;
					}
				}

				fields[3] = "NAME";
			} else {
				// 普通管理员,获取管理有权限的相关模块信息。
				dt = purv.GetInfoByUserOrg(auth.getUserID(), currPostID);

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -