Browse Source

保存考试过程中拍摄照片

master
luoweijian 1 month ago
parent
commit
47ae92d635
  1. 4
      src/main/java/com/project/exam/application/ExamRecordApplicationService.java
  2. 11
      src/main/java/com/project/exam/application/impl/ExamRecordApplicationServiceImpl.java
  3. 16
      src/main/java/com/project/exam/controller/AdminExamRecordController.java
  4. 8
      src/main/java/com/project/exam/controller/ExamRecordController.java
  5. 14
      src/main/java/com/project/exam/domain/dto/ExamRecordPictureDTO.java
  6. 39
      src/main/java/com/project/exam/domain/entity/ExamRecordPictureEntity.java
  7. 7
      src/main/java/com/project/exam/domain/service/ExamRecordPictureBaseService.java
  8. 10
      src/main/java/com/project/exam/domain/service/SaveExamRecordPictureDomainService.java
  9. 13
      src/main/java/com/project/exam/domain/service/impl/ExamRecordPictureBaseServiceImpl.java
  10. 54
      src/main/java/com/project/exam/domain/service/impl/SaveExamRecordPictureDomainServiceImpl.java
  11. 9
      src/main/java/com/project/exam/mapper/ExamRecordPictureMapper.java
  12. 2
      src/main/java/com/project/information/domain/dto/InformationDTO.java
  13. 2
      src/main/java/com/project/information/domain/service/impl/UploadInformationDomainServiceImpl.java

4
src/main/java/com/project/exam/application/ExamRecordApplicationService.java

