Przeglądaj źródła

调整了消费队列逻辑

wuweihao 5 lat temu
rodzic
commit
0253958ffe

+ 18 - 21
src/main/java/com/fd/controller/ModelController.java

@@ -9,18 +9,15 @@ import com.fd.dto.MyQueue;
 import com.fd.entity.FileEntity;
 import com.fd.entity.OutputFileEntity;
 import com.fd.server.ModelServer;
-import com.fd.server.impl.ModelServerImpl;
 import com.fd.thread.AsyncTask;
 import com.fd.util.FileUtils;
 import com.fd.util.R;
 import com.fd.util.RegexUtils;
-import com.fd.util.SpringContext;
 import io.swagger.annotations.ApiOperation;
 import lombok.extern.log4j.Log4j2;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Value;
-import org.springframework.scheduling.annotation.Async;
 import org.springframework.web.bind.annotation.*;
 import org.springframework.web.multipart.MultipartFile;
 
@@ -30,6 +27,7 @@ import java.util.List;
 import java.util.concurrent.BlockingQueue;
 import java.util.concurrent.LinkedBlockingQueue;
 import java.util.concurrent.TimeUnit;
+import java.util.concurrent.atomic.AtomicInteger;
 
 /**
  * Created by Owen on 2019/11/12 0012 9:40
@@ -58,15 +56,18 @@ public class ModelController {
     /**
      * 队列
      */
-    private static BlockingQueue<MyQueue> modelQueue = new LinkedBlockingQueue<MyQueue>(2);
-
+    private static BlockingQueue<Integer> modelQueue = new LinkedBlockingQueue<Integer>(2);
 
