[add] 安全、质量知识库接入畅写回调保存文件 [update] 修改斯巴达中获取文件名字方法
This commit is contained in:
@ -272,12 +272,12 @@ weather:
|
|||||||
# dxf转 geojson 执行文件名
|
# dxf转 geojson 执行文件名
|
||||||
dxf2GeoJson:
|
dxf2GeoJson:
|
||||||
file-name: main.exe
|
file-name: main.exe
|
||||||
ys7:
|
|
||||||
app-key: 3acf9f1a43dc4209841e0893003db0a2
|
|
||||||
app-secret: 4bbf3e9394f55d3af6e3af27b2d3db36
|
|
||||||
#ys7:
|
#ys7:
|
||||||
# app-key: f01490bd5d5241b7809d8fc5fe84f7f8
|
# app-key: 3acf9f1a43dc4209841e0893003db0a2
|
||||||
# app-secret: d468f270699de855fd85fe7fd6f9595f
|
# app-secret: 4bbf3e9394f55d3af6e3af27b2d3db36
|
||||||
|
ys7:
|
||||||
|
app-key: 081b0d6d5f7f4de8bc5c7fa350fb26ec
|
||||||
|
app-secret: caa37b9f60ef02deb57e563bc190e6db
|
||||||
# 斯巴达算法
|
# 斯巴达算法
|
||||||
sparta:
|
sparta:
|
||||||
url: http://119.3.204.120:8040
|
url: http://119.3.204.120:8040
|
||||||
|
@ -123,7 +123,7 @@ security:
|
|||||||
- /other/ys7Device/webhook
|
- /other/ys7Device/webhook
|
||||||
# todo 仅测试
|
# todo 仅测试
|
||||||
- /facility/matrix/**
|
- /facility/matrix/**
|
||||||
- /changxie/callback
|
- /*/knowledgeDocument/changxie/callback/**
|
||||||
|
|
||||||
# 多租户配置
|
# 多租户配置
|
||||||
tenant:
|
tenant:
|
||||||
|
@ -1,9 +1,11 @@
|
|||||||
package org.dromara.test;
|
package org.dromara.test;
|
||||||
|
|
||||||
|
import cn.hutool.json.JSONUtil;
|
||||||
import jakarta.annotation.Resource;
|
import jakarta.annotation.Resource;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.dromara.manager.spartamanager.SpartaManager;
|
import org.dromara.manager.spartamanager.SpartaManager;
|
||||||
import org.dromara.manager.spartamanager.enums.SpartaRecTypeEnum;
|
import org.dromara.manager.spartamanager.enums.SpartaRecTypeEnum;
|
||||||
|
import org.dromara.manager.spartamanager.vo.ImageStreamResult;
|
||||||
import org.dromara.manager.spartamanager.vo.SpartaRecognizeVo;
|
import org.dromara.manager.spartamanager.vo.SpartaRecognizeVo;
|
||||||
import org.dromara.manager.spartamanager.vo.SpartaTargetVo;
|
import org.dromara.manager.spartamanager.vo.SpartaTargetVo;
|
||||||
import org.dromara.other.domain.dto.ys7deviceimg.OthYs7DeviceImgCreateByCapture;
|
import org.dromara.other.domain.dto.ys7deviceimg.OthYs7DeviceImgCreateByCapture;
|
||||||
@ -15,7 +17,9 @@ import javax.imageio.ImageIO;
|
|||||||
import java.awt.*;
|
import java.awt.*;
|
||||||
import java.awt.image.BufferedImage;
|
import java.awt.image.BufferedImage;
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
|
import java.io.FileOutputStream;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
|
import java.io.OutputStream;
|
||||||
import java.net.URI;
|
import java.net.URI;
|
||||||
import java.net.URISyntaxException;
|
import java.net.URISyntaxException;
|
||||||
import java.util.Date;
|
import java.util.Date;
|
||||||
@ -110,4 +114,478 @@ public class SpartaTest {
|
|||||||
log.info("识别结果: {}", img);
|
log.info("识别结果: {}", img);
|
||||||
othYs7DeviceImgService.saveCapturePic(List.of(img));
|
othYs7DeviceImgService.saveCapturePic(List.of(img));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void test4() throws IOException, URISyntaxException {
|
||||||
|
String url = "http://xny.yj-3d.com:7363/file/tif/20250625160218orthophoto.png";
|
||||||
|
String targetStr = "[\n" +
|
||||||
|
" {\n" +
|
||||||
|
" \"type\": \"pho\",\n" +
|
||||||
|
" \"size\": [\n" +
|
||||||
|
" 344,\n" +
|
||||||
|
" 149\n" +
|
||||||
|
" ],\n" +
|
||||||
|
" \"leftTopPoint\": [\n" +
|
||||||
|
" 3787,\n" +
|
||||||
|
" 3241\n" +
|
||||||
|
" ],\n" +
|
||||||
|
" \"score\": 0.9511\n" +
|
||||||
|
" },\n" +
|
||||||
|
" {\n" +
|
||||||
|
" \"type\": \"pho\",\n" +
|
||||||
|
" \"size\": [\n" +
|
||||||
|
" 334,\n" +
|
||||||
|
" 147\n" +
|
||||||
|
" ],\n" +
|
||||||
|
" \"leftTopPoint\": [\n" +
|
||||||
|
" 4276,\n" +
|
||||||
|
" 3590\n" +
|
||||||
|
" ],\n" +
|
||||||
|
" \"score\": 0.9498\n" +
|
||||||
|
" },\n" +
|
||||||
|
" {\n" +
|
||||||
|
" \"type\": \"pho\",\n" +
|
||||||
|
" \"size\": [\n" +
|
||||||
|
" 330,\n" +
|
||||||
|
" 149\n" +
|
||||||
|
" ],\n" +
|
||||||
|
" \"leftTopPoint\": [\n" +
|
||||||
|
" 3459,\n" +
|
||||||
|
" 3183\n" +
|
||||||
|
" ],\n" +
|
||||||
|
" \"score\": 0.9496\n" +
|
||||||
|
" },\n" +
|
||||||
|
" {\n" +
|
||||||
|
" \"type\": \"pho\",\n" +
|
||||||
|
" \"size\": [\n" +
|
||||||
|
" 353,\n" +
|
||||||
|
" 148\n" +
|
||||||
|
" ],\n" +
|
||||||
|
" \"leftTopPoint\": [\n" +
|
||||||
|
" 4226,\n" +
|
||||||
|
" 3714\n" +
|
||||||
|
" ],\n" +
|
||||||
|
" \"score\": 0.9495\n" +
|
||||||
|
" },\n" +
|
||||||
|
" {\n" +
|
||||||
|
" \"type\": \"pho\",\n" +
|
||||||
|
" \"size\": [\n" +
|
||||||
|
" 339,\n" +
|
||||||
|
" 132\n" +
|
||||||
|
" ],\n" +
|
||||||
|
" \"leftTopPoint\": [\n" +
|
||||||
|
" 4276,\n" +
|
||||||
|
" 2678\n" +
|
||||||
|
" ],\n" +
|
||||||
|
" \"score\": 0.9486\n" +
|
||||||
|
" },\n" +
|
||||||
|
" {\n" +
|
||||||
|
" \"type\": \"pho\",\n" +
|
||||||
|
" \"size\": [\n" +
|
||||||
|
" 340,\n" +
|
||||||
|
" 145\n" +
|
||||||
|
" ],\n" +
|
||||||
|
" \"leftTopPoint\": [\n" +
|
||||||
|
" 4565,\n" +
|
||||||
|
" 2982\n" +
|
||||||
|
" ],\n" +
|
||||||
|
" \"score\": 0.9486\n" +
|
||||||
|
" },\n" +
|
||||||
|
" {\n" +
|
||||||
|
" \"type\": \"pho\",\n" +
|
||||||
|
" \"size\": [\n" +
|
||||||
|
" 335,\n" +
|
||||||
|
" 142\n" +
|
||||||
|
" ],\n" +
|
||||||
|
" \"leftTopPoint\": [\n" +
|
||||||
|
" 3695,\n" +
|
||||||
|
" 3360\n" +
|
||||||
|
" ],\n" +
|
||||||
|
" \"score\": 0.9475\n" +
|
||||||
|
" },\n" +
|
||||||
|
" {\n" +
|
||||||
|
" \"type\": \"pho\",\n" +
|
||||||
|
" \"size\": [\n" +
|
||||||
|
" 336,\n" +
|
||||||
|
" 145\n" +
|
||||||
|
" ],\n" +
|
||||||
|
" \"leftTopPoint\": [\n" +
|
||||||
|
" 4446,\n" +
|
||||||
|
" 3357\n" +
|
||||||
|
" ],\n" +
|
||||||
|
" \"score\": 0.9473\n" +
|
||||||
|
" },\n" +
|
||||||
|
" {\n" +
|
||||||
|
" \"type\": \"pho\",\n" +
|
||||||
|
" \"size\": [\n" +
|
||||||
|
" 338,\n" +
|
||||||
|
" 140\n" +
|
||||||
|
" ],\n" +
|
||||||
|
" \"leftTopPoint\": [\n" +
|
||||||
|
" 4248,\n" +
|
||||||
|
" 2803\n" +
|
||||||
|
" ],\n" +
|
||||||
|
" \"score\": 0.9466\n" +
|
||||||
|
" },\n" +
|
||||||
|
" {\n" +
|
||||||
|
" \"type\": \"pho\",\n" +
|
||||||
|
" \"size\": [\n" +
|
||||||
|
" 343,\n" +
|
||||||
|
" 155\n" +
|
||||||
|
" ],\n" +
|
||||||
|
" \"leftTopPoint\": [\n" +
|
||||||
|
" 4565,\n" +
|
||||||
|
" 3769\n" +
|
||||||
|
" ],\n" +
|
||||||
|
" \"score\": 0.9464\n" +
|
||||||
|
" },\n" +
|
||||||
|
" {\n" +
|
||||||
|
" \"type\": \"pho\",\n" +
|
||||||
|
" \"size\": [\n" +
|
||||||
|
" 346,\n" +
|
||||||
|
" 148\n" +
|
||||||
|
" ],\n" +
|
||||||
|
" \"leftTopPoint\": [\n" +
|
||||||
|
" 4233,\n" +
|
||||||
|
" 2925\n" +
|
||||||
|
" ],\n" +
|
||||||
|
" \"score\": 0.9462\n" +
|
||||||
|
" },\n" +
|
||||||
|
" {\n" +
|
||||||
|
" \"type\": \"pho\",\n" +
|
||||||
|
" \"size\": [\n" +
|
||||||
|
" 327,\n" +
|
||||||
|
" 159\n" +
|
||||||
|
" ],\n" +
|
||||||
|
" \"leftTopPoint\": [\n" +
|
||||||
|
" 4000,\n" +
|
||||||
|
" 2484\n" +
|
||||||
|
" ],\n" +
|
||||||
|
" \"score\": 0.946\n" +
|
||||||
|
" },\n" +
|
||||||
|
" {\n" +
|
||||||
|
" \"type\": \"pho\",\n" +
|
||||||
|
" \"size\": [\n" +
|
||||||
|
" 336,\n" +
|
||||||
|
" 145\n" +
|
||||||
|
" ],\n" +
|
||||||
|
" \"leftTopPoint\": [\n" +
|
||||||
|
" 4906,\n" +
|
||||||
|
" 2908\n" +
|
||||||
|
" ],\n" +
|
||||||
|
" \"score\": 0.9457\n" +
|
||||||
|
" },\n" +
|
||||||
|
" {\n" +
|
||||||
|
" \"type\": \"pho\",\n" +
|
||||||
|
" \"size\": [\n" +
|
||||||
|
" 339,\n" +
|
||||||
|
" 150\n" +
|
||||||
|
" ],\n" +
|
||||||
|
" \"leftTopPoint\": [\n" +
|
||||||
|
" 3618,\n" +
|
||||||
|
" 3477\n" +
|
||||||
|
" ],\n" +
|
||||||
|
" \"score\": 0.9456\n" +
|
||||||
|
" },\n" +
|
||||||
|
" {\n" +
|
||||||
|
" \"type\": \"pho\",\n" +
|
||||||
|
" \"size\": [\n" +
|
||||||
|
" 318,\n" +
|
||||||
|
" 147\n" +
|
||||||
|
" ],\n" +
|
||||||
|
" \"leftTopPoint\": [\n" +
|
||||||
|
" 5241,\n" +
|
||||||
|
" 3883\n" +
|
||||||
|
" ],\n" +
|
||||||
|
" \"score\": 0.9448\n" +
|
||||||
|
" },\n" +
|
||||||
|
" {\n" +
|
||||||
|
" \"type\": \"pho\",\n" +
|
||||||
|
" \"size\": [\n" +
|
||||||
|
" 328,\n" +
|
||||||
|
" 147\n" +
|
||||||
|
" ],\n" +
|
||||||
|
" \"leftTopPoint\": [\n" +
|
||||||
|
" 4934,\n" +
|
||||||
|
" 3702\n" +
|
||||||
|
" ],\n" +
|
||||||
|
" \"score\": 0.943\n" +
|
||||||
|
" },\n" +
|
||||||
|
" {\n" +
|
||||||
|
" \"type\": \"pho\",\n" +
|
||||||
|
" \"size\": [\n" +
|
||||||
|
" 312,\n" +
|
||||||
|
" 142\n" +
|
||||||
|
" ],\n" +
|
||||||
|
" \"leftTopPoint\": [\n" +
|
||||||
|
" 3633,\n" +
|
||||||
|
" 2557\n" +
|
||||||
|
" ],\n" +
|
||||||
|
" \"score\": 0.9428\n" +
|
||||||
|
" },\n" +
|
||||||
|
" {\n" +
|
||||||
|
" \"type\": \"pho\",\n" +
|
||||||
|
" \"size\": [\n" +
|
||||||
|
" 340,\n" +
|
||||||
|
" 137\n" +
|
||||||
|
" ],\n" +
|
||||||
|
" \"leftTopPoint\": [\n" +
|
||||||
|
" 4576,\n" +
|
||||||
|
" 2856\n" +
|
||||||
|
" ],\n" +
|
||||||
|
" \"score\": 0.9406\n" +
|
||||||
|
" },\n" +
|
||||||
|
" {\n" +
|
||||||
|
" \"type\": \"pho\",\n" +
|
||||||
|
" \"size\": [\n" +
|
||||||
|
" 335,\n" +
|
||||||
|
" 138\n" +
|
||||||
|
" ],\n" +
|
||||||
|
" \"leftTopPoint\": [\n" +
|
||||||
|
" 4316,\n" +
|
||||||
|
" 2548\n" +
|
||||||
|
" ],\n" +
|
||||||
|
" \"score\": 0.9398\n" +
|
||||||
|
" },\n" +
|
||||||
|
" {\n" +
|
||||||
|
" \"type\": \"pho\",\n" +
|
||||||
|
" \"size\": [\n" +
|
||||||
|
" 345,\n" +
|
||||||
|
" 146\n" +
|
||||||
|
" ],\n" +
|
||||||
|
" \"leftTopPoint\": [\n" +
|
||||||
|
" 4890,\n" +
|
||||||
|
" 3829\n" +
|
||||||
|
" ],\n" +
|
||||||
|
" \"score\": 0.9378\n" +
|
||||||
|
" },\n" +
|
||||||
|
" {\n" +
|
||||||
|
" \"type\": \"pho\",\n" +
|
||||||
|
" \"size\": [\n" +
|
||||||
|
" 332,\n" +
|
||||||
|
" 153\n" +
|
||||||
|
" ],\n" +
|
||||||
|
" \"leftTopPoint\": [\n" +
|
||||||
|
" 4126,\n" +
|
||||||
|
" 3304\n" +
|
||||||
|
" ],\n" +
|
||||||
|
" \"score\": 0.9371\n" +
|
||||||
|
" },\n" +
|
||||||
|
" {\n" +
|
||||||
|
" \"type\": \"pho\",\n" +
|
||||||
|
" \"size\": [\n" +
|
||||||
|
" 325,\n" +
|
||||||
|
" 137\n" +
|
||||||
|
" ],\n" +
|
||||||
|
" \"leftTopPoint\": [\n" +
|
||||||
|
" 3581,\n" +
|
||||||
|
" 2944\n" +
|
||||||
|
" ],\n" +
|
||||||
|
" \"score\": 0.9318\n" +
|
||||||
|
" },\n" +
|
||||||
|
" {\n" +
|
||||||
|
" \"type\": \"pho\",\n" +
|
||||||
|
" \"size\": [\n" +
|
||||||
|
" 320,\n" +
|
||||||
|
" 145\n" +
|
||||||
|
" ],\n" +
|
||||||
|
" \"leftTopPoint\": [\n" +
|
||||||
|
" 3879,\n" +
|
||||||
|
" 3123\n" +
|
||||||
|
" ],\n" +
|
||||||
|
" \"score\": 0.9304\n" +
|
||||||
|
" },\n" +
|
||||||
|
" {\n" +
|
||||||
|
" \"type\": \"pho\",\n" +
|
||||||
|
" \"size\": [\n" +
|
||||||
|
" 343,\n" +
|
||||||
|
" 143\n" +
|
||||||
|
" ],\n" +
|
||||||
|
" \"leftTopPoint\": [\n" +
|
||||||
|
" 4601,\n" +
|
||||||
|
" 3645\n" +
|
||||||
|
" ],\n" +
|
||||||
|
" \"score\": 0.9258\n" +
|
||||||
|
" },\n" +
|
||||||
|
" {\n" +
|
||||||
|
" \"type\": \"pho\",\n" +
|
||||||
|
" \"size\": [\n" +
|
||||||
|
" 335,\n" +
|
||||||
|
" 142\n" +
|
||||||
|
" ],\n" +
|
||||||
|
" \"leftTopPoint\": [\n" +
|
||||||
|
" 4673,\n" +
|
||||||
|
" 3528\n" +
|
||||||
|
" ],\n" +
|
||||||
|
" \"score\": 0.9255\n" +
|
||||||
|
" },\n" +
|
||||||
|
" {\n" +
|
||||||
|
" \"type\": \"pho\",\n" +
|
||||||
|
" \"size\": [\n" +
|
||||||
|
" 312,\n" +
|
||||||
|
" 144\n" +
|
||||||
|
" ],\n" +
|
||||||
|
" \"leftTopPoint\": [\n" +
|
||||||
|
" 4800,\n" +
|
||||||
|
" 3411\n" +
|
||||||
|
" ],\n" +
|
||||||
|
" \"score\": 0.923\n" +
|
||||||
|
" },\n" +
|
||||||
|
" {\n" +
|
||||||
|
" \"type\": \"pho\",\n" +
|
||||||
|
" \"size\": [\n" +
|
||||||
|
" 337,\n" +
|
||||||
|
" 139\n" +
|
||||||
|
" ],\n" +
|
||||||
|
" \"leftTopPoint\": [\n" +
|
||||||
|
" 4016,\n" +
|
||||||
|
" 3412\n" +
|
||||||
|
" ],\n" +
|
||||||
|
" \"score\": 0.9225\n" +
|
||||||
|
" },\n" +
|
||||||
|
" {\n" +
|
||||||
|
" \"type\": \"pho\",\n" +
|
||||||
|
" \"size\": [\n" +
|
||||||
|
" 340,\n" +
|
||||||
|
" 141\n" +
|
||||||
|
" ],\n" +
|
||||||
|
" \"leftTopPoint\": [\n" +
|
||||||
|
" 4605,\n" +
|
||||||
|
" 2729\n" +
|
||||||
|
" ],\n" +
|
||||||
|
" \"score\": 0.9191\n" +
|
||||||
|
" },\n" +
|
||||||
|
" {\n" +
|
||||||
|
" \"type\": \"pho\",\n" +
|
||||||
|
" \"size\": [\n" +
|
||||||
|
" 298,\n" +
|
||||||
|
" 325\n" +
|
||||||
|
" ],\n" +
|
||||||
|
" \"leftTopPoint\": [\n" +
|
||||||
|
" 3249,\n" +
|
||||||
|
" 2576\n" +
|
||||||
|
" ],\n" +
|
||||||
|
" \"score\": 0.9185\n" +
|
||||||
|
" },\n" +
|
||||||
|
" {\n" +
|
||||||
|
" \"type\": \"pho\",\n" +
|
||||||
|
" \"size\": [\n" +
|
||||||
|
" 338,\n" +
|
||||||
|
" 156\n" +
|
||||||
|
" ],\n" +
|
||||||
|
" \"leftTopPoint\": [\n" +
|
||||||
|
" 4537,\n" +
|
||||||
|
" 2451\n" +
|
||||||
|
" ],\n" +
|
||||||
|
" \"score\": 0.9118\n" +
|
||||||
|
" },\n" +
|
||||||
|
" {\n" +
|
||||||
|
" \"type\": \"pho\",\n" +
|
||||||
|
" \"size\": [\n" +
|
||||||
|
" 334,\n" +
|
||||||
|
" 143\n" +
|
||||||
|
" ],\n" +
|
||||||
|
" \"leftTopPoint\": [\n" +
|
||||||
|
" 4933,\n" +
|
||||||
|
" 2783\n" +
|
||||||
|
" ],\n" +
|
||||||
|
" \"score\": 0.9114\n" +
|
||||||
|
" },\n" +
|
||||||
|
" {\n" +
|
||||||
|
" \"type\": \"pho\",\n" +
|
||||||
|
" \"size\": [\n" +
|
||||||
|
" 339,\n" +
|
||||||
|
" 141\n" +
|
||||||
|
" ],\n" +
|
||||||
|
" \"leftTopPoint\": [\n" +
|
||||||
|
" 4464,\n" +
|
||||||
|
" 2308\n" +
|
||||||
|
" ],\n" +
|
||||||
|
" \"score\": 0.9107\n" +
|
||||||
|
" },\n" +
|
||||||
|
" {\n" +
|
||||||
|
" \"type\": \"pho\",\n" +
|
||||||
|
" \"size\": [\n" +
|
||||||
|
" 343,\n" +
|
||||||
|
" 143\n" +
|
||||||
|
" ],\n" +
|
||||||
|
" \"leftTopPoint\": [\n" +
|
||||||
|
" 3890,\n" +
|
||||||
|
" 3000\n" +
|
||||||
|
" ],\n" +
|
||||||
|
" \"score\": 0.9064\n" +
|
||||||
|
" },\n" +
|
||||||
|
" {\n" +
|
||||||
|
" \"type\": \"pho\",\n" +
|
||||||
|
" \"size\": [\n" +
|
||||||
|
" 313,\n" +
|
||||||
|
" 139\n" +
|
||||||
|
" ],\n" +
|
||||||
|
" \"leftTopPoint\": [\n" +
|
||||||
|
" 3593,\n" +
|
||||||
|
" 2810\n" +
|
||||||
|
" ],\n" +
|
||||||
|
" \"score\": 0.902\n" +
|
||||||
|
" },\n" +
|
||||||
|
" {\n" +
|
||||||
|
" \"type\": \"pho\",\n" +
|
||||||
|
" \"size\": [\n" +
|
||||||
|
" 259,\n" +
|
||||||
|
" 131\n" +
|
||||||
|
" ],\n" +
|
||||||
|
" \"leftTopPoint\": [\n" +
|
||||||
|
" 4000,\n" +
|
||||||
|
" 2755\n" +
|
||||||
|
" ],\n" +
|
||||||
|
" \"score\": 0.8869\n" +
|
||||||
|
" },\n" +
|
||||||
|
" {\n" +
|
||||||
|
" \"type\": \"pho\",\n" +
|
||||||
|
" \"size\": [\n" +
|
||||||
|
" 345,\n" +
|
||||||
|
" 149\n" +
|
||||||
|
" ],\n" +
|
||||||
|
" \"leftTopPoint\": [\n" +
|
||||||
|
" 3901,\n" +
|
||||||
|
" 2864\n" +
|
||||||
|
" ],\n" +
|
||||||
|
" \"score\": 0.8841\n" +
|
||||||
|
" },\n" +
|
||||||
|
" {\n" +
|
||||||
|
" \"type\": \"pho\",\n" +
|
||||||
|
" \"size\": [\n" +
|
||||||
|
" 345,\n" +
|
||||||
|
" 150\n" +
|
||||||
|
" ],\n" +
|
||||||
|
" \"leftTopPoint\": [\n" +
|
||||||
|
" 3945,\n" +
|
||||||
|
" 2610\n" +
|
||||||
|
" ],\n" +
|
||||||
|
" \"score\": 0.8632\n" +
|
||||||
|
" },\n" +
|
||||||
|
" {\n" +
|
||||||
|
" \"type\": \"pho\",\n" +
|
||||||
|
" \"size\": [\n" +
|
||||||
|
" 199,\n" +
|
||||||
|
" 110\n" +
|
||||||
|
" ],\n" +
|
||||||
|
" \"leftTopPoint\": [\n" +
|
||||||
|
" 5166,\n" +
|
||||||
|
" 3661\n" +
|
||||||
|
" ],\n" +
|
||||||
|
" \"score\": 0.8225\n" +
|
||||||
|
" }\n" +
|
||||||
|
" ]";
|
||||||
|
List<SpartaTargetVo> list = JSONUtil.toList(targetStr, SpartaTargetVo.class);
|
||||||
|
log.info("list:{}", list);
|
||||||
|
ImageStreamResult imageStreamResult = spartaManager.drawImageToStream(url, list);
|
||||||
|
log.info("imageStreamResult:{}", imageStreamResult);
|
||||||
|
try (OutputStream outputStream = new FileOutputStream("D:/images/save.png")) {
|
||||||
|
byte[] buffer = new byte[4096];
|
||||||
|
int bytesRead;
|
||||||
|
while ((bytesRead = imageStreamResult.getInputStream().read(buffer)) != -1) {
|
||||||
|
outputStream.write(buffer, 0, bytesRead);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -148,6 +148,9 @@ public class SpartaManager {
|
|||||||
private static String extractFilename(String url) {
|
private static String extractFilename(String url) {
|
||||||
int start = url.lastIndexOf("/") + 1;
|
int start = url.lastIndexOf("/") + 1;
|
||||||
int end = url.indexOf("?", start);
|
int end = url.indexOf("?", start);
|
||||||
|
if (end == -1) {
|
||||||
|
return url.substring(start);
|
||||||
|
}
|
||||||
if (start > 0 && end > start) {
|
if (start > 0 && end > start) {
|
||||||
return url.substring(start, end);
|
return url.substring(start, end);
|
||||||
}
|
}
|
||||||
|
@ -11,7 +11,7 @@ public interface QltKnowledgeDocumentConstant {
|
|||||||
/**
|
/**
|
||||||
* 顶级目录前缀
|
* 顶级目录前缀
|
||||||
*/
|
*/
|
||||||
String TOP_FOLDER_PREFIX = "doc/safety/knowledge/";
|
String TOP_FOLDER_PREFIX = "doc/quality/knowledge/";
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 顶级目录名称
|
* 顶级目录名称
|
||||||
|
@ -3,6 +3,8 @@ package org.dromara.quality.controller;
|
|||||||
import cn.dev33.satoken.annotation.SaCheckPermission;
|
import cn.dev33.satoken.annotation.SaCheckPermission;
|
||||||
import cn.hutool.core.lang.tree.Tree;
|
import cn.hutool.core.lang.tree.Tree;
|
||||||
import jakarta.annotation.Resource;
|
import jakarta.annotation.Resource;
|
||||||
|
import jakarta.servlet.http.HttpServletRequest;
|
||||||
|
import jakarta.servlet.http.HttpServletResponse;
|
||||||
import jakarta.validation.constraints.NotNull;
|
import jakarta.validation.constraints.NotNull;
|
||||||
import org.dromara.common.core.domain.R;
|
import org.dromara.common.core.domain.R;
|
||||||
import org.dromara.common.idempotent.annotation.RepeatSubmit;
|
import org.dromara.common.idempotent.annotation.RepeatSubmit;
|
||||||
@ -145,4 +147,14 @@ public class QltKnowledgeDocumentController extends BaseController {
|
|||||||
@PathVariable Long[] ids) {
|
@PathVariable Long[] ids) {
|
||||||
return toAjax(qltKnowledgeDocumentService.recoveryBatchById(List.of(ids)));
|
return toAjax(qltKnowledgeDocumentService.recoveryBatchById(List.of(ids)));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 畅写在线修改保存回调
|
||||||
|
*/
|
||||||
|
@SaCheckPermission("quality:knowledgeDocument:edit")
|
||||||
|
@PostMapping("/changxie/callback/{id}")
|
||||||
|
public void singleFileUploads(@NotNull(message = "主键不能为空")
|
||||||
|
@PathVariable Long id, HttpServletRequest request, HttpServletResponse response) {
|
||||||
|
qltKnowledgeDocumentService.singleFileUploads(id, request, response);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -3,6 +3,8 @@ package org.dromara.quality.service;
|
|||||||
import cn.hutool.core.lang.tree.Tree;
|
import cn.hutool.core.lang.tree.Tree;
|
||||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||||
import com.baomidou.mybatisplus.extension.service.IService;
|
import com.baomidou.mybatisplus.extension.service.IService;
|
||||||
|
import jakarta.servlet.http.HttpServletRequest;
|
||||||
|
import jakarta.servlet.http.HttpServletResponse;
|
||||||
import org.dromara.common.mybatis.core.page.PageQuery;
|
import org.dromara.common.mybatis.core.page.PageQuery;
|
||||||
import org.dromara.common.mybatis.core.page.TableDataInfo;
|
import org.dromara.common.mybatis.core.page.TableDataInfo;
|
||||||
import org.dromara.quality.domain.QltKnowledgeDocument;
|
import org.dromara.quality.domain.QltKnowledgeDocument;
|
||||||
@ -138,4 +140,13 @@ public interface IQltKnowledgeDocumentService extends IService<QltKnowledgeDocum
|
|||||||
* @return 文档对象视图
|
* @return 文档对象视图
|
||||||
*/
|
*/
|
||||||
Page<QltKnowledgeDocumentVo> getVoPage(Page<QltKnowledgeDocument> documentPage);
|
Page<QltKnowledgeDocumentVo> getVoPage(Page<QltKnowledgeDocument> documentPage);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 畅写在线文件修改
|
||||||
|
*
|
||||||
|
* @param id 文档id
|
||||||
|
* @param request 请求
|
||||||
|
* @param response 响应
|
||||||
|
*/
|
||||||
|
void singleFileUploads(Long id, HttpServletRequest request, HttpServletResponse response);
|
||||||
}
|
}
|
||||||
|
@ -5,10 +5,14 @@ import cn.hutool.core.io.FileUtil;
|
|||||||
import cn.hutool.core.lang.tree.Tree;
|
import cn.hutool.core.lang.tree.Tree;
|
||||||
import cn.hutool.core.util.IdUtil;
|
import cn.hutool.core.util.IdUtil;
|
||||||
import cn.hutool.core.util.ObjectUtil;
|
import cn.hutool.core.util.ObjectUtil;
|
||||||
|
import cn.hutool.json.JSONObject;
|
||||||
|
import cn.hutool.json.JSONUtil;
|
||||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||||
import jakarta.annotation.Resource;
|
import jakarta.annotation.Resource;
|
||||||
|
import jakarta.servlet.http.HttpServletRequest;
|
||||||
|
import jakarta.servlet.http.HttpServletResponse;
|
||||||
import org.dromara.common.core.constant.HttpStatus;
|
import org.dromara.common.core.constant.HttpStatus;
|
||||||
import org.dromara.common.core.exception.ServiceException;
|
import org.dromara.common.core.exception.ServiceException;
|
||||||
import org.dromara.common.core.utils.*;
|
import org.dromara.common.core.utils.*;
|
||||||
@ -16,6 +20,8 @@ import org.dromara.common.enums.DocumentStatusEnum;
|
|||||||
import org.dromara.common.enums.DocumentTypeEnum;
|
import org.dromara.common.enums.DocumentTypeEnum;
|
||||||
import org.dromara.common.mybatis.core.page.PageQuery;
|
import org.dromara.common.mybatis.core.page.PageQuery;
|
||||||
import org.dromara.common.mybatis.core.page.TableDataInfo;
|
import org.dromara.common.mybatis.core.page.TableDataInfo;
|
||||||
|
import org.dromara.common.oss.core.OssClient;
|
||||||
|
import org.dromara.common.oss.factory.OssFactory;
|
||||||
import org.dromara.common.satoken.utils.LoginHelper;
|
import org.dromara.common.satoken.utils.LoginHelper;
|
||||||
import org.dromara.project.service.IBusProjectService;
|
import org.dromara.project.service.IBusProjectService;
|
||||||
import org.dromara.quality.constant.QltKnowledgeDocumentConstant;
|
import org.dromara.quality.constant.QltKnowledgeDocumentConstant;
|
||||||
@ -34,6 +40,8 @@ import org.springframework.stereotype.Service;
|
|||||||
import org.springframework.transaction.annotation.Transactional;
|
import org.springframework.transaction.annotation.Transactional;
|
||||||
import org.springframework.web.multipart.MultipartFile;
|
import org.springframework.web.multipart.MultipartFile;
|
||||||
|
|
||||||
|
import java.io.IOException;
|
||||||
|
import java.io.PrintWriter;
|
||||||
import java.util.*;
|
import java.util.*;
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
@ -321,6 +329,13 @@ public class QltKnowledgeDocumentServiceImpl extends ServiceImpl<QltKnowledgeDoc
|
|||||||
if (!result) {
|
if (!result) {
|
||||||
throw new ServiceException("文件删除失败", HttpStatus.ERROR);
|
throw new ServiceException("文件删除失败", HttpStatus.ERROR);
|
||||||
}
|
}
|
||||||
|
// 删除oss文件
|
||||||
|
OssClient storage = OssFactory.instance();
|
||||||
|
for (QltKnowledgeDocument document : documentList) {
|
||||||
|
if (!document.getFileType().equals(DocumentTypeEnum.FOLDER.getValue())) {
|
||||||
|
storage.delete(document.getFileUrl());
|
||||||
|
}
|
||||||
|
}
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -418,6 +433,34 @@ public class QltKnowledgeDocumentServiceImpl extends ServiceImpl<QltKnowledgeDoc
|
|||||||
return documentVoPage;
|
return documentVoPage;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 畅写在线文件修改
|
||||||
|
*
|
||||||
|
* @param id 文档id
|
||||||
|
* @param request 请求
|
||||||
|
* @param response 响应
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public void singleFileUploads(Long id, HttpServletRequest request, HttpServletResponse response) {
|
||||||
|
try {
|
||||||
|
PrintWriter writer = response.getWriter();
|
||||||
|
Scanner scanner = new Scanner(request.getInputStream(), "GBK").useDelimiter("\\A");
|
||||||
|
String body = scanner.hasNext() ? scanner.next() : "";
|
||||||
|
JSONObject jsonObj = JSONUtil.parseObj(body);
|
||||||
|
if (jsonObj.getInt("status") == 2 || jsonObj.getInt("status") == 6) {
|
||||||
|
String downloadUri = (String) jsonObj.get("url");
|
||||||
|
QltKnowledgeDocument document = this.getById(id);
|
||||||
|
String filePath = document.getFilePath();
|
||||||
|
ossService.uploadFileUrlWithNoSave(downloadUri, filePath);
|
||||||
|
} else if (jsonObj.getInt("status") == 3 || jsonObj.getInt("status") == 7) {
|
||||||
|
writer.write("{\"error\":-1}");
|
||||||
|
}
|
||||||
|
writer.write("{\"error\":0}");
|
||||||
|
} catch (IOException e) {
|
||||||
|
throw new ServiceException("质量知识库在线修改文件失败," + e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 校验父级目录是否存在
|
* 校验父级目录是否存在
|
||||||
*
|
*
|
||||||
|
@ -3,6 +3,8 @@ package org.dromara.safety.controller;
|
|||||||
import cn.dev33.satoken.annotation.SaCheckPermission;
|
import cn.dev33.satoken.annotation.SaCheckPermission;
|
||||||
import cn.hutool.core.lang.tree.Tree;
|
import cn.hutool.core.lang.tree.Tree;
|
||||||
import jakarta.annotation.Resource;
|
import jakarta.annotation.Resource;
|
||||||
|
import jakarta.servlet.http.HttpServletRequest;
|
||||||
|
import jakarta.servlet.http.HttpServletResponse;
|
||||||
import jakarta.validation.constraints.NotNull;
|
import jakarta.validation.constraints.NotNull;
|
||||||
import org.dromara.common.core.domain.R;
|
import org.dromara.common.core.domain.R;
|
||||||
import org.dromara.common.idempotent.annotation.RepeatSubmit;
|
import org.dromara.common.idempotent.annotation.RepeatSubmit;
|
||||||
@ -145,4 +147,14 @@ public class HseKnowledgeDocumentController extends BaseController {
|
|||||||
@PathVariable Long[] ids) {
|
@PathVariable Long[] ids) {
|
||||||
return toAjax(hseKnowledgeDocumentService.recoveryBatchById(List.of(ids)));
|
return toAjax(hseKnowledgeDocumentService.recoveryBatchById(List.of(ids)));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 畅写在线修改保存回调
|
||||||
|
*/
|
||||||
|
@SaCheckPermission("safety:knowledgeDocument:edit")
|
||||||
|
@PostMapping("/changxie/callback/{id}")
|
||||||
|
public void singleFileUploads(@NotNull(message = "主键不能为空")
|
||||||
|
@PathVariable Long id, HttpServletRequest request, HttpServletResponse response) {
|
||||||
|
hseKnowledgeDocumentService.singleFileUploads(id, request, response);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -3,6 +3,8 @@ package org.dromara.safety.service;
|
|||||||
import cn.hutool.core.lang.tree.Tree;
|
import cn.hutool.core.lang.tree.Tree;
|
||||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||||
import com.baomidou.mybatisplus.extension.service.IService;
|
import com.baomidou.mybatisplus.extension.service.IService;
|
||||||
|
import jakarta.servlet.http.HttpServletRequest;
|
||||||
|
import jakarta.servlet.http.HttpServletResponse;
|
||||||
import org.dromara.common.mybatis.core.page.PageQuery;
|
import org.dromara.common.mybatis.core.page.PageQuery;
|
||||||
import org.dromara.common.mybatis.core.page.TableDataInfo;
|
import org.dromara.common.mybatis.core.page.TableDataInfo;
|
||||||
import org.dromara.safety.domain.HseKnowledgeDocument;
|
import org.dromara.safety.domain.HseKnowledgeDocument;
|
||||||
@ -138,4 +140,13 @@ public interface IHseKnowledgeDocumentService extends IService<HseKnowledgeDocum
|
|||||||
* @return 文档对象视图
|
* @return 文档对象视图
|
||||||
*/
|
*/
|
||||||
Page<HseKnowledgeDocumentVo> getVoPage(Page<HseKnowledgeDocument> documentPage);
|
Page<HseKnowledgeDocumentVo> getVoPage(Page<HseKnowledgeDocument> documentPage);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 畅写在线文件修改
|
||||||
|
*
|
||||||
|
* @param id 文档id
|
||||||
|
* @param request 请求
|
||||||
|
* @param response 响应
|
||||||
|
*/
|
||||||
|
void singleFileUploads(Long id, HttpServletRequest request, HttpServletResponse response);
|
||||||
}
|
}
|
||||||
|
@ -5,10 +5,15 @@ import cn.hutool.core.io.FileUtil;
|
|||||||
import cn.hutool.core.lang.tree.Tree;
|
import cn.hutool.core.lang.tree.Tree;
|
||||||
import cn.hutool.core.util.IdUtil;
|
import cn.hutool.core.util.IdUtil;
|
||||||
import cn.hutool.core.util.ObjectUtil;
|
import cn.hutool.core.util.ObjectUtil;
|
||||||
|
import cn.hutool.json.JSONObject;
|
||||||
|
import cn.hutool.json.JSONUtil;
|
||||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||||
import jakarta.annotation.Resource;
|
import jakarta.annotation.Resource;
|
||||||
|
import jakarta.servlet.http.HttpServletRequest;
|
||||||
|
import jakarta.servlet.http.HttpServletResponse;
|
||||||
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.dromara.common.core.constant.HttpStatus;
|
import org.dromara.common.core.constant.HttpStatus;
|
||||||
import org.dromara.common.core.exception.ServiceException;
|
import org.dromara.common.core.exception.ServiceException;
|
||||||
import org.dromara.common.core.utils.*;
|
import org.dromara.common.core.utils.*;
|
||||||
@ -16,6 +21,8 @@ import org.dromara.common.enums.DocumentStatusEnum;
|
|||||||
import org.dromara.common.enums.DocumentTypeEnum;
|
import org.dromara.common.enums.DocumentTypeEnum;
|
||||||
import org.dromara.common.mybatis.core.page.PageQuery;
|
import org.dromara.common.mybatis.core.page.PageQuery;
|
||||||
import org.dromara.common.mybatis.core.page.TableDataInfo;
|
import org.dromara.common.mybatis.core.page.TableDataInfo;
|
||||||
|
import org.dromara.common.oss.core.OssClient;
|
||||||
|
import org.dromara.common.oss.factory.OssFactory;
|
||||||
import org.dromara.common.satoken.utils.LoginHelper;
|
import org.dromara.common.satoken.utils.LoginHelper;
|
||||||
import org.dromara.project.service.IBusProjectService;
|
import org.dromara.project.service.IBusProjectService;
|
||||||
import org.dromara.safety.constant.HseKnowledgeDocumentConstant;
|
import org.dromara.safety.constant.HseKnowledgeDocumentConstant;
|
||||||
@ -34,6 +41,8 @@ import org.springframework.stereotype.Service;
|
|||||||
import org.springframework.transaction.annotation.Transactional;
|
import org.springframework.transaction.annotation.Transactional;
|
||||||
import org.springframework.web.multipart.MultipartFile;
|
import org.springframework.web.multipart.MultipartFile;
|
||||||
|
|
||||||
|
import java.io.IOException;
|
||||||
|
import java.io.PrintWriter;
|
||||||
import java.util.*;
|
import java.util.*;
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
@ -43,6 +52,7 @@ import java.util.stream.Collectors;
|
|||||||
* @author lcj
|
* @author lcj
|
||||||
* @date 2025-06-25
|
* @date 2025-06-25
|
||||||
*/
|
*/
|
||||||
|
@Slf4j
|
||||||
@Service
|
@Service
|
||||||
public class HseKnowledgeDocumentServiceImpl extends ServiceImpl<HseKnowledgeDocumentMapper, HseKnowledgeDocument>
|
public class HseKnowledgeDocumentServiceImpl extends ServiceImpl<HseKnowledgeDocumentMapper, HseKnowledgeDocument>
|
||||||
implements IHseKnowledgeDocumentService {
|
implements IHseKnowledgeDocumentService {
|
||||||
@ -320,6 +330,13 @@ public class HseKnowledgeDocumentServiceImpl extends ServiceImpl<HseKnowledgeDoc
|
|||||||
if (!result) {
|
if (!result) {
|
||||||
throw new ServiceException("文件删除失败", HttpStatus.ERROR);
|
throw new ServiceException("文件删除失败", HttpStatus.ERROR);
|
||||||
}
|
}
|
||||||
|
// 删除oss文件
|
||||||
|
OssClient storage = OssFactory.instance();
|
||||||
|
for (HseKnowledgeDocument document : documentList) {
|
||||||
|
if (!document.getFileType().equals(DocumentTypeEnum.FOLDER.getValue())) {
|
||||||
|
storage.delete(document.getFileUrl());
|
||||||
|
}
|
||||||
|
}
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -417,6 +434,33 @@ public class HseKnowledgeDocumentServiceImpl extends ServiceImpl<HseKnowledgeDoc
|
|||||||
return documentVoPage;
|
return documentVoPage;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 畅写在线文件修改
|
||||||
|
*
|
||||||
|
* @param request 请求
|
||||||
|
* @param response 响应
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public void singleFileUploads(Long id, HttpServletRequest request, HttpServletResponse response) {
|
||||||
|
try {
|
||||||
|
PrintWriter writer = response.getWriter();
|
||||||
|
Scanner scanner = new Scanner(request.getInputStream(), "GBK").useDelimiter("\\A");
|
||||||
|
String body = scanner.hasNext() ? scanner.next() : "";
|
||||||
|
JSONObject jsonObj = JSONUtil.parseObj(body);
|
||||||
|
if (jsonObj.getInt("status") == 2 || jsonObj.getInt("status") == 6) {
|
||||||
|
String downloadUri = (String) jsonObj.get("url");
|
||||||
|
HseKnowledgeDocument document = this.getById(id);
|
||||||
|
String filePath = document.getFilePath();
|
||||||
|
ossService.uploadFileUrlWithNoSave(downloadUri, filePath);
|
||||||
|
} else if (jsonObj.getInt("status") == 3 || jsonObj.getInt("status") == 7) {
|
||||||
|
writer.write("{\"error\":-1}");
|
||||||
|
}
|
||||||
|
writer.write("{\"error\":0}");
|
||||||
|
} catch (IOException e) {
|
||||||
|
throw new ServiceException("安全知识库在线修改文件失败," + e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 校验父级目录是否存在
|
* 校验父级目录是否存在
|
||||||
*
|
*
|
||||||
|
Reference in New Issue
Block a user