From d403c1ff86d0f40c7554f07215a8f3942901018c Mon Sep 17 00:00:00 2001 From: 13693261870 <252740454@qq.com> Date: 星期日, 20 十一月 2022 10:50:51 +0800 Subject: [PATCH] 1 --- src/main/java/com/lf/server/service/data/DataLoaderService.java | 234 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 233 insertions(+), 1 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 e1960c6..57fe974 100644 --- a/src/main/java/com/lf/server/service/data/DataLoaderService.java +++ b/src/main/java/com/lf/server/service/data/DataLoaderService.java @@ -1,7 +1,19 @@ package com.lf.server.service.data; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +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.service.all.BaseUploadService; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; + +import java.io.File; +import java.util.List; /** * 鏁版嵁鍏ュ簱 @@ -9,5 +21,225 @@ */ @Service public class DataLoaderService extends BaseUploadService { - // + @Autowired + MetaService metaService; + + @Autowired + MetaFileService metaFileService; + + private final static String XLS = ".xls"; + + private final static String MDB = ".mdb"; + + private final static String SHP = ".shp"; + + private final static String GDB = ".gdb"; + + /** + * 鎻掑叆鏂囦欢 + */ + public int insertFiles(MetaEntity entity, List<MetaFileEntity> list, List<TabMapperEntity> tabs) { + int count = 0; + try { + String temp = pathHelper.getConfig().getTempPath(); + String root = pathHelper.getUploadFullPath(); + + for (MetaFileEntity mf : list) { + String filePath = getFilePath(temp, root, mf); + if (null == filePath) { + continue; + } + + // 鍏冩暟鎹� + MetaEntity me = createMetaEntity(entity, mf); + if (metaService.insert(me) < 1) { + continue; + } + + // 鍏冩暟鎹枃浠� + MetaFileEntity mfe = createMetaFileEntity(entity, mf, filePath); + if (metaFileService.insert(mfe) < 1) { + continue; + } + + // 鍏ュ簱 + if (null != me.getType() && insertDb(me, mfe, tabs) > 0) { + count++; + } + } + } catch (Exception ex) { + log.error(ex.getMessage(), ex); + } + + return count; + } + + /** + * 鑾峰彇鏂囦欢璺緞 + */ + private String getFilePath(String temp, String root, MetaFileEntity mf) { + // 绉诲姩鏂囦欢 + File file = new File(temp + File.separator + mf.getPath()); + File newFile = new File(root + File.separator + mf.getGuid()); + + // 鏂囦欢绫诲瀷 + String metaType = getType(mf.getName().toLowerCase()); + if (null == metaType) { + file.delete(); + return null; + } + + MetaFileEntity old = metaFileService.selectByGuid(mf.getGuid()); + + String filePath = null; + if (null == old) { + filePath = newFile.getPath(); + file.renameTo(newFile); + } else { + filePath = old.getPath(); + file.delete(); + } + + return filePath; + } + + /** + * 鍒涘缓鍏冩暟鎹疄浣� + */ + private MetaEntity createMetaEntity(MetaEntity entity, MetaFileEntity mf) { + MetaEntity me = new MetaEntity(); + me.setDepid(entity.getDepid()); + me.setDirid(entity.getDirid()); + me.setVerid(entity.getVerid()); + me.setType(getType(mf.getName().toLowerCase())); + me.setGather(entity.getGather()); + me.setBatch(entity.getBatch()); + me.setDescr(entity.getDescr()); + me.setName(mf.getName()); + me.setSizes(mf.getSizes()); + me.setCreateTime(entity.getCreateTime()); + me.setCreateUser(entity.getCreateUser()); + + return me; + } + + /** + * 鍒涘缓鍏冩暟鎹枃浠跺疄浣� + */ + private MetaFileEntity createMetaFileEntity(MetaEntity metaEntity, MetaFileEntity entity, String filePath) { + MetaFileEntity mfe = new MetaFileEntity(); + mfe.setName(entity.getName()); + mfe.setMetaid(metaEntity.getId()); + mfe.setGuid(entity.getGuid()); + mfe.setSizes(entity.getSizes()); + mfe.setPath(FileHelper.getRelativePath(filePath)); + mfe.setCreateUser(metaEntity.getCreateUser()); + mfe.setCreateTime(metaEntity.getCreateTime()); + + return mfe; + } + + /** + * 鑾峰彇鏂囦欢绫诲瀷 + */ + private String getType(String name) { + if (name.contains(XLS)) { + return "xls"; + } + if (name.contains(MDB)) { + return "mdb"; + } + if (name.contains(SHP)) { + return "shp"; + } + if (name.contains(GDB)) { + return "gdb"; + } + + return null; + } + + /** + * 鎻掑叆鏁版嵁搴� + */ + private Integer insertDb(MetaEntity me, MetaFileEntity mfe, List<TabMapperEntity> tabs) { + String root = pathHelper.getConfig().getUploadPath(); + switch (me.getType()) { + case "xls": + return insertXls(root, mfe, tabs); + case "mdb": + return insertMdb(root, mfe, tabs); + case "shp": + return insertShp(root, mfe, tabs); + case "gdb": + return insertGdb(root, mfe, tabs); + default: + return 0; + } + } + + /** + * 鎻掑叆Excel + */ + private Integer insertXls(String root, MetaFileEntity mfe, List<TabMapperEntity> tabs) { + TabMapperEntity tab = getTabEntity(mfe, tabs); + if (null == tab) { + return 0; + } + + BaseMapper baseMapper = ClassHelper.getBasicMapper(tab.getEntity()); + if (null == baseMapper) { + return 0; + } + + String className = ClassHelper.getClassName(baseMapper); + Class clazz = ClassHelper.getEntityClass(className); + if (null == clazz) { + return 0; + } + + List<?> list = ExcelHelper.readExcel(clazz, root + File.separator + mfe.getPath()); + if (null == list || list.isEmpty()) { + return 0; + } + + return 0; + } + + /** + * 鎻掑叆MDB + */ + private Integer insertMdb(String root, MetaFileEntity mfe, List<TabMapperEntity> tabs) { + + return 0; + } + + /** + * 鎻掑叆SHP + */ + private Integer insertShp(String root, MetaFileEntity mfe, List<TabMapperEntity> tabs) { + + return 0; + } + + /** + * 鎻掑叆GDB + */ + private Integer insertGdb(String root, MetaFileEntity mfe, List<TabMapperEntity> tabs) { + + return 0; + } + + /** + * 鑾峰彇琛ㄦ槧灏勫疄浣撶被 + */ + private TabMapperEntity getTabEntity(MetaFileEntity mfe, List<TabMapperEntity> tabs) { + for (TabMapperEntity tab : tabs) { + if (tab.getFileName().equals(mfe.getName())) { + return tab; + } + } + + return null; + } } -- Gitblit v1.9.3