1
0
Pārlūkot izejas kodu

增加最新卡格式内容模型,电子题卡文件内容解析与输出方法,用于后续电子题卡接口处理逻辑

luoshi 2 gadi atpakaļ
vecāks
revīzija
17ad679a78

+ 20 - 10
pom.xml

@@ -270,10 +270,20 @@
                 <artifactId>jackson-core-asl</artifactId>
                 <version>1.9.12</version>
             </dependency>
+            <dependency>
+                <groupId>com.fasterxml.jackson.core</groupId>
+                <artifactId>jackson-core</artifactId>
+                <version>2.11.3</version>
+            </dependency>
             <dependency>
                 <groupId>com.fasterxml.jackson.core</groupId>
                 <artifactId>jackson-databind</artifactId>
-                <version>2.8.8</version>
+                <version>2.11.3</version>
+            </dependency>
+            <dependency>
+                <groupId>com.fasterxml.jackson.core</groupId>
+                <artifactId>jackson-annotations</artifactId>
+                <version>2.11.3</version>
             </dependency>
             <dependency>
                 <groupId>log4j</groupId>
@@ -323,15 +333,15 @@
                 <version>3.27.0-GA</version>
             </dependency>
             <dependency>
-            	<groupId>com.qmth.boot</groupId>
-          		<artifactId>tools-device</artifactId>
-          		<version>${qmth-boot-version}</version>
-        	</dependency>
-        	<dependency>
-       			<groupId>com.qmth.boot</groupId>
-           		<artifactId>tools-common</artifactId>
-           		<version>${qmth-boot-version}</version>
-       		</dependency>
+                <groupId>com.qmth.boot</groupId>
+                <artifactId>tools-device</artifactId>
+                <version>${qmth-boot-version}</version>
+            </dependency>
+            <dependency>
+                <groupId>com.qmth.boot</groupId>
+                <artifactId>tools-common</artifactId>
+                <version>${qmth-boot-version}</version>
+            </dependency>
         </dependencies>
     </dependencyManagement>
 

+ 40 - 0
stmms-biz/src/main/java/cn/com/qmth/stmms/biz/common/domain/card/AnswerArea.java

@@ -0,0 +1,40 @@
+package cn.com.qmth.stmms.biz.common.domain.card;
+
+import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+@JsonIgnoreProperties(ignoreUnknown = true)
+public class AnswerArea {
+
+    @JsonProperty("main_number")
+    private Integer mainNumber;
+
+    @JsonProperty("sub_number")
+    private String subNumber;
+
+    private double[] area;
+
+    public Integer getMainNumber() {
+        return mainNumber;
+    }
+
+    public void setMainNumber(Integer mainNumber) {
+        this.mainNumber = mainNumber;
+    }
+
+    public String getSubNumber() {
+        return subNumber;
+    }
+
+    public void setSubNumber(String subNumber) {
+        this.subNumber = subNumber;
+    }
+
+    public double[] getArea() {
+        return area;
+    }
+
+    public void setArea(double[] area) {
+        this.area = area;
+    }
+}

+ 106 - 0
stmms-biz/src/main/java/cn/com/qmth/stmms/biz/common/domain/card/CardFile.java

