Selaa lähdekoodia

Merge branch 'dev' of http://git.qmth.com.cn/wangliang/distributed-print-service into dev

xiaof 4 vuotta sitten
vanhempi
commit
13dd38bc19

+ 134 - 0
distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/dto/ExaminationExportDto.java

@@ -0,0 +1,134 @@
+package com.qmth.distributed.print.business.bean.dto;
+
+import com.fasterxml.jackson.databind.annotation.JsonSerialize;
+import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
+import com.qmth.distributed.print.business.annotation.ExcelProperty;
+import io.swagger.annotations.ApiModelProperty;
+
+/**
+ * @Description: 考务数据导出Dto
+ * @Author: CaoZixuan
+ * @Date: 2021-04-15
+ */
+public class ExaminationExportDto {
+    @JsonSerialize(using = ToStringSerializer.class)
+    @ApiModelProperty(value = "序号")
+    @ExcelProperty(name = "序号", width = 30, index = 1)
+    private Long index;
+
+    @ApiModelProperty(value = "印刷计划名称")
+    @ExcelProperty(name = "印刷计划名称", width = 30, index = 2)
+    private String printPlanName;
+
+    @ApiModelProperty(value = "考试日期")
+    @ExcelProperty(name = "考试日期", width = 30, index = 3)
+    private String examDate;
+
+    @ApiModelProperty(value = "考试时间")
+    @ExcelProperty(name = "考试时间", width = 30, index = 4)
+    private String examTime;
+
+    @ApiModelProperty(value = "考点")
+    @ExcelProperty(name = "考点", width = 30, index = 5)
+    private String examPlace;
+
+    @ApiModelProperty(value = "考场")
+    @ExcelProperty(name = "考场", width = 30, index = 6)
+    private String examRoom;
+
+    @ApiModelProperty(value = "卷袋号")
+    @ExcelProperty(name = "卷袋号", width = 30, index = 7)
+    private String packageCode;
+
+    @ApiModelProperty(value = "课程(代码)")
+    @ExcelProperty(name = "课程(代码)", width = 30, index = 8)
+    private String courseNameCode;
+
+    @ApiModelProperty(value = "试卷编号")
+    @ExcelProperty(name = "试卷编号", width = 30, index = 9)
+    private String paperNumber;
+
+    @ApiModelProperty(value = "科次")
+    @ExcelProperty(name = "科次", width = 30, index = 10)
+    private int totalSubjects;
+
+    public Long getIndex() {
+        return index;
+    }
+
+    public void setIndex(Long index) {
+        this.index = index;
+    }
+
+    public String getPrintPlanName() {
+        return printPlanName;
+    }
+
+    public void setPrintPlanName(String printPlanName) {
+        this.printPlanName = printPlanName;
+    }
+
+    public String getExamDate() {
+        return examDate;
+    }
+
+    public void setExamDate(String examDate) {
+        this.examDate = examDate;
+    }
+
+    public String getExamTime() {
+        return examTime;
+    }
+
+    public void setExamTime(String examTime) {
+        this.examTime = examTime;
+    }
+
+    public String getExamPlace() {
+        return examPlace;
+    }
+
+    public void setExamPlace(String examPlace) {
+        this.examPlace = examPlace;
+    }
+
+    public String getExamRoom() {
+        return examRoom;
+    }
+
+    public void setExamRoom(String examRoom) {
+        this.examRoom = examRoom;
+    }
+
+    public String getPackageCode() {
+        return packageCode;
+    }
+
+    public void setPackageCode(String packageCode) {
+        this.packageCode = packageCode;
+    }
+
+    public String getCourseNameCode() {
+        return courseNameCode;
+    }
+
+    public void setCourseNameCode(String courseNameCode) {
+        this.courseNameCode = courseNameCode;
+    }
+
+    public String getPaperNumber() {
+        return paperNumber;
+    }
+
+    public void setPaperNumber(String paperNumber) {
+        this.paperNumber = paperNumber;
+    }
+
+    public int getTotalSubjects() {
+        return totalSubjects;
+    }
+
+    public void setTotalSubjects(int totalSubjects) {
+        this.totalSubjects = totalSubjects;
+    }
+}

