版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_24192465/article/details/81667909
@Override
public List<ExaminationQry> findExaminationAndStatus(Long schCode, Long boeCode, String examType, String grade,
List<SortEntity> sortEntitys, Integer from, Integer size) {
Map<String, Object> map = new HashMap<String, Object>();
if(schCode != null){
map.put("schools.schCode", schCode);
}else if(boeCode != null){
map.put("bureaus.boeCode", boeCode);
}
if (!examType.equals("0")) {
map.put("examType.code", examType);
}
if (!grade.equals("0")) {
map.put("grade.code", grade);
}
Search search = buildSearch(getIndex(EsConfig.INDEX_BIZ_EXAM_DATA),
getType(EsConfig.TYPE_BED_EXAMINATION),
map);
JSONArray array = eao.query(search);
List<ExaminationQry> result = new ArrayList<>();
Iterator<Object> it = array.iterator();
while (it.hasNext()) {
ExaminationQry examination = fixBean((JSONObject) it.next(), schCode, boeCode);// 补充bean的部分从其它表获取的数据
result.add(examination);
}
return result;
}
private ExaminationQry fixBean(JSONObject json, Long schCode, Long boeCode) {
Examination examination = (Examination) BaseEntity.fromDocument(json, Examination.class);
ExaminationQry examinationQry = rdasDataFixService.fix(examination,schCode,boeCode);
return examinationQry;
}
/**
* 补充业务数据-考试的考卷和状态信息
*
* @param examination
* 业务数据-考试数据
* @return ExaminationQry
*/
public ExaminationQry fix(Examination examination, Long schCode, Long boeCode){
if(examination==null)return null;
ExaminationQry examinationQry=new ExaminationQry();
examinationQry.setExamination(examination);
// 状态
if(examination.getExamCode()!=null ){
List<ExaminationStatus> examinationStatus = examinationStatusService.findExaminationStatuses(examination.getExamCode(),null, schCode, boeCode);
examinationQry.setExaminationStatus(examinationStatus);
}
return examinationQry;
}
@Override
public List<ExaminationStatus> findExaminationStatuses(Long examCode,Long paperCode, Long schCode, Long boeCode) {
Map<String, Object> map = new HashMap<String, Object>();
if(schCode != null){
map.put("schCode", schCode);
}else if (boeCode != null){
map.put("boeCode", boeCode);
}
map.put("examCode", examCode);
Search search = buildSearch(getIndex(EsConfig.INDEX_BIZ_EXAM_DATA),
getType(EsConfig.TYPE_BED_EXAMINATION_STATUS),
map);
JSONArray array = eao.query(search);
List<ExaminationStatus> result = new ArrayList<>();
Iterator<Object> it = array.iterator();
while (it.hasNext()) {
ExaminationStatus examinationStatus=fixExaminationBean((JSONObject) it.next());//补充bean的部分从其它表获取的数据
result.add(examinationStatus);
}
return result;
}
//补充bean的部分从其它表获取的数据
private ExaminationStatus fixExaminationBean(JSONObject json) {
ExaminationStatus examinationStatus=(ExaminationStatus) BaseEntity.fromDocument(json, ExaminationStatus.class);
examinationStatus=rdasDataFixService.fix(examinationStatus);
return examinationStatus;
}
/**
* 补充考试状态的试卷信息
*
* @return
*/
@Override
public com.moofen.core.entity.biz.exam.ExaminationStatus fix(com.moofen.core.entity.biz.exam.ExaminationStatus examinationStatus) {
if(examinationStatus==null)return null;
// 试卷
if(examinationStatus.getPaper()!=null && examinationStatus.getPaper().getPaperCode()!=null){
Paper paper = paperService.getPaper(examinationStatus.getPaper().getPaperCode());
examinationStatus.setPaper(paper);// 试卷
}
return examinationStatus;
}
@Override
public Paper getPaper(Long paperCode) {
String paperType = getType(EsConfig.TYPE_BED_PAPER);
String itemType = getType(EsConfig.TYPE_BED_ITEM);
Search search = SearchBuilder.preparSearch(getIndex(EsConfig.INDEX_BIZ_EXAM_DATA))
.setTypes(paperType, itemType)
.setQuery(QueryBuilder.term("paperCode", paperCode));
JSONArray array = eao.query(search);
Paper result = null;
List<Item> items = new ArrayList<Item>();
for (int i = 0; i < array.size(); i++) {
JSONObject json = array.getJSONObject(i);
if (paperType.equalsIgnoreCase(json.getString(EsConstant.TYPE)))
result = json.toJavaObject(Paper.class);
else
items.add((Item)BaseEntity.fromDocument(json, Item.class));
// items.add(json.toJavaObject(Item.class));
}
if (null == result)
return null;
result.setItems(items);
return result;
}
package com.moofen.core.entity.biz.exam;
import java.util.List;
import com.moofen.core.entity.BaseEntity;
public class ExaminationQry extends BaseEntity {
private static final long serialVersionUID = 1373036662349731849L;
private Examination examination; // 考试
private List<ExaminationStatus> examinationStatus; // 考试分析状态
public List<ExaminationStatus> getExaminationStatus() {
return examinationStatus;
}
public void setExaminationStatus(List<ExaminationStatus> examinationStatus) {
this.examinationStatus = examinationStatus;
}
public Examination getExamination() {
return examination;
}
public void setExamination(Examination examination) {
this.examination = examination;
}
}
/**
* Copyright (C) 2017 上海牧分信息科技有限公司版权所有
*
* 项目: Moofen Core Module
* 文件:com.moofen.core.entity.biz.exam.ExaminationStatus.java
* 描述:考试分析状态
* 作者:Chen Xiaoming
* 日期:2018年6月27日
*
*/
package com.moofen.core.entity.biz.exam;
import java.util.HashMap;
import java.util.Map;
import com.alibaba.fastjson.annotation.JSONField;
import com.moofen.core.entity.BaseEntity;
public class ExaminationStatus extends BaseEntity {
private static final long serialVersionUID = 4470772531841794089L;
private Examination examination; // 考试编号
private Paper paper; // 试卷
private Long boeCode; // 局编号
private Long schCode; // 学校编号
private Integer totalScoreStatus; // 总分导入状态:0-未导入 1-已导入
private Integer detailScoreStatus; // 详分导入状态:0-未导入 1-已导入
private Integer answerStatus; // 客观题作答导入状态:0-未导入 1-已导入
private Integer analyzeStatus; // 分析状态: 0-未分析 1-已分析
public Examination getExamination() {
return examination;
}
public void setExamination(Examination examination) {
this.examination = examination;
}
public Long getBoeCode() {
return boeCode;
}
public void setBoeCode(Long boeCode) {
this.boeCode = boeCode;
}
public Long getSchCode() {
return schCode;
}
public void setSchCode(Long schCode) {
this.schCode = schCode;
}
public Integer getAnalyzeStatus() {
return analyzeStatus;
}
public void setAnalyzeStatus(Integer analyzeStatus) {
this.analyzeStatus = analyzeStatus;
}
public Integer getTotalScoreStatus() {
return totalScoreStatus;
}
public void setTotalScoreStatus(Integer totalScoreStatus) {
this.totalScoreStatus = totalScoreStatus;
}
public Integer getDetailScoreStatus() {
return detailScoreStatus;
}
public void setDetailScoreStatus(Integer detailScoreStatus) {
this.detailScoreStatus = detailScoreStatus;
}
public Integer getAnswerStatus() {
return answerStatus;
}
public void setAnswerStatus(Integer answerStatus) {
this.answerStatus = answerStatus;
}
public Paper getPaper() {
return paper;
}
public void setPaper(Paper paper) {
this.paper = paper;
}
@JSONField(serialize = false)
@Override
public Map<String, String> getFieldMapping() {
Map<String, String> result = new HashMap<String, String>();
result.put("id", "id");
result.put("schCode", "schCode");
result.put("examCode", "examination.examCode");
result.put("paperCode", "paper.paperCode");
result.put("boeCode", "boeCode");
result.put("schCode", "schCode");
result.put("totalScoreStatus", "totalScoreStatus");
result.put("detailScoreStatus", "detailScoreStatus");
result.put("answerStatus", "answerStatus");
result.put("analyzeStatus", "analyzeStatus");
return result;
}
}
/**
* Copyright (C) 2017 上海牧分信息科技有限公司版权所有
*
* 项目: Moofen Bean Module
* 文件:com.moofen.core.entity.biz.exam.Paper.java
* 描述:试卷
* 作者:Chen Xiaoming
* 日期:2018年5月14日
*
*/
package com.moofen.core.entity.biz.exam;
import java.util.List;
import com.alibaba.fastjson.JSONObject;
import com.moofen.core.entity.BaseEntity;
import com.moofen.core.entity.CodeNameEntity;
import com.moofen.core.entity.sys.base.Subject;
import com.moofen.core.entity.sys.sch.Grade;
import com.moofen.core.entity.sys.sch.Term;
public class Paper extends BaseEntity {
private static final long serialVersionUID = -2256761766321815950L;
public final static Integer PAPER_TYPE_EXAMINATION = 1; // 考试卷
public final static Integer PAPER_TYPE_RESOURCE = 2; // 资源卷
// 试卷难度
public final static Integer DIFFICULTY_1 = 1; // 易
public final static Integer DIFFICULTY_2 = 2; // 偏易
public final static Integer DIFFICULTY_3 = 3; // 适中
public final static Integer DIFFICULTY_4 = 4; // 偏难
public final static Integer DIFFICULTY_5 = 5; // 难
private Long paperCode; // 试卷编号
private String paperName; // 试卷名称
private Subject subject; // 学科
private Grade grade; // 年级
private Term term; // 学期
private Integer difficulty; // 难度
private Integer score; // 总分
private Integer paperType; // 试卷类型 [1-考试卷 2-资源卷]
private Boolean itemStatus; // 试卷结构是否导入
private Boolean questionStatus; // 试题是否导入
private String remarks; // 备注
private Long createTime; // 创建时间
private List<Item> items = null;
public Subject getSubject() {
return subject;
}
public void setSubject(Subject subject) {
this.subject = subject;
}
public Grade getGrade() {
return grade;
}
public void setGrade(Grade grade) {
this.grade = grade;
}
public Term getTerm() {
return term;
}
public void setTerm(Term term) {
this.term = term;
}
public Long getPaperCode() {
return paperCode;
}
public void setPaperCode(Long paperCode) {
this.paperCode = paperCode;
}
public String getPaperName() {
return paperName;
}
public void setPaperName(String paperName) {
this.paperName = paperName;
}
public Integer getDifficulty() {
return difficulty;
}
public void setDifficulty(Integer difficulty) {
this.difficulty = difficulty;
}
public Integer getScore() {
return score;
}
public void setScore(Integer score) {
this.score = score;
}
public String getRemarks() {
return remarks;
}
public void setRemarks(String remarks) {
this.remarks = remarks;
}
public Long getCreateTime() {
return createTime;
}
public void setCreateTime(Long createTime) {
this.createTime = createTime;
}
public List<Item> getItems() {
return items;
}
public void setItems(List<Item> items) {
this.items = items;
}
public Integer getPaperType() {
return paperType;
}
public void setPaperType(Integer paperType) {
this.paperType = paperType;
}
public Boolean getItemStatus() {
return itemStatus;
}
public void setItemStatus(Boolean itemStatus) {
this.itemStatus = itemStatus;
}
public Boolean getQuestionStatus() {
return questionStatus;
}
public void setQuestionStatus(Boolean questionStatus) {
this.questionStatus = questionStatus;
}
@Override
public JSONObject toDocument() {
JSONObject result = new JSONObject();
result.put("id", (null == getId()) ? null : getId());
result.put("paperCode", (null == getPaperCode()) ? null : getPaperCode());
result.put("paperName", (null == getPaperName()) ? null : getPaperName());
result.put("subject", CodeNameEntity.toJsonObject(getSubject()));
result.put("grade", CodeNameEntity.toJsonObject(getGrade()));
result.put("term", CodeNameEntity.toJsonObject(getTerm()));
result.put("difficulty", (null == getDifficulty()) ? null : getDifficulty());
result.put("score", (null == getScore()) ? null : getScore());
result.put("paperType", (null == getPaperType()) ? null : getPaperType());
result.put("itemStatus", (null == getItemStatus()) ? null : getItemStatus());
result.put("questionStatus", (null == getQuestionStatus()) ? null : getQuestionStatus());
result.put("createTime", (null == getCreateTime()) ? null : getCreateTime());
result.put("remarks", (null == getRemarks()) ? null : getRemarks());
return result;
}
}
protected Search buildSearch(String index, String type, Map<String, Object> conds) {
return buildSearch(index, type, null, null, conds, null, null, null);
}
protected Search buildSearch(String index, String type, String schCode, String yearIn, Map<String, Object> conds, List<SortEntity> sortEntitys, Integer from, Integer size) {
Search search = SearchBuilder.preparSearch(index).setTypes(type);
List<Query> queryList = buildQuery(conds);
if (0 == queryList.size()) {
search.setQuery(QueryBuilder.matchAll());
} else if (1 == queryList.size()) {
search.setQuery(queryList.get(0));
} else {
BoolQuery boolQuery = QueryBuilder.bool();
for (Query query : queryList)
boolQuery.must(query);
search.setQuery(boolQuery);
}
if (sortEntitys != null && sortEntitys.size() > 0) {
for (SortEntity aSortEntity : sortEntitys) {
search.addSort(aSortEntity.getFieldName(), aSortEntity.getFieldOrder());
}
}
if (null != from)
search.setFrom(from);
if (null != size)
search.setSize(size);
return search;
}
protected List<Query> buildQuery(Map<String, Object> conds) {
List<Query> result = new ArrayList<Query>();
if ((null == conds) || (conds.keySet().size() == 0))
return result;
for (String key : conds.keySet()) {
Object value = conds.get(key);
if (value != null){
result.add(QueryBuilder.term(key, value));
}
}
return result;
}