Эх сурвалжийг харах

导入考生考试时间优化

wangliang 11 сар өмнө
parent
commit
8bfc886965

+ 13 - 7
distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/ExamDetailServiceImpl.java

@@ -14,9 +14,6 @@ import com.qmth.boot.api.exception.ApiException;
 import com.qmth.distributed.print.business.bean.dto.*;
 import com.qmth.distributed.print.business.bean.dto.initMarkData.ExamDetailCourseInitMarkDto;
 import com.qmth.distributed.print.business.bean.dto.initMarkData.InitExamDetailDto;
-import com.qmth.distributed.print.business.templete.execute.AsyncExamStudentImportService;
-import com.qmth.teachcloud.common.bean.examRule.CodeNameEnableValue;
-import com.qmth.teachcloud.common.bean.examRule.FieldsDto;
 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;
@@ -24,17 +21,17 @@ import com.qmth.distributed.print.business.entity.*;
 import com.qmth.distributed.print.business.enums.*;
 import com.qmth.distributed.print.business.mapper.ExamDetailMapper;
 import com.qmth.distributed.print.business.service.*;
-import com.qmth.distributed.print.business.templete.execute.AsyncExaminationImportTemplateService;
+import com.qmth.distributed.print.business.templete.execute.AsyncExamStudentImportService;
 import com.qmth.teachcloud.common.bean.dto.DataPermissionRule;
+import com.qmth.teachcloud.common.bean.examRule.CodeNameEnableValue;
+import com.qmth.teachcloud.common.bean.examRule.FieldsDto;
 import com.qmth.teachcloud.common.bean.vo.PaperInfoVo;
 import com.qmth.teachcloud.common.contant.SystemConstant;
 import com.qmth.teachcloud.common.entity.*;
 import com.qmth.teachcloud.common.enums.*;
 import com.qmth.teachcloud.common.service.*;
 import com.qmth.teachcloud.common.util.*;
-import com.qmth.teachcloud.mark.entity.MarkPaperPackage;
 import com.qmth.teachcloud.mark.entity.MarkStudent;
-import com.qmth.teachcloud.mark.entity.ScanAnswerCard;
 import com.qmth.teachcloud.mark.service.*;
 import org.apache.commons.lang3.StringUtils;
 import org.apache.poi.ss.usermodel.FillPatternType;
@@ -328,7 +325,9 @@ public class ExamDetailServiceImpl extends ServiceImpl<ExamDetailMapper, ExamDet
         }
 
         // 样例行
+        XSSFDataFormat format = wb.createDataFormat();
         XSSFCellStyle exampleStyle = wb.createCellStyle();
+        exampleStyle.setDataFormat(format.getFormat("@"));
         exampleStyle.setAlignment(HorizontalAlignment.LEFT);
         exampleStyle.setFont(defaultFont);
         XSSFRow rowExample = sheet.createRow(2);
@@ -336,13 +335,20 @@ public class ExamDetailServiceImpl extends ServiceImpl<ExamDetailMapper, ExamDet
             XSSFCell cell = rowExample.createCell(i);
             FieldsDto fieldsDto = fieldsNameList.get(i);
             if ("examDate".equals(fieldsDto.getCode())) {
+                XSSFDataFormat formatDf = wb.createDataFormat();
+                XSSFCellStyle exampleStyleDf = wb.createCellStyle();
+                exampleStyleDf.setDataFormat(formatDf.getFormat("yyyy-mm-dd"));
+                exampleStyleDf.setAlignment(HorizontalAlignment.LEFT);
+                exampleStyleDf.setFont(defaultFont);
                 cell.setCellValue("2023-07-09");
+                cell.setCellStyle(exampleStyleDf);
             } else if ("examTime".equals(fieldsDto.getCode())) {
                 cell.setCellValue("18:30-20:30");
+                cell.setCellStyle(exampleStyle);
             } else {
                 cell.setCellValue("测试" + fieldsNameList.get(i).getName());
+                cell.setCellStyle(exampleStyle);
             }
