deason 6 years ago
parent
commit
e07eb3fee0

+ 3 - 8
examcloud-core-print-provider/src/main/java/cn/com/qmth/examcloud/core/print/api/provider/PrintingProjectCloudServiceProvider.java

@@ -14,7 +14,7 @@ import cn.com.qmth.examcloud.core.print.api.request.SyncPrintingProjectReq;
 import cn.com.qmth.examcloud.core.print.api.response.SyncPrintingProjectResp;
 import cn.com.qmth.examcloud.core.print.common.utils.Check;
 import cn.com.qmth.examcloud.core.print.service.PrintingProjectService;
-import cn.com.qmth.examcloud.core.print.service.bean.PrintingProjectInfo;
+import cn.com.qmth.examcloud.core.print.service.bean.OrgExamInfo;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -37,17 +37,12 @@ public class PrintingProjectCloudServiceProvider extends ControllerSupport imple
     private PrintingProjectService printingProjectService;
 
     @PostMapping("/sync")
-    @ApiOperation(value = "同步更新印刷项目信息")
+    @ApiOperation(value = "同步(新增或更新)印刷项目信息")
     public SyncPrintingProjectResp syncPrintingProject(@RequestBody SyncPrintingProjectReq request) {
         Check.isNull(request, "请求参数不能为空!");
 
-        PrintingProjectInfo info = new PrintingProjectInfo();
         SyncPrintingProjectBean bean = request.getBean();
-        info.setOrgId(bean.getOrgId());
-        info.setOrgName(bean.getOrgName());
-        info.setExamId(bean.getExamId());
-        info.setExamName(bean.getExamName());
-        printingProjectService.syncPrintingProject(info);
+        printingProjectService.syncPrintingProject(new OrgExamInfo(bean.getOrgId(), bean.getOrgName(), bean.getExamId(), bean.getExamName()));
 
         return new SyncPrintingProjectResp();
     }

+ 3 - 2
examcloud-core-print-service/src/main/java/cn/com/qmth/examcloud/core/print/service/PrintingProjectService.java

@@ -7,6 +7,7 @@
 
 package cn.com.qmth.examcloud.core.print.service;
 
+import cn.com.qmth.examcloud.core.print.service.bean.OrgExamInfo;
 import cn.com.qmth.examcloud.core.print.service.bean.PrintingProjectInfo;
 import cn.com.qmth.examcloud.core.print.service.bean.PrintingProjectQuery;
 import org.springframework.data.domain.Page;