@@ -0,0 +1,106 @@
+package cn.com.qmth.stmms.biz.common.domain.card;
+
+import com.fasterxml.jackson.annotation.JsonIgnore;
+import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
+import com.fasterxml.jackson.core.JsonProcessingException;
+import com.fasterxml.jackson.databind.ObjectMapper;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.util.List;
+
+/**
+ * 卡格式文件内容结构
+ */
+@JsonIgnoreProperties(ignoreUnknown = true)
+public class CardFile {
+
+    private String version;
+
+    private boolean adapted;
+
+    private List<CardPageWrapper> pages;
+
+    @JsonIgnore
+    private SliceConfig sliceConfig;
+
+    public String getVersion() {
+        return version;
+    }
+
+    public void setVersion(String version) {
+        this.version = version;
+    }
+
+    public boolean isAdapted() {
+        return adapted;
+    }
+
+    public void setAdapted(boolean adapted) {
+        this.adapted = adapted;
+    }
+
+    public List<CardPageWrapper> getPages() {
+        return pages;
+    }
+
+    public void setPages(List<CardPageWrapper> 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);
+                }
+            }
+        }
+        return sliceConfig;
+    }
+
+    /**
+     * 校验字段并设置初始值
+     */
+    private void validate() {
+        version = "1.0.0";
+        adapted = false;
+        for (CardPageWrapper cpw : pages) {
+            cpw.getExchange().validate();
+        }
+    }
+
+    /**
+     * 输出为字节数组,用于保存到文件或其他输出流
+     *
+     * @return
+     * @throws JsonProcessingException
+     */
+    public byte[] output() throws JsonProcessingException {
+        ObjectMapper mapper = new ObjectMapper();
+        return mapper.writeValueAsBytes(this);
+    }
+
+    /**
+     * 从输入流解析卡格式文件
+     *
+     * @param ins
+     * @return
+     * @throws IOException
+     */
+    public static CardFile parse(InputStream ins) throws IOException {
+        ObjectMapper mapper = new ObjectMapper();
+        CardFile obj = mapper.readValue(ins, CardFile.class);
+        obj.validate();
+        return obj;
+    }
+}

+ 166 - 0
stmms-biz/src/main/java/cn/com/qmth/stmms/biz/common/domain/card/CardPage.java

@@ -0,0 +1,166 @@
+package cn.com.qmth.stmms.biz.common.domain.card;
+
+import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+import java.util.Collections;
+import java.util.List;
+
+@JsonIgnoreProperties(ignoreUnknown = true)
+public class CardPage {
+
+    @JsonProperty("card_type")
+    private int cardType;
+
+    @JsonProperty("page_size")
+    private String pageSize;
+
+    @JsonProperty("page_image")
+    private String pageImage;
+
+    @JsonProperty("locator")
+    private Locator locator = new Locator();
+
+    @JsonProperty("fill_locator")
+    private List<FillLocator> fillLocator = Collections.emptyList();
+
+    @JsonProperty("check_area")
+    private CheckArea checkArea = new CheckArea();
+
+    @JsonProperty("info_area")
+    private List<double[]> infoArea = Collections.emptyList();
+
+    @JsonProperty("answer_area")
+    private List<AnswerArea> answerArea = Collections.emptyList();
+
+    @JsonProperty("barcode")
+    private List<FieldArea> barcode = Collections.emptyList();
+
+    @JsonProperty("qrcode")
+    private List<FieldArea> qrcode = Collections.emptyList();
+
+    @JsonProperty("fill_area")
+    private List<FillArea> fillArea = Collections.emptyList();
+
+    @JsonProperty("ocr_area")
+    private List<FieldArea> ocrArea = Collections.emptyList();
+
+    @JsonProperty("extension")
+    private Extension extension = new Extension();
+
+    public int getCardType() {
+        return cardType;
+    }
+
+    public void setCardType(int cardType) {
+        this.cardType = cardType;
+    }
+
+    public String getPageSize() {
+        return pageSize;
+    }
+
+    public void setPageSize(String pageSize) {
+        this.pageSize = pageSize;
+    }
+
+    public String getPageImage() {
+        return pageImage;
+    }
+
+    public void setPageImage(String pageImage) {
+        this.pageImage = pageImage;
+    }
+
+    public Locator getLocator() {
+        return locator;
+    }
+
+    public void setLocator(Locator locator) {
+        this.locator = locator;
+    }
+
+    public List<double[]> getInfoArea() {
+        return infoArea;
+    }
+
+    public void setInfoArea(List<double[]> infoArea) {
+        this.infoArea = infoArea;
+    }
+
+    public List<AnswerArea> getAnswerArea() {
+        return answerArea;
+    }
+
+    public void setAnswerArea(List<AnswerArea> answerArea) {
+        this.answerArea = answerArea;
+    }
+
+    public List<FillArea> getFillArea() {
+        return fillArea;
+    }
+
+    public void setFillArea(List<FillArea> fillArea) {
+        this.fillArea = fillArea;
+    }
+
+    public Extension getExtension() {
+        return extension;
+    }
+
+    public void setExtension(Extension extension) {
+        this.extension = extension;
+    }
+
+    public List<FillLocator> getFillLocator() {
+        return fillLocator;
+    }
+
+    public void setFillLocator(List<FillLocator> fillLocator) {
+        this.fillLocator = fillLocator;
+    }
+
+    public CheckArea getCheckArea() {
+        return checkArea;
+    }
+
+    public void setCheckArea(CheckArea checkArea) {
+        this.checkArea = checkArea;
+    }
+
+    public List<FieldArea> getBarcode() {
+        return barcode;
+    }
+
+    public void setBarcode(List<FieldArea> barcode) {
+        this.barcode = barcode;
+    }
+
+    public List<FieldArea> getQrcode() {
+        return qrcode;
+    }
+
+    public void setQrcode(List<FieldArea> qrcode) {
+        this.qrcode = qrcode;
+    }
+
+    public List<FieldArea> getOcrArea() {
+        return ocrArea;
+    }
+
+    public void setOcrArea(List<FieldArea> ocrArea) {
+        this.ocrArea = ocrArea;
+    }
+
+    /**
+     * 校验字段并设置初始值
+     */
+    public void validate() {
+        //默认题卡类型
+        if (cardType < 1 || cardType > 3) {
+            cardType = 2;
+        }
+        //图片内容留空
+        pageImage = "";
+    }
+}

