Selaa lähdekoodia

3.2.5 试卷题卡备份数量存各,试卷题卡审核预览日志记录接口

xiaofei 2 vuotta sitten
vanhempi
commit
09fa5ae7d5
17 muutettua tiedostoa jossa 138 lisäystä ja 17 poistoa
  1. 10 0
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/params/ExamDetailList.java
  2. 10 0
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/params/ExamDetailParams.java
  3. 11 1
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/entity/ExamDetail.java
  4. 3 3
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/entity/ExamPrintPlan.java
  5. 2 1
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/ExamDetailService.java
  6. 2 0
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/ExamTaskService.java
  7. 2 2
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/ClientServiceImpl.java
  8. 3 2
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/ExamDetailServiceImpl.java
  9. 36 1
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/ExamTaskServiceImpl.java
  10. 4 3
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/templete/service/impl/TaskLogicServiceImpl.java
  11. 0 0
      distributed-print-business/src/main/resources/db/log/3.2.5-脚本-caozx.sql
  12. 0 0
      distributed-print-business/src/main/resources/db/log/3.2.5-脚本-wangl.sql
  13. 10 0
      distributed-print-business/src/main/resources/db/log/3.2.5-脚本-xiaof.sql
  14. 14 1
      distributed-print/src/main/java/com/qmth/distributed/print/api/BasicOperationLogController.java
  15. 27 0
      teachcloud-common/src/main/java/com/qmth/teachcloud/common/contant/SystemConstant.java
  16. 3 3
      teachcloud-common/src/main/java/com/qmth/teachcloud/common/entity/BasicPrintConfig.java
  17. 1 0
      teachcloud-common/src/main/java/com/qmth/teachcloud/common/enums/log/CustomizedOperationTypeEnum.java

+ 10 - 0
distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/params/ExamDetailList.java

