Explorar el Código

Merge remote-tracking branch 'origin/stmms_ft_dev' into test_20181225

ting.yin hace 6 años
padre
commit
f30706bcc7

+ 35 - 0
stmms-biz/src/main/java/cn/com/qmth/stmms/biz/utils/OriginTag.java

@@ -0,0 +1,35 @@
+package cn.com.qmth.stmms.biz.utils;
+
+public class OriginTag {
+
+    private String content;
+
+    private double poxitionX;
+
+    private double poxitionY;
+
+    public String getContent() {
+        return content;
+    }
+
+    public void setContent(String content) {
+        this.content = content;
+    }
+
+    public double getPoxitionX() {
+        return poxitionX;
+    }
+
+    public void setPoxitionX(double poxitionX) {
+        this.poxitionX = poxitionX;
+    }
+
+    public double getPoxitionY() {
+        return poxitionY;
+    }
+
+    public void setPoxitionY(double poxitionY) {
+        this.poxitionY = poxitionY;
+    }
+
+}

+ 120 - 0
stmms-biz/src/main/java/cn/com/qmth/stmms/biz/utils/PictureConfigTransform.java

@@ -0,0 +1,120 @@
+package cn.com.qmth.stmms.biz.utils;
+
+import java.util.HashMap;
+import java.util.LinkedList;
+import java.util.List;
+import java.util.Map;
+import java.util.Map.Entry;
+
+import cn.com.qmth.stmms.biz.exam.model.MarkGroup;
+import cn.com.qmth.stmms.biz.mark.model.PictureConfigItem;
+
+/**
+ * 根据裁切图配置与评卷分组拼接配置,将各显示元素坐标转换为原图坐标
+ * 
+ * @author luoshi
+ *
+ */
+public class PictureConfigTransform {
+
+    /**
+     * 转换方法
+     * 
+     * @param sliceConfigs
+     *            - 裁切图配置
+     * @param groups
+     *            - 评卷分组与原始元素列表
+     * @return 原图序号与新的显示元素列表,序号从1开始
+     */
+    public static Map<Integer, List<PictureTag>> process(List<PictureConfigItem> sliceConfigs,
+            Map<MarkGroup, List<OriginTag>> groups) {
+        Map<Integer, List<PictureTag>> map = new HashMap<>();
+        if (sliceConfigs.isEmpty()) {
+            return map;
+        }
+        for (Entry<MarkGroup, List<OriginTag>> entry : groups.entrySet()) {
+            MarkGroup group = entry.getKey();
+            List<OriginTag> tags = entry.getValue();
+            List<PictureConfigItem> groupConfigs = group.getPictureConfigList();
+            if (tags.isEmpty() || groupConfigs.isEmpty()) {
+                continue;
+            }
+
+            int maxWidth = 0;
+            int totalHeight = 0;
+            // 计算评卷分组拼接图的总高度与最大宽度
+            for (PictureConfigItem config : groupConfigs) {
+                if (config.getW() == 0 || config.getH() == 0) {
+                    // 兼容老数据,宽高未设置时,表示直接使用整张裁切图
+                    PictureConfigItem sliceConfig = sliceConfigs.size() >= config.getI()
+                            ? sliceConfigs.get(config.getI() - 1)
+                            : null;
+                    if (sliceConfig != null) {
+                        // 直接使用裁切图的宽高
+                        config.setW(sliceConfig.getW());
+                        config.setH(sliceConfig.getH());
+                    }
+                }
+                if (config.getW() > 0 && config.getH() > 0) {
+                    maxWidth = Math.max(maxWidth, config.getW());
+                    totalHeight += config.getH();
+                }
+            }
+            // 遍历所有显示元素
+            for (OriginTag tag : tags) {
+                // 计算显示元素在拼接图内的绝对位置
+                int left = (int) (maxWidth * tag.getPoxitionX());
+                int top = (int) (totalHeight * tag.getPoxitionY());
+                int start = 0;
+                for (PictureConfigItem config : groupConfigs) {
+                    if (config.getW() > 0 && config.getH() > 0) {
+                        if (top <= (config.getH() + start)) {
+                            // 根据绝对高度判断显示元素是否落在当前拼接块
+                            buildSheetTag(map, sliceConfigs, config, tag.getContent(), left, top - start);
+                            break;
+                        } else {
+                            start += config.getH();
+                        }
+                    }
+                }
+            }
+        }
+        return map;
+    }
+
+    /**
+     * 根据计算出的拼接块,构造新的原图显示元素
+     * 
+     * @param tags
+     *            - 原图显示元素集合
+     * @param sliceConfigs
+     *            - 裁切图配置
+     * @param config
+     *            - 当前拼接块配置
+     * @param content
+     *            - 显示元素内容
+     * @param left
+     *            - 在拼接块内的左偏移
+     * @param top
+     *            - 在拼接块内的上偏移
+     */
+    private static void buildSheetTag(Map<Integer, List<PictureTag>> tags, List<PictureConfigItem> sliceConfigs,
+            PictureConfigItem config, String content, int left, int top) {
+        if (sliceConfigs.size() >= config.getI()) {
+            PictureConfigItem sliceConfig = sliceConfigs.get(config.getI() - 1);
+            PictureTag tag = new PictureTag();
+            tag.setContent(content);
+            // 原图内偏移=拼接块内偏移+拼接块在裁切图内偏移+裁切图在原图内偏移
+            tag.setLeft(left + config.getX() + sliceConfig.getX());
+            tag.setTop(top + config.getY() + sliceConfig.getY());
+
+            List<PictureTag> list = tags.get(config.getI());
+            if (list == null) {
+                list = new LinkedList<>();
+                tags.put(config.getI(), list);
+            }
+            list.add(tag);
+        }
+    }
+
+}

