|
@@ -1,5 +1,19 @@
|
|
|
package cn.com.qmth.stmms.biz.report.service.impl;
|
|
|
|
|
|
+import java.util.LinkedList;
|
|
|
+import java.util.List;
|
|
|
+
|
|
|
+import javax.persistence.criteria.CriteriaBuilder;
|
|
|
+import javax.persistence.criteria.CriteriaQuery;
|
|
|
+import javax.persistence.criteria.Predicate;
|
|
|
+import javax.persistence.criteria.Root;
|
|
|
+
|
|
|
+import org.apache.commons.lang.StringUtils;
|
|
|
+import org.springframework.beans.factory.annotation.Autowired;
|
|
|
+import org.springframework.data.jpa.domain.Specification;
|
|
|
+import org.springframework.stereotype.Service;
|
|
|
+import org.springframework.transaction.annotation.Transactional;
|
|
|
+
|
|
|
import cn.com.qmth.stmms.biz.common.BaseQueryService;
|
|
|
import cn.com.qmth.stmms.biz.exam.dao.ExamSubjectDao;
|
|
|
import cn.com.qmth.stmms.biz.exam.model.ExamSubject;
|
|
@@ -10,20 +24,6 @@ import cn.com.qmth.stmms.biz.report.query.ReportSubjectQuery;
|
|
|
import cn.com.qmth.stmms.biz.report.service.ReportSubjectTeacherClassService;
|
|
|
import cn.com.qmth.stmms.biz.utils.DoubleUtil;
|
|
|
|
|
|
-import org.apache.commons.lang.StringUtils;
|
|
|
-import org.springframework.beans.factory.annotation.Autowired;
|
|
|
-import org.springframework.data.jpa.domain.Specification;
|
|
|
-import org.springframework.stereotype.Service;
|
|
|
-import org.springframework.transaction.annotation.Transactional;
|
|
|
-
|
|
|
-import javax.persistence.criteria.CriteriaBuilder;
|
|
|
-import javax.persistence.criteria.CriteriaQuery;
|
|
|
-import javax.persistence.criteria.Predicate;
|
|
|
-import javax.persistence.criteria.Root;
|
|
|
-
|
|
|
-import java.util.LinkedList;
|
|
|
-import java.util.List;
|
|
|
-
|
|
|
/**
|
|
|
* 课程老师班级成绩 分析service实现
|
|
|
*
|
|
@@ -31,7 +31,8 @@ import java.util.List;
|
|
|
* @date 2019-04-17
|
|
|
*/
|
|
|
@Service
|
|
|
-public class ReportSubjectTeacherClassServiceImpl extends BaseQueryService<ReportSubjectTeacherClass> implements ReportSubjectTeacherClassService {
|
|
|
+public class ReportSubjectTeacherClassServiceImpl extends BaseQueryService<ReportSubjectTeacherClass> implements
|
|
|
+ ReportSubjectTeacherClassService {
|
|
|
|
|
|
@Autowired
|
|
|
private ReportSubjectTeacherClassDao reportSubjectTeacherClassDao;
|
|
@@ -50,25 +51,27 @@ public class ReportSubjectTeacherClassServiceImpl extends BaseQueryService<Repor
|
|
|
|
|
|
@Override
|
|
|
public List<ReportSubjectTeacherClass> findByQuery(final ReportSubjectQuery query) {
|
|
|
- List<ReportSubjectTeacherClass> result = reportSubjectTeacherClassDao.findAll(new Specification<ReportSubjectTeacherClass>() {
|
|
|
-
|
|
|
- @Override
|
|
|
- public Predicate toPredicate(Root<ReportSubjectTeacherClass> root, CriteriaQuery<?> cQuery, CriteriaBuilder cb) {
|
|
|
- List<Predicate> predicates = new LinkedList<Predicate>();
|
|
|
-
|
|
|
- if (query.getExamId() != null) {
|
|
|
- predicates.add(cb.equal(root.get("examId"), query.getExamId()));
|
|
|
- }
|
|
|
- if (StringUtils.isNotBlank(query.getSubjectCode())) {
|
|
|
- predicates.add(cb.equal(root.get("subjectCode"), query.getSubjectCode()));
|
|
|
- }
|
|
|
- if (StringUtils.isNotBlank(query.getTeacherName())) {
|
|
|
- predicates.add(cb.equal(root.get("teacherName"), query.getTeacherName()));
|
|
|
- }
|
|
|
- return predicates.isEmpty() ? cb.conjunction()
|
|
|
- : cb.and(predicates.toArray(new Predicate[predicates.size()]));
|
|
|
- }
|
|
|
- });
|
|
|
+ List<ReportSubjectTeacherClass> result = reportSubjectTeacherClassDao
|
|
|
+ .findAll(new Specification<ReportSubjectTeacherClass>() {
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public Predicate toPredicate(Root<ReportSubjectTeacherClass> root, CriteriaQuery<?> cQuery,
|
|
|
+ CriteriaBuilder cb) {
|
|
|
+ List<Predicate> predicates = new LinkedList<Predicate>();
|
|
|
+
|
|
|
+ if (query.getExamId() != null) {
|
|
|
+ predicates.add(cb.equal(root.get("examId"), query.getExamId()));
|
|
|
+ }
|
|
|
+ if (StringUtils.isNotBlank(query.getSubjectCode())) {
|
|
|
+ predicates.add(cb.equal(root.get("subjectCode"), query.getSubjectCode()));
|
|
|
+ }
|
|
|
+ if (StringUtils.isNotBlank(query.getTeacherName())) {
|
|
|
+ predicates.add(cb.equal(root.get("teacherName"), query.getTeacherName()));
|
|
|
+ }
|
|
|
+ return predicates.isEmpty() ? cb.conjunction() : cb.and(predicates
|
|
|
+ .toArray(new Predicate[predicates.size()]));
|
|
|
+ }
|
|
|
+ });
|
|
|
|
|
|
return result;
|
|
|
}
|
|
@@ -76,7 +79,8 @@ public class ReportSubjectTeacherClassServiceImpl extends BaseQueryService<Repor
|
|
|
@Override
|
|
|
public void saveReportSubjectTeacherClassData(Integer examId, String subjectCode) {
|
|
|
ExamSubject examSubject = examSubjectDao.findByExamIdAndCode(examId, subjectCode);
|
|
|
- List<Object[]> reportSubjectTeacherClassList = reportSubjectTeacherClassDao.queryReportSubjectTeacherClassData(examId, subjectCode);
|
|
|
+ List<Object[]> reportSubjectTeacherClassList = reportSubjectTeacherClassDao.queryReportSubjectTeacherClassData(
|
|
|
+ examId, subjectCode);
|
|
|
Double subjectAvgScore = reportSubjectDao.querySubjectAvgScore(examId, subjectCode);
|
|
|
for (Object[] rs : reportSubjectTeacherClassList) {
|
|
|
ReportSubjectTeacherClass teacherClass = new ReportSubjectTeacherClass();
|
|
@@ -91,9 +95,11 @@ public class ReportSubjectTeacherClassServiceImpl extends BaseQueryService<Repor
|
|
|
teacherClass.setMaxScore(Double.parseDouble(rs[5].toString()));
|
|
|
teacherClass.setMinScore(Double.parseDouble(rs[6].toString()));
|
|
|
teacherClass.setPassRate(DoubleUtil.div(teacherClass.getPassCount(), teacherClass.getRealityCount(), 2));
|
|
|
- teacherClass.setExcellentRate(DoubleUtil.div(teacherClass.getExcellentCount(), teacherClass.getRealityCount(), 2));
|
|
|
- teacherClass.setAvgScore(DoubleUtil.format(Double.parseDouble(rs[7].toString()),"0.00"));
|
|
|
- teacherClass.setRelativeAvgScore(DoubleUtil.format(Double.parseDouble(rs[7].toString()) - subjectAvgScore,"0.00"));
|
|
|
+ teacherClass.setExcellentRate(DoubleUtil.div(teacherClass.getExcellentCount(),
|
|
|
+ teacherClass.getRealityCount(), 2));
|
|
|
+ teacherClass.setAvgScore(DoubleUtil.format(Double.parseDouble(rs[7].toString()), "0.00"));
|
|
|
+ teacherClass.setRelativeAvgScore(DoubleUtil.format(Double.parseDouble(rs[7].toString()) - subjectAvgScore,
|
|
|
+ "0.00"));
|
|
|
reportSubjectTeacherClassDao.save(teacherClass);
|
|
|
}
|
|
|
}
|
|
@@ -103,4 +109,18 @@ public class ReportSubjectTeacherClassServiceImpl extends BaseQueryService<Repor
|
|
|
return reportSubjectTeacherClassDao.save(r);
|
|
|
}
|
|
|
|
|
|
+ @Override
|
|
|
+ public void updateRelativeAvgScore(Integer examId) {
|
|
|
+ ReportSubjectQuery query = new ReportSubjectQuery();
|
|
|
+ query.setExamId(examId);
|
|
|
+ query.setPageNumber(1);
|
|
|
+ query.setPageSize(Integer.MAX_VALUE);
|
|
|
+ List<ReportSubjectTeacherClass> list = findByQuery(query);
|
|
|
+ for (ReportSubjectTeacherClass reportSubjectTeacherClass : list) {
|
|
|
+ Double subjectAvgScore = reportSubjectDao.querySubjectAvgScore(examId,
|
|
|
+ reportSubjectTeacherClass.getSubjectCode());
|
|
|
+ reportSubjectTeacherClass.setRelativeAvgScore(reportSubjectTeacherClass.getAvgScore() - subjectAvgScore);
|
|
|
+ reportSubjectTeacherClassDao.save(reportSubjectTeacherClass);
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|