Ver código fonte

Merge remote-tracking branch 'origin/dev_v3.4.0' into dev_v3.4.0

# Conflicts:
#	distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/ExamDetailServiceImpl.java
xiaofei 11 meses atrás
pai
commit
201759f3c5

+ 13 - 4
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,7 +21,10 @@ 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.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.*;
@@ -325,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);
@@ -333,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++) {

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

@@ -27,7 +27,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 +212,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 +417,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 +1151,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);
             }
 

+ 10 - 1
distributed-print-business/src/main/resources/mapper/TeachCourseMapper.xml

@@ -6,7 +6,7 @@
             resultType="com.qmth.distributed.print.business.bean.result.TeachCourseResult">
         SELECT
             tc.id,
-            bc.code AS courseCode,
+            GROUP_CONCAT(bc.code, '(', so.name, ')') as courseCode,
             bc.name AS courseName,
             tc.create_id AS createId,
             tc.create_time AS createTime,
@@ -19,6 +19,7 @@
             basic_course bc ON tc.course_id = bc.id
                 LEFT JOIN
             sys_user su ON tc.user_id = su.id
+            join sys_org so on so.id = bc.teaching_room_id
         <where>
             <if test="schoolId != null">
                 AND tc.school_id = #{schoolId}
@@ -42,6 +43,14 @@
                 </if>
             </if>
         </where>
+        group by
+            tc.id,
+            bc.name,
+            tc.create_id,
+            tc.create_time,
+            tc.user_id,
+            su.login_name,
+            su.real_name
         ORDER BY tc.create_time DESC
     </select>
 </mapper>

+ 6 - 5
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;
@@ -26,7 +27,6 @@ import java.io.*;
 import java.lang.reflect.Field;
 import java.net.URLEncoder;
 import java.text.SimpleDateFormat;
-import java.time.LocalDate;
 import java.time.LocalDateTime;
 import java.time.format.DateTimeFormatter;
 import java.util.*;
@@ -95,12 +95,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.parseExamDateTime(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]");
         }
 

+ 53 - 50
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,41 @@ public class DateDisposeUtils extends DateUtils {
     /**
      * 日期型字符串转化为日期 格式
      */
-    public static Date parseExamDateTime(Object str)
-    {
-        if (str == null)
-        {
+    public static DateTime parseExamDateTime(Object str) {
+        if (str == null) {
             return null;
         }
-        try
-        {
-            return parseDate(str.toString(), parseExamDateTimePatterns);
-        }
-        catch (ParseException e)
-        {
-            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 +174,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 +182,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;