+    /**
+     * 保证线程安全的
+     */
+    private static AtomicInteger count = new AtomicInteger();
 
 
     @ApiOperation("上传数据,校验文件名")
     @GetMapping("check/{fileName}/")
     private R checkFileName(@PathVariable("fileName") String fileName) {
-        log.info("run checkFileName {}",fileName);
+        log.info("run checkFileName {}", fileName);
 
 
         // 文件是否包含中文字符
@@ -148,7 +149,6 @@ public class ModelController {
     }
 
 
-
     @ApiOperation("删除文件")
     @GetMapping("delete/{fileId}/")
     private R deleteFile(@PathVariable("fileId") Long fileId) {
@@ -166,8 +166,6 @@ public class ModelController {
     }
 
 
-
-
     @ApiOperation("倾斜摄影数据切片")
     @GetMapping("command/osgb/{fileId}/")
     private R cmdModelSlice(@PathVariable("fileId") Long fileId) {
@@ -189,11 +187,11 @@ public class ModelController {
 
         // 把数据放入队列中
         boolean offer = false;
-        MyQueue data = new MyQueue();
-        data.setOutputFile(entity);
-        data.setStr(cmd);
+//        MyQueue data = new MyQueue();
+//        data.setOutputFile(entity);
+//        data.setStr(cmd);
         try {
-            offer = modelQueue.offer(data, 1, TimeUnit.SECONDS);
+            offer = modelQueue.offer(count.incrementAndGet(), 1, TimeUnit.SECONDS);
             log.info("model slice 入队成功");
         } catch (Exception e) {
 
@@ -203,22 +201,21 @@ public class ModelController {
         log.info("end cmdModelSlice");
 
         if (offer) {
-        // 命令产生的是文件夹
-        entity.setStatus(6);
-        entity.setUpdateTime(new Date());
-        entity.setSlicePath(outputPath);
+            // 命令产生的是文件夹
+            entity.setStatus(6);
+            entity.setUpdateTime(new Date());
+            entity.setSlicePath(outputPath);
 
-        entity = modelServer.save(entity);
-            asyncTask.modelSlice(modelQueue, modelServer);
+            entity = modelServer.save(entity);
+            asyncTask.modelSlice(modelQueue, modelServer, entity, cmd);
             return new R(200, entity);
         }
         // 入队失败
-        return new R(52000 ,MsgCode.E52000);
+        return new R(52000, MsgCode.E52000);
 
     }
 
 
-
     @ApiOperation("移动数据到服务器上")
     @PostMapping("move/{fileId}/")
     private R moveFile(@PathVariable("fileId") Long fileId, @RequestBody ConfigJsonDto param) {

+ 20 - 20
src/main/java/com/fd/controller/RasterController.java

@@ -1,30 +1,22 @@
 package com.fd.controller;
 
-import com.alibaba.fastjson.JSON;
-import com.alibaba.fastjson.JSONArray;
 import com.fd.constant.Command;
 import com.fd.constant.MsgCode;
 import com.fd.constant.TypeCode;
 import com.fd.dto.ConfigJsonDto;
-import com.fd.dto.MyQueue;
 import com.fd.dto.PageDto;
 import com.fd.entity.FileEntity;
 import com.fd.entity.OutputFileEntity;
-import com.fd.server.CmdServer;
 import com.fd.server.RasterServer;
-import com.fd.server.impl.CmdServerImpl;
-import com.fd.server.impl.RasterServerImpl;
 import com.fd.thread.AsyncTask;
 import com.fd.util.FileUtils;
 import com.fd.util.R;
 import com.fd.util.RegexUtils;
-import com.fd.util.SpringContext;
 import io.swagger.annotations.ApiOperation;
 import lombok.extern.log4j.Log4j2;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Value;
-import org.springframework.scheduling.annotation.Async;
 import org.springframework.web.bind.annotation.*;
 import org.springframework.web.multipart.MultipartFile;
 
@@ -35,6 +27,7 @@ import java.util.List;
 import java.util.concurrent.BlockingQueue;
 import java.util.concurrent.LinkedBlockingQueue;
 import java.util.concurrent.TimeUnit;
+import java.util.concurrent.atomic.AtomicInteger;
 
 /**
  * Created by Owen on 2019/11/12 0012 9:40
@@ -58,10 +51,16 @@ public class RasterController {
     @Autowired
     private RasterServer rasterServer;
 
+    /**
+     * 保证线程安全的
+     */
+    private static AtomicInteger count = new AtomicInteger();
+    private static AtomicInteger coordCount = new AtomicInteger();
 
-    private static BlockingQueue<MyQueue> sliceQueue = new LinkedBlockingQueue<MyQueue>(2);
 
-    private static BlockingQueue<MyQueue> coordQueue = new LinkedBlockingQueue<MyQueue>(2);
+    private static BlockingQueue<Integer> sliceQueue = new LinkedBlockingQueue<Integer>(2);
+
+    private static BlockingQueue<Integer> coordQueue = new LinkedBlockingQueue<Integer>(2);
 
 
 
@@ -212,12 +211,12 @@ public class RasterController {
 
 
         // 把数据放入队列中
-        MyQueue data = new MyQueue();
-        data.setOutputFile(entity);
-        data.setStr(cmd);
+//        MyQueue data = new MyQueue();
+//        data.setOutputFile(entity);
+//        data.setStr(cmd);
         boolean offer = false;
         try {
-            offer = coordQueue.offer(data, 1, TimeUnit.SECONDS);
+            offer = coordQueue.offer(coordCount.incrementAndGet(), 1, TimeUnit.SECONDS);
             log.info("入队成功");
         } catch (Exception e) {
             log.error("error  producer queue raster cmdJudgeCoord: {}", e);
@@ -232,7 +231,7 @@ public class RasterController {
             log.info("coord entity: {}",entity);
             log.info("coord producer update time: {}", entity.getUpdateTime());
 
-            asyncTask.rasterJudgeCoordConsumerThread(coordQueue, rasterServer, OUTPUT_FILE_PATH);
+            asyncTask.rasterJudgeCoordConsumerThread(coordQueue, rasterServer, OUTPUT_FILE_PATH, entity);
 
             return new R(200, entity);
         }
@@ -272,12 +271,13 @@ public class RasterController {
 
 
         // 把数据放入队列中
-        MyQueue data = new MyQueue();
-        data.setOutputFile(entity);
-        data.setStr(cmd);
+//        MyQueue data = new MyQueue();
+//        data.setOutputFile(entity);
+//        data.setStr(cmd);
         boolean offer = false;
+
         try {
-            offer = sliceQueue.offer(data, 1, TimeUnit.SECONDS);
+            offer = sliceQueue.offer(count.incrementAndGet(), 1, TimeUnit.SECONDS);
             log.info("raster slice 入队成功");
         } catch (Exception e) {
             log.error("error  producer queue raster cmdSlice: {}", e);
@@ -295,7 +295,7 @@ public class RasterController {
 
             entity = rasterServer.save(entity);
 
-            asyncTask.rasterSliceThread(sliceQueue, rasterServer);
+            asyncTask.rasterSliceThread(sliceQueue, rasterServer, entity, cmd);
 
             return new R(200, entity) ;
         }

+ 18 - 12
src/main/java/com/fd/controller/VectorController.java

@@ -38,6 +38,7 @@ import java.util.Map;
 import java.util.concurrent.BlockingQueue;
 import java.util.concurrent.LinkedBlockingQueue;
 import java.util.concurrent.TimeUnit;
+import java.util.concurrent.atomic.AtomicInteger;
 
 /**
  * Created by Owen on 2019/11/12 0012 9:40
@@ -83,12 +84,17 @@ public class VectorController {
      */
     private static int COORD_NOT_WGS84 = 0;
 
-    private static BlockingQueue<MyQueue> vectorCoordQueue = new LinkedBlockingQueue<MyQueue>(2);
+    private static BlockingQueue<Integer> vectorCoordQueue = new LinkedBlockingQueue<Integer>(2);
 
-    private static BlockingQueue<MyQueue> vectorSliceQueue = new LinkedBlockingQueue<MyQueue>(2);
+    private static BlockingQueue<Integer> vectorSliceQueue = new LinkedBlockingQueue<Integer>(2);
 
 
+    /**
+     * 保证线程安全的
+     */
+    private static AtomicInteger coordCount = new AtomicInteger();
 
+    private static AtomicInteger sliceCount = new AtomicInteger();
 
 
 
@@ -236,12 +242,12 @@ public class VectorController {
 
 
         // 把数据放入队列中
-        MyQueue data = new MyQueue();
-        data.setOutputFile(entity);
-        data.setStr(cmd);
+//        MyQueue data = new MyQueue();
+//        data.setOutputFile(entity);
+//        data.setStr(cmd);
         boolean offer = false;
         try {
-            offer = vectorCoordQueue.offer(data, 1, TimeUnit.SECONDS);
+            offer = vectorCoordQueue.offer(coordCount.incrementAndGet(), 1, TimeUnit.SECONDS);
             log.info("入队成功");
         } catch (Exception e) {
             log.error("error vector producer queue cmdJudgeCoord: {}", e);
@@ -253,7 +259,7 @@ public class VectorController {
             entity.setStatus(9);
             entity = vectorServer.save(entity);
 
-            asyncTask.vectorConvertCoordThread(vectorCoordQueue, vectorServer, OUTPUT_FILE_PATH);
+            asyncTask.vectorConvertCoordThread(vectorCoordQueue, vectorServer, OUTPUT_FILE_PATH, entity);
 
             return new R(200, entity);
         }
@@ -330,12 +336,12 @@ public class VectorController {
 
 
         // 把数据放入队列中
-        MyQueue data = new MyQueue();
-        data.setOutputFile(entity);
-        data.setStr(cmd);
+//        MyQueue data = new MyQueue();
+//        data.setOutputFile(entity);
+//        data.setStr(cmd);
         boolean offer = false;
         try {
-            offer = vectorSliceQueue.offer(data, 1, TimeUnit.SECONDS);
+            offer = vectorSliceQueue.offer(sliceCount.incrementAndGet(), 1, TimeUnit.SECONDS);
             log.info("vector slice 入队成功");
         } catch (Exception e) {
             log.error("error  producer queue raster cmdSlice: {}", e);
@@ -351,7 +357,7 @@ public class VectorController {
             entity.setLayerMax(Integer.valueOf(layerMax));
             entity = vectorServer.save(entity);
 
-            asyncTask.vectorSliceThread(vectorSliceQueue, vectorServer);
+            asyncTask.vectorSliceThread(vectorSliceQueue, vectorServer, entity, cmd);
 
             return new R(200, entity);
         }

+ 110 - 128
src/main/java/com/fd/thread/AsyncTask.java

@@ -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));
         }
 
 

+ 2 - 2
src/main/java/com/fd/thread/TaskExecutePool.java

@@ -30,8 +30,8 @@ public class TaskExecutePool {
         ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor();
         executor.setCorePoolSize(corePoolSize);
         executor.setMaxPoolSize(maxPoolSize);
-        executor.setQueueCapacity(keepAliveSeconds);
-        executor.setKeepAliveSeconds(queueCapacity);
+        executor.setQueueCapacity(queueCapacity);
+        executor.setKeepAliveSeconds(keepAliveSeconds);
         executor.setThreadNamePrefix("MyExecutor-");
         // rejection-policy:当pool已经达到max size的时候,如何处理新任务
         // CALLER_RUNS:不在新线程中执行任务,而是由调用者所在的线程来执行

+ 2 - 2
src/main/resources/application.properties

@@ -11,8 +11,8 @@ spring.jpa.hibernate.ddl-auto=update
 spring.jpa.hibernate.naming.implicit-strategy=org.springframework.boot.orm.jpa.hibernate.SpringImplicitNamingStrategy
 spring.jpa.open-in-view=false
 
-#�̳߳�
-spring.task.pool.corePoolSize=5
+#线程池
+spring.task.pool.corePoolSize=10
 spring.task.pool.maxPoolSize=100
 spring.task.pool.keepAliveSeconds=100
 spring.task.pool.queueCapacity=100