+ 22 - 16
distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/result/ExaminationResult.java

@@ -2,7 +2,6 @@ package com.qmth.distributed.print.business.bean.result;
 
 import com.fasterxml.jackson.databind.annotation.JsonSerialize;
 import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
-import com.qmth.distributed.print.business.annotation.ExcelProperty;
 import io.swagger.annotations.ApiModelProperty;
 
 /**
@@ -14,67 +13,58 @@ public class ExaminationResult {
 
     @JsonSerialize(using = ToStringSerializer.class)
     @ApiModelProperty(value = "examDetailId")
-    @ExcelProperty(name = "考务场次主键", width = 30, index = 1)
     private Long id;
 
     @JsonSerialize(using = ToStringSerializer.class)
     @ApiModelProperty(value = "学校id")
-    @ExcelProperty(name = "学校主键", width = 30, index = 2)
     private Long schoolId;
 
     @ApiModelProperty(value = "印刷计划id")
-    @ExcelProperty(name = "印刷计划主键", width = 30, index = 3)
     private Long printPlanId;
 
     @ApiModelProperty(value = "印刷计划名称")
-    @ExcelProperty(name = "印刷计划名称", width = 30, index = 4)
     private String printPlanName;
 
     @ApiModelProperty(value = "考试开始时间")
-    @ExcelProperty(name = "考试开始时间", width = 30, index = 5)
     private Long examStartTime;
 
     @ApiModelProperty(value = "考试结束时间")
-    @ExcelProperty(name = "考试结束时间", width = 30, index = 6)
     private Long examEndTime;
 
     @ApiModelProperty(value = "考点")
-    @ExcelProperty(name = "考点", width = 30, index = 7)
     private String examPlace;
 
     @ApiModelProperty(value = "考场")
-    @ExcelProperty(name = "考场", width = 30, index = 8)
     private String examRoom;
 
     @ApiModelProperty(value = "卷袋号")
-    @ExcelProperty(name = "卷袋号", width = 30, index = 9)
     private String packageCode;
 
     @ApiModelProperty(value = "课程(代码)")
-    @ExcelProperty(name = "课程(代码)", width = 30, index = 10)
     private String courseNameCode;
 
     @ApiModelProperty(value = "试卷编号")
-    @ExcelProperty(name = "试卷编号", width = 30, index = 11)
     private String paperNumber;
 
     @ApiModelProperty(value = "科次")
-    @ExcelProperty(name = "科次", width = 30, index = 12)
     private int totalSubjects;
 
     @JsonSerialize(using = ToStringSerializer.class)
     @ApiModelProperty(value = "创建人id")
-    @ExcelProperty(name = "创建人id", width = 30, index = 13)
     private Long createId;
 
     @ApiModelProperty(value = "创建时间")
-    @ExcelProperty(name = "创建时间", width = 30, index = 14)
     private Long createTime;
 
     @ApiModelProperty(value = "考务课程表主键组‘,’隔开")
-    @ExcelProperty(name = "考务课程表主键组‘,’隔开", width = 30, index = 15)
     private String examDetailCourseIds;
 
+    @ApiModelProperty(value = "考试日期")
+    private String examDate;
+
+    @ApiModelProperty(value = "考试时间")
+    private String examTime;
+
     public Long getId() {
         return id;
     }
@@ -194,4 +184,20 @@ public class ExaminationResult {
     public void setExamDetailCourseIds(String examDetailCourseIds) {
         this.examDetailCourseIds = examDetailCourseIds;
     }
+
+    public String getExamDate() {
+        return examDate;
+    }
+
+    public void setExamDate(String examDate) {
+        this.examDate = examDate;
+    }
+
+    public String getExamTime() {
+        return examTime;
+    }
+
+    public void setExamTime(String examTime) {
+        this.examTime = examTime;
+    }
 }

+ 8 - 0
distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/ExamDetailService.java

@@ -2,6 +2,7 @@ package com.qmth.distributed.print.business.service;
 
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.service.IService;
+import com.qmth.distributed.print.business.bean.dto.ExaminationExportDto;
 import com.qmth.distributed.print.business.bean.dto.FieldsDto;
 import com.qmth.distributed.print.business.bean.dto.PrintTaskDto;
 import com.qmth.distributed.print.business.bean.dto.PrintTaskTotalDto;
@@ -157,4 +158,11 @@ public interface ExamDetailService extends IService<ExamDetail> {
     List<ExamDetail> listByCourseCodeAndPaperNumber(Long schoolId, String courseCode, String paperNumber);
 
     List<ExamDetail> listByExamPrintId(Long printPlanId);
+
+    /**
+     * 查询考务数据-场次导出数据源
+     * @param map 考务数据查询条件键值对
+     * @return 导出数据源
+     */
+    List<ExaminationExportDto> findExaminationExportDtoDatasource(Map<String, Object> map);
 }

