xiaof před 4 roky
rodič
revize
959d46f905
23 změnil soubory, kde provedl 430 přidání a 54 odebrání
  1. 13 0
      stmms-ms-admin/pom.xml
  2. 1 0
      stmms-ms-admin/src/main/java/cn/com/qmth/stmms/ms/admin/api/StudentApi.java
  3. 19 2
      stmms-ms-admin/src/main/java/cn/com/qmth/stmms/ms/admin/api/UserApi.java
  4. 1 0
      stmms-ms-admin/src/main/java/cn/com/qmth/stmms/ms/admin/api/WorkApi.java
  5. 9 2
      stmms-ms-admin/src/main/java/cn/com/qmth/stmms/ms/admin/assembler/ScoreAssembler.java
  6. 108 0
      stmms-ms-admin/src/main/java/cn/com/qmth/stmms/ms/admin/exporter/pdfExporter.java
  7. 7 2
      stmms-ms-admin/src/main/java/cn/com/qmth/stmms/ms/admin/service/DataUploadService.java
  8. 4 0
      stmms-ms-admin/src/main/java/cn/com/qmth/stmms/ms/admin/service/WorkService.java
  9. 18 5
      stmms-ms-admin/src/main/java/cn/com/qmth/stmms/ms/admin/utils/BultInAccountUtil.java
  10. 138 0
      stmms-ms-admin/src/main/java/cn/com/qmth/stmms/ms/admin/utils/PdfUtils.java
  11. 19 6
      stmms-ms-collect/src/main/java/cn/com/qmth/stmms/ms/collect/api/CollectApi.java
  12. 4 1
      stmms-ms-commons/src/main/java/cn/com/qmth/stmms/ms/commons/config/ImageServerConfig.java
  13. 5 0
      stmms-ms-commons/src/main/java/cn/com/qmth/stmms/ms/commons/config/SystemConfig.java
  14. 1 1
      stmms-ms-core/src/main/java/cn/com/qmth/stmms/ms/core/domain/ParamSetting.java
  15. 2 0
      stmms-ms-core/src/main/java/cn/com/qmth/stmms/ms/core/repository/MarkTaskRepo.java
  16. 2 1
      stmms-ms-core/src/main/java/cn/com/qmth/stmms/ms/core/repository/MarkUserRepo.java
  17. 2 0
      stmms-ms-core/src/main/java/cn/com/qmth/stmms/ms/core/repository/WorkRepo.java
  18. 6 3
      stmms-ms-marking/src/main/java/cn/com/qmth/stmms/ms/marking/api/MakrerApi.java
  19. 12 9
      stmms-ms-marking/src/main/java/cn/com/qmth/stmms/ms/marking/api/MarkSubjectApi.java
  20. 13 9
      stmms-ms-marking/src/main/java/cn/com/qmth/stmms/ms/marking/api/PaperApi.java
  21. 8 2
      stmms-ms-marking/src/main/java/cn/com/qmth/stmms/ms/marking/assembler/ChangeLevelAssembler.java
  22. 22 6
      stmms-ms-marking/src/main/java/cn/com/qmth/stmms/ms/marking/assembler/MarkTaskAssembler.java
  23. 16 5
      stmms-ms-marking/src/main/java/cn/com/qmth/stmms/ms/marking/assembler/PaperAssembler.java

+ 13 - 0
stmms-ms-admin/pom.xml

@@ -35,6 +35,19 @@
             <version>2.6</version>
         </dependency>
 
+        <!--PDF转化工具-->
+        <dependency>
+            <groupId>com.itextpdf</groupId>
+            <artifactId>itextpdf</artifactId>
+            <version>5.4.2</version>
+        </dependency>
+
+        <dependency>
+            <groupId>org.xhtmlrenderer</groupId>
+            <artifactId>core-renderer</artifactId>
+            <version>R8</version>
+        </dependency>
+
         <!--<dependency>-->
             <!--<groupId>io.springfox</groupId>-->
             <!--<artifactId>springfox-swagger2</artifactId>-->

+ 1 - 0
stmms-ms-admin/src/main/java/cn/com/qmth/stmms/ms/admin/api/StudentApi.java

