Ver código fonte

命题任务管理

xiaof 4 anos atrás
pai
commit
fc2d699c74

+ 12 - 0
digit-print-business/src/main/java/com/qmth/digit/print/business/bean/dto/ExamTaskDto.java

@@ -1,5 +1,7 @@
 package com.qmth.digit.print.business.bean.dto;
 
+import java.util.List;
+
 /**
  * @Date: 2021/3/31.
  */
@@ -21,6 +23,8 @@ public class ExamTaskDto {
     private String createId;
     private Long createTime;
 
+    private List<BlurryUserDto> users;
+
     public String getId() {
         return id;
     }
@@ -140,4 +144,12 @@ public class ExamTaskDto {
     public void setCreateTime(Long createTime) {
         this.createTime = createTime;
     }
+
+    public List<BlurryUserDto> getUsers() {
+        return users;
+    }
+
+    public void setUsers(List<BlurryUserDto> users) {
+        this.users = users;
+    }
 }

+ 29 - 0
digit-print-business/src/main/java/com/qmth/digit/print/business/bean/dto/ExamTaskImportDto.java

@@ -0,0 +1,29 @@
+package com.qmth.digit.print.business.bean.dto;
+
+import java.util.List;
+
+/**
+ * @Date: 2021/4/1.
+ */
+public class ExamTaskImportDto {
+
+    private String batchNo;
+
+    private List<ExamTaskDto> tasks;
+
+    public String getBatchNo() {
+        return batchNo;
+    }
+
+    public void setBatchNo(String batchNo) {
+        this.batchNo = batchNo;
+    }
+
+    public List<ExamTaskDto> getTasks() {
+        return tasks;
+    }
+
+    public void setTasks(List<ExamTaskDto> tasks) {
+        this.tasks = tasks;
+    }
+}

+ 62 - 0
digit-print-business/src/main/java/com/qmth/digit/print/business/bean/dto/ReviewLogDto.java

@@ -0,0 +1,62 @@
+package com.qmth.digit.print.business.bean.dto;
+
+/**
+ * @Date: 2021/4/1.
+ */
+public class ReviewLogDto {
+
+    private String id;
+    private String reviewStatus;
+    private String reason;
+    private String operateId;
+    private String operateName;
+    private Long operateTime;
+
+    public String getId() {
+        return id;
+    }
+
+    public void setId(String id) {
+        this.id = id;
+    }
+
+    public String getReviewStatus() {
+        return reviewStatus;
+    }
+
+    public void setReviewStatus(String reviewStatus) {
+        this.reviewStatus = reviewStatus;
+    }
+
+    public String getReason() {
+        return reason;
+    }
+
+    public void setReason(String reason) {
+        this.reason = reason;
+    }
+
+    public String getOperateId() {
+        return operateId;
+    }
+
+    public void setOperateId(String operateId) {
+        this.operateId = operateId;
+    }
+
+    public String getOperateName() {
+        return operateName;
+    }
+
+    public void setOperateName(String operateName) {
+        this.operateName = operateName;
+    }
+
+    public Long getOperateTime() {
+        return operateTime;
+    }
+
+    public void setOperateTime(Long operateTime) {
+        this.operateTime = operateTime;
+    }
+}

+ 19 - 6
digit-print-business/src/main/java/com/qmth/digit/print/business/entity/ExamTask.java

@@ -3,9 +3,12 @@ package com.qmth.digit.print.business.entity;
 import com.baomidou.mybatisplus.annotation.TableField;
 import com.baomidou.mybatisplus.annotation.TableName;
 import com.qmth.digit.print.business.base.BaseEntity;
+import com.qmth.digit.print.common.enums.ExamStatusEnum;
 
 import java.io.Serializable;
 import java.util.Date;
+import java.util.List;
+import java.util.Map;
 
 /**
  * <p>
@@ -64,7 +67,7 @@ public class ExamTask extends BaseEntity implements Serializable {
     /**
      * NEW-新建任务,STAGE-暂存(命题中),SUBMIT-确认提交,CANCEL-撤回
      */
-    private String status;
+    private ExamStatusEnum status;
     /**
      * 审核状态:PASS-审核通过,NOT_PASS-审核不通过,默认为空-未审核
      */
@@ -73,10 +76,13 @@ public class ExamTask extends BaseEntity implements Serializable {
     /**
      * 0-禁用,1-启用
      */
-    private Integer enable;
+    private Boolean enable = true;
     @TableField("batch_no")
     private String batchNo;
 
+    @TableField(exist = false)
+    private List<Map<String, String>> users;
+
     public Long getSchoolId() {
         return schoolId;
     }
@@ -149,11 +155,11 @@ public class ExamTask extends BaseEntity implements Serializable {
         this.userId = userId;
     }
 
-    public String getStatus() {
+    public ExamStatusEnum getStatus() {
         return status;
     }
 
-    public void setStatus(String status) {
+    public void setStatus(ExamStatusEnum status) {
         this.status = status;
     }
 
@@ -165,11 +171,11 @@ public class ExamTask extends BaseEntity implements Serializable {
         this.reviewStatus = reviewStatus;
     }
 
-    public Integer getEnable() {
+    public Boolean getEnable() {
         return enable;
     }
 
-    public void setEnable(Integer enable) {
+    public void setEnable(Boolean enable) {
         this.enable = enable;
     }
 
@@ -181,4 +187,11 @@ public class ExamTask extends BaseEntity implements Serializable {
         this.batchNo = batchNo;
     }
 
+    public List<Map<String, String>> getUsers() {
+        return users;
+    }
+
+    public void setUsers(List<Map<String, String>> users) {
+        this.users = users;
+    }
 }

+ 4 - 0
digit-print-business/src/main/java/com/qmth/digit/print/business/mapper/ExamTaskReviewLogMapper.java

@@ -1,8 +1,11 @@
 package com.qmth.digit.print.business.mapper;
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.qmth.digit.print.business.bean.dto.ReviewLogDto;
 import com.qmth.digit.print.business.entity.ExamTaskReviewLog;
 
+import java.util.List;
+
 /**
  * <p>
  * 命题任务审核日志表 Mapper 接口
@@ -13,4 +16,5 @@ import com.qmth.digit.print.business.entity.ExamTaskReviewLog;
  */
 public interface ExamTaskReviewLogMapper extends BaseMapper<ExamTaskReviewLog> {
 
+    List<ReviewLogDto> list(Long examTaskId);
 }

+ 4 - 0
digit-print-business/src/main/java/com/qmth/digit/print/business/service/ExamTaskReviewLogService.java

@@ -1,8 +1,11 @@
 package com.qmth.digit.print.business.service;
 
 import com.baomidou.mybatisplus.extension.service.IService;
+import com.qmth.digit.print.business.bean.dto.ReviewLogDto;
 import com.qmth.digit.print.business.entity.ExamTaskReviewLog;
 
+import java.util.List;
+
 /**
  * <p>
  * 命题任务审核日志表 服务类
@@ -13,4 +16,5 @@ import com.qmth.digit.print.business.entity.ExamTaskReviewLog;
  */
 public interface ExamTaskReviewLogService extends IService<ExamTaskReviewLog> {
 
+    List<ReviewLogDto> list(ExamTaskReviewLog reviewLog);
 }

+ 13 - 0
digit-print-business/src/main/java/com/qmth/digit/print/business/service/ExamTaskService.java

@@ -2,11 +2,14 @@ package com.qmth.digit.print.business.service;
 
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.service.IService;
+import com.qmth.digit.print.business.bean.ApiUser;
 import com.qmth.digit.print.business.bean.dto.BlurryUserDto;
 import com.qmth.digit.print.business.bean.dto.ExamTaskDto;
+import com.qmth.digit.print.business.bean.dto.ExamTaskImportDto;
 import com.qmth.digit.print.business.bean.query.BlurryParam;
 import com.qmth.digit.print.business.bean.query.ExamTaskParam;
 import com.qmth.digit.print.business.entity.ExamTask;
+import org.springframework.web.multipart.MultipartFile;
 
 import java.util.List;
 
@@ -27,4 +30,14 @@ public interface ExamTaskService extends IService<ExamTask> {
     List<String> listPaperNumber(BlurryParam param);
 
     List<BlurryUserDto> listUser(BlurryParam param);
+
+    boolean assignUser(ExamTask examTask);
+
+    boolean enable(ExamTask examTask);
+
+    boolean saveExamTask(ExamTask examTask);
+
+    List<ExamTaskImportDto> importFile(MultipartFile file, String md5, ApiUser apiUser);
+
+    boolean saveBatch(ExamTask task);
 }

+ 8 - 0
digit-print-business/src/main/java/com/qmth/digit/print/business/service/impl/ExamTaskReviewLogServiceImpl.java

@@ -1,11 +1,14 @@
 package com.qmth.digit.print.business.service.impl;
 
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.qmth.digit.print.business.bean.dto.ReviewLogDto;
 import com.qmth.digit.print.business.entity.ExamTaskReviewLog;
 import com.qmth.digit.print.business.mapper.ExamTaskReviewLogMapper;
 import com.qmth.digit.print.business.service.ExamTaskReviewLogService;
 import org.springframework.stereotype.Service;
 
+import java.util.List;
+
 /**
  * <p>
  * 命题任务审核日志表 服务实现类
@@ -17,4 +20,9 @@ import org.springframework.stereotype.Service;
 @Service
 public class ExamTaskReviewLogServiceImpl extends ServiceImpl<ExamTaskReviewLogMapper, ExamTaskReviewLog> implements ExamTaskReviewLogService {
 
+    @Override
+    public List<ReviewLogDto> list(ExamTaskReviewLog reviewLog) {
+        List<ReviewLogDto> list = this.baseMapper.list(reviewLog.getExamTaskId());
+        return list;
+    }
 }

+ 78 - 0
digit-print-business/src/main/java/com/qmth/digit/print/business/service/impl/ExamTaskServiceImpl.java

@@ -1,18 +1,27 @@
 package com.qmth.digit.print.business.service.impl;
 
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.qmth.digit.print.business.bean.ApiUser;
 import com.qmth.digit.print.business.bean.dto.BlurryUserDto;
 import com.qmth.digit.print.business.bean.dto.ExamTaskDto;
+import com.qmth.digit.print.business.bean.dto.ExamTaskImportDto;
 import com.qmth.digit.print.business.bean.query.BlurryParam;
 import com.qmth.digit.print.business.bean.query.ExamTaskParam;
 import com.qmth.digit.print.business.entity.ExamTask;
+import com.qmth.digit.print.business.entity.ExamTaskTemp;
 import com.qmth.digit.print.business.mapper.ExamTaskMapper;
 import com.qmth.digit.print.business.service.ExamTaskService;
+import com.qmth.digit.print.business.service.ExamTaskTempService;
+import com.qmth.digit.print.common.enums.ExamStatusEnum;
+import com.qmth.digit.print.common.enums.ExceptionResultEnum;
 import org.apache.commons.lang3.StringUtils;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
+import org.springframework.web.multipart.MultipartFile;
 
 import java.util.ArrayList;
 import java.util.List;
@@ -29,6 +38,9 @@ import java.util.stream.Collectors;
 @Service
 public class ExamTaskServiceImpl extends ServiceImpl<ExamTaskMapper, ExamTask> implements ExamTaskService {
 
+    @Autowired
+    private ExamTaskTempService examTaskTempService;
+
     @Override
     public List<ExamTask> listByCourseCode(Long schoolId, String code) {
         QueryWrapper<ExamTask> queryWrapper = new QueryWrapper<>();
@@ -62,4 +74,70 @@ public class ExamTaskServiceImpl extends ServiceImpl<ExamTaskMapper, ExamTask> i
     public List<BlurryUserDto> listUser(BlurryParam param) {
         return this.baseMapper.listUser(param);
     }
+
+    @Override
+    public boolean assignUser(ExamTask examTask) {
+        UpdateWrapper<ExamTask> updateWrapper = new UpdateWrapper<>();
+        updateWrapper.lambda().set(ExamTask::getUserId, examTask.getUserId()).eq(ExamTask::getId, examTask.getId());
+        return this.update(updateWrapper);
+    }
+
+    @Override
+    public boolean enable(ExamTask examTask) {
+        UpdateWrapper<ExamTask> updateWrapper = new UpdateWrapper<>();
+        updateWrapper.lambda().set(ExamTask::getEnable, examTask.getEnable()).eq(ExamTask::getId, examTask.getId());
+        return this.update(updateWrapper);
+    }
+
+    @Override
+    public boolean saveExamTask(ExamTask examTask) {
+        // todo paperNumber生成问题, 必填字段校验
+        return this.save(examTask);
+    }
+
+    @Override
+    public List<ExamTaskImportDto> importFile(MultipartFile file, String md5, ApiUser apiUser) {
+        // 导入文件
+        return null;
+    }
+
+    @Override
+    public boolean saveBatch(ExamTask task) {
+        if(StringUtils.isBlank(task.getBatchNo())){
+            throw ExceptionResultEnum.ERROR.exception("batchNo不能为空");
+        }
+        QueryWrapper<ExamTaskTemp> queryWrapper = new QueryWrapper<>();
+        queryWrapper.lambda().eq(ExamTaskTemp::getBatchNo, task.getBatchNo());
+        List<ExamTaskTemp> examTaskTemps = examTaskTempService.list(queryWrapper);
+        if(examTaskTemps.isEmpty()){
+            throw ExceptionResultEnum.ERROR.exception("没有可保存数据");
+        }
+        List<ExamTask> list = new ArrayList<>();
+        for (ExamTaskTemp examTaskTemp : examTaskTemps) {
+            ExamTask examTask = new ExamTask();
+            examTask.setSchoolId(task.getSchoolId());
+            examTask.setCourseCode(examTaskTemp.getCourseCode());
+            examTask.setCourseName(examTaskTemp.getCourseName());
+            examTask.setSpecialty(examTaskTemp.getSpecialty());
+            examTask.setPaperNumber(examTaskTemp.getPaperNumber());
+            examTask.setStartTime(task.getStartTime());
+            examTask.setEndTime(task.getEndTime());
+            examTask.setCardRuleId(task.getCardRuleId());
+            examTask.setStatus(ExamStatusEnum.NEW);
+            examTask.setBatchNo(task.getBatchNo());
+            examTask.setCreateId(task.getCreateId());
+            examTask.setCreateTime(System.currentTimeMillis());
+            String userId = task.getUsers().stream().map(m->{
+                if (examTaskTemp.getCourseCode().equals(m.get("courseCode"))) {
+                    return m.get("userId");
+                }
+                return "";
+            }).findFirst().get();
+            if(StringUtils.isNotBlank(userId)){
+                examTask.setUserId(Long.valueOf(userId));
+            }
+            list.add(examTask);
+        }
+        return this.saveBatch(list);
+    }
 }

+ 8 - 0
digit-print-business/src/main/java/com/qmth/digit/print/business/util/SerialNumberUtil.java

@@ -0,0 +1,8 @@
+package com.qmth.digit.print.business.util;
+
+/**
+ * 编号生成工具
+ * @Date: 2021/4/1.
+ */
+public class SerialNumberUtil {
+}

+ 15 - 0
digit-print-business/src/main/resources/mapper/ExamTaskReviewLogMapper.xml

@@ -17,5 +17,20 @@
         id,
         exam_task_id, review_status, reason, operate_id, operate_time
     </sql>
+    <select id="list" resultType="com.qmth.digit.print.business.bean.dto.ReviewLogDto">
+        SELECT
+            a.id,
+            a.review_status reviewStatus,
+            a.reason,
+            a.operate_id operateId,
+            b.real_name operateName,
+            a.operate_time operateTime
+        FROM
+            exam_task_review_log a
+                LEFT JOIN
+            sys_user b ON a.operate_id = b.id
+        WHERE
+            a.exam_task_id = #{examTaskId}
+    </select>
 
 </mapper>

+ 91 - 0
digit-print/src/main/java/com/qmth/digit/print/api/ExamTaskController.java

@@ -8,9 +8,14 @@ import com.qmth.boot.api.constant.ApiConstant;
 import com.qmth.digit.print.business.bean.ApiUser;
 import com.qmth.digit.print.business.bean.dto.BlurryUserDto;
 import com.qmth.digit.print.business.bean.dto.ExamTaskDto;
+import com.qmth.digit.print.business.bean.dto.ExamTaskImportDto;
+import com.qmth.digit.print.business.bean.dto.ReviewLogDto;
 import com.qmth.digit.print.business.bean.query.BlurryParam;
 import com.qmth.digit.print.business.bean.query.ExamTaskParam;
 import com.qmth.digit.print.business.entity.BasicCourse;
+import com.qmth.digit.print.business.entity.ExamTask;
+import com.qmth.digit.print.business.entity.ExamTaskReviewLog;
+import com.qmth.digit.print.business.service.ExamTaskReviewLogService;
 import com.qmth.digit.print.business.service.ExamTaskService;
 import com.qmth.digit.print.business.util.RequestUtils;
 import com.qmth.digit.print.common.util.Result;
@@ -18,10 +23,12 @@ import com.qmth.digit.print.common.util.ResultUtil;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RequestMapping;
 
 import org.springframework.web.bind.annotation.RequestMethod;
 import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.multipart.MultipartFile;
 
 import javax.servlet.http.HttpServletRequest;
 import java.util.List;
@@ -43,6 +50,9 @@ public class ExamTaskController {
     @Autowired
     private ExamTaskService examTaskService;
 
+    @Autowired
+    private ExamTaskReviewLogService examTaskReviewLogService;
+
     /**
      * 查询
      * @param request
@@ -86,5 +96,86 @@ public class ExamTaskController {
         return ResultUtil.ok(list);
     }
 
+    /**
+     * 更改/指派命题老师
+     * @param request
+     * @param examTask
+     * @return
+     */
+    @ApiOperation(value = "更改/指派命题老师")
+    @RequestMapping(value = "/assign_user", method = RequestMethod.POST)
+    public Result assignUser(HttpServletRequest request, @RequestBody ExamTask examTask){
+        boolean isSuccess = examTaskService.assignUser(examTask);
+        return ResultUtil.ok(isSuccess);
+    }
+
+    /**
+     * 启用/禁用
+     * @param request
+     * @param examTask
+     * @return
+     */
+    @ApiOperation(value = "启用/禁用")
+    @RequestMapping(value = "/enable", method = RequestMethod.POST)
+    public Result enable(HttpServletRequest request, @RequestBody ExamTask examTask){
+        boolean isSuccess = examTaskService.enable(examTask);
+        return ResultUtil.ok(isSuccess);
+    }
+
+    /**
+     * 新建
+     * @param request
+     * @param examTask
+     * @return
+     */
+    @ApiOperation(value = "新建")
+    @RequestMapping(value = "/save", method = RequestMethod.POST)
+    public Result save(HttpServletRequest request, @RequestBody ExamTask examTask){
+        ApiUser apiUser = RequestUtils.getApiUser(request);
+        examTask.setSchoolId(apiUser.getSchoolId());
+        examTask.setCreateId(apiUser.getUserData().getId());
+        examTask.setCreateTime(System.currentTimeMillis());
+        boolean isSuccess = examTaskService.saveExamTask(examTask);
+        return ResultUtil.ok(isSuccess);
+    }
+
+    /**
+     * 文件导入
+     * @param request
+     * @param file
+     * @param md5
+     * @return
+     */
+    @ApiOperation(value = "文件导入")
+    @RequestMapping(value = "/import", method = RequestMethod.POST)
+    public Result importFile(HttpServletRequest request, MultipartFile file, String md5){
+        ApiUser apiUser = RequestUtils.getApiUser(request);
+        List<ExamTaskImportDto> list = examTaskService.importFile(file, md5, apiUser);
+        return ResultUtil.ok(list);
+    }
+
+    /**
+     * 批量保存
+     * @param request
+     * @param task
+     * @return
+     */
+    @ApiOperation(value = "批量保存")
+    @RequestMapping(value = "/save_batch", method = RequestMethod.POST)
+    public Result saveBatch(HttpServletRequest request, ExamTask task){
+        ApiUser apiUser = RequestUtils.getApiUser(request);
+        task.setSchoolId(apiUser.getSchoolId());
+        task.setCreateId(apiUser.getUserData().getId());
+        boolean isSuccess = examTaskService.saveBatch(task);
+        return ResultUtil.ok(isSuccess);
+    }
+
+
+    @ApiOperation(value = "审核历史")
+    @RequestMapping(value = "/review_list", method = RequestMethod.GET)
+    public Result reviewList(HttpServletRequest request, ExamTaskReviewLog reviewLog){
+        List<ReviewLogDto> list = examTaskReviewLogService.list(reviewLog);
+        return ResultUtil.ok(list);
+    }
 }