瀏覽代碼

add:评卷参数结构

caozixuan 3 年之前
父節點
當前提交
9af582cd05

+ 116 - 0
distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/marking/BasicPaperInfo.java

@@ -0,0 +1,116 @@
+package com.qmth.distributed.print.business.bean.marking;
+
+import com.fasterxml.jackson.databind.annotation.JsonSerialize;
+import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
+import io.swagger.annotations.ApiModelProperty;
+
+import java.util.List;
+
+/**
+ * @Description 基础试卷信息
+ * @Author CaoZixuan
+ * @Date 2022-04-13
+ */
+public class BasicPaperInfo {
+    @ApiModelProperty(value = "考试id")
+    @JsonSerialize(using = ToStringSerializer.class)
+    private Long examId;
+
+    @ApiModelProperty(value = "云阅卷考试id")
+    @JsonSerialize(using = ToStringSerializer.class)
+    private Long thirdRelateId;
+
+    @ApiModelProperty(value = "云阅卷考试名称")
+    private String thirdRelateName;
+
+    @ApiModelProperty(value = "课程名称")
+    private String courseName;
+
+    @ApiModelProperty(value = "课程编号")
+    private String courseCode;
+
+    @ApiModelProperty(value = "试卷编号")
+    private String paperNumber;
+
+    @ApiModelProperty(value = "试卷类型集合A、B")
+    private List<String> paperTypes;
+
+    @ApiModelProperty(value = "状态")
+    private String status;
+
+    @ApiModelProperty(value = "命题老师id")
+    @JsonSerialize(using = ToStringSerializer.class)
+    private Long positionTeacherId;
+
+    public Long getExamId() {
+        return examId;
+    }
+
+    public void setExamId(Long examId) {
+        this.examId = examId;
+    }
+
+    public Long getThirdRelateId() {
+        return thirdRelateId;
+    }
+
+    public void setThirdRelateId(Long thirdRelateId) {
+        this.thirdRelateId = thirdRelateId;
+    }
+
+    public String getThirdRelateName() {
+        return thirdRelateName;
+    }
+
+    public void setThirdRelateName(String thirdRelateName) {
+        this.thirdRelateName = thirdRelateName;
+    }
+
+    public String getCourseName() {
+        return courseName;
+    }
+
+    public void setCourseName(String courseName) {
+        this.courseName = courseName;
+    }
+
+    public String getCourseCode() {
+        return courseCode;
+    }
+
+    public void setCourseCode(String courseCode) {
+        this.courseCode = courseCode;
+    }
+
+    public String getPaperNumber() {
+        return paperNumber;
+    }
+
+    public void setPaperNumber(String paperNumber) {
+        this.paperNumber = paperNumber;
+    }
+
+    public List<String> getPaperTypes() {
+        return paperTypes;
+    }
+
+    public void setPaperTypes(List<String> paperTypes) {
+        this.paperTypes = paperTypes;
+    }
+
+    public String getStatus() {
+        return status;
+    }
+
+    public void setStatus(String status) {
+        this.status = status;
+    }
+
+    public Long getPositionTeacherId() {
+        return positionTeacherId;
+    }
+
+    public void setPositionTeacherId(Long positionTeacherId) {
+        this.positionTeacherId = positionTeacherId;
+    }
+}

+ 43 - 0
distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/marking/EvaluationParameters.java

@@ -0,0 +1,43 @@
+package com.qmth.distributed.print.business.bean.marking;
+
+import io.swagger.annotations.ApiModelProperty;
+
+/**
+ * @Description: 评卷参数JSON
+ * @Author: CaoZixuan
+ * @Date: 2022-04-13
+ */
+public class EvaluationParameters {
+    @ApiModelProperty(value = "基础试卷信息")
+    private BasicPaperInfo basicPaperInfo;
+
+    @ApiModelProperty(value = "试卷结构信息")
+    private PaperStructureInfo paperStructureInfo;
+
+    @ApiModelProperty(value = "分组信息")
+    private GroupInfo groupInfo;
+
+    public BasicPaperInfo getBasicPaperInfo() {
+        return basicPaperInfo;
+    }
+
+    public void setBasicPaperInfo(BasicPaperInfo basicPaperInfo) {
+        this.basicPaperInfo = basicPaperInfo;
+    }
+
+    public PaperStructureInfo getPaperStructureInfo() {
+        return paperStructureInfo;
+    }
+
+    public void setPaperStructureInfo(PaperStructureInfo paperStructureInfo) {
+        this.paperStructureInfo = paperStructureInfo;
+    }
+
+    public GroupInfo getGroupInfo() {
+        return groupInfo;
+    }
+
+    public void setGroupInfo(GroupInfo groupInfo) {
+        this.groupInfo = groupInfo;
+    }
+}

