Forráskód Böngészése

体检报告删除和新增 同步我的附件

ct 2 hete
szülő
commit
2491b1f5d7

+ 1 - 1
fs-service/src/main/java/com/fs/his/domain/FsAttachment.java

@@ -28,7 +28,7 @@ public class FsAttachment extends BaseEntity{
     private Long userId;
 
     /** 文件类型 0:文件夹 1图片 */
-    @Excel(name = "文件类型 0:文件夹 1图片")
+    @Excel(name = "文件类型 0:文件夹 1图片 2体检报告")
     private Integer type;
 
     /** 文件大小(kb) */

+ 5 - 0
fs-service/src/main/java/com/fs/his/mapper/FsAttachmentMapper.java

@@ -4,6 +4,7 @@ import java.util.List;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.fs.his.domain.FsAttachment;
 import com.fs.his.param.FsAttachmentPageParam;
+import org.apache.ibatis.annotations.Param;
 
 /**
  * 附件管理Mapper接口
@@ -61,4 +62,8 @@ public interface FsAttachmentMapper extends BaseMapper<FsAttachment>{
     int deleteFsAttachmentByAttachmentIds(Long[] attachmentIds);
 
     List<FsAttachment> selectFsAttachmentListPage(FsAttachmentPageParam fsAttachment);
+
+    FsAttachment selectFsAttachmentByFolderName(@Param("folderName") String folderName);
+
+    int deleteFsAttachmentByReportId(@Param("reportId")Long reportId);
 }

+ 4 - 0
fs-service/src/main/java/com/fs/his/service/IFsAttachmentService.java

@@ -63,4 +63,8 @@ public interface IFsAttachmentService extends IService<FsAttachment>{
      * @return 结果
      */
     int deleteFsAttachmentByAttachmentId(Long attachmentId);
+
+    FsAttachment selectFsAttachmentByFolderName(String folderName);
+
+    int deleteFsAttachmentByReportId(Long reportId);
 }

+ 47 - 31
fs-service/src/main/java/com/fs/his/service/impl/FsAttachmentServiceImpl.java

@@ -35,8 +35,7 @@ public class FsAttachmentServiceImpl extends ServiceImpl<FsAttachmentMapper, FsA
      * @return 附件管理
      */
     @Override
