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

📄 serproblemaction.java

📁 本例使用Java + Jsp 实现选择树的过程,主要使用Struts+JDBC/hibernate架构
💻 JAVA
字号:
/*
 * $Workfile: CustomDisposeAction.java
 * $ Copyright (c) 2007 Jama, International.
 * All rights reserved. Creator Jun Last Changed by: 
 * $Author: Jun$ On: 
 * $Date: * 2007-8-30 上午11:10:13$ 
 * $Revision: 1$
 */
package com.jama.rcrm.service.web;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.commons.beanutils.BeanUtils;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;

import com.jama.common.BeanFactory;
import com.jama.common.base.BaseDispatchAction;
import com.jama.common.exception.BaseAppException;
import com.jama.common.exception.ErrorCode;
import com.jama.common.exception.WebException;
import com.jama.common.taglib.GridModel;
import com.jama.common.taglib.QueryInfo;
import com.jama.common.taglib.TableHeadInfo;
import com.jama.jpf.orgnization.struts.form.OrgTreeNode;
import com.jama.rcrm.common.BeanNameConstants;
import com.jama.rcrm.service.business.SerProblemServise;
import com.jama.rcrm.service.business.dto.SerProblemDto;
import com.jama.rcrm.service.web.form.ProblemForm;

public class SerProblemAction extends BaseDispatchAction
{		
	/**
	 * 该方法将请求跳转到问题类型添加页面
	 * @param mapping
	 * @param form
	 * @param request
	 * @param response
	 * @return
	 */
	public ActionForward toAdd(ActionMapping mapping, ActionForm form,
			HttpServletRequest request, HttpServletResponse response)
	{
		checkUserPermission(getMenuId(request), PERMISSION_WRITE, request);

		// 从问题列表页面取到problemGuid作为子节点的父Id,传入添加页面
		String problemGuid = request.getParameter("problemGuid");
		
		request.setAttribute("pGuid", problemGuid);
		request.setAttribute("methods", "add");
		return mapping.findForward("toEditPage");
	}

	/**
	 * 该方法将保存问题类型
	 * @param mapping
	 * @param form
	 * @param request
	 * @param response
	 * @return
	 */ 
	public ActionForward add(ActionMapping mapping, ActionForm form,
			HttpServletRequest request, HttpServletResponse response)
	{	
		ProblemForm problemFrom = (ProblemForm) form;

		checkUserPermission(getMenuId(request), PERMISSION_WRITE, request);

		String parentProblemGuid = request.getParameter("pGuid");
		if("".equals(parentProblemGuid)||parentProblemGuid==null)
		{
			parentProblemGuid = "root";
		}	
		try
		{
			SerProblemDto serProblemDto = null;

			SerProblemServise serProblemServise = (SerProblemServise) BeanFactory
					                                   .getBeanByName(BeanNameConstants.SERVICE_PROBLEM_SERVICE);

			if ("".equals(parentProblemGuid) || parentProblemGuid == null)
			{
				serProblemDto = new SerProblemDto();
				serProblemDto.setParentProblemGuid(null);
				serProblemDto.setLevelNo((long) 0);
			} else
			{
				ProblemForm parent = serProblemServise.getProblemTypeById(parentProblemGuid);					
				serProblemDto = new SerProblemDto();
				serProblemDto.setParentProblemGuid(parent.getProblemGuid());
				serProblemDto.setLevelNo(parent.getLevelNo() + 1);
			}
			serProblemDto.setProblemName(problemFrom.getProblemName());
			serProblemDto.setDescription(problemFrom.getDescription());			
			serProblemServise.addProblemType(serProblemDto);
		}
		catch (Exception e)
		{
			throw new WebException(
					ErrorCode.ERROR_RCRM_WEB_SERVICE_ADD_PROBLEM, e);
		}
		this.showAlertMessage(request, "message.rcrm.submit.success");
		return mapping.findForward("toProblemList");
	}

	/**
	 * 该方法将请求跳转到编辑页面,以便修改数据
	 * @param mapping
	 * @param form
	 * @param request
	 * @param response
	 * @return
	 */ 
	public ActionForward toModify(ActionMapping mapping, ActionForm form,
			HttpServletRequest request, HttpServletResponse response)
	{
		ProblemForm problemFrom = null;
		checkUserPermission(getMenuId(request), PERMISSION_WRITE, request);

		String guid = request.getParameter("id");

		SerProblemServise serProblemServise = (SerProblemServise) BeanFactory
				                                  .getBeanByName(BeanNameConstants.SERVICE_PROBLEM_SERVICE);
		try
		{
			problemFrom = (ProblemForm) serProblemServise.getProblemTypeById(guid);
		}
		catch (Exception e)
		{
			throw new WebException(ErrorCode.ERROR_RCRM_WEB_SERVICE_VIEWUPDATE_PROBLEM, e);
		}		
		request.setAttribute("problemForm", problemFrom);
		request.setAttribute("methods", "modify");
		return mapping.findForward("toEditPage");
	}

