wangliang 1 gadu atpakaļ
vecāks
revīzija
9bcf5d30d5

+ 8 - 2
distributed-print/install/mysql/upgrade/3.3.4.sql

@@ -354,9 +354,15 @@ ALTER TABLE t_r_basic_info CHANGE course_suggest course_suggest MEDIUMTEXT NULL
 ALTER TABLE t_r_basic_info ADD course_en_name varchar(100) NULL COMMENT '课程英文名称';
 ALTER TABLE t_r_basic_info CHANGE course_en_name course_en_name varchar(100) NULL COMMENT '课程英文名称' AFTER course_name;
 
+INSERT INTO sys_privilege
+(id, name, url, `type`, parent_id, `sequence`, property, related, enable, default_auth, front_display)
+VALUES(2101, '重新计算', 'Calculate', 'LINK', 2070, 5, 'AUTH', '2102', 1, 0, 1);
 INSERT INTO sys_privilege
 (id, name, url, `type`, parent_id, `sequence`, property, related, enable, default_auth, front_display)
 VALUES(2102, '毕业要求达成情况重新计算', '/api/admin/obe/requirements/again/calculate', 'URL', 2070, 4, 'AUTH', NULL, 1, 1, 1);
-INSERT INTO  sys_privilege
+INSERT INTO sys_privilege
+(id, name, url, `type`, parent_id, `sequence`, property, related, enable, default_auth, front_display)
+VALUES(2103, '重新计算', 'Calculate', 'BUTTON', 2080, 4, 'AUTH', '2104', 1, 0, 1);
+INSERT INTO sys_privilege
 (id, name, url, `type`, parent_id, `sequence`, property, related, enable, default_auth, front_display)
-VALUES(2101, '重新计算', 'Calculate', 'LINK', 2070, 5, 'AUTH', '2076,2077', 1, 0, 1);
+VALUES(2104, '学生毕业要求达成度重新计算', '/api/admin/obe/student_requirement/again/calculate', 'URL', 2080, 3, 'AUTH', NULL, 1, 1, 1);

+ 28 - 11
distributed-print/src/main/java/com/qmth/distributed/print/api/ObeReportController.java

@@ -9,8 +9,6 @@ import com.qmth.distributed.print.business.bean.dto.report.ObeCourseRequirementD
 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.ObeCourseRequirementReport;
-import com.qmth.distributed.print.business.service.ObeCourseOutlineService;
-import com.qmth.distributed.print.business.service.ObeCourseRequirementMatrixService;
 import com.qmth.distributed.print.business.service.ObeCourseRequirementReportService;
 import com.qmth.distributed.print.business.service.TRExamStudentService;
 import com.qmth.teachcloud.common.contant.SystemConstant;
@@ -52,19 +50,13 @@ public class ObeReportController {
     @Resource
     TRExamStudentService trExamStudentService;
 
-    @Resource
-    ObeCourseRequirementMatrixService obeCourseRequirementMatrixService;
-
-    @Resource
-    ObeCourseOutlineService obeCourseOutlineService;
-
     @Resource
     RedisUtil redisUtil;
 
-    @ApiOperation(value = "毕业要求达成度报表列表")
+    @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) {
+    public Result requirementsAgainCalculate(@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) {
@@ -156,10 +148,35 @@ public class ObeReportController {
         return ResultUtil.ok(obeCourseRequirementDtoList);
     }
 
+    @ApiOperation(value = "毕业要求达成度学生重新计算")
+    @RequestMapping(value = "/student_requirement/again/calculate", method = RequestMethod.POST)
+    @ApiResponses({@ApiResponse(code = 200, message = "毕业要求达成度学生报表", response = ScoreResult.class)})
+    public Result requirementsStudentAgainCalculate(@ApiParam(value = "培养方案ID") @RequestParam(required = false) Long cultureProgramId) {
+        String lockKey = SystemConstant.REDIS_OBE_RADAR_STUDENT_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 = "/student_requirement/page", method = RequestMethod.POST)
     @ApiResponses({@ApiResponse(code = 200, message = "毕业要求达成度学生报表", response = ScoreResult.class)})
-    public Result requirementsStudentPage(@ApiParam(value = "培养方案ID") @RequestParam(required = false) Long cultureProgramId,
+    public Result requirementsStudentPage(@ApiParam(value = "培养方案ID", required = true) @RequestParam Long cultureProgramId,
                                           @ApiParam(value = "学号/姓名") @RequestParam(required = false) String studentCodeOrName,
                                           @RequestParam @Min(SystemConstant.PAGE_NUMBER_MIN) Integer pageNumber,
                                           @RequestParam @Min(SystemConstant.PAGE_SIZE_MIN) @Max(SystemConstant.PAGE_SIZE_MAX) Integer pageSize) {

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

@@ -538,6 +538,7 @@ public class SystemConstant {
     public static final String REDIS_OBE_RADAR_DATA_PREFIX = "redis:lock:obe:radar:data";//obe雷达报表锁
     public static final String REDIS_OBE_RADAR_DETAIL_DATA_PREFIX = "redis:lock:obe:radar:detail:data";//obe雷达详情报表锁
     public static final String REDIS_OBE_RADAR_AGAIN_DATA_PREFIX = "redis:lock:obe:radar:again:data";//obe雷达报表重新算锁
+    public static final String REDIS_OBE_RADAR_STUDENT_DATA_PREFIX = "redis:lock:obe:student:again:data";//obe学生重新算锁
 
     public static final String REDIS_LOCK_IMPORT_EXAM_DATA = "redis:lock:import:exam:data:";//导入考务数据锁
     public static final long REDIS_LOCK_IMPORT_EXAM_DATA_TIME_OUT = 60L * 10;