月球大数据地理空间分析展示平台-【后端】-月球后台服务
1
13693261870
2024-11-17 796b44ea813a1133beae4f3a67f1c0263510c0c7
src/main/java/com/moon/server/service/data/UploadService.java
@@ -15,18 +15,15 @@
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import java.io.File;
import java.sql.Timestamp;
import java.util.ArrayList;
import java.util.List;
/**
 * 数据上传服务类
 *
 * @author WWW
 */
@Service
@SuppressWarnings("ALL")
public class UploadService extends BaseUploadService implements UploadMapper {
    @Autowired
    UploadMapper uploadMapper;
@@ -42,6 +39,9 @@
    @Autowired
    DirService dirService;
    @Resource
    ReadRasterService readRasterService;
    @Override
    public List<CoordEntity> selectCoords(String zoning) {
@@ -63,23 +63,14 @@
        return uploadMapper.selectFmeLog(parentid);
    }
    /**
     * 插入文件
     */
    public void insertFiles(UserEntity ue, List<MetaFileEntity> list, HttpServletRequest req) {
        checkMetaFiles(ue, list);
        List<MetaFileEntity> xlsList = getExcelFiles(list);
        readRasterInfo(list);
        loadData(list);
        copyFiles(list);
        insertMetas(list);
        if (xlsList.size() > 0) {
            String guid = excelLoader(xlsList, req);
        }
    }
    /**
     * 检查元数据文件
     */
    private void checkMetaFiles(UserEntity ue, List<MetaFileEntity> list) {
        Timestamp createTime = WebHelper.getCurrentTimestamp();
        String tempPath = pathHelper.getConfig().getTempPath();
@@ -106,9 +97,18 @@
        }
    }
    /**
     * 获取目录编码
     */
    private void readRasterInfo(List<MetaFileEntity> list) {
        for (MetaFileEntity mf : list) {
            if (null != mf.getMsg()) {
                continue;
            }
            if (StaticData.RASTER_EXT.contains("." + mf.getType())) {
                readRasterService.readRasterInfo(mf, mf.getPath());
            }
        }
    }
    private String getDirCode(MetaFileEntity mf) {
        if (StringHelper.isEmpty(mf.getDircode())) {
            return null;
@@ -117,9 +117,6 @@
        return StringHelper.getRightLike(mf.getDircode().substring(0, 2));
    }
    /**
     * 获取Excel元数据文件
     */
    private List<MetaFileEntity> getExcelFiles(List<MetaFileEntity> list) {
        List<MetaFileEntity> xlsList = new ArrayList<>();
        for (MetaFileEntity mf : list) {
@@ -141,16 +138,10 @@
        return xlsList;
    }
    /**
     * 是/否为Excel
     */
    private boolean isExcel(MetaFileEntity mf) {
        return StaticData.XLS.equals(mf.getExtName()) || StaticData.XLSX.equals(mf.getExtName());
    }
    /**
     * 获取Xls目录
     */
    private String getXlsPath(String filePath) {
        String tempPath = pathHelper.getConfig().getTempPath() + File.separator;
        String subPath = filePath.substring(tempPath.length());
@@ -164,9 +155,6 @@
        return subPath;
    }
    /**
     * 复制Xls文件
     */
    private String copyXlsFile(String xlsBasePath, int i, MetaFileEntity mf) {
        try {
            String xlsPath = xlsBasePath + File.separator + i;
@@ -187,9 +175,6 @@
        }
    }
    /**
     * 加载数据
     */
    private void loadData(List<MetaFileEntity> list) {
        for (MetaFileEntity mf : list) {
            if (null != mf.getMsg() || StringHelper.isEmpty(mf.getEntity())) {
@@ -201,9 +186,6 @@
        }
    }
    /**
     * 加载空间数据
     */
    public void loadSpatialData(MetaFileEntity mf) {
        BasicMapper basicMapper = ClassHelper.getBasicMapper(mf.getEntity());
        if (null == basicMapper) {
@@ -249,9 +231,6 @@
        }
    }
    /**
     * 批量插入
     */
    private <T> int batchInserts(BasicMapper basicMapper, List<T> list) {
        int rows = 0;
        //int count = (int) Math.ceil(list.size() / StaticData.D100)
@@ -267,9 +246,6 @@
        return rows;
    }
    /**
     * 设置创建信息
     */
    private <T> void setCreateInfo(List<T> list, MetaFileEntity mf) {
        try {
            if (!(list.get(0) instanceof BaseEntity)) {
@@ -291,9 +267,6 @@
        }
    }
    /**
     * 复制文件
     */
    private void copyFiles(List<MetaFileEntity> list) {
        List<String> gdbList = new ArrayList<>();
        for (MetaFileEntity mf : list) {
@@ -345,9 +318,6 @@
        }
    }
    /**
     * 复制单个文件
     */
    private int copySingleFile(MetaFileEntity mf) {
        File file = new File(mf.getPath());
        if (!file.exists()) {
@@ -380,9 +350,6 @@
        return 1;
    }
    /**
     * 设置旧元数据信息
     */
    private void setOldMeta(MetaFileEntity mf, MetaEntity old) {
        mf.setPath(old.getPath());
        mf.setTab(old.getTab());
@@ -390,9 +357,6 @@
        mf.setEntity(old.getEventid());
    }
    /**
     * 复制多个文件
     */
    private void copyMultiFile(MetaFileEntity mf, List<String> extList) {
        String path = mf.getPath();
        int status = copySingleFile(mf);
@@ -425,9 +389,6 @@
        }
    }
    /**
     * 复制文件夹文件
     */
    private void copyFolderFile(MetaFileEntity mf) {
        File file = new File(mf.getPath());
        if (!file.exists()) {
@@ -463,9 +424,6 @@
        mf.setPath(subPath);
    }
    /**
     * 根据GUID查找路径
     */
    private String findPathByGuid(List<MetaFileEntity> list, MetaFileEntity mf) {
        for (MetaFileEntity meta : list) {
            if (meta.getGuid().equals(mf.getGuid()) && !meta.getPath().equals(mf.getPath())) {
@@ -476,17 +434,11 @@
        return null;
    }
    /**
     * 创建文件链接
     */
    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) {
        int metaId = insertParentMeta(list);
@@ -499,7 +451,7 @@
            MetaEntity me = createMeta(mf, metaId);
            if (StaticData.NGDB.equals(me.getType())) {
                if (guids.contains(me.getGuid())) {
                    me.setIsmeta((short)-1);
                    me.setIsmeta((short) -1);
                } else {
                    guids.add(me.getGuid());
                }
@@ -511,9 +463,6 @@
        }
    }
    /**
     * 创建元数据
     */
    private MetaEntity createMeta(MetaFileEntity mf, int metaId) {
        MetaEntity me = new MetaEntity();
        me.setMetaid(metaId);
@@ -535,13 +484,23 @@
        me.setRows(mf.getRows());
        me.setCreateUser(mf.getCreateUser());
        me.setCreateTime(mf.getCreateTime());
        // 栅格信息
        me.setGeom(StringHelper.isEmpty(mf.getGeom()) ? "null" : mf.getGeom());
        me.setSensortype(mf.getSensortype());
        me.setAcqTime(mf.getAcqTime());
        me.setResolution(mf.getResolution());
        me.setGridsize(mf.getGridsize());
        me.setCoorSys(mf.getCoorSys());
        me.setEpsg(mf.getEpsg());
        me.sethDatum(mf.gethDatum());
        me.setMataType(mf.getMataType());
        me.setBands(mf.getBands());
        me.setBandType(mf.getBandType());
        me.setCt(mf.getCt());
        return me;
    }
    /**
     * 插入父元数据
     */
    private int insertParentMeta(List<MetaFileEntity> list) {
        for (MetaFileEntity mf : list) {
            if (null != mf.getMsg() || !mf.getIsMeta()) {
@@ -559,9 +518,6 @@
        return 0;
    }
    /**
     * Excel入库
     */
    private String excelLoader(List<MetaFileEntity> xlsList, HttpServletRequest req) {
        try {
            MetaFileEntity xlsMeta = getExcelMeta(xlsList);
@@ -575,9 +531,6 @@
        return null;
    }
    /**
     * 获取Excel的元数据
     */
    private MetaFileEntity getExcelMeta(List<MetaFileEntity> xlsList) {
        if (null == xlsList || xlsList.isEmpty()) {
            return null;