📄 serproblemaction.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 + -