|
@@ -1,5 +1,28 @@
|
|
|
package cn.com.qmth.stmms.biz.exam.service.impl;
|
|
|
|
|
|
+import java.math.BigDecimal;
|
|
|
+import java.text.DecimalFormat;
|
|
|
+import java.util.*;
|
|
|
+import java.util.Map.Entry;
|
|
|
+import java.util.stream.Collectors;
|
|
|
+
|
|
|
+import javax.persistence.EntityManager;
|
|
|
+import javax.persistence.PersistenceContext;
|
|
|
+import javax.persistence.Query;
|
|
|
+import javax.persistence.criteria.*;
|
|
|
+
|
|
|
+import org.apache.commons.lang.StringUtils;
|
|
|
+import org.apache.commons.lang.math.RandomUtils;
|
|
|
+import org.hibernate.SQLQuery;
|
|
|
+import org.hibernate.transform.Transformers;
|
|
|
+import org.springframework.beans.factory.annotation.Autowired;
|
|
|
+import org.springframework.data.domain.Page;
|
|
|
+import org.springframework.data.domain.Sort;
|
|
|
+import org.springframework.data.domain.Sort.Direction;
|
|
|
+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.ExamStudentDao;
|
|
|
import cn.com.qmth.stmms.biz.exam.model.*;
|
|
@@ -18,29 +41,6 @@ import cn.com.qmth.stmms.biz.utils.ScoreItem;
|
|
|
import cn.com.qmth.stmms.common.enums.Role;
|
|
|
import cn.com.qmth.stmms.common.enums.SubjectiveStatus;
|
|
|
|
|
|
-import org.apache.commons.lang.StringUtils;
|
|
|
-import org.apache.commons.lang.math.RandomUtils;
|
|
|
-import org.hibernate.SQLQuery;
|
|
|
-import org.hibernate.transform.Transformers;
|
|
|
-import org.springframework.beans.factory.annotation.Autowired;
|
|
|
-import org.springframework.data.domain.Page;
|
|
|
-import org.springframework.data.domain.Sort;
|
|
|
-import org.springframework.data.domain.Sort.Direction;
|
|
|
-import org.springframework.data.jpa.domain.Specification;
|
|
|
-import org.springframework.stereotype.Service;
|
|
|
-import org.springframework.transaction.annotation.Transactional;
|
|
|
-
|
|
|
-import javax.persistence.EntityManager;
|
|
|
-import javax.persistence.PersistenceContext;
|
|
|
-import javax.persistence.Query;
|
|
|
-import javax.persistence.criteria.*;
|
|
|
-
|
|
|
-import java.math.BigDecimal;
|
|
|
-import java.text.DecimalFormat;
|
|
|
-import java.util.*;
|
|
|
-import java.util.Map.Entry;
|
|
|
-import java.util.stream.Collectors;
|
|
|
-
|
|
|
@Service
|
|
|
public class ExamStudentServiceImpl extends BaseQueryService<ExamStudent> implements ExamStudentService {
|
|
|
|
|
@@ -90,6 +90,7 @@ public class ExamStudentServiceImpl extends BaseQueryService<ExamStudent> implem
|
|
|
|
|
|
public static final String USER_PASSWORD = "123456";
|
|
|
|
|
|
+ @Override
|
|
|
public ExamStudent findById(int id) {
|
|
|
return studentDao.findOne(id);
|
|
|
}
|
|
@@ -100,6 +101,7 @@ public class ExamStudentServiceImpl extends BaseQueryService<ExamStudent> implem
|
|
|
* @param list
|
|
|
* @return
|
|
|
*/
|
|
|
+ @Override
|
|
|
@Transactional
|
|
|
public int batchSave(List<ExamStudent> list) {
|
|
|
if (list == null || list.isEmpty()) {
|
|
@@ -180,8 +182,8 @@ public class ExamStudentServiceImpl extends BaseQueryService<ExamStudent> implem
|
|
|
student.setSubjectCategory(subject.getCategory());
|
|
|
if (student.getSecretNumber() == null) {
|
|
|
student.randomSecretNumber();
|
|
|
- while (secretNumberSet.contains(student.getSecretNumber())
|
|
|
- || studentDao.countByExamIdAndSecretNumber(student.getExamId(), student.getSecretNumber()) > 0) {
|
|
|
+ while (secretNumberSet.contains(student.getSecretNumber()) || studentDao
|
|
|
+ .countByExamIdAndSecretNumber(student.getExamId(), student.getSecretNumber()) > 0) {
|
|
|
student.randomSecretNumber();
|
|
|
}
|
|
|
}
|
|
@@ -191,6 +193,7 @@ public class ExamStudentServiceImpl extends BaseQueryService<ExamStudent> implem
|
|
|
return success;
|
|
|
}
|
|
|
|
|
|
+ @Override
|
|
|
@Transactional
|
|
|
public ExamStudent save(ExamStudent student) {
|
|
|
student.setSubjectCode(StringUtils.trimToNull(student.getSubjectCode()));
|
|
@@ -238,6 +241,7 @@ public class ExamStudentServiceImpl extends BaseQueryService<ExamStudent> implem
|
|
|
return studentDao.save(student);
|
|
|
}
|
|
|
|
|
|
+ @Override
|
|
|
@Transactional
|
|
|
public void deleteById(int id) {
|
|
|
checkStudentService.deleteByStudentId(id);
|
|
@@ -247,16 +251,19 @@ public class ExamStudentServiceImpl extends BaseQueryService<ExamStudent> implem
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+ @Override
|
|
|
@Transactional
|
|
|
public void delete(ExamStudent student) {
|
|
|
studentDao.delete(student);
|
|
|
}
|
|
|
|
|
|
+ @Override
|
|
|
@Transactional
|
|
|
public void deleteByExamId(int examId) {
|
|
|
studentDao.deleteByExamId(examId);
|
|
|
}
|
|
|
|
|
|
+ @Override
|
|
|
public ExamStudentSearchQuery findByQuery(final ExamStudentSearchQuery query) {
|
|
|
checkQuery(query);
|
|
|
query.addSort("examNumber", Direction.ASC);
|
|
@@ -271,6 +278,7 @@ public class ExamStudentServiceImpl extends BaseQueryService<ExamStudent> implem
|
|
|
return query;
|
|
|
}
|
|
|
|
|
|
+ @Override
|
|
|
public long countByQuery(final ExamStudentSearchQuery query) {
|
|
|
return studentDao.count(buildSpecification(query));
|
|
|
}
|
|
@@ -331,6 +339,7 @@ public class ExamStudentServiceImpl extends BaseQueryService<ExamStudent> implem
|
|
|
return list != null && list.size() > 0 ? list.get(0) : null;
|
|
|
}
|
|
|
|
|
|
+ @Override
|
|
|
public long countByExamId(int examId) {
|
|
|
ExamStudentSearchQuery query = new ExamStudentSearchQuery();
|
|
|
query.setExamId(examId);
|
|
@@ -355,6 +364,7 @@ public class ExamStudentServiceImpl extends BaseQueryService<ExamStudent> implem
|
|
|
return studentDao.countUploaded(examId);
|
|
|
}
|
|
|
|
|
|
+ @Override
|
|
|
public long countByExamIdAndSubjectCode(int examId, String subjectCode) {
|
|
|
ExamStudentSearchQuery query = new ExamStudentSearchQuery();
|
|
|
query.setExamId(examId);
|
|
@@ -362,6 +372,7 @@ public class ExamStudentServiceImpl extends BaseQueryService<ExamStudent> implem
|
|
|
return countByQuery(query);
|
|
|
}
|
|
|
|
|
|
+ @Override
|
|
|
public long countByExamIdAndSubjectCode(int examId, String subjectCode, boolean upload) {
|
|
|
ExamStudentSearchQuery query = new ExamStudentSearchQuery();
|
|
|
query.setExamId(examId);
|
|
@@ -370,6 +381,7 @@ public class ExamStudentServiceImpl extends BaseQueryService<ExamStudent> implem
|
|
|
return countByQuery(query);
|
|
|
}
|
|
|
|
|
|
+ @Override
|
|
|
public long countByExamIdAndSubjectCode(int examId, String subjectCode, boolean upload, boolean absent) {
|
|
|
ExamStudentSearchQuery query = new ExamStudentSearchQuery();
|
|
|
query.setExamId(examId);
|
|
@@ -588,8 +600,8 @@ public class ExamStudentServiceImpl extends BaseQueryService<ExamStudent> implem
|
|
|
if (query.getObjectiveScore() != null) {
|
|
|
predicates.add(cb.equal(root.get("objectiveScore"), query.getObjectiveScore()));
|
|
|
} else if (query.getObjectiveScoreGt() != null) {
|
|
|
- predicates.add(cb.greaterThan(root.get("objectiveScore").as(Double.class),
|
|
|
- query.getObjectiveScoreGt()));
|
|
|
+ predicates.add(
|
|
|
+ cb.greaterThan(root.get("objectiveScore").as(Double.class), query.getObjectiveScoreGt()));
|
|
|
} else if (query.getObjectiveScoreLt() != null) {
|
|
|
predicates
|
|
|
.add(cb.lessThan(root.get("objectiveScore").as(Double.class), query.getObjectiveScoreLt()));
|
|
@@ -604,11 +616,11 @@ public class ExamStudentServiceImpl extends BaseQueryService<ExamStudent> implem
|
|
|
if (query.getSubjectiveScore() != null) {
|
|
|
predicates.add(cb.equal(root.get("subjectiveScore"), query.getSubjectiveScore()));
|
|
|
} else if (query.getSubjectiveScoreGt() != null) {
|
|
|
- predicates.add(cb.greaterThan(root.get("subjectiveScore").as(Double.class),
|
|
|
- query.getSubjectiveScoreGt()));
|
|
|
+ predicates.add(
|
|
|
+ cb.greaterThan(root.get("subjectiveScore").as(Double.class), query.getSubjectiveScoreGt()));
|
|
|
} else if (query.getSubjectiveScoreLt() != null) {
|
|
|
- predicates.add(cb.lessThan(root.get("subjectiveScore").as(Double.class),
|
|
|
- query.getSubjectiveScoreLt()));
|
|
|
+ predicates.add(
|
|
|
+ cb.lessThan(root.get("subjectiveScore").as(Double.class), query.getSubjectiveScoreLt()));
|
|
|
}
|
|
|
if (query.getUpload() != null) {
|
|
|
predicates.add(cb.equal(root.get("upload"), query.getUpload()));
|
|
@@ -729,8 +741,8 @@ public class ExamStudentServiceImpl extends BaseQueryService<ExamStudent> implem
|
|
|
if (query.getSheetCount() != null) {
|
|
|
predicates.add(cb.equal(root.get("sheetCount"), query.getSheetCount()));
|
|
|
}
|
|
|
- return predicates.isEmpty() ? cb.conjunction() : cb.and(predicates.toArray(new Predicate[predicates
|
|
|
- .size()]));
|
|
|
+ return predicates.isEmpty() ? cb.conjunction()
|
|
|
+ : cb.and(predicates.toArray(new Predicate[predicates.size()]));
|
|
|
}
|
|
|
};
|
|
|
}
|
|
@@ -823,7 +835,9 @@ public class ExamStudentServiceImpl extends BaseQueryService<ExamStudent> implem
|
|
|
return countByQuery(query);
|
|
|
}
|
|
|
|
|
|
- public long countByNoAbsentAndBreach(int examId, String subjectCode, boolean upload, boolean absent, boolean breach) {
|
|
|
+ @Override
|
|
|
+ public long countByNoAbsentAndBreach(int examId, String subjectCode, boolean upload, boolean absent,
|
|
|
+ boolean breach) {
|
|
|
ExamStudentSearchQuery query = new ExamStudentSearchQuery();
|
|
|
query.setExamId(examId);
|
|
|
query.setSubjectCode(subjectCode);
|
|
@@ -833,6 +847,7 @@ public class ExamStudentServiceImpl extends BaseQueryService<ExamStudent> implem
|
|
|
return countByQuery(query);
|
|
|
}
|
|
|
|
|
|
+ @Override
|
|
|
public long countByAbsentAndBreach(int examId, String subjectCode, Boolean absent, Boolean breach) {
|
|
|
ExamStudentSearchQuery query = new ExamStudentSearchQuery();
|
|
|
query.setExamId(examId);
|
|
@@ -876,8 +891,8 @@ public class ExamStudentServiceImpl extends BaseQueryService<ExamStudent> implem
|
|
|
sliceConfig = exam.getSliceConfigList();
|
|
|
}
|
|
|
if (!sliceConfig.isEmpty()) {
|
|
|
- List<PictureTag> tags = PictureConfigTransform.process(sliceConfig,
|
|
|
- getSliceTags(student, withGroupScore, sliceConfig)).get(index);
|
|
|
+ List<PictureTag> tags = PictureConfigTransform
|
|
|
+ .process(sliceConfig, getSliceTags(student, withGroupScore, sliceConfig)).get(index);
|
|
|
if (tags != null) {
|
|
|
list.addAll(tags);
|
|
|
}
|
|
@@ -964,8 +979,8 @@ public class ExamStudentServiceImpl extends BaseQueryService<ExamStudent> implem
|
|
|
+ format.format(student.getSubjectiveScore() != null ? student.getSubjectiveScore() : 0));
|
|
|
// 客观题得分明细
|
|
|
List<String> objectives = new LinkedList<>();
|
|
|
- List<ExamQuestion> questions = questionService.findByExamAndSubjectAndObjectiveAndPaperType(
|
|
|
- student.getExamId(), student.getSubjectCode(), true, student.getPaperType());
|
|
|
+ List<ExamQuestion> questions = questionService.findByExamAndSubjectAndObjectiveAndPaperType(student.getExamId(),
|
|
|
+ student.getSubjectCode(), true, student.getPaperType());
|
|
|
List<ScoreItem> scoreList = student.getScoreList(true);
|
|
|
List<String> details = new ArrayList<>();
|
|
|
int i = 0;
|
|
@@ -1049,9 +1064,9 @@ public class ExamStudentServiceImpl extends BaseQueryService<ExamStudent> implem
|
|
|
if (config.getX() <= 1 && config.getY() <= 1 && config.getI() <= sliceConfig.size()
|
|
|
&& sliceConfig.get(config.getI() - 1).getW() > 0
|
|
|
&& sliceConfig.get(config.getI() - 1).getH() > 0) {
|
|
|
- tag = new OriginTag(0, "", group.getNumber(), format.format(score), config.getI(), config.getX()
|
|
|
- * sliceConfig.get(config.getI() - 1).getW(), config.getY()
|
|
|
- * sliceConfig.get(config.getI() - 1).getH());
|
|
|
+ tag = new OriginTag(0, "", group.getNumber(), format.format(score), config.getI(),
|
|
|
+ config.getX() * sliceConfig.get(config.getI() - 1).getW(),
|
|
|
+ config.getY() * sliceConfig.get(config.getI() - 1).getH());
|
|
|
}
|
|
|
originTags.add(tag);
|
|
|
}
|
|
@@ -1094,8 +1109,8 @@ public class ExamStudentServiceImpl extends BaseQueryService<ExamStudent> implem
|
|
|
for (MarkTrack markTrack : tracks) {
|
|
|
// 未作答时只显示汉字"空"
|
|
|
originTags.add(new OriginTag(library.getMarkerId(), Role.MARKER.toString(), library.getGroupNumber(),
|
|
|
- markTrack.isUnanswered() ? "空" : format.format(markTrack.getScore()), markTrack
|
|
|
- .getOffsetIndex(), markTrack.getOffsetX(), markTrack.getOffsetY()));
|
|
|
+ markTrack.isUnanswered() ? "空" : format.format(markTrack.getScore()),
|
|
|
+ markTrack.getOffsetIndex(), markTrack.getOffsetX(), markTrack.getOffsetY()));
|
|
|
}
|
|
|
// 添加特殊标记
|
|
|
List<MarkSpecialTag> specialTags = specialTagService.findByLibraryId(library.getId());
|
|
@@ -1109,16 +1124,17 @@ public class ExamStudentServiceImpl extends BaseQueryService<ExamStudent> implem
|
|
|
List<HeaderTag> headerTags = headerTagDao.findByStudentIdAndGroupNumberOrderByIdAsc(student.getId(),
|
|
|
group.getNumber());
|
|
|
for (HeaderTag headerTag : headerTags) {
|
|
|
- originTags.add(new OriginTag(headerTag.getUserId(), Role.SUBJECT_HEADER.toString(), headerTag
|
|
|
- .getGroupNumber(), headerTag.getTagName(), headerTag.getOffsetIndex(), headerTag.getOffsetX(),
|
|
|
- headerTag.getOffsetY()));
|
|
|
+ originTags.add(new OriginTag(headerTag.getUserId(), Role.SUBJECT_HEADER.toString(),
|
|
|
+ headerTag.getGroupNumber(), headerTag.getTagName(), headerTag.getOffsetIndex(),
|
|
|
+ headerTag.getOffsetX(), headerTag.getOffsetY()));
|
|
|
}
|
|
|
List<HeaderTrack> headerTracks = headerTrackDao.findByPkStudentIdAndGroupNumber(student.getId(),
|
|
|
group.getNumber());
|
|
|
for (HeaderTrack headerTrack : headerTracks) {
|
|
|
- originTags.add(new OriginTag(headerTrack.getUserId(), Role.SUBJECT_HEADER.toString(), headerTrack
|
|
|
- .getGroupNumber(), headerTrack.isUnanswered() ? "空" : format.format(headerTrack.getScore()),
|
|
|
- headerTrack.getOffsetIndex(), headerTrack.getOffsetX(), headerTrack.getOffsetY()));
|
|
|
+ originTags.add(
|
|
|
+ new OriginTag(headerTrack.getUserId(), Role.SUBJECT_HEADER.toString(), headerTrack.getGroupNumber(),
|
|
|
+ headerTrack.isUnanswered() ? "空" : format.format(headerTrack.getScore()),
|
|
|
+ headerTrack.getOffsetIndex(), headerTrack.getOffsetX(), headerTrack.getOffsetY()));
|
|
|
}
|
|
|
return originTags;
|
|
|
}
|
|
@@ -1165,7 +1181,8 @@ public class ExamStudentServiceImpl extends BaseQueryService<ExamStudent> implem
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
- public List<ExamStudent> findByExamIdAndStudentCodeAndSubjectCode(int examId, String studentCode, String subjectCode) {
|
|
|
+ public List<ExamStudent> findByExamIdAndStudentCodeAndSubjectCode(int examId, String studentCode,
|
|
|
+ String subjectCode) {
|
|
|
return studentDao.findByExamIdAndStudentCodeAndSubjectCode(examId, studentCode, subjectCode);
|
|
|
}
|
|
|
|
|
@@ -1317,9 +1334,8 @@ public class ExamStudentServiceImpl extends BaseQueryService<ExamStudent> implem
|
|
|
public int batchUpdate(List<ExamStudent> updateList) {
|
|
|
int i = 0;
|
|
|
for (ExamStudent student : updateList) {
|
|
|
- i = i
|
|
|
- + this.studentDao.updateInfo(student.getId(), student.getCollege(), student.getClassName(),
|
|
|
- student.getTeacher(), student.getExamRoom(), student.getExamSite(), student.getRemark());
|
|
|
+ i = i + this.studentDao.updateInfo(student.getId(), student.getCollege(), student.getClassName(),
|
|
|
+ student.getTeacher(), student.getExamRoom(), student.getExamSite(), student.getRemark());
|
|
|
}
|
|
|
return i;
|
|
|
}
|
|
@@ -1376,10 +1392,14 @@ public class ExamStudentServiceImpl extends BaseQueryService<ExamStudent> implem
|
|
|
private List<ExamStudent> findByQuerySql(ExamStudentSearchQuery req) {
|
|
|
int offset = (req.getPageNumber() - 1) * req.getPageSize();
|
|
|
StringBuilder sql = new StringBuilder();
|
|
|
- sql.append(" select s.sheet_count sheetCount,s.exam_number examNumber,s.exam_id examId,s.id,s.student_code studentCode,s.name");
|
|
|
- sql.append(" ,s.subject_code subjectCode,s.subject_name subjectName,s.is_upload upload,s.is_breach breach,s.is_absent absent,s.subjective_score subjectiveScore ");
|
|
|
- sql.append(" ,s.score_verify_time scoreVerifyTime,s.subjective_score_list subjectiveScoreList,s.objective_score objectiveScore,s.objective_score_list objectiveScoreList ");
|
|
|
- sql.append(" ,s.subject_level subjectLevel,s.subject_category subjectCategory,s.college,s.class_name className,s.teacher ");
|
|
|
+ sql.append(
|
|
|
+ " select s.sheet_count sheetCount,s.exam_number examNumber,s.exam_id examId,s.id,s.student_code studentCode,s.name");
|
|
|
+ sql.append(
|
|
|
+ " ,s.subject_code subjectCode,s.subject_name subjectName,s.is_upload upload,s.is_breach breach,s.is_absent absent,s.subjective_score subjectiveScore ");
|
|
|
+ sql.append(
|
|
|
+ " ,s.score_verify_time scoreVerifyTime,s.subjective_score_list subjectiveScoreList,s.objective_score objectiveScore,s.objective_score_list objectiveScoreList ");
|
|
|
+ sql.append(
|
|
|
+ " ,s.subject_level subjectLevel,s.subject_category subjectCategory,s.college,s.class_name className,s.teacher ");
|
|
|
sql.append(" ,s.exam_site examSite,s.exam_room examRoom,s.package_code packageCode");
|
|
|
sql.append(" from eb_exam_student s ");
|
|
|
sql.append(getWhereSql(req));
|
|
@@ -1492,7 +1512,8 @@ public class ExamStudentServiceImpl extends BaseQueryService<ExamStudent> implem
|
|
|
sql.append(" and s.upload_time is not null");
|
|
|
}
|
|
|
if (StringUtils.isNotBlank(query.getSubjectCodeIn())) {
|
|
|
- sql.append(" and s.subject_code in('" + StringUtils.join(query.getSubjectCodeIn().split(","), "','") + "')");
|
|
|
+ sql.append(
|
|
|
+ " and s.subject_code in('" + StringUtils.join(query.getSubjectCodeIn().split(","), "','") + "')");
|
|
|
}
|
|
|
if (StringUtils.isNotBlank(query.getCampusNameIn())) {
|
|
|
sql.append(" and s.campus_name in('" + StringUtils.join(query.getCampusNameIn().split(","), "','") + "')");
|
|
@@ -1509,8 +1530,8 @@ public class ExamStudentServiceImpl extends BaseQueryService<ExamStudent> implem
|
|
|
+ "')");
|
|
|
}
|
|
|
if (StringUtils.isNotBlank(query.getExamSiteNotIn())) {
|
|
|
- sql.append(" and s.exam_site not in('" + StringUtils.join(query.getExamSiteNotIn().split(","), "','")
|
|
|
- + "')");
|
|
|
+ sql.append(
|
|
|
+ " and s.exam_site not in('" + StringUtils.join(query.getExamSiteNotIn().split(","), "','") + "')");
|
|
|
}
|
|
|
if (StringUtils.isNotBlank(query.getPaperType())) {
|
|
|
sql.append(" and s.paper_type='" + query.getPaperType() + "'");
|
|
@@ -1588,4 +1609,23 @@ public class ExamStudentServiceImpl extends BaseQueryService<ExamStudent> implem
|
|
|
Long count = studentDao.sumSheetCountByExamIdAndExamSite(examId, examSite);
|
|
|
return count == null ? 0 : count;
|
|
|
}
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public List<String> findDistinctCollegeBySubjectCode(int examId, String subjectCode) {
|
|
|
+ return studentDao.findDistinctCollegeBySubjectCode(examId, subjectCode);
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public long countSheetCountByQuery(ExamStudentSearchQuery studentSearchQuery) {
|
|
|
+ checkQuery(studentSearchQuery);
|
|
|
+ if (studentSearchQuery.getSheetCount() != null) {
|
|
|
+ studentSearchQuery.setSheetCount(studentSearchQuery.getSheetCount() * 2);
|
|
|
+ }
|
|
|
+ StringBuilder sql = new StringBuilder();
|
|
|
+ sql.append("select sum(s.sheet_count) ");
|
|
|
+ sql.append("from eb_exam_student s ");
|
|
|
+ sql.append(getWhereSql(studentSearchQuery));
|
|
|
+ Query query = entityManager.createNativeQuery(sql.toString());
|
|
|
+ return Integer.valueOf(query.getResultList().get(0).toString()) / 2;
|
|
|
+ }
|
|
|
}
|