/** * 處理學生退選線上選課紀錄之方法 * * @param mapping org.apache.struts.action.ActionMapping object * @param form org.apache.struts.action.ActionForm object * @param request javax.servlet.http.HttpServletRequest object * @param response javax.servlet.http.HttpServletResponse object * @return org.apache.struts.action.ActionForward object * @exception java.lang.Exception */ public ActionForward deleteCourse( ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception { DynaActionForm aForm = (DynaActionForm) form; ActionMessages messages = validateInputForUpdate(aForm, Toolket.getBundle(request)); if (!messages.isEmpty()) { saveErrors(request, messages); return mapping.findForward(IConstants.ACTION_MAIN_NAME); } else { List<SeldDataInfo> aList = getSeldDataListByIndex(request); if (!aList.isEmpty()) { CourseManager cm = (CourseManager) getBean(COURSE_MANAGER_BEAN_NAME); // 取得選課欲退選之Oid列表 StringBuffer seldBuf = new StringBuffer(); for (SeldDataInfo info : aList) { seldBuf.append(info.getSeldOid()).append(","); } String inSyntax = StringUtils.substringBeforeLast(seldBuf.toString(), ","); log.info("Seld Oid SQL IN Syntax : " + inSyntax); String studentNo = aForm.getString("stdNo").toUpperCase(); MemberManager mm = (MemberManager) getBean(MEMBER_MANAGER_BEAN_NAME); String classNo = mm.findStudentByNo(studentNo).getDepartClass(); // 只有第一階段不會檢查選課人數下限 cm.txRemoveSelectedSeld(studentNo, classNo, 1, inSyntax, false); String idno = getUserCredential(request.getSession(false)).getMember().getIdno(); for (SeldDataInfo info : aList) { cm.txSaveAdcdHistory(info.getDtimeOid(), studentNo.toUpperCase(), idno, "D"); } messages.add(ActionMessages.GLOBAL_MESSAGE, new ActionMessage("Message.DeleteSuccessful")); saveMessages(request, messages); // aForm.initialize(mapping); Toolket.resetCheckboxCookie(response, SELD_LIST_NAME); setContentPage(request.getSession(false), "course/OnlineAddRemoveCourse.jsp"); } else { messages = new ActionMessages(); messages.add( ActionMessages.GLOBAL_MESSAGE, new ActionMessage("Course.onlineAddRemoveCourse.unselected")); saveErrors(request, messages); return mapping.findForward(IConstants.ACTION_MAIN_NAME); } } return list(mapping, form, request, response); }
public ActionForward unspecified( ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) { MemberManager mm = (MemberManager) getBean(IConstants.MEMBER_MANAGER_BEAN_NAME); StudAffairManager sm = (StudAffairManager) getBean("studAffairManager"); HttpSession session = request.getSession(false); DynaActionForm aForm = (DynaActionForm) form; aForm.initialize(mapping); UserCredential user = (UserCredential) session.getAttribute("Credential"); String idno = user.getMember().getIdno(); Map papers = mm.getAssessPaperByIdno(idno); session.setAttribute("AssessPaperList", papers.get("papers")); session.setAttribute("AssessPaperTotal", papers.get("total")); session.setAttribute("AssessPaperAvg", papers.get("avgScore")); setContentPage(session, "personnel/AssessPaperPrint.jsp"); return mapping.findForward("Main"); }
/** * 處理確定加選學生低修高選課內容之方法 * * @param mapping org.apache.struts.action.ActionMapping object * @param form org.apache.struts.action.ActionForm object * @param request javax.servlet.http.HttpServletRequest object * @param response javax.servlet.http.HttpServletResponse object * @return org.apache.struts.action.ActionForward object * @exception java.lang.Exception */ public ActionForward addHigherCourse( ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception { MemberManager mm = (MemberManager) getBean(MEMBER_MANAGER_BEAN_NAME); CourseManager cm = (CourseManager) getBean(COURSE_MANAGER_BEAN_NAME); ActionMessages messages = new ActionMessages(); Seld seld = (Seld) request.getSession(false).getAttribute("seldInfoForOnline"); try { Student student = mm.findStudentByNo(seld.getStudentNo()); cm.txAddSelectedSeld(seld, student, "1", true); String idno = getUserCredential(request.getSession(false)).getMember().getIdno(); cm.txSaveAdcdHistory(seld.getDtimeOid(), student.getStudentNo().toUpperCase(), idno, "A"); messages.add(ActionMessages.GLOBAL_MESSAGE, new ActionMessage("Message.CreateSuccessful")); saveMessages(request, messages); Toolket.resetCheckboxCookie(response, SELD_LIST_NAME); return list(mapping, form, request, response); } catch (SeldException se) { ActionMessages errors = new ActionMessages(); errors.add( ActionMessages.GLOBAL_MESSAGE, new ActionMessage("Course.errorN1", se.getMessage())); saveErrors(request, errors); if (se.getMessage().indexOf("衝堂") != StringUtils.INDEX_NOT_FOUND) { // 目前會拒絕衝堂課程進行加選 Dtime dtime = cm.findDtimeBy(seld.getDtimeOid()); Csno csno = cm.findCourseInfoByCscode(dtime.getCscode()); request.setAttribute("csnoInfo", csno); request.setAttribute("classInfo", Toolket.getClassFullName(dtime.getDepartClass())); setContentPage(request.getSession(false), "course/ConflictList.jsp"); return list(mapping, form, request, response); } else return list(mapping, form, request, response); } }
/** * 處理學生課程衝突後確定加選之方法 * * @param mapping org.apache.struts.action.ActionMapping object * @param form org.apache.struts.action.ActionForm object * @param request javax.servlet.http.HttpServletRequest object * @param response javax.servlet.http.HttpServletResponse object * @return org.apache.struts.action.ActionForward object * @exception java.lang.Exception */ public ActionForward conflictAdd( ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception { // 選課人數上線於前端JavaScript判斷 // 跨選設定不允許須阻擋並顯示訊息 Seld seld = (Seld) request.getSession(false).getAttribute("seldInfoForOnline"); MemberManager mm = (MemberManager) getBean(MEMBER_MANAGER_BEAN_NAME); Student student = mm.findStudentByNo(seld.getStudentNo()); CourseManager cm = (CourseManager) getBean(COURSE_MANAGER_BEAN_NAME); // false代表不做衝堂判斷 cm.txAddSelectedSeld(seld, student, "1", false); cm.txAddSeldConflictInfo( seld, getUserCredential(request.getSession(false)).getMember(), student, "1"); ActionMessages messages = new ActionMessages(); messages.add(ActionMessages.GLOBAL_MESSAGE, new ActionMessage("Message.CreateSuccessful")); saveMessages(request, messages); Toolket.resetCheckboxCookie(response, SELD_LIST_NAME); return list(mapping, form, request, response); }
/** * 處理確定加選學生選課內容之方法 * * @param mapping org.apache.struts.action.ActionMapping object * @param form org.apache.struts.action.ActionForm object * @param request javax.servlet.http.HttpServletRequest object * @param response javax.servlet.http.HttpServletResponse object * @return org.apache.struts.action.ActionForward object * @exception java.lang.Exception */ public ActionForward add( ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception { CourseManager cm = (CourseManager) getBean(COURSE_MANAGER_BEAN_NAME); HttpSession session = request.getSession(false); DynaActionForm aForm = (DynaActionForm) form; Seld seld = processSeldByForm(aForm); session.setAttribute("seldInfoForOnline", seld); Dtime dtime = cm.findDtimeBy(seld.getDtimeOid()); ActionMessages messages = validateInputForUpdate(aForm, Toolket.getBundle(request)); if (!messages.isEmpty()) { saveErrors(request, messages); return mapping.findForward(IConstants.ACTION_MAIN_NAME); } else { try { // 會以紙本作業完成加選,無需考慮衝堂問題 // 選課人數上線於前端JavaScript判斷 // 跨選設定不允許須阻擋並顯示訊息 // 會顯示衝堂訊息 MemberManager mm = (MemberManager) getBean(MEMBER_MANAGER_BEAN_NAME); ScoreManager sm = (ScoreManager) getBean(IConstants.SCORE_MANAGER_BEAN_NAME); Student student = mm.findStudentByNo(seld.getStudentNo()); ScoreHist scoreHist = new ScoreHist(student.getStudentNo()); List<ScoreHist> scoreHistList = sm.findScoreHistBy(scoreHist); String[] cscodeHist = new String[0]; Float[] scoreList = new Float[0]; float passScore = Toolket.getPassScoreByDepartClass(student.getDepartClass()); for (ScoreHist hist : scoreHistList) { cscodeHist = (String[]) ArrayUtils.add(cscodeHist, hist.getCscode().toUpperCase()); // 抵免要給分數,不然就會被當做無修課記錄而被加選成功 if ("6".equals(hist.getEvgrType())) scoreList = (Float[]) ArrayUtils.add( scoreList, hist.getScore() != null ? hist.getScore() : passScore); else scoreList = (Float[]) ArrayUtils.add(scoreList, hist.getScore()); } int ind = 0, startIndex = 0; boolean isHist = false; do { ind = ArrayUtils.indexOf(cscodeHist, seld.getCscode().toUpperCase(), startIndex); startIndex = ind + 1; // 判斷是否選過且及格 isHist = ind != StringUtils.INDEX_NOT_FOUND && scoreList[ind] != null && scoreList[ind] >= passScore; } while (!isHist && ind != StringUtils.INDEX_NOT_FOUND); // 特殊班級(跨校生等)無條件加選 String[] specialDepartClass = {"1152A", "1220", "122A", "122B", "2220"}; String[] addGrade = {"42", "52"}; // 2技學生年級要+2 int stuGrade = ArrayUtils.contains(specialDepartClass, student.getDepartClass()) ? 9 : Integer.parseInt(StringUtils.substring(student.getDepartClass(), 4, 5)); stuGrade = ArrayUtils.contains(addGrade, StringUtils.substring(student.getDepartClass(), 1, 3)) ? stuGrade + 2 : stuGrade; int dtimeGrade = Integer.parseInt(StringUtils.substring(dtime.getDepartClass(), 4, 5)); if (isHist) { messages.add( ActionMessages.GLOBAL_MESSAGE, new ActionMessage("Course.errorN1", "歷年資料查詢到已修過該科目,請確認,謝謝!!")); saveErrors(request, messages); } else if (stuGrade >= dtimeGrade) { // 判斷學生年級與課程所開班級年級 cm.txAddSelectedSeld(seld, student, "1", true); String idno = getUserCredential(request.getSession(false)).getMember().getIdno(); cm.txSaveAdcdHistory(seld.getDtimeOid(), student.getStudentNo().toUpperCase(), idno, "A"); if (ind != StringUtils.INDEX_NOT_FOUND) messages.add( ActionMessages.GLOBAL_MESSAGE, new ActionMessage("Course.errorN1", "該科目於歷年資料有查詢到,但該科目未及格,所以加選成功。")); else messages.add( ActionMessages.GLOBAL_MESSAGE, new ActionMessage("Message.CreateSuccessful")); saveMessages(request, messages); } else { messages.add( ActionMessages.GLOBAL_MESSAGE, new ActionMessage( "Course.messageN1", "注意:學生低修高年級課程,加選作業尚未完成!<br/>" + " 按下[再次確定]鍵後課程才會加入學生選課資料中。")); saveErrors(request, messages); setContentPage(request.getSession(false), "course/OnlineAddHigherCourse.jsp"); return mapping.findForward(IConstants.ACTION_MAIN_NAME); } Toolket.resetCheckboxCookie(response, SELD_LIST_NAME); return list(mapping, form, request, response); } catch (SeldException se) { ActionMessages errors = new ActionMessages(); errors.add( ActionMessages.GLOBAL_MESSAGE, new ActionMessage("Course.errorN1", se.getMessage())); saveErrors(request, errors); if (se.getMessage().indexOf("衝堂") != StringUtils.INDEX_NOT_FOUND) { // 目前會拒絕衝堂課程進行加選 dtime = cm.findDtimeBy(seld.getDtimeOid()); Csno csno = cm.findCourseInfoByCscode(dtime.getCscode()); request.setAttribute("csnoInfo", csno); request.setAttribute("classInfo", Toolket.getClassFullName(dtime.getDepartClass())); setContentPage(request.getSession(false), "course/ConflictList.jsp"); return list(mapping, form, request, response); } else return list(mapping, form, request, response); } } }
public ActionForward print( ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws JRException, IOException, ServletException { MemberManager mm = (MemberManager) getBean(IConstants.MEMBER_MANAGER_BEAN_NAME); StudAffairManager sm = (StudAffairManager) getBean("studAffairManager"); StudAffairDAO dao = (StudAffairDAO) getBean("studAffairDAO"); HttpSession session = request.getSession(false); DynaActionForm aForm = (DynaActionForm) form; UserCredential user = (UserCredential) session.getAttribute("Credential"); String qty = aForm.getString("qty").trim(); boolean setupPrinter = false; boolean isPrint = false; ActionMessages messages = new ActionMessages(); if (!qty.equals("")) { String idno = user.getMember().getIdno(); String prefix = idno.substring(idno.length() - 5); int q = Integer.parseInt(qty); String[] codes = new String[q]; String rano = prefix + this.getRandom(4); String hql = "From AssessPaper Where serviceNo='" + rano + "' And idno='" + idno + "'"; // 建立服務編號 boolean isUniq = false; for (int j = 0; j < q; j++) { while (true) { rano = prefix + this.getRandom(4); isUniq = true; if (dao.submitQuery(hql).isEmpty()) { // 檢查服務編號是否重複 for (int k = 0; k < j; k++) { if (rano == codes[k]) { isUniq = false; break; } } if (isUniq) { codes[j] = rano; break; } } } } // Insert into DB ActionMessages msg = mm.addNewAssessPaper(idno, codes); if (!msg.isEmpty()) { messages.add( ActionMessages.GLOBAL_MESSAGE, new ActionMessage("MessageN1", "滿意度調查列印資料新增失敗:" + msg)); saveErrors(request, messages); setContentPage(request, "personnel/AssessPaperPrint.jsp"); return mapping.findForward(IConstants.ACTION_MAIN_NAME); } // TODO: print the paper in pdf format String reportSourceFile = "/WEB-INF/reports/AssessPaper.jrxml"; String reportCompiledFile = "/WEB-INF/reports/AssessPaper.jasper"; List<Object> printData = new ArrayList<Object>(); ServletContext context = request.getSession().getServletContext(); JasperReportUtils.initJasperReportsClasspath(request); printData = fillPrintData(codes); DecimalFormat df = new DecimalFormat(",##0.0"); File reportFile = null; reportFile = new File(context.getRealPath(reportCompiledFile)); // 需要時再編譯即可 // if (!reportFile.exists()) { JasperReportUtils.compileJasperReports(context.getRealPath(reportSourceFile)); reportFile = new File(context.getRealPath(reportCompiledFile)); if (!reportFile.exists()) throw new JRRuntimeException("查無\"AssessPaper.jasper\"檔案,請電洽電算中心,謝謝!!"); // } Map<String, String> parameters = new HashMap<String, String>(); JasperReport jasperReport = (JasperReport) JRLoader.loadObject(reportFile.getPath()); parameters.put("idno", idno); parameters.put("userName", user.getMember().getName()); parameters.put("PrintDate", Toolket.Date2Str(new Date())); // 列印日期 String[] fields = { "serviceNo0", "serviceNo1", "serviceNo2", "serviceNo3", "serviceNo4", "serviceNo5", "serviceNo6", "serviceNo7", "serviceNo8", "serviceNo9" }; JasperPrint jasperPrint = JasperFillManager.fillReport( jasperReport, parameters, new HibernateQueryResultDataSource(printData, fields)); // jasperPrint. // 列印或預覽 if (isPrint) { JasperPrintManager.printReport(jasperPrint, setupPrinter); } else { byte[] bytes = JasperRunManager.runReportToPdf( jasperReport, parameters, new HibernateQueryResultDataSource(printData, fields)); Calendar td = Calendar.getInstance(); String ran = "" + (td.get(Calendar.MINUTE)) + (td.get(Calendar.SECOND)) + (td.get(Calendar.MILLISECOND)); String ranDir = "/WEB-INF/reports/temp/" + ran; File tempdir = new File(context.getRealPath(ranDir)); if (!tempdir.exists()) tempdir.mkdirs(); OutputStream os = new BufferedOutputStream( new FileOutputStream(new File(context.getRealPath(ranDir + "/AssessPaper.pdf")))); JasperExportManager.exportReportToPdfStream(jasperPrint, os); JasperReportUtils.printPdfToFrontEnd(response, bytes); os.close(); Toolket.deleteDIR(tempdir); return null; } } else { messages.add(ActionMessages.GLOBAL_MESSAGE, new ActionMessage("MessageN1", "請輸入欲列印張數!")); saveErrors(request, messages); } setContentPage(request, "personnel/AssessPaperPrint.jsp"); return unspecified(mapping, form, request, response); }
/** 取得成績未上傳老師名單並寄發e-mail, cc給學務單位 */ @SuppressWarnings("unchecked") @Override public void run() { StudAffairManager sm = (StudAffairManager) Global.context.getBean(IConstants.STUD_AFFAIR_MANAGER_BEAN_NAME); StudAffairDAO dao = (StudAffairDAO) Global.context.getBean("studAffairDAO"); ScoreManager scm = (ScoreManager) Global.context.getBean(IConstants.SCORE_MANAGER_BEAN_NAME); MemberManager mm = (MemberManager) Global.context.getBean(IConstants.MEMBER_MANAGER_BEAN_NAME); String email = ""; Calendar start = null; Calendar end = null; List<String> depts = sm.findCampusDepartment(); String hql = ""; String err = ""; // Send email for Department that Teacher not upload score data which will expire start = Calendar.getInstance(); start.add(Calendar.DATE, -8); List<Map> notUpload = new ArrayList<Map>(); // Send email for Teacher not upload score data will expired try { notUpload = scm.findScoreNotUpload(depart, level, scope); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } String teachedId = ""; Empl empl = new Empl(); DEmpl dempl = new DEmpl(); int cnt = 0; for (Map notupMap : notUpload) { teachedId = notupMap.get("teacherID").toString(); empl = mm.findEmplByIdno(teachedId); if (empl != null) { if (empl.getEmail() != null) { email = empl.getEmail(); } else { email = ""; } } else { dempl = mm.findDEmplByIdno(teachedId); if (dempl.getEmail() != null) { email = dempl.getEmail(); } else { email = ""; } } if (!email.equals("")) { // if(notupMap.get("teacherId").toString().equalsIgnoreCase("D120148934")|| // notupMap.get("teacherId").toString().equalsIgnoreCase("F120603503")){ // log.debug("email:" + email + ",is valid: " + // Toolket.isValidEmail(email)); if (Toolket.isValidEmail(email)) { // TODO:test only if (cnt == 0) { err = this.sendEmail(notupMap, "*****@*****.**"); cnt++; // break; } err = this.sendEmail(notupMap, email); err += err; } // } } } if (!err.equals("")) { sendDeptEmail("SysAdmin", err); } }