diff --git a/src/main/java/com/jevon/controller/LearnController.java b/src/main/java/com/jevon/controller/LearnController.java index d882538..b0b85a5 100644 --- a/src/main/java/com/jevon/controller/LearnController.java +++ b/src/main/java/com/jevon/controller/LearnController.java @@ -173,8 +173,9 @@ public class LearnController { int dimensionalId = 0 ; if(result == null || result.getId() == 0){ dimensional.setCreateTime(new Date()); - dimensionalId = dimensionalService.insert(dimensional); - }else { + dimensionalService.insert(dimensional); + dimensionalId = dimensional.getId(); + }else{ dimensionalId = result.getId(); } AnalyseDimensional analyseDimensional = new AnalyseDimensional(); @@ -200,6 +201,11 @@ public class LearnController { private void analysisScoreExcel(InitAnalyseReqVo initAnalyseReqVo){ try{ Analyse analyse = analyseService.selectById(initAnalyseReqVo.getAnalyseId()); + List analyseDetails = analyseDetailService.selectByAnalyseId(analyse.getId()); + Map scoreMap = new HashMap<>(); + for(AnalyseDetail analyseDetail : analyseDetails){ + scoreMap.put(analyseDetail.getQuestionNumber(),analyseDetail.getScore()); + } String fileUrl = initAnalyseReqVo.getUrl(); File excelFile = new File(fileUrl); // 获得工作簿 @@ -218,6 +224,7 @@ public class LearnController { Date date = new Date(); int rows = sheet.getPhysicalNumberOfRows(); Map map = new HashMap<>(); + int column = 0 ; for (int i = 0; i < rows; i++) { // 获取第i行数据 Row sheetRow = sheet.getRow(i); @@ -232,6 +239,7 @@ public class LearnController { map.put(j,cell.getStringCellValue().trim()); j++; } + column = j ; } else { ScoreExcelVo scoreExcelVo = new ScoreExcelVo(sheetRow); if(StringUtils.isNotBlank(scoreExcelVo.getStudentName())){ @@ -239,16 +247,21 @@ public class LearnController { student.setAnalyseId(analyse.getId()); student.setCreateTime(date); students.add(student); - int j = 7 ; - while (sheetRow.getCell(j) != null){ + for(int j = 7 ; j < column ; j++){ Cell cell = sheetRow.getCell(j); StudentDetail studentDetail = new StudentDetail(scoreExcelVo); studentDetail.setAnalyseId(analyse.getId()); studentDetail.setExamNumber(map.get(j)); studentDetail.setScore(new Double(cell.getNumericCellValue())); + Double score = scoreMap.get((map.get(j))) ; + Double studentScore = studentDetail.getScore() ; + if(Double.doubleToLongBits(score) == Double.doubleToLongBits(studentScore) ){ + studentDetail.setCorrect(1); + }else { + studentDetail.setCorrect(0); + } studentDetail.setCreateTime(date); studentDetails.add(studentDetail); - j++; } } } diff --git a/src/main/java/com/jevon/controller/LearnStatController.java b/src/main/java/com/jevon/controller/LearnStatController.java index 54fe9cc..3beedbd 100644 --- a/src/main/java/com/jevon/controller/LearnStatController.java +++ b/src/main/java/com/jevon/controller/LearnStatController.java @@ -453,14 +453,14 @@ public class LearnStatController { from5.setLeagueAvg(leagueSumScore / new Double(leagueStudents.size())); from5.setSchoolAvg(schoolSumScore / new Double(students.size())); - int allHigh = studentDetailService.selectTrueByExamNumber(analyse.getId(),null,null ,analyseDetail.getQuestionNumber(),allHighStudent,analyseDetail.getScore()); - int allLow = studentDetailService.selectTrueByExamNumber(analyse.getId(),null,null ,analyseDetail.getQuestionNumber(),allLowStudent,analyseDetail.getScore()); + int allHigh = studentDetailService.selectTrueByExamNumber(analyse.getId(),null,null ,analyseDetail.getQuestionNumber(),allHighStudent); + int allLow = studentDetailService.selectTrueByExamNumber(analyse.getId(),null,null ,analyseDetail.getQuestionNumber(),allLowStudent); - int leagueHigh = studentDetailService.selectTrueByExamNumber(analyse.getId(),leagues,null ,analyseDetail.getQuestionNumber(),allHighStudent,analyseDetail.getScore()); - int leagueLow = studentDetailService.selectTrueByExamNumber(analyse.getId(),leagues,null ,analyseDetail.getQuestionNumber(),allLowStudent,analyseDetail.getScore()); + int leagueHigh = studentDetailService.selectTrueByExamNumber(analyse.getId(),leagues,null ,analyseDetail.getQuestionNumber(),allHighStudent); + int leagueLow = studentDetailService.selectTrueByExamNumber(analyse.getId(),leagues,null ,analyseDetail.getQuestionNumber(),allLowStudent); - int high = studentDetailService.selectTrueByExamNumber(analyse.getId(),null,getLearnReqVo.getSchoolName() ,analyseDetail.getQuestionNumber(),highStudent,analyseDetail.getScore()); - int low = studentDetailService.selectTrueByExamNumber(analyse.getId(),null,getLearnReqVo.getSchoolName() ,analyseDetail.getQuestionNumber(),lowStudent,analyseDetail.getScore()); + int high = studentDetailService.selectTrueByExamNumber(analyse.getId(),null,getLearnReqVo.getSchoolName() ,analyseDetail.getQuestionNumber(),highStudent); + int low = studentDetailService.selectTrueByExamNumber(analyse.getId(),null,getLearnReqVo.getSchoolName() ,analyseDetail.getQuestionNumber(),lowStudent); from5.setAllDist(new Double(allHigh-allLow)/new Double(allNumber)); from5.setLeagueDist(new Double(leagueHigh-leagueLow)/new Double(leagueNumber)); from5.setSchoolDist(new Double(high-low)/new Double(number)); @@ -597,24 +597,25 @@ public class LearnStatController { form6.setDimensional(dimensional.getDimensionalName()); List analyseDimensionals = analyseDimensionalService.selectByDimensional(analyse.getId(),dimensional.getId()); Double score = 0d; - Double allSumScore = 0d , leagueSumScore = 0d , schoolSumScore = 0d ; - int allHigh = 0 , allLow = 0 , leagueHigh = 0 , leagueLow = 0 , high = 0 , low = 0 ; StringBuffer examNumber = new StringBuffer(); + List examNumberList = new ArrayList<>(); for(AnalyseDimensional analyseDimensional :analyseDimensionals){ score = score + analyseDimensional.getScore() ; - allSumScore = allSumScore + studentDetailService.selectSumScore(analyse.getId(),null,null,analyseDimensional.getQuestionNumber()); - allHigh = allHigh + studentDetailService.selectTrueByExamNumber(analyse.getId(),null,null ,analyseDimensional.getQuestionNumber(),allHighStudent,analyseDimensional.getScore()); - allLow = allLow + studentDetailService.selectTrueByExamNumber(analyse.getId(),null,null ,analyseDimensional.getQuestionNumber(),allLowStudent,analyseDimensional.getScore()); - - leagueSumScore = leagueSumScore + studentDetailService.selectSumScore(analyse.getId(),leagues,null,analyseDimensional.getQuestionNumber()); - leagueHigh = leagueHigh + studentDetailService.selectTrueByExamNumber(analyse.getId(),leagues,null ,analyseDimensional.getQuestionNumber(),allHighStudent,analyseDimensional.getScore()); - leagueLow = leagueLow + studentDetailService.selectTrueByExamNumber(analyse.getId(),leagues,null ,analyseDimensional.getQuestionNumber(),allLowStudent,analyseDimensional.getScore()); - - schoolSumScore = schoolSumScore + studentDetailService.selectSumScore(analyse.getId(),null,getLearnReqVo.getSchoolName(),analyseDimensional.getQuestionNumber()); - high = high + studentDetailService.selectTrueByExamNumber(analyse.getId(),null,getLearnReqVo.getSchoolName() ,analyseDimensional.getQuestionNumber(),highStudent,analyseDimensional.getScore()); - low = low + studentDetailService.selectTrueByExamNumber(analyse.getId(),null,getLearnReqVo.getSchoolName() ,analyseDimensional.getQuestionNumber(),lowStudent,analyseDimensional.getScore()); examNumber.append(analyseDimensional.getQuestionNumber()).append(","); + examNumberList.add(analyseDimensional.getQuestionNumber()); } + Double allSumScore = studentDetailService.selectSumScore(analyse.getId(),null,null,examNumberList); + int allHigh = studentDetailService.selectTrueByExamNumber(analyse.getId(),null,null ,examNumberList,allHighStudent); + int allLow = studentDetailService.selectTrueByExamNumber(analyse.getId(),null,null ,examNumberList,allLowStudent); + + Double leagueSumScore = studentDetailService.selectSumScore(analyse.getId(),leagues,null,examNumberList); + int leagueHigh = studentDetailService.selectTrueByExamNumber(analyse.getId(),leagues,null ,examNumberList,allHighStudent); + int leagueLow = studentDetailService.selectTrueByExamNumber(analyse.getId(),leagues,null ,examNumberList,allLowStudent); + + Double schoolSumScore = studentDetailService.selectSumScore(analyse.getId(),null,getLearnReqVo.getSchoolName(),examNumberList); + int high = studentDetailService.selectTrueByExamNumber(analyse.getId(),null,getLearnReqVo.getSchoolName() ,examNumberList,highStudent); + int low = studentDetailService.selectTrueByExamNumber(analyse.getId(),null,getLearnReqVo.getSchoolName() ,examNumberList,lowStudent); + form6.setScore(score); form6.setAllRate(allSumScore / new Double(allStudents.size()) / score ); form6.setLeagueRate(leagueSumScore / new Double(leagueStudents.size()) / score ); diff --git a/src/main/java/com/jevon/model/StudentDetail.java b/src/main/java/com/jevon/model/StudentDetail.java index e7c0538..2b31982 100644 --- a/src/main/java/com/jevon/model/StudentDetail.java +++ b/src/main/java/com/jevon/model/StudentDetail.java @@ -22,10 +22,12 @@ public class StudentDetail { private String examNumber ; private Double score ; private Date createTime ; + private int correct ; //1 正确 0 错误 //查询用 高分段 低分段学生考号 private List studentNumbers ; private List schoolNames ; + private List examNumbers ; public StudentDetail(ScoreExcelVo scoreExcelVo) { this.schoolName = scoreExcelVo.getSchoolName(); @@ -132,4 +134,20 @@ public class StudentDetail { public void setSchoolNames(List schoolNames) { this.schoolNames = schoolNames; } + + public List getExamNumbers() { + return examNumbers; + } + + public void setExamNumbers(List examNumbers) { + this.examNumbers = examNumbers; + } + + public int getCorrect() { + return correct; + } + + public void setCorrect(int correct) { + this.correct = correct; + } } diff --git a/src/main/java/com/jevon/service/StudentDetailService.java b/src/main/java/com/jevon/service/StudentDetailService.java index 6829947..f8740a1 100644 --- a/src/main/java/com/jevon/service/StudentDetailService.java +++ b/src/main/java/com/jevon/service/StudentDetailService.java @@ -15,5 +15,10 @@ public interface StudentDetailService { Double selectSumScore(int analyseId, List league , String schoolName, String examNumber); - int selectTrueByExamNumber(int analyseId , List league , String schoolName , String examNumber , List studentNumbers ,Double score); + Double selectSumScore(int analyseId, List league , String schoolName, List examNumbers); + + int selectTrueByExamNumber(int analyseId , List league , String schoolName , String examNumber , List studentNumbers); + + int selectTrueByExamNumber(int analyseId , List league , String schoolName , List examNumbers , List studentNumbers); + } diff --git a/src/main/java/com/jevon/service/impl/StudentDetailServiceImpl.java b/src/main/java/com/jevon/service/impl/StudentDetailServiceImpl.java index 75cb467..1529e3b 100644 --- a/src/main/java/com/jevon/service/impl/StudentDetailServiceImpl.java +++ b/src/main/java/com/jevon/service/impl/StudentDetailServiceImpl.java @@ -47,12 +47,32 @@ public class StudentDetailServiceImpl implements StudentDetailService { } @Override - public int selectTrueByExamNumber(int analyseId,List league , String schoolName, String examNumber, List studentNumbers , Double score) { + public Double selectSumScore(int analyseId, List league, String schoolName, List examNumbers) { + StudentDetail studentDetail = new StudentDetail(); + studentDetail.setAnalyseId(analyseId); + studentDetail.setSchoolName(schoolName); + studentDetail.setExamNumbers(examNumbers); + studentDetail.setSchoolNames(league); + return studentDetailMapper.selectSumScore(studentDetail); + } + + @Override + public int selectTrueByExamNumber(int analyseId,List league , String schoolName, String examNumber, List studentNumbers) { StudentDetail studentDetail = new StudentDetail(); studentDetail.setAnalyseId(analyseId); studentDetail.setSchoolName(schoolName); studentDetail.setExamNumber(examNumber); - studentDetail.setScore(score); + studentDetail.setStudentNumbers(studentNumbers); + studentDetail.setSchoolNames(league); + return studentDetailMapper.selectTrueByExamNumber(studentDetail); + } + + @Override + public int selectTrueByExamNumber(int analyseId, List league, String schoolName, List examNumbers, List studentNumbers) { + StudentDetail studentDetail = new StudentDetail(); + studentDetail.setAnalyseId(analyseId); + studentDetail.setSchoolName(schoolName); + studentDetail.setExamNumbers(examNumbers); studentDetail.setStudentNumbers(studentNumbers); studentDetail.setSchoolNames(league); return studentDetailMapper.selectTrueByExamNumber(studentDetail); diff --git a/src/main/resources/mapping/StudentDetailMapper.xml b/src/main/resources/mapping/StudentDetailMapper.xml index 31b2ae4..19e8b93 100644 --- a/src/main/resources/mapping/StudentDetailMapper.xml +++ b/src/main/resources/mapping/StudentDetailMapper.xml @@ -12,15 +12,16 @@ + insert into sz_learn_student_detail (school_name, class_name,student_name, - student_number,analyse_id,exam_number,score,create_time) + student_number,analyse_id,exam_number,score,create_time,correct) values (#{emp.schoolName},#{emp.className},#{emp.studentName}, - #{emp.studentNumber},#{emp.analyseId},#{emp.examNumber},#{emp.score},#{emp.createTime}) + #{emp.studentNumber},#{emp.analyseId},#{emp.examNumber},#{emp.score},#{emp.createTime},#{emp.correct}) @@ -42,6 +43,12 @@ #{item} + + AND exam_number IN + + #{item} + + @@ -57,9 +64,6 @@ and exam_number = #{examNumber} - - and score = #{score} - AND student_number IN @@ -72,7 +76,14 @@ #{item} + + AND exam_number IN + + #{item} + + + and correct = 1 \ No newline at end of file -- libgit2 0.21.0