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

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

wangliang 2 жил өмнө
parent
commit
ac23fcb9f8

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

@@ -53,4 +53,6 @@ public interface ExamCardService extends IService<ExamCard> {
      * @return 复制后的题卡id
      * @return 复制后的题卡id
      */
      */
     Long copyCard(Long id, String courseCode);
     Long copyCard(Long id, String courseCode);
+
+    void convertImage(Long id);
 }
 }

+ 19 - 0
distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/ExamCardServiceImpl.java

@@ -2,6 +2,7 @@ package com.qmth.distributed.print.business.service.impl;
 
 
 import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSON;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+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.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
@@ -530,6 +531,24 @@ public class ExamCardServiceImpl extends ServiceImpl<ExamCardMapper, ExamCard> i
         return copyExamCardId;
         return copyExamCardId;
     }
     }
 
 
+    @Override
+    public void convertImage(Long id) {
+        ExamCard examCard = this.getById(id);
+        ExamCardDetail examCardDetail = examCardDetailService.getByCardId(id);
+        if(examCardDetail == null){
+            throw ExceptionResultEnum.ERROR.exception("题卡不存在");
+        }
+
+        List<ConvertJpgStorage> convertJpgStorageList = htmlToJpgUtil.convertHtmlToJpgByCard(examCard.getTitle(), examCardDetail.getHtmlContent(), PageSizeEnum.A3);
+        if (convertJpgStorageList.size() > 0) {
+            String jpgAttachmentIds = JSON.toJSONString(convertJpgStorageList);
+            UpdateWrapper<ExamCardDetail> updateWrapper = new UpdateWrapper<>();
+            updateWrapper.lambda().set(ExamCardDetail::getJpgAttachmentInfo, jpgAttachmentIds)
+                    .eq(ExamCardDetail::getId, examCardDetail.getId());
+            examCardDetailService.update(updateWrapper);
+        }
+    }
+
     /**
     /**
      * 生成新的title
      * 生成新的title
      *
      *

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

@@ -56,7 +56,7 @@ public class HtmlToJpgUtil {
      * @param htmlContent  html内容
      * @param htmlContent  html内容
      * @param pageSizeEnum 转化pdf的纸张类型
      * @param pageSizeEnum 转化pdf的纸张类型
      */
      */