@ -2,6 +2,8 @@ package com.project.exam.application;
import com.project.base.domain.result.Result;
import com.project.exam.domain.dto.ExamRecordDTO;
import com.project.exam.domain.dto.ExamRecordPictureDTO;
import org.springframework.web.multipart.MultipartFile;
public interface ExamRecordApplicationService {
@ -10,4 +12,6 @@ public interface ExamRecordApplicationService {
Result<ExamRecordDTO> submitPaper(Long recordId) throws Exception;
Result<String> stepSave(Long recordId, int index, String answer) throws Exception;
Result<ExamRecordPictureDTO> savePicture(MultipartFile file, Long recordId) throws Exception;
}

11
src/main/java/com/project/exam/application/impl/ExamRecordApplicationServiceImpl.java

@ -4,11 +4,14 @@ import com.project.base.domain.result.Result;
import com.project.ding.utils.SecurityUtils;
import com.project.exam.application.ExamRecordApplicationService;
import com.project.exam.domain.dto.ExamRecordDTO;
import com.project.exam.domain.dto.ExamRecordPictureDTO;
import com.project.exam.domain.service.AssemblePaperDomainService;
import com.project.exam.domain.service.SaveExamRecordPictureDomainService;
import com.project.exam.domain.service.StepSaveExamRecordDomainService;
import com.project.exam.domain.service.SubmitPaperDomainService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.web.multipart.MultipartFile;
@Service
public class ExamRecordApplicationServiceImpl implements ExamRecordApplicationService {
@ -21,11 +24,19 @@ public class ExamRecordApplicationServiceImpl implements ExamRecordApplicationSe
@Autowired
private SubmitPaperDomainService submitPaperDomainService;
@Autowired
private SaveExamRecordPictureDomainService saveExamRecordPictureDomainService;
@Override
public Result<ExamRecordDTO> assemblePaper(Long taskId) throws Exception {
return Result.success(assemblePaperDomainService.assemblePaper(taskId , SecurityUtils.getUserId()));
}
@Override
public Result<ExamRecordPictureDTO> savePicture(MultipartFile file, Long recordId) throws Exception {
return saveExamRecordPictureDomainService.savePicture(file , recordId);
}
@Override
public Result<ExamRecordDTO> submitPaper(Long recordId) throws Exception {
return Result.success(submitPaperDomainService.submitPaper(recordId));

16
src/main/java/com/project/exam/controller/AdminExamRecordController.java

@ -0,0 +1,16 @@
package com.project.exam.controller;
import com.project.exam.application.ExamRecordApplicationService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
@RequestMapping("/api/admin/examRecord")
public class AdminExamRecordController {
@Autowired
private ExamRecordApplicationService examRecordApplicationService;
}

8
src/main/java/com/project/exam/controller/ExamRecordController.java

@ -4,10 +4,12 @@ package com.project.exam.controller;
import com.project.base.domain.result.Result;
import com.project.exam.application.ExamRecordApplicationService;
import com.project.exam.domain.dto.ExamRecordDTO;
import com.project.exam.domain.dto.ExamRecordPictureDTO;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;
@RestController
@RequestMapping("/api/examRecord")
@ -30,4 +32,10 @@ public class ExamRecordController {
}
@PostMapping("/savePicture")
public Result<ExamRecordPictureDTO> savePicture(MultipartFile file, Long recordId) throws Exception {
return examRecordApplicationService.savePicture(file , recordId);
}
}

14
src/main/java/com/project/exam/domain/dto/ExamRecordPictureDTO.java

@ -0,0 +1,14 @@
package com.project.exam.domain.dto;
import com.project.base.domain.dto.BaseDTO;
import lombok.Data;
@Data
public class ExamRecordPictureDTO extends BaseDTO {
private Long id;
private Long examRecordId;
private String name;
private String fileSuffix;
private String filePath;
}

39
src/main/java/com/project/exam/domain/entity/ExamRecordPictureEntity.java

@ -0,0 +1,39 @@
package com.project.exam.domain.entity;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.project.base.domain.entity.BaseEntity;
import jakarta.persistence.*;
import lombok.Data;
import lombok.EqualsAndHashCode;
@Data
@Table(name = "evaluator_exam_record_picture" ,
indexes = {@Index(name = "Idx_examRecordId", columnList = "exam_record_id")})
@Entity
@TableName(value = "evaluator_exam_record_picture" , autoResultMap = true)
@EqualsAndHashCode(callSuper = true)
public class ExamRecordPictureEntity extends BaseEntity {
@TableId(type = IdType.ASSIGN_ID)
@Id
private Long id;
@TableField("exam_record_id")
@Column(name = "exam_record_id" , columnDefinition="bigint(20) comment '关联ExamRecordEntity'")
private Long examRecordId;
@Column(name = "name" , columnDefinition="varchar(550) comment '文件名称'")
private String name;
@Column(name = "file_suffix" , columnDefinition="varchar(50) comment '文件后缀'")
@TableField("file_suffix")
private String fileSuffix;
@Column(name = "file_path" , columnDefinition="varchar(550) comment '文件存储路径'")
@TableField("file_path")
private String filePath;
}

7
src/main/java/com/project/exam/domain/service/ExamRecordPictureBaseService.java

@ -0,0 +1,7 @@
package com.project.exam.domain.service;
import com.project.base.domain.service.IBaseService;
import com.project.exam.domain.entity.ExamRecordPictureEntity;
public interface ExamRecordPictureBaseService extends IBaseService<ExamRecordPictureEntity> {
}

10
src/main/java/com/project/exam/domain/service/SaveExamRecordPictureDomainService.java

@ -0,0 +1,10 @@
package com.project.exam.domain.service;
import com.project.base.domain.result.Result;
import com.project.exam.domain.dto.ExamRecordPictureDTO;
import org.springframework.web.multipart.MultipartFile;
public interface SaveExamRecordPictureDomainService {
Result<ExamRecordPictureDTO> savePicture(MultipartFile file, Long recordId) throws Exception;
}

13
src/main/java/com/project/exam/domain/service/impl/ExamRecordPictureBaseServiceImpl.java

@ -0,0 +1,13 @@
package com.project.exam.domain.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.project.exam.domain.entity.ExamRecordPictureEntity;
import com.project.exam.domain.service.ExamRecordPictureBaseService;
import com.project.exam.mapper.ExamRecordPictureMapper;
import org.springframework.stereotype.Service;
@Service
public class ExamRecordPictureBaseServiceImpl extends ServiceImpl<ExamRecordPictureMapper, ExamRecordPictureEntity> implements ExamRecordPictureBaseService {
}

54
src/main/java/com/project/exam/domain/service/impl/SaveExamRecordPictureDomainServiceImpl.java

@ -0,0 +1,54 @@
package com.project.exam.domain.service.impl;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.io.FileUtil;
import cn.hutool.core.io.file.FileNameUtil;
import cn.hutool.core.util.IdUtil;
import com.project.base.domain.exception.BusinessErrorException;
import com.project.base.domain.result.Result;
import com.project.exam.domain.dto.ExamRecordPictureDTO;
import com.project.exam.domain.entity.ExamRecordPictureEntity;
import com.project.exam.domain.service.ExamRecordPictureBaseService;
import com.project.exam.domain.service.SaveExamRecordPictureDomainService;
import com.project.information.utils.MinIoUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.multipart.MultipartFile;
import java.util.Date;
import java.util.Objects;
@Service
public class SaveExamRecordPictureDomainServiceImpl implements SaveExamRecordPictureDomainService {
@Autowired
private MinIoUtils minIoUtils;
@Autowired
private ExamRecordPictureBaseService examRecordPictureBaseService;
@Override
@Transactional(rollbackFor = Exception.class)
public Result<ExamRecordPictureDTO> savePicture(MultipartFile file, Long recordId) throws Exception {
if (Objects.isNull(recordId)) {
throw new BusinessErrorException("考试记录id不能为空");
}
if (Objects.isNull(file)) {
throw new BusinessErrorException("上传图片不能为空");
}
String fileName = file.getOriginalFilename();
String filePath = String.format("%s/%s/%s.%s",
DateUtil.format(new Date(), "yyyyMMdd"),
recordId,
IdUtil.fastSimpleUUID(),
FileNameUtil.extName(fileName));
minIoUtils.uploadFile(file.getInputStream() , filePath);
ExamRecordPictureDTO pictureDTO = new ExamRecordPictureDTO();
pictureDTO.setName(fileName);
pictureDTO.setFilePath(filePath);
pictureDTO.setFileSuffix(FileUtil.getSuffix(fileName));
pictureDTO.setExamRecordId(recordId);
return Result.success(examRecordPictureBaseService.saveDTO(pictureDTO , ExamRecordPictureEntity::new , ExamRecordPictureDTO::new));
}
}

9
src/main/java/com/project/exam/mapper/ExamRecordPictureMapper.java

@ -0,0 +1,9 @@
package com.project.exam.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.project.exam.domain.entity.ExamRecordPictureEntity;
import org.apache.ibatis.annotations.Mapper;
@Mapper
public interface ExamRecordPictureMapper extends BaseMapper<ExamRecordPictureEntity> {
}

2
src/main/java/com/project/information/domain/dto/InformationDTO.java

@ -12,6 +12,8 @@ public class InformationDTO extends BaseDTO {
private String name;
private String filePath;
private Integer parseStatus;
private String fileSuffix;
}

2
src/main/java/com/project/information/domain/service/impl/UploadInformationDomainServiceImpl.java

@ -2,6 +2,7 @@ package com.project.information.domain.service.impl;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.io.FileUtil;
import cn.hutool.core.io.file.FileNameUtil;
import cn.hutool.core.util.IdUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
@ -108,6 +109,7 @@ public class UploadInformationDomainServiceImpl implements UploadInformationDoma
informationDTO.setSubLineId(subLineId);
informationDTO.setSubLineName(productLine.getName());
informationDTO.setName(fileName);
informationDTO.setFileSuffix(FileUtil.getSuffix(fileName));
informationDTO.setFilePath(filePath);
informationDTO.setParseStatus(InformationParseStatusEnum.NotStart.getValue());
informationBaseService.save(informationDTO.toEntity(InformationEntity::new));

Loading…
Cancel
Save