Jelajahi Sumber

双评轨迹控制

ting.yin 1 tahun lalu
induk
melakukan
7468dfa8bc

+ 51 - 10
stmms-biz/src/main/java/cn/com/qmth/stmms/biz/config/service/impl/SystemCache.java

@@ -1,5 +1,7 @@
 package cn.com.qmth.stmms.biz.config.service.impl;
 
+import java.util.List;
+
 import javax.annotation.PostConstruct;
 
 import net.sf.json.JSONObject;
@@ -11,6 +13,8 @@ import org.springframework.stereotype.Component;
 import cn.com.qmth.stmms.biz.config.model.SystemAuth;
 import cn.com.qmth.stmms.biz.config.service.SystemAuthService;
 import cn.com.qmth.stmms.biz.config.service.SystemConfigService;
+import cn.com.qmth.stmms.biz.school.model.School;
+import cn.com.qmth.stmms.biz.school.service.SchoolService;
 import cn.com.qmth.stmms.biz.utils.AppLicenseUtil;
 import cn.com.qmth.stmms.biz.utils.SolarHttpUtil;
 import cn.com.qmth.stmms.common.enums.ConfigType;
@@ -28,8 +32,13 @@ public class SystemCache {
     @Autowired
     private SystemConfigService configService;
 
+    @Autowired
+    private SchoolService schoolService;
+
     private boolean Auth;
 
+    private boolean doubleTrack;
+
     private Long expireTime;
 
     private String fileServer;
@@ -51,21 +60,14 @@ public class SystemCache {
             SolarHttpUtil httpUtil = new SolarHttpUtil(accessKey, accessSecret, host, uri);
             if (httpUtil.getAPP()) {
                 Auth = true;
+                doubleTrack = true;
             }
         } else if (s != null && SystemAuthType.OFFLINE.equals(s.getType())) {
             JSONObject json = AppLicenseUtil.parseLicense(ByteArray.fromBase64(s.getDescription()).value());
-            if (json != null) {
-                Auth = true;
-                if (json.has("control") && json.getJSONObject("control").has("expireTime")) {
-                    try {
-                        expireTime = json.getJSONObject("control").getLong("expireTime");
-                    } catch (Exception e) {
-                        e.printStackTrace();
-                    }
-                }
-            }
+            this.parseJson(json);
         } else {
             Auth = false;
+            doubleTrack = false;
         }
         fileServer = configService.findByType(ConfigType.FILE_SERVER);
         markTime = Long.parseLong(configService.findByType(ConfigType.MARK_TIME));
@@ -103,4 +105,43 @@ public class SystemCache {
         this.expireTime = expireTime;
     }
 
+    public boolean isDoubleTrack() {
+        return doubleTrack;
+    }
+
+    public void setDoubleTrack(boolean doubleTrack) {
+        this.doubleTrack = doubleTrack;
+    }
+
+    public void parseJson(JSONObject json) {
+        if (json != null) {
+            Auth = true;
+            List<School> list = schoolService.parseJson(json.getString("orgs"));
+            schoolService.updateOrg(list);
+            if (json.has("control") && json.getJSONObject("control").has("expireTime")) {
+                Long expireTime = null;
+                try {
+                    expireTime = json.getJSONObject("control").getLong("expireTime");
+                } catch (Exception e) {
+                    e.printStackTrace();
+                }
+                this.expireTime = expireTime;
+            }
+            this.doubleTrack = false;
+            if (json.has("control") && json.getJSONObject("control").has("custom")
+                    && json.getJSONObject("control").getJSONObject("custom").has("enable_double_track")) {
+                try {
+                    this.doubleTrack = json.getJSONObject("control").getJSONObject("custom")
+                            .getBoolean("enable_double_track");
+                } catch (Exception e) {
+                    e.printStackTrace();
+                }
+            }
+        } else {
+            Auth = false;
+            doubleTrack = false;
+            expireTime = null;
+        }
+    }
+
 }

