From bc43c3d892d45ded60e1ba28df9d6a37b7c4d787 Mon Sep 17 00:00:00 2001
From: 13693261870 <252740454@qq.com>
Date: 星期一, 21 十一月 2022 09:12:43 +0800
Subject: [PATCH] 数据检索:添加上传文件功能

---
 src/main/java/com/lf/server/service/data/DataLoaderService.java |   75 ++++++++++++++++++++++++++++++++++---
 1 files changed, 68 insertions(+), 7 deletions(-)

diff --git a/src/main/java/com/lf/server/service/data/DataLoaderService.java b/src/main/java/com/lf/server/service/data/DataLoaderService.java
index 57fe974..5846fce 100644
--- a/src/main/java/com/lf/server/service/data/DataLoaderService.java
+++ b/src/main/java/com/lf/server/service/data/DataLoaderService.java
@@ -1,18 +1,21 @@
 package com.lf.server.service.data;
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.lf.server.entity.all.BaseEntity;
 import com.lf.server.entity.ctrl.TabMapperEntity;
 import com.lf.server.entity.data.MetaEntity;
 import com.lf.server.entity.data.MetaFileEntity;
-import com.lf.server.entity.md.MdZxcgEntity;
 import com.lf.server.helper.ClassHelper;
 import com.lf.server.helper.ExcelHelper;
 import com.lf.server.helper.FileHelper;
+import com.lf.server.mapper.all.GeomBaseMapper;
+import com.lf.server.service.all.BaseQueryService;
 import com.lf.server.service.all.BaseUploadService;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
 import java.io.File;
+import java.lang.reflect.Field;
 import java.util.List;
 
 /**
@@ -57,7 +60,7 @@
                 }
 
                 // 鍏冩暟鎹枃浠�
-                MetaFileEntity mfe = createMetaFileEntity(entity, mf, filePath);
+                MetaFileEntity mfe = createMetaFileEntity(me, mf, filePath);
                 if (metaFileService.insert(mfe) < 1) {
                     continue;
                 }
@@ -126,15 +129,15 @@
     /**
      * 鍒涘缓鍏冩暟鎹枃浠跺疄浣�
      */
-    private MetaFileEntity createMetaFileEntity(MetaEntity metaEntity, MetaFileEntity entity, String filePath) {
+    private MetaFileEntity createMetaFileEntity(MetaEntity me, MetaFileEntity entity, String filePath) {
         MetaFileEntity mfe = new MetaFileEntity();
         mfe.setName(entity.getName());
-        mfe.setMetaid(metaEntity.getId());
+        mfe.setMetaid(me.getId());
         mfe.setGuid(entity.getGuid());
         mfe.setSizes(entity.getSizes());
         mfe.setPath(FileHelper.getRelativePath(filePath));
-        mfe.setCreateUser(metaEntity.getCreateUser());
-        mfe.setCreateTime(metaEntity.getCreateTime());
+        mfe.setCreateUser(me.getCreateUser());
+        mfe.setCreateTime(me.getCreateTime());
 
         return mfe;
     }
@@ -203,7 +206,65 @@
             return 0;
         }
 
-        return 0;
+        setCreateInfo(list, mfe);
+
+        int rows = 0;
+        for (int i = 0, c = list.size(); i < c; i++) {
+            rows += baseMapper.insert(list.get(i));
+        }
+
+        if (baseMapper instanceof GeomBaseMapper) {
+            GeomBaseMapper geomBaseMapper = (GeomBaseMapper) baseMapper;
+            updateGeom(geomBaseMapper, list);
+        }
+
+        return rows;
+    }
+
+    /**
+     * 璁剧疆鍒涘缓淇℃伅
+     */
+    @SuppressWarnings("AlibabaRemoveCommentedCode")
+    private <T> void setCreateInfo(List<T> list, MetaFileEntity mfe) {
+        try {
+            for (T t : list) {
+                Field cuField = t.getClass().getDeclaredField("createuser");
+                cuField.setAccessible(true);
+                cuField.set(t, mfe.getCreateUser());
+
+                Field ctField = t.getClass().getDeclaredField("createtime");
+                ctField.setAccessible(true);
+                ctField.set(t, mfe.getCreateTime());
+            }
+        } catch (Exception ex) {
+            log.error(ex.getMessage(), ex);
+        }
+    }
+
+    /**
+     * 璁剧疆绌洪棿淇℃伅
+     */
+    private <T> void updateGeom(GeomBaseMapper geomBaseMapper, List<T> list) {
+        try {
+            String tabName = BaseQueryService.getTabName(geomBaseMapper);
+            for (T t : list) {
+                Field xField = t.getClass().getDeclaredField("x");
+                xField.setAccessible(true);
+                double x = (double) xField.get(t);
+
+                Field yField = t.getClass().getDeclaredField("y");
+                yField.setAccessible(true);
+                double y = (double) yField.get(t);
+
+                BaseEntity baseEntity = (BaseEntity) t;
+                Integer gid = baseEntity.getGid();
+
+                String wkt = String.format("POINT(%f %f)", x, y);
+                geomBaseMapper.updateGeom(tabName, gid, wkt);
+            }
+        } catch (Exception ex) {
+            log.error(ex.getMessage(), ex);
+        }
     }
 
     /**

--
Gitblit v1.9.3