+ 17 - 0
stmms-biz/src/main/java/cn/com/qmth/stmms/biz/common/domain/card/CardPageWrapper.java

@@ -0,0 +1,17 @@
+package cn.com.qmth.stmms.biz.common.domain.card;
+
+import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
+
+@JsonIgnoreProperties(ignoreUnknown = true)
+public class CardPageWrapper {
+
+    private CardPage exchange;
+
+    public CardPage getExchange() {
+        return exchange;
+    }
+
+    public void setExchange(CardPage exchange) {
+        this.exchange = exchange;
+    }
+}

+ 33 - 0
stmms-biz/src/main/java/cn/com/qmth/stmms/biz/common/domain/card/CheckArea.java

@@ -0,0 +1,33 @@
+package cn.com.qmth.stmms.biz.common.domain.card;
+
+import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+import java.util.Collections;
+import java.util.List;
+
+@JsonIgnoreProperties(ignoreUnknown = true)
+public class CheckArea {
+
+    @JsonProperty("black_line")
+    private List<double[]> blackLine = Collections.emptyList();
+
+    @JsonProperty("white_line")
+    private List<double[]> whiteLine = Collections.emptyList();
+
+    public List<double[]> getBlackLine() {
+        return blackLine;
+    }
+
+    public void setBlackLine(List<double[]> blackLine) {
+        this.blackLine = blackLine;
+    }
+
+    public List<double[]> getWhiteLine() {
+        return whiteLine;
+    }
+
+    public void setWhiteLine(List<double[]> whiteLine) {
+        this.whiteLine = whiteLine;
+    }
+}

+ 54 - 0
stmms-biz/src/main/java/cn/com/qmth/stmms/biz/common/domain/card/Extension.java

