ソースを参照

add. 命题任务管理批量删除

caozixuan 10 ヶ月 前
コミット
d4676c13e3

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

@@ -169,7 +169,7 @@ public interface ExamTaskService extends IService<ExamTask> {
 
     List<ExamTaskStudentObjectResult> findExamTaskStudentObject(Long examId, Long courseId, String teacher, String teachClassName, String className, String paperNumber) throws Exception;
 
-    void delete(Long id);
+    void delete(List<Long> idList);
 
     void applyDelete(Long id);
 

+ 34 - 9
distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/ExamTaskServiceImpl.java

@@ -1535,7 +1535,7 @@ public class ExamTaskServiceImpl extends ServiceImpl<ExamTaskMapper, ExamTask> i
     }
 
     @Override
-    public void delete(Long id) {
+    public void delete(List<Long> idList) {
         SysUser sysUser = (SysUser) ServletUtil.getRequestUser();
         List<SysRole> sysRoleList = sysUserRoleService.listRoleByUserId(sysUser.getId());
         boolean isSchoolAdmin = false;
@@ -1545,16 +1545,41 @@ public class ExamTaskServiceImpl extends ServiceImpl<ExamTaskMapper, ExamTask> i
                 break;
             }
         }
-        if (isSchoolAdmin) {
-            // 学校管理员,可以删除
-            this.applyDelete(id);
-        } else {
-            // 命题任务生成,命题老师未提交前允许删除
+        List<String> errorMsg = new ArrayList<>();
+        for (Long id : idList) {
             ExamTask examTask = this.getById(id);
-            if (examTask != null && examTask.getStatus().equals(ExamStatusEnum.SUBMIT)) {
-                throw ExceptionResultEnum.ERROR.exception("命题老师已提交,不能删除");
+            if (Objects.isNull(examTask)) {
+                throw ExceptionResultEnum.ERROR.exception("系统异常: 未找到命题任务");
+            }
+            String paperNumber = examTask.getPaperNumber();
+            String prefix = String.format("试卷编号为[%s]的命题任务删除失败, ", paperNumber);
+            if (isSchoolAdmin) {
+                // 学校管理员,可以删除
+                QueryWrapper<TFFlowApprove> queryWrapper = new QueryWrapper<>();
+                queryWrapper.lambda().eq(TFFlowApprove::getFlowId, examTask.getFlowId());
+                TFFlowApprove tfFlowApprove = tfFlowApproveService.getOne(queryWrapper);
+                //审核状态
+                if (tfFlowApprove != null && !tfFlowApprove.getStatus().equals(FlowStatusEnum.START) && !tfFlowApprove.getStatus().equals(FlowStatusEnum.REJECT) && !tfFlowApprove.getStatus()
+                        .equals(FlowStatusEnum.CANCEL)) {
+                    errorMsg.add(prefix + tfFlowApprove.getStatus().getTitle() + "状态无法删除");
+                    continue;
+                }
+                // 删除命题任务及试卷信息
+                this.removeByExamTaskId(id);
+                // 删除考场信息
+                examDetailService.deleteByExamIdAndPaperNumber(examTask.getSchoolId(), examTask.getExamId(), examTask.getPaperNumber());
+            } else {
+                // 命题任务生成,命题老师未提交前允许删除
+                if (examTask.getStatus().equals(ExamStatusEnum.SUBMIT)) {
+                    errorMsg.add(prefix + "命题老师已提交,不能删除");
+                    continue;
+                }
+                this.removeByExamTaskId(id);
             }
-            this.removeByExamTaskId(id);
+        }
+        if (CollectionUtils.isNotEmpty(errorMsg)) {
+            // 报错
+            throw ExceptionResultEnum.ERROR.exception(String.join(";\n", errorMsg));
         }
     }
 

+ 3 - 3
distributed-print/src/main/java/com/qmth/distributed/print/api/ExamTaskController.java

@@ -130,9 +130,9 @@ public class ExamTaskController {
      */
     @ApiOperation(value = "命题任务管理-删除")
     @RequestMapping(value = "/delete", method = RequestMethod.POST)
-    @OperationLogDetail(operationType = OperationTypeEnum.DELETE, detail = "删除命题任务操作,命题任务ID:{{id}}")
-    public Result delete(@RequestParam Long id) {
-        examTaskService.delete(id);
+    @OperationLogDetail(operationType = OperationTypeEnum.DELETE, detail = "删除命题任务操作,命题任务ID:{{idList}}")
+    public Result delete(@RequestParam List<Long> idList) {
+        examTaskService.delete(idList);
         return ResultUtil.ok(true);
     }