examaction.java

来自「培训考试系统代码」· Java 代码 · 共 1,685 行 · 第 1/5 页

JAVA
1,685
字号
package com.huawei.icd30.agt.exam;

import java.util.Random;
import java.util.ArrayList;
import javax.servlet.http.*;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.action.Action;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import com.huawei.icd30.agt.util.*;
import com.huawei.icd30.common.db.*;
import com.huawei.icd30.common.systemconfig.*;

/**
 * <p> 从ExamForm类中提取从页面提交的信息,
 * 实现考试安排的增加、修改、删除、查询、审查、审批与取消操作,
 * 操作失败定向到出错页面。</p>
 * <p> </p>
 * <p> </p>
 * @author 龙燕茜
 * @version 1.0
 */

public class ExamAction extends Action
{
    public ActionForward perform(ActionMapping mapping,
           ActionForm form, HttpServletRequest req,
           HttpServletResponse res)
    {
        //判断session是否超时
     //   ActionForward checkForword = Tools.checkSession(req,res);
     //   if(checkForword != null)
     //   {
     //        return checkForword;
     //   }

        //获取操作类型
        String opeType = ((ExamForm)form).getOpeType();//从form中获取

        if(opeType.equalsIgnoreCase(OperatorFlagCode.EXAM_ADD))
        {//增加考试安排
             return addExam(mapping,form,req,res);
        }
        else if(opeType.equalsIgnoreCase(OperatorFlagCode.EXAM_ADD_BYCLASS))
        {//增加考试安排,按班级
             return addExamByClass(mapping,form,req,res);
        }
        else if(opeType.equalsIgnoreCase(OperatorFlagCode.EXAM_QUERY_DRAFT)
             || opeType.equalsIgnoreCase(OperatorFlagCode.EXAM_QUERY_CHECK)
             ||opeType.equalsIgnoreCase(OperatorFlagCode.EXAM_QUERY_APPROVE))
        {//获取考试安排中的草稿、审查箱、审批箱列表
             return getOpeBoxList(mapping,form,req,res);
        }
        else if(opeType.equalsIgnoreCase(OperatorFlagCode.EXAM_MODIFY))
        {//修改考试安排
             return modifyExam(mapping,form,req,res);
        }
        else if(opeType.equalsIgnoreCase(OperatorFlagCode.EXAM_MODIFY_BYCLASS))
        {//修改考试安排
             return modifyExamByClass(mapping,form,req,res);
        }
        else if(opeType.equalsIgnoreCase(OperatorFlagCode.EXAM_DELETE))
        {//删除考试安排
             return deleteExam(mapping,form,req,res);
        }
        else if(Integer.parseInt(opeType) >= Integer.parseInt(OperatorFlagCode.EXAM_SUBMIT_CHECK) &&
                 Integer.parseInt(opeType) <= Integer.parseInt(OperatorFlagCode.EXAM_CANCEL))

        {//对考试安排进行提交审查、审查通过、驳回等操作
             return dealExam(mapping,form,req,res);
        }
        else if(opeType.equalsIgnoreCase(OperatorFlagCode.EXAM_QUERY))
        {//查询考试
            return queryExam(mapping,form,req,res);
        }
        else if(opeType.equalsIgnoreCase(OperatorFlagCode.EXAM_QUERY_DETAIL))
        {//查询考试详细信息
            return queryExamDetail(mapping,form,req,res);
        }
        else if(opeType.equalsIgnoreCase(OperatorFlagCode.EXAM_GET_STATINFO))
        {//获取考试统计信息
           return getStatInfo(mapping,form,req,res);
        }
        else if(opeType.equalsIgnoreCase(OperatorFlagCode.EXAM_SCORE_QUERY))
        {//获取考试统计信息
           return queryScore(mapping,form,req,res);
        }
        else if(opeType.equalsIgnoreCase(OperatorFlagCode.EXAM_SCORE_INPUT))
        {
          return getScoreCondition(mapping,form,req,res);
        }
        ///:huangyuyuan add at 2004-05-28
        else if (opeType.equalsIgnoreCase(OperatorFlagCode.EXAM_SCORE_ANALYSE)) {
          return getScoreAnalyse(mapping, form, req, res);
        }
        else if (opeType.equalsIgnoreCase(OperatorFlagCode.EXAM_SCORE_ANALYSE_SEARCH)) {
          return queryScoreAnalyse(mapping, form, req, res);
        }
        else if (opeType.equalsIgnoreCase(OperatorFlagCode.EXAM_SCORE_LOST_QUERY)) {
          return getScoreLost(mapping, form, req, res);
        }
        else if (opeType.equalsIgnoreCase(OperatorFlagCode.EXAM_SCORE_LOST_SEARCH)) {
          return queryScoreLost(mapping, form, req, res);
        }
        ///:~
        //dingjiangtao  2004-6-3
        else if(opeType.equalsIgnoreCase(OperatorFlagCode.EXAM_SCORE_DELETE))
        {
          return deleteRecord(mapping,form,req,res);
        }
        //end
        else
        {//操作类型错误,定向到错误页面,错误编码:UNKNOW_ERROR
             req.setAttribute("errorId",ErrorCode.UNKNOW_ERROR);
             return (mapping.findForward("error"));
        }
    }