@@ -0,0 +1,54 @@
+package cn.com.qmth.stmms.biz.common.domain.card;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+import java.util.Collections;
+import java.util.List;
+
+public class Extension {
+
+    @JsonProperty("barcode")
+    private List<FieldArea> barcode = Collections.emptyList();
+
+    @JsonProperty("qrcode")
+    private List<FieldArea> qrcode = Collections.emptyList();
+
+    @JsonProperty("fill_area")
+    private List<FillArea> fillArea = Collections.emptyList();
+
+    @JsonProperty("ocr_area")
+    private List<FieldArea> ocrArea = Collections.emptyList();
+
+    public List<FieldArea> getBarcode() {
+        return barcode;
+    }
+
+    public void setBarcode(List<FieldArea> barcode) {
+        this.barcode = barcode;
+    }
+
+    public List<FieldArea> getQrcode() {
+        return qrcode;
+    }
+
+    public void setQrcode(List<FieldArea> qrcode) {
+        this.qrcode = qrcode;
+    }
+
+    public List<FillArea> getFillArea() {
+        return fillArea;
+    }
+
+    public void setFillArea(List<FillArea> fillArea) {
+        this.fillArea = fillArea;
+    }
+
+    public List<FieldArea> getOcrArea() {
+        return ocrArea;
+    }
+
+    public void setOcrArea(List<FieldArea> ocrArea) {
+        this.ocrArea = ocrArea;
+    }
+
+}

+ 27 - 0
stmms-biz/src/main/java/cn/com/qmth/stmms/biz/common/domain/card/FieldArea.java

@@ -0,0 +1,27 @@
+package cn.com.qmth.stmms.biz.common.domain.card;
+
+import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
+
+@JsonIgnoreProperties(ignoreUnknown = true)
+public class FieldArea {
+
+    private String field;
+
+    private double[] area;
+
+    public String getField() {
+        return field;
+    }
+
+    public void setField(String field) {
+        this.field = field;
+    }
+
+    public double[] getArea() {
+        return area;
+    }
+
+    public void setArea(double[] area) {
+        this.area = area;
+    }
+}

+ 66 - 0
stmms-biz/src/main/java/cn/com/qmth/stmms/biz/common/domain/card/FillArea.java

@@ -0,0 +1,66 @@
+package cn.com.qmth.stmms.biz.common.domain.card;
+
+import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+import java.util.Collections;
+import java.util.List;
+
+@JsonIgnoreProperties(ignoreUnknown = true)
+public class FillArea {
+
+    @JsonProperty("field")
+    private String field;
+
+    @JsonProperty("index")
+    private int index;
+
+    @JsonProperty("single")
+    private boolean single;
+
+    @JsonProperty("horizontal")
+    private boolean horizontal;
+
+    @JsonProperty("items")
+    private List<FillItem> items = Collections.emptyList();
+
+    public String getField() {
+        return field;
+    }
+
+    public void setField(String field) {
+        this.field = field;
+    }
+
+    public int getIndex() {
+        return index;
+    }
+
+    public void setIndex(int index) {
+        this.index = index;
+    }
+
+    public boolean isSingle() {
+        return single;
+    }
+
+    public void setSingle(boolean single) {
+        this.single = single;
+    }
+
+    public boolean isHorizontal() {
+        return horizontal;
+    }
+
+    public void setHorizontal(boolean horizontal) {
+        this.horizontal = horizontal;
+    }
+
+    public List<FillItem> getItems() {
+        return items;
+    }
+
+    public void setItems(List<FillItem> items) {
+        this.items = items;
+    }
+}

+ 56 - 0
stmms-biz/src/main/java/cn/com/qmth/stmms/biz/common/domain/card/FillItem.java

@@ -0,0 +1,56 @@
+package cn.com.qmth.stmms.biz.common.domain.card;
+
+import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.fasterxml.jackson.databind.JsonNode;
+
+import java.util.Collections;
+import java.util.List;
+
+@JsonIgnoreProperties(ignoreUnknown = true)
+public class FillItem {
+
+    @JsonProperty("main_number")
+    private Integer mainNumber;
+
+    @JsonProperty("sub_number")
+    private Integer subNumber;
+
+    @JsonProperty("options")
+    private List<double[]> options = Collections.emptyList();
+
+    @JsonProperty("recog_info")
+    private List<JsonNode> recogInfo = Collections.emptyList();
+
+    public Integer getMainNumber() {
+        return mainNumber;
+    }
+
+    public void setMainNumber(Integer mainNumber) {
+        this.mainNumber = mainNumber;
+    }
+
+    public Integer getSubNumber() {
+        return subNumber;
+    }
+
+    public void setSubNumber(Integer subNumber) {
+        this.subNumber = subNumber;
+    }
+
+    public List<double[]> getOptions() {
+        return options;
+    }
+
+    public void setOptions(List<double[]> options) {
+        this.options = options;
+    }
+
+    public List<JsonNode> getRecogInfo() {
+        return recogInfo;
+    }
+
+    public void setRecogInfo(List<JsonNode> recogInfo) {
+        this.recogInfo = recogInfo;
+    }
+}

