gaoxing před 8 roky
rodič
revize
5bf4d90444
19 změnil soubory, kde provedl 581 přidání a 309 odebrání
  1. 5 0
      cqb-gen-paper/pom.xml
  2. 10 0
      cqb-gen-paper/src/main/java/com/qmth/cqb/genpaper/model/GenPaperDto.java
  3. 84 25
      cqb-gen-paper/src/main/java/com/qmth/cqb/genpaper/service/GenPaperService.java
  4. 11 2
      cqb-gen-paper/src/main/java/com/qmth/cqb/genpaper/web/GenPaperController.java
  5. 34 24
      cqb-paper/src/main/java/com/qmth/cqb/paper/model/Paper.java
  6. 64 42
      cqb-paper/src/main/java/com/qmth/cqb/paper/model/PaperSearchInfo.java
  7. 81 70
      cqb-paper/src/main/java/com/qmth/cqb/paper/model/PaperStruct.java
  8. 12 1
      cqb-paper/src/main/java/com/qmth/cqb/paper/model/PaperStructSearchInfo.java
  9. 55 39
      cqb-paper/src/main/java/com/qmth/cqb/paper/service/ImportPaperService.java
  10. 8 3
      cqb-paper/src/main/java/com/qmth/cqb/paper/service/PaperService.java
  11. 33 28
      cqb-paper/src/main/java/com/qmth/cqb/paper/service/PaperStructService.java
  12. 23 9
      cqb-paper/src/main/java/com/qmth/cqb/paper/web/ImportPaperController.java
  13. 25 11
      cqb-paper/src/main/java/com/qmth/cqb/paper/web/PaperController.java
  14. 56 37
      cqb-paper/src/main/java/com/qmth/cqb/paper/web/PaperStructController.java
  15. 1 1
      cqb-question-resource/pom.xml
  16. 22 9
      cqb-question-resource/src/main/java/com/qmth/cqb/question/model/Question.java
  17. 31 0
      cqb-question-resource/src/main/java/com/qmth/cqb/question/model/QuestionBak.java
  18. 15 5
      cqb-question-resource/src/main/java/com/qmth/cqb/question/model/QuestionSearchCondition.java
  19. 11 3
      cqb-question-resource/src/main/java/com/qmth/cqb/question/web/QuesController.java

+ 5 - 0
cqb-gen-paper/pom.xml

@@ -21,5 +21,10 @@
             <artifactId>cqb-paper</artifactId>
             <version>${project.version}</version>
         </dependency>
+         <dependency>
+            <groupId>com.qmth.cqb</groupId>
+            <artifactId>cqb-base</artifactId>
+            <version>${project.version}</version>
+        </dependency>
     </dependencies>
 </project>

+ 10 - 0
cqb-gen-paper/src/main/java/com/qmth/cqb/genpaper/model/GenPaperDto.java

@@ -34,6 +34,8 @@ public class GenPaperDto implements Serializable {
 
     private Integer genNumber;// 生成试卷套数
 
+    private String orgId;
+
     public static long getSerialVersionUID() {
         return serialVersionUID;
     }
@@ -122,4 +124,12 @@ public class GenPaperDto implements Serializable {
         return serialVersionUID;
     }
 
+    public String getOrgId() {
+        return orgId;
+    }
+
+    public void setOrgId(String orgId) {
+        this.orgId = orgId;
+    }
+
 }

+ 84 - 25
cqb-gen-paper/src/main/java/com/qmth/cqb/genpaper/service/GenPaperService.java

@@ -25,6 +25,7 @@ import com.qmth.cqb.paper.model.PaperDetail;
 import com.qmth.cqb.paper.model.PaperDetailUnit;
 import com.qmth.cqb.paper.model.PaperStruct;
 import com.qmth.cqb.question.model.Question;
+import com.qmth.cqb.utils.CombinationUtils;
 import com.qmth.cqb.utils.CommonUtils;
 import com.qmth.cqb.utils.enums.PaperType;
 