-    public FsAttachment selectFsAttachmentByAttachmentId(Long attachmentId)
-    {
+    public FsAttachment selectFsAttachmentByAttachmentId(Long attachmentId) {
         return baseMapper.selectFsAttachmentByAttachmentId(attachmentId);
     }
 
@@ -47,8 +46,7 @@ public class FsAttachmentServiceImpl extends ServiceImpl<FsAttachmentMapper, FsA
      * @return 附件管理
      */
     @Override
-    public List<FsAttachment> selectFsAttachmentList(FsAttachment fsAttachment)
-    {
+    public List<FsAttachment> selectFsAttachmentList(FsAttachment fsAttachment) {
         return baseMapper.selectFsAttachmentList(fsAttachment);
     }
 
@@ -64,9 +62,8 @@ public class FsAttachmentServiceImpl extends ServiceImpl<FsAttachmentMapper, FsA
      * @return 结果
      */
     @Override
-    public R insertFsAttachment(FsAttachment fsAttachment)
-    {
-        if (fsAttachment.getUserId() == null){
+    public R insertFsAttachment(FsAttachment fsAttachment) {
+        if (fsAttachment.getUserId() == null) {
             return R.error("未获取到创建人!");
         }
         Integer type = fsAttachment.getType();
@@ -79,56 +76,68 @@ public class FsAttachmentServiceImpl extends ServiceImpl<FsAttachmentMapper, FsA
         queryParam.setType(fsAttachment.getType());
         queryParam.setFileName(fsAttachment.getFileName());
         List<FsAttachment> list = selectFsAttachmentList(queryParam);
-        if (type == null){
+        if (type == null) {
             return R.error("请选择创建文件还是文件夹!");
-        } else if (type == 1){
+        } else if (type == 1) {
             //文件
-            if (StringUtils.isBlank(fsAttachment.getUrl())){
+            if (StringUtils.isBlank(fsAttachment.getUrl())) {
                 return R.error("文件不存在");
             }
             //上传类型为文件时可获取为文件名称
-            if (StringUtils.isBlank(fileName)){
+            if (StringUtils.isBlank(fileName)) {
                 fileName = FileNameExtractor.getFileNameFromUrl(fsAttachment.getUrl());
             }
-            if (list != null && !list.isEmpty()){
-                if (fileName.contains(".")){
+            if (list != null && !list.isEmpty()) {
+                if (fileName.contains(".")) {
                     int index = fileName.lastIndexOf(".");
                     String name = fileName.substring(0, index);
-                    fileName = name + "(" + (list.size() + 1)+ ")" + fileName.substring(index+1);
+                    fileName = name + "(" + (list.size() + 1) + ")" + "." + fileName.substring(index + 1);
                 }
 
             }
             long size = Objects.requireNonNull(ImageUtils.getImage(fsAttachment.getUrl())).length / 1024; // 单位为 KB
             fsAttachment.setSize(size);
-        } else if (type == 0){
+        } else if (type == 0) {
             //文件夹
-            if (StringUtils.isBlank(fsAttachment.getFileName())){
-                return R.error("文件夹名称不能为空不存在");
+            if (StringUtils.isBlank(fsAttachment.getFileName())) {
+                return R.error("文件夹名称不能为空");
             }
-            if (list != null && !list.isEmpty()){
-                fileName = fileName + "(" + (list.size() + 1)+ ")";
+            if (list != null && !list.isEmpty()) {
+                fileName = fileName + "(" + (list.size() + 1) + ")";
+
+            }
+        } else if (type == 2) {
+            //体检报告
+            if (StringUtils.isBlank(fsAttachment.getUrl())) {
+                return R.error("体检报告不存在");
+            }
+            if (StringUtils.isBlank(fsAttachment.getFileName())) {
+                return R.error("名称不能为空");
+            }
+            if (list != null && !list.isEmpty()) {
+                fileName = fileName + "(" + (list.size() + 1) + ")";
 
             }
         }
 
 
         fsAttachment.setFileName(fileName);
-        if (fsAttachment.getParentId() == null){
+        if (fsAttachment.getParentId() == null) {
             fsAttachment.setParentId(0L);
         }
-        if (fsAttachment.getParentId() != 0){
+        if (fsAttachment.getParentId() != 0) {
             //查询父文件是否是文件夹
             FsAttachment parentItem = selectFsAttachmentByAttachmentId(fsAttachment.getParentId());
-            if (parentItem == null){
+            if (parentItem == null) {
                 return R.error("上级文件夹不存在");
-            }else {
-                if (parentItem.getType() != 0){
+            } else {
+                if (parentItem.getType() != 0) {
                     return R.error("上级文件夹不存在!");
                 }
             }
         }
         fsAttachment.setCreateTime(DateUtils.getNowDate());
-        return baseMapper.insertFsAttachment(fsAttachment)>0?R.ok():R.error();
+        return baseMapper.insertFsAttachment(fsAttachment) > 0 ? R.ok() : R.error();
     }
 
     /**
@@ -138,8 +147,7 @@ public class FsAttachmentServiceImpl extends ServiceImpl<FsAttachmentMapper, FsA
      * @return 结果
      */
     @Override
-    public int updateFsAttachment(FsAttachment fsAttachment)
-    {
+    public int updateFsAttachment(FsAttachment fsAttachment) {
         fsAttachment.setUpdateTime(DateUtils.getNowDate());
         return baseMapper.updateFsAttachment(fsAttachment);
     }
@@ -151,8 +159,7 @@ public class FsAttachmentServiceImpl extends ServiceImpl<FsAttachmentMapper, FsA
      * @return 结果
      */
     @Override
-    public int deleteFsAttachmentByAttachmentIds(Long[] attachmentIds)
-    {
+    public int deleteFsAttachmentByAttachmentIds(Long[] attachmentIds) {
         return baseMapper.deleteFsAttachmentByAttachmentIds(attachmentIds);
     }
 
@@ -163,8 +170,17 @@ public class FsAttachmentServiceImpl extends ServiceImpl<FsAttachmentMapper, FsA
      * @return 结果
      */
     @Override
-    public int deleteFsAttachmentByAttachmentId(Long attachmentId)
-    {
+    public int deleteFsAttachmentByAttachmentId(Long attachmentId) {
         return baseMapper.deleteFsAttachmentByAttachmentId(attachmentId);
     }
+
+    @Override
+    public FsAttachment selectFsAttachmentByFolderName(String folderName) {
+        return baseMapper.selectFsAttachmentByFolderName(folderName);
+    }
+
+    @Override
+    public int deleteFsAttachmentByReportId(Long reportId) {
+        return baseMapper.deleteFsAttachmentByReportId(reportId);
+    }
 }

+ 58 - 3
fs-service/src/main/java/com/fs/medical/service/impl/PhysicalExamReportServiceImpl.java

@@ -1,12 +1,17 @@
 package com.fs.medical.service.impl;
 
+import com.fs.common.utils.date.DateUtil;
+import com.fs.his.domain.FsAttachment;
+import com.fs.his.service.IFsAttachmentService;
 import com.fs.medical.domain.PhysicalExamReport;
 import com.fs.medical.mapper.PhysicalExamReportMapper;
 import com.fs.medical.param.PhysicalExamReportQueryDto;
 import com.fs.medical.service.PhysicalExamReportService;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
 
+import java.time.LocalDateTime;
 import java.util.Date;
 import java.util.List;
 
@@ -18,6 +23,8 @@ public class PhysicalExamReportServiceImpl implements PhysicalExamReportService
 
     @Autowired
     private PhysicalExamReportMapper physicalExamReportMapper;
+    @Autowired
+    private IFsAttachmentService attachmentService;
 
     @Override
     public PhysicalExamReport getById(Long reportId) {
@@ -35,8 +42,50 @@ public class PhysicalExamReportServiceImpl implements PhysicalExamReportService
     }
 
     @Override
+    @Transactional(rollbackFor = Exception.class)
     public boolean save(PhysicalExamReport report) {
-        return physicalExamReportMapper.insert(report) > 0;
+        if (report.getCreateTime() == null){
+            report.setCreateTime(LocalDateTime.now());
+        }
+        boolean flag = physicalExamReportMapper.insert(report)>0;
+        if (flag) {
+            createFile(report);
+        }
+        return flag;
+    }
+
+    /**
+     * 存储到我的附件
+     * @param report
+     */
+    private void createFile(PhysicalExamReport report) {
+        Long userId = report.getUserId();
+        if (userId == null){
+            return;
+        }
+        //更新文件夹
+        LocalDateTime createTime = report.getCreateTime();
+        String folderName = DateUtil.formatLocalDateTime(createTime, "yyyyMMdd");
+        String fileName = "体检报告";
+        //查看文件夹是否存在
+        FsAttachment folder = attachmentService.selectFsAttachmentByFolderName(folderName);
+        if (folder == null){
+            //新建文件
+            folder = new FsAttachment();
+            folder.setParentId(0L);
+            folder.setType(0);
+            folder.setFileName(folderName);
+            folder.setUserId(userId);
+            attachmentService.insertFsAttachment(folder);
+        }
+        //存报告
+        FsAttachment fsAttachment = new FsAttachment();
+        fsAttachment.setParentId(folder.getAttachmentId());
+        fsAttachment.setFileName(fileName);
+        fsAttachment.setType(2);
+        fsAttachment.setUrl(report.getReportId().toString()); //报告id
+        fsAttachment.setUserId(userId);
+        attachmentService.insertFsAttachment(fsAttachment);
     }
 
     @Override
@@ -45,12 +94,18 @@ public class PhysicalExamReportServiceImpl implements PhysicalExamReportService
     }
 
     @Override
+    @Transactional(rollbackFor = Exception.class)
     public boolean deleteById(Long reportId) {
-        return physicalExamReportMapper.deleteById(reportId) > 0;
+        boolean flag = physicalExamReportMapper.deleteById(reportId) > 0;
+        if (flag) {
+            //删除附件体检报告
+            attachmentService.deleteFsAttachmentByReportId(reportId);
+        }
+        return flag;
     }
 
     @Override
     public List<PhysicalExamReport> selectPageList(PhysicalExamReportQueryDto queryDto) {
         return physicalExamReportMapper.selectPageList(queryDto);
     }
-}
+}

+ 6 - 0
fs-service/src/main/resources/mapper/his/FsAttachmentMapper.xml

@@ -47,6 +47,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="url != null  and url != ''"> and url like concat('%', #{url}, '%')</if>
         </where>
     </select>
+    <select id="selectFsAttachmentByFolderName" resultType="com.fs.his.domain.FsAttachment">
+        <include refid="selectFsAttachmentVo"/> where type = 0 and file_name like #{folderName}
+    </select>
 
     <insert id="insertFsAttachment" parameterType="FsAttachment" useGeneratedKeys="true" keyProperty="attachmentId">
         insert into fs_attachment
@@ -97,4 +100,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             #{attachmentId}
         </foreach>
     </delete>
+    <delete id="deleteFsAttachmentByReportId">
+        delete from fs_attachment where url like #{reportId} and type = 2
+    </delete>
 </mapper>