+ 55 - 0
stmms-biz/src/main/java/cn/com/qmth/stmms/biz/common/domain/card/FillLocator.java

@@ -0,0 +1,55 @@
+package cn.com.qmth.stmms.biz.common.domain.card;
+
+import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+import java.util.Collections;
+import java.util.List;
+
+@JsonIgnoreProperties(ignoreUnknown = true)
+public class FillLocator {
+
+    @JsonProperty("area")
+    private double[] area;
+
+    @JsonProperty("dot_num")
+    private int dotNum;
+
+    @JsonProperty("dots")
+    private List<double[]> dots = Collections.emptyList();
+
+    @JsonProperty("horizontal")
+    private boolean horizontal;
+
+    public double[] getArea() {
+        return area;
+    }
+
+    public void setArea(double[] area) {
+        this.area = area;
+    }
+
+    public int getDotNum() {
+        return dotNum;
+    }
+
+    public void setDotNum(int dotNum) {
+        this.dotNum = dotNum;
+    }
+
+    public List<double[]> getDots() {
+        return dots;
+    }
+
+    public void setDots(List<double[]> dots) {
+        this.dots = dots;
+    }
+
+    public boolean isHorizontal() {
+        return horizontal;
+    }
+
+    public void setHorizontal(boolean horizontal) {
+        this.horizontal = horizontal;
+    }
+}

+ 30 - 0
stmms-biz/src/main/java/cn/com/qmth/stmms/biz/common/domain/card/Locator.java

@@ -0,0 +1,30 @@
+package cn.com.qmth.stmms.biz.common.domain.card;
+
+import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
+
+import java.util.Collections;
+import java.util.List;
+
+@JsonIgnoreProperties(ignoreUnknown = true)
+public class Locator {
+
+    private List<double[]> top = Collections.emptyList();
+
+    private List<double[]> bottom = Collections.emptyList();
+
+    public List<double[]> getTop() {
+        return top;
+    }
+
+    public void setTop(List<double[]> top) {
+        this.top = top;
+    }
+
+    public List<double[]> getBottom() {
+        return bottom;
+    }
+
+    public void setBottom(List<double[]> bottom) {
+        this.bottom = bottom;
+    }
+}

+ 41 - 0
stmms-biz/src/main/java/cn/com/qmth/stmms/biz/common/domain/card/SliceConfig.java

@@ -0,0 +1,41 @@
+package cn.com.qmth.stmms.biz.common.domain.card;
+
+import org.apache.commons.lang3.StringUtils;
+
+import java.util.Arrays;
+import java.util.LinkedList;
+import java.util.List;
+
+public class SliceConfig {
+
+    private List<ConfigItem> items;
+
+    public SliceConfig() {
+        this.items = new LinkedList<>();
+    }
+
+    public void addConfig(int number, int left, int top, int width, int height) {
+        ConfigItem item = new ConfigItem();
+        item.number = number;
+        item.left = left;
+        item.top = top;
+        item.width = width;
+        item.height = height;
+        this.items.add(item);
+    }
+
+    @Override
+    public String toString() {
+        return StringUtils.join(items, ",");
+    }
+
+    static class ConfigItem {
+
+        int number, left, top, width, height;
+
+        @Override
+        public String toString() {
+            return StringUtils.join(Arrays.asList(number, left, top, width, height), ":");
+        }
+    }
+}

+ 140 - 132
stmms-common/pom.xml

@@ -1,132 +1,140 @@
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-	<modelVersion>4.0.0</modelVersion>
-	<parent>
-		<groupId>cn.com.qmth.stmms</groupId>
-		<artifactId>stmms-parent</artifactId>
-		<version>1.0-SNAPSHOT</version>
-	</parent>
-	<groupId>cn.com.qmth.stmms</groupId>
-	<artifactId>stmms-common</artifactId>
-	<version>1.0-SNAPSHOT</version>
-	<packaging>jar</packaging>
-
-	<name>stmms-common</name>
-	<url>http://maven.apache.org</url>
-
-	<dependencies>
-		<dependency>
-			<groupId>org.springframework</groupId>
-			<artifactId>spring-aspects</artifactId>
-		</dependency>
-		<dependency>
-			<groupId>org.springframework</groupId>
-			<artifactId>spring-test</artifactId>
-		</dependency>
-		<dependency>
-			<groupId>org.springframework</groupId>
-			<artifactId>spring-beans</artifactId>
-		</dependency>
-		<dependency>
-			<groupId>org.springframework</groupId>
-			<artifactId>spring-aop</artifactId>
-		</dependency>
-		<dependency>
-			<groupId>org.springframework</groupId>
-			<artifactId>spring-context</artifactId>
-		</dependency>
-		<dependency>
-			<groupId>org.codehaus.jackson</groupId>
-			<artifactId>jackson-mapper-asl</artifactId>
-		</dependency>
-		<dependency>
-			<groupId>org.codehaus.jackson</groupId>
-			<artifactId>jackson-core-asl</artifactId>
-		</dependency>
-		<dependency>
-			<groupId>com.fasterxml.jackson.core</groupId>
-			<artifactId>jackson-databind</artifactId>
-		</dependency>
-		<dependency>
-			<groupId>com.caucho</groupId>
-			<artifactId>hessian</artifactId>
-		</dependency>
-		<dependency>
-			<groupId>redis.clients</groupId>
-			<artifactId>jedis</artifactId>
-		</dependency>
-		<dependency>
-			<groupId>org.springframework.data</groupId>
-			<artifactId>spring-data-redis</artifactId>
-		</dependency>
-		<dependency>
-			<groupId>commons-fileupload</groupId>
-			<artifactId>commons-fileupload</artifactId>
-		</dependency>
-		<dependency>
-			<groupId>commons-io</groupId>
-			<artifactId>commons-io</artifactId>
-		</dependency>
-		<dependency>
-			<groupId>commons-net</groupId>
-			<artifactId>commons-net</artifactId>
-		</dependency>
-		<dependency>
-			<groupId>org.apache.commons</groupId>
-			<artifactId>commons-lang3</artifactId>
-			<version>${commons-lang3.version}</version>
-		</dependency>
-		<dependency>
-			<groupId>commons-lang</groupId>
-			<artifactId>commons-lang</artifactId>
-			<version>2.4</version>
-		</dependency>
-		<dependency>
-			<groupId>commons-collections</groupId>
-			<artifactId>commons-collections</artifactId>
-		</dependency>
-		<dependency>
-			<groupId>ch.qos.logback</groupId>
-			<artifactId>logback-classic</artifactId>
-		</dependency>
-		<dependency>
-			<groupId>junit</groupId>
-			<artifactId>junit</artifactId>
-			<scope>test</scope>
-		</dependency>
-		<dependency>
-			<groupId>org.slf4j</groupId>
-			<artifactId>slf4j-api</artifactId>
-		</dependency>
-		<dependency>
-			<groupId>net.sourceforge.jexcelapi</groupId>
-			<artifactId>jxl</artifactId>
-		</dependency>
-		<!-- poi office -->
-		<dependency>
-			<groupId>org.apache.poi</groupId>
-			<artifactId>poi</artifactId>
-			<version>${poi.version}</version>
-		</dependency>
-		<dependency>
-			<groupId>org.apache.poi</groupId>
-			<artifactId>poi-ooxml</artifactId>
-			<version>${poi.version}</version>
-		</dependency>
-		<dependency>
-			<groupId>org.apache.poi</groupId>
-			<artifactId>poi-ooxml-schemas</artifactId>
-			<version>${poi.version}</version>
-		</dependency>
-		<dependency>
-			<groupId>org.apache.poi</groupId>
-			<artifactId>poi</artifactId>
-			<version>3.9</version>
-		</dependency>
-		<!-- google java library -->
-		<dependency>
-			<groupId>com.google.guava</groupId>
-			<artifactId>guava</artifactId>
-		</dependency>
-	</dependencies>
-</project>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+    <parent>
+        <groupId>cn.com.qmth.stmms</groupId>
+        <artifactId>stmms-parent</artifactId>
+        <version>1.0-SNAPSHOT</version>
+    </parent>
+    <groupId>cn.com.qmth.stmms</groupId>
+    <artifactId>stmms-common</artifactId>
+    <version>1.0-SNAPSHOT</version>
+    <packaging>jar</packaging>
+
+    <name>stmms-common</name>
+    <url>http://maven.apache.org</url>
+
+    <dependencies>
+        <dependency>
+            <groupId>org.springframework</groupId>
+            <artifactId>spring-aspects</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.springframework</groupId>
+            <artifactId>spring-test</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.springframework</groupId>
+            <artifactId>spring-beans</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.springframework</groupId>
+            <artifactId>spring-aop</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.springframework</groupId>
+            <artifactId>spring-context</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.codehaus.jackson</groupId>
+            <artifactId>jackson-mapper-asl</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.codehaus.jackson</groupId>
+            <artifactId>jackson-core-asl</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>com.fasterxml.jackson.core</groupId>
+            <artifactId>jackson-core</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>com.fasterxml.jackson.core</groupId>
+            <artifactId>jackson-databind</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>com.fasterxml.jackson.core</groupId>
+            <artifactId>jackson-annotations</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>com.caucho</groupId>
+            <artifactId>hessian</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>redis.clients</groupId>
+            <artifactId>jedis</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.springframework.data</groupId>
+            <artifactId>spring-data-redis</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>commons-fileupload</groupId>
+            <artifactId>commons-fileupload</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>commons-io</groupId>
+            <artifactId>commons-io</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>commons-net</groupId>
+            <artifactId>commons-net</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.commons</groupId>
+            <artifactId>commons-lang3</artifactId>
+            <version>${commons-lang3.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>commons-lang</groupId>
+            <artifactId>commons-lang</artifactId>
+            <version>2.4</version>
+        </dependency>
+        <dependency>
+            <groupId>commons-collections</groupId>
+            <artifactId>commons-collections</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>ch.qos.logback</groupId>
+            <artifactId>logback-classic</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>junit</groupId>
+            <artifactId>junit</artifactId>
+            <scope>test</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.slf4j</groupId>
+            <artifactId>slf4j-api</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>net.sourceforge.jexcelapi</groupId>
+            <artifactId>jxl</artifactId>
+        </dependency>
+        <!-- poi office -->
+        <dependency>
+            <groupId>org.apache.poi</groupId>
+            <artifactId>poi</artifactId>
+            <version>${poi.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.poi</groupId>
+            <artifactId>poi-ooxml</artifactId>
+            <version>${poi.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.poi</groupId>
+            <artifactId>poi-ooxml-schemas</artifactId>
+            <version>${poi.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.poi</groupId>
+            <artifactId>poi</artifactId>
+            <version>3.9</version>
+        </dependency>
+        <!-- google java library -->
+        <dependency>
+            <groupId>com.google.guava</groupId>
+            <artifactId>guava</artifactId>
+        </dependency>
+    </dependencies>
+</project>