diff --git a/src/main/java/com/key/dwsurvey/service/impl/SurveyAnswerManagerImpl.java b/src/main/java/com/key/dwsurvey/service/impl/SurveyAnswerManagerImpl.java index 683c4f8..df928b1 100755 --- a/src/main/java/com/key/dwsurvey/service/impl/SurveyAnswerManagerImpl.java +++ b/src/main/java/com/key/dwsurvey/service/impl/SurveyAnswerManagerImpl.java @@ -116,7 +116,7 @@ public class SurveyAnswerManagerImpl extends @Override public void saveAnswer(SurveyAnswer surveyAnswer, - Map> quMaps) { + Map> quMaps) { surveyAnswerDao.saveAnswer(surveyAnswer, quMaps); } @@ -133,7 +133,7 @@ public class SurveyAnswerManagerImpl extends /** * 取问卷值方式 - * + * * @param surveyAnswerId * @param question * @return @@ -143,19 +143,35 @@ public class SurveyAnswerManagerImpl extends String quId = question.getId(); // 查询每一题的答案,如果是主观题,则判断是否答对 QuType quType = question.getQuType(); + + //重置导出 + question.setAnAnswer(new AnAnswer()); + question.setAnCheckboxs(new ArrayList()); + question.setAnDFillblanks(new ArrayList()); + question.setAnEnumqus(new ArrayList()); + question.setAnFillblank(new AnFillblank()); + question.setAnRadio(new AnRadio()); + question.setAnYesno(new AnYesno()); + question.setAnScores(new ArrayList()); + question.setAnChenRadios(new ArrayList()); + question.setAnChenCheckboxs(new ArrayList()); + question.setAnChenFbks(new ArrayList()); + question.setAnCompChenRadios(new ArrayList()); + question.setAnChenScores(new ArrayList()); + if (quType == QuType.YESNO) {// 是非题答案 AnYesno anYesno = anYesnoManager.findAnswer(surveyAnswerId, quId); if (anYesno != null) { question.setAnYesno(anYesno); } } else if (quType == QuType.RADIO || quType == QuType.COMPRADIO) {// 单选题答案 - // 复合 + // 复合 AnRadio anRadio = anRadioManager.findAnswer(surveyAnswerId, quId); if (anRadio != null) { question.setAnRadio(anRadio); } } else if (quType == QuType.CHECKBOX || quType == QuType.COMPCHECKBOX) {// 多选题答案 - // 复合 + // 复合 List anCheckboxs = anCheckboxManager.findAnswer( surveyAnswerId, quId); if (anCheckboxs != null) { @@ -182,10 +198,10 @@ public class SurveyAnswerManagerImpl extends question.setAnAnswer(anAnswer); } } else if (quType == QuType.BIGQU) {// 大题答案 - // List childQuestions=question.getQuestions(); - // for (Question childQuestion : childQuestions) { - // score=getquestionAnswer(surveyAnswerId, childQuestion); - // } + // List childQuestions=question.getQuestions(); + // for (Question childQuestion : childQuestions) { + // score=getquestionAnswer(surveyAnswerId, childQuestion); + // } } else if (quType == QuType.ENUMQU) { List anEnumqus = anEnumquManager.findAnswer( surveyAnswerId, quId); @@ -261,56 +277,44 @@ public class SurveyAnswerManagerImpl extends criterionIp); return answers; } - - + + @Override public String exportXLS(String surveyId, String savePath) { String basepath = surveyId + ""; String urlPath = "/file/" + basepath + "/";// 下载所用的地址 String path = urlPath.replace("/", File.separator);// 文件系统路径 - // File.separator + - // "file" + - // File.separator+basepath - // + File.separator; + // File.separator + + // "file" + + // File.separator+basepath + // + File.separator; savePath = savePath + path; File file = new File(savePath); if (!file.exists()) file.mkdirs(); - + SurveyDirectory surveyDirectory = directoryManager.getSurvey(surveyId); String fileName = surveyId + "_exportSurvey.xls"; XLSExportUtil exportUtil = new XLSExportUtil(fileName, savePath); - - List filters = new ArrayList(); - filters.add(new PropertyFilter("EQS_surveyId", surveyId)); + Criterion cri1 = Restrictions.eq("surveyId",surveyId); Page page = new Page(); - page.setPageSize(100); + page.setPageSize(5000); try { - - page = findPage(page, filters); + page = findPage(page,cri1); int totalPage = page.getTotalPage(); List answers = page.getResult(); - - // 得到题列表 - List questions = questionManager.findDetails(surveyId, - "2"); + List questions = questionManager.findDetails(surveyId,"2"); exportXLSTitle(exportUtil, questions); - - for (int i = 1; i <= totalPage; i++) { - for (int j = 0; j < answers.size(); j++) { - SurveyAnswer surveyAnswer = answers.get(j); - String surveyAnswerId = surveyAnswer.getId(); - exportUtil.createRow((j + 1) + ((i - 1) * 100)); - exportXLSRow(exportUtil, surveyAnswerId, questions, surveyAnswer); - } - page.setPageNo(i); - page = findPage(page, filters); - answers = page.getResult(); + int answerListSize = answers.size(); + for (int j = 0; j < answerListSize; j++) { + SurveyAnswer surveyAnswer = answers.get(j); + String surveyAnswerId = surveyAnswer.getId(); + exportUtil.createRow(j+1); + exportXLSRow(exportUtil, surveyAnswerId, questions, surveyAnswer); + System.out.println(j+1+"/"+answerListSize); } - exportUtil.exportXLS(); - } catch (Exception e) { e.printStackTrace(); } @@ -319,13 +323,9 @@ public class SurveyAnswerManagerImpl extends private void exportXLSRow(XLSExportUtil exportUtil,String surveyAnswerId, List questions,SurveyAnswer surveyAnswer) { int cellIndex = 0; - for (Question question : questions) { - // 遍历每一题 getquestionAnswer(surveyAnswerId, question); - // exportUtil.setCell(index, value); QuType quType = question.getQuType(); - String quName = question.getQuName(); String titleName = quType.getCnName(); if (quType == QuType.YESNO) {// 是非题 @@ -350,6 +350,7 @@ public class SurveyAnswerManagerImpl extends } } answerOptionName=HtmlUtil.removeTagFromText(answerOptionName); + answerOptionName = answerOptionName.replace(" "," "); exportUtil.setCell(cellIndex++, answerOptionName); } else if (quType == QuType.CHECKBOX) {// 多选题 List anCheckboxs=question.getAnCheckboxs(); @@ -366,17 +367,15 @@ public class SurveyAnswerManagerImpl extends } } answerOptionName=HtmlUtil.removeTagFromText(answerOptionName); + answerOptionName = answerOptionName.replace(" "," "); exportUtil.setCell(cellIndex++, answerOptionName); } } else if (quType == QuType.FILLBLANK) {// 填空题 AnFillblank anFillblank=question.getAnFillblank(); - exportUtil.setCell(cellIndex++, anFillblank.getAnswer()); } else if (quType == QuType.ANSWER) {// 多行填空题 AnAnswer anAnswer=question.getAnAnswer(); - exportUtil.setCell(cellIndex++, anAnswer.getAnswer()); -// exportUtil.setCell(cellIndex++, titleName); } else if (quType == QuType.COMPRADIO) {// 复合单选题 AnRadio anRadio=question.getAnRadio(); String quItemId = anRadio.getQuItemId(); @@ -393,6 +392,7 @@ public class SurveyAnswerManagerImpl extends } answerOptionName=HtmlUtil.removeTagFromText(answerOptionName); answerOtherText=HtmlUtil.removeTagFromText(answerOtherText); + answerOptionName = answerOptionName.replace(" "," "); exportUtil.setCell(cellIndex++, answerOptionName); exportUtil.setCell(cellIndex++, answerOtherText); } else if (quType == QuType.COMPCHECKBOX) {// 复合多选题 @@ -411,15 +411,14 @@ public class SurveyAnswerManagerImpl extends break; } } - answerOptionName=HtmlUtil.removeTagFromText(answerOptionName); + answerOptionName = answerOptionName.replace(" "," "); exportUtil.setCell(cellIndex++, answerOptionName); if(1==quCheckbox.getIsNote()){ answerOtherText=HtmlUtil.removeTagFromText(answerOtherText); - exportUtil.setCell(cellIndex++, answerOtherText); + exportUtil.setCell(cellIndex++, answerOtherText); } } - } else if (quType == QuType.ENUMQU) {// 枚举题 List anEnumqus=question.getAnEnumqus(); int enumNum = question.getParamInt01(); @@ -445,6 +444,7 @@ public class SurveyAnswerManagerImpl extends break; } } + answerOptionName = answerOptionName.replace(" "," "); exportUtil.setCell(cellIndex++, answerOptionName); } } else if (quType == QuType.SCORE) {// 评分题 @@ -484,11 +484,11 @@ public class SurveyAnswerManagerImpl extends break; } } - answerColOptionName=HtmlUtil.removeTagFromText(answerColOptionName); + answerColOptionName = answerColOptionName.replace(" "," "); exportUtil.setCell(cellIndex++, answerColOptionName); } - } else if (quType == QuType.CHENCHECKBOX) {// 矩阵多选题 + } else if (quType == QuType.CHENCHECKBOX) { List quChenRows = question.getRows(); List quChenColumns = question.getColumns(); List anChenCheckboxs = question.getAnChenCheckboxs(); @@ -506,10 +506,11 @@ public class SurveyAnswerManagerImpl extends } } answerOptionName=HtmlUtil.removeTagFromText(answerOptionName); + answerOptionName = answerOptionName.replace(" "," "); exportUtil.setCell(cellIndex++, answerOptionName); } } - } else if (quType == QuType.COMPCHENRADIO) {// 复合矩阵单选题 + } else if (quType == QuType.COMPCHENRADIO) { List quChenRows = question.getRows(); List quChenColumns = question.getColumns(); List quChenOptions = question.getOptions(); @@ -539,25 +540,26 @@ public class SurveyAnswerManagerImpl extends } } answerOptionName=HtmlUtil.removeTagFromText(answerOptionName); + answerOptionName = answerOptionName.replace(" "," "); exportUtil.setCell(cellIndex++, answerOptionName); } } } } - + exportUtil.setCell(cellIndex++, surveyAnswer.getIpAddr()); exportUtil.setCell(cellIndex++, surveyAnswer.getCity()); exportUtil.setCell(cellIndex++, new SimpleDateFormat("yyyy年MM月dd日 HH时mm分ss秒").format(surveyAnswer.getEndAnDate())); - - + + } private void exportXLSTitle(XLSExportUtil exportUtil, - List questions) { + List questions) { exportUtil.createRow(0); int cellIndex = 0; - - + + int quNum=0; for (Question question : questions) { quNum++; @@ -575,7 +577,7 @@ public class SurveyAnswerManagerImpl extends List checkboxs = question.getQuCheckboxs(); for (QuCheckbox quCheckbox : checkboxs) { String optionName = quCheckbox.getOptionName(); - + optionName=HtmlUtil.removeTagFromText(optionName); exportUtil.setCell(cellIndex++,titleName+ "-"+optionName ); } @@ -610,7 +612,7 @@ public class SurveyAnswerManagerImpl extends .getQuMultiFillblanks(); for (QuMultiFillblank quMultiFillblank : quMultiFillblanks) { String optionName = quMultiFillblank.getOptionName(); - + optionName=HtmlUtil.removeTagFromText(optionName); exportUtil.setCell(cellIndex++, titleName + "-" + optionName); @@ -657,11 +659,11 @@ public class SurveyAnswerManagerImpl extends } } } - + exportUtil.setCell(cellIndex++, "回答者IP"); exportUtil.setCell(cellIndex++, "IP所在地"); exportUtil.setCell(cellIndex++, "回答时间"); - + } public void writeToXLS() { @@ -688,7 +690,7 @@ public class SurveyAnswerManagerImpl extends } return page; } - + /** * 取一份卷子回答的数据 */ @@ -700,8 +702,8 @@ public class SurveyAnswerManagerImpl extends page=findPage(page, cri1, cri2); return page; } - - + + @Override @Transactional public void delete(SurveyAnswer t) { @@ -717,7 +719,7 @@ public class SurveyAnswerManagerImpl extends QuType quType = question.getQuType(); if (quType == QuType.YESNO) {// 是非题 - + } else if (quType == QuType.RADIO) {// 单选题 AnRadio anRadio=anRadioManager.findAnswer(belongAnswerId, quId); if(anRadio!=null){ @@ -742,21 +744,21 @@ public class SurveyAnswerManagerImpl extends anFillblankManager.save(anFillblank); } } else if (quType == QuType.ANSWER) {// 多行填空题 - + AnAnswer anAnswer=anAnswerManager.findAnswer(belongAnswerId, quId); if(anAnswer!=null){ anAnswer.setVisibility(0); //是否显示 1显示 0不显示 anAnswerManager.save(anAnswer); } - + } else if (quType == QuType.COMPRADIO) {// 复合单选题 - + } else if (quType == QuType.COMPCHECKBOX) {// 复合多选题 - + } else if (quType == QuType.ENUMQU) {// 枚举题 - + } else if (quType == QuType.MULTIFILLBLANK) {// 组合填空题 List anDFillblanks=anDFillblankManager.findAnswer(belongAnswerId, quId); if(anDFillblanks!=null){ @@ -767,7 +769,7 @@ public class SurveyAnswerManagerImpl extends } } } else if (quType == QuType.SCORE) {// 评分题 - + List anScores=anScoreManager.findAnswer(belongAnswerId, quId); if(anScores!=null){ for (AnScore anScore : anScores) { @@ -775,11 +777,11 @@ public class SurveyAnswerManagerImpl extends //是否显示 1显示 0不显示 anScoreManager.save(anScore); } - + } - + } else if (quType == QuType.CHENRADIO) {// 矩阵单选题 - + List anChenRadios=anChenRadioManager.findAnswer(belongAnswerId, quId); if(anChenRadios!=null){ for (AnChenRadio anChenRadio : anChenRadios) { @@ -788,9 +790,9 @@ public class SurveyAnswerManagerImpl extends anChenRadioManager.save(anChenRadio); } } - + } else if (quType == QuType.CHENCHECKBOX) {// 矩阵多选题 - + List anChenCheckboxs=anChenCheckboxManager.findAnswer(belongAnswerId, quId); if(anChenCheckboxs!=null){ for (AnChenCheckbox anChenCheckbox : anChenCheckboxs) { @@ -798,13 +800,13 @@ public class SurveyAnswerManagerImpl extends //是否显示 1显示 0不显示 anChenCheckboxManager.save(anChenCheckbox); } - + } - + } else if (quType == QuType.COMPCHENRADIO) {// 复合矩阵单选题 - + } else if (quType == QuType.CHENSCORE) {// 矩阵评分 - + List anChenScores=anChenScoreManager.findAnswer(belongAnswerId, quId); if(anChenScores!=null){ for (AnChenScore anChenScore : anChenScores) { @@ -813,8 +815,8 @@ public class SurveyAnswerManagerImpl extends anChenScoreManager.save(anChenScore); } } - } - + } + } } super.delete(t);