@@ -43,10 +44,10 @@ public interface PrintingProjectService {
     void updatePrintingProject(PrintingProjectInfo info);
 
     /**
-     * 同步更新印刷项目信息
+     * 同步(新增或更新)印刷项目信息
      * 仅同步学校、考试的基本信息
      */
-    void syncPrintingProject(PrintingProjectInfo info);
+    void syncPrintingProject(OrgExamInfo examInfo);
 
     /**
      * 印刷项目数据初始化

+ 15 - 4
examcloud-core-print-service/src/main/java/cn/com/qmth/examcloud/core/print/service/bean/OrgExamInfo.java

@@ -21,6 +21,10 @@ public class OrgExamInfo implements JsonSerializable {
      * 学校机构ID
      */
     private Long orgId;
+    /**
+     * 学校机构名称
+     */
+    private String orgName;
     /**
      * 考试ID
      */
@@ -29,10 +33,17 @@ public class OrgExamInfo implements JsonSerializable {
      * 考试名称
      */
     private String examName;
-    /**
-     * 学校机构名称
-     */
-    private String orgName;
+
+    public OrgExamInfo(Long orgId, String orgName, Long examId, String examName) {
+        this.orgId = orgId;
+        this.orgName = orgName;
+        this.examId = examId;
+        this.examName = examName;
+    }
+
+    public OrgExamInfo() {
+
+    }
 
     public Long getOrgId() {
         return orgId;

+ 13 - 13
examcloud-core-print-service/src/main/java/cn/com/qmth/examcloud/core/print/service/bean/PrintingProjectInfo.java

@@ -22,6 +22,10 @@ public class PrintingProjectInfo implements JsonSerializable {
      * 学校机构ID
      */
     private Long orgId;
+    /**
+     * 学校机构名称
+     */
+    private String orgName;
     /**
      * 考试ID
      */
@@ -30,10 +34,6 @@ public class PrintingProjectInfo implements JsonSerializable {
      * 考试名称
      */
     private String examName;
-    /**
-     * 学校机构名称
-     */
-    private String orgName;
     /**
      * 供应商ID
      */
@@ -95,6 +95,14 @@ public class PrintingProjectInfo implements JsonSerializable {
         this.orgId = orgId;
     }
 
+    public String getOrgName() {
+        return orgName;
+    }
+
+    public void setOrgName(String orgName) {
+        this.orgName = orgName;
+    }
+
     public Long getExamId() {
         return examId;
     }
@@ -111,14 +119,6 @@ public class PrintingProjectInfo implements JsonSerializable {
         this.examName = examName;
     }
 
-    public String getOrgName() {
-        return orgName;
-    }
-
-    public void setOrgName(String orgName) {
-        this.orgName = orgName;
-    }
-
     public Long getSupplierId() {
         return supplierId;
     }
@@ -200,7 +200,7 @@ public class PrintingProjectInfo implements JsonSerializable {
     }
 
     public Boolean getCompleted() {
-        return completed != null ? completed : false;
+        return completed;
     }
 
     public void setCompleted(Boolean completed) {

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

@@ -19,6 +19,7 @@ import cn.com.qmth.examcloud.core.print.service.bean.OrgExamInfo;
 import cn.com.qmth.examcloud.core.print.service.bean.PrintingProjectConvert;
 import cn.com.qmth.examcloud.core.print.service.bean.PrintingProjectInfo;
 import cn.com.qmth.examcloud.core.print.service.bean.PrintingProjectQuery;
+import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.data.domain.Page;
 import org.springframework.data.domain.Pageable;
@@ -116,31 +117,33 @@ public class PrintingProjectServiceImpl implements PrintingProjectService {
     }
 
     @Override
-    public void syncPrintingProject(PrintingProjectInfo info) {
-        Check.isNull(info.getOrgId(), "学校ID不能为空!");
-        Check.isBlank(info.getOrgName(), "学校名称不能为空!");
-        Check.isNull(info.getExamId(), "考试ID不能为空!");
-        Check.isBlank(info.getExamName(), "考试名称不能为空!");
+    public void syncPrintingProject(OrgExamInfo examInfo) {
+        Check.isNull(examInfo.getOrgId(), "学校ID不能为空!");
+        Check.isBlank(examInfo.getOrgName(), "学校名称不能为空!");
+        Check.isNull(examInfo.getExamId(), "考试ID不能为空!");
+        Check.isBlank(examInfo.getExamName(), "考试名称不能为空!");
 
         SearchBuilder searches = new SearchBuilder()
-                .eq("orgId", info.getOrgId())
-                .eq("examId", info.getExamId());
+                .eq("orgId", examInfo.getOrgId())
+                .eq("examId", examInfo.getExamId());
         Specification<PrintingProject> spec = SpecUtils.buildSearchers(PrintingProject.class, searches.build());
 
         List<PrintingProject> projects = printingProjectRepository.findAll(spec);
-        if (projects == null || projects.isEmpty()) {
-            //新增信息
-            PrintingProject project = PrintingProjectConvert.of(info);
-            printingProjectRepository.save(project);
+        if (projects != null && !projects.isEmpty()) {
+            for (PrintingProject project : projects) {
+                //更新学校名称、考试名称等信息
+                project.setOrgName(examInfo.getOrgName());
+                project.setExamName(examInfo.getExamName());
+            }
+            printingProjectRepository.save(projects);
             return;
         }
 
-        //更新信息
-        for (PrintingProject project : projects) {
-            project.setOrgName(info.getOrgName());
-            project.setExamName(info.getExamName());
-        }
-        printingProjectRepository.save(projects);
+        //新增印刷项目信息
+        PrintingProject project = new PrintingProject();
+        BeanUtils.copyProperties(examInfo, project);
+        project.setCompleted(false);
+        printingProjectRepository.save(project);
     }
 
     @Override
@@ -151,7 +154,7 @@ public class PrintingProjectServiceImpl implements PrintingProjectService {
         List<OrgExamInfo> list = jdbcTemplate.query(selectSql, new BeanPropertyRowMapper(OrgExamInfo.class));
 
         //批量保存数据
-        String insertSql = "INSERT INTO ec_prt_project(exam_id,exam_name,org_id,org_name,creation_time,update_time) VALUES (?,?,?,?,NOW(),NOW())";
+        String insertSql = "INSERT INTO ec_prt_project(exam_id,exam_name,org_id,org_name,completed,creation_time,update_time) VALUES (?,?,?,?,?,NOW(),NOW())";
         jdbcTemplate.batchUpdate(insertSql, new BatchPreparedStatementSetter() {
             @Override
             public void setValues(PreparedStatement ps, int i) throws SQLException {
@@ -160,6 +163,7 @@ public class PrintingProjectServiceImpl implements PrintingProjectService {
                 ps.setString(2, row.getExamName());
                 ps.setLong(3, row.getOrgId());
                 ps.setString(4, row.getOrgName());
+                ps.setBoolean(5, false);
             }
 
             @Override

+ 4 - 7
examcloud-core-print-starter/src/test/java/cn/com/qmth/examcloud/core/print/test/PrintingProjectServiceTest.java

@@ -16,6 +16,7 @@ import cn.com.qmth.examcloud.core.print.common.utils.JsonMapper;
 import cn.com.qmth.examcloud.core.print.entity.PrintingProject;
 import cn.com.qmth.examcloud.core.print.repository.PrintingProjectRepository;
 import cn.com.qmth.examcloud.core.print.service.PrintingProjectService;
+import cn.com.qmth.examcloud.core.print.service.bean.OrgExamInfo;
 import cn.com.qmth.examcloud.core.print.service.bean.PrintingProjectInfo;
 import cn.com.qmth.examcloud.core.print.service.bean.PrintingProjectQuery;
 import org.junit.Test;
@@ -75,18 +76,14 @@ public class PrintingProjectServiceTest {
 
     //@Test
     public void syncPrintingProjectTest() throws Exception {
-        PrintingProjectInfo info = new PrintingProjectInfo();
-        info.setOrgId(1L);
-        info.setExamId(1L);
-        info.setOrgName("武汉大学");
-        info.setExamName("计算机考试");
-        printingProjectService.syncPrintingProject(info);
+        OrgExamInfo examInfo = new OrgExamInfo(1L, "武汉大学", 1L, "计算机考试");
+        printingProjectService.syncPrintingProject(examInfo);
     }
 
     //@Test
     public void specTest() throws Exception {
         //查询条件1
-        SearchBuilder searchBuilder1 = new SearchBuilder().eq("orgName", "abc");
+        SearchBuilder searchBuilder1 = new SearchBuilder().eq("orgName", "武汉大学");
         Specification<PrintingProject> spec1 = SpecUtils.buildSearchers(PrintingProject.class, searchBuilder1.build());
 
         //查询条件2