Quellcode durchsuchen

Merge branch 'calculate-exam-score' into 'DEV'

copy/delete case when copy/delete paper



See merge request !118

LiHaoyu vor 8 Jahren
Ursprung
Commit
fe2273fdeb

+ 3 - 0
mooctest-site-server/src/main/java/cn/iselab/mooctest/site/service/PaperService.java

@@ -3,6 +3,7 @@ package cn.iselab.mooctest.site.service;
 import cn.iselab.mooctest.site.models.Exam2Paper;
 import cn.iselab.mooctest.site.models.Paper;
 
+import cn.iselab.mooctest.site.models.Task2Case;
 import cn.iselab.mooctest.site.web.data.CaseBlockVO;
 
 import java.util.List;
@@ -33,4 +34,6 @@ public interface PaperService {
 
     Paper getByExamId(Long examId);
 
+    List<Task2Case> copyCase(long oldPaperId, long newPaperId);
+
 }

+ 25 - 4
mooctest-site-server/src/main/java/cn/iselab/mooctest/site/service/impl/PaperServiceImpl.java

@@ -4,10 +4,7 @@ import cn.iselab.mooctest.site.common.constant.SubsiteConstants;
 import cn.iselab.mooctest.site.dao.Exam2PaperDao;
 import cn.iselab.mooctest.site.dao.PaperDao;
 import cn.iselab.mooctest.site.dao.Task2CaseDao;
-import cn.iselab.mooctest.site.models.CaseExtends;
-import cn.iselab.mooctest.site.models.Exam2Paper;
-import cn.iselab.mooctest.site.models.Paper;
-import cn.iselab.mooctest.site.models.Task2Case;
+import cn.iselab.mooctest.site.models.*;
 import cn.iselab.mooctest.site.service.BaseService;
 import cn.iselab.mooctest.site.service.PaperService;
 import cn.iselab.mooctest.site.web.data.CaseBlockVO;
@@ -23,7 +20,10 @@ import javax.persistence.criteria.CriteriaBuilder;
 import javax.persistence.criteria.CriteriaQuery;
 import javax.persistence.criteria.Predicate;
 import javax.persistence.criteria.Root;
+import java.util.ArrayList;
 import java.util.List;
+import java.util.stream.Collector;
+import java.util.stream.Collectors;
 
 /**
  * Created by major on 2017/7/6.
@@ -52,6 +52,10 @@ public class PaperServiceImpl extends BaseService implements PaperService {
 
     @Override
     public void deletePaper(long paperId) {
+        List<Task2Case> oldCases = task2CaseDao.findByTaskId(paperId);
+        for(Task2Case task2Case : oldCases){
+            task2CaseDao.delete(task2Case);
+        }
         paperDao.delete(paperId);
     }
 
@@ -77,6 +81,23 @@ public class PaperServiceImpl extends BaseService implements PaperService {
     }
 
     @Override
+    public List<Task2Case> copyCase(long oldPaperId, long newPaperId) {
+        List<Task2Case> oldCases = task2CaseDao.findByTaskId(oldPaperId);
+        List<Task2Case> newCases = new ArrayList<>();
+        for(Task2Case task2Case : oldCases){
+            Task2Case t2c = new Task2Case();
+            t2c.setCaseIndex(task2Case.getCaseIndex());
+            t2c.setCount(task2Case.getCount());
+            t2c.setWeight(task2Case.getWeight());
+            t2c.setCaseId(task2Case.getCaseId());
+            t2c.setTaskId(newPaperId);
+            t2c.setAutoSelect(true);
+            newCases.add(task2CaseDao.save(t2c));
+        }
+        return newCases;
+    }
+
+    @Override
     public void updateCaseAndWeight(long paperId, List<CaseBlockVO> caseBlocks) {
 
         Integer maxCaseIndex = task2CaseDao.findMaxCaseIndexByTaskId(paperId);

+ 6 - 1
mooctest-site-server/src/main/java/cn/iselab/mooctest/site/web/logic/impl/PaperLogicImpl.java

@@ -1,6 +1,7 @@
 package cn.iselab.mooctest.site.web.logic.impl;
 
 import cn.iselab.mooctest.site.models.Paper;
+import cn.iselab.mooctest.site.models.Task2Case;
 import cn.iselab.mooctest.site.service.PaperService;
 import cn.iselab.mooctest.site.web.data.CaseBlockVO;
 import cn.iselab.mooctest.site.web.data.PaperVO;
@@ -65,7 +66,11 @@ public class PaperLogicImpl extends BaseLogic implements PaperLogic {
         newPaper.setDifficult(paper.getDifficult());
         newPaper.setName(paper.getName() + "-副本");
         newPaper.setOwnerId(paper.getOwnerId());
-        return Converter.convert(PaperVO.class,paperService.createOrUpdate(newPaper));
+        newPaper = paperService.createOrUpdate(newPaper);
+
+        List<Task2Case> task2Cases = paperService.copyCase(paper.getId(),newPaper.getId());
+
+        return Converter.convert(PaperVO.class,newPaper);
     }
 
     @Override