	/**
	 * 该方法将修改后的数据存储
	 * @param mapping
	 * @param form
	 * @param request
	 * @param response
	 * @return
	 */ 
	public ActionForward modify(ActionMapping mapping, ActionForm form,
			HttpServletRequest request, HttpServletResponse response)
	{
		ProblemForm problemFrom = (ProblemForm) form;

		checkUserPermission(getMenuId(request), PERMISSION_WRITE, request);

		SerProblemServise serProblemServise = (SerProblemServise) BeanFactory
				                                  .getBeanByName(BeanNameConstants.SERVICE_PROBLEM_SERVICE);
		SerProblemDto serProblemDto = new SerProblemDto();

		try
		{
			BeanUtils.copyProperties(serProblemDto, problemFrom);
			serProblemServise.modifyProblemType(serProblemDto);
		}
		catch (Exception e)
		{
			throw new WebException(ErrorCode.ERROR_RCRM_WEB_SERVICE_UPDATE_PROBLEM, e);
		}
		this.showAlertMessage(request, "message.rcrm.submit.success");
		return mapping.findForward("toProblemList");
	}

	/**
	 * 该方法将问题类型设为不可用状态而不删除记录
	 * @param mapping
	 * @param form
	 * @param request
	 * @param response
	 * @return
	 */
	public ActionForward delete(ActionMapping mapping, ActionForm form,
			HttpServletRequest request, HttpServletResponse response)
	{
		String[] ids = request.getParameterValues("ids");
		ids = ids[0].split(",");

		checkUserPermission(getMenuId(request), PERMISSION_WRITE, request);
		SerProblemServise serProblemServise = (SerProblemServise) BeanFactory
				                                  .getBeanByName(BeanNameConstants.SERVICE_PROBLEM_SERVICE);
		try
		{
			serProblemServise.deleteProblemType(ids);
		}
		catch (Exception e)
		{
			throw new WebException(ErrorCode.ERROR_RCRM_WEB_SERVICE_DELETE_PROBLEM, e);
		}
		this.showAlertMessage(request, "message.rcrm.submit.success");
		return mapping.findForward("toProblemList");
	}

	/**
	 * 该方法将所有问题类型记录输出到页面,使用自定义标签实现翻页功能
	 * @param mapping
	 * @param form
	 * @param request
	 * @param response
	 * @return
	 * @throws BaseAppException
	 */ 
	public ActionForward toList(ActionMapping mapping, ActionForm form,
			HttpServletRequest request, HttpServletResponse response) throws BaseAppException
	{
		checkUserPermission(getMenuId(request), PERMISSION_WRITE, request);				
		try
		{
			int colCount = 3; // 列表页面数据显示的列数
			GridModel gridModel = new GridModel(colCount);			
			
			gridModel.addHeadColumn(new TableHeadInfo("类型名称","getProblemName", "150", "problemName", "left", 0));	
			gridModel.addHeadColumn(new TableHeadInfo("描述", "getDescription", "250", "description", "left", 1));
			gridModel.addHeadColumn(new TableHeadInfo("上级类型名称", "getParentName", "150", "parentName", "left",	2));

			QueryInfo queryInfo = new QueryInfo(-1, "", request.getRequestURI());
			queryInfo.setSortColName("problem_Guid");// 对应数据库默认排序
			queryInfo.setSortType("asc");// 按什么排序
			gridModel.setQueryInfo(queryInfo);// 加载条件

			if (request.getParameter("GridListTable") != null)
			{
				loadQueryInfo(gridModel.getQueryInfo(), request);
			}
			gridModel.getQueryInfo().setPageLink(gridModel.getQueryInfo().getPageLink()	+ "?method=toList");
			SerProblemServise serProblemServise = (SerProblemServise) BeanFactory.getBeanByName(BeanNameConstants.SERVICE_PROBLEM_SERVICE);
			List problemList = serProblemServise.getProblem(queryInfo);
			gridModel.setDataList(problemList);			
			request.setAttribute("gridModel", gridModel);
			saveToken(request);
		}
		catch (Exception e)
		{
			throw new WebException(ErrorCode.ERROR_RCRM_WEB_SERVICE_LIST_PROBLEM, e);
		}	
		return mapping.findForward("toProblemListPage");
	}
	