+ 0 - 6
stmms-biz/src/main/java/cn/com/qmth/stmms/biz/mark/dao/HeaderTrackDao.java

@@ -17,8 +17,6 @@ public interface HeaderTrackDao extends JpaRepository<HeaderTrack, HeaderTrackPK
 
     List<HeaderTrack> findByPkStudentIdAndPkQuestionNumberOrderByPkNumberAsc(Integer studentId, String questionNumber);
 
-    List<HeaderTrack> findByPkStudentId(Integer studentId);
-
     @Modifying(clearAutomatically = true)
     @Query("delete from HeaderTrack t where t.pk.studentId=?1")
     void deleteByPkStudentId(Integer studentId);
@@ -31,10 +29,6 @@ public interface HeaderTrackDao extends JpaRepository<HeaderTrack, HeaderTrackPK
     @Query("delete from HeaderTrack t where t.examId=?1 and t.subjectCode=?2 and t.groupNumber=?3")
     void deleteByExamIdAndSubjectCodeAndGroupNumber(Integer examId, String subjectCode, Integer groupNumber);
 
-    @Modifying(clearAutomatically = true)
-    @Query("delete from HeaderTrack t where t.pk.studentId=?1 and t.pk.questionNumber=?2")
-    void deleteByPkStudentIdAndQuestionNumber(Integer studentId, String questionNumber);
-
     @Query("select count(t) from HeaderTrack t where t.pk.studentId=?1 and t.pk.questionNumber=?2 and t.unanswered =?3")
     int countByStudentIdAndQuestionNumberAndUnanswered(Integer studentId, String questionNumber, boolean unanswered);
 

+ 14 - 0
stmms-biz/src/main/java/cn/com/qmth/stmms/biz/school/model/School.java

@@ -67,6 +67,12 @@ public class School implements Serializable {
      */
     private boolean enable;
 
+    /**
+     * 双评轨迹
+     */
+    @Column(name = "double_track")
+    private boolean doubleTrack;
+
     @Column(name = "access_key", nullable = true, length = 64)
     private String accessKey;
 
@@ -218,4 +224,12 @@ public class School implements Serializable {
         this.subCode = subCode;
     }
 
+    public boolean isDoubleTrack() {
+        return doubleTrack;
+    }
+
+    public void setDoubleTrack(boolean doubleTrack) {
+        this.doubleTrack = doubleTrack;
+    }
+
 }

+ 6 - 4
stmms-biz/src/main/java/cn/com/qmth/stmms/biz/school/service/impl/SchoolServiceImpl.java

@@ -86,16 +86,16 @@ public class SchoolServiceImpl extends BaseQueryService<School> implements Schoo
 
     @Transactional
     public School save(School school) {
-    	boolean isCreate=false;
+        boolean isCreate = false;
         if (school.getId() != null && school.getId() > 0) {
             school.setUpdateTime(new Date());
         } else {
-        	isCreate=true;
+            isCreate = true;
             school.setCreateTime(new Date());
         }
-        School s=schoolDao.save(school);
+        School s = schoolDao.save(school);
         if (isCreate) {
-        	privilegeService.initRoleAndPrivilege(school.getId());
+            privilegeService.initRoleAndPrivilege(school.getId());
         }
         return s;
     }
@@ -146,6 +146,7 @@ public class SchoolServiceImpl extends BaseQueryService<School> implements Schoo
                 school.setCity("");
                 school.setCode(s.getCode());
                 school.setEnable(true);
+                school.setDoubleTrack(false);
             }
             school.setName(s.getName());
             school.setAccessKey(s.getAccessKey());
@@ -169,6 +170,7 @@ public class SchoolServiceImpl extends BaseQueryService<School> implements Schoo
             school.setName(org.getString("name"));
             school.setLogoUrl(org.getString("logo"));
             school.setEnable(true);
+            school.setDoubleTrack(false);
             schools.add(school);
         }
         return schools;