+ 35 - 0
stmms-biz/src/main/java/cn/com/qmth/stmms/biz/utils/PictureTag.java

@@ -0,0 +1,35 @@
+package cn.com.qmth.stmms.biz.utils;
+
+public class PictureTag {
+
+    private String content;
+
+    private int left;
+
+    private int top;
+
+    public String getContent() {
+        return content;
+    }
+
+    public void setContent(String content) {
+        this.content = content;
+    }
+
+    public int getLeft() {
+        return left;
+    }
+
+    public void setLeft(int left) {
+        this.left = left;
+    }
+
+    public int getTop() {
+        return top;
+    }
+
+    public void setTop(int top) {
+        this.top = top;
+    }
+
+}

+ 116 - 70
stmms-web/src/main/webapp/sql/stmms_ft.sql

@@ -12,9 +12,9 @@ DROP TABLE IF EXISTS `b_campus`;
 CREATE TABLE `b_campus` (
   `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键',
   `school_id` int(11) NOT NULL COMMENT '学校ID',
-  `name` varchar(64) NOT NULL DEFAULT '' COMMENT '名称',
-  `province` varchar(16) DEFAULT '' COMMENT '省份',
-  `city` varchar(16) DEFAULT '' COMMENT '城市',
+  `name` varchar(64) NOT NULL COMMENT '名称',
+  `province` varchar(16) DEFAULT NULL COMMENT '省份',
+  `city` varchar(16) DEFAULT NULL COMMENT '城市',
   `district` varchar(16) DEFAULT NULL COMMENT '地区',
   `address` varchar(128) DEFAULT NULL COMMENT '地址',
   `phone` varchar(32) DEFAULT NULL COMMENT '电话',
@@ -33,14 +33,14 @@ DROP TABLE IF EXISTS `b_school`;
 CREATE TABLE `b_school` (
   `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键',
   `name` varchar(64) NOT NULL COMMENT '名称',
-  `province` varchar(16) NOT NULL DEFAULT '' COMMENT '省份',
-  `city` varchar(16) NOT NULL DEFAULT '' COMMENT '城市',
+  `province` varchar(16) NOT NULL COMMENT '省份',
+  `city` varchar(16) NOT NULL COMMENT '城市',
   `address` varchar(128) DEFAULT NULL COMMENT '地址',
   `phone` varchar(32) DEFAULT NULL COMMENT '电话',
   `logo_url` varchar(64) DEFAULT NULL COMMENT '图片地址',
   `description` varchar(256) DEFAULT NULL COMMENT '描述',
-  `enable` tinyint(1) NOT NULL DEFAULT '1' COMMENT '是否禁用',
-  `time_create` datetime NOT NULL DEFAULT '0000-00-00 00:00:00' COMMENT '创建时间',
+  `enable` tinyint(1) NOT NULL COMMENT '是否禁用',
+  `time_create` datetime NOT NULL COMMENT '创建时间',
   `time_modified` datetime DEFAULT NULL COMMENT '修改时间',
   PRIMARY KEY (`id`),
   KEY `area` (`province`,`city`)
@@ -55,9 +55,9 @@ DROP TABLE IF EXISTS `b_tag`;
 
 CREATE TABLE `b_tag` (
   `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键',
-  `name` varchar(128) NOT NULL DEFAULT '' COMMENT '标记类型',
+  `name` varchar(128) NOT NULL COMMENT '标记类型',
   PRIMARY KEY (`id`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8;
+) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='标记类型表';
 
 LOCK TABLES `b_tag` WRITE;
 
@@ -80,16 +80,17 @@ CREATE TABLE `b_user` (
   `login_name` varchar(64) NOT NULL COMMENT '登录名',
   `name` varchar(64) NOT NULL COMMENT '名称',
   `password` varchar(128) NOT NULL COMMENT '密码',
-  `role` varchar(16) NOT NULL DEFAULT '' COMMENT '角色',
-  `enable` tinyint(1) NOT NULL DEFAULT '1' COMMENT '状态',
-  `school_id` int(11) DEFAULT '0' COMMENT '所属学校ID',
+  `role` varchar(16) NOT NULL COMMENT '角色',
+  `enable` tinyint(1) NOT NULL COMMENT '是否启用',
+  `school_id` int(11) NOT NULL COMMENT '所属学校ID',
   `subject_code` varchar(32) DEFAULT NULL COMMENT '绑定科目代码',
   `last_login_time` datetime DEFAULT NULL COMMENT '最后一次登录时间',
   `last_login_ip` varchar(64) DEFAULT NULL COMMENT '最后一次登录IP',
   `created_time` datetime NOT NULL COMMENT '创建时间',
   `updated_time` datetime DEFAULT NULL COMMENT '修改时间',
   PRIMARY KEY (`id`),
-  KEY `login_name` (`login_name`)
+  KEY `index1` (`login_name`),
+  KEY `index2` (`school_id`,`enable`)
 ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='用户表';
 
 LOCK TABLES `b_user` WRITE;
@@ -111,10 +112,10 @@ CREATE TABLE `eb_exam` (
   `name` varchar(64) NOT NULL COMMENT '考试名称',
   `school_id` int(11) NOT NULL COMMENT '学校ID',
   `exam_time` datetime NOT NULL COMMENT '考试时间',
-  `status` varchar(16) NOT NULL DEFAULT '0' COMMENT '状态',
+  `status` varchar(16) NOT NULL COMMENT '状态',
   `description` varchar(128) DEFAULT NULL COMMENT '描述',
   `creator_id` int(11) NOT NULL COMMENT '创建人',
-  `create_time` datetime NOT NULL DEFAULT '0000-00-00 00:00:00' COMMENT '创建时间',
+  `create_time` datetime NOT NULL COMMENT '创建时间',
   `update_time` datetime DEFAULT NULL COMMENT '修改时间',
   `force_special_tag` tinyint(1) NOT NULL COMMENT '强制标记',
   PRIMARY KEY (`id`),
@@ -130,10 +131,10 @@ DROP TABLE IF EXISTS `eb_exam_package`;
 
 CREATE TABLE `eb_exam_package` (
   `exam_id` int(11) NOT NULL COMMENT '考试ID',
-  `code` varchar(128) NOT NULL DEFAULT '' COMMENT '试卷袋编号',
+  `code` varchar(128) NOT NULL COMMENT '试卷袋编号',
   `pic_count` int(11) NOT NULL COMMENT '上传图片数量',
   PRIMARY KEY (`exam_id`,`code`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8;
+) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='卷袋信息表';
 
 
 
@@ -148,7 +149,7 @@ CREATE TABLE `eb_exam_question` (
   `main_number` int(11) NOT NULL COMMENT '大题号',
   `sub_number` int(11) NOT NULL COMMENT '小题号',
   `is_objective` tinyint(1) NOT NULL COMMENT '是否客观题',
-  `main_title` varchar(32) NOT NULL DEFAULT '' COMMENT '大题名称',
+  `main_title` varchar(32) NOT NULL COMMENT '大题名称',
   `answer` varchar(16) DEFAULT NULL COMMENT '正确答案',
   `total_score` double NOT NULL COMMENT '满分',
   `interval_score` double NOT NULL COMMENT '评卷间隔分',
@@ -156,7 +157,7 @@ CREATE TABLE `eb_exam_question` (
   `total_count` int(11) DEFAULT NULL COMMENT '总人数',
   `zero_count` int(11) DEFAULT NULL COMMENT '零分人数',
   PRIMARY KEY (`exam_id`,`subject_code`,`is_objective`,`main_number`,`sub_number`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8;
+) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='小题信息表';
 
 
 
@@ -167,17 +168,17 @@ DROP TABLE IF EXISTS `eb_exam_student`;
 
 CREATE TABLE `eb_exam_student` (
   `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键',
-  `exam_id` int(11) NOT NULL DEFAULT '0' COMMENT '考试ID',
+  `exam_id` int(11) NOT NULL COMMENT '考试ID',
   `school_id` int(11) NOT NULL COMMENT '学校ID',
-  `campus_name` varchar(128) NOT NULL DEFAULT '0' COMMENT '学习中心名称',
-  `subject_code` varchar(32) NOT NULL DEFAULT '' COMMENT '科目代码',
-  `subject_name` varchar(32) NOT NULL DEFAULT '0' COMMENT '科目名称',
+  `campus_name` varchar(64) NOT NULL COMMENT '学习中心名称',
+  `subject_code` varchar(32) NOT NULL COMMENT '科目代码',
+  `subject_name` varchar(32) NOT NULL COMMENT '科目名称',
   `exam_number` varchar(64) NOT NULL COMMENT '准考证号',
-  `student_code` varchar(64) NOT NULL DEFAULT '' COMMENT '学号',
-  `name` varchar(32) NOT NULL DEFAULT '' COMMENT '姓名',
+  `student_code` varchar(64) NOT COMMENT '学号',
+  `name` varchar(32) NOT NULL COMMENT '姓名',
   `package_code` varchar(128) DEFAULT NULL COMMENT '试卷袋编号',
-  `exam_site` varchar(255) DEFAULT NULL COMMENT '考点',
-  `exam_room` varchar(255) DEFAULT NULL COMMENT '考场',
+  `exam_site` varchar(64) DEFAULT NULL COMMENT '考点',
+  `exam_room` varchar(64) DEFAULT NULL COMMENT '考场',
   `remark` varchar(255) DEFAULT NULL COMMENT '备注',
   `batch_code` varchar(32) DEFAULT NULL COMMENT '扫描批次号',
   `sheet_count` int(11) NOT NULL COMMENT '原图数量',
@@ -185,14 +186,16 @@ CREATE TABLE `eb_exam_student` (
   `answers` text COMMENT '客观题识别结果',
   `is_upload` tinyint(1) NOT NULL COMMENT '是否已上传',
   `is_absent` tinyint(1) NOT NULL COMMENT '是否缺考',
+  `is_manual_absent` tinyint(1) NOT NULL COMMENT '是否人工指定缺考',
+  `is_breach` tinyint(1) NOT NULL COMMENT '是否违纪',
   `is_exception` tinyint(1) NOT NULL COMMENT '是否数据异常',
   `upload_time` datetime DEFAULT NULL COMMENT '上传时间',
   `objective_score` double DEFAULT NULL COMMENT '客观总分',
   `subjective_score` double DEFAULT NULL COMMENT '主观总分',
   `objective_score_list` text COMMENT '客观得分明细',
   `subjective_score_list` text COMMENT '主观得分明细',
-  `subject_level` varchar(128) DEFAULT NULL COMMENT '层次',
-  `subject_category` varchar(128) DEFAULT NULL COMMENT '专业类型',
+  `subject_level` varchar(64) DEFAULT NULL COMMENT '层次',
+  `subject_category` varchar(64) DEFAULT NULL COMMENT '专业类型',
   PRIMARY KEY (`id`),
   KEY `index1` (`exam_id`,`exam_number`),
   KEY `index2` (`exam_id`,`student_code`),
@@ -208,10 +211,10 @@ DROP TABLE IF EXISTS `eb_exam_subject`;
 
 CREATE TABLE `eb_exam_subject` (
   `exam_id` int(11) NOT NULL COMMENT '考试ID',
-  `code` varchar(32) NOT NULL DEFAULT '' COMMENT '科目代码',
-  `name` varchar(32) NOT NULL DEFAULT '' COMMENT '科目名称',
-  `level` varchar(128) DEFAULT NULL COMMENT '层次',
-  `category` varchar(128) DEFAULT NULL COMMENT '专业类型',
+  `code` varchar(32) NOT NULL COMMENT '科目代码',
+  `name` varchar(32) NOT NULL COMMENT '科目名称',
+  `level` varchar(64) DEFAULT NULL COMMENT '层次',
+  `category` varchar(64) DEFAULT NULL COMMENT '专业类型',
   `status` int(11) NOT NULL COMMENT '状态',
   `objective_score` double NOT NULL COMMENT '客观题满分',
   `subjective_score` double NOT NULL COMMENT '主观题满分',
@@ -221,7 +224,7 @@ CREATE TABLE `eb_exam_subject` (
   `has_paper` tinyint(1) NOT NULL COMMENT '是否上传试卷',
   `remark` varchar(255) DEFAULT NULL COMMENT '备注',
   PRIMARY KEY (`exam_id`,`code`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8;
+) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='考试科目表';
 
 
 
@@ -235,7 +238,7 @@ CREATE TABLE `eb_export_imglist` (
   `exam_number` varchar(50) COLLATE utf8_bin NOT NULL,
   `Remark` varchar(255) COLLATE utf8_bin DEFAULT NULL,
   PRIMARY KEY (`exam_id`,`exam_number`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin ROW_FORMAT=DYNAMIC;
+) ENGINE=InnoDB DEFAULT CHARSET=utf8;
 
 
 
@@ -246,20 +249,20 @@ DROP TABLE IF EXISTS `eb_mark_group`;
 
 CREATE TABLE `eb_mark_group` (
   `exam_id` int(11) NOT NULL COMMENT '考试ID',
-  `subject_code` varchar(32) NOT NULL DEFAULT '' COMMENT '科目代码',
+  `subject_code` varchar(32) NOT NULL COMMENT '科目代码',
   `number` int(11) NOT NULL COMMENT '大题号',
-  `title` varchar(128) NOT NULL DEFAULT '' COMMENT '名称',
-  `pic_list` varchar(128) NOT NULL DEFAULT '' COMMENT '小图序号',
+  `title` varchar(128) NOT NULL COMMENT '名称',
+  `pic_list` varchar(255) NOT NULL COMMENT '小图配置',
   `total_score` double NOT NULL COMMENT '满分',
+  `double_rate` double DEFAULT NULL COMMENT '双评比例',
+  `arbitrate_threshold` double DEFAULT NULL COMMENT '仲裁阈值',
+  `score_policy` varchar(16) DEFAULT NULL COMMENT '合分策略',
   `build_time` datetime DEFAULT NULL COMMENT '最后生成任务时间',
   `library_count` int(11) NOT NULL COMMENT '任务总量',
   `marked_count` int(11) NOT NULL COMMENT '已评数量',
   `left_count` int(11) NOT NULL COMMENT '剩余数量',
-  `arbitrate_threshold` double DEFAULT NULL COMMENT '仲裁阈值',
-  `double_rate` double DEFAULT NULL COMMENT '双评比例',
-  `score_policy` varchar(255) DEFAULT NULL COMMENT '合分策略',
   PRIMARY KEY (`exam_id`,`subject_code`,`number`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8;
+) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='评卷分组表';
 
 
 
@@ -271,13 +274,14 @@ DROP TABLE IF EXISTS `eb_marker`;
 CREATE TABLE `eb_marker` (
   `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键',
   `exam_id` int(11) NOT NULL COMMENT '考试ID',
-  `subject_code` varchar(12) NOT NULL DEFAULT '' COMMENT '科目代码',
+  `subject_code` varchar(12) NOT NULL COMMENT '科目代码',
   `group_number` int(11) NOT NULL COMMENT '大题号',
-  `login_name` varchar(128) NOT NULL DEFAULT '' COMMENT '登录名',
-  `name` varchar(32) NOT NULL DEFAULT '' COMMENT '姓名',
-  `password` varchar(128) NOT NULL DEFAULT '' COMMENT '密码',
+  `login_name` varchar(128) NOT NULL COMMENT '登录名',
+  `name` varchar(64) NOT NULL COMMENT '姓名',
+  `password` varchar(128) NOT NULL COMMENT '密码',
   `enable` tinyint(1) NOT NULL COMMENT '是否禁用',
   `mode` varchar(16) DEFAULT NULL COMMENT '评卷模式',
+  `top_count` int(11) DEFAULT NULL COMMENT '评卷数上限',
   `last_login_ip` varchar(64) DEFAULT NULL COMMENT '上次登录IP',
   `last_login_time` datetime DEFAULT NULL COMMENT '上次登录时间',
   PRIMARY KEY (`id`),
@@ -286,6 +290,30 @@ CREATE TABLE `eb_marker` (
 ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='评卷员表';
 
 
+# Dump of table m_arbitrate_history
+# ------------------------------------------------------------
+
+DROP TABLE IF EXISTS `m_arbitrate_history`;
+
+CREATE TABLE `m_arbitrate_history` (
+  `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '自增主键',
+  `exam_id` int(11) NOT NULL COMMENT '考试ID',
+  `subject_code` varchar(32) NOT NULL COMMENT '科目代码',
+  `group_number` int(11) NOT NULL COMMENT '大题号',
+  `exam_number` varchar(64) NOT NULL COMMENT '准考证号',
+  `student_id` int(11) NOT NULL COMMENT '考生ID',
+  `status` int(11) NOT NULL COMMENT '状态',
+  `user_id` int(11) DEFAULT NULL COMMENT '处理人ID',
+  `total_score` double DEFAULT NULL COMMENT '总分',
+  `score_list` varchar(255) DEFAULT NULL COMMENT '给分明细',
+  `create_time` datetime NOT NULL COMMENT '创建时间',
+  `update_time` datetime DEFAULT NULL COMMENT '处理时间',
+  PRIMARY KEY (`id`),
+  KEY `index1` (`exam_id`,`subject_code`,`group_number`,`status`),
+  KEY `index2` (`user_id`,`status`,`update_time`)
+  KEY `index3` (`student_id`,`status`)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='仲裁记录表';
+
 
 # Dump of table m_library
 # ------------------------------------------------------------
@@ -295,27 +323,43 @@ DROP TABLE IF EXISTS `m_library`;
 CREATE TABLE `m_library` (
   `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键',
   `exam_id` int(11) NOT NULL COMMENT '考试ID',
-  `subject_code` varchar(32) NOT NULL DEFAULT '' COMMENT '科目代码',
+  `subject_code` varchar(32) NOT NULL COMMENT '科目代码',
   `group_number` int(11) NOT NULL COMMENT '大题号',
   `campus_id` int(11) NOT NULL COMMENT '学习中心ID',
   `student_id` int(11) NOT NULL COMMENT '考生ID',
-  `exam_number` varchar(128) NOT NULL DEFAULT '' COMMENT '准考证号',
+  `exam_number` varchar(64) NOT NULL COMMENT '准考证号',
+  `task_number` int(11) DEFAULT NULL COMMENT '多评任务序号',
   `marker_id` int(11) DEFAULT NULL COMMENT '评卷员ID',
   `marker_time` datetime DEFAULT NULL COMMENT '评卷时间',
   `marker_score` double DEFAULT NULL COMMENT '评卷总分',
   `marker_score_list` varchar(256) DEFAULT NULL COMMENT '评卷给分明细',
-  `tags` varchar(255) DEFAULT NULL COMMENT '评卷标记',
+  `tags` varchar(16) DEFAULT NULL COMMENT '评卷标记',
   `status` int(11) NOT NULL COMMENT '状态',
   `header_id` int(11) DEFAULT NULL COMMENT '科组长ID',
   `header_score` double DEFAULT NULL COMMENT '科组长总分',
   `header_score_list` varchar(255) DEFAULT NULL COMMENT '科组长给分明细',
   `header_time` datetime DEFAULT NULL COMMENT '科组长评卷时间',
-  `task_number` int(11) DEFAULT NULL COMMENT '任务号',
   PRIMARY KEY (`id`),
-  KEY `index2` (`exam_id`,`subject_code`,`group_number`,`status`),
-  KEY `index1` (`student_id`,`group_number`),
+  KEY `index1` (`exam_id`,`subject_code`,`group_number`,`status`),
+  KEY `index2` (`student_id`,`group_number`),
   KEY `index3` (`marker_id`,`status`,`marker_time`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8;
+) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='评卷任务表';
+
+
+# Dump of table m_special_tag
+# ------------------------------------------------------------
+
+DROP TABLE IF EXISTS `m_special_tag`;
+
+CREATE TABLE `m_special_tag` (
+  `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键',
+  `library_id` int(11) NOT NULL COMMENT '评卷任务ID',
+  `position_x` double NOT NULL COMMENT 'X轴位置',
+  `position_y` double NOT NULL COMMENT 'Y轴位置',
+  `tag_name` varchar(64) NOT NULL COMMENT '标记内容',
+  PRIMARY KEY (`id`),
+  KEY `index1` (`library_id`)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='特殊标记表';
 
 
 
@@ -325,36 +369,38 @@ CREATE TABLE `m_library` (
 DROP TABLE IF EXISTS `m_track`;
 
 CREATE TABLE `m_track` (
-  `library_id` int(11) NOT NULL COMMENT '任务ID',
-  `student_id` int(11) NOT NULL COMMENT '考生ID',
-  `question_number` varchar(128) CHARACTER SET utf8 NOT NULL DEFAULT '' COMMENT '完整题号',
+  `library_id` int(11) NOT NULL COMMENT '评卷任务ID',
+  `question_number` varchar(128) CHARACTER NOT NULL COMMENT '完整题号',
   `number` int(11) NOT NULL COMMENT '序号',
+  `student_id` int(11) NOT NULL COMMENT '考生ID',
   `exam_id` int(11) NOT NULL COMMENT '考试ID',
-  `subject_code` varchar(32) CHARACTER SET utf8 NOT NULL DEFAULT '' COMMENT '科目代码',
+  `subject_code` varchar(32) NOT NULL COMMENT '科目代码',
   `group_number` int(11) NOT NULL COMMENT '大题题号',
   `marker_id` int(11) NOT NULL COMMENT '评卷员ID',
-  `position_x` double NOT NULL COMMENT 'X轴坐标',
-  `position_y` double NOT NULL COMMENT 'Y轴坐标',
   `score` double NOT NULL COMMENT '给分',
-  PRIMARY KEY (`library_id`,`number`,`question_number`)
-) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+  `position_x` double NOT NULL COMMENT 'X轴位置',
+  `position_y` double NOT NULL COMMENT 'Y轴位置',
+  PRIMARY KEY (`library_id`,`question_number`,`number`),
+  KEY `index1` (`student_id`,`group_number`),
+  KEY `index2` (`marker_id`),
+  KEY `index3` (`exam_id`,`subject_code`,`group_number`),
+) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='轨迹给分表';
 
 
 # Dump of table s_score_rate
 # ------------------------------------------------------------
 
 DROP TABLE IF EXISTS `s_score_rate`;
+
 CREATE TABLE `s_score_rate` (
-  `campus_name` varchar(255) NOT NULL COMMENT '学习中心名称',
   `exam_id` int(11) NOT NULL COMMENT '考试ID',
+  `campus_name` varchar(64) NOT NULL COMMENT '学习中心名称',
+  `subject_code` varchar(32) NOT NULL COMMENT '科目代码',
   `main_number` int(11) NOT NULL COMMENT '大题题号',
+  `sub_number` int(11) NOT NULL COMMENT '小题号',
   `is_objective` tinyint(1) NOT NULL COMMENT '是否客观题',
-  `sub_number` int(11) NOT NULL COMMENT '小题 ',
-  `subject_code` varchar(255) NOT NULL COMMENT '科目代码',
-  `avg_score` double DEFAULT NULL COMMENT '平均分',
-  `main_title` varchar(255) DEFAULT NULL COMMENT '大题名称',
+  `main_title` varchar(64) DEFAULT NULL COMMENT '大题名称',
   `total_score` double DEFAULT NULL COMMENT '总分',
-  PRIMARY KEY (`campus_name`,`exam_id`,`main_number`,`is_objective`,`sub_number`,`subject_code`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-
-SET FOREIGN_KEY_CHECKS = 1;
+  `avg_score` double DEFAULT NULL COMMENT '平均分',
+  PRIMARY KEY (`exam_id`,`campus_name`,`subject_code`,`main_number`,`sub_number`,`is_objective`)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='得分统计表';

+ 1 - 0
stmms-web/src/main/webapp/static/mark-new/js/modules/specialTag.js

@@ -20,6 +20,7 @@ function SpecialTag(option) {
         if(this.task.tagList==undefined){
         	this.task.tagList=[];
         }
+        this.markControl.trigger('special.tag.disable');
     });
     this.markControl.on('task.get.none', this, function(event, context, eventObject) {
         this.task = undefined;