diff --git a/virtual-patient-manage/src/main/java/com/supervision/manage/controller/file/DirectoryInfoManageController.java b/virtual-patient-manage/src/main/java/com/supervision/manage/controller/file/DirectoryInfoManageController.java new file mode 100644 index 00000000..c3ebbbd4 --- /dev/null +++ b/virtual-patient-manage/src/main/java/com/supervision/manage/controller/file/DirectoryInfoManageController.java @@ -0,0 +1,55 @@ +package com.supervision.manage.controller.file; + +import com.supervision.manage.pojo.vo.DirectoryInfoVo; +import com.supervision.manage.service.DirectoryInfoManageService; +import com.supervision.model.DirectoryInfo; +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 java.util.List; + +@Api(tags = "文件目录管理") +@RestController +@RequestMapping("/directoryManage") +@RequiredArgsConstructor +public class DirectoryInfoManageController { + + + private final DirectoryInfoManageService directoryInfoManageService; + @ApiOperation("新增文件目录") + @PostMapping("/addDirectory") + public String addDirectory(@RequestBody DirectoryInfo directoryInfo) { + + return directoryInfoManageService.addDirectory(directoryInfo); + + } + + + @ApiOperation("删除文件目录") + @DeleteMapping("/deleteDirectory") + public boolean deleteDirectory(@ApiParam("目录ID") @RequestParam("directoryId") String directoryId) { + + return directoryInfoManageService.deleteDirectory(directoryId); + + } + + @ApiOperation("修改文件目录") + @PutMapping("/updateDirectory") + public boolean updateDirectory(@RequestBody DirectoryInfo directoryInfo) { + + return directoryInfoManageService.updateDirectory(directoryInfo); + + } + + + @ApiOperation("查询文件目录") + @GetMapping("/getFileDirectory") + public List getFileDirectory(@ApiParam("父级目录ID") @RequestParam(value = "parentDirId",required = false) String parentDirId) { + + return directoryInfoManageService.getFileDirectory(parentDirId); + + } +} diff --git a/virtual-patient-manage/src/main/java/com/supervision/manage/pojo/vo/DirectoryInfoVo.java b/virtual-patient-manage/src/main/java/com/supervision/manage/pojo/vo/DirectoryInfoVo.java new file mode 100644 index 00000000..ebc535ad --- /dev/null +++ b/virtual-patient-manage/src/main/java/com/supervision/manage/pojo/vo/DirectoryInfoVo.java @@ -0,0 +1,14 @@ +package com.supervision.manage.pojo.vo; + +import com.supervision.model.DirectoryInfo; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.util.List; + +@EqualsAndHashCode(callSuper = true) +@Data +public class DirectoryInfoVo extends DirectoryInfo { + + private List child; +} diff --git a/virtual-patient-manage/src/main/java/com/supervision/manage/service/DirectoryInfoManageService.java b/virtual-patient-manage/src/main/java/com/supervision/manage/service/DirectoryInfoManageService.java new file mode 100644 index 00000000..26245517 --- /dev/null +++ b/virtual-patient-manage/src/main/java/com/supervision/manage/service/DirectoryInfoManageService.java @@ -0,0 +1,28 @@ +package com.supervision.manage.service; + +import com.supervision.manage.pojo.vo.DirectoryInfoVo; +import com.supervision.model.DirectoryInfo; + +import java.util.List; + +public interface DirectoryInfoManageService { + + + /** + * 新增文件目录 + * @param directoryInfo 文件信息 + * @return目录id + */ + String addDirectory(DirectoryInfo directoryInfo); + + /** + * 删除文件目录 + * @param directoryId 目录id + * @return true:删除成功 false:删除失败 + */ + boolean deleteDirectory(String directoryId); + + boolean updateDirectory(DirectoryInfo directoryInfo); + + List getFileDirectory(String parentDirId); +} diff --git a/virtual-patient-manage/src/main/java/com/supervision/manage/service/MedicalRecManageService.java b/virtual-patient-manage/src/main/java/com/supervision/manage/service/MedicalRecManageService.java index 4ce9e975..57f3796d 100644 --- a/virtual-patient-manage/src/main/java/com/supervision/manage/service/MedicalRecManageService.java +++ b/virtual-patient-manage/src/main/java/com/supervision/manage/service/MedicalRecManageService.java @@ -9,10 +9,9 @@ import com.supervision.vo.manage.DiseasePhysicalResVo; import com.supervision.vo.manage.DiseaseTreatmentPlanResVo; import com.supervision.vo.manage.MedicalRecPageResVO; import com.supervision.model.Disease; -import io.swagger.annotations.ApiOperation; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.multipart.MultipartFile; +import java.io.IOException; import java.util.List; public interface MedicalRecManageService { @@ -41,4 +40,6 @@ public interface MedicalRecManageService { void deleteMedicalRec(String id); List querySingleDiseaseListByDropList(); + + String uploadMaterial(MultipartFile multipartFile, String medicalRecId) throws IOException; } diff --git a/virtual-patient-manage/src/main/java/com/supervision/manage/service/impl/DirectoryInfoManageServiceImpl.java b/virtual-patient-manage/src/main/java/com/supervision/manage/service/impl/DirectoryInfoManageServiceImpl.java new file mode 100644 index 00000000..ab8a3783 --- /dev/null +++ b/virtual-patient-manage/src/main/java/com/supervision/manage/service/impl/DirectoryInfoManageServiceImpl.java @@ -0,0 +1,109 @@ +package com.supervision.manage.service.impl; + +import cn.hutool.core.bean.BeanUtil; +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.lang.Assert; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.conditions.query.LambdaQueryChainWrapper; +import com.supervision.manage.pojo.vo.DirectoryInfoVo; +import com.supervision.manage.service.DirectoryInfoManageService; +import com.supervision.model.DirectoryInfo; +import com.supervision.service.DirectoryInfoService; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; + +import java.util.ArrayList; +import java.util.List; + +@Service +@RequiredArgsConstructor +public class DirectoryInfoManageServiceImpl implements DirectoryInfoManageService { + + private final DirectoryInfoService directoryInfoService; + + + @Override + public String addDirectory(DirectoryInfo directoryInfo) { + + // 判断文件目录是否已经存在 + Assert.notEmpty(directoryInfo.getDirectoryName(), "文件目录名称不能为空"); + Assert.isTrue(StrUtil.isEmpty(directoryInfo.getId()), "目录id需要为空"); + LambdaQueryChainWrapper wrapper = directoryInfoService.lambdaQuery() + .eq(StrUtil.isNotEmpty(directoryInfo.getParentId()), DirectoryInfo::getParentId, directoryInfo.getParentId()) + .eq(DirectoryInfo::getDirectoryName, directoryInfo.getDirectoryName()); + if (StrUtil.isEmpty(directoryInfo.getParentId())){ + wrapper.isNull(DirectoryInfo::getParentId); + }else { + wrapper.eq(DirectoryInfo::getParentId, directoryInfo.getParentId()); + } + Assert.isTrue(wrapper.count() == 0, "文件夹已存在"); + + // 创建文件目录 + directoryInfoService.save(directoryInfo); + + return directoryInfo.getId(); + } + + @Override + public boolean deleteDirectory(String directoryId) { + + Assert.notEmpty(directoryId, "文件目录id不能为空"); + + Integer count = directoryInfoService.lambdaQuery() + .eq(DirectoryInfo::getParentId, directoryId).count(); + Assert.isTrue(count == 0, "目录下有子目录,不能删除"); + + return directoryInfoService.removeById(directoryId); + } + + @Override + public boolean updateDirectory(DirectoryInfo directoryInfo) { + Assert.notNull(directoryInfo.getId(), "文件目录id不能为空"); + Assert.notEmpty(directoryInfo.getDirectoryName(),"文件名不能为空"); + Assert.notNull(directoryInfoService.getById(directoryInfo.getId()),"目录不存在"); + + return directoryInfoService.updateById(directoryInfo); + } + + @Override + public List getFileDirectory(String parentDirId) { + + + List directoryInfoList = directoryInfoService.lambdaQuery() + .eq(StrUtil.isNotEmpty(parentDirId), DirectoryInfo::getParentId, parentDirId).list(); + + if (CollectionUtil.isEmpty(directoryInfoList)){ + return new ArrayList<>(); + } + + return directoryInfoListToTree(directoryInfoList); + } + + + private List directoryInfoListToTree(List directoryInfoList) { + + ArrayList directoryInfoVos = new ArrayList<>(); + for (DirectoryInfo directoryInfo : directoryInfoList) { + + if (StrUtil.isNotEmpty(directoryInfo.getParentId())){ + // 跳过非顶层的目录 + continue; + } + DirectoryInfoVo directoryInfoVo = BeanUtil.toBean(directoryInfo, DirectoryInfoVo.class); + directoryInfoVos.add(directoryInfoVo); + for (DirectoryInfo info : directoryInfoList) { + if (!directoryInfoVo.getId().equals(info.getParentId())){ + continue; + } + if (directoryInfoVo.getChild() == null) { + directoryInfoVo.setChild(CollectionUtil.newArrayList(BeanUtil.toBean(info, DirectoryInfoVo.class))); + } else { + directoryInfoVo.getChild().add(BeanUtil.toBean(info, DirectoryInfoVo.class)); + } + } + } + return directoryInfoVos; + } + + +} diff --git a/virtual-patient-manage/src/main/java/com/supervision/manage/service/impl/MedicalRecManageServiceImpl.java b/virtual-patient-manage/src/main/java/com/supervision/manage/service/impl/MedicalRecManageServiceImpl.java index 92b397de..ccdbff71 100644 --- a/virtual-patient-manage/src/main/java/com/supervision/manage/service/impl/MedicalRecManageServiceImpl.java +++ b/virtual-patient-manage/src/main/java/com/supervision/manage/service/impl/MedicalRecManageServiceImpl.java @@ -24,7 +24,10 @@ import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import org.springframework.web.multipart.MultipartFile; +import java.io.IOException; +import java.io.InputStream; import java.util.*; import java.util.function.Function; import java.util.stream.Collectors; @@ -250,4 +253,19 @@ public class MedicalRecManageServiceImpl implements MedicalRecManageService { public List querySingleDiseaseListByDropList() { return diseaseService.lambdaQuery().eq(Disease::getDiseaseType, 0).list(); } + + @Override + public String uploadMaterial(MultipartFile multipartFile, String medicalRecId) throws IOException { + + // 读取上传的文件内容 + InputStream inputStream = multipartFile.getInputStream(); + + //查询 + + + + + + return null; + } } diff --git a/virtual-patient-model/src/main/java/com/supervision/mapper/DirectoryInfoMapper.java b/virtual-patient-model/src/main/java/com/supervision/mapper/DirectoryInfoMapper.java new file mode 100644 index 00000000..77cac785 --- /dev/null +++ b/virtual-patient-model/src/main/java/com/supervision/mapper/DirectoryInfoMapper.java @@ -0,0 +1,18 @@ +package com.supervision.mapper; + +import com.supervision.model.DirectoryInfo; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** +* @author Administrator +* @description 针对表【vp_directory_info(目录表)】的数据库操作Mapper +* @createDate 2024-01-29 16:17:29 +* @Entity com.supervision.model.DirectoryInfo +*/ +public interface DirectoryInfoMapper extends BaseMapper { + +} + + + + diff --git a/virtual-patient-model/src/main/java/com/supervision/model/DirectoryInfo.java b/virtual-patient-model/src/main/java/com/supervision/model/DirectoryInfo.java new file mode 100644 index 00000000..8c01c9fb --- /dev/null +++ b/virtual-patient-model/src/main/java/com/supervision/model/DirectoryInfo.java @@ -0,0 +1,57 @@ +package com.supervision.model; + +import com.baomidou.mybatisplus.annotation.*; + +import java.io.Serializable; +import java.time.LocalDateTime; +import lombok.Data; + +/** + * 目录表 + * @TableName vp_directory_info + */ +@TableName(value ="vp_directory_info") +@Data +public class DirectoryInfo implements Serializable { + /** + * 主键 + */ + private String id; + + /** + * 目录名称 + */ + private String directoryName; + + /** + * 父级id + */ + private String parentId; + + /** + * 创建人ID + */ + @TableField(fill = FieldFill.INSERT) + private String createUserId; + + /** + * 创建时间 + */ + @TableField(fill = FieldFill.INSERT) + private LocalDateTime createTime; + + /** + * 更新人 + */ + @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; +} \ No newline at end of file diff --git a/virtual-patient-model/src/main/java/com/supervision/service/DirectoryInfoService.java b/virtual-patient-model/src/main/java/com/supervision/service/DirectoryInfoService.java new file mode 100644 index 00000000..324b20f6 --- /dev/null +++ b/virtual-patient-model/src/main/java/com/supervision/service/DirectoryInfoService.java @@ -0,0 +1,13 @@ +package com.supervision.service; + +import com.supervision.model.DirectoryInfo; +import com.baomidou.mybatisplus.extension.service.IService; + +/** +* @author Administrator +* @description 针对表【vp_directory_info(目录表)】的数据库操作Service +* @createDate 2024-01-29 16:17:29 +*/ +public interface DirectoryInfoService extends IService { + +} diff --git a/virtual-patient-model/src/main/java/com/supervision/service/impl/DirectoryInfoServiceImpl.java b/virtual-patient-model/src/main/java/com/supervision/service/impl/DirectoryInfoServiceImpl.java new file mode 100644 index 00000000..ebb54ea5 --- /dev/null +++ b/virtual-patient-model/src/main/java/com/supervision/service/impl/DirectoryInfoServiceImpl.java @@ -0,0 +1,22 @@ +package com.supervision.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.supervision.model.DirectoryInfo; +import com.supervision.service.DirectoryInfoService; +import com.supervision.mapper.DirectoryInfoMapper; +import org.springframework.stereotype.Service; + +/** +* @author Administrator +* @description 针对表【vp_directory_info(目录表)】的数据库操作Service实现 +* @createDate 2024-01-29 16:17:29 +*/ +@Service +public class DirectoryInfoServiceImpl extends ServiceImpl + implements DirectoryInfoService{ + +} + + + + diff --git a/virtual-patient-model/src/main/resources/mapper/DirectoryInfoMapper.xml b/virtual-patient-model/src/main/resources/mapper/DirectoryInfoMapper.xml new file mode 100644 index 00000000..ffcbc779 --- /dev/null +++ b/virtual-patient-model/src/main/resources/mapper/DirectoryInfoMapper.xml @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + id,directory_name,parent_id, + create_user_id,create_time,update_user_id, + update_time + + diff --git a/virtual-patient-web/src/main/resources/sqlScript/todo.sql b/virtual-patient-web/src/main/resources/sqlScript/todo.sql index 526ee025..f14cfc9e 100644 --- a/virtual-patient-web/src/main/resources/sqlScript/todo.sql +++ b/virtual-patient-web/src/main/resources/sqlScript/todo.sql @@ -85,3 +85,14 @@ alter table vp_file_resource alter table vp_ask_patient_answer add answer_type varchar(16) null comment '回答类型 0:默认回答 1:自定义回答' after answer_resource_id; +create table vp_directory_info +( + id varchar(64) not null comment '主键', + directoryName varchar(64) not null comment '目录名称', + parentId varchar(64) not null comment '父级id', + create_user_id varchar(64) null comment '创建人ID', + create_time datetime(0) default CURRENT_TIMESTAMP(0) null comment '创建时间', + update_user_id varchar(64) null comment '更新人', + update_time datetime(0) default CURRENT_TIMESTAMP(0) null comment '更新时间' +) + comment '目录表'; \ No newline at end of file