-            cell.setCellStyle(exampleStyle);
         }
 
         for (int i = 0; i < cellCount; i++) {

+ 66 - 13
distributed-print-business/src/main/java/com/qmth/distributed/print/business/templete/service/impl/ImportLogicServiceImpl.java

@@ -1,5 +1,7 @@
 package com.qmth.distributed.print.business.templete.service.impl;
 
+import cn.hutool.core.date.DateTime;
+import cn.hutool.core.date.DateUtil;
 import com.alibaba.fastjson.JSON;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.qmth.boot.tools.excel.ExcelReader;
@@ -27,7 +29,6 @@ import com.qmth.teachcloud.common.entity.*;
 import com.qmth.teachcloud.common.enums.*;
 import com.qmth.teachcloud.common.service.*;
 import com.qmth.teachcloud.common.util.ConvertUtil;
-import com.qmth.teachcloud.common.util.ServletUtil;
 import com.qmth.teachcloud.mark.dto.mark.setting.MarkGroupDto;
 import com.qmth.teachcloud.mark.dto.mark.setting.MarkGroupSingleDto;
 import com.qmth.teachcloud.mark.entity.MarkPaper;
@@ -213,10 +214,10 @@ public class ImportLogicServiceImpl implements ImportLogicService {
             }
 
             // 校验课程学号唯一
-            String courseCodeStudentCode = basicExamStudentImport.getCourseCode()+basicExamStudentImport.getStudentCode();
-            if(courseCodeStudentCodeList.contains(courseCodeStudentCode)){
-                stringJoiner.add("课程代码[" + basicExamStudentImport.getCourseCode() + "]已存在学号["+basicExamStudentImport.getStudentCode()+"]的考生数据");
-            } else{
+            String courseCodeStudentCode = basicExamStudentImport.getCourseCode() + basicExamStudentImport.getStudentCode();
+            if (courseCodeStudentCodeList.contains(courseCodeStudentCode)) {
+                stringJoiner.add("课程代码[" + basicExamStudentImport.getCourseCode() + "]已存在学号[" + basicExamStudentImport.getStudentCode() + "]的考生数据");
+            } else {
                 courseCodeStudentCodeList.add(courseCodeStudentCode);
             }
 
@@ -418,10 +419,10 @@ public class ImportLogicServiceImpl implements ImportLogicService {
             }
 
             // 校验课程学号唯一
-            String courseCodeStudentCode = basicExamStudentImport.getCourseCode()+basicExamStudentImport.getStudentCode();
-            if(courseCodeStudentCodeList.contains(courseCodeStudentCode)){
-                stringJoiner.add("课程代码[" + basicExamStudentImport.getCourseCode() + "]已存在学号["+basicExamStudentImport.getStudentCode()+"]的考生数据");
-            } else{
+            String courseCodeStudentCode = basicExamStudentImport.getCourseCode() + basicExamStudentImport.getStudentCode();
+            if (courseCodeStudentCodeList.contains(courseCodeStudentCode)) {
+                stringJoiner.add("课程代码[" + basicExamStudentImport.getCourseCode() + "]已存在学号[" + basicExamStudentImport.getStudentCode() + "]的考生数据");
+            } else {
                 courseCodeStudentCodeList.add(courseCodeStudentCode);
             }
 
@@ -1152,10 +1153,10 @@ public class ImportLogicServiceImpl implements ImportLogicService {
             }
 
             // 校验课程学号唯一
-            String courseCodeStudentCode = basicExamStudentImport.getCourseCode()+basicExamStudentImport.getStudentCode();
-            if(courseCodeStudentCodeList.contains(courseCodeStudentCode)){
-                stringJoiner.add("课程代码[" + basicExamStudentImport.getCourseCode() + "]已存在学号["+basicExamStudentImport.getStudentCode()+"]的考生数据");
-            } else{
+            String courseCodeStudentCode = basicExamStudentImport.getCourseCode() + basicExamStudentImport.getStudentCode();
+            if (courseCodeStudentCodeList.contains(courseCodeStudentCode)) {
+                stringJoiner.add("课程代码[" + basicExamStudentImport.getCourseCode() + "]已存在学号[" + basicExamStudentImport.getStudentCode() + "]的考生数据");
+            } else {
                 courseCodeStudentCodeList.add(courseCodeStudentCode);
             }
 
@@ -1182,4 +1183,56 @@ public class ImportLogicServiceImpl implements ImportLogicService {
 
         return map;
     }
+
+    public static void main(String[] args) {
+        String s = "2023.7/10";
+//        DateTime dateTime = DateUtil.parse("2023.7/10", "yyyy.MM/dd");
+//        DateTime dateTime1 = DateUtil.parse("2023.8.10", "yyyy.MM.dd");
+//        DateTime dateTime2 = DateUtil.parse("2023/9.10", "yyyy/MM.dd");
+//        DateTime dateTime3 = DateUtil.parse("2023/10/10", "yyyy/MM/dd");
+//        DateTime dateTime4 = DateUtil.parse("11/10/24", "dd/MM/yy");
+        try{
+            DateTime dateTime = null;
+            try{
+                dateTime = DateUtil.parse(s, "yyyy.MM/dd");
+            }catch(Exception e){
+            }
+            try{
+                dateTime = DateUtil.parse(s, "yyyy.MM.dd");
+            }catch(Exception e){
+            }
+            try{
+                dateTime = DateUtil.parse(s, "yyyy/MM.dd");
+            }catch(Exception e){
+            }
+            try{
+                dateTime = DateUtil.parse(s, "yyyy/MM/dd");
+            }catch(Exception e){
+            }
+            try{
+                dateTime = DateUtil.parse(s, "dd/MM/yy");
+            }catch(Exception e){
+            }
+
+            System.out.println(dateTime);
+//            System.out.println(dateTime1);
+//            System.out.println(dateTime2);
+//            System.out.println(dateTime3);
+//            System.out.println(dateTime4);
+
+            Date date = new Date(dateTime.getTime());
+//            Date date1 = new Date(dateTime1.getTime());
+//            Date date2 = new Date(dateTime2.getTime());
+//            Date date3 = new Date(dateTime3.getTime());
+//            Date date4 = new Date(dateTime4.getTime());
+
+            System.out.println(date);
+//            System.out.println(date1);
+//            System.out.println(date2);
+//            System.out.println(date3);
+//            System.out.println(date4);
+        }catch(Exception e){
+            e.printStackTrace();
+        }
+    }
 }

+ 6 - 4
teachcloud-common/src/main/java/com/qmth/teachcloud/common/util/ConvertUtil.java

@@ -1,5 +1,6 @@
 package com.qmth.teachcloud.common.util;
 
+import cn.hutool.core.date.DateTime;
 import com.qmth.boot.api.exception.ApiException;
 import com.qmth.boot.tools.excel.ExcelReader;
 import com.qmth.boot.tools.excel.annotation.ExcelColumn;
@@ -95,12 +96,13 @@ public class ConvertUtil {
         }
         String startTimeStr = date + " " + arr[0];
         String endTimeStr = date + " " + arr[1];
-        if (Objects.isNull(DateDisposeUtils.parseExamDateTime(startTimeStr)) || Objects.isNull(DateDisposeUtils.parseDate(endTimeStr))) {
+        if (Objects.isNull(DateDisposeUtils.parseExamDateTime(startTimeStr)) || Objects.isNull(DateDisposeUtils.parseDateExamStudent(endTimeStr))) {
             throw ExceptionResultEnum.ERROR.exception("考试日期正确格式为[2023-01-01或2023/09/01]");
         }
-        Date startDate = DateDisposeUtils.parseExamDateTime(startTimeStr);
-        Date endDate = DateDisposeUtils.parseExamDateTime(endTimeStr);
-        if(!DateUtils.isSameDay(startDate, endDate)){
+        DateTime startDate = DateDisposeUtils.parseExamDateTime(startTimeStr);
+        DateTime endDate = DateDisposeUtils.parseExamDateTime(endTimeStr);
+        Date start = new Date(startDate.getTime()), end = new Date(endDate.getTime());
+        if (!DateUtils.isSameDay(start, end)) {
             throw ExceptionResultEnum.ERROR.exception("考试日期正确格式为[2023-01-01或2023/09/01],考试时间正确格式为[08:00-10:00]");
         }
 

+ 91 - 48
teachcloud-common/src/main/java/com/qmth/teachcloud/common/util/DateDisposeUtils.java

@@ -6,6 +6,8 @@ package com.qmth.teachcloud.common.util;
  * @Date:
  */
 
+import cn.hutool.core.date.DateTime;
+import cn.hutool.core.date.DateUtil;
 import org.apache.commons.lang3.time.DateFormatUtils;
 import org.apache.commons.lang3.time.DateUtils;
 
@@ -36,15 +38,14 @@ public class DateDisposeUtils extends DateUtils {
             "yyyy.MM.dd", "yyyy.MM.dd HH:mm:ss", "yyyy.MM.dd HH:mm", "yyyy.MM"};
 
     private static String[] parseExamDateTimePatterns = {
-             "yyyy-MM-dd HH:mm", "yyyy/MM/dd HH:mm", "yyyy.MM.dd HH:mm"};
+            "yyyy-MM-dd HH:mm", "yyyy/MM/dd HH:mm", "yyyy.MM.dd HH:mm"};
 
     /**
      * 获取当前Date型日期
      *
      * @return Date() 当前日期
      */
-    public static Date getNowDate()
-    {
+    public static Date getNowDate() {
         return new Date();
     }
 
@@ -53,44 +54,34 @@ public class DateDisposeUtils extends DateUtils {
      *
      * @return String
      */
-    public static String getDate()
-    {
+    public static String getDate() {
         return dateTimeNow(YYYY_MM_DD);
     }
 
-    public static final String getTime()
-    {
+    public static final String getTime() {
         return dateTimeNow(YYYY_MM_DD_HH_MM_SS);
     }
 
-    public static final String dateTimeNow()
-    {
+    public static final String dateTimeNow() {
         return dateTimeNow(YYYYMMDDHHMMSS);
     }
 
-    public static final String dateTimeNow(final String format)
-    {
+    public static final String dateTimeNow(final String format) {
         return parseDateToStr(format, new Date());
     }
 
-    public static final String dateTime(final Date date)
-    {
+    public static final String dateTime(final Date date) {
         return parseDateToStr(YYYY_MM_DD, date);
     }
 
-    public static final String parseDateToStr(final String format, final Date date)
-    {
+    public static final String parseDateToStr(final String format, final Date date) {
         return new SimpleDateFormat(format).format(date);
     }
 
-    public static final Date dateTime(final String format, final String ts)
-    {
-        try
-        {
+    public static final Date dateTime(final String format, final String ts) {
+        try {
             return new SimpleDateFormat(format).parse(ts);
-        }
-        catch (ParseException e)
-        {
+        } catch (ParseException e) {
             throw new RuntimeException(e);
         }
     }
@@ -98,8 +89,7 @@ public class DateDisposeUtils extends DateUtils {
     /**
      * 日期路径 即年/月/日 如2018/08/08
      */
-    public static final String datePath()
-    {
+    public static final String datePath() {
         Date now = new Date();
         return DateFormatUtils.format(now, "yyyy/MM/dd");
     }
@@ -107,8 +97,7 @@ public class DateDisposeUtils extends DateUtils {
     /**
      * 日期路径 即年/月/日 如20180808
      */
-    public static final String dateTime()
-    {
+    public static final String dateTime() {
         Date now = new Date();
         return DateFormatUtils.format(now, "yyyyMMdd");
     }
@@ -116,18 +105,13 @@ public class DateDisposeUtils extends DateUtils {
     /**
      * 日期型字符串转化为日期 格式
      */
-    public static Date parseDate(Object str)
-    {
-        if (str == null)
-        {
+    public static Date parseDate(Object str) {
+        if (str == null) {
             return null;
         }
-        try
-        {
+        try {
             return parseDate(str.toString(), parsePatterns);
-        }
-        catch (ParseException e)
-        {
+        } catch (ParseException e) {
             return null;
         }
     }
@@ -135,20 +119,81 @@ public class DateDisposeUtils extends DateUtils {
     /**
      * 日期型字符串转化为日期 格式
      */
-    public static Date parseExamDateTime(Object str)
-    {
-        if (str == null)
-        {
+    public static DateTime parseDateExamStudent(Object str) {
+        if (str == null) {
             return null;
         }
-        try
-        {
-            return parseDate(str.toString(), parseExamDateTimePatterns);
+        try {
+            DateTime dateTime = null;
+            try {
+                dateTime = DateUtil.parse(str.toString(), "yyyy.MM/dd HH:mm");
+            } catch (Exception e) {
+            }
+            try {
+                dateTime = DateUtil.parse(str.toString(), "yyyy.MM.dd HH:mm");
+            } catch (Exception e) {
+            }
+            try {
+                dateTime = DateUtil.parse(str.toString(), "yyyy/MM.dd HH:mm");
+            } catch (Exception e) {
+            }
+            try {
+                dateTime = DateUtil.parse(str.toString(), "yyyy/MM/dd HH:mm");
+            } catch (Exception e) {
+            }
+            try {
+                dateTime = DateUtil.parse(str.toString(), "dd/MM/yy HH:mm");
+            } catch (Exception e) {
+            }
+            try {
+                dateTime = DateUtil.parse(str.toString(), "yyyy-MM-dd HH:mm");
+            } catch (Exception e) {
+            }
+            return dateTime;
+        } catch (Exception e) {
+            e.printStackTrace();
         }
-        catch (ParseException e)
-        {
+        return null;
+    }
+
+    /**
+     * 日期型字符串转化为日期 格式
+     */
+    public static DateTime parseExamDateTime(Object str) {
+        if (str == null) {
             return null;
         }
+        try {
+            DateTime dateTime = null;
+            try {
+                dateTime = DateUtil.parse(str.toString(), "yyyy.MM/dd HH:mm");
+            } catch (Exception e) {
+            }
+            try {
+                dateTime = DateUtil.parse(str.toString(), "yyyy.MM.dd HH:mm");
+            } catch (Exception e) {
+            }
+            try {
+                dateTime = DateUtil.parse(str.toString(), "yyyy/MM.dd HH:mm");
+            } catch (Exception e) {
+            }
+            try {
+                dateTime = DateUtil.parse(str.toString(), "yyyy/MM/dd HH:mm");
+            } catch (Exception e) {
+            }
+            try {
+                dateTime = DateUtil.parse(str.toString(), "dd/MM/yy HH:mm");
+            } catch (Exception e) {
+            }
+            try {
+                dateTime = DateUtil.parse(str.toString(), "yyyy-MM-dd HH:mm");
+            } catch (Exception e) {
+            }
+            return dateTime;
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+        return null;
     }
 
     public static void main(String[] args) {
@@ -169,8 +214,7 @@ public class DateDisposeUtils extends DateUtils {
     /**
      * 获取服务器启动时间
      */
-    public static Date getServerStartDate()
-    {
+    public static Date getServerStartDate() {
         long time = ManagementFactory.getRuntimeMXBean().getStartTime();
         return new Date(time);
     }
@@ -178,8 +222,7 @@ public class DateDisposeUtils extends DateUtils {
     /**
      * 计算两个时间差
      */
-    public static String getDatePoor(Date endDate, Date nowDate)
-    {
+    public static String getDatePoor(Date endDate, Date nowDate) {
         long nd = 1000 * 24 * 60 * 60;
         long nh = 1000 * 60 * 60;
         long nm = 1000 * 60;