管道基础大数据平台系统开发-【后端】-Server
1
13693261870
2023-01-11 64e079224e145b0bd0db1d3c8c1db7365f04268c
src/main/java/com/lf/server/service/data/UploadService.java
@@ -1,11 +1,24 @@
package com.lf.server.service.data;
import com.lf.server.entity.all.BaseEntity;
import com.lf.server.entity.all.StaticData;
import com.lf.server.entity.data.CoordEntity;
import com.lf.server.entity.data.DirEntity;
import com.lf.server.entity.data.FmeLogEntity;
import com.lf.server.entity.data.MetaFileEntity;
import com.lf.server.entity.sys.UserEntity;
import com.lf.server.helper.*;
import com.lf.server.mapper.all.BasicMapper;
import com.lf.server.mapper.data.UploadMapper;
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 javax.servlet.http.HttpServletRequest;
import java.io.File;
import java.sql.Timestamp;
import java.util.ArrayList;
import java.util.List;
/**
@@ -13,9 +26,12 @@
 * @author WWW
 */
@Service
public class UploadService implements UploadMapper {
public class UploadService extends BaseUploadService implements UploadMapper {
    @Autowired
    UploadMapper uploadMapper;
    @Autowired
    FmeService fmeService;
    @Override
    public List<CoordEntity> selectCoords(String zoning) {
@@ -23,7 +39,249 @@
    }
    @Override
    public Integer selectCount4Coord(String epsgCode) {
        return uploadMapper.selectCount4Coord(epsgCode);
    }
    @Override
    public List<DirEntity> selectProject() {
        return uploadMapper.selectProject();
    }
    @Override
    public List<FmeLogEntity> selectFmeLog(String parentid) {
        return uploadMapper.selectFmeLog(parentid);
    }
    /**
     * 插入文件
     */
    public void insertFiles(UserEntity ue, List<MetaFileEntity> list, HttpServletRequest req) {
        checkMetaFiles(ue, list);
        dataLoader(list);
        excelLoader(list, req);
    }
    /**
     * 检查元数据文件
     */
    private void checkMetaFiles(UserEntity ue, List<MetaFileEntity> list) {
        Timestamp createTime = WebHelper.getCurrentTimestamp();
        String tempPath = pathHelper.getConfig().getTempPath();
        for (MetaFileEntity mf : list) {
            mf.setCreateUser(ue.getId());
            mf.setCreatetime(createTime);
            mf.setDepid(ue.getDepid());
            mf.setPath(tempPath + File.separator + mf.getPath());
            File f = new File(mf.getPath());
            if (!f.exists()) {
                mf.setRows(-1);
                mf.setMsg("文件不存在");
            }
        }
    }
    /**
     * 加载数据
     */
    private void dataLoader(List<MetaFileEntity> list) {
        loadData(list);
        copyFiles(list);
        insertMetas(list);
    }
    /**
     * 加载数据
     */
    private void loadData(List<MetaFileEntity> list) {
        for (MetaFileEntity mf : list) {
            if (StaticData.SHP.equals(mf.getExtName()) || StaticData.GDB.equals(mf.getExtName())) {
                loadSpatialData(mf);
            }
        }
    }
    /**
     * 加载空间数据
     */
    private void loadSpatialData(MetaFileEntity mf) {
        BasicMapper basicMapper = ClassHelper.getBasicMapper(mf.getEntity());
        if (null == basicMapper) {
            return;
        }
        String tabName = BaseQueryService.getTabName(basicMapper);
        String className = ClassHelper.getClassName(basicMapper);
        Class clazz = ClassHelper.getEntityClass(className);
        if (null == clazz || null == tabName) {
            return;
        }
        List<?> list = null;
        if (StaticData.SHP.equals(mf.getExtName())) {
            list = ShpHelper.readData(clazz, mf.getPath());
        } else {
            GdbHelper.readData(clazz, mf.getPath(), mf.getTab());
        }
        if (null == list || list.isEmpty()) {
            return;
        }
        setCreateInfo(list, mf);
        int rows = basicMapper.insertBatch(list);
        if (rows > 0) {
            mf.setTab(tabName);
            mf.setRows(rows);
        }
    }
    /**
     * 设置创建信息
     */
    private <T> void setCreateInfo(List<T> list, MetaFileEntity mf) {
        try {
            if (!(list.get(0) instanceof BaseEntity)) {
                return;
            }
            for (T t : list) {
                BaseEntity be = (BaseEntity) t;
                be.setEventid(StringHelper.getGuid());
                be.setParentid(mf.getEventid());
                be.setDirid(mf.getDirid());
                be.setDepid(mf.getDepid());
                be.setVerid(mf.getVerid());
                be.setCreateuser(mf.getCreateUser());
                be.setCreatetime(mf.getCreatetime());
            }
        } catch (Exception ex) {
            log.error(ex.getMessage(), ex);
        }
    }
    /**
     * 复制文件
     */
    private void copyFiles(List<MetaFileEntity> list) {
        for (MetaFileEntity mf : list) {
            switch (mf.getExtName()) {
                case StaticData.MPT:
                    copyMultiFile(mf, StaticData.MPT_EXT);
                    break;
                case StaticData.IMG:
                    copyMultiFile(mf, StaticData.IMG_EXT);
                    break;
                case StaticData.TIF:
                    copyMultiFile(mf, StaticData.TIF_EXT);
                    break;
                case StaticData.TIFF:
                    copyMultiFile(mf, StaticData.TIFF_EXT);
                    break;
                case StaticData.SHP:
                    copyMultiFile(mf, StaticData.SHP_EXT);
                    break;
                case StaticData.GDB:
                    copyFolderFile(mf);
                    break;
                default:
                    copySingleFile(mf);
                    break;
            }
        }
    }
    /**
     * 复制单个文件
     */
    private void copySingleFile(MetaFileEntity mf) {
    }
    /**
     * 复制多个文件
     */
    private void copyMultiFile(MetaFileEntity mf, List<String> extList) {
    }
    /**
     * 复制文件夹文件
     */
    private void copyFolderFile(MetaFileEntity mf) {
    }
    /**
     * 插入元数据
     *
     * @param list
     */
    private void insertMetas(List<MetaFileEntity> list) {
        for (MetaFileEntity mf : list) {
            //
        }
    }
    /**
     * Excel入库
     */
    private String excelLoader(List<MetaFileEntity> list, HttpServletRequest req) {
        List<MetaFileEntity> xlsList = getExcelFiles(list);
        if (xlsList.isEmpty()) {
            return "";
        }
        String guid = null;
        try {
            MetaFileEntity meta = getExcelMeta(xlsList);
            guid = fmeService.excelLoader(meta, req);
        } catch (Exception ex) {
            log.error(ex.getMessage(), ex);
        }
        return guid;
    }
    /**
     * 获取Excel元数据文件
     */
    private List<MetaFileEntity> getExcelFiles(List<MetaFileEntity> list) {
        List<MetaFileEntity> xlsList = new ArrayList<>();
        for (MetaFileEntity mf : list) {
            boolean isXls = StaticData.XLS.equals(mf.getExtName()) || StaticData.XLSX.equals(mf.getExtName());
            if (mf.getRows() > -1 && isXls) {
                xlsList.add(mf);
            }
        }
        return xlsList;
    }
    /**
     * 获取Excel的元数据
     */
    private MetaFileEntity getExcelMeta(List<MetaFileEntity> xlsList) {
        List<String> pathList = new ArrayList<>();
        List<String> dirList = new ArrayList<>();
        List<String> pidList = new ArrayList<>();
        for (MetaFileEntity mf : xlsList) {
            pathList.add(mf.getPath());
            dirList.add(mf.getDirid() + "");
            pidList.add(mf.getEventid());
        }
        MetaFileEntity meta = new MetaFileEntity();
        meta.setPath(StringHelper.join(pathList, ","));
        meta.setEpsgCode(xlsList.get(0).getEpsgCode());
        meta.setName(StringHelper.join(dirList, ","));
        meta.setDepid(xlsList.get(0).getDepid());
        meta.setVerid(xlsList.get(0).getVerid());
        meta.setCreateUser(xlsList.get(0).getCreateUser());
        meta.setEventid(StringHelper.join(pidList, ","));
        return meta;
    }
}