|
@@ -287,11 +287,13 @@ public class ExamRecordServiceImpl implements ExamRecordService {
|
|
|
|
|
|
@Override
|
|
|
public Long getExamRecordWaitingAuditNextId(UserDataRules uds,ExamRecordQuery query, Long examRecordDataId, String next) {
|
|
|
+ //****注意按ID倒序排列的****,上一条,下一条
|
|
|
if(uds.getCourseRule().assertEmptyQueryResult()||uds.getOrgRule().assertEmptyQueryResult()) {
|
|
|
return null;
|
|
|
}
|
|
|
Check.isNull(query, "查询参数不能为空!");
|
|
|
Check.isNull(query.getExamId(), "请先选择考试批次!");
|
|
|
+ Check.isBlank(next, "[next]参数不能为空!");
|
|
|
//默认条件
|
|
|
query.setIsWarn(true);
|
|
|
query.setIsAudit(false);
|
|
@@ -299,7 +301,11 @@ public class ExamRecordServiceImpl implements ExamRecordService {
|
|
|
query.addRecordStatus(ExamRecordStatus.EXAM_OVERDUE.name());
|
|
|
//查询条件
|
|
|
StringBuilder sqlBuilder = new StringBuilder();
|
|
|
- sqlBuilder.append("select record_data.id from ec_oe_exam_record_data record_data where 1 = 1 ");
|
|
|
+ if ("1".equals(next)) {//下一条
|
|
|
+ sqlBuilder.append("select max(record_data.id) id from ec_oe_exam_record_data record_data where 1 = 1 ");
|
|
|
+ } else if ("0".equals(next)) {//上一条
|
|
|
+ sqlBuilder.append("select min(record_data.id) id from ec_oe_exam_record_data record_data where 1 = 1 ");
|
|
|
+ }
|
|
|
sqlBuilder.append(buildExamRecordCommonSelectCondition(uds,query));
|
|
|
if (query.getIsWarn() != null) {
|
|
|
//只查有异常未审核
|
|
@@ -312,29 +318,13 @@ public class ExamRecordServiceImpl implements ExamRecordService {
|
|
|
sqlBuilder.append(" and ((record_data.is_warn = 0) OR (record_data.is_warn = 1 and record_data.is_audit = 0))");
|
|
|
}
|
|
|
sqlBuilder.append(" and record_data.is_illegality = 0");
|
|
|
- if (StringUtils.isBlank(next)) {
|
|
|
- sqlBuilder.append(" and record_data.id in (select id from ec_oe_exam_record_data where");
|
|
|
- sqlBuilder.append(" id != ");
|
|
|
- sqlBuilder.append(examRecordDataId);
|
|
|
- sqlBuilder.append(" and exam_id=" + query.getExamId());
|
|
|
- sqlBuilder.append(" ) ");
|
|
|
- sqlBuilder.append(" order by record_data.id desc");
|
|
|
- } else if ("1".equals(next)) {
|
|
|
- sqlBuilder.append(" and record_data.id in (select id from ec_oe_exam_record_data where");
|
|
|
- sqlBuilder.append(" id < ");
|
|
|
+ if ("1".equals(next)) {//下一条
|
|
|
+ sqlBuilder.append(" and record_data.id < ");
|
|
|
sqlBuilder.append(examRecordDataId);
|
|
|
- sqlBuilder.append(" and exam_id=" + query.getExamId());
|
|
|
- sqlBuilder.append(" ) ");
|
|
|
- sqlBuilder.append(" order by record_data.id desc");
|
|
|
- } else if ("0".equals(next)) {
|
|
|
- sqlBuilder.append(" and record_data.id in (select id from ec_oe_exam_record_data where");
|
|
|
- sqlBuilder.append(" id > ");
|
|
|
+ } else if ("0".equals(next)) {//上一条
|
|
|
+ sqlBuilder.append(" and record_data.id > ");
|
|
|
sqlBuilder.append(examRecordDataId);
|
|
|
- sqlBuilder.append(" and exam_id=" + query.getExamId());
|
|
|
- sqlBuilder.append(" ) ");
|
|
|
- sqlBuilder.append(" order by record_data.id asc");
|
|
|
}
|
|
|
- sqlBuilder.append(" limit 1 ");
|
|
|
List<Long> ids = jdbcTemplate.query(sqlBuilder.toString(), (rs, rowNum) -> rs.getLong("id"));
|
|
|
return CollectionUtils.isEmpty(ids) ? null : ids.get(0);
|
|
|
}
|
|
@@ -740,13 +730,14 @@ public class ExamRecordServiceImpl implements ExamRecordService {
|
|
|
query.addRecordStatus(ExamRecordStatus.EXAM_OVERDUE.name());
|
|
|
|
|
|
List<ExamRecordInfo> examRecordDataList = new ArrayList<ExamRecordInfo>();
|
|
|
- Long startId = 0L;
|
|
|
+ int pageNo = 1;
|
|
|
+ int pageSize = 200;
|
|
|
for (; ; ) {
|
|
|
- List<ExamRecordInfo> tem = getExamRecordDetailPageForExport(uds,query, startId);
|
|
|
+ List<ExamRecordInfo> tem = getExamRecordDetailPageForExport(uds,query, pageNo,pageSize);
|
|
|
if (tem == null || tem.size() == 0) {
|
|
|
break;
|
|
|
} else {
|
|
|
- startId = tem.get(tem.size() - 1).getId();
|
|
|
+ pageNo++;
|
|
|
examRecordDataList.addAll(tem);
|
|
|
}
|
|
|
}
|
|
@@ -955,18 +946,18 @@ public class ExamRecordServiceImpl implements ExamRecordService {
|
|
|
|
|
|
}
|
|
|
|
|
|
- private List<ExamRecordInfo> getExamRecordDetailPageForExport(UserDataRules uds,ExamRecordQuery query, Long startId) {
|
|
|
+ private List<ExamRecordInfo> getExamRecordDetailPageForExport(UserDataRules uds,ExamRecordQuery query,int pageNo, int pageSize) {
|
|
|
StringBuilder sqlBuilder = new StringBuilder();
|
|
|
sqlBuilder.append(EXAM_RECORD_EXPORT_SQL);
|
|
|
sqlBuilder.append(buildExamRecordCommonSelectCondition(uds,query));
|
|
|
sqlBuilder.append(" and ((record_data.is_warn = 0) OR (record_data.is_warn = 1 and record_data.is_audit = 1))");
|
|
|
- sqlBuilder.append(" and record_data.id >" + startId);
|
|
|
sqlBuilder.append(" group by record_data.id ");
|
|
|
//根据ip查询
|
|
|
/*if (StringUtils.isNoneBlank(query.getIp())) {
|
|
|
sqlBuilder.append(" having ip like '%"+query.getIp()+"%' ");
|
|
|
}*/
|
|
|
- sqlBuilder.append(" order by record_data.id limit 500");
|
|
|
+ int currentNum = (pageNo - 1) * pageSize;
|
|
|
+ sqlBuilder.append(" order by record_data.id limit " + currentNum + "," + pageSize);
|
|
|
|
|
|
RowMapper<ExamRecordInfo> rowMapper = new BeanPropertyRowMapper<ExamRecordInfo>(ExamRecordInfo.class);
|
|
|
List<ExamRecordInfo> ret = jdbcTemplate.query(sqlBuilder.toString(), rowMapper);
|