+ 70 - 0
distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/marking/GroupInfo.java

@@ -0,0 +1,70 @@
+package com.qmth.distributed.print.business.bean.marking;
+
+import com.fasterxml.jackson.databind.annotation.JsonSerialize;
+import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
+import io.swagger.annotations.ApiModelProperty;
+
+import java.util.List;
+
+/**
+ * @Description: 试卷分组信息
+ * @Author: CaoZixuan
+ * @Date: 2022-04-13
+ */
+public class GroupInfo {
+    @ApiModelProperty(value = "分组序号")
+    private Integer groupNumber;
+
+    @ApiModelProperty(value = "是否开启双评 true:开启双评 false:关闭双评")
+    private Boolean doubleRate;
+
+    @ApiModelProperty(value = "仲裁阈值")
+    private Integer arbitrateThreshold;
+
+    @ApiModelProperty(value = "分组对应的题目集合")
+    private List<Question> questions;
+
+    @ApiModelProperty(value = "评卷员id集合")
+    @JsonSerialize(using = ToStringSerializer.class)
+    private List<Marker> markerList;
+
+    public Integer getGroupNumber() {
+        return groupNumber;
+    }
+
+    public void setGroupNumber(Integer groupNumber) {
+        this.groupNumber = groupNumber;
+    }
+
+    public Boolean getDoubleRate() {
+        return doubleRate;
+    }
+
+    public void setDoubleRate(Boolean doubleRate) {
+        this.doubleRate = doubleRate;
+    }
+
+    public Integer getArbitrateThreshold() {
+        return arbitrateThreshold;
+    }
+
+    public void setArbitrateThreshold(Integer arbitrateThreshold) {
+        this.arbitrateThreshold = arbitrateThreshold;
+    }
+
+    public List<Question> getQuestions() {
+        return questions;
+    }
+
+    public void setQuestions(List<Question> questions) {
+        this.questions = questions;
+    }
+
+    public List<Marker> getMarkerList() {
+        return markerList;
+    }
+
+    public void setMarkerList(List<Marker> markerList) {
+        this.markerList = markerList;
+    }
+}

+ 32 - 0
distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/marking/Marker.java

@@ -0,0 +1,32 @@
+package com.qmth.distributed.print.business.bean.marking;
+
+import io.swagger.annotations.ApiModelProperty;
+
+/**
+ * @Description: 评卷员信息
+ * @Author: CaoZixuan
+ * @Date: 2022-04-13
+ */
+public class Marker {
+    @ApiModelProperty(value = "评卷员id")
+    private Long id;
+
+    @ApiModelProperty("账号")
+    private String loginName;
+
+    public Long getId() {
+        return id;
+    }
+
+    public void setId(Long id) {
+        this.id = id;
+    }
+
+    public String getLoginName() {
+        return loginName;
+    }
+
+    public void setLoginName(String loginName) {
+        this.loginName = loginName;
+    }
+}

+ 34 - 0
distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/marking/PaperStructureInfo.java

@@ -0,0 +1,34 @@
+package com.qmth.distributed.print.business.bean.marking;
+
+import io.swagger.annotations.ApiModelProperty;
+
+import java.util.List;
+
+/**
+ * @Description: 试卷结构
+ * @Author: CaoZixuan
+ * @Date: 2022-04-13
+ */
+public class PaperStructureInfo {
+    @ApiModelProperty(value = "客观题结构")
+    private List<Question> objectiveQuestionList;
+
+    @ApiModelProperty(value = "主观题结构")
+    private List<Question> subjectiveQuestionList;
+
+    public List<Question> getObjectiveQuestionList() {
+        return objectiveQuestionList;
+    }
+
+    public void setObjectiveQuestionList(List<Question> objectiveQuestionList) {
+        this.objectiveQuestionList = objectiveQuestionList;
+    }
+
+    public List<Question> getSubjectiveQuestionList() {
+        return subjectiveQuestionList;
+    }
+
+    public void setSubjectiveQuestionList(List<Question> subjectiveQuestionList) {
+        this.subjectiveQuestionList = subjectiveQuestionList;
+    }
+}

