|
@@ -1,20 +1,23 @@
|
|
package com.qmth.teachcloud.report.api;
|
|
package com.qmth.teachcloud.report.api;
|
|
|
|
|
|
|
|
+import com.alibaba.fastjson.JSONObject;
|
|
|
|
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
|
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.teachcloud.common.SignatureEntityTest;
|
|
import com.qmth.teachcloud.common.bean.params.BasicSemesterParams;
|
|
import com.qmth.teachcloud.common.bean.params.BasicSemesterParams;
|
|
|
|
+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.BasicCourse;
|
|
import com.qmth.teachcloud.common.entity.BasicSchool;
|
|
import com.qmth.teachcloud.common.entity.BasicSchool;
|
|
import com.qmth.teachcloud.common.enums.ExceptionResultEnum;
|
|
import com.qmth.teachcloud.common.enums.ExceptionResultEnum;
|
|
import com.qmth.teachcloud.common.service.BasicCourseService;
|
|
import com.qmth.teachcloud.common.service.BasicCourseService;
|
|
import com.qmth.teachcloud.common.service.BasicSemesterService;
|
|
import com.qmth.teachcloud.common.service.BasicSemesterService;
|
|
-import com.qmth.teachcloud.common.util.AuthThirdUtil;
|
|
|
|
-import com.qmth.teachcloud.common.util.JacksonUtil;
|
|
|
|
-import com.qmth.teachcloud.common.util.Result;
|
|
|
|
-import com.qmth.teachcloud.common.util.ResultUtil;
|
|
|
|
|
|
+import com.qmth.teachcloud.common.util.*;
|
|
import com.qmth.teachcloud.report.business.bean.params.CourseParam;
|
|
import com.qmth.teachcloud.report.business.bean.params.CourseParam;
|
|
import com.qmth.teachcloud.report.business.bean.params.TBExamParam;
|
|
import com.qmth.teachcloud.report.business.bean.params.TBExamParam;
|
|
|
|
+import com.qmth.teachcloud.report.business.entity.TBExamCourse;
|
|
import com.qmth.teachcloud.report.business.service.TBExamCourseService;
|
|
import com.qmth.teachcloud.report.business.service.TBExamCourseService;
|
|
import com.qmth.teachcloud.report.business.service.TBExamService;
|
|
import com.qmth.teachcloud.report.business.service.TBExamService;
|
|
import io.swagger.annotations.*;
|
|
import io.swagger.annotations.*;
|
|
@@ -30,6 +33,9 @@ import org.springframework.web.bind.annotation.RestController;
|
|
import javax.annotation.Resource;
|
|
import javax.annotation.Resource;
|
|
import java.io.IOException;
|
|
import java.io.IOException;
|
|
import java.net.URLDecoder;
|
|
import java.net.URLDecoder;
|
|
|
|
+import java.net.URLEncoder;
|
|
|
|
+import java.text.MessageFormat;
|
|
|
|
+import java.util.Objects;
|
|
import java.util.Optional;
|
|
import java.util.Optional;
|
|
|
|
|
|
/**
|
|
/**
|
|
@@ -59,6 +65,9 @@ public class OpenApiController {
|
|
@Resource
|
|
@Resource
|
|
TBExamCourseService tbExamCourseService;
|
|
TBExamCourseService tbExamCourseService;
|
|
|
|
|
|
|
|
+ @Resource
|
|
|
|
+ DictionaryConfig dictionaryConfig;
|
|
|
|
+
|
|
@ApiOperation(value = "学期创建/更新接口")
|
|
@ApiOperation(value = "学期创建/更新接口")
|
|
@ApiResponses({@ApiResponse(code = 200, message = "学期创建/更新接口", response = Object.class)})
|
|
@ApiResponses({@ApiResponse(code = 200, message = "学期创建/更新接口", response = Object.class)})
|
|
@RequestMapping(value = "/semester_edit", method = RequestMethod.POST)
|
|
@RequestMapping(value = "/semester_edit", method = RequestMethod.POST)
|
|
@@ -107,6 +116,66 @@ public class OpenApiController {
|
|
return ResultUtil.ok(true);
|
|
return ResultUtil.ok(true);
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+ @ApiOperation(value = "分析课程(试卷)删除接口")
|
|
|
|
+ @ApiResponses({@ApiResponse(code = 200, message = "分析课程(试卷)删除接口", response = Object.class)})
|
|
|
|
+ @RequestMapping(value = "/course_del", method = RequestMethod.POST)
|
|
|
|
+ @Aac(auth = BOOL.FALSE)
|
|
|
|
+ @Transactional
|
|
|
|
+ public Result courseDel(@ApiParam(value = "接收分析课程(试卷)数据信息", required = true) @RequestBody String result) throws IOException, InterruptedException {
|
|
|
|
+ Optional.ofNullable(result).orElseThrow(() -> ExceptionResultEnum.PARAMS_ERROR.exception("数据为空"));
|
|
|
|
+ String decodeJson = URLDecoder.decode(result, SystemConstant.CHARSET_NAME);
|
|
|
|
+ log.info("courseDel进来了进来了,result:{}", decodeJson);
|
|
|
|
+ CourseParam courseParam = JacksonUtil.readJson(decodeJson, CourseParam.class);
|
|
|
|
+ courseParam.validParamsExamIdAndCourseCode();
|
|
|
|
+ BasicSchool basicSchool = AuthThirdUtil.hasPermission();
|
|
|
|
+ QueryWrapper<BasicCourse> basicCourseQueryWrapper = new QueryWrapper<>();
|
|
|
|
+ basicCourseQueryWrapper.lambda().eq(BasicCourse::getSchoolId, basicSchool.getId())
|
|
|
|
+ .eq(BasicCourse::getCode, courseParam.getCourseCode());
|
|
|
|
+ basicCourseService.remove(basicCourseQueryWrapper);
|
|
|
|
+
|
|
|
|
+ QueryWrapper<TBExamCourse> tbExamCourseQueryWrapper = new QueryWrapper<>();
|
|
|
|
+ tbExamCourseQueryWrapper.lambda().eq(TBExamCourse::getSchoolId, basicSchool.getId())
|
|
|
|
+ .eq(TBExamCourse::getCourseCode, courseParam.getCourseCode())
|
|
|
|
+ .eq(TBExamCourse::getExamId, courseParam.getExamId());
|
|
|
|
+ tbExamCourseService.remove(tbExamCourseQueryWrapper);
|
|
|
|
+ return ResultUtil.ok(true);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ @ApiOperation(value = "生成课程(试卷)分析报告接口")
|
|
|
|
+ @ApiResponses({@ApiResponse(code = 200, message = "生成课程(试卷)分析报告接口", response = Object.class)})
|
|
|
|
+ @RequestMapping(value = "/calculate", method = RequestMethod.POST)
|
|
|
|
+ @Aac(auth = BOOL.FALSE)
|
|
|
|
+ public Result calculate(@ApiParam(value = "接收分析课程(试卷)数据信息", required = true) @RequestBody String result) throws IOException, InterruptedException {
|
|
|
|
+ Optional.ofNullable(result).orElseThrow(() -> ExceptionResultEnum.PARAMS_ERROR.exception("数据为空"));
|
|
|
|
+ String decodeJson = URLDecoder.decode(result, SystemConstant.CHARSET_NAME);
|
|
|
|
+ log.info("calculate进来了进来了,result:{}", decodeJson);
|
|
|
|
+ CourseParam courseParam = JacksonUtil.readJson(decodeJson, CourseParam.class);
|
|
|
|
+ courseParam.validParamsExamIdAndCourseCode();
|
|
|
|
+ AuthThirdUtil.hasPermission();
|
|
|
|
+
|
|
|
|
+ String callbackPwd = dictionaryConfig.printOpenDomain().getCallbackPwd();
|
|
|
|
+ Optional.ofNullable(callbackPwd).orElseThrow(() -> ExceptionResultEnum.ERROR.exception("配置文件回调密码为空"));
|
|
|
|
+
|
|
|
|
+ try {
|
|
|
|
+ Long time = System.currentTimeMillis();
|
|
|
|
+ JSONObject dataObjectJson = new JSONObject();
|
|
|
|
+ dataObjectJson.put("examId", courseParam.getExamId());
|
|
|
|
+ dataObjectJson.put("courseCode", courseParam.getCourseCode());
|
|
|
|
+ dataObjectJson.put("progress", 0d);
|
|
|
|
+ dataObjectJson.put("status", "RUNNING");
|
|
|
|
+ dataObjectJson.put("time", time);
|
|
|
|
+ String pattern = "{0}{1}{2}";
|
|
|
|
+ String sign = URLEncoder.encode(MessageFormat.format(pattern, callbackPwd, SignatureEntityTest.FIELD_JOINER, SignatureEntityTest.encrypt(dataObjectJson.toJSONString())), SystemConstant.CHARSET_NAME);
|
|
|
|
+ String callbackResult = HttpUtil.postJson(dictionaryConfig.printOpenDomain().getHostUrl() + dictionaryConfig.printOpenDomain().getCallbackUrlApi(), dataObjectJson.toJSONString(), sign, time);
|
|
|
|
+ if (Objects.nonNull(callbackResult)) {
|
|
|
|
+ log.info("callbackResult:{}", JacksonUtil.parseJson(callbackResult));
|
|
|
|
+ }
|
|
|
|
+ } catch (Exception e) {
|
|
|
|
+ log.error(SystemConstant.LOG_ERROR, e);
|
|
|
|
+ }
|
|
|
|
+ return ResultUtil.ok(true);
|
|
|
|
+ }
|
|
|
|
+
|
|
// @ApiOperation(value = "接收基础考务数据")
|
|
// @ApiOperation(value = "接收基础考务数据")
|
|
// @ApiResponses({@ApiResponse(code = 200, message = "推送基础考务数据", response = Object.class)})
|
|
// @ApiResponses({@ApiResponse(code = 200, message = "推送基础考务数据", response = Object.class)})
|
|
// @RequestMapping(value = "/basic/examination/data", method = RequestMethod.POST)
|
|
// @RequestMapping(value = "/basic/examination/data", method = RequestMethod.POST)
|