|
@@ -29,7 +29,7 @@ import java.util.concurrent.TimeUnit;
|
|
|
public class AsyncTask {
|
|
|
|
|
|
@Async("taskExecutor")
|
|
|
- public void modelDelete(Long id, ModelServer modelServer){
|
|
|
+ public void modelDelete(Long id, ModelServer modelServer) {
|
|
|
log.info("run modelDelete");
|
|
|
modelServer.deleteById(id);
|
|
|
log.info("end modelDelete id: {}", id);
|
|
@@ -44,22 +44,20 @@ public class AsyncTask {
|
|
|
}
|
|
|
|
|
|
@Async("taskExecutor")
|
|
|
- public void vectorDelete(Long fileId, VectorServer vectorServer){
|
|
|
+ public void vectorDelete(Long fileId, VectorServer vectorServer) {
|
|
|
log.info("run vectorDelete");
|
|
|
vectorServer.deleteById(fileId);
|
|
|
log.info("end vectorDelete id : {}", fileId);
|
|
|
}
|
|
|
|
|
|
@Async("taskExecutor")
|
|
|
- public void modelSlice(BlockingQueue<MyQueue> queue, ModelServer modelServer){
|
|
|
+ public void modelSlice(BlockingQueue<Integer> queue, ModelServer modelServer, OutputFileEntity entity, String cmd) {
|
|
|
try {
|
|
|
- MyQueue data = queue.poll(2, TimeUnit.SECONDS);
|
|
|
+ log.warn("run ModelSliceConsumerThread");
|
|
|
+ log.info("cmd: {}", cmd);
|
|
|
+ Integer integer = modelServer.cmdSlice(cmd);
|
|
|
+ Integer data = queue.poll(2, TimeUnit.SECONDS);
|
|
|
if (data != null) {
|
|
|
- log.warn("run ModelSliceConsumerThread");
|
|
|
- log.info("cmd: {}", data.getStr());
|
|
|
- Integer integer = modelServer.cmdSlice(data.getStr());
|
|
|
- OutputFileEntity entity = data.getOutputFile();
|
|
|
-
|
|
|
if (integer != 0) {
|
|
|
log.info("error command sliceThread");
|
|
|
// 如果命令运行失败,删除刚才创建的实体类
|
|
@@ -84,14 +82,13 @@ public class AsyncTask {
|
|
|
|
|
|
|
|
|
@Async("taskExecutor")
|
|
|
- public void rasterSliceThread(BlockingQueue<MyQueue> queue, RasterServer rasterServer) {
|
|
|
+ public void rasterSliceThread(BlockingQueue<Integer> queue, RasterServer rasterServer, OutputFileEntity entity, String cmd) {
|
|
|
try {
|
|
|
- MyQueue data = queue.poll(2, TimeUnit.SECONDS);
|
|
|
+ log.warn("run rasterSliceThread");
|
|
|
+ log.info("raster cmd: {}", cmd);
|
|
|
+ Integer integer = rasterServer.cmdSlice(cmd, entity);
|
|
|
+ Integer data = queue.poll(2, TimeUnit.SECONDS);
|
|
|
if (data != null) {
|
|
|
- log.warn("run rasterSliceThread");
|
|
|
- OutputFileEntity entity = data.getOutputFile();
|
|
|
- log.info("raster cmd: {}", data.getStr());
|
|
|
- Integer integer = rasterServer.cmdSlice(data.getStr(), entity);
|
|
|
if (integer != 0) {
|
|
|
log.info("error command exeCmdRasterSlice");
|
|
|
// 如果命令运行失败,状态改为0
|
|
@@ -115,15 +112,15 @@ public class AsyncTask {
|
|
|
}
|
|
|
|
|
|
@Async("taskExecutor")
|
|
|
- public void vectorSliceThread(BlockingQueue<MyQueue> queue, VectorServer vectorServer){
|
|
|
+ public void vectorSliceThread(BlockingQueue<Integer> queue, VectorServer vectorServer, OutputFileEntity entity, String cmd) {
|
|
|
try {
|
|
|
- MyQueue data = queue.poll(4, TimeUnit.SECONDS);
|
|
|
- if (data != null) {
|
|
|
- log.warn("run vectorSliceThread");
|
|
|
+ log.warn("run vectorSliceThread");
|
|
|
+ log.info("slice cmd: {}", cmd);
|
|
|
+ Integer integer = vectorServer.cmdSlice(cmd, entity);
|
|
|
|
|
|
- OutputFileEntity entity = data.getOutputFile();
|
|
|
- log.info("slice cmd: {}", data.getStr());
|
|
|
- Integer integer = vectorServer.cmdSlice(data.getStr(), entity);
|
|
|
+ // 执行完毕,释放消费队列
|
|
|
+ Integer data = queue.poll(2, TimeUnit.SECONDS);
|
|
|
+ if (data != null) {
|
|
|
if (integer != 0) {
|
|
|
log.info("error command exeCmdVectorSlice");
|
|
|
// 如果命令运行失败,状态改为0
|
|
@@ -136,8 +133,10 @@ public class AsyncTask {
|
|
|
entity.setStatus(5);
|
|
|
entity.setUpdateTime(new Date());
|
|
|
vectorServer.save(entity);
|
|
|
- log.warn("end vectorSliceThread id: {}", entity.getId());
|
|
|
}
|
|
|
+
|
|
|
+ log.warn("end vectorSliceThread id: {}", entity.getId());
|
|
|
+
|
|
|
} catch (Exception e) {
|
|
|
Thread.currentThread().interrupt();
|
|
|
log.error("error consume queue vector SliceConsumerThread: {}", e);
|
|
@@ -146,48 +145,34 @@ public class AsyncTask {
|
|
|
}
|
|
|
|
|
|
|
|
|
-
|
|
|
@Async("taskExecutor")
|
|
|
- public void rasterJudgeCoordConsumerThread(BlockingQueue<MyQueue> queue, RasterServer rasterServer, String baseOutputPath){
|
|
|
- MyQueue data = null;
|
|
|
+ public void rasterJudgeCoordConsumerThread(BlockingQueue<Integer> queue, RasterServer rasterServer,
|
|
|
+ String baseOutputPath, OutputFileEntity entity) {
|
|
|
try {
|
|
|
- data = queue.poll(3, TimeUnit.SECONDS);
|
|
|
-
|
|
|
- if (data != null) {
|
|
|
- log.warn("run rasterJudgeCoordConsumerThread");
|
|
|
-
|
|
|
- // 先让它等一秒
|
|
|
- log.info("start time: {}", new Date());
|
|
|
- Thread.sleep(2000);
|
|
|
- log.info("end time: {}", new Date());
|
|
|
-
|
|
|
- OutputFileEntity entity = data.getOutputFile();
|
|
|
-
|
|
|
- log.info("CoordType: {}", entity.getCoordType());
|
|
|
-
|
|
|
- if (TypeCode.COORD_XIAN_1980.equals(entity.getCoordType())){
|
|
|
- log.info("need to transform");
|
|
|
- // 严格坐标转换
|
|
|
- entity = cmdTansformGdalwarpStrict(entity, rasterServer, baseOutputPath);
|
|
|
- } else if (TypeCode.COORD_WGS84.equals(entity.getCoordType())){
|
|
|
- log.info("not to transform");
|
|
|
- // 4:未切片
|
|
|
- entity.setStatus(4);
|
|
|
- // 不需要转,就把上传文件路径复制到严格坐标路径上
|
|
|
- entity.setCoordStrictPath(entity.getUploadPath());
|
|
|
- entity.setUpdateTime(new Date());
|
|
|
- entity = rasterServer.save(entity);
|
|
|
- log.info("coord Consumer update time: {}", entity.getUpdateTime());
|
|
|
- log.info("JudgeCoordConsumerThread update entity: {}", entity);
|
|
|
- } else {
|
|
|
- log.info("error exeCmd");
|
|
|
- entity.setStatus(0);
|
|
|
- entity.setUpdateTime(new Date());
|
|
|
- rasterServer.save(entity);
|
|
|
- }
|
|
|
- log.warn("end rasterJudgeCoordConsumerThread id: {}", entity.getId());
|
|
|
-
|
|
|
+ log.warn("run rasterJudgeCoordConsumerThread");
|
|
|
+ log.info("CoordType: {}", entity.getCoordType());
|
|
|
+
|
|
|
+ if (TypeCode.COORD_XIAN_1980.equals(entity.getCoordType())) {
|
|
|
+ log.info("need to transform");
|
|
|
+ // 严格坐标转换
|
|
|
+ entity = cmdTansformGdalwarpStrict(entity, rasterServer, baseOutputPath);
|
|
|
+ } else if (TypeCode.COORD_WGS84.equals(entity.getCoordType())) {
|
|
|
+ log.info("not to transform");
|
|
|
+ // 4:未切片
|
|
|
+ entity.setStatus(4);
|
|
|
+ // 不需要转,就把上传文件路径复制到严格坐标路径上
|
|
|
+ entity.setCoordStrictPath(entity.getUploadPath());
|
|
|
+ entity.setUpdateTime(new Date());
|
|
|
+ entity = rasterServer.save(entity);
|
|
|
+ } else {
|
|
|
+ log.info("error exeCmd");
|
|
|
+ entity.setStatus(0);
|
|
|
+ entity.setUpdateTime(new Date());
|
|
|
+ rasterServer.save(entity);
|
|
|
}
|
|
|
+ // 消费队列
|
|
|
+ queue.poll(2, TimeUnit.SECONDS);
|
|
|
+ log.warn("end rasterJudgeCoordConsumerThread id: {}", entity.getId());
|
|
|
|
|
|
} catch (Exception e) {
|
|
|
Thread.currentThread().interrupt();
|
|
@@ -203,65 +188,62 @@ public class AsyncTask {
|
|
|
* 文件都放transform 目录
|
|
|
*/
|
|
|
@Async("taskExecutor")
|
|
|
- public void vectorConvertCoordThread (BlockingQueue<MyQueue> queue, VectorServer vectorServer, String baseOutputPath){
|
|
|
+ public void vectorConvertCoordThread(BlockingQueue<Integer> queue, VectorServer vectorServer, String baseOutputPath, OutputFileEntity entity) {
|
|
|
try {
|
|
|
- MyQueue data = queue.poll(2, TimeUnit.SECONDS);
|
|
|
- if (data != null) {
|
|
|
- log.info("run convertCoordThread 出队");
|
|
|
- Thread.sleep(2000);
|
|
|
- OutputFileEntity entity = data.getOutputFile();
|
|
|
- // 坐标处理
|
|
|
- String coord = entity.getCoord();
|
|
|
- log.info("convert coord: {}", coord);
|
|
|
- JSONArray arrayCoord = JSON.parseArray(coord);
|
|
|
-
|
|
|
-
|
|
|
- // 转换坐标 普通坐标转换
|
|
|
- if (TypeCode.COORD_SYSTEM_2000.equals(entity.getCoordType())) {
|
|
|
- // 普通坐标转换
|
|
|
- log.info("need to general transform");
|
|
|
- if (arrayCoord.size() == 0) {
|
|
|
- // 没有坐标参数,执行普通坐标转换(ogrinfo)
|
|
|
- log.info("run generalCoordTransform");
|
|
|
- entity = generalCoordTransform(entity, Command.VECTOR_TRANSFORM_GENERAL, vectorServer, baseOutputPath);
|
|
|
-
|
|
|
- } else {
|
|
|
- // 有坐标参数,执行严格坐标转换(CGCS2000转wgs80)
|
|
|
- log.info("run strictCoordTransform");
|
|
|
- entity = strictCoordTransform(entity, Command.VECTOR_TRANSFORM_STRICT_WGS80, vectorServer, baseOutputPath);
|
|
|
- }
|
|
|
-
|
|
|
- } else if (TypeCode.COORD_XIAN_1980.equals(entity.getCoordType())) {
|
|
|
-
|
|
|
- // 严格坐标转换 (西安80转wgs84),需要参数
|
|
|
- log.info("need to strict transform, CoordType: {}", entity.getCoordType());
|
|
|
- if (arrayCoord.size() == 0) {
|
|
|
- log.info("error: {}", MsgCode.E50009);
|
|
|
- entity.setStatus(7);
|
|
|
- entity.setUpdateTime(new Date());
|
|
|
- vectorServer.save(entity);
|
|
|
- } else {
|
|
|
- log.info("run strictCoordTransform");
|
|
|
- entity = strictCoordTransform(entity, Command.VECTOR_TRANSFORM_STRICT_WGS84, vectorServer, baseOutputPath);
|
|
|
- }
|
|
|
-
|
|
|
- } else if (TypeCode.COORD_WGS84.equals(entity.getCoordType())) {
|
|
|
- // 不转换坐标 把文件信息移动到CoordStrictPath 这路径下
|
|
|
- log.info("not to transform");
|
|
|
-
|
|
|
- entity.setCoordStrictPath(entity.getUploadPath());
|
|
|
- entity.setUpdateTime(new Date());
|
|
|
- entity.setStatus(3);
|
|
|
- entity.setCoordType(TypeCode.COORD_WGS84);
|
|
|
- vectorServer.save(entity);
|
|
|
+ log.info("run convertCoordThread 出队");
|
|
|
+ // 坐标处理
|
|
|
+ String coord = entity.getCoord();
|
|
|
+ log.info("convert coord: {}", coord);
|
|
|
+ JSONArray arrayCoord = JSON.parseArray(coord);
|
|
|
+
|
|
|
+ // 转换坐标 普通坐标转换
|
|
|
+ if (TypeCode.COORD_SYSTEM_2000.equals(entity.getCoordType())) {
|
|
|
+ // 普通坐标转换
|
|
|
+ log.info("need to general transform");
|
|
|
+ if (arrayCoord.size() == 0) {
|
|
|
+ // 没有坐标参数,执行普通坐标转换(ogrinfo)
|
|
|
+ log.info("run generalCoordTransform");
|
|
|
+ entity = generalCoordTransform(entity, Command.VECTOR_TRANSFORM_GENERAL, vectorServer, baseOutputPath);
|
|
|
+
|
|
|
} else {
|
|
|
- log.info("error exeCmd");
|
|
|
+ // 有坐标参数,执行严格坐标转换(CGCS2000转wgs80)
|
|
|
+ log.info("run strictCoordTransform");
|
|
|
+ entity = strictCoordTransform(entity, Command.VECTOR_TRANSFORM_STRICT_WGS80, vectorServer, baseOutputPath);
|
|
|
+ }
|
|
|
+
|
|
|
+ } else if (TypeCode.COORD_XIAN_1980.equals(entity.getCoordType())) {
|
|
|
+
|
|
|
+ // 严格坐标转换 (西安80转wgs84),需要参数
|
|
|
+ log.info("need to strict transform, CoordType: {}", entity.getCoordType());
|
|
|
+ if (arrayCoord.size() == 0) {
|
|
|
+ log.info("error: {}", MsgCode.E50009);
|
|
|
entity.setStatus(7);
|
|
|
entity.setUpdateTime(new Date());
|
|
|
vectorServer.save(entity);
|
|
|
+ } else {
|
|
|
+ log.info("run strictCoordTransform");
|
|
|
+ entity = strictCoordTransform(entity, Command.VECTOR_TRANSFORM_STRICT_WGS84, vectorServer, baseOutputPath);
|
|
|
}
|
|
|
- log.info("end convertCoordThread id: {}", entity.getId());
|
|
|
+
|
|
|
+ } else if (TypeCode.COORD_WGS84.equals(entity.getCoordType())) {
|
|
|
+ // 不转换坐标 把文件信息移动到CoordStrictPath 这路径下
|
|
|
+ log.info("not to transform");
|
|
|
+
|
|
|
+ entity.setCoordStrictPath(entity.getUploadPath());
|
|
|
+ entity.setUpdateTime(new Date());
|
|
|
+ entity.setStatus(3);
|
|
|
+ entity.setCoordType(TypeCode.COORD_WGS84);
|
|
|
+ vectorServer.save(entity);
|
|
|
+ } else {
|
|
|
+ log.info("error exeCmd");
|
|
|
+ entity.setStatus(7);
|
|
|
+ entity.setUpdateTime(new Date());
|
|
|
+ vectorServer.save(entity);
|
|
|
}
|
|
|
+ // 消费队列
|
|
|
+ queue.poll(2, TimeUnit.SECONDS);
|
|
|
+ log.info("end convertCoordThread id: {}", entity.getId());
|
|
|
+
|
|
|
} catch (Exception e) {
|
|
|
Thread.currentThread().interrupt();
|
|
|
log.error("error vector consume queue VectorJudgeCoordConsumerThread: {}", e);
|
|
@@ -275,7 +257,7 @@ public class AsyncTask {
|
|
|
/**
|
|
|
* raster 严格坐标转换
|
|
|
*/
|
|
|
- private OutputFileEntity cmdTansformGdalwarpStrict(OutputFileEntity entity, RasterServer rasterServer, String baseOutputPath){
|
|
|
+ private OutputFileEntity cmdTansformGdalwarpStrict(OutputFileEntity entity, RasterServer rasterServer, String baseOutputPath) {
|
|
|
log.info("run cmdTansformGdalwarpStrict");
|
|
|
|
|
|
String OUTPUT_FILE_PATH = baseOutputPath;
|
|
@@ -301,27 +283,27 @@ public class AsyncTask {
|
|
|
step_1 = step_1.replace("@x", array.getString(0));
|
|
|
step_1 = step_1.replace("@y", array.getString(1));
|
|
|
step_1 = step_1.replace("@z", array.getString(2));
|
|
|
- step_1 = step_1.replace("@rx","0");
|
|
|
- step_1 = step_1.replace("@ry","0");
|
|
|
- step_1 = step_1.replace("@rz","0");
|
|
|
+ step_1 = step_1.replace("@rx", "0");
|
|
|
+ step_1 = step_1.replace("@ry", "0");
|
|
|
+ step_1 = step_1.replace("@rz", "0");
|
|
|
|
|
|
// 坐标为空时
|
|
|
} else if (array.size() == 0) {
|
|
|
- step_1 = step_1.replace("@x","0");
|
|
|
- step_1 = step_1.replace("@y","0");
|
|
|
- step_1 = step_1.replace("@z","0");
|
|
|
- step_1 = step_1.replace("@rx","0");
|
|
|
- step_1 = step_1.replace("@ry","0");
|
|
|
- step_1 = step_1.replace("@rz","0");
|
|
|
+ step_1 = step_1.replace("@x", "0");
|
|
|
+ step_1 = step_1.replace("@y", "0");
|
|
|
+ step_1 = step_1.replace("@z", "0");
|
|
|
+ step_1 = step_1.replace("@rx", "0");
|
|
|
+ step_1 = step_1.replace("@ry", "0");
|
|
|
+ step_1 = step_1.replace("@rz", "0");
|
|
|
|
|
|
// 6位数坐标
|
|
|
- }else {
|
|
|
+ } else {
|
|
|
step_1 = step_1.replace("@x", array.getString(0));
|
|
|
step_1 = step_1.replace("@y", array.getString(1));
|
|
|
step_1 = step_1.replace("@z", array.getString(2));
|
|
|
- step_1 = step_1.replace("@rx",array.getString(3));
|
|
|
- step_1 = step_1.replace("@ry",array.getString(4));
|
|
|
- step_1 = step_1.replace("@rz",array.getString(5));
|
|
|
+ step_1 = step_1.replace("@rx", array.getString(3));
|
|
|
+ step_1 = step_1.replace("@ry", array.getString(4));
|
|
|
+ step_1 = step_1.replace("@rz", array.getString(5));
|
|
|
}
|
|
|
|
|
|
|