/****************************************************************************** * Copyright (C) 2015 Shenzhen Penguin Network Technology Co., Ltd * All Rights Reserved. * 本软件为深圳市企鹅网络科技有限公司开发研制。未经本公司正式书面同意,其他任何个人、团体 * 不得使用、复制、修改或发布本软件. *****************************************************************************/ package com.qxueyou.scc.exercise.dao; import java.text.ParseException; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import org.hibernate.SQLQuery; import org.hibernate.Session; import org.hibernate.transform.Transformers; import org.springframework.orm.hibernate4.HibernateCallback; import org.springframework.stereotype.Repository; import com.qxueyou.scc.base.dao.BaseDAO; import com.qxueyou.scc.base.model.Pager; import com.qxueyou.scc.base.model.Result; import com.qxueyou.scc.base.util.DateUtils; import com.qxueyou.scc.exercise.model.ExerciseAnalisisResult; import com.qxueyou.scc.exercise.model.ExerciseGroup; import com.qxueyou.scc.exercise.model.ExerciseGroupItemRe; import com.qxueyou.scc.exercise.model.ExerciseItem; @Repository(value="exerciseDAO") /** * 自动注入sessionFactory * * @author 邓志永 * @since JDK1.6 * @history 2010-07-28 夏德虎 新建 */ public class ExerciseDAO extends BaseDAO { /** * 组装查询练习题目 顺序、随机练习 * @return */ @SuppressWarnings("unchecked") public List queryExtendExerciseItem(String hql, List args) { List lstitems = new ArrayList(); ExerciseItem item; List lst = (List) this.getHibernateTemplate().find(hql, args.toArray()); ExerciseAnalisisResult analisisResult=null; for (Object[] obj : lst) { item = (ExerciseItem) obj[0]; item.setExerciseExtendId(String.valueOf(obj[1])); item.setExerciseRecordId(String.valueOf(obj[2])); analisisResult= new ExerciseAnalisisResult(); analisisResult.setCurrTitleNumber(String.valueOf(obj[3] == null ? 0 :obj[3])); analisisResult.setExerAccuracy(String.valueOf(obj[4] == null ? 0 :obj[4])); analisisResult.setExerCorrectCount(String.valueOf(obj[5] == null ? 0 :obj[5])); item.setAnalisisResult(analisisResult); lstitems.add(item); } return lstitems; } /** *查询错题 收藏对应的练习记录 * @return * @throws ParseException */ @SuppressWarnings({ "unchecked"}) public List queryExerciceItemList(String hql, List args){ List lstitems = new ArrayList(); ExerciseItem item; List lst = (List) this.getHibernateTemplate().find(hql, args.toArray()); try { for (Object[] obj : lst) { item = (ExerciseItem) obj[0]; item.setExerciseGroupId(String.valueOf(obj[1])); item.setUpdateTime(DateUtils.convertStringToDate(String.valueOf(obj[2]), "yyyy-MM-dd HH:mm:ss")); lstitems.add(item); } } catch (Exception e) { } return lstitems; } /** * 根据hql查询,返回列表分页数据 * * @param hql 查询语句 * @param args 参数 * @param cls 返回类型 * @return */ @SuppressWarnings("unchecked") public List> queryRecentRecords(final String sql, final Pager page, final List args) { // 查询得到结果 List resultLst = this.getHibernateTemplate().execute( new HibernateCallback>() { public List doInHibernate(Session session) { SQLQuery query = session.createSQLQuery(sql); int i = 0; for (Object arg : args) { query.setParameter(i++, arg); } query.setFirstResult(page.getPageSize() * (page.getPageNum() - 1)); query.setMaxResults(page.getPageSize()); return query.list(); } }); List> lst = new ArrayList>(); Map map = null; for (Object[] obj : resultLst) { map = new HashMap(); map.put("groupId", String.valueOf(obj[0])); map.put("type", String.valueOf(obj[1])); map.put("name", String.valueOf(obj[2])); map.put("recordId", String.valueOf(obj[3])); map.put("attribute2", String.valueOf(obj[4])); map.put("attribute1", String.valueOf(obj[5])); map.put("schedule", String.valueOf(obj[6])); map.put("allCount", String.valueOf(obj[7])); lst.add(map); } return lst; } /** * 根据hql查询,返回列表分页数据 * * @param hql 查询语句 * @param args 参数 * @param cls 返回类型 * @return */ @SuppressWarnings({"unchecked" }) public List> queryExerciseRecentRecords(final String sql, final List args) { // 查询得到结果 List resultLst = this.getHibernateTemplate().execute(new HibernateCallback>() { public List doInHibernate(Session session) { SQLQuery query = session.createSQLQuery(sql); int i = 0; for (Object arg : args) { query.setParameter(i++, arg); } return query.list(); } }); List> lst = new ArrayList>(); Map map = null; for (Object[] obj : resultLst) { map = new HashMap(); map.put("groupId", String.valueOf(obj[0])); map.put("titleMaxNumber", String.valueOf(obj[1])); map.put("status", String.valueOf(obj[2])); map.put("doCount", String.valueOf(obj[3])); lst.add(map); } return lst; } /** *查询练习列表,还需查询联系下面习题个数 * @return */ @SuppressWarnings("unchecked") public List queryExerciceGroupList(String sql,List args) { Session session = this.getSessionFactory().getCurrentSession(); SQLQuery query = session.createSQLQuery(sql); query.setResultTransformer(Transformers.aliasToBean(ExerciseGroup.class)); for(int i = 0;args !=null && i < args.size() ; i++ ){ query.setParameter(i, args.get(i)); } return query.list(); } public Result deleteExerciseItemRe(ExerciseGroupItemRe objExerciseItemRe){ this.getHibernateTemplate().delete(objExerciseItemRe); return new Result(true); } }