管道基础大数据平台系统开发-【后端】-Server
1
13693261870
2022-11-01 e016ff99f98cef6f607671cb656f9ebf0de0ea24
1
已修改7个文件
130 ■■■■■ 文件已修改
src/main/java/com/lf/server/controller/show/InquiryController.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/lf/server/controller/show/MarkController.java 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/lf/server/entity/all/StaticData.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/lf/server/entity/ctrl/MarkJsonEntity.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/lf/server/helper/GdalHelper.java 69 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/lf/server/service/data/UploaderService.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/lf/server/service/show/MarkService.java 26 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/lf/server/controller/show/InquiryController.java
@@ -3,6 +3,7 @@
import com.lf.server.aspect.SysLog;
import com.lf.server.controller.all.BaseQueryController;
import com.lf.server.entity.all.ResponseMsg;
import com.lf.server.entity.all.StaticData;
import com.lf.server.entity.ctrl.ShpRecordEntity;
import com.lf.server.entity.data.MetaFileEntity;
import com.lf.server.entity.sys.UserEntity;
@@ -28,8 +29,6 @@
@RestController
@RequestMapping("/inquiry")
public class InquiryController extends BaseQueryController {
    private final static int FOUR = 4;
    @Autowired
    TokenService tokenService;
@@ -51,7 +50,7 @@
            }
            List<MetaFileEntity> list = uploaderService.uploadData(null, ue, req, res);
            if (list.size() < FOUR) {
            if (list == null || list.size() < StaticData.FOUR) {
                return fail("没有找到已上传的数据或不完整", null);
            }
src/main/java/com/lf/server/controller/show/MarkController.java
@@ -4,13 +4,16 @@
import com.lf.server.controller.all.BaseController;
import com.lf.server.entity.all.HttpStatus;
import com.lf.server.entity.all.ResponseMsg;
import com.lf.server.entity.all.StaticData;
import com.lf.server.entity.ctrl.MarkJsonEntity;
import com.lf.server.entity.data.DownloadEntity;
import com.lf.server.entity.data.MetaFileEntity;
import com.lf.server.entity.show.MarkEntity;
import com.lf.server.entity.sys.UserEntity;
import com.lf.server.helper.StringHelper;
import com.lf.server.helper.WebHelper;
import com.lf.server.service.data.DownloadService;
import com.lf.server.service.data.UploaderService;
import com.lf.server.service.show.MarkService;
import com.lf.server.service.sys.TokenService;
import io.swagger.annotations.Api;
@@ -37,6 +40,9 @@
    @Autowired
    TokenService tokenService;
    @Autowired
    UploaderService uploaderService;
    @Autowired
    DownloadService downloadService;
@@ -219,7 +225,17 @@
    @PostMapping(value = "/uploadShp", produces = "application/json; charset=UTF-8")
    public ResponseMsg<List<MarkJsonEntity>> uploadShp(HttpServletRequest req, HttpServletResponse res) {
        try {
            List<MarkJsonEntity> list = null;
            UserEntity ue = tokenService.getCurrentUser(req);
            if (ue == null) {
                return fail("用户未登录", null);
            }
            List<MetaFileEntity> meList = uploaderService.uploadData(null, ue, req, res);
            if (meList == null || meList.size() < StaticData.FOUR) {
                return fail("没有找到已上传的数据或不完整", null);
            }
            List<MarkJsonEntity> list = markService.readShpForMarks(meList);
            return success(list);
        } catch (Exception ex) {
src/main/java/com/lf/server/entity/all/StaticData.java
@@ -11,6 +11,11 @@
    public static String[] EXCLUDE_PATH = new String[]{"/swagger", "/sign/", "/error", "/proxy"};
    /**
     * 数值:4
     */
    public final static int FOUR = 4;
    /**
     * 版本号
     */
    public final static String VERSION = "1.0.0";
src/main/java/com/lf/server/entity/ctrl/MarkJsonEntity.java
@@ -20,6 +20,10 @@
    public MarkJsonEntity() {
    }
    public MarkJsonEntity(Integer id) {
        this.id = id;
    }
    public Integer getId() {
        return id;
    }
src/main/java/com/lf/server/helper/GdalHelper.java
@@ -2,6 +2,7 @@
import com.lf.server.entity.ctrl.MarkJsonEntity;
import com.lf.server.entity.ctrl.ShpRecordEntity;
import com.lf.server.entity.data.MetaFileEntity;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.gdal.gdal.Band;
@@ -13,6 +14,7 @@
import org.gdal.osr.SpatialReference;
import java.io.File;
import java.lang.reflect.Field;
import java.sql.Time;
import java.sql.Timestamp;
import java.time.LocalDate;
@@ -80,6 +82,73 @@
    }
    /**
     * 读取ShapeFile文件获取Mark实体类
     */
    public static List<MarkJsonEntity> readShpForMarks(String filePath) {
        try {
            org.gdal.ogr.Driver driver = ogr.GetDriverByName("ESRI shapefile");
            if (driver == null) {
                return null;
            }
            DataSource dataSource = driver.Open(filePath);
            Layer layer = dataSource.GetLayer(0);
            FeatureDefn featureDefn = layer.GetLayerDefn();
            Map<Integer, Field> fieldMap = new HashMap(5);
            for (int i = 0, count = featureDefn.GetFieldCount(); i < count; i++) {
                try {
                    FieldDefn fieldDefn = featureDefn.GetFieldDefn(i);
                    Field field = MarkJsonEntity.class.getDeclaredField(fieldDefn.GetName().toLowerCase());
                    field.setAccessible(true);
                    fieldMap.put(i, field);
                } catch (Exception e) {
                    //
                }
            }
            long count = layer.GetFeatureCount();
            if (count == 0 || fieldMap.size() == 0) {
                return null;
            }
            List<MarkJsonEntity> list = new ArrayList<MarkJsonEntity>();
            for (int i = 0; i < count; i++) {
                Feature f = layer.GetFeature(i);
                MarkJsonEntity me = new MarkJsonEntity(i + 1);
                for (Integer key : fieldMap.keySet()) {
                    Field field = fieldMap.get(key);
                    switch (field.getType().toString()) {
                        case "double":
                            field.set(me, f.GetFieldAsDouble(i));
                            break;
                        case "long":
                            field.set(me, f.GetFieldAsInteger64(i));
                            break;
                        case "int":
                            field.set(me, f.GetFieldAsInteger(i));
                            break;
                        default:
                            field.set(me, f.GetFieldAsString(i));
                            break;
                    }
                }
                me.setWkt(f.GetGeometryRef().ExportToWkt());
                list.add(me);
            }
            layer.delete();
            driver.delete();
            return list;
        } catch (Exception ex) {
            log.error(ex.getMessage(), ex);
            return null;
        }
    }
    /**
     * 创建ShapeFile文件
     *
     * @param list 标绘JSON实体类集合
src/main/java/com/lf/server/service/data/UploaderService.java
@@ -63,6 +63,9 @@
                    String value = req.getParameter(key);
                    switch (field.getType().toString()) {
                        case "double":
                            field.set(t, Double.valueOf(value));
                            break;
                        case "long":
                            field.set(t, Long.valueOf(value));
                            break;
src/main/java/com/lf/server/service/show/MarkService.java
@@ -1,7 +1,9 @@
package com.lf.server.service.show;
import com.lf.server.entity.ctrl.MarkJsonEntity;
import com.lf.server.entity.ctrl.ShpRecordEntity;
import com.lf.server.entity.data.DownloadEntity;
import com.lf.server.entity.data.MetaFileEntity;
import com.lf.server.entity.show.MarkEntity;
import com.lf.server.entity.sys.UserEntity;
import com.lf.server.helper.*;
@@ -196,4 +198,28 @@
    public String getDownloadFilePath(DownloadEntity de) {
        return pathHelper.getConfig().getDownloadPath() + File.separator + de.getUrl();
    }
    /**
     * 读取ShapeFile文件获取Mark实体类
     *
     * @param list ShapeFile文件列表
     * @return Mark实体类集合
     */
    public List<MarkJsonEntity> readShpForMarks(List<MetaFileEntity> list) {
        String fileName = null;
        for (MetaFileEntity mf : list) {
            if (mf.getName().toLowerCase().indexOf(".shp") > -1) {
                fileName = mf.getPath();
                break;
            }
        }
        if (StringHelper.isEmpty(fileName)) {
            return null;
        }
        List<MarkJsonEntity> mjeList = GdalHelper.readShpForMarks(fileName);
        FileHelper.deleteFiles(list);
        return mjeList;
    }
}