+ 67 - 5
distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/ExamDetailServiceImpl.java

@@ -8,10 +8,7 @@ import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-import com.qmth.distributed.print.business.bean.dto.FieldsDto;
-import com.qmth.distributed.print.business.bean.dto.PrintTaskDto;
-import com.qmth.distributed.print.business.bean.dto.PrintTaskTotalDto;
-import com.qmth.distributed.print.business.bean.dto.TaskTotalLeftDto;
+import com.qmth.distributed.print.business.bean.dto.*;
 import com.qmth.distributed.print.business.bean.result.ExaminationDetailResult;
 import com.qmth.distributed.print.business.bean.result.ExaminationResult;
 import com.qmth.distributed.print.business.bean.result.SummarizedDataResult;
@@ -231,8 +228,9 @@ public class ExamDetailServiceImpl extends ServiceImpl<ExamDetailMapper, ExamDet
         for (ExaminationResult examinationResult : list) {
             String examDetailCourseIds = examinationResult.getExamDetailCourseIds();
             if (examDetailCourseIds == null || examDetailCourseIds.length() == 0) {
-                throw ExceptionResultEnum.ERROR.exception("考务数据确实课程信息");
+                throw ExceptionResultEnum.ERROR.exception("考务数据缺失课程信息");
             }
+            // 处理课程和科目
             String[] arr = examDetailCourseIds.split(",");
 
             final String separator = "、";
@@ -250,6 +248,15 @@ public class ExamDetailServiceImpl extends ServiceImpl<ExamDetailMapper, ExamDet
             paperNumberStr = paperNumberStr.substring(0, paperNumberStr.length() - separator.length());
             examinationResult.setCourseNameCode(courseNameCodeStr);
             examinationResult.setPaperNumber(paperNumberStr);
+
+            // 处理时间
+            Long startTime = examinationResult.getExamStartTime();
+            Long endTime = examinationResult.getExamEndTime();
+            Map<String,Object> dateMap = ConvertUtil.analyzeDateAndTime(startTime,endTime);
+            String date = String.valueOf(dateMap.get("date"));
+            String time = String.valueOf(dateMap.get("time"));
+            examinationResult.setExamDate(date);
+            examinationResult.setExamTime(time);
         }
         return page;
     }
@@ -514,6 +521,61 @@ public class ExamDetailServiceImpl extends ServiceImpl<ExamDetailMapper, ExamDet
         return this.list(queryWrapper);
     }
 