+ 1 - 0
stmms-biz/src/main/java/cn/com/qmth/stmms/biz/utils/SolarHttpUtil.java

@@ -238,6 +238,7 @@ public class SolarHttpUtil {
                 school.setName(org.getString("name"));
                 school.setLogoUrl(org.getString("logo"));
                 school.setEnable(true);
+                school.setDoubleTrack(false);
                 schools.add(school);
             }
         }

+ 4 - 19
stmms-web/src/main/java/cn/com/qmth/stmms/admin/config/SystemAuthController.java

@@ -3,7 +3,6 @@ package cn.com.qmth.stmms.admin.config;
 import cn.com.qmth.stmms.biz.config.model.SystemAuth;
 import cn.com.qmth.stmms.biz.config.service.SystemAuthService;
 import cn.com.qmth.stmms.biz.config.service.impl.SystemCache;
-import cn.com.qmth.stmms.biz.school.model.School;
 import cn.com.qmth.stmms.biz.school.service.SchoolService;
 import cn.com.qmth.stmms.biz.utils.AppLicenseUtil;
 import cn.com.qmth.stmms.biz.utils.SolarHttpUtil;
@@ -34,7 +33,6 @@ import javax.servlet.http.HttpServletResponse;
 import java.io.ByteArrayInputStream;
 import java.io.IOException;
 import java.util.Date;
-import java.util.List;
 
 @Controller
 @RequestMapping("/admin/sys/auth")
@@ -66,6 +64,7 @@ public class SystemAuthController extends BaseController {
         view.addObject("systemAuth", systemAuth == null ? new SystemAuth() : systemAuth);
         view.addObject("typeList", SystemAuthType.values());
         view.addObject("auth", authCache.isAuth());
+        view.addObject("doubleTrack", authCache.isDoubleTrack());
         view.addObject("expireTime", authCache.getExpireTime() == null ? null : new Date(authCache.getExpireTime()));
         return view;
     }