    /**
     * 增加考试安排操作
     */
    private ActionForward addExam(ActionMapping mapping,
           ActionForm form, HttpServletRequest req,
           HttpServletResponse res)
    {

       //从ExamFrom中获取数据
       String title = ((ExamForm)form).getTitle();
       String subject = ((ExamForm)form).getSubject();
       String paperId = ((ExamForm)form).getPaperId();
       String cityId = ((ExamForm)form).getCityId();
       String classId = ((ExamForm)form).getClassId();
       int examTime = ((ExamForm)form).getExamTime();
       int maxCount = ((ExamForm)form).getMaxCount();
       int passScore = ((ExamForm)form).getPassScore();
       String teacherId = ((ExamForm)form).getTeacherId();
       String startTime = ((ExamForm)form).getStartTime();
       String endTime = ((ExamForm)form).getEndTime();
       int scope = ((ExamForm)form).getScope();
       String creator = (String)req.getSession().getAttribute("workerNo");
       int state = ((ExamForm)form).getState();
       String checkHander = ((ExamForm)form).getCheckHandler();
       String staffIds = ((ExamForm)form).getStaffIds();
       String groupIds= ((ExamForm)form).getGroupIds();
       int publicResult = ((ExamForm)form).getPublicResult();

       //定义连接的实例
       SysDbConn aplcoms = null;
       try
       {
           //得到一个连接的实例
           aplcoms = SysConnPool.getInstance().getAplComs();

           //调用存储过程P_Agt_ExamAdd完成考试安排的增加
           aplcoms.preparedSP();

           aplcoms.setString(1 ,title);
           aplcoms.setString(2 ,subject);
           aplcoms.setString(3 ,paperId);
           aplcoms.setString(4 ,cityId);
           aplcoms.setString(5 ,classId);
           aplcoms.setInt(6 ,examTime);
           aplcoms.setInt(7 ,maxCount);
           aplcoms.setInt(8 ,passScore);
           aplcoms.setString(9 ,teacherId);
           aplcoms.setString(10 ,startTime);
           aplcoms.setString(11 ,endTime);
           aplcoms.setInt(12 ,scope);
           aplcoms.setString(13 ,creator);
           aplcoms.setInt(14 ,state);
           aplcoms.setString(15 ,checkHander);
           aplcoms.setString(16 ,staffIds);
           aplcoms.setString(17 ,groupIds);
           aplcoms.setInt(18 ,publicResult);

           SysDataSet ds = aplcoms.csCommonSP("P_Agt_ExamAdd");
           SysRecord rc = ds.getParamSet() ;
           if(rc==null || rc.getInt(0) == OperatorFlagCode.OPERATOR_EORROR)
           {//增加考试安排失败
               //定向到错误页面,错误号为EXAM_ADD_ERROR;
               req.setAttribute("errorId",ErrorCode.EXAM_ADD_ERROR);
               return (mapping.findForward("error"));
           }
           //增加考试安排成功
           //定向到成功页面,成功号为ADDEXAM_SUCCESS;
           req.setAttribute("successId",SuccessCode.EXAM_ADD_SUCCESS);
           return (mapping.findForward("success"));
       }
       catch (SysDbException aple)
       {//捕获CommonService系统异常,定向到出错页面
           //输出异常信息
           aple.printStackTrace();
           req.setAttribute("errorId",ErrorCode.COMMONSERVICE_ERROR);
           return (mapping.findForward("error"));
       }
       catch(java.sql.SQLException sqle)
       {//捕获调用aplcoms异常,定向到出错页面
           // 输出异常信息
           sqle.printStackTrace();
           req.setAttribute("errorId",ErrorCode.DATABASE_ERROR);
           return (mapping.findForward("error"));
       }
       catch(Exception e)
       {//捕获未知异常,定向到出错页面
           //输出异常信息
           e.printStackTrace();
           req.setAttribute("errorId",ErrorCode.UNKNOW_ERROR);
           return (mapping.findForward("error"));
       }
       finally
       {//关闭连接实例
           if(aplcoms != null)
           {
              aplcoms.close();
           }
       }
    }


