浏览代码

3.3.1 查询题库试卷

xiaofei 1 年之前
父节点
当前提交
a6e6184eba
共有 17 个文件被更改,包括 308 次插入20 次删除
  1. 5 0
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/ExamTaskService.java
  2. 1 1
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/PrintCommonService.java
  3. 1 4
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/ClientServiceImpl.java
  4. 1 1
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/DataSyncReportServiceImpl.java
  5. 17 0
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/ExamTaskServiceImpl.java
  6. 1 3
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/PrintCommonServiceImpl.java
  7. 2 2
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/SsoServiceImpl.java
  8. 1 1
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/templete/service/impl/TaskLogicServiceImpl.java
  9. 1 2
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/util/CreatePdfUtil.java
  10. 1 1
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/util/pdf/CreatePdfNewUtil.java
  11. 23 0
      distributed-print/src/main/java/com/qmth/distributed/print/api/ExamTaskApplyController.java
  12. 68 0
      teachcloud-common/src/main/java/com/qmth/teachcloud/common/bean/tiku/TikuPaperInfo.java
  13. 1 1
      teachcloud-common/src/main/java/com/qmth/teachcloud/common/bean/vo/PrintPathVo.java
  14. 5 2
      teachcloud-common/src/main/java/com/qmth/teachcloud/common/contant/SystemConstant.java
  15. 1 1
      teachcloud-common/src/main/java/com/qmth/teachcloud/common/kit/TeachCloudReportTaskUtils.java
  16. 178 0
      teachcloud-common/src/main/java/com/qmth/teachcloud/common/kit/TikuUtils.java
  17. 1 1
      teachcloud-common/src/main/java/com/qmth/teachcloud/common/util/Zip4jUtil.java

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

@@ -17,6 +17,7 @@ import com.qmth.distributed.print.business.entity.ExamTaskReviewLog;
 import com.qmth.distributed.print.business.enums.ExamObjectType;
 import com.qmth.distributed.print.business.enums.ExamObjectType;
 import com.qmth.distributed.print.business.enums.MakeMethodEnum;
 import com.qmth.distributed.print.business.enums.MakeMethodEnum;
 import com.qmth.teachcloud.common.bean.dto.BlurryUserDto;
 import com.qmth.teachcloud.common.bean.dto.BlurryUserDto;
+import com.qmth.teachcloud.common.bean.tiku.TikuPaperInfo;
 import com.qmth.teachcloud.common.entity.SysUser;
 import com.qmth.teachcloud.common.entity.SysUser;
 import com.qmth.teachcloud.common.entity.TBTask;
 import com.qmth.teachcloud.common.entity.TBTask;
 import com.qmth.teachcloud.common.enums.FlowStatusEnum;
 import com.qmth.teachcloud.common.enums.FlowStatusEnum;
@@ -212,4 +213,8 @@ public interface ExamTaskService extends IService<ExamTask> {
     IPage<MakeupExamTaskDto> listMakeupExamTask(Long printPlanId, Long semesterId, Long examId, Long collegeId, String courseCode, String paperNumber, String userName, Integer pageNumber, Integer pageSize);
     IPage<MakeupExamTaskDto> listMakeupExamTask(Long printPlanId, Long semesterId, Long examId, Long collegeId, String courseCode, String paperNumber, String userName, Integer pageNumber, Integer pageSize);
 
 
     void saveMakeupTask(MakeupExamTaskTotalParam makeupExamTaskTotalParam);
     void saveMakeupTask(MakeupExamTaskTotalParam makeupExamTaskTotalParam);
+
+    IPage<TikuPaperInfo> pageTikuPaper(String courseCode, String paperName, String account, Integer pageNumber, Integer pageSize);
+
+    String getTikuPaperData(Long paperId);
 }
 }

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

@@ -2,7 +2,7 @@ package com.qmth.distributed.print.business.service;
 
 
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.itextpdf.text.DocumentException;
 import com.itextpdf.text.DocumentException;
