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

📄 orgcommand.java

📁 java实现的可配置的工作流引擎,采用jsp+javabean实现
💻 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 + -