From 0a199d66a417077830b2fc6178e77d65e9e3188a Mon Sep 17 00:00:00 2001
From: xueqingkun <xueqingkun@126.com>
Date: Tue, 30 Jan 2024 09:55:21 +0800
Subject: [PATCH] =?UTF-8?q?manage=20:=20=E6=B7=BB=E5=8A=A0=20=E6=96=87?=
 =?UTF-8?q?=E4=BB=B6=E7=9B=AE=E5=BD=95=E5=8A=9F=E8=83=BD?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 .../file/DirectoryInfoManageController.java   |  55 +++++++++
 .../manage/pojo/vo/DirectoryInfoVo.java       |  14 +++
 .../service/DirectoryInfoManageService.java   |  28 +++++
 .../service/MedicalRecManageService.java      |   7 +-
 .../impl/DirectoryInfoManageServiceImpl.java  | 109 ++++++++++++++++++
 .../impl/MedicalRecManageServiceImpl.java     |  18 +++
 .../mapper/DirectoryInfoMapper.java           |  18 +++
 .../com/supervision/model/DirectoryInfo.java  |  57 +++++++++
 .../service/DirectoryInfoService.java         |  13 +++
 .../impl/DirectoryInfoServiceImpl.java        |  22 ++++
 .../resources/mapper/DirectoryInfoMapper.xml  |  22 ++++
 .../src/main/resources/sqlScript/todo.sql     |  11 ++
 12 files changed, 371 insertions(+), 3 deletions(-)
 create mode 100644 virtual-patient-manage/src/main/java/com/supervision/manage/controller/file/DirectoryInfoManageController.java
 create mode 100644 virtual-patient-manage/src/main/java/com/supervision/manage/pojo/vo/DirectoryInfoVo.java
 create mode 100644 virtual-patient-manage/src/main/java/com/supervision/manage/service/DirectoryInfoManageService.java
 create mode 100644 virtual-patient-manage/src/main/java/com/supervision/manage/service/impl/DirectoryInfoManageServiceImpl.java
 create mode 100644 virtual-patient-model/src/main/java/com/supervision/mapper/DirectoryInfoMapper.java
 create mode 100644 virtual-patient-model/src/main/java/com/supervision/model/DirectoryInfo.java
 create mode 100644 virtual-patient-model/src/main/java/com/supervision/service/DirectoryInfoService.java
 create mode 100644 virtual-patient-model/src/main/java/com/supervision/service/impl/DirectoryInfoServiceImpl.java
 create mode 100644 virtual-patient-model/src/main/resources/mapper/DirectoryInfoMapper.xml

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<DirectoryInfoVo> 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<DirectoryInfo> 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<DirectoryInfoVo> 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<Disease> 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<DirectoryInfo> 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<DirectoryInfoVo> getFileDirectory(String parentDirId) {
+
+
+        List<DirectoryInfo> directoryInfoList = directoryInfoService.lambdaQuery()
+                .eq(StrUtil.isNotEmpty(parentDirId), DirectoryInfo::getParentId, parentDirId).list();
+
+        if (CollectionUtil.isEmpty(directoryInfoList)){
+            return new ArrayList<>();
+        }
+
+        return directoryInfoListToTree(directoryInfoList);
+    }
+
+
+    private List<DirectoryInfoVo> directoryInfoListToTree(List<DirectoryInfo> directoryInfoList) {
+
+        ArrayList<DirectoryInfoVo> 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<Disease> 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<DirectoryInfo> {
+
+}
+
+
+
+
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<DirectoryInfo> {
+
+}
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<DirectoryInfoMapper, DirectoryInfo>
+    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 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper
+        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.supervision.mapper.DirectoryInfoMapper">
+
+    <resultMap id="BaseResultMap" type="com.supervision.model.DirectoryInfo">
+            <result property="id" column="id" jdbcType="VARCHAR"/>
+            <result property="directoryName" column="directory_name" jdbcType="VARCHAR"/>
+            <result property="parentId" column="parent_id" jdbcType="VARCHAR"/>
+            <result property="createUserId" column="create_user_id" jdbcType="VARCHAR"/>
+            <result property="createTime" column="create_time" jdbcType="TIMESTAMP"/>
+            <result property="updateUserId" column="update_user_id" jdbcType="VARCHAR"/>
+            <result property="updateTime" column="update_time" jdbcType="TIMESTAMP"/>
+    </resultMap>
+
+    <sql id="Base_Column_List">
+        id,directory_name,parent_id,
+        create_user_id,create_time,update_user_id,
+        update_time
+    </sql>
+</mapper>
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