@@ -98,6 +98,7 @@ public class StudentApi {
     @RequestMapping(method = RequestMethod.POST)
     public Student create(@RequestBody Student domain) throws Exception {
         try {
+            domain.setTest("0");
             return studentRepo.save(domain);
         } catch (Exception e) {
             if (e instanceof DataIntegrityViolationException) {

+ 19 - 2
stmms-ms-admin/src/main/java/cn/com/qmth/stmms/ms/admin/api/UserApi.java

@@ -1,5 +1,6 @@
 package cn.com.qmth.stmms.ms.admin.api;
 
+import cn.com.qmth.stmms.ms.commons.web.PageableDTO;
 import cn.com.qmth.stmms.ms.core.domain.MarkLog;
 import cn.com.qmth.stmms.ms.core.domain.MarkStage;
 import cn.com.qmth.stmms.ms.core.domain.MarkSubject;
@@ -12,10 +13,16 @@ import cn.com.qmth.stmms.ms.core.repository.MarkTaskRepo;
 import cn.com.qmth.stmms.ms.core.repository.MarkUserRepo;
 import cn.com.qmth.stmms.ms.core.vo.Subject;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.data.domain.Page;
+import org.springframework.data.domain.Pageable;
+import org.springframework.data.domain.Sort;
+import org.springframework.data.jpa.domain.Specification;
 import org.springframework.http.HttpStatus;
 import org.springframework.http.ResponseEntity;
 import org.springframework.web.bind.annotation.*;
 
+import javax.persistence.criteria.Predicate;
+import java.util.ArrayList;
 import java.util.List;
 import java.util.Objects;
 import java.util.stream.Collectors;
@@ -113,8 +120,17 @@ public class UserApi {
      * @return
      */
     @RequestMapping(value = "collect", method = RequestMethod.GET)
-    public List<MarkUser> listCollect(@RequestParam(required = false, defaultValue = "COLLECTOR") Role role) {
-        return markUserRepo.findByRole(role);
+    public PageableDTO listCollect(@RequestParam(required = false, defaultValue = "COLLECTOR") Role role, Pageable pageable) {
+//        return markUserRepo.findByRole(role);
+
+        Specification<MarkUser> specification = (root, query, builder) -> {
+            List<Predicate> predicates = new ArrayList<>();
+            predicates.add(builder.equal(root.get("role"), role));
+            return builder.and(predicates.toArray(new Predicate[predicates.size()]));
+        };
+        Page<MarkUser> markUsers = markUserRepo.findAll(specification, pageable);
+
+        return new PageableDTO(markUsers, markUsers.getTotalElements(), markUsers.getTotalPages(), pageable.getPageNumber());
     }
 
     /**
@@ -162,6 +178,7 @@ public class UserApi {
         domain.setLoginName(user.getLoginName());
         domain.setName(user.getLoginName());
         domain.setPassword(user.getPassword());
+        domain.setEnabled(user.isEnabled());
         markUserRepo.save(domain);
     }
 

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

@@ -104,6 +104,7 @@ public class WorkApi {
             w.setActive(false);
             if (w.getId().equals(workId)) {
                 w.setActive(true);
+                randomUtil.getRandom(w.getId(), false);
             }
         }
         workRepo.save(works);

+ 9 - 2
stmms-ms-admin/src/main/java/cn/com/qmth/stmms/ms/admin/assembler/ScoreAssembler.java

@@ -3,8 +3,10 @@ package cn.com.qmth.stmms.ms.admin.assembler;
 import cn.com.qmth.stmms.ms.admin.dto.ScoreCheckDTO;
 import cn.com.qmth.stmms.ms.admin.dto.ScoreItem;
 import cn.com.qmth.stmms.ms.commons.config.SystemConfig;
+import cn.com.qmth.stmms.ms.core.cache.ParamCache;
 import cn.com.qmth.stmms.ms.core.domain.Paper;
 import cn.com.qmth.stmms.ms.core.domain.Student;
+import org.apache.commons.codec.digest.DigestUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
 
@@ -35,8 +37,13 @@ public class ScoreAssembler {
                 scoreItem.setScore(p.getScore());
                 scoreItem.setSubject(p.getSubject());
 
-                String imgSrc = systemConfig.getImageUrl(p.getWorkId(), p.getSubject().toString(), p.getAreaCode(), p.getExamNumber());
-                String thumbSrc = systemConfig.getThumbUrl(p.getWorkId(), p.getSubject().toString(), p.getAreaCode(), p.getExamNumber());
+                String fileName = p.getExamNumber();
+                //0:随机码 1:考号
+                if(ParamCache.paramMap.get(p.getWorkId()).getNameRule() == 1){
+                    fileName = DigestUtils.md5Hex(p.getSubject().name() + fileName);
+                }
+                String imgSrc = systemConfig.getImageUrl(p.getWorkId(), p.getSubject().toString(), p.getAreaCode(), fileName);
+                String thumbSrc = systemConfig.getThumbUrl(p.getWorkId(), p.getSubject().toString(), p.getAreaCode(), fileName);
 
                 scoreItem.setImgSrc(imgSrc);
                 scoreItem.setThumbSrc(thumbSrc);

+ 108 - 0
stmms-ms-admin/src/main/java/cn/com/qmth/stmms/ms/admin/exporter/pdfExporter.java

@@ -0,0 +1,108 @@
+package cn.com.qmth.stmms.ms.admin.exporter;
+
+import cn.com.qmth.stmms.ms.admin.utils.PdfUtils;
+import com.alibaba.fastjson.JSONObject;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import javax.servlet.http.HttpServletResponse;
+import java.io.*;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+
+@RestController
+@RequestMapping("/api/exportPdf")
+public class pdfExporter {
+
+    @PostMapping
+    public void pdf(@RequestBody Map map, HttpServletResponse response) {
+        List<String> bases = JSONObject.parseArray(JSONObject.toJSONString(map.get("content")), String.class);
+        try {
+            ArrayList<String> imageUrllist = new ArrayList();
+            File file = new File("d://"+String.valueOf(System.currentTimeMillis()));
+            if (!file.exists()) {
+                file.mkdirs();
+            }
+            for (String base : bases) {
+                String imgFilePath = file.getPath() + File.separator + System.currentTimeMillis() + ".png";
+                boolean convertFlag = PdfUtils.base64ToImage(base, imgFilePath);
+                if (convertFlag) {
+                    imageUrllist.add(imgFilePath);
+                }
+            }
+            if(imageUrllist.size() == 0){
+                throw new RuntimeException("导出失败");
+            }
+            String pdfFilePath = file.getPath() + File.separator + System.currentTimeMillis() + ".pdf";
+            PdfUtils.imageToPdf(imageUrllist, pdfFilePath);
+            outputFile(response, new File(pdfFilePath), "导出pdf"+System.currentTimeMillis() + ".pdf", file.getPath());
+        } catch (Exception e) {
+            throw new RuntimeException("导出失败");
+        }
+    }
+
+    public static void outputFile(HttpServletResponse response, File file, String fileName, String rootPath) {
+        try {
+            if (!file.exists()) {
+                response.sendError(404, "File not found!");
+            }
+            BufferedInputStream br = new BufferedInputStream(new FileInputStream(file));
+            byte[] buf = new byte[1024];
+            int len = 0;
+
+            String fName = new String(fileName.getBytes(), "ISO-8859-1");
+            response.reset();
+            response.setContentType("application/x-msdownload");
+            response.setHeader("Content-Disposition", "attachment; filename=" + fName);
+            OutputStream outStream = response.getOutputStream();
+            while ((len = br.read(buf)) > 0) {
+                outStream.write(buf, 0, len);
+            }
+
+            br.close();
+            outStream.close();
+        } catch (FileNotFoundException e) {
+            e.printStackTrace();
+        } catch (IOException e) {
+            e.printStackTrace();
+        }
+        //下载完毕删除文件
+        delete(rootPath);
+    }
+
+    public static void delete(String path){
+        File file = new File(path);
+        if(!file.exists()){
+            return;
+        }
+        if(file.isFile()){
+            file.delete();
+        }
+        File[] files = file.listFiles();
+        for (File f : files) {
+            if(f.isFile()){
+                f.delete();
+            }else{
+                delete(f.getAbsolutePath());
+            }
+        }
+    }
+
+    public static void main(String[] args) throws Exception {
+        //base64转图片
+//        String imgSrc = PdfUtils.getImageStr("C:\\Users\\xf520\\Desktop\\1.png");
+//        System.out.println(imgSrc);
+//        String imgFilePath = "d:\\32.jpg";
+//        PdfUtils.base64ToImage(imgSrc, imgFilePath);
+//        ArrayList<String> imageUrllist = new ArrayList<String>();
+//        imageUrllist.add(imgFilePath);
+//        imageUrllist.add(imgFilePath);
+//        PdfUtils.imageToPdf(imageUrllist, "d:\\11.pdf");
+
+        delete("D:\\1596164055913");
+    }
+
+}

+ 7 - 2
stmms-ms-admin/src/main/java/cn/com/qmth/stmms/ms/admin/service/DataUploadService.java

@@ -470,6 +470,11 @@ public class DataUploadService {
 
         String sheetPath = null;
         String slicePath = null;
+        String fileName = student.getExamNumber();
+        //0:随机码 1:考号
+        if(ParamCache.paramMap.get(student.getWorkId()).getNameRule() == 1){
+            fileName = DigestUtils.md5Hex(subject.name() + fileName);
+        }
         //图片是否加密
         Integer imageEnc = Optional.ofNullable(ParamCache.paramMap.get(student.getWorkId()).getImageEncrypt()).orElse(0);
         if (imageEnc == 1) {
@@ -480,9 +485,9 @@ public class DataUploadService {
                     + File.separator + student.getAreaCode() + File.separator + imageMd5 + ".jpg";
         } else {
             sheetPath = systemConfig.getSheetDir() + File.separator + student.getWorkId() + File.separator + subject
-                    + File.separator + student.getAreaCode() + File.separator + student.getExamNumber() + ".jpg";
+                    + File.separator + student.getAreaCode() + File.separator + fileName + ".jpg";
             slicePath = systemConfig.getImageDir() + File.separator + student.getWorkId() + File.separator + subject
-                    + File.separator + student.getAreaCode() + File.separator + student.getExamNumber() + ".jpg";
+                    + File.separator + student.getAreaCode() + File.separator + fileName + ".jpg";
         }
         FileInputStream sheetIn = new FileInputStream(sheetPath);
         FileInputStream slicein = new FileInputStream(slicePath);

+ 4 - 0
stmms-ms-admin/src/main/java/cn/com/qmth/stmms/ms/admin/service/WorkService.java

@@ -63,6 +63,10 @@ public class WorkService {
      */
     @Transactional
     public void save(Work work) {
+        Work workTemp = workRepo.findByName(work.getName());
+        if(workTemp != null){
+            throw new RuntimeException("工作任务名称不能重复");
+        }
         workRepo.save(work);
         Subject[] subjects = Subject.values();
         if (!imageConfig.isCustomSubject()) {

+ 18 - 5
stmms-ms-admin/src/main/java/cn/com/qmth/stmms/ms/admin/utils/BultInAccountUtil.java

@@ -8,10 +8,7 @@ import cn.com.qmth.stmms.ms.core.vo.Subject;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
 
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Map;
-import java.util.Objects;
+import java.util.*;
 
 @Component
 public class BultInAccountUtil {
@@ -32,7 +29,8 @@ public class BultInAccountUtil {
                         if (markUser != null) {
                             continue;
                         }
-                        markUser = new MarkUser(loginName, "123456", 0L, Subject.SC, loginName, Role.findByName((String) map.get("name")), null);
+                        String password = randomPassword();
+                        markUser = new MarkUser(loginName, password, 0L, Subject.SC, loginName, Role.findByName((String) map.get("name")), null);
                         userList.add(markUser);
                     }
                 } else {
@@ -49,6 +47,21 @@ public class BultInAccountUtil {
         }
     }
 
+    private String randomPassword(){
+        String sources = "0123456789";
+        String password = "123456";
+        for (int i = 0; i <= 100; i++)
+        {
+            Random rand = new Random();
+            StringBuffer flag = new StringBuffer();
+            for (int j = 0; j < 6; j++)
+            {
+                flag.append(sources.charAt(rand.nextInt(10)) + "");
+            }
+            password = flag.toString();
+        }
+        return password;
+    }
 
     /**
      * 补齐不足长度

+ 138 - 0
stmms-ms-admin/src/main/java/cn/com/qmth/stmms/ms/admin/utils/PdfUtils.java

@@ -0,0 +1,138 @@
+package cn.com.qmth.stmms.ms.admin.utils;
+
+import com.itextpdf.text.Document;
+import com.itextpdf.text.DocumentException;
+import com.itextpdf.text.Image;
+import com.itextpdf.text.PageSize;
+import com.itextpdf.text.pdf.PdfWriter;
+import sun.misc.BASE64Decoder;
+import sun.misc.BASE64Encoder;
+
+import java.io.*;
+import java.util.ArrayList;
+
+public class PdfUtils {
+
+    /**
+     * 图片转base64
+     * @param imgFile
+     * @return
+     */
+    public static String getImageStr(String imgFile) {
+        InputStream in = null;
+        byte[] data = null;
+        try {
+            in = new FileInputStream(imgFile);
+            data = new byte[in.available()];
+            in.read(data);
+            in.close();
+        } catch (IOException e) {
+            return null;
+        }
+        BASE64Encoder encoder = new BASE64Encoder();
+        return encoder.encode(data);
+    }
+
+    /**
+     * 对字节数组字符串进行Base64解码并生成图片
+     * @param imgStr
+     * @param imgFilePath
+     * @return
+     */
+    public static boolean base64ToImage(String imgStr, String imgFilePath) {
+        if (imgStr == null) {
+            // 图像数据为空
+            return false;
+        }
+        BASE64Decoder decoder = new BASE64Decoder();
+        try {
+            // Base64解码
+            byte[] b = decoder.decodeBuffer(imgStr);
+            for (int i = 0; i < b.length; ++i) {
+                if (b[i] < 0) {// 调整异常数据
+                    b[i] += 256;
+                }
+            }
+            OutputStream out = new FileOutputStream(imgFilePath);
+            out.write(b);
+            out.flush();
+            out.close();
+
+            return true;
+        } catch (Exception e) {
+            return false;
+        }
+    }
+
+    /**
+     * 图片转pdf
+     * @param imageUrllist
+     * @param mOutputPdfFileName
+     * @return
+     */
+    public static File imageToPdf(ArrayList<String> imageUrllist, String mOutputPdfFileName) throws DocumentException, IOException {
+        Document doc = new Document(PageSize.A4, 20, 20, 20, 20);
+        try {
+            PdfWriter.getInstance(doc, new FileOutputStream(mOutputPdfFileName));
+            doc.open();
+            for (int i = 0; i < imageUrllist.size(); i++) {
+                doc.newPage();
+                Image png1 = Image.getInstance(imageUrllist.get(i));
+                float heigth = png1.getHeight();
+                float width = png1.getWidth();
+                int percent = getPercent2(heigth, width);
+                png1.setAlignment(Image.MIDDLE);
+                png1.scalePercent(percent + 3);// 表示是原来图像的比例;
+                doc.add(png1);
+            }
+            doc.close();
+        } catch (FileNotFoundException e) {
+            e.printStackTrace();
+            throw e;
+        } catch (DocumentException e) {
+            e.printStackTrace();
+            throw e;
+        } catch (IOException e) {
+            e.printStackTrace();
+            throw e;
+        }
+
+        File mOutputPdfFile = new File(mOutputPdfFileName);
+        if (!mOutputPdfFile.exists()) {
+            mOutputPdfFile.deleteOnExit();
+            return null;
+        }
+        return mOutputPdfFile;
+    }
+
+    /**
+     * 第一种解决方案 在不改变图片形状的同时,判断,如果h>w,则按h压缩,否则在w>h或w=h的情况下,按宽度压缩
+     *
+     * @param h
+     * @param w
+     * @return
+     */
+
+    public static int getPercent(float h, float w) {
+        int p = 0;
+        float p2 = 0.0f;
+        if (h > w) {
+            p2 = 297 / h * 100;
+        } else {
+            p2 = 210 / w * 100;
+        }
+        p = Math.round(p2);
+        return p;
+    }
+
+    /**
+     * 第二种解决方案,统一按照宽度压缩 这样来的效果是,所有图片的宽度是相等的,自我认为给客户的效果是最好的
+     */
+    public static int getPercent2(float h, float w) {
+        int p = 0;
+        float p2 = 0.0f;
+        p2 = 530 / w * 100;
+        p = Math.round(p2);
+        return p;
+    }
+}

+ 19 - 6
stmms-ms-collect/src/main/java/cn/com/qmth/stmms/ms/collect/api/CollectApi.java

@@ -105,6 +105,9 @@ public class CollectApi {
             if (Objects.isNull(markUser)) {
                 throw new RuntimeException("账号不存在");
             }
+            if(!markUser.isEnabled()){
+                throw new RuntimeException("账号已禁用");
+            }
             //不是采集员账号
             else if (!Objects.equals(Role.COLLECTOR, markUser.getRole())) {
                 throw new RuntimeException("非采集端账号");
@@ -515,8 +518,13 @@ public class CollectApi {
         if (!sheetOut.exists()) {
             sheetOut.mkdirs();
         }
-        File outSheetFile = new File(saveSheetPath + File.separator + student.getExamNumber() + ".jpg");
-        File outImageFile = new File(savePath + File.separator + student.getExamNumber() + ".jpg");
+        String fileName = student.getExamNumber();
+        //0:随机码 1:考号
+        if(ParamCache.paramMap.get(student.getWorkId()).getNameRule() == 1){
+            fileName = DigestUtils.md5Hex(subject.name() + fileName);
+        }
+        File outSheetFile = new File(saveSheetPath + File.separator + fileName + ".jpg");
+        File outImageFile = new File(savePath + File.separator + fileName + ".jpg");
         OutputStream outputSheetStream = new FileOutputStream(outSheetFile);
         OutputStream outputImageStream = new FileOutputStream(outImageFile);
         int index = 0;
@@ -544,7 +552,7 @@ public class CollectApi {
             thumb.mkdirs();
         }
         BufferedImage bufferedImage = ImageCompression.compress(outImageFile, compressionConfig);
-        String thumbFileName = thumbDir + File.separator + student.getExamNumber() + ".jpg";
+        String thumbFileName = thumbDir + File.separator + fileName + ".jpg";
         ImageIO.write(bufferedImage, "jpg", new File(thumbFileName));
 
         String md5 = request.getHeader("md5");
@@ -561,12 +569,17 @@ public class CollectApi {
     }
 
     private File saveImage(Student student, InputStream inputStream,
-                           String savePath) throws IOException, FileNotFoundException {
+                           String savePath, Subject subject) throws IOException, FileNotFoundException {
         File out = new File(savePath);
         if (!out.exists()) {
             out.mkdirs();
         }
-        File outFile = new File(savePath + File.separator + student.getExamNumber() + ".jpg");
+        String fileName = student.getExamNumber();
+        //0:随机码 1:考号
+        if(ParamCache.paramMap.get(student.getWorkId()).getNameRule() == 1){
+            fileName = DigestUtils.md5Hex(subject.name() + fileName);
+        }
+        File outFile = new File(savePath + File.separator + fileName + ".jpg");
         FileCopyUtils.copy(inputStream, new FileOutputStream(outFile));
         return outFile;
     }
@@ -603,7 +616,7 @@ public class CollectApi {
         //保存原图图
         String savePath = systemConfig.getSheetDir() + File.separator + workId + File.separator + subject
                 + File.separator + student.getAreaCode();
-        File outFile = saveImage(student, inputStream, savePath);
+        File outFile = saveImage(student, inputStream, savePath, subject);
 
         String md5 = request.getHeader("md5");
         if (Objects.isNull(md5)) {

+ 4 - 1
stmms-ms-commons/src/main/java/cn/com/qmth/stmms/ms/commons/config/ImageServerConfig.java

@@ -18,6 +18,9 @@ public class ImageServerConfig {
     @Resource
     AliYunOssConfig aliYunOssConfig;
 
+    @Resource
+    SystemConfig systemConfig;
+
     private String ip;
     private String port;
     private boolean aliyunOss;
@@ -59,7 +62,7 @@ public class ImageServerConfig {
         if (aliyunOss) {
             return aliYunOssConfig.getUrl() + File.separator + this.getDir();
         } else {
-            return "http://" + this.getIp() + ":" + this.getPort();
+            return "http://" + this.getIp() + ":" + this.getPort() + File.separator + "upload";
         }
     }
 

+ 5 - 0
stmms-ms-commons/src/main/java/cn/com/qmth/stmms/ms/commons/config/SystemConfig.java

@@ -4,6 +4,7 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.boot.context.properties.ConfigurationProperties;
 import org.springframework.stereotype.Component;
 
+import java.io.File;
 import java.util.UUID;
 
 /**
@@ -76,6 +77,10 @@ public class SystemConfig {
         this.localhostPath = localhostPath;
     }
 
+    public String getLocalhostPathUrl() {
+        return imageServerConfig.getImageServer() + File.separator + getLocalhostPath() + "/files/";
+    }
+
     public String getThumbUrl(Long workId, String subject, String areaCode, String examNumber) {
         return imageServerConfig.getImageServer() + "/thumbs/" + String.valueOf(workId) + "/"
                 + subject + "/" + areaCode + "/" + examNumber + ".jpg?random=" + UUID.randomUUID().toString();

+ 1 - 1
stmms-ms-core/src/main/java/cn/com/qmth/stmms/ms/core/domain/ParamSetting.java

@@ -46,7 +46,7 @@ public class ParamSetting implements Serializable {
         ParamSetting paramSetting = new ParamSetting();
         paramSetting.setPackageScan(0);
         paramSetting.setImageEncrypt(0);
-        paramSetting.setNameRule(1);
+        paramSetting.setNameRule(0);
         paramSetting.setPaperStage(0);
         //仲裁档位差,默认3
         paramSetting.setDeviation(3);

+ 2 - 0
stmms-ms-core/src/main/java/cn/com/qmth/stmms/ms/core/repository/MarkTaskRepo.java

@@ -206,4 +206,6 @@ public interface MarkTaskRepo extends JpaRepository<MarkTask, Long>, JpaSpecific
     @Query(value = "SELECT count(1) from mark_task m inner join paper p on m.paper_id = p.id and p.is_missing = ?4 and p.batch_no is not null where m.question_id = ?1 and m.marker_id = ?5 and m.stage = ?2 and m.result =?3 and p.is_rejected = false", nativeQuery = true)
     int countByQuestionIdAndStageAndResultAndIsMissingAll(Long questionId, int stage, String result, boolean isMissing,Long markerId);
 
+    @Query(value = "SELECT count(1) from mark_task m inner join paper p on m.paper_id = p.id and p.is_missing = ?4 and p.batch_no is not null where m.question_id = ?1 and m.marker_id = ?2 and m.stage = ?3 and p.is_rejected = true  and m.is_rejected = true", nativeQuery = true)
+    int countByQuestionIdAndMarkerIdAndStageAndIsRejectedTrueAndIsMissing(Long questionId, Long markerId, int ordinal,boolean isMissing);
 }

+ 2 - 1
stmms-ms-core/src/main/java/cn/com/qmth/stmms/ms/core/repository/MarkUserRepo.java

@@ -5,13 +5,14 @@ import cn.com.qmth.stmms.ms.core.domain.user.Role;
 import cn.com.qmth.stmms.ms.core.vo.Subject;
 
 import org.springframework.data.jpa.repository.JpaRepository;
+import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
 
 import java.util.List;
 
 /**
  * Created by zhengmin on 2016/10/6.
  */
-public interface MarkUserRepo extends JpaRepository<MarkUser,Long>{
+public interface MarkUserRepo extends JpaRepository<MarkUser,Long>, JpaSpecificationExecutor {
 
     List<MarkUser> findByWorkIdAndSubjectAndRole(Long workId, Subject subject, Role role);
 

+ 2 - 0
stmms-ms-core/src/main/java/cn/com/qmth/stmms/ms/core/repository/WorkRepo.java

@@ -9,4 +9,6 @@ import org.springframework.data.jpa.repository.JpaRepository;
 public interface WorkRepo extends JpaRepository<Work,Long>{
 
     Work findByActiveTrue();
+
+    Work findByName(String name);
 }

+ 6 - 3
stmms-ms-marking/src/main/java/cn/com/qmth/stmms/ms/marking/api/MakrerApi.java

@@ -169,7 +169,10 @@ public class MakrerApi {
                         } else {
                             count = markTaskRepo.countByQuestionIdAndMarkerIdAndStageAndResultIsNullAndIsMissing(questionId, marker.getId(), MarkStage.LEVEL.ordinal(), false, batchNo);
                         }
+                        //查询当前老师打回个数
+                        int rejectCount = markTaskRepo.countByQuestionIdAndMarkerIdAndStageAndIsRejectedTrueAndIsMissing(questionId, marker.getId(), MarkStage.LEVEL.ordinal(), false);
                         levelStatDTO.setCount(count);
+                        levelStatDTO.setRejected(rejectCount);
                     } else {
                         int count;
                         if (ParamCache.paramMap.get(marker.getWorkId()).getLevelShowAllPaper() == 1) {
@@ -321,9 +324,9 @@ public class MakrerApi {
                 o.setPt(levelMap.get(o.getId()).getPt());
                 o.setKdpt(levelMap.get(o.getId()).getKdpt());
                 o.setCount(Objects.isNull(o.getCount()) ? 0 : o.getCount());
-                double p = (double) o.getCount() / finalKdtotal;
-                BigDecimal bd = new BigDecimal(p).setScale(3, RoundingMode.HALF_EVEN);
-                o.setPercent(bd.doubleValue());
+//                double p = (double) o.getCount() / finalKdtotal;
+//                BigDecimal bd = new BigDecimal(p).setScale(3, RoundingMode.HALF_EVEN);
+                o.setPercent(0D);
 
                 o.setGcount(Objects.isNull(o.getGcount()) ? 0 : o.getGcount());
                 double gp = (double) o.getGcount() / finalTotal;

+ 12 - 9
stmms-ms-marking/src/main/java/cn/com/qmth/stmms/ms/marking/api/MarkSubjectApi.java

@@ -184,6 +184,9 @@ public class MarkSubjectApi {
      */
     @RequestMapping(value = "{markSubject}/markergroups", method = RequestMethod.POST)
     public MarkerGroup createMarkerGroup(@PathVariable MarkSubject markSubject, @RequestBody MarkerGroup markerGroup) {
+        if(markerGroup.getMarkers().size() == 0){
+            throw new RuntimeException("不可创建空分组");
+        }
         markerGroup.setWorkId(markSubject.getWorkId());
         markerGroup.setSubject(markSubject.getSubject());
         return markerGroupRepo.save(markerGroup);
@@ -325,10 +328,10 @@ public class MarkSubjectApi {
     @RequestMapping(value = "{markSubject}/updateEnable", method = RequestMethod.POST)
     public ResponseEntity updateEnable(@PathVariable MarkSubject markSubject) {
         //有采集数据,不能禁用
-        List<Paper> papers = paperRepo.findByWorkIdAndSubject(markSubject.getWorkId(), markSubject.getSubject());
-        if (papers == null || papers.isEmpty()) {
-            throw new RuntimeException("已有数据,不可" + (markSubject.isEnable() ? "禁用" : "启用"));
-        }
+//        List<Paper> papers = paperRepo.findByWorkIdAndSubject(markSubject.getWorkId(), markSubject.getSubject());
+//        if (papers == null || papers.isEmpty()) {
+//            throw new RuntimeException("已有数据,不可" + (markSubject.isEnable() ? "禁用" : "启用"));
+//        }
         markSubject.setEnable(!markSubject.isEnable());
         markSubjectRepo.saveAndFlush(markSubject);
         return new ResponseEntity(HttpStatus.OK);
@@ -339,14 +342,14 @@ public class MarkSubjectApi {
      *
      * @param markSubject 评卷科目id
      */
-    @RequestMapping(value = "{markSubject}/updateName", method = RequestMethod.POST)
+    @RequestMapping(value = "{subjectId}/updateName", method = RequestMethod.POST)
     public ResponseEntity updateName(@PathVariable String subjectId, MarkSubject markSubject) {
         MarkSubject markSubjectT = markSubjectRepo.findOne(subjectId);
         //有采集数据,不能禁用
-        List<Paper> papers = paperRepo.findByWorkIdAndSubject(markSubjectT.getWorkId(), markSubjectT.getSubject());
-        if (papers == null || papers.isEmpty()) {
-            throw new RuntimeException("已有数据,不能修改科目名称");
-        }
+//        List<Paper> papers = paperRepo.findByWorkIdAndSubject(markSubjectT.getWorkId(), markSubjectT.getSubject());
+//        if (papers == null || papers.isEmpty()) {
+//            throw new RuntimeException("已有数据,不能修改科目名称");
+//        }
         markSubjectT.setName(markSubject.getName());
         markSubjectRepo.saveAndFlush(markSubjectT);
         return new ResponseEntity(HttpStatus.OK);

+ 13 - 9
stmms-ms-marking/src/main/java/cn/com/qmth/stmms/ms/marking/api/PaperApi.java

@@ -156,8 +156,12 @@ public class PaperApi {
         Specification<Paper> specification = (root, query, builder) -> {
             List<Predicate> predicates = new ArrayList<>();
             predicates.add(builder.equal(root.get("workId"), workId));
-            predicates.add(builder.equal(root.get("areaCode"), areaCode));
-            predicates.add(builder.equal(root.get("subject"), subject));
+            if(areaCode != null && areaCode != "") {
+                predicates.add(builder.equal(root.get("areaCode"), areaCode));
+            }
+            if(subject != null) {
+                predicates.add(builder.equal(root.get("subject"), subject));
+            }
             if (startNumber != null && endNumber != null) {
                 predicates.add(builder.between(root.get("examNumber"), startNumber, endNumber));
             } else if (startNumber != null) {
@@ -166,9 +170,9 @@ public class PaperApi {
             if (isManual != null) {
                 predicates.add(builder.equal(root.get("isManual"), isManual));
             }
-            if (Objects.nonNull(missing)) {
-                predicates.add(builder.equal(root.get("isMissing"), missing));
-            }
+//            if (Objects.nonNull(missing)) {
+//                predicates.add(builder.equal(root.get("isMissing"), missing));
+//            }
             //考生姓名
             if (Objects.nonNull(studentName)) {
                 predicates.add(builder.equal(root.get("studentName"), studentName));
@@ -396,7 +400,7 @@ public class PaperApi {
                 subjectMap.put("enable", subject.isEnable());
                 //上传路径,已有上传,取文件路径,没有为null
                 String subjectUrl = null;
-                String url = systemConfig.getLocalhostPath() + File.separator + workId + File.separator + question[0] + File.separator + subject.getSubject().name();
+                String url = systemConfig.getLocalhostPathUrl() + File.separator + workId + File.separator + question[0] + File.separator + subject.getSubject().name();
                 File path = new File(url);
                 if (path.exists()) {
                     File[] file = path.listFiles();
@@ -443,8 +447,8 @@ public class PaperApi {
             throw new Exception("file文件格式只能为jpg,jpeg,png,pdf");
         }
         InputStream inputStream = file.getInputStream();
-        //保存原图
-        String savePath = systemConfig.getLocalhostPath() + File.separator + workId + File.separator + questionId + File.separator + subject.name();
+        //保存
+        String savePath = systemConfig.getLocalhostPathUrl() + File.separator + workId + File.separator + questionId + File.separator + subject.name();
         File fileSave = new File(savePath);
         if (!fileSave.exists()) {
             fileSave.mkdirs();
@@ -492,7 +496,7 @@ public class PaperApi {
             map.put("subjectName", markSubject.getName());
             //上传路径,已有上传,取文件路径,没有为null
             String subjectUrl = null;
-            String url = systemConfig.getLocalhostPath() + File.separator + workId + File.separator + question.getAreaCode() + File.separator + markSubject.getSubject().name();
+            String url = systemConfig.getLocalhostPathUrl() + File.separator + workId + File.separator + question.getAreaCode() + File.separator + markSubject.getSubject().name();
             File path = new File(url);
             if (path.exists()) {
                 File[] file = path.listFiles();

+ 8 - 2
stmms-ms-marking/src/main/java/cn/com/qmth/stmms/ms/marking/assembler/ChangeLevelAssembler.java

@@ -12,6 +12,7 @@ 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 cn.com.qmth.stmms.ms.marking.dto.ChangeLevelDTO;
+import org.apache.commons.codec.digest.DigestUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
 
@@ -52,13 +53,18 @@ public class ChangeLevelAssembler {
             String examNumber = paper.getExamNumber();
             String areaCode = paper.getAreaCode();
             Subject subject = paper.getSubject();
+            String fileName = paper.getExamNumber();
+            //0:随机码 1:考号
+            if(ParamCache.paramMap.get(paper.getWorkId()).getNameRule() == 1){
+                fileName = DigestUtils.md5Hex(paper.getSubject().name() + fileName);
+            }
             if (ParamCache.paramMap.get(workId).getImageEncrypt() == 1) {
                 Student student = studentRepo.findByWorkIdAndExamNumberAndTest(workId, examNumber, String.valueOf(TrialEnum.DEFAULT.getId()));
                 imgSrc = systemConfig.getImageUrl(workId, subject.ordinal(), student.getId(), SystemConstant.IMAGE);
                 thumbSrc = systemConfig.getThumbUrl(workId, subject.ordinal(), student.getId(), SystemConstant.THUMB);
             } else {
-                imgSrc = systemConfig.getImageUrl(workId, subject.toString(), areaCode, examNumber);
-                thumbSrc = systemConfig.getThumbUrl(workId, subject.toString(), areaCode, examNumber);
+                imgSrc = systemConfig.getImageUrl(workId, subject.toString(), areaCode, fileName);
+                thumbSrc = systemConfig.getThumbUrl(workId, subject.toString(), areaCode, fileName);
             }
             changeLevelDTO.setThumbSrc(thumbSrc);
             changeLevelDTO.setImgSrc(imgSrc);

+ 22 - 6
stmms-ms-marking/src/main/java/cn/com/qmth/stmms/ms/marking/assembler/MarkTaskAssembler.java

@@ -11,6 +11,7 @@ import cn.com.qmth.stmms.ms.core.domain.enums.TrialEnum;
 import cn.com.qmth.stmms.ms.core.domain.task.MarkTask;
 import cn.com.qmth.stmms.ms.core.repository.StudentRepo;
 import cn.com.qmth.stmms.ms.marking.dto.MarkTaskDTO;
+import org.apache.commons.codec.digest.DigestUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
 
@@ -53,13 +54,18 @@ public class MarkTaskAssembler {
             markTaskDTO.setRedoLevel(paper.getRedoLevel());
             String imgSrc = null;
             String thumbSrc = null;
+            String fileName = paper.getExamNumber();
+            //0:随机码 1:考号
+            if(ParamCache.paramMap.get(paper.getWorkId()).getNameRule() == 1){
+                fileName = DigestUtils.md5Hex(paper.getSubject().name() + fileName);
+            }
             if (ParamCache.paramMap.get(paper.getWorkId()).getImageEncrypt() == 1) {
                 Student student = studentRepo.findByWorkIdAndExamNumberAndTest(paper.getWorkId(), paper.getExamNumber(), String.valueOf(TrialEnum.DEFAULT.getId()));
                 imgSrc = systemConfig.getImageUrl(paper.getWorkId(), paper.getSubject().ordinal(), student.getId(), SystemConstant.IMAGE);
                 thumbSrc = systemConfig.getThumbUrl(paper.getWorkId(), paper.getSubject().ordinal(), student.getId(), SystemConstant.THUMB);
             } else {
-                imgSrc = systemConfig.getImageUrl(markTask.getWorkId(), paper.getSubject().toString(), paper.getAreaCode(), paper.getExamNumber());
-                thumbSrc = systemConfig.getThumbUrl(markTask.getWorkId(), paper.getSubject().toString(), paper.getAreaCode(), paper.getExamNumber());
+                imgSrc = systemConfig.getImageUrl(markTask.getWorkId(), paper.getSubject().toString(), paper.getAreaCode(), fileName);
+                thumbSrc = systemConfig.getThumbUrl(markTask.getWorkId(), paper.getSubject().toString(), paper.getAreaCode(), fileName);
             }
 //            String imgSrc = systemConfig.getImageUrl(markTask.getWorkId(), paper.getSubject().toString(), paper.getAreaCode(), paper.getExamNumber());
 //            String thumbSrc = systemConfig.getThumbUrl(markTask.getWorkId(), paper.getSubject().toString(), paper.getAreaCode(), paper.getExamNumber());
@@ -101,13 +107,18 @@ public class MarkTaskAssembler {
             markTaskDTO.setRedoLevel(paper.getRedoLevel());
             String imgSrc = null;
             String thumbSrc = null;
+            String fileName = paper.getExamNumber();
+            //0:随机码 1:考号
+            if(ParamCache.paramMap.get(paper.getWorkId()).getNameRule() == 1){
+                fileName = DigestUtils.md5Hex(paper.getSubject().name() + fileName);
+            }
             if (ParamCache.paramMap.get(paper.getWorkId()).getImageEncrypt() == 1) {
                 Student student = studentRepo.findByWorkIdAndExamNumberAndTest(paper.getWorkId(), paper.getExamNumber(), String.valueOf(TrialEnum.DEFAULT.getId()));
                 imgSrc = systemConfig.getImageUrl(paper.getWorkId(), paper.getSubject().ordinal(), student.getId(), SystemConstant.IMAGE);
                 thumbSrc = systemConfig.getThumbUrl(paper.getWorkId(), paper.getSubject().ordinal(), student.getId(), SystemConstant.THUMB);
             } else {
-                imgSrc = systemConfig.getImageUrl(markTask.getWorkId(), paper.getSubject().toString(), paper.getAreaCode(), paper.getExamNumber());
-                thumbSrc = systemConfig.getThumbUrl(markTask.getWorkId(), paper.getSubject().toString(), paper.getAreaCode(), paper.getExamNumber());
+                imgSrc = systemConfig.getImageUrl(markTask.getWorkId(), paper.getSubject().toString(), paper.getAreaCode(), fileName);
+                thumbSrc = systemConfig.getThumbUrl(markTask.getWorkId(), paper.getSubject().toString(), paper.getAreaCode(), fileName);
             }
 //            String imgSrc = systemConfig.getImageUrl(markTask.getWorkId(), paper.getSubject().toString(), paper.getAreaCode(), paper.getExamNumber());
 //            String thumbSrc = systemConfig.getThumbUrl(markTask.getWorkId(), paper.getSubject().toString(), paper.getAreaCode(), paper.getExamNumber());
@@ -150,13 +161,18 @@ public class MarkTaskAssembler {
             markTaskDTO.setRedoLevel(paper.getRedoLevel());
             String imgSrc = null;
             String thumbSrc = null;
+            String fileName = paper.getExamNumber();
+            //0:随机码 1:考号
+            if(ParamCache.paramMap.get(paper.getWorkId()).getNameRule() == 1){
+                fileName = DigestUtils.md5Hex(paper.getSubject().name() + fileName);
+            }
             if (ParamCache.paramMap.get(paper.getWorkId()).getImageEncrypt() == 1) {
                 Student student = studentRepo.findByWorkIdAndExamNumberAndTest(paper.getWorkId(), paper.getExamNumber(), String.valueOf(TrialEnum.DEFAULT.getId()));
                 imgSrc = systemConfig.getImageUrl(paper.getWorkId(), paper.getSubject().ordinal(), student.getId(), SystemConstant.IMAGE);
                 thumbSrc = systemConfig.getThumbUrl(paper.getWorkId(), paper.getSubject().ordinal(), student.getId(), SystemConstant.THUMB);
             } else {
-                imgSrc = systemConfig.getImageUrl(markTask.getWorkId(), paper.getSubject().toString(), paper.getAreaCode(), paper.getExamNumber());
-                thumbSrc = systemConfig.getThumbUrl(markTask.getWorkId(), paper.getSubject().toString(), paper.getAreaCode(), paper.getExamNumber());
+                imgSrc = systemConfig.getImageUrl(markTask.getWorkId(), paper.getSubject().toString(), paper.getAreaCode(), fileName);
+                thumbSrc = systemConfig.getThumbUrl(markTask.getWorkId(), paper.getSubject().toString(), paper.getAreaCode(), fileName);
             }
 //            String imgSrc = systemConfig.getImageUrl(markTask.getWorkId(), paper.getSubject().toString(), paper.getAreaCode(), paper.getExamNumber());
 //            String thumbSrc = systemConfig.getThumbUrl(markTask.getWorkId(), paper.getSubject().toString(), paper.getAreaCode(), paper.getExamNumber());

+ 16 - 5
stmms-ms-marking/src/main/java/cn/com/qmth/stmms/ms/marking/assembler/PaperAssembler.java

@@ -13,6 +13,7 @@ import cn.com.qmth.stmms.ms.core.repository.MarkTaskRepo;
 import cn.com.qmth.stmms.ms.core.repository.StudentRepo;
 import cn.com.qmth.stmms.ms.core.vo.Subject;
 import cn.com.qmth.stmms.ms.marking.dto.PaperDTO;
+import org.apache.commons.codec.digest.DigestUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
 
@@ -45,13 +46,18 @@ public class PaperAssembler {
     public PaperDTO toDTO(Paper paper) {
         String imgSrc = null;
         String thumbSrc = null;
+        String fileName = paper.getExamNumber();
+        //0:随机码 1:考号
+        if(ParamCache.paramMap.get(paper.getWorkId()).getNameRule() == 1){
+            fileName = DigestUtils.md5Hex(paper.getSubject().name() + fileName);
+        }
         if (ParamCache.paramMap.get(paper.getWorkId()).getImageEncrypt() == 1) {
             Student student = studentRepo.findByWorkIdAndExamNumberAndTest(paper.getWorkId(), paper.getExamNumber(), String.valueOf(TrialEnum.DEFAULT.getId()));
             imgSrc = systemConfig.getImageUrl(paper.getWorkId(), paper.getSubject().ordinal(), student.getId(), SystemConstant.IMAGE);
             thumbSrc = systemConfig.getThumbUrl(paper.getWorkId(), paper.getSubject().ordinal(), student.getId(), SystemConstant.THUMB);
         } else {
-            imgSrc = systemConfig.getImageUrl(paper.getWorkId(), paper.getSubject().toString(), paper.getAreaCode(), paper.getExamNumber());
-            thumbSrc = systemConfig.getThumbUrl(paper.getWorkId(), paper.getSubject().toString(), paper.getAreaCode(), paper.getExamNumber());
+            imgSrc = systemConfig.getImageUrl(paper.getWorkId(), paper.getSubject().toString(), paper.getAreaCode(), fileName);
+            thumbSrc = systemConfig.getThumbUrl(paper.getWorkId(), paper.getSubject().toString(), paper.getAreaCode(), fileName);
         }
         //查询阶段
         MarkSubject markSubject = markSubjectRepo.findOne(paper.getWorkId() + "-" + paper.getSubject());
@@ -98,15 +104,20 @@ public class PaperAssembler {
         String imgSrc = null;
         String thumbSrc = null;
         String sheetSrc = null;
+        String fileName = paper.getExamNumber();
+        //0:随机码 1:考号
+        if(ParamCache.paramMap.get(paper.getWorkId()).getNameRule() == 1){
+            fileName = DigestUtils.md5Hex(paper.getSubject().name() + fileName);
+        }
         if (ParamCache.paramMap.get(paper.getWorkId()).getImageEncrypt() == 1) {
             Student student = studentRepo.findByWorkIdAndExamNumberAndTest(paper.getWorkId(), paper.getExamNumber(), String.valueOf(TrialEnum.DEFAULT.getId()));
             imgSrc = systemConfig.getImageUrl(paper.getWorkId(), paper.getSubject().ordinal(), student.getId(), SystemConstant.IMAGE);
             thumbSrc = systemConfig.getThumbUrl(paper.getWorkId(), paper.getSubject().ordinal(), student.getId(), SystemConstant.THUMB);
             sheetSrc = systemConfig.getSheetUrl(paper.getWorkId(), paper.getSubject().ordinal(), student.getId(), SystemConstant.SHEET);
         } else {
-            imgSrc = systemConfig.getImageUrl(paper.getWorkId(), paper.getSubject().toString(), paper.getAreaCode(), paper.getExamNumber());
-            thumbSrc = systemConfig.getThumbUrl(paper.getWorkId(), paper.getSubject().toString(), paper.getAreaCode(), paper.getExamNumber());
-            sheetSrc = systemConfig.getSheetUrl(paper.getWorkId(), paper.getSubject().toString(), paper.getAreaCode(), paper.getExamNumber());
+            imgSrc = systemConfig.getImageUrl(paper.getWorkId(), paper.getSubject().toString(), paper.getAreaCode(), fileName);
+            thumbSrc = systemConfig.getThumbUrl(paper.getWorkId(), paper.getSubject().toString(), paper.getAreaCode(), fileName);
+            sheetSrc = systemConfig.getSheetUrl(paper.getWorkId(), paper.getSubject().toString(), paper.getAreaCode(), fileName);
         }
         //查询阶段
         MarkSubject markSubject = markSubjectRepo.findOne(paper.getWorkId() + "-" + paper.getSubject());