Bläddra i källkod

机构版-迭代

xiaof 4 år sedan
förälder
incheckning
bd1f72fc4a

+ 15 - 0
stmms-ms-admin/src/main/java/cn/com/qmth/stmms/ms/admin/api/UserApi.java

@@ -255,4 +255,19 @@ public class UserApi {
         return new ResponseEntity(HttpStatus.OK);
     }
 
+    /**
+     * 启用/禁用
+     *
+     * @param userId
+     * @param enable
+     * @return
+     */
+    @RequestMapping(value = "enable", method = RequestMethod.POST)
+    public ResponseEntity enable(@RequestParam Long userId, @RequestParam Boolean enable) {
+        MarkUser markUser = markUserRepo.findOne(userId);
+        markUser.setEnabled(enable);
+        markUserRepo.saveAndFlush(markUser);
+        return new ResponseEntity(HttpStatus.OK);
+    }
+
 }

+ 22 - 9
stmms-ms-core/src/main/java/cn/com/qmth/stmms/ms/core/specification/StudentSpecification.java

@@ -5,6 +5,7 @@ import cn.com.qmth.stmms.ms.core.domain.Student;
 import cn.com.qmth.stmms.ms.core.domain.enums.TrialEnum;
 import cn.com.qmth.stmms.ms.core.vo.Subject;
 import org.springframework.data.jpa.domain.Specification;
+import org.springframework.util.CollectionUtils;
 
 import javax.persistence.criteria.Predicate;
 import java.util.ArrayList;
