|
@@ -7,6 +7,7 @@ import com.fasterxml.jackson.databind.ObjectMapper;
|
|
|
|
|
|
import java.io.IOException;
|
|
import java.io.IOException;
|
|
import java.io.InputStream;
|
|
import java.io.InputStream;
|
|
|
|
+import java.util.Collections;
|
|
import java.util.List;
|
|
import java.util.List;
|
|
|
|
|
|
/**
|
|
/**
|
|
@@ -19,11 +20,14 @@ public class CardFile {
|
|
|
|
|
|
private boolean adapted;
|
|
private boolean adapted;
|
|
|
|
|
|
- private List<CardPageWrapper> pages;
|
|
|
|
|
|
+ private List<CardPageWrapper> pages = Collections.emptyList();
|
|
|
|
|
|
@JsonIgnore
|
|
@JsonIgnore
|
|
private SliceConfig sliceConfig;
|
|
private SliceConfig sliceConfig;
|
|
|
|
|
|
|
|
+ @JsonIgnore
|
|
|
|
+ private MarkConfig markConfig;
|
|
|
|
+
|
|
public String getVersion() {
|
|
public String getVersion() {
|
|
return version;
|
|
return version;
|
|
}
|
|
}
|
|
@@ -48,34 +52,49 @@ public class CardFile {
|
|
this.pages = pages;
|
|
this.pages = pages;
|
|
}
|
|
}
|
|
|
|
|
|
- /**
|
|
|
|
- * 解析卡格式文件中的裁切图坐标,用于云阅卷同步
|
|
|
|
- *
|
|
|
|
- * @return
|
|
|
|
- */
|
|
|
|
- public SliceConfig getSliceConfig() {
|
|
|
|
- if (sliceConfig == null) {
|
|
|
|
- sliceConfig = new SliceConfig();
|
|
|
|
- if (pages != null) {
|
|
|
|
- int pageNumber = 0;
|
|
|
|
- for (CardPageWrapper pageWrapper : pages) {
|
|
|
|
- pageNumber++;
|
|
|
|
- //默认使用遮盖模式
|
|
|
|
- sliceConfig.addConfig(pageNumber, 0, 0, 0, 0);
|
|
|
|
|
|
+ private void postInit() {
|
|
|
|
+ //解析卡格式文件中的裁切图坐标,用于云阅卷同步
|
|
|
|
+ this.sliceConfig = new SliceConfig();
|
|
|
|
+ if (pages != null) {
|
|
|
|
+ int pageNumber = 0;
|
|
|
|
+ for (CardPageWrapper pageWrapper : pages) {
|
|
|
|
+ pageNumber++;
|
|
|
|
+ //默认使用遮盖模式
|
|
|
|
+ sliceConfig.addConfig(pageNumber, 0, 0, 0, 0);
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ //解析卡格式文件中的大题评卷坐标,用于云阅卷评卷分组设置
|
|
|
|
+ this.markConfig = new MarkConfig();
|
|
|
|
+ if (pages != null) {
|
|
|
|
+ int pageNumber = 0;
|
|
|
|
+ for (CardPageWrapper pageWrapper : pages) {
|
|
|
|
+ pageNumber++;
|
|
|
|
+ for (AnswerArea area : pageWrapper.getExchange().getAnswerArea()) {
|
|
|
|
+ if (area.getMainNumber() != null && area.getArea() != null && area.getArea().length >= 4) {
|
|
|
|
+ markConfig.addConfig(area.getMainNumber(), pageNumber, area.getArea()[0], area.getArea()[1],
|
|
|
|
+ area.getArea()[2], area.getArea()[3]);
|
|
|
|
+ }
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ public SliceConfig getSliceConfig() {
|
|
return sliceConfig;
|
|
return sliceConfig;
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+ public List<MarkConfig.ConfigItem> getMarkConfig(int mainNumber) {
|
|
|
|
+ return markConfig.getConfig(mainNumber);
|
|
|
|
+ }
|
|
|
|
+
|
|
/**
|
|
/**
|
|
- * 校验字段并设置初始值
|
|
|
|
|
|
+ * 输出到文件前,进行必要的字段值转换与处理
|
|
*/
|
|
*/
|
|
- private void validate() {
|
|
|
|
|
|
+ private void format() {
|
|
version = "1.0.0";
|
|
version = "1.0.0";
|
|
adapted = false;
|
|
adapted = false;
|
|
for (CardPageWrapper cpw : pages) {
|
|
for (CardPageWrapper cpw : pages) {
|
|
- cpw.getExchange().validate();
|
|
|
|
|
|
+ cpw.getExchange().format();
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
@@ -87,6 +106,7 @@ public class CardFile {
|
|
*/
|
|
*/
|
|
public byte[] output() throws JsonProcessingException {
|
|
public byte[] output() throws JsonProcessingException {
|
|
ObjectMapper mapper = new ObjectMapper();
|
|
ObjectMapper mapper = new ObjectMapper();
|
|
|
|
+ this.format();
|
|
return mapper.writeValueAsBytes(this);
|
|
return mapper.writeValueAsBytes(this);
|
|
}
|
|
}
|
|
|
|
|
|
@@ -100,7 +120,7 @@ public class CardFile {
|
|
public static CardFile parse(InputStream ins) throws IOException {
|
|
public static CardFile parse(InputStream ins) throws IOException {
|
|
ObjectMapper mapper = new ObjectMapper();
|
|
ObjectMapper mapper = new ObjectMapper();
|
|
CardFile obj = mapper.readValue(ins, CardFile.class);
|
|
CardFile obj = mapper.readValue(ins, CardFile.class);
|
|
- obj.validate();
|
|
|
|
|
|
+ obj.postInit();
|
|
return obj;
|
|
return obj;
|
|
}
|
|
}
|
|
}
|
|
}
|