@@ -45,6 +46,8 @@ public class GenPaperService {
     @Autowired
     PaperStructRepo paperStructRepo;
 
+    // private List<<>> = new HashMap<String, AtomicInteger>();
+
     /**
      * 精确组卷,根据设定试卷结构组卷
      * 
@@ -111,8 +114,10 @@ public class GenPaperService {
             paper.setCourseNo(genPaperDto.getCourseNo());
             paper.setCourseName(genPaperDto.getCourseName());
             paper.setCreator(genPaperDto.getCreator());
+            paper.setOrgId(genPaperDto.getOrgId());
             paper.setCreateTime(CommonUtils.getCurDateTime());
             paper.setUnitCount(this.getTotalQuesNum(paperDetailunits));
+            paper.setPaperType(PaperType.GENERATE);
             // 数据入库
             paper = this.persistentPaper(paperDetailunits, paperDetails, paper);
             msg = "success";
@@ -170,42 +175,43 @@ public class GenPaperService {
         Map<String, Object> paperMsgMap = new HashMap<String, Object>();
         Map<String, Double> paperMap = genPaperDto.getSimpleParams();
         List<PaperDetailUnit> selectedUnits = new ArrayList<PaperDetailUnit>();// 选中的小题
-        int totalQuesNum = 0;
         if (paperMap != null && paperMap.size() > 0) {
             for (String paperId : paperMap.keySet()) {
-                int unitNum = paperMap.get(paperId).intValue();
-                totalQuesNum += unitNum;
-                List<PaperDetailUnit> tempUnits = new ArrayList<PaperDetailUnit>();
+                int needQuesNum = paperMap.get(paperId).intValue();// 需要抽取的试题数量
                 List<PaperDetailUnit> unitList = unitRepo.findByPaper(paperRepo.findOne(paperId));
                 Collections.shuffle(unitList);// 随机乱序之后再取题
-                if (this.getTotalQuesNum(unitList) >= unitNum) {
-                    for (int i = 0; i < unitList.size(); i++) {// 假如unitNum=2,取了第一道题填空题,第二道题是套题,下面有4个子题,就直接进入下一次循环
-                        PaperDetailUnit unit = unitList.get(i);
-                        int quesNum = this.getTotalQuesNum(tempUnits);
-                        if (unit.getQuestionType() == QuesStructType.NESTED_ANSWER_QUESTION
-                                && (unit.getQuestion().getSubQuestions().size() + quesNum) > unitNum) {
-                            continue;
-                        }
-                        if (quesNum < unitNum && (!tempUnits.contains(unit))) {
-                            tempUnits.add(unit);
-                        }
-                        if (this.getTotalQuesNum(tempUnits) == unitNum) {
-                            break;
-                        }
+                List<PaperDetailUnit> nestedUnits = new ArrayList<PaperDetailUnit>();// 已选的试题集合
+                List<Integer> otherQuesNum = new ArrayList<Integer>();
+                List<Integer> nestQums = new ArrayList<Integer>();
+                if (this.getTotalQuesNum(unitList) >= needQuesNum) {
+                    for (int i = 0; i < unitList.size(); i++) {
+                        PaperDetailUnit pdu = unitList.get(i);
+                        if (pdu.getQuestionType() == QuesStructType.NESTED_ANSWER_QUESTION) {
+                            if (pdu.getQuestion().getSubQuestions().size() <= needQuesNum) {
+                                nestQums.add(pdu.getQuestion().getSubQuestions().size());
+                                nestedUnits.add(pdu);
+                            }
 
+                        } else {
+                            otherQuesNum.add(1);
+                        }
+                    }
+                    List<Integer> canChooseNestNum = this.getNestNum(nestQums, otherQuesNum.size(), needQuesNum);
+                    Collections.shuffle(canChooseNestNum);// 随机乱序
+                    int ranmdomNum = canChooseNestNum.get(0);// 取第一个
+                    if (ranmdomNum == 0) {// 假如随机到0个套题
+                        selectedUnits = this.getNeedUnits(null, unitList, needQuesNum);
+                    } else {
+                        List<Integer> sumList = new ArrayList<Integer>();
+                        sumList = CombinationUtils.combiantion(nestQums, needQuesNum, ranmdomNum);
+                        selectedUnits = this.getNeedUnits(sumList, unitList, needQuesNum);// 有套题情况
                     }
-                    selectedUnits.addAll(tempUnits);
                 } else {
-                    msg = "题源不足:需要抽取的题目数量要多于试卷中题目数量,请检查";
+                    msg = "题源不足,请检查题源";
                     paperMsgMap.put("msg", msg);
                     return paperMsgMap;
                 }
             }
-            if (this.getTotalQuesNum(selectedUnits) < totalQuesNum) {
-                msg = "题源不足:需要抽取的题目数量要多于试卷中题目数量,请检查";
-                paperMsgMap.put("msg", msg);
-                return paperMsgMap;
-            }
         }
         Paper paper = this.constuctPaper(selectedUnits, genPaperDto);
         msg = "success";
@@ -269,6 +275,7 @@ public class GenPaperService {
             paper.setPaperDetailCount(details.size());
             paper.setTotalScore(score);
             paper.setPaperType(PaperType.GENERATE);
+            paper.setOrgId(genPaperDto.getOrgId());
         }
         return paper;
 
@@ -353,4 +360,56 @@ public class GenPaperService {
         return totalQuesNum + nestQuesNum;
     }
 
+    public List<PaperDetailUnit> getNeedUnits(List<Integer> sumList, List<PaperDetailUnit> unitList, int needQuesNum) {
+        List<PaperDetailUnit> selectedUnits = new ArrayList<PaperDetailUnit>();// 选中的小题
+        List<PaperDetailUnit> nestedUnits = new ArrayList<PaperDetailUnit>();// 套题集合
+        List<PaperDetailUnit> otherUnits = new ArrayList<PaperDetailUnit>();// 其他类型的小题
+        for (PaperDetailUnit pdu : unitList) {
+            if (pdu.getQuestionType() == QuesStructType.NESTED_ANSWER_QUESTION) {
+                nestedUnits.add(pdu);
+            } else {
+                otherUnits.add(pdu);
+            }
+        }
+        // 选的套题
+        if (sumList != null && sumList.size() > 0) {
+            for (Integer subNum : sumList) {
+                for (PaperDetailUnit pdu : nestedUnits) {
+                    if (subNum == pdu.getQuestion().getSubQuestions().size()) {
+                        selectedUnits.add(pdu);
+                        break;
+                    }
+                }
+            }
+        }
+        int otherQuesNum = needQuesNum - this.getTotalQuesNum(selectedUnits);
+        for (int i = 0; i < otherQuesNum; i++) {
+            selectedUnits.add(otherUnits.get(i));
+        }
+        return selectedUnits;
+    }
+
+    public List<Integer> getNestNum(List<Integer> nestQums, int otherQuesNum, int needQuesNum) {
+        Collections.sort(nestQums);
+        List<Integer> chooseNestNum = new ArrayList<Integer>();
+        if (needQuesNum <= otherQuesNum) {
+            chooseNestNum.add(0);
+        }
+        for (int i = 1; i <= nestQums.size(); i++) {
+            int min = 0;
+            int max = 0;
+            for (int j = 0; j < i; j++) {
+                min += nestQums.get(j);
+                max += nestQums.get(nestQums.size() - 1 - j);
+            }
+            if ((max + otherQuesNum >= needQuesNum && needQuesNum - max <= otherQuesNum && needQuesNum - max >= 0)
+                    || (min + otherQuesNum >= needQuesNum && needQuesNum - min <= otherQuesNum
+                            && needQuesNum - min >= 0)) {
+                chooseNestNum.add(i);
+            }
+        }
+
+        return chooseNestNum;
+
+    }
 }

+ 11 - 2
cqb-gen-paper/src/main/java/com/qmth/cqb/genpaper/web/GenPaperController.java

@@ -3,6 +3,8 @@ package com.qmth.cqb.genpaper.web;
 import java.util.HashMap;
 import java.util.Map;
 
+import javax.servlet.http.HttpServletRequest;
+
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.http.HttpStatus;
 import org.springframework.http.ResponseEntity;
@@ -14,6 +16,7 @@ import org.springframework.web.bind.annotation.RestController;
 import com.qmth.cqb.genpaper.model.GenPaperDto;
 import com.qmth.cqb.genpaper.service.GenPaperService;
 
+import cn.com.qmth.examcloud.common.uac.entity.AccessUser;
 import io.swagger.annotations.ApiOperation;
 
 /**
@@ -28,7 +31,10 @@ public class GenPaperController {
 
     @ApiOperation(value = "简易随机组卷", notes = "简易随机组卷")
     @PostMapping("/genPaper/simple")
-    public ResponseEntity genPaperSimple(@RequestBody GenPaperDto genPaperDto) {
+    public ResponseEntity genPaperSimple(HttpServletRequest request, @RequestBody GenPaperDto genPaperDto) {
+        AccessUser user = (AccessUser) request.getAttribute("accessUser");
+        genPaperDto.setOrgId(user.getOrgId().toString());
+        genPaperDto.setCreator(user.getLoginName());
         Map<String, Object> paperMap = new HashMap<String, Object>();
         String paperName = genPaperDto.getPaperName();
         if (genPaperDto.getGenNumber() == 1) {
@@ -64,7 +70,10 @@ public class GenPaperController {
 
     @ApiOperation(value = "精细组卷", notes = "精细组卷")
     @PostMapping("/genPaper/normal")
-    public ResponseEntity genPaperNormal(@RequestBody GenPaperDto genPaperDto) {
+    public ResponseEntity genPaperNormal(HttpServletRequest request, @RequestBody GenPaperDto genPaperDto) {
+        AccessUser user = (AccessUser) request.getAttribute("accessUser");
+        genPaperDto.setOrgId(user.getOrgId().toString());
+        genPaperDto.setCreator(user.getLoginName());
         Map<String, Object> paperMap = new HashMap<String, Object>();
         String paperName = genPaperDto.getPaperName();
         if (genPaperDto.getGenNumber() > 1) {

+ 34 - 24
cqb-paper/src/main/java/com/qmth/cqb/paper/model/Paper.java

@@ -3,53 +3,56 @@ package com.qmth.cqb.paper.model;
 import java.io.Serializable;
 import java.util.Map;
 
+import org.springframework.data.annotation.Id;
+import org.springframework.data.mongodb.core.index.Indexed;
+
 import com.qmth.cqb.utils.CommonUtils;
 import com.qmth.cqb.utils.enums.PaperStatus;
 import com.qmth.cqb.utils.enums.PaperType;
-import org.springframework.data.annotation.Id;
-import org.springframework.data.mongodb.core.index.Indexed;
 
 /**
  * @author songyue
  *
  */
-public class Paper implements Serializable { 
-	
-	private static final long serialVersionUID = 5259364047220441490L;
+public class Paper implements Serializable {
+
+    private static final long serialVersionUID = 5259364047220441490L;
 
-	@Id
+    @Id
     private String id;
 
     @Indexed(unique = true)
-    private String name;//试卷名称
-    
-    private String title;//试卷标题
-    
-    private Double totalScore;//试卷总分
-    
-    private String creator;//创建人id
+    private String name;// 试卷名称
+
+    private String title;// 试卷标题
+
+    private Double totalScore;// 试卷总分
 
-    private Integer paperDetailCount;//大题数量
+    private String creator;// 创建人id
 
-    private Integer unitCount;//小题数量
+    private Integer paperDetailCount;// 大题数量
 
-    private String createTime;//创建时间
+    private Integer unitCount;// 小题数量
 
-    private String lastModifyName;//最后修改人名称
+    private String createTime;// 创建时间
 
-    private String word;//原始试卷word
+    private String lastModifyName;// 最后修改人名称
 
-    private String html;//原始试卷html
+    private String word;// 原始试卷word
 
-    private PaperStatus paperStatus;//试卷状态(待审核、通过、不通过)
+    private String html;// 原始试卷html
 
-    private PaperType paperType;//试卷类型(导入、组卷)
+    private PaperStatus paperStatus;// 试卷状态(待审核、通过、不通过)
+
+    private PaperType paperType;// 试卷类型(导入、组卷)
 
     private String courseNo;
 
     private String courseName;
 
-    private Map<String,String> params;//导入试卷属性
+    private String orgId;
+
+    private Map<String, String> params;// 导入试卷属性
 
     public static long getSerialVersionUID() {
         return serialVersionUID;
@@ -183,9 +186,16 @@ public class Paper implements Serializable {
         this.unitCount = unitCount;
     }
 
-    public Paper() {
-		this.createTime = CommonUtils.getCurDateTime();
+    public String getOrgId() {
+        return orgId;
     }
 
+    public void setOrgId(String orgId) {
+        this.orgId = orgId;
+    }
+
+    public Paper() {
+        this.createTime = CommonUtils.getCurDateTime();
+    }
 
 }

+ 64 - 42
cqb-paper/src/main/java/com/qmth/cqb/paper/model/PaperSearchInfo.java

@@ -1,63 +1,85 @@
 package com.qmth.cqb.paper.model;
 
 import java.io.Serializable;
-import java.util.Map;
 
-public class PaperSearchInfo implements Serializable{
+import com.qmth.cqb.utils.enums.PaperStatus;
 
-	private static final long serialVersionUID = 8273918442524569201L;
+public class PaperSearchInfo implements Serializable {
 
-    private String name;//试卷名称
+    private static final long serialVersionUID = 8273918442524569201L;
 
-    private String createTime;//创建时间
+    private String name;// 试卷名称
 
-    private String creator;//录入员
-    
-    private String courseNo;//课程代码
+    private String createTime;// 创建时间
 
-	private String [] paperIds;
+    private String creator;// 录入员
 
-	public static long getSerialVersionUID() {
-		return serialVersionUID;
-	}
+    private String courseNo;// 课程代码
 
-	public String getName() {
-		return name;
-	}
+    private String orgId;// 机构Id
 
-	public void setName(String name) {
-		this.name = name;
-	}
+    private PaperStatus paperStatus; // 试卷审核状态
 
-	public String getCreateTime() {
-		return createTime;
-	}
+    private String[] paperIds;
 
-	public void setCreateTime(String createTime) {
-		this.createTime = createTime;
-	}
+    public static long getSerialVersionUID() {
+        return serialVersionUID;
+    }
 
-	public String getCreator() {
-		return creator;
-	}
+    public String getName() {
+        return name;
+    }
 
-	public void setCreator(String creator) {
-		this.creator = creator;
-	}
+    public void setName(String name) {
+        this.name = name;
+    }
 
-	public String getCourseNo() {
-		return courseNo;
-	}
+    public String getCreateTime() {
+        return createTime;
+    }
 
-	public void setCourseNo(String courseNo) {
-		this.courseNo = courseNo;
-	}
+    public void setCreateTime(String createTime) {
+        this.createTime = createTime;
+    }
 
-	public String[] getPaperIds() {
-		return paperIds;
-	}
+    public String getCreator() {
+        return creator;
+    }
+
+    public void setCreator(String creator) {
+        this.creator = creator;
+    }
+
+    public String getCourseNo() {
+        return courseNo;
+    }
+
+    public void setCourseNo(String courseNo) {
+        this.courseNo = courseNo;
+    }
+
+    public String[] getPaperIds() {
+        return paperIds;
+    }
+
+    public void setPaperIds(String[] paperIds) {
+        this.paperIds = paperIds;
+    }
+
+    public String getOrgId() {
+        return orgId;
+    }
+
+    public void setOrgId(String orgId) {
+        this.orgId = orgId;
+    }
+
+    public PaperStatus getPaperStatus() {
+        return paperStatus;
+    }
+
+    public void setPaperStatus(PaperStatus paperStatus) {
+        this.paperStatus = paperStatus;
+    }
 
-	public void setPaperIds(String[] paperIds) {
-		this.paperIds = paperIds;
-	}
 }

+ 81 - 70
cqb-paper/src/main/java/com/qmth/cqb/paper/model/PaperStruct.java

@@ -1,109 +1,120 @@
 package com.qmth.cqb.paper.model;
 
 import java.io.Serializable;
-import java.util.Map;
 import java.util.List;
+import java.util.Map;
 
-import com.qmth.cqb.utils.CommonUtils;
 import org.springframework.data.annotation.Id;
 import org.springframework.data.mongodb.core.index.Indexed;
 
+import com.qmth.cqb.utils.CommonUtils;
+
 /**
- * 试卷结构
- * Created by songyue on 16/12/28.
+ * 试卷结构 Created by songyue on 16/12/28.
  */
 
-public class PaperStruct implements Serializable{
+public class PaperStruct implements Serializable {
 
-	private static final long serialVersionUID = 6380530617488717881L;
+    private static final long serialVersionUID = 6380530617488717881L;
 
-	@Id
+    @Id
     private String id;
 
     @Indexed(unique = true)
-    private String name;//试卷结构名称
-        
-    private Double totalScore;//总分
-    
-    private Integer detailCount;//大题数量
-    
+    private String name;// 试卷结构名称
+
+    private Double totalScore;// 总分
+
+    private Integer detailCount;// 大题数量
+
     private Map params;
 
-	private List<PaperDetailStruct> paperDetailStructs;//大题
+    private List<PaperDetailStruct> paperDetailStructs;// 大题
+
+    private String creator;// 创建人id
+
+    private String createTime;// 创建时间
+
+    private String orgId;// 机构ID
+
+    public static long getSerialVersionUID() {
+        return serialVersionUID;
+    }
 
-	private String creator;//创建人id
+    public String getId() {
+        return id;
+    }
 
-	private String createTime;//创建时间
+    public void setId(String id) {
+        this.id = id;
+    }
 
-	public static long getSerialVersionUID() {
-		return serialVersionUID;
-	}
+    public String getName() {
+        return name;
+    }
 
-	public String getId() {
-		return id;
-	}
+    public void setName(String name) {
+        this.name = name;
+    }
 
-	public void setId(String id) {
-		this.id = id;
-	}
+    public Double getTotalScore() {
+        return totalScore;
+    }
 
-	public String getName() {
-		return name;
-	}
+    public void setTotalScore(Double totalScore) {
+        this.totalScore = totalScore;
+    }
 
-	public void setName(String name) {
-		this.name = name;
-	}
+    public Integer getDetailCount() {
+        return detailCount;
+    }
 
-	public Double getTotalScore() {
-		return totalScore;
-	}
+    public void setDetailCount(Integer detailCount) {
+        this.detailCount = detailCount;
+    }
 
-	public void setTotalScore(Double totalScore) {
-		this.totalScore = totalScore;
-	}
+    public Map getParams() {
+        return params;
+    }
 
-	public Integer getDetailCount() {
-		return detailCount;
-	}
+    public void setParams(Map params) {
+        this.params = params;
+    }
 
-	public void setDetailCount(Integer detailCount) {
-		this.detailCount = detailCount;
-	}
+    public List<PaperDetailStruct> getPaperDetailStructs() {
+        return paperDetailStructs;
+    }
 
-	public Map getParams() {
-		return params;
-	}
+    public void setPaperDetailStructs(List<PaperDetailStruct> paperDetailStructs) {
+        this.paperDetailStructs = paperDetailStructs;
+    }
 
-	public void setParams(Map params) {
-		this.params = params;
-	}
+    public String getCreator() {
+        return creator;
+    }
 
-	public List<PaperDetailStruct> getPaperDetailStructs() {
-		return paperDetailStructs;
-	}
+    public void setCreator(String creator) {
+        this.creator = creator;
+    }
 
-	public void setPaperDetailStructs(List<PaperDetailStruct> paperDetailStructs) {
-		this.paperDetailStructs = paperDetailStructs;
-	}
+    public String getCreateTime() {
+        return createTime;
+    }
 
-	public String getCreator() {
-		return creator;
-	}
+    public void setCreateTime(String createTime) {
+        this.createTime = createTime;
+    }
 
-	public void setCreator(String creator) {
-		this.creator = creator;
-	}
+    public PaperStruct() {
+        this.createTime = CommonUtils.getCurDateTime();
+    }
 
-	public String getCreateTime() {
-		return createTime;
-	}
+    public String getOrgId() {
+        return orgId;
+    }
 
-	public void setCreateTime(String createTime) {
-		this.createTime = createTime;
-	}
+    public void setOrgId(String orgId) {
+        this.orgId = orgId;
+    }
 
-	public PaperStruct() {
-		this.createTime = CommonUtils.getCurDateTime();
-	}
 }

+ 12 - 1
cqb-paper/src/main/java/com/qmth/cqb/paper/model/PaperStructSearchInfo.java

@@ -5,7 +5,7 @@ import java.io.Serializable;
 /**
  * Created by songyue on 17/3/27.
  */
-public class PaperStructSearchInfo implements Serializable{
+public class PaperStructSearchInfo implements Serializable {
 
     private static final long serialVersionUID = 5282899855557734214L;
 
@@ -15,6 +15,8 @@ public class PaperStructSearchInfo implements Serializable{
 
     private String createtime;
 
+    private String orgId;
+
     public static long getSerialVersionUID() {
         return serialVersionUID;
     }
@@ -42,4 +44,13 @@ public class PaperStructSearchInfo implements Serializable{
     public void setCreatetime(String createtime) {
         this.createtime = createtime;
     }
+
+    public String getOrgId() {
+        return orgId;
+    }
+
+    public void setOrgId(String orgId) {
+        this.orgId = orgId;
+    }
+
 }

+ 55 - 39
cqb-paper/src/main/java/com/qmth/cqb/paper/service/ImportPaperService.java

@@ -1,8 +1,24 @@
 package com.qmth.cqb.paper.service;
 
-import cn.com.qmth.examcloud.common.dto.question.enums.QuesStructType;
+import java.io.File;
+import java.io.FileOutputStream;
+import java.io.OutputStream;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.UUID;
+
+import org.apache.commons.io.FileUtils;
+import org.apache.commons.io.IOUtils;
+import org.apache.commons.lang3.StringUtils;
+import org.docx4j.openpackaging.packages.WordprocessingMLPackage;
+import org.docx4j.wml.P;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.web.multipart.commons.CommonsMultipartFile;
+
 import com.google.gson.Gson;
-import com.qmth.cqb.base.dao.CourseRepo;
 import com.qmth.cqb.paper.dao.PaperDetailRepo;
 import com.qmth.cqb.paper.dao.PaperDetailUnitRepo;
 import com.qmth.cqb.paper.dao.PaperRepo;
@@ -19,25 +35,23 @@ import com.qmth.cqb.utils.enums.PaperStatus;
 import com.qmth.cqb.utils.enums.PaperType;
 import com.qmth.cqb.utils.enums.QuesUnit;
 import com.qmth.cqb.utils.word.DocxProcessUtil;
+import org.springframework.web.multipart.commons.CommonsMultipartFile;
 import org.apache.commons.io.FileUtils;
 import org.apache.commons.io.IOUtils;
 import org.apache.commons.lang3.StringUtils;
 import org.docx4j.openpackaging.packages.WordprocessingMLPackage;
 import org.docx4j.wml.P;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
-import org.springframework.web.multipart.commons.CommonsMultipartFile;
-
-import java.io.File;
-import java.io.FileOutputStream;
-import java.io.OutputStream;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.UUID;
+import cn.com.qmth.examcloud.common.dto.question.enums.QuesStructType;
+import cn.com.qmth.examcloud.common.uac.entity.AccessUser;
 
 @Service
 public class ImportPaperService {
-
+    protected static final Logger log = LoggerFactory.getLogger(ImportPaperService.class);
+    
     @Autowired
     PaperRepo paperRepo;
 
@@ -59,9 +73,6 @@ public class ImportPaperService {
     @Autowired
     PaperService paperService;
 
-    @Autowired
-    CourseRepo courseRepo;
-
     /**
      * 获取上传文件
      *
@@ -91,14 +102,15 @@ public class ImportPaperService {
      * @param file
      * @return
      */
-    public String ImportPaper(String paperName, String courseNo, File file) {
-        String errorInfo = paperService.checkPaperName(paperName);
+    public String ImportPaper(String paperName, String courseNo, String courseName, AccessUser user, File file) {
+        String errorInfo = paperService.checkPaperName(paperName, user.getOrgId().toString());
         if (errorInfo == null) {
             errorInfo = "";
-            errorInfo += processImportPaper(paperName, courseNo, file);
-            if (StringUtils.isEmpty(errorInfo)) {
+            errorInfo += processImportPaper(paperName, courseNo, courseName, user, file);
+            if (StringUtils.isEmpty(errorInfo)) {   
                 return "success";
             } else {
+                log.error("导入异常:"+errorInfo);
                 return errorInfo;
             }
         } else {
@@ -147,7 +159,7 @@ public class ImportPaperService {
      *
      * @param file
      */
-    public String processImportPaper(String paperName, String courseNo, File file) {
+    public String processImportPaper(String paperName, String courseNo, String courseName, AccessUser user, File file) {
 
         WordprocessingMLPackage wordMLPackage;
         WordprocessingMLPackage tmpWordMlPackage;
@@ -170,7 +182,11 @@ public class ImportPaperService {
 
             paper.setCourseNo(courseNo);
 
-            paper.setCourseName(courseRepo.findByCourseNo(courseNo).getCourseName());
+            paper.setCourseName(courseName);
+
+            paper.setOrgId(user.getOrgId().toString());
+
+            paper.setCreator(user.getLoginName());
 
             // 设置试卷
             initPaper(paper, paperName);
@@ -214,8 +230,8 @@ public class ImportPaperService {
                     // 设置大题类
                     initQuesHeader(paper, paperDetail, paperDetails, ++mainQuesNum, importPaperCheck);
 
-                } else if (pText.matches("^\\d{1,}\\.[\\s\\S]*") || (isNested(importPaperCheck) && !pText
-                        .startsWith("["))) {
+                } else if (pText.matches("^\\d{1,}\\.[\\s\\S]*")
+                        || (isNested(importPaperCheck) && !pText.startsWith("["))) {
                     // 处理试题
 
                     // 创建小题类和试题类
@@ -251,11 +267,10 @@ public class ImportPaperService {
                     }
                     // 设置WordMlPackage二进制数据
                     setPkgByte(question, writePkg);
-                    //Map<String, String> quesParams = new HashMap<String, String>();
-                    //quesParams.put("courseName", paper.getCourseName());
                     // 设置question与Unit集合数据
                     question.setCourseNo(paper.getCourseNo());
                     question.setCourseName(paper.getCourseName());
+                    question.setOrgId(user.getOrgId().toString());
                     questions.add(question);
                     paperDetailUnits.add(paperDetailUnit);
 
@@ -308,18 +323,11 @@ public class ImportPaperService {
             ImportPaperCheck importPaperCheck) {
 
         paperDetail.setPaper(paper);
-
-        // 不从word中提取课程信息,统一从页面设置好
-        // if (StringUtils.isEmpty(paper.getCourseNo()) ||
-        // StringUtils.isEmpty(paper.getCourseName())) {
-        // paper.setCourseNo(getCourseNo(importPaperCheck));
-        // paper.setCourseName(getCourseName(importPaperCheck));
-        // }
         // 设置大题信息
         paperDetail.setName(importPaperCheck.quesName);
         paperDetail.setUnitCount(Integer.parseInt(importPaperCheck.quesCount));
         paperDetail.setNumber(mainQuesNum);
-
+        paperDetail.setCreator(paper.getCreator());
         paperDetails.add(paperDetail);
 
     }
@@ -343,6 +351,7 @@ public class ImportPaperService {
         paperDetailUnit.setPaperDetail(paperDetail);
         paperDetailUnit.setQuestionType(getQuesStructType(importPaperCheck.quesType));
         paperDetailUnit.setScore(Double.parseDouble(importPaperCheck.quesScore));
+        paperDetailUnit.setCreator(paper.getCreator());
         paperDetailUnit.setPaper(paper);
     }
 
@@ -813,23 +822,30 @@ public class ImportPaperService {
      * @param paperName
      * @return
      */
-    public String saveBlankPaper(String courseNo, String paperName) {
+    public Map<String, Object> saveBlankPaper(String courseNo, String courseName, String paperName, AccessUser user) {
+        Map<String, Object> returnMap = new HashMap<String, Object>();
         Paper paper = new Paper();
-        String courseName = courseRepo.findByCourseNo(courseNo).getCourseName();
-        String msg = paperService.checkPaperName(paperName);
+        String msg = paperService.checkPaperName(paperName, user.getOrgId().toString());
         if (msg != null) {
-            return msg;
+            returnMap.put("msg", msg);
+            return returnMap;
         }
         initPaper(paper, paperName);
         paper.setCourseNo(courseNo);
         paper.setCourseName(courseName);
+        paper.setOrgId(user.getOrgId().toString());
+        paper.setCreator(user.getLoginName());
+        paper.setCreateTime(CommonUtils.getCurDateTime());
         PaperDetail pd = new PaperDetail();
         pd.setId(UUID.randomUUID().toString());
         pd.setNumber(1);
         pd.setPaper(paper);
-        paperRepo.save(paper);
+        pd.setCreator(user.getLoginName());
+        pd.setCreateTime(CommonUtils.getCurDateTime());
+        paper = paperRepo.save(paper);
         paperDetailRepo.save(pd);
-        msg = "success";
-        return msg;
+        returnMap.put("paper", paper);
+        returnMap.put("msg", "success");
+        return returnMap;
     }
 }

+ 8 - 3
cqb-paper/src/main/java/com/qmth/cqb/paper/service/PaperService.java

@@ -39,6 +39,7 @@ import com.qmth.cqb.utils.enums.PaperStatus;
 import com.qmth.cqb.utils.enums.PaperType;
 
 import cn.com.qmth.examcloud.common.dto.question.enums.QuesStructType;
+import cn.com.qmth.examcloud.common.uac.entity.AccessUser;
 
 /**
  * Created by songyue on 16/12/28.
@@ -443,7 +444,8 @@ public class PaperService {
      * @param paperDetailId
      * @return
      */
-    public Paper insertQuestionToPaper(String paperId, String paperDetailId, Question question) {
+    public Paper insertQuestionToPaper(String paperId, String paperDetailId, Question question, AccessUser user) {
+        question.setOrgId(user.getOrgId().toString());
         quesService.updateQuesWord(question);
         question = quesRepo.save(question);
         Paper paper = paperRepo.findOne(paperId);
@@ -532,9 +534,12 @@ public class PaperService {
         return paper;
     }
 
-    public String checkPaperName(String paperName) {
+    public String checkPaperName(String paperName, String orgId) {
         String msg = null;
-        Paper paper = paperRepo.findByName(paperName);
+        Paper paperTemp = new Paper();
+        paperTemp.setName(paperName);
+        paperTemp.setOrgId(orgId);
+        Paper paper = paperRepo.findOne(Example.of(paperTemp));
         if (paper != null) {
             msg = "试卷名称重复,请重新命名";
         }

+ 33 - 28
cqb-paper/src/main/java/com/qmth/cqb/paper/service/PaperStructService.java

@@ -1,9 +1,8 @@
 package com.qmth.cqb.paper.service;
 
+import java.util.ArrayList;
+import java.util.List;
 
-import com.qmth.cqb.paper.dto.PaperDetailUnitStructDto;
-import com.qmth.cqb.paper.model.*;
-import com.qmth.cqb.utils.BeanCopierUtil;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.data.domain.Example;
@@ -13,70 +12,74 @@ import org.springframework.data.domain.PageRequest;
 import org.springframework.stereotype.Service;
 
 import com.qmth.cqb.paper.dao.PaperStructRepo;
+import com.qmth.cqb.paper.dto.PaperDetailUnitStructDto;
+import com.qmth.cqb.paper.model.PaperDetailStruct;
+import com.qmth.cqb.paper.model.PaperDetailUnitStruct;
+import com.qmth.cqb.paper.model.PaperStruct;
+import com.qmth.cqb.paper.model.PaperStructSearchInfo;
+import com.qmth.cqb.utils.BeanCopierUtil;
+import com.qmth.cqb.utils.CommonUtils;
+
+import cn.com.qmth.examcloud.common.uac.entity.AccessUser;
 
-import java.util.ArrayList;
-import java.util.List;
 /**
  * Created by songyue on 16/12/28.
  */
 @Service
 public class PaperStructService {
-	
-	@Autowired
-    PaperStructRepo paperStructRepo;
 
+    @Autowired
+    PaperStructRepo paperStructRepo;
 
     /**
      * 获取所有试卷结构
+     * 
      * @param searchInfo
      * @param curPage
      * @param pageSize
      * @return
      */
-    public Page<PaperStruct> getPaperStructs(PaperStructSearchInfo searchInfo,
-                                             int curPage,
-                                             int pageSize){
+    public Page<PaperStruct> getPaperStructs(PaperStructSearchInfo searchInfo, int curPage, int pageSize,AccessUser user) {
+        searchInfo.setOrgId(user.getOrgId().toString());
         formatSearchInfo(searchInfo);
-        PaperStruct paperStruct = BeanCopierUtil.copyProperties(searchInfo,PaperStruct.class);
+        PaperStruct paperStruct = BeanCopierUtil.copyProperties(searchInfo, PaperStruct.class);
         formatPaperStruct(paperStruct);
-        ExampleMatcher matcher = ExampleMatcher.matching().
-                withStringMatcher(ExampleMatcher.StringMatcher.CONTAINING).withIgnoreNullValues();
-        return paperStructRepo.findAll(Example.of(paperStruct,matcher),
-                new PageRequest(curPage - 1,pageSize));
+        ExampleMatcher matcher = ExampleMatcher.matching().withStringMatcher(ExampleMatcher.StringMatcher.CONTAINING)
+                .withIgnoreNullValues();
+        return paperStructRepo.findAll(Example.of(paperStruct, matcher), new PageRequest(curPage - 1, pageSize));
     }
 
-    public void formatSearchInfo(PaperStructSearchInfo searchInfo){
-        if(StringUtils.isEmpty(searchInfo.getName())){
+    public void formatSearchInfo(PaperStructSearchInfo searchInfo) {
+        if (StringUtils.isEmpty(searchInfo.getName())) {
             searchInfo.setName(null);
         }
-        if(StringUtils.isEmpty(searchInfo.getCreator())){
+        if (StringUtils.isEmpty(searchInfo.getCreator())) {
             searchInfo.setCreator(null);
         }
     }
 
-    public void formatPaperStruct(PaperStruct paperStruct){
+    public void formatPaperStruct(PaperStruct paperStruct) {
         paperStruct.setCreateTime(null);
     }
 
     /**
      * 保存试卷结构
+     * 
      * @param paperStruct
      * @return
      */
-    public PaperStruct save(PaperStruct paperStruct){
-
+    public PaperStruct save(PaperStruct paperStruct, AccessUser user) {
         List<PaperDetailStruct> paperDetailStructs = paperStruct.getPaperDetailStructs();
         int number = 0;
-
-        for(PaperDetailStruct paperDetailStruct:paperDetailStructs){
+        for (PaperDetailStruct paperDetailStruct : paperDetailStructs) {
             List oldStructs = paperDetailStruct.getPaperDetailUnitStructs();
-            if(oldStructs != null && oldStructs.size() > 0){
+            if (oldStructs != null && oldStructs.size() > 0) {
                 oldStructs.clear();
             }
             List<PaperDetailUnitStruct> unitStructs = new ArrayList<PaperDetailUnitStruct>();
 
-            for(PaperDetailUnitStructDto unitStructDto:paperDetailStruct.getUnitStructs()){
-                for(int i = 0;i < unitStructDto.getCount();i++){
+            for (PaperDetailUnitStructDto unitStructDto : paperDetailStruct.getUnitStructs()) {
+                for (int i = 0; i < unitStructDto.getCount(); i++) {
                     ++number;
                     PaperDetailUnitStruct unitStruct = new PaperDetailUnitStruct();
                     unitStruct.setScore(unitStructDto.getScore());
@@ -89,8 +92,10 @@ public class PaperStructService {
             paperDetailStruct.setPaperDetailUnitStructs(unitStructs);
         }
         paperStruct.setDetailCount(paperDetailStructs.size());
+        paperStruct.setOrgId(user.getOrgId().toString());
+        paperStruct.setCreator(user.getLoginName());
+        paperStruct.setCreateTime(CommonUtils.getCurDateTime());
         return paperStructRepo.save(paperStruct);
     }
 
-
 }

+ 23 - 9
cqb-paper/src/main/java/com/qmth/cqb/paper/web/ImportPaperController.java

@@ -4,6 +4,9 @@ import java.io.File;
 import java.util.HashMap;
 import java.util.Map;
 
+import javax.servlet.http.HttpServletRequest;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.http.HttpStatus;
 import org.springframework.http.ResponseEntity;
@@ -18,6 +21,7 @@ import com.qmth.cqb.paper.dao.PaperRepo;
 import com.qmth.cqb.paper.service.ImportPaperService;
 import com.qmth.cqb.paper.service.PaperService;
 
+import cn.com.qmth.examcloud.common.uac.entity.AccessUser;
 import io.swagger.annotations.ApiOperation;
 
 /**
@@ -45,10 +49,16 @@ public class ImportPaperController {
      */
     @ApiOperation(value = "导入试卷", notes = "导入试卷")
     @PostMapping(value = "/importPaper")
-    public ResponseEntity importPaper(@RequestParam String paperName, @RequestParam String courseNo,
-            @RequestParam("file") CommonsMultipartFile file) {
+    public ResponseEntity importPaper(HttpServletRequest request, 
+                                        @RequestParam String paperName,
+                                        @RequestParam String courseNo, 
+                                        @RequestParam String courseName,
+                                        @RequestParam("file") CommonsMultipartFile file) {
+        AccessUser user = (AccessUser) request.getAttribute("accessUser");
+        log.info("导入开始");
         File tempFile = importPaperService.getUploadFile(file);
-        String returnStr = importPaperService.ImportPaper(paperName, courseNo, tempFile);
+        String returnStr = importPaperService.ImportPaper(paperName, courseNo, courseName, user,tempFile);
+        log.info("导入结束");
         if (returnStr.equals("success")) {
             return new ResponseEntity(returnStr, HttpStatus.OK);
         } else {
@@ -66,13 +76,17 @@ public class ImportPaperController {
      * @return
      */
     @ApiOperation(value = "保存导入类型空白试卷", notes = "保存导入类型空白试卷")
-    @PostMapping(value = "/importPaper/saveBlankPaper/{courseNo}/{paperName}")
-    public ResponseEntity saveBlankPaper(@PathVariable String courseNo, @PathVariable String paperName) {
-        String msg = importPaperService.saveBlankPaper(courseNo, paperName);
-        if (msg.equals("success")) {
-            return new ResponseEntity(msg, HttpStatus.OK);
+    @PostMapping(value = "/importPaper/saveBlankPaper/{courseNo}/{courseName}/{paperName}")
+    public ResponseEntity saveBlankPaper(HttpServletRequest request,
+                                        @PathVariable String courseNo,
+                                        @PathVariable String courseName,
+                                        @PathVariable String paperName) {
+        AccessUser user = (AccessUser) request.getAttribute("accessUser");      
+        Map<String,Object> returnMap = importPaperService.saveBlankPaper(courseNo, courseName,paperName,user);
+        if (returnMap.get("msg").equals("success")) {
+            return new ResponseEntity(returnMap, HttpStatus.OK);
         } else {
-            return new ResponseEntity(msg, HttpStatus.INTERNAL_SERVER_ERROR);
+            return new ResponseEntity(returnMap, HttpStatus.INTERNAL_SERVER_ERROR);
         }
     }
 

+ 25 - 11
cqb-paper/src/main/java/com/qmth/cqb/paper/web/PaperController.java

@@ -10,6 +10,8 @@ import java.util.Set;
 import java.util.stream.Collectors;
 import java.util.stream.Stream;
 
+import javax.servlet.http.HttpServletRequest;
+
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Value;
@@ -38,6 +40,7 @@ import com.qmth.cqb.question.model.Question;
 import com.qmth.cqb.utils.StringSimilarityUtils;
 
 import cn.com.qmth.examcloud.common.dto.question.enums.QuesStructType;
+import cn.com.qmth.examcloud.common.uac.entity.AccessUser;
 import io.swagger.annotations.ApiOperation;
 
 /**
@@ -93,8 +96,12 @@ public class PaperController {
      */
     @ApiOperation(value = "查询所有导入试卷", notes = "查询所有导入试卷")
     @GetMapping(value = "/importPaper/{curPage}/{pageSize}")
-    public ResponseEntity getImportPapers(@ModelAttribute PaperSearchInfo paperSearchInfo, @PathVariable int curPage,
-            @PathVariable int pageSize) {
+    public ResponseEntity getImportPapers( HttpServletRequest request, 
+                                            @ModelAttribute PaperSearchInfo paperSearchInfo, 
+                                            @PathVariable int curPage,
+                                            @PathVariable int pageSize) {
+        AccessUser user = (AccessUser) request.getAttribute("accessUser");
+        paperSearchInfo.setOrgId(user.getOrgId().toString());
         return new ResponseEntity(paperService.getImportPapers(paperSearchInfo, curPage, pageSize), HttpStatus.OK);
     }
 
@@ -108,8 +115,12 @@ public class PaperController {
      */
     @ApiOperation(value = "查询所有已组试卷", notes = "查询所有已组试卷")
     @GetMapping(value = "/genPaper/{curPage}/{pageSize}")
-    public ResponseEntity getGenPapers(@ModelAttribute PaperSearchInfo paperSearchInfo, @PathVariable int curPage,
-            @PathVariable int pageSize) {
+    public ResponseEntity getGenPapers( HttpServletRequest request, 
+                                        @ModelAttribute PaperSearchInfo paperSearchInfo, 
+                                        @PathVariable int curPage,
+                                        @PathVariable int pageSize) {
+        AccessUser user = (AccessUser) request.getAttribute("accessUser");
+        paperSearchInfo.setOrgId(user.getOrgId().toString());
         return new ResponseEntity(paperService.getGenPapers(paperSearchInfo, curPage, pageSize), HttpStatus.OK);
     }
 
@@ -275,9 +286,12 @@ public class PaperController {
      */
     @ApiOperation(value = "向导入试卷中的新增试题", notes = "向导入试卷中的新增试题")
     @PostMapping(value = "/paper/addQuestion/{paperId}/{paperDetailId}")
-    public ResponseEntity insertQuestionToPaper(@PathVariable String paperId, @PathVariable String paperDetailId,
-            @RequestBody Question question) {
-        return new ResponseEntity(paperService.insertQuestionToPaper(paperId, paperDetailId, question), HttpStatus.OK);
+    public ResponseEntity insertQuestionToPaper(HttpServletRequest request,
+                                                @PathVariable String paperId, 
+                                                @PathVariable String paperDetailId,
+                                                @RequestBody Question question) {
+        AccessUser user = (AccessUser) request.getAttribute("accessUser");
+        return new ResponseEntity(paperService.insertQuestionToPaper(paperId, paperDetailId, question,user), HttpStatus.OK);
 
     }
 
@@ -388,10 +402,10 @@ public class PaperController {
      */
     @ApiOperation(value = "向导入试卷中的新增试题", notes = "向导入试卷中的新增试题")
     @PostMapping(value = "/paper/selectQuestions/{paperId}/{paperDetailId}")
-    public ResponseEntity selectQuestionsToPaper(@PathVariable String paperId, @PathVariable String paperDetailId,
-            @RequestBody List<Question> questions) {
-        return new ResponseEntity(paperService.selectQuestionsToPaper(paperId, paperDetailId, questions),
-                HttpStatus.OK);
+    public ResponseEntity selectQuestionsToPaper(@PathVariable String paperId, 
+                                                @PathVariable String paperDetailId,
+                                                @RequestBody List<Question> questions) {
+        return new ResponseEntity(paperService.selectQuestionsToPaper(paperId, paperDetailId, questions),HttpStatus.OK);
 
     }
 

+ 56 - 37
cqb-paper/src/main/java/com/qmth/cqb/paper/web/PaperStructController.java

@@ -1,20 +1,31 @@
 package com.qmth.cqb.paper.web;
 
-import com.qmth.cqb.paper.dao.PaperStructRepo;
-import com.qmth.cqb.paper.model.PaperStructSearchInfo;
-import com.qmth.cqb.utils.CommonUtils;
-import io.swagger.annotations.ApiOperation;
+import java.util.List;
+import java.util.stream.Collectors;
+import java.util.stream.Stream;
+
+import javax.servlet.http.HttpServletRequest;
+
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.http.HttpStatus;
 import org.springframework.http.ResponseEntity;
-import org.springframework.web.bind.annotation.*;
+import org.springframework.web.bind.annotation.DeleteMapping;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.ModelAttribute;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.PutMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
 
+import com.qmth.cqb.paper.dao.PaperStructRepo;
 import com.qmth.cqb.paper.model.PaperStruct;
+import com.qmth.cqb.paper.model.PaperStructSearchInfo;
 import com.qmth.cqb.paper.service.PaperStructService;
 
-import java.util.List;
-import java.util.stream.Collectors;
-import java.util.stream.Stream;
+import cn.com.qmth.examcloud.common.uac.entity.AccessUser;
+import io.swagger.annotations.ApiOperation;
 
 /**
  * Created by songyue on 16/12/28.
@@ -22,8 +33,8 @@ import java.util.stream.Stream;
 @RestController
 @RequestMapping("${api_cqb}/")
 public class PaperStructController {
-	
-	@Autowired
+
+    @Autowired
     PaperStructService paperStructService;
 
     @Autowired
@@ -31,75 +42,83 @@ public class PaperStructController {
 
     /**
      * 获取所有试卷结构
+     * 
      * @param
      * @return
      */
-    @ApiOperation(value="获取试卷结构带分页",notes="获取试卷结构带分页")
+    @ApiOperation(value = "获取试卷结构带分页", notes = "获取试卷结构带分页")
     @GetMapping(value = "/paperStruct/{curPage}/{pageSize}")
-    public ResponseEntity getPaperStructs(@ModelAttribute PaperStructSearchInfo searchInfo,
-                                                @PathVariable int curPage,
-                                                @PathVariable int pageSize){
-        return new ResponseEntity(paperStructService.getPaperStructs(searchInfo,curPage,pageSize),
-                HttpStatus.OK);
+    public ResponseEntity getPaperStructs(  HttpServletRequest request,
+                                            @ModelAttribute PaperStructSearchInfo searchInfo, 
+                                            @PathVariable int curPage,
+                                            @PathVariable int pageSize) {
+        AccessUser user = (AccessUser) request.getAttribute("accessUser");
+        return new ResponseEntity(paperStructService.getPaperStructs(searchInfo, curPage, pageSize,user), HttpStatus.OK);
     }
 
     /**
      * 获取所有试卷结构
+     * 
      * @param
      * @return
      */
-    @ApiOperation(value="获取试卷结构",notes="获取试卷结构")
+    @ApiOperation(value = "获取试卷结构", notes = "获取试卷结构")
     @GetMapping(value = "/paperStruct")
-    public ResponseEntity findAll(){
+    public ResponseEntity findAll() {
         return new ResponseEntity(paperStructRepo.findAll(), HttpStatus.OK);
     }
-	
+
     /**
      * 根据id获取试卷结构
-     * @param 
+     * 
+     * @param
      * @return
      */
-    @ApiOperation(value="获取试卷结构",notes="获取试卷结构")
+    @ApiOperation(value = "获取试卷结构", notes = "获取试卷结构")
     @GetMapping(value = "/paperStruct/{id}")
-    public ResponseEntity getPaperStructById(@PathVariable String id){
-        return new ResponseEntity(paperStructRepo.findOne(id),HttpStatus.OK);
+    public ResponseEntity getPaperStructById(@PathVariable String id) {
+        return new ResponseEntity(paperStructRepo.findOne(id), HttpStatus.OK);
     }
-    
 
     /**
      * 更新试卷结构
-     * @param 
+     * 
+     * @param
      * @return
      */
-    @ApiOperation(value="更新试卷结构",notes="更新试卷结构")
+    @ApiOperation(value = "更新试卷结构", notes = "更新试卷结构")
     @PutMapping(value = "/paperStruct")
-    public ResponseEntity updatePaperStruct(@RequestBody PaperStruct ps){
-    	PaperStruct paperStruct = paperStructService.save(ps);
-    	return new ResponseEntity(paperStruct,HttpStatus.OK);
+    public ResponseEntity updatePaperStruct(HttpServletRequest request, @RequestBody PaperStruct ps) {
+        AccessUser user = (AccessUser) request.getAttribute("accessUser");
+        PaperStruct paperStruct = paperStructService.save(ps, user);
+        return new ResponseEntity(paperStruct, HttpStatus.OK);
     }
 
     /**
      * 新增试卷结构
+     * 
      * @param ps
      * @return
      */
-    @ApiOperation(value="新增试卷结构",notes="新增试卷结构")
+    @ApiOperation(value = "新增试卷结构", notes = "新增试卷结构")
     @PostMapping(value = "/paperStruct")
-    public ResponseEntity addPaperStruct(@RequestBody PaperStruct ps){
-        PaperStruct paperStruct = paperStructService.save(ps);
-    	return new ResponseEntity(paperStruct,HttpStatus.OK);
+    public ResponseEntity addPaperStruct(HttpServletRequest request, @RequestBody PaperStruct ps) {
+        AccessUser user = (AccessUser) request.getAttribute("accessUser");
+        PaperStruct paperStruct = paperStructService.save(ps, user);
+        return new ResponseEntity(paperStruct, HttpStatus.OK);
     }
 
     /**
      * 删除试卷结构
+     * 
      * @param ids
      * @return
      */
-    @ApiOperation(value="删除试卷结构",notes="删除试卷结构")
+    @ApiOperation(value = "删除试卷结构", notes = "删除试卷结构")
     @DeleteMapping(value = "/paperStruct/{ids}")
-    public ResponseEntity removePaperStruct(@PathVariable String ids){
+    public ResponseEntity removePaperStruct(@PathVariable String ids) {
         List<String> paperList = Stream.of(ids.split(",")).collect(Collectors.toList());
-    	paperStructRepo.delete(paperStructRepo.findAll(paperList));
-		return new ResponseEntity(HttpStatus.OK);
+        paperStructRepo.delete(paperStructRepo.findAll(paperList));
+        return new ResponseEntity(HttpStatus.OK);
     }
 }

+ 1 - 1
cqb-question-resource/pom.xml

@@ -16,7 +16,7 @@
     </properties>
 
     <dependencies>
-        <dependency>
+            <dependency>
             <groupId>com.qmth.cqb</groupId>
             <artifactId>cqb-comm-utils</artifactId>
             <version>${project.version}</version>

+ 22 - 9
cqb-question-resource/src/main/java/com/qmth/cqb/question/model/Question.java

@@ -1,15 +1,17 @@
 package com.qmth.cqb.question.model;
 
-import cn.com.qmth.examcloud.common.dto.question.enums.QuesStructType;
-import com.qmth.cqb.utils.CommonUtils;
-import com.qmth.cqb.utils.word.DocxProcessUtil;
-import org.docx4j.openpackaging.packages.WordprocessingMLPackage;
-import org.springframework.data.annotation.Id;
-
 import java.io.Serializable;
 import java.util.List;
 import java.util.Map;
 
+import org.docx4j.openpackaging.packages.WordprocessingMLPackage;
+import org.springframework.data.annotation.Id;
+
+import com.qmth.cqb.utils.CommonUtils;
+import com.qmth.cqb.utils.word.DocxProcessUtil;
+
+import cn.com.qmth.examcloud.common.dto.question.enums.QuesStructType;
+
 /**
  * Created by songyue on 16/12/27.
  */
@@ -46,11 +48,13 @@ public class Question implements Serializable {
 
     private List<Question> subQuestions;// 子题目,用于套题
 
-    private Double score;//预设分值
+    private Double score;// 预设分值
+
+    private String courseNo;// 课程CODE
 
-    private String courseNo;//课程CODE
+    private String courseName;// 课程名称
 
-    private String courseName;//课程名称
+    private String orgId; // 机构ID
 
     private Map<String, String> quesParams;// 试题属性
 
@@ -214,4 +218,13 @@ public class Question implements Serializable {
     public void setCourseName(String courseName) {
         this.courseName = courseName;
     }
+
+    public String getOrgId() {
+        return orgId;
+    }
+
+    public void setOrgId(String orgId) {
+        this.orgId = orgId;
+    }
+
 }

+ 31 - 0
cqb-question-resource/src/main/java/com/qmth/cqb/question/model/QuestionBak.java

@@ -47,6 +47,12 @@ public class QuestionBak implements Serializable {
 
     private Double score;// 预设分值
 
+    private String courseNo;// 课程CODE
+
+    private String courseName;// 课程名称
+
+    private String orgId; // 机构ID
+
     private Map<String, String> quesParams;// 试题属性
 
     public String getId() {
@@ -189,4 +195,29 @@ public class QuestionBak implements Serializable {
     public QuestionBak() {
         this.createTime = CommonUtils.getCurDateTime();
     }
+
+    public String getCourseNo() {
+        return courseNo;
+    }
+
+    public void setCourseNo(String courseNo) {
+        this.courseNo = courseNo;
+    }
+
+    public String getCourseName() {
+        return courseName;
+    }
+
+    public void setCourseName(String courseName) {
+        this.courseName = courseName;
+    }
+
+    public String getOrgId() {
+        return orgId;
+    }
+
+    public void setOrgId(String orgId) {
+        this.orgId = orgId;
+    }
+
 }

+ 15 - 5
cqb-question-resource/src/main/java/com/qmth/cqb/question/model/QuestionSearchCondition.java

@@ -20,6 +20,8 @@ public class QuestionSearchCondition {
 
     private String courseNo;// 课程CODE
 
+    private String orgId;
+
     public String getId() {
         return id;
     }
@@ -65,11 +67,19 @@ public class QuestionSearchCondition {
     }
 
     public void setCourseNo(String courseNo) {
-    	if(StringUtils.isBlank(courseNo)){
-    		this.courseNo = null;
-    	}else{
-    		this.courseNo = courseNo;
-    	}
+        if (StringUtils.isBlank(courseNo)) {
+            this.courseNo = null;
+        } else {
+            this.courseNo = courseNo;
+        }
+    }
+
+    public String getOrgId() {
+        return orgId;
+    }
+
+    public void setOrgId(String orgId) {
+        this.orgId = orgId;
     }
 
 }

+ 11 - 3
cqb-question-resource/src/main/java/com/qmth/cqb/question/web/QuesController.java

@@ -2,6 +2,8 @@ package com.qmth.cqb.question.web;
 
 import java.util.List;
 
+import javax.servlet.http.HttpServletRequest;
+
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.http.HttpStatus;
 import org.springframework.http.ResponseEntity;
@@ -21,6 +23,7 @@ import com.qmth.cqb.question.model.Question;
 import com.qmth.cqb.question.model.QuestionSearchCondition;
 import com.qmth.cqb.question.service.QuesService;
 
+import cn.com.qmth.examcloud.common.uac.entity.AccessUser;
 import io.swagger.annotations.ApiOperation;
 
 /**
@@ -60,8 +63,12 @@ public class QuesController {
      */
     @ApiOperation(value = "分页查询试题", notes = "分页查询试题")
     @GetMapping(value = "/question/{curPage}/{pageSize}")
-    public ResponseEntity getAllQuestion(@ModelAttribute QuestionSearchCondition searchCondition,
-            @PathVariable int curPage, @PathVariable int pageSize) {
+    public ResponseEntity getAllQuestion(HttpServletRequest request,
+                                        @ModelAttribute QuestionSearchCondition searchCondition,
+                                        @PathVariable int curPage, 
+                                        @PathVariable int pageSize) {
+        AccessUser user = (AccessUser) request.getAttribute("accessUser");
+        searchCondition.setOrgId(user.getOrgId().toString());
         return new ResponseEntity(quesService.findAll(searchCondition, curPage, pageSize), HttpStatus.OK);
     }
 
@@ -86,7 +93,8 @@ public class QuesController {
      */
     @ApiOperation(value = "新增试题", notes = "新增试题")
     @PostMapping(value = "/question")
-    public ResponseEntity addQuestion(@RequestBody Question question) {
+    public ResponseEntity addQuestion(HttpServletRequest request,
+                                      @RequestBody Question question) {
         return new ResponseEntity(quesRepo.save(question), HttpStatus.CREATED);
     }