@@ -135,6 +136,7 @@ public class StudentSpecification extends PagingAndSortingSpecification {
     public Specification<Student> getSpecification() {
         return (root, query, cb) -> {
             List<Predicate> predicates = new ArrayList<Predicate>();
+            List<Predicate> listPermission = new ArrayList<>();
             predicates.add(cb.equal(root.get("test"), String.valueOf(TrialEnum.DEFAULT.getId())));
             if (getStudentName() != null) {
                 predicates.add(cb.like(root.get("name"), "%" + getStudentName() + "%"));
@@ -149,7 +151,18 @@ public class StudentSpecification extends PagingAndSortingSpecification {
                 predicates.add(cb.equal(root.get("areaCode"), getAreaCode()));
             }
             if (getIsAbsent() != null) {
-                predicates.add(cb.equal(root.get("isAbsent"), getIsAbsent()));
+//                predicates.add(cb.equal(root.get("isAbsent"), getIsAbsent()));
+                if (getSubject().equals(Subject.SC.name())) {
+                    predicates.add(cb.equal(root.get("scMissing"), true));
+                } else if (getSubject().equals(Subject.SX.name())) {
+                    predicates.add(cb.equal(root.get("sxMissing"), true));
+                } else if (getSubject().equals(Subject.SM.name())) {
+                    predicates.add(cb.equal(root.get("smMissing"), true));
+                } else {
+                    listPermission.add(cb.equal(root.get("scMissing"), true));
+                    listPermission.add(cb.equal(root.get("sxMissing"), true));
+                    listPermission.add(cb.equal(root.get("smMissing"), true));
+                }
             }
 //            if (getUploadStatus() != null) {
 //                predicates.add(cb.like(root.get("uploadStatus"), "%" + getUploadStatus() + "%"));
@@ -164,13 +177,6 @@ public class StudentSpecification extends PagingAndSortingSpecification {
             if (getUpload() != null && !getUpload()) {
                 if (Objects.nonNull(getSubject()) && !getSubject().isEmpty()) {
                     predicates.add(cb.like(root.get("uploadStatus"), "%" + getSubject() + ":0" + "%"));
-                    if(getSubject().equals(Subject.SC.name())){
-                        predicates.add(cb.equal(root.get("scMissing"), true));
-                    } else if(getSubject().equals(Subject.SX.name())){
-                        predicates.add(cb.equal(root.get("sxMissing"), true));
-                    } else if(getSubject().equals(Subject.SM.name())){
-                        predicates.add(cb.equal(root.get("smMissing"), true));
-                    }
                 } else {
                     predicates.add(cb.equal(root.get("uploadStatus"), "SX:0,SC:0,SM:0"));
                 }
@@ -187,7 +193,14 @@ public class StudentSpecification extends PagingAndSortingSpecification {
             if (getExamRoom() != null && getExamRoom() != "") {
                 predicates.add(cb.equal(root.get("examRoom"), getExamRoom()));
             }
-            return cb.and(predicates.toArray(new Predicate[predicates.size()]));
+            Predicate Pre_And = cb.and(predicates.toArray(new Predicate[predicates.size()]));
+            if (!CollectionUtils.isEmpty(listPermission)) {
+                Predicate[] predicatesPermissionArr = new Predicate[listPermission.size()];
+                Predicate Pre_Or = cb.or(listPermission.toArray(predicatesPermissionArr));
+                return query.where(Pre_And, Pre_Or).getRestriction();
+            } else {
+                return cb.and(predicates.toArray(new Predicate[predicates.size()]));
+            }
         };
     }
 }

+ 30 - 7
stmms-ms-commons/src/main/java/cn/com/qmth/stmms/ms/commons/utils/DbBackupUtils.java → stmms-ms-core/src/main/java/cn/com/qmth/stmms/ms/core/utils/DbBackupUtils.java

@@ -1,15 +1,21 @@
-package cn.com.qmth.stmms.ms.commons.utils;
+package cn.com.qmth.stmms.ms.core.utils;
 
 import cn.com.qmth.stmms.ms.commons.config.DbConfig;
+import cn.com.qmth.stmms.ms.core.domain.Organization;
+import cn.com.qmth.stmms.ms.core.domain.Work;
+import cn.com.qmth.stmms.ms.core.repository.OrganizationRepo;
+import cn.com.qmth.stmms.ms.core.repository.WorkRepo;
 import org.apache.http.client.utils.DateUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
+import sun.security.acl.WorldGroupImpl;
 
 import java.io.File;
 import java.io.IOException;
 import java.util.Date;
+import java.util.Objects;
 import java.util.concurrent.ExecutorService;
 import java.util.concurrent.Executors;
 
@@ -26,15 +32,32 @@ public class DbBackupUtils {
     @Autowired
     DbConfig dbConfig;
 
-    public void startBackup(String name) {
-        service.submit(dbBackUp(name));
+    @Autowired
+    OrganizationRepo organizationRepo;
+
+    @Autowired
+    WorkRepo workRepo;
+
+    public void startBackup(Long workId, String stage) {
+        Work work = workRepo.getOne(workId);
+        if (Objects.nonNull(work)) {
+            Organization organization = organizationRepo.getOne(work.getOrganizationId());
+            if (Objects.nonNull(organization)) {
+                String code = organization.getAbbreviation();
+                service.submit(dbBackUp(workId, code, stage));
+            }
+        }
     }
 
-    public Runnable dbBackUp(String name) {
+    public Runnable dbBackUp(Long workId, String code, String stage) {
         return () -> {
-            String pathSql = "backup" + File.separator + name + "-" + dbConfig.getDbName() + "-" + DateUtils.formatDate(new Date(), "yyyyMMddHHmmss") + ".sql";
-            File fileSql = new File(pathSql);
+            String path = "beifen";
+            String pathSql = code + "-" + workId + "-" + stage + "-" + DateUtils.formatDate(new Date(), "yyyyMMddHHmmss") + ".sql";
+            File fileSql = new File(path, pathSql);
             try {
+                if (!fileSql.getParentFile().exists()) {
+                    fileSql.getParentFile().mkdirs();
+                }
                 //创建备份sql文件
                 if (!fileSql.exists()) {
                     fileSql.createNewFile();
@@ -46,7 +69,7 @@ public class DbBackupUtils {
                 sb.append(" -u" + dbConfig.getUserName());
                 sb.append(" -p" + dbConfig.getPassword());
                 sb.append(" " + dbConfig.getDbName() + " >");
-                sb.append(pathSql);
+                sb.append(fileSql.getPath());
                 LOGGER.info("cmd命令为:{},开始备份数据库:" + sb.toString(), dbConfig.getDbName());
                 Runtime runtime = Runtime.getRuntime();
                 Process process = runtime.exec("cmd /c" + sb.toString());

+ 2 - 5
stmms-ms-marking/src/main/java/cn/com/qmth/stmms/ms/marking/service/AssignTaskService.java

@@ -1,11 +1,9 @@
 package cn.com.qmth.stmms.ms.marking.service;
 
-import cn.com.qmth.stmms.ms.commons.utils.DbBackupUtils;
+import cn.com.qmth.stmms.ms.core.utils.DbBackupUtils;
 import cn.com.qmth.stmms.ms.commons.utils.RandomUtil;
-import cn.com.qmth.stmms.ms.commons.utils.ServletUtil;
 import cn.com.qmth.stmms.ms.commons.utils.SqlUtil;
 import cn.com.qmth.stmms.ms.core.cache.CacheService;
-import cn.com.qmth.stmms.ms.core.cache.ParamCache;
 import cn.com.qmth.stmms.ms.core.domain.*;
 import cn.com.qmth.stmms.ms.core.domain.task.MarkTask;
 import cn.com.qmth.stmms.ms.core.domain.user.MarkUser;
@@ -19,7 +17,6 @@ import org.springframework.transaction.annotation.Transactional;
 import org.springframework.util.CollectionUtils;
 
 import java.util.*;
-import java.util.concurrent.atomic.AtomicInteger;
 import java.util.function.Function;
 import java.util.stream.Collectors;
 
@@ -298,7 +295,7 @@ public class AssignTaskService {
             }
         }
         // 备份数据库
-        dbBackupUtils.startBackup("分档");
+        dbBackupUtils.startBackup(markSubject.getWorkId(), "分档");
     }
 
     private void initTaskPublishData(MarkSubject markSubject) {