package com.qxueyou.scc.admin.examroom.service.impl; import com.qxueyou.scc.admin.examroom.model.ExamRoom; import com.qxueyou.scc.admin.examroom.service.IExamRoomService; import com.qxueyou.scc.base.model.Pager; import com.qxueyou.scc.base.model.Result; import com.qxueyou.scc.base.service.impl.CommonAppService; import com.qxueyou.scc.base.util.ClientUtils; import com.qxueyou.scc.base.util.CollectionUtils; import com.qxueyou.scc.base.util.TraceUtils; import com.qxueyou.scc.exam.model.ExamInfo; import org.springframework.stereotype.Service; import java.util.List; import java.util.Map; @Service public class ExamRoomService extends CommonAppService implements IExamRoomService { @Override public String add(ExamRoom examRoom) { TraceUtils.setCreateTrace(examRoom); examRoom.setStatus(ExamRoom.STATUS_PUBLISH); this.insert(examRoom); return examRoom.getExamroomId(); } @Override public Result update(ExamRoom examRoom) { ExamRoom newExamRoom = read(ExamRoom.class, examRoom.getExamroomId()); if (newExamRoom == null) { return new Result(false, "考场不存在"); } TraceUtils.setUpdateTrace(newExamRoom); newExamRoom.setExamroomName(examRoom.getExamroomName()); newExamRoom.setSeatsNum(examRoom.getSeatsNum()); return save(newExamRoom); } @Override public Result delete(String[] examroomIds) { Result result = new Result(true); if (examroomIds != null && examroomIds.length > 0) { String hql = "update ExamRoom set deleteFlag = true where examroomId=?"; result = bulkUpdateInLoop(hql, examroomIds); } return result; } @Override public Result doRelease(String[] examroomIds) { if(examroomIds==null || examroomIds.length==0){ return new Result(false, "没有选择要发布的考场"); } List lstClsRoom = this.findByComplexHql("from ExamRoom where examroomId in (:examroomIds)", CollectionUtils.newObjectMap("examroomIds",examroomIds), ExamRoom.class); for (ExamRoom room : lstClsRoom) { if (ExamInfo.STATUS_DRAFT != room.getStatus()) { return new Result(false, "只有草稿状态的考场,才能发布。"); } room.setStatus(ExamRoom.STATUS_PUBLISH); TraceUtils.setUpdateTrace(room); save(room); } return new Result(true); } @Override public Result doCancel(String[] examroomIds) { if(examroomIds==null || examroomIds.length==0){ return new Result(false, "没有选择要撤回的考场"); } List lstClsRoom = this.findByComplexHql("from ExamRoom where examroomId in (:examroomIds)", CollectionUtils.newObjectMap("examroomIds",examroomIds), ExamRoom.class); for (ExamRoom room : lstClsRoom) { if (ExamInfo.STATUS_PUBLISH != room.getStatus()) { return new Result(false, "只有发布状态的 考场,才能撤回"); } room.setStatus(ExamInfo.STATUS_DRAFT); TraceUtils.setUpdateTrace(room); save(room); } return new Result(true); } @Override public List list(String roomID, String keyword, Short status, Integer pageSize, Integer pageNum) { StringBuffer hql = new StringBuffer(500); hql.append(" from ExamRoom where createId=? and roomId =? "); List params = CollectionUtils.newList(ClientUtils.getUserId(),roomID); if(status!=null){ hql.append(" and status = ? "); params.add(status); } hql.append(" and deleteFlag is false order by createTime desc"); return findList(hql.toString(),new Pager(pageSize, pageNum),params, ExamRoom.class); } @Override public int listCount(String roomID, String keyword, Short status) { StringBuffer hql = new StringBuffer(500); hql.append(" from ExamRoom where createId=? and roomId =? "); List params = CollectionUtils.newList(ClientUtils.getUserId(),roomID); if(status!=null){ hql.append(" and status = ? "); params.add(status); } /** * */ hql.append(" and deleteFlag is false "); return findCount(hql.toString(),params); } @Override public ExamRoom detail(String roomId) { return this.read(ExamRoom.class,roomId); } @Override public List> queryAllRoomIdAndNames(){ StringBuffer hql = new StringBuffer(500); hql.append("select examroomId as examroomId,examroomName as examroomName from ExamRoom where status = :status and deleteFlag is false "); return this.findListWithMapByHql(hql.toString(), CollectionUtils.newObjectMap("status", ExamRoom.STATUS_PUBLISH)); } }