deason 6 лет назад
Родитель
Сommit
2fa47f4ebf

+ 12 - 1
examcloud-core-print-dao/src/main/java/cn/com/qmth/examcloud/core/print/enums/TemplateType.java

@@ -11,7 +11,6 @@ package cn.com.qmth.examcloud.core.print.enums;
  * 模板类型
  */
 public enum TemplateType {
-
     考生数据表(1),
 
     考场数据表(2),
@@ -30,6 +29,18 @@ public enum TemplateType {
 
     private int index;
 
+    public static boolean isExist(Integer index) {
+        if (index == null) {
+            return false;
+        }
+        for (TemplateType type : TemplateType.values()) {
+            if (type.getIndex() == index) {
+                return true;
+            }
+        }
+        return false;
+    }
+
     public static String getNameByIndex(Integer index) {
         if (index == null) {
             return null;

+ 11 - 4
examcloud-core-print-provider/src/main/java/cn/com/qmth/examcloud/core/print/api/controller/PrintingTemplateController.java

@@ -8,18 +8,18 @@
 package cn.com.qmth.examcloud.core.print.api.controller;
 
 import cn.com.qmth.examcloud.commons.web.support.ControllerSupport;
+import cn.com.qmth.examcloud.core.print.common.Result;
 import cn.com.qmth.examcloud.core.print.service.PrintingTemplateService;
 import cn.com.qmth.examcloud.core.print.service.bean.printingtemplate.PrintingTemplateInfo;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.web.bind.annotation.PathVariable;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.bind.annotation.*;
 
 import java.util.List;
 
+import static cn.com.qmth.examcloud.core.print.common.Result.success;
+
 /**
  * 印刷模板相关接口
  *
@@ -39,6 +39,13 @@ public class PrintingTemplateController extends ControllerSupport {
         return printingTemplateService.getPrintingTemplateList(orgId, examId);
     }
 
+    @PostMapping("/save")
+    @ApiOperation(value = "保存或更新某个模板信息")
+    public Result save(@RequestBody PrintingTemplateInfo info) {
+        printingTemplateService.savePrintingTemplate(info);
+        return success();
+    }
+
     @PostMapping("/{id}")
     @ApiOperation(value = "获取某个模板信息")
     public PrintingTemplateInfo get(@PathVariable Long id) {

+ 5 - 0
examcloud-core-print-service/src/main/java/cn/com/qmth/examcloud/core/print/service/PrintingTemplateService.java

@@ -22,6 +22,11 @@ public interface PrintingTemplateService {
      */
     List<PrintingTemplateInfo> getPrintingTemplateList(Long orgId, Long examId);
 
+    /**
+     * 保存或更新某个模板信息
+     */
+    void savePrintingTemplate(PrintingTemplateInfo info);
+
     /**
      * 获取某个模板信息
      */

+ 10 - 10
examcloud-core-print-service/src/main/java/cn/com/qmth/examcloud/core/print/service/impl/PrintingProjectServiceImpl.java

@@ -91,7 +91,8 @@ public class PrintingProjectServiceImpl implements PrintingProjectService {
     @Override
     public PrintingProject getPrintingProjectByOrgExam(Long orgId, Long examId) {
         SearchBuilder searches = new SearchBuilder()
-                .eq("orgId", orgId).eq("examId", examId);
+                .eq("orgId", orgId)
+                .eq("examId", examId);
         Specification<PrintingProject> spec = SpecUtils.buildSearchers(PrintingProject.class, searches.build());
         return printingProjectRepository.findOne(spec);
     }
@@ -140,19 +141,18 @@ public class PrintingProjectServiceImpl implements PrintingProjectService {
                 .eq("examId", examInfo.getExamId());
         Specification<PrintingProject> spec = SpecUtils.buildSearchers(PrintingProject.class, searches.build());
 
-        List<PrintingProject> projects = printingProjectRepository.findAll(spec);
-        if (projects != null && !projects.isEmpty()) {
-            for (PrintingProject project : projects) {
-                //更新学校名称、考试名称等信息
-                project.setOrgName(examInfo.getOrgName());
-                project.setExamName(examInfo.getExamName());
-            }
-            printingProjectRepository.save(projects);
+        //某学校某考试仅当作一个项目
+        PrintingProject project = printingProjectRepository.findOne(spec);
+        if (project != null) {
+            //更新学校名称、考试名称等信息
+            project.setOrgName(examInfo.getOrgName());
+            project.setExamName(examInfo.getExamName());
+            printingProjectRepository.save(project);
             return;
         }
 
         //新增印刷项目信息
-        PrintingProject project = new PrintingProject();
+        project = new PrintingProject();
         BeanUtils.copyProperties(examInfo, project);
         project.setCompleted(false);
         printingProjectRepository.save(project);

+ 38 - 1
examcloud-core-print-service/src/main/java/cn/com/qmth/examcloud/core/print/service/impl/PrintingTemplateServiceImpl.java

@@ -7,9 +7,12 @@
 
 package cn.com.qmth.examcloud.core.print.service.impl;
 
+import cn.com.qmth.examcloud.commons.base.exception.StatusException;
 import cn.com.qmth.examcloud.core.print.common.jpa.SearchBuilder;
 import cn.com.qmth.examcloud.core.print.common.jpa.SpecUtils;
+import cn.com.qmth.examcloud.core.print.common.utils.Check;
 import cn.com.qmth.examcloud.core.print.entity.PrintingTemplate;
+import cn.com.qmth.examcloud.core.print.enums.TemplateType;
 import cn.com.qmth.examcloud.core.print.repository.PrintingTemplateRepository;
 import cn.com.qmth.examcloud.core.print.service.PrintingTemplateService;
 import cn.com.qmth.examcloud.core.print.service.bean.printingtemplate.PrintingTemplateConvert;
@@ -20,6 +23,8 @@ import org.springframework.stereotype.Service;
 
 import java.util.List;
 
+import static cn.com.qmth.examcloud.core.print.common.Constants.PRT_CODE_500;
+
 /**
  * @author: fengdesheng
  * @since: 2018/10/30
@@ -41,7 +46,39 @@ public class PrintingTemplateServiceImpl implements PrintingTemplateService {
 
     @Override
     public PrintingTemplateInfo getPrintingTemplateById(Long id) {
-        return null;
+        PrintingTemplate template = printingTemplateRepository.findOne(id);
+        if (template == null) {
+            throw new StatusException(PRT_CODE_500, "当前模板信息不存在!");
+        }
+        return PrintingTemplateConvert.of(template);
+    }
+
+    @Override
+    public void savePrintingTemplate(PrintingTemplateInfo info) {
+        Check.isNull(info, "模板信息不能为空!");
+        Check.isNull(info.getOrgId(), "学校ID不能为空!");
+        Check.isNull(info.getExamId(), "考试ID不能为空!");
+        Check.isNull(info.getTemplateType(), "模板类型不能为空!");
+        Check.isFalse(TemplateType.isExist(info.getTemplateType()), "模板类型不正确!");
+        Check.isNull(info.getFileUrl(), "模板文件地址不能为空!");
+
+        SearchBuilder searches = new SearchBuilder()
+                .eq("orgId", info.getOrgId())
+                .eq("examId", info.getExamId())
+                .eq("templateType", info.getTemplateType());
+        Specification<PrintingTemplate> spec = SpecUtils.buildSearchers(PrintingTemplate.class, searches.build());
+
+        //某学校考试下一种模板类型只有一条记录
+        PrintingTemplate template = printingTemplateRepository.findOne(spec);
+        if (template != null) {
+            //存在记录时,则修改
+            info.setFileName(info.getFileName());
+            info.setFileUrl(info.getFileUrl());
+            printingTemplateRepository.save(template);
+            return;
+        }
+        //否则,新增记录
+        printingTemplateRepository.save(PrintingTemplateConvert.of(info));
     }
 
 }

+ 1 - 0
examcloud-core-print-service/src/main/java/cn/com/qmth/examcloud/core/print/service/impl/ProjectBackupSettingServiceImpl.java

@@ -63,6 +63,7 @@ public class ProjectBackupSettingServiceImpl implements ProjectBackupSettingServ
             info.setCreationTime(setting.getCreationTime());
             info.setUpdateTime(new Date());
         }
+        //否则,新增记录
         projectBackupSettingRepository.save(info);
     }
 

+ 1 - 0
examcloud-core-print-starter/src/main/resources/security-exclusions.conf

@@ -23,6 +23,7 @@
 [${$rmp.ctrl.print}/course/statistic][/list][POST]
 [${$rmp.ctrl.print}/course/statistic][/init][POST]
 [${$rmp.ctrl.print}/project/template][/{orgId}/{examId}][POST]
+[${$rmp.ctrl.print}/project/template][/save][POST]
 [${$rmp.ctrl.print}/project/template][/{id}][POST]
 [${$rmp.ctrl.print}/examStructure][/list][POST]
 [${$rmp.ctrl.print}/examStructure][/save][POST]