StringBuildersql=newStringBuilder("select * from exam_question where teacher_id=?");
StringBuildersql=newStringBuilder("select q.*,t.project_name,t.task_name from exam_question q left join training_task t on t.task_key=q.task_key where (q.source_type='PLATFORM' or (q.source_type='TEACHER' and q.teacher_id=?))");
List<Object>args=newArrayList<>();
args.add(teacher.getUserId());
if(StringUtils.isNotBlank(type)){validateType(type);sql.append(" and question_type=?");args.add(type);}
if(StringUtils.isNotBlank(keyword)){sql.append(" and stem like ?");args.add("%"+keyword.trim()+"%");}
sql.append(" order by update_time desc, id desc");
if(StringUtils.isNotBlank(type)){validateType(type);sql.append(" and q.question_type=?");args.add(type);}
if(StringUtils.isNotBlank(taskKey)){sql.append(" and q.task_key=?");args.add(taskKey);}
if(StringUtils.isNotBlank(keyword)){sql.append(" and q.stem like ?");args.add("%"+keyword.trim()+"%");}
sql.append(" order by q.update_time desc, q.id desc");
jdbc.update("insert into exam_question(school_id,teacher_id,question_type,stem,options_json,answer_json,answer_analysis,attachment_name,attachment_url) values(?,?,?,?,?,?,?,?,?)",
jdbc.update("insert into exam_question(school_id,teacher_id,source_type,task_key,question_type,stem,options_json,answer_json,answer_analysis,attachment_name,attachment_url) values(?,?,?,?,?,?,?,?,?,?,?)",
jdbc.update("update exam_question set question_type=?,stem=?,options_json=?,answer_json=?,answer_analysis=?,attachment_name=?,attachment_url=? where id=? and teacher_id=?",
jdbc.update("update exam_question set task_key=?,question_type=?,stem=?,options_json=?,answer_json=?,answer_analysis=?,attachment_name=?,attachment_url=? where id=? and teacher_id=? and source_type='TEACHER'",
jdbc.update("insert into exam_assessment(school_id,teacher_id,exam_name,start_time,end_time,allow_rollback,question_order_mode,option_order_mode,allow_copy_question,allow_paste_answer,multiple_score_mode) values(?,?,?,?,?,?,?,?,?,?,?)",
jdbc.update("update exam_assessment set exam_name=?,start_time=?,end_time=?,allow_rollback=? where id=?",name,start,end,allowRollback,id);
jdbc.update("update exam_assessment set exam_name=?,start_time=?,end_time=?,allow_rollback=?,question_order_mode=?,option_order_mode=?,allow_copy_question=?,allow_paste_answer=?,multiple_score_mode=? where id=?",name,start,end,allowRollback,questionOrderMode,optionOrderMode,allowCopyQuestion,allowPasteAnswer,multipleScoreMode,id);
jdbc.update("delete from exam_assessment_class where exam_id=?",id);
jdbc.update("delete from exam_assessment_question where exam_id=?",id);
"(select u.name from userinfo u where u.user_id=e.teacher_id collate utf8mb4_general_ci limit 1) teacher_name,"+
"(select group_concat(distinct s.class_name order by s.class_name separator '、') from exam_assessment_class ec join school_class s on s.school_class_id=ec.teaching_class_id collate utf8mb4_0900_ai_ci where ec.exam_id=e.id) class_names "+
"from exam_assessment e "+
"join exam_assessment_class c on c.exam_id=e.id join teaching_class_student t on t.teaching_class_id=c.teaching_class_id and t.status='IN_PROGRESS' "+
"left join exam_attempt a on a.exam_id=e.id and a.student_id=? where t.student_user_id=? and e.publication_status='PUBLISHED' order by e.start_time desc",
List<Map<String,Object>>rows=jdbc.query("select * from exam_question where id=? and teacher_id=?",(rs,n)->questionRow(rs,true),id,teacher.getUserId());
List<Map<String,Object>>rows=jdbc.query("select q.*,t.project_name,t.task_name from exam_question q left join training_task t on t.task_key=q.task_key where q.id=? and (q.source_type='PLATFORM' or (q.source_type='TEACHER' and q.teacher_id=?))",(rs,n)->questionRow(rs,true),id,teacher.getUserId());
StringBuildersql=newStringBuilder("select q.*,t.project_name,t.task_name from exam_question q left join training_task t on t.task_key=q.task_key where q.source_type='PLATFORM'");
List<Object>args=newArrayList<>();
if(StringUtils.isNotBlank(type)){validateType(type);sql.append(" and q.question_type=?");args.add(type);}
if(StringUtils.isNotBlank(taskKey)){sql.append(" and q.task_key=?");args.add(taskKey);}
if(StringUtils.isNotBlank(keyword)){sql.append(" and q.stem like ?");args.add("%"+keyword.trim()+"%");}
sql.append(" order by q.update_time desc,q.id desc");
List<Map<String,Object>>rows=jdbc.query("select q.*,t.project_name,t.task_name from exam_question q left join training_task t on t.task_key=q.task_key where q.id=? and q.source_type='PLATFORM'",(rs,n)->row(rs),id);
jdbc.update("insert into exam_question(school_id,teacher_id,source_type,task_key,question_type,stem,options_json,answer_json,answer_analysis,attachment_name,attachment_url) values(?,?,?,?,?,?,?,?,?,?,?)",
jdbc.update("update exam_question set task_key=?,question_type=?,stem=?,options_json=?,answer_json=?,answer_analysis=?,attachment_name=?,attachment_url=? where id=? and source_type='PLATFORM'",
privatevoidrequireTask(Stringkey){if(jdbc.queryForObject("select count(*) from training_task where task_key=?",Integer.class,key)==0)thrownewIllegalArgumentException("归属项目不存在");}