    /**
     * 增加考试安排操作,按班级
     */
    private ActionForward addExamByClass(ActionMapping mapping,
           ActionForm form, HttpServletRequest req,
           HttpServletResponse res)
    {

       //从ExamFrom中获取数据
       String title = ((ExamForm)form).getTitle();
       String subject = ((ExamForm)form).getSubject();
       String cityId = ((ExamForm)form).getCityId();
       String classId = ((ExamForm)form).getClassId();
       int examTime = ((ExamForm)form).getExamTime();
       int maxCount = ((ExamForm)form).getMaxCount();
       int passScore = ((ExamForm)form).getPassScore();
       String teacherId = ((ExamForm)form).getTeacherId();
       String startTime = ((ExamForm)form).getStartTime();
       String endTime = ((ExamForm)form).getEndTime();
       String creator = (String)req.getSession().getAttribute("workerNo");
       int state = ((ExamForm)form).getState();
       String checkHander = ((ExamForm)form).getCheckHandler();
       int publicResult = ((ExamForm)form).getPublicResult();
       String examClassId = req.getParameter("examClassId");
       String paperId1 = req.getParameter("paperId1");
       String paperId2 = req.getParameter("paperId2");
       String paperId3 = req.getParameter("paperId3");
       String paperId4 = req.getParameter("paperId4");

       //定义连接的实例
       SysDbConn aplcoms = null;
       try
       {
           //得到一个连接的实例
           aplcoms = SysConnPool.getInstance().getAplComs();

           //调用存储过程P_Agt_ExamAdd完成考试安排的增加
           aplcoms.preparedSP();

           aplcoms.setString(1 ,title);
           aplcoms.setString(2 ,subject);
           aplcoms.setString(3 ,cityId);
           aplcoms.setString(4 ,classId);
           aplcoms.setInt(5 ,examTime);
           aplcoms.setInt(6 ,maxCount);
           aplcoms.setInt(7 ,passScore);
           aplcoms.setString(8 ,teacherId);
           aplcoms.setString(9 ,startTime);
           aplcoms.setString(10 ,endTime);
           aplcoms.setInt(11 ,3);
           aplcoms.setString(12 ,creator);
           aplcoms.setInt(13 ,state);
           aplcoms.setString(14 ,checkHander);
           aplcoms.setInt(15 ,publicResult);
           aplcoms.setString(16 ,examClassId);
           aplcoms.setString(17 ,paperId1);
           aplcoms.setString(18 ,paperId2);
           aplcoms.setString(19 ,paperId3);
           aplcoms.setString(20 ,paperId4);

           SysDataSet ds = aplcoms.csCommonSP("P_Agt_ExamAddByClass");
           SysRecord rc = ds.getParamSet() ;
           if(rc==null || rc.getInt(0) == OperatorFlagCode.OPERATOR_EORROR)
           {//增加考试安排失败
               //定向到错误页面,错误号为EXAM_ADD_ERROR;
               req.setAttribute("errorId",ErrorCode.EXAM_ADD_ERROR);
               return (mapping.findForward("error"));
           }
           //增加考试安排成功
           //定向到成功页面,成功号为ADDEXAM_SUCCESS;
           req.setAttribute("successId",SuccessCode.EXAM_ADD_SUCCESS);
           return (mapping.findForward("success"));
       }
       catch (SysDbException aple)
       {//捕获CommonService系统异常,定向到出错页面
           //输出异常信息
           aple.printStackTrace();
           req.setAttribute("errorId",ErrorCode.COMMONSERVICE_ERROR);
           return (mapping.findForward("error"));
       }
       catch(java.sql.SQLException sqle)
       {//捕获调用aplcoms异常,定向到出错页面
           // 输出异常信息
           sqle.printStackTrace();
           req.setAttribute("errorId",ErrorCode.DATABASE_ERROR);
           return (mapping.findForward("error"));
       }
       catch(Exception e)
       {//捕获未知异常,定向到出错页面
           //输出异常信息
           e.printStackTrace();
           req.setAttribute("errorId",ErrorCode.UNKNOW_ERROR);
           return (mapping.findForward("error"));
       }
       finally
       {//关闭连接实例
           if(aplcoms != null)
           {
              aplcoms.close();
           }
       }
    }



    /**
     * 获取考试安排中的草稿、审查箱、审批箱列表
     */
    private ActionForward getOpeBoxList(ActionMapping mapping,
           ActionForm form, HttpServletRequest req,
           HttpServletResponse res)
    {

       //从ExamFrom中获取操作类型
       String opeType = ((ExamForm)form).getOpeType();//从form中获取
       //从Session中获取工号
       String staffNo = (String)req.getSession().getAttribute("workerNo");

⌨️ 快捷键说明

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