|
@@ -12,6 +12,7 @@ import com.onemap.common.security.utils.SecurityUtils;
|
|
|
import com.onemap.spotoverlap.utils.*;
|
|
import com.onemap.spotoverlap.utils.*;
|
|
|
import org.apache.ibatis.annotations.Param;
|
|
import org.apache.ibatis.annotations.Param;
|
|
|
import org.bouncycastle.cert.ocsp.Req;
|
|
import org.bouncycastle.cert.ocsp.Req;
|
|
|
|
|
+import org.gdal.ogr.*;
|
|
|
import org.json.simple.JSONObject;
|
|
import org.json.simple.JSONObject;
|
|
|
import org.json.simple.parser.JSONParser;
|
|
import org.json.simple.parser.JSONParser;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
@@ -120,7 +121,10 @@ public class YztServiceImpl implements IYztService {
|
|
|
private Integer wmtszoomend;
|
|
private Integer wmtszoomend;
|
|
|
|
|
|
|
|
@Override
|
|
@Override
|
|
|
- public RequestResult upload(MultipartFile file) {
|
|
|
|
|
|
|
+ public RequestResult upload(MultipartFile file, String type) {
|
|
|
|
|
+ if (StringUtils.isEmpty(type)) {
|
|
|
|
|
+ type = "shp";
|
|
|
|
|
+ }
|
|
|
if (file == null) {
|
|
if (file == null) {
|
|
|
return RequestResult.error("未上传文件!");
|
|
return RequestResult.error("未上传文件!");
|
|
|
}
|
|
}
|
|
@@ -151,9 +155,10 @@ public class YztServiceImpl implements IYztService {
|
|
|
} else {
|
|
} else {
|
|
|
new UnPackageUtils().unPackRar(dest, unzippath);
|
|
new UnPackageUtils().unPackRar(dest, unzippath);
|
|
|
}
|
|
}
|
|
|
|
|
+ dest.delete();
|
|
|
File[] files = new File(unzippath).listFiles();
|
|
File[] files = new File(unzippath).listFiles();
|
|
|
for (File file1 : files) {
|
|
for (File file1 : files) {
|
|
|
- if (file1.getAbsolutePath().substring(file1.getAbsolutePath().lastIndexOf(".") + 1).equals("shp")) {
|
|
|
|
|
|
|
+ if (file1.getAbsolutePath().substring(file1.getAbsolutePath().lastIndexOf(".") + 1).equals(type)) {
|
|
|
shpPath = file1.getAbsolutePath();
|
|
shpPath = file1.getAbsolutePath();
|
|
|
shpPath = shpPath.replaceAll("\\\\", "/");
|
|
shpPath = shpPath.replaceAll("\\\\", "/");
|
|
|
break;
|
|
break;
|
|
@@ -162,7 +167,7 @@ public class YztServiceImpl implements IYztService {
|
|
|
if (!"".equals(shpPath)) {
|
|
if (!"".equals(shpPath)) {
|
|
|
|
|
|
|
|
} else {
|
|
} else {
|
|
|
- return RequestResult.error("未检索到shp文件");
|
|
|
|
|
|
|
+ return RequestResult.error("未检索到矢量数据文件");
|
|
|
}
|
|
}
|
|
|
} catch (IOException e) {
|
|
} catch (IOException e) {
|
|
|
e.printStackTrace();
|
|
e.printStackTrace();
|
|
@@ -172,7 +177,7 @@ public class YztServiceImpl implements IYztService {
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
@Override
|
|
@Override
|
|
|
- public RequestResult importIn(MultipartFile file, String path, String type, String name, String ufield, String style, String cfield, String servertype) {
|
|
|
|
|
|
|
+ public RequestResult importIn(MultipartFile file, String path, String type, String name, String ufield, String style, String cfield, String servertype, String gdblayername) {
|
|
|
if (StringUtils.isEmpty(style)) {
|
|
if (StringUtils.isEmpty(style)) {
|
|
|
style = spotstyle;
|
|
style = spotstyle;
|
|
|
}
|
|
}
|
|
@@ -231,7 +236,7 @@ public class YztServiceImpl implements IYztService {
|
|
|
String tablename = "";
|
|
String tablename = "";
|
|
|
String folderpath = "";
|
|
String folderpath = "";
|
|
|
if (StringUtils.isEmpty(shpPath)) {
|
|
if (StringUtils.isEmpty(shpPath)) {
|
|
|
- return RequestResult.error("未检索到shp文件!");
|
|
|
|
|
|
|
+ return RequestResult.error("未检索到矢量数据文件!");
|
|
|
} else {
|
|
} else {
|
|
|
File currentfile = new File(shpPath);
|
|
File currentfile = new File(shpPath);
|
|
|
String fileName = currentfile.getName();
|
|
String fileName = currentfile.getName();
|
|
@@ -240,8 +245,12 @@ public class YztServiceImpl implements IYztService {
|
|
|
String filename = fileName.replace(filetype, "").replace(".", "");
|
|
String filename = fileName.replace(filetype, "").replace(".", "");
|
|
|
tablename = prefix + filename + "_" + currentTime;
|
|
tablename = prefix + filename + "_" + currentTime;
|
|
|
try {
|
|
try {
|
|
|
- //TODO wanger 第一步:指定坐标系将本地shp文件导入到postgis
|
|
|
|
|
- ShpToPostGISWithReproject.importShpToPostGISWithReproject(shpPath, tablename, "EPSG:" + shpWkid, false);
|
|
|
|
|
|
|
+ if ("shp".equals(filetype)) {
|
|
|
|
|
+ //TODO wanger 第一步:指定坐标系将本地shp文件导入到postgis
|
|
|
|
|
+ ShpToPostGISWithReproject.importShpToPostGISWithReproject(shpPath, tablename, "EPSG:" + shpWkid, false);
|
|
|
|
|
+ } else if ("gdb".equals(filetype)) {
|
|
|
|
|
+ shpPath = GdbToPostgisImporter.importToPostgis(shpPath, gdblayername, tablename);
|
|
|
|
|
+ }
|
|
|
//TODO wanger 第二步:指定的空间数据库表的geom字段
|
|
//TODO wanger 第二步:指定的空间数据库表的geom字段
|
|
|
Integer count = yztMapper.getTheGeomCount(dbschema, tablename);
|
|
Integer count = yztMapper.getTheGeomCount(dbschema, tablename);
|
|
|
if (count > 0) {
|
|
if (count > 0) {
|
|
@@ -522,18 +531,46 @@ public class YztServiceImpl implements IYztService {
|
|
|
@Override
|
|
@Override
|
|
|
public RequestResult modeldetailupdate(tModelDetail modeldetail) {
|
|
public RequestResult modeldetailupdate(tModelDetail modeldetail) {
|
|
|
try {
|
|
try {
|
|
|
|
|
+ //TODO 删除之前的情形数据
|
|
|
|
|
+// QueryWrapper<tModelDetail> detailwrapper = new QueryWrapper();
|
|
|
|
|
+// detailwrapper.eq("situationid", modeldetail.getSituationid());
|
|
|
|
|
+// tModelDetailMapper.delete(detailwrapper);
|
|
|
|
|
+ String relationship = modeldetail.getRelationship();
|
|
|
|
|
+ String relationshipkey = modeldetail.getRelationshipkey();
|
|
|
|
|
+ String relationshipvalue = modeldetail.getRelationshipvalue();
|
|
|
QueryWrapper<tAnalyseType> typewrapper = new QueryWrapper();
|
|
QueryWrapper<tAnalyseType> typewrapper = new QueryWrapper();
|
|
|
- typewrapper.eq("name", modeldetail.getRelationship());
|
|
|
|
|
|
|
+ typewrapper.eq("name", relationship);
|
|
|
tAnalyseType typeDto = tAnalyseTypeMapper.selectOne(typewrapper);
|
|
tAnalyseType typeDto = tAnalyseTypeMapper.selectOne(typewrapper);
|
|
|
if (typeDto != null) {
|
|
if (typeDto != null) {
|
|
|
//TODO wanger 根据类型生成查询语句
|
|
//TODO wanger 根据类型生成查询语句
|
|
|
- //TODO wanger 待完善那个 between and 介于之间的情况
|
|
|
|
|
String querywhere = typeDto.getQuerywhere();
|
|
String querywhere = typeDto.getQuerywhere();
|
|
|
- modeldetail.setRelationshipwhere(String.format("%s %s %s ", querywhere,
|
|
|
|
|
- modeldetail.getRelationshipkey(),
|
|
|
|
|
- modeldetail.getRelationshipvalue()));
|
|
|
|
|
|
|
+ if ("tbbhlx".equals(relationship)) {//TODO wanger 处理图斑变化类型过滤
|
|
|
|
|
+ String where = " " +querywhere + " ";
|
|
|
|
|
+ if ("=".equals(relationshipkey)) {
|
|
|
|
|
+ where += " in (";
|
|
|
|
|
+ } else if ("!=".equals(relationshipkey)) {
|
|
|
|
|
+ where += " not in (";
|
|
|
|
|
+ }
|
|
|
|
|
+ String[] values = relationshipvalue.split(",");
|
|
|
|
|
+ for (String cur : values) {
|
|
|
|
|
+ where += "'" + cur + "',";
|
|
|
|
|
+ }
|
|
|
|
|
+ where = where.substring(0, where.length() - 1) + ") ";
|
|
|
|
|
+ modeldetail.setRelationshipwhere(where);
|
|
|
|
|
+ } else {
|
|
|
|
|
+ //TODO wanger 待完善那个 between and 介于之间的情况
|
|
|
|
|
+ if ("∈".equals(relationshipkey)) {
|
|
|
|
|
+ String[] sss = relationshipvalue.split("-");
|
|
|
|
|
+ modeldetail.setRelationshipwhere(String.format("%s between %s and %s ", querywhere,
|
|
|
|
|
+ sss[0],
|
|
|
|
|
+ sss[1]));
|
|
|
|
|
+ } else {
|
|
|
|
|
+ modeldetail.setRelationshipwhere(String.format("%s %s %s ", querywhere,
|
|
|
|
|
+ relationshipkey,
|
|
|
|
|
+ relationshipvalue));
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
}
|
|
}
|
|
|
-
|
|
|
|
|
if (StringUtils.isNotEmpty(modeldetail.getId())) {
|
|
if (StringUtils.isNotEmpty(modeldetail.getId())) {
|
|
|
QueryWrapper<tModelDetail> wrapper = new QueryWrapper();
|
|
QueryWrapper<tModelDetail> wrapper = new QueryWrapper();
|
|
|
wrapper.eq("id", modeldetail.getId());
|
|
wrapper.eq("id", modeldetail.getId());
|
|
@@ -554,7 +591,7 @@ public class YztServiceImpl implements IYztService {
|
|
|
public RequestResult modeldetaildelete(String id) {
|
|
public RequestResult modeldetaildelete(String id) {
|
|
|
try {
|
|
try {
|
|
|
QueryWrapper<tModelDetail> detailwrapper = new QueryWrapper();
|
|
QueryWrapper<tModelDetail> detailwrapper = new QueryWrapper();
|
|
|
- detailwrapper.eq("id", id);
|
|
|
|
|
|
|
+ detailwrapper.eq("situationid", id);
|
|
|
tModelDetailMapper.delete(detailwrapper);
|
|
tModelDetailMapper.delete(detailwrapper);
|
|
|
return RequestResult.success("删除成功!", 1);
|
|
return RequestResult.success("删除成功!", 1);
|
|
|
} catch (Exception e) {
|
|
} catch (Exception e) {
|
|
@@ -563,6 +600,17 @@ public class YztServiceImpl implements IYztService {
|
|
|
return RequestResult.error("删除失败!", null);
|
|
return RequestResult.error("删除失败!", null);
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+ @Override
|
|
|
|
|
+ public RequestResult modeldetailisvalid(String situationid, String isvalid) {
|
|
|
|
|
+ try {
|
|
|
|
|
+ yztMapper.modeldetailisvalid(situationid, isvalid);
|
|
|
|
|
+ return RequestResult.success("修改成功!", 1);
|
|
|
|
|
+ } catch (Exception e) {
|
|
|
|
|
+ e.printStackTrace();
|
|
|
|
|
+ }
|
|
|
|
|
+ return RequestResult.error("修改失败!", null);
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
@Override
|
|
@Override
|
|
|
public RequestResult basevectordelete(String tablename) {
|
|
public RequestResult basevectordelete(String tablename) {
|
|
|
try {
|
|
try {
|
|
@@ -1138,6 +1186,7 @@ public class YztServiceImpl implements IYztService {
|
|
|
@Override
|
|
@Override
|
|
|
public RequestResult updateReport(tReport report) {
|
|
public RequestResult updateReport(tReport report) {
|
|
|
try {
|
|
try {
|
|
|
|
|
+ report.setCjsj(new Date());
|
|
|
if (StringUtils.isNotEmpty(report.getId())) {
|
|
if (StringUtils.isNotEmpty(report.getId())) {
|
|
|
QueryWrapper<tReport> wrapper = new QueryWrapper();
|
|
QueryWrapper<tReport> wrapper = new QueryWrapper();
|
|
|
wrapper.eq("id", report.getId());
|
|
wrapper.eq("id", report.getId());
|
|
@@ -1160,6 +1209,7 @@ public class YztServiceImpl implements IYztService {
|
|
|
if (StringUtils.isNotEmpty(name)) {
|
|
if (StringUtils.isNotEmpty(name)) {
|
|
|
wrapper.like("name", name);
|
|
wrapper.like("name", name);
|
|
|
}
|
|
}
|
|
|
|
|
+ wrapper.orderByDesc("cjsj");
|
|
|
return RequestResult.success("查询成功!", tReportMapper.selectList(wrapper));
|
|
return RequestResult.success("查询成功!", tReportMapper.selectList(wrapper));
|
|
|
} catch (Exception e) {
|
|
} catch (Exception e) {
|
|
|
e.printStackTrace();
|
|
e.printStackTrace();
|
|
@@ -1258,6 +1308,45 @@ public class YztServiceImpl implements IYztService {
|
|
|
return RequestResult.error("查询失败!", null);
|
|
return RequestResult.error("查询失败!", null);
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+ @Override
|
|
|
|
|
+ public RequestResult getGdbLayers(String filepath) {
|
|
|
|
|
+ // 打开GDB数据源
|
|
|
|
|
+ DataSource gdbDataSource = ogr.Open(filepath);
|
|
|
|
|
+ if (gdbDataSource == null) {
|
|
|
|
|
+ System.err.println("无法打开GDB文件: " + filepath);
|
|
|
|
|
+ return RequestResult.error("无法打开GDB文件: " + filepath);
|
|
|
|
|
+ }
|
|
|
|
|
+ List<String> res = new ArrayList<>();
|
|
|
|
|
+ for (int i = 0; i < gdbDataSource.GetLayerCount(); i++) {
|
|
|
|
|
+ Layer layer = gdbDataSource.GetLayerByIndex(i);
|
|
|
|
|
+ String layerName = layer.GetName();
|
|
|
|
|
+ res.add(layerName);
|
|
|
|
|
+ }
|
|
|
|
|
+ return RequestResult.success("查询成功!", res);
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ @Override
|
|
|
|
|
+ public RequestResult getGdbLayerFields(String filepath, String layername) {
|
|
|
|
|
+ // 打开GDB数据源
|
|
|
|
|
+ DataSource gdbDataSource = ogr.Open(filepath);
|
|
|
|
|
+ if (gdbDataSource == null) {
|
|
|
|
|
+ System.err.println("无法打开GDB文件: " + filepath);
|
|
|
|
|
+ return RequestResult.error("无法打开GDB文件: " + filepath);
|
|
|
|
|
+ }
|
|
|
|
|
+ List<String> res = new ArrayList<>();
|
|
|
|
|
+ Layer layer = gdbDataSource.GetLayer(layername);
|
|
|
|
|
+ FeatureDefn defn = layer.GetLayerDefn();
|
|
|
|
|
+ // 添加属性字段
|
|
|
|
|
+ for (int i = 0; i < defn.GetFieldCount(); i++) {
|
|
|
|
|
+ FieldDefn fieldDefn = defn.GetFieldDefn(i);
|
|
|
|
|
+ String fieldName = fieldDefn.GetName();
|
|
|
|
|
+ if (!fieldName.toLowerCase().contains("shape")) {
|
|
|
|
|
+ res.add(fieldName);
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ return RequestResult.success("查询成功!", res);
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
@Override
|
|
@Override
|
|
|
public RequestResult basemap(MultipartFile file, String name, String invalid, String serviceuri, String id, String image, String indexnum) {
|
|
public RequestResult basemap(MultipartFile file, String name, String invalid, String serviceuri, String id, String image, String indexnum) {
|
|
|
String imageuri = "";
|
|
String imageuri = "";
|