浏览代码

3.4.3 update-bug-1219

xiaofei 6 月之前
父节点
当前提交
50b81a7ac4

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

@@ -93,6 +93,7 @@ public interface BasicExamStudentService extends IService<BasicExamStudent> {
 
     void clearPaperNumberAndPaperTypeById(List<Long> ids);
 
+    void clearPaperTypeByExamIdAndPaperNumber(Long examId, String paperNumber);
     void clearPaperNumberAndPaperTypeByExamIdAndPaperNumber(Long examId, String paperNumber);
 
     boolean saveBasicExamStudentFormSync(Long schoolId, Long examId, List<TSyncDataStudent> examStudentDataVo);

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

@@ -570,7 +570,7 @@ public class BasicExamStudentServiceImpl extends ServiceImpl<BasicExamStudentMap
     }
 
     @Override
-    public void clearPaperNumberAndPaperTypeByExamIdAndPaperNumber(Long examId, String paperNumber) {
+    public void clearPaperTypeByExamIdAndPaperNumber(Long examId, String paperNumber) {
         UpdateWrapper<BasicExamStudent> updateWrapper = new UpdateWrapper<>();
         updateWrapper.lambda().set(BasicExamStudent::getPaperType, null)
                 .eq(BasicExamStudent::getExamId, examId)
@@ -578,6 +578,16 @@ public class BasicExamStudentServiceImpl extends ServiceImpl<BasicExamStudentMap
         this.update(updateWrapper);
     }
 
+    @Override
+    public void clearPaperNumberAndPaperTypeByExamIdAndPaperNumber(Long examId, String paperNumber) {
+        UpdateWrapper<BasicExamStudent> updateWrapper = new UpdateWrapper<>();
+        updateWrapper.lambda().set(BasicExamStudent::getPaperNumber, null)
+                .set(BasicExamStudent::getPaperType, null)
+                .eq(BasicExamStudent::getExamId, examId)
+                .eq(BasicExamStudent::getPaperNumber, paperNumber);
+        this.update(updateWrapper);
+    }
+
     @Override
     public boolean saveBasicExamStudentFormSync(Long schoolId, Long examId, List<TSyncDataStudent> examStudentDataVoList) {
         BasicExam basicExam = basicExamService.getById(examId);

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

@@ -289,7 +289,6 @@ public class ExamCardServiceImpl extends ServiceImpl<ExamCardMapper, ExamCard> i
                 examCard.setEnable(true); // 默认值
                 examCard.setCreateId(sysUser.getId());
                 examCard.setCreateTime(System.currentTimeMillis());
-                this.save(examCard);
             }
             // 修改
             else {
@@ -306,7 +305,7 @@ public class ExamCardServiceImpl extends ServiceImpl<ExamCardMapper, ExamCard> i
             // 上传题卡,状态为提交
             examCard.setStatus(CardCreateMethodEnum.UPLOAD.equals(params.getCreateMethod()) ? ExamCardStatusEnum.SUBMIT : params.getStatus());
             examCard.setRemark(params.getRemark());
-            examCard.setPageSize(CardCreateMethodEnum.UPLOAD.equals(params.getCreateMethod()) ? PageSizeEnum.A3.name() : examCard.getPageSize());
+            examCard.setPageSize(CardCreateMethodEnum.UPLOAD.equals(params.getCreateMethod()) ? PageSizeEnum.A3.name() : params.getPageSize());
 
             // 方式为上传
 
@@ -335,7 +334,7 @@ public class ExamCardServiceImpl extends ServiceImpl<ExamCardMapper, ExamCard> i
                     }
                     String content = SystemConstant.readContent(params.getContentFile().getInputStream());
 
-                    if (ExamCardStatusEnum.SUBMIT.name().equals(params.getStatus())) {
+                    if (ExamCardStatusEnum.SUBMIT.equals(params.getStatus())) {
                         examCard.setContent(content);
                         examCard.setStageContent(null);
 
@@ -356,7 +355,7 @@ public class ExamCardServiceImpl extends ServiceImpl<ExamCardMapper, ExamCard> i
                 throw ExceptionResultEnum.ERROR.exception("不存在的题卡创建方式");
             }
 
-            if (ExamCardStatusEnum.SUBMIT.name().equals(params.getStatus())) {
+            if (ExamCardStatusEnum.SUBMIT.equals(params.getStatus())) {
                 // 生成题卡图片
                 createJpgImage(examCard);
             }

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

@@ -791,7 +791,7 @@ public class ExamDetailServiceImpl extends ServiceImpl<ExamDetailMapper, ExamDet
                         // 清空考生管理中卷型
                         basicExamStudentService.clearPaperNumberAndPaperTypeById(examStudents.stream().filter(m -> m.getBasicStudentId() != null).map(ExamStudent::getBasicStudentId).collect(Collectors.toList()));
                     } else {
-                        basicExamStudentService.clearPaperNumberAndPaperTypeByExamIdAndPaperNumber(examDetail.getExamId(), examDetailCourse.getPaperNumber());
+                        basicExamStudentService.clearPaperTypeByExamIdAndPaperNumber(examDetail.getExamId(), examDetailCourse.getPaperNumber());
                     }
 
                 }

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

@@ -1817,6 +1817,8 @@ public class ExamTaskServiceImpl extends ServiceImpl<ExamTaskMapper, ExamTask> i
         examTaskPaperDataService.deleteByExamIdAndPaperNumber(examTask.getExamId(), examTask.getPaperNumber());
         // 删除考场信息
         examDetailService.deleteByExamIdAndPaperNumber(examTask.getSchoolId(), examTask.getExamId(), examTask.getPaperNumber());
+        // 清空已生成试卷编号的考生的试卷编号
+        basicExamStudentService.clearPaperNumberAndPaperTypeByExamIdAndPaperNumber(examTask.getExamId(), examTask.getPaperNumber());
     }
 
     @Override

+ 5 - 1
distributed-print/install/mysql/init/teachcloud_db.sql

@@ -3831,7 +3831,11 @@ INSERT INTO `sys_privilege` (`id`, `name`, `url`, `type`, `parent_id`, `sequence
 INSERT INTO `sys_privilege` (`id`, `name`, `url`, `type`, `parent_id`, `sequence`, `property`, `related`, `enable`, `default_auth`, `front_display`) VALUES (3072, '查询学号字母映射关系', '/api/scan/config/student_number_letter_relation', 'URL', 970, 40, 'AUTH', NULL, 1, 1, 1);
 INSERT INTO `sys_privilege` (`id`, `name`, `url`, `type`, `parent_id`, `sequence`, `property`, `related`, `enable`, `default_auth`, `front_display`) VALUES (3073, '卷型检查任务-状态数量', '/api/scan/student/paper_type_check/status/count', 'URL', 970, 41, 'AUTH', NULL, 1, 1, 1);
 INSERT INTO `sys_privilege` (`id`, `name`, `url`, `type`, `parent_id`, `sequence`, `property`, `related`, `enable`, `default_auth`, `front_display`) VALUES (3074, '卷型检查任务-任务确认', '/api/scan/student/paper_type_check/confirm', 'URL', 970, 42, 'AUTH', NULL, 1, 1, 1);
-INSERT INTO `sys_privilege` (`id`, `name`, `url`, `type`, `parent_id`, `sequence`, `property`, `related`, `enable`, `default_auth`, `front_display`) VALUES (3075, '修改违纪状态', '/api/scan/student/breach/update', 'URL', '970', '43', 'AUTH', NULL, '1', '1', '1');
+INSERT INTO `sys_privilege` (`id`, `name`, `url`, `type`, `parent_id`, `sequence`, `property`, `related`, `enable`, `default_auth`, `front_display`) VALUES (3075, '修改违纪状态', '/api/scan/student/breach/update', 'URL', '970', '43', 'AUTH', NULL, NULL,'1', '1', '1');
+INSERT INTO `sys_privilege` (`id`, `name`, `url`, `type`, `parent_id`, `sequence`, `property`, `related`, `enable`, `default_auth`, `front_display`) VALUES (3076, '数据同步参数查询', '/api/admin/set/data/sync/select', 'URL', '508', 19, 'AUTH', NULL,'1', '0', '1');
+INSERT INTO `sys_privilege` (`id`, `name`, `url`, `type`, `parent_id`, `sequence`, `property`, `related`, `enable`, `default_auth`, `front_display`) VALUES (3077, '数据同步参数保存', '/api/admin/set/data/sync/save', 'URL', '508', 20, 'AUTH', NULL,'1', '0', '1');
+INSERT INTO `sys_privilege` (`id`, `name`, `url`, `type`, `parent_id`, `sequence`, `property`, `related`, `enable`, `default_auth`, `front_display`) VALUES (3078, '机器人参数查询', '/api/admin/set/ai/robot/select', 'URL', '508', 21, 'AUTH',NULL, '1', '0', '1');
+INSERT INTO `sys_privilege` (`id`, `name`, `url`, `type`, `parent_id`, `sequence`, `property`, `related`, `enable`, `default_auth`, `front_display`) VALUES (3079, '机器人参数保存', '/api/admin/set/ai/robot/save', 'URL', '508', 22, 'AUTH', NULL,'1', '0', '1');
 
 -- ----------------------------
 -- Table structure for sys_role

+ 5 - 0
distributed-print/install/mysql/upgrade/3.4.3.sql

@@ -73,3 +73,8 @@ INSERT INTO `sys_config` (`id`, `config_key`, `config_name`, `config_value`, `en
 
 ALTER TABLE `basic_message`
     CHANGE COLUMN `send_result` `send_result` VARCHAR(2000) CHARACTER SET 'utf8mb4' NULL DEFAULT NULL COMMENT '消息发送结果' ;
+
+INSERT INTO `sys_privilege` (`id`, `name`, `url`, `type`, `parent_id`, `sequence`, `property`, `enable`, `default_auth`, `front_display`) VALUES ('3076', '数据同步参数查询', '/api/admin/set/data/sync/select', 'URL', '508', '19', 'AUTH', '1', '0', '1');
+INSERT INTO `sys_privilege` (`id`, `name`, `url`, `type`, `parent_id`, `sequence`, `property`, `enable`, `default_auth`, `front_display`) VALUES ('3077', '数据同步参数保存', '/api/admin/set/data/sync/save', 'URL', '508', '20', 'AUTH', '1', '0', '1');
+INSERT INTO `sys_privilege` (`id`, `name`, `url`, `type`, `parent_id`, `sequence`, `property`, `enable`, `default_auth`, `front_display`) VALUES ('3078', '机器人参数查询', '/api/admin/set/ai/robot/select', 'URL', '508', '21', 'AUTH', '1', '0', '1');
+INSERT INTO `sys_privilege` (`id`, `name`, `url`, `type`, `parent_id`, `sequence`, `property`, `enable`, `default_auth`, `front_display`) VALUES ('3079', '机器人参数保存', '/api/admin/set/ai/robot/save', 'URL', '508', '22', 'AUTH', '1', '0', '1');

+ 40 - 0
distributed-print/src/main/java/com/qmth/distributed/print/api/SysAdminSetController.java

@@ -628,4 +628,44 @@ public class SysAdminSetController {
         }
         return ResultUtil.ok(true);
     }
+
+    @ApiOperation(value = "机器人参数查询")
+    @ApiResponses({@ApiResponse(code = 200, message = "机器人信息", response = CustomPrivilegeResult.class)})
+    @RequestMapping(value = "/ai/robot/select", method = RequestMethod.POST)
+    public Result aiRobotSelect(@ApiParam(value = "schoolId") @Param(value = "schoolId") Long schoolId) {
+        SysAdminSetResult sysAdminSetResult = new SysAdminSetResult();
+        List<SysConfigResult> list = new ArrayList<>();
+        // 是否开启机器人
+        SysConfig aiRobotSwitch = commonCacheService.addSysConfigCache(schoolId, SystemConstant.AI_ROBOT_ENABLE);
+        list.add(aiRobotSwitch != null ? new SysConfigResult(aiRobotSwitch) : new SysConfigResult(null, SystemConstant.AI_ROBOT_ENABLE, "是否开启机器人", "", 1));
+        // 机器人链接
+        SysConfig aiRobotUrl = commonCacheService.addSysConfigCache(schoolId, SystemConstant.AI_ROBOT_URL);
+        list.add(aiRobotUrl != null ? new SysConfigResult(aiRobotUrl) : new SysConfigResult(null, SystemConstant.AI_ROBOT_URL, "机器人链接", "", 2));
+        sysAdminSetResult.setResult(list);
+        return ResultUtil.ok(sysAdminSetResult);
+    }
+
+    @ApiOperation(value = "机器人参数保存")
+    @ApiResponses({@ApiResponse(code = 200, message = "机器人信息", response = ResultUtil.class)})
+    @RequestMapping(value = "/ai/robot/save", method = RequestMethod.POST)
+    @Transactional
+    @OperationLogDetail(operationType = OperationTypeEnum.SAVE)
+    public Result aiRobotSave(@Valid @RequestBody SysAdminSetParam sysAdminSetParam, BindingResult bindingResult) {
+        if (bindingResult.hasErrors()) {
+            return ResultUtil.error(bindingResult.getAllErrors().get(0).getDefaultMessage());
+        }
+        Optional.ofNullable(sysAdminSetParam.getParam()).orElseThrow(() -> ExceptionResultEnum.PARAMS_ERROR.exception("机器人参数未填写"));
+
+        List<SysConfigResult> sysConfigResultList = sysAdminSetParam.getParam();
+        List<SysConfig> sysConfigList = new ArrayList<>();
+        for (SysConfigResult s : sysConfigResultList) {
+            sysConfigList.add(new SysConfig(sysAdminSetParam.getSchoolId(), s));
+        }
+        sysConfigService.saveOrUpdateBatch(sysConfigList);
+
+        for (SysConfigResult s : sysConfigResultList) {
+            commonCacheService.updateSysConfigCache(sysAdminSetParam.getSchoolId(), s.getCode());
+        }
+        return ResultUtil.ok(true);
+    }
 }

+ 8 - 8
distributed-print/src/main/java/com/qmth/distributed/print/api/SysController.java

@@ -8,7 +8,7 @@ import com.qmth.boot.api.exception.ApiException;
 import com.qmth.boot.core.rateLimit.annotation.RateLimit;
 import com.qmth.boot.core.rateLimit.entity.RateLimitTarget;
 import com.qmth.distributed.print.business.bean.params.LoginParam;
-import com.qmth.teachcloud.common.bean.result.DictionaryResult;
+import com.qmth.teachcloud.common.bean.result.*;
 import com.qmth.distributed.print.business.bean.result.EditResult;
 import com.qmth.distributed.print.business.entity.TBSyncTask;
 import com.qmth.distributed.print.business.enums.DictionaryEnum;
@@ -17,8 +17,6 @@ import com.qmth.distributed.print.business.service.*;
 import com.qmth.distributed.print.business.util.PdfUtil;
 import com.qmth.teachcloud.common.annotation.OperationLogDetail;
 import com.qmth.teachcloud.common.bean.auth.AuthBean;
-import com.qmth.teachcloud.common.bean.result.LoginResult;
-import com.qmth.teachcloud.common.bean.result.UserLoginCheckResult;
 import com.qmth.teachcloud.common.config.DictionaryConfig;
 import com.qmth.teachcloud.common.contant.SystemConstant;
 import com.qmth.teachcloud.common.entity.*;
@@ -102,9 +100,6 @@ public class SysController {
     @Resource
     BasicTeachClazzService basicTeachClazzService;
 
-    @Resource
-    BasicExamStudentService basicExamStudentService;
-
     /**
      * 登录
      *
@@ -234,6 +229,11 @@ public class SysController {
         SysUser sysUser = userList.get(0);
         LoginResult loginResult = teachcloudCommonService.login(login.getPassword(), sysUser, AppSourceEnum.SYSTEM);
         loginResult.setUiSetting(sysUser.getUiSetting());
+
+        // 机器人参数
+        SysConfig aiRobotSwitch = commonCacheService.addSysConfigCache(sysUser.getSchoolId(), SystemConstant.AI_ROBOT_ENABLE);
+        SysConfig aiRobotUrl = commonCacheService.addSysConfigCache(sysUser.getSchoolId(), SystemConstant.AI_ROBOT_URL);
+        loginResult.setAiRobotResult(new AiRobotResult(aiRobotSwitch != null && StringUtils.isNotBlank(aiRobotSwitch.getConfigValue()) ? Boolean.valueOf(aiRobotSwitch.getConfigValue()) : false, aiRobotUrl != null && StringUtils.isNotBlank(aiRobotUrl.getConfigValue()) ? aiRobotUrl.getConfigValue() : null));
         try {
             basicOperationLogService.saveOperateLogWithNoAuth(sysUser.getSchoolId(), sysUser.getId(), "用户登录", OperationTypeEnum.LOGIN, JSON.toJSONString(login));
         } catch (Exception e) {
@@ -514,12 +514,12 @@ public class SysController {
         File localTempFile = null;
         try {
             pdfOriginalFile = FileUtil.multipartFileToFile(file);
-            PageSizeEnum pageSizeEnum = PdfUtil.getPdfFormat(pdfOriginalFile);
+//            PageSizeEnum pageSizeEnum1= PdfUtil.getPdfFormat(pdfOriginalFile);
             basicOriginalAttachment = printCommonService.saveAttachment(file, ServletUtil.getRequestMd5(), type);
             if (Objects.isNull(basicOriginalAttachment)) {
                 throw ExceptionResultEnum.ATTACHMENT_ERROR.exception();
             }
-            EditResult original = new EditResult(basicOriginalAttachment.getId(), teachcloudCommonService.filePreview(basicOriginalAttachment.getPath()), basicOriginalAttachment.getPages(), pageSizeEnum);
+            EditResult original = new EditResult(basicOriginalAttachment.getId(), teachcloudCommonService.filePreview(basicOriginalAttachment.getPath()), basicOriginalAttachment.getPages(), null);
             EditResult translate = new EditResult();
             BeanUtils.copyProperties(original, translate);
             //            switch (pageSizeEnum) {

+ 33 - 0
teachcloud-common/src/main/java/com/qmth/teachcloud/common/bean/result/AiRobotResult.java

@@ -0,0 +1,33 @@
+package com.qmth.teachcloud.common.bean.result;
+
+public class AiRobotResult {
+
+    // 是否开启
+    private Boolean enable;
+    // 访问链接
+    private String url;
+
+    public AiRobotResult() {
+    }
+
+    public AiRobotResult(Boolean enable, String url) {
+        this.enable = enable;
+        this.url = enable != null && enable ? url : null;
+    }
+
+    public Boolean getEnable() {
+        return enable;
+    }
+
+    public void setEnable(Boolean enable) {
+        this.enable = enable;
+    }
+
+    public String getUrl() {
+        return url;
+    }
+
+    public void setUrl(String url) {
+        this.url = url;
+    }
+}

+ 11 - 0
teachcloud-common/src/main/java/com/qmth/teachcloud/common/bean/result/LoginResult.java

@@ -74,6 +74,9 @@ public class LoginResult implements Serializable {
     @ApiModelProperty(name = "评卷设置")
     String uiSetting;
 
+    @ApiModelProperty(name = "机器人参数")
+    private AiRobotResult aiRobotResult;
+
     public String getVersion() {
         return version;
     }
@@ -365,4 +368,12 @@ public class LoginResult implements Serializable {
             this.name = name;
         }
     }
+
+    public AiRobotResult getAiRobotResult() {
+        return aiRobotResult;
+    }
+
+    public void setAiRobotResult(AiRobotResult aiRobotResult) {
+        this.aiRobotResult = aiRobotResult;
+    }
 }

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

@@ -230,6 +230,8 @@ public class SystemConstant {
     public static final String DATA_DATASOURCE_PORT = "data.datasource.port";
     public static final String DATA_DATASOURCE_USERNAME = "data.datasource.username";
     public static final String DATA_DATASOURCE_PASSWORD = "data.datasource.password";
+    public static final String AI_ROBOT_ENABLE = "ai.robot.enable";
+    public static final String AI_ROBOT_URL = "ai.robot.rul";
 
     /**
      * 系统常量