	/**
	 * 得到内容自关联数据的List,将该List转换成OrgTreeNode组织架构树节点的List
	 * 封装进Request,封装名为:orgTreeNodeList
	 * */
	@SuppressWarnings("unchecked")
	public ActionForward toTree(ActionMapping mapping, ActionForm form,
			HttpServletRequest request, HttpServletResponse response) throws BaseAppException
	{
		checkUserPermission(getMenuId(request), PERMISSION_WRITE, request);	
		SerProblemServise serProblemServise = (SerProblemServise) BeanFactory
		                            .getBeanByName(BeanNameConstants.SERVICE_PROBLEM_SERVICE);
		
		List<SerProblemDto> problem = null;     //从DAO中返回的SerProblemDto列表
		List orgTreeNodeList = null;                //将要放入request中传向页面显示的列表
		try
		{
			problem = serProblemServise.getProblemList();
			orgTreeNodeList = new ArrayList();
			//将problemList中SerProblemDto的属性复制到相关的OrgTreeNode的filed中去
			for(Object obj:problem)                
			{
				SerProblemDto dto =(SerProblemDto) obj;
				OrgTreeNode treeNode = new OrgTreeNode();
				
				treeNode.setId(dto.getProblemGuid());
				treeNode.setName(dto.getProblemName());
				treeNode.setFather(dto.getParentProblemGuid());
				treeNode.setOpen(true);
				treeNode.setTarget("");
				treeNode.setUrl(String.valueOf(dto.getLevelNo()));
				treeNode.setType("");
				orgTreeNodeList.add(treeNode);
			}	

		} catch (Exception e)
		{
			throw new WebException(ErrorCode.ERROR_RCRM_WEB_SERVICE_DELETE_PROBLEM, e);
		}		
		HashMap<String, SerProblemDto> checkedMap = new HashMap<String, SerProblemDto>();
		
		Iterator iter = problem.iterator();
		while (iter.hasNext())
		{
			SerProblemDto problemDto= (SerProblemDto) iter.next();
			checkedMap.put(problemDto.getProblemGuid(), problemDto);
		}
		
		StringBuffer htmlCode = new StringBuffer();
		//获取临时子节点集,root为数据库内唯一根节点
		List<OrgTreeNode> tempList = getChildren(orgTreeNodeList, "root");   
		
		buildHtmlCode(htmlCode, orgTreeNodeList, tempList, "-1", "root", checkedMap);
		String htmlStr = htmlCode.toString();
		request.setAttribute("htmlCode", htmlStr);
		return new ActionForward("/rcrm/service/problemTree.jsp") ;
	}
	
	/**
	 * 将选择树的数据在此拼装成Html标签及字符串存储在StringBuffer里,在页面打印
	 * @param htmlCode
	 * @param list
	 * @param tempList
	 * @param key
	 * @param wbsKeyCode
	 * @param map
	 */
	private void buildHtmlCode(StringBuffer htmlCode, List<OrgTreeNode> list, List tempList, String key,
			String wbsKeyCode, HashMap map)
	{
		htmlCode.append("<div id='noco_div_" + key.trim() + "'  style='display:block'>");
		htmlCode.append("<table width=100% align=center border=0 cellpadding='1' cellspacing='1'>");
		String checked = "";
		for (int i = 0; i < tempList.size(); i++)
		{
			//checked = "";
			OrgTreeNode org = (OrgTreeNode) tempList.get(i);
			if (map.containsKey(org.getId()))
				//checked = "checked";
			htmlCode.append("<tr><td colspan=2 class='tr1px'><input type='checkbox' " + checked +"parentId='"+org.getName().trim()
					+ "' onclick='notifyClick(this)' id='" + wbsKeyCode + "_" + org.getId().trim() + "' value='"
					+ org.getId().trim()+ "' ><a onclick='javascript:makeEnable(\"" + org.getId().trim() + "\")' style='cursor:hand'>"
					+ org.getName() + "</a></input></td></tr>");
			List tempChildrenList = this.getChildren(list, org.getId().trim());
			if (tempChildrenList != null && tempChildrenList.size() > 0)
			{
				htmlCode.append("<tr><td class='tr1px' width=30px></td><td>");
				this.buildHtmlCode(htmlCode, list, tempChildrenList, org.getId().trim(), wbsKeyCode + "_"
						+ org.getId().trim(), map);
				htmlCode.append("</td></tr>");
			}
		}
		htmlCode.append("</table></div>");
	}
	
	/**
	 * 获得以Key为父节点的子节点
	 * @param orgTreeNodeList
	 * @param key
	 * @return
	 */
	private List<OrgTreeNode> getChildren(List<OrgTreeNode> orgTreeNodeList, String key)
	{
		List<OrgTreeNode> listChildren = new ArrayList<OrgTreeNode>();
		for (int i = 0; i < orgTreeNodeList.size(); i++)
		{
			OrgTreeNode org = (OrgTreeNode) orgTreeNodeList.get(i);
			if (org.getFather().trim().equals(key))
				listChildren.add(org);
		}
		return listChildren;
	}
}

⌨️ 快捷键说明

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