|
@@ -0,0 +1,425 @@
|
|
|
+package cn.com.qmth.examcloud.outlet.dao.impl;
|
|
|
+
|
|
|
+import java.sql.ResultSet;
|
|
|
+import java.sql.SQLException;
|
|
|
+import java.util.List;
|
|
|
+
|
|
|
+import org.apache.commons.lang3.StringUtils;
|
|
|
+import org.slf4j.Logger;
|
|
|
+import org.slf4j.LoggerFactory;
|
|
|
+import org.springframework.beans.factory.annotation.Autowired;
|
|
|
+import org.springframework.jdbc.core.JdbcTemplate;
|
|
|
+import org.springframework.jdbc.core.RowMapper;
|
|
|
+import org.springframework.stereotype.Repository;
|
|
|
+
|
|
|
+import cn.com.qmth.examcloud.common.dto.em.Exam;
|
|
|
+import cn.com.qmth.examcloud.common.dto.em.ExamStudent;
|
|
|
+import cn.com.qmth.examcloud.common.dto.em.enums.MarkingType;
|
|
|
+import cn.com.qmth.examcloud.outlet.dao.OutletScoreDao;
|
|
|
+import cn.com.qmth.examcloud.outlet.dto.OutletScore;
|
|
|
+
|
|
|
+/**
|
|
|
+ * @author chenken
|
|
|
+ * @date 2018年1月3日 下午4:02:31
|
|
|
+ * @company QMTH
|
|
|
+ * @description OutletScoreRepoImpl.java
|
|
|
+ */
|
|
|
+@Repository("outletScoreDao")
|
|
|
+public class OutletScoreDaoImpl implements OutletScoreDao{
|
|
|
+
|
|
|
+ private static final Logger log = LoggerFactory.getLogger(OutletScoreDaoImpl.class);
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ public JdbcTemplate jdbcTemplate;
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public List<OutletScore> sydxQuery(String examRemark, String examStuRemark,Long examOrgId) {
|
|
|
+ StringBuffer sql = new StringBuffer();
|
|
|
+ sql.append("select " +
|
|
|
+ " s.id score_id,"+
|
|
|
+ " stu.`name` student_name,"+
|
|
|
+ " stu.student_code student_code,"+
|
|
|
+ " stu.identity_number identity_number," +
|
|
|
+ " s.total_score total_score,"+
|
|
|
+ " s.objective_score objective_score,"+
|
|
|
+ " s.subjective_score subjective_score," +
|
|
|
+ " stu.course_name course_name,"+
|
|
|
+ " stu.course_code course_code,"+
|
|
|
+ " e.remark exam_remark,"+
|
|
|
+ " stu.remark student_remark," +
|
|
|
+ " r.end_time end_time" +
|
|
|
+ " from oe_exam_score s " +
|
|
|
+ " left join oe_exam_record r on s.exam_record_id = r.id" +
|
|
|
+ " left join ecs_exam_student stu on stu.id = r.exam_student_id" +
|
|
|
+ " left join ecs_exam e on e.id = r.batch_id" +
|
|
|
+ " where 1=1 ");
|
|
|
+ if(StringUtils.isNotBlank(examRemark)){
|
|
|
+ sql.append(" and e.remark = '"+examRemark+"'");
|
|
|
+ }
|
|
|
+ if(StringUtils.isNotBlank(examStuRemark)){
|
|
|
+ sql.append(" and stu.remark = '"+examStuRemark+"'");
|
|
|
+ }
|
|
|
+ if(examOrgId != null){
|
|
|
+ sql.append(" and e.org_id = "+examOrgId);
|
|
|
+ }
|
|
|
+
|
|
|
+ sql.append(" and (r.is_warn = 0 OR (r.is_warn = 1 and r.is_audit = 1))");
|
|
|
+ sql.append(" and r.invigilator_operation <> 1 and r.status <> 'EXAM_INVALID' and r.status <> 'EXAM_ING'");
|
|
|
+ sql.append(" order by s.id");
|
|
|
+
|
|
|
+ log.info(sql.toString());
|
|
|
+ return jdbcTemplate.query(sql.toString(), new RowMapper<OutletScore>() {
|
|
|
+ @Override
|
|
|
+ public OutletScore mapRow(ResultSet rs, int arg1) throws SQLException {
|
|
|
+ return getOutletScoreByResultSet(rs);
|
|
|
+ }
|
|
|
+ });
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public List<OutletScore> sydxGetExamScoreById(Long scoreId) {
|
|
|
+ StringBuffer sql = new StringBuffer();
|
|
|
+ sql.append("select "
|
|
|
+ +" s.id score_id,"
|
|
|
+ +" stu.`name` student_name,"
|
|
|
+ +" stu.student_code student_code,"
|
|
|
+ +" stu.identity_number identity_number,"
|
|
|
+ +" s.total_score total_score,"
|
|
|
+ +" s.objective_score objective_score,"
|
|
|
+ +" s.subjective_score subjective_score,"
|
|
|
+ +" stu.course_name course_name,"
|
|
|
+ +" stu.course_code course_code,"
|
|
|
+ +" e.remark exam_remark,"
|
|
|
+ +" stu.remark student_remark,"
|
|
|
+ +" r.end_time end_time "
|
|
|
+ +" from oe_exam_score s "
|
|
|
+ +" left join oe_exam_record r on s.exam_record_id = r.id"
|
|
|
+ +" left join ecs_exam_student stu on stu.id = r.exam_student_id"
|
|
|
+ +" left join ecs_exam e on e.id = r.batch_id"
|
|
|
+ +" where s.id = "+scoreId);
|
|
|
+ log.info(sql.toString());
|
|
|
+ return jdbcTemplate.query(sql.toString(), new RowMapper<OutletScore>() {
|
|
|
+ @Override
|
|
|
+ public OutletScore mapRow(ResultSet rs, int arg1) throws SQLException {
|
|
|
+ return getOutletScoreByResultSet(rs);
|
|
|
+ }
|
|
|
+ });
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public List<OutletScore> sydxQueryScoreByIdentityNumber(List<String> identityNumbers, Long examOrgId) {
|
|
|
+ StringBuffer sql = new StringBuffer();
|
|
|
+ sql.append("select"
|
|
|
+ +" s.id score_id,"
|
|
|
+ +" stu.`name` student_name,"
|
|
|
+ +" stu.student_code student_code,"
|
|
|
+ +" stu.identity_number identity_number,"
|
|
|
+ +" s.total_score total_score,"
|
|
|
+ +" s.objective_score objective_score,"
|
|
|
+ +" s.subjective_score subjective_score,"
|
|
|
+ +" stu.course_name course_name,"
|
|
|
+ +" stu.course_code course_code,"
|
|
|
+ +" e.remark exam_remark,"
|
|
|
+ +" stu.remark student_remark,"
|
|
|
+ +" r.end_time end_time"
|
|
|
+ +" from oe_exam_score s "
|
|
|
+ +" left join oe_exam_record r on s.exam_record_id = r.id"
|
|
|
+ +" left join ecs_exam_student stu on stu.id = r.exam_student_id"
|
|
|
+ +" left join ecs_exam e on e.id = r.batch_id"
|
|
|
+ +" where 1=1 ");
|
|
|
+ StringBuffer numberString = new StringBuffer();
|
|
|
+ for(String number:identityNumbers){
|
|
|
+ numberString.append("'"+number+"',");
|
|
|
+ }
|
|
|
+ String numbers = numberString.toString();
|
|
|
+ numbers = numbers.substring(0, numbers.lastIndexOf(","));
|
|
|
+ sql.append(" and r.identity_number in ("+numbers+") and e.org_id = "+examOrgId );
|
|
|
+
|
|
|
+ sql.append(" and (r.is_warn = 0 OR (r.is_warn = 1 and r.is_audit = 1))");
|
|
|
+ sql.append(" and r.invigilator_operation <> 1 and r.status <> 'EXAM_INVALID' and r.status <> 'EXAM_ING' ");
|
|
|
+ sql.append(" order by s.id");
|
|
|
+
|
|
|
+ log.info(sql.toString());
|
|
|
+ return jdbcTemplate.query(sql.toString(), new RowMapper<OutletScore>() {
|
|
|
+ @Override
|
|
|
+ public OutletScore mapRow(ResultSet rs, int arg1) throws SQLException {
|
|
|
+ return getOutletScoreByResultSet(rs);
|
|
|
+ }
|
|
|
+ });
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public List<OutletScore> getExamScoreById(Long scoreId) {
|
|
|
+ StringBuffer sql = new StringBuffer();
|
|
|
+ sql.append("select "
|
|
|
+ +" s.id score_id,"
|
|
|
+ +" stu.`name` student_name,"
|
|
|
+ +" stu.student_code student_code,"
|
|
|
+ +" stu.identity_number identity_number,"
|
|
|
+ +" s.total_score total_score,"
|
|
|
+ +" s.objective_score objective_score,"
|
|
|
+ +" s.subjective_score subjective_score,"
|
|
|
+ +" stu.course_name course_name,"
|
|
|
+ +" stu.course_code course_code,"
|
|
|
+ +" e.id exam_id,"
|
|
|
+ +" e.name exam_name,"
|
|
|
+ +" e.remark exam_remark,"
|
|
|
+ +" stu.remark student_remark,"
|
|
|
+ +" r.start_time start_time,"
|
|
|
+ +" r.end_time end_time,"
|
|
|
+ +" r.succ_percent succ_percent,"
|
|
|
+ +" r.invigilator_operation invigilatorOperation "
|
|
|
+ +" from oe_exam_score s "
|
|
|
+ +" left join oe_exam_record r on s.exam_record_id = r.id"
|
|
|
+ +" left join ecs_exam_student stu on stu.id = r.exam_student_id"
|
|
|
+ +" left join ecs_exam e on e.id = r.batch_id"
|
|
|
+ +" where s.id = "+scoreId);
|
|
|
+ log.info(sql.toString());
|
|
|
+ return jdbcTemplate.query(sql.toString(), new RowMapper<OutletScore>() {
|
|
|
+ @Override
|
|
|
+ public OutletScore mapRow(ResultSet rs, int arg1) throws SQLException {
|
|
|
+ return getExamScoreByIdResult(rs);
|
|
|
+ }
|
|
|
+ });
|
|
|
+ }
|
|
|
+
|
|
|
+ private OutletScore getExamScoreByIdResult(ResultSet rs) throws SQLException{
|
|
|
+ OutletScore outletScore = new OutletScore();
|
|
|
+ outletScore.setScoreId(rs.getLong("score_id"));
|
|
|
+ outletScore.setStudentName(rs.getString("student_name"));
|
|
|
+ outletScore.setStudentCode(rs.getString("student_code"));
|
|
|
+ outletScore.setIdentityNumber(rs.getString("identity_number"));
|
|
|
+ outletScore.setTotalScore(rs.getDouble("total_score"));
|
|
|
+ outletScore.setObjectiveScore(rs.getDouble("objective_score"));
|
|
|
+ outletScore.setSubjectiveScore(rs.getDouble("subjective_score"));
|
|
|
+ outletScore.setCourseName(rs.getString("course_name"));
|
|
|
+ outletScore.setCourseCode(rs.getString("course_code"));
|
|
|
+ outletScore.setExamRemark(rs.getString("exam_remark"));
|
|
|
+ outletScore.setStudentRemark(rs.getString("student_remark"));
|
|
|
+ outletScore.setEndTime(rs.getString("end_time"));
|
|
|
+ //新增 20180517
|
|
|
+ outletScore.setStartTime(rs.getString("start_time"));
|
|
|
+ outletScore.setExamId(rs.getLong("exam_id"));
|
|
|
+ outletScore.setExamName(rs.getString("exam_name"));
|
|
|
+ outletScore.setSuccessRate(rs.getDouble("succ_percent"));
|
|
|
+ Integer invigilatorOperation = rs.getInt("invigilatorOperation");
|
|
|
+ outletScore.setIsBreachThePrinciple(invigilatorOperation == 1?true:false);
|
|
|
+ return outletScore;
|
|
|
+ }
|
|
|
+
|
|
|
+ private OutletScore getOutletScoreByResultSet(ResultSet rs) throws SQLException{
|
|
|
+ OutletScore outletScore = new OutletScore();
|
|
|
+ outletScore.setScoreId(rs.getLong("score_id"));
|
|
|
+ outletScore.setStudentName(rs.getString("student_name"));
|
|
|
+ outletScore.setStudentCode(rs.getString("student_code"));
|
|
|
+ outletScore.setIdentityNumber(rs.getString("identity_number"));
|
|
|
+ outletScore.setTotalScore(rs.getDouble("total_score"));
|
|
|
+ outletScore.setObjectiveScore(rs.getDouble("objective_score"));
|
|
|
+ outletScore.setSubjectiveScore(rs.getDouble("subjective_score"));
|
|
|
+ outletScore.setCourseName(rs.getString("course_name"));
|
|
|
+ outletScore.setCourseCode(rs.getString("course_code"));
|
|
|
+ outletScore.setExamRemark(rs.getString("exam_remark"));
|
|
|
+ outletScore.setStudentRemark(rs.getString("student_remark"));
|
|
|
+ outletScore.setEndTime(rs.getString("end_time"));
|
|
|
+ return outletScore;
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public List<ExamStudent> findExamStudents(String examRemark,String examStuRemark, Long examOrgId) {
|
|
|
+ StringBuffer sql = new StringBuffer();
|
|
|
+ sql.append("select "+
|
|
|
+ " stu.id id,"+
|
|
|
+ " stu.`name` student_name,"+
|
|
|
+ " stu.student_code student_code,"+
|
|
|
+ " stu.identity_number identity_number,"+
|
|
|
+ " stu.course_name course_name,"+
|
|
|
+ " stu.course_code course_code,"+
|
|
|
+ " stu.remark student_remark,"+
|
|
|
+ " stu.finished finished,"+
|
|
|
+ " exam.remark exam_remark,"+
|
|
|
+ " exam.marking_type marking_type"+
|
|
|
+ " from ecs_exam_student stu "+
|
|
|
+ " left join ecs_exam exam on stu.exam_id = exam.id"+
|
|
|
+ " where 1=1 ");
|
|
|
+ if(StringUtils.isNotBlank(examRemark)){
|
|
|
+ sql.append(" and exam.remark = '"+examRemark+"'");
|
|
|
+ }
|
|
|
+ if(examOrgId != null){
|
|
|
+ sql.append(" and exam.root_org_id = "+examOrgId);
|
|
|
+ }
|
|
|
+ if(StringUtils.isNotBlank(examStuRemark)){
|
|
|
+ sql.append(" and stu.remark = '"+examStuRemark+"'");
|
|
|
+ }
|
|
|
+ log.info(sql.toString());
|
|
|
+ return jdbcTemplate.query(sql.toString(), new RowMapper<ExamStudent>() {
|
|
|
+ @Override
|
|
|
+ public ExamStudent mapRow(ResultSet rs, int arg1) throws SQLException {
|
|
|
+ return getExamStudentByResultSet(rs);
|
|
|
+ }
|
|
|
+ });
|
|
|
+ }
|
|
|
+
|
|
|
+ private ExamStudent getExamStudentByResultSet(ResultSet rs) throws SQLException{
|
|
|
+ ExamStudent examStudent = new ExamStudent();
|
|
|
+ examStudent.setId(rs.getLong("id"));
|
|
|
+ examStudent.setName(rs.getString("student_name"));
|
|
|
+ examStudent.setStudentCode(rs.getString("student_code"));
|
|
|
+ examStudent.setIdentityNumber(rs.getString("identity_number"));
|
|
|
+ examStudent.setCourseCode(rs.getString("course_code"));
|
|
|
+ examStudent.setCourseName(rs.getString("course_name"));
|
|
|
+ examStudent.setRemark(rs.getString("student_remark"));
|
|
|
+ examStudent.setFinished(rs.getBoolean("finished"));
|
|
|
+ Exam exam = new Exam();
|
|
|
+ exam.setRemark(rs.getString("exam_remark"));
|
|
|
+ exam.setMarkingType(MarkingType.toMarkingType(rs.getString("marking_type")));
|
|
|
+ examStudent.setExam(exam);
|
|
|
+ return examStudent;
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public List<ExamStudent> findExamStudents(List<String> identityNumbers,Long examOrgId) {
|
|
|
+ StringBuffer sql = new StringBuffer();
|
|
|
+ sql.append("select "+
|
|
|
+ " stu.id id,"+
|
|
|
+ " stu.`name` student_name,"+
|
|
|
+ " stu.student_code student_code,"+
|
|
|
+ " stu.identity_number identity_number,"+
|
|
|
+ " stu.course_name course_name,"+
|
|
|
+ " stu.course_code course_code,"+
|
|
|
+ " stu.remark student_remark,"+
|
|
|
+ " stu.finished finished,"+
|
|
|
+ " exam.remark exam_remark,"+
|
|
|
+ " exam.marking_type marking_type"+
|
|
|
+ " from ecs_exam_student stu "+
|
|
|
+ " left join ecs_exam exam on stu.exam_id = exam.id"+
|
|
|
+ " where 1=1 ");
|
|
|
+ StringBuffer numberString = new StringBuffer();
|
|
|
+ for(String number:identityNumbers){
|
|
|
+ numberString.append("'"+number+"',");
|
|
|
+ }
|
|
|
+ String numbers = numberString.toString();
|
|
|
+ numbers = numbers.substring(0, numbers.lastIndexOf(","));
|
|
|
+ sql.append(" and stu.identity_number in ("+numbers+") and exam.root_org_id = "+examOrgId );
|
|
|
+ log.info(sql.toString());
|
|
|
+ return jdbcTemplate.query(sql.toString(), new RowMapper<ExamStudent>() {
|
|
|
+ @Override
|
|
|
+ public ExamStudent mapRow(ResultSet rs, int arg1) throws SQLException {
|
|
|
+ return getExamStudentByResultSet(rs);
|
|
|
+ }
|
|
|
+ });
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public List<ExamStudent> findExamStudents(Long orgId, String batchName,String courseCode, List<String> studentCodes) {
|
|
|
+ StringBuffer sql = new StringBuffer();
|
|
|
+ sql.append("select "+
|
|
|
+ " stu.id id,"+
|
|
|
+ " stu.`name` student_name,"+
|
|
|
+ " stu.student_code student_code,"+
|
|
|
+ " stu.identity_number identity_number,"+
|
|
|
+ " stu.course_name course_name,"+
|
|
|
+ " stu.course_code course_code,"+
|
|
|
+ " stu.remark student_remark,"+
|
|
|
+ " stu.finished finished,"+
|
|
|
+ " exam.remark exam_remark,"+
|
|
|
+ " exam.marking_type marking_type"+
|
|
|
+ " from ecs_exam_student stu "+
|
|
|
+ " left join ecs_exam exam on stu.exam_id = exam.id"+
|
|
|
+ " where 1=1 ");
|
|
|
+ sql.append(" and exam.name='"+batchName+"' and exam.root_org_id = "+orgId);
|
|
|
+ sql.append(" and stu.course_code LIKE '%"+courseCode+"'");
|
|
|
+ StringBuffer studentCodesStringBuffer = new StringBuffer();
|
|
|
+ for(String studentCode:studentCodes){
|
|
|
+ studentCodesStringBuffer.append("'"+studentCode+"',");
|
|
|
+ }
|
|
|
+ String studentCodesString = studentCodesStringBuffer.toString();
|
|
|
+ studentCodesString = studentCodesString.substring(0, studentCodesString.lastIndexOf(","));
|
|
|
+
|
|
|
+ sql.append(" and student_code IN ("+studentCodesString+")");
|
|
|
+ log.info(sql.toString());
|
|
|
+ return jdbcTemplate.query(sql.toString(), new RowMapper<ExamStudent>() {
|
|
|
+ @Override
|
|
|
+ public ExamStudent mapRow(ResultSet rs, int arg1) throws SQLException {
|
|
|
+ return getExamStudentByResultSet(rs);
|
|
|
+ }
|
|
|
+ });
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public List<ExamStudent> findExamStudents(String examName,List<String> identityNumbers, Long examOrgId) {
|
|
|
+ StringBuffer sql = new StringBuffer();
|
|
|
+ sql.append("select "+
|
|
|
+ " stu.id id,"+
|
|
|
+ " stu.`name` student_name,"+
|
|
|
+ " stu.student_code student_code,"+
|
|
|
+ " stu.identity_number identity_number,"+
|
|
|
+ " stu.course_name course_name,"+
|
|
|
+ " stu.course_code course_code,"+
|
|
|
+ " stu.remark student_remark,"+
|
|
|
+ " stu.finished finished,"+
|
|
|
+ " exam.remark exam_remark,"+
|
|
|
+ " exam.marking_type marking_type"+
|
|
|
+ " from ecs_exam_student stu "+
|
|
|
+ " left join ecs_exam exam on stu.exam_id = exam.id"+
|
|
|
+ " where 1=1 ");
|
|
|
+ StringBuffer numberString = new StringBuffer();
|
|
|
+ for(String number:identityNumbers){
|
|
|
+ numberString.append("'"+number+"',");
|
|
|
+ }
|
|
|
+ String numbers = numberString.toString();
|
|
|
+ numbers = numbers.substring(0, numbers.lastIndexOf(","));
|
|
|
+ sql.append(" and exam.root_org_id = "+examOrgId );
|
|
|
+ sql.append(" and exam.name = '"+examName+"'");
|
|
|
+ sql.append(" and stu.identity_number in ("+numbers+")");
|
|
|
+ log.info(sql.toString());
|
|
|
+ return jdbcTemplate.query(sql.toString(), new RowMapper<ExamStudent>() {
|
|
|
+ @Override
|
|
|
+ public ExamStudent mapRow(ResultSet rs, int arg1) throws SQLException {
|
|
|
+ return getExamStudentByResultSet(rs);
|
|
|
+ }
|
|
|
+ });
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public List<OutletScore> queryExamScoreBy(Long rootOrgId, String examName,
|
|
|
+ String studentCode, String courseCode) {
|
|
|
+ StringBuffer sql = new StringBuffer();
|
|
|
+ sql.append("select "
|
|
|
+ +" s.id score_id,"
|
|
|
+ +" stu.`name` student_name,"
|
|
|
+ +" stu.student_code student_code,"
|
|
|
+ +" stu.identity_number identity_number,"
|
|
|
+ +" s.total_score total_score,"
|
|
|
+ +" s.objective_score objective_score,"
|
|
|
+ +" s.subjective_score subjective_score,"
|
|
|
+ +" stu.course_name course_name,"
|
|
|
+ +" stu.course_code course_code,"
|
|
|
+ +" e.id exam_id,"
|
|
|
+ +" e.name exam_name,"
|
|
|
+ +" e.remark exam_remark,"
|
|
|
+ +" stu.remark student_remark,"
|
|
|
+ +" r.start_time start_time,"
|
|
|
+ +" r.end_time end_time,"
|
|
|
+ +" r.succ_percent succ_percent,"
|
|
|
+ +" r.invigilator_operation invigilatorOperation "
|
|
|
+ +" from oe_exam_score s "
|
|
|
+ +" left join oe_exam_record r on s.exam_record_id = r.id"
|
|
|
+ +" left join ecs_exam_student stu on stu.id = r.exam_student_id"
|
|
|
+ +" left join ecs_exam e on e.id = r.batch_id"
|
|
|
+ +" where e.name = '"+examName+"'"
|
|
|
+ +" and e.root_org_id="+rootOrgId
|
|
|
+ +" and r.student_code='"+studentCode+"'"
|
|
|
+ +" and r.course_code LIKE '%"+courseCode+"'");
|
|
|
+ log.info(sql.toString());
|
|
|
+ return jdbcTemplate.query(sql.toString(), new RowMapper<OutletScore>() {
|
|
|
+ @Override
|
|
|
+ public OutletScore mapRow(ResultSet rs, int arg1) throws SQLException {
|
|
|
+ return getExamScoreByIdResult(rs);
|
|
|
+ }
|
|
|
+ });
|
|
|
+ }
|
|
|
+
|
|
|
+}
|
|
|
+
|