📄 xmlservice.java
字号:
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 + -