|
@@ -0,0 +1,109 @@
|
|
|
+package cn.com.qmth.examcloud.core.examwork.service.impl;
|
|
|
+
|
|
|
+import cn.com.qmth.examcloud.commons.exception.StatusException;
|
|
|
+import cn.com.qmth.examcloud.core.examwork.dao.ExamSkipFaceRepo;
|
|
|
+import cn.com.qmth.examcloud.core.examwork.service.ExamSkipFaceService;
|
|
|
+import cn.com.qmth.examcloud.core.examwork.service.bean.ExamSkipFaceInfo;
|
|
|
+import cn.com.qmth.examcloud.core.examwork.service.bean.ExamSkipFaceQuery;
|
|
|
+import org.apache.commons.collections4.CollectionUtils;
|
|
|
+import org.apache.commons.lang3.StringUtils;
|
|
|
+import org.slf4j.Logger;
|
|
|
+import org.slf4j.LoggerFactory;
|
|
|
+import org.springframework.beans.factory.annotation.Autowired;
|
|
|
+import org.springframework.data.domain.Page;
|
|
|
+import org.springframework.data.domain.PageImpl;
|
|
|
+import org.springframework.data.domain.PageRequest;
|
|
|
+import org.springframework.data.domain.Pageable;
|
|
|
+import org.springframework.jdbc.core.BeanPropertyRowMapper;
|
|
|
+import org.springframework.jdbc.core.JdbcTemplate;
|
|
|
+import org.springframework.stereotype.Service;
|
|
|
+
|
|
|
+import java.util.ArrayList;
|
|
|
+import java.util.List;
|
|
|
+
|
|
|
+@Service
|
|
|
+public class ExamSkipFaceServiceImpl implements ExamSkipFaceService {
|
|
|
+
|
|
|
+ private static final Logger log = LoggerFactory.getLogger(ExamSkipFaceServiceImpl.class);
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ private ExamSkipFaceRepo examSkipFaceRepo;
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ private JdbcTemplate jdbcTemplate;
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public Page<ExamSkipFaceInfo> getExamSkipFaceList(ExamSkipFaceQuery req) {
|
|
|
+ if (req.getPageNo() == null || req.getPageNo() < 1) {
|
|
|
+ req.setPageNo(1);
|
|
|
+ }
|
|
|
+
|
|
|
+ if (req.getPageSize() == null || req.getPageSize() < 1) {
|
|
|
+ req.setPageSize(10);
|
|
|
+ }
|
|
|
+ if (req.getExamId() == null) {
|
|
|
+ throw new StatusException("请先选择考试!");
|
|
|
+ }
|
|
|
+
|
|
|
+ Pageable pageable = PageRequest.of(req.getPageNo() - 1, req.getPageSize());
|
|
|
+ int offset = (req.getPageNo() - 1) * req.getPageSize();
|
|
|
+
|
|
|
+ String countSql = this.queryExamSkipFaceListSql(req, true);
|
|
|
+ String querySql = this.queryExamSkipFaceListSql(req, false);
|
|
|
+ String pageSql = querySql + " limit " + offset + "," + req.getPageSize();
|
|
|
+
|
|
|
+ Long totalElements = jdbcTemplate.queryForObject(countSql, Long.class);
|
|
|
+ if (totalElements == null || totalElements == 0) {
|
|
|
+ return new PageImpl<>(new ArrayList<>(), pageable, 0);
|
|
|
+ }
|
|
|
+
|
|
|
+ List<ExamSkipFaceInfo> list = jdbcTemplate.query(pageSql, new BeanPropertyRowMapper(ExamSkipFaceInfo.class));
|
|
|
+ if (CollectionUtils.isEmpty(list)) {
|
|
|
+ return new PageImpl<>(new ArrayList<>(), pageable, 0);
|
|
|
+ }
|
|
|
+
|
|
|
+ return new PageImpl<>(list, pageable, totalElements);
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public List<ExamSkipFaceInfo> getAllExamSkipFaceList(ExamSkipFaceQuery req) {
|
|
|
+ String querySql = this.queryExamSkipFaceListSql(req, false);
|
|
|
+ return jdbcTemplate.query(querySql, new BeanPropertyRowMapper(ExamSkipFaceInfo.class));
|
|
|
+ }
|
|
|
+
|
|
|
+ private String queryExamSkipFaceListSql(ExamSkipFaceQuery req, boolean isCount) {
|
|
|
+ StringBuilder sql = new StringBuilder();
|
|
|
+ if (isCount) {
|
|
|
+ sql.append(" select count(1)");
|
|
|
+ } else {
|
|
|
+ sql.append(" select f.exam_student_id,stu.name studentName,stu.student_code,stu.identity_number,");
|
|
|
+ sql.append(" f.exam_id,e.name examName,stu.course_id,stu.course_code,stu.course_name,");
|
|
|
+ sql.append(" stu.org_id,org.name orgName,f.operate_id,u.name operateName,f.update_time");
|
|
|
+ }
|
|
|
+ sql.append(" from ec_e_exam_skip_face f");
|
|
|
+ sql.append(" left join ec_e_exam e on e.id = f.exam_id");
|
|
|
+ sql.append(" inner join ec_e_exam_student stu on stu.id = f.exam_student_id");
|
|
|
+ sql.append(" left join ec_b_user u on u.id = f.operate_id");
|
|
|
+ sql.append(" left join ec_b_org org on org.id = stu.org_id");
|
|
|
+ sql.append(" where f.exam_id = ").append(req.getExamId());
|
|
|
+
|
|
|
+ if (StringUtils.isNotBlank(req.getStudentName())) {
|
|
|
+ sql.append(" and stu.name like '").append(req.getStudentName()).append("%'");
|
|
|
+ }
|
|
|
+
|
|
|
+ if (StringUtils.isNotBlank(req.getStudentCode())) {
|
|
|
+ sql.append(" and stu.student_code like '").append(req.getStudentCode()).append("%'");
|
|
|
+ }
|
|
|
+
|
|
|
+ if (StringUtils.isNotBlank(req.getIdentityNumber())) {
|
|
|
+ sql.append(" and stu.identity_number like '").append(req.getIdentityNumber()).append("%'");
|
|
|
+ }
|
|
|
+
|
|
|
+ if (!isCount) {
|
|
|
+ sql.append(" order by f.id desc");
|
|
|
+ }
|
|
|
+
|
|
|
+ return sql.toString();
|
|
|
+ }
|
|
|
+
|
|
|
+}
|