-import com.qmth.distributed.print.business.bean.createPdf.PrintPathVo;
+import com.qmth.teachcloud.common.bean.vo.PrintPathVo;
 import com.qmth.distributed.print.business.bean.dto.PdfDto;
 import com.qmth.distributed.print.business.bean.dto.PdfDto;
 import com.qmth.distributed.print.business.bean.dto.PdfPackageDto;
 import com.qmth.distributed.print.business.bean.dto.PdfPackageDto;
 import com.qmth.distributed.print.business.bean.dto.PdfSignDto;
 import com.qmth.distributed.print.business.bean.dto.PdfSignDto;

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

@@ -6,7 +6,7 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
 import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
-import com.qmth.distributed.print.business.bean.createPdf.PrintPathVo;
+import com.qmth.teachcloud.common.bean.vo.PrintPathVo;
 import com.qmth.distributed.print.business.bean.dto.*;
 import com.qmth.distributed.print.business.bean.dto.*;
 import com.qmth.distributed.print.business.bean.dto.client.PrintSingleDto;
 import com.qmth.distributed.print.business.bean.dto.client.PrintSingleDto;
 import com.qmth.distributed.print.business.bean.dto.client.UrlMd5Dto;
 import com.qmth.distributed.print.business.bean.dto.client.UrlMd5Dto;
@@ -29,9 +29,7 @@ import com.qmth.teachcloud.common.service.*;
 import com.qmth.teachcloud.common.util.ExamTaskUtil;
 import com.qmth.teachcloud.common.util.ExamTaskUtil;
 import com.qmth.teachcloud.common.util.ExcelUtil;
 import com.qmth.teachcloud.common.util.ExcelUtil;
 import com.qmth.teachcloud.common.util.ServletUtil;
 import com.qmth.teachcloud.common.util.ServletUtil;
-import net.sf.jsqlparser.statement.select.Select;
 import org.apache.commons.collections4.CollectionUtils;
 import org.apache.commons.collections4.CollectionUtils;
-import org.apache.commons.lang3.Streams;
 import org.apache.commons.lang3.StringUtils;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.stereotype.Service;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.transaction.annotation.Transactional;
@@ -41,7 +39,6 @@ import javax.servlet.http.HttpServletResponse;
 import java.text.SimpleDateFormat;
 import java.text.SimpleDateFormat;
 import java.util.*;
 import java.util.*;
 import java.util.stream.Collectors;
 import java.util.stream.Collectors;
