Java tutorial
package tw.edu.chit.struts.action.registration; import static tw.edu.chit.util.IConstants.ADMIN_MANAGER_BEAN_NAME; import static tw.edu.chit.util.IConstants.MEMBER_MANAGER_BEAN_NAME; import static tw.edu.chit.util.IConstants.PARAMETER_SCHOOL_TERM; import static tw.edu.chit.util.IConstants.PARAMETER_SCHOOL_YEAR; import java.io.File; import java.io.FileOutputStream; import java.text.DateFormat; import java.text.DecimalFormat; import java.text.NumberFormat; import java.text.SimpleDateFormat; import java.util.Arrays; import java.util.Calendar; import java.util.Date; import java.util.HashMap; import java.util.HashSet; import java.util.LinkedList; import java.util.List; import java.util.Map; import java.util.Set; import javax.servlet.ServletContext; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpSession; import net.sf.jasperreports.engine.JREmptyDataSource; import net.sf.jasperreports.engine.JasperRunManager; import org.apache.commons.beanutils.BeanUtils; import org.apache.commons.lang3.ArrayUtils; import org.apache.commons.lang3.StringUtils; import org.apache.poi.hssf.usermodel.HSSFCellStyle; import org.apache.poi.hssf.usermodel.HSSFClientAnchor; import org.apache.poi.hssf.usermodel.HSSFFont; import org.apache.poi.hssf.usermodel.HSSFSheet; import org.apache.poi.hssf.usermodel.HSSFWorkbook; import org.apache.poi.hssf.util.HSSFColor; import org.apache.poi.ss.usermodel.Drawing; import org.apache.poi.ss.usermodel.Picture; import org.apache.poi.ss.usermodel.Workbook; import org.apache.poi.ss.util.CellRangeAddress; import org.apache.struts.action.ActionForm; import org.apache.struts.action.ActionForward; import org.apache.struts.action.ActionMapping; import org.apache.struts.action.ActionMessage; import org.apache.struts.action.ActionMessages; import org.apache.struts.action.DynaActionForm; import org.hibernate.criterion.Criterion; import org.hibernate.criterion.Example; import org.hibernate.criterion.MatchMode; import org.hibernate.criterion.Order; import org.hibernate.criterion.Restrictions; import org.springframework.util.CollectionUtils; import tw.edu.chit.model.Clazz; import tw.edu.chit.model.Csno; import tw.edu.chit.model.DEmpl; import tw.edu.chit.model.DeptCode4Yun; import tw.edu.chit.model.Dtime; import tw.edu.chit.model.Empl; import tw.edu.chit.model.Gmark; import tw.edu.chit.model.Graduate; import tw.edu.chit.model.Just; import tw.edu.chit.model.LicenseCode; import tw.edu.chit.model.LifeCounseling; import tw.edu.chit.model.MasterData; import tw.edu.chit.model.RegistrationCard; import tw.edu.chit.model.ScoreHist; import tw.edu.chit.model.Seld; import tw.edu.chit.model.Stavg; import tw.edu.chit.model.StdImage; import tw.edu.chit.model.StdSkill; import tw.edu.chit.model.Student; import tw.edu.chit.model.TeacherStayTime; import tw.edu.chit.service.AdminManager; import tw.edu.chit.service.CourseManager; import tw.edu.chit.service.MemberManager; import tw.edu.chit.service.ScoreManager; import tw.edu.chit.service.StudAffairManager; import tw.edu.chit.struts.action.BaseLookupDispatchAction; import tw.edu.chit.util.Global; import tw.edu.chit.util.IConstants; import tw.edu.chit.util.JasperReportUtils; import tw.edu.chit.util.Toolket; public class ReportPrintAction extends BaseLookupDispatchAction { /** * ? * * @param mapping org.apache.struts.action.ActionMapping object * @param form org.apache.struts.action.ActionForm object * @param request javax.servlet.http.HttpServletRequest object * @param response javax.servlet.http.HttpServletResponse object * @return org.apache.struts.action.ActionForward object * @exception java.lang.Exception */ @Override public ActionForward unspecified(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception { HttpSession session = request.getSession(false); AdminManager am = (AdminManager) getBean(IConstants.ADMIN_MANAGER_BEAN_NAME); CourseManager cm = (CourseManager) getBean(IConstants.COURSE_MANAGER_BEAN_NAME); String sterm = am.findTermBy(IConstants.PARAMETER_SCHOOL_TERM); DynaActionForm aForm = (DynaActionForm) form; aForm.set("sterm", sterm); aForm.set("year", tw.edu.chit.struts.action.score.ReportPrintAction.getYearArray(cm.getNowBy("School_year"))); setContentPage(session, "registration/ReportPrint.jsp"); return mapping.findForward(IConstants.ACTION_MAIN_NAME); } /** * ? * * @param mapping org.apache.struts.action.ActionMapping object * @param form org.apache.struts.action.ActionForm object * @param request javax.servlet.http.HttpServletRequest object * @param response javax.servlet.http.HttpServletResponse object * @exception java.lang.Exception */ public void printReport(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception { // ActionFormstruts-config-PSN.xml,?struts-config-REG.xml??? DynaActionForm aForm = (DynaActionForm) form; aForm.set("sterm", request.getParameter("st")); aForm.set("printOpt", request.getParameter("p")); aForm.set("campusInCharge2", request.getParameter("c")); aForm.set("schoolInCharge2", request.getParameter("s")); aForm.set("deptInCharge2", request.getParameter("d")); aForm.set("classInCharge2", request.getParameter("cl")); aForm.set("printInterClass", request.getParameter("printInterClass")); aForm.set("deptCodeOpt", request.getParameter("dcp")); aForm.set("licenseValidDateStart", request.getParameter("sd")); aForm.set("licenseValidDateEnd", request.getParameter("ed")); aForm.set("nodeCode", request.getParameter("nc")); aForm.set("dayCode", request.getParameter("dc")); aForm.set("campusCode", request.getParameter("cc")); aForm.set("schoolType", request.getParameter("stc")); String printOpt = aForm.getString("printOpt"); String sterm = (String) aForm.get("sterm"); request.getSession(false).setMaxInactiveInterval(-1); if ("RegisterList".equals(printOpt)) { // ? printRegisterList(mapping, aForm, request, response, sterm); } else if ("ClassStudentsScoreHistory".equals(printOpt)) { // ??? printClassStudentsScoreHistory(mapping, aForm, request, response, sterm); } else if ("ClassStudentsRegistrationCard".equals(printOpt)) { // ??? printClassStudentsRegistrationCard(mapping, aForm, request, response, sterm); } else if ("IdnoCheck".equals(printOpt)) { // printIdnoCheckErrorStudentsList(mapping, aForm, request, response, sterm); } else if ("ClassStudentsScoreHistory4CreditClass".equals(printOpt)) { // ???() printClassStudentsScoreHistory4CreditClass(mapping, aForm, request, response, sterm); } else if ("StayTimePrint".equalsIgnoreCase(printOpt)) { // ? printStayTimePrint(mapping, aForm, request, response, sterm); } else if ("Calculate".equals(printOpt)) { // ? printCalculate(mapping, aForm, request, response, sterm); } else if ("GstmdList4Ntnu".equals(printOpt)) { // (?) printGstmdList4Ntnu(mapping, aForm, request, response, sterm); } else if ("GstmdList4Ntnu1".equals(printOpt)) { // 1,3(?) printGstmdList4Ntnu1(mapping, aForm, request, response, sterm); } else if ("Listing4-1".equals(printOpt)) { // 4-1 printListing41(mapping, aForm, request, response, sterm); } else if ("Listing4-2".equals(printOpt)) { // 4-2 printListing42(mapping, aForm, request, response, sterm); } else if ("Listing4-4-1".equals(printOpt)) { // 4-4-1 ? printListing441(mapping, aForm, request, response, sterm); } else if ("StmdUnSeld".equals(printOpt)) { // ? printStmdUnSeld(mapping, aForm, request, response, sterm); } else if ("StdSkillList".equals(printOpt)) { // ? printStdSkillList(mapping, aForm, request, response, sterm); } else if ("GstmdCreditAvg".equals(printOpt)) { // ? printGstmdCreditAvg(mapping, aForm, request, response, sterm); } else if ("RegisterManagerList".equals(printOpt)) { // printRegisterManagerList(mapping, aForm, request, response, sterm); } else if ("UploadNewStmdTemplate".equals(printOpt)) { // (?) printUploadNewStmdTemplate(mapping, aForm, request, response, sterm); } else if ("UploadNewStmdTemplate1".equals(printOpt)) { // (?) printUploadNewStmdTemplate1(mapping, aForm, request, response, sterm); } } /** * ? * * @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 */ private void printRegisterList(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); ServletContext context = request.getSession().getServletContext(); String year = cm.getNowBy("School_year"); String term = form.getString("sterm"); String header = "?YEARTERM??" .replaceAll("YEAR", year).replaceAll("TERM", term); List<Clazz> clazzes = sm.findClassBy(new Clazz(processClassInfo(form)), getUserCredential(session).getClassInChargeAry(), false); if (!clazzes.isEmpty()) { List<Student> students = null; HSSFSheet sheet = null; HSSFWorkbook workbook = new HSSFWorkbook(); HSSFFont fontSize16 = workbook.createFont(); fontSize16.setFontHeightInPoints((short) 16); fontSize16.setFontName("Arial Unicode MS"); HSSFFont fontSize12 = workbook.createFont(); fontSize12.setFontHeightInPoints((short) 12); fontSize12.setFontName("Arial Unicode MS"); for (Clazz clazz : clazzes) { if (Toolket.isDelayClass(clazz.getClassNo())) continue; students = mm.findStudentsByClassNo(clazz.getClassNo()); if (!students.isEmpty()) { sheet = workbook.createSheet(clazz.getClassNo()); sheet.setColumnWidth(0, 3000); sheet.setColumnWidth(1, 3000); sheet.setColumnWidth(2, 5000); sheet.setColumnWidth(3, 3500); sheet.setColumnWidth(4, 3500); sheet.setColumnWidth(5, 3500); sheet.addMergedRegion(new CellRangeAddress(0, 0, 0, 5)); sheet.addMergedRegion(new CellRangeAddress(1, 1, 0, 5)); // Header Toolket.setCellValue(workbook, sheet, 0, 0, header, fontSize16, HSSFCellStyle.ALIGN_CENTER, false, 35.0F, null); Toolket.setCellValue(workbook, sheet, 1, 0, "?:" + Toolket.getClassFullName(clazz.getClassNo()) + " ???", fontSize12, HSSFCellStyle.ALIGN_LEFT, false, null, null); // Column Header Toolket.setCellValue(workbook, sheet, 2, 0, "", fontSize12, HSSFCellStyle.ALIGN_CENTER, true, null); Toolket.setCellValue(workbook, sheet, 2, 1, "??", fontSize12, HSSFCellStyle.ALIGN_CENTER, true, null); Toolket.setCellValue(workbook, sheet, 2, 2, "", fontSize12, HSSFCellStyle.ALIGN_CENTER, true, null); Toolket.setCellValue(workbook, sheet, 2, 3, "?", fontSize12, HSSFCellStyle.ALIGN_CENTER, true, null); Toolket.setCellValue(workbook, sheet, 2, 4, "", fontSize12, HSSFCellStyle.ALIGN_CENTER, true, null); Toolket.setCellValue(workbook, sheet, 2, 5, "", fontSize12, HSSFCellStyle.ALIGN_CENTER, true, null); int index = 3; for (Student student : students) { Toolket.setCellValue(workbook, sheet, index, 0, student.getStudentNo(), fontSize12, HSSFCellStyle.ALIGN_CENTER, true, null); Toolket.setCellValue(workbook, sheet, index, 1, student.getStudentName().trim().replaceAll("", ""), fontSize12, HSSFCellStyle.ALIGN_CENTER, true, null); Toolket.setCellValue(workbook, sheet, index, 2, "", null, HSSFCellStyle.ALIGN_CENTER, true, null); Toolket.setCellValue(workbook, sheet, index, 3, "", null, HSSFCellStyle.ALIGN_CENTER, true, null); Toolket.setCellValue(workbook, sheet, index, 4, "", null, HSSFCellStyle.ALIGN_CENTER, true, null); Toolket.setCellValue(workbook, sheet, index++, 5, "", null, HSSFCellStyle.ALIGN_CENTER, true, null); if (39 == index) { // ? Toolket.setCellValue(workbook, sheet, index, 0, "", fontSize12, HSSFCellStyle.ALIGN_CENTER, true, null); Toolket.setCellValue(workbook, sheet, index, 1, "??", fontSize12, HSSFCellStyle.ALIGN_CENTER, true, null); Toolket.setCellValue(workbook, sheet, index, 2, "", fontSize12, HSSFCellStyle.ALIGN_CENTER, true, null); Toolket.setCellValue(workbook, sheet, index, 3, "?", fontSize12, HSSFCellStyle.ALIGN_CENTER, true, null); Toolket.setCellValue(workbook, sheet, index, 4, "", fontSize12, HSSFCellStyle.ALIGN_CENTER, true, null); Toolket.setCellValue(workbook, sheet, index++, 5, "", fontSize12, HSSFCellStyle.ALIGN_CENTER, true, null); } } for (int i = 0; i <= 5; i++) { if (i == 0) { Toolket.setCellValue(workbook, sheet, index, i, "?", fontSize12, HSSFCellStyle.ALIGN_CENTER, true, null); continue; } Toolket.setCellValue(workbook, sheet, index, i, "", null, HSSFCellStyle.ALIGN_CENTER, true, null); } sheet.addMergedRegion(new CellRangeAddress(++index, index, 0, 5)); // Toolket.setCellValue(workbook, sheet, index, 0, // " ???", // fontSize12, HSSFCellStyle.ALIGN_LEFT, false, 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, "RegisterList.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); } } /** * ??? * * @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); } } } /** * ???96 * * @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); } } } /** * ???96 * * @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); } } } /** * ??? * * @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 */ private void printClassStudentsRegistrationCard(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); ServletContext context = request.getSession().getServletContext(); String year = cm.getNowBy("School_year"); // ????? // String term = form.getString("sterm"); // ?? List<Clazz> clazzes = sm.findClassBy(new Clazz(processClassInfo(form)), getUserCredential(session).getClassInChargeAry(), false); if (!clazzes.isEmpty()) { List<Student> students = null; HSSFSheet sheet = null; String departClass = null; RegistrationCard rc = null; StdImage image = null; String studentNo = null; int sheetIndex = 0, pictureIndex = 0; byte[] bytes = null; // CreationHelper helper = null; Drawing drawing = null; // ClientAnchor anchor = null; HSSFClientAnchor anchor1 = null; Picture pict = null; DateFormat df = new SimpleDateFormat("yyyy/MM/dd"); File templateXLS = new File(context.getRealPath("/WEB-INF/reports/ClassStudentsRegistrationCard.xls")); HSSFWorkbook workbook = Toolket.getHSSFWorkbook(templateXLS); HSSFFont fontSize18 = workbook.createFont(); fontSize18.setFontHeightInPoints((short) 18); fontSize18.setFontName("Arial Unicode MS"); HSSFFont fontSize12 = workbook.createFont(); fontSize12.setFontHeightInPoints((short) 12); fontSize12.setFontName("Arial Unicode MS"); HSSFFont fontSize11 = workbook.createFont(); fontSize11.setFontHeightInPoints((short) 11); fontSize11.setFontName("Arial Unicode MS"); HSSFFont fontSize8 = workbook.createFont(); fontSize8.setFontHeightInPoints((short) 8); fontSize8.setFontName("Arial Unicode MS"); for (Clazz clazz : clazzes) { if (!Toolket.isNewStudentClass(clazz.getClassNo())) continue; departClass = clazz.getClassNo(); students = mm.findStudentsByClassNo(departClass); if (!students.isEmpty()) { sheetIndex = 0; for (Student student : students) { studentNo = student.getStudentNo(); sheet = workbook.getSheetAt(sheetIndex); workbook.setSheetName(sheetIndex++, studentNo.toUpperCase()); // Header Toolket.setCellValue(workbook, sheet, 1, 0, Toolket.getCellValue(sheet, 1, 0).replaceAll("YEAR", year), fontSize18, HSSFCellStyle.ALIGN_CENTER, false, null, null); Toolket.setCellValue(workbook, sheet, 1, 13, Toolket.getCellValue(sheet, 1, 13).replaceAll("YEAR", year), fontSize18, HSSFCellStyle.ALIGN_CENTER, false, null, null); // Columns Toolket.setCellValue(workbook, sheet, 2, 1, student.getStudentNo(), fontSize12, HSSFCellStyle.ALIGN_LEFT, true, null, null); Toolket.setCellValue(workbook, sheet, 2, 4, student.getStudentName(), fontSize12, HSSFCellStyle.ALIGN_LEFT, true, null, null); Toolket.setCellValue(workbook, sheet, 2, 8, Toolket.getClassFullName(student.getDepartClass()), fontSize12, HSSFCellStyle.ALIGN_LEFT, true, null, null); Toolket.setCellValue(workbook, sheet, 3, 1, StringUtils.isBlank(student.getStudentEname()) ? "" : student.getStudentEname(), fontSize12, HSSFCellStyle.ALIGN_LEFT, true, false, null, null); Toolket.setCellValue(workbook, sheet, 3, 9, student.getIdno(), fontSize12, HSSFCellStyle.ALIGN_LEFT, true, null, null); Toolket.setCellValue(workbook, sheet, 4, 1, Toolket.getSex(student.getSex()), fontSize12, HSSFCellStyle.ALIGN_CENTER, true, false, null, null); // Toolket.setCellValue(workbook, sheet, 4, 3, df // .format(student.getBirthday()), fontSize11, // HSSFCellStyle.ALIGN_LEFT, true, null, null); Toolket.setCellValue(workbook, sheet, 4, 3, printNativeDate(df.format(student.getBirthday())), fontSize11, HSSFCellStyle.ALIGN_LEFT, true, null, null); Toolket.setCellValue(workbook, sheet, 4, 9, StringUtils.isBlank(student.getIdent()) ? "" : Toolket.getIdentity(student.getIdent()), fontSize12, HSSFCellStyle.ALIGN_LEFT, true, false, null, null); Toolket.setCellValue(workbook, sheet, 9, 1, (StringUtils.isBlank(student.getPermPost()) ? "" : student.getPermPost()) + " " + (StringUtils.isBlank(student.getPermAddr()) ? "" : student.getPermAddr()), fontSize12, HSSFCellStyle.ALIGN_LEFT, true, null, null); Toolket.setCellValue(workbook, sheet, 9, 9, student.getTelephone(), fontSize12, HSSFCellStyle.ALIGN_LEFT, true, false, null, null); Toolket.setCellValue(workbook, sheet, 10, 9, student.getCellPhone(), fontSize12, HSSFCellStyle.ALIGN_LEFT, true, false, null, null); Toolket.setCellValue(workbook, sheet, 11, 2, student.getParentName(), fontSize12, HSSFCellStyle.ALIGN_LEFT, true, false, null, null); Toolket.setCellValue(workbook, sheet, 12, 2, student.getCurrPost() + " " + student.getCurrAddr(), fontSize8, HSSFCellStyle.ALIGN_LEFT, true, null, null); image = new StdImage(); image.setStudentNo(student.getStudentNo()); image = mm.findStdImageBy(image); if (image != null) { bytes = image.getImage().getBytes(1l, (int) image.getImage().length()); // Image im = // java.awt.Toolkit.getDefaultToolkit().getImage(filename); try { pictureIndex = workbook.addPicture(bytes, Workbook.PICTURE_TYPE_JPEG); } catch (Exception e) { try { pictureIndex = workbook.addPicture(bytes, Workbook.PICTURE_TYPE_PNG); } catch (Exception e1) { pictureIndex = workbook.addPicture(bytes, Workbook.PICTURE_TYPE_PICT); } } // helper = workbook.getCreationHelper(); drawing = sheet.createDrawingPatriarch(); // anchor = helper.createClientAnchor(); anchor1 = new HSSFClientAnchor(0, 0, 400, 100, (short) 13, 19, (short) 17, 29); anchor1.setAnchorType(0); // anchor.setCol1(13); // anchor.setRow1(19); pict = drawing.createPicture(anchor1, pictureIndex); try { pict.resize(); // 154611 // pict.resize(0.5); } catch (Exception e) { e.printStackTrace(); log.error(e.getMessage(), e); } } if (student.getRegistrationCard() != null) { rc = student.getRegistrationCard(); Toolket.setCellValue(workbook, sheet, 2, 8, Toolket.getCellValue(sheet, 2, 8) + " " + (rc.getDiviName() == null ? "" : rc.getDiviName().trim()), fontSize12, HSSFCellStyle.ALIGN_LEFT, true, false, null, null); Toolket.setCellValue(workbook, sheet, 3, 5, StringUtils.isBlank(rc.getBirthCountry()) ? "" : rc.getBirthCountry().trim(), fontSize12, HSSFCellStyle.ALIGN_LEFT, true, false, null, null); Toolket.setCellValue(workbook, sheet, 4, 5, StringUtils.isBlank(rc.getBirthPlace()) ? "" : rc.getBirthPlace().trim(), fontSize12, HSSFCellStyle.ALIGN_LEFT, true, false, null, null); Toolket.setCellValue(workbook, sheet, 5, 2, StringUtils.isBlank(rc.getAborigine()) ? "" : rc.getAborigine().trim(), fontSize12, HSSFCellStyle.ALIGN_LEFT, true, false, null, null); Toolket.setCellValue(workbook, sheet, 5, 5, StringUtils.isBlank(rc.getForeignPlace()) ? "" : rc.getForeignPlace().trim(), fontSize12, HSSFCellStyle.ALIGN_LEFT, true, false, null, null); Toolket.setCellValue(workbook, sheet, 5, 9, rc.getArmyIn() == null ? "?" : "?" + df.format(rc.getArmyIn()), fontSize12, HSSFCellStyle.ALIGN_LEFT, true, false, null, null); Toolket.setCellValue(workbook, sheet, 6, 9, rc.getArmyOut() == null ? "?" : "?" + df.format(rc.getArmyOut()), fontSize12, HSSFCellStyle.ALIGN_LEFT, true, false, null, null); Toolket.setCellValue(workbook, sheet, 7, 3, StringUtils.isBlank(rc.getBeforeSchool()) ? "" : rc.getBeforeSchool().trim(), fontSize12, HSSFCellStyle.ALIGN_LEFT, true, false, null, null); Toolket.setCellValue(workbook, sheet, 7, 9, StringUtils.isBlank(rc.getGradeYear()) ? "" : rc.getGradeYear(), fontSize12, HSSFCellStyle.ALIGN_LEFT, true, false, null, null); Toolket.setCellValue(workbook, sheet, 7, 11, rc.getGradeType() == null ? "" : rc.getGradeType().toString(), fontSize12, HSSFCellStyle.ALIGN_LEFT, true, false, null, null); Toolket.setCellValue(workbook, sheet, 8, 3, StringUtils.isBlank(rc.getBeforeDept()) ? "" : rc.getBeforeDept().trim(), fontSize12, HSSFCellStyle.ALIGN_LEFT, true, false, null, null); Toolket.setCellValue(workbook, sheet, 11, 5, StringUtils.isBlank(rc.getParentAge()) ? "" : rc.getParentAge().trim(), fontSize12, HSSFCellStyle.ALIGN_CENTER, true, false, null, null); Toolket.setCellValue(workbook, sheet, 11, 7, StringUtils.isBlank(rc.getParentCareer()) ? "" : rc.getParentCareer().trim(), fontSize12, HSSFCellStyle.ALIGN_LEFT, true, false, null, null); Toolket.setCellValue(workbook, sheet, 11, 11, StringUtils.isBlank(rc.getParentRelationship()) ? "" : rc.getParentRelationship().trim(), fontSize12, HSSFCellStyle.ALIGN_LEFT, true, false, null, null); Toolket.setCellValue(workbook, sheet, 12, 10, StringUtils.isBlank(rc.getEmergentPhone()) ? "" : rc.getEmergentPhone().trim(), fontSize12, HSSFCellStyle.ALIGN_LEFT, true, false, null, null); Toolket.setCellValue(workbook, sheet, 13, 10, StringUtils.isBlank(rc.getEmergentCell()) ? "" : rc.getEmergentCell().trim(), fontSize12, HSSFCellStyle.ALIGN_LEFT, true, false, null, null); Toolket.setCellValue(workbook, sheet, 15, 1, StringUtils.isBlank(rc.getMemberTitle1()) ? "" : rc.getMemberTitle1().trim(), fontSize12, HSSFCellStyle.ALIGN_CENTER, true, false, null, null); Toolket.setCellValue(workbook, sheet, 15, 2, StringUtils.isBlank(rc.getMemberName1()) ? "" : rc.getMemberName1().trim(), fontSize12, HSSFCellStyle.ALIGN_CENTER, true, false, null, null); Toolket.setCellValue(workbook, sheet, 15, 4, StringUtils.isBlank(rc.getMemberAge1()) ? "" : rc.getMemberAge1().trim(), fontSize12, HSSFCellStyle.ALIGN_CENTER, true, false, null, null); Toolket.setCellValue(workbook, sheet, 15, 5, StringUtils.isBlank(rc.getMemberCareer1()) ? "" : rc.getMemberCareer1().trim(), fontSize12, HSSFCellStyle.ALIGN_CENTER, true, false, null, null); Toolket.setCellValue(workbook, sheet, 15, 7, StringUtils.isBlank(rc.getMemberTitle2()) ? "" : rc.getMemberTitle2().trim(), fontSize12, HSSFCellStyle.ALIGN_CENTER, true, false, null, null); Toolket.setCellValue(workbook, sheet, 15, 8, StringUtils.isBlank(rc.getMemberName2()) ? "" : rc.getMemberName2().trim(), fontSize12, HSSFCellStyle.ALIGN_CENTER, true, false, null, null); Toolket.setCellValue(workbook, sheet, 15, 10, StringUtils.isBlank(rc.getMemberAge2()) ? "" : rc.getMemberAge2().trim(), fontSize12, HSSFCellStyle.ALIGN_CENTER, true, false, null, null); Toolket.setCellValue(workbook, sheet, 15, 11, StringUtils.isBlank(rc.getMemberCareer2()) ? "" : rc.getMemberCareer2().trim(), fontSize12, HSSFCellStyle.ALIGN_CENTER, true, false, null, null); Toolket.setCellValue(workbook, sheet, 16, 1, StringUtils.isBlank(rc.getMemberTitle3()) ? "" : rc.getMemberTitle3().trim(), fontSize12, HSSFCellStyle.ALIGN_CENTER, true, false, null, null); Toolket.setCellValue(workbook, sheet, 16, 2, StringUtils.isBlank(rc.getMemberName3()) ? "" : rc.getMemberName3().trim(), fontSize12, HSSFCellStyle.ALIGN_CENTER, true, false, null, null); Toolket.setCellValue(workbook, sheet, 16, 4, StringUtils.isBlank(rc.getMemberAge3()) ? "" : rc.getMemberAge3().trim(), fontSize12, HSSFCellStyle.ALIGN_CENTER, true, false, null, null); Toolket.setCellValue(workbook, sheet, 16, 5, StringUtils.isBlank(rc.getMemberCareer3()) ? "" : rc.getMemberCareer3().trim(), fontSize12, HSSFCellStyle.ALIGN_CENTER, true, false, null, null); Toolket.setCellValue(workbook, sheet, 16, 7, StringUtils.isBlank(rc.getMemberTitle4()) ? "" : rc.getMemberTitle4().trim(), fontSize12, HSSFCellStyle.ALIGN_CENTER, true, false, null, null); Toolket.setCellValue(workbook, sheet, 16, 8, StringUtils.isBlank(rc.getMemberName4()) ? "" : rc.getMemberName4().trim(), fontSize12, HSSFCellStyle.ALIGN_CENTER, true, false, null, null); Toolket.setCellValue(workbook, sheet, 16, 10, StringUtils.isBlank(rc.getMemberAge4()) ? "" : rc.getMemberAge4().trim(), fontSize12, HSSFCellStyle.ALIGN_CENTER, true, false, null, null); Toolket.setCellValue(workbook, sheet, 16, 11, StringUtils.isBlank(rc.getMemberCareer4()) ? "" : rc.getMemberCareer4().trim(), fontSize12, HSSFCellStyle.ALIGN_CENTER, true, false, null, 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, "ClassStudentRegistrationCard.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); } } /** * * * @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 */ private void printIdnoCheckErrorStudentsList(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); ScoreManager sm = (ScoreManager) getBean(IConstants.SCORE_MANAGER_BEAN_NAME); ServletContext context = request.getSession().getServletContext(); List<Clazz> clazzes = sm.findClassBy(new Clazz(processClassInfo(form)), getUserCredential(session).getClassInChargeAry(), false); if (!clazzes.isEmpty()) { List<Student> students = null; HSSFWorkbook workbook = new HSSFWorkbook(); HSSFSheet sheet = workbook.createSheet("?"); sheet.setColumnWidth(0, 3000); sheet.setColumnWidth(1, 3000); sheet.setColumnWidth(2, 5000); sheet.setColumnWidth(3, 3500); sheet.addMergedRegion(new CellRangeAddress(0, 0, 0, 3)); HSSFFont fontSize16 = workbook.createFont(); fontSize16.setFontHeightInPoints((short) 16); fontSize16.setFontName("Arial Unicode MS"); HSSFFont fontSize12 = workbook.createFont(); fontSize12.setFontHeightInPoints((short) 12); fontSize12.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, "", fontSize12, HSSFCellStyle.ALIGN_CENTER, true, null); Toolket.setCellValue(workbook, sheet, 1, 1, "??", fontSize12, HSSFCellStyle.ALIGN_CENTER, true, null); Toolket.setCellValue(workbook, sheet, 1, 2, "?", fontSize12, HSSFCellStyle.ALIGN_CENTER, true, null); Toolket.setCellValue(workbook, sheet, 1, 3, "", fontSize12, HSSFCellStyle.ALIGN_CENTER, true, null); int index = 2; for (Clazz clazz : clazzes) { if (Toolket.isDelayClass(clazz.getClassNo())) continue; students = mm.findStudentsByClassNo(clazz.getClassNo()); if (!students.isEmpty()) { for (Student student : students) { if (!Toolket.checkIdno(student.getIdno())) { Toolket.setCellValue(workbook, sheet, index, 0, student.getStudentNo(), fontSize12, HSSFCellStyle.ALIGN_CENTER, true, null); Toolket.setCellValue(workbook, sheet, index, 1, student.getStudentName(), fontSize12, HSSFCellStyle.ALIGN_CENTER, true, null); Toolket.setCellValue(workbook, sheet, index, 2, Toolket.getClassFullName(student.getDepartClass()), null, HSSFCellStyle.ALIGN_CENTER, true, null); Toolket.setCellValue(workbook, sheet, index++, 3, student.getIdno(), null, 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, "RegisterList.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); } } /** * ? * * @param mapping * @param form * @param request * @param response * @param sterm * @throws Exception */ @SuppressWarnings("unchecked") private void printStayTimePrint(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); ServletContext context = request.getSession().getServletContext(); Integer year = Integer.valueOf(cm.getNowBy("School_year")); String term = form.getString("sterm"); // Short dayCode = Short.valueOf(form.getString("dayCode")); // String nodeCode = form.getString("nodeCode"); 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/TeachSchedAll.xls")); HSSFWorkbook workbook = Toolket.getHSSFWorkbook(templateXLS); HSSFFont fontSize12 = workbook.createFont(); fontSize12.setFontHeightInPoints((short) 12); fontSize12.setFontName("Arial Unicode MS"); HSSFSheet sheet = null; int sheetIndex = 0, colOffset = 1, col = 0; boolean isLocationNull = false; String departClass = null; Dtime dtime = null; Empl empl = null; Set<String> idnoSet = new HashSet<String>(); Short colorForStayTime = HSSFColor.AUTOMATIC.index; Short colorForLifeCounseling = HSSFColor.LIGHT_GREEN.index; List<TeacherStayTime> tsts = null; List<LifeCounseling> lcs = null; List<Dtime> dtimes = null; List<Map> map = null; Map content = null; for (Clazz clazz : clazzes) { departClass = clazz.getClassNo(); dtime = new Dtime(); dtime.setDepartClass(departClass); dtime.setSterm(sterm); dtimes = cm.findDtimeBy(dtime, "cscode"); if (!dtimes.isEmpty()) { for (Dtime d : dtimes) { if (StringUtils.isNotBlank(d.getTechid())) idnoSet.add(d.getTechid()); } } } for (String idno : idnoSet) { empl = mm.findEmplByIdno(idno); if (empl != null && "1".equalsIgnoreCase(empl.getCategory())) { sheet = workbook.getSheetAt(sheetIndex); workbook.setSheetName(sheetIndex++, empl.getCname()); isLocationNull = empl.getLocation() == null; Toolket.setCellValue(sheet, 0, 1, year + "" + term + "" + empl.getCname() + "?" + " (:" + (isLocationNull ? "" : StringUtils.defaultIfEmpty(empl.getLocation().getExtension(), "")) + " ?:" + (isLocationNull ? "" : StringUtils.defaultIfEmpty(empl.getLocation().getRoomId(), "")) + ")"); map = cm.findCourseByTeacherTermWeekdaySched(empl.getIdno(), term.toString()); for (int i = 0; i < 14; i++) { for (int j = 0; j < 7; j++) { content = map.get(j * 15 + i); if (!CollectionUtils.isEmpty(content)) { Toolket.setCellValue(sheet, i + 2, j + 2, (String) content.get("ClassName") + "\n" + (String) content.get("chi_name") + "\n" + (String) content.get("place")); } } } tsts = empl.getStayTime(); for (TeacherStayTime tst : tsts) { col = tst.getWeek() + colOffset; if (tst.getNode1() != null && tst.getNode1() == 1) { if (StringUtils.isEmpty(Toolket.getCellValue(sheet, 2, col))) Toolket.setCellValue(workbook, sheet, 2, col, "", fontSize12, HSSFCellStyle.ALIGN_CENTER, true, colorForStayTime); } if (tst.getNode2() != null && tst.getNode2() == 1) { if (StringUtils.isEmpty(Toolket.getCellValue(sheet, 3, col))) Toolket.setCellValue(workbook, sheet, 3, col, "", fontSize12, HSSFCellStyle.ALIGN_CENTER, true, colorForStayTime); } if (tst.getNode3() != null && tst.getNode3() == 1) { if (StringUtils.isEmpty(Toolket.getCellValue(sheet, 4, col))) Toolket.setCellValue(workbook, sheet, 4, col, "", fontSize12, HSSFCellStyle.ALIGN_CENTER, true, colorForStayTime); } if (tst.getNode4() != null && tst.getNode4() == 1) { if (StringUtils.isEmpty(Toolket.getCellValue(sheet, 5, col))) Toolket.setCellValue(workbook, sheet, 5, col, "", fontSize12, HSSFCellStyle.ALIGN_CENTER, true, colorForStayTime); } if (tst.getNode5() != null && tst.getNode5() == 1) { if (StringUtils.isEmpty(Toolket.getCellValue(sheet, 6, col))) Toolket.setCellValue(workbook, sheet, 6, col, "", fontSize12, HSSFCellStyle.ALIGN_CENTER, true, colorForStayTime); } if (tst.getNode6() != null && tst.getNode6() == 1) { if (StringUtils.isEmpty(Toolket.getCellValue(sheet, 7, col))) Toolket.setCellValue(workbook, sheet, 7, col, "", fontSize12, HSSFCellStyle.ALIGN_CENTER, true, colorForStayTime); } if (tst.getNode7() != null && tst.getNode7() == 1) { if (StringUtils.isEmpty(Toolket.getCellValue(sheet, 8, col))) Toolket.setCellValue(workbook, sheet, 8, col, "", fontSize12, HSSFCellStyle.ALIGN_CENTER, true, colorForStayTime); } if (tst.getNode8() != null && tst.getNode8() == 1) { if (StringUtils.isEmpty(Toolket.getCellValue(sheet, 9, col))) Toolket.setCellValue(workbook, sheet, 9, col, "", fontSize12, HSSFCellStyle.ALIGN_CENTER, true, colorForStayTime); } if (tst.getNode9() != null && tst.getNode9() == 1) { if (StringUtils.isEmpty(Toolket.getCellValue(sheet, 10, col))) Toolket.setCellValue(workbook, sheet, 10, col, "", fontSize12, HSSFCellStyle.ALIGN_CENTER, true, colorForStayTime); } if (tst.getNode10() != null && tst.getNode10() == 1) { if (StringUtils.isEmpty(Toolket.getCellValue(sheet, 11, col))) Toolket.setCellValue(workbook, sheet, 11, col, "", fontSize12, HSSFCellStyle.ALIGN_CENTER, true, colorForStayTime); } if (tst.getNode11() != null && tst.getNode11() == 1) { if (StringUtils.isEmpty(Toolket.getCellValue(sheet, 12, col))) Toolket.setCellValue(workbook, sheet, 12, col, "", fontSize12, HSSFCellStyle.ALIGN_CENTER, true, colorForStayTime); } if (tst.getNode12() != null && tst.getNode12() == 1) { if (StringUtils.isEmpty(Toolket.getCellValue(sheet, 13, col))) Toolket.setCellValue(workbook, sheet, 13, col, "", fontSize12, HSSFCellStyle.ALIGN_CENTER, true, colorForStayTime); } if (tst.getNode13() != null && tst.getNode13() == 1) { if (StringUtils.isEmpty(Toolket.getCellValue(sheet, 14, col))) Toolket.setCellValue(workbook, sheet, 14, col, "", fontSize12, HSSFCellStyle.ALIGN_CENTER, true, colorForStayTime); } if (tst.getNode14() != null && tst.getNode14() == 1) { if (StringUtils.isEmpty(Toolket.getCellValue(sheet, 15, col))) Toolket.setCellValue(workbook, sheet, 15, col, "", fontSize12, HSSFCellStyle.ALIGN_CENTER, true, colorForStayTime); } } lcs = empl.getLifeCounseling(); colOffset = 1; col = 0; for (LifeCounseling lc : lcs) { col = lc.getWeek() + colOffset; if (lc.getNode1() != null && lc.getNode1() == 1) { if (StringUtils.isEmpty(Toolket.getCellValue(sheet, 2, col))) Toolket.setCellValue(workbook, sheet, 2, col, "", fontSize12, HSSFCellStyle.ALIGN_CENTER, true, colorForLifeCounseling); } if (lc.getNode2() != null && lc.getNode2() == 1) { if (StringUtils.isEmpty(Toolket.getCellValue(sheet, 3, col))) Toolket.setCellValue(workbook, sheet, 3, col, "", fontSize12, HSSFCellStyle.ALIGN_CENTER, true, colorForLifeCounseling); } if (lc.getNode3() != null && lc.getNode3() == 1) { if (StringUtils.isEmpty(Toolket.getCellValue(sheet, 4, col))) Toolket.setCellValue(workbook, sheet, 4, col, "", fontSize12, HSSFCellStyle.ALIGN_CENTER, true, colorForLifeCounseling); } if (lc.getNode4() != null && lc.getNode4() == 1) { if (StringUtils.isEmpty(Toolket.getCellValue(sheet, 5, col))) Toolket.setCellValue(workbook, sheet, 5, col, "", fontSize12, HSSFCellStyle.ALIGN_CENTER, true, colorForLifeCounseling); } if (lc.getNode5() != null && lc.getNode5() == 1) { if (StringUtils.isEmpty(Toolket.getCellValue(sheet, 6, col))) Toolket.setCellValue(workbook, sheet, 6, col, "", fontSize12, HSSFCellStyle.ALIGN_CENTER, true, colorForLifeCounseling); } if (lc.getNode6() != null && lc.getNode6() == 1) { if (StringUtils.isEmpty(Toolket.getCellValue(sheet, 7, col))) Toolket.setCellValue(workbook, sheet, 7, col, "", fontSize12, HSSFCellStyle.ALIGN_CENTER, true, colorForLifeCounseling); } if (lc.getNode7() != null && lc.getNode7() == 1) { if (StringUtils.isEmpty(Toolket.getCellValue(sheet, 8, col))) Toolket.setCellValue(workbook, sheet, 8, col, "", fontSize12, HSSFCellStyle.ALIGN_CENTER, true, colorForLifeCounseling); } if (lc.getNode8() != null && lc.getNode8() == 1) { if (StringUtils.isEmpty(Toolket.getCellValue(sheet, 9, col))) Toolket.setCellValue(workbook, sheet, 9, col, "", fontSize12, HSSFCellStyle.ALIGN_CENTER, true, colorForLifeCounseling); } if (lc.getNode9() != null && lc.getNode9() == 1) { if (StringUtils.isEmpty(Toolket.getCellValue(sheet, 10, col))) Toolket.setCellValue(workbook, sheet, 10, col, "", fontSize12, HSSFCellStyle.ALIGN_CENTER, true, colorForLifeCounseling); } if (lc.getNode10() != null && lc.getNode10() == 1) { if (StringUtils.isEmpty(Toolket.getCellValue(sheet, 11, col))) Toolket.setCellValue(workbook, sheet, 11, col, "", fontSize12, HSSFCellStyle.ALIGN_CENTER, true, colorForLifeCounseling); } if (lc.getNode11() != null && lc.getNode11() == 1) { if (StringUtils.isEmpty(Toolket.getCellValue(sheet, 12, col))) Toolket.setCellValue(workbook, sheet, 12, col, "", fontSize12, HSSFCellStyle.ALIGN_CENTER, true, colorForLifeCounseling); } if (lc.getNode12() != null && lc.getNode12() == 1) { if (StringUtils.isEmpty(Toolket.getCellValue(sheet, 13, col))) Toolket.setCellValue(workbook, sheet, 13, col, "", fontSize12, HSSFCellStyle.ALIGN_CENTER, true, colorForLifeCounseling); } if (lc.getNode13() != null && lc.getNode13() == 1) { if (StringUtils.isEmpty(Toolket.getCellValue(sheet, 14, col))) Toolket.setCellValue(workbook, sheet, 14, col, "", fontSize12, HSSFCellStyle.ALIGN_CENTER, true, colorForLifeCounseling); } if (lc.getNode14() != null && lc.getNode14() == 1) { if (StringUtils.isEmpty(Toolket.getCellValue(sheet, 15, col))) Toolket.setCellValue(workbook, sheet, 15, col, "", fontSize12, HSSFCellStyle.ALIGN_CENTER, true, colorForLifeCounseling); } } } } 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, "StayTimeList.xls"); FileOutputStream fos = new FileOutputStream(output); workbook.write(fos); fos.close(); JasperReportUtils.printXlsToFrontEnd(response, output); output.delete(); tempDir.delete(); } } /** * * * @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(); } } /** * (?) * * @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(); } } /** * 1,3(?) * * @param mapping * @param form * @param request * @param response * @param sterm * @throws Exception */ private void printGstmdList4Ntnu1(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); ScoreManager sm = (ScoreManager) getBean(IConstants.SCORE_MANAGER_BEAN_NAME); ServletContext context = request.getSession().getServletContext(); 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"); if (!clazzes.isEmpty()) { File templateXLS = new File(context.getRealPath("/WEB-INF/reports/GstmdList4Ntnu1.xls")); HSSFWorkbook workbook = Toolket.getHSSFWorkbook(templateXLS); HSSFSheet sheet = workbook.getSheetAt(0); workbook.setSheetName(0, "13?"); HSSFFont fontSize10 = workbook.createFont(); fontSize10.setFontHeightInPoints((short) 10); fontSize10.setFontName("Arial Unicode MS"); int index = 2; String[] includeGrade = { "1", "3" }; // String[] excludeIdent = { "7", "8" }; // , ? for (Clazz clazz : clazzes) { departClass = clazz.getClassNo(); if (ArrayUtils.contains(includeGrade, clazz.getGrade())) { students = mm.findStudentsByClassNo(departClass); for (Student student : students) { if (!ArrayUtils.contains(excludeIdent, student.getIdent())) { Toolket.setCellValue(sheet, index, 0, "1061"); Toolket.setCellValue(sheet, index, 1, String.valueOf(ArrayUtils.indexOf(includeGrade, clazz.getGrade()) + 1)); Toolket.setCellValue(sheet, index, 2, student.getStudentNo()); Toolket.setCellValue(sheet, index, 3, Toolket.getDeptCode4Ntnu(student.getDepartClass())); Toolket.setCellValue(sheet, index, 4, Toolket.getDepartName(student.getDepartClass())); Toolket.setCellValue(sheet, index, 5, student.getDivi()); Toolket.setCellValue(sheet, index, 6, Toolket.getCampCode4Ntnu(student.getDepartClass())); Toolket.setCellValue(sheet, index, 7, student.getStudentName()); Toolket.setCellValue(sheet, index, 8, student.getIdno()); Toolket.setCellValue(sheet, index, 9, df.format(student.getBirthday())); Toolket.setCellValue(sheet, index, 10, student.getSex()); Toolket.setCellValue(sheet, index, 11, Toolket.getDefaultStudentEmail(student, "")); Toolket.setCellValue(sheet, index, 12, StringUtils.trimToEmpty(student.getEmail())); // ? Toolket.setCellValue(sheet, index, 13, student.getCurrPost()); Toolket.setCellValue(sheet, index, 14, student.getCurrAddr()); Toolket.setCellValue(sheet, index, 15, "0"); Toolket.setCellValue(sheet, index, 16, "5".equals(student.getIdent()) ? "1" : "0"); Toolket.setCellValue(sheet, index, 17, "0"); Toolket.setCellValue(sheet, index, 18, "3".equals(student.getOccurStatus()) ? "8" : Toolket.get4IdentNtnu(student.getIdent(), false)); Toolket.setCellValue(sheet, index++, 19, "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, "GstmdList4Ntnu1.xls"); FileOutputStream fos = new FileOutputStream(output); workbook.write(fos); fos.close(); JasperReportUtils.printXlsToFrontEnd(response, output); output.delete(); tempDir.delete(); } } /** * 4-1 * * @param mapping * @param form * @param request * @param response * @param sterm * @throws Exception */ private void printListing41(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); ServletContext context = request.getSession().getServletContext(); Map<String, Integer> info = Toolket.getPreviousYearTerm(); String lastYear = info.get(IConstants.PARAMETER_SCHOOL_YEAR).toString(); String lastTerm = info.get(IConstants.PARAMETER_SCHOOL_TERM).toString(); List<DeptCode4Yun> deptCodes = mm.findDeptCode4YunBy(new DeptCode4Yun()); if (!deptCodes.isEmpty()) { HSSFWorkbook workbook = new HSSFWorkbook(); HSSFSheet sheet = workbook.createSheet("4-1"); sheet.setColumnWidth(0, 3000); sheet.setColumnWidth(1, 3000); sheet.setColumnWidth(2, 4000); sheet.setColumnWidth(3, 5000); sheet.setColumnWidth(4, 3000); sheet.setColumnWidth(5, 3000); sheet.addMergedRegion(new CellRangeAddress(0, 0, 0, 5)); 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, lastYear + "" + lastTerm + "", 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); Toolket.setCellValue(workbook, sheet, 1, 5, "", fontSize10, HSSFCellStyle.ALIGN_CENTER, true, null); int index = 2; Graduate graduate = new Graduate(); graduate.setOccurYear(Short.valueOf(lastYear)); graduate.setOccurTerm(lastTerm); graduate.setOccurStatus("6"); // graduate.setBirthDate(null); graduate.setBirthday2(null); graduate.setDepartClass2(null); graduate.setIdno(null); graduate.setInformixPass(null); graduate.setOccurStatus2(null); graduate.setPassword(null); graduate.setPriority(null); graduate.setSex2(null); graduate.setUndeleteReason(null); graduate.setUnit2(null); for (DeptCode4Yun code : deptCodes) { Toolket.setCellValue(workbook, sheet, index, 0, code.getDeptCode(), fontSize10, HSSFCellStyle.ALIGN_CENTER, true, null); Toolket.setCellValue(workbook, sheet, index, 1, code.getCampusCode(), fontSize10, HSSFCellStyle.ALIGN_CENTER, true, null); Toolket.setCellValue(workbook, sheet, index, 2, code.getDeptName(), fontSize10, HSSFCellStyle.ALIGN_CENTER, true, null); Toolket.setCellValue(workbook, sheet, index, 3, code.getCampusName(), fontSize10, HSSFCellStyle.ALIGN_CENTER, true, null); graduate.setDepartClass(code.getClassNo()); graduate.setSex("1"); Toolket.setCellValue(workbook, sheet, index, 4, String.valueOf(mm.findGraduatesBy(graduate).size()), fontSize10, HSSFCellStyle.ALIGN_CENTER, true, null); graduate.setSex("2"); Toolket.setCellValue(workbook, sheet, index++, 5, String.valueOf(mm.findGraduatesBy(graduate).size()), 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, "List41Ntnu.xls"); FileOutputStream fos = new FileOutputStream(output); workbook.write(fos); fos.close(); JasperReportUtils.printXlsToFrontEnd(response, output); output.delete(); tempDir.delete(); } } /** * 4-2 * * @param mapping * @param form * @param request * @param response * @param sterm * @throws Exception */ private void printListing42(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); AdminManager am = (AdminManager) getBean(IConstants.ADMIN_MANAGER_BEAN_NAME); ServletContext context = request.getSession().getServletContext(); String thisYear = cm.getNowBy("School_year"); String thisTerm = am.findTermBy(PARAMETER_SCHOOL_TERM); List<DeptCode4Yun> deptCodes = mm.findDeptCode4YunBy(new DeptCode4Yun()); if (!deptCodes.isEmpty()) { File templateXLS = new File(context.getRealPath("/WEB-INF/reports/List42Ntnu.xls")); HSSFWorkbook workbook = Toolket.getHSSFWorkbook(templateXLS); HSSFSheet sheet = workbook.getSheetAt(0); // Header Toolket.setCellValue(sheet, 0, 0, thisYear + "" + thisTerm + ""); int index = 2; Student student = new Student(); // student.setIdent("1"); // student.setBirthDate(null); student.setBirthday2(null); student.setDepartClass2(null); student.setIdno(null); student.setInformixPass(null); student.setOccurStatus2(null); student.setPassword(null); student.setPriority(null); student.setSex2(null); student.setUndeleteReason(null); student.setUnit2(null); for (DeptCode4Yun code : deptCodes) { for (int i = 1; i <= code.getGradeYear(); i++) { Toolket.setCellValue(sheet, index, 0, code.getDeptCode()); Toolket.setCellValue(sheet, index, 1, code.getCampusCode()); Toolket.setCellValue(sheet, index, 2, code.getDeptName()); Toolket.setCellValue(sheet, index, 3, code.getCampusName()); Toolket.setCellValue(sheet, index, 4, String.valueOf(i)); student.setDepartClass(code.getClassNo() + i); student.setSex("1"); Toolket.setCellValue(sheet, index, 5, String.valueOf(mm.findStudentsBy(student).size())); student.setSex("2"); Toolket.setCellValue(sheet, index++, 6, String.valueOf(mm.findStudentsBy(student).size())); } } 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, "List42Ntnu.xls"); FileOutputStream fos = new FileOutputStream(output); workbook.write(fos); fos.close(); JasperReportUtils.printXlsToFrontEnd(response, output); output.delete(); tempDir.delete(); } } /** * 4-4-1 * * @param mapping * @param form * @param request * @param response * @param sterm * @throws Exception */ @SuppressWarnings("unchecked") private void printListing441(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); ServletContext context = request.getSession().getServletContext(); request.getSession(false).setMaxInactiveInterval(-1); Map<String, Integer> info = Toolket.getPreviousYearTerm(); String lastYear = info.get(IConstants.PARAMETER_SCHOOL_YEAR).toString(); String lastTerm = info.get(IConstants.PARAMETER_SCHOOL_TERM).toString(); List<DeptCode4Yun> deptCodes = mm.findDeptCode4YunBy(new DeptCode4Yun()); if (!deptCodes.isEmpty()) { File templateXLS = new File(context.getRealPath("/WEB-INF/reports/List441Ntnu.xls")); HSSFWorkbook workbook = Toolket.getHSSFWorkbook(templateXLS); HSSFSheet sheet = workbook.getSheetAt(0); // Header Toolket.setCellValue(sheet, 0, 0, lastYear + "" + lastTerm + "?"); int index = 2, counts = 0, boyCounts = 0, girlCounts = 0; String departClass = null; List<Object> ret = null; Object[] o = null; String hql1 = "SELECT g.sex, COUNT(g.sex) AS counts FROM Graduate g " + "WHERE g.occurYear = ? AND g.occurTerm = ? " + "AND g.occurStatus = ? AND g.departClass LIKE ? " + "AND g.occurCause IN ('001', '006', '007', '008', '009', '010', '038') " + "GROUP BY g.sex"; String hql2 = "SELECT g.sex, COUNT(g.sex) AS counts FROM Graduate g " + "WHERE g.occurYear = ? AND g.occurTerm = ? " + "AND g.occurStatus = ? AND g.departClass LIKE ? " + "AND g.occurCause IN ('002', '011', '012', '013', '014') " + "GROUP BY g.sex"; String hql3 = "SELECT g.sex, COUNT(g.sex) AS counts FROM Graduate g " + "WHERE g.occurYear = ? AND g.occurTerm = ? " + "AND g.occurStatus = ? AND g.departClass LIKE ? " + "AND g.occurCause IN ('003', '016', '017', '018', '019') " + "GROUP BY g.sex"; String hql4 = "SELECT g.sex, COUNT(g.sex) AS counts FROM Graduate g " + "WHERE g.occurYear = ? AND g.occurTerm = ? " + "AND g.occurStatus = ? AND g.departClass LIKE ? " + "AND g.occurCause IN ('025') " + "GROUP BY g.sex"; String hql5 = "SELECT g.sex, COUNT(g.sex) AS counts FROM Graduate g " + "WHERE g.occurYear = ? AND g.occurTerm = ? " + "AND g.occurStatus = ? AND g.departClass LIKE ? " + "AND g.occurCause IN ('022', '030', '031', '037', '039') " + "GROUP BY g.sex"; String hql6 = "SELECT g.sex, COUNT(g.sex) AS counts FROM Graduate g " + "WHERE g.occurYear = ? AND g.occurTerm = ? " + "AND g.occurStatus = ? AND g.departClass LIKE ? " + "AND g.occurCause IN ('022', '035') " + "GROUP BY g.sex"; String hql7 = "SELECT g.sex, COUNT(g.sex) AS counts FROM Graduate g " + "WHERE g.occurYear = ? AND g.occurTerm = ? " + "AND g.occurStatus = ? AND g.departClass LIKE ? " + "AND g.occurCause IN ('025', '029') " + "GROUP BY g.sex"; String hql8 = "SELECT COUNT(*) FROM Graduate g " + "WHERE g.occurYear = ? AND g.occurTerm = ? " + "AND g.occurStatus = ? AND g.sex = ? " + "AND g.departClass LIKE ?"; for (DeptCode4Yun code : deptCodes) { for (int i = 1; i <= code.getGradeYear(); i++) { if (StringUtils.isBlank(Toolket.getClassFullName(code.getClassNo() + i + "1"))) continue; Toolket.setCellValue(sheet, index, 0, code.getDeptCode()); Toolket.setCellValue(sheet, index, 1, code.getCampusCode()); Toolket.setCellValue(sheet, index, 2, code.getDeptName()); Toolket.setCellValue(sheet, index, 3, code.getCampusName()); Toolket.setCellValue(sheet, index, 4, String.valueOf(i)); departClass = code.getClassNo() + i + "_"; ret = (List<Object>) am.find(hql1, new Object[] { Short.valueOf(lastYear), lastTerm, "2", departClass }); if (!ret.isEmpty()) { for (Object obj : ret) { o = (Object[]) obj; if ("1".equals((String) o[0])) { Toolket.setCellValue(sheet, index, 5, ((Integer) o[1]).toString()); } else if ("2".equals((String) o[0])) { Toolket.setCellValue(sheet, index, 6, ((Integer) o[1]).toString()); } } } ret = (List<Object>) am.find(hql2, new Object[] { Short.valueOf(lastYear), lastTerm, "2", departClass }); if (!ret.isEmpty()) { for (Object obj : ret) { o = (Object[]) obj; if ("1".equals((String) o[0])) { Toolket.setCellValue(sheet, index, 7, ((Integer) o[1]).toString()); } else if ("2".equals((String) o[0])) { Toolket.setCellValue(sheet, index, 8, ((Integer) o[1]).toString()); } } } ret = (List<Object>) am.find(hql3, new Object[] { Short.valueOf(lastYear), lastTerm, "2", departClass }); if (!ret.isEmpty()) { for (Object obj : ret) { o = (Object[]) obj; if ("1".equals((String) o[0])) { Toolket.setCellValue(sheet, index, 9, ((Integer) o[1]).toString()); } else if ("2".equals((String) o[0])) { Toolket.setCellValue(sheet, index, 10, ((Integer) o[1]).toString()); } } } ret = (List<Object>) am.find(hql4, new Object[] { Short.valueOf(lastYear), lastTerm, "2", departClass }); if (!ret.isEmpty()) { for (Object obj : ret) { o = (Object[]) obj; if ("1".equals((String) o[0])) { Toolket.setCellValue(sheet, index, 11, ((Integer) o[1]).toString()); } else if ("2".equals((String) o[0])) { Toolket.setCellValue(sheet, index, 12, ((Integer) o[1]).toString()); } } } ret = (List<Object>) am.find(hql5, new Object[] { Short.valueOf(lastYear), lastTerm, "2", departClass }); if (!ret.isEmpty()) { for (Object obj : ret) { o = (Object[]) obj; if ("1".equals((String) o[0])) { Toolket.setCellValue(sheet, index, 13, ((Integer) o[1]).toString()); } else if ("2".equals((String) o[0])) { Toolket.setCellValue(sheet, index, 14, ((Integer) o[1]).toString()); } } } boyCounts = 0; girlCounts = 0; ret = (List<Object>) am.find(hql6, new Object[] { Short.valueOf(lastYear), lastTerm, "1", departClass }); if (!ret.isEmpty()) { for (Object obj : ret) { o = (Object[]) obj; if ("1".equals((String) o[0])) { Toolket.setCellValue(sheet, index, 15, ((Integer) o[1]).toString()); boyCounts += (Integer) o[1]; } else if ("2".equals((String) o[0])) { Toolket.setCellValue(sheet, index, 16, ((Integer) o[1]).toString()); girlCounts += (Integer) o[1]; } } } ret = (List<Object>) am.find(hql7, new Object[] { Short.valueOf(lastYear), lastTerm, "1", departClass }); if (!ret.isEmpty()) { for (Object obj : ret) { o = (Object[]) obj; if ("1".equals((String) o[0])) { Toolket.setCellValue(sheet, index, 17, ((Integer) o[1]).toString()); boyCounts += (Integer) o[1]; } else if ("2".equals((String) o[0])) { Toolket.setCellValue(sheet, index, 18, ((Integer) o[1]).toString()); girlCounts += (Integer) o[1]; } } } ret = (List<Object>) am.find(hql8, new Object[] { Short.valueOf(lastYear), lastTerm, "1", "1", departClass }); counts = (Integer) ret.get(0) - boyCounts; Toolket.setCellValue(sheet, index, 19, 0 == counts ? "" : String.valueOf(counts)); ret = (List<Object>) am.find(hql8, new Object[] { Short.valueOf(lastYear), lastTerm, "1", "2", departClass }); counts = (Integer) ret.get(0) - girlCounts; Toolket.setCellValue(sheet, index, 20, 0 == counts ? "" : String.valueOf(counts)); index++; } } 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, "List441Ntnu.xls"); FileOutputStream fos = new FileOutputStream(output); workbook.write(fos); fos.close(); JasperReportUtils.printXlsToFrontEnd(response, output); output.delete(); tempDir.delete(); } } /** * 4-4-1 * * @param mapping * @param form * @param request * @param response * @param sterm * @throws Exception */ void printListing441Bak(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); ServletContext context = request.getSession().getServletContext(); request.getSession(false).setMaxInactiveInterval(-1); Map<String, Integer> info = Toolket.getPreviousYearTerm(); String lastYear = info.get(IConstants.PARAMETER_SCHOOL_YEAR).toString(); String lastTerm = info.get(IConstants.PARAMETER_SCHOOL_TERM).toString(); List<DeptCode4Yun> deptCodes = mm.findDeptCode4YunBy(new DeptCode4Yun()); if (!deptCodes.isEmpty()) { File templateXLS = new File(context.getRealPath("/WEB-INF/reports/List441Ntnu.xls")); HSSFWorkbook workbook = Toolket.getHSSFWorkbook(templateXLS); HSSFSheet sheet = workbook.getSheetAt(0); // Header Toolket.setCellValue(sheet, 0, 0, lastYear + "" + lastTerm + "?"); int index = 2, counts = 0, boyCounts = 0, girlCounts = 0; Graduate graduate = new Graduate(); graduate.setOccurYear(Short.valueOf(lastYear)); graduate.setOccurTerm(lastTerm); graduate.setIdno(null); graduate.setGradSchlName(null); graduate.setIdentBasicName(null); graduate.setBirthDate(null); graduate.setBirthday2(null); graduate.setDepartClass2(null); graduate.setIdno(null); graduate.setInformixPass(null); graduate.setOccurStatus2(null); graduate.setPassword(null); graduate.setPriority(null); graduate.setSex2(null); graduate.setUndeleteReason(null); graduate.setUnit2(null); Example example = null; Criterion boy = Restrictions.eq("sex", "1"); Criterion girl = Restrictions.eq("sex", "2"); // 001 ?, 006 ??, 007 ?45? // 008 ? 2/3??, 009 1/2?? // 010 ?, 038 ?36? Criterion occurCause1 = Restrictions.in("occurCause", new String[] { "001", "006", "007", "008", "009", "010", "038" }); // 002 ?, 011 , 012 ?, 013 , 014 ??? Criterion occurCause2 = Restrictions.in("occurCause", new String[] { "002", "011", "012", "013", "014" }); // 003 ??, 016 ?, 017 , 018 , 019 Criterion occurCause3 = Restrictions.in("occurCause", new String[] { "003", "016", "017", "018", "019" }); // 025 Criterion occurCause4 = Restrictions.in("occurCause", new String[] { "025" }); // 022 , 030 , 031 , 037 , 039 Criterion occurCause5 = Restrictions.in("occurCause", new String[] { "022", "030", "031", "037", "039" }); // 022 , 035 ? Criterion occurCause6 = Restrictions.in("occurCause", new String[] { "022", "035" }); // 025 , 029 Criterion occurCause7 = Restrictions.in("occurCause", new String[] { "025", "029" }); for (DeptCode4Yun code : deptCodes) { for (int i = 1; i <= code.getGradeYear(); i++) { Toolket.setCellValue(sheet, index, 0, code.getDeptCode()); Toolket.setCellValue(sheet, index, 1, code.getCampusCode()); Toolket.setCellValue(sheet, index, 2, code.getDeptName()); Toolket.setCellValue(sheet, index, 3, code.getCampusName()); Toolket.setCellValue(sheet, index, 4, String.valueOf(i)); /* * ????????? * ????????? * ?????? ?? * ?? ?? * ?? ? */ if (StringUtils.isBlank(Toolket.getClassFullName(code.getClassNo() + i + "1"))) continue; graduate.setDepartClass(code.getClassNo() + i + "_"); graduate.setOccurStatus("2"); // example = Example.create(graduate).ignoreCase().enableLike(MatchMode.EXACT); // occurCause = Restrictions.in("occurCause", new String[] { // "001", "006", "007", "008", "009", "010", "038" }); counts = mm.findSQLWithCriteria(Graduate.class, example, boy, occurCause1).size(); Toolket.setCellValue(sheet, index, 5, 0 == counts ? "" : String.valueOf(counts)); counts = mm.findSQLWithCriteria(Graduate.class, example, girl, occurCause1).size(); Toolket.setCellValue(sheet, index, 6, 0 == counts ? "" : String.valueOf(counts)); // occurCause = Restrictions.in("occurCause", new String[] { // "002", "011", "012", "013", "014" }); counts = mm.findSQLWithCriteria(Graduate.class, example, boy, occurCause2).size(); Toolket.setCellValue(sheet, index, 7, 0 == counts ? "" : String.valueOf(counts)); counts = mm.findSQLWithCriteria(Graduate.class, example, girl, occurCause2).size(); Toolket.setCellValue(sheet, index, 8, 0 == counts ? "" : String.valueOf(counts)); // occurCause = Restrictions.in("occurCause", new String[] { // "003", "016", "017", "018", "019" }); counts = mm.findSQLWithCriteria(Graduate.class, example, boy, occurCause3).size(); Toolket.setCellValue(sheet, index, 9, 0 == counts ? "" : String.valueOf(counts)); counts = mm.findSQLWithCriteria(Graduate.class, example, girl, occurCause3).size(); Toolket.setCellValue(sheet, index, 10, 0 == counts ? "" : String.valueOf(counts)); // occurCause = Restrictions.in("occurCause", // new String[] { "025" }); counts = mm.findSQLWithCriteria(Graduate.class, example, boy, occurCause4).size(); Toolket.setCellValue(sheet, index, 11, 0 == counts ? "" : String.valueOf(counts)); counts = mm.findSQLWithCriteria(Graduate.class, example, girl, occurCause4).size(); Toolket.setCellValue(sheet, index, 12, 0 == counts ? "" : String.valueOf(counts)); // occurCause = Restrictions.in("occurCause", new String[] { // "022", "030", "031", "037", "039" }); counts = mm.findSQLWithCriteria(Graduate.class, example, boy, occurCause5).size(); Toolket.setCellValue(sheet, index, 13, 0 == counts ? "" : String.valueOf(counts)); counts = mm.findSQLWithCriteria(Graduate.class, example, girl, occurCause5).size(); Toolket.setCellValue(sheet, index, 14, 0 == counts ? "" : String.valueOf(counts)); graduate.setOccurStatus("1"); // example = Example.create(graduate).ignoreCase().enableLike(MatchMode.EXACT); boyCounts = 0; girlCounts = 0; // occurCause = Restrictions.in("occurCause", new String[] { // "022", "035" }); counts = mm.findSQLWithCriteria(Graduate.class, example, boy, occurCause6).size(); boyCounts += counts; Toolket.setCellValue(sheet, index, 15, 0 == counts ? "" : String.valueOf(counts)); counts = mm.findSQLWithCriteria(Graduate.class, example, girl, occurCause6).size(); girlCounts += counts; Toolket.setCellValue(sheet, index, 16, 0 == counts ? "" : String.valueOf(counts)); // occurCause = Restrictions.in("occurCause", new String[] { // "025", "029" }); counts = mm.findSQLWithCriteria(Graduate.class, example, boy, occurCause7).size(); boyCounts += counts; Toolket.setCellValue(sheet, index, 17, 0 == counts ? "" : String.valueOf(counts)); counts = mm.findSQLWithCriteria(Graduate.class, example, girl, occurCause7).size(); girlCounts += counts; Toolket.setCellValue(sheet, index, 18, 0 == counts ? "" : String.valueOf(counts)); counts = mm.findSQLWithCriteria(Graduate.class, example, boy).size() - boyCounts; Toolket.setCellValue(sheet, index, 19, 0 == counts ? "" : String.valueOf(counts)); counts = mm.findSQLWithCriteria(Graduate.class, example, girl).size() - girlCounts; Toolket.setCellValue(sheet, index++, 20, 0 == counts ? "" : String.valueOf(counts)); } } 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, "List441Ntnu.xls"); FileOutputStream fos = new FileOutputStream(output); workbook.write(fos); fos.close(); JasperReportUtils.printXlsToFrontEnd(response, output); output.delete(); tempDir.delete(); } } /** * ? * * @param mapping * @param form * @param request * @param response * @param sterm * @throws Exception */ private void printStmdUnSeld(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); CourseManager cm = (CourseManager) getBean(IConstants.COURSE_MANAGER_BEAN_NAME); MemberManager mm = (MemberManager) getBean(IConstants.MEMBER_MANAGER_BEAN_NAME); ScoreManager sm = (ScoreManager) getBean(IConstants.SCORE_MANAGER_BEAN_NAME); ServletContext context = request.getSession().getServletContext(); List<Clazz> clazzes = sm.findClassBy(new Clazz(processClassInfo(form)), getUserCredential(session).getClassInChargeAry(), false); String thisYear = cm.getNowBy("School_year"); String thisTerm = am.findTermBy(PARAMETER_SCHOOL_TERM); if (!clazzes.isEmpty()) { List<Student> students = null; HSSFWorkbook workbook = new HSSFWorkbook(); HSSFSheet sheet = workbook .createSheet(thisYear + "" + thisTerm + "?"); sheet.setColumnWidth(0, 3000); sheet.setColumnWidth(1, 3000); sheet.setColumnWidth(2, 5000); sheet.setColumnWidth(3, 3500); sheet.setColumnWidth(4, 3500); sheet.setColumnWidth(5, 3500); sheet.addMergedRegion(new CellRangeAddress(0, 0, 0, 5)); HSSFFont fontSize16 = workbook.createFont(); fontSize16.setFontHeightInPoints((short) 16); fontSize16.setFontName("Arial Unicode MS"); HSSFFont fontSize12 = workbook.createFont(); fontSize12.setFontHeightInPoints((short) 12); fontSize12.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, "", fontSize12, HSSFCellStyle.ALIGN_CENTER, true, null); Toolket.setCellValue(workbook, sheet, 1, 1, "??", fontSize12, HSSFCellStyle.ALIGN_CENTER, true, null); Toolket.setCellValue(workbook, sheet, 1, 2, "?", fontSize12, HSSFCellStyle.ALIGN_CENTER, true, null); Toolket.setCellValue(workbook, sheet, 1, 3, "", fontSize12, HSSFCellStyle.ALIGN_CENTER, true, null); Toolket.setCellValue(workbook, sheet, 1, 4, "", fontSize12, HSSFCellStyle.ALIGN_CENTER, true, null); Toolket.setCellValue(workbook, sheet, 1, 5, "Email", fontSize12, HSSFCellStyle.ALIGN_CENTER, true, null); int index = 2; List<Seld> selds = null; for (Clazz clazz : clazzes) { students = mm.findStudentsByClassNo(clazz.getClassNo()); if (!students.isEmpty()) { for (Student student : students) { selds = cm.findSeldByStudentNoAndTerm(student.getStudentNo(), thisTerm); if (selds.isEmpty()) { Toolket.setCellValue(workbook, sheet, index, 0, student.getStudentNo(), fontSize12, HSSFCellStyle.ALIGN_CENTER, true, null); Toolket.setCellValue(workbook, sheet, index, 1, student.getStudentName(), fontSize12, HSSFCellStyle.ALIGN_CENTER, true, null); Toolket.setCellValue(workbook, sheet, index, 2, Toolket.getClassFullName(student.getDepartClass()), fontSize12, HSSFCellStyle.ALIGN_CENTER, true, null); Toolket.setCellValue(workbook, sheet, index, 3, StringUtils.defaultIfEmpty(student.getTelephone(), ""), fontSize12, HSSFCellStyle.ALIGN_CENTER, true, null); Toolket.setCellValue(workbook, sheet, index, 4, StringUtils.defaultIfEmpty(student.getCellPhone(), ""), fontSize12, HSSFCellStyle.ALIGN_CENTER, true, null); Toolket.setCellValue(workbook, sheet, index++, 5, StringUtils.defaultIfEmpty(student.getEmail(), ""), fontSize12, 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, "StmdUnSeld.xls"); FileOutputStream fos = new FileOutputStream(output); workbook.write(fos); fos.close(); JasperReportUtils.printXlsToFrontEnd(response, output); output.delete(); tempDir.delete(); } } /** * ? * * @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 printStdSkillList(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); CourseManager cm = (CourseManager) getBean(IConstants.COURSE_MANAGER_BEAN_NAME); MemberManager mm = (MemberManager) getBean(MEMBER_MANAGER_BEAN_NAME); DynaActionForm aForm = (DynaActionForm) form; ServletContext context = request.getSession().getServletContext(); StdSkill skill = new StdSkill(); skill.setAmount(null); // ?? Example example = Example.create(skill).ignoreCase().enableLike(MatchMode.ANYWHERE); List<Order> orders = new LinkedList<Order>(); orders.add(Order.asc("schoolYear")); orders.add(Order.asc("schoolTerm")); orders.add(Order.asc("studentNo")); List<Criterion> cris = new LinkedList<Criterion>(); Criterion cri = null; if (aForm.getStrings("year").length != 0) { cri = Restrictions.eq("schoolYear", aForm.getStrings("year")[0]); cris.add(cri); } if (StringUtils.isNotBlank(aForm.getString("sterm"))) { cri = Restrictions.eq("schoolTerm", aForm.getString("sterm")); cris.add(cri); } if (StringUtils.isNotBlank(aForm.getString("deptCodeOpt"))) { cri = Restrictions.eq("deptNo", aForm.getString("deptCodeOpt")); cris.add(cri); } if (StringUtils.isNotBlank(aForm.getString("licenseValidDateStart")) || StringUtils.isNotBlank(aForm.getString("licenseValidDateEnd"))) { Date from = StringUtils.isBlank(aForm.getString("licenseValidDateStart")) ? null : Toolket.parseNativeDate(aForm.getString("licenseValidDateStart")); // ??? Date to = StringUtils.isBlank(aForm.getString("licenseValidDateEnd")) ? Calendar.getInstance().getTime() : Toolket.parseNativeDate(aForm.getString("licenseValidDateEnd")); if (from != null) { cri = Restrictions.between("licenseValidDate", from, to); cris.add(cri); } } List<StdSkill> skills = (List<StdSkill>) am.findSQLWithCriteria(StdSkill.class, example, null, orders, cris); int index = 2; List<LicenseCode> codes = null; Student student = null; Graduate graduate = null; Empl empl = null; DEmpl dempl = null; Csno csno = null; DateFormat df = new SimpleDateFormat("yyyy/MM/dd"); DateFormat df1 = new SimpleDateFormat("yyyy/MM"); File templateXLS = new File(context.getRealPath("/WEB-INF/reports/DeptStdSkillList.xls")); HSSFWorkbook workbook = Toolket.getHSSFWorkbook(templateXLS); HSSFSheet sheet = workbook.getSheetAt(0); for (StdSkill ss : skills) { codes = (List<LicenseCode>) am .findLicenseCodesBy(new LicenseCode(Integer.valueOf(ss.getLicenseCode()))); if (!codes.isEmpty()) ss.setLicense(codes.get(0)); student = mm.findStudentByNo(ss.getStudentNo().trim()); if (student == null) { graduate = mm.findGraduateByStudentNo(ss.getStudentNo().trim()); if (graduate != null) { ss.setStudentName(graduate.getStudentName().trim()); ss.setDepartClass(Toolket.getClassFullName(graduate.getDepartClass())); } } else { ss.setStudentName(student.getStudentName().trim()); ss.setDepartClass(Toolket.getClassFullName(student.getDepartClass())); } Toolket.setCellValue(sheet, index, 0, ss.getSchoolYear() + "." + ss.getSchoolTerm()); Toolket.setCellValue(sheet, index, 1, ss.getStudentNo().toUpperCase()); Toolket.setCellValue(sheet, index, 2, ss.getStudentName()); Toolket.setCellValue(sheet, index, 3, ss.getDepartClass()); Toolket.setCellValue(sheet, index, 4, ss.getLicense().getCode().toString()); Toolket.setCellValue(sheet, index, 5, ss.getLicense().getName().trim()); Toolket.setCellValue(sheet, index, 6, ss.getLicense().getLocale().toString()); Toolket.setCellValue(sheet, index, 7, ss.getLicense().getLevel().trim()); Toolket.setCellValue(sheet, index, 8, ss.getLicense().getType().toString()); Toolket.setCellValue(sheet, index, 9, ss.getAmount().toString()); Toolket.setCellValue(sheet, index, 10, Toolket.getAmountType(ss.getAmountType())); Toolket.setCellValue(sheet, index, 11, ss.getAmountDate() == null ? "" : df1.format(ss.getAmountDate())); Toolket.setCellValue(sheet, index, 12, ss.getLicenseNo()); Toolket.setCellValue(sheet, index, 13, df.format(ss.getLicenseValidDate())); if (StringUtils.isBlank(ss.getCscode())) { csno = cm.findCourseInfoByCscode(ss.getCscode()); if (csno != null) Toolket.setCellValue(sheet, index, 14, csno.getChiName().trim()); } else Toolket.setCellValue(sheet, index, 14, ""); if (StringUtils.isBlank(ss.getTechIdno())) { empl = mm.findEmplByIdno(ss.getTechIdno()); if (empl != null) Toolket.setCellValue(sheet, index, 15, empl.getEname().trim()); else { dempl = mm.findDEmplByIdno(ss.getTechIdno()); if (dempl != null) Toolket.setCellValue(sheet, index, 15, dempl.getEname().trim()); } } else Toolket.setCellValue(sheet, index, 15, ""); Toolket.setCellValue(sheet, index, 16, ss.getSerialNo()); Toolket.setCellValue(sheet, index, 17, Toolket.getCustomNo(ss.getCustomNo())); Toolket.setCellValue(sheet, index++, 18, Toolket.getPass(ss.getPass())); } 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, "StdSkillList.xls"); FileOutputStream fos = new FileOutputStream(output); workbook.write(fos); fos.close(); JasperReportUtils.printXlsToFrontEnd(response, output); output.delete(); tempDir.delete(); } /** * ? * * @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(); } /** * * * @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 printRegisterManagerList(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); DynaActionForm aForm = (DynaActionForm) form; ServletContext context = request.getSession().getServletContext(); String year = aForm.getStrings("year")[0]; String campusCode = aForm.getString("campusCode"); String schoolType = aForm.getString("schoolType"); String hql = "SELECT r.*, s.*, r.idno AS id " + "FROM Register r LEFT JOIN stmd s ON r.idno = s.idno " + "WHERE r.schoolYear = ? AND r.schoolTerm = ? " + "AND r.campusCode = ? AND r.schoolType = ? " + "ORDER BY realClassNo"; List<Map> ret = am.findBySQL(hql, new Object[] { year, sterm, campusCode, schoolType }); File templateXLS = new File(context.getRealPath("/WEB-INF/reports/RegisterManagerList.xls")); HSSFWorkbook workbook = Toolket.getHSSFWorkbook(templateXLS); HSSFSheet sheet = workbook.getSheetAt(0); Toolket.setCellValue(sheet, 0, 0, "?" + year + "" + sterm + ""); int index = 2; DateFormat df = new SimpleDateFormat("yyyy/MM/dd"); if (!ret.isEmpty()) { Graduate graduate = null; for (Map obj : ret) { Toolket.setCellValue(sheet, index, 0, (String) obj.get("studentName")); Toolket.setCellValue(sheet, index, 1, StringUtils.trimToEmpty((String) obj.get("realClassNo"))); Toolket.setCellValue(sheet, index, 2, StringUtils.trimToEmpty(StringUtils.trimToEmpty((String) obj.get("realStudentNo")))); Toolket.setCellValue(sheet, index, 3, StringUtils.trimToEmpty((String) obj.get("virClassNo"))); Toolket.setCellValue(sheet, index, 4, StringUtils.trimToEmpty((String) obj.get("virStudentNo"))); Toolket.setCellValue(sheet, index, 5, ((Integer) obj.get("tuitionFee")).toString()); Toolket.setCellValue(sheet, index, 6, (String) obj.get("tuitionAccountNo")); Toolket.setCellValue(sheet, index, 7, ((Integer) obj.get("tuitionAmount")).toString()); Toolket.setCellValue(sheet, index, 8, obj.get("tuitionDate") == null ? "" : df.format((Date) obj.get("tuitionDate"))); Toolket.setCellValue(sheet, index, 9, ((Integer) obj.get("agencyFee")).toString()); Toolket.setCellValue(sheet, index, 10, (String) obj.get("agencyAccountNo")); Toolket.setCellValue(sheet, index, 11, ((Integer) obj.get("agencyAmount")).toString()); Toolket.setCellValue(sheet, index, 12, obj.get("agencyDate") == null ? "" : df.format((Date) obj.get("agencyDate"))); Toolket.setCellValue(sheet, index, 13, ((Integer) obj.get("reliefTuitionAmount")).toString()); Toolket.setCellValue(sheet, index, 14, ((Integer) obj.get("loanAmount")).toString()); Toolket.setCellValue(sheet, index, 15, ((Integer) obj.get("vulnerableAmount")).toString()); Toolket.setCellValue(sheet, index, 16, (String) obj.get("newStudentReg")); Toolket.setCellValue(sheet, index, 17, (String) obj.get("isRegist")); if (obj.get("depart_class") == null) { graduate = mm.findGraduateByIdno(((String) obj.get("id")).toUpperCase().trim()); if (graduate != null) Toolket.setCellValue(sheet, index, 18, Toolket.getStatus(graduate.getOccurStatus(), true)); } index++; } } 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, "RegisterManagerList.xls"); FileOutputStream fos = new FileOutputStream(output); workbook.write(fos); fos.close(); JasperReportUtils.printXlsToFrontEnd(response, output); output.delete(); tempDir.delete(); } /** * (?) * * @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 */ private void printUploadNewStmdTemplate(ActionMapping mapping, DynaActionForm form, HttpServletRequest request, HttpServletResponse response, String sterm) throws Exception { HttpSession session = request.getSession(false); ServletContext context = request.getSession().getServletContext(); File templateXLS = new File(context.getRealPath("/WEB-INF/reports/UploadNewStmdTemplate.xls")); HSSFWorkbook workbook = Toolket.getHSSFWorkbook(templateXLS); 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, "UploadNewStmdTemplate.xls"); FileOutputStream fos = new FileOutputStream(output); workbook.write(fos); fos.close(); JasperReportUtils.printXlsToFrontEnd(response, output); output.delete(); tempDir.delete(); } /** * (?) * * @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 */ private void printUploadNewStmdTemplate1(ActionMapping mapping, DynaActionForm form, HttpServletRequest request, HttpServletResponse response, String sterm) throws Exception { HttpSession session = request.getSession(false); ServletContext context = request.getSession().getServletContext(); File templateXLS = new File(context.getRealPath("/WEB-INF/reports/UploadNewStmdTemplate1.xls")); HSSFWorkbook workbook = Toolket.getHSSFWorkbook(templateXLS); 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, "UploadNewStmdTemplate1.xls"); FileOutputStream fos = new FileOutputStream(output); workbook.write(fos); fos.close(); JasperReportUtils.printXlsToFrontEnd(response, output); output.delete(); tempDir.delete(); } @Override protected Map<String, String> getKeyMethodMap() { Map<String, String> map = new HashMap<String, String>(); map.put("preview", "printReport"); return map; } private String processClassInfo(DynaActionForm form) { String campusInCharge2 = (String) form.get("campusInCharge2"); String schoolInCharge2 = (String) form.get("schoolInCharge2"); String deptInCharge2 = (String) form.get("deptInCharge2"); String departClass = (String) form.get("classInCharge2"); schoolInCharge2 = schoolInCharge2.equalsIgnoreCase("All") ? "" : schoolInCharge2; deptInCharge2 = deptInCharge2.equalsIgnoreCase("All") ? "" : deptInCharge2; departClass = departClass.equalsIgnoreCase("All") ? "" : departClass; return departClass.length() == 6 ? departClass : campusInCharge2 + schoolInCharge2 + deptInCharge2; } private String printNativeDate(String date) { return String.valueOf(Integer.parseInt(StringUtils.substring(date, 0, 4)) - Global.NativeYearBase) + StringUtils.substring(date, 4).replaceAll("0", ""); } }