- public class ExamLogDaoImpl implements ExamLogDao{
- @Autowired
- private MongoTemplate mongoTemplate;
- /**
- * 进入考试
- * return uuid
- */
- @Override
- public String enterExamLog(Object[] args) {
- Date date=new Date();
- DateFormat format=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
- String logUuid=RText.getUUID();//自动生成uuid
- String enterTime=format.format(date); //系统当前时间
- Log_Exam_Base examL=new Log_Exam_Base();
- examL.setLogUuid(logUuid);
- examL.setExamId(ObjectUtils.toString(args[0], ""));
- examL.setExamName(ObjectUtils.toString(args[1], ""));
- examL.setEgid(ObjectUtils.toString(args[2], ""));
- examL.setUserId(ObjectUtils.toString(args[3], ""));
- examL.setUserName(ObjectUtils.toString(args[4], ""));
- examL.setAccount(ObjectUtils.toString(args[5], ""));
- examL.setClientIp(ServletActionContext.getRequest().getRemoteAddr());
- examL.setEnterTime(enterTime);
- mongoTemplate.insert(examL, "ExamLog");//自定义集合名插入文档
- return logUuid;
- }
- /**
- * 退出考试
- */
- @Override
- public void exitExamLog(Object[] args) {
- Date date=new Date();
- DateFormat format=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
- String exitTime=format.format(date); //系统当前时间
- Query query = new Query(Criteria.where("logUuid").is(ObjectUtils.toString(args[0], "")));
- Update update = new Update().set("exitTime", exitTime);
- WriteResult r=mongoTemplate.upsert(query, update, "ExamLog");//根据字段修改文档
- }
- /**
- * 答题操作
- */
- @Override
- public void answerTopicLog(Object[] args) {
- Date date=new Date();
- DateFormat format=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
- String exitTime=format.format(date); //系统当前时间
- Log_Exam_Operation eolM=new Log_Exam_Operation();
- eolM.setOperationTime(exitTime);
- eolM.setTopicId(ObjectUtils.toString(args[1], ""));
- eolM.setTopic(ObjectUtils.toString(args[2], ""));
- eolM.setAnswer(ObjectUtils.toString(args[3], ""));
- eolM.setAnswerContent(ObjectUtils.toString(args[4], ""));
- Query query = Query.query(Criteria.where("logUuid").is(ObjectUtils.toString(args[0], "")));
- Update update = new Update().addToSet("operation", eolM);
- WriteResult r=mongoTemplate.upsert(query, update, "ExamLog");//根据某一字段往内嵌文档增加一条数据
- }
- /**
- * 日志列表
- */
- @Override
- public PageObject getExamLogPageObject(Object[] args,Map req) {
- int totalCount = 1;
- int start = NumberUtils.toInt(ObjectUtils.toString(req.get("start"),"0"));
- int limit = NumberUtils.toInt(ObjectUtils.toString(req.get("limit"),"25"));
- List returnValue = ;
- try {
- Query query = new Query().limit(limit);//分页条数设置
- if(args.length>=3){//条件模糊查询
- if(args[0]!=&&!"".equals(ObjectUtils.toString(args[0]))){
- query.addCriteria(new Criteria("account").regex(".*?" + ObjectUtils.toString(args[0]) + ".*"));
- }
- if(args[1]!=&&!"".equals(ObjectUtils.toString(args[1]))){
- query.addCriteria(new Criteria("userName").regex(".*?" + ObjectUtils.toString(args[1]) + ".*"));
- }
- if(args[2]!=&&!"".equals(ObjectUtils.toString(args[2]))){
- query.addCriteria(new Criteria("examName").regex(".*?" + ObjectUtils.toString(args[2]) + ".*"));
- }
- }
- query.skip(start);//跳过前start条数据
- query.sort().on("enterTime", Order.DESCENDING);//按进入时间倒序排序
- returnValue = mongoTemplate.find(query, Log_Exam_Base.class, "ExamLog");
- totalCount = (int) mongoTemplate.count(query, "ExamLog");
- } catch (Exception e) {
- e.printStackTrace();
- }
- PageObject page = new PageObject();
- page.setDatasource(returnValue);
- page.setTotalCount(totalCount);
- int _absolutePage = (int)Math.ceil(totalCount * 1.0/limit);
- page.setAbsolutePage(_absolutePage);
- int _currentPage = start/limit + 1;
- page.setCurrentPage(_currentPage);
- return page;
- }
- @Override
- public List getExamLogList(Object[] args) {
- List returnValue = ;
- try {
- Query query = new Query().limit(60000);
- if(args.length>=3){
- if(args[0]!=&&!"".equals(ObjectUtils.toString(args[0]))){
- query.addCriteria(new Criteria("account").regex(".*?" + ObjectUtils.toString(args[0]) + ".*"));
- }
- if(args[1]!=&&!"".equals(ObjectUtils.toString(args[1]))){
- query.addCriteria(new Criteria("userName").regex(".*?" + ObjectUtils.toString(args[1]) + ".*"));
- }
- if(args[2]!=&&!"".equals(ObjectUtils.toString(args[2]))){
- query.addCriteria(new Criteria("examName").regex(".*?" + ObjectUtils.toString(args[2]) + ".*"));
- }
- }
- query.sort().on("enterTime", Order.DESCENDING);//按进入时间倒序排序
- returnValue = mongoTemplate.find(query, Log_Exam_Base.class, "ExamLog");
- } catch (Exception e) {
- e.printStackTrace();
- }
- return returnValue;
- }
- /**
- * 获取内嵌子文档列表数据
- */
- @Override
- public PageObject getExamOperation(Object[] args, Map req) {
- int totalCount = 1;
- int start = NumberUtils.toInt(ObjectUtils.toString(req.get("start"),"0"));
- int limit = NumberUtils.toInt(ObjectUtils.toString(req.get("limit"),"25"));
- List returnValue = ;
- try {
- Query query = new Query().limit(limit);
- query.addCriteria(Criteria.where("logUuid").is(ObjectUtils.toString(args[0], "")));
- query.skip(start);
- query.sort().on("operationTime", Order.DESCENDING);//按操作时间倒序排序
- List exmL = mongoTemplate.find(query, Log_Exam_Base.class, "ExamLog");
- if(exmL.size()>0){
- Log_Exam_Base em=(Log_Exam_Base) exmL.get(0);
- returnValue=em.getOperation();
- }
- if(returnValue!=){
- totalCount = returnValue.size();
- }
- } catch (Exception e) {
- e.printStackTrace();
- }
- PageObject page = new PageObject();
- page.setDatasource(returnValue);
- page.setTotalCount(totalCount);
- int _absolutePage = (int)Math.ceil(totalCount * 1.0/limit);
- page.setAbsolutePage(_absolutePage);
- int _currentPage = start/limit + 1;
- page.setCurrentPage(_currentPage);
- return page;
- }
- }
- public class Log_Exam_Base extends BaseLog{
- private String examId;//考试id
- private String examName;//考试名称
- private String enterTime;//进入时间
- private String exitTime;//退出时间
- private String egid;//成绩id
- private List<Log_Exam_Operation> operation;//答题操作集合
- public String getExamId() {
- return examId;
- }
- public void setExamId(String examId) {
- this.examId = examId;
- }
- public String getEnterTime() {
- return enterTime;
- }
- public void setEnterTime(String enterTime) {
- this.enterTime = enterTime;
- }
- public String getExitTime() {
- return exitTime;
- }
- public void setExitTime(String exitTime) {
- this.exitTime = exitTime;
- }
- public List<Log_Exam_Operation> getOperation() {
- return operation;
- }
- public void setOperation(List<Log_Exam_Operation> operation) {
- this.operation = operation;
- }
- public String getEgid() {
- return egid;
- }
- public void setEgid(String egid) {
- this.egid = egid;
- }
- public String getExamName() {
- return examName;
- }
- public void setExamName(String examName) {
- this.examName = examName;
- }
- }