From 3fac36b394206df5f8002fa32bd360021fec743f Mon Sep 17 00:00:00 2001
From: 13693261870 <252740454@qq.com>
Date: 星期四, 09 二月 2023 19:13:13 +0800
Subject: [PATCH] 1

---
 src/main/java/com/lf/server/service/data/UploadService.java |   81 ++++++++++++++++++++++++++++++++++------
 1 files changed, 68 insertions(+), 13 deletions(-)

diff --git a/src/main/java/com/lf/server/service/data/UploadService.java b/src/main/java/com/lf/server/service/data/UploadService.java
index a8dcc75..f9c9a34 100644
--- a/src/main/java/com/lf/server/service/data/UploadService.java
+++ b/src/main/java/com/lf/server/service/data/UploadService.java
@@ -57,13 +57,13 @@
     /**
      * 鎻掑叆鏂囦欢
      */
-    public List<MetaEntity> insertFiles(UserEntity ue, List<MetaFileEntity> list, HttpServletRequest req) {
+    public void insertFiles(UserEntity ue, List<MetaFileEntity> list, HttpServletRequest req) {
         checkMetaFiles(ue, list);
         excelLoader(list, req);
         loadData(list);
         copyFiles(list);
-
-        return insertMetas(list);
+        publishFiles(list);
+        insertMetas(list);
     }
 
     /**
@@ -291,6 +291,10 @@
     private void copyFiles(List<MetaFileEntity> list) {
         List<String> gdbList = new ArrayList<>();
         for (MetaFileEntity mf : list) {
+            if (null != mf.getMsg()) {
+                continue;
+            }
+
             switch (mf.getExtName()) {
                 case StaticData.MPT:
                     copyMultiFile(mf, StaticData.MPT_EXT);
@@ -365,7 +369,6 @@
      */
     private void copyMultiFile(MetaFileEntity mf, List<String> extList) {
         String path = mf.getPath();
-
         int status = copySingleFile(mf);
         if (status < 1) {
             for (int i = 0, c = extList.size(); i < c; i++) {
@@ -451,22 +454,74 @@
     }
 
     /**
-     * 鎻掑叆鍏冩暟鎹�
+     * 鍙戝竷鏂囦欢
      */
-    private List<MetaEntity> insertMetas(List<MetaFileEntity> list) {
-        List<MetaEntity> metas = new ArrayList<>();
+    private void publishFiles(List<MetaFileEntity> list) {
         for (MetaFileEntity mf : list) {
-            if (StringHelper.isEmpty(mf.getMsg())) {
-                metas.add(createMeta(mf));
+            if (null != mf.getMsg()) {
+                continue;
+            }
+            switch (mf.getExtName()) {
+                case StaticData.MPT:
+                    linkFiles(mf, StaticData.MPT_EXT, pathHelper.getConfig().getPublishMptPath());
+                    break;
+                case StaticData.D3DML:
+                    linkFiles(mf, null, pathHelper.getConfig().getPublish3dmlPath());
+                    break;
+                default:
+                    break;
             }
         }
-        if (metas.isEmpty()) {
-            return null;
+    }
+
+    /**
+     * 閾炬帴鏂囦欢
+     */
+    private void linkFiles(MetaFileEntity mf, List<String> exts, String publishPath) {
+        String uploadPath = pathHelper.getConfig().getUploadPath();
+        String source = uploadPath + File.separator + mf.getPath();
+        String target = publishPath + File.separator + mf.getName();
+
+        File sourceFile = new File(source);
+        if (!sourceFile.exists() || sourceFile.isDirectory()) {
+            return;
         }
 
-        int rows = metaService.inserts(metas);
+        createFileLink(source, target);
+        if (null == exts) {
+            return;
+        }
 
-        return rows > 0 ? metas : null;
+        for (String ext : exts) {
+            File f=new File(source.replace(mf.getExtName(), ext));
+            if (f.exists()&&!f.isDirectory()) {
+                createFileLink(source.replace(mf.getExtName(), ext), target.replace(mf.getExtName(), ext));
+            }
+        }
+    }
+
+    /**
+     * 鍒涘缓鏂囦欢閾炬帴
+     */
+    private void createFileLink(String source, String target) {
+        String cmd = String.format("cmd /c mklink \"%s\" \"%s\"", target, source);
+        WebHelper.exec(cmd);
+    }
+
+    /**
+     * 鎻掑叆鍏冩暟鎹�
+     */
+    private void insertMetas(List<MetaFileEntity> list) {
+        for (MetaFileEntity mf : list) {
+            if (null != mf.getMsg()) {
+                continue;
+            }
+
+            MetaEntity me = createMeta(mf);
+            metaService.insert(me);
+
+            mf.setMsg(me.getId() > 0 ? "鎴愬姛" : "澶辫触");
+        }
     }
 
     /**

--
Gitblit v1.9.3