浏览代码

同步bom

24282 1 年之前
父节点
当前提交
6fc57aa5a5
共有 1 个文件被更改,包括 37 次插入48 次删除
  1. 37 48
      sd-starter/src/test/java/SyncBomBootTest.java

+ 37 - 48
sd-starter/src/test/java/SyncBomBootTest.java

@@ -36,11 +36,8 @@ import java.util.stream.Collectors;
 @RunWith(SpringRunner.class)
 @SpringBootTest(classes = SdApplication.class, webEnvironment = SpringBootTest.WebEnvironment.DEFINED_PORT)
 public class SyncBomBootTest {
-
     private static final Map<String, Long> classifyIdMap = new HashMap<>();
-
-    private static String oldUrlPrefix = "http://www.printmat.cn:8181/file/";
-
+    private static final String oldUrlPrefix = "http://www.printmat.cn:8181/file/";
     static {
         classifyIdMap.put("1001", 1682221249268375554L);
         classifyIdMap.put("1002", 1682221303530086402L);
@@ -89,7 +86,6 @@ public class SyncBomBootTest {
         DataSource sdDataSource = dynamicRoutingDataSource.getDataSource("business");
         List<Bom> bomList = saveBom(sdDataSource);
 
-
         System.out.println();
     }
 
@@ -98,19 +94,7 @@ public class SyncBomBootTest {
         List<Bom> list = bomService.list(q -> q.isNotNull(Bom::getOldId));
         List<Long> bomIdList = list.stream().map(BaseIdPo::getId).collect(Collectors.toList());
         bomService.removeBatchByIds(bomIdList);
-
-
-        if (bomIdList.size() > 0) {
-            DynamicDataSourceContextHolder.push(BaseSourceConstant.BASE);
-            List<FileInfo> fileInfoList = fileInfoService.list(q -> q.in(FileInfo::getBusinessId, bomIdList));
-            if (fileInfoList.size() > 0) {
-                fileInfoList.forEach(item -> {
-                    getObsClient().deleteObject(bucketName, item.getFileUrl());
-                    fileInfoService.removeById(item.getId());
-                });
-            }
-            DynamicDataSourceContextHolder.poll();
-        }
+        removeFile(bomIdList);
         LogicHolder.clear();
 
         String sql = "SELECT\n" +
@@ -147,32 +131,15 @@ public class SyncBomBootTest {
             map.put("bomClassifyId", classifyIdMap.get(bomClassifyId));
 
             Object mainImgUrlObj = map.get("mainImgUrl");
-
             if (mainImgUrlObj == null) {
                 continue;
             }
-
             String mainImgUrl = mainImgUrlObj.toString();
             if (StrUtil.isBlank(mainImgUrl)) {
                 continue;
             }
-
-            String objectKey = getFileName(mainImgUrl);
-
-            byte[] bytes = HttpUtil.downloadBytes(oldUrlPrefix + mainImgUrl);
-            InputStream byteArrayInputStream = new ByteArrayInputStream(bytes);
-            getObsClient().putObject(bucketName, objectKey, byteArrayInputStream);
-
-            // 保存文件
-            FileInfo fileInfo = new FileInfo();
-            fileInfo.setFileUrl(objectKey);
-            fileInfo.setFileName(FileUtil.getName(mainImgUrl));
-            fileInfo.setBusinessId(id);
-            fileInfo.setBusinessType(0);
-            fileInfoService.save(fileInfo);
-
-            map.put("mainImgUrl", url + objectKey);
-
+            String fileUrl = uploadFile(mainImgUrl, id);
+            map.put("mainImgUrl", fileUrl);
         }
 
         List<Bom> bomList = BeanUtil.copyToList(bomMapList, Bom.class);
@@ -181,27 +148,49 @@ public class SyncBomBootTest {
         return bomList;
     }
 
-    private String getFileName(String fileUrl) {
+    private String uploadFile(String url, Long businessId) {
+        String objectKey = getFileName(url);
+        byte[] bytes = HttpUtil.downloadBytes(oldUrlPrefix + url);
+        InputStream inputStream = new ByteArrayInputStream(bytes);
+        getObsClient().putObject(bucketName, objectKey, inputStream);
+
+        FileInfo fileInfo = new FileInfo();
+        fileInfo.setFileUrl(objectKey);
+        fileInfo.setFileName(FileUtil.getName(url));
+        fileInfo.setBusinessId(businessId);
+        fileInfo.setBusinessType(0);
+        fileInfoService.save(fileInfo);
+        return url + objectKey;
+    }
 
-        String fileName = FileUtil.getName(fileUrl);
+    private void removeFile(List<Long> businessIdList) {
+        if (ObjectUtil.isEmpty(businessIdList)) {
+            return;
+        }
+        DynamicDataSourceContextHolder.push(BaseSourceConstant.BASE);
+        List<FileInfo> fileInfoList = fileInfoService.list(q -> q.in(FileInfo::getBusinessId, businessIdList));
+        if (fileInfoList.size() == 0) {
+            DynamicDataSourceContextHolder.poll();
+            return;
+        }
+        fileInfoList.forEach(item -> {
+            getObsClient().deleteObject(bucketName, item.getFileUrl());
+            fileInfoService.removeById(item.getId());
+        });
+        DynamicDataSourceContextHolder.poll();
+    }
 
-        // 文件后缀名
+    private String getFileName(String fileUrl) {
+        String fileName = FileUtil.getName(fileUrl);
         String suffix = FileUtil.getSuffix(fileName);
-
-        // 文件路径
-        String objectKey = new StringJoiner("/")
+        return new StringJoiner("/")
                 .add(name)
                 .add(active)
                 .add(DateUtil.format(new Date(), "yyyy/MM/dd"))
                 .add(IdUtil.fastSimpleUUID() + (ObjectUtil.isEmpty(suffix) ? "" : "." + suffix))
                 .toString();
-
-        return objectKey;
     }
 
-    /**
-     * 获取oss链接客户端
-     */
     private ObsClient getObsClient() {
         return new ObsClient(ak, sk, endPoint);
     }