@@ -11,6 +11,8 @@ public class ExamDetailList {
     private String examRoom;
     private String classId;
     private String className;
+
+    private Double backupCount;
     private Integer studentCount;
     private Long printHouseId;
     private String printHouseName;
@@ -33,6 +35,14 @@ public class ExamDetailList {
         this.className = className;
     }
 
+    public Double getBackupCount() {
+        return backupCount;
+    }
+
+    public void setBackupCount(Double backupCount) {
+        this.backupCount = backupCount;
+    }
+
     public Integer getStudentCount() {
         return studentCount;
     }

+ 10 - 0
distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/params/ExamDetailParams.java

@@ -12,6 +12,8 @@ public class ExamDetailParams {
     private String paperNumber;
     private String courseCode;
     private String courseName;
+
+    private Double backupCount;
     private Integer printCount; // 总数量,适用于模式2
     private Long printHouseId; // 总印刷室,适用于模式2
     private List<ExamDetailList> list;
@@ -56,6 +58,14 @@ public class ExamDetailParams {
         this.courseName = courseName;
     }
 
+    public Double getBackupCount() {
+        return backupCount;
+    }
+
+    public void setBackupCount(Double backupCount) {
+        this.backupCount = backupCount;
+    }
+
     public Integer getPrintCount() {
         return printCount;
     }

+ 11 - 1
distributed-print-business/src/main/java/com/qmth/distributed/print/business/entity/ExamDetail.java

@@ -129,7 +129,9 @@ public class ExamDetail extends BaseEntity implements Serializable {
     @TableField("print_count")
     private Integer printCount;
 
-
+    @ApiModelProperty(value = "试卷、题卡备份数量")
+    @TableField("print_count")
+    private Double backupCount;
 
     public Long getSchoolId() {
         return schoolId;
@@ -350,4 +352,12 @@ public class ExamDetail extends BaseEntity implements Serializable {
     public void setPrintCount(Integer printCount) {
         this.printCount = printCount;
     }
+
+    public Double getBackupCount() {
+        return backupCount;
+    }
+
+    public void setBackupCount(Double backupCount) {
+        this.backupCount = backupCount;
+    }
 }

+ 3 - 3
distributed-print-business/src/main/java/com/qmth/distributed/print/business/entity/ExamPrintPlan.java

@@ -61,7 +61,7 @@ public class ExamPrintPlan extends BaseEntity implements Serializable {
     @TableField("backup_method")
     private BackupMethodEnum backupMethod;
     @TableField("backup_count")
-    private Integer backupCount;
+    private Double backupCount;
     /**
      * ONE-只抽一次,CIRCLE-可循环抽取
      */
@@ -172,11 +172,11 @@ public class ExamPrintPlan extends BaseEntity implements Serializable {
         this.backupMethod = backupMethod;
     }
 
-    public Integer getBackupCount() {
+    public Double getBackupCount() {
         return backupCount;
     }
 
-    public void setBackupCount(Integer backupCount) {
+    public void setBackupCount(Double backupCount) {
         this.backupCount = backupCount;
     }
 

+ 2 - 1
distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/ExamDetailService.java

@@ -10,6 +10,7 @@ import com.qmth.distributed.print.business.bean.result.ExaminationResult;
 import com.qmth.distributed.print.business.bean.result.SummarizedDataResult;
 import com.qmth.distributed.print.business.entity.ExamDetail;
 import com.qmth.distributed.print.business.entity.ExamDetailCourse;
+import com.qmth.distributed.print.business.entity.ExamPrintPlan;
 import com.qmth.distributed.print.business.enums.ExamDataSourceEnum;
 import com.qmth.teachcloud.common.bean.dto.DataPermissionRule;
 import com.qmth.teachcloud.common.entity.SysUser;
@@ -166,7 +167,7 @@ public interface ExamDetailService extends IService<ExamDetail> {
      * @param serialNumberParams 序列号生成参数
      * @param sysUser
      */
-    List<Long> disposeExamDetailByExaminationExcel(Long examId, List<ExaminationImportDto> dataList, Long userId, SerialNumberParams serialNumberParams, SysUser sysUser);
+    List<Long> disposeExamDetailByExaminationExcel(ExamPrintPlan examPrintPlan, List<ExaminationImportDto> dataList, Long userId, SerialNumberParams serialNumberParams, SysUser sysUser);
 
     /**
      * 根据考务数据Excel数据处理考务-科目表

+ 2 - 0
distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/ExamTaskService.java

@@ -235,4 +235,6 @@ public interface ExamTaskService extends IService<ExamTask> {
     void delete(Long id);
 
     void applyDelete(Long id);
+
+    boolean savePreviewLog(Long examTaskId, String paperType, String type);
 }

+ 2 - 2
distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/ClientServiceImpl.java

@@ -209,7 +209,7 @@ public class ClientServiceImpl implements ClientService {
                 // 备用试卷、备用题卡map
                 Map<String, Object> backupMap = new HashMap<>();
                 // 备份数量
-                int backupCount = examPrintPlan.getBackupCount();
+                int backupCount = SystemConstant.calcBackupCount(examDetail.getBackupCount(), examDetail.getTotalSubjects(), 1);
                 if (printContent.contains("PAPER")) {
                     if (examDetail.getAttachmentId() == null) {
                         throw ExceptionResultEnum.ERROR.exception("考场pdf文件未生成");
@@ -481,7 +481,7 @@ public class ClientServiceImpl implements ClientService {
         if (StringUtils.isBlank(printContent)) {
             throw ExceptionResultEnum.ERROR.exception("打印内容没有包含试卷、题卡,无需校验");
         }
-        Integer backupCount = examPrintPlan.getBackupCount();
+        Integer backupCount = SystemConstant.calcBackupCount(examDetail.getBackupCount(), examDetail.getTotalSubjects(), 1);
         // 有备用题卡
         if (printContent.contains("CARD")) {
             QueryWrapper<ExamDetailCourse> courseQueryWrapper = new QueryWrapper<>();

+ 3 - 2
distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/ExamDetailServiceImpl.java

@@ -515,7 +515,7 @@ public class ExamDetailServiceImpl extends ServiceImpl<ExamDetailMapper, ExamDet
 
     @Transactional(rollbackFor = Exception.class)
     @Override
-    public List<Long> disposeExamDetailByExaminationExcel(Long examId, List<ExaminationImportDto> dataList, Long userId, SerialNumberParams serialNumberParams, SysUser sysUser) {
+    public List<Long> disposeExamDetailByExaminationExcel(ExamPrintPlan examPrintPlan, List<ExaminationImportDto> dataList, Long userId, SerialNumberParams serialNumberParams, SysUser sysUser) {
         List<Map<String, Object>> examDetailKeyList = dataList.stream().flatMap(e -> {
             Long schoolIdId = e.getSchoolId();
             Map<String, Object> map = new HashMap<>();
@@ -559,7 +559,7 @@ public class ExamDetailServiceImpl extends ServiceImpl<ExamDetailMapper, ExamDet
             examDetail.setOrgId(sysUser.getOrgId());
             examDetail.setPrintPlanId(Long.valueOf(String.valueOf(map.get("printPlanId"))));
             examDetail.setPrintPlanName(String.valueOf(map.get("printPlanName")));
-            examDetail.setExamId(examId);
+            examDetail.setExamId(examPrintPlan.getExamId());
             examDetail.setExamPlace(examPlace);
             examDetail.setExamRoom(examRoom);
             examDetail.setStatus(ExamDetailStatusEnum.NEW);
@@ -571,6 +571,7 @@ public class ExamDetailServiceImpl extends ServiceImpl<ExamDetailMapper, ExamDet
 //            examDetail.setPrintHouseId(printHouseId);
             examDetail.setCreateId(userId);
             examDetail.setUpdateId(userId);
+            examDetail.setBackupCount(examPrintPlan.getBackupCount());
             examDetailList.add(examDetail);
         }
         this.saveBatch(examDetailList);

+ 36 - 1
distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/ExamTaskServiceImpl.java

@@ -39,6 +39,7 @@ import com.qmth.teachcloud.common.config.DictionaryConfig;
 import com.qmth.teachcloud.common.contant.SystemConstant;
 import com.qmth.teachcloud.common.entity.*;
 import com.qmth.teachcloud.common.enums.*;
+import com.qmth.teachcloud.common.enums.log.*;
 import com.qmth.teachcloud.common.service.*;
 import com.qmth.teachcloud.common.util.*;
 import com.qmth.teachcloud.common.util.excel.ExcelError;
@@ -222,6 +223,9 @@ public class ExamTaskServiceImpl extends ServiceImpl<ExamTaskMapper, ExamTask> i
     @Resource
     private BasicRoleDataPermissionService basicRoleDataPermissionService;
 
+    @Resource
+    private BasicOperationLogService basicOperationLogService;
+
     @Override
     public List<ExamTask> listByCourseCode(Long schoolId, String code) {
         QueryWrapper<ExamTask> queryWrapper = new QueryWrapper<>();
@@ -1766,11 +1770,11 @@ public class ExamTaskServiceImpl extends ServiceImpl<ExamTaskMapper, ExamTask> i
                         examDetail.setExamDataSource(ExamDataSourceEnum.EXAM_TASK);
                         examDetail.setNormal(true);
                         examDetail.setPrintHouseId(examDetailList.getPrintHouseId());
+                        examDetail.setBackupCount(examDetailList.getBackupCount());
                         examDetail.setCreateId(sysUser.getId());
                         examDetail.setCreateTime(System.currentTimeMillis());
                         examDetailService.save(examDetail);
 
-                        List<String> classIds = Arrays.asList(examDetailList.getClassId().split(","));
                         ExamDetailCourse examDetailCourse = new ExamDetailCourse();
                         examDetailCourse.setId(SystemConstant.getDbUuid());
                         examDetailCourse.setSchoolId(schoolId);
@@ -1824,6 +1828,7 @@ public class ExamTaskServiceImpl extends ServiceImpl<ExamTaskMapper, ExamTask> i
                     examDetail.setNormal(true);
                     examDetail.setPrintCount(examDetailParams.getPrintCount());
                     examDetail.setPrintHouseId(examDetailParams.getPrintHouseId());
+                    examDetail.setBackupCount(examDetailParams.getBackupCount());
                     examDetail.setCreateId(sysUser.getId());
                     examDetail.setCreateTime(System.currentTimeMillis());
                     examDetailService.save(examDetail);
@@ -2334,6 +2339,36 @@ public class ExamTaskServiceImpl extends ServiceImpl<ExamTaskMapper, ExamTask> i
         this.removeByExamTaskId(id);
     }
 
+    @Override
+    public boolean savePreviewLog(Long examTaskId, String paperType, String type) {
+        SysUser sysUser = (SysUser) ServletUtil.getRequestUser();
+        ExamTask examTask = this.getById(examTaskId);
+        if (examTask != null) {
+            BasicOperationLog basicOperationLog = new BasicOperationLog();
+            basicOperationLog.setId(SystemConstant.getDbUuid());
+            basicOperationLog.setSchoolId(sysUser.getSchoolId());
+            basicOperationLog.setOrgId(sysUser.getOrgId());
+            BasicExam basicExam = basicExamService.getById(examTask.getExamId());
+            String examName = basicExam == null ? "-" : basicExam.getName();
+            String courseName = examTask.getCourseName() + "(" + examTask.getCourseCode() + ")";
+            basicOperationLog.setDetail(String.format("考试[%s],课程[%s],试卷编号[%s],题卡或者试卷[%s],卷型[%s]", examName, courseName, examTask.getPaperNumber(), type, paperType));
+            basicOperationLog.setLevel(LevelEnum.SECONDARY);
+            basicOperationLog.setCustomizedOperationType(CustomizedOperationTypeEnum.PREVIEW);
+            basicOperationLog.setOperationType(OperationTypeEnum.UN_KNOW);
+            basicOperationLog.setOperationUnit(OperationUnitEnum.UN_KNOW);
+            basicOperationLog.setSystemType(SystemEnum.DISTRIBUTED_PRINT);
+            basicOperationLog.setPrivilegeId(ServletUtil.getCurrentPrivilegeId());
+            basicOperationLog.setRunTime(0L);
+            basicOperationLog.setRunStatus("成功");
+            basicOperationLog.setUserId(sysUser.getId());
+            basicOperationLog.setUserName(sysUser.getLoginName());
+            basicOperationLog.setIp(ServletUtil.getIP());
+            basicOperationLog.setCreateTime(System.currentTimeMillis());
+            basicOperationLogService.save(basicOperationLog);
+        }
+        return true;
+    }
+
     /**
      * 简单校验提交参数
      *

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

@@ -338,7 +338,7 @@ public class TaskLogicServiceImpl implements TaskLogicService {
 //                    BasicExam basicExam = basicExamService.getById(examTask.getExamId());
                     //
                     List<String> paperTypes = Arrays.stream(paperType.split(",")).sorted(Comparator.comparing(String::valueOf)).collect(Collectors.toList());
-                    int backupCount = examPrintPlan.getBackupCount() != null ? examPrintPlan.getBackupCount() : 0;
+                    int backupCount = SystemConstant.calcBackupCount(examDetail.getBackupCount(), examDetail.getTotalSubjects(), 1);
 
                     // 当前关联试卷类型
                     List<String> relatePaperTypes = new ArrayList<>();
@@ -526,7 +526,8 @@ public class TaskLogicServiceImpl implements TaskLogicService {
                     if (Objects.nonNull(type) && Objects.equals(type.toUpperCase(), "SIGN")) {//签到表
                         createPdfUtil.createSignBook(templateId, basicSchool.getName(), examDetail, examStudentCourseDtoList, list[1], (Integer) jsonObjectVariable.get("backupCount"), examDetailCourseList, fileTempList);
                     } else if (Objects.nonNull(type) && Objects.equals(type.toUpperCase(), "PACKAGE")) {//卷袋贴
-                        createPdfUtil.createPaperPackage(templateId, basicSchool.getName(), examDetail, examStudentCourseDtoList, list[1], examPrintPlan.getBackupCount(), (Integer) jsonObjectVariable.get("backupCount"), examDetailCourseList, examPrintPlan.getExamId(), fileTempList);
+                        Integer backupCount = SystemConstant.calcBackupCount(examDetail.getBackupCount(), examDetail.getTotalSubjects(), 1);
+                        createPdfUtil.createPaperPackage(templateId, basicSchool.getName(), examDetail, examStudentCourseDtoList, list[1], backupCount, (Integer) jsonObjectVariable.get("backupCount"), examDetailCourseList, examPrintPlan.getExamId(), fileTempList);
                     }
                 }
             }
@@ -880,7 +881,7 @@ public class TaskLogicServiceImpl implements TaskLogicService {
         Long value = counter.get();
         try {
             // 组装exam_detail数据
-            List<Long> examDetailIdList = examDetailService.disposeExamDetailByExaminationExcel(examPrintPlan.getExamId(), examinationImportDtoList, userId, serialNumberParams, sysUser);
+            List<Long> examDetailIdList = examDetailService.disposeExamDetailByExaminationExcel(examPrintPlan, examinationImportDtoList, userId, serialNumberParams, sysUser);
             // 组装exam_detail_course数据
             examDetailService.disposeExamDetailCourseByExaminationExcel(examinationImportDtoList, userId, sysUser);
             // 组装exam_student数据

+ 0 - 0
distributed-print-business/src/main/resources/db/log/3.2.5-脚本-caozx.sql


+ 0 - 0
distributed-print-business/src/main/resources/db/log/3.2.5-脚本-wangl.sql


+ 10 - 0
distributed-print-business/src/main/resources/db/log/3.2.5-脚本-xiaof.sql

@@ -0,0 +1,10 @@
+ALTER TABLE `exam_detail`
+    ADD COLUMN `backup_count` DOUBLE NULL COMMENT '试卷、题卡备份数量(0-1为按比例,大于等于1为按数量)' AFTER `print_count`;
+
+update exam_detail ed set ed.backup_count = (select backup_count from exam_print_plan epp where ed.print_plan_id = epp.id) where ed.id > 0;
+
+ALTER TABLE `exam_print_plan`
+    CHANGE COLUMN `backup_count` `backup_count` DOUBLE NOT NULL COMMENT '试卷、题卡备份数量(0-1为按比例,大于等于1为按数量)' ;
+
+ALTER TABLE `basic_print_config`
+    CHANGE COLUMN `backup_count` `backup_count` DOUBLE NULL DEFAULT NULL COMMENT '试卷、题卡备份数量(0-1为按比例,大于等于1为按数量)' ;

+ 14 - 1
distributed-print/src/main/java/com/qmth/distributed/print/api/BasicOperationLogController.java

@@ -1,6 +1,7 @@
 package com.qmth.distributed.print.api;
 
 import com.qmth.boot.api.constant.ApiConstant;
+import com.qmth.distributed.print.business.service.ExamTaskService;
 import com.qmth.teachcloud.common.annotation.OperationLogDetail;
 import com.qmth.teachcloud.common.contant.SystemConstant;
 import com.qmth.teachcloud.common.entity.SysUser;
@@ -31,6 +32,9 @@ public class BasicOperationLogController {
     @Resource
     private BasicOperationLogService basicOperationLogService;
 
+    @Resource
+    private ExamTaskService examTaskService;
+
     @ApiOperation(value = "日志管理-分页查询")
     @RequestMapping(value = "/query", method = RequestMethod.POST)
     @ApiResponses({@ApiResponse(code = 200, message = "查询成功", response = Result.class)})
@@ -41,6 +45,15 @@ public class BasicOperationLogController {
                                        @ApiParam(value = "分页页码", required = true) @RequestParam @Min(SystemConstant.PAGE_NUMBER_MIN) Integer pageNumber,
                                        @ApiParam(value = "分页数", required = true) @RequestParam @Min(SystemConstant.PAGE_SIZE_MIN) @Max(SystemConstant.PAGE_SIZE_MAX) Integer pageSize) {
         SysUser requestUser = (SysUser) ServletUtil.getRequestUser();
-        return ResultUtil.ok(basicOperationLogService.findOperationLogPage(customizedOperationType, startTime, endTime,operatorName, requestUser, pageNumber, pageSize));
+        return ResultUtil.ok(basicOperationLogService.findOperationLogPage(customizedOperationType, startTime, endTime, operatorName, requestUser, pageNumber, pageSize));
+    }
+
+    @ApiOperation(value = "日志管理-试卷、题卡预览接口保存")
+    @RequestMapping(value = "/save_preview_log", method = RequestMethod.POST)
+    @ApiResponses({@ApiResponse(code = 200, message = "查询成功", response = Result.class)})
+    public Result savePreviewLog(@ApiParam(value = "命题任务ID") @RequestParam(value = "examTaskId") Long examTaskId,
+                                 @ApiParam(value = "卷型") @RequestParam(required = false) String paperType,
+                                 @ApiParam(value = "类型") @RequestParam(required = false) String type) {
+        return ResultUtil.ok(examTaskService.savePreviewLog(examTaskId, paperType, type));
     }
 }

+ 27 - 0
teachcloud-common/src/main/java/com/qmth/teachcloud/common/contant/SystemConstant.java

@@ -27,6 +27,7 @@ import org.slf4j.LoggerFactory;
 import java.io.*;
 import java.lang.reflect.Field;
 import java.math.BigDecimal;
+import java.math.RoundingMode;
 import java.net.URLEncoder;
 import java.nio.charset.Charset;
 import java.time.LocalDateTime;
@@ -297,6 +298,8 @@ public class SystemConstant {
     public static final String CATALOG_LINK = "->";
     public static final String OPERATE_LINK = "--";
 
+    public static final Integer DEFAULT_BACKUP_COUNT = 1;
+
     /**
      * oss url过期时间
      */
@@ -1068,4 +1071,28 @@ public class SystemConstant {
         jsonObject.put(SystemConstant.UPLOAD_TYPE, UploadFileEnum.FILE);
         return jsonObject;
     }
+
+    public static int calcBackupCount(Double backupCount, Integer studentCount, Integer defaultValue){
+        if(defaultValue == null){
+            defaultValue = DEFAULT_BACKUP_COUNT;
+        }
+        if(backupCount == null || backupCount <= 0){
+            return defaultValue;
+        }
+        // <1按比例,>=1按数量
+        if(backupCount < 1){
+            if(studentCount == null || studentCount ==0){
+                return defaultValue;
+            } else {
+                BigDecimal bigDecimal = new BigDecimal(studentCount).multiply(new BigDecimal(backupCount)).setScale(0, RoundingMode.FLOOR);
+                if(bigDecimal.intValue() == 0){
+                    return defaultValue;
+                } else {
+                    return bigDecimal.intValue();
+                }
+            }
+        } else {
+            return backupCount.intValue();
+        }
+    }
 }

+ 3 - 3
teachcloud-common/src/main/java/com/qmth/teachcloud/common/entity/BasicPrintConfig.java

@@ -77,7 +77,7 @@ public class BasicPrintConfig extends BaseEntity implements Serializable {
      * 试卷题卡备份数量
      */
     @TableField("backup_count")
-    private Integer backupCount;
+    private Double backupCount;
 
     /**
      * 抽卷规则(ONE只抽一次,CIRCLE循环抽取)
@@ -173,11 +173,11 @@ public class BasicPrintConfig extends BaseEntity implements Serializable {
         this.backupMethod = backupMethod;
     }
 
-    public Integer getBackupCount() {
+    public Double getBackupCount() {
         return backupCount;
     }
 
-    public void setBackupCount(Integer backupCount) {
+    public void setBackupCount(Double backupCount) {
         this.backupCount = backupCount;
     }
 

+ 1 - 0
teachcloud-common/src/main/java/com/qmth/teachcloud/common/enums/log/CustomizedOperationTypeEnum.java

@@ -21,6 +21,7 @@ public enum CustomizedOperationTypeEnum {
     IMPORT("导入", OperationTypeEnum.EDIT),
     EXPORT("导出", OperationTypeEnum.SELECT),
     PUSH("推送", OperationTypeEnum.UN_KNOW),
+    PREVIEW("预览", OperationTypeEnum.UN_KNOW),
     UN_KNOW("未知", OperationTypeEnum.UN_KNOW);
     private final String desc;
     private final OperationTypeEnum operationType;