-import java.util.stream.Stream;
 
 
 /**
 /**
  * 客户端
  * 客户端

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

@@ -17,7 +17,7 @@ import com.qmth.teachcloud.common.enums.GradeAnalyzePaperStatusEnum;
 import com.qmth.teachcloud.common.enums.TaskResultEnum;
 import com.qmth.teachcloud.common.enums.TaskResultEnum;
 import com.qmth.teachcloud.common.enums.TaskStatusEnum;
 import com.qmth.teachcloud.common.enums.TaskStatusEnum;
 import com.qmth.teachcloud.common.service.BasicSemesterService;
 import com.qmth.teachcloud.common.service.BasicSemesterService;
-import com.qmth.teachcloud.common.sync.TeachCloudReportTaskUtils;
+import com.qmth.teachcloud.common.kit.TeachCloudReportTaskUtils;
 import com.qmth.teachcloud.common.util.Base64Util;
 import com.qmth.teachcloud.common.util.Base64Util;
 import com.qmth.teachcloud.common.util.ShaUtils;
 import com.qmth.teachcloud.common.util.ShaUtils;
 import org.slf4j.Logger;
 import org.slf4j.Logger;

+ 17 - 0
distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/ExamTaskServiceImpl.java

@@ -34,11 +34,13 @@ import com.qmth.teachcloud.common.bean.params.BasicStudentExtrasParam;
 import com.qmth.teachcloud.common.bean.result.BasicStudentResult;
 import com.qmth.teachcloud.common.bean.result.BasicStudentResult;
 import com.qmth.teachcloud.common.bean.result.SysUserResult;
 import com.qmth.teachcloud.common.bean.result.SysUserResult;
 import com.qmth.teachcloud.common.bean.result.TbTaskDetailResult;
 import com.qmth.teachcloud.common.bean.result.TbTaskDetailResult;
+import com.qmth.teachcloud.common.bean.tiku.TikuPaperInfo;
 import com.qmth.teachcloud.common.bean.vo.PaperInfoVo;
 import com.qmth.teachcloud.common.bean.vo.PaperInfoVo;
 import com.qmth.teachcloud.common.contant.SystemConstant;
 import com.qmth.teachcloud.common.contant.SystemConstant;
 import com.qmth.teachcloud.common.entity.*;
 import com.qmth.teachcloud.common.entity.*;
 import com.qmth.teachcloud.common.enums.*;
 import com.qmth.teachcloud.common.enums.*;
 import com.qmth.teachcloud.common.enums.log.*;
 import com.qmth.teachcloud.common.enums.log.*;
+import com.qmth.teachcloud.common.kit.TikuUtils;
 import com.qmth.teachcloud.common.service.*;
 import com.qmth.teachcloud.common.service.*;
 import com.qmth.teachcloud.common.util.*;
 import com.qmth.teachcloud.common.util.*;
 import com.qmth.teachcloud.common.util.excel.ExcelError;
 import com.qmth.teachcloud.common.util.excel.ExcelError;
@@ -167,6 +169,8 @@ public class ExamTaskServiceImpl extends ServiceImpl<ExamTaskMapper, ExamTask> i
     private RedisCounterUtil redisCounterUtil;
     private RedisCounterUtil redisCounterUtil;
     @Resource
     @Resource
     private FileUploadService fileUploadService;
     private FileUploadService fileUploadService;
+    @Resource
+    private TikuUtils tikuUtils;
 
 
     @Override
     @Override
     public IPage<ExamTaskDto> list(Long semesterId, Long examId, Boolean enable, String status, Long cardRuleId, String courseCode, String paperNumber, Long startTime, Long endTime, String userName, String createName, Integer pageNumber, Integer pageSize) {
     public IPage<ExamTaskDto> list(Long semesterId, Long examId, Boolean enable, String status, Long cardRuleId, String courseCode, String paperNumber, Long startTime, Long endTime, String userName, String createName, Integer pageNumber, Integer pageSize) {
@@ -2134,6 +2138,19 @@ public class ExamTaskServiceImpl extends ServiceImpl<ExamTaskMapper, ExamTask> i
         }
         }
     }
     }
 
 
+    @Override
+    public IPage<TikuPaperInfo> pageTikuPaper(String courseCode, String paperName, String account, Integer pageNumber, Integer pageSize) {
+        Long schoolId = Long.valueOf(ServletUtil.getRequestHeaderSchoolId().toString());
+        return tikuUtils.pagePaperInfo(schoolId, courseCode, paperName, account, pageNumber, pageSize);
+    }
+
+    @Override
+    public String getTikuPaperData(Long paperId) {
+        Long schoolId = Long.valueOf(ServletUtil.getRequestHeaderSchoolId().toString());
+        tikuUtils.getTikuPaperData(schoolId, paperId);
+        return null;
+    }
+
     /**
     /**
      * 简单校验提交参数
      * 简单校验提交参数
      *
      *

+ 1 - 3
distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/PrintCommonServiceImpl.java

@@ -8,10 +8,9 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
 import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
-import com.itextpdf.text.DocumentException;
 import com.itextpdf.text.pdf.PdfReader;
 import com.itextpdf.text.pdf.PdfReader;
 import com.qmth.boot.api.exception.ApiException;
 import com.qmth.boot.api.exception.ApiException;
-import com.qmth.distributed.print.business.bean.createPdf.PrintPathVo;
+import com.qmth.teachcloud.common.bean.vo.PrintPathVo;
 import com.qmth.distributed.print.business.bean.dto.PdfDto;
 import com.qmth.distributed.print.business.bean.dto.PdfDto;
 import com.qmth.distributed.print.business.bean.dto.PdfPackageDto;
 import com.qmth.distributed.print.business.bean.dto.PdfPackageDto;
 import com.qmth.distributed.print.business.bean.dto.PdfSignDto;
 import com.qmth.distributed.print.business.bean.dto.PdfSignDto;
@@ -52,7 +51,6 @@ import org.apache.poi.ss.usermodel.HorizontalAlignment;
 import org.apache.poi.ss.usermodel.IndexedColors;
 import org.apache.poi.ss.usermodel.IndexedColors;
 import org.apache.poi.ss.util.CellRangeAddress;
 import org.apache.poi.ss.util.CellRangeAddress;
 import org.apache.poi.xssf.usermodel.*;
 import org.apache.poi.xssf.usermodel.*;
-import org.bouncycastle.crypto.engines.CramerShoupCiphertext;
 import org.slf4j.Logger;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.slf4j.LoggerFactory;
 import org.springframework.context.annotation.Lazy;
 import org.springframework.context.annotation.Lazy;

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

@@ -234,8 +234,8 @@ public class SsoServiceImpl implements SsoService {
         if (questionLoginUrl.contains(SystemConstant.PATH_MATCH)) {
         if (questionLoginUrl.contains(SystemConstant.PATH_MATCH)) {
             questionLoginUrl = questionLoginUrl.replace(SystemConstant.PATH_MATCH, basicSchool.getCode());
             questionLoginUrl = questionLoginUrl.replace(SystemConstant.PATH_MATCH, basicSchool.getCode());
         }
         }
-        questionLoginUrl = questionLoginUrl + SystemConstant.QUESTION_CAS_ADMIN_LOGIN_OPEN_API;
-        String path = SystemConstant.QUESTION_CAS_ADMIN_LOGIN_OPEN_API;
+        questionLoginUrl = questionLoginUrl + SystemConstant.TIKU_CAS_ADMIN_LOGIN_OPEN_API;
+        String path = SystemConstant.TIKU_CAS_ADMIN_LOGIN_OPEN_API;
         String signature = SignatureEntity.build(SignatureType.SECRET, SystemConstant.GET, path, timestamp, basicSchool.getAccessKey(), basicSchool.getAccessSecret());
         String signature = SignatureEntity.build(SignatureType.SECRET, SystemConstant.GET, path, timestamp, basicSchool.getAccessKey(), basicSchool.getAccessSecret());
         signature = URLEncoder.encode(signature, SystemConstant.CHARSET_NAME);
         signature = URLEncoder.encode(signature, SystemConstant.CHARSET_NAME);
 
 

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

@@ -10,7 +10,7 @@ import com.google.common.reflect.TypeToken;
 import com.google.gson.Gson;
 import com.google.gson.Gson;
 import com.itextpdf.text.DocumentException;
 import com.itextpdf.text.DocumentException;
 import com.qmth.boot.api.exception.ApiException;
 import com.qmth.boot.api.exception.ApiException;
-import com.qmth.distributed.print.business.bean.createPdf.PrintPathVo;
+import com.qmth.teachcloud.common.bean.vo.PrintPathVo;
 import com.qmth.distributed.print.business.bean.dto.*;
 import com.qmth.distributed.print.business.bean.dto.*;
 import com.qmth.distributed.print.business.bean.examRule.CodeNameEnableValue;
 import com.qmth.distributed.print.business.bean.examRule.CodeNameEnableValue;
 import com.qmth.distributed.print.business.bean.examRule.FieldsDto;
 import com.qmth.distributed.print.business.bean.examRule.FieldsDto;

+ 1 - 2
distributed-print-business/src/main/java/com/qmth/distributed/print/business/util/CreatePdfUtil.java

@@ -5,8 +5,7 @@ import cn.hutool.core.util.ReflectUtil;
 import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
 import com.alibaba.fastjson.JSONObject;
-import com.qmth.boot.tools.models.ByteArray;
-import com.qmth.distributed.print.business.bean.createPdf.PrintPathVo;
+import com.qmth.teachcloud.common.bean.vo.PrintPathVo;
 import com.qmth.distributed.print.business.bean.dto.*;
 import com.qmth.distributed.print.business.bean.dto.*;
 import com.qmth.distributed.print.business.enums.ExamNumberStyleEnum;
 import com.qmth.distributed.print.business.enums.ExamNumberStyleEnum;
 import com.qmth.teachcloud.common.bean.vo.FilePathVo;
 import com.qmth.teachcloud.common.bean.vo.FilePathVo;

+ 1 - 1
distributed-print-business/src/main/java/com/qmth/distributed/print/business/util/pdf/CreatePdfNewUtil.java

@@ -5,7 +5,7 @@ import cn.hutool.core.util.ReflectUtil;
 import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
 import com.alibaba.fastjson.JSONObject;
-import com.qmth.distributed.print.business.bean.createPdf.PrintPathVo;
+import com.qmth.teachcloud.common.bean.vo.PrintPathVo;
 import com.qmth.distributed.print.business.bean.dto.*;
 import com.qmth.distributed.print.business.bean.dto.*;
 import com.qmth.distributed.print.business.entity.*;
 import com.qmth.distributed.print.business.entity.*;
 import com.qmth.distributed.print.business.enums.ExamDetailStatusEnum;
 import com.qmth.distributed.print.business.enums.ExamDetailStatusEnum;

+ 23 - 0
distributed-print/src/main/java/com/qmth/distributed/print/api/ExamTaskApplyController.java

@@ -1,5 +1,6 @@
 package com.qmth.distributed.print.api;
 package com.qmth.distributed.print.api;
 
 
+import com.qmth.boot.api.annotation.Aac;
 import com.qmth.boot.api.constant.ApiConstant;
 import com.qmth.boot.api.constant.ApiConstant;
 import com.qmth.distributed.print.business.bean.dto.ExamTaskDetailCardDto;
 import com.qmth.distributed.print.business.bean.dto.ExamTaskDetailCardDto;
 import com.qmth.distributed.print.business.bean.params.ExamTaskApplyParam;
 import com.qmth.distributed.print.business.bean.params.ExamTaskApplyParam;
@@ -260,5 +261,27 @@ public class ExamTaskApplyController {
         SysUser requestUser = (SysUser) ServletUtil.getRequestUser();
         SysUser requestUser = (SysUser) ServletUtil.getRequestUser();
         return ResultUtil.ok(examTaskService.examTaskExamStudentImport(file, requestUser));
         return ResultUtil.ok(examTaskService.examTaskExamStudentImport(file, requestUser));
     }
     }
+
+    @Aac(auth = false)
+    @ApiOperation(value = "入库申请-题库试卷列表")
+    @RequestMapping(value = "/page_tiku_paper", method = RequestMethod.POST)
+    @Transactional(rollbackFor = Exception.class)
+    @ApiResponses({@ApiResponse(code = 200, message = "{\"success\":true}", response = Result.class)})
+    public Result pageTikuPaper(@ApiParam(value = "课程代码", required = true) @RequestParam String courseCode,
+                                @ApiParam(value = "试卷名称") @RequestParam(value = "paperName", required = false) String paperName,
+                                @ApiParam(value = "教师工号") @RequestParam(value = "account", required = false) String account,
+                                @RequestParam @Min(SystemConstant.PAGE_NUMBER_MIN) Integer pageNumber,
+                                @RequestParam @Min(SystemConstant.PAGE_SIZE_MIN) @Max(SystemConstant.PAGE_SIZE_MAX) Integer pageSize) {
+        return ResultUtil.ok(examTaskService.pageTikuPaper(courseCode, paperName, account, pageNumber, pageSize));
+    }
+
+    @Aac(auth = false)
+    @ApiOperation(value = "入库申请-题库试卷列表")
+    @RequestMapping(value = "/get_tiku_paper_data", method = RequestMethod.POST)
+    @Transactional(rollbackFor = Exception.class)
+    @ApiResponses({@ApiResponse(code = 200, message = "{\"success\":true}", response = Result.class)})
+    public Result getTikuPaperData(@ApiParam(value = "题库试卷ID", required = true) @RequestParam Long paperId) {
+        return ResultUtil.ok(examTaskService.getTikuPaperData(paperId));
+    }
 }
 }
 
 

+ 68 - 0
teachcloud-common/src/main/java/com/qmth/teachcloud/common/bean/tiku/TikuPaperInfo.java

@@ -0,0 +1,68 @@
+package com.qmth.teachcloud.common.bean.tiku;
+
+public class TikuPaperInfo {
+
+    private Long id;
+    private String name;
+    private String createByAccount;
+    private String creationTime;
+    private int paperDetailCount;
+    private int unitCount;
+    private double totalScore;
+
+    public Long getId() {
+        return id;
+    }
+
+    public void setId(Long id) {
+        this.id = id;
+    }
+
+    public String getName() {
+        return name;
+    }
+
+    public void setName(String name) {
+        this.name = name;
+    }
+
+    public String getCreateByAccount() {
+        return createByAccount;
+    }
+
+    public void setCreateByAccount(String createByAccount) {
+        this.createByAccount = createByAccount;
+    }
+
+    public String getCreationTime() {
+        return creationTime;
+    }
+
+    public void setCreationTime(String creationTime) {
+        this.creationTime = creationTime;
+    }
+
+    public int getPaperDetailCount() {
+        return paperDetailCount;
+    }
+
+    public void setPaperDetailCount(int paperDetailCount) {
+        this.paperDetailCount = paperDetailCount;
+    }
+
+    public int getUnitCount() {
+        return unitCount;
+    }
+
+    public void setUnitCount(int unitCount) {
+        this.unitCount = unitCount;
+    }
+
+    public double getTotalScore() {
+        return totalScore;
+    }
+
+    public void setTotalScore(double totalScore) {
+        this.totalScore = totalScore;
+    }
+}

+ 1 - 1
distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/createPdf/PrintPathVo.java → teachcloud-common/src/main/java/com/qmth/teachcloud/common/bean/vo/PrintPathVo.java

@@ -1,4 +1,4 @@
-package com.qmth.distributed.print.business.bean.createPdf;
+package com.qmth.teachcloud.common.bean.vo;
 
 
 import com.qmth.teachcloud.common.enums.ClassifyEnum;
 import com.qmth.teachcloud.common.enums.ClassifyEnum;
 import com.qmth.teachcloud.common.enums.UploadFileEnum;
 import com.qmth.teachcloud.common.enums.UploadFileEnum;

+ 5 - 2
teachcloud-common/src/main/java/com/qmth/teachcloud/common/contant/SystemConstant.java

@@ -138,9 +138,12 @@ public class SystemConstant {
 
 
 
 
     /**
     /**
-     * 题库cas登录地址
+     * 题库接口地址
      */
      */
