|
@@ -1,24 +1,35 @@
|
|
package com.qmth.distributed.print.api;
|
|
package com.qmth.distributed.print.api;
|
|
|
|
|
|
|
|
|
|
|
|
+import com.alibaba.fastjson.JSONObject;
|
|
|
|
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
|
import com.qmth.boot.api.annotation.Aac;
|
|
import com.qmth.boot.api.annotation.Aac;
|
|
import com.qmth.boot.api.annotation.BOOL;
|
|
import com.qmth.boot.api.annotation.BOOL;
|
|
import com.qmth.boot.api.constant.ApiConstant;
|
|
import com.qmth.boot.api.constant.ApiConstant;
|
|
|
|
+import com.qmth.distributed.print.business.bean.result.EditResult;
|
|
import com.qmth.distributed.print.business.bean.result.TSyncExamStudentScoreResult;
|
|
import com.qmth.distributed.print.business.bean.result.TSyncExamStudentScoreResult;
|
|
import com.qmth.distributed.print.business.entity.TBSyncTask;
|
|
import com.qmth.distributed.print.business.entity.TBSyncTask;
|
|
|
|
+import com.qmth.distributed.print.business.entity.TSyncExamStudentScore;
|
|
import com.qmth.distributed.print.business.service.PrintCommonService;
|
|
import com.qmth.distributed.print.business.service.PrintCommonService;
|
|
import com.qmth.distributed.print.business.service.TSyncExamStudentScoreService;
|
|
import com.qmth.distributed.print.business.service.TSyncExamStudentScoreService;
|
|
|
|
+import com.qmth.distributed.print.business.templete.execute.AsyncScoreBatchDownloadService;
|
|
import com.qmth.distributed.print.business.templete.execute.AsyncScoreExportService;
|
|
import com.qmth.distributed.print.business.templete.execute.AsyncScoreExportService;
|
|
import com.qmth.distributed.print.business.templete.execute.AsyncScorePushService;
|
|
import com.qmth.distributed.print.business.templete.execute.AsyncScorePushService;
|
|
import com.qmth.teachcloud.common.config.DictionaryConfig;
|
|
import com.qmth.teachcloud.common.config.DictionaryConfig;
|
|
import com.qmth.teachcloud.common.contant.SystemConstant;
|
|
import com.qmth.teachcloud.common.contant.SystemConstant;
|
|
import com.qmth.teachcloud.common.entity.TBTask;
|
|
import com.qmth.teachcloud.common.entity.TBTask;
|
|
|
|
+import com.qmth.teachcloud.common.enums.ExceptionResultEnum;
|
|
import com.qmth.teachcloud.common.enums.PushTypeEnum;
|
|
import com.qmth.teachcloud.common.enums.PushTypeEnum;
|
|
import com.qmth.teachcloud.common.enums.TaskTypeEnum;
|
|
import com.qmth.teachcloud.common.enums.TaskTypeEnum;
|
|
|
|
+import com.qmth.teachcloud.common.enums.UploadFileEnum;
|
|
|
|
+import com.qmth.teachcloud.common.service.TeachcloudCommonService;
|
|
|
|
+import com.qmth.teachcloud.common.util.FileStoreUtil;
|
|
|
|
+import com.qmth.teachcloud.common.util.ImageTrajectoryUtil;
|
|
import com.qmth.teachcloud.common.util.Result;
|
|
import com.qmth.teachcloud.common.util.Result;
|
|
import com.qmth.teachcloud.common.util.ResultUtil;
|
|
import com.qmth.teachcloud.common.util.ResultUtil;
|
|
import io.swagger.annotations.*;
|
|
import io.swagger.annotations.*;
|
|
|
|
+import org.apache.commons.codec.digest.DigestUtils;
|
|
import org.springframework.validation.annotation.Validated;
|
|
import org.springframework.validation.annotation.Validated;
|
|
import org.springframework.web.bind.annotation.RequestMapping;
|
|
import org.springframework.web.bind.annotation.RequestMapping;
|
|
import org.springframework.web.bind.annotation.RequestMethod;
|
|
import org.springframework.web.bind.annotation.RequestMethod;
|
|
@@ -28,8 +39,13 @@ import org.springframework.web.bind.annotation.RestController;
|
|
import javax.annotation.Resource;
|
|
import javax.annotation.Resource;
|
|
import javax.validation.constraints.Max;
|
|
import javax.validation.constraints.Max;
|
|
import javax.validation.constraints.Min;
|
|
import javax.validation.constraints.Min;
|
|
|
|
+import java.io.File;
|
|
|
|
+import java.io.FileInputStream;
|
|
|
|
+import java.time.LocalDateTime;
|
|
import java.util.Map;
|
|
import java.util.Map;
|
|
import java.util.Objects;
|
|
import java.util.Objects;
|
|
|
|
+import java.util.Optional;
|
|
|
|
+import java.util.StringJoiner;
|
|
|
|
|
|
/**
|
|
/**
|
|
* <p>
|
|
* <p>
|
|
@@ -61,6 +77,15 @@ public class TSyncExamStudentScoreController {
|
|
@Resource
|
|
@Resource
|
|
AsyncScorePushService asyncScorePushService;
|
|
AsyncScorePushService asyncScorePushService;
|
|
|
|
|
|
|
|
+ @Resource
|
|
|
|
+ AsyncScoreBatchDownloadService asyncScoreBatchDownloadService;
|
|
|
|
+
|
|
|
|
+ @Resource
|
|
|
|
+ TeachcloudCommonService teachcloudCommonService;
|
|
|
|
+
|
|
|
|
+ @Resource
|
|
|
|
+ FileStoreUtil fileStoreUtil;
|
|
|
|
+
|
|
@ApiOperation(value = "成绩归档查询列表")
|
|
@ApiOperation(value = "成绩归档查询列表")
|
|
@ApiResponses({@ApiResponse(code = 200, message = "成绩查询信息", response = TSyncExamStudentScoreResult.class)})
|
|
@ApiResponses({@ApiResponse(code = 200, message = "成绩查询信息", response = TSyncExamStudentScoreResult.class)})
|
|
@RequestMapping(value = "/score/list", method = RequestMethod.POST)
|
|
@RequestMapping(value = "/score/list", method = RequestMethod.POST)
|
|
@@ -115,8 +140,48 @@ public class TSyncExamStudentScoreController {
|
|
@ApiOperation(value = "成绩动态轨迹图下载")
|
|
@ApiOperation(value = "成绩动态轨迹图下载")
|
|
@ApiResponses({@ApiResponse(code = 200, message = "常规信息", response = Result.class)})
|
|
@ApiResponses({@ApiResponse(code = 200, message = "常规信息", response = Result.class)})
|
|
@RequestMapping(value = "/score/download", method = RequestMethod.POST)
|
|
@RequestMapping(value = "/score/download", method = RequestMethod.POST)
|
|
- public Result download(@ApiParam(value = "考试id", required = true) @RequestParam String examStudentId) {
|
|
|
|
- return ResultUtil.ok(true);
|
|
|
|
|
|
+ public Result download(@ApiParam(value = "考试id", required = true) @RequestParam String examStudentId) throws Exception {
|
|
|
|
+ QueryWrapper<TSyncExamStudentScore> tSyncExamStudentScoreQueryWrapper = new QueryWrapper<>();
|
|
|
|
+ tSyncExamStudentScoreQueryWrapper.lambda().eq(TSyncExamStudentScore::getExamStudentId, SystemConstant.convertIdToLong(examStudentId));
|
|
|
|
+ TSyncExamStudentScore tSyncExamStudentScore = tSyncExamStudentScoreService.getOne(tSyncExamStudentScoreQueryWrapper);
|
|
|
|
+ Optional.ofNullable(tSyncExamStudentScore).orElseThrow(() -> ExceptionResultEnum.ERROR.exception("考生不存在"));
|
|
|
|
+
|
|
|
|
+ JSONObject jsonObject = null;
|
|
|
|
+ String path = null;
|
|
|
|
+ if (Objects.isNull(tSyncExamStudentScore.getTrajectoryUrls())) {
|
|
|
|
+ String format = tSyncExamStudentScore.getSheetUrls().substring(tSyncExamStudentScore.getSheetUrls().lastIndexOf("."), tSyncExamStudentScore.getSheetUrls().length());
|
|
|
|
+ boolean oss = dictionaryConfig.sysDomain().isOss();
|
|
|
|
+ LocalDateTime nowTime = LocalDateTime.now();
|
|
|
|
+ StringJoiner stringJoiner = new StringJoiner("");
|
|
|
|
+ stringJoiner.add(SystemConstant.TEMP_FILES_DIR).add(File.separator);
|
|
|
|
+ StringJoiner dirJpgName = new StringJoiner("");
|
|
|
|
+ dirJpgName.add(UploadFileEnum.FILE.getTitle()).add(File.separator)
|
|
|
|
+ .add(String.valueOf(nowTime.getYear())).add(File.separator)
|
|
|
|
+ .add(String.format("%02d", nowTime.getMonthValue())).add(File.separator)
|
|
|
|
+ .add(String.format("%02d", nowTime.getDayOfMonth()))
|
|
|
|
+ .add(File.separator).add(SystemConstant.getUuid()).add(format);
|
|
|
|
+ File fileTarget = new File(stringJoiner.toString() + dirJpgName.toString());
|
|
|
|
+ if (!fileTarget.exists()) {
|
|
|
|
+ fileTarget.getParentFile().mkdirs();
|
|
|
|
+ fileTarget.createNewFile();
|
|
|
|
+ }
|
|
|
|
+ File sheetFile = new File(tSyncExamStudentScore.getSheetUrls());
|
|
|
|
+ ImageTrajectoryUtil.createImage(sheetFile, fileTarget, 10, 10);
|
|
|
|
+ if (oss) {
|
|
|
|
+ fileStoreUtil.ossUpload(dirJpgName.toString(), fileTarget, DigestUtils.md5Hex(new FileInputStream(fileTarget)), UploadFileEnum.FILE.getFssType());
|
|
|
|
+ jsonObject.put(SystemConstant.TYPE, SystemConstant.OSS);
|
|
|
|
+ jsonObject.put(SystemConstant.PATH, dirJpgName.toString());
|
|
|
|
+ path = teachcloudCommonService.filePreview(dirJpgName.toString());
|
|
|
|
+ } else {
|
|
|
|
+ jsonObject.put(SystemConstant.TYPE, SystemConstant.LOCAL);
|
|
|
|
+ jsonObject.put(SystemConstant.PATH, stringJoiner.toString() + dirJpgName.toString());
|
|
|
|
+ path = stringJoiner.toString() + dirJpgName.toString();
|
|
|
|
+ }
|
|
|
|
+ } else {
|
|
|
|
+ jsonObject = JSONObject.parseObject(tSyncExamStudentScore.getTrajectoryUrls());
|
|
|
|
+ path = teachcloudCommonService.filePreview((String) jsonObject.get(SystemConstant.PATH));
|
|
|
|
+ }
|
|
|
|
+ return ResultUtil.ok(new EditResult(path));
|
|
}
|
|
}
|
|
|
|
|
|
@ApiOperation(value = "成绩动态轨迹图一键下载")
|
|
@ApiOperation(value = "成绩动态轨迹图一键下载")
|
|
@@ -134,7 +199,7 @@ public class TSyncExamStudentScoreController {
|
|
map.computeIfAbsent("clazzId", v -> SystemConstant.convertIdToLong(clazzId));
|
|
map.computeIfAbsent("clazzId", v -> SystemConstant.convertIdToLong(clazzId));
|
|
map.computeIfAbsent("courseCode", v -> courseCode);
|
|
map.computeIfAbsent("courseCode", v -> courseCode);
|
|
map.computeIfAbsent(SystemConstant.OSS, v -> dictionaryConfig.sysDomain().isOss());
|
|
map.computeIfAbsent(SystemConstant.OSS, v -> dictionaryConfig.sysDomain().isOss());
|
|
-// asyncScoreExportService.exportTask(map);
|
|
|
|
|
|
+ asyncScoreBatchDownloadService.exportTask(map);
|
|
TBTask tbTask = Objects.nonNull(map.get(SystemConstant.TASK)) ? (TBTask) map.get(SystemConstant.TASK) : null;
|
|
TBTask tbTask = Objects.nonNull(map.get(SystemConstant.TASK)) ? (TBTask) map.get(SystemConstant.TASK) : null;
|
|
return Objects.nonNull(tbTask) ? ResultUtil.ok(tbTask.getId()) : ResultUtil.error("创建任务失败");
|
|
return Objects.nonNull(tbTask) ? ResultUtil.ok(tbTask.getId()) : ResultUtil.error("创建任务失败");
|
|
}
|
|
}
|