Ver Fonte

完成matter导入接口

4228306 há 6 anos atrás
pai
commit
35f158841c

+ 4 - 0
src/main/java/edu/math/diagnosis/config/Constants.java

@@ -81,4 +81,8 @@ public class Constants {
     public static final int KNOWLEDGE_NOT_MASTER = 0;
     public static final int KNOWLEDGE_LACK = 1;
     public static final int KNOWLEDGE_MASTER = 2;
+
+    public static final String MATTER_EMOTION = "学习情绪问题";
+    public static final String MATTER_STUDY = "学科能力问题";
+
 }

+ 9 - 3
src/main/java/edu/math/diagnosis/controller/ExcelController.java

@@ -1,9 +1,11 @@
 package edu.math.diagnosis.controller;
 
+import edu.math.diagnosis.config.Constants;
 import edu.math.diagnosis.entity.SubjectKnowledge;
 import edu.math.diagnosis.model.MatterVo;
 import edu.math.diagnosis.model.Result;
 import edu.math.diagnosis.service.KnowledgeService;
+import edu.math.diagnosis.service.MatterService;
 import edu.math.diagnosis.word.KnowledgeUtil;
 import io.swagger.annotations.Api;
 import org.springframework.web.bind.annotation.*;
@@ -19,6 +21,8 @@ public class ExcelController {
 
     @Resource
     private KnowledgeService knowledgeService;
+    @Resource
+    private MatterService matterService;
 
     @PostMapping("/uploadAll")
     public Result uploadAll() {
@@ -37,11 +41,13 @@ public class ExcelController {
 
     @PostMapping("/uploadMatter")
     public Result uploadMatter(@RequestParam(defaultValue = "2") Long subjectId,
-                                  @RequestParam(defaultValue = "6Y") String grade,
-                                  @RequestBody MultipartFile file) throws Exception {
+                               @RequestParam(defaultValue = "6Y") String grade,
+                               @RequestBody MultipartFile file) throws Exception {
         byte[] data = file.getBytes();
         List<MatterVo> list = KnowledgeUtil.importMatter(subjectId, grade, data);
-//        knowledgeService.addAll(list);
+        matterService.addBase(Constants.MATTER_EMOTION,"emotion");
+        matterService.addBase(Constants.MATTER_STUDY,"study");
+        matterService.addAll(list);
         return Result.ok(list);
     }
 

+ 7 - 0
src/main/java/edu/math/diagnosis/dao/BaseMatterRepo.java

@@ -4,4 +4,11 @@ import edu.math.diagnosis.entity.BaseMatter;
 import org.springframework.data.jpa.repository.JpaRepository;
 
 public interface BaseMatterRepo  extends JpaRepository<BaseMatter, Long> {
+
+    boolean existsByName(String name);
+
+    BaseMatter findByName(String name);
+
+    boolean deleteByName(String name);
+
 }

+ 7 - 0
src/main/java/edu/math/diagnosis/dao/CommonMatterRepo.java

@@ -4,4 +4,11 @@ import edu.math.diagnosis.entity.CommonMatter;
 import org.springframework.data.jpa.repository.JpaRepository;
 
 public interface CommonMatterRepo extends JpaRepository<CommonMatter,Long> {
+
+    boolean existsByName(String name);
+
+    CommonMatter findByName(String name);
+
+    boolean deleteByName(String name);
+
 }

+ 7 - 0
src/main/java/edu/math/diagnosis/dao/KnowledgeMatterRepo.java

@@ -8,4 +8,11 @@ import java.util.List;
 public interface KnowledgeMatterRepo extends JpaRepository<KnowledgeMatter,Long> {
 
     List<KnowledgeMatter> findAllBySubjectIdAndGrade(Long subjectId,String grade);
+
+    boolean existsByNameAndSubjectIdAndGrade(String name,Long subjectId,String grade);
+
+    KnowledgeMatter findByNameAndSubjectIdAndGrade(String name,Long subjectId,String grade);
+
+    boolean deleteByName(String nameAndSubjectIdAndGrade);
+
 }

+ 7 - 0
src/main/java/edu/math/diagnosis/dao/MistakeMatterRepo.java

@@ -4,4 +4,11 @@ import edu.math.diagnosis.entity.MistakeMatter;
 import org.springframework.data.jpa.repository.JpaRepository;
 
 public interface MistakeMatterRepo extends JpaRepository<MistakeMatter,Long> {
+
+    boolean existsByName(String name);
+
+    MistakeMatter findByName(String name);
+
+    boolean deleteByName(String name);
+
 }

+ 2 - 2
src/main/java/edu/math/diagnosis/service/CommitService.java

@@ -165,11 +165,11 @@ public class CommitService {
         String code;
         int count = 0;
         do {
-            code = CodeUtil.generateByTime();
+            code = CodeUtil.generateByDate();
             count++;
         } while (paperCommitRepo.existsByCode(code) && count < 10);
         if (count == 0) {
-            code = CodeUtil.generateByTime(CodeUtil.DEFAULT_LENGTH + 4, CodeUtil.DIGEST);
+            code = CodeUtil.generateByDate(CodeUtil.DEFAULT_LENGTH + 4, CodeUtil.DIGEST);
         }
         return code;
     }

+ 57 - 0
src/main/java/edu/math/diagnosis/service/MatterService.java

@@ -1,5 +1,6 @@
 package edu.math.diagnosis.service;
 
+import edu.math.diagnosis.config.Constants;
 import edu.math.diagnosis.dao.BaseMatterRepo;
 import edu.math.diagnosis.dao.CommonMatterRepo;
 import edu.math.diagnosis.dao.KnowledgeMatterRepo;
@@ -8,9 +9,15 @@ import edu.math.diagnosis.entity.BaseMatter;
 import edu.math.diagnosis.entity.CommonMatter;
 import edu.math.diagnosis.entity.KnowledgeMatter;
 import edu.math.diagnosis.entity.MistakeMatter;
+import edu.math.diagnosis.model.MatterVo;
+import edu.math.diagnosis.util.CodeUtil;
+import org.apache.commons.lang3.StringUtils;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
 
 import javax.annotation.Resource;
+import java.util.ArrayList;
+import java.util.Arrays;
 import java.util.List;
 
 @Service
@@ -26,13 +33,23 @@ public class MatterService {
     private KnowledgeMatterRepo knowledgeMatterRepo;
 
     public BaseMatter addBase(String name, String code) {
+        if (existBase(name)) {
+            return null;
+        }
         BaseMatter matter = new BaseMatter();
         matter.setName(name);
         matter.setCode(code);
         return baseMatterRepo.save(matter);
     }
 
+    public boolean existBase(String name) {
+        return baseMatterRepo.existsByName(name);
+    }
+
     public MistakeMatter addMistake(String name, String code, String baseMatter) {
+        if (existMistake(name)) {
+            return null;
+        }
         MistakeMatter matter = new MistakeMatter();
         matter.setName(name);
         matter.setCode(code);
@@ -40,7 +57,14 @@ public class MatterService {
         return mistakeMatterRepo.save(matter);
     }
 
+    public boolean existMistake(String name) {
+        return mistakeMatterRepo.existsByName(name);
+    }
+
     public CommonMatter addCommon(String name, String code, String mistakeMatter, String baseMatter) {
+        if (existCommon(name)) {
+            return null;
+        }
         CommonMatter matter = new CommonMatter();
         matter.setName(name);
         matter.setCode(code);
@@ -49,7 +73,14 @@ public class MatterService {
         return commonMatterRepo.save(matter);
     }
 
+    public boolean existCommon(String name) {
+        return commonMatterRepo.existsByName(name);
+    }
+
     public KnowledgeMatter addKnowledge(String name, String code, String commonMatter, String mistakeMatter, String baseMatter, Long subjectId, String grade) {
+        if (existKnowledge(name, subjectId, grade)) {
+            return null;
+        }
         KnowledgeMatter matter = new KnowledgeMatter();
         matter.setName(name);
         matter.setCode(code);
@@ -61,9 +92,35 @@ public class MatterService {
         return knowledgeMatterRepo.save(matter);
     }
 
+    public boolean existKnowledge(String name, Long subjectId, String grade) {
+        return knowledgeMatterRepo.existsByNameAndSubjectIdAndGrade(name, subjectId, grade);
+    }
+
     public List<KnowledgeMatter> list(Long subjectId, String grade) {
         return knowledgeMatterRepo.findAllBySubjectIdAndGrade(subjectId, grade);
     }
 
+    @Transactional(rollbackFor = Exception.class)
+    public void addAll(List<MatterVo> list) {
+        for (MatterVo vo : list) {
+            String base = convertBaseMatter(vo.getEmotionMatter(), vo.getStudyMatter());
+            String mistake = vo.getMistakeMatter();
+            String common = vo.getCommonMatter();
+            String knowledge = vo.getKnowledgeMatter();
+            addMistake(mistake, CodeUtil.generate(4, CodeUtil.ALPHA), base);
+            addCommon(common, CodeUtil.generate(4, CodeUtil.ALPHA), mistake, base);
+            addKnowledge(knowledge, CodeUtil.generate(4, CodeUtil.ALPHA), common, mistake, base, vo.getSubjectId(), vo.getGrade());
+        }
+    }
 
+    public String convertBaseMatter(Boolean emotion, Boolean study) {
+        List<String> matters = new ArrayList<>();
+        if (study != null && study) {
+            matters.add(Constants.MATTER_EMOTION);
+        }
+        if (emotion != null && emotion) {
+            matters.add(Constants.MATTER_STUDY);
+        }
+        return StringUtils.join(matters, ",");
+    }
 }

+ 8 - 6
src/main/java/edu/math/diagnosis/util/CodeUtil.java

@@ -11,13 +11,15 @@ public class CodeUtil {
 
     public static final String DIGEST = "0123456789";
     public static final String ALPHA = "abcdefghijklmnopqrstuvwxyzABCDEFGHIZJLMNOPQRSTUVWXYZ";
+    public static final String UPPER_ALPHA = "ABCDEFGHIZJLMNOPQRSTUVWXYZ";
+    public static final String LOWER_ALPHA = "abcdefghijklmnopqrstuvwxyz";
     public static final String SPECIAL_CHAR = "~!@#$%^&*()_+<>?:\"{}|,./;'[]\\`-=";
 
     public static final String DIGEST_ALPHA = DIGEST + ALPHA;
 
     public static final int DEFAULT_LENGTH = 8;
 
-    public static final String DEFAULT_TIME_PATTERN = "yyyyMMdd";
+    public static final String DEFAULT_DATE_PATTERN = "yyyyMMdd";
 
     public static final String DIGEST_ALPHA_SPECIAL_CHAR = DIGEST_ALPHA + SPECIAL_CHAR;
 
@@ -43,15 +45,15 @@ public class CodeUtil {
         return prefix + generate(length, pattern) + suffix;
     }
 
-    public static String generateByTime() {
-        return generateByTime(DEFAULT_TIME_PATTERN, DEFAULT_LENGTH, DIGEST);
+    public static String generateByDate() {
+        return generateByDate(DEFAULT_DATE_PATTERN, DEFAULT_LENGTH, DIGEST);
     }
 
-    public static String generateByTime(int length, String pattern) {
-        return generateByTime(DEFAULT_TIME_PATTERN, length, pattern);
+    public static String generateByDate(int length, String pattern) {
+        return generateByDate(DEFAULT_DATE_PATTERN, length, pattern);
     }
 
-    public static String generateByTime(String timePattern, int length, String pattern) {
+    public static String generateByDate(String timePattern, int length, String pattern) {
         String date = new SimpleDateFormat(timePattern).format(new Date());
         return generate(date, "", length, pattern);
     }

+ 13 - 0
src/main/java/edu/math/diagnosis/util/GenerateCode.java

@@ -0,0 +1,13 @@
+package edu.math.diagnosis.util;
+
+@FunctionalInterface
+public interface GenerateCode {
+
+    String generate(int length, String pattern);
+
+    default boolean check() {
+        //TODO 完成生成code的通用接口
+        return true;
+    }
+
+}

+ 7 - 2
src/main/java/edu/math/diagnosis/word/KnowledgeUtil.java

@@ -59,14 +59,19 @@ public class KnowledgeUtil {
         for (int numRow = 2; numRow < sheet.getLastRowNum(); numRow++) {
             XSSFRow xRow = sheet.getRow(numRow);
 //            xRow.getCell(1).setCellValue((float) (numRow + 3) / 5);
+            if(xRow.getCell(3) == null){
+                continue;
+            }
             MatterVo vo = new MatterVo();
+            vo.setSubjectId(subjectId);
+            vo.setGrade(grade);
             vo.setNumber((numRow + 3) / 5);
             vo.setOption(xRow.getCell(2).getStringCellValue());
             vo.setKnowledgeMatter(xRow.getCell(3).getStringCellValue());
             vo.setCommonMatter(xRow.getCell(4).getStringCellValue());
             vo.setMistakeMatter(xRow.getCell(5).getStringCellValue());
-            vo.setEmotionMatter(xRow.getCell(6).getBooleanCellValue());
-            vo.setStudyMatter(xRow.getCell(7).getBooleanCellValue());
+            vo.setEmotionMatter(xRow.getCell(6) != null);
+            vo.setStudyMatter(xRow.getCell(7) != null);
             result.add(vo);
         }
         System.out.println(result);