+    @Transactional(rollbackFor = Exception.class)
+    @Override
+    public List<ExaminationExportDto> findExaminationExportDtoDatasource(Map<String, Object> map) {
+        Long printPlanId = null;
+        if (map.get("printPlanId") != null) {
+            printPlanId = SystemConstant.convertIdToLong(String.valueOf(map.get("printPlanId")));
+        }
+        String courseCode = null;
+        if (map.get("courseCode") != null) {
+            courseCode = String.valueOf(map.get("courseCode"));
+        }
+        String paperNumber = null;
+        if (map.get("paperNumber") != null) {
+            paperNumber = String.valueOf(map.get("paperNumber"));
+        }
+        String examPlace = null;
+        if (map.get("examPlace") != null) {
+            examPlace = String.valueOf(map.get("examPlace"));
+        }
+        String examRoom = null;
+        if (map.get("examRoom") != null) {
+            examRoom = String.valueOf(map.get("examRoom"));
+        }
+        String packageCode = null;
+        if (map.get("packageCode") != null) {
+            packageCode = String.valueOf(map.get("packageCode"));
+        }
+
+        TBTask tbTask = (TBTask) map.get(SystemConstant.TASK);
+        Long userId = tbTask.getCreateId();
+        Long schoolId = tbTask.getSchoolId();
+
+        List<ExaminationResult> examinationResultList = this.findExaminationBriefPage(schoolId,
+                printPlanId, courseCode, paperNumber, examPlace, examRoom, packageCode,
+                SystemConstant.PAGE_NUMBER, SystemConstant.PAGE_SIZE).getRecords();
+        int index = 0;
+        List<ExaminationExportDto> examinationExportDtoList = new ArrayList<>();
+        for (ExaminationResult examinationResult : examinationResultList) {
+            index ++;
+            ExaminationExportDto examinationExportDto = new ExaminationExportDto();
+            examinationExportDto.setIndex((long) index);
+            examinationExportDto.setPrintPlanName(examinationResult.getPrintPlanName());
+            examinationExportDto.setExamDate(examinationResult.getExamDate());
+            examinationExportDto.setExamTime(examinationResult.getExamTime());
+            examinationExportDto.setExamPlace(examinationResult.getExamPlace());
+            examinationExportDto.setExamRoom(examinationResult.getExamRoom());
+            examinationExportDto.setPackageCode(examinationResult.getPackageCode());
+            examinationExportDto.setCourseNameCode(examinationResult.getCourseNameCode());
+            examinationExportDto.setPaperNumber(examinationResult.getPaperNumber());
+            examinationExportDto.setTotalSubjects(examinationResult.getTotalSubjects());
+            examinationExportDtoList.add(examinationExportDto);
+        }
+        return examinationExportDtoList;
+    }
+
     @Transactional(rollbackFor = Exception.class)
     @Override
     public void deleteExaminationData(Long printPlanId) {

+ 4 - 33
distributed-print-business/src/main/java/com/qmth/distributed/print/business/templete/service/impl/TaskLogicServiceImpl.java

@@ -5,6 +5,7 @@ import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.qmth.boot.api.exception.ApiException;
+import com.qmth.distributed.print.business.bean.dto.ExaminationExportDto;
 import com.qmth.distributed.print.business.bean.dto.FieldsDto;
 import com.qmth.distributed.print.business.bean.dto.PdfDto;
 import com.qmth.distributed.print.business.bean.result.ExaminationResult;
@@ -282,42 +283,12 @@ public class TaskLogicServiceImpl implements TaskLogicService {
     @Transactional(rollbackFor = Exception.class)
     @Override
     public Map<String, Object> executeExaminationLogic(Map<String, Object> map) throws Exception {
-        Long printPlanId = null;
-        if (map.get("printPlanId") != null) {
-            printPlanId = SystemConstant.convertIdToLong(String.valueOf(map.get("printPlanId")));
-        }
-        String courseCode = null;
-        if (map.get("courseCode") != null) {
-            courseCode = String.valueOf(map.get("courseCode"));
-        }
-        String paperNumber = null;
-        if (map.get("paperNumber") != null) {
-            paperNumber = String.valueOf(map.get("paperNumber"));
-        }
-        String examPlace = null;
-        if (map.get("examPlace") != null) {
-            examPlace = String.valueOf(map.get("examPlace"));
-        }
-        String examRoom = null;
-        if (map.get("examRoom") != null) {
-            examRoom = String.valueOf(map.get("examRoom"));
-        }
-        String packageCode = null;
-        if (map.get("packageCode") != null) {
-            packageCode = String.valueOf(map.get("packageCode"));
-        }
-
-        TBTask tbTask = (TBTask) map.get(SystemConstant.TASK);
-        Long userId = tbTask.getCreateId();
-        Long schoolId = tbTask.getSchoolId();
+        List<ExaminationExportDto> examinationExportDtoList = examDetailService.findExaminationExportDtoDatasource(map);
 
-        List<ExaminationResult> examinationResultList = examDetailService.findExaminationBriefPage(schoolId,
-                printPlanId, courseCode, paperNumber, examPlace, examRoom, packageCode,
-                SystemConstant.PAGE_NUMBER, SystemConstant.PAGE_SIZE).getRecords();
-        System.out.println("examinationResultList = " + JSON.toJSONString(examinationResultList));
+        System.out.println("examinationResultList = " + JSON.toJSONString(examinationExportDtoList));
 
         ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
-        ExcelUtil.excelMake(ExaminationResult.class, examinationResultList, outputStream);
+        ExcelUtil.excelMake(ExaminationExportDto.class, examinationExportDtoList, outputStream);
         InputStream in = new ByteArrayInputStream(outputStream.toByteArray());
 
 //        UploadFileEnum.FILE/

+ 42 - 0
distributed-print-business/src/main/java/com/qmth/distributed/print/business/util/ConvertUtil.java

@@ -1,10 +1,13 @@
 package com.qmth.distributed.print.business.util;
 
+import com.qmth.distributed.print.common.enums.ExceptionResultEnum;
 import org.springframework.data.redis.core.RedisTemplate;
 import org.springframework.stereotype.Component;
 
 import javax.annotation.Resource;
 import java.io.*;
+import java.text.SimpleDateFormat;
+import java.util.Calendar;
 import java.util.Date;
 import java.util.HashMap;
 import java.util.Map;
@@ -85,6 +88,45 @@ public class ConvertUtil {
         return timeMap;
     }
 
+    /**
+     * 根据开始时间和结束时间解析日期和时间
+     * @param startTime 开始时间
+     * @param endTime 结束时间
+     * @return 键值对
+     */
+    public static Map<String,Object> analyzeDateAndTime(Long startTime,Long endTime){
+        String tmpDateStart;
+        String tmpDateEnd;
+        String tmpTimeStart;
+        String tmpTimeEnd;
+        String date;
+        String time;
+
+
+        Map<String,Object> map = new HashMap<>();
+
+        Calendar calendar = Calendar.getInstance();
+        calendar.setTime(new Date(startTime));
+        tmpDateStart = (new SimpleDateFormat("yyyy-MM-dd")).format(calendar.getTime());
+        tmpTimeStart = (new SimpleDateFormat("HH:mm:ss")).format(calendar.getTime());
+
+        calendar.setTime(new Date(endTime));
+        tmpDateEnd = (new SimpleDateFormat("yyyy-MM-dd")).format(calendar.getTime());
+        tmpTimeEnd = (new SimpleDateFormat("HH:mm:ss")).format(calendar.getTime());
+
+        if (!tmpDateStart.equals(tmpDateEnd)){
+            throw ExceptionResultEnum.ERROR.exception("开始时间和结束时间不在同一天");
+        }
+
+        date = tmpDateStart;
+        time = tmpTimeStart + " - " + tmpTimeEnd;
+        map.put("date",date);
+        map.put("time",time);
+
+        return map;
+    }
+
+
     /**
      * 获取递增的序列号
      *

+ 15 - 0
distributed-print/src/test/java/com/qmth/distributed/print/ServiceTest.java

@@ -6,6 +6,7 @@ import com.qmth.distributed.print.business.entity.ExamDetail;
 import com.qmth.distributed.print.business.service.BasicTemplateOrgService;
 import com.qmth.distributed.print.business.service.ExamDetailService;
 import com.qmth.distributed.print.business.service.ExamPrintPlanService;
+import com.qmth.distributed.print.business.util.ConvertUtil;
 import org.junit.Test;
 import org.junit.runner.RunWith;
 import org.springframework.boot.test.context.SpringBootTest;
@@ -14,6 +15,7 @@ import org.springframework.test.context.junit4.SpringRunner;
 import javax.annotation.Resource;
 import java.util.ArrayList;
 import java.util.List;
+import java.util.Map;
 
 /**
  * @Description: service层测试
@@ -54,4 +56,17 @@ public class ServiceTest {
         examDetailService.findExaminationFields(101L);
     }
 
+    @Test
+    public void date(){
+        Long startTime = 1618308000000L;
+        Long endTime = 1618315200000L;
+
+        Map<String,Object> map = ConvertUtil.analyzeDateAndTime(startTime,endTime);
+        String date = String.valueOf(map.get("date"));
+        String time = String.valueOf(map.get("time"));
+        System.out.println("date = " + date);
+        System.out.println("time = " + time);
+
+    }
+
 }