-    public List<BasicAttachment> convertHtmlToJpg(String cardTitle, String htmlContent, PageSizeEnum pageSizeEnum) throws Exception {
+    public List<BasicAttachment> convertHtmlToJpg(String cardTitle, String htmlContent, PageSizeEnum pageSizeEnum) {
         boolean oss = dictionaryConfig.sysDomain().isOss();
         boolean oss = dictionaryConfig.sysDomain().isOss();
         StringJoiner stringJoiner = new StringJoiner("");
         StringJoiner stringJoiner = new StringJoiner("");
         if (!oss && Objects.nonNull(dictionaryConfig.fssPublicDomain()) && !StringUtils.isBlank(dictionaryConfig.fssPublicDomain().getConfig()) && !dictionaryConfig.fssPublicDomain().getConfig().startsWith(SystemConstant.START_PARENT)) {
         if (!oss && Objects.nonNull(dictionaryConfig.fssPublicDomain()) && !StringUtils.isBlank(dictionaryConfig.fssPublicDomain().getConfig()) && !dictionaryConfig.fssPublicDomain().getConfig().startsWith(SystemConstant.START_PARENT)) {
@@ -108,7 +108,7 @@ public class HtmlToJpgUtil {
      * @param htmlContent  题卡内容
      * @param htmlContent  题卡内容
      * @param pageSizeEnum 转化pdf的纸张类型
      * @param pageSizeEnum 转化pdf的纸张类型
      */
      */
-    public List<ConvertJpgStorage> convertHtmlToJpgByCard(String cardTitle, String htmlContent, PageSizeEnum pageSizeEnum) throws Exception {
+    public List<ConvertJpgStorage> convertHtmlToJpgByCard(String cardTitle, String htmlContent, PageSizeEnum pageSizeEnum) {
         List<ConvertJpgStorage> convertJpgStorageList = new ArrayList<>();
         List<ConvertJpgStorage> convertJpgStorageList = new ArrayList<>();
         try {
         try {
             String regex = "\\$\\{\\w+}";
             String regex = "\\$\\{\\w+}";

+ 2 - 0
distributed-print-business/src/main/resources/db/3.2.3更新脚本-增量.sql

@@ -0,0 +1,2 @@
+INSERT INTO `sys_privilege` (`id`, `name`, `url`, `type`, `parent_id`, `sequence`, `property`, `related`, `enable`, `default_auth`, `front_display`) VALUES ('828', '生成图片', 'ConvertImage', 'LINK', '624', '7', 'AUTH', '829', '1', '0', '1');
+INSERT INTO `sys_privilege` (`id`, `name`, `url`, `type`, `parent_id`, `sequence`, `property`, `enable`, `default_auth`, `front_display`) VALUES ('829', '生成图片', '/api/admin/exam/card/convert_image', 'URL', '624', '6', 'AUTH', '1', '1', '1');

+ 30 - 15
distributed-print/src/main/java/com/qmth/distributed/print/api/ExamCardController.java

@@ -53,20 +53,21 @@ public class ExamCardController {
 
 
     /**
     /**
      * 题卡管理(通卡管理)
      * 题卡管理(通卡管理)
-     * @param type 题卡类型(通卡或专卡)
-     * @param title 题卡名称模糊查询
-     * @param createMethod 题卡创建方式(上传、自定义)
-     * @param enable 1正常/0禁用
+     *
+     * @param type            题卡类型(通卡或专卡)
+     * @param title           题卡名称模糊查询
+     * @param createMethod    题卡创建方式(上传、自定义)
+     * @param enable          1正常/0禁用
      * @param createStartTime 创建时间(开始)
      * @param createStartTime 创建时间(开始)
-     * @param createEndTime 创建时间(结束)
-     * @param pageNumber 分页参数
-     * @param pageSize 分页参数
+     * @param createEndTime   创建时间(结束)
+     * @param pageNumber      分页参数
+     * @param pageSize        分页参数
      * @return Result
      * @return Result
      */
      */
     @ApiOperation(value = "分页查询")
     @ApiOperation(value = "分页查询")
     @RequestMapping(value = "/page", method = RequestMethod.POST)
     @RequestMapping(value = "/page", method = RequestMethod.POST)
     @OperationLogDetail(customizedOperationType = CustomizedOperationTypeEnum.SEARCH)
     @OperationLogDetail(customizedOperationType = CustomizedOperationTypeEnum.SEARCH)
-    public Result page(@RequestParam(value = "type", defaultValue = "GENERIC") String type,
+    public Result page(@RequestParam(value = "type", required = false) String type,
                        @RequestParam(value = "title", required = false) String title,
                        @RequestParam(value = "title", required = false) String title,
                        @RequestParam(value = "createMethod", required = false) String createMethod,
                        @RequestParam(value = "createMethod", required = false) String createMethod,
                        @RequestParam(value = "enable", required = false) Boolean enable,
                        @RequestParam(value = "enable", required = false) Boolean enable,
@@ -80,6 +81,7 @@ public class ExamCardController {
 
 
     /**
     /**
      * 题卡管理(通卡管理)-新增/修改
      * 题卡管理(通卡管理)-新增/修改
+     *
      * @param params 保存传值参数
      * @param params 保存传值参数
      * @return Result
      * @return Result
      */
      */
@@ -88,11 +90,12 @@ public class ExamCardController {
     @OperationLogDetail(customizedOperationType = CustomizedOperationTypeEnum.EDIT)
     @OperationLogDetail(customizedOperationType = CustomizedOperationTypeEnum.EDIT)
     public Result save(@RequestBody GenericExamCardParams params) throws Exception {
     public Result save(@RequestBody GenericExamCardParams params) throws Exception {
         Long id = examCardService.saveGeneric(params);
         Long id = examCardService.saveGeneric(params);
-        return ResultUtil.ok(String.valueOf(id),"");
+        return ResultUtil.ok(String.valueOf(id), "");
     }
     }
 
 
     /**
     /**
      * 题卡管理(通卡管理)-删除
      * 题卡管理(通卡管理)-删除
+     *
      * @param id 题卡ID
      * @param id 题卡ID
      * @return Result
      * @return Result
      */
      */
@@ -106,10 +109,9 @@ public class ExamCardController {
     //====================================通卡接口↑(end)===================================
     //====================================通卡接口↑(end)===================================
 
 
     /**
     /**
-     * 新建
+     * 新建专卡
      *
      *
      * @param examCardParams
      * @param examCardParams
-     * @return
      */
      */
     @ApiOperation(value = "新建")
     @ApiOperation(value = "新建")
     @RequestMapping(value = "/save", method = RequestMethod.POST)
     @RequestMapping(value = "/save", method = RequestMethod.POST)
@@ -177,14 +179,15 @@ public class ExamCardController {
 
 
     /**
     /**
      * 选择已有题卡列表
      * 选择已有题卡列表
-     * @param examId 考试id
+     *
+     * @param examId     考试id
      * @param courseCode 课程编号
      * @param courseCode 课程编号
      * @return 结果
      * @return 结果
      */
      */
     @ApiOperation(value = "选择已有题卡列表")
     @ApiOperation(value = "选择已有题卡列表")
     @RequestMapping(value = "/select_card_list", method = RequestMethod.POST)
     @RequestMapping(value = "/select_card_list", method = RequestMethod.POST)
-    public Result selectCardList(@RequestParam String examId,@RequestParam String courseCode, @RequestParam(required = false) String paperNumber) {
-        BasicPrintConfig basicPrintConfig = basicPrintConfigService.getByExamIdAndCourseCode(SystemConstant.convertIdToLong(examId),courseCode);
+    public Result selectCardList(@RequestParam String examId, @RequestParam String courseCode, @RequestParam(required = false) String paperNumber) {
+        BasicPrintConfig basicPrintConfig = basicPrintConfigService.getByExamIdAndCourseCode(SystemConstant.convertIdToLong(examId), courseCode);
         List<ExamCard> list = examCardService.listSelectCard(courseCode, basicPrintConfig.getCardRuleId(), paperNumber);
         List<ExamCard> list = examCardService.listSelectCard(courseCode, basicPrintConfig.getCardRuleId(), paperNumber);
         return ResultUtil.ok(list);
         return ResultUtil.ok(list);
     }
     }
@@ -210,7 +213,19 @@ public class ExamCardController {
     @RequestMapping(value = "/copy", method = RequestMethod.POST)
     @RequestMapping(value = "/copy", method = RequestMethod.POST)
     public Result copyCard(@RequestParam(value = "id") String id,
     public Result copyCard(@RequestParam(value = "id") String id,
                            @RequestParam(value = "courseCode") String courseCode) {
                            @RequestParam(value = "courseCode") String courseCode) {
-        Long copyCardId = examCardService.copyCard(SystemConstant.convertIdToLong(id),courseCode);
+        Long copyCardId = examCardService.copyCard(SystemConstant.convertIdToLong(id), courseCode);
         return ResultUtil.ok(String.valueOf(copyCardId), "");
         return ResultUtil.ok(String.valueOf(copyCardId), "");
     }
     }
+
+    /**
+     * 题卡转图片
+     *
+     * @param id 题卡id
+     */
+    @ApiOperation(value = "题卡转图片")
+    @RequestMapping(value = "/convert_image", method = RequestMethod.POST)
+    public Result convertImage(@RequestParam(value = "id") String id) {
+        examCardService.convertImage(SystemConstant.convertIdToLong(id));
+        return ResultUtil.ok(true, "");
+    }
 }
 }

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

@@ -79,6 +79,7 @@ public class SystemConstant {
     /**
     /**
      * 云阅卷api
      * 云阅卷api
      */
      */
+    public static final String CLOUD_MARK_SCHOOL_SAVE_API = "/api/school/save";
     public static final String CLOUD_MARK_EXAM_SAVE_API = "/api/exam/save";
     public static final String CLOUD_MARK_EXAM_SAVE_API = "/api/exam/save";
     public static final String CLOUD_MARK_EXAM_LIST_API = "/api/exams";
     public static final String CLOUD_MARK_EXAM_LIST_API = "/api/exams";
     public static final String CLOUD_MARK_EXAM_STUDENT_SAVE_API = "/api/exam/student/save";
     public static final String CLOUD_MARK_EXAM_STUDENT_SAVE_API = "/api/exam/student/save";

+ 29 - 0
teachcloud-common/src/main/java/com/qmth/teachcloud/common/sync/CloudMarkingTaskUtils.java

@@ -60,6 +60,35 @@ public class CloudMarkingTaskUtils {
     @Resource
     @Resource
     private DictionaryConfig dictionaryConfig;
     private DictionaryConfig dictionaryConfig;
 
 
+    /**
+     * 考试创建/更新接口
+     *
+     * @param code     唯一标识
+     * @param name     考试名称
+     * @param examTime 考试时间
+     * @return 考试ID
+     */
+    public Long syncSchool(Long schoolId, String code, String name, String examTime) {
+        SysConfig sysConfig = commonCacheService.addSysConfigCache(schoolId, SystemConstant.CLOUDMARK_HOST_URL);
+        Optional.ofNullable(sysConfig).orElseThrow(() -> ExceptionResultEnum.ERROR.exception("未配置云阅卷地址"));
+        String hostUrl = sysConfig.getConfigValue();
+        String examSaveUrl = SystemConstant.CLOUD_MARK_SCHOOL_SAVE_API;
+        validUrl(hostUrl, examSaveUrl);
+        String postUrl = hostUrl.concat(examSaveUrl);
+        //参数
+        Map<String, Object> map = new HashMap<>();
+        map.put("code", validParam(code, null, true, "唯一标识"));
+        map.put("name", validParam(name, null, true, "显示名称"));
+
+        String result = HttpKit.sendPost(postUrl, getHeaders(schoolId, examSaveUrl), map, null, null, null);
+        JSONObject jsonObject = JSONObject.parseObject(result);
+        if (jsonObject.containsKey("id")) {
+            return Long.valueOf(jsonObject.get("id").toString());
+        } else {
+            throw ExceptionResultEnum.ERROR.exception("学校(机构)同步失败");
+        }
+    }
+
     /**
     /**
      * 考试创建/更新接口
      * 考试创建/更新接口
      *
      *