|
@@ -2,6 +2,7 @@ package cn.com.qmth.stmms.ms.admin.api;
|
|
|
|
|
|
import cn.com.qmth.stmms.ms.admin.assembler.ScoreAssembler;
|
|
|
import cn.com.qmth.stmms.ms.admin.dto.ScoreCheckDTO;
|
|
|
+import cn.com.qmth.stmms.ms.admin.utils.WaterMarkUtils;
|
|
|
import cn.com.qmth.stmms.ms.core.domain.MarkStage;
|
|
|
import cn.com.qmth.stmms.ms.core.domain.Paper;
|
|
|
import cn.com.qmth.stmms.ms.core.domain.Student;
|
|
@@ -12,15 +13,18 @@ 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 org.apache.catalina.connector.Response;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
+import org.springframework.beans.factory.annotation.Value;
|
|
|
import org.springframework.http.HttpStatus;
|
|
|
import org.springframework.http.ResponseEntity;
|
|
|
import org.springframework.ui.ModelMap;
|
|
|
import org.springframework.web.bind.annotation.*;
|
|
|
|
|
|
-import java.math.BigInteger;
|
|
|
+import java.awt.*;
|
|
|
+import java.io.File;
|
|
|
+import java.io.IOException;
|
|
|
import java.util.*;
|
|
|
+import java.util.List;
|
|
|
import java.util.stream.Collectors;
|
|
|
|
|
|
/**
|
|
@@ -168,4 +172,65 @@ public class ScoreApi {
|
|
|
}
|
|
|
return ResponseEntity.ok(null);
|
|
|
}
|
|
|
+
|
|
|
+ @Value("${sys.config.imageDir}")
|
|
|
+ private String imagePath;
|
|
|
+
|
|
|
+ @Value("${sys.config.watermark}")
|
|
|
+ private String watermark;
|
|
|
+
|
|
|
+ private static int watermarkTotal;
|
|
|
+ private static int watermarkFinished;
|
|
|
+ private static boolean watermarking = false;
|
|
|
+
|
|
|
+ @PostMapping("/watermark")
|
|
|
+ public void watermark(@RequestParam("workId") Long workId) {
|
|
|
+
|
|
|
+ if (!watermarking) {
|
|
|
+ watermarking = true;
|
|
|
+ watermarkTotal = 0;
|
|
|
+ watermarkFinished = 0;
|
|
|
+
|
|
|
+ final Font font = new Font("Symbol", Font.PLAIN, 60); //水印字体
|
|
|
+ final Color color = new Color(254, 3, 10, 255); //水印图片色彩以及透明度
|
|
|
+ final List<Paper> papers = paperRepo.findByWorkId(workId);
|
|
|
+ watermarkTotal = papers.size();
|
|
|
+
|
|
|
+ new Thread(() -> {
|
|
|
+
|
|
|
+ for (int i = 0; i < watermarkTotal; i++) {
|
|
|
+ watermarkFinished = i + 1;
|
|
|
+ Paper paper = papers.get(i);
|
|
|
+ Double score = paper.getInspectScore() == null ? paper.getScore() : paper.getInspectScore();
|
|
|
+ String examNumber = paper.getExamNumber();
|
|
|
+ String areaCode = paper.getAreaCode();
|
|
|
+ Subject subject = paper.getSubject();
|
|
|
+
|
|
|
+ String imageFile = imagePath + "/" + workId + "/" + subject.toString() + "/" + areaCode + "/" + examNumber + ".jpg";
|
|
|
+ String watermarkFile = watermark + "/" + workId + "/" + subject.toString() + "/" + areaCode + "/" + examNumber + ".jpg";
|
|
|
+
|
|
|
+ File targetFile = new File(watermarkFile);
|
|
|
+ targetFile.getParentFile().mkdirs();//创建父级目录
|
|
|
+ WaterMarkUtils.addWaterMark(imageFile, watermarkFile, String.valueOf(score.intValue()) + "分", color, font);
|
|
|
+ System.out.println(watermarkFile + "生产成功");
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ watermarking = false;
|
|
|
+ }).start();
|
|
|
+ } else {
|
|
|
+ throw new RuntimeException("请勿重复生成");
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ @GetMapping("/watermark")
|
|
|
+ public Map<String, Object> watermarkProgress(@RequestParam("workId") Long workId) {
|
|
|
+ Map<String, Object> resultMap = new HashMap<>();
|
|
|
+ resultMap.put("watermarkTotal", watermarkTotal);
|
|
|
+ resultMap.put("watermarkFinished", watermarkFinished);
|
|
|
+ resultMap.put("watermarking", watermarking);
|
|
|
+ return resultMap;
|
|
|
+ }
|
|
|
}
|