+ 56 - 0
distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/marking/Question.java

@@ -0,0 +1,56 @@
+package com.qmth.distributed.print.business.bean.marking;
+
+import io.swagger.annotations.ApiModelProperty;
+
+import java.math.BigDecimal;
+
+/**
+ * @Description: 题目结构
+ * @Author: CaoZixuan
+ * @Date: 2022-04-13
+ */
+public class Question {
+    @ApiModelProperty(value = "大题号")
+    private Integer mainNumber;
+
+    @ApiModelProperty(value = "大题名称")
+    private String mainTitle;
+
+    @ApiModelProperty(value = "小题号")
+    private String subNumber;
+
+    @ApiModelProperty(value = "小题总分")
+    private BigDecimal totalScore;
+
+    public Integer getMainNumber() {
+        return mainNumber;
+    }
+
+    public void setMainNumber(Integer mainNumber) {
+        this.mainNumber = mainNumber;
+    }
+
+    public String getMainTitle() {
+        return mainTitle;
+    }
+
+    public void setMainTitle(String mainTitle) {
+        this.mainTitle = mainTitle;
+    }
+
+    public String getSubNumber() {
+        return subNumber;
+    }
+
+    public void setSubNumber(String subNumber) {
+        this.subNumber = subNumber;
+    }
+
+    public BigDecimal getTotalScore() {
+        return totalScore;
+    }
+
+    public void setTotalScore(BigDecimal totalScore) {
+        this.totalScore = totalScore;
+    }
+}

+ 4 - 4
distributed-print-business/src/main/java/com/qmth/distributed/print/business/entity/ExamPaperGroup.java

