Эх сурвалжийг харах

Merge remote-tracking branch 'origin/dev' into dev

# Conflicts:
#	hx-file/src/main/java/com/fjhx/file/service/FileInfoService.java
#	hx-file/src/main/java/com/fjhx/file/service/impl/FileInfoServiceImpl.java
caozj 1 жил өмнө
parent
commit
8ac933b24d

+ 1 - 0
hx-file/src/main/java/com/fjhx/file/service/FileInfoService.java

@@ -68,6 +68,7 @@ public interface FileInfoService extends BaseService<FileInfo> {
      */
     void removeFile(Long businessId);
 
+    void copyFileAndSave(List<ObsFile> fileList, Long businessId, Integer businessType);
 
 
     /**

+ 35 - 1
hx-file/src/main/java/com/fjhx/file/service/impl/FileInfoServiceImpl.java

@@ -7,6 +7,8 @@ import cn.hutool.core.io.IoUtil;
 import cn.hutool.core.util.IdUtil;
 import cn.hutool.core.util.ObjectUtil;
 import com.baomidou.dynamic.datasource.annotation.DS;
+import com.baomidou.mybatisplus.core.toolkit.IdWorker;
+import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
 import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
 import com.baomidou.mybatisplus.core.toolkit.IdWorker;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
@@ -144,7 +146,6 @@ public class FileInfoServiceImpl extends ServiceImpl<FileInfoMapper, FileInfo> i
     }
 
     /**
-     *
      * @param obsFileList  文件列表
      * @param businessId   业务id
      * @param businessType 业务文件类型
@@ -263,4 +264,37 @@ public class FileInfoServiceImpl extends ServiceImpl<FileInfoMapper, FileInfo> i
         return new ObsClient(ak, sk, endPoint);
     }
 
+    /**
+     * 判断文件是否已经绑定业务 是将文件复制一份并保存
+     *
+     * @param fileList     文件列表
+     * @param businessId   业务id
+     * @param businessType 业务文件类型
+     */
+    @DS(BaseSourceConstant.BASE)
+    @Override
+    public void copyFileAndSave(List<ObsFile> fileList, Long businessId, Integer businessType) {
+        if (ObjectUtils.isEmpty(fileList)) {
+            return;
+        }
+        List<Long> fids = fileList.stream().map(ObsFile::getId).collect(Collectors.toList());
+        Map<Long, FileInfo> fileInfoMap = this.mapKEntity(FileInfo::getId, q -> q.in(FileInfo::getId, fids));
+        List<FileInfo> newFileInfo = new ArrayList<>();
+        for (ObsFile obsFile : fileList) {
+            FileInfo fileInfo = fileInfoMap.get(obsFile.getId());
+            if (ObjectUtils.isEmpty(fileInfo)) {
+                continue;
+            }
+            //如果文件已经有业务id了 且业务id不是当前业务id 就将文件复制一份
+            if (ObjectUtils.isNotEmpty(fileInfo.getBusinessId()) && !businessId.equals(fileInfo.getBusinessId())) {
+                long id = IdWorker.getId();
+                fileInfo.setId(id);
+                obsFile.setId(id);
+                newFileInfo.add(fileInfo);
+            }
+        }
+        this.saveBatch(newFileInfo);
+        saveFile(fileList, businessId, businessType);
+    }
+
 }

+ 21 - 0
hx-file/src/main/java/com/fjhx/file/utils/ObsFileUtil.java

@@ -106,4 +106,25 @@ public class ObsFileUtil {
         return fileInfoService.getList(dto);
     }
 
+    /**
+     * 判断文件是否已经绑定业务 是将文件复制一份并保存
+     *
+     * @param fileList   文件列表
+     * @param businessId 业务id
+     */
+    public static void copyFileAndSave(List<ObsFile> fileList, Long businessId) {
+        copyFileAndSave(fileList, businessId, defaultFileType);
+    }
+
+    /**
+     * 判断文件是否已经绑定业务 是将文件复制一份并保存
+     *
+     * @param fileList     文件列表
+     * @param businessId   业务id
+     * @param businessType 业务文件类型
+     */
+    public static void copyFileAndSave(List<ObsFile> fileList, Long businessId, Integer businessType) {
+        fileInfoService.copyFileAndSave(fileList, businessId, businessType);
+    }
+
 }