List of usage examples for org.apache.commons.lang3 StringUtils substring
public static String substring(final String str, int start, int end)
Gets a substring from the specified String avoiding exceptions.
A negative start position can be used to start/end n characters from the end of the String.
The returned substring starts with the character in the start position and ends before the end position.
From source file:tw.edu.chit.struts.action.course.ReportPrintAction.java
/** * ?//from w w w . ja va 2 s. c om * * @param mapping org.apache.struts.action.ActionMapping object * @param form org.apache.struts.action.ActionForm object * @param request request javax.servlet.http.HttpServletRequest object * @param response response javax.servlet.http.HttpServletResponse object * @param sterm */ @SuppressWarnings("unchecked") private void printCourseDataPrint(ActionMapping mapping, DynaActionForm form, HttpServletRequest request, HttpServletResponse response, String sterm) throws Exception { HttpSession session = request.getSession(false); AdminManager am = (AdminManager) getBean(IConstants.ADMIN_MANAGER_BEAN_NAME); MemberManager mm = (MemberManager) getBean(IConstants.MEMBER_MANAGER_BEAN_NAME); CourseManager cm = (CourseManager) getBean(IConstants.COURSE_MANAGER_BEAN_NAME); ScoreManager sm = (ScoreManager) getBean(IConstants.SCORE_MANAGER_BEAN_NAME); ServletContext context = request.getSession().getServletContext(); Integer year = cm.getSchoolYear(); List<Clazz> clazzes = sm.findClassBy(new Clazz(processClassInfo(form)), getUserCredential(session).getClassInChargeAry(), true); if (!clazzes.isEmpty()) { File templateXLS = new File(context.getRealPath("/WEB-INF/reports/CourseDataPrint.xls")); HSSFWorkbook workbook = Toolket.getHSSFWorkbook(templateXLS); HSSFFont fontSize12 = workbook.createFont(); fontSize12.setFontHeightInPoints((short) 12); fontSize12.setFontName("Arial Unicode MS"); HSSFSheet sheet = workbook.getSheetAt(0); Toolket.setCellValue(sheet, 0, 0, "?" + year + "?"); Toolket.setCellValue(sheet, 0, 30, "" + new SimpleDateFormat("yyyy/MM/dd").format(new Date())); int index = 2, boys = 0, girls = 0; boolean flag = false; String departClass = null, optValue = null; Dtime dtime = null; Empl empl = null; Csno csno = null; List<Object> objs = null; List<DtimeTeacher> dtimeTeachers = null; List<String> csGroups = null; List<Student> stmds = null; Object[] data = null; String[] no = { "50000", "T0001", "T0002" }; String[] no1 = { "", "", "", "", "()", "()", "()", "()", "()", "()" }; String[] no2 = { "", "" }; String[] english = { "S0351", "S0352", "S0353", "S0391", "T0090", "T0350", "T0351", "T0352", "T0360", "T0B20", "TD890", "TG321", "TH821", "THQ20", "TP3W0", "TQ090" }; String[] japan = { "T0161" }; StringBuffer buffer = new StringBuffer(); String hql = "SELECT d, cs FROM Dtime d, Csno cs " + "WHERE d.cscode = cs.cscode " + "AND d.sterm = ? AND d.departClass = ?"; String hql1 = "SELECT DISTINCT cg.cname FROM CsGroup cg, CsGroupSet cs " + "WHERE cg.oid = cs.groupOid AND cs.cscode = ? ORDER BY cg.oid"; for (Clazz clazz : clazzes) { departClass = clazz.getClassNo(); if (Toolket.isDelayClass(departClass)) continue; objs = am.find(hql, new Object[] { sterm, departClass }, -1); for (Object o : objs) { data = (Object[]) o; dtime = (Dtime) data[0]; csno = (Csno) data[1]; stmds = cm.findSeldStudentByDtimeOid(dtime.getOid()); if (!ArrayUtils.contains(no, dtime.getCscode()) && !stmds.isEmpty()) { csGroups = am.find(hql1, new Object[] { dtime.getCscode() }, -1); if (csGroups.isEmpty()) Toolket.setCellValue(sheet, index, 0, ""); else { buffer = new StringBuffer(); for (String cg : csGroups) buffer.append(cg).append(","); Toolket.setCellValue(sheet, index, 0, StringUtils.substring(buffer.toString(), 0, buffer.toString().length() - 1)); // ?? } Toolket.setCellValue(sheet, index, 1, ""); // Toolket.setCellValue(sheet, index, 2, "D".equalsIgnoreCase(clazz.getSchoolType()) ? "0" : ("N".equalsIgnoreCase(clazz.getSchoolType()) ? "1" : "2")); // Toolket.setCellValue(sheet, index, 3, Toolket.getSchoolNoBy(clazz)); // / Toolket.setCellValue(sheet, index, 4, StringUtils.abbreviate(csno.getChiName(), 64)); // ?? Toolket.setCellValue(sheet, index, 5, StringUtils.abbreviate(Toolket.getDepartName(departClass), 25)); // Toolket.setCellValue(sheet, index, 6, ""); // Toolket.setCellValue(sheet, index, 7, "1"); // flag = false; for (String noValue : no1) { if (csno.getChiName().endsWith(noValue)) { flag = true; break; } } if (!flag) { for (String noValue : no2) { if (StringUtils.contains(csno.getChiName(), noValue)) { flag = true; break; } } } Toolket.setCellValue(sheet, index, 8, flag ? "1" : "0"); // ? optValue = "1".equals(dtime.getOpt()) ? "0" : ("2".equals(dtime.getOpt()) ? "1" : "3"); Toolket.setCellValue(sheet, index, 9, optValue); // ? Toolket.setCellValue(sheet, index, 10, dtime.getCredit().toString()); // Toolket.setCellValue(sheet, index, 11, dtime.getThour().toString()); // ? Toolket.setCellValue(sheet, index, 12, ""); // ? Toolket.setCellValue(sheet, index, 13, clazz.getGrade()); // Toolket.setCellValue(sheet, index, 14, clazz.getClassName()); // ? Toolket.setCellValue(sheet, index, 15, "http://www.cust.edu.tw/www/info/intro_en.php?coursenum=" + dtime.getOid()); // ? Toolket.setCellValue(sheet, index, 16, "http://www.cust.edu.tw/www/info/intro_obj.php?coursenum=" + dtime.getOid()); // Toolket.setCellValue(sheet, index, 17, ""); // ? buffer = new StringBuffer(); empl = mm.findEmplByIdno(dtime.getTechid()); if (empl != null) buffer.append(empl.getCname()).append(","); dtimeTeachers = cm.getDtimeTeacherBy(dtime.getOid().toString()); for (DtimeTeacher dt : dtimeTeachers) buffer.append(dt.getChiName2()).append(","); Toolket.setCellValue(sheet, index, 18, StringUtils.substring(buffer.toString(), 0, buffer.toString().length() - 1)); // ? Toolket.setCellValue(sheet, index, 19, ""); // Toolket.setCellValue(sheet, index, 20, ""); // if (ArrayUtils.contains(english, csno.getCscode())) { Toolket.setCellValue(sheet, index, 21, ""); // 1 Toolket.setCellValue(sheet, index, 22, ""); // 2 } else if (ArrayUtils.contains(japan, csno.getCscode())) { Toolket.setCellValue(sheet, index, 21, ""); // 1 Toolket.setCellValue(sheet, index, 22, ""); // 2 } else { Toolket.setCellValue(sheet, index, 21, ""); // 1 Toolket.setCellValue(sheet, index, 22, ""); // 2 } Toolket.setCellValue(sheet, index, 23, ""); // Toolket.setCellValue(sheet, index, 24, ""); // 1 Toolket.setCellValue(sheet, index, 25, ""); // 2 Toolket.setCellValue(sheet, index, 26, StringUtils.abbreviate(csno.getEngName(), 255)); // ?? Toolket.setCellValue(sheet, index, 27, "0"); // Toolket.setCellValue(sheet, index, 28, StringUtils.contains(csno.getChiName(), "") ? "2" : Toolket.getCourseStyleBy(dtime.getElearning())); // Toolket.setCellValue(sheet, index, 29, empl == null ? "" : Toolket.getTeacherSourceBy(empl.getUnit())); // ? boys = 0; girls = 0; for (Student student : stmds) { if ("1".equals(student.getSex())) boys++; else if ("2".equals(student.getSex())) girls++; } Toolket.setCellValue(sheet, index, 30, String.valueOf(boys)); // Toolket.setCellValue(sheet, index++, 31, String.valueOf(girls)); // } } } File tempDir = new File( context.getRealPath("/WEB-INF/reports/temp/" + getUserCredential(session).getMember().getIdno() + (new SimpleDateFormat("yyyyMMdd").format(new Date())))); if (!tempDir.exists()) tempDir.mkdirs(); File output = new File(tempDir, "CourseDataPrint.xls"); FileOutputStream fos = new FileOutputStream(output); workbook.write(fos); fos.close(); JasperReportUtils.printXlsToFrontEnd(response, output); output.delete(); tempDir.delete(); } else { Map<String, String> param = new HashMap<String, String>(); File image = new File(context.getRealPath("/pages/images/2002chitS.jpg")); param.put("IMAGE", image.getAbsolutePath()); byte[] bytes = JasperRunManager.runReportToPdf(JasperReportUtils.getNoResultReport(context), param, new JREmptyDataSource()); JasperReportUtils.printPdfToFrontEnd(response, bytes); } }
From source file:tw.edu.chit.struts.action.deptassist.ReportPrintAction.java
/** * ?/*from w ww .jav a 2s . co m*/ * * @param mapping org.apache.struts.action.ActionMapping object * @param form org.apache.struts.action.ActionForm object * @param request request javax.servlet.http.HttpServletRequest object * @param response response javax.servlet.http.HttpServletResponse object * @param sterm */ @SuppressWarnings("unchecked") private void printCalculate(ActionMapping mapping, DynaActionForm form, HttpServletRequest request, HttpServletResponse response, String sterm) throws Exception { HttpSession session = request.getSession(false); AdminManager am = (AdminManager) getBean(ADMIN_MANAGER_BEAN_NAME); MemberManager mm = (MemberManager) getBean(IConstants.MEMBER_MANAGER_BEAN_NAME); CourseManager cm = (CourseManager) getBean(IConstants.COURSE_MANAGER_BEAN_NAME); ScoreManager sm = (ScoreManager) getBean(IConstants.SCORE_MANAGER_BEAN_NAME); ServletContext context = request.getSession().getServletContext(); String thisYear = cm.getNowBy("School_year"); String thisTerm = am.findTermBy(PARAMETER_SCHOOL_TERM); List<Clazz> clazzes = sm.findClassBy(new Clazz(processClassInfo(form)), getUserCredential(session).getClassInChargeAry(), false); int thisTermCounts = 0, lastTermCounts = 0; String departClass = null, deptCode = null, histDeptCode = null, currentDeptCode = null, chiName = null; ScoreHist scoreHist = null; List<Student> students = null; List<ScoreHist> scoreHistList = null; List<Map> seldInfo = null; List csnos = null; if (!clazzes.isEmpty()) { HSSFWorkbook workbook = new HSSFWorkbook(); HSSFSheet sheet = workbook.createSheet("?"); sheet.setColumnWidth(0, 3000); sheet.setColumnWidth(1, 3000); sheet.setColumnWidth(2, 5000); sheet.setColumnWidth(3, 5000); sheet.setColumnWidth(4, 5000); sheet.addMergedRegion(new CellRangeAddress(0, 0, 0, 4)); HSSFFont fontSize16 = workbook.createFont(); fontSize16.setFontHeightInPoints((short) 16); fontSize16.setFontName("Arial Unicode MS"); HSSFFont fontSize10 = workbook.createFont(); fontSize10.setFontHeightInPoints((short) 10); fontSize10.setFontName("Arial Unicode MS"); // Header Toolket.setCellValue(workbook, sheet, 0, 0, "?", fontSize16, HSSFCellStyle.ALIGN_CENTER, false, 35.0F, null); // Column Header Toolket.setCellValue(workbook, sheet, 1, 0, "", fontSize10, HSSFCellStyle.ALIGN_CENTER, true, null); Toolket.setCellValue(workbook, sheet, 1, 1, "??", fontSize10, HSSFCellStyle.ALIGN_CENTER, true, null); Toolket.setCellValue(workbook, sheet, 1, 2, "?", fontSize10, HSSFCellStyle.ALIGN_CENTER, true, null); Toolket.setCellValue(workbook, sheet, 1, 3, "??", fontSize10, HSSFCellStyle.ALIGN_CENTER, true, null); Toolket.setCellValue(workbook, sheet, 1, 4, "?", fontSize10, HSSFCellStyle.ALIGN_CENTER, true, null); int index = 2; for (Clazz clazz : clazzes) { departClass = clazz.getClassNo(); deptCode = StringUtils.substring(departClass, 3, 4); if (Toolket.isDelayClass(departClass) || Toolket.isLiteracyClass(departClass)) continue; students = mm.findStudentsByClassNo(departClass); if (!students.isEmpty()) { if (thisYear.equals(request.getParameter("year")) && thisTerm.equals(sterm)) { // (Seld) for (Student student : students) { seldInfo = cm.findStudentSeldCourse(student.getStudentNo(), sterm); if (!seldInfo.isEmpty()) { for (Map m : seldInfo) { currentDeptCode = StringUtils.substring((String) m.get("depart_class"), 3, 4); if (!deptCode.equalsIgnoreCase(currentDeptCode) && !Toolket.isLiteracyClass((String) m.get("depart_class"))) { thisTermCounts++; Toolket.setCellValue(workbook, sheet, index, 0, student.getStudentNo(), fontSize10, HSSFCellStyle.ALIGN_CENTER, true, null); Toolket.setCellValue(workbook, sheet, index, 1, student.getStudentName(), fontSize10, HSSFCellStyle.ALIGN_CENTER, true, null); Toolket.setCellValue(workbook, sheet, index, 2, Toolket.getClassFullName(student.getDepartClass()), fontSize10, HSSFCellStyle.ALIGN_CENTER, true, null); Toolket.setCellValue(workbook, sheet, index, 3, Toolket.getClassFullName((String) m.get("depart_class")), fontSize10, HSSFCellStyle.ALIGN_CENTER, true, null); Toolket.setCellValue(workbook, sheet, index++, 4, (String) m.get("chi_name"), fontSize10, HSSFCellStyle.ALIGN_CENTER, true, null); break; } } } } } else { // ?(ScoreHist) for (Student student : students) { scoreHist = new ScoreHist(student.getStudentNo()); scoreHist.setSchoolYear((short) Integer.parseInt(request.getParameter("year"))); scoreHist.setSchoolTerm(sterm); scoreHistList = sm.findScoreHistBy(scoreHist); HIST: { if (!scoreHistList.isEmpty()) { for (ScoreHist hist : scoreHistList) { if (StringUtils.isNotBlank(hist.getStdepartClass()) && !Toolket.isLiteracyClass(hist.getStdepartClass())) { histDeptCode = StringUtils.substring(hist.getStdepartClass(), 3, 4); if (!deptCode.equalsIgnoreCase(histDeptCode)) { lastTermCounts++; Toolket.setCellValue(workbook, sheet, index, 0, student.getStudentNo(), fontSize10, HSSFCellStyle.ALIGN_CENTER, true, null); Toolket.setCellValue(workbook, sheet, index, 1, student.getStudentName(), fontSize10, HSSFCellStyle.ALIGN_CENTER, true, null); Toolket.setCellValue(workbook, sheet, index, 2, Toolket.getClassFullName(student.getDepartClass()), fontSize10, HSSFCellStyle.ALIGN_CENTER, true, null); Toolket.setCellValue(workbook, sheet, index, 3, Toolket.getClassFullName(hist.getStdepartClass()), fontSize10, HSSFCellStyle.ALIGN_CENTER, true, null); csnos = cm.getCsnameBy(hist.getCscode()); if (!csnos.isEmpty()) chiName = ((Csno) csnos.get(0)).getChiName(); else chiName = ""; Toolket.setCellValue(workbook, sheet, index++, 4, chiName, fontSize10, HSSFCellStyle.ALIGN_CENTER, true, null); break HIST; } } } } } } } } } File tempDir = new File( context.getRealPath("/WEB-INF/reports/temp/" + getUserCredential(session).getMember().getIdno() + (new SimpleDateFormat("yyyyMMdd").format(new Date())))); if (!tempDir.exists()) tempDir.mkdirs(); File output = new File(tempDir, "Calculate.xls"); FileOutputStream fos = new FileOutputStream(output); workbook.write(fos); fos.close(); JasperReportUtils.printXlsToFrontEnd(response, output); output.delete(); tempDir.delete(); System.out.println("This Term: " + thisTermCounts); System.out.println("Last Term: " + lastTermCounts); } }
From source file:tw.edu.chit.struts.action.deptassist.ReportPrintAction.java
/** * /*from w w w .j a va 2 s .co m*/ * * @param mapping org.apache.struts.action.ActionMapping object * @param form org.apache.struts.action.ActionForm object * @param request request javax.servlet.http.HttpServletRequest object * @param response response javax.servlet.http.HttpServletResponse object * @param sterm */ @SuppressWarnings("unchecked") private void printDeptStdSkillList3(ActionMapping mapping, DynaActionForm form, HttpServletRequest request, HttpServletResponse response, String sterm) throws Exception { HttpSession session = request.getSession(false); AdminManager am = (AdminManager) getBean(IConstants.ADMIN_MANAGER_BEAN_NAME); MemberManager mm = (MemberManager) getBean(MEMBER_MANAGER_BEAN_NAME); Member member = (Member) getUserCredential(session).getMember(); Empl empl = mm.findEmplByOid(member.getOid()); ServletContext context = request.getSession().getServletContext(); CodeEmpl codeEmpl = new CodeEmpl(); codeEmpl.setIdno(empl.getUnit()); Example example4CodeEmpl = Example.create(codeEmpl).ignoreCase().enableLike(MatchMode.START); List<CodeEmpl> codeEmpls = (List<CodeEmpl>) am.findSQLWithCriteria(CodeEmpl.class, example4CodeEmpl, null, null); Calendar cal = Calendar.getInstance(); Calendar cal1 = (Calendar) cal.clone(); Calendar cal2 = (Calendar) cal.clone(); if (StringUtils.isNotBlank(form.getString("licenseValidDateStart")) || StringUtils.isNotBlank(form.getString("licenseValidDateEnd"))) { Date from = StringUtils.isBlank(form.getString("licenseValidDateStart")) ? null : Toolket.parseNativeDate(form.getString("licenseValidDateStart")); // ??? Date to = StringUtils.isBlank(form.getString("licenseValidDateEnd")) ? Calendar.getInstance().getTime() : Toolket.parseNativeDate(form.getString("licenseValidDateEnd")); cal1.setTime(from); cal1.set(Calendar.HOUR_OF_DAY, 0); cal1.set(Calendar.MINUTE, 0); cal1.set(Calendar.SECOND, 0); cal1.set(Calendar.MILLISECOND, 0); cal2.setTime(to); cal2.set(Calendar.HOUR_OF_DAY, 23); cal2.set(Calendar.MINUTE, 59); cal2.set(Calendar.SECOND, 59); cal2.set(Calendar.MILLISECOND, 999); } String hql = "SELECT COUNT(*) CT, ss.licenseValidDate LVD, ss.licenseCode LC, " + "s.depart_class DC1, s.sex S1, gs.depart_class DC2, gs.sex S2 " + "FROM StdSkill ss LEFT JOIN stmd s ON ss.studentNo = s.student_no " + "LEFT JOIN Gstmd gs ON ss.studentNo = gs.student_no " + "WHERE ss.deptNo = ? AND ss.licenseValidDate >= ? AND ss.licenseValidDate <= ? " + "GROUP BY ss.licenseValidDate, s.depart_class, s.sex, " + "gs.depart_class, gs.sex " + "ORDER BY ss.licenseValidDate, s.depart_class, " + "s.sex, gs.depart_class, gs.sex"; List<Map> ret = (List<Map>) am.findBySQL(hql, new Object[] { //codeEmpls.get(0).getIdno().trim(), cal1.getTime(),cal2.getTime() }); empl.getUnit(), cal1.getTime(), cal2.getTime() }); DateFormat df = new SimpleDateFormat("yyyy/MM/dd"); HSSFWorkbook workbook = new HSSFWorkbook(); HSSFSheet sheet = workbook.createSheet(""); sheet.setColumnWidth(0, 1800); sheet.setColumnWidth(1, 2000); sheet.setColumnWidth(2, 2000); sheet.setColumnWidth(3, 3000); sheet.setColumnWidth(4, 5000); sheet.setColumnWidth(5, 3000); sheet.setColumnWidth(6, 8000); sheet.setColumnWidth(7, 3000); sheet.setColumnWidth(8, 4000); sheet.setColumnWidth(9, 2200); sheet.setColumnWidth(10, 2200); sheet.addMergedRegion(new CellRangeAddress(0, 0, 0, 10)); HSSFFont fontSize12 = workbook.createFont(); fontSize12.setFontHeightInPoints((short) 12); fontSize12.setFontName("Arial Unicode MS"); HSSFFont fontSize10 = workbook.createFont(); fontSize10.setFontHeightInPoints((short) 10); fontSize10.setFontName("Arial Unicode MS"); // Header Toolket.setCellValue(workbook, sheet, 0, 0, "?" + Toolket.getEmpUnit(empl.getUnit()) + " (" + df.format(cal1.getTime()) + "~" + df.format(cal2.getTime()) + ")", fontSize12, HSSFCellStyle.ALIGN_CENTER, false, 35.0F, null); // Column Header Toolket.setCellValue(workbook, sheet, 1, 0, "?", fontSize10, HSSFCellStyle.ALIGN_CENTER, true, null); Toolket.setCellValue(workbook, sheet, 1, 1, "", fontSize10, HSSFCellStyle.ALIGN_CENTER, true, null); Toolket.setCellValue(workbook, sheet, 1, 2, "", fontSize10, HSSFCellStyle.ALIGN_CENTER, true, null); Toolket.setCellValue(workbook, sheet, 1, 3, "", fontSize10, HSSFCellStyle.ALIGN_CENTER, true, null); Toolket.setCellValue(workbook, sheet, 1, 4, "?", fontSize10, HSSFCellStyle.ALIGN_CENTER, true, null); Toolket.setCellValue(workbook, sheet, 1, 5, "", fontSize10, HSSFCellStyle.ALIGN_CENTER, true, null); Toolket.setCellValue(workbook, sheet, 1, 6, "??", fontSize10, HSSFCellStyle.ALIGN_CENTER, true, null); Toolket.setCellValue(workbook, sheet, 1, 7, "", fontSize10, HSSFCellStyle.ALIGN_CENTER, true, null); Toolket.setCellValue(workbook, sheet, 1, 8, "", fontSize10, HSSFCellStyle.ALIGN_CENTER, true, null); Toolket.setCellValue(workbook, sheet, 1, 9, "()", fontSize10, HSSFCellStyle.ALIGN_CENTER, true, null); Toolket.setCellValue(workbook, sheet, 1, 10, "()", fontSize10, HSSFCellStyle.ALIGN_CENTER, true, null); // Toolket.setCellValue(workbook, sheet, 1, 11, "?", fontSize10, // HSSFCellStyle.ALIGN_CENTER, true, null); int index = 2; boolean isGraduate = false; String departClass = null; List<LicenseCode> codes = null; List<LicenseCode961> code961s = null; List<DeptCode4Yun> yuns = null; LicenseCode code = null; LicenseCode961 code961 = null; DeptCode4Yun yun = null; Example example = null; for (Map data : ret) { Toolket.setCellValue(workbook, sheet, index, 0, String.valueOf(index - 1), fontSize10, HSSFCellStyle.ALIGN_CENTER, true, null); if (data.get("DC1") != null) { departClass = (String) data.get("DC1"); isGraduate = false; } else { departClass = (String) data.get("DC2"); isGraduate = true; } yun = new DeptCode4Yun(); yun.setClassNo(StringUtils.substring(departClass, 0, 4)); example = Example.create(yun).ignoreCase().enableLike(MatchMode.START); yuns = (List<DeptCode4Yun>) am.findSQLWithCriteria(DeptCode4Yun.class, example, null, null); if (!yuns.isEmpty() && yuns.size() == 1) { yun = yuns.get(0); Toolket.setCellValue(workbook, sheet, index, 1, yun.getDeptCode(), fontSize10, HSSFCellStyle.ALIGN_CENTER, true, null); Toolket.setCellValue(workbook, sheet, index, 2, yun.getCampusCode(), fontSize10, HSSFCellStyle.ALIGN_CENTER, true, null); Toolket.setCellValue(workbook, sheet, index, 3, yun.getCampusName(), fontSize10, HSSFCellStyle.ALIGN_CENTER, true, null); } Toolket.setCellValue(workbook, sheet, index, 4, Toolket.getClassFullName(departClass), fontSize10, HSSFCellStyle.ALIGN_CENTER, true, null); Toolket.setCellValue(workbook, sheet, index, 5, (String) data.get("LC"), fontSize10, HSSFCellStyle.ALIGN_CENTER, true, null); codes = (List<LicenseCode>) am .findLicenseCodesBy(new LicenseCode(String.valueOf((String) data.get("LC")))); if (!codes.isEmpty()) { code = codes.get(0); Toolket.setCellValue(workbook, sheet, index, 6, code.getName(), fontSize10, HSSFCellStyle.ALIGN_CENTER, true, null); Toolket.setCellValue(workbook, sheet, index, 7, code.getLevel(), fontSize10, HSSFCellStyle.ALIGN_CENTER, true, null); } else { code961s = (List<LicenseCode961>) am .findLicenseCode961sBy(new LicenseCode961(String.valueOf((String) data.get("LC")))); if (!code961s.isEmpty()) { code961 = code961s.get(0); Toolket.setCellValue(workbook, sheet, index, 6, code961.getName(), fontSize10, HSSFCellStyle.ALIGN_CENTER, true, null); Toolket.setCellValue(workbook, sheet, index, 7, code961.getLevel(), fontSize10, HSSFCellStyle.ALIGN_CENTER, true, null); } } Toolket.setCellValue(workbook, sheet, index, 8, df.format((Date) data.get("LVD")), fontSize10, HSSFCellStyle.ALIGN_CENTER, true, null); if (!isGraduate) { if ("1".equals((String) data.get("S1"))) { Toolket.setCellValue(workbook, sheet, index, 9, ((Long) data.get("CT")).toString(), fontSize10, HSSFCellStyle.ALIGN_CENTER, true, null); Toolket.setCellValue(workbook, sheet, index, 10, "", fontSize10, HSSFCellStyle.ALIGN_CENTER, true, null); } else if ("2".equals((String) data.get("S1"))) { Toolket.setCellValue(workbook, sheet, index, 9, "", fontSize10, HSSFCellStyle.ALIGN_CENTER, true, null); Toolket.setCellValue(workbook, sheet, index, 10, ((Long) data.get("CT")).toString(), fontSize10, HSSFCellStyle.ALIGN_CENTER, true, null); } } else { if ("1".equals((String) data.get("S2"))) { Toolket.setCellValue(workbook, sheet, index, 9, ((Long) data.get("CT")).toString(), fontSize10, HSSFCellStyle.ALIGN_CENTER, true, null); Toolket.setCellValue(workbook, sheet, index, 10, "", fontSize10, HSSFCellStyle.ALIGN_CENTER, true, null); } else if ("2".equals((String) data.get("S2"))) { Toolket.setCellValue(workbook, sheet, index, 9, "", fontSize10, HSSFCellStyle.ALIGN_CENTER, true, null); Toolket.setCellValue(workbook, sheet, index, 10, ((Long) data.get("CT")).toString(), fontSize10, HSSFCellStyle.ALIGN_CENTER, true, null); } } index++; // Toolket.setCellValue(workbook, sheet, index++, 11, ((Long) m // .get("CT")).toString(), fontSize10, // HSSFCellStyle.ALIGN_CENTER, true, null); } File tempDir = new File( context.getRealPath("/WEB-INF/reports/temp/" + getUserCredential(session).getMember().getIdno() + (new SimpleDateFormat("yyyyMMdd").format(new Date())))); if (!tempDir.exists()) tempDir.mkdirs(); File output = new File(tempDir, "DeptStdSkillList3.xls"); FileOutputStream fos = new FileOutputStream(output); workbook.write(fos); fos.close(); JasperReportUtils.printXlsToFrontEnd(response, output); output.delete(); tempDir.delete(); }
From source file:tw.edu.chit.struts.action.language.ReportPrintAction.java
/** * // w w w. jav a2 s . c om * * @param mapping org.apache.struts.action.ActionMapping object * @param form org.apache.struts.action.ActionForm object * @param request request javax.servlet.http.HttpServletRequest object * @param response response javax.servlet.http.HttpServletResponse object * @param sterm */ @SuppressWarnings("unchecked") private void printDeptStdSkillList3(ActionMapping mapping, DynaActionForm form, HttpServletRequest request, HttpServletResponse response, String sterm) throws Exception { HttpSession session = request.getSession(false); AdminManager am = (AdminManager) getBean(IConstants.ADMIN_MANAGER_BEAN_NAME); MemberManager mm = (MemberManager) getBean(MEMBER_MANAGER_BEAN_NAME); Member member = (Member) getUserCredential(session).getMember(); Empl empl = mm.findEmplByOid(member.getOid()); ServletContext context = request.getSession().getServletContext(); Calendar cal = Calendar.getInstance(); Calendar cal1 = (Calendar) cal.clone(); Calendar cal2 = (Calendar) cal.clone(); if (StringUtils.isNotBlank(form.getString("licenseValidDateStart")) || StringUtils.isNotBlank(form.getString("licenseValidDateEnd"))) { Date from = StringUtils.isBlank(form.getString("licenseValidDateStart")) ? null : Toolket.parseNativeDate(form.getString("licenseValidDateStart")); // ??? Date to = StringUtils.isBlank(form.getString("licenseValidDateEnd")) ? Calendar.getInstance().getTime() : Toolket.parseNativeDate(form.getString("licenseValidDateEnd")); cal1.setTime(from); cal1.set(Calendar.HOUR_OF_DAY, 0); cal1.set(Calendar.MINUTE, 0); cal1.set(Calendar.SECOND, 0); cal1.set(Calendar.MILLISECOND, 0); cal2.setTime(to); cal2.set(Calendar.HOUR_OF_DAY, 23); cal2.set(Calendar.MINUTE, 59); cal2.set(Calendar.SECOND, 59); cal2.set(Calendar.MILLISECOND, 999); } String hql = "SELECT COUNT(*) CT, ss.licenseValidDate LVD, ss.licenseCode LC, " + "s.depart_class DC1, s.sex S1, gs.depart_class DC2, gs.sex S2 " + "FROM StdSkill ss LEFT JOIN stmd s ON ss.studentNo = s.student_no " + "LEFT JOIN Gstmd gs ON ss.studentNo = gs.student_no " + "WHERE ss.deptNo = ? AND ss.licenseValidDate BETWEEN ? AND ? " + "GROUP BY ss.licenseValidDate, s.depart_class, s.sex, " + "gs.depart_class, gs.sex " + "ORDER BY ss.licenseValidDate, s.depart_class, " + "s.sex, gs.depart_class, gs.sex"; List<Map> ret = (List<Map>) am.findBySQL(hql, new Object[] { "0", cal1.getTime(), cal2.getTime() }); // DateFormat df = new SimpleDateFormat("yyyy/MM/dd"); HSSFWorkbook workbook = new HSSFWorkbook(); HSSFSheet sheet = workbook.createSheet(""); sheet.setColumnWidth(0, 1800); sheet.setColumnWidth(1, 2000); sheet.setColumnWidth(2, 2000); sheet.setColumnWidth(3, 3000); sheet.setColumnWidth(4, 5000); sheet.setColumnWidth(5, 3000); sheet.setColumnWidth(6, 8000); sheet.setColumnWidth(7, 3000); sheet.setColumnWidth(8, 4000); sheet.setColumnWidth(9, 2200); sheet.setColumnWidth(10, 2200); sheet.addMergedRegion(new CellRangeAddress(0, 0, 0, 10)); HSSFFont fontSize12 = workbook.createFont(); fontSize12.setFontHeightInPoints((short) 12); fontSize12.setFontName("Arial Unicode MS"); HSSFFont fontSize10 = workbook.createFont(); fontSize10.setFontHeightInPoints((short) 10); fontSize10.setFontName("Arial Unicode MS"); // Header Toolket.setCellValue(workbook, sheet, 0, 0, "?" + Toolket.getEmpUnit(empl.getUnit()) + " (" + df.format(cal1.getTime()) + "~" + df.format(cal2.getTime()) + ")", fontSize12, HSSFCellStyle.ALIGN_CENTER, false, 35.0F, null); // Column Header Toolket.setCellValue(workbook, sheet, 1, 0, "?", fontSize10, HSSFCellStyle.ALIGN_CENTER, true, null); Toolket.setCellValue(workbook, sheet, 1, 1, "", fontSize10, HSSFCellStyle.ALIGN_CENTER, true, null); Toolket.setCellValue(workbook, sheet, 1, 2, "", fontSize10, HSSFCellStyle.ALIGN_CENTER, true, null); Toolket.setCellValue(workbook, sheet, 1, 3, "", fontSize10, HSSFCellStyle.ALIGN_CENTER, true, null); Toolket.setCellValue(workbook, sheet, 1, 4, "?", fontSize10, HSSFCellStyle.ALIGN_CENTER, true, null); Toolket.setCellValue(workbook, sheet, 1, 5, "", fontSize10, HSSFCellStyle.ALIGN_CENTER, true, null); Toolket.setCellValue(workbook, sheet, 1, 6, "??", fontSize10, HSSFCellStyle.ALIGN_CENTER, true, null); Toolket.setCellValue(workbook, sheet, 1, 7, "", fontSize10, HSSFCellStyle.ALIGN_CENTER, true, null); Toolket.setCellValue(workbook, sheet, 1, 8, "", fontSize10, HSSFCellStyle.ALIGN_CENTER, true, null); Toolket.setCellValue(workbook, sheet, 1, 9, "()", fontSize10, HSSFCellStyle.ALIGN_CENTER, true, null); Toolket.setCellValue(workbook, sheet, 1, 10, "()", fontSize10, HSSFCellStyle.ALIGN_CENTER, true, null); // Toolket.setCellValue(workbook, sheet, 1, 11, "?", fontSize10, // HSSFCellStyle.ALIGN_CENTER, true, null); int index = 2; boolean isGraduate = false; String departClass = null; List<LicenseCode> codes = null; List<LicenseCode961> code961s = null; List<DeptCode4Yun> yuns = null; LicenseCode code = null; LicenseCode961 code961 = null; DeptCode4Yun yun = null; Example example = null; for (Map data : ret) { Toolket.setCellValue(workbook, sheet, index, 0, String.valueOf(index - 1), fontSize10, HSSFCellStyle.ALIGN_CENTER, true, null); if (data.get("DC1") != null) { departClass = (String) data.get("DC1"); isGraduate = false; } else { departClass = (String) data.get("DC2"); isGraduate = true; } yun = new DeptCode4Yun(); yun.setClassNo(StringUtils.substring(departClass, 0, 4)); example = Example.create(yun).ignoreCase().enableLike(MatchMode.START); yuns = (List<DeptCode4Yun>) am.findSQLWithCriteria(DeptCode4Yun.class, example, null, null); if (!yuns.isEmpty() && yuns.size() == 1) { yun = yuns.get(0); Toolket.setCellValue(workbook, sheet, index, 1, yun.getDeptCode(), fontSize10, HSSFCellStyle.ALIGN_CENTER, true, null); Toolket.setCellValue(workbook, sheet, index, 2, yun.getCampusCode(), fontSize10, HSSFCellStyle.ALIGN_CENTER, true, null); Toolket.setCellValue(workbook, sheet, index, 3, yun.getCampusName(), fontSize10, HSSFCellStyle.ALIGN_CENTER, true, null); } Toolket.setCellValue(workbook, sheet, index, 4, Toolket.getClassFullName(departClass), fontSize10, HSSFCellStyle.ALIGN_CENTER, true, null); Toolket.setCellValue(workbook, sheet, index, 5, (String) data.get("LC"), fontSize10, HSSFCellStyle.ALIGN_CENTER, true, null); codes = (List<LicenseCode>) am .findLicenseCodesBy(new LicenseCode(Integer.valueOf((String) data.get("LC")))); if (!codes.isEmpty()) { code = codes.get(0); Toolket.setCellValue(workbook, sheet, index, 6, code.getName(), fontSize10, HSSFCellStyle.ALIGN_CENTER, true, null); Toolket.setCellValue(workbook, sheet, index, 7, code.getLevel(), fontSize10, HSSFCellStyle.ALIGN_CENTER, true, null); } else { code961s = (List<LicenseCode961>) am .findLicenseCode961sBy(new LicenseCode961(Integer.valueOf((String) data.get("LC")))); if (!code961s.isEmpty()) { code961 = code961s.get(0); Toolket.setCellValue(workbook, sheet, index, 6, code961.getName(), fontSize10, HSSFCellStyle.ALIGN_CENTER, true, null); Toolket.setCellValue(workbook, sheet, index, 7, code961.getLevel(), fontSize10, HSSFCellStyle.ALIGN_CENTER, true, null); } } Toolket.setCellValue(workbook, sheet, index, 8, df.format((Date) data.get("LVD")), fontSize10, HSSFCellStyle.ALIGN_CENTER, true, null); if (!isGraduate) { if ("1".equals((String) data.get("S1"))) { Toolket.setCellValue(workbook, sheet, index, 9, ((Long) data.get("CT")).toString(), fontSize10, HSSFCellStyle.ALIGN_CENTER, true, null); Toolket.setCellValue(workbook, sheet, index, 10, "", fontSize10, HSSFCellStyle.ALIGN_CENTER, true, null); } else if ("2".equals((String) data.get("S1"))) { Toolket.setCellValue(workbook, sheet, index, 9, "", fontSize10, HSSFCellStyle.ALIGN_CENTER, true, null); Toolket.setCellValue(workbook, sheet, index, 10, ((Long) data.get("CT")).toString(), fontSize10, HSSFCellStyle.ALIGN_CENTER, true, null); } } else { if ("1".equals((String) data.get("S2"))) { Toolket.setCellValue(workbook, sheet, index, 9, ((Long) data.get("CT")).toString(), fontSize10, HSSFCellStyle.ALIGN_CENTER, true, null); Toolket.setCellValue(workbook, sheet, index, 10, "", fontSize10, HSSFCellStyle.ALIGN_CENTER, true, null); } else if ("2".equals((String) data.get("S2"))) { Toolket.setCellValue(workbook, sheet, index, 9, "", fontSize10, HSSFCellStyle.ALIGN_CENTER, true, null); Toolket.setCellValue(workbook, sheet, index, 10, ((Long) data.get("CT")).toString(), fontSize10, HSSFCellStyle.ALIGN_CENTER, true, null); } } index++; // Toolket.setCellValue(workbook, sheet, index++, 11, ((Long) m // .get("CT")).toString(), fontSize10, // HSSFCellStyle.ALIGN_CENTER, true, null); } File tempDir = new File( context.getRealPath("/WEB-INF/reports/temp/" + getUserCredential(session).getMember().getIdno() + (new SimpleDateFormat("yyyyMMdd").format(new Date())))); if (!tempDir.exists()) tempDir.mkdirs(); File output = new File(tempDir, "DeptStdSkillList3.xls"); FileOutputStream fos = new FileOutputStream(output); workbook.write(fos); fos.close(); JasperReportUtils.printXlsToFrontEnd(response, output); output.delete(); tempDir.delete(); }
From source file:tw.edu.chit.struts.action.registration.ReportPrintAction.java
/** * ???/* www . j a va 2 s.co m*/ * * @param mapping org.apache.struts.action.ActionMapping object * @param form org.apache.struts.action.ActionForm object * @param request request javax.servlet.http.HttpServletRequest object * @param response response javax.servlet.http.HttpServletResponse object * @param sterm */ @SuppressWarnings("unchecked") private void printClassStudentsScoreHistory(ActionMapping mapping, DynaActionForm form, HttpServletRequest request, HttpServletResponse response, String sterm) throws Exception { HttpSession session = request.getSession(false); MemberManager mm = (MemberManager) getBean(IConstants.MEMBER_MANAGER_BEAN_NAME); CourseManager cm = (CourseManager) getBean(IConstants.COURSE_MANAGER_BEAN_NAME); ScoreManager sm = (ScoreManager) getBean(IConstants.SCORE_MANAGER_BEAN_NAME); StudAffairManager sam = (StudAffairManager) getBean(IConstants.STUD_AFFAIR_MANAGER_BEAN_NAME); boolean isIncludeThisTermScore = "true".equalsIgnoreCase(request.getParameter("tt")); // String year = cm.getNowBy("School_year"); // String term = form.getString("sterm"); String studentNo = null; Clazz clazz = null; ScoreHist scoreHist = null, hist = null; List<Student> students = null; List<Clazz> clazzes = sm.findClassBy(new Clazz(processClassInfo(form)), getUserCredential(session).getClassInChargeAry(), false); if (!clazzes.isEmpty() && clazzes.size() > 1) { ActionMessages messages = new ActionMessages(); messages.add(ActionMessages.GLOBAL_MESSAGE, new ActionMessage("", "")); saveMessages(request, messages); // return mapping.findForward(IConstants.ACTION_MAIN_NAME); ServletContext context = request.getSession().getServletContext(); Map<String, String> parameters = new HashMap<String, String>(); File image = new File(context.getRealPath("/pages/reports/2002chitS.jpg")); parameters.put("IMAGE", image.getAbsolutePath()); byte[] bytes = JasperRunManager.runReportToPdf(JasperReportUtils.getNoResultReport(context), parameters, new JREmptyDataSource()); JasperReportUtils.printPdfToFrontEnd(response, bytes); } else { clazz = clazzes.get(0); students = mm.findStudentsByClassNo(clazz.getClassNo()); if (!students.isEmpty()) { ServletContext context = request.getSession().getServletContext(); String[] excep = { "11G332" }; // ??+1 String[] formYear = { "", "", "", "", "", "", "", "", "?" }; short firstYear = 0; short lastYear = 0; double justScore = 0.0D; int sheetIndex = 0; int k = 0, j = 0, rowIndex = 0, nextPageRowIndex = 0; int kk = 0, rowIndexx = 0; String departClass = clazz.getClassNo(); String departCode = "", title = "", evgrType = "", historyDepartCode = "", opt = "", cscode = ""; // ?70? float passScore = Toolket.getPassScoreByDepartClass(departClass); Graduate graduate = null; MasterData md = null; Just just = null; ScoreHist target = null; Dtime dtime = null; List csnos = null; Csno csno = null; Gmark gmark = null; Map<String, String> position = null; Float passCreditsSum = 0.0F; Float totalPassCredits = 0.0F; List<Seld> selds = null; List<ScoreHist> scoreHistList = null; List<Stavg> stavgs = null; List<Gmark> gmarks = null; boolean isOver = false; // (lastYear - firstYear + 1) > 4; boolean isDelay = Toolket.isDelayClass(departClass); boolean isSpringClass = false; // boolean isDoubleMajor = false; boolean isAssist = false; // 9608???Show????,?Show'',?????Show boolean is96Entrance = false; boolean isMaster = Toolket.isMasterClass(departClass); boolean nextPage = false, hasPassRecord = false, rowOver = false; boolean isNotExemptAndMend = false; // ??? boolean isExempt = false; // ??? boolean isMend = false; // ?? boolean isAppend = false; // ??? boolean isNotSameDepartCode = false; boolean isOver15Char = false, isOver10Char = false; int studentCounts = students.size(); String fileName = ""; DecimalFormat df = new DecimalFormat(",##0.0"); File templateXLS = null; if (!isMaster) { if (studentCounts <= 30) fileName = "ClassStudentsScoreHistoryOver30.xls"; else if (studentCounts > 31 && studentCounts <= 40) fileName = "ClassStudentsScoreHistoryOver40.xls"; else if (studentCounts > 40 && studentCounts <= 45) fileName = "ClassStudentsScoreHistoryOver45.xls"; else if (studentCounts > 45 && studentCounts <= 50) fileName = "ClassStudentsScoreHistoryOver50.xls"; else if (studentCounts > 51 && studentCounts <= 55) fileName = "ClassStudentsScoreHistoryOver55.xls"; else fileName = "ClassStudentsScoreHistoryOver60.xls"; title = Toolket.getSchoolFormalName(departClass); if (isDelay) { // Only 20 Sheets templateXLS = new File( context.getRealPath("/WEB-INF/reports/ClassStudentsScoreHistoryOver.xls")); } else { templateXLS = new File(context.getRealPath("/WEB-INF/reports/" + fileName)); } } else { if (studentCounts <= 15) fileName = "ClassStudentsScoreHistoryMaster15.xls"; else if (studentCounts > 15 && studentCounts <= 20) fileName = "ClassStudentsScoreHistoryMaster20.xls"; else fileName = "ClassStudentsScoreHistoryMaster25.xls"; String masterId = StringUtils.substring(departClass, 1, 3); if ("1G".equals(masterId)) title = "?"; else title = "??"; templateXLS = new File(context.getRealPath("/WEB-INF/reports/" + fileName)); } HSSFWorkbook workbook = Toolket.getHSSFWorkbook(templateXLS); HSSFFont colorFont = workbook.createFont(); colorFont.setColor(HSSFColor.RED.index); colorFont.setFontHeightInPoints((short) 12); colorFont.setFontName("Arial Unicode MS"); HSSFFont fontSize12 = workbook.createFont(); fontSize12.setFontHeightInPoints((short) 12); fontSize12.setFontName("Arial Unicode MS"); HSSFFont fontSize10 = workbook.createFont(); fontSize10.setFontHeightInPoints((short) 10); fontSize10.setFontName("Arial Unicode MS"); HSSFFont fontSize9 = workbook.createFont(); fontSize9.setFontHeightInPoints((short) 9); fontSize9.setFontName("Arial Unicode MS"); HSSFSheet sheet = null; for (Student student : students) { studentNo = student.getStudentNo(); if (sheetIndex > 59) sheetIndex = 59; sheet = workbook.getSheetAt(sheetIndex); workbook.setSheetName(sheetIndex++, studentNo.toUpperCase()); if (student == null) { graduate = mm.findGraduateByStudentNo(studentNo); student = new Student(); BeanUtils.copyProperties(student, graduate); } // isDoubleMajor = "".equals(student.getExtraStatus()); isAssist = "".equals(student.getExtraStatus()); // departClass = student.getDepartClass(); // 9608???Show????,?Show'',?????Show is96Entrance = student.getEntrance() == null ? false : student.getEntrance() >= (short) 9608; scoreHist = new ScoreHist(studentNo); scoreHistList = sm.findScoreHistBy(scoreHist); if (scoreHistList.isEmpty()) { ActionMessages messages = new ActionMessages(); messages.add(ActionMessages.GLOBAL_MESSAGE, new ActionMessage("Course.messageN1", "?")); saveErrors(request, messages); log.error("No Score History... " + studentNo); sheetIndex--; continue; } else { firstYear = Short.parseShort(scoreHistList.get(0).getSchoolYear().toString()); lastYear = Short .parseShort(scoreHistList.get(scoreHistList.size() - 1).getSchoolYear().toString()); isOver = (lastYear - firstYear + 1) > 4; if (isOver) ; // log.error("It is Over... " + studentNo); departCode = ""; Toolket.setCellValue(sheet, 0, 0, "?" + title + "?"); Toolket.setCellValue(sheet, 1, 1, "" + studentNo); Toolket.setCellValue(sheet, 1, 7, "??" + student.getStudentName()); Toolket.setCellValue(sheet, 1, 9, "" + (isMaster ? Toolket.getMasterDepartName(departClass) : Toolket.getDepartName(departClass)) + (isDoubleMajor || isAssist ? "(" + student.getExtraStatus() + ":" + student.getExtraDept() + ")" : "")); Toolket.setCellValue(sheet, 1, 19, "" + student.getIdno()); // ?2,?code Toolket.setCellValue(sheet, 43, 0, "?" + title + "?"); Toolket.setCellValue(sheet, 44, 1, "" + studentNo); Toolket.setCellValue(sheet, 44, 7, "??" + student.getStudentName()); Toolket.setCellValue(sheet, 44, 9, "" + (isMaster ? Toolket.getMasterDepartName(departClass) : Toolket.getDepartName(departClass)) + (isDoubleMajor || isAssist ? "(" + student.getExtraStatus() + ":" + student.getExtraDept() + ")" : "")); Toolket.setCellValue(sheet, 44, 19, "" + student.getIdno()); if (isDelay) { Toolket.setCellValue(sheet, 43, 0, "?" + title + "?"); Toolket.setCellValue(sheet, 44, 1, "" + studentNo); Toolket.setCellValue(sheet, 44, 7, "??" + student.getStudentName()); Toolket.setCellValue(sheet, 44, 9, "" + (isMaster ? Toolket.getMasterDepartName(departClass) : Toolket.getDepartName(departClass)) + (isDoubleMajor || isAssist ? "(" + student.getExtraStatus() + ":" + student.getExtraDept() + ")" : "")); Toolket.setCellValue(sheet, 44, 19, "" + student.getIdno()); } if (isDoubleMajor || isAssist) { Toolket.setCellValue(sheet, 42, 0, " => *:?? #: &: "); departCode = StringUtils.substring(student.getDepartClass(), 3, 4); } if (isOver) { Toolket.setCellValue(sheet, 43, 0, "?" + title + "?"); Toolket.setCellValue(sheet, 44, 1, "" + studentNo); Toolket.setCellValue(sheet, 44, 7, "??" + student.getStudentName()); Toolket.setCellValue(sheet, 44, 9, "" + (isMaster ? Toolket.getMasterDepartName(departClass) : Toolket.getDepartName(departClass))); Toolket.setCellValue(sheet, 44, 19, "" + student.getIdno()); if (isDoubleMajor || isAssist) Toolket.setCellValue(sheet, 85, 0, " => *:?? #: &: "); } if (isMaster) { md = sm.findMasterByStudentNo(studentNo); if (md != null) { Toolket.setCellValue(sheet, 38, 0, "" + md.getThesesChiname()); Toolket.setCellValue(sheet, 39, 0, " " + md.getThesesEngname()); Toolket.setCellValue(sheet, 38, 17, md.getRemark()); Toolket.setCellValue(sheet, 40, 0, "??" + md.getThesesScore()); Toolket.setCellValue(sheet, 40, 4, "??(50%)" + md.getThesesScore() / 2); Toolket.setCellValue(sheet, 40, 8, "??" + md.getEvgr1Score()); Toolket.setCellValue(sheet, 40, 14, "??(50%)" + md.getEvgr1Score() / 2); Toolket.setCellValue(sheet, 40, 19, "?" + md.getGraduateScore()); } } if (Arrays.binarySearch(excep, departClass) >= 0) { lastYear++; isSpringClass = true; Toolket.setCellValue(sheet, 39, 17, "" + (lastYear + 1) + ".1"); } k = 0; j = 0; rowIndex = 6; nextPageRowIndex = 43; passCreditsSum = 0.0F; nextPage = false; hasPassRecord = false; rowOver = false; // List<Stavg> stavgs = null; // Just just = null; // String[] formYear = { "", "", "", "", "", "", // "", "" }; for (short year = firstYear; year <= lastYear; year++) { // ???9316D078 // ??? scoreHist.setSchoolYear(year); scoreHist.setSchoolTerm("1"); hasPassRecord = !sm.findScoreHistBy(scoreHist).isEmpty(); if (!hasPassRecord) { scoreHist.setSchoolTerm("2"); hasPassRecord = !sm.findScoreHistBy(scoreHist).isEmpty(); if (!hasPassRecord) continue; } if (isSpringClass && year == lastYear) { just = sam.findJustByStudentNo(studentNo); justScore = 0.0D; if (just == null || just.getTotalScore() == 0.0D) { target = new ScoreHist(studentNo); target.setSchoolYear(new Short(year)); target.setSchoolTerm("2"); target.setCscode("99999"); scoreHistList = sm.findScoreHistBy(target); if (!scoreHistList.isEmpty()) { scoreHist = sm.findScoreHistBy(scoreHist).get(0); justScore = scoreHist.getScore(); } } else justScore = just.getTotalScore(); Toolket.setCellValue(sheet, 35 + (isMaster ? -2 : 0), k * 6 + 3, justScore == 0.0D ? "" : String.valueOf(Math.round(justScore))); } if (rowOver) { Toolket.setCellValue(workbook, sheet, 2 + (nextPage ? nextPageRowIndex : 0), k * 6, " " + formYear[(nextPage ? k + 4 : k)] + " ", fontSize12, HSSFCellStyle.ALIGN_CENTER, true, null); } else Toolket.setCellValue(sheet, 2 + (nextPage ? nextPageRowIndex : 0), k * 6, " " + formYear[(nextPage ? k + 4 : k)] + " "); position = new HashMap<String, String>(); for (int term = 1; term <= 2; term++) { scoreHist.setSchoolYear(year); scoreHist.setSchoolTerm(String.valueOf(term)); // scoreHist.setEvgrType("1"); // ? scoreHistList = sm.findScoreHistBy(scoreHist); if (!scoreHistList.isEmpty()) { Toolket.setCellValue(sheet, 3 + (nextPage ? nextPageRowIndex : 0), k * 6, "" + year + " 9 " + (year + 1) + " 7 "); stavgs = sm.findStavgBy(new Stavg(studentNo, year, String.valueOf(term))); totalPassCredits = 0.0F; // for (ScoreHist hist : scoreHistList) { // i != scoreHistList.size() - // 1???,?? for (int i = 0; i < scoreHistList.size(); i++) { hist = scoreHistList.get(i); if (rowIndex == 32 && i != scoreHistList.size() - 1) { rowIndex = 6; k++; Toolket.setCellValue(sheet, 2 + (nextPage ? nextPageRowIndex : 0), k * 6, " " + formYear[k - 1] + " "); Toolket.setCellValue(sheet, 3 + (nextPage ? nextPageRowIndex : 0), k * 6, "" + year + " 9 " + (year + 1) + " 7 "); rowOver = true; } evgrType = hist.getEvgrType(); isNotExemptAndMend = !"6".equals(evgrType) && !"5".equals(evgrType); // ??? isExempt = "6".equals(evgrType); // ??? isMend = "5".equals(evgrType); // ?? isAppend = "2".equals(evgrType); // ??? historyDepartCode = StringUtils.isBlank(hist.getStdepartClass()) ? "" : StringUtils.substring(hist.getStdepartClass(), 3, 4); isNotSameDepartCode = !departCode.equals(historyDepartCode) && !historyDepartCode.equals("0"); opt = ""; if ("3".equals(evgrType)) opt = ""; else opt = StringUtils.substring(Toolket.getCourseOpt(hist.getOpt()), 0, 1) + (isAppend ? "" : (isMend ? "" : (!isNotExemptAndMend ? "" : ""))); cscode = hist.getCscode(); if ("GA035".equals(cscode) || "".equals("GB033")) continue; // 2? isOver15Char = false; isOver10Char = false; if (!"99999".equals(cscode)) { // ? String courseName = cm.findCourseInfoByCscode(cscode) == null ? "??" : cm.findCourseInfoByCscode(cscode).getChiName().trim(); isOver15Char = courseName.length() > 15; isOver10Char = courseName.length() > 10; Float credit = hist.getCredit(); Float score = hist.getScore(); boolean pass = (score == null ? 0.0F : score) >= passScore; // ((?&&?)||?)&&? if (((isNotExemptAndMend && pass) || isExempt) && !isMend) // if (!isNotExemptAndMend || // !isMend || // bFlag1) // if (!isMend && bFlag1) if (isMaster && "G".equalsIgnoreCase( StringUtils.substring(hist.getStdepartClass(), 2, 3))) { // ???,? totalPassCredits += credit; } else totalPassCredits += credit; if (1 == term) { if (opt.length() == 1 || is96Entrance) Toolket.setCellValue(sheet, rowIndex, k * 6, (is96Entrance ? StringUtils.substring(opt, 0, 1) : opt)); else Toolket.setCellValue(workbook, sheet, rowIndex, k * 6, opt, fontSize12, HSSFCellStyle.ALIGN_CENTER, true, null); if (isOver15Char) Toolket.setCellValue(workbook, sheet, rowIndex, k * 6 + 1, courseName, fontSize9, HSSFCellStyle.ALIGN_LEFT, true, null); else if (isOver10Char) Toolket.setCellValue(workbook, sheet, rowIndex, k * 6 + 1, courseName, fontSize10, HSSFCellStyle.ALIGN_LEFT, true, null); else Toolket.setCellValue(sheet, rowIndex, k * 6 + 1, courseName); position.put(courseName, String.valueOf(rowIndex)); if (isNotExemptAndMend) { // ? String creditStr = credit.toString(); if (!isMend && !isExempt) creditStr = pass ? creditStr : creditStr + "*"; if (isDoubleMajor && isNotSameDepartCode) creditStr += "&"; if (isAssist && isNotSameDepartCode) creditStr += "#"; if (StringUtils.indexOf(creditStr, "*") == StringUtils.INDEX_NOT_FOUND) Toolket.setCellValue(sheet, rowIndex, k * 6 + 2, creditStr); else Toolket.setCellValue(workbook, sheet, rowIndex, k * 6 + 2, creditStr, colorFont, HSSFCellStyle.ALIGN_CENTER, true, null); // ?? Toolket.setCellValue(sheet, rowIndex++, k * 6 + 3, (isMend ? "" : (score == null ? "" : StringUtils.substringBefore(score.toString(), ".")))); // ?? Toolket.setCellValue(sheet, 32 + (isMaster ? -2 : 0) + (nextPage ? nextPageRowIndex : 0), k * 6 + 3, (stavgs.isEmpty() ? "" : df.format( stavgs.get(0).getScore() + 0.001D))); } else { // ? String creditStr = credit.toString(); Toolket.setCellValue(sheet, rowIndex, k * 6 + 2, creditStr); if (is96Entrance) Toolket.setCellValue(sheet, rowIndex++, k * 6 + 3, (isMend ? "" : "")); else { // ?? Toolket.setCellValue(sheet, 32 + (isMaster ? -2 : 0) + (nextPage ? nextPageRowIndex : 0), k * 6 + 3, (stavgs.isEmpty() ? "" : df.format(stavgs.get(0).getScore() + 0.001D))); Toolket.setCellValue(sheet, rowIndex++, k * 6 + 3, score == null ? "" : StringUtils.substringBefore( score.toString(), ".")); } } } else { String endString = StringUtils.substring(courseName, courseName.length() - 1); boolean duplicatedCourseName = "".equals(endString); boolean duplicatedCourseName1 = "".equals(endString); boolean duplicatedCourseName2 = "".equals(endString); if (duplicatedCourseName || duplicatedCourseName1 || duplicatedCourseName2) { String courseIndex = StringUtils.substring(courseName, 0, courseName.length() - 1); String row = "", maybeSameCourseNameOptInfo = ""; if (duplicatedCourseName) { row = position.get(courseIndex + ""); if (row != null) maybeSameCourseNameOptInfo = Toolket.getCellValue(sheet, Integer.parseInt(row), (rowOver ? k - 1 : k) * 6); } else if (duplicatedCourseName1) { row = position.get(courseIndex + ""); if (row != null) maybeSameCourseNameOptInfo = Toolket.getCellValue(sheet, Integer.parseInt(row), (rowOver ? k - 1 : k) * 6); } else if (duplicatedCourseName2) { row = position.get(courseIndex + ""); if (row != null) maybeSameCourseNameOptInfo = Toolket.getCellValue(sheet, Integer.parseInt(row), (rowOver ? k - 1 : k) * 6); } // ????? boolean isAllowMerge = (StringUtils.contains(opt, "") && StringUtils.contains(maybeSameCourseNameOptInfo, "")) || (StringUtils.contains(opt, "?") && StringUtils .contains(maybeSameCourseNameOptInfo, "?")); if (row != null && isAllowMerge) { int rowNum = Integer.parseInt(row); Toolket.setCellValue(sheet, rowNum, (rowOver ? k - 1 : k) * 6 + 1, Toolket.getCellValue(sheet, rowNum, (rowOver ? k - 1 : k) * 6 + 1) + "?" + (duplicatedCourseName ? "" : duplicatedCourseName1 ? "" : "")); if (isNotExemptAndMend) { // ? String creditStr = credit.toString(); if (!isMend && !isExempt) creditStr = pass ? creditStr : creditStr + "*"; if (isDoubleMajor && isNotSameDepartCode) creditStr += "&"; if (isAssist && isNotSameDepartCode) creditStr += "#"; if (StringUtils.indexOf(creditStr, "*") == StringUtils.INDEX_NOT_FOUND) Toolket.setCellValue(sheet, rowNum, (rowOver ? k - 1 : k) * 6 + 4, creditStr); else Toolket.setCellValue(workbook, sheet, rowNum, (rowOver ? k - 1 : k) * 6 + 4, creditStr, colorFont, HSSFCellStyle.ALIGN_CENTER, true, null); Toolket.setCellValue(sheet, rowNum, (rowOver ? k - 1 : k) * 6 + 5, (isMend ? "" : (score == null ? "" : StringUtils.substringBefore( score.toString(), ".")))); Toolket.setCellValue(sheet, 32 + (isMaster ? -2 : 0) + (nextPage ? nextPageRowIndex : 0), (rowOver ? k - 1 : k) * 6 + 5, (stavgs.isEmpty() ? "" : df.format(stavgs.get(0).getScore() + 0.001D))); } else { // ? String creditStr = credit.toString(); Toolket.setCellValue(sheet, rowNum, (rowOver ? k - 1 : k) * 6 + 4, creditStr); if (is96Entrance) Toolket.setCellValue(sheet, rowNum, (rowOver ? k - 1 : k) * 6 + 5, (isMend ? "" : "")); else { Toolket.setCellValue(sheet, 32 + (isMaster ? -2 : 0), (rowOver ? k - 1 : k) * 6 + 5, (stavgs.isEmpty() ? "" : df.format(stavgs.get(0).getScore() + 0.001D))); Toolket.setCellValue(sheet, rowNum, (rowOver ? k - 1 : k) * 6 + 5, score == null ? "" : StringUtils.substringBefore( score.toString(), ".")); } } } else { if (opt.length() == 1 || is96Entrance) Toolket.setCellValue(sheet, rowIndex, k * 6, (is96Entrance ? StringUtils.substring(opt, 0, 1) : opt)); else Toolket.setCellValue(workbook, sheet, rowIndex, k * 6, opt, fontSize12, HSSFCellStyle.ALIGN_CENTER, true, null); Toolket.setCellValue(sheet, rowIndex, k * 6 + 1, courseName); position.put(courseName, String.valueOf(rowIndex)); if (isNotExemptAndMend) { // ? String creditStr = credit.toString(); if (!isMend && !isExempt) creditStr = pass ? creditStr : creditStr + "*"; if (isDoubleMajor && isNotSameDepartCode) creditStr += "&"; if (isAssist && isNotSameDepartCode) creditStr += "#"; if (StringUtils.indexOf(creditStr, "*") == StringUtils.INDEX_NOT_FOUND) Toolket.setCellValue(sheet, rowIndex, k * 6 + 4, creditStr); else Toolket.setCellValue(workbook, sheet, rowIndex, k * 6 + 4, creditStr, colorFont, HSSFCellStyle.ALIGN_CENTER, true, null); // ?? Toolket.setCellValue(sheet, rowIndex++, k * 6 + 5, (isMend ? "" : (score == null ? "" : StringUtils.substringBefore( score.toString(), ".")))); // ?? Toolket.setCellValue(sheet, 32 + (isMaster ? -2 : 0), k * 6 + 5, (stavgs.isEmpty() ? "" : df.format(stavgs.get(0).getScore() + 0.001D))); } else { // ? String creditStr = credit.toString(); Toolket.setCellValue(sheet, rowIndex, k * 6 + 4, creditStr); if (is96Entrance) Toolket.setCellValue(sheet, rowIndex++, k * 6 + 5, (isMend ? "" : "")); else { // ?? Toolket.setCellValue(sheet, 32 + (isMaster ? -2 : 0), k * 6 + 5, (stavgs.isEmpty() ? "" : df.format(stavgs.get(0).getScore() + 0.001D))); Toolket.setCellValue(sheet, rowIndex++, k * 6 + 5, score == null ? "" : StringUtils.substringBefore( score.toString(), ".")); } } } } else { if (opt.length() == 1 || is96Entrance) Toolket.setCellValue(sheet, rowIndex, k * 6, (is96Entrance ? StringUtils.substring(opt, 0, 1) : opt)); else Toolket.setCellValue(workbook, sheet, rowIndex, k * 6, opt, fontSize12, HSSFCellStyle.ALIGN_CENTER, true, null); Toolket.setCellValue(sheet, rowIndex, k * 6 + 1, courseName); // ? String creditStr = credit.toString(); if (!isMend && !isExempt) creditStr = pass ? creditStr : creditStr + "*"; if (isDoubleMajor && isNotSameDepartCode) creditStr += "&"; if (isAssist && isNotSameDepartCode) creditStr += "#"; if (StringUtils.indexOf(creditStr, "*") == StringUtils.INDEX_NOT_FOUND) Toolket.setCellValue(sheet, rowIndex, k * 6 + 4, creditStr); else Toolket.setCellValue(workbook, sheet, rowIndex, k * 6 + 4, creditStr, colorFont, HSSFCellStyle.ALIGN_CENTER, true, null); if (isNotExemptAndMend) { Toolket.setCellValue(sheet, rowIndex++, k * 6 + 5, (isMend ? "" : (score == null ? "" : StringUtils.substringBefore( score.toString(), ".")))); Toolket.setCellValue(sheet, 32 + (isMaster ? -2 : 0), k * 6 + 5, (stavgs.isEmpty() ? "" : df.format(stavgs.get(0).getScore() + 0.001D))); } else { if (is96Entrance) Toolket.setCellValue(sheet, rowIndex++, k * 6 + 5, (isMend ? "" : "")); else { Toolket.setCellValue(sheet, 32 + (isMaster ? -2 : 0), k * 6 + 5, (stavgs.isEmpty() ? "" : df.format(stavgs.get(0).getScore() + 0.001D))); Toolket.setCellValue(sheet, rowIndex++, k * 6 + 5, score == null ? "" : StringUtils.substringBefore( score.toString(), ".")); } } } } } else { // ? if (1 == term) { if (isNotExemptAndMend) { Toolket.setCellValue(sheet, 35 + (isMaster ? -2 : 0) + (nextPage ? nextPageRowIndex : 0), k * 6 + 3, String.valueOf(Math.round(hist.getScore()))); } else { if (!is96Entrance) Toolket.setCellValue(sheet, 35 + (isMaster ? -2 : 0), k * 6 + 3, hist.getScore() == null ? "" : String.valueOf( Math.round((hist.getScore())))); } } else { if (isNotExemptAndMend) { Toolket.setCellValue(sheet, 35 + (isMaster ? -2 : 0) + (nextPage ? nextPageRowIndex : 0), k * 6 + 5, String.valueOf(Math.round(hist.getScore()))); } else { if (!is96Entrance) Toolket.setCellValue(sheet, 35 + (isMaster ? -2 : 0), k * 6 + 5, hist.getScore() == null ? "" : String.valueOf( Math.round(hist.getScore()))); } } } } // ? if (1 == term) { Toolket.setCellValue(sheet, 33 + (isMaster ? -2 : 0) + (nextPage ? nextPageRowIndex : 0), k * 6 + 2, totalPassCredits.toString()); Toolket.setCellValue(sheet, 34 + (isMaster ? -2 : 0) + (nextPage ? nextPageRowIndex : 0), k * 6 + 2, (passCreditsSum += totalPassCredits).toString()); } else { Toolket.setCellValue(sheet, 33 + (isMaster ? -2 : 0) + (nextPage ? nextPageRowIndex : 0), k * 6 + 4, totalPassCredits.toString()); Toolket.setCellValue(sheet, 34 + (isMaster ? -2 : 0) + (nextPage ? nextPageRowIndex : 0), k * 6 + 4, (passCreditsSum += totalPassCredits).toString()); } } // k--; } gmark = new Gmark(); gmark.setSchoolYear(year); gmark.setStudentNo(studentNo); gmarks = cm.findGMarkBy(gmark); if (!gmarks.isEmpty()) { StringBuilder builder = new StringBuilder(); for (Gmark gm : gmarks) builder.append(gm.getRemark()).append("\n "); int remarkCols = 0; switch (k) { case 0: remarkCols = 0; break; case 1: remarkCols = 6; break; case 2: remarkCols = 12; break; case 3: remarkCols = 18; break; } Toolket.setCellValue(sheet, 36, remarkCols, "" + builder.toString()); } if (rowOver) { Toolket.setCellValue(sheet, 32, (k - 1) * 6 + 5, ""); Toolket.setCellValue(sheet, 35, k * 6 + 5, Toolket.getCellValue(sheet, 35, (k - 1) * 6 + 5)); Toolket.setCellValue(sheet, 35, (k - 1) * 6 + 5, ""); } kk = k; rowIndexx = rowIndex; k++; j++; rowIndex = j >= 4 ? 49 : 6; // rowIndexx = j >= 4 ? 49 : 6; if (j == 4) { // rowIndex = 49; k = 0; nextPage = true; } } } if (isIncludeThisTermScore) { // Exception Students : 92148059, 92146011, 93148066, // 9144037, 914C009, 96164016, 9214D093 AdminManager am = (AdminManager) getBean(ADMIN_MANAGER_BEAN_NAME); Integer year = Integer.valueOf(am.findTermBy(PARAMETER_SCHOOL_YEAR)); boolean isSameYear = lastYear == year; // 2010.04.02isNeedCheck1true?false // ??false,??154D41931AD026??? // ?true boolean isNeedCheck = true, isNeedCheck1 = true; if (!isSameYear) { isNeedCheck1 = false; kk++; if (nextPage) { if (kk == 4) kk = 0; } Toolket.setCellValue(sheet, (nextPage ? 45 : 2), kk * 6, " " + formYear[(nextPage ? k + 4 : k)] + " "); Toolket.setCellValue(sheet, (nextPage ? 46 : 3), kk * 6, "" + year + " 9 " + (year + 1) + " 7 "); rowIndexx = nextPage ? 49 : 6; } if (!nextPage && rowIndexx >= 32) { // ?,:96164016 Toolket.setCellValue(sheet, (nextPage ? 45 : 2), (kk + 1) * 6, " " + formYear[(nextPage ? kk + 4 : kk)] + " "); Toolket.setCellValue(sheet, (nextPage ? 46 : 3), (kk + 1) * 6, "" + year + " 9 " + (year + 1) + " 7 "); rowIndexx = nextPage ? 49 : 6; kk++; } isNeedCheck = true; // passCreditsSum = 0.0F; totalPassCredits = 0.0F; selds = cm.findSeldByStudentNoAndTerm(studentNo, sterm); // boolean isNewSchoolYear = "1".equals(sterm); if (!selds.isEmpty()) { for (Seld seld : selds) { dtime = cm.findDtimeBy(seld.getDtimeOid()); csnos = cm.getCsnameBy(dtime.getCscode()); if (!csnos.isEmpty()) csno = (Csno) csnos.get(0); Toolket.setCellValue(sheet, rowIndexx, kk * 6, StringUtils.substring(Toolket.getCourseOpt(dtime.getOpt()), 0, 1)); Toolket.setCellValue(sheet, rowIndexx, kk * 6 + 1, csno == null ? "" : csno.getChiName()); totalPassCredits += dtime.getCredit(); if ("1".equals(sterm)) { Toolket.setCellValue(sheet, rowIndexx, kk * 6 + 2, dtime.getCredit().toString()); Toolket.setCellValue(sheet, rowIndexx++, kk * 6 + 3, String.valueOf(passScore)); } else { Toolket.setCellValue(sheet, rowIndexx, kk * 6 + 4, dtime.getCredit().toString()); Toolket.setCellValue(sheet, rowIndexx++, kk * 6 + 5, String.valueOf(Math.round(passScore))); } if (isNeedCheck && isNeedCheck1 && !isSameYear && rowIndexx >= 32) { isNeedCheck = false; kk++; if (kk % 4 == 0) { kk = 0; rowIndexx = nextPage ? 49 : 6; } // Toolket.setCellValue(sheet, 43, 0, // "?" // + title + "?"); // Toolket.setCellValue(sheet, 44, 1, "" // + studentNo); // Toolket.setCellValue(sheet, 44, 7, "??" // + student.getStudentName()); // Toolket // .setCellValue( // sheet, // 44, // 9, // "" // + (isMaster ? Toolket // .getMasterDepartName(departClass) // : Toolket // .getDepartName(departClass)) // + (isDoubleMajor // || isAssist ? "(" // + student // .getExtraStatus() // + ":" // + student // .getExtraDept() // + ")" // : "")); // Toolket.setCellValue(sheet, 44, 19, // "" // + student.getIdno()); Toolket.setCellValue(sheet, (nextPage ? 45 : 2), kk * 6, " " + formYear[(nextPage ? kk + 4 : kk)] + " "); Toolket.setCellValue(sheet, (nextPage ? 46 : 3), kk * 6, "" + year + " 9 " + (year + 1) + " 7 "); // rowIndexx = 6; // kk++; } } passCreditsSum += totalPassCredits; if ("1".equals(sterm)) { Toolket.setCellValue(sheet, (nextPage && j >= 4 && rowIndexx >= 49 ? 76 : 33) + (isMaster ? -2 : 0), kk * 6 + 2, totalPassCredits.toString()); Toolket.setCellValue(sheet, (nextPage && j >= 4 && rowIndexx >= 49 ? 77 : 34) + (isMaster ? -2 : 0), kk * 6 + 2, passCreditsSum.toString()); } else { Toolket.setCellValue(sheet, (nextPage && j >= 4 && rowIndexx >= 49 ? 76 : 33) + (isMaster ? -2 : 0), kk * 6 + 4, totalPassCredits.toString()); Toolket.setCellValue(sheet, (nextPage && j >= 4 && rowIndexx >= 49 ? 77 : 34) + (isMaster ? -2 : 0), kk * 6 + 4, passCreditsSum.toString()); } gmark = new Gmark(); gmark.setSchoolYear(Short.valueOf(year.toString())); gmark.setStudentNo(studentNo); gmarks = cm.findGMarkBy(gmark); if (!gmarks.isEmpty()) { StringBuilder builder = new StringBuilder(); for (Gmark gm : gmarks) builder.append(gm.getRemark()).append("\n "); int remarkCols = 0; switch (k) { case 0: remarkCols = 0; break; case 1: remarkCols = 6; break; case 2: remarkCols = 12; break; case 3: remarkCols = 18; break; } Toolket.setCellValue(sheet, 36, remarkCols, "" + builder.toString()); } String[] excluded = { "15", "64", "54", "A4", "B4" }; boolean hasInclude = ArrayUtils.contains(excluded, StringUtils.substring(departClass, 1, 3)); if (!isDelay && !hasInclude && rowIndexx <= 42) Toolket.removeRow(sheet, 43, 45); } } else { String[] excluded = { "15", "64", "54", "A4", "B4" }; boolean hasInclude = ArrayUtils.contains(excluded, StringUtils.substring(departClass, 1, 3)); if (!isDelay && !hasInclude && rowIndexx <= 42) Toolket.removeRow(sheet, 43, 45); } } File tempDir = new File(context .getRealPath("/WEB-INF/reports/temp/" + getUserCredential(session).getMember().getIdno() + (new SimpleDateFormat("yyyyMMdd").format(new Date())))); if (!tempDir.exists()) tempDir.mkdirs(); File output = new File(tempDir, departClass + ".xls"); FileOutputStream fos = new FileOutputStream(output); workbook.write(fos); fos.close(); JasperReportUtils.printXlsToFrontEnd(response, output); output.delete(); tempDir.delete(); // return null; } else { ServletContext context = request.getSession().getServletContext(); Map<String, String> parameters = new HashMap<String, String>(); File image = new File(context.getRealPath("/pages/reports/2002chitS.jpg")); parameters.put("IMAGE", image.getAbsolutePath()); byte[] bytes = JasperRunManager.runReportToPdf(JasperReportUtils.getNoResultReport(context), parameters, new JREmptyDataSource()); JasperReportUtils.printPdfToFrontEnd(response, bytes); } } }
From source file:tw.edu.chit.struts.action.registration.ReportPrintAction.java
/** * ???96/*from w w w.j a va 2 s. co m*/ * * @param mapping org.apache.struts.action.ActionMapping object * @param form org.apache.struts.action.ActionForm object * @param request request javax.servlet.http.HttpServletRequest object * @param response response javax.servlet.http.HttpServletResponse object * @param sterm */ @SuppressWarnings("unchecked") protected void printClassStudentsScoreHistory4CreditClass(ActionMapping mapping, DynaActionForm form, HttpServletRequest request, HttpServletResponse response, String sterm) throws Exception { HttpSession session = request.getSession(false); MemberManager mm = (MemberManager) getBean(IConstants.MEMBER_MANAGER_BEAN_NAME); CourseManager cm = (CourseManager) getBean(IConstants.COURSE_MANAGER_BEAN_NAME); ScoreManager sm = (ScoreManager) getBean(IConstants.SCORE_MANAGER_BEAN_NAME); StudAffairManager sam = (StudAffairManager) getBean(IConstants.STUD_AFFAIR_MANAGER_BEAN_NAME); boolean isIncludeThisTermScore = "true".equalsIgnoreCase(request.getParameter("tt")); // String year = cm.getNowBy("School_year"); // String term = form.getString("sterm"); String studentNo = null; Clazz clazz = null; ScoreHist scoreHist = null, hist = null; List<Student> students = null; List<Clazz> clazzes = sm.findClassBy(new Clazz(processClassInfo(form)), getUserCredential(session).getClassInChargeAry(), false); if (!clazzes.isEmpty() && clazzes.size() > 1) { ActionMessages messages = new ActionMessages(); messages.add(ActionMessages.GLOBAL_MESSAGE, new ActionMessage("", "")); saveMessages(request, messages); // return mapping.findForward(IConstants.ACTION_MAIN_NAME); ServletContext context = request.getSession().getServletContext(); Map<String, String> parameters = new HashMap<String, String>(); File image = new File(context.getRealPath("/pages/reports/2002chitS.jpg")); parameters.put("IMAGE", image.getAbsolutePath()); byte[] bytes = JasperRunManager.runReportToPdf(JasperReportUtils.getNoResultReport(context), parameters, new JREmptyDataSource()); JasperReportUtils.printPdfToFrontEnd(response, bytes); } else { clazz = clazzes.get(0); students = mm.findStudentsByClassNo(clazz.getClassNo()); if (!students.isEmpty()) { ServletContext context = request.getSession().getServletContext(); String[] excep = { "11G332" }; // ??+1 String[] formYear = { "", "", "", "", "", "", "", "" }; short firstYear = 0; short lastYear = 0; double justScore = 0.0D; int sheetIndex = 0; int k = 0, j = 0, rowIndex = 0, nextPageRowIndex = 0; int kk = 0, rowIndexx = 0; String departClass = clazz.getClassNo(); String departCode = "", title = "", evgrType = "", historyDepartCode = "", opt = "", cscode = ""; // ?70? float passScore = Toolket.getPassScoreByDepartClass(departClass); Graduate graduate = null; MasterData md = null; Just just = null; ScoreHist target = null; Dtime dtime = null; List csnos = null; Csno csno = null; Gmark gmark = null; Map<String, String> position = null; Float passCreditsSum = 0.0F; Float totalPassCredits = 0.0F; List<Seld> selds = null; List<ScoreHist> scoreHistList = null; List<Stavg> stavgs = null; List<Gmark> gmarks = null; boolean isOver = false; // (lastYear - firstYear + 1) > 4; boolean isDelay = Toolket.isDelayClass(departClass); boolean isSpringClass = false; // boolean isDoubleMajor = false; boolean isAssist = false; // 9608???Show????,?Show'',?????Show boolean is96Entrance = false; boolean isMaster = Toolket.isMasterClass(departClass); boolean nextPage = false, hasPassRecord = false, rowOver = false; boolean isNotExemptAndMend = false; // ??? boolean isExempt = false; // ??? boolean isMend = false; // ?? boolean isAppend = false; // ??? boolean isNotSameDepartCode = false; int studentCounts = students.size(); String fileName = ""; DecimalFormat df = new DecimalFormat(",##0.0"); File templateXLS = null; if (!isMaster) { if (studentCounts <= 30) fileName = "ClassStudentsScoreHistoryOver30.xls"; else if (studentCounts > 31 && studentCounts <= 40) fileName = "ClassStudentsScoreHistoryOver40.xls"; else if (studentCounts > 40 && studentCounts <= 45) fileName = "ClassStudentsScoreHistoryOver45.xls"; else if (studentCounts > 45 && studentCounts <= 50) fileName = "ClassStudentsScoreHistoryOver50.xls"; else if (studentCounts > 51 && studentCounts <= 55) fileName = "ClassStudentsScoreHistoryOver55.xls"; else fileName = "ClassStudentsScoreHistoryOver60.xls"; title = Toolket.getSchoolFormalName(departClass); if (isDelay) { // Only 20 Sheets templateXLS = new File( context.getRealPath("/WEB-INF/reports/ClassStudentsScoreHistoryOver.xls")); } else { templateXLS = new File(context.getRealPath("/WEB-INF/reports/" + fileName)); } } else { if (studentCounts <= 15) fileName = "ClassStudentsScoreHistoryMaster15.xls"; else if (studentCounts > 15 && studentCounts <= 20) fileName = "ClassStudentsScoreHistoryMaster20.xls"; else fileName = "ClassStudentsScoreHistoryMaster25.xls"; String masterId = StringUtils.substring(departClass, 1, 3); if ("1G".equals(masterId)) title = "?"; else title = "??"; templateXLS = new File(context.getRealPath("/WEB-INF/reports/" + fileName)); } HSSFWorkbook workbook = Toolket.getHSSFWorkbook(templateXLS); HSSFFont colorFont = workbook.createFont(); colorFont.setColor(HSSFColor.RED.index); colorFont.setFontHeightInPoints((short) 12); colorFont.setFontName("Arial Unicode MS"); HSSFFont fontSize12 = workbook.createFont(); fontSize12.setFontHeightInPoints((short) 12); fontSize12.setFontName("Arial Unicode MS"); HSSFSheet sheet = null; HSSFFont fontSize10 = workbook.createFont(); fontSize10.setFontHeightInPoints((short) 10); fontSize10.setFontName("Arial Unicode MS"); for (Student student : students) { studentNo = student.getStudentNo(); sheet = workbook.getSheetAt(sheetIndex); workbook.setSheetName(sheetIndex++, studentNo.toUpperCase()); if (student == null) { graduate = mm.findGraduateByStudentNo(studentNo); student = new Student(); BeanUtils.copyProperties(student, graduate); } // isDoubleMajor = "".equals(student.getExtraStatus()); isAssist = "".equals(student.getExtraStatus()); // departClass = student.getDepartClass(); // 9608???Show????,?Show'',?????Show is96Entrance = student.getEntrance() == null ? false : student.getEntrance() >= (short) 9608; scoreHist = new ScoreHist(studentNo); scoreHistList = sm.findScoreHistBy(scoreHist); if (scoreHistList.isEmpty()) { ActionMessages messages = new ActionMessages(); messages.add(ActionMessages.GLOBAL_MESSAGE, new ActionMessage("Course.messageN1", "?")); saveErrors(request, messages); log.error("No Score History... " + studentNo); sheetIndex--; continue; } else { firstYear = Short.parseShort(scoreHistList.get(0).getSchoolYear().toString()); lastYear = Short .parseShort(scoreHistList.get(scoreHistList.size() - 1).getSchoolYear().toString()); isOver = (lastYear - firstYear + 1) > 4; if (isOver) ; // log.error("It is Over... " + studentNo); departCode = ""; Toolket.setCellValue(sheet, 0, 0, "?" + title + "?"); Toolket.setCellValue(sheet, 1, 1, "" + studentNo); Toolket.setCellValue(sheet, 1, 7, "??" + student.getStudentName()); Toolket.setCellValue(sheet, 1, 9, "" + (isMaster ? Toolket.getMasterDepartName(departClass) : Toolket.getDepartName(departClass)) + (isDoubleMajor || isAssist ? "(" + student.getExtraStatus() + ":" + student.getExtraDept() + ")" : "")); Toolket.setCellValue(sheet, 1, 19, "" + student.getIdno()); // ?2,?code Toolket.setCellValue(sheet, 43, 0, "?" + title + "?"); Toolket.setCellValue(sheet, 44, 1, "" + studentNo); Toolket.setCellValue(sheet, 44, 7, "??" + student.getStudentName()); Toolket.setCellValue(sheet, 44, 9, "" + (isMaster ? Toolket.getMasterDepartName(departClass) : Toolket.getDepartName(departClass)) + (isDoubleMajor || isAssist ? "(" + student.getExtraStatus() + ":" + student.getExtraDept() + ")" : "")); Toolket.setCellValue(sheet, 44, 19, "" + student.getIdno()); if (isDelay) { Toolket.setCellValue(sheet, 43, 0, "?" + title + "?"); Toolket.setCellValue(sheet, 44, 1, "" + studentNo); Toolket.setCellValue(sheet, 44, 7, "??" + student.getStudentName()); Toolket.setCellValue(sheet, 44, 9, "" + (isMaster ? Toolket.getMasterDepartName(departClass) : Toolket.getDepartName(departClass)) + (isDoubleMajor || isAssist ? "(" + student.getExtraStatus() + ":" + student.getExtraDept() + ")" : "")); Toolket.setCellValue(sheet, 44, 19, "" + student.getIdno()); } if (isDoubleMajor || isAssist) { Toolket.setCellValue(sheet, 42, 0, " => *:?? #: &: "); departCode = StringUtils.substring(student.getDepartClass(), 3, 4); } if (isOver) { Toolket.setCellValue(sheet, 43, 0, "?" + title + "?"); Toolket.setCellValue(sheet, 44, 1, "" + studentNo); Toolket.setCellValue(sheet, 44, 7, "??" + student.getStudentName()); Toolket.setCellValue(sheet, 44, 9, "" + (isMaster ? Toolket.getMasterDepartName(departClass) : Toolket.getDepartName(departClass))); Toolket.setCellValue(sheet, 44, 19, "" + student.getIdno()); if (isDoubleMajor || isAssist) Toolket.setCellValue(sheet, 85, 0, " => *:?? #: &: "); } if (isMaster) { md = sm.findMasterByStudentNo(studentNo); if (md != null) { Toolket.setCellValue(sheet, 38, 0, "" + md.getThesesChiname()); Toolket.setCellValue(sheet, 39, 0, " " + md.getThesesEngname()); Toolket.setCellValue(sheet, 38, 17, md.getRemark()); Toolket.setCellValue(sheet, 40, 0, "??" + md.getThesesScore()); Toolket.setCellValue(sheet, 40, 4, "??(50%)" + md.getThesesScore() / 2); Toolket.setCellValue(sheet, 40, 8, "??" + md.getEvgr1Score()); Toolket.setCellValue(sheet, 40, 14, "??(50%)" + md.getEvgr1Score() / 2); Toolket.setCellValue(sheet, 40, 19, "?" + md.getGraduateScore()); } } if (Arrays.binarySearch(excep, departClass) >= 0) { lastYear++; isSpringClass = true; Toolket.setCellValue(sheet, 39, 17, "" + (lastYear + 1) + ".1"); } k = 0; j = 0; rowIndex = 6; nextPageRowIndex = 43; passCreditsSum = 0.0F; nextPage = false; hasPassRecord = false; rowOver = false; // List<Stavg> stavgs = null; // Just just = null; // String[] formYear = { "", "", "", "", "", "", // "", "" }; // ?Show scoreHist.setEvgrType("6"); scoreHistList = sm.findScoreHistBy(scoreHist); Float creditSum1 = 0.0F, creditSum2 = 0.0F; String courseName = null; if (!scoreHistList.isEmpty()) { rowIndex = 6; // position = new HashMap<String, String>(); // position1 = new HashMap<String, String>(); Toolket.setCellValue(sheet, 2 + (nextPage ? nextPageRowIndex : 0), k * 6, " ? ? "); for (int i = 0; i < scoreHistList.size(); i++) { hist = scoreHistList.get(i); Toolket.setCellValue(sheet, rowIndex, 0, StringUtils.substring(Toolket.getCourseOpt(hist.getOpt()), 0, 1)); courseName = cm.findCourseInfoByCscode(hist.getCscode()) == null ? "??" : cm.findCourseInfoByCscode(hist.getCscode()).getChiName().trim(); if (courseName.length() > 10) Toolket.setCellValue(workbook, sheet, rowIndex, 1, courseName, fontSize10, HSSFCellStyle.ALIGN_LEFT, true, null); else Toolket.setCellValue(sheet, rowIndex, 1, courseName); if (hist.getSchoolTerm().equals("1")) { Toolket.setCellValue(sheet, rowIndex, 2, hist.getCredit().toString()); creditSum1 += hist.getCredit(); Toolket.setCellValue(sheet, rowIndex, 3, ""); } else { Toolket.setCellValue(sheet, rowIndex, 4, hist.getCredit().toString()); creditSum2 += hist.getCredit(); Toolket.setCellValue(sheet, rowIndex, 5, ""); } rowIndex++; } Toolket.setCellValue(sheet, 33, 2, String.valueOf(creditSum1)); Toolket.setCellValue(sheet, 33, 4, String.valueOf(creditSum2)); Toolket.setCellValue(sheet, 34, 2, String.valueOf(creditSum1)); Toolket.setCellValue(sheet, 34, 4, String.valueOf(creditSum1 + creditSum2)); } rowIndex = 6; passCreditsSum = creditSum1 + creditSum2; scoreHist.setEvgrType(null); // ??? k = 1; // ?2 for (short year = firstYear; year <= lastYear; year++) { // ???9316D078 // ??? scoreHist.setSchoolYear(year); scoreHist.setSchoolTerm("1"); hasPassRecord = !sm.findScoreHistBy(scoreHist).isEmpty(); if (!hasPassRecord) { scoreHist.setSchoolTerm("2"); hasPassRecord = !sm.findScoreHistBy(scoreHist).isEmpty(); if (!hasPassRecord) continue; } if (isSpringClass && year == lastYear) { just = sam.findJustByStudentNo(studentNo); justScore = 0.0D; if (just == null || just.getTotalScore() == 0.0D) { target = new ScoreHist(studentNo); target.setSchoolYear(new Short(year)); target.setSchoolTerm("2"); target.setCscode("99999"); scoreHistList = sm.findScoreHistBy(target); if (!scoreHistList.isEmpty()) { scoreHist = sm.findScoreHistBy(scoreHist).get(0); justScore = scoreHist.getScore(); } } else justScore = just.getTotalScore(); Toolket.setCellValue(sheet, 35 + (isMaster ? -2 : 0), k * 6 + 3, justScore == 0.0D ? "" : String.valueOf(Math.round(justScore))); } if (rowOver) { Toolket.setCellValue(workbook, sheet, 2 + (nextPage ? nextPageRowIndex : 0), k * 6, " " + formYear[(nextPage ? k + 4 : k)] + " ", fontSize12, HSSFCellStyle.ALIGN_CENTER, true, null); } else Toolket.setCellValue(sheet, 2 + (nextPage ? nextPageRowIndex : 0), k * 6, " " + formYear[(nextPage ? k + 4 : k)] + " "); position = new HashMap<String, String>(); for (int term = 1; term <= 2; term++) { scoreHist.setSchoolYear(year); scoreHist.setSchoolTerm(String.valueOf(term)); // scoreHist.setEvgrType("1"); // ? scoreHistList = sm.findScoreHistBy(scoreHist); if (!scoreHistList.isEmpty()) { Toolket.setCellValue(sheet, 3 + (nextPage ? nextPageRowIndex : 0), k * 6, "" + year + " 9 " + (year + 1) + " 7 "); stavgs = sm.findStavgBy(new Stavg(studentNo, year, String.valueOf(term))); totalPassCredits = 0.0F; // for (ScoreHist hist : scoreHistList) { // i != scoreHistList.size() - // 1???,?? for (int i = 0; i < scoreHistList.size(); i++) { hist = scoreHistList.get(i); if (hist.getEvgrType().equals("6")) continue; // ??? if (rowIndex == 32 && i != scoreHistList.size() - 1) { rowIndex = 6; k++; Toolket.setCellValue(sheet, 2 + (nextPage ? nextPageRowIndex : 0), k * 6, " " + formYear[k - 1] + " "); Toolket.setCellValue(sheet, 3 + (nextPage ? nextPageRowIndex : 0), k * 6, "" + year + " 9 " + (year + 1) + " 7 "); rowOver = true; } evgrType = hist.getEvgrType(); isNotExemptAndMend = !"6".equals(evgrType) && !"5".equals(evgrType); // ??? isExempt = "6".equals(evgrType); // ??? isMend = "5".equals(evgrType); // ?? isAppend = "2".equals(evgrType); // ??? historyDepartCode = StringUtils.isBlank(hist.getStdepartClass()) ? "" : StringUtils.substring(hist.getStdepartClass(), 3, 4); isNotSameDepartCode = !departCode.equals(historyDepartCode) && !historyDepartCode.equals("0"); opt = ""; if ("3".equals(evgrType)) opt = ""; else opt = StringUtils.substring(Toolket.getCourseOpt(hist.getOpt()), 0, 1) + (isAppend ? "" : (isMend ? "" : (!isNotExemptAndMend ? "" : ""))); cscode = hist.getCscode(); if ("GA035".equals(cscode) || "".equals("GB033")) continue; // 2? if (!"99999".equals(cscode)) { // ? courseName = cm.findCourseInfoByCscode(cscode) == null ? "??" : cm.findCourseInfoByCscode(cscode).getChiName().trim(); Float credit = hist.getCredit(); Float score = hist.getScore(); boolean pass = (score == null ? 0.0F : score) >= passScore; // ((?&&?)||?)&&? if (((isNotExemptAndMend && pass) || isExempt) && !isMend) // if (!isNotExemptAndMend || // !isMend || // bFlag1) // if (!isMend && bFlag1) if (isMaster && "G".equalsIgnoreCase( StringUtils.substring(hist.getStdepartClass(), 2, 3))) { // ???,? totalPassCredits += credit; } else totalPassCredits += credit; if (1 == term) { if (opt.length() == 1 || is96Entrance) Toolket.setCellValue(sheet, rowIndex, k * 6, (is96Entrance ? StringUtils.substring(opt, 0, 1) : opt)); else Toolket.setCellValue(workbook, sheet, rowIndex, k * 6, opt, fontSize12, HSSFCellStyle.ALIGN_CENTER, true, null); Toolket.setCellValue(sheet, rowIndex, k * 6 + 1, courseName); position.put(courseName, String.valueOf(rowIndex)); if (isNotExemptAndMend) { // ? String creditStr = credit.toString(); if (!isMend && !isExempt) creditStr = pass ? creditStr : creditStr + "*"; if (isDoubleMajor && isNotSameDepartCode) creditStr += "&"; if (isAssist && isNotSameDepartCode) creditStr += "#"; if (StringUtils.indexOf(creditStr, "*") == StringUtils.INDEX_NOT_FOUND) Toolket.setCellValue(sheet, rowIndex, k * 6 + 2, creditStr); else Toolket.setCellValue(workbook, sheet, rowIndex, k * 6 + 2, creditStr, colorFont, HSSFCellStyle.ALIGN_CENTER, true, null); // ?? Toolket.setCellValue(sheet, rowIndex++, k * 6 + 3, (isMend ? "" : (score == null ? "" : StringUtils.substringBefore(score.toString(), ".")))); // ?? Toolket.setCellValue(sheet, 32 + (isMaster ? -2 : 0) + (nextPage ? nextPageRowIndex : 0), k * 6 + 3, (stavgs.isEmpty() ? "" : df.format( stavgs.get(0).getScore() + 0.001D))); } else { // ? String creditStr = credit.toString(); Toolket.setCellValue(sheet, rowIndex, k * 6 + 2, creditStr); if (is96Entrance) Toolket.setCellValue(sheet, rowIndex++, k * 6 + 3, (isMend ? "" : "")); else { // ?? Toolket.setCellValue(sheet, 32 + (isMaster ? -2 : 0) + (nextPage ? nextPageRowIndex : 0), k * 6 + 3, (stavgs.isEmpty() ? "" : df.format(stavgs.get(0).getScore() + 0.001D))); Toolket.setCellValue(sheet, rowIndex++, k * 6 + 3, score == null ? "" : StringUtils.substringBefore( score.toString(), ".")); } } } else { String endString = StringUtils.substring(courseName, courseName.length() - 1); boolean duplicatedCourseName = "".equals(endString); boolean duplicatedCourseName1 = "".equals(endString); boolean duplicatedCourseName2 = "".equals(endString); if (duplicatedCourseName || duplicatedCourseName1 || duplicatedCourseName2) { String courseIndex = StringUtils.substring(courseName, 0, courseName.length() - 1); String row = "", maybeSameCourseNameOptInfo = ""; if (duplicatedCourseName) { row = position.get(courseIndex + ""); if (row != null) maybeSameCourseNameOptInfo = Toolket.getCellValue(sheet, Integer.parseInt(row), (rowOver ? k - 1 : k) * 6); } else if (duplicatedCourseName1) { row = position.get(courseIndex + ""); if (row != null) maybeSameCourseNameOptInfo = Toolket.getCellValue(sheet, Integer.parseInt(row), (rowOver ? k - 1 : k) * 6); } else if (duplicatedCourseName2) { row = position.get(courseIndex + ""); if (row != null) maybeSameCourseNameOptInfo = Toolket.getCellValue(sheet, Integer.parseInt(row), (rowOver ? k - 1 : k) * 6); } // ????? boolean isAllowMerge = (StringUtils.contains(opt, "") && StringUtils.contains(maybeSameCourseNameOptInfo, "")) || (StringUtils.contains(opt, "?") && StringUtils .contains(maybeSameCourseNameOptInfo, "?")); if (row != null && isAllowMerge) { int rowNum = Integer.parseInt(row); Toolket.setCellValue(sheet, rowNum, (rowOver ? k - 1 : k) * 6 + 1, Toolket.getCellValue(sheet, rowNum, (rowOver ? k - 1 : k) * 6 + 1) + "?" + (duplicatedCourseName ? "" : duplicatedCourseName1 ? "" : "")); if (isNotExemptAndMend) { // ? String creditStr = credit.toString(); if (!isMend && !isExempt) creditStr = pass ? creditStr : creditStr + "*"; if (isDoubleMajor && isNotSameDepartCode) creditStr += "&"; if (isAssist && isNotSameDepartCode) creditStr += "#"; if (StringUtils.indexOf(creditStr, "*") == StringUtils.INDEX_NOT_FOUND) Toolket.setCellValue(sheet, rowNum, (rowOver ? k - 1 : k) * 6 + 4, creditStr); else Toolket.setCellValue(workbook, sheet, rowNum, (rowOver ? k - 1 : k) * 6 + 4, creditStr, colorFont, HSSFCellStyle.ALIGN_CENTER, true, null); Toolket.setCellValue(sheet, rowNum, (rowOver ? k - 1 : k) * 6 + 5, (isMend ? "" : (score == null ? "" : StringUtils.substringBefore( score.toString(), ".")))); Toolket.setCellValue(sheet, 32 + (isMaster ? -2 : 0) + (nextPage ? nextPageRowIndex : 0), (rowOver ? k - 1 : k) * 6 + 5, (stavgs.isEmpty() ? "" : df.format(stavgs.get(0).getScore() + 0.001D))); } else { // ? String creditStr = credit.toString(); Toolket.setCellValue(sheet, rowNum, (rowOver ? k - 1 : k) * 6 + 4, creditStr); if (is96Entrance) Toolket.setCellValue(sheet, rowNum, (rowOver ? k - 1 : k) * 6 + 5, (isMend ? "" : "")); else { Toolket.setCellValue(sheet, 32 + (isMaster ? -2 : 0), (rowOver ? k - 1 : k) * 6 + 5, (stavgs.isEmpty() ? "" : df.format(stavgs.get(0).getScore() + 0.001D))); Toolket.setCellValue(sheet, rowNum, (rowOver ? k - 1 : k) * 6 + 5, score == null ? "" : StringUtils.substringBefore( score.toString(), ".")); } } } else { if (opt.length() == 1 || is96Entrance) Toolket.setCellValue(sheet, rowIndex, k * 6, (is96Entrance ? StringUtils.substring(opt, 0, 1) : opt)); else Toolket.setCellValue(workbook, sheet, rowIndex, k * 6, opt, fontSize12, HSSFCellStyle.ALIGN_CENTER, true, null); Toolket.setCellValue(sheet, rowIndex, k * 6 + 1, courseName); position.put(courseName, String.valueOf(rowIndex)); if (isNotExemptAndMend) { // ? String creditStr = credit.toString(); if (!isMend && !isExempt) creditStr = pass ? creditStr : creditStr + "*"; if (isDoubleMajor && isNotSameDepartCode) creditStr += "&"; if (isAssist && isNotSameDepartCode) creditStr += "#"; if (StringUtils.indexOf(creditStr, "*") == StringUtils.INDEX_NOT_FOUND) Toolket.setCellValue(sheet, rowIndex, k * 6 + 4, creditStr); else Toolket.setCellValue(workbook, sheet, rowIndex, k * 6 + 4, creditStr, colorFont, HSSFCellStyle.ALIGN_CENTER, true, null); // ?? Toolket.setCellValue(sheet, rowIndex++, k * 6 + 5, (isMend ? "" : (score == null ? "" : StringUtils.substringBefore( score.toString(), ".")))); // ?? Toolket.setCellValue(sheet, 32 + (isMaster ? -2 : 0), k * 6 + 5, (stavgs.isEmpty() ? "" : df.format(stavgs.get(0).getScore() + 0.001D))); } else { // ? String creditStr = credit.toString(); Toolket.setCellValue(sheet, rowIndex, k * 6 + 4, creditStr); if (is96Entrance) Toolket.setCellValue(sheet, rowIndex++, k * 6 + 5, (isMend ? "" : "")); else { // ?? Toolket.setCellValue(sheet, 32 + (isMaster ? -2 : 0), k * 6 + 5, (stavgs.isEmpty() ? "" : df.format(stavgs.get(0).getScore() + 0.001D))); Toolket.setCellValue(sheet, rowIndex++, k * 6 + 5, score == null ? "" : StringUtils.substringBefore( score.toString(), ".")); } } } } else { if (opt.length() == 1 || is96Entrance) Toolket.setCellValue(sheet, rowIndex, k * 6, (is96Entrance ? StringUtils.substring(opt, 0, 1) : opt)); else Toolket.setCellValue(workbook, sheet, rowIndex, k * 6, opt, fontSize12, HSSFCellStyle.ALIGN_CENTER, true, null); Toolket.setCellValue(sheet, rowIndex, k * 6 + 1, courseName); // ? String creditStr = credit.toString(); if (!isMend && !isExempt) creditStr = pass ? creditStr : creditStr + "*"; if (isDoubleMajor && isNotSameDepartCode) creditStr += "&"; if (isAssist && isNotSameDepartCode) creditStr += "#"; if (StringUtils.indexOf(creditStr, "*") == StringUtils.INDEX_NOT_FOUND) Toolket.setCellValue(sheet, rowIndex, k * 6 + 4, creditStr); else Toolket.setCellValue(workbook, sheet, rowIndex, k * 6 + 4, creditStr, colorFont, HSSFCellStyle.ALIGN_CENTER, true, null); if (isNotExemptAndMend) { Toolket.setCellValue(sheet, rowIndex++, k * 6 + 5, (isMend ? "" : (score == null ? "" : StringUtils.substringBefore( score.toString(), ".")))); Toolket.setCellValue(sheet, 32 + (isMaster ? -2 : 0), k * 6 + 5, (stavgs.isEmpty() ? "" : df.format(stavgs.get(0).getScore() + 0.001D))); } else { if (is96Entrance) Toolket.setCellValue(sheet, rowIndex++, k * 6 + 5, (isMend ? "" : "")); else { Toolket.setCellValue(sheet, 32 + (isMaster ? -2 : 0), k * 6 + 5, (stavgs.isEmpty() ? "" : df.format(stavgs.get(0).getScore() + 0.001D))); Toolket.setCellValue(sheet, rowIndex++, k * 6 + 5, score == null ? "" : StringUtils.substringBefore( score.toString(), ".")); } } } } } else { // ? if (1 == term) { if (isNotExemptAndMend) { Toolket.setCellValue(sheet, 35 + (isMaster ? -2 : 0) + (nextPage ? nextPageRowIndex : 0), k * 6 + 3, String.valueOf(Math.round(hist.getScore()))); } else { if (!is96Entrance) Toolket.setCellValue(sheet, 35 + (isMaster ? -2 : 0), k * 6 + 3, hist.getScore() == null ? "" : String.valueOf( Math.round((hist.getScore())))); } } else { if (isNotExemptAndMend) { Toolket.setCellValue(sheet, 35 + (isMaster ? -2 : 0) + (nextPage ? nextPageRowIndex : 0), k * 6 + 5, String.valueOf(Math.round(hist.getScore()))); } else { if (!is96Entrance) Toolket.setCellValue(sheet, 35 + (isMaster ? -2 : 0), k * 6 + 5, hist.getScore() == null ? "" : String.valueOf( Math.round(hist.getScore()))); } } } } // ? if (1 == term) { Toolket.setCellValue(sheet, 33 + (isMaster ? -2 : 0) + (nextPage ? nextPageRowIndex : 0), k * 6 + 2, totalPassCredits.toString()); Toolket.setCellValue(sheet, 34 + (isMaster ? -2 : 0) + (nextPage ? nextPageRowIndex : 0), k * 6 + 2, (passCreditsSum += totalPassCredits).toString()); } else { Toolket.setCellValue(sheet, 33 + (isMaster ? -2 : 0) + (nextPage ? nextPageRowIndex : 0), k * 6 + 4, totalPassCredits.toString()); Toolket.setCellValue(sheet, 34 + (isMaster ? -2 : 0) + (nextPage ? nextPageRowIndex : 0), k * 6 + 4, (passCreditsSum += totalPassCredits).toString()); } } // k--; } gmark = new Gmark(); gmark.setSchoolYear(year); gmark.setStudentNo(studentNo); gmarks = cm.findGMarkBy(gmark); if (!gmarks.isEmpty()) { StringBuilder builder = new StringBuilder(); for (Gmark gm : gmarks) builder.append(gm.getRemark()).append("\n "); int remarkCols = 0; switch (k) { case 0: remarkCols = 0; break; case 1: remarkCols = 6; break; case 2: remarkCols = 12; break; case 3: remarkCols = 18; break; } Toolket.setCellValue(sheet, 36, remarkCols, "" + builder.toString()); } if (rowOver) { Toolket.setCellValue(sheet, 32, (k - 1) * 6 + 5, ""); Toolket.setCellValue(sheet, 35, k * 6 + 5, Toolket.getCellValue(sheet, 35, (k - 1) * 6 + 5)); Toolket.setCellValue(sheet, 35, (k - 1) * 6 + 5, ""); } kk = k; rowIndexx = rowIndex; k++; j++; rowIndex = j >= 4 ? 49 : 6; // rowIndexx = j >= 4 ? 49 : 6; if (j == 4) { // rowIndex = 49; k = 0; nextPage = true; } } } if (isIncludeThisTermScore) { // Exception Students : 92148059, 92146011, 93148066, // 9144037, 914C009, 96164016, 9214D093 AdminManager am = (AdminManager) getBean(ADMIN_MANAGER_BEAN_NAME); Integer year = Integer.valueOf(am.findTermBy(PARAMETER_SCHOOL_YEAR)); boolean isSameYear = lastYear == year; boolean isNeedCheck = true, isNeedCheck1 = true; if (!isSameYear) { isNeedCheck1 = false; kk++; if (nextPage) { if (kk == 4) kk = 0; } Toolket.setCellValue(sheet, (nextPage ? 45 : 2), kk * 6, " " + formYear[(nextPage ? k + 4 : k)] + " "); Toolket.setCellValue(sheet, (nextPage ? 46 : 3), kk * 6, "" + year + " 9 " + (year + 1) + " 7 "); rowIndexx = nextPage ? 49 : 6; } if (!nextPage && rowIndexx >= 32) { // ?,:96164016 Toolket.setCellValue(sheet, (nextPage ? 45 : 2), (kk + 1) * 6, " " + formYear[(nextPage ? kk + 4 : kk)] + " "); Toolket.setCellValue(sheet, (nextPage ? 46 : 3), (kk + 1) * 6, "" + year + " 9 " + (year + 1) + " 7 "); rowIndexx = nextPage ? 49 : 6; kk++; } isNeedCheck = true; // passCreditsSum = 0.0F; totalPassCredits = 0.0F; selds = cm.findSeldByStudentNoAndTerm(studentNo, sterm); // boolean isNewSchoolYear = "1".equals(sterm); if (!selds.isEmpty()) { for (Seld seld : selds) { dtime = cm.findDtimeBy(seld.getDtimeOid()); csnos = cm.getCsnameBy(dtime.getCscode()); if (!csnos.isEmpty()) csno = (Csno) csnos.get(0); Toolket.setCellValue(sheet, rowIndexx, kk * 6, StringUtils.substring(Toolket.getCourseOpt(dtime.getOpt()), 0, 1)); Toolket.setCellValue(sheet, rowIndexx, kk * 6 + 1, csno == null ? "" : csno.getChiName()); totalPassCredits += dtime.getCredit(); if ("1".equals(sterm)) { Toolket.setCellValue(sheet, rowIndexx, kk * 6 + 2, dtime.getCredit().toString()); Toolket.setCellValue(sheet, rowIndexx++, kk * 6 + 3, String.valueOf(passScore)); } else { Toolket.setCellValue(sheet, rowIndexx, kk * 6 + 4, dtime.getCredit().toString()); Toolket.setCellValue(sheet, rowIndexx++, kk * 6 + 5, String.valueOf(Math.round(passScore))); } if (isNeedCheck && isNeedCheck1 && rowIndexx >= 32) { isNeedCheck = false; kk++; if (kk % 4 == 0) { kk = 0; rowIndexx = nextPage ? 49 : 6; } // Toolket.setCellValue(sheet, 43, 0, // "?" // + title + "?"); // Toolket.setCellValue(sheet, 44, 1, "" // + studentNo); // Toolket.setCellValue(sheet, 44, 7, "??" // + student.getStudentName()); // Toolket // .setCellValue( // sheet, // 44, // 9, // "" // + (isMaster ? Toolket // .getMasterDepartName(departClass) // : Toolket // .getDepartName(departClass)) // + (isDoubleMajor // || isAssist ? "(" // + student // .getExtraStatus() // + ":" // + student // .getExtraDept() // + ")" // : "")); // Toolket.setCellValue(sheet, 44, 19, // "" // + student.getIdno()); Toolket.setCellValue(sheet, (nextPage ? 45 : 2), kk * 6, " " + formYear[(nextPage ? kk + 4 : kk)] + " "); Toolket.setCellValue(sheet, (nextPage ? 46 : 3), kk * 6, "" + year + " 9 " + (year + 1) + " 7 "); // rowIndexx = 6; // kk++; } } passCreditsSum += totalPassCredits; if ("1".equals(sterm)) { Toolket.setCellValue(sheet, (nextPage && j >= 4 && rowIndexx >= 49 ? 76 : 33) + (isMaster ? -2 : 0), kk * 6 + 2, totalPassCredits.toString()); Toolket.setCellValue(sheet, (nextPage && j >= 4 && rowIndexx >= 49 ? 77 : 34) + (isMaster ? -2 : 0), kk * 6 + 2, passCreditsSum.toString()); } else { Toolket.setCellValue(sheet, (nextPage && j >= 4 && rowIndexx >= 49 ? 76 : 33) + (isMaster ? -2 : 0), kk * 6 + 4, totalPassCredits.toString()); Toolket.setCellValue(sheet, (nextPage && j >= 4 && rowIndexx >= 49 ? 77 : 34) + (isMaster ? -2 : 0), kk * 6 + 4, passCreditsSum.toString()); } String[] excluded = { "15", "64", "54", "A4", "B4" }; boolean hasInclude = ArrayUtils.contains(excluded, StringUtils.substring(departClass, 1, 3)); if (!isDelay && !hasInclude && rowIndexx <= 42) Toolket.removeRow(sheet, 43, 45); } } else { String[] excluded = { "15", "64", "54", "A4", "B4" }; boolean hasInclude = ArrayUtils.contains(excluded, StringUtils.substring(departClass, 1, 3)); if (!isDelay && !hasInclude && rowIndexx <= 42) Toolket.removeRow(sheet, 43, 45); } } File tempDir = new File(context .getRealPath("/WEB-INF/reports/temp/" + getUserCredential(session).getMember().getIdno() + (new SimpleDateFormat("yyyyMMdd").format(new Date())))); if (!tempDir.exists()) tempDir.mkdirs(); File output = new File(tempDir, departClass + ".xls"); FileOutputStream fos = new FileOutputStream(output); workbook.write(fos); fos.close(); JasperReportUtils.printXlsToFrontEnd(response, output); output.delete(); tempDir.delete(); // return null; } else { ServletContext context = request.getSession().getServletContext(); Map<String, String> parameters = new HashMap<String, String>(); File image = new File(context.getRealPath("/pages/reports/2002chitS.jpg")); parameters.put("IMAGE", image.getAbsolutePath()); byte[] bytes = JasperRunManager.runReportToPdf(JasperReportUtils.getNoResultReport(context), parameters, new JREmptyDataSource()); JasperReportUtils.printPdfToFrontEnd(response, bytes); } } }
From source file:tw.edu.chit.struts.action.registration.ReportPrintAction.java
/** * ???96/* w ww. j av a 2 s . c o m*/ * * @param mapping org.apache.struts.action.ActionMapping object * @param form org.apache.struts.action.ActionForm object * @param request request javax.servlet.http.HttpServletRequest object * @param response response javax.servlet.http.HttpServletResponse object * @param sterm */ @SuppressWarnings("unchecked") protected void printClassStudentsScoreHistory1(ActionMapping mapping, DynaActionForm form, HttpServletRequest request, HttpServletResponse response, String sterm) throws Exception { HttpSession session = request.getSession(false); MemberManager mm = (MemberManager) getBean(IConstants.MEMBER_MANAGER_BEAN_NAME); CourseManager cm = (CourseManager) getBean(IConstants.COURSE_MANAGER_BEAN_NAME); ScoreManager sm = (ScoreManager) getBean(IConstants.SCORE_MANAGER_BEAN_NAME); StudAffairManager sam = (StudAffairManager) getBean(IConstants.STUD_AFFAIR_MANAGER_BEAN_NAME); boolean isIncludeThisTermScore = "true".equalsIgnoreCase(request.getParameter("tt")); String studentNo = null; Clazz clazz = null; ScoreHist scoreHist = null, hist = null; List<Student> students = null; List<Graduate> graduates = null; List<Clazz> clazzes = sm.findClassBy(new Clazz(processClassInfo(form)), getUserCredential(session).getClassInChargeAry(), false); if (!clazzes.isEmpty() && clazzes.size() > 1) { ActionMessages messages = new ActionMessages(); messages.add(ActionMessages.GLOBAL_MESSAGE, new ActionMessage("", "")); saveMessages(request, messages); ServletContext context = request.getSession().getServletContext(); Map<String, String> parameters = new HashMap<String, String>(); File image = new File(context.getRealPath("/pages/reports/2002chitS.jpg")); parameters.put("IMAGE", image.getAbsolutePath()); byte[] bytes = JasperRunManager.runReportToPdf(JasperReportUtils.getNoResultReport(context), parameters, new JREmptyDataSource()); JasperReportUtils.printPdfToFrontEnd(response, bytes); } else { clazz = clazzes.get(0); graduates = mm.findGraduatesByClassNo(clazz.getClassNo()); // ?96.2 String no = StringUtils.substring(clazz.getClassNo(), 0, 4) + (Integer.parseInt(StringUtils.substring(clazz.getClassNo(), 4)) + 10); students = mm.findStudentsByClassNo(no); for (Student student : students) { Graduate g = new Graduate(); BeanUtils.copyProperties(g, student); graduates.add(g); } if (!graduates.isEmpty()) { ServletContext context = request.getSession().getServletContext(); String[] excep = { "11G332" }; // ??+1 String[] formYear = { "", "", "", "", "", "", "", "" }; short firstYear = 0; short lastYear = 0; double justScore = 0.0D; int sheetIndex = 0; int k = 0, j = 0, rowIndex = 0, nextPageRowIndex = 0; int kk = 0, rowIndexx = 0; String departClass = clazz.getClassNo(); String departCode = "", title = "", evgrType = "", historyDepartCode = "", opt = "", cscode = ""; // ?70? float passScore = Toolket.getPassScoreByDepartClass(departClass); MasterData md = null; Just just = null; ScoreHist target = null; Dtime dtime = null; List csnos = null; Csno csno = null; Gmark gmark = null; Map<String, String> position = null; Float passCreditsSum = 0.0F; Float totalPassCredits = 0.0F; List<Seld> selds = null; List<ScoreHist> scoreHistList = null; List<Stavg> stavgs = null; List<Gmark> gmarks = null; boolean isOver = false; // (lastYear - firstYear + 1) > 4; boolean isDelay = Toolket.isDelayClass(departClass); boolean isSpringClass = false; // boolean isDoubleMajor = false; boolean isAssist = false; // 9608???Show????,?Show'',?????Show boolean is96Entrance = false; boolean isMaster = Toolket.isMasterClass(departClass); boolean nextPage = false, hasPassRecord = false, rowOver = false; boolean isNotExemptAndMend = false; // ??? boolean isExempt = false; // ??? boolean isMend = false; // ?? boolean isAppend = false; // ??? boolean isNotSameDepartCode = false; int studentCounts = graduates.size(); String fileName = ""; DecimalFormat df = new DecimalFormat(",##0.0"); File templateXLS = null; if (!isMaster) { if (studentCounts <= 30) fileName = "ClassStudentsScoreHistoryOver30.xls"; else if (studentCounts > 31 && studentCounts <= 40) fileName = "ClassStudentsScoreHistoryOver40.xls"; else if (studentCounts > 40 && studentCounts <= 45) fileName = "ClassStudentsScoreHistoryOver45.xls"; else if (studentCounts > 45 && studentCounts <= 50) fileName = "ClassStudentsScoreHistoryOver50.xls"; else if (studentCounts > 51 && studentCounts <= 55) fileName = "ClassStudentsScoreHistoryOver55.xls"; else fileName = "ClassStudentsScoreHistoryOver60.xls"; title = Toolket.getSchoolFormalName(departClass); if (isDelay) { // Only 20 Sheets templateXLS = new File( context.getRealPath("/WEB-INF/reports/ClassStudentsScoreHistoryOver.xls")); } else { templateXLS = new File(context.getRealPath("/WEB-INF/reports/" + fileName)); } } else { if (studentCounts <= 15) fileName = "ClassStudentsScoreHistoryMaster15.xls"; else if (studentCounts > 15 && studentCounts <= 20) fileName = "ClassStudentsScoreHistoryMaster20.xls"; else fileName = "ClassStudentsScoreHistoryMaster25.xls"; String masterId = StringUtils.substring(departClass, 1, 3); if ("1G".equals(masterId)) title = "?"; else title = "??"; templateXLS = new File(context.getRealPath("/WEB-INF/reports/" + fileName)); } HSSFWorkbook workbook = Toolket.getHSSFWorkbook(templateXLS); HSSFFont colorFont = workbook.createFont(); colorFont.setColor(HSSFColor.RED.index); colorFont.setFontHeightInPoints((short) 12); colorFont.setFontName("Arial Unicode MS"); HSSFFont fontSize12 = workbook.createFont(); fontSize12.setFontHeightInPoints((short) 12); fontSize12.setFontName("Arial Unicode MS"); HSSFSheet sheet = null; for (Graduate graduate : graduates) { studentNo = graduate.getStudentNo(); sheet = workbook.getSheetAt(sheetIndex); workbook.setSheetName(sheetIndex++, studentNo.toUpperCase()); // if (student == null) { // graduate = mm.findGraduateByStudentNo(studentNo); // student = new Student(); // BeanUtils.copyProperties(student, graduate); // } // isDoubleMajor = "".equals(graduate.getExtraStatus()); isAssist = "".equals(graduate.getExtraStatus()); // departClass = student.getDepartClass(); // 9608???Show????,?Show'',?????Show is96Entrance = graduate.getEntrance() == null ? false : graduate.getEntrance() >= (short) 9608; scoreHist = new ScoreHist(studentNo); scoreHistList = sm.findScoreHistBy(scoreHist); if (scoreHistList.isEmpty()) { ActionMessages messages = new ActionMessages(); messages.add(ActionMessages.GLOBAL_MESSAGE, new ActionMessage("Course.messageN1", "?")); saveErrors(request, messages); log.error("No Score History... " + studentNo); sheetIndex--; continue; } else { firstYear = Short.parseShort(scoreHistList.get(0).getSchoolYear().toString()); lastYear = Short .parseShort(scoreHistList.get(scoreHistList.size() - 1).getSchoolYear().toString()); isOver = (lastYear - firstYear + 1) > 4; if (isOver) ; // log.error("It is Over... " + studentNo); departCode = ""; Toolket.setCellValue(sheet, 0, 0, "?" + title + "?"); Toolket.setCellValue(sheet, 1, 1, "" + studentNo); Toolket.setCellValue(sheet, 1, 7, "??" + graduate.getStudentName()); Toolket.setCellValue(sheet, 1, 9, "" + (isMaster ? Toolket.getMasterDepartName(departClass) : Toolket.getDepartName(departClass)) + (isDoubleMajor || isAssist ? "(" + graduate.getExtraStatus() + ":" + graduate.getExtraDept() + ")" : "")); Toolket.setCellValue(sheet, 1, 19, "" + graduate.getIdno()); // ?2,?code Toolket.setCellValue(sheet, 43, 0, "?" + title + "?"); Toolket.setCellValue(sheet, 44, 1, "" + studentNo); Toolket.setCellValue(sheet, 44, 7, "??" + graduate.getStudentName()); Toolket.setCellValue(sheet, 44, 9, "" + (isMaster ? Toolket.getMasterDepartName(departClass) : Toolket.getDepartName(departClass)) + (isDoubleMajor || isAssist ? "(" + graduate.getExtraStatus() + ":" + graduate.getExtraDept() + ")" : "")); Toolket.setCellValue(sheet, 44, 19, "" + graduate.getIdno()); if (isDelay) { Toolket.setCellValue(sheet, 43, 0, "?" + title + "?"); Toolket.setCellValue(sheet, 44, 1, "" + studentNo); Toolket.setCellValue(sheet, 44, 7, "??" + graduate.getStudentName()); Toolket.setCellValue(sheet, 44, 9, "" + (isMaster ? Toolket.getMasterDepartName(departClass) : Toolket.getDepartName(departClass)) + (isDoubleMajor || isAssist ? "(" + graduate.getExtraStatus() + ":" + graduate.getExtraDept() + ")" : "")); Toolket.setCellValue(sheet, 44, 19, "" + graduate.getIdno()); } if (isDoubleMajor || isAssist) { Toolket.setCellValue(sheet, 42, 0, " => *:?? #: &: "); departCode = StringUtils.substring(graduate.getDepartClass(), 3, 4); } if (isOver) { Toolket.setCellValue(sheet, 43, 0, "?" + title + "?"); Toolket.setCellValue(sheet, 44, 1, "" + studentNo); Toolket.setCellValue(sheet, 44, 7, "??" + graduate.getStudentName()); Toolket.setCellValue(sheet, 44, 9, "" + (isMaster ? Toolket.getMasterDepartName(departClass) : Toolket.getDepartName(departClass))); Toolket.setCellValue(sheet, 44, 19, "" + graduate.getIdno()); if (isDoubleMajor || isAssist) Toolket.setCellValue(sheet, 85, 0, " => *:?? #: &: "); } if (isMaster) { md = sm.findMasterByStudentNo(studentNo); if (md != null) { Toolket.setCellValue(sheet, 38, 0, "" + md.getThesesChiname()); Toolket.setCellValue(sheet, 39, 0, " " + md.getThesesEngname()); Toolket.setCellValue(sheet, 38, 17, md.getRemark()); Toolket.setCellValue(sheet, 40, 0, "??" + md.getThesesScore()); Toolket.setCellValue(sheet, 40, 4, "??(50%)" + md.getThesesScore() / 2); Toolket.setCellValue(sheet, 40, 8, "??" + md.getEvgr1Score()); Toolket.setCellValue(sheet, 40, 14, "??(50%)" + md.getEvgr1Score() / 2); Toolket.setCellValue(sheet, 40, 19, "?" + md.getGraduateScore()); } } if (Arrays.binarySearch(excep, departClass) >= 0) { lastYear++; isSpringClass = true; Toolket.setCellValue(sheet, 39, 17, "" + (lastYear + 1) + ".1"); } k = 0; j = 0; rowIndex = 6; nextPageRowIndex = 43; passCreditsSum = 0.0F; nextPage = false; hasPassRecord = false; rowOver = false; // List<Stavg> stavgs = null; // Just just = null; // String[] formYear = { "", "", "", "", "", "", // "", "" }; for (short year = firstYear; year <= lastYear; year++) { // ???9316D078 // ??? scoreHist.setSchoolYear(year); scoreHist.setSchoolTerm("1"); hasPassRecord = !sm.findScoreHistBy(scoreHist).isEmpty(); if (!hasPassRecord) { scoreHist.setSchoolTerm("2"); hasPassRecord = !sm.findScoreHistBy(scoreHist).isEmpty(); if (!hasPassRecord) continue; } if (isSpringClass && year == lastYear) { just = sam.findJustByStudentNo(studentNo); justScore = 0.0D; if (just == null || just.getTotalScore() == 0.0D) { target = new ScoreHist(studentNo); target.setSchoolYear(new Short(year)); target.setSchoolTerm("2"); target.setCscode("99999"); scoreHistList = sm.findScoreHistBy(target); if (!scoreHistList.isEmpty()) { scoreHist = sm.findScoreHistBy(scoreHist).get(0); justScore = scoreHist.getScore(); } } else justScore = just.getTotalScore(); Toolket.setCellValue(sheet, 35 + (isMaster ? -2 : 0), k * 6 + 3, justScore == 0.0D ? "" : String.valueOf(Math.round(justScore))); } if (rowOver) { Toolket.setCellValue(workbook, sheet, 2 + (nextPage ? nextPageRowIndex : 0), k * 6, " " + formYear[(nextPage ? k + 4 : k)] + " ", fontSize12, HSSFCellStyle.ALIGN_CENTER, true, null); } else Toolket.setCellValue(sheet, 2 + (nextPage ? nextPageRowIndex : 0), k * 6, " " + formYear[(nextPage ? k + 4 : k)] + " "); position = new HashMap<String, String>(); for (int term = 1; term <= 2; term++) { scoreHist.setSchoolYear(year); scoreHist.setSchoolTerm(String.valueOf(term)); // scoreHist.setEvgrType("1"); // ? scoreHistList = sm.findScoreHistBy(scoreHist); if (!scoreHistList.isEmpty()) { Toolket.setCellValue(sheet, 3 + (nextPage ? nextPageRowIndex : 0), k * 6, "" + year + " 9 " + (year + 1) + " 7 "); stavgs = sm.findStavgBy(new Stavg(studentNo, year, String.valueOf(term))); totalPassCredits = 0.0F; // for (ScoreHist hist : scoreHistList) { // i != scoreHistList.size() - // 1???,?? for (int i = 0; i < scoreHistList.size(); i++) { hist = scoreHistList.get(i); if (rowIndex == 32 && i != scoreHistList.size() - 1) { rowIndex = 6; k++; Toolket.setCellValue(sheet, 2 + (nextPage ? nextPageRowIndex : 0), k * 6, " " + formYear[k - 1] + " "); Toolket.setCellValue(sheet, 3 + (nextPage ? nextPageRowIndex : 0), k * 6, "" + year + " 9 " + (year + 1) + " 7 "); rowOver = true; } evgrType = hist.getEvgrType(); isNotExemptAndMend = !"6".equals(evgrType) && !"5".equals(evgrType); // ??? isExempt = "6".equals(evgrType); // ??? isMend = "5".equals(evgrType); // ?? isAppend = "2".equals(evgrType); // ??? historyDepartCode = StringUtils.isBlank(hist.getStdepartClass()) ? "" : StringUtils.substring(hist.getStdepartClass(), 3, 4); isNotSameDepartCode = !departCode.equals(historyDepartCode) && !historyDepartCode.equals("0"); opt = ""; if ("3".equals(evgrType)) opt = ""; else opt = StringUtils.substring(Toolket.getCourseOpt(hist.getOpt()), 0, 1) + (isAppend ? "" : (isMend ? "" : (!isNotExemptAndMend ? "" : ""))); cscode = hist.getCscode(); if ("GA035".equals(cscode) || "".equals("GB033")) continue; // 2? if (!"99999".equals(cscode)) { // ? String courseName = cm.findCourseInfoByCscode(cscode) == null ? "??" : cm.findCourseInfoByCscode(cscode).getChiName().trim(); Float credit = hist.getCredit(); Float score = hist.getScore(); boolean pass = (score == null ? 0.0F : score) >= passScore; // ((?&&?)||?)&&? if (((isNotExemptAndMend && pass) || isExempt) && !isMend) // if (!isNotExemptAndMend || // !isMend || // bFlag1) // if (!isMend && bFlag1) if (isMaster && "G".equalsIgnoreCase( StringUtils.substring(hist.getStdepartClass(), 2, 3))) { // ???,? totalPassCredits += credit; } else totalPassCredits += credit; if (1 == term) { if (opt.length() == 1 || is96Entrance) Toolket.setCellValue(sheet, rowIndex, k * 6, (is96Entrance ? StringUtils.substring(opt, 0, 1) : opt)); else Toolket.setCellValue(workbook, sheet, rowIndex, k * 6, opt, fontSize12, HSSFCellStyle.ALIGN_CENTER, true, null); Toolket.setCellValue(sheet, rowIndex, k * 6 + 1, courseName); position.put(courseName, String.valueOf(rowIndex)); if (isNotExemptAndMend) { // ? String creditStr = credit.toString(); if (!isMend && !isExempt) creditStr = pass ? creditStr : creditStr + "*"; if (isDoubleMajor && isNotSameDepartCode) creditStr += "&"; if (isAssist && isNotSameDepartCode) creditStr += "#"; if (StringUtils.indexOf(creditStr, "*") == StringUtils.INDEX_NOT_FOUND) Toolket.setCellValue(sheet, rowIndex, k * 6 + 2, creditStr); else Toolket.setCellValue(workbook, sheet, rowIndex, k * 6 + 2, creditStr, colorFont, HSSFCellStyle.ALIGN_CENTER, true, null); // ?? Toolket.setCellValue(sheet, rowIndex++, k * 6 + 3, (isMend ? "" : (score == null ? "" : StringUtils.substringBefore(score.toString(), ".")))); // ?? Toolket.setCellValue(sheet, 32 + (isMaster ? -2 : 0) + (nextPage ? nextPageRowIndex : 0), k * 6 + 3, (stavgs.isEmpty() ? "" : df.format( stavgs.get(0).getScore() + 0.001D))); } else { // ? String creditStr = credit.toString(); Toolket.setCellValue(sheet, rowIndex, k * 6 + 2, creditStr); if (is96Entrance) Toolket.setCellValue(sheet, rowIndex++, k * 6 + 3, (isMend ? "" : "")); else { // ?? Toolket.setCellValue(sheet, 32 + (isMaster ? -2 : 0) + (nextPage ? nextPageRowIndex : 0), k * 6 + 3, (stavgs.isEmpty() ? "" : df.format(stavgs.get(0).getScore() + 0.001D))); Toolket.setCellValue(sheet, rowIndex++, k * 6 + 3, score == null ? "" : StringUtils.substringBefore( score.toString(), ".")); } } } else { String endString = StringUtils.substring(courseName, courseName.length() - 1); boolean duplicatedCourseName = "".equals(endString); boolean duplicatedCourseName1 = "".equals(endString); boolean duplicatedCourseName2 = "".equals(endString); if (duplicatedCourseName || duplicatedCourseName1 || duplicatedCourseName2) { String courseIndex = StringUtils.substring(courseName, 0, courseName.length() - 1); String row = "", maybeSameCourseNameOptInfo = ""; if (duplicatedCourseName) { row = position.get(courseIndex + ""); if (row != null) maybeSameCourseNameOptInfo = Toolket.getCellValue(sheet, Integer.parseInt(row), (rowOver ? k - 1 : k) * 6); } else if (duplicatedCourseName1) { row = position.get(courseIndex + ""); if (row != null) maybeSameCourseNameOptInfo = Toolket.getCellValue(sheet, Integer.parseInt(row), (rowOver ? k - 1 : k) * 6); } else if (duplicatedCourseName2) { row = position.get(courseIndex + ""); if (row != null) maybeSameCourseNameOptInfo = Toolket.getCellValue(sheet, Integer.parseInt(row), (rowOver ? k - 1 : k) * 6); } // ????? boolean isAllowMerge = (StringUtils.contains(opt, "") && StringUtils.contains(maybeSameCourseNameOptInfo, "")) || (StringUtils.contains(opt, "?") && StringUtils .contains(maybeSameCourseNameOptInfo, "?")); if (row != null && isAllowMerge) { int rowNum = Integer.parseInt(row); Toolket.setCellValue(sheet, rowNum, (rowOver ? k - 1 : k) * 6 + 1, Toolket.getCellValue(sheet, rowNum, (rowOver ? k - 1 : k) * 6 + 1) + "?" + (duplicatedCourseName ? "" : duplicatedCourseName1 ? "" : "")); if (isNotExemptAndMend) { // ? String creditStr = credit.toString(); if (!isMend && !isExempt) creditStr = pass ? creditStr : creditStr + "*"; if (isDoubleMajor && isNotSameDepartCode) creditStr += "&"; if (isAssist && isNotSameDepartCode) creditStr += "#"; if (StringUtils.indexOf(creditStr, "*") == StringUtils.INDEX_NOT_FOUND) Toolket.setCellValue(sheet, rowNum, (rowOver ? k - 1 : k) * 6 + 4, creditStr); else Toolket.setCellValue(workbook, sheet, rowNum, (rowOver ? k - 1 : k) * 6 + 4, creditStr, colorFont, HSSFCellStyle.ALIGN_CENTER, true, null); Toolket.setCellValue(sheet, rowNum, (rowOver ? k - 1 : k) * 6 + 5, (isMend ? "" : (score == null ? "" : StringUtils.substringBefore( score.toString(), ".")))); Toolket.setCellValue(sheet, 32 + (isMaster ? -2 : 0) + (nextPage ? nextPageRowIndex : 0), (rowOver ? k - 1 : k) * 6 + 5, (stavgs.isEmpty() ? "" : df.format(stavgs.get(0).getScore() + 0.001D))); } else { // ? String creditStr = credit.toString(); Toolket.setCellValue(sheet, rowNum, (rowOver ? k - 1 : k) * 6 + 4, creditStr); if (is96Entrance) Toolket.setCellValue(sheet, rowNum, (rowOver ? k - 1 : k) * 6 + 5, (isMend ? "" : "")); else { Toolket.setCellValue(sheet, 32 + (isMaster ? -2 : 0), (rowOver ? k - 1 : k) * 6 + 5, (stavgs.isEmpty() ? "" : df.format(stavgs.get(0).getScore() + 0.001D))); Toolket.setCellValue(sheet, rowNum, (rowOver ? k - 1 : k) * 6 + 5, score == null ? "" : StringUtils.substringBefore( score.toString(), ".")); } } } else { if (opt.length() == 1 || is96Entrance) Toolket.setCellValue(sheet, rowIndex, k * 6, (is96Entrance ? StringUtils.substring(opt, 0, 1) : opt)); else Toolket.setCellValue(workbook, sheet, rowIndex, k * 6, opt, fontSize12, HSSFCellStyle.ALIGN_CENTER, true, null); Toolket.setCellValue(sheet, rowIndex, k * 6 + 1, courseName); position.put(courseName, String.valueOf(rowIndex)); if (isNotExemptAndMend) { // ? String creditStr = credit.toString(); if (!isMend && !isExempt) creditStr = pass ? creditStr : creditStr + "*"; if (isDoubleMajor && isNotSameDepartCode) creditStr += "&"; if (isAssist && isNotSameDepartCode) creditStr += "#"; if (StringUtils.indexOf(creditStr, "*") == StringUtils.INDEX_NOT_FOUND) Toolket.setCellValue(sheet, rowIndex, k * 6 + 4, creditStr); else Toolket.setCellValue(workbook, sheet, rowIndex, k * 6 + 4, creditStr, colorFont, HSSFCellStyle.ALIGN_CENTER, true, null); // ?? Toolket.setCellValue(sheet, rowIndex++, k * 6 + 5, (isMend ? "" : (score == null ? "" : StringUtils.substringBefore( score.toString(), ".")))); // ?? Toolket.setCellValue(sheet, 32 + (isMaster ? -2 : 0), k * 6 + 5, (stavgs.isEmpty() ? "" : df.format(stavgs.get(0).getScore() + 0.001D))); } else { // ? String creditStr = credit.toString(); Toolket.setCellValue(sheet, rowIndex, k * 6 + 4, creditStr); if (is96Entrance) Toolket.setCellValue(sheet, rowIndex++, k * 6 + 5, (isMend ? "" : "")); else { // ?? Toolket.setCellValue(sheet, 32 + (isMaster ? -2 : 0), k * 6 + 5, (stavgs.isEmpty() ? "" : df.format(stavgs.get(0).getScore() + 0.001D))); Toolket.setCellValue(sheet, rowIndex++, k * 6 + 5, score == null ? "" : StringUtils.substringBefore( score.toString(), ".")); } } } } else { if (opt.length() == 1 || is96Entrance) Toolket.setCellValue(sheet, rowIndex, k * 6, (is96Entrance ? StringUtils.substring(opt, 0, 1) : opt)); else Toolket.setCellValue(workbook, sheet, rowIndex, k * 6, opt, fontSize12, HSSFCellStyle.ALIGN_CENTER, true, null); Toolket.setCellValue(sheet, rowIndex, k * 6 + 1, courseName); // ? String creditStr = credit.toString(); if (!isMend && !isExempt) creditStr = pass ? creditStr : creditStr + "*"; if (isDoubleMajor && isNotSameDepartCode) creditStr += "&"; if (isAssist && isNotSameDepartCode) creditStr += "#"; if (StringUtils.indexOf(creditStr, "*") == StringUtils.INDEX_NOT_FOUND) Toolket.setCellValue(sheet, rowIndex, k * 6 + 4, creditStr); else Toolket.setCellValue(workbook, sheet, rowIndex, k * 6 + 4, creditStr, colorFont, HSSFCellStyle.ALIGN_CENTER, true, null); if (isNotExemptAndMend) { Toolket.setCellValue(sheet, rowIndex++, k * 6 + 5, (isMend ? "" : (score == null ? "" : StringUtils.substringBefore( score.toString(), ".")))); Toolket.setCellValue(sheet, 32 + (isMaster ? -2 : 0), k * 6 + 5, (stavgs.isEmpty() ? "" : df.format(stavgs.get(0).getScore() + 0.001D))); } else { if (is96Entrance) Toolket.setCellValue(sheet, rowIndex++, k * 6 + 5, (isMend ? "" : "")); else { Toolket.setCellValue(sheet, 32 + (isMaster ? -2 : 0), k * 6 + 5, (stavgs.isEmpty() ? "" : df.format(stavgs.get(0).getScore() + 0.001D))); Toolket.setCellValue(sheet, rowIndex++, k * 6 + 5, score == null ? "" : StringUtils.substringBefore( score.toString(), ".")); } } } } } else { // ? if (1 == term) { if (isNotExemptAndMend) { Toolket.setCellValue(sheet, 35 + (isMaster ? -2 : 0) + (nextPage ? nextPageRowIndex : 0), k * 6 + 3, String.valueOf(Math.round(hist.getScore()))); } else { if (!is96Entrance) Toolket.setCellValue(sheet, 35 + (isMaster ? -2 : 0), k * 6 + 3, hist.getScore() == null ? "" : String.valueOf( Math.round((hist.getScore())))); } } else { if (isNotExemptAndMend) { Toolket.setCellValue(sheet, 35 + (isMaster ? -2 : 0) + (nextPage ? nextPageRowIndex : 0), k * 6 + 5, String.valueOf(Math.round(hist.getScore()))); } else { if (!is96Entrance) Toolket.setCellValue(sheet, 35 + (isMaster ? -2 : 0), k * 6 + 5, hist.getScore() == null ? "" : String.valueOf( Math.round(hist.getScore()))); } } } } // ? if (1 == term) { Toolket.setCellValue(sheet, 33 + (isMaster ? -2 : 0) + (nextPage ? nextPageRowIndex : 0), k * 6 + 2, totalPassCredits.toString()); Toolket.setCellValue(sheet, 34 + (isMaster ? -2 : 0) + (nextPage ? nextPageRowIndex : 0), k * 6 + 2, (passCreditsSum += totalPassCredits).toString()); } else { Toolket.setCellValue(sheet, 33 + (isMaster ? -2 : 0) + (nextPage ? nextPageRowIndex : 0), k * 6 + 4, totalPassCredits.toString()); Toolket.setCellValue(sheet, 34 + (isMaster ? -2 : 0) + (nextPage ? nextPageRowIndex : 0), k * 6 + 4, (passCreditsSum += totalPassCredits).toString()); } } // k--; } gmark = new Gmark(); gmark.setSchoolYear(year); gmark.setStudentNo(studentNo); gmarks = cm.findGMarkBy(gmark); if (!gmarks.isEmpty()) { StringBuilder builder = new StringBuilder(); for (Gmark gm : gmarks) builder.append(gm.getRemark()).append("\n "); int remarkCols = 0; switch (k) { case 0: remarkCols = 0; break; case 1: remarkCols = 6; break; case 2: remarkCols = 12; break; case 3: remarkCols = 18; break; } Toolket.setCellValue(sheet, 36, remarkCols, "" + builder.toString()); } if (rowOver) { Toolket.setCellValue(sheet, 32, (k - 1) * 6 + 5, ""); Toolket.setCellValue(sheet, 35, k * 6 + 5, Toolket.getCellValue(sheet, 35, (k - 1) * 6 + 5)); Toolket.setCellValue(sheet, 35, (k - 1) * 6 + 5, ""); } kk = k; rowIndexx = rowIndex; k++; j++; rowIndex = j >= 4 ? 49 : 6; // rowIndexx = j >= 4 ? 49 : 6; if (j == 4) { // rowIndex = 49; k = 0; nextPage = true; } } } if (isIncludeThisTermScore) { // Exception Students : 92148059, 92146011, 93148066, // 9144037, 914C009, 96164016, 9214D093 AdminManager am = (AdminManager) getBean(ADMIN_MANAGER_BEAN_NAME); Integer year = Integer.valueOf(am.findTermBy(PARAMETER_SCHOOL_YEAR)); boolean isSameYear = lastYear == year; boolean isNeedCheck = true, isNeedCheck1 = true; if (!isSameYear) { isNeedCheck1 = false; if (nextPage) { kk++; if (kk == 4) kk = 0; } Toolket.setCellValue(sheet, (nextPage ? 45 : 2), kk * 6, " " + formYear[(nextPage ? k + 4 : k)] + " "); Toolket.setCellValue(sheet, (nextPage ? 46 : 3), kk * 6, "" + year + " 9 " + (year + 1) + " 7 "); rowIndexx = nextPage ? 49 : 6; // kk++; } if (!nextPage && rowIndexx >= 32) { // ?,:96164016 Toolket.setCellValue(sheet, (nextPage ? 45 : 2), (kk + 1) * 6, " " + formYear[(nextPage ? kk + 4 : kk)] + " "); Toolket.setCellValue(sheet, (nextPage ? 46 : 3), (kk + 1) * 6, "" + year + " 9 " + (year + 1) + " 7 "); rowIndexx = nextPage ? 49 : 6; kk++; } isNeedCheck = true; // passCreditsSum = 0.0F; totalPassCredits = 0.0F; selds = cm.findSeldByStudentNoAndTerm(studentNo, sterm); // boolean isNewSchoolYear = "1".equals(sterm); if (!selds.isEmpty()) { for (Seld seld : selds) { dtime = cm.findDtimeBy(seld.getDtimeOid()); csnos = cm.getCsnameBy(dtime.getCscode()); if (!csnos.isEmpty()) csno = (Csno) csnos.get(0); Toolket.setCellValue(sheet, rowIndexx, kk * 6, StringUtils.substring(Toolket.getCourseOpt(dtime.getOpt()), 0, 1)); Toolket.setCellValue(sheet, rowIndexx, kk * 6 + 1, csno == null ? "" : csno.getChiName()); totalPassCredits += dtime.getCredit(); if ("1".equals(sterm)) { Toolket.setCellValue(sheet, rowIndexx, kk * 6 + 2, dtime.getCredit().toString()); Toolket.setCellValue(sheet, rowIndexx++, kk * 6 + 3, String.valueOf(passScore)); } else { Toolket.setCellValue(sheet, rowIndexx, kk * 6 + 4, dtime.getCredit().toString()); Toolket.setCellValue(sheet, rowIndexx++, kk * 6 + 5, String.valueOf(Math.round(passScore))); } if (isNeedCheck && isNeedCheck1 && rowIndexx >= 32) { isNeedCheck = false; kk++; if (kk % 4 == 0) { kk = 0; rowIndexx = nextPage ? 49 : 6; } // Toolket.setCellValue(sheet, 43, 0, // "?" // + title + "?"); // Toolket.setCellValue(sheet, 44, 1, "" // + studentNo); // Toolket.setCellValue(sheet, 44, 7, "??" // + student.getStudentName()); // Toolket // .setCellValue( // sheet, // 44, // 9, // "" // + (isMaster ? Toolket // .getMasterDepartName(departClass) // : Toolket // .getDepartName(departClass)) // + (isDoubleMajor // || isAssist ? "(" // + student // .getExtraStatus() // + ":" // + student // .getExtraDept() // + ")" // : "")); // Toolket.setCellValue(sheet, 44, 19, // "" // + student.getIdno()); Toolket.setCellValue(sheet, (nextPage ? 45 : 2), kk * 6, " " + formYear[(nextPage ? kk + 4 : kk)] + " "); Toolket.setCellValue(sheet, (nextPage ? 46 : 3), kk * 6, "" + year + " 9 " + (year + 1) + " 7 "); // rowIndexx = 6; // kk++; } } passCreditsSum += totalPassCredits; if ("1".equals(sterm)) { Toolket.setCellValue(sheet, (nextPage && j >= 4 && rowIndexx >= 49 ? 76 : 33) + (isMaster ? -2 : 0), kk * 6 + 2, totalPassCredits.toString()); Toolket.setCellValue(sheet, (nextPage && j >= 4 && rowIndexx >= 49 ? 77 : 34) + (isMaster ? -2 : 0), kk * 6 + 2, passCreditsSum.toString()); } else { Toolket.setCellValue(sheet, (nextPage && j >= 4 && rowIndexx >= 49 ? 76 : 33) + (isMaster ? -2 : 0), kk * 6 + 4, totalPassCredits.toString()); Toolket.setCellValue(sheet, (nextPage && j >= 4 && rowIndexx >= 49 ? 77 : 34) + (isMaster ? -2 : 0), kk * 6 + 4, passCreditsSum.toString()); } String[] excluded = { "15", "64", "54", "A4", "B4" }; boolean hasInclude = ArrayUtils.contains(excluded, StringUtils.substring(departClass, 1, 3)); if (!isDelay && !hasInclude && rowIndexx <= 42) Toolket.removeRow(sheet, 43, 45); } } else { String[] excluded = { "15", "64", "54", "A4", "B4" }; boolean hasInclude = ArrayUtils.contains(excluded, StringUtils.substring(departClass, 1, 3)); if (!isDelay && !hasInclude && rowIndexx <= 42) Toolket.removeRow(sheet, 43, 45); } } File tempDir = new File(context .getRealPath("/WEB-INF/reports/temp/" + getUserCredential(session).getMember().getIdno() + (new SimpleDateFormat("yyyyMMdd").format(new Date())))); if (!tempDir.exists()) tempDir.mkdirs(); File output = new File(tempDir, departClass + ".xls"); FileOutputStream fos = new FileOutputStream(output); workbook.write(fos); fos.close(); JasperReportUtils.printXlsToFrontEnd(response, output); output.delete(); tempDir.delete(); // return null; } else { ServletContext context = request.getSession().getServletContext(); Map<String, String> parameters = new HashMap<String, String>(); File image = new File(context.getRealPath("/pages/reports/2002chitS.jpg")); parameters.put("IMAGE", image.getAbsolutePath()); byte[] bytes = JasperRunManager.runReportToPdf(JasperReportUtils.getNoResultReport(context), parameters, new JREmptyDataSource()); JasperReportUtils.printPdfToFrontEnd(response, bytes); } } }
From source file:tw.edu.chit.struts.action.registration.ReportPrintAction.java
/** * /*from ww w. ja v a 2s. c o m*/ * * @param mapping * @param form * @param request * @param response * @param sterm * @throws Exception */ @SuppressWarnings("unchecked") private void printCalculate(ActionMapping mapping, DynaActionForm form, HttpServletRequest request, HttpServletResponse response, String sterm) throws Exception { HttpSession session = request.getSession(false); AdminManager am = (AdminManager) getBean(ADMIN_MANAGER_BEAN_NAME); MemberManager mm = (MemberManager) getBean(IConstants.MEMBER_MANAGER_BEAN_NAME); CourseManager cm = (CourseManager) getBean(IConstants.COURSE_MANAGER_BEAN_NAME); ScoreManager sm = (ScoreManager) getBean(IConstants.SCORE_MANAGER_BEAN_NAME); ServletContext context = request.getSession().getServletContext(); String thisYear = cm.getNowBy("School_year"); String thisTerm = am.findTermBy(PARAMETER_SCHOOL_TERM); List<Clazz> clazzes = sm.findClassBy(new Clazz(processClassInfo(form)), getUserCredential(session).getClassInChargeAry(), false); int thisTermCounts = 0, lastTermCounts = 0; String departClass = null, deptCode = null, histDeptCode = null, currentDeptCode = null, chiName = null; ScoreHist scoreHist = null; List<Student> students = null; List<ScoreHist> scoreHistList = null; List<Map> seldInfo = null; List csnos = null; if (!clazzes.isEmpty()) { HSSFWorkbook workbook = new HSSFWorkbook(); HSSFSheet sheet = workbook.createSheet("?"); sheet.setColumnWidth(0, 3000); sheet.setColumnWidth(1, 3000); sheet.setColumnWidth(2, 5000); sheet.setColumnWidth(3, 5000); sheet.setColumnWidth(4, 5000); sheet.addMergedRegion(new CellRangeAddress(0, 0, 0, 4)); HSSFFont fontSize16 = workbook.createFont(); fontSize16.setFontHeightInPoints((short) 16); fontSize16.setFontName("Arial Unicode MS"); HSSFFont fontSize10 = workbook.createFont(); fontSize10.setFontHeightInPoints((short) 10); fontSize10.setFontName("Arial Unicode MS"); // Header Toolket.setCellValue(workbook, sheet, 0, 0, "?", fontSize16, HSSFCellStyle.ALIGN_CENTER, false, 35.0F, null); // Column Header Toolket.setCellValue(workbook, sheet, 1, 0, "", fontSize10, HSSFCellStyle.ALIGN_CENTER, true, null); Toolket.setCellValue(workbook, sheet, 1, 1, "??", fontSize10, HSSFCellStyle.ALIGN_CENTER, true, null); Toolket.setCellValue(workbook, sheet, 1, 2, "?", fontSize10, HSSFCellStyle.ALIGN_CENTER, true, null); Toolket.setCellValue(workbook, sheet, 1, 3, "??", fontSize10, HSSFCellStyle.ALIGN_CENTER, true, null); Toolket.setCellValue(workbook, sheet, 1, 4, "?", fontSize10, HSSFCellStyle.ALIGN_CENTER, true, null); int index = 2; for (Clazz clazz : clazzes) { departClass = clazz.getClassNo(); deptCode = clazz.getDeptNo(); if (Toolket.isDelayClass(departClass) || Toolket.isLiteracyClass(departClass)) continue; students = mm.findStudentsByClassNo(departClass); if (!students.isEmpty()) { if (thisYear.equals(request.getParameter("year")) && thisTerm.equals(sterm)) { // (Seld) for (Student student : students) { seldInfo = cm.findStudentSeldCourse(student.getStudentNo(), sterm); if (!seldInfo.isEmpty()) { for (Map m : seldInfo) { if (IConstants.CSCODE_BEHAVIOR.equals((String) m.get("cscode"))) continue; currentDeptCode = StringUtils.substring((String) m.get("depart_class"), 3, 4); if (!deptCode.equalsIgnoreCase(currentDeptCode) && !Toolket.isLiteracyClass((String) m.get("depart_class"))) { thisTermCounts++; Toolket.setCellValue(workbook, sheet, index, 0, student.getStudentNo(), fontSize10, HSSFCellStyle.ALIGN_CENTER, true, null); Toolket.setCellValue(workbook, sheet, index, 1, student.getStudentName(), fontSize10, HSSFCellStyle.ALIGN_CENTER, true, null); Toolket.setCellValue(workbook, sheet, index, 2, Toolket.getClassFullName(student.getDepartClass()), fontSize10, HSSFCellStyle.ALIGN_CENTER, true, null); Toolket.setCellValue(workbook, sheet, index, 3, Toolket.getClassFullName((String) m.get("depart_class")), fontSize10, HSSFCellStyle.ALIGN_CENTER, true, null); Toolket.setCellValue(workbook, sheet, index++, 4, (String) m.get("chi_name"), fontSize10, HSSFCellStyle.ALIGN_CENTER, true, null); // break; } } } } } else { // ?(ScoreHist) for (Student student : students) { scoreHist = new ScoreHist(student.getStudentNo()); scoreHist.setSchoolYear((short) Integer.parseInt(request.getParameter("year"))); scoreHist.setSchoolTerm(sterm); scoreHistList = sm.findScoreHistBy(scoreHist); // HIST: { if (!scoreHistList.isEmpty()) { for (ScoreHist hist : scoreHistList) { if (IConstants.CSCODE_BEHAVIOR.equals(hist.getCscode())) continue; if (StringUtils.isNotBlank(hist.getStdepartClass()) && !Toolket.isLiteracyClass(hist.getStdepartClass())) { histDeptCode = StringUtils.substring(hist.getStdepartClass(), 3, 4); if (!deptCode.equalsIgnoreCase(histDeptCode)) { lastTermCounts++; Toolket.setCellValue(workbook, sheet, index, 0, student.getStudentNo(), fontSize10, HSSFCellStyle.ALIGN_CENTER, true, null); Toolket.setCellValue(workbook, sheet, index, 1, student.getStudentName(), fontSize10, HSSFCellStyle.ALIGN_CENTER, true, null); Toolket.setCellValue(workbook, sheet, index, 2, Toolket.getClassFullName(student.getDepartClass()), fontSize10, HSSFCellStyle.ALIGN_CENTER, true, null); Toolket.setCellValue(workbook, sheet, index, 3, Toolket.getClassFullName(hist.getStdepartClass()), fontSize10, HSSFCellStyle.ALIGN_CENTER, true, null); csnos = cm.getCsnameBy(hist.getCscode()); if (!csnos.isEmpty()) chiName = ((Csno) csnos.get(0)).getChiName(); else chiName = ""; Toolket.setCellValue(workbook, sheet, index++, 4, chiName, fontSize10, HSSFCellStyle.ALIGN_CENTER, true, null); // break HIST; } } } } // } } } } } File tempDir = new File( context.getRealPath("/WEB-INF/reports/temp/" + getUserCredential(session).getMember().getIdno() + (new SimpleDateFormat("yyyyMMdd").format(new Date())))); if (!tempDir.exists()) tempDir.mkdirs(); File output = new File(tempDir, "Calculate.xls"); FileOutputStream fos = new FileOutputStream(output); workbook.write(fos); fos.close(); JasperReportUtils.printXlsToFrontEnd(response, output); output.delete(); tempDir.delete(); } }
From source file:tw.edu.chit.struts.action.registration.ReportPrintAction.java
/** * (?)// w ww. j a v a 2s . c o m * * @param mapping * @param form * @param request * @param response * @param sterm * @throws Exception */ @SuppressWarnings("unchecked") private void printGstmdList4Ntnu(ActionMapping mapping, DynaActionForm form, HttpServletRequest request, HttpServletResponse response, String sterm) throws Exception { HttpSession session = request.getSession(false); AdminManager am = (AdminManager) getBean(IConstants.ADMIN_MANAGER_BEAN_NAME); MemberManager mm = (MemberManager) getBean(IConstants.MEMBER_MANAGER_BEAN_NAME); CourseManager cm = (CourseManager) getBean(IConstants.COURSE_MANAGER_BEAN_NAME); ScoreManager sm = (ScoreManager) getBean(IConstants.SCORE_MANAGER_BEAN_NAME); ServletContext context = request.getSession().getServletContext(); String thisYear = cm.getNowBy("School_year"); // String thisTerm = am.findTermBy(PARAMETER_SCHOOL_TERM); List<Clazz> clazzes = sm.findClassBy(new Clazz(processClassInfo(form)), getUserCredential(session).getClassInChargeAry(), false); String departClass = null; List<Student> students = null; DateFormat df = new SimpleDateFormat("yyyy/MM/dd"); Example example = null; Gmark gmark = null; boolean flag = false; Calendar now = Calendar.getInstance(); String year = String.valueOf(now.get(Calendar.YEAR) - 1911); if (!clazzes.isEmpty()) { File templateXLS = new File(context.getRealPath("/WEB-INF/reports/GstmdList4Ntnu.xls")); HSSFWorkbook workbook = Toolket.getHSSFWorkbook(templateXLS); HSSFSheet sheet = workbook.getSheetAt(0); workbook.setSheetName(0, thisYear + "?"); HSSFFont fontSize10 = workbook.createFont(); fontSize10.setFontHeightInPoints((short) 10); fontSize10.setFontName("Arial Unicode MS"); int index = 2; String entrance = null; for (Clazz clazz : clazzes) { departClass = clazz.getClassNo(); if (Toolket.isGraduateClass(departClass) || Toolket.isDelayClass(departClass)) { students = mm.findStudentsByClassNo(departClass); for (Student student : students) { Toolket.setCellValue(sheet, index, 0, "1061"); Toolket.setCellValue(sheet, index, 1, student.getStudentNo()); entrance = student.getEntrance() == null ? "" : student.getEntrance().toString(); if (StringUtils.isNotBlank(entrance)) { Toolket.setCellValue(sheet, index, 2, StringUtils.substring(entrance, 0, 2)); Toolket.setCellValue(sheet, index, 3, StringUtils.substring(entrance, 2).startsWith("0") ? StringUtils.substring(entrance, 3) : StringUtils.substring(entrance, 2)); } else { Toolket.setCellValue(sheet, index, 2, ""); Toolket.setCellValue(sheet, index, 3, ""); } Toolket.setCellValue(sheet, index, 4, year); // Toolket.setCellValue(sheet, index, 5, "6"); // ??? Toolket.setCellValue(sheet, index, 6, Toolket.getDeptCode4Ntnu(student.getDepartClass())); Toolket.setCellValue(sheet, index, 7, Toolket.getDepartName(student.getDepartClass())); Toolket.setCellValue(sheet, index, 8, student.getDivi()); Toolket.setCellValue(sheet, index, 9, Toolket.getClassFullName(student.getDepartClass())); Toolket.setCellValue(sheet, index, 10, Toolket.getCampCode4Ntnu(student.getDepartClass())); Toolket.setCellValue(sheet, index, 11, student.getStudentName()); Toolket.setCellValue(sheet, index, 12, student.getIdno()); Toolket.setCellValue(sheet, index, 13, df.format(student.getBirthday())); Toolket.setCellValue(sheet, index, 14, student.getSex()); Toolket.setCellValue(sheet, index, 15, StringUtils.isBlank(student.getEmail()) ? Toolket.getDefaultStudentEmail(student, "") : student.getEmail()); Toolket.setCellValue(sheet, index, 16, student.getCurrPost()); Toolket.setCellValue(sheet, index, 17, student.getCurrAddr()); Toolket.setCellValue(sheet, index, 18, "3".equals(student.getIdent()) || "E".equals(student.getIdent()) ? "1" : "0"); Toolket.setCellValue(sheet, index, 19, "5".equals(student.getIdent()) ? "2" : "1"); Toolket.setCellValue(sheet, index, 20, "0"); // ??0(???) Toolket.setCellValue(sheet, index, 21, !Toolket.isMasterClass(student.getDepartClass()) && Toolket.isDelayClass(student.getDepartClass()) ? "1" : "0"); if ("3".equals(student.getOccurStatus()) && !Toolket.isMasterClass(student.getDepartClass())) Toolket.setCellValue(sheet, index, 22, "8"); // ?? else Toolket.setCellValue(sheet, index, 22, Toolket.get4IdentNtnu(student.getIdent(), Toolket.isMasterClass(student.getDepartClass()))); gmark = new Gmark(); gmark.setStudentNo(student.getStudentNo()); gmark.setOccurStatus("5"); example = Example.create(gmark); flag = !((List<Gmark>) am.findSQLWithCriteria(Gmark.class, example, null, null)).isEmpty(); Toolket.setCellValue(sheet, index, 23, flag ? "1" : "0"); Toolket.setCellValue(sheet, index, 24, "1".equals(student.getExtraStatus()) || "E".equals(student.getExtraStatus()) ? "1" : "0"); Toolket.setCellValue(sheet, index, 25, "2".equals(student.getExtraStatus()) || "T".equals(student.getExtraStatus()) ? "1" : "0"); gmark.setOccurStatus("1"); example = Example.create(gmark); flag = !((List<Gmark>) am.findSQLWithCriteria(Gmark.class, example, null, null)).isEmpty(); Toolket.setCellValue(sheet, index++, 26, flag ? "1" : "0"); } } } File tempDir = new File( context.getRealPath("/WEB-INF/reports/temp/" + getUserCredential(session).getMember().getIdno() + (new SimpleDateFormat("yyyyMMdd").format(new Date())))); if (!tempDir.exists()) tempDir.mkdirs(); File output = new File(tempDir, "GstmdList4Ntnu.xls"); FileOutputStream fos = new FileOutputStream(output); workbook.write(fos); fos.close(); JasperReportUtils.printXlsToFrontEnd(response, output); output.delete(); tempDir.delete(); } }
From source file:tw.edu.chit.struts.action.registration.ReportPrintAction.java
/** * ?/*from w ww . ja va 2 s. c o m*/ * * @param mapping org.apache.struts.action.ActionMapping object * @param form org.apache.struts.action.ActionForm object * @param request request javax.servlet.http.HttpServletRequest object * @param response response javax.servlet.http.HttpServletResponse object * @param sterm */ @SuppressWarnings("unchecked") private void printGstmdCreditAvg(ActionMapping mapping, DynaActionForm form, HttpServletRequest request, HttpServletResponse response, String sterm) throws Exception { HttpSession session = request.getSession(false); AdminManager am = (AdminManager) getBean(IConstants.ADMIN_MANAGER_BEAN_NAME); DynaActionForm aForm = (DynaActionForm) form; ServletContext context = request.getSession().getServletContext(); String year = aForm.getStrings("year")[0]; Graduate graduate = new Graduate(); graduate.setOccurYear(Short.valueOf(year)); graduate.setOccurTerm(sterm); graduate.setOccurStatus("6"); // List<Order> orders = new LinkedList<Order>(); orders.add(Order.asc("departClass")); Example example = Example.create(graduate).ignoreCase().enableLike(MatchMode.EXACT); List<Graduate> gstmds = (List<Graduate>) am.findSQLWithCriteria(Graduate.class, example, null, orders); File templateXLS = new File(context.getRealPath("/WEB-INF/reports/GstmdCreditAvgList.xls")); HSSFWorkbook workbook = Toolket.getHSSFWorkbook(templateXLS); HSSFSheet sheet = workbook.getSheetAt(0); Toolket.setCellValue(sheet, 0, 0, "?" + year + "" + sterm + "?"); int index = 5, anoGstmdCounts = 0, anoGstmdCollegeCounts = 0; Float passScore = 60F, totalCredits = 0.0F, sumCredits = 0.0F; Float anoDeptCredits = 0.0F, sumAnoDeptCredits = 0.0F; Float anoCollegeCredits = 0.0F, sumAnoCollegeCredits = 0.0F; String hql = "SELECT s.credit, s.score, s.cscode, s.stdepartClass " + "FROM ScoreHist s WHERE s.studentNo = ? " + "AND s.score >= ? AND s.cscode NOT IN ('99999')"; String gstmdDeptCode = null, deptCode = null, stdepartClass = null; String gstmdCollegeCode = null, collegeCode = null; List<Object> scoreHist = null; Object[] data = null; NumberFormat nf = new DecimalFormat("#,###,##.##"); // ? (??...) String[] denied = { "50001", "S0880", "S0881", "S0882", "T0880", "T0881", "T0882", "T0E30", "T0002", "50002", "S0350", "S0351", "S0352", "S0353", "S0354", "T0003", "T0004", "T0007", "T0350", "T0351", "T0352" }; if (!gstmds.isEmpty()) { for (Graduate gstmd : gstmds) { if (Toolket.isMasterClass(gstmd.getDepartClass())) passScore = 70F; else passScore = 60F; scoreHist = (List<Object>) am.find(hql, new Object[] { gstmd.getStudentNo(), passScore }); if (!scoreHist.isEmpty()) { gstmdDeptCode = StringUtils.substring(gstmd.getDepartClass(), 3, 4); gstmdCollegeCode = Toolket.getCollegeCode(gstmdDeptCode); totalCredits = 0.0F; anoDeptCredits = 0.0F; anoCollegeCredits = 0.0F; for (Object o : scoreHist) { data = (Object[]) o; totalCredits += (Float) data[0]; stdepartClass = data[3] == null ? "" : (String) data[3]; deptCode = StringUtils.isBlank(stdepartClass) ? "" : StringUtils.substring(stdepartClass, 3, 4); collegeCode = Toolket.getCollegeCode(deptCode); if (StringUtils.isNotBlank(stdepartClass) && !Toolket.isLiteracyClass(stdepartClass) && data[2] != null && !ArrayUtils.contains(denied, (String) data[2]) && !gstmdDeptCode.equals(deptCode)) anoDeptCredits += (Float) data[0]; if (StringUtils.isNotBlank(stdepartClass) && !Toolket.isLiteracyClass(stdepartClass) && data[2] != null && !ArrayUtils.contains(denied, (String) data[2]) && !gstmdCollegeCode.equals(collegeCode)) anoCollegeCredits += (Float) data[0]; } Toolket.setCellValue(sheet, index, 0, gstmd.getStudentNo().toUpperCase().trim()); Toolket.setCellValue(sheet, index, 1, gstmd.getStudentName().toUpperCase().trim()); Toolket.setCellValue(sheet, index, 2, Toolket.getClassFullName(gstmd.getDepartClass())); Toolket.setCellValue(sheet, index, 3, Float.toString(totalCredits)); Toolket.setCellValue(sheet, index, 4, Float.toString(anoDeptCredits)); Toolket.setCellValue(sheet, index++, 5, Float.toString(anoCollegeCredits)); sumCredits += totalCredits; if (anoDeptCredits > 0.0F) { sumAnoDeptCredits += anoDeptCredits; anoGstmdCounts++; } if (anoCollegeCredits > 0.0F) { sumAnoCollegeCredits += anoCollegeCredits; anoGstmdCollegeCounts++; } } } StringBuilder builder = new StringBuilder(""); builder.append(" : ").append(gstmds.size()).append(" , : "); builder.append(nf.format(sumCredits)).append(", ? : "); builder.append(nf.format(sumCredits / (float) gstmds.size())).append("/"); Toolket.setCellValue(sheet, 2, 0, builder.toString()); builder = new StringBuilder(); builder.append(" : ").append(anoGstmdCounts).append(" , "); builder.append(" : ").append(sumAnoDeptCredits); builder.append(" ? : ").append(nf.format(sumAnoDeptCredits / (float) anoGstmdCounts)) .append("/"); Toolket.setCellValue(sheet, 3, 0, builder.toString()); builder = new StringBuilder(); builder.append(" : ").append(anoGstmdCollegeCounts).append(" , "); builder.append(" : ").append(sumAnoCollegeCredits); builder.append(" ? : ").append(nf.format(sumAnoCollegeCredits / (float) anoGstmdCollegeCounts)) .append("/"); Toolket.setCellValue(sheet, 4, 0, builder.toString()); } File tempDir = new File( context.getRealPath("/WEB-INF/reports/temp/" + getUserCredential(session).getMember().getIdno() + (new SimpleDateFormat("yyyyMMdd").format(new Date())))); if (!tempDir.exists()) tempDir.mkdirs(); File output = new File(tempDir, "GstmdCreditAvgList.xls"); FileOutputStream fos = new FileOutputStream(output); workbook.write(fos); fos.close(); JasperReportUtils.printXlsToFrontEnd(response, output); output.delete(); tempDir.delete(); }