Selaa lähdekoodia

图片上传时生成MD5编码

ting.yin 6 vuotta sitten
vanhempi
commit
1ad7b0c8a5

+ 0 - 3
stmms-ms-admin/src/main/java/cn/com/qmth/stmms/ms/admin/api/WorkApi.java

@@ -30,9 +30,6 @@ public class WorkApi {
     @Autowired
     private LevelRepo levelRepo;
     
-    @Autowired
-    private PaperRepo paperRepo;
-
     @Autowired
     private MarkUserRepo markUserRepo;
 

+ 23 - 11
stmms-ms-admin/src/main/java/cn/com/qmth/stmms/ms/admin/service/DataUploadService.java

@@ -1,5 +1,22 @@
 package cn.com.qmth.stmms.ms.admin.service;
 
+import java.awt.image.BufferedImage;
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.OutputStream;
+import java.util.Date;
+import java.util.List;
+
+import javax.imageio.ImageIO;
+
+import org.apache.commons.codec.digest.DigestUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
 import cn.com.qmth.stmms.ms.admin.dto.StudentDTO;
 import cn.com.qmth.stmms.ms.commons.config.ImageCompressionConfig;
 import cn.com.qmth.stmms.ms.commons.config.SystemConfig;
@@ -16,17 +33,6 @@ import cn.com.qmth.stmms.ms.core.repository.PaperRepo;
 import cn.com.qmth.stmms.ms.core.repository.StudentRepo;
 import cn.com.qmth.stmms.ms.core.vo.Subject;
 
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Service;
-import org.springframework.transaction.annotation.Transactional;
-
-import javax.imageio.ImageIO;
-
-import java.awt.image.BufferedImage;
-import java.io.*;
-import java.util.Date;
-import java.util.List;
-
 /**
  * 数据上传服务 Created by zhengmin on 2016/11/18.
  */
@@ -92,14 +98,20 @@ public class DataUploadService {
 
         Paper exist = paperRepo.findByWorkIdAndSubjectAndExamNumber(student.getWorkId(), subject,
                 student.getExamNumber());
+        String sheetMD5 = DigestUtils.md5Hex(in);
+        String sliceMD5 = DigestUtils.md5Hex(new FileInputStream(thumbFileName));
         if (exist != null) {
             exist.setManual(isManual);
             exist.setUploadedOn(new Date());
+            exist.setSheetMD5(sheetMD5);
+            exist.setSliceMD5(sliceMD5);
             paperRepo.save(exist);
         } else {
             ExamQuestion examQuestion = examQuestionRepo.findByWorkIdAndSubjectAndAreaCode(student.getWorkId(), subject,
                     student.getAreaCode());
             Paper paper = new Paper(student.getWorkId(), null, subject, examQuestion, student, false);
+            paper.setSheetMD5(sheetMD5);
+            paper.setSliceMD5(sliceMD5);
             paperRepo.save(paper);
             // 更新科目上传状态
             /**

+ 14 - 2
stmms-ms-collect/src/main/java/cn/com/qmth/stmms/ms/collect/api/CollectApi.java

@@ -9,14 +9,17 @@ import cn.com.qmth.stmms.ms.commons.config.ImageCompressionConfig;
 import cn.com.qmth.stmms.ms.commons.config.SystemConfig;
 import cn.com.qmth.stmms.ms.commons.utils.image.ImageCompression;
 import cn.com.qmth.stmms.ms.core.domain.MarkSubject;
+import cn.com.qmth.stmms.ms.core.domain.Paper;
 import cn.com.qmth.stmms.ms.core.domain.Student;
 import cn.com.qmth.stmms.ms.core.domain.Work;
 import cn.com.qmth.stmms.ms.core.repository.MarkSubjectRepo;
+import cn.com.qmth.stmms.ms.core.repository.PaperRepo;
 import cn.com.qmth.stmms.ms.core.repository.StudentRepo;
 import cn.com.qmth.stmms.ms.core.repository.WorkRepo;
 import cn.com.qmth.stmms.ms.core.vo.Subject;
 import net.sf.json.JSONObject;
 
+import org.apache.commons.codec.digest.DigestUtils;
 import org.assertj.core.util.Strings;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.util.FileCopyUtils;
@@ -62,6 +65,9 @@ public class CollectApi {
 
     @Autowired
     private ImageCompressionConfig compressionConfig;
+    
+    @Autowired
+    private PaperRepo paperRepo;
 
     @RequestMapping("user/login")
     public LoginDTO login(@RequestParam String loginname,@RequestParam String password){
@@ -130,10 +136,12 @@ public class CollectApi {
      */
     @RequestMapping(value = "file/ms-slice/{workId}/{subjectId}/{fileName}", method = { RequestMethod.PUT, RequestMethod.POST })
     public void upload(@PathVariable Long workId,@PathVariable Integer subjectId,
-    					@PathVariable String fileName,@RequestParam boolean original,
+    					@PathVariable String fileName,@RequestParam(required = false) boolean original,
                        HttpServletRequest request,HttpServletResponse response) throws IOException{
         Student student = studentRepo.findByWorkIdAndExamNumber(workId,fileName);
         Subject subject = Subject.values()[subjectId-1];
+        Paper paper = paperRepo.findByWorkIdAndSubjectAndExamNumber(student.getWorkId(), subject,
+                student.getExamNumber());
         InputStream inputStream = request.getInputStream();
         if(original){//仅保存原图
         	String savePath = systemConfig.getSheetDir() + File.separator + workId + File.separator + subject
@@ -153,8 +161,12 @@ public class CollectApi {
         	BufferedImage bufferedImage = ImageCompression.compress(outFile, compressionConfig);
         	String thumbFileName = thumbDir + File.separator + student.getExamNumber() + ".jpg";
         	ImageIO.write(bufferedImage, "jpg", new File(thumbFileName));
+            String sliceMD5 = DigestUtils.md5Hex(new FileInputStream(thumbFileName));
+            paper.setSliceMD5(sliceMD5);
         }
-
+    	String sheetMD5 = DigestUtils.md5Hex(inputStream);
+    	paper.setSheetMD5(sheetMD5);
+    	paperRepo.save(paper);
     }
 
 	private File saveImage(Student student, InputStream inputStream,

+ 23 - 4
stmms-ms-core/src/main/java/cn/com/qmth/stmms/ms/core/domain/Paper.java

@@ -104,10 +104,13 @@ public class Paper implements Serializable {
     
     //抽查范围ID
     private Long inspectRange;
-
-    private String sourceName;//生源地
-
-
+	//生源地
+    private String sourceName;
+    //原图MD5
+    private String sheetMD5;
+    //裁切图MD5
+    private String sliceMD5;
+    
     public Paper(Long workId, Long idx, Subject subject, ExamQuestion examQuestion, Student student, boolean isManual) {
         this.workId = workId;
         this.idx = idx;
@@ -390,5 +393,21 @@ public class Paper implements Serializable {
 	public void setSample(boolean isSample) {
 		this.isSample = isSample;
 	}
+
+	public String getSheetMD5() {
+		return sheetMD5;
+	}
+
+	public void setSheetMD5(String sheetMD5) {
+		this.sheetMD5 = sheetMD5;
+	}
+
+	public String getSliceMD5() {
+		return sliceMD5;
+	}
+
+	public void setSliceMD5(String sliceMD5) {
+		this.sliceMD5 = sliceMD5;
+	}
     
 }