📄 orgcommand.java
字号:
package com.hongsoft.res.command;
import java.util.ArrayList;
import java.util.List;
import org.hibernate.Session;
import com.hongsoft.agile.Agile;
import com.hongsoft.agile.AgileConnection;
import com.hongsoft.res.dispatcher.BaseCommand;
import com.hongsoft.res.formbean.FormUtils;
import com.hongsoft.res.formbean.OrgFormBean;
import com.hongsoft.res.formbean.OrgTreeFormBean;
import com.hongsoft.res.formbean.UserSessionBean;
import com.hongsoft.res.pojo.OrgUnit;
import com.hongsoft.res.pojo.OrgUnitElement;
import com.hongsoft.res.pojo.ResManager;
import com.hongsoft.res.pojo.ResObjectElement;
public class OrgCommand extends BaseCommand {
/**
* 具体的处理过程
* @throws com.hongsoft.res.exception.BaseException
*/
public void command() throws Exception {
OrgFormBean bean= (OrgFormBean) request.getAttribute(ResParamName.ORG_FORM_BEAN_PARAM);
String returnView= request.getReturnView();
StringBuffer sb= new StringBuffer("res.org.");
String cmdType= request.getCommandType();
AgileConnection ac=Agile.connectToServer();
//实现具体的业务逻辑处理
if ("create".equals(cmdType)) {
createOrg(ac.getHibernateSession(),bean);
returnView= "facade";
request.setAttribute(ResParamName.TIP_PARAM, "成功创建组织!");
} else if ("modify".equals(cmdType)) {
modifyOrg(ac.getHibernateSession(),bean);
returnView= "facade";
request.setAttribute(ResParamName.TIP_PARAM, "组织修改成功!");
} else if ("delete".equals(cmdType)) {
ResManager.deleteOrgUnit(ac.getHibernateSession(),bean.getOrgID());
returnView= "deleteorgsucess";
} else if ("load".equals(cmdType)) {
loadOrg(ac.getHibernateSession(),bean);
} else if ("viewTree".equals(cmdType)) {
viewOrgTree(ac.getHibernateSession(),bean);
returnView= "viewTree";
}
Agile.disConnectServer(ac,true);
sb.append(returnView);
this.forward(sb.toString(), request, response);
}
/**
* 创建组织信息,同时将组织信息写入OrgFormBean中,设置request
* @param bean OrgFormBean
* @throws BaseException
*/
private void createOrg(Session session,OrgFormBean bean) throws Exception {
OrgUnit org= FormUtils.getOrg(bean);
long id= ResManager.createOrgUnit(session,bean.getParentID(), org, bean.getIsExtend());
bean.setOrgID(id);
request.setAttribute(ResParamName.ORG_FORM_BEAN_PARAM, bean);
}
/**
* 从orgUnitElement生成对象树<br>
* @param objele ResObjectElement
* @param orgTreeFormBean
* 备注:list存储的对象是:ResObjectElement,此方法将多层递归调用,调试时应考虑效率问题;
*/
private OrgTreeFormBean getTreeByElement(Session session,ResObjectElement objele, OrgTreeFormBean orgTreeFormBean)
throws Exception {
List list= objele.getChildren();
if (list == null || list.size() == 0) {
return orgTreeFormBean;
}
List treeList= new ArrayList(list.size());
for (int i= 0; i < list.size(); i++) {
ResObjectElement resObjele= (ResObjectElement) list.get(i);
OrgUnit orgUnit= ResManager.getOrgUnit(session,resObjele.getID());
OrgTreeFormBean suborgTreeFormBean= new OrgTreeFormBean(orgUnit.getId(), orgUnit.getName());
suborgTreeFormBean= getTreeByElement(session,resObjele, suborgTreeFormBean); //开始递归调用
treeList.add(suborgTreeFormBean);
}
orgTreeFormBean.addChildren(treeList);
return orgTreeFormBean;
}
/**
* 通过组织ID获取组织信息,并写入OrgFormBean,设置request
* @param bean OrgFormBean对象,该对象的uid必须已被赋值
* @throws BaseException
*/
private void loadOrg(Session session,OrgFormBean bean) throws Exception {
/**
* 因为是通过get方式只传入orgID字段信息,所以通过orgID返回的orgUnit再经过转换得到的trbean中丢失了parenID和parenName.
* new一个rtbean只是作保留使用,只需调整前端的传入方式,将parenName和parenID传入即可解决! by zgk
*/
OrgUnit orgunit= ResManager.getOrgUnit(session,bean.getOrgID());
OrgFormBean rtbean= FormUtils.getOrgFormBean(orgunit);
if (bean.getParentID() != 0) { //有父节点
OrgUnit parentOrgUnit= ResManager.getOrgUnit(session,bean.getParentID());
rtbean.setParentID(bean.getParentID());
rtbean.setParentName(parentOrgUnit.getName());
} else {
rtbean.setParentName("该组织没有上层组织");
}
request.setAttribute(ResParamName.ORG_FORM_BEAN_PARAM, rtbean);
}
/**
* 修改组织信息,同时将组织信息写入OrgFormBean中,设置request
* @param bean OrgFormBean
* @throws BaseException
*/
private void modifyOrg(Session session,OrgFormBean bean) throws Exception {
//使用ResManager.modifyOrg();
OrgUnit orgunit= FormUtils.getOrg(bean);
ResManager.modifyOrgUnit(session,orgunit);
request.setAttribute(ResParamName.ORG_FORM_BEAN_PARAM, bean);
}
/**
* 获取组织树状结构,将树状结构的组织信息写入OrgTreeFormBean中,设置request
* @param bean OrgFormBean
* @throws BaseException
*/
private void viewOrgTree(Session session,OrgFormBean bean) throws Exception {
//使用ResManager.getOrgUnitElement();
//先不判断全局用户和部门用户的搜索权限
//将结果存储到OrgTreeFormBean中
UserSessionBean us= request.getUserSessionBean();
OrgUnitElement orgUnitElement= ResManager.getOrgUnitElement(session,us.getOrgUnit().getId());
OrgUnit orgUnit= orgUnitElement.getOrgUnit(session);
OrgTreeFormBean orgTreeFormBean= new OrgTreeFormBean(orgUnit.getId(), orgUnit.getName());
orgTreeFormBean= getTreeByElement(session,orgUnitElement, orgTreeFormBean);
request.setAttribute(ResParamName.ORG_TREE_FORM_BEAN_PARAM, orgTreeFormBean);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -