|
@@ -1,16 +1,13 @@
|
|
|
package com.qmth.distributed.print.api;
|
|
|
|
|
|
import com.alibaba.fastjson.JSONArray;
|
|
|
+import com.alibaba.fastjson.JSONObject;
|
|
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
|
|
import com.qmth.boot.api.constant.ApiConstant;
|
|
|
import com.qmth.boot.api.exception.ApiException;
|
|
|
-import com.qmth.distributed.print.business.bean.dto.obe.CourseRequirementMatrixDto;
|
|
|
import com.qmth.distributed.print.business.bean.dto.report.ObeCourseRequirementDto;
|
|
|
-import com.qmth.distributed.print.business.bean.dto.report.ObeRequirementDto;
|
|
|
-import com.qmth.distributed.print.business.bean.dto.report.ObeSubRequirementsDto;
|
|
|
import com.qmth.distributed.print.business.bean.result.ObeCourseRequirementListResult;
|
|
|
import com.qmth.distributed.print.business.bean.result.ScoreResult;
|
|
|
-import com.qmth.distributed.print.business.entity.ObeCourseOutline;
|
|
|
import com.qmth.distributed.print.business.entity.ObeCourseRequirementReport;
|
|
|
import com.qmth.distributed.print.business.service.ObeCourseOutlineService;
|
|
|
import com.qmth.distributed.print.business.service.ObeCourseRequirementMatrixService;
|
|
@@ -18,15 +15,12 @@ import com.qmth.distributed.print.business.service.ObeCourseRequirementReportSer
|
|
|
import com.qmth.distributed.print.business.service.TRExamStudentService;
|
|
|
import com.qmth.teachcloud.common.contant.SystemConstant;
|
|
|
import com.qmth.teachcloud.common.enums.ExceptionResultEnum;
|
|
|
-import com.qmth.teachcloud.common.util.JacksonUtil;
|
|
|
import com.qmth.teachcloud.common.util.RedisUtil;
|
|
|
import com.qmth.teachcloud.common.util.Result;
|
|
|
import com.qmth.teachcloud.common.util.ResultUtil;
|
|
|
import io.swagger.annotations.*;
|
|
|
import org.slf4j.Logger;
|
|
|
import org.slf4j.LoggerFactory;
|
|
|
-import org.springframework.transaction.annotation.Transactional;
|
|
|
-import org.springframework.util.CollectionUtils;
|
|
|
import org.springframework.web.bind.annotation.RequestMapping;
|
|
|
import org.springframework.web.bind.annotation.RequestMethod;
|
|
|
import org.springframework.web.bind.annotation.RequestParam;
|
|
@@ -35,8 +29,8 @@ import org.springframework.web.bind.annotation.RestController;
|
|
|
import javax.annotation.Resource;
|
|
|
import javax.validation.constraints.Max;
|
|
|
import javax.validation.constraints.Min;
|
|
|
-import java.math.BigDecimal;
|
|
|
-import java.util.*;
|
|
|
+import java.util.List;
|
|
|
+import java.util.Objects;
|
|
|
|
|
|
/**
|
|
|
* <p>
|
|
@@ -67,6 +61,32 @@ public class ObeReportController {
|
|
|
@Resource
|
|
|
RedisUtil redisUtil;
|
|
|
|
|
|
+ @ApiOperation(value = "毕业要求达成度报表列表")
|
|
|
+ @RequestMapping(value = "/requirements/again/calculate", method = RequestMethod.POST)
|
|
|
+ @ApiResponses({@ApiResponse(code = 200, message = "分页查询", response = ObeCourseRequirementListResult.class)})
|
|
|
+ public Result againCalculate(@ApiParam(value = "培养方案ID", required = true) @RequestParam Long cultureProgramId) {
|
|
|
+ String lockKey = SystemConstant.REDIS_OBE_RADAR_AGAIN_DATA_PREFIX + cultureProgramId;
|
|
|
+ boolean lock = redisUtil.lock(lockKey, SystemConstant.REDIS_LOCK_OBE_RADAR_DATA_TIME_OUT);
|
|
|
+ if (!lock) {
|
|
|
+ throw ExceptionResultEnum.ERROR.exception("正在重新计算数据,请稍候再试!");
|
|
|
+ }
|
|
|
+ ObeCourseRequirementDto obeCourseRequirementResultDto = null;
|
|
|
+ try {
|
|
|
+ obeCourseRequirementResultDto = obeCourseRequirementReportService.calculate(cultureProgramId);
|
|
|
+ } catch (Exception e) {
|
|
|
+ log.error(SystemConstant.LOG_ERROR, e);
|
|
|
+ if (e instanceof ApiException) {
|
|
|
+ ResultUtil.error((ApiException) e, ((ApiException) e).getCode(), e.getMessage());
|
|
|
+ } else {
|
|
|
+ ResultUtil.error(e.getMessage());
|
|
|
+ }
|
|
|
+ } finally {
|
|
|
+ redisUtil.releaseLock(lockKey);
|
|
|
+ }
|
|
|
+ return ResultUtil.ok(obeCourseRequirementResultDto);
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
@ApiOperation(value = "毕业要求达成度报表列表")
|
|
|
@RequestMapping(value = "/requirements/list", method = RequestMethod.POST)
|
|
|
@ApiResponses({@ApiResponse(code = 200, message = "分页查询", response = ObeCourseRequirementListResult.class)})
|
|
@@ -80,7 +100,6 @@ public class ObeReportController {
|
|
|
@ApiOperation(value = "毕业要求达成度雷达报表")
|
|
|
@RequestMapping(value = "/requirements/radar/report", method = RequestMethod.POST)
|
|
|
@ApiResponses({@ApiResponse(code = 200, message = "毕业要求达成度雷达报表", response = ScoreResult.class)})
|
|
|
- @Transactional
|
|
|
public Result requirementsRadarReport(@ApiParam(value = "培养方案ID", required = true) @RequestParam Long cultureProgramId) {
|
|
|
String lockKey = SystemConstant.REDIS_OBE_RADAR_DATA_PREFIX + cultureProgramId;
|
|
|
boolean lock = redisUtil.lock(lockKey, SystemConstant.REDIS_LOCK_OBE_RADAR_DATA_TIME_OUT);
|
|
@@ -89,42 +108,11 @@ public class ObeReportController {
|
|
|
}
|
|
|
ObeCourseRequirementDto obeCourseRequirementResultDto = null;
|
|
|
try {
|
|
|
- List<CourseRequirementMatrixDto> courseRequirementMatrixDtoList = obeCourseRequirementMatrixService.getMatrix(cultureProgramId);
|
|
|
- if (!CollectionUtils.isEmpty(courseRequirementMatrixDtoList)) {
|
|
|
- log.info("courseRequirementMatrixDto:{}", JacksonUtil.parseJson(courseRequirementMatrixDtoList));
|
|
|
- List<ObeCourseOutline> obeCourseOutlineList = obeCourseOutlineService.findByCultureProgramId(cultureProgramId);
|
|
|
- if (!CollectionUtils.isEmpty(obeCourseOutlineList)) {
|
|
|
- List<ObeCourseRequirementDto> obeCourseRequirementDtoList = new ArrayList<>();
|
|
|
- Map<Long, List<ObeSubRequirementsDto>> obeSubRequirementsDtoMap = new LinkedHashMap<>();
|
|
|
- for (ObeCourseOutline obeCourseOutline : obeCourseOutlineList) {
|
|
|
- obeCourseRequirementReportService.matrixCourseReportInfo(courseRequirementMatrixDtoList, obeCourseOutline.getId(),
|
|
|
- null, obeCourseRequirementDtoList, obeSubRequirementsDtoMap);
|
|
|
- }
|
|
|
- obeCourseRequirementResultDto = obeCourseRequirementReportService.matrixCourseReport(obeCourseRequirementDtoList, obeSubRequirementsDtoMap);
|
|
|
-
|
|
|
- ObeCourseRequirementDto finalObeCourseRequirementResultDto = obeCourseRequirementResultDto;
|
|
|
- obeSubRequirementsDtoMap.forEach((k, v) -> {
|
|
|
- List<ObeRequirementDto> obeRequirementDtoList = finalObeCourseRequirementResultDto.getObeRequirements();
|
|
|
- for (ObeRequirementDto obeRequirementDto : obeRequirementDtoList) {
|
|
|
- List<ObeSubRequirementsDto> obeSubRequirementsDtoList = obeRequirementDto.getObeSubRequirements();
|
|
|
- for (ObeSubRequirementsDto obeSubRequirementsDto : obeSubRequirementsDtoList) {
|
|
|
- if (obeSubRequirementsDto.getSubRequirementId().longValue() == k.longValue()) {
|
|
|
- Double degree = v.stream().mapToDouble(x -> x.getMatrixDegree().doubleValue()).sum();
|
|
|
- obeSubRequirementsDto.setMatrixDegree(new BigDecimal(degree).setScale(2, BigDecimal.ROUND_HALF_UP));
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- });
|
|
|
- ObeCourseRequirementReport obeCourseRequirementReport = new ObeCourseRequirementReport(
|
|
|
- cultureProgramId, Objects.nonNull(obeCourseRequirementResultDto) ? JacksonUtil.parseJson(obeCourseRequirementResultDto) : null,
|
|
|
- !CollectionUtils.isEmpty(obeCourseRequirementDtoList) ? JacksonUtil.parseJson(obeCourseRequirementDtoList) : null, Objects.nonNull(obeCourseRequirementResultDto) && Objects.nonNull(obeCourseRequirementResultDto.getMatrixDegree()) ? obeCourseRequirementResultDto.getMatrixDegree().doubleValue() : null);
|
|
|
- obeCourseRequirementReportService.removeReport(cultureProgramId);
|
|
|
- if (Objects.nonNull(obeCourseRequirementReport.getRequirementRadar()) &&
|
|
|
- Objects.nonNull(obeCourseRequirementReport.getRequirementDetail())
|
|
|
- && Objects.nonNull(obeCourseRequirementReport.getRequirementDegree())) {
|
|
|
- obeCourseRequirementReportService.save(obeCourseRequirementReport);
|
|
|
- }
|
|
|
- }
|
|
|
+ ObeCourseRequirementReport obeCourseRequirementReport = obeCourseRequirementReportService.findByCultureProgramId(cultureProgramId);
|
|
|
+ if (Objects.nonNull(obeCourseRequirementReport) && Objects.nonNull(obeCourseRequirementReport.getRequirementRadar())) {
|
|
|
+ obeCourseRequirementResultDto = JSONObject.parseObject(obeCourseRequirementReport.getRequirementRadar(), ObeCourseRequirementDto.class);
|
|
|
+ } else {
|
|
|
+ obeCourseRequirementResultDto = obeCourseRequirementReportService.calculate(cultureProgramId);
|
|
|
}
|
|
|
} catch (Exception e) {
|
|
|
log.error(SystemConstant.LOG_ERROR, e);
|
|
@@ -146,26 +134,15 @@ public class ObeReportController {
|
|
|
String lockKey = SystemConstant.REDIS_OBE_RADAR_DETAIL_DATA_PREFIX + cultureProgramId;
|
|
|
boolean lock = redisUtil.lock(lockKey, SystemConstant.REDIS_LOCK_OBE_RADAR_DATA_TIME_OUT);
|
|
|
if (!lock) {
|
|
|
- throw ExceptionResultEnum.ERROR.exception("正在计算数据,请稍候再试!");
|
|
|
+ throw ExceptionResultEnum.ERROR.exception("正在计算详情数据,请稍候再试!");
|
|
|
}
|
|
|
- List<ObeCourseRequirementDto> obeCourseRequirementDtoList = new ArrayList<>();
|
|
|
+ List<ObeCourseRequirementDto> obeCourseRequirementDtoList = null;
|
|
|
try {
|
|
|
ObeCourseRequirementReport obeCourseRequirementReport = obeCourseRequirementReportService.findByCultureProgramId(cultureProgramId);
|
|
|
if (Objects.nonNull(obeCourseRequirementReport) && Objects.nonNull(obeCourseRequirementReport.getRequirementDetail())) {
|
|
|
obeCourseRequirementDtoList = JSONArray.parseArray(obeCourseRequirementReport.getRequirementDetail(), ObeCourseRequirementDto.class);
|
|
|
} else {
|
|
|
- List<CourseRequirementMatrixDto> courseRequirementMatrixDtoList = obeCourseRequirementMatrixService.getMatrix(cultureProgramId);
|
|
|
- if (!CollectionUtils.isEmpty(courseRequirementMatrixDtoList)) {
|
|
|
- log.info("courseRequirementMatrixDto:{}", JacksonUtil.parseJson(courseRequirementMatrixDtoList));
|
|
|
- List<ObeCourseOutline> obeCourseOutlineList = obeCourseOutlineService.findByCultureProgramId(cultureProgramId);
|
|
|
- if (!CollectionUtils.isEmpty(obeCourseOutlineList)) {
|
|
|
- Map<Long, List<ObeSubRequirementsDto>> obeSubRequirementsDtoMap = new LinkedHashMap<>();
|
|
|
- for (ObeCourseOutline obeCourseOutline : obeCourseOutlineList) {
|
|
|
- obeCourseRequirementReportService.matrixCourseReportInfo(courseRequirementMatrixDtoList, obeCourseOutline.getId(),
|
|
|
- null, obeCourseRequirementDtoList, obeSubRequirementsDtoMap);
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
+ obeCourseRequirementDtoList = obeCourseRequirementReportService.calculateDetail(cultureProgramId);
|
|
|
}
|
|
|
} catch (Exception e) {
|
|
|
log.error(SystemConstant.LOG_ERROR, e);
|