-    public static final String QUESTION_CAS_ADMIN_LOGIN_OPEN_API = "/admin/login-open";
+    public static final String TIKU_CAS_ADMIN_LOGIN_OPEN_API = "/admin/login-open";// 题库cas登录地址
+    public static final String TIKU_PAPER_LIST_API = "/api/open/paper/page";// 获取试卷列表接口地址
+    public static final String TIKU_PAPER_DATA_API = "/api/open/paper/data";// 获取试卷数据接口地址
+    public static final String TIKU_PAPER_PROPERTY_API = "/api/open/property";// 获取知识点接口地址
 
 
     /**
     /**
      * 系统配置
      * 系统配置

+ 1 - 1
teachcloud-common/src/main/java/com/qmth/teachcloud/common/sync/TeachCloudReportTaskUtils.java → teachcloud-common/src/main/java/com/qmth/teachcloud/common/kit/TeachCloudReportTaskUtils.java

@@ -1,4 +1,4 @@
-package com.qmth.teachcloud.common.sync;
+package com.qmth.teachcloud.common.kit;
 
 
 import cn.hutool.http.HttpStatus;
 import cn.hutool.http.HttpStatus;
 import com.alibaba.fastjson.JSONObject;
 import com.alibaba.fastjson.JSONObject;

+ 178 - 0
teachcloud-common/src/main/java/com/qmth/teachcloud/common/kit/TikuUtils.java

@@ -0,0 +1,178 @@
+package com.qmth.teachcloud.common.kit;
+
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONObject;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.qmth.boot.tools.signature.SignatureType;
+import com.qmth.teachcloud.common.SignatureEntityTest;
+import com.qmth.teachcloud.common.bean.tiku.TikuPaperInfo;
+import com.qmth.teachcloud.common.contant.SystemConstant;
+import com.qmth.teachcloud.common.entity.BasicSchool;
+import com.qmth.teachcloud.common.entity.SysConfig;
+import com.qmth.teachcloud.common.enums.ExceptionResultEnum;
+import com.qmth.teachcloud.common.service.CommonCacheService;
+import com.qmth.teachcloud.common.util.HttpUtil;
+import com.qmth.teachcloud.common.util.JacksonUtil;
+import org.apache.commons.lang3.StringUtils;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.stereotype.Component;
+
+import javax.annotation.Resource;
+import java.io.IOException;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.Objects;
+import java.util.Optional;
+
+/**
+ * 题库工具类
+ * <p>
+ * Date: 2024/02/28.
+ */
+@Component
+public class TikuUtils {
+    private static final Logger log = LoggerFactory.getLogger(TikuUtils.class);
+
+    // 所有请求方法默认为"POST"
+    private static final String POST_METHOD = "POST";
+
+    @Resource
+    private CommonCacheService commonCacheService;
+
+    /**
+     * 获取试卷列表
+     *
+     * @param schoolId   学校ID
+     * @param courseCode 课程代码
+     * @param paperName  试卷名称
+     * @param account    工号
+     * @param pageNumber 第几页(从1开始)
+     * @param pageSize   每页条数
+     */
+    public IPage<TikuPaperInfo> pagePaperInfo(Long schoolId, String courseCode, String paperName, String account, int pageNumber, int pageSize) {
+        SysConfig sysConfig = commonCacheService.addSysConfigCache(schoolId, SystemConstant.QUESTION_HOST_URL);
+        Optional.ofNullable(sysConfig).orElseThrow(() -> ExceptionResultEnum.ERROR.exception("未配置题库地址"));
+        BasicSchool basicSchool = commonCacheService.schoolCache(schoolId);
+        String hostUrl = SystemConstant.getHost(sysConfig.getConfigValue(), basicSchool.getCode());
+
+        String url = SystemConstant.TIKU_PAPER_LIST_API;
+        validUrl(hostUrl, url);
+        String postUrl = hostUrl.concat(url);
+        long timestamp = System.currentTimeMillis();
+        //参数
+        try {
+            Map<String, Object> map = new HashMap<>();
+            map.put("courseCode", validParam(courseCode, null, true, "科目代码"));
+            Object validPaperName = validParam(paperName, null, false, "试卷名称");
+            if (validPaperName != null) {
+                map.put("paperName", validPaperName);
+            }
+            Object validAccount = validParam(account, null, false, "教师工号");
+            if (validAccount != null) {
+                map.put("account", validAccount);
+            }
+            map.put("pageNumber", validParam(pageNumber, 1, false, "分页参数"));
+            map.put("pageSize", validParam(pageSize, 10, false, "分页参数"));
+
+            String result = HttpUtil.post(postUrl, map, createSign(schoolId, timestamp, url), timestamp);
+            System.out.println(result);
+            JSONObject jsonObject = JSONObject.parseObject(result);
+            if (jsonObject.containsKey("content")) {
+                Page<TikuPaperInfo> page = new Page(pageNumber, pageSize);
+                page.setRecords(JSON.parseArray(jsonObject.getString("content"), TikuPaperInfo.class));
+                page.setTotal(jsonObject.getInteger("totalElements"));
+                page.setPages(jsonObject.getLong("totalPages"));
+                return page;
+            } else {
+                throw ExceptionResultEnum.ERROR.exception("查询试卷列表失败");
+            }
+        } catch (IOException e) {
+            log.error(SystemConstant.LOG_ERROR, e);
+            throw ExceptionResultEnum.ERROR.exception(e.getMessage());
+        }
+    }
+
+    /**
+     * 获取试卷数据包
+     *
+     * @param schoolId
+     * @param paperId  题库试卷ID
+     */
+    public boolean getTikuPaperData(Long schoolId, Long paperId) {
+        SysConfig sysConfig = commonCacheService.addSysConfigCache(schoolId, SystemConstant.TEACHCLOUD_REPORT_HOST_URL);
+        Optional.ofNullable(sysConfig).orElseThrow(() -> ExceptionResultEnum.ERROR.exception("未配置教研分析地址"));
+        BasicSchool basicSchool = commonCacheService.schoolCache(schoolId);
+        String hostUrl = SystemConstant.getHost(sysConfig.getConfigValue(), basicSchool.getCode());
+
+        String url = SystemConstant.TIKU_PAPER_DATA_API;
+        validUrl(hostUrl, url);
+        String postUrl = hostUrl.concat(url);
+        long timestamp = System.currentTimeMillis();
+        try {
+            //参数
+            Map<String, Object> map = new HashMap<>();
+            map.put("paperId", validParam(paperId, null, true, "试卷ID"));
+
+            String result = HttpUtil.post(postUrl, map, createSign(schoolId, timestamp, url), timestamp);
+            JSONObject jsonObject = JSONObject.parseObject(result);
+//            if (jsonObject.containsKey("code")) {
+//                String code = jsonObject.getString("code");
+//                if ("200".equals(code)) {
+//                    return jsonObject.getLong("data");
+//                } else {
+//                    throw ExceptionResultEnum.ERROR.exception(jsonObject.getString("error"));
+//                }
+//            } else {
+//                throw ExceptionResultEnum.ERROR.exception("考试同步失败");
+//            }
+        } catch (Exception e) {
+            throw ExceptionResultEnum.ERROR.exception(e.getMessage());
+        }
+        return true;
+    }
+
+    /**
+     * 签名
+     *
+     * @param time 时间戳
+     * @param url  请求URL
+     */
+    private String createSign(Long schoolId, long time, String url) {
+        BasicSchool basicSchool = commonCacheService.schoolCache(schoolId);
+        if (basicSchool == null) {
+            throw ExceptionResultEnum.ERROR.exception("学校不存在");
+        }
+        if (!basicSchool.getEnable()) {
+            throw ExceptionResultEnum.ERROR.exception("学校已禁用");
+        }
+        return SignatureEntityTest.build(SignatureType.SECRET, POST_METHOD, url, time, basicSchool.getAccessKey(), basicSchool.getAccessSecret());
+    }
+
+    /**
+     * 校验参数值并返回
+     *
+     * @param value        参数值
+     * @param defaultValue 默认值
+     * @param require      是否必填(true:是,false:否)
+     * @param name         参数名称
+     */
+    private Object validParam(Object value, Object defaultValue, boolean require, String name) {
+        if (require && (Objects.isNull(value) || StringUtils.isBlank(value.toString())) && (Objects.isNull(defaultValue) || StringUtils.isBlank(defaultValue.toString()))) {
+            throw ExceptionResultEnum.ERROR.exception((StringUtils.isBlank(name) ? "" : name) + "值必填");
+        }
+        return Objects.isNull(value) || StringUtils.isBlank(value.toString()) ? defaultValue : value;
+    }
+
+    /**
+     * 校验url是否配置
+     *
+     * @param urls URL数组
+     */
+    private void validUrl(String... urls) {
+        if (StringUtils.isAnyBlank(urls)) {
+            throw ExceptionResultEnum.ERROR.exception("教研分析同步接口未正确配置");
+        }
+    }
+}

+ 1 - 1
teachcloud-common/src/main/java/com/qmth/teachcloud/common/util/Zip4jUtil.java

@@ -24,7 +24,7 @@ import java.util.Optional;
  * @Date: 2022/8/12
  * @Date: 2022/8/12
  */
  */
 public class Zip4jUtil {
 public class Zip4jUtil {
-    private final static Logger log = LoggerFactory.getLogger(HttpKit.class);
+    private final static Logger log = LoggerFactory.getLogger(Zip4jUtil.class);
 
 
     /**
     /**
      * 压缩zip
      * 压缩zip