@@ -94,33 +93,19 @@ public class SystemAuthController extends BaseController {
             authService.save(systemAuth);
             if (httpUtil.getAPP()) {
                 authCache.setAuth(true);
+                authCache.setDoubleTrack(true);
                 authCache.setExpireTime(null);
                 schoolService.updateOrg();
             } else {
                 authCache.setAuth(false);
+                authCache.setDoubleTrack(false);
                 authCache.setExpireTime(null);
             }
         } else {
             try {
                 systemAuth.setDescription(ByteArray.fromInputStream(file.getInputStream()).toBase64());
                 JSONObject json = AppLicenseUtil.parseLicense(ByteArray.fromInputStream(file.getInputStream()).value());
-                if (json != null) {
-                    authCache.setAuth(true);
-                    List<School> list = schoolService.parseJson(json.getString("orgs"));
-                    schoolService.updateOrg(list);
-                    if (json.has("control") && json.getJSONObject("control").has("expireTime")) {
-                        Long expireTime = null;
-                        try {
-                            expireTime = json.getJSONObject("control").getLong("expireTime");
-                        } catch (Exception e) {
-                            e.printStackTrace();
-                        }
-                        authCache.setExpireTime(expireTime);
-                    }
-                } else {
-                    authCache.setAuth(false);
-                    authCache.setExpireTime(null);
-                }
+                authCache.parseJson(json);
                 authService.save(systemAuth);
             } catch (IOException e) {
                 log.error("parseLicense error", e);

+ 13 - 2
stmms-web/src/main/java/cn/com/qmth/stmms/admin/exam/InspectedController.java

@@ -10,6 +10,8 @@ import java.util.stream.Collectors;
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
 
+import net.sf.json.JSONObject;
+
 import org.apache.commons.lang.StringUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -27,6 +29,7 @@ import org.springframework.web.servlet.mvc.support.RedirectAttributes;
 import cn.com.qmth.stmms.admin.dto.RejectResult;
 import cn.com.qmth.stmms.admin.utils.ExportInspectExcel;
 import cn.com.qmth.stmms.admin.vo.InspectedSubjectVO;
+import cn.com.qmth.stmms.biz.config.service.impl.SystemCache;
 import cn.com.qmth.stmms.biz.exam.bean.ExamStudentVo;
 import cn.com.qmth.stmms.biz.exam.bean.InspectWorkVo;
 import cn.com.qmth.stmms.biz.exam.model.Exam;
@@ -46,6 +49,8 @@ import cn.com.qmth.stmms.biz.lock.LockService;
 import cn.com.qmth.stmms.biz.mark.model.Task;
 import cn.com.qmth.stmms.biz.mark.service.MarkService;
 import cn.com.qmth.stmms.biz.mark.service.TaskService;
+import cn.com.qmth.stmms.biz.school.model.School;
+import cn.com.qmth.stmms.biz.school.service.SchoolService;
 import cn.com.qmth.stmms.common.annotation.Logging;
 import cn.com.qmth.stmms.common.annotation.RoleRequire;
 import cn.com.qmth.stmms.common.domain.WebUser;
@@ -57,7 +62,6 @@ import cn.com.qmth.stmms.common.enums.SelectiveStatus;
 import cn.com.qmth.stmms.common.enums.SubjectiveStatus;
 import cn.com.qmth.stmms.common.utils.ExportExcel;
 import cn.com.qmth.stmms.common.utils.RequestUtils;
-import net.sf.json.JSONObject;
 
 @Controller("inspectedController")
 @RequestMapping("/admin/exam/inspected")
@@ -95,6 +99,12 @@ public class InspectedController extends BaseExamController {
     @Autowired
     private ExamSubjectService subjectService;
 
+    @Autowired
+    private SystemCache systemCache;
+
+    @Autowired
+    private SchoolService schoolService;
+
     @Value("${slice.split.config}")
     private String splitConfig;
 
@@ -418,7 +428,8 @@ public class InspectedController extends BaseExamController {
         setting.accumulate("userName", wu.getName());
         setting.accumulate("splitConfig", getSplitConfig());
         setting.accumulate("inspectScroll", exam.getInspectScrollBottom());
-        setting.accumulate("doubleTrack", false);
+        School school = schoolService.findById(exam.getSchoolId());
+        setting.accumulate("doubleTrack", systemCache.isDoubleTrack() && school.isDoubleTrack());
 
         ExamSubject examSubject = subjectService.find(examId, subjectCode);
         JSONObject subject = new JSONObject();

+ 2 - 0
stmms-web/src/main/java/cn/com/qmth/stmms/admin/school/SchoolController.java

@@ -98,10 +98,12 @@ public class SchoolController extends BaseController {
         }
         if (previous == null) {
             school.setEnable(true);
+            school.setDoubleTrack(false);
             school.resetAccessKeyAndSecret();
             school = schoolService.save(school);
             return "redirect:/admin/sys/school/admin?id=" + school.getId();
         } else {
+            previous.setDoubleTrack(school.isDoubleTrack());
             previous.setName(school.getName());
             previous.setProvince(school.getProvince());
             previous.setCity(school.getCity());

+ 1 - 0
stmms-web/src/main/java/cn/com/qmth/stmms/api/controller/CoreController.java

@@ -977,6 +977,7 @@ public class CoreController extends BaseApiController {
             school.setParentId(parent.getId());
             school.setSubCode(subCode);
             school.setEnable(true);
+            school.setDoubleTrack(false);
             school.setProvince(parent.getProvince());
             school.setCity(parent.getCity());
             school.setAddress(parent.getAddress());

+ 1 - 0
stmms-web/src/main/java/cn/com/qmth/stmms/api/controller/ScanController.java

@@ -154,6 +154,7 @@ public class ScanController extends BaseApiController {
                     student.getSubjectCode(),
                     (int) studentService.countUploadedByExamIdAndSubjectCode(student.getExamId(),
                             student.getSubjectCode()));
+            checkStudentService.deleteByStudentId(student.getId());
             obj.accumulate("examNumber", student.getExamNumber());
             obj.accumulate("updateTime", DateUtils.formatDateTime(new Date()));
         }

+ 7 - 0
stmms-web/src/main/webapp/WEB-INF/views/modules/sys/authInfo.jsp

@@ -32,6 +32,13 @@
 	        	${systemAuth.type.name }
 	        </div>
 	    </div>
+		<div class="control-group">
+	        <label class="control-label">双评轨迹</label>
+	        <div class="controls">
+	            <c:if test="${doubleTrack}">开启</c:if>
+	            <c:if test="${doubleTrack==null ||!doubleTrack}">关闭</c:if>
+	        </div>
+	    </div>
 	</form:form>
 </body>
 </html>

+ 6 - 0
stmms-web/src/main/webapp/WEB-INF/views/modules/sys/schoolEdit.jsp

@@ -54,6 +54,12 @@
             <form:input path="address" htmlEscape="false" maxlength="400"/>
         </div>
     </div>
+    <div class="control-group">
+        <label class="control-label">开启双评轨迹</label>
+        <div class="controls">
+            <input name="doubleTrack" type="checkbox" <c:if test="${school.doubleTrack}">checked</c:if>/>
+        </div>
+    </div>
     <div class="control-group">
         <label class="control-label">AccessKey</label>
         <div class="controls">

+ 4 - 0
stmms-web/src/main/webapp/WEB-INF/views/modules/sys/schoolList.jsp

@@ -36,6 +36,7 @@
 				<th>名称</th>
 				<th>代码</th>
 				<th>子机构代码</th>
+				<th>双评轨迹</th>
 				<th>省份</th>
 				<th>地市</th>
 				<th>操作</th>
@@ -46,6 +47,9 @@
 			<tr>
 				<td>${school.name}</td>
 				<td>${school.code}</td>
+				<td><c:if test="${school.doubleTrack}">开启</c:if>
+					<c:if test="${school.doubleTrack==null || !school.doubleTrack}">关闭</c:if>
+				</td>
 				<td>${school.subCode}</td>
 				<td>${school.province}</td>
 				<td>${school.city}</td>

+ 1 - 0
stmms-web/src/main/webapp/sql/stmms_ft.sql

@@ -23,6 +23,7 @@ CREATE TABLE `b_school`
     `logo_url`      text  DEFAULT NULL COMMENT '图片地址',
     `description`   varchar(128) DEFAULT NULL COMMENT '描述',
     `enable`        tinyint(1)  NOT NULL COMMENT '是否禁用',
+	`double_track`  tinyint(1)  NOT NULL COMMENT '双评轨迹',
     `access_key`    varchar(64)  DEFAULT NULL COMMENT 'AccessKey',
     `access_secret` varchar(64)  DEFAULT NULL COMMENT 'AccessSecret',
     `create_time`   datetime    NOT NULL COMMENT '创建时间',

+ 2 - 0
stmms-web/src/main/webapp/sql/upgrade/1.3.14.sql

@@ -12,6 +12,8 @@ ALTER TABLE eb_exam_subject ADD COLUMN `inspect_round` 	int(11) NOT NULL DEFAULT
 ALTER TABLE eb_inspect_history ADD COLUMN `inspect_round` 	int(11) NOT NULL COMMENT '复核轮数';
 ALTER TABLE eb_exam_subject ADD COLUMN `selective` 	tinyint(1) NOT NULL DEFAULT 0 COMMENT '选做题科目';
 
+ALTER TABLE b_school ADD COLUMN double_track`  tinyint(1)  NOT NULL DEFAULT 0 COMMENT '双评轨迹';
+
 -- 更新选做题科目数据
 UPDATE eb_exam_subject o,
  (