This repository has been archived on 2025-09-14. You can view files and clone it, but cannot push or open issues or pull requests.
Files
nms-nmsweb/src/nis/nms/web/actions/nodeGroupManage/NodeGroupManageAction.java
wangwenrui 1abccaa785 1.修复监测告警配置失败的bug
2.修复点击拓扑图节点,关闭弹窗后无限发送请求的bug
3.修复3DRoom 右侧提示框除中文外其他语言状态下,没有节点的节点组不显示提示框的bug
4.国际化文件更新
2018-10-16 17:11:30 +08:00

1636 lines
62 KiB
Java
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

package nis.nms.web.actions.nodeGroupManage;
import java.io.File;
import java.io.FileInputStream;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Set;
import net.sf.json.JSONArray;
import nis.nms.core.Resource;
import nis.nms.domains.NodePosition;
import nis.nms.domains.NodeTable;
import nis.nms.domains.NodegroupTable;
import nis.nms.domains.SystemTable;
import nis.nms.domains.XtJsJbxx;
import nis.nms.service.CommonService;
import nis.nms.util.BaseAction;
import nis.nms.util.ExportUtils;
import org.apache.commons.lang.StringUtils;
import org.apache.log4j.Logger;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.usermodel.Workbook;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import org.apache.struts2.config.Result;
import org.apache.struts2.config.Results;
@SuppressWarnings("unchecked")
@Results( {
@Result(name = "queryNodeGroupInfo", value = "/page/systemManage/nodeGroupManage/nodegroupInfoList.jsp"),
@Result(name="nodeMgmtList", value = "/page/systemManage/nodeGroupManage/nodeMgmtList.jsp"),
@Result(name = "toSelectNodeGroup", value = "/page/systemManage/nodeGroupManage/toSelectNodeGroup.jsp"),
@Result(name = "toSelectNodeAndNodeGroup", value = "/page/systemManage/nodeGroupManage/toSelectNodeAndNodeGroup.jsp"),
@Result(name = "showError", value = "/page/systemManage/nodeGroupManage/showImportError.jsp"),
@Result(name = "error", value = "/error.jsp") })
public class NodeGroupManageAction extends BaseAction {
private Logger logger = Logger.getLogger(NodeGroupManageAction.class);
private static final long serialVersionUID = 1L;
private CommonService commonService;
// private int pageNo = 1;
// private int pageSize = this.getDefaultPageSize(); // 每页显示的记录条数
// private Page page;
private String action;// 系统操作
private String position;
//===========================
private List<NodegroupTable> nodeGroupList;//节点组列表
private NodegroupTable nodeGroup;//节点组
private Long nodeGroupId;
private Long[] ids;//节点组id集合
private Set<String> selectedNodeGroupIds = new HashSet<String>();//停用或启用时选中的节点及所有子节点
private Set<String> leafNodeGroupIdsByPar = new HashSet<String>();//根据父节点组id得到所有叶子节点组id从给的父节点组id找到对应的叶子节点组id
private Set<String> nodeIds = new HashSet<String>();//停用或启用时叶子节点组下的节点id
private Map<String,String> nodeGroupMap = new HashMap<String,String>();//停用或启用时叶子节点组下的叶子节点组id和节点组下的节点id的map
private Set<String> leafNodeGroupIds = new HashSet<String>();//停用或启用时选中的节点中的所有叶子节点组的id从所给的节点组id中筛选叶子节点组
private List<XtJsJbxx> allUserGroup;//当前用户有权限的用户组
private String isStartSubNodeGroup;//启用节点组的时候是否同时启用子节点组10
//查询条件
private String nameVo;
private String descVo;
private String showStopNGroup; // 是否显示下线节点组
private List<Resource> treeList;//当前用户有权限的业务系统
private SystemTable system;//当前登录选择的业务系统
private List<SystemTable> systemList;
private List<NodeTable> nodeList;//节点列表
private String groupId;//当前选中的节点组id用于查询此节点组下的所有节点
private String fromWhere;
private String isComplete;
//配置向导标志 type=config标识是从配置向导发出的请求
private String type;
// 导入节点文件
private File myFile;
private String myFileFileName;
public File getMyFile() {
return myFile;
}
public void setMyFile(File myFile) {
this.myFile = myFile;
}
public String getMyFileFileName() {
return myFileFileName;
}
public void setMyFileFileName(String myFileFileName) {
this.myFileFileName = myFileFileName;
}
public String executeAction() {
String resultPage = "";
try {
getInitInfo();//获取用户组及业务系统信息
this.getRequest().setAttribute("fromWhere", fromWhere);
// 节点组管理
if (action.equals("queryNodeGroupInfo")) {// 查询部门信息
resultPage = queryNodeGroupInfo();
}else if(action.equals("updateNodeGroup")){//提交修改节点组信息,之后返回列表
resultPage = updateNodeGroupInfo();
}else if(action.equals("addNodeGroup")){//提交添加节点组信息
resultPage = addNodeGroupInfo();
}else if(action.equals("stopNodeGroup")){//停用节点组
resultPage=stopNodeGroupInfo();
}else if(action.equals("startNodeGroup")){//启用节点组
resultPage = startNodeGroupInfo();
}else if(action.equals("nodeMgmt")){//节点管理:转向节点管理页面
resultPage = nodeMgmtList();
}else if(action.equals("toSelectNodeGroup")) {//新增任务:节点组选择
resultPage = toSelectNodeGroup();
}else if(action.equals("toSelectNodeAndNodeGroup")) {//新增监测设置:节点组、节点选择
resultPage = toSelectNodeAndNodeGroup();
}else if ("downloadExample".equals(this.action)) {
resultPage = downloadExample();
}else if ("importXls".equals(this.action)) {
resultPage = importXls();
}else if ("emportXls".equals(this.action)) {
resultPage = emportXls();
}else if(action.equals("getNodesByNodeGroupId")) {//根据节点组获得节点
resultPage = getNodesByNodeGroupId();
}
} catch (Exception e) {
e.printStackTrace();
logger.error(e.getStackTrace());
}
return resultPage;
}
// 模板下载 程辉 2013-5-13新增
public String downloadExample() {
try {
String hql = "select groupName,groupDesc,parentGroupId from NodegroupTable";
List st= (List)this.commonService.findByPage(hql, 1, 3).getResult();
List<NodegroupTable> NodegroupTablelist = commonService.find("from NodegroupTable");
for (int j = 0; j < st.size(); j++) {
boolean isHave = false;
for (int i = 0; i < NodegroupTablelist.size(); i++) {
if (NodegroupTablelist.get(i).getGroupId().equals(
((Object[]) st.get(j))[2])) {
((Object[]) st.get(j))[2] = NodegroupTablelist.get(i)
.getGroupName();
isHave=true;
}
}
if(!isHave){
((Object[]) st.get(j))[2] = "";
}
}
String[] title = { getI18nText("i18n_NodeGroupManageAction.downloadExample.title.nodeGroupName_n81i"),
getI18nText("i18n_NodeGroupManageAction.downloadExample.title.groupDesc_n81i"),
getI18nText("i18n_NodeGroupManageAction.downloadExample.title.parentGroup_n81i") };
String[] colu = { "0", "1","2" };
ExportUtils m = new ExportUtils();
m.setAutoSizeColumn(true);
m.exportExcel(getI18nText("i18n_NodeGroupManageAction.downloadExample.nodeGroupInfo_n81i"), st, title, colu,"downloadExample");
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
// 导入 程辉 2013-5-8新增
public String importXls() {
String errorInfo = "";
try {
List<String> headerList = new ArrayList<String>();
List<List<String>> rowList = new ArrayList<List<String>>();
Workbook workbook = null;
if (myFileFileName.endsWith(".xlsx")) {
workbook = new XSSFWorkbook(new FileInputStream(myFile));
} else {
// 创建对Excel工作簿文件的引用
workbook = new HSSFWorkbook(new FileInputStream(myFile));
}
// 创建对工作表的引用,得到表的第一页
Sheet sheet = workbook.getSheetAt(0);
// 读取左上端单元
// 记录存储数据条数
int count = 0;
// 记录读入excel数据条数
int sum = (sheet.getLastRowNum());
for (short i = 1; i <= sheet.getLastRowNum(); i++) {
String groupName ="";
String groupDesc ="";
String parentGroupName ="";
List<String> errorList = new ArrayList<String>();
Row row = sheet.getRow(i);
Cell cell_1 = row.getCell((short) 0);
Cell cell_2 = row.getCell((short) 1);
Cell cell_3 = row.getCell((short) 2);
if ((null == cell_1 || 3 == cell_1.getCellType())
&& (null == cell_2 || 3 == cell_2.getCellType())
&& (null == cell_3 || 3 == cell_3.getCellType())) {
sum--;
}else {
// 节点组名称
if (null == cell_1||cell_1.getCellType()==Cell.CELL_TYPE_BLANK) {
errorInfo += getI18nText("i18n_NodeGroupManageAction.downloadExample.errorInfo1_n81i",i+"");
} else if (cell_1.getCellType() == Cell.CELL_TYPE_STRING) {
if ("".equals(cell_1.getStringCellValue())) {
errorInfo += getI18nText("i18n_NodeGroupManageAction.downloadExample.errorInfo1_n81i",i+"");
} else {
groupName = cell_1.getStringCellValue().trim();
}
} else {
errorInfo += getI18nText("i18n_NodeGroupManageAction.downloadExample.errorInfo2_n81i",i+"");
}
// 组描述
if (null == cell_2||cell_2.getCellType()==Cell.CELL_TYPE_BLANK) {
} else if (cell_2.getCellType() == Cell.CELL_TYPE_STRING) {
if ("".equals(cell_2.getStringCellValue())) {
} else {
groupDesc = cell_2.getStringCellValue()
.trim();
if(groupDesc.length()>128){
errorInfo += getI18nText("i18n_NodeGroupManageAction.downloadExample.errorInfo3_n81i",i+"");
}
}
}
// 父级组
if(null == cell_3||cell_3.getCellType()==Cell.CELL_TYPE_BLANK){
}else if (cell_3.getCellType() == Cell.CELL_TYPE_NUMERIC) {
parentGroupName =String.valueOf((int)cell_3.getNumericCellValue());
}else if (cell_3.getCellType() == Cell.CELL_TYPE_STRING) {
parentGroupName =cell_3.getStringCellValue().trim();
} else {
errorInfo += getI18nText("i18n_NodeGroupManageAction.downloadExample.errorInfo4_n81i",i+"");
}
if ("".equals(errorInfo)) {// 保存节点
errorInfo = this.saveNode(groupName,groupDesc,parentGroupName);
}
if ("".equals(errorInfo)) {
count++;
} else {
errorList.add(groupName);
errorList.add(groupDesc);
errorList.add(parentGroupName);
errorList.add(errorInfo);
rowList.add(errorList);
errorInfo = "";
}
}
}
headerList.add(getI18nText("i18n_NodeGroupManageAction.downloadExample.nodeGroupName_n81i"));
headerList.add(getI18nText("i18n_NodeGroupManageAction.downloadExample.groupDesc_n81i"));
headerList.add(getI18nText("i18n_NodeGroupManageAction.downloadExample.parentGroupId_n81i"));
headerList.add(getI18nText("i18n_NodeGroupManageAction.downloadExample.errorInfo_n81i"));
this.getRequest().setAttribute("rowList", rowList);
this.getRequest().setAttribute("headerList", headerList);
if (count == sum && sum > 0) {
// this.getRequest().setAttribute("MSG", 1);
// return this.queryNodeGroupInfo();
outHtmlString("<script type=\"text/javascript\">alert('i18n_NodeGroupManageAction.downloadExample.success_n81i');this.location='nodeGroupManage!execute.do?action=queryNodeGroupInfo&showStopNGroup="+showStopNGroup+"'</script>");
return null;
} else if (sum == 0) {
outHtmlString("<script>alert('i18n_NodeGroupManageAction.downloadExample.fileIsNull_n81i');this.location='nodeGroupManage!execute.do?action=queryNodeGroupInfo&showStopNGroup="+showStopNGroup+"'</script>");
return null;
}
} catch (Exception e) {
e.printStackTrace();
}
return "showError";
}
private String saveNode(String groupName,String groupDesc,String parentGroupName) {
String desc = "";
NodegroupTable nodegroupTable=new NodegroupTable();
try {
commonService.beginTransaction();
// 保存节点信息
nodegroupTable.setGroupName(groupName);
nodegroupTable.setViewLevel(3l);
nodegroupTable.setCreateUserId(getUserID());
nodegroupTable.setGroupType(0l);
nodegroupTable.setGroupDesc(groupDesc);
nodegroupTable.setSystemId(getSystemID());
nodegroupTable.setIsValid(1l);
nodegroupTable.setGroupCreatetime(new Date());
List<NodegroupTable> NodegroupTablelist = commonService.find("from NodegroupTable");
for (int i = 0; i < NodegroupTablelist.size(); i++) {
if(parentGroupName.equals(NodegroupTablelist.get(i).getGroupName())){
nodegroupTable.setParentGroupId(NodegroupTablelist.get(i).getGroupId());
}
}
if(parentGroupName.equals("")){
nodegroupTable.setParentGroupId(0l);
}
nodegroupTable.setLeafGroup(1l);
//创建子节点组父节点id!=0时有节点的节点组不能添加子节点组
if(nodegroupTable.getParentGroupId()!=0) {
List subNodeList = this.commonService.find("from NodeTable where groupId=?", nodegroupTable.getParentGroupId());
if(subNodeList!=null&&subNodeList.size()>0) {
return getI18nText("i18n_NodeGroupManageAction.downloadExample.subNodeList_n81i")+";";
}
//上一级节点组
NodegroupTable groupParent = (NodegroupTable) this.commonService.get(NodegroupTable.class, nodegroupTable.getParentGroupId());
//如果比父级节点组权限大
if(nodegroupTable.getViewLevel()>groupParent.getViewLevel()){
return getI18nText("i18n_NodeGroupManageAction.downloadExample.nodegroupTable_n81i");
}
nodegroupTable.setGroupLevel(groupParent.getGroupLevel()+1);
}else{
nodegroupTable.setGroupLevel(1l);
}
//同一系统的同一父节点组下是否重名
List list = this.commonService.find("from NodegroupTable where groupName=? and parentGroupId=? and systemId=?", nodegroupTable.getGroupName(),nodegroupTable.getParentGroupId(),this.getSystemID());
if(list!=null && list.size()>0){
return getI18nText("i18n_NodeGroupManageAction.downloadExample.nodeGroupExists_n81i");
}
//获得新增节点组的显示序号
Long showNum = new Long(0l);
/*String indexSql = "SELECT SHOW_INDEX FROM (SELECT SHOW_INDEX FROM NODEGROUP_TABLE WHERE PARENT_GROUP_ID=" +
nodegroupTable.getParentGroupId() +
" ORDER BY SHOW_INDEX DESC) WHERE ROWNUM<=1";*/
//@2018年4月10日18:26:20 fang 修改rownum 适配mysql
String indexSql = "SELECT nvl(max(SHOW_INDEX),0) SHOW_INDEX FROM NODEGROUP_TABLE WHERE PARENT_GROUP_ID=" + nodegroupTable.getParentGroupId();
List subNodeGroup = this.commonService.executeSQL(indexSql);
if(subNodeGroup.size()>0) {
Object showNumTemp = subNodeGroup.get(0);
if(showNumTemp!=null) {
showNum = new Long(showNumTemp.toString())+3l;
}
}
nodegroupTable.setShowIndex(showNum);//显示序号
this.commonService.save(nodegroupTable);
//将新节点组的父节点组修改为非叶子节点组:一级节点除外
if(nodegroupTable.getParentGroupId()!=0) {
NodegroupTable pNode = (NodegroupTable)this.commonService.get(NodegroupTable.class, nodegroupTable.getParentGroupId());
pNode.setLeafGroup(new Long("0"));
}
//拓扑图的数据维护
List nplist = new ArrayList();
if(nodegroupTable.getGroupLevel()==1) {//一级节点组根据业务系统ID查找当前业务系统的NodePostionnodeType='system'表示为业务系统节点
nplist = this.commonService.find(
"from NodePosition where nodeType='system' and nodeId=?",
nodegroupTable.getSystemId()+"");
}else {//非一级节点组:根据新增节点组的父节点组ID查找父节点组对应的NodePostionnodeType='nodeGroup'表示为节点组
nplist = this.commonService.find(
"from NodePosition where nodeType='nodeGroup' and nodeId=?",
nodegroupTable.getParentGroupId()+"");
}
if (nplist != null && nplist.size() > 0) {
NodePosition parent = (NodePosition) nplist.get(0);
Long parentId = parent.getId();//NodePostion中新增节点组的parentId
//查找是否有相同记录存在,不存在再添加
nplist = this.commonService
.find(
"from NodePosition where nodeType='nodeGroup' and nodeId=? and parent_id=?",
nodegroupTable.getGroupId()+"", parentId);//nodeType='nodeGroup'表示为节点组
if (nplist == null || nplist.size() == 0) {
NodePosition np = new NodePosition();
np.setTableName("nodegroup_table");
np.setNodeType("nodeGroup");
np.setNodeId(nodegroupTable.getGroupId() + "");
np.setPositionX(0l);
np.setPositionY(0l);
np.setImageUrl("/nmsweb/images/show/topic.png");
np.setViewTimeMark(new Date());
np.setViewType(1l);
np.setParent_id(parentId);
this.commonService.save(np);
this.addDBOperationRpt(commonService, "node_position", "INSERT",np.getId());
}
}
//将添加操作写到操作日志中
this.addDBOperationRpt(commonService, "nodegroup_table", "INSERT", nodegroupTable.getGroupId());
// 用来实现即时向客户端发送脚本文件
this.sendPluginFile(nodegroupTable.getGroupId(), null,commonService);
this.sendNodeAndGroupId(nodegroupTable.getGroupId(), null,commonService);//通知NMSServer更新节点组的监控信息
commonService.commit();
} catch (Exception e) {
commonService.rollback();
e.printStackTrace();
desc = getI18nText("i18n_NodeGroupManageAction.downloadExample.nodeInfoExportErr_n81i");
}
return desc;
}
// 导出 程辉 2013-5-8新增
public String emportXls() {
try {
String hql = "select groupName,groupDesc,parentGroupId from NodegroupTable";
if (!Boolean.parseBoolean(showStopNGroup)) {
hql += " where isValid = 1";
}
List st= this.commonService.find(hql);
List<NodegroupTable> NodegroupTablelist = commonService.find("from NodegroupTable");
for (int j = 0; j < st.size(); j++) {
boolean isHave = false;
for (int i = 0; i < NodegroupTablelist.size(); i++) {
if (NodegroupTablelist.get(i).getGroupId().equals(
((Object[]) st.get(j))[2])) {
((Object[]) st.get(j))[2] = NodegroupTablelist.get(i)
.getGroupName();
isHave=true;
}
}
if(!isHave){
((Object[]) st.get(j))[2] = "";
}
}
String[] title = { getI18nText("i18n_NodeGroupManageAction.downloadExample.nodeGroupNameRequired_n81i"),
getI18nText("i18n_NodeGroupManageAction.downloadExample.title.groupDesc_n81i"),
getI18nText("i18n_NodeGroupManageAction.downloadExample.title.parentGroup_n81i") };
String[] colu = { "0", "1","2" };
ExportUtils m = new ExportUtils();
m.setAutoSizeColumn(true);
m.exportExcel(getI18nText("i18n_NodeGroupManageAction.downloadExample.nodeGroupInfo_n81i"), st, title, colu);
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
//查询节点组信息列表
public String queryNodeGroupInfo(){
try{
isComplete = this.getRequest().getParameter("isComplete");
String hql = "from NodegroupTable where 1=1";
String sqlCondition = "where 1=1";
boolean ADMFlag = this.getAdminMark();
this.getRequest().setAttribute("ADMFlag", ADMFlag);
//当前登录用户非admin时才做查看权限限制
if(!ADMFlag){
//权限控制----------------------------------------------------begin
//如果当前登录选择了业务系统,则只做和本业务系统相关的操作
if(this.getSystemID()!=null){
hql += " and systemId = " + this.getSystemID();
sqlCondition += " and system_id=" + this.getSystemID();
}
//1 发布人查看,2 发布人所在组查看,3 系统内全部人员可看
hql += " and (";
hql += " (viewLevel=1 and createUserId=" + this.getUserID() + ")";
hql += " or (viewLevel=2 and createUsergroupId in (select jsbh from XtYhJsIndex " +
" where type=1 and yhbh='" + this.getUser().getYhbh() + "') )" ;
if(this.getSystemID()!=null){
hql += " or (viewLevel=3 and systemId=" + this.getSystemID() + ")";
}else{
hql += " or (viewLevel=3 and systemId in" +
" (select systemId from GorupSystemTable where userGroupId in" +
" (select jsbh from XtYhJsIndex where type=1 and yhbh='" + this.getUser().getYhbh() + "')" +
" ) )";
}
hql += ")";
//权限控制----------------------------------------------------end
}
if(nameVo!=null && !nameVo.trim().equals("")){
hql += " and groupName like '%" + nameVo.trim() + "%'";
sqlCondition += " and group_name like '%" + nameVo.trim() + "%'";
}
if(descVo!=null && !descVo.trim().equals("")){
hql += " and groupDesc like '%" + descVo.trim() + "%'";
sqlCondition += " and group_desc like '%" + descVo.trim() + "%'";
}
if (!Boolean.parseBoolean(showStopNGroup)) {
hql += " and isValid = 1";
sqlCondition += " and isValid = 1";
}
// hql += " order by isValid desc,groupCreatetime desc";
// sqlCondition += " order by is_valid asc,Group_createtime desc";
hql += " order by groupLevel asc,showIndex asc";
sqlCondition += " order by groupLevel asc,showIndex asc";
// 将查询请求记入到操作日志表中
this.addDBOperationRpt(commonService, sqlCondition, "nodegroup_table");
// page = this.commonService.findByPage(hql, pageNo, pageSize);
// nodeGroupList = (List<NodegroupTable>)page.getResult();
nodeGroupList = (List<NodegroupTable>)this.commonService.find(hql);
//获取业务系统名称
for(NodegroupTable nodeGroup:nodeGroupList) {
if(nodeGroup.getSystemId()!=null){
List syslist = this.commonService.find("from SystemTable where systemId=?", nodeGroup.getSystemId());
if(syslist!=null && syslist.size()>0){
SystemTable sys = (SystemTable)syslist.get(0);
nodeGroup.setSystemIdName(sys.getSystemName());
}
}
}
//获得树对象列表
List treeList = new ArrayList();
String sql = "select parentGroupId,groupId,groupName,groupLevel,isValid " + hql;
List menuList = this.commonService.find(sql);
for (int i = 0; i < menuList.size(); i++) {
Object[] obj = (Object[]) menuList.get(i);// 0为pid,1为id,2为deptname,3为级别,4是否生效
Resource resource = new Resource();
if(obj[0]!=null&&obj[1]!=null&&obj[4]!=null&&obj[2]!=null&&obj[3]!=null) {
resource.setParRsCode(obj[0].toString());
resource.setRsCode(obj[1].toString());
resource.setRsid(obj[1].toString());
resource.setIsValid(Integer.parseInt(obj[4].toString()));
if("0".equals(obj[4].toString())) {//0:失效
resource.setRsname("<font color=\"gray\">"+obj[2].toString()+"</font>");
} else if ("1".equals(obj[4].toString())){//1:生效
resource.setRsname(obj[2].toString());
}
treeList.add(resource);
}
}
this.getRequest().setAttribute("treeList", treeList);
}catch (Exception e){
logger.error(e.getStackTrace());
e.printStackTrace();
return null;
}
return "queryNodeGroupInfo";
}
//查找所有有效的节点组信息,并组成树对象集合
public void selectNodeGroup() {
try{
String hql = "from NodegroupTable where 1=1";
String sqlCondition = "where 1=1";
if(!this.getAdminMark()){// admin 用户 有 超级查看权限
//如果当前登录选择了业务系统,则只做和本业务系统相关的操作
if(this.getSystemID()!=null){
hql += " and systemId = " + this.getSystemID();
sqlCondition += " and system_id=" + this.getSystemID();
}
//1 发布人查看,2 发布人所在组查看,3 系统内全部人员可看
hql += " and (";
hql += " (viewLevel=1 and createUserId=" + this.getUserID() + ")";
hql += " or (viewLevel=2 and createUsergroupId in (select jsbh from XtYhJsIndex " +
" where type=1 and yhbh='" + this.getUser().getYhbh() + "') )" ;
if(this.getSystemID()!=null){
hql += " or (viewLevel=3 and systemId=" + this.getSystemID() + ")";
}else{
hql += " or (viewLevel=3 and systemId in" +
" (select systemId from GorupSystemTable where userGroupId in" +
" (select jsbh from XtYhJsIndex where type=1 and yhbh='" + this.getUser().getYhbh() + "')" +
" ) )";
}
hql += ")";
}
hql += " and nvl(isValid,0)=1";
hql += " order by isValid desc,groupCreatetime desc";
sqlCondition += " order by is_valid asc,Group_createtime desc";
// 将查询请求记入到操作日志表中
this.addDBOperationRpt(commonService, sqlCondition, "nodegroup_table");
nodeGroupList = (List<NodegroupTable>) this.commonService.find(hql);
//获取业务系统名称
for(NodegroupTable nodeGroup:nodeGroupList) {
if(nodeGroup.getSystemId()!=null){
List syslist = this.commonService.find("from SystemTable where systemId=?", nodeGroup.getSystemId());
if(syslist!=null && syslist.size()>0){
SystemTable sys = (SystemTable)syslist.get(0);
nodeGroup.setSystemIdName(sys.getSystemName());
}
}
}
//获得树对象列表
List treeList = new ArrayList();
String sql = "select parentGroupId,groupId,groupName,groupLevel,isValid " + hql;
List menuList = this.commonService.find(sql);
for (int i = 0; i < menuList.size(); i++) {
Object[] obj = (Object[]) menuList.get(i);// 0为pid,1为id,2为deptname,3为级别,4是否生效
Resource resource = new Resource();
if(obj[0]!=null&&obj[1]!=null&&obj[4]!=null&&obj[2]!=null&&obj[3]!=null) {
resource.setParRsCode(obj[0].toString());
resource.setRsCode(obj[1].toString());
resource.setRsid(obj[1].toString());
if("0".equals(obj[4].toString())) {//0:失效
resource.setRsname("<font color=\"gray\">"+obj[2].toString()+"</font>");
} else if ("1".equals(obj[4].toString())){//1:生效
resource.setRsname(obj[2].toString());
}
treeList.add(resource);
}
}
this.getRequest().setAttribute("treeList", treeList);
}catch (Exception e){
e.printStackTrace();
}
}
//新增任务时:查询可供选择的节点组
public String toSelectNodeGroup() {
try{
selectNodeGroup();//查询节点组
//获得当前选中的节点组id集合,传递给节点组选择页面
String nodeGroupIds = this.getRequest().getParameter("nodeGroupIds");
this.getRequest().setAttribute("nodeGroupIds", nodeGroupIds);
}catch (Exception e){
e.printStackTrace();
logger.error(e.getStackTrace());
}
return "toSelectNodeGroup";
}
//新增监测设置时:查询可供选择的节点组、节点
public String toSelectNodeAndNodeGroup() {
try {
selectNodeGroup();//查询节点组
//获得当前选中的节点组id集合,传递给节点组选择页面
String groupId = this.getRequest().getParameter("groupId");
this.getRequest().setAttribute("groupId", groupId);
//获得当前选中的节点ip集合,传递给节点组选择页面
String nodeId = this.getRequest().getParameter("nodeId");
this.getRequest().setAttribute("nodeId", nodeId);
//查询选中节点组对应的所有节点
List<NodeTable> nodeList = new ArrayList<NodeTable>();
List<NodeTable> noInNodeList = new ArrayList<NodeTable>();
if(groupId!=null&&!"".equals(groupId.trim())) {
//String tString ="select * from node_table where 1=1 and node_state = 0 and node_group_id in( "+groupId+") order by node_group_id,node_id";
//过滤掉未包含在DC分管IP中的节点
String tString ="select distinct ttt.*"+
" from node_table ttt"+
" right join (select sis.start_ipn as star, sis.end_ipn as end"+
" from server_ip_segment sis"+
" left join server_table t on sis.server_id = t.id"+
" where t.server_state = 0"+
" and (sis.segment_state is null or sis.segment_state <> -1)) tempTable"+
" on ttt.ipn >= tempTable.Star and ttt.ipn <= tempTable.end"+
" where node_state = 0"+
" and node_group_id in ("+groupId+") order by node_group_id, node_id";
nodeList =this.commonService.executeSQL(tString,NodeTable.class);
//获取未包含在分管IP中的节点
String notIn ="select * from node_table where node_id not in (select distinct ttt.node_id from node_table ttt "+
"right join (select sis.start_ipn as star, sis.end_ipn as end "+
"from server_ip_segment sis "+
"left join server_table t on sis.server_id = t.id "+
"where t.server_state = 0 "+
"and (sis.segment_state is null or sis.segment_state <> -1)) tempTable "+
"on ttt.ipn >= tempTable.Star and ttt.ipn <= tempTable.end ) "+
"and node_state = 0 and node_group_id in ("+groupId+")";
noInNodeList =this.commonService.executeSQL(notIn,NodeTable.class);
if(noInNodeList.size()>0){
this.getRequest().setAttribute("noInNodeList", noInNodeList);
}
}
this.getRequest().setAttribute("nodeList", nodeList);
}catch(Exception e) {
e.printStackTrace();
logger.error(e.getStackTrace());
}
return "toSelectNodeAndNodeGroup";
}
/**
*
* 思路:
* 1.groupId经过前台的过滤groupId为前台选中节点组中最底层的节点组id叶子节点组+无子孙被选中的非叶子节点组
* 2.leafNodeGroupIds根据groupId得到groupId中的叶子节点组id
* 3.leafNodeGroupIdsByPar根据groupId通过getAllLeafNodeGroupIds方法得到groupId中无子孙被选中的非叶子节点组对应的所有的叶子节点组
* 4.在节点表中根据leafNodeGroupIds+leafNodeGroupIdsByPar得到所对应的节点的ip并返回到前台用于显示
* @author hyx May 3, 2012
* @version 1.0
* @return
* @throws Exception
*/
public String getNodesByNodeGroupId()throws Exception {
List<NodeTable> nodeList = new ArrayList<NodeTable>();
List<NodeTable> noInNodeList = new ArrayList<NodeTable>();
List resuInList = new ArrayList();
List resuNoInList = new ArrayList();
List resuList = new ArrayList();
String nodeGroup = "";
try {
if(groupId!=null && !"".equals(groupId)){//查询有效节点
//获得所选节点组对应的所有的叶子节点组(非叶子节点组下对应的所有的叶子节点组)
String[] nodeGroupIds = groupId.split(",");
String leafNodeGroupIds = getLeafNodeGroupId(groupId);//获得所选节点组中的所有叶子节点组
for(int i=0; i<nodeGroupIds.length; i++){
getAllLeafNodeGroupIds(Long.valueOf(nodeGroupIds[i]));//获得非叶子节点组对应的叶子节点组
}
if(leafNodeGroupIdsByPar.size()>0) {
nodeGroup = StringUtils.join(selectedNodeGroupIds.toArray(), ",");
leafNodeGroupIds = leafNodeGroupIds+","+nodeGroup;
}
if(leafNodeGroupIds!=null&&!"".equals(leafNodeGroupIds.trim())) {
//String tString ="select * from node_table where 1=1 and node_state = 0 and node_group_id in( "+leafNodeGroupIds+") order by node_group_id,node_id";
//过滤掉未包含在DC分管IP中的节点
String tString ="select distinct ttt.*"+
" from node_table ttt"+
" right join (select sis.start_ipn as star, sis.end_ipn as end"+
" from server_ip_segment sis"+
" left join server_table t on sis.server_id = t.id"+
" where t.server_state = 0"+
" and (sis.segment_state is null or sis.segment_state <> -1)) tempTable"+
" on ttt.ipn >= tempTable.Star and ttt.ipn <= tempTable.end"+
" where node_state = 0"+
" and node_group_id in ("+leafNodeGroupIds+") order by node_group_id, node_id";
//System.out.println(tString);
nodeList =this.commonService.executeSQL(tString,NodeTable.class);
//获取未包含在分管IP中的节点
String notIn ="select * from node_table where node_id not in (select distinct ttt.node_id from node_table ttt "+
"right join (select sis.start_ipn as star, sis.end_ipn as end "+
"from server_ip_segment sis "+
"left join server_table t on sis.server_id = t.id "+
"where t.server_state = 0 "+
"and (sis.segment_state is null or sis.segment_state <> -1)) tempTable "+
"on ttt.ipn >= tempTable.Star and ttt.ipn <= tempTable.end ) "+
"and node_state = 0 and node_group_id in ("+leafNodeGroupIds+")";
noInNodeList =this.commonService.executeSQL(notIn,NodeTable.class);
}
if(nodeList!=null && nodeList.size()>0){
for(int i=0;i<nodeList.size();i++){
NodeTable nTable = nodeList.get(i);
Object[] obj = new Object[5];//节点id、节点ip、节点所属节点组id、节点类型(0服务器 1交换机)
obj[0]= nTable.getNodeId();
obj[1]= nTable.getNodeIp();
obj[2]= nTable.getGroupId();
obj[3]= nTable.getNodeType();
obj[4]=nTable.getNodeSystemType();
resuInList.add(obj);
}
}
resuList.add(resuInList);
if(noInNodeList!=null && noInNodeList.size()>0){
for(int i=0;i<noInNodeList.size();i++){
NodeTable nTable = noInNodeList.get(i);
Object[] obj = new Object[5];//节点名称、节点ip、节点所属节点组id、节点类型(0服务器 1交换机)
obj[0]= nTable.getNodeName();
obj[1]= nTable.getNodeIp();
obj[2]= nTable.getGroupId();
obj[3]= nTable.getNodeType();
obj[4]=nTable.getNodeSystemType();
resuNoInList.add(obj);
}
}
resuList.add(resuNoInList);
}
String jsonStr = JSONArray.fromObject(resuList).toString();
this.getResponse().setCharacterEncoding("utf-8");
PrintWriter printWriter = this.getResponse().getWriter();
printWriter.write(jsonStr);
printWriter.close();
printWriter = null;
} catch (Exception e) {
e.printStackTrace();
logger.error(e.getStackTrace());
}
return null;
}
//添加节点组
public String addNodeGroupInfo(){
try{
commonService.beginTransaction();
//创建子节点组父节点id!=0时有节点的节点组不能添加子节点组
if(nodeGroup.getParentGroupId()!=0) {
List subNodeList = this.commonService.find("from NodeTable where groupId=?", nodeGroup.getParentGroupId());
if(subNodeList!=null&&subNodeList.size()>0) {
this.outHtmlString("<script>alert('i18n_NodeGroupManageAction.downloadExample.subNodeList_n81i');history.back();</script>");
return null;
}
}
//同一系统的同一父节点组下是否重名
List list = this.commonService.find("from NodegroupTable where groupName=? and parentGroupId=? and systemId=?", nodeGroup.getGroupName(),nodeGroup.getParentGroupId(),this.getSystemID());
if(list!=null && list.size()>0){
this.outHtmlString("<script>alert('i18n_NodeGroupManageAction.downloadExample.nodeGroupIsExists_n81i');history.back();</script>");
return null;
}
//判断其父级是否为系统(0)
if(nodeGroup.getParentGroupId() !=null && !nodeGroup.getParentGroupId().equals(new Long(0))){
//上一级节点组
NodegroupTable groupParent = (NodegroupTable) this.commonService.get(NodegroupTable.class, nodeGroup.getParentGroupId());
//如果比父级节点组权限大
if(nodeGroup.getViewLevel()>groupParent.getViewLevel()){
this.outHtmlString("<script>alert('i18n_NodeGroupManageAction.downloadExample.viewLevleTooBig_n81i');history.back();</script>");
return null;
}
}
//保存
nodeGroup.setCreateUserId(this.getUserID());
nodeGroup.setGroupCreatetime(new Date());
nodeGroup.setLeafGroup(new Long(1l));//是否叶子节点:新增时均为叶子节点组
//获得新增节点组的显示序号
Long showNum = new Long(0l);
/*String indexSql = "SELECT SHOW_INDEX FROM (SELECT SHOW_INDEX FROM NODEGROUP_TABLE WHERE PARENT_GROUP_ID=" +
nodeGroup.getParentGroupId() +
" ORDER BY SHOW_INDEX DESC) WHERE ROWNUM<=1";*/
//@2018年4月10日18:26:20 fang 修改rownum 适配mysql
String indexSql = "SELECT nvl(max(SHOW_INDEX),0) SHOW_INDEX FROM NODEGROUP_TABLE WHERE PARENT_GROUP_ID=" + nodeGroup.getParentGroupId();
List subNodeGroup = this.commonService.executeSQL(indexSql);
if(subNodeGroup.size()>0) {
Object showNumTemp = subNodeGroup.get(0);
if(showNumTemp!=null) {
showNum = new Long(showNumTemp.toString())+3l;
}
}
nodeGroup.setShowIndex(showNum);//显示序号
this.commonService.save(nodeGroup);
//将新节点组的父节点组修改为非叶子节点组:一级节点除外
if(nodeGroup.getParentGroupId()!=0) {
NodegroupTable pNode = (NodegroupTable)this.commonService.get(NodegroupTable.class, nodeGroup.getParentGroupId());
pNode.setLeafGroup(new Long("0"));
}
//拓扑图的数据维护
List nplist = new ArrayList();
if(nodeGroup.getGroupLevel()==1) {//一级节点组根据业务系统ID查找当前业务系统的NodePostionnodeType='system'表示为业务系统节点
nplist = this.commonService.find(
"from NodePosition where nodeType='system' and nodeId=?",
nodeGroup.getSystemId()+"");
}else {//非一级节点组:根据新增节点组的父节点组ID查找父节点组对应的NodePostionnodeType='nodeGroup'表示为节点组
nplist = this.commonService.find(
"from NodePosition where nodeType='nodeGroup' and nodeId=?",
nodeGroup.getParentGroupId()+"");
}
if (nplist != null && nplist.size() > 0) {
NodePosition parent = (NodePosition) nplist.get(0);
Long parentId = parent.getId();//NodePostion中新增节点组的parentId
//查找是否有相同记录存在,不存在再添加
nplist = this.commonService
.find(
"from NodePosition where nodeType='nodeGroup' and nodeId=? and parent_id=?",
nodeGroup.getGroupId()+"", parentId);//nodeType='nodeGroup'表示为节点组
if (nplist == null || nplist.size() == 0) {
NodePosition np = new NodePosition();
np.setTableName("nodegroup_table");
np.setNodeType("nodeGroup");
np.setNodeId(nodeGroup.getGroupId() + "");
np.setPositionX(0l);
np.setPositionY(0l);
np.setImageUrl("/nmsweb/images/show/topic.png");
np.setViewTimeMark(new Date());
np.setViewType(1l);
np.setParent_id(parentId);
this.commonService.save(np);
this.addDBOperationRpt(commonService, "node_position", "INSERT",np.getId());
}
}
//将添加操作写到操作日志中
this.addDBOperationRpt(commonService, "nodegroup_table", "INSERT", nodeGroup.getGroupId());
// 用来实现即时向客户端发送脚本文件
this.sendPluginFile(nodeGroup.getGroupId(), null,commonService);
this.sendNodeAndGroupId(nodeGroup.getGroupId(), null,commonService);//通知NMSServer更新节点组的监控信息
//记录用户操作用于设置向导
if(fromWhere!=null && !"".equals(fromWhere)){
if(fromWhere.equals("formGuide")){
this.outHtmlString("<script>alert('i18n_NodeGroupManageAction.downloadExample.success_n81i');this.location='nodeGroupManage!execute.do?action=queryNodeGroupInfo&isComplete=0&showStopNGroup="+showStopNGroup+"'</script>");
}
}else{
this.outHtmlString("<script>alert('i18n_NodeGroupManageAction.downloadExample.success_n81i');this.location='nodeGroupManage!execute.do?action=queryNodeGroupInfo&showStopNGroup="+showStopNGroup+"'</script>");
}
commonService.commit();
}catch (Exception e){
commonService.rollback();
logger.error(e.getStackTrace());
e.printStackTrace();
this.outHtmlString("<script>alert('i18n_NodeGroupManageAction.downloadExample.faild_n81i');this.location='nodeGroupManage!execute.do?action=queryNodeGroupInfo&showStopNGroup="+showStopNGroup+"'</script>");
return null;
}
return null;
}
//修改节点组
public String updateNodeGroupInfo(){
try{
commonService.beginTransaction();
//判断同一父亲节点组下的子节点组是否重名
List list = this.commonService.find("from NodegroupTable where groupName=? and parentGroupId=? and systemId =? and groupId <>?",
nodeGroup.getGroupName(),nodeGroup.getParentGroupId(),this.getSystemID(),nodeGroup.getGroupId());
if(list!=null && list.size()>0){
this.outHtmlString("<script>alert('i18n_NodeGroupManageAction.downloadExample.nodeGroupIsExists_n81i');history.back();</script>");
return null;
}
NodegroupTable group = (NodegroupTable) this.commonService.get(NodegroupTable.class, nodeGroup.getGroupId());
boolean flag = false;
if(group != null){
//下一级节点组
List listSub = this.commonService.find("from NodegroupTable where parentGroupId=?",nodeGroup.getGroupId());
//判断其父级是否为系统(0)
if(nodeGroup.getParentGroupId().equals(new Long(0))){
//如果是系统则直接判断其下一级
if(listSub!=null && listSub.size()>0){
NodegroupTable groupSub = (NodegroupTable)listSub.get(0);
if(nodeGroup.getViewLevel()<groupSub.getViewLevel()){
this.outHtmlString("<script>alert('i18n_NodeGroupManageAction.downloadExample.viewLevleTooSmall_n81i');history.back();</script>");
return null;
}
}
}else{
//上一级节点组
NodegroupTable groupParent = (NodegroupTable) this.commonService.get(NodegroupTable.class, nodeGroup.getParentGroupId());
//如果比父级节点组权限大
if(nodeGroup.getViewLevel()>groupParent.getViewLevel()){
this.outHtmlString("<script>alert('i18n_NodeGroupManageAction.downloadExample.viewLevleTooBig_n81i');history.back();</script>");
return null;
}else{//不大,再判断其下一级节点组
if(listSub!=null && listSub.size()>0){
NodegroupTable groupSub = (NodegroupTable)listSub.get(0);
if(nodeGroup.getViewLevel()<groupSub.getViewLevel()){
this.outHtmlString("<script>alert('i18n_NodeGroupManageAction.downloadExample.viewLevleTooSmall_n81i');history.back();</script>");
return null;
}
}
}
}
if(!group.getIsValid().equals(nodeGroup.getIsValid())){
flag = true;
}
group.setGroupName(nodeGroup.getGroupName());
group.setGroupType(nodeGroup.getGroupType());
group.setGroupDesc(nodeGroup.getGroupDesc());
group.setIsValid(nodeGroup.getIsValid());
group.setViewLevel(nodeGroup.getViewLevel());
group.setCreateUsergroupId(nodeGroup.getCreateUsergroupId());//查看权限的用户组
group.setSystemId(nodeGroup.getSystemId());//业务系统可以修改吗?:admin可以修改
// group.setParentGroupId(nodeGroup.getParentGroupId());//不可以改吧??
// group.setGroupLevel(nodeGroup.getGroupLevel());//不可以改吧??
// group.setLeafGroup(nodeGroup.getLeafGroup());//是否叶子节点组
// group.setShowIndex(nodeGroup.getShowIndex());//显示序号,不可改?
this.commonService.update(group);
//将更新操作写到操作日志中
this.addDBOperationRpt(commonService, "nodegroup_table", "UPDATE", nodeGroup.getGroupId());
this.outHtmlString("<script>alert('i18n_NodeGroupManageAction.downloadExample.success_n81i');this.location='nodeGroupManage!execute.do?action=queryNodeGroupInfo&showStopNGroup="+showStopNGroup+"'</script>");
}
if(flag){
// 用来实现即时向客户端发送脚本文件
this.sendPluginFile(group.getGroupId(), null,commonService);
this.sendNodeAndGroupId(group.getGroupId(), null,commonService); //通知NMSServer更新节点组的监控信息
this.getRequest().setAttribute("MSG","2");
}
commonService.commit();
}catch (Exception e){
commonService.rollback();
logger.error(e.getStackTrace());
e.printStackTrace();
this.outHtmlString("<script>alert('i18n_NodeGroupManageAction.downloadExample.faild_n81i');this.location='nodeGroupManage!execute.do?action=queryNodeGroupInfo&showStopNGroup="+showStopNGroup+"'</script>");
return null;
}
return null;
}
//根据父节点组id获取父节点组id及所有子节点组id
private String getAllSubNodeGroupIds(Long id) {
selectedNodeGroupIds.add(String.valueOf(id));
String hql = "select groupId from NodegroupTable where parentGroupId = " + id;
try
{
List list = this.commonService.find(hql);
for(Object obj:list) {
if(obj!=null) {
selectedNodeGroupIds.add(obj.toString());
getAllSubNodeGroupIds(Long.valueOf(obj.toString()));
}
}
} catch (Exception e)
{
logger.error(e.getStackTrace());
e.printStackTrace();
}
return StringUtils.join(selectedNodeGroupIds.toArray(), ",");
}
//根据父节点组id获取所有叶子节点组id
private String getAllLeafNodeGroupIds(Long id) {
String hql = "select groupId ,leafGroup from NodegroupTable where parentGroupId = " + id;
try
{
List<Object []> list = this.commonService.find(hql);
for(Object[] obj:list) {
if(obj!=null) {
if(obj[1]!=null&&"1".equals(obj[1])&&obj[0]!=null) {//是叶子节点组
leafNodeGroupIdsByPar.add(obj[0].toString());
} else if(obj[0]!=null) {
getAllLeafNodeGroupIds(Long.valueOf(obj[0].toString()));
}
}
}
} catch (Exception e)
{
e.printStackTrace();
}
return StringUtils.join(leafNodeGroupIdsByPar.toArray(), ",");
}
//停用节点组:
public String stopNodeGroupInfo(){
try{
commonService.beginTransaction();
if(ids!=null && ids.length>0){
String allIds = "";
//获得所有节点组及子节点组的id
for(int i=0; i<ids.length; i++){
getAllSubNodeGroupIds(ids[i]);
}
//整体更新
if(selectedNodeGroupIds.size()>0) {
allIds = StringUtils.join(selectedNodeGroupIds.toArray(), ",");
this.commonService.updateBySql("update NODEGROUP_TABLE set IS_VALID=0 where GROUP_ID in (" + allIds + ")");
String sqlCondition = "where GROUP_ID in (" + allIds + ")";
//将更新操作写到操作日志中
this.addDBOperationRpt(commonService, sqlCondition, "NODEGROUP_TABLE");
}
stopNode(allIds);
}
this.outHtmlString("<script>alert('i18n_NodeGroupManageAction.downloadExample.success_n81i');this.location='nodeGroupManage!execute.do?action=queryNodeGroupInfo&showStopNGroup="+showStopNGroup+"'</script>");
commonService.commit();
}catch (Exception e){
commonService.rollback();
logger.error(e.getStackTrace());
e.printStackTrace();
this.outHtmlString("<script>alert('i18n_NodeGroupManageAction.downloadExample.faild_n81i');this.location='nodeGroupManage!execute.do?action=queryNodeGroupInfo&showStopNGroup="+showStopNGroup+"'</script>");
return null;
}
return null;
}
//从所给的节点组中筛选出所有叶子节点组的id
private String getLeafNodeGroupId(String allIds) {
String hql = "select groupId from NodegroupTable where leafGroup=1 and groupId in ( " + allIds +")";
try
{
List list = this.commonService.find(hql);
for(Object obj:list) {
if(obj!=null) {
leafNodeGroupIds.add(obj.toString());
}
}
} catch (Exception e)
{
logger.error(e.getStackTrace());
e.printStackTrace();
}
return StringUtils.join(leafNodeGroupIds.toArray(), ",");
}
//获取所有子节点id
private String getAllSubNodeIds(Long id) {
String hql = "select nodeId from NodeTable where groupId = " + id;
try
{
List list = this.commonService.find(hql);
for(Object obj:list) {
if(obj!=null) {
nodeIds.add(obj.toString());
}
}
} catch (Exception e)
{
logger.error(e.getStackTrace());
e.printStackTrace();
}
return StringUtils.join(nodeIds.toArray(), ",");
}
//得到叶子节点和节点的对应map
private String getNodeGroupMapNode(Long id) {
try
{
String nodeIds = getAllSubNodeIds(id);
nodeGroupMap.put(String.valueOf(id), nodeIds);
} catch (Exception e)
{
logger.error(e.getStackTrace());
e.printStackTrace();
}
return nodeGroupMap.toString();
}
// 停用节点先找出叶子节点再找出所有叶子节点的节点id再进行更新. NODE_STATE=1表示节点为下线停用状态此时显示可以的操作为上线
private String stopNode(String allIds) {
try {
commonService.beginTransaction();
String leafNodeGroupIds = getLeafNodeGroupId(allIds);
String[] leafNodeGroupArray = leafNodeGroupIds.split(",");//所有叶子节点
for(int i=0;i<leafNodeGroupArray.length;i++) {
getAllSubNodeIds(Long.valueOf(leafNodeGroupArray[i]));//获取所有叶子节点组下的所有节点的id
// getNodeGroupMapNode(Long.valueOf(leafNodeGroupArray[i]));//得到叶子节点和节点的对应map
}
//整体更新
StringBuffer strb = new StringBuffer();
if(nodeIds.size()>0) {//所有节点
int ii=0;
for(String str : nodeIds){
if(ii!=0&&ii%1000==0){
strb.deleteCharAt(strb.length() - 1);
strb.append(") or NODE_ID in ( "+ str +",");
}else{
strb.append(str+ ",");
}
ii++;
}
if(strb.length()>0){
strb.deleteCharAt(strb.length() -1);
}
String sql = "update NODE_TABLE set NODE_STATE=1,STOP_USER_ID="+
this.getUserID()+",NODE_STOPTIME=sysdate where NODE_ID in (" + strb + ")";
this.commonService.updateBySql(sql);
String sqlCondition = "where NODE_ID in (" + allIds + ")";
//将更新操作写到操作日志中
this.addDBOperationRpt(commonService, sqlCondition, "NODE_TABLE");
}
commonService.commit();
} catch (Exception e) {
commonService.rollback();
logger.error(e.getStackTrace());
e.printStackTrace();
return null;
}
return null;
}
//启用节点组
public String startNodeGroupInfo(){
try{
commonService.beginTransaction();
if(ids!=null && ids.length>0){
if(isStartSubNodeGroup!=null&&"1".equals(isStartSubNodeGroup)) {//启用节点组的同时启用子节点组??
String allIds = "";
//获得所有节点组及子节点组的id
for(int i=0; i<ids.length; i++){
getAllSubNodeGroupIds(ids[i]);
}
//整体更新
if(selectedNodeGroupIds.size()>0) {
allIds = StringUtils.join(selectedNodeGroupIds.toArray(), ",");
this.commonService.updateBySql("update NODEGROUP_TABLE set IS_VALID=1 where GROUP_ID in (" + allIds + ")");
String sqlCondition = "where GROUP_ID in (" + allIds + ")";
//将更新操作写到操作日志中
this.addDBOperationRpt(commonService, sqlCondition, "NODEGROUP_TABLE");
}
startNode(allIds);//启用所有节点
} else {//启用节点组的同时,不启用子节点组
String allIds = StringUtils.join(ids,",");
//整体更新
if(allIds.length()>0) {
this.commonService.updateBySql("update NODEGROUP_TABLE set IS_VALID=1 where GROUP_ID in (" + allIds + ")");
String sqlCondition = "where GROUP_ID in (" + allIds + ")";
//将更新操作写到操作日志中
this.addDBOperationRpt(commonService, sqlCondition, "NODEGROUP_TABLE");
}
}
this.outHtmlString("<script>alert('i18n_NodeGroupManageAction.downloadExample.success_n81i');this.location='nodeGroupManage!execute.do?action=queryNodeGroupInfo&showStopNGroup="+showStopNGroup+"'</script>");
}
commonService.commit();
}catch (Exception e){
commonService.rollback();
logger.error(e.getStackTrace());
e.printStackTrace();
this.outHtmlString("<script>alert('i18n_NodeGroupManageAction.downloadExample.faild_n81i');this.location='nodeGroupManage!execute.do?action=queryNodeGroupInfo&showStopNGroup="+showStopNGroup+"'</script>");
return null;
}
return null;
}
// 启用节点: NODE_STATE=0表示节点为上线启用状态此时显示可以的操作为下线
public String startNode(String allIds) {
try {
commonService.beginTransaction();
String leafNodeGroupIds = getLeafNodeGroupId(allIds);//获取所有叶子节点组id
String[] leafNodeGroupArray = leafNodeGroupIds.split(",");//所有叶子节点
for(int i=0;i<leafNodeGroupArray.length;i++) {
getAllSubNodeIds(Long.valueOf(leafNodeGroupArray[i]));//获取所有叶子节点组下的所有节点的id
getNodeGroupMapNode(Long.valueOf(leafNodeGroupArray[i]));//得到叶子节点和节点的对应map
}
//整体更新
if(nodeIds.size()>0) {//所有节点
StringBuffer strb = new StringBuffer();
int ii=0;
for(String str : nodeIds){
if(ii!=0&&ii%1000==0){
strb.deleteCharAt(strb.length() - 1);
strb.append(") or NODE_ID in ( "+ str +",");
}else{
strb.append(str+ ",");
}
ii++;
}
if(strb.length()>0){
strb.deleteCharAt(strb.length() -1);
}
this.commonService.updateBySql("update NODE_TABLE set NODE_STATE=0 where NODE_ID in (" + strb + ")");
String sqlCondition = "where NODE_ID in (" + allIds + ")";
//将更新操作写到操作日志中
this.addDBOperationRpt(commonService, sqlCondition, "NODE_TABLE");
//通知NMSServer更新节点组的监控信息
for(String str : leafNodeGroupArray){
// 用来实现即时向客户端发送脚本文件
this.sendPluginFile(Long.valueOf(str), null,commonService);
this.sendNodeAndGroupId(Long.valueOf(str), null,commonService);
}
}
commonService.commit();
//this.outHtmlString("<script>alert('操作成功!');this.location='"+path+"/nodeGroupManage/nodeGroupManage.do?action=queryNodeGroupInfo'</script>");
} catch (Exception e) {
commonService.rollback();
logger.error(e.getStackTrace());
e.printStackTrace();
//this.outHtmlString("<script>alert('操作失败!');this.location='"+path+"/nodeGroupManage/nodeGroupManage.do?action=queryNodeGroupInfo'</script>");
return null;
}
return null;
}
//获取业务系统信息(当前业务系统及所有业务系统列表)+
public String getInitInfo(){
try {
//查询系统
boolean ADMFlag = this.getAdminMark();
this.getRequest().setAttribute("ADMFlag", ADMFlag);
if(ADMFlag){//如果是admin登陆则无限制
String hql = "from SystemTable where systemState='0'";
systemList = this.commonService.find(hql);//获取所有业务系统信息
}else{
system = (SystemTable)this.commonService.get(SystemTable.class, this.getSystemID());//获取当前业务系统信息
}
//查询当前用户所在的有效用户组
this.queryAllUserGroup();
} catch (Exception e) {
logger.error(e.getStackTrace());
e.printStackTrace();
}
return "addNodeGroupInfo";
}
//打开修改节点组信息页面
public String openUpdateNodeGroupInfo(){
try{
if(ids!=null && ids.length>0){
nodeGroupId = ids[0];
}
List list = this.commonService.find(
"from NodegroupTable where groupId=?", nodeGroupId);
if(list!=null && list.size()>0){
nodeGroup = (NodegroupTable)list.get(0);
}
boolean ADMFlag = this.getAdminMark();
this.getRequest().setAttribute("ADMFlag", ADMFlag);
if(ADMFlag){//如果是admin登陆则无限制
String hql = "from SystemTable where systemState='0'";
systemList = this.commonService.find(hql);
}else{
system = (SystemTable)this.commonService.get(SystemTable.class, this.getSystemID());
}
//查询当前用户所在的有效用户组
this.queryAllUserGroup();
}catch (Exception e){
logger.error(e.getStackTrace());
e.printStackTrace();
return null;
}
return "updateNodeGroupInfo";
}
//查看节点组详情
public String detailNodeGroupInfo(){
try{
List list = this.commonService.find(
"from NodegroupTable where groupId=?", nodeGroupId);
if(list!=null && list.size()>0){
nodeGroup = (NodegroupTable)list.get(0);
List syslist = this.commonService.find("from SystemTable where systemId=?", nodeGroup.getSystemId());
if(syslist!=null && syslist.size()>0){
SystemTable sys = (SystemTable)syslist.get(0);
nodeGroup.setSystemIdName(sys.getSystemName());
}
if (nodeGroup.getCreateUsergroupId()!=null && nodeGroup.getCreateUsergroupId().intValue()!=0) {
XtJsJbxx xtjsjbxx = (XtJsJbxx) this.commonService.get(
XtJsJbxx.class, nodeGroup.getCreateUsergroupId());
if (xtjsjbxx != null) {
nodeGroup.setUserGroupIdName(xtjsjbxx.getJsmc());
}
}
String hql = "from NodeTable where groupId = " + nodeGroup.getGroupId() + "";
nodeList = (List<NodeTable>)this.commonService.find(hql);
}
}catch (Exception e){
logger.error(e.getStackTrace());
e.printStackTrace();
return null;
}
return "detailNodeGroupInfo";
}
//查询当前用户所在的用户组,如果是admin的话则获取所有有效的用户组
private void queryAllUserGroup(){
try {
//查询当前用户所在的有效用户组
String hql2 = "from XtJsJbxx where zxbz=0 and jsbh in" +//zxbz注销标志0是有效1是无效
" (select jsbh from XtYhJsIndex where type=1 and yhbh='" + this.getUser().getYhbh() + "')";
if(this.getAdminMark()){//如果是admin的话查询所有用户组
hql2 = "from XtJsJbxx where zxbz=0 and type=1";//zxbz注销标志0是有效1是无效
}
allUserGroup = this.commonService.find(hql2);
} catch (Exception e) {
e.printStackTrace();
}
}
/**==========================================节点操作开始========================= ==========**/
//打开节点管理页面
public String nodeMgmtList(){
try{
String isValid = this.getRequest().getParameter("isValid");//叶子节点组的有效性
this.getRequest().setAttribute("fromWhere", fromWhere);
this.getRequest().setAttribute("isValid", isValid);
if(ids!=null && ids.length>0){
nodeGroupId = ids[0];
}
if (nodeGroupId != null)
{
List list = this.commonService.find(
"from NodegroupTable where groupId=?", nodeGroupId);
if(list!=null && list.size()>0){
nodeGroup = (NodegroupTable)list.get(0);
}
}
}catch (Exception e){
logger.error(e.getStackTrace());
e.printStackTrace();
return null;
}
return "nodeMgmtList";
}
/**
*
* 任务配置向导页面,节点下一步时验证节点组中的节点至少一个
* @author jsj May 6, 2013
* @version 1.0
* @return
*/
public String getNodeSize(){
try
{
if (nodeGroupId != null)
{
List list = this.commonService.find(
"from NodeTable where groupId=?", nodeGroupId);
if(list!=null && list.size()>0){
outJsonString(""+list.size());
}
}
} catch (Exception e)
{
logger.error(e.getStackTrace());
e.printStackTrace();
}
return null;
}
public CommonService getCommonService()
{
return commonService;
}
public void setCommonService(CommonService commonService)
{
this.commonService = commonService;
}
public String getAction()
{
return action;
}
public void setAction(String action)
{
this.action = action;
}
public String getPosition()
{
return position;
}
public void setPosition(String position)
{
this.position = position;
}
public List<NodegroupTable> getNodeGroupList()
{
return nodeGroupList;
}
public void setNodeGroupList(List<NodegroupTable> nodeGroupList)
{
this.nodeGroupList = nodeGroupList;
}
public NodegroupTable getNodeGroup()
{
return nodeGroup;
}
public void setNodeGroup(NodegroupTable nodeGroup)
{
this.nodeGroup = nodeGroup;
}
public Long getNodeGroupId()
{
return nodeGroupId;
}
public void setNodeGroupId(Long nodeGroupId)
{
this.nodeGroupId = nodeGroupId;
}
public Long[] getIds()
{
return ids;
}
public void setIds(Long[] ids)
{
this.ids = ids;
}
public List<XtJsJbxx> getAllUserGroup()
{
return allUserGroup;
}
public void setAllUserGroup(List<XtJsJbxx> allUserGroup)
{
this.allUserGroup = allUserGroup;
}
public String getNameVo()
{
return nameVo;
}
public void setNameVo(String nameVo)
{
this.nameVo = nameVo;
}
public String getDescVo()
{
return descVo;
}
public void setDescVo(String descVo)
{
this.descVo = descVo;
}
public String getShowStopNGroup() {
return showStopNGroup;
}
public void setShowStopNGroup(String showStopNGroup) {
this.showStopNGroup = showStopNGroup;
}
public List<Resource> getTreeList()
{
return treeList;
}
public void setTreeList(List<Resource> treeList)
{
this.treeList = treeList;
}
public SystemTable getSystem()
{
return system;
}
public void setSystem(SystemTable system)
{
this.system = system;
}
public List<SystemTable> getSystemList()
{
return systemList;
}
public void setSystemList(List<SystemTable> systemList)
{
this.systemList = systemList;
}
public List<NodeTable> getNodeList()
{
return nodeList;
}
public void setNodeList(List<NodeTable> nodeList)
{
this.nodeList = nodeList;
}
public String getIsStartSubNodeGroup()
{
return isStartSubNodeGroup;
}
public void setIsStartSubNodeGroup(String isStartSubNodeGroup)
{
this.isStartSubNodeGroup = isStartSubNodeGroup;
}
public String getGroupId()
{
return groupId;
}
public void setGroupId(String groupId)
{
this.groupId = groupId;
}
public Set<String> getLeafNodeGroupIdsByPar()
{
return leafNodeGroupIdsByPar;
}
public void setLeafNodeGroupIdsByPar(Set<String> leafNodeGroupIdsByPar)
{
this.leafNodeGroupIdsByPar = leafNodeGroupIdsByPar;
}
public String getFromWhere() {
return fromWhere;
}
public void setFromWhere(String fromWhere) {
this.fromWhere = fromWhere;
}
public String getIsComplete() {
return isComplete;
}
public void setIsComplete(String isComplete) {
this.isComplete = isComplete;
}
public String getType()
{
return type;
}
public void setType(String type)
{
this.type = type;
}
}