@@ -26,8 +26,8 @@ public class ExamPaperGroup extends BaseEntity implements Serializable {
     @ApiModelProperty(value = "分组序号")
     private Integer groupNumber;
 
-    @ApiModelProperty(value = "双评比例(0关闭,1开启)")
-    private Integer doubleRate;
+    @ApiModelProperty(value = "双评比例(0关闭,1开启) tip : 云阅卷0-1之间是按照百分比人数开启双评,因此这里限制只能0或1")
+    private Boolean doubleRate;
 
     @ApiModelProperty(value = "仲裁阈值(开启双评必填)'")
     private Integer arbitrateThreshold;
@@ -60,11 +60,11 @@ public class ExamPaperGroup extends BaseEntity implements Serializable {
         this.groupNumber = groupNumber;
     }
 
-    public Integer getDoubleRate() {
+    public Boolean getDoubleRate() {
         return doubleRate;
     }
 
-    public void setDoubleRate(Integer doubleRate) {
+    public void setDoubleRate(Boolean doubleRate) {
         this.doubleRate = doubleRate;
     }
 

+ 5 - 0
distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/ExamPaperStructureService.java

@@ -29,4 +29,9 @@ public interface ExamPaperStructureService extends IService<ExamPaperStructure>
     List<Map> preStructure(Long id);
 
     long countByPropositionTeacherId();
+
+    /**
+     * 评卷参数提交
+     */
+    void submitExamPaperParams(String evaluationParameters);
 }

+ 11 - 0
distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/ExamPaperStructureServiceImpl.java

@@ -11,6 +11,7 @@ import com.qmth.boot.api.exception.ApiException;
 import com.qmth.distributed.print.business.bean.dto.ExamPaperObjectiveStructureDto;
 import com.qmth.distributed.print.business.bean.dto.ExamPaperStructureDto;
 import com.qmth.distributed.print.business.bean.dto.ExamPaperSubjectiveStructureDto;
+import com.qmth.distributed.print.business.bean.marking.EvaluationParameters;
 import com.qmth.distributed.print.business.entity.ExamPaperStructure;
 import com.qmth.distributed.print.business.entity.ExamTask;
 import com.qmth.distributed.print.business.entity.ExamTaskDetail;
@@ -272,6 +273,16 @@ public class ExamPaperStructureServiceImpl extends ServiceImpl<ExamPaperStructur
         return CollectionUtils.isEmpty(examPaperStructureList) ? 0 : examPaperStructureList.size();
     }
 
+    @Transactional(rollbackFor = Exception.class)
+    @Override
+    public void submitExamPaperParams(String evaluationParameters) {
+        EvaluationParameters e = JSONObject.parseObject(evaluationParameters, EvaluationParameters.class);
+        // TODO: 2022/4/13 1.保存试卷结构
+        // TODO: 2022/4/13 2.保存分组信息 
+        // TODO: 2022/4/13 3.保存分组和评卷员的关系 
+        // TODO: 2022/4/13 4.推送信息到云阅卷 
+    }
+
 
     private Map<String, String> createExamTaskAttachmentIds(ExamPaperStructure examPaperStructure) {
         ExamTask examTask = examTaskService.getByCourseCodeAndPaperNumber(examPaperStructure.getSchoolId(), examPaperStructure.getCourseCode(), examPaperStructure.getPaperNumber());

+ 214 - 2
distributed-print/src/test/java/com/qmth/distributed/print/ConvertUtilTest.java

@@ -6,8 +6,6 @@ import org.junit.runner.RunWith;
 import org.springframework.boot.test.context.SpringBootTest;
 import org.springframework.test.context.junit4.SpringRunner;
 
-import javax.annotation.Resource;
-
 /**
  * @Description: 工具类方法测试类
  * @Author: CaoZixuan
@@ -22,4 +20,218 @@ public class ConvertUtilTest {
         String targetPath = "E:\\pdf\\嵌入式实验";
         ConvertUtil.pdfToImageFile(sourcePath,targetPath);
     }
+
+    @Test
+    public void submitEvaP(){
+        String e = "{\n" +
+                "  \"task\": {\n" +
+                "    \"thirdRelateId\": 1,\n" +
+                "    \"thirdRelateName\": \"考试1\",\n" +
+                "    \"courseName\": \"语文\",\n" +
+                "    \"courseCode\": \"yw001\",\n" +
+                "    \"paperNumber\": 112345667,\n" +
+                "    \"paperType\": \"AB\",\n" +
+                "    \"paperTypes\": [\"A\", \"B\"],\n" +
+                "    \"status\": \"FINISH\"\n" +
+                "  },\n" +
+                "  \"structure\": [\n" +
+                "    {\n" +
+                "      \"id\": \"rr1fbqe8ccbtino8\",\n" +
+                "      \"mainId\": \"hmdk0lmgf8b8a3dg\",\n" +
+                "      \"mainTitle\": \"1111\",\n" +
+                "      \"mainNumber\": 1,\n" +
+                "      \"subNumber\": 1,\n" +
+                "      \"totalScore\": 1,\n" +
+                "      \"isMainFirstSub\": true,\n" +
+                "      \"expandSub\": true\n" +
+                "    },\n" +
+                "    {\n" +
+                "      \"id\": \"qe8bmmcfmnrualau\",\n" +
+                "      \"mainId\": \"hmdk0lmgf8b8a3dg\",\n" +
+                "      \"mainTitle\": \"1111\",\n" +
+                "      \"mainNumber\": 1,\n" +
+                "      \"subNumber\": 2,\n" +
+                "      \"totalScore\": 1,\n" +
+                "      \"isMainFirstSub\": false,\n" +
+                "      \"expandSub\": true\n" +
+                "    },\n" +
+                "    {\n" +
+                "      \"id\": \"b890eq5gph1rnj28\",\n" +
+                "      \"mainId\": \"hmdk0lmgf8b8a3dg\",\n" +
+                "      \"mainTitle\": \"1111\",\n" +
+                "      \"mainNumber\": 1,\n" +
+                "      \"subNumber\": 3,\n" +
+                "      \"totalScore\": 1,\n" +
+                "      \"isMainFirstSub\": false,\n" +
+                "      \"expandSub\": true\n" +
+                "    },\n" +
+                "    {\n" +
+                "      \"id\": \"r5ur82e8j4sfhuje\",\n" +
+                "      \"mainId\": \"hmdk0lmgf8b8a3dg\",\n" +
+                "      \"mainTitle\": \"1111\",\n" +
+                "      \"mainNumber\": 1,\n" +
+                "      \"subNumber\": 4,\n" +
+                "      \"totalScore\": 1,\n" +
+                "      \"isMainFirstSub\": false,\n" +
+                "      \"expandSub\": true\n" +
+                "    },\n" +
+                "    {\n" +
+                "      \"id\": \"febv2i6omdni1nao\",\n" +
+                "      \"mainId\": \"jt809h2g4i10gl58\",\n" +
+                "      \"mainTitle\": \"2222\",\n" +
+                "      \"mainNumber\": 2,\n" +
+                "      \"subNumber\": 1,\n" +
+                "      \"totalScore\": 1,\n" +
+                "      \"isMainFirstSub\": true,\n" +
+                "      \"expandSub\": true\n" +
+                "    },\n" +
+                "    {\n" +
+                "      \"id\": \"vhhkj93ooqoal1vg\",\n" +
+                "      \"mainId\": \"jt809h2g4i10gl58\",\n" +
+                "      \"mainTitle\": \"2222\",\n" +
+                "      \"mainNumber\": 2,\n" +
+                "      \"subNumber\": 2,\n" +
+                "      \"totalScore\": 1,\n" +
+                "      \"isMainFirstSub\": false,\n" +
+                "      \"expandSub\": true\n" +
+                "    },\n" +
+                "    {\n" +
+                "      \"id\": \"d90rgrbgef610le8\",\n" +
+                "      \"mainId\": \"jt809h2g4i10gl58\",\n" +
+                "      \"mainTitle\": \"2222\",\n" +
+                "      \"mainNumber\": 2,\n" +
+                "      \"subNumber\": 3,\n" +
+                "      \"totalScore\": 1,\n" +
+                "      \"isMainFirstSub\": false,\n" +
+                "      \"expandSub\": true\n" +
+                "    }\n" +
+                "  ],\n" +
+                "  \"markers\": [\n" +
+                "    {\n" +
+                "      \"id\": \"gv10hsogia49s8k8\",\n" +
+                "      \"markers\": [\n" +
+                "        {\n" +
+                "          \"id\": \"236486056571052032\",\n" +
+                "          \"userId\": \"236486056571052032\",\n" +
+                "          \"label\": \"test1(美术印刷室)\",\n" +
+                "          \"name\": \"test1\",\n" +
+                "          \"orgName\": \"美术印刷室\",\n" +
+                "          \"selected\": false,\n" +
+                "          \"isUser\": true\n" +
+                "        }\n" +
+                "      ],\n" +
+                "      \"markType\": 1,\n" +
+                "      \"arbitration\": 1,\n" +
+                "      \"questions\": [\n" +
+                "        {\n" +
+                "          \"id\": \"rr1fbqe8ccbtino8\",\n" +
+                "          \"mainId\": \"hmdk0lmgf8b8a3dg\",\n" +
+                "          \"mainTitle\": \"1111\",\n" +
+                "          \"mainNumber\": 1,\n" +
+                "          \"subNumber\": 1,\n" +
+                "          \"totalScore\": 1,\n" +
+                "          \"isMainFirstSub\": true,\n" +
+                "          \"expandSub\": true\n" +
+                "        },\n" +
+                "        {\n" +
+                "          \"id\": \"qe8bmmcfmnrualau\",\n" +
+                "          \"mainId\": \"hmdk0lmgf8b8a3dg\",\n" +
+                "          \"mainTitle\": \"1111\",\n" +
+                "          \"mainNumber\": 1,\n" +
+                "          \"subNumber\": 2,\n" +
+                "          \"totalScore\": 1,\n" +
+                "          \"isMainFirstSub\": false,\n" +
+                "          \"expandSub\": true\n" +
+                "        },\n" +
+                "        {\n" +
+                "          \"id\": \"b890eq5gph1rnj28\",\n" +
+                "          \"mainId\": \"hmdk0lmgf8b8a3dg\",\n" +
+                "          \"mainTitle\": \"1111\",\n" +
+                "          \"mainNumber\": 1,\n" +
+                "          \"subNumber\": 3,\n" +
+                "          \"totalScore\": 1,\n" +
+                "          \"isMainFirstSub\": false,\n" +
+                "          \"expandSub\": true\n" +
+                "        },\n" +
+                "        {\n" +
+                "          \"id\": \"r5ur82e8j4sfhuje\",\n" +
+                "          \"mainId\": \"hmdk0lmgf8b8a3dg\",\n" +
+                "          \"mainTitle\": \"1111\",\n" +
+                "          \"mainNumber\": 1,\n" +
+                "          \"subNumber\": 4,\n" +
+                "          \"totalScore\": 1,\n" +
+                "          \"isMainFirstSub\": false,\n" +
+                "          \"expandSub\": true\n" +
+                "        }\n" +
+                "      ]\n" +
+                "    },\n" +
+                "    {\n" +
+                "      \"id\": \"gfpiqsfg225g4mlg\",\n" +
+                "      \"markers\": [\n" +
+                "        {\n" +
+                "          \"id\": \"236165142725787648\",\n" +
+                "          \"userId\": \"236165142725787648\",\n" +
+                "          \"label\": \"kw03(美术教研室)\",\n" +
+                "          \"name\": \"kw03\",\n" +
+                "          \"orgName\": \"美术教研室\",\n" +
+                "          \"selected\": false,\n" +
+                "          \"isUser\": true\n" +
+                "        },\n" +
+                "        {\n" +
+                "          \"id\": \"236160410883981312\",\n" +
+                "          \"userId\": \"236160410883981312\",\n" +
+                "          \"label\": \"mt03(美术教研室)\",\n" +
+                "          \"name\": \"mt03\",\n" +
+                "          \"orgName\": \"美术教研室\",\n" +
+                "          \"selected\": false,\n" +
+                "          \"isUser\": true\n" +
+                "        },\n" +
+                "        {\n" +
+                "          \"id\": \"236163969650262016\",\n" +
+                "          \"userId\": \"236163969650262016\",\n" +
+                "          \"label\": \"zr03(美术教研室)\",\n" +
+                "          \"name\": \"zr03\",\n" +
+                "          \"orgName\": \"美术教研室\",\n" +
+                "          \"selected\": false,\n" +
+                "          \"isUser\": true\n" +
+                "        }\n" +
+                "      ],\n" +
+                "      \"markType\": 1,\n" +
+                "      \"arbitration\": 1,\n" +
+                "      \"questions\": [\n" +
+                "        {\n" +
+                "          \"id\": \"febv2i6omdni1nao\",\n" +
+                "          \"mainId\": \"jt809h2g4i10gl58\",\n" +
+                "          \"mainTitle\": \"2222\",\n" +
+                "          \"mainNumber\": 2,\n" +
+                "          \"subNumber\": 1,\n" +
+                "          \"totalScore\": 1,\n" +
+                "          \"isMainFirstSub\": true,\n" +
+                "          \"expandSub\": true\n" +
+                "        },\n" +
+                "        {\n" +
+                "          \"id\": \"vhhkj93ooqoal1vg\",\n" +
+                "          \"mainId\": \"jt809h2g4i10gl58\",\n" +
+                "          \"mainTitle\": \"2222\",\n" +
+                "          \"mainNumber\": 2,\n" +
+                "          \"subNumber\": 2,\n" +
+                "          \"totalScore\": 1,\n" +
+                "          \"isMainFirstSub\": false,\n" +
+                "          \"expandSub\": true\n" +
+                "        },\n" +
+                "        {\n" +
+                "          \"id\": \"d90rgrbgef610le8\",\n" +
+                "          \"mainId\": \"jt809h2g4i10gl58\",\n" +
+                "          \"mainTitle\": \"2222\",\n" +
+                "          \"mainNumber\": 2,\n" +
+                "          \"subNumber\": 3,\n" +
+                "          \"totalScore\": 1,\n" +
+                "          \"isMainFirstSub\": false,\n" +
+                "          \"expandSub\": true\n" +
+                "        }\n" +
+                "      ]\n" +
+                "    }\n" +
+                "  ]\n" +
+                "}\n";
+    }
 }