|
|
|
@ -1,6 +1,7 @@
|
|
|
|
|
package com.ibeetl.jlw.web;
|
|
|
|
|
|
|
|
|
|
import cn.hutool.core.lang.Assert;
|
|
|
|
|
import cn.hutool.core.util.ObjectUtil;
|
|
|
|
|
import cn.hutool.core.util.StrUtil;
|
|
|
|
|
import cn.jlw.Interceptor.GetFile;
|
|
|
|
|
import cn.jlw.Interceptor.RFile;
|
|
|
|
@ -22,6 +23,7 @@ import com.ibeetl.jlw.enums.MatchTypeEnum;
|
|
|
|
|
import com.ibeetl.jlw.enums.QuestionBusinessTypeEnum;
|
|
|
|
|
import com.ibeetl.jlw.service.CourseInfoService;
|
|
|
|
|
import com.ibeetl.jlw.service.ResourcesQuestionService;
|
|
|
|
|
import com.ibeetl.jlw.service.TeacherOpenCourseMergeResourcesQuestionService;
|
|
|
|
|
import com.ibeetl.jlw.service.UniversitiesCollegesJurisdictionCurriculumResourcesService;
|
|
|
|
|
import com.ibeetl.jlw.web.query.CourseInfoQuery;
|
|
|
|
|
import com.ibeetl.jlw.web.query.ResourcesQuestionQuery;
|
|
|
|
@ -61,20 +63,26 @@ import static com.ibeetl.admin.core.util.StreamUtils.listJoin;
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
@Controller
|
|
|
|
|
public class ResourcesQuestionController{
|
|
|
|
|
public class ResourcesQuestionController {
|
|
|
|
|
|
|
|
|
|
private final Log log = LogFactory.getLog(this.getClass());
|
|
|
|
|
private static final String MODEL = "/jlw/resourcesQuestion";
|
|
|
|
|
private static final String API = "/api/resourcesQuestion";
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@Autowired private ResourcesQuestionService resourcesQuestionService;
|
|
|
|
|
|
|
|
|
|
@Autowired
|
|
|
|
|
private ResourcesQuestionService resourcesQuestionService;
|
|
|
|
|
|
|
|
|
|
@Autowired
|
|
|
|
|
FileService fileService;
|
|
|
|
|
|
|
|
|
|
@Autowired private CourseInfoService courseInfoService;
|
|
|
|
|
@Autowired private UniversitiesCollegesJurisdictionCurriculumResourcesService universitiesCollegesJurisdictionCurriculumResourcesService;
|
|
|
|
|
@Autowired
|
|
|
|
|
private CourseInfoService courseInfoService;
|
|
|
|
|
@Autowired
|
|
|
|
|
private UniversitiesCollegesJurisdictionCurriculumResourcesService universitiesCollegesJurisdictionCurriculumResourcesService;
|
|
|
|
|
|
|
|
|
|
@Autowired
|
|
|
|
|
private TeacherOpenCourseMergeResourcesQuestionService teacherOpenCourseMergeResourcesQuestionService;
|
|
|
|
|
|
|
|
|
|
/* 前端接口 */
|
|
|
|
|
|
|
|
|
@ -86,7 +94,7 @@ public class ResourcesQuestionController{
|
|
|
|
|
@Function("resourcesQuestion.query")
|
|
|
|
|
@ResponseBody
|
|
|
|
|
public ModelAndView index() {
|
|
|
|
|
ModelAndView view = new ModelAndView("/jlw/resourcesQuestion/index.html") ;
|
|
|
|
|
ModelAndView view = new ModelAndView("/jlw/resourcesQuestion/index.html");
|
|
|
|
|
view.addObject("search", ResourcesQuestionQuery.class.getName());
|
|
|
|
|
return view;
|
|
|
|
|
}
|
|
|
|
@ -106,18 +114,18 @@ public class ResourcesQuestionController{
|
|
|
|
|
@ResponseBody
|
|
|
|
|
public ModelAndView add(Long resourcesQuestionId) {
|
|
|
|
|
ModelAndView view = new ModelAndView("/jlw/resourcesQuestion/add.html");
|
|
|
|
|
if(null != resourcesQuestionId){
|
|
|
|
|
if (null != resourcesQuestionId) {
|
|
|
|
|
ResourcesQuestion resourcesQuestion = resourcesQuestionService.queryById(resourcesQuestionId);
|
|
|
|
|
view.addObject("resourcesQuestion", resourcesQuestion);
|
|
|
|
|
CourseInfo courseInfo = courseInfoService.queryById(resourcesQuestion.getCourseInfoId());
|
|
|
|
|
if(courseInfo != null && courseInfo.getCourseInfoParentId() != null){ //父节点不为空时 说明当前属于是子节点 否则是父节点
|
|
|
|
|
if (courseInfo != null && courseInfo.getCourseInfoParentId() != null) { //父节点不为空时 说明当前属于是子节点 否则是父节点
|
|
|
|
|
view.addObject("courseInfoId", courseInfo.getCourseInfoParentId());
|
|
|
|
|
view.addObject("childNode", courseInfo.getCourseInfoId());
|
|
|
|
|
}else {
|
|
|
|
|
view.addObject("courseInfoId", courseInfo != null?courseInfo.getCourseInfoId():null);
|
|
|
|
|
} else {
|
|
|
|
|
view.addObject("courseInfoId", courseInfo != null ? courseInfo.getCourseInfoId() : null);
|
|
|
|
|
view.addObject("childNode", null);
|
|
|
|
|
}
|
|
|
|
|
}else {
|
|
|
|
|
} else {
|
|
|
|
|
view.addObject("resourcesQuestion", new ResourcesQuestion());
|
|
|
|
|
view.addObject("courseInfoId", null);
|
|
|
|
|
view.addObject("childNode", null);
|
|
|
|
@ -138,7 +146,7 @@ public class ResourcesQuestionController{
|
|
|
|
|
@GetMapping(MODEL + "/questionBank.do")
|
|
|
|
|
@Function("resourcesQuestion.query")
|
|
|
|
|
@ResponseBody
|
|
|
|
|
public ModelAndView questionBank(Long courseInfoId,Long resourcesQuestionId,Integer type) {
|
|
|
|
|
public ModelAndView questionBank(Long courseInfoId, Long resourcesQuestionId, Integer type) {
|
|
|
|
|
ModelAndView view = new ModelAndView("/jlw/previewPage/questionBank.html");
|
|
|
|
|
view.addObject("courseInfoId", courseInfoId);
|
|
|
|
|
view.addObject("resourcesQuestionId", resourcesQuestionId);
|
|
|
|
@ -148,7 +156,7 @@ public class ResourcesQuestionController{
|
|
|
|
|
|
|
|
|
|
@PostMapping(API + "/list.do")
|
|
|
|
|
@ResponseBody
|
|
|
|
|
public JsonResult<PageQuery> listDo(ResourcesQuestionQuery condition, @SCoreUser CoreUser coreUser){
|
|
|
|
|
public JsonResult<PageQuery> listDo(ResourcesQuestionQuery condition, @SCoreUser CoreUser coreUser) {
|
|
|
|
|
PageQuery page = condition.getPageQuery();
|
|
|
|
|
|
|
|
|
|
condition.setQuestionStatus(1);
|
|
|
|
@ -177,7 +185,7 @@ public class ResourcesQuestionController{
|
|
|
|
|
@PostMapping(MODEL + "/list.json")
|
|
|
|
|
@Function("resourcesQuestion.query")
|
|
|
|
|
@ResponseBody
|
|
|
|
|
public JsonResult<PageQuery> list(ResourcesQuestionQuery condition, @SCoreUser CoreUser coreUser){
|
|
|
|
|
public JsonResult<PageQuery> list(ResourcesQuestionQuery condition, @SCoreUser CoreUser coreUser) {
|
|
|
|
|
PageQuery page = condition.getPageQuery();
|
|
|
|
|
|
|
|
|
|
if (coreUser.isUniAdmin()) {
|
|
|
|
@ -194,17 +202,21 @@ public class ResourcesQuestionController{
|
|
|
|
|
// 如果为空字符串,那么代表这个学校,还没有授权的课程,所以是不会显示任何东西的。
|
|
|
|
|
condition.setCourseInfoIds(StrUtil.blankToDefault(ids, "未授权应用"));
|
|
|
|
|
}
|
|
|
|
|
resourcesQuestionService.queryByCondition(page);
|
|
|
|
|
if (coreUser.isAdmin()) {
|
|
|
|
|
resourcesQuestionService.getTestItemManageSystemOAndUniversities(page);
|
|
|
|
|
} else {
|
|
|
|
|
resourcesQuestionService.queryByCondition(page);
|
|
|
|
|
}
|
|
|
|
|
return JsonResult.success(page);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@PostMapping(MODEL + "/add.json")
|
|
|
|
|
@Function("resourcesQuestion.add")
|
|
|
|
|
@ResponseBody
|
|
|
|
|
public JsonResult add(@Validated(ValidateConfig.ADD.class)ResourcesQuestion resourcesQuestion, BindingResult result, @SCoreUser CoreUser coreUser){
|
|
|
|
|
if(result.hasErrors()){
|
|
|
|
|
public JsonResult add(@Validated(ValidateConfig.ADD.class) ResourcesQuestion resourcesQuestion, BindingResult result, @SCoreUser CoreUser coreUser) {
|
|
|
|
|
if (result.hasErrors()) {
|
|
|
|
|
return JsonResult.failMessage(result);
|
|
|
|
|
}else{
|
|
|
|
|
} else {
|
|
|
|
|
Long courseInfoId = resourcesQuestion.getCourseInfoId();
|
|
|
|
|
Integer questionType = resourcesQuestion.getQuestionType();
|
|
|
|
|
BigDecimal questionScore = resourcesQuestion.getQuestionScore();
|
|
|
|
@ -217,36 +229,35 @@ public class ResourcesQuestionController{
|
|
|
|
|
String questionOptionE = resourcesQuestion.getQuestionOptionE();
|
|
|
|
|
|
|
|
|
|
String questionAnswer = resourcesQuestion.getQuestionAnswer();
|
|
|
|
|
questionAnswer = resourcesQuestionService.answerFormat(questionType,questionAnswer);//格式化
|
|
|
|
|
questionAnswer = resourcesQuestionService.answerFormat(questionType, questionAnswer);//格式化
|
|
|
|
|
|
|
|
|
|
String m = "";
|
|
|
|
|
if(StringUtils.isNotBlank(questionAnswer)){
|
|
|
|
|
m = resourcesQuestionService.judge(questionType,questionOptionA,questionOptionB,questionOptionC,questionOptionD,questionOptionE,questionAnswer);
|
|
|
|
|
if (StringUtils.isNotBlank(questionAnswer)) {
|
|
|
|
|
m = resourcesQuestionService.judge(questionType, questionOptionA, questionOptionB, questionOptionC, questionOptionD, questionOptionE, questionAnswer);
|
|
|
|
|
}
|
|
|
|
|
if(null == courseInfoId){
|
|
|
|
|
if (null == courseInfoId) {
|
|
|
|
|
return JsonResult.failMessage("添加失败,请选择相应的章节");
|
|
|
|
|
}else if(null == questionType){
|
|
|
|
|
} else if (null == questionType) {
|
|
|
|
|
return JsonResult.failMessage("添加失败,请选择题型");
|
|
|
|
|
}else if(null == questionScore){
|
|
|
|
|
} else if (null == questionScore) {
|
|
|
|
|
return JsonResult.failMessage("添加失败,请填写分值");
|
|
|
|
|
}else if(StringUtils.isBlank(questionStem)){
|
|
|
|
|
} else if (StringUtils.isBlank(questionStem)) {
|
|
|
|
|
return JsonResult.failMessage("添加失败,请填写题干");
|
|
|
|
|
}else if(StringUtils.isBlank(questionAnswer)){
|
|
|
|
|
} else if (StringUtils.isBlank(questionAnswer)) {
|
|
|
|
|
return JsonResult.failMessage("添加失败,请填写答案");
|
|
|
|
|
}else if(StringUtils.isNotBlank(m)){
|
|
|
|
|
return JsonResult.failMessage("添加失败,"+m);
|
|
|
|
|
}else {
|
|
|
|
|
} else if (StringUtils.isNotBlank(m)) {
|
|
|
|
|
return JsonResult.failMessage("添加失败," + m);
|
|
|
|
|
} else {
|
|
|
|
|
|
|
|
|
|
ResourcesQuestion rq = new ResourcesQuestion();
|
|
|
|
|
rq.setQuestionStem(questionStem);
|
|
|
|
|
if(resourcesQuestionService.getValues(rq).size()>0){
|
|
|
|
|
if (resourcesQuestionService.getValues(rq).size() > 0) {
|
|
|
|
|
return JsonResult.failMessage("添加失败,题干重复");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (coreUser.isAdmin()) {
|
|
|
|
|
resourcesQuestion.setAddType(AddTypeEnum.ADMIN_ADD);
|
|
|
|
|
}
|
|
|
|
|
else {
|
|
|
|
|
} else {
|
|
|
|
|
resourcesQuestion.setAddType(AddTypeEnum.FACULTY_ADD);
|
|
|
|
|
}
|
|
|
|
|
resourcesQuestion.setOrgId(coreUser.getOrgId());
|
|
|
|
@ -265,16 +276,25 @@ public class ResourcesQuestionController{
|
|
|
|
|
@PostMapping(MODEL + "/putOnShelves.json")
|
|
|
|
|
@Function("resourcesQuestion.edit")
|
|
|
|
|
@ResponseBody
|
|
|
|
|
public JsonResult<String> putOnShelves(@Validated(ValidateConfig.UPDATE.class) ResourcesQuestion resourcesQuestion, BindingResult result) {
|
|
|
|
|
if(result.hasErrors()){
|
|
|
|
|
public JsonResult<String> putOnShelves(@Validated(ValidateConfig.UPDATE.class) ResourcesQuestion resourcesQuestion, BindingResult result) {
|
|
|
|
|
if (result.hasErrors()) {
|
|
|
|
|
return JsonResult.failMessage(result);
|
|
|
|
|
}else {
|
|
|
|
|
boolean success = resourcesQuestionService.edit(resourcesQuestion);
|
|
|
|
|
if (success) {
|
|
|
|
|
} else {
|
|
|
|
|
if (ObjectUtil.equals(resourcesQuestion.getSourceType(), 1)) {
|
|
|
|
|
if (ObjectUtil.isEmpty(resourcesQuestion.getResourcesQuestionId())) {
|
|
|
|
|
return JsonResult.failMessage("更新失败");
|
|
|
|
|
}
|
|
|
|
|
teacherOpenCourseMergeResourcesQuestionService.batchEditUpDownStatus(resourcesQuestion.getResourcesQuestionId().toString(), resourcesQuestion.getQuestionStatus());
|
|
|
|
|
return JsonResult.success();
|
|
|
|
|
} else {
|
|
|
|
|
return JsonResult.failMessage("更新失败");
|
|
|
|
|
boolean success = resourcesQuestionService.edit(resourcesQuestion);
|
|
|
|
|
if (success) {
|
|
|
|
|
return JsonResult.success();
|
|
|
|
|
} else {
|
|
|
|
|
return JsonResult.failMessage("更新失败");
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
@ -282,10 +302,10 @@ public class ResourcesQuestionController{
|
|
|
|
|
@PostMapping(MODEL + "/edit.json")
|
|
|
|
|
@Function("resourcesQuestion.edit")
|
|
|
|
|
@ResponseBody
|
|
|
|
|
public JsonResult<String> update(@Validated(ValidateConfig.UPDATE.class) ResourcesQuestion resourcesQuestion, BindingResult result, @SCoreUser CoreUser coreUser) {
|
|
|
|
|
if(result.hasErrors()){
|
|
|
|
|
public JsonResult<String> update(@Validated(ValidateConfig.UPDATE.class) ResourcesQuestion resourcesQuestion, BindingResult result, @SCoreUser CoreUser coreUser) {
|
|
|
|
|
if (result.hasErrors()) {
|
|
|
|
|
return JsonResult.failMessage(result);
|
|
|
|
|
}else {
|
|
|
|
|
} else {
|
|
|
|
|
// 验证是否有操作该数据的权限
|
|
|
|
|
validateRole(resourcesQuestion, coreUser);
|
|
|
|
|
|
|
|
|
@ -297,51 +317,51 @@ public class ResourcesQuestionController{
|
|
|
|
|
String questionOptionA = resourcesQuestionService.formatQuestion(resourcesQuestion.getQuestionOptionA());
|
|
|
|
|
resourcesQuestion.setQuestionOptionA(questionOptionA);
|
|
|
|
|
|
|
|
|
|
String questionOptionB = resourcesQuestionService.formatQuestion(resourcesQuestion.getQuestionOptionB());
|
|
|
|
|
String questionOptionB = resourcesQuestionService.formatQuestion(resourcesQuestion.getQuestionOptionB());
|
|
|
|
|
resourcesQuestion.setQuestionOptionB(questionOptionB);
|
|
|
|
|
|
|
|
|
|
String questionOptionC = resourcesQuestionService.formatQuestion(resourcesQuestion.getQuestionOptionC());
|
|
|
|
|
String questionOptionC = resourcesQuestionService.formatQuestion(resourcesQuestion.getQuestionOptionC());
|
|
|
|
|
resourcesQuestion.setQuestionOptionC(questionOptionC);
|
|
|
|
|
|
|
|
|
|
String questionOptionD = resourcesQuestionService.formatQuestion(resourcesQuestion.getQuestionOptionD());
|
|
|
|
|
String questionOptionD = resourcesQuestionService.formatQuestion(resourcesQuestion.getQuestionOptionD());
|
|
|
|
|
resourcesQuestion.setQuestionOptionD(questionOptionD);
|
|
|
|
|
|
|
|
|
|
String questionOptionE = resourcesQuestionService.formatQuestion(resourcesQuestion.getQuestionOptionE());
|
|
|
|
|
String questionOptionE = resourcesQuestionService.formatQuestion(resourcesQuestion.getQuestionOptionE());
|
|
|
|
|
resourcesQuestion.setQuestionOptionE(questionOptionE);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
String questionAnswer = resourcesQuestion.getQuestionAnswer();
|
|
|
|
|
questionAnswer = resourcesQuestionService.answerFormat(questionType,questionAnswer);//格式化
|
|
|
|
|
questionAnswer = resourcesQuestionService.answerFormat(questionType, questionAnswer);//格式化
|
|
|
|
|
|
|
|
|
|
String m = "";
|
|
|
|
|
if(StringUtils.isNotBlank(questionAnswer)){
|
|
|
|
|
m = resourcesQuestionService.judge(questionType,questionOptionA,questionOptionB,questionOptionC,questionOptionD,questionOptionE,questionAnswer);
|
|
|
|
|
if (StringUtils.isNotBlank(questionAnswer)) {
|
|
|
|
|
m = resourcesQuestionService.judge(questionType, questionOptionA, questionOptionB, questionOptionC, questionOptionD, questionOptionE, questionAnswer);
|
|
|
|
|
}
|
|
|
|
|
if(null == courseInfoId){
|
|
|
|
|
if (null == courseInfoId) {
|
|
|
|
|
return JsonResult.failMessage("添加失败,请选择相应的章节");
|
|
|
|
|
}else if(null == questionType){
|
|
|
|
|
} else if (null == questionType) {
|
|
|
|
|
return JsonResult.failMessage("添加失败,请选择题型");
|
|
|
|
|
}else if(null == questionScore){
|
|
|
|
|
} else if (null == questionScore) {
|
|
|
|
|
return JsonResult.failMessage("添加失败,请填写分值");
|
|
|
|
|
}else if(StringUtils.isBlank(questionStem)){
|
|
|
|
|
} else if (StringUtils.isBlank(questionStem)) {
|
|
|
|
|
return JsonResult.failMessage("添加失败,请填写题干");
|
|
|
|
|
}else if(StringUtils.isBlank(questionAnswer)){
|
|
|
|
|
} else if (StringUtils.isBlank(questionAnswer)) {
|
|
|
|
|
return JsonResult.failMessage("添加失败,请填写答案");
|
|
|
|
|
}else if(StringUtils.isNotBlank(m)){
|
|
|
|
|
return JsonResult.failMessage("添加失败,"+m);
|
|
|
|
|
}else {
|
|
|
|
|
} else if (StringUtils.isNotBlank(m)) {
|
|
|
|
|
return JsonResult.failMessage("添加失败," + m);
|
|
|
|
|
} else {
|
|
|
|
|
|
|
|
|
|
ResourcesQuestion rq = new ResourcesQuestion();
|
|
|
|
|
rq.setQuestionStem(questionStem);
|
|
|
|
|
List<ResourcesQuestion> resourcesQuestionList = resourcesQuestionService.getValues(rq);
|
|
|
|
|
if(resourcesQuestionList.size()>0){
|
|
|
|
|
for(int i=0;i<resourcesQuestionList.size();i++){
|
|
|
|
|
if (resourcesQuestionList.get(i).getResourcesQuestionId().equals(resourcesQuestion.getResourcesQuestionId())){
|
|
|
|
|
if (resourcesQuestionList.size() > 0) {
|
|
|
|
|
for (int i = 0; i < resourcesQuestionList.size(); i++) {
|
|
|
|
|
if (resourcesQuestionList.get(i).getResourcesQuestionId().equals(resourcesQuestion.getResourcesQuestionId())) {
|
|
|
|
|
resourcesQuestionList.remove(i);
|
|
|
|
|
i--;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
if(resourcesQuestionList.size()>0){
|
|
|
|
|
if (resourcesQuestionList.size() > 0) {
|
|
|
|
|
return JsonResult.failMessage("添加失败,题干重复");
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
@ -362,12 +382,13 @@ public class ResourcesQuestionController{
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 验证是否有操作该数据的权限
|
|
|
|
|
*
|
|
|
|
|
* @param resourcesQuestion
|
|
|
|
|
* @param coreUser
|
|
|
|
|
*/
|
|
|
|
|
private void validateRole(ResourcesQuestion resourcesQuestion, CoreUser coreUser) {
|
|
|
|
|
// 如果不是超管的话
|
|
|
|
|
if(!coreUser.isAdmin()) {
|
|
|
|
|
if (!coreUser.isAdmin()) {
|
|
|
|
|
Assert.isTrue(null != resourcesQuestion.getOrgId() && coreUser.getOrgId().equals(resourcesQuestion.getOrgId()), "只能修改自己院校的数据!");
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
@ -376,42 +397,42 @@ public class ResourcesQuestionController{
|
|
|
|
|
@GetMapping(MODEL + "/view.json")
|
|
|
|
|
@Function("resourcesQuestion.query")
|
|
|
|
|
@ResponseBody
|
|
|
|
|
public JsonResult<ResourcesQuestion>queryInfo(Long resourcesQuestionId) {
|
|
|
|
|
ResourcesQuestion resourcesQuestion = resourcesQuestionService.queryById( resourcesQuestionId);
|
|
|
|
|
return JsonResult.success(resourcesQuestion);
|
|
|
|
|
public JsonResult<ResourcesQuestion> queryInfo(Long resourcesQuestionId) {
|
|
|
|
|
ResourcesQuestion resourcesQuestion = resourcesQuestionService.queryById(resourcesQuestionId);
|
|
|
|
|
return JsonResult.success(resourcesQuestion);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@GetMapping(MODEL + "/getValues.json")
|
|
|
|
|
@ResponseBody
|
|
|
|
|
public JsonResult<List<ResourcesQuestion>>getValues(ResourcesQuestionQuery param) {
|
|
|
|
|
List<ResourcesQuestion>list = resourcesQuestionService.getValues(param);
|
|
|
|
|
return JsonResult.success(list);
|
|
|
|
|
public JsonResult<List<ResourcesQuestion>> getValues(ResourcesQuestionQuery param) {
|
|
|
|
|
List<ResourcesQuestion> list = resourcesQuestionService.getValues(param);
|
|
|
|
|
return JsonResult.success(list);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//批量换章节
|
|
|
|
|
@PostMapping(MODEL + "/changAll.json")
|
|
|
|
|
@ResponseBody
|
|
|
|
|
public JsonResult changAll(Long oldCourseInfoId,Long newCourseInfoId) {
|
|
|
|
|
public JsonResult changAll(Long oldCourseInfoId, Long newCourseInfoId) {
|
|
|
|
|
ResourcesQuestion resourcesQuestion = new ResourcesQuestion();
|
|
|
|
|
resourcesQuestion.setCourseInfoId(oldCourseInfoId);
|
|
|
|
|
List<ResourcesQuestion> resourcesQuestionList = resourcesQuestionService.getValues(resourcesQuestion);
|
|
|
|
|
List<ResourcesQuestion> updateResourcesQuestionList = new ArrayList<>();
|
|
|
|
|
if(null != resourcesQuestionList && resourcesQuestionList.size()>0){
|
|
|
|
|
for(int i=0;i<resourcesQuestionList.size();i++){
|
|
|
|
|
if (null != resourcesQuestionList && resourcesQuestionList.size() > 0) {
|
|
|
|
|
for (int i = 0; i < resourcesQuestionList.size(); i++) {
|
|
|
|
|
ResourcesQuestion newResourcesQuestion = new ResourcesQuestion();
|
|
|
|
|
newResourcesQuestion.setResourcesQuestionId(resourcesQuestionList.get(i).getResourcesQuestionId());
|
|
|
|
|
newResourcesQuestion.setCourseInfoId(newCourseInfoId);
|
|
|
|
|
updateResourcesQuestionList.add(newResourcesQuestion);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
if(updateResourcesQuestionList.size()>0){
|
|
|
|
|
resourcesQuestionService.changAll(updateResourcesQuestionList,oldCourseInfoId,newCourseInfoId);
|
|
|
|
|
if (updateResourcesQuestionList.size() > 0) {
|
|
|
|
|
resourcesQuestionService.changAll(updateResourcesQuestionList, oldCourseInfoId, newCourseInfoId);
|
|
|
|
|
|
|
|
|
|
//移除缓存
|
|
|
|
|
courseInfoService.flushCache(oldCourseInfoId);
|
|
|
|
|
courseInfoService.flushCache(newCourseInfoId);
|
|
|
|
|
}
|
|
|
|
|
return JsonResult.success();
|
|
|
|
|
return JsonResult.success();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@ -419,8 +440,8 @@ public class ResourcesQuestionController{
|
|
|
|
|
@Function("resourcesQuestion.delete")
|
|
|
|
|
@ResponseBody
|
|
|
|
|
public JsonResult delete(String ids, @SCoreUser CoreUser coreUser) {
|
|
|
|
|
List<ResourcesQuestion>list = resourcesQuestionService.getByIds(ids);
|
|
|
|
|
for(int i=0;null != list && i<list.size();i++){
|
|
|
|
|
List<ResourcesQuestion> list = resourcesQuestionService.getByIds(ids);
|
|
|
|
|
for (int i = 0; null != list && i < list.size(); i++) {
|
|
|
|
|
// 验证是否有操作该数据的权限
|
|
|
|
|
validateRole(list.get(i), coreUser);
|
|
|
|
|
//移除缓存
|
|
|
|
@ -438,7 +459,7 @@ public class ResourcesQuestionController{
|
|
|
|
|
XSSFWorkbook workbook = null;
|
|
|
|
|
InputStream is = null;
|
|
|
|
|
try {
|
|
|
|
|
is = new FileInputStream(GetFile.p + File.separator +"filesystem"+ File.separator +"template"+ File.separator+ "题库导入模板.xlsx");
|
|
|
|
|
is = new FileInputStream(GetFile.p + File.separator + "filesystem" + File.separator + "template" + File.separator + "题库导入模板.xlsx");
|
|
|
|
|
|
|
|
|
|
workbook = new XSSFWorkbook(is);
|
|
|
|
|
|
|
|
|
@ -551,7 +572,7 @@ public class ResourcesQuestionController{
|
|
|
|
|
|
|
|
|
|
//workbook将Excel写入到response的输出流中,供页面下载
|
|
|
|
|
workbook.write(response.getOutputStream());
|
|
|
|
|
}catch (Exception e){
|
|
|
|
|
} catch (Exception e) {
|
|
|
|
|
e.printStackTrace();
|
|
|
|
|
} finally {
|
|
|
|
|
try {
|
|
|
|
@ -569,6 +590,7 @@ public class ResourcesQuestionController{
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 设置有效性
|
|
|
|
|
*
|
|
|
|
|
* @param offset 主影响单元格所在列,即此单元格由哪个单元格影响联动
|
|
|
|
|
* @param sheet
|
|
|
|
|
* @param rowNum 行数
|
|
|
|
@ -586,7 +608,7 @@ public class ResourcesQuestionController{
|
|
|
|
|
// sheet.addValidationData(cacse);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
XSSFDataValidationHelper dvHelper = new XSSFDataValidationHelper((XSSFSheet)sheet);
|
|
|
|
|
XSSFDataValidationHelper dvHelper = new XSSFDataValidationHelper((XSSFSheet) sheet);
|
|
|
|
|
XSSFDataValidationConstraint dvConstraint = (XSSFDataValidationConstraint) dvHelper.createFormulaListConstraint("INDIRECT($" + offset + "$" + rowNum + ")");
|
|
|
|
|
int firstRow = rowNum - 1;
|
|
|
|
|
int lastRow = rowNum - 1;
|
|
|
|
@ -599,12 +621,12 @@ public class ResourcesQuestionController{
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 计算formula
|
|
|
|
|
* @param offset 偏移量,如果给0,表示从A列开始,1,就是从B列
|
|
|
|
|
* @param rowId 第几行
|
|
|
|
|
* 计算formula
|
|
|
|
|
*
|
|
|
|
|
* @param offset 偏移量,如果给0,表示从A列开始,1,就是从B列
|
|
|
|
|
* @param rowId 第几行
|
|
|
|
|
* @param colCount 一共多少列
|
|
|
|
|
* @return 如果给入参 1,1,10. 表示从B1-K1。最终返回 $B$1:$K$1
|
|
|
|
|
*
|
|
|
|
|
*/
|
|
|
|
|
public static String getRange(int offset, int rowId, int colCount) {
|
|
|
|
|
char start = (char) ('A' + offset);
|
|
|
|
@ -637,57 +659,57 @@ public class ResourcesQuestionController{
|
|
|
|
|
//导入模板信息
|
|
|
|
|
@PostMapping(MODEL + "/importTemplate.json")
|
|
|
|
|
@ResponseBody
|
|
|
|
|
public JsonResult importTemplate(@RFile FileEntity fileEntity,@SCoreUser CoreUser coreUser) {
|
|
|
|
|
return resourcesQuestionService.importTemplate(fileEntity,coreUser);
|
|
|
|
|
public JsonResult importTemplate(@RFile FileEntity fileEntity, @SCoreUser CoreUser coreUser) {
|
|
|
|
|
return resourcesQuestionService.importTemplate(fileEntity, coreUser);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//查询客观题树结构
|
|
|
|
|
@GetMapping(MODEL + "/getTreeByCourseLabelTypes.json")
|
|
|
|
|
@ResponseBody
|
|
|
|
|
public JsonResult<List<CourseInfo>>getTreeByCourseLabelTypes(String courseLabelTypes,Long competitionId,String ct1QuestionIds,Long examId,String et1QuestionIds) {
|
|
|
|
|
List<CourseInfo> courseInfoList= resourcesQuestionService.getTreeByCourseLabelTypes(courseLabelTypes);
|
|
|
|
|
public JsonResult<List<CourseInfo>> getTreeByCourseLabelTypes(String courseLabelTypes, Long competitionId, String ct1QuestionIds, Long examId, String et1QuestionIds) {
|
|
|
|
|
List<CourseInfo> courseInfoList = resourcesQuestionService.getTreeByCourseLabelTypes(courseLabelTypes);
|
|
|
|
|
|
|
|
|
|
Map<Long,Integer>countMap = new HashMap<>();
|
|
|
|
|
Map<Long, Integer> countMap = new HashMap<>();
|
|
|
|
|
|
|
|
|
|
String courseInfoIds = "";
|
|
|
|
|
String childrenCourseInfoIds = "";
|
|
|
|
|
|
|
|
|
|
if(null != competitionId || null != examId){
|
|
|
|
|
List<CourseInfo> courseInfos = resourcesQuestionService.getTreeByParam(courseLabelTypes,competitionId,ct1QuestionIds,examId,et1QuestionIds);
|
|
|
|
|
for(int i=0;null != courseInfos && i<courseInfos.size();i++){
|
|
|
|
|
courseInfoIds += courseInfos.get(i).getCourseInfoId()+",";
|
|
|
|
|
if (null != competitionId || null != examId) {
|
|
|
|
|
List<CourseInfo> courseInfos = resourcesQuestionService.getTreeByParam(courseLabelTypes, competitionId, ct1QuestionIds, examId, et1QuestionIds);
|
|
|
|
|
for (int i = 0; null != courseInfos && i < courseInfos.size(); i++) {
|
|
|
|
|
courseInfoIds += courseInfos.get(i).getCourseInfoId() + ",";
|
|
|
|
|
List<CourseInfo> childrenCourseInfos = courseInfos.get(i).takeChildren();
|
|
|
|
|
for(int j=0;null != childrenCourseInfos && j<childrenCourseInfos.size();j++){
|
|
|
|
|
childrenCourseInfoIds += childrenCourseInfos.get(j).getCourseInfoId()+",";
|
|
|
|
|
countMap.put(childrenCourseInfos.get(j).getCourseInfoId(),childrenCourseInfos.get(j).takeChildren().size());
|
|
|
|
|
for (int j = 0; null != childrenCourseInfos && j < childrenCourseInfos.size(); j++) {
|
|
|
|
|
childrenCourseInfoIds += childrenCourseInfos.get(j).getCourseInfoId() + ",";
|
|
|
|
|
countMap.put(childrenCourseInfos.get(j).getCourseInfoId(), childrenCourseInfos.get(j).takeChildren().size());
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
for(int i=0;i<courseInfoList.size();i++){
|
|
|
|
|
for (int i = 0; i < courseInfoList.size(); i++) {
|
|
|
|
|
Integer totalCount = 0;
|
|
|
|
|
Integer usedTotalCount = 0;
|
|
|
|
|
List<CourseInfo> childrenList= courseInfoList.get(i).takeChildren();
|
|
|
|
|
for(int j=0;j<childrenList.size();j++){
|
|
|
|
|
List<CourseInfo> childrenList = courseInfoList.get(i).takeChildren();
|
|
|
|
|
for (int j = 0; j < childrenList.size(); j++) {
|
|
|
|
|
Integer count = childrenList.get(j).takeChildren().size();
|
|
|
|
|
Integer usedCount = countMap.get(childrenList.get(j).getCourseInfoId());
|
|
|
|
|
totalCount += count;
|
|
|
|
|
childrenList.get(j).set("totalCount",count);
|
|
|
|
|
if(null != usedCount){
|
|
|
|
|
childrenList.get(j).set("totalCount", count);
|
|
|
|
|
if (null != usedCount) {
|
|
|
|
|
usedTotalCount += usedCount;
|
|
|
|
|
childrenList.get(j).set("usedCount",usedCount);
|
|
|
|
|
}else {
|
|
|
|
|
childrenList.get(j).set("usedCount",0);
|
|
|
|
|
childrenList.get(j).set("usedCount", usedCount);
|
|
|
|
|
} else {
|
|
|
|
|
childrenList.get(j).set("usedCount", 0);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
courseInfoList.get(i).set("totalCount",totalCount);
|
|
|
|
|
courseInfoList.get(i).set("usedCount",usedTotalCount);
|
|
|
|
|
courseInfoList.get(i).set("totalCount", totalCount);
|
|
|
|
|
courseInfoList.get(i).set("usedCount", usedTotalCount);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
Map<String,Object>map = new HashMap<>();
|
|
|
|
|
map.put("courseInfoIds",courseInfoIds);
|
|
|
|
|
map.put("childrenCourseInfoIds",childrenCourseInfoIds);
|
|
|
|
|
map.put("data",courseInfoList);
|
|
|
|
|
Map<String, Object> map = new HashMap<>();
|
|
|
|
|
map.put("courseInfoIds", courseInfoIds);
|
|
|
|
|
map.put("childrenCourseInfoIds", childrenCourseInfoIds);
|
|
|
|
|
map.put("data", courseInfoList);
|
|
|
|
|
|
|
|
|
|
return JsonResult.successMap(map);
|
|
|
|
|
|
|
|
|
@ -695,7 +717,8 @@ public class ResourcesQuestionController{
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 查询题目类型下的题目数量
|
|
|
|
|
* @param courseInfoQuery 课程信息
|
|
|
|
|
*
|
|
|
|
|
* @param courseInfoQuery 课程信息
|
|
|
|
|
* @return
|
|
|
|
|
*/
|
|
|
|
|
@PostMapping(MODEL + "/questionTypeGroupInfo.json")
|
|
|
|
@ -709,8 +732,8 @@ public class ResourcesQuestionController{
|
|
|
|
|
* 功能描述: <br>
|
|
|
|
|
* word方式导入题目
|
|
|
|
|
*
|
|
|
|
|
* @param fileEntityList 文件列表 (前端传递name:file)
|
|
|
|
|
* @param coreUser 传入的用户,使用机构ID和用户ID
|
|
|
|
|
* @param fileEntityList 文件列表 (前端传递name:file)
|
|
|
|
|
* @param coreUser 传入的用户,使用机构ID和用户ID
|
|
|
|
|
* @return {@link JsonResult}
|
|
|
|
|
* @Author: lx
|
|
|
|
|
* @Date: 2023/1/8 22:49
|
|
|
|
@ -725,10 +748,10 @@ public class ResourcesQuestionController{
|
|
|
|
|
* 功能描述: <br>
|
|
|
|
|
* word方式导入题目
|
|
|
|
|
*
|
|
|
|
|
* @param fileEntityList 文件列表 (前端传递name:file)
|
|
|
|
|
* @param businessType 来源
|
|
|
|
|
* @param matchType 匹配类型 (非必传)
|
|
|
|
|
* @param coreUser 传入的用户,使用机构ID和用户ID
|
|
|
|
|
* @param fileEntityList 文件列表 (前端传递name:file)
|
|
|
|
|
* @param businessType 来源
|
|
|
|
|
* @param matchType 匹配类型 (非必传)
|
|
|
|
|
* @param coreUser 传入的用户,使用机构ID和用户ID
|
|
|
|
|
* @return {@link JsonResult}
|
|
|
|
|
* @Author: lx
|
|
|
|
|
* @Date: 2023/1/8 22:49
|
|
|
|
@ -742,7 +765,8 @@ public class ResourcesQuestionController{
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 教师端-题目配置页-题目设置-获取题目类型
|
|
|
|
|
* @param courseInfoQuery 题目信息
|
|
|
|
|
*
|
|
|
|
|
* @param courseInfoQuery 题目信息
|
|
|
|
|
* @param coreUser
|
|
|
|
|
* @return
|
|
|
|
|
*/
|
|
|
|
@ -755,9 +779,10 @@ public class ResourcesQuestionController{
|
|
|
|
|
/**
|
|
|
|
|
* 教师端-题目配置页-题目设置-获取题目类型
|
|
|
|
|
* 此接口只获取理论课程类的题目类型和数量
|
|
|
|
|
* @param courseInfoQuery 课程信息查询
|
|
|
|
|
* @param courseLabelTypePlural 课程分类标签 考证课程类 等等
|
|
|
|
|
* @param seeAdminAndSelf 除了超管,其他身份需要传true
|
|
|
|
|
*
|
|
|
|
|
* @param courseInfoQuery 课程信息查询
|
|
|
|
|
* @param courseLabelTypePlural 课程分类标签 考证课程类 等等
|
|
|
|
|
* @param seeAdminAndSelf 除了超管,其他身份需要传true
|
|
|
|
|
* @param coreUser
|
|
|
|
|
* @return
|
|
|
|
|
*/
|
|
|
|
|