diff --git a/virtual-patient-manage/src/main/java/com/supervision/manage/controller/file/FileManageController.java b/virtual-patient-manage/src/main/java/com/supervision/manage/controller/file/FileManageController.java index 34a473c3..8064fb3b 100644 --- a/virtual-patient-manage/src/main/java/com/supervision/manage/controller/file/FileManageController.java +++ b/virtual-patient-manage/src/main/java/com/supervision/manage/controller/file/FileManageController.java @@ -1,6 +1,7 @@ package com.supervision.manage.controller.file; import com.supervision.manage.service.FileManageService; +import com.supervision.model.FileResource; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import lombok.RequiredArgsConstructor; @@ -20,7 +21,8 @@ public class FileManageController { @PostMapping("/uploadFile") public String uploadFile(@RequestParam("file") MultipartFile multipartFile) throws Exception { - return fileManageService.uploadFile(multipartFile,multipartFile.getContentType()); + FileResource fileResource = fileManageService.uploadFile(multipartFile, multipartFile.getContentType()); + return fileResource.getId(); } diff --git a/virtual-patient-manage/src/main/java/com/supervision/manage/controller/file/MaterialLibraryManageController.java b/virtual-patient-manage/src/main/java/com/supervision/manage/controller/file/MaterialLibraryManageController.java new file mode 100644 index 00000000..2ef6730b --- /dev/null +++ b/virtual-patient-manage/src/main/java/com/supervision/manage/controller/file/MaterialLibraryManageController.java @@ -0,0 +1,42 @@ +package com.supervision.manage.controller.file; + +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.supervision.manage.service.MaterialLibraryManageService; +import com.supervision.model.MaterialLibrary; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import io.swagger.annotations.ApiParam; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; + +@Api(tags = "素材库管理") +@RestController +@RequestMapping("/materialLibrary") +@RequiredArgsConstructor +public class MaterialLibraryManageController { + + private final MaterialLibraryManageService materialLibraryManageService; + + @ApiOperation("上传素材") + @PostMapping("/uploadMaterial") + public String uploadMaterial(@ApiParam("文件") @RequestParam("file") MultipartFile multipartFile, + @ApiParam("素材名,长度小于64") @RequestParam("materialName") String materialName, + @ApiParam("素材类型 0:图片 1:视频 2:音频") @RequestParam("materialType") String materialType) throws Exception { + + return materialLibraryManageService.uploadMaterial(multipartFile, materialName, materialType); + } + + + @ApiOperation("素材管理分页查询") + @GetMapping("queryMedicalRecPage") + public IPage queryMaterialPage(@ApiParam("素材类型 0:图片 1:视频 2:音频") @RequestParam("materialType") String materialType, + @ApiParam("素材名,长度小于64") @RequestParam("materialName") String materialName, + @ApiParam("页码") @RequestParam(name="pageNum",defaultValue = "1") Integer pageNum, + @ApiParam("每页大小") @RequestParam(name="pageSize",defaultValue = "10")Integer pageSize) { + + return materialLibraryManageService.queryMaterialPage(materialType, materialName, pageNum, pageSize); + } + + +} diff --git a/virtual-patient-manage/src/main/java/com/supervision/manage/service/FileManageService.java b/virtual-patient-manage/src/main/java/com/supervision/manage/service/FileManageService.java index 12b926bb..2aa9d805 100644 --- a/virtual-patient-manage/src/main/java/com/supervision/manage/service/FileManageService.java +++ b/virtual-patient-manage/src/main/java/com/supervision/manage/service/FileManageService.java @@ -1,11 +1,12 @@ package com.supervision.manage.service; +import com.supervision.model.FileResource; import org.springframework.web.multipart.MultipartFile; import javax.servlet.http.HttpServletResponse; public interface FileManageService { - String uploadFile(MultipartFile multipartFile, String contentType) throws Exception; + FileResource uploadFile(MultipartFile multipartFile, String contentType) throws Exception; void downloadFile(String fileId, HttpServletResponse response) throws Exception; } diff --git a/virtual-patient-manage/src/main/java/com/supervision/manage/service/MaterialLibraryManageService.java b/virtual-patient-manage/src/main/java/com/supervision/manage/service/MaterialLibraryManageService.java new file mode 100644 index 00000000..a5c92bec --- /dev/null +++ b/virtual-patient-manage/src/main/java/com/supervision/manage/service/MaterialLibraryManageService.java @@ -0,0 +1,20 @@ +package com.supervision.manage.service; + +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.supervision.model.MaterialLibrary; +import org.springframework.web.multipart.MultipartFile; + +public interface MaterialLibraryManageService { + + + /** + * 上传素材库文件 + * @param multipartFile 文件内容 + * @param materialName 素材名 + * @param materialType 素材类型 + * @return 素材id + */ + String uploadMaterial(MultipartFile multipartFile, String materialName, String materialType) throws Exception; + + IPage queryMaterialPage(String materialType, String materialName, Integer pageNum, Integer pageSize); +} diff --git a/virtual-patient-manage/src/main/java/com/supervision/manage/service/impl/FileManageServiceImpl.java b/virtual-patient-manage/src/main/java/com/supervision/manage/service/impl/FileManageServiceImpl.java index 15dd93a8..64a1a003 100644 --- a/virtual-patient-manage/src/main/java/com/supervision/manage/service/impl/FileManageServiceImpl.java +++ b/virtual-patient-manage/src/main/java/com/supervision/manage/service/impl/FileManageServiceImpl.java @@ -20,7 +20,7 @@ public class FileManageServiceImpl implements FileManageService { private final FileResourceService fileResourceService; @Override - public String uploadFile(MultipartFile multipartFile, String contentType) throws Exception { + public FileResource uploadFile(MultipartFile multipartFile, String contentType) throws Exception { // 把文件上传到minio String minoId = MinioUtil.uploadFile(multipartFile.getInputStream(), contentType); @@ -32,7 +32,7 @@ public class FileManageServiceImpl implements FileManageService { fileResource.setFileType(contentType); fileResourceService.save(fileResource); - return fileResource.getId(); + return fileResource; } @Override diff --git a/virtual-patient-manage/src/main/java/com/supervision/manage/service/impl/MaterialLibraryManageServiceImpl.java b/virtual-patient-manage/src/main/java/com/supervision/manage/service/impl/MaterialLibraryManageServiceImpl.java new file mode 100644 index 00000000..47ccabd8 --- /dev/null +++ b/virtual-patient-manage/src/main/java/com/supervision/manage/service/impl/MaterialLibraryManageServiceImpl.java @@ -0,0 +1,53 @@ +package com.supervision.manage.service.impl; + +import cn.hutool.core.lang.Assert; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.AbstractWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.supervision.manage.service.FileManageService; +import com.supervision.manage.service.MaterialLibraryManageService; +import com.supervision.model.FileResource; +import com.supervision.model.MaterialLibrary; +import com.supervision.service.MaterialLibraryService; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.web.multipart.MultipartFile; + +@Service +@RequiredArgsConstructor +public class MaterialLibraryManageServiceImpl implements MaterialLibraryManageService { + + private final MaterialLibraryService materialLibraryService; + + private final FileManageService fileManageService; + @Override + @Transactional(rollbackFor = Exception.class) + public String uploadMaterial(MultipartFile multipartFile, String materialName, String materialType) throws Exception { + // 校验素材名是否已经存在 + Assert.notEmpty(materialName, "素材名不能为空"); + Assert.notEmpty(materialType, "素材类型不能为空"); + Assert.isFalse(materialLibraryService.checkMaterialNameIfExist(materialName), "素材名已存在"); + + // 保存素材 + FileResource fileResource = fileManageService.uploadFile(multipartFile, multipartFile.getContentType()); + + MaterialLibrary materialLibrary = new MaterialLibrary(); + materialLibrary.setFileResourceId(fileResource.getId()); + materialLibrary.setMaterialType(materialType); + materialLibrary.setMaterialName(materialName); + materialLibraryService.save(materialLibrary); + return materialLibrary.getId(); + } + + @Override + public IPage queryMaterialPage(String materialType, String materialName, Integer pageNum, Integer pageSize) { + + AbstractWrapper wrapper = materialLibraryService.lambdaQuery() + .eq(StrUtil.isNotEmpty(materialType), MaterialLibrary::getMaterialType, materialType) + .like(StrUtil.isNotEmpty(materialName), MaterialLibrary::getMaterialName, materialName).getWrapper(); + + return materialLibraryService.page(new Page<>(pageNum, pageSize),wrapper); + } +} diff --git a/virtual-patient-model/src/main/java/com/supervision/model/MaterialLibrary.java b/virtual-patient-model/src/main/java/com/supervision/model/MaterialLibrary.java index 1ef21de3..c9b8dbd7 100644 --- a/virtual-patient-model/src/main/java/com/supervision/model/MaterialLibrary.java +++ b/virtual-patient-model/src/main/java/com/supervision/model/MaterialLibrary.java @@ -1,8 +1,10 @@ package com.supervision.model; +import com.baomidou.mybatisplus.annotation.FieldFill; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; +import java.time.LocalDateTime; import java.util.Date; import lombok.Data; @@ -36,17 +38,26 @@ public class MaterialLibrary implements Serializable { /** * 创建人ID */ + @TableField(fill = FieldFill.INSERT) private String createUserId; /** * 创建时间 */ - private Date createTime; + @TableField(fill = FieldFill.INSERT) + private LocalDateTime createTime; /** * 更新人 */ - private Date updateUserId; + @TableField(fill = FieldFill.INSERT_UPDATE) + private String updateUserId; + + /** + * 更新时间 + */ + @TableField(fill = FieldFill.INSERT_UPDATE) + private LocalDateTime updateTime; @TableField(exist = false) private static final long serialVersionUID = 1L; diff --git a/virtual-patient-model/src/main/java/com/supervision/service/MaterialLibraryService.java b/virtual-patient-model/src/main/java/com/supervision/service/MaterialLibraryService.java index a6dee4ba..e2b96b96 100644 --- a/virtual-patient-model/src/main/java/com/supervision/service/MaterialLibraryService.java +++ b/virtual-patient-model/src/main/java/com/supervision/service/MaterialLibraryService.java @@ -10,4 +10,11 @@ import com.baomidou.mybatisplus.extension.service.IService; */ public interface MaterialLibraryService extends IService { + + /** + * 根据素材名查询是否存在 + * @param materialName 素材名 + * @return true:已存在 false:不存在 + */ + boolean checkMaterialNameIfExist(String materialName); } diff --git a/virtual-patient-model/src/main/java/com/supervision/service/impl/MaterialLibraryServiceImpl.java b/virtual-patient-model/src/main/java/com/supervision/service/impl/MaterialLibraryServiceImpl.java index c6baa955..e0392792 100644 --- a/virtual-patient-model/src/main/java/com/supervision/service/impl/MaterialLibraryServiceImpl.java +++ b/virtual-patient-model/src/main/java/com/supervision/service/impl/MaterialLibraryServiceImpl.java @@ -15,6 +15,12 @@ import org.springframework.stereotype.Service; public class MaterialLibraryServiceImpl extends ServiceImpl implements MaterialLibraryService { + @Override + public boolean checkMaterialNameIfExist(String materialName) { + + return super.getBaseMapper() + .selectCount(this.lambdaQuery().eq(MaterialLibrary::getMaterialName, materialName).getWrapper()) > 0; + } } diff --git a/virtual-patient-model/src/main/resources/mapper/MaterialLibraryMapper.xml b/virtual-patient-model/src/main/resources/mapper/MaterialLibraryMapper.xml index be8844b3..fcb45be8 100644 --- a/virtual-patient-model/src/main/resources/mapper/MaterialLibraryMapper.xml +++ b/virtual-patient-model/src/main/resources/mapper/MaterialLibraryMapper.xml @@ -11,12 +11,13 @@ - + + id,file_resource_id,material_name, material_type,create_user_id,create_time, - update_user_id + update_user_id,update_time