Bläddra i källkod

川音需求版本1

YuanPan 7 år sedan
förälder
incheckning
962359d761

+ 11 - 13
pom.xml

@@ -26,8 +26,6 @@
     </parent>
     </parent>
 
 
 
 
-
-
     <properties>
     <properties>
         <!-- non-dependencies -->
         <!-- non-dependencies -->
         <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
         <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
@@ -49,7 +47,7 @@
     <dependencyManagement>
     <dependencyManagement>
 
 
         <dependencies>
         <dependencies>
-        <!--modules -->
+            <!--modules -->
             <dependency>
             <dependency>
                 <groupId>cn.com.qmth</groupId>
                 <groupId>cn.com.qmth</groupId>
                 <artifactId>stmms-ms-core</artifactId>
                 <artifactId>stmms-ms-core</artifactId>
@@ -87,22 +85,22 @@
                 <version>${mysql.version}</version>
                 <version>${mysql.version}</version>
             </dependency>
             </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</artifactId>
+                <version>${poi.version}</version>
+            </dependency>
             <!-- https://mvnrepository.com/artifact/net.sf.json-lib/json-lib -->
             <!-- https://mvnrepository.com/artifact/net.sf.json-lib/json-lib -->
             <dependency>
             <dependency>
                 <groupId>net.sf.json-lib</groupId>
                 <groupId>net.sf.json-lib</groupId>
                 <artifactId>json-lib</artifactId>
                 <artifactId>json-lib</artifactId>
                 <version>2.4</version>
                 <version>2.4</version>
             </dependency>
             </dependency>
-        <dependency>
-            <groupId>com.esotericsoftware</groupId>
-            <artifactId>reflectasm</artifactId>
-            <version>${reflectasm.version}</version>
-        </dependency>
+            <dependency>
+                <groupId>com.esotericsoftware</groupId>
+                <artifactId>reflectasm</artifactId>
+                <version>${reflectasm.version}</version>
+            </dependency>
             <dependency>
             <dependency>
                 <groupId>net.coobird</groupId>
                 <groupId>net.coobird</groupId>
                 <artifactId>thumbnailator</artifactId>
                 <artifactId>thumbnailator</artifactId>

+ 4 - 0
stmms-ms-admin/pom.xml

@@ -29,6 +29,10 @@
             <groupId>cn.com.qmth</groupId>
             <groupId>cn.com.qmth</groupId>
             <artifactId>stmms-ms-commons</artifactId>
             <artifactId>stmms-ms-commons</artifactId>
         </dependency>
         </dependency>
+        <dependency>
+            <groupId>commons-lang</groupId>
+            <artifactId>commons-lang</artifactId>
+        </dependency>
 
 
     </dependencies>
     </dependencies>
 
 

+ 245 - 0
stmms-ms-admin/src/main/java/cn/com/qmth/stmms/ms/admin/api/SnapshotController.java

@@ -0,0 +1,245 @@
+package cn.com.qmth.stmms.ms.admin.api;
+
+import org.apache.commons.lang.StringUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.jdbc.core.JdbcTemplate;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.io.*;
+import java.sql.*;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
+/**
+ * Created by yuanpan on 2017/11/17.
+ */
+@RestController
+@RequestMapping("api/snapshot")
+public class SnapshotController {
+
+    @Autowired
+    private JdbcTemplate jdbcTemplate;
+
+
+    @Value("${app.snapshot.fdsql}")
+    private String fdsql;
+
+    @Value("${app.snapshot.dfsql}")
+    private String dfsql;
+
+    @Value("${app.snapshot.fpsql}")
+    private String fpsql;
+
+
+    @PostMapping("/fendang")
+    public void fendang() {
+        execSql(fdsql);
+    }
+
+    @PostMapping("/dafen")
+    public void dafen() {
+        execSql(dfsql);
+    }
+
+    @PostMapping("/fuping")
+    public void fuping() {
+        execSql(fpsql);
+    }
+
+    private void execSql(String file) {
+        try {
+            PrintWriter logWriter = new PrintWriter(System.out);
+            PrintWriter errorLogWriter = new PrintWriter(System.err);
+
+            Connection conn = jdbcTemplate.getDataSource().getConnection();
+            SqlRunner sqlRunner = new SqlRunner(conn, logWriter, errorLogWriter, false, true);
+
+            sqlRunner.runScript(new FileReader(file));
+        } catch (SQLException e) {
+            e.printStackTrace();
+        } catch (FileNotFoundException e) {
+            e.printStackTrace();
+        }
+
+    }
+
+
+    private static class SqlRunner {
+        public static final String DELIMITER_LINE_REGEX = "(?i)DELIMITER.+", DELIMITER_LINE_SPLIT_REGEX = "(?i)DELIMITER", DEFAULT_DELIMITER = ";";
+        private final boolean autoCommit, stopOnError;
+        private final Connection connection;
+        private String delimiter = SqlRunner.DEFAULT_DELIMITER;
+        private final PrintWriter out, err;
+
+        public SqlRunner(final Connection connection, final PrintWriter out, final PrintWriter err, final boolean autoCommit, final boolean stopOnError) {
+            if (connection == null) {
+                throw new RuntimeException("SqlRunner requires an SQL Connection");
+            }
+            if (err == null || out == null) {
+                throw new RuntimeException("SqlRunner requires both out and err PrintWriters");
+            }
+            this.connection = connection;
+            this.autoCommit = autoCommit;
+            this.stopOnError = stopOnError;
+            this.out = out;
+            this.err = err;
+        }
+
+        public void runScript(final Reader reader) throws SQLException {
+            final boolean originalAutoCommit = this.connection.getAutoCommit();
+            try {
+                if (originalAutoCommit != this.autoCommit) {
+                    this.connection.setAutoCommit(this.autoCommit);
+                }
+                this.runScript(this.connection, reader);
+            } finally {
+                this.connection.setAutoCommit(originalAutoCommit);
+            }
+        }
+
+        private void runScript(final Connection conn, final Reader reader) {
+            StringBuffer command = null;
+            try {
+                final LineNumberReader lineReader = new LineNumberReader(reader);
+                String line = null;
+                while ((line = lineReader.readLine()) != null) {
+                    if (command == null) {
+                        command = new StringBuffer();
+                    }
+                    String trimmedLine = line.trim();
+
+                    if (trimmedLine.startsWith("--") || trimmedLine.startsWith("//") || trimmedLine.startsWith("#")) {
+
+                        // Line is a comment
+                        out.println(trimmedLine);
+                        out.flush();
+
+                    } else if (trimmedLine.endsWith(this.delimiter)) {
+
+                        // Line is end of statement
+
+                        // Support new delimiter
+                        final Pattern pattern = Pattern.compile(SqlRunner.DELIMITER_LINE_REGEX);
+                        final Matcher matcher = pattern.matcher(trimmedLine);
+                        if (matcher.matches()) {
+                            delimiter = trimmedLine.split(SqlRunner.DELIMITER_LINE_SPLIT_REGEX)[1].trim();
+
+                            // New delimiter is processed, continue on next
+                            // statement
+                            line = lineReader.readLine();
+                            if (line == null) {
+                                break;
+                            }
+                            trimmedLine = line.trim();
+                        }
+
+                        // Append
+                        command.append(line.substring(0, line.lastIndexOf(this.delimiter)));
+                        command.append(" ");
+
+                        Statement stmt = null;
+                        ResultSet rs = null;
+                        try {
+                            stmt = conn.createStatement();
+                            out.println();
+                            out.println(command);
+                            out.flush();
+                            boolean hasResults = false;
+                            if (this.stopOnError) {
+                                hasResults = stmt.execute(command.toString());
+                            } else {
+                                try {
+                                    stmt.execute(command.toString());
+                                } catch (final SQLException e) {
+                                    e.fillInStackTrace();
+                                    err.println("Error on command: " + command);
+                                    err.println(e);
+                                    err.flush();
+                                }
+                            }
+                            if (this.autoCommit && !conn.getAutoCommit()) {
+                                conn.commit();
+                            }
+                            rs = stmt.getResultSet();
+                            if (hasResults && rs != null) {
+
+                                // Print result column names
+                                final ResultSetMetaData md = rs.getMetaData();
+                                final int cols = md.getColumnCount();
+                                for (int i = 0; i < cols; i++) {
+                                    final String name = md.getColumnLabel(i + 1);
+                                    out.print(name + "\t");
+                                }
+                                out.println("");
+                                out.println(StringUtils.repeat("---------", md.getColumnCount()));
+                                out.flush();
+
+                                // Print result rows
+                                while (rs.next()) {
+                                    for (int i = 1; i <= cols; i++) {
+                                        final String value = rs.getString(i);
+                                        out.print(value + "\t");
+                                    }
+                                    out.println("");
+                                }
+                                out.flush();
+                            } else {
+                                out.println("Updated: " + stmt.getUpdateCount());
+                                out.flush();
+                            }
+                            command = null;
+                        } finally {
+                            if (rs != null)
+                                try {
+                                    rs.close();
+                                } catch (final Exception e) {
+                                    err.println("Failed to close result: " + e.getMessage());
+                                    err.flush();
+                                }
+                            if (stmt != null)
+                                try {
+                                    stmt.close();
+                                } catch (final Exception e) {
+                                    err.println("Failed to close statement: " + e.getMessage());
+                                    err.flush();
+                                }
+                        }
+                    } else {
+
+                        // Line is middle of a statement
+
+                        // Support new delimiter
+                        final Pattern pattern = Pattern.compile(SqlRunner.DELIMITER_LINE_REGEX);
+                        final Matcher matcher = pattern.matcher(trimmedLine);
+                        if (matcher.matches()) {
+                            delimiter = trimmedLine.split(SqlRunner.DELIMITER_LINE_SPLIT_REGEX)[1].trim();
+                            line = lineReader.readLine();
+                            if (line == null) {
+                                break;
+                            }
+                            trimmedLine = line.trim();
+                        }
+                        command.append(line);
+                        command.append(" ");
+                    }
+                }
+                if (!this.autoCommit) {
+                    conn.commit();
+                }
+            } catch (final SQLException e) {
+                e.fillInStackTrace();
+                err.println("Error on command: " + command);
+                err.println(e);
+                err.flush();
+            } catch (final IOException e) {
+                e.fillInStackTrace();
+                err.println("Error on command: " + command);
+                err.println(e);
+                err.flush();
+            }
+        }
+    }
+}

+ 11 - 10
stmms-ms-commons/src/main/java/cn/com/qmth/stmms/ms/commons/utils/image/ImageCompression.java

@@ -16,12 +16,13 @@ public class ImageCompression {
 
 
     /**
     /**
      * 分辨率压缩
      * 分辨率压缩
+     *
      * @param in 图片文件输入流
      * @param in 图片文件输入流
      * @return
      * @return
      * @throws IOException
      * @throws IOException
      */
      */
     public static BufferedImage compress(File in, ImageCompressionConfig config) throws IOException {
     public static BufferedImage compress(File in, ImageCompressionConfig config) throws IOException {
-        if(config == null){
+        if (config == null) {
             return ImageIO.read(in);
             return ImageIO.read(in);
         }
         }
         BufferedImage image = ImageIO.read(in);
         BufferedImage image = ImageIO.read(in);
@@ -30,14 +31,14 @@ public class ImageCompression {
         int sizeWidth = config.getMinWith();
         int sizeWidth = config.getMinWith();
         int sizeHeight = config.getMinHeight();
         int sizeHeight = config.getMinHeight();
 
 
-        if(config.getPercent() != null && config.getPercent() > 0 && config.getPercent() <= 100){
-            float percent = config.getPercent()/100;
-            sizeWidth = (int)(sizeWidth*percent);
-            sizeHeight = (int)(sizeHeight*percent);
-            if(sizeWidth < config.getMinWith()){
+        if (config.getPercent() != null && config.getPercent() > 0 && config.getPercent() <= 100) {
+            float percent = config.getPercent() / 100;
+            sizeWidth = (int) (sizeWidth * percent);
+            sizeHeight = (int) (sizeHeight * percent);
+            if (sizeWidth < config.getMinWith()) {
                 sizeWidth = config.getMinWith();
                 sizeWidth = config.getMinWith();
             }
             }
-            if(sizeHeight < config.getMinHeight()){
+            if (sizeHeight < config.getMinHeight()) {
                 sizeHeight = config.getMinHeight();
                 sizeHeight = config.getMinHeight();
             }
             }
         }
         }
@@ -46,7 +47,7 @@ public class ImageCompression {
         int height = sizeHeight;
         int height = sizeHeight;
 
 
 
 
-        if(originWidth < originHeight){
+        if (originWidth < originHeight) {
             width = sizeHeight;
             width = sizeHeight;
             height = sizeWidth;
             height = sizeWidth;
         }
         }
@@ -56,8 +57,8 @@ public class ImageCompression {
                 .asBufferedImage();
                 .asBufferedImage();
     }
     }
 
 
-    public static void rotate(File in,File out,int degree) throws IOException {
+    public static void rotate(File in, File out, int degree) throws IOException {
         BufferedImage image = ImageIO.read(in);
         BufferedImage image = ImageIO.read(in);
-        Thumbnails.of(image).size(image.getWidth(),image.getHeight()).rotate(degree).toFile(out);
+        Thumbnails.of(image).size(image.getWidth(), image.getHeight()).rotate(degree).toFile(out);
     }
     }
 }
 }

+ 1 - 1
stmms-ms-core/src/main/java/cn/com/qmth/stmms/ms/core/repository/MarkTaskRepo.java

@@ -74,7 +74,7 @@ public interface MarkTaskRepo extends JpaRepository<MarkTask, Long>, JpaSpecific
      * @param markerId
      * @param markerId
      * @return
      * @return
      */
      */
-    @Query(value = "SELECT q.`id`,q.`name`,SUM(IF(t.`result` IS NULL,1,0)),COUNT(t.question_id) " +
+    @Query(value = "SELECT q.`id`,q.`name`,SUM(IF(t.`result` IS NULL,1,0)),COUNT(t.question_id), q.area_code \n" +
             "FROM mark_task t LEFT OUTER JOIN exam_question q ON t.`question_id` = q.`id` WHERE " +
             "FROM mark_task t LEFT OUTER JOIN exam_question q ON t.`question_id` = q.`id` WHERE " +
             "t.`marker_id` = ? and t.stage = ? GROUP BY t.`question_id` ORDER BY q.`id`", nativeQuery = true)
             "t.`marker_id` = ? and t.stage = ? GROUP BY t.`question_id` ORDER BY q.`id`", nativeQuery = true)
     List<Object[]> countGroupByQuestion(Long markerId, Integer stageId);
     List<Object[]> countGroupByQuestion(Long markerId, Integer stageId);

+ 2 - 2
stmms-ms-core/src/main/java/cn/com/qmth/stmms/ms/core/repository/PaperRepo.java

@@ -44,7 +44,7 @@ public interface PaperRepo extends JpaRepository<Paper, Long>, JpaSpecificationE
      * @param subject
      * @param subject
      * @return
      * @return
      */
      */
-    @Query(value = "SELECT p.`question_id`,p.question_name,SUM(IF(p.level IS NULL,1,0)),COUNT(p.`question_id`) " +
+    @Query(value = "SELECT p.`question_id`,p.question_name,SUM(IF(p.level IS NULL,1,0)),COUNT(p.`question_id`), p.area_code \n" +
             "FROM paper p WHERE p.`work_id` = ? AND p.`subject` = ?" +
             "FROM paper p WHERE p.`work_id` = ? AND p.`subject` = ?" +
             "GROUP BY p.`question_id` ,p.question_name ORDER BY p.`question_id`", nativeQuery = true)
             "GROUP BY p.`question_id` ,p.question_name ORDER BY p.`question_id`", nativeQuery = true)
     List<Object[]> countGroupByQuestionForLevel(Long workId, String subject);
     List<Object[]> countGroupByQuestionForLevel(Long workId, String subject);
@@ -69,7 +69,7 @@ public interface PaperRepo extends JpaRepository<Paper, Long>, JpaSpecificationE
      * @param workId
      * @param workId
      * @return
      * @return
      */
      */
-    @Query(value = "SELECT p.`question_id`,p.question_name,SUM(IF(p.score IS NULL,1,0)),COUNT(p.`question_id`) " +
+    @Query(value = "SELECT p.`question_id`,p.question_name,SUM(IF(p.score IS NULL,1,0)),COUNT(p.`question_id`) ,p.area_code \n" +
             "FROM paper p WHERE p.`work_id` = ? AND p.`subject` = ?" +
             "FROM paper p WHERE p.`work_id` = ? AND p.`subject` = ?" +
             "GROUP BY p.`question_id` ,p.question_name ORDER BY p.`question_id`", nativeQuery = true)
             "GROUP BY p.`question_id` ,p.question_name ORDER BY p.`question_id`", nativeQuery = true)
     List<Object[]> countGroupByQuestionForScore(Long workId, String string);
     List<Object[]> countGroupByQuestionForScore(Long workId, String string);

+ 53 - 0
stmms-ms-main/src/main/resources/application-dev.properties

@@ -0,0 +1,53 @@
+spring.datasource.url=jdbc:mysql://localhost:3306/stmms-ms-2?useUnicode=true&characterEncoding=UTF-8
+spring.datasource.username=root
+spring.datasource.password=1234
+
+#spring.datasource.url=jdbc:mysql://192.168.1.74:3306/stmms-ms-2?useUnicode=true&characterEncoding=UTF-8
+#spring.datasource.username=root
+#spring.datasource.password=root
+
+
+spring.datasource.validation-query=SELECT 1 FROM DUAL
+spring.datasource.test-on-borrow=true
+
+#redis
+#spring.redis.host=192.168.199.102
+#spring.redis.port=32768
+server.address=localhost
+server.port=9000
+server.compression.enabled=true
+server.compression.mime-types: application/json,application/xml,text/html,text/xml,text/plain,text/css,application/javascript
+
+
+logging.file=./logs/sys.log
+logging.level.org.springframework=ERROR
+logging.level.org.hibernate=ERROR
+
+spring.jpa.show-sql=true
+spring.jpa.hibernate.ddl-auto=update
+
+
+spring.http.multipart.max-file-size=10Mb
+
+app.config.deviation=2
+app.admin.loginName=admin-cy
+app.admin.password=123456
+
+sys.config.imageDir=/Users/yuanpan/tmp/stmms-ms/static/images
+sys.config.thumbDir=/Users/yuanpan/tmp/stmms-ms/static/thumbs
+#sys.config.imageDir=.\\static\\images
+#sys.config.thumbDir=.\\static\\thumbs
+sys.config.compression.percent=60
+#sys.config.imageServer.port=3000
+sys.config.imageServer.port=9000
+sys.config.imageServer.ip=localhost
+
+
+#袁攀配置
+web.upload-path=/Users/yuanpan/tmp/stmms-ms/static/
+spring.mvc.static-path-pattern=/**
+spring.resources.static-locations=classpath:/META-INF/resources/,classpath:/resources/,classpath:/static/,classpath:/public/,file:${web.upload-path}
+
+app.snapshot.fdsql=/Users/yuanpan/dumps/stmms-ms-2-fendang.sql
+app.snapshot.dfsql=/Users/yuanpan/dumps/stmms-ms-2-dafen.sql
+app.snapshot.fpsql=/Users/yuanpan/dumps/stmms-ms-2-fuping.sql

+ 54 - 0
stmms-ms-main/src/main/resources/application-test.properties

@@ -0,0 +1,54 @@
+spring.datasource.url=jdbc:mysql://127.0.0.1:3306/stmms-ms-2?useUnicode=true&characterEncoding=UTF-8
+spring.datasource.username=root
+spring.datasource.password=1234
+
+#spring.datasource.url=jdbc:mysql://192.168.1.74:3306/stmms-ms-2?useUnicode=true&characterEncoding=UTF-8
+#spring.datasource.username=root
+#spring.datasource.password=root
+
+
+spring.datasource.validation-query=SELECT 1 FROM DUAL
+spring.datasource.test-on-borrow=true
+
+#redis
+#spring.redis.host=192.168.199.102
+#spring.redis.port=32768
+
+server.port=9000
+server.compression.enabled=true
+server.compression.mime-types: application/json,application/xml,text/html,text/xml,text/plain,text/css,application/javascript
+
+
+logging.file=./logs/sys.log
+logging.level.org.springframework=ERROR
+logging.level.org.hibernate=ERROR
+
+spring.jpa.show-sql=true
+spring.jpa.hibernate.ddl-auto=update
+
+
+spring.http.multipart.max-file-size=10Mb
+
+app.config.deviation=2
+app.admin.loginName=admin-cy
+app.admin.password=123456
+
+sys.config.imageDir=/data/stmms-ms/images
+sys.config.thumbDir=/data/stmms-ms/thumbs
+#sys.config.imageDir=.\\static\\images
+#sys.config.thumbDir=.\\static\\thumbs
+sys.config.compression.percent=60
+#sys.config.imageServer.port=3000
+sys.config.imageServer.port=9000
+sys.config.imageServer.ip=120.24.61.52
+
+
+#袁攀配置
+web.upload-path=/data/stmms-ms/
+spring.mvc.static-path-pattern=/**
+spring.resources.static-locations=classpath:/META-INF/resources/,classpath:/resources/,classpath:/static/,classpath:/public/,file:${web.upload-path}
+
+
+app.snapshot.fdsql=/data/stmms-ms/stmms-ms-2-fendang.sql
+app.snapshot.dfsql=/data/stmms-ms/stmms-ms-2-dafen.sql
+app.snapshot.fpsql=/data/stmms-ms/stmms-ms-2-fuping.sql

+ 3 - 3
stmms-ms-main/src/main/resources/application.properties

@@ -1,4 +1,4 @@
-spring.profiles.active=prod
+spring.profiles.active=dev
 
 
 spring.datasource.url=jdbc:mysql://localhost:3306/stmms-ms-2?useUnicode=true&characterEncoding=UTF-8
 spring.datasource.url=jdbc:mysql://localhost:3306/stmms-ms-2?useUnicode=true&characterEncoding=UTF-8
 spring.datasource.username=root
 spring.datasource.username=root
@@ -25,7 +25,7 @@ logging.file=./logs/sys.log
 logging.level.org.springframework=ERROR
 logging.level.org.springframework=ERROR
 logging.level.org.hibernate=ERROR
 logging.level.org.hibernate=ERROR
 
 
-spring.jpa.show-sql=false
+spring.jpa.show-sql=true
 spring.jpa.hibernate.ddl-auto=update
 spring.jpa.hibernate.ddl-auto=update
 
 
 
 
@@ -42,7 +42,7 @@ sys.config.thumbDir=/Users/yuanpan/tmp/stmms-ms/static/thumbs
 sys.config.compression.percent=60
 sys.config.compression.percent=60
 #sys.config.imageServer.port=3000
 #sys.config.imageServer.port=3000
 sys.config.imageServer.port=9000
 sys.config.imageServer.port=9000
-#sys.config.imageServer.ip=localhost
+sys.config.imageServer.ip=localhost
 
 
 
 
 #袁攀配置
 #袁攀配置

+ 1 - 0
stmms-ms-marking/src/main/java/cn/com/qmth/stmms/ms/marking/assembler/QuestionStatAssembler.java

@@ -39,6 +39,7 @@ public class QuestionStatAssembler {
             qpDTO.setName(qStats[1]);
             qpDTO.setName(qStats[1]);
             qpDTO.setLeftCount(qStats[2]);
             qpDTO.setLeftCount(qStats[2]);
             qpDTO.setTotalCount(qStats[3]);
             qpDTO.setTotalCount(qStats[3]);
+            qpDTO.setAreaCode(qStats[4]);
         }
         }
         return qpDTO;
         return qpDTO;
     }
     }

+ 9 - 1
stmms-ms-marking/src/main/java/cn/com/qmth/stmms/ms/marking/dto/QuestionStatDTO.java

@@ -7,7 +7,7 @@ import java.util.List;
  * 试题进度
  * 试题进度
  * Created by ZHENGMIN on 2016/10/14.
  * Created by ZHENGMIN on 2016/10/14.
  */
  */
-public class QuestionStatDTO implements Serializable{
+public class QuestionStatDTO implements Serializable {
 
 
     private static final long serialVersionUID = 1607982936551079429L;
     private static final long serialVersionUID = 1607982936551079429L;
 
 
@@ -15,6 +15,7 @@ public class QuestionStatDTO implements Serializable{
     private Object name;
     private Object name;
     private Object leftCount;
     private Object leftCount;
     private Object totalCount;
     private Object totalCount;
+    private Object areaCode;
 
 
     private List<MarkerStatDTO> markers;
     private List<MarkerStatDTO> markers;
 
 
@@ -58,4 +59,11 @@ public class QuestionStatDTO implements Serializable{
         this.markers = markers;
         this.markers = markers;
     }
     }
 
 
+    public Object getAreaCode() {
+        return areaCode;
+    }
+
+    public void setAreaCode(Object areaCode) {
+        this.areaCode = areaCode;
+    }
 }
 }