From 7f21d4f22ec711d6aa89900b07e0b5ac31dbac42 Mon Sep 17 00:00:00 2001
From: Administrator <1144154118@qq.com>
Date: 星期五, 25 八月 2023 17:15:04 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master'
---
ard-work/src/main/java/com/ruoyi/utils/minio/MinioUtil.java | 248 +++++++++--------
ard-work/src/main/java/com/ruoyi/device/hiksdk/sdk/HIKSDKStructure.java | 2
ard-work/src/main/java/com/ruoyi/device/hiksdk/sdk/HCNetSDK.java | 2
ard-work/src/main/java/com/ruoyi/scheduling/controller/SchedulingController.java | 1
ard-work/src/main/java/com/ruoyi/utils/image/WaterMarkUtil.java | 5
ard-work/src/main/java/com/ruoyi/utils/gis/Point.java | 2
/dev/null | 141 ----------
ruoyi-quartz/src/main/java/com/ruoyi/quartz/task/MinioTask.java | 9
ard-work/src/main/java/com/ruoyi/app/position/controller/ArdAppPositionController.java | 9
ard-work/src/main/java/com/ruoyi/inspect/service/impl/ArdVideoInspectTaskStepComparator.java | 6
ard-work/src/main/java/com/ruoyi/utils/gis/GisUtil.java | 195 +++++++++++++
ard-work/src/main/java/com/ruoyi/alarm/global/service/impl/GlobalAlarmServiceImpl.java | 5
ard-work/src/main/java/com/ruoyi/device/hiksdk/service/impl/HikClientServiceImpl.java | 21
ard-work/src/main/resources/mapper/dispatch/ArdDispatchPoliceMapper.xml | 45 +-
ard-work/src/main/java/com/ruoyi/scheduling/domian/SchedulingParam.java | 2
ard-work/src/main/java/com/ruoyi/utils/minio/MinioConfig.java | 32 ++
ard-work/src/main/java/com/ruoyi/app/position/service/impl/ArdAppPositionServiceImpl.java | 13
ard-work/src/main/java/com/ruoyi/media/service/impl/WebrtcService.java | 5
ard-work/src/main/java/com/ruoyi/utils/process/CmdUtils.java | 2
ard-work/src/main/java/com/ruoyi/device/camera/service/impl/ArdCamerasServiceImpl.java | 10
ard-work/src/main/java/com/ruoyi/device/hiksdk/sdk/LoginResultCallBack.java | 2
ard-work/src/main/java/com/ruoyi/media/service/impl/MediaService.java | 7
ard-work/src/main/java/com/ruoyi/sy/service/impl/ArdSyCarServiceImpl.java | 29 +-
23 files changed, 436 insertions(+), 357 deletions(-)
diff --git a/ard-work/src/main/java/com/ruoyi/alarm/global/service/impl/GlobalAlarmServiceImpl.java b/ard-work/src/main/java/com/ruoyi/alarm/global/service/impl/GlobalAlarmServiceImpl.java
index 385f1d5..4cefccd 100644
--- a/ard-work/src/main/java/com/ruoyi/alarm/global/service/impl/GlobalAlarmServiceImpl.java
+++ b/ard-work/src/main/java/com/ruoyi/alarm/global/service/impl/GlobalAlarmServiceImpl.java
@@ -34,8 +34,8 @@
import com.ruoyi.common.utils.StringUtils;
import com.ruoyi.device.external.domain.ArdEquipExternal;
import com.ruoyi.device.external.mapper.ArdEquipExternalMapper;
+import com.ruoyi.utils.gis.GisUtil;
import com.ruoyi.utils.tools.ArdTool;
-import com.ruoyi.utils.tools.GisTool;
import com.ruoyi.common.utils.uuid.IdUtils;
import com.ruoyi.device.camera.domain.ArdCameras;
import com.ruoyi.device.camera.mapper.ArdCamerasMapper;
@@ -49,7 +49,6 @@
import javax.annotation.Resource;
import java.text.SimpleDateFormat;
import java.util.*;
-import java.util.concurrent.ExecutionException;
import java.util.concurrent.TimeUnit;
import java.util.stream.Collectors;
@@ -748,7 +747,7 @@
continue;
}
double[] camPosition = new double[]{camera.getLongitude(), camera.getLatitude()};
- double distance = GisTool.getDistance(targetPosition, camPosition);
+ double distance = GisUtil.getDistance(targetPosition, camPosition);
if (distance != 0.0 && distance <= camera.getCamMaxVisibleDistance()) {
distanceMap.put(camera.getId(), distance);
if (StringUtils.isNull(camera.getCamAlarmGuideEnable())) {
diff --git a/ard-work/src/main/java/com/ruoyi/app/position/controller/ArdAppPositionController.java b/ard-work/src/main/java/com/ruoyi/app/position/controller/ArdAppPositionController.java
index 6c2d3a8..c6a0d8c 100644
--- a/ard-work/src/main/java/com/ruoyi/app/position/controller/ArdAppPositionController.java
+++ b/ard-work/src/main/java/com/ruoyi/app/position/controller/ArdAppPositionController.java
@@ -7,9 +7,8 @@
import com.ruoyi.common.core.domain.entity.SysUser;
import com.ruoyi.common.utils.StringUtils;
import com.ruoyi.common.utils.poi.ExcelUtil;
-import com.ruoyi.storage.minio.utils.MinioUtils;
-import com.ruoyi.rongcloud.service.RongCloudService;
import com.ruoyi.system.service.ISysUserService;
+import com.ruoyi.utils.minio.MinioUtil;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.security.access.prepost.PreAuthorize;
@@ -46,8 +45,8 @@
private IArdAppPositionService ardAppPositionService;
@Autowired
private ISysUserService sysUserService;
- @Autowired
- private MinioUtils minioUtil;
+// @Autowired
+// private MinioUtils minioUtil;
/**
* 鏌ヨapp浣嶇疆鍒楄〃
@@ -201,7 +200,7 @@
@ApiOperation("涓婁紶鏂囦欢")
public AjaxResult uploadFile(MultipartFile file,String type)
{
- String url = minioUtil.putObjectAndGetUrl("app",type, file);
+ String url = MinioUtil.putObjectAndGetUrl("app",type, file);
return AjaxResult.success(url);
}
}
diff --git a/ard-work/src/main/java/com/ruoyi/app/position/service/impl/ArdAppPositionServiceImpl.java b/ard-work/src/main/java/com/ruoyi/app/position/service/impl/ArdAppPositionServiceImpl.java
index bd751a8..c0143e5 100644
--- a/ard-work/src/main/java/com/ruoyi/app/position/service/impl/ArdAppPositionServiceImpl.java
+++ b/ard-work/src/main/java/com/ruoyi/app/position/service/impl/ArdAppPositionServiceImpl.java
@@ -3,23 +3,18 @@
import com.ruoyi.app.position.domain.ArdAppPosition;
import com.ruoyi.app.position.mapper.ArdAppPositionMapper;
import com.ruoyi.app.position.service.IArdAppPositionService;
-import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.common.core.domain.entity.SysUser;
import com.ruoyi.common.utils.DateUtils;
import com.ruoyi.common.utils.SecurityUtils;
-import com.ruoyi.common.utils.StringUtils;
-import com.ruoyi.common.utils.spring.SpringUtils;
import com.ruoyi.common.utils.uuid.IdUtils;
import com.ruoyi.scheduling.domian.SchedulingParam;
import com.ruoyi.system.service.ISysUserService;
-import com.ruoyi.utils.tools.GisTool;
-import com.ruoyi.utils.tools.Point;
+import com.ruoyi.utils.gis.GisUtil;
+import com.ruoyi.utils.gis.Point;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
-import javax.annotation.PostConstruct;
import javax.annotation.Resource;
-import java.awt.geom.Point2D;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
@@ -160,7 +155,7 @@
if (longitude == null || latitude == null) {
continue;
}
- double distance = GisTool.getDistance(new double[]{longitude, latitude}, new double[]{lon, lat});
+ double distance = GisUtil.getDistance(new double[]{longitude, latitude}, new double[]{lon, lat});
if (distance <= radius) {
Map<String, Object> params = new HashMap<>();
params.put("longitude", lon);
@@ -205,7 +200,7 @@
continue;
}
Point point2D=new Point(lon,lat);
- boolean inPolygon = GisTool.isInPolygon(point2D, partitionLocation);
+ boolean inPolygon = GisUtil.isInPolygon(point2D, partitionLocation);
if (inPolygon) {
Map<String, Object> params = new HashMap<>();
params.put("longitude", lon);
diff --git a/ard-work/src/main/java/com/ruoyi/device/camera/service/impl/ArdCamerasServiceImpl.java b/ard-work/src/main/java/com/ruoyi/device/camera/service/impl/ArdCamerasServiceImpl.java
index 245b74e..e79c3ec 100644
--- a/ard-work/src/main/java/com/ruoyi/device/camera/service/impl/ArdCamerasServiceImpl.java
+++ b/ard-work/src/main/java/com/ruoyi/device/camera/service/impl/ArdCamerasServiceImpl.java
@@ -13,14 +13,14 @@
import com.ruoyi.device.channel.domain.ArdChannel;
import com.ruoyi.device.channel.mapper.ArdChannelMapper;
import com.ruoyi.scheduling.domian.SchedulingParam;
+import com.ruoyi.utils.gis.GisUtil;
import com.ruoyi.utils.tools.ArdTool;
import com.ruoyi.device.camera.domain.ArdCameras;
import com.ruoyi.device.camera.mapper.ArdCamerasMapper;
import com.ruoyi.device.camera.service.IArdCamerasService;
import com.ruoyi.common.annotation.DataScope;
import com.ruoyi.system.mapper.SysDeptMapper;
-import com.ruoyi.utils.tools.GisTool;
-import com.ruoyi.utils.tools.Point;
+import com.ruoyi.utils.gis.Point;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
@@ -259,7 +259,7 @@
continue;
}
double[] camPosition = new double[]{camera.getLongitude(), camera.getLatitude()};
- double distance = GisTool.getDistance(cmd.getTargetPosition(), camPosition);
+ double distance = GisUtil.getDistance(cmd.getTargetPosition(), camPosition);
if (camera.getCamMaxVisibleDistance() == null) {
continue;
}
@@ -309,7 +309,7 @@
continue;
}
double[] camPosition = new double[]{camera.getLongitude(), camera.getLatitude()};
- double distance = GisTool.getDistance(new double[]{longitude, latitude}, camPosition);
+ double distance = GisUtil.getDistance(new double[]{longitude, latitude}, camPosition);
if (distance <= radius) {
/*鑾峰彇閫氶亾鍒楄〃*/
ArdChannel ardChannel=new ArdChannel();
@@ -356,7 +356,7 @@
}
/*鍒ゆ柇鍧愭爣鏄惁鍦ㄥ杈瑰舰鑼冨洿鍐�*/
Point camPosition=new Point(camera.getLongitude(),camera.getLatitude());
- boolean inPolygon = GisTool.isInPolygon(camPosition, partitionLocation);
+ boolean inPolygon = GisUtil.isInPolygon(camPosition, partitionLocation);
if (inPolygon) {
/*鑾峰彇閫氶亾鍒楄〃*/
ArdChannel ardChannel=new ArdChannel();
diff --git a/ard-work/src/main/java/com/ruoyi/device/hiksdk/util/hikSdkUtil/HCNetSDK.java b/ard-work/src/main/java/com/ruoyi/device/hiksdk/sdk/HCNetSDK.java
similarity index 99%
rename from ard-work/src/main/java/com/ruoyi/device/hiksdk/util/hikSdkUtil/HCNetSDK.java
rename to ard-work/src/main/java/com/ruoyi/device/hiksdk/sdk/HCNetSDK.java
index a07c6d0..a1baa8f 100644
--- a/ard-work/src/main/java/com/ruoyi/device/hiksdk/util/hikSdkUtil/HCNetSDK.java
+++ b/ard-work/src/main/java/com/ruoyi/device/hiksdk/sdk/HCNetSDK.java
@@ -1,4 +1,4 @@
-package com.ruoyi.device.hiksdk.util.hikSdkUtil;
+package com.ruoyi.device.hiksdk.sdk;
import com.sun.jna.*;
import com.sun.jna.examples.win32.W32API;
diff --git a/ard-work/src/main/java/com/ruoyi/device/hiksdk/util/hikSdkUtil/HIKSDKStructure.java b/ard-work/src/main/java/com/ruoyi/device/hiksdk/sdk/HIKSDKStructure.java
similarity index 95%
rename from ard-work/src/main/java/com/ruoyi/device/hiksdk/util/hikSdkUtil/HIKSDKStructure.java
rename to ard-work/src/main/java/com/ruoyi/device/hiksdk/sdk/HIKSDKStructure.java
index 1baf0df..01f2b0c 100644
--- a/ard-work/src/main/java/com/ruoyi/device/hiksdk/util/hikSdkUtil/HIKSDKStructure.java
+++ b/ard-work/src/main/java/com/ruoyi/device/hiksdk/sdk/HIKSDKStructure.java
@@ -1,4 +1,4 @@
-package com.ruoyi.device.hiksdk.util.hikSdkUtil;
+package com.ruoyi.device.hiksdk.sdk;
import com.sun.jna.Structure;
diff --git a/ard-work/src/main/java/com/ruoyi/device/hiksdk/util/hikSdkUtil/LoginResultCallBack.java b/ard-work/src/main/java/com/ruoyi/device/hiksdk/sdk/LoginResultCallBack.java
similarity index 98%
rename from ard-work/src/main/java/com/ruoyi/device/hiksdk/util/hikSdkUtil/LoginResultCallBack.java
rename to ard-work/src/main/java/com/ruoyi/device/hiksdk/sdk/LoginResultCallBack.java
index d879397..66fb37b 100644
--- a/ard-work/src/main/java/com/ruoyi/device/hiksdk/util/hikSdkUtil/LoginResultCallBack.java
+++ b/ard-work/src/main/java/com/ruoyi/device/hiksdk/sdk/LoginResultCallBack.java
@@ -1,4 +1,4 @@
-package com.ruoyi.device.hiksdk.util.hikSdkUtil;
+package com.ruoyi.device.hiksdk.sdk;
import com.ruoyi.alarm.global.domain.GuidePriorityQueue;
import com.ruoyi.alarm.global.domain.GuideTask;
diff --git a/ard-work/src/main/java/com/ruoyi/device/hiksdk/service/impl/HikClientServiceImpl.java b/ard-work/src/main/java/com/ruoyi/device/hiksdk/service/impl/HikClientServiceImpl.java
index 4ed6415..5dd6550 100644
--- a/ard-work/src/main/java/com/ruoyi/device/hiksdk/service/impl/HikClientServiceImpl.java
+++ b/ard-work/src/main/java/com/ruoyi/device/hiksdk/service/impl/HikClientServiceImpl.java
@@ -9,11 +9,11 @@
import com.ruoyi.device.channel.domain.ArdChannel;
import com.ruoyi.device.hiksdk.common.GlobalVariable;
import com.ruoyi.device.camera.domain.ArdCameras;
-import com.ruoyi.device.hiksdk.util.hikSdkUtil.GisUtil;
-import com.ruoyi.device.hiksdk.util.hikSdkUtil.HCNetSDK;
+import com.ruoyi.utils.gis.GisUtil;
+import com.ruoyi.device.hiksdk.sdk.HCNetSDK;
import com.ruoyi.device.hiksdk.service.IHikClientService;
-import com.ruoyi.device.hiksdk.util.hikSdkUtil.LoginResultCallBack;
-import com.ruoyi.storage.minio.utils.MinioUtils;
+import com.ruoyi.device.hiksdk.sdk.LoginResultCallBack;
+import com.ruoyi.utils.minio.MinioUtil;
import com.sun.jna.Native;
import com.sun.jna.NativeLong;
import com.sun.jna.Platform;
@@ -29,10 +29,9 @@
import java.math.BigDecimal;
import java.nio.ByteBuffer;
import java.text.DecimalFormat;
-import java.text.SimpleDateFormat;
import java.util.*;
-import static com.ruoyi.device.hiksdk.util.hikSdkUtil.HCNetSDK.*;
+import static com.ruoyi.device.hiksdk.sdk.HCNetSDK.*;
/**
* @ClassName: hikClientServiceImpl
@@ -49,8 +48,6 @@
private static String endpoint;
@Resource
private IArdCamerasService ardCamerasService;
- @Resource
- private MinioUtils minioUtil;
private static HCNetSDK hCNetSDK;
@@ -1155,9 +1152,9 @@
InputStream input = new ByteArrayInputStream(array);
String url = "";
try {
- boolean b = minioUtil.uploadObject(BucketName, ObjectName, input, input.available(), MimeTypeUtils.IMAGE_JPEG);
+ boolean b = MinioUtil.uploadObject(BucketName, ObjectName, input, input.available(), MimeTypeUtils.IMAGE_JPEG);
if (b) {
- url = minioUtil.getBucketObjectUrl(BucketName, ObjectName);
+ url = MinioUtil.getBucketObjectUrl(BucketName, ObjectName);
log.debug("涓婁紶鏂囦欢鎴愬姛!" + url);
}
} catch (IOException ex) {
@@ -1338,9 +1335,9 @@
String BucketName = cmd.getRecordBucketName();
String ObjectName = cmd.getRecordObjectName()+".mp4";
FileInputStream stream = new FileInputStream(path);
- boolean b = minioUtil.uploadObject(BucketName, ObjectName, stream, stream.available(), "video/MP4");
+ boolean b = MinioUtil.uploadObject(BucketName, ObjectName, stream, stream.available(), "video/MP4");
if (b) {
- url = minioUtil.getBucketObjectUrl(BucketName, ObjectName);
+ url = MinioUtil.getBucketObjectUrl(BucketName, ObjectName);
log.debug("涓婁紶鏂囦欢鎴愬姛!" + url);
}
return url;
diff --git a/ard-work/src/main/java/com/ruoyi/device/hiksdk/util/hikSdkUtil/GisUtil.java b/ard-work/src/main/java/com/ruoyi/device/hiksdk/util/hikSdkUtil/GisUtil.java
deleted file mode 100644
index e9c916a..0000000
--- a/ard-work/src/main/java/com/ruoyi/device/hiksdk/util/hikSdkUtil/GisUtil.java
+++ /dev/null
@@ -1,87 +0,0 @@
-package com.ruoyi.device.hiksdk.util.hikSdkUtil;
-
-import org.gavaghan.geodesy.*;
-
-import java.math.BigDecimal;
-import java.util.Arrays;
-
-public class GisUtil {
-
- public static GeodeticCalculator geodeticCalculator = new GeodeticCalculator();
-
- /**
- * 鏍规嵁缁忕含搴︼紝璁$畻涓ょ偣闂寸殑璺濈
- *
- * @param longitudeFrom 绗竴涓偣鐨勭粡搴�
- * @param latitudeFrom 绗竴涓偣鐨勭含搴�
- * @param longitudeTo 绗簩涓偣鐨勭粡搴�
- * @param latitudeTo 绗簩涓偣鐨勭含搴�
- * @return 杩斿洖璺濈 鍗曚綅绫�
- */
- public static double getDistance(double longitudeFrom, double latitudeFrom, double longitudeTo, double latitudeTo) {
- GlobalCoordinates source = new GlobalCoordinates(latitudeFrom, longitudeFrom);
- GlobalCoordinates target = new GlobalCoordinates(latitudeTo, longitudeTo);
- return geodeticCalculator.calculateGeodeticCurve(Ellipsoid.WGS84, source, target).getEllipsoidalDistance();
- }
-
- /**
- * 璁$畻浠巉rom鍒皌o鏂瑰悜鐨勭洿绾夸笌姝e寳鏂瑰悜澶硅
- *
- * @param longitudeFrom 绗竴涓偣鐨勭粡搴�
- * @param latitudeFrom 绗竴涓偣鐨勭含搴�
- * @param longitudeTo 绗簩涓偣鐨勭粡搴�
- * @param latitudeTo 绗簩涓偣鐨勭含搴�
- * @return 杩斿洖瑙掑害
- */
- public static double getNorthAngle(double longitudeFrom, double latitudeFrom, double longitudeTo, double latitudeTo) {
- GlobalPosition source = new GlobalPosition(latitudeFrom, longitudeFrom, 0);
- GlobalPosition target = new GlobalPosition(latitudeTo, longitudeTo, 0);
- return geodeticCalculator.calculateGeodeticMeasurement(Ellipsoid.WGS84, source, target).getAzimuth();
- }
-
- /**
- * @param camera 缁忓害,绾害,楂樺害 濡�:{125.097531, 46.60029, 120};
- * @param lookAt 缁忓害,绾害,楂樺害 濡�:{125.124731, 46.584808, 0};
- * @param viewAngle 鐩告満鍙瑙掑害 濡�:20
- * @param viewWidth 瑙嗗煙瀹藉害 濡�:150
- * @return ptz 鏁扮粍 濡�:[129.5355798969157, -2.5419097807416655, 23.3676043024458]
- */
- public static double[] getCameraPTZ(double[] camera, double[] lookAt, double viewAngle, double viewWidth) {
- double p = 0, t = 0, z = 0;
- double distance = GisUtil.getDistance(camera[0], camera[1], lookAt[0], lookAt[1]);
- double northAngle = GisUtil.getNorthAngle(camera[0], camera[1], lookAt[0], lookAt[1]);
- double height = camera[2];
- p = northAngle;
- t = Angle.toDegrees(Math.atan(height / distance)) * -1+360;
- z = distance * Math.tan(viewAngle / 2) * 2 / viewWidth;
- /* p = new BigDecimal(p).setScale(1,BigDecimal.ROUND_HALF_UP).doubleValue();
- t = new BigDecimal(t).setScale(1,BigDecimal.ROUND_HALF_UP).doubleValue();
- z = new BigDecimal(z).setScale(1,BigDecimal.ROUND_HALF_UP).doubleValue();*/
- return new double[]{p, t, z};
- }
- /**
- * 鏍规嵁寮�濮嬪潗鏍囩偣锛岃搴︼紝璁$畻缁撴潫鐐瑰潗鏍�
- * @param startGlobalCoordinates
- * @param startAngle 鏂瑰悜锛堜互璧风偣涓轰腑蹇冿級
- * @param distance 璺濈锛堝崟浣嶏細m锛�
- * @return
- */
- public static GlobalCoordinates getGlobalCoordinates(GlobalCoordinates startGlobalCoordinates, double startAngle, double distance){
- return new GeodeticCalculator().calculateEndingGlobalCoordinates(Ellipsoid.WGS84, startGlobalCoordinates, startAngle, distance);
- }
-
- public static void main(String[] args) {
- // 125.097531,46.60029, 125.124731,46.584808
- //鐩告満浣嶇疆
- double[] camera = {125.146964331147,46.5580925811216,102};//缁忓害,绾害,楂樺害
- //鐪嬪悜鐨勪綅缃�
- double[] lookAt = {125.155449,46.555108,0};//缁忓害,绾害,楂樺害
-
- double viewAngle = 20;//鐩告満鍙瑙掑害
- double viewWidth = 150;//鐩告満瑙嗗煙瀹藉害
-
- double[] ptz = GisUtil.getCameraPTZ(camera, lookAt, viewAngle, viewWidth);
- System.out.println("ptz:" + Arrays.toString(ptz));
-
- }
-}
diff --git a/ard-work/src/main/java/com/ruoyi/inspect/service/impl/ArdVideoInspectTaskStepComparator.java b/ard-work/src/main/java/com/ruoyi/inspect/service/impl/ArdVideoInspectTaskStepComparator.java
index aa5b4c6..4c178c0 100644
--- a/ard-work/src/main/java/com/ruoyi/inspect/service/impl/ArdVideoInspectTaskStepComparator.java
+++ b/ard-work/src/main/java/com/ruoyi/inspect/service/impl/ArdVideoInspectTaskStepComparator.java
@@ -2,12 +2,8 @@
import com.ruoyi.alarmpoints.well.domain.ArdAlarmpointsWell;
import com.ruoyi.alarmpoints.well.mapper.ArdAlarmpointsWellMapper;
-import com.ruoyi.alarmpoints.well.service.IArdAlarmpointsWellService;
-import com.ruoyi.device.hiksdk.util.hikSdkUtil.GisUtil;
-import com.ruoyi.inspect.domain.ArdVideoInspectTask;
+import com.ruoyi.utils.gis.GisUtil;
import com.ruoyi.inspect.domain.ArdVideoInspectTaskStep;
-import com.ruoyi.inspect.service.IArdVideoInspectTaskService;
-import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.Comparator;
diff --git a/ard-work/src/main/java/com/ruoyi/media/service/impl/MediaService.java b/ard-work/src/main/java/com/ruoyi/media/service/impl/MediaService.java
index 5e61e05..578291c 100644
--- a/ard-work/src/main/java/com/ruoyi/media/service/impl/MediaService.java
+++ b/ard-work/src/main/java/com/ruoyi/media/service/impl/MediaService.java
@@ -6,21 +6,16 @@
import com.ruoyi.media.service.IMediaService;
import com.ruoyi.utils.forest.MediaClient;
import com.ruoyi.utils.tools.ArdTool;
-import com.ruoyi.utils.tools.CmdUtils;
+import com.ruoyi.utils.process.CmdUtils;
import com.sun.jna.Platform;
-import io.minio.messages.Item;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Value;
-import org.springframework.scheduling.annotation.Async;
import org.springframework.stereotype.Service;
import javax.annotation.PostConstruct;
import javax.annotation.PreDestroy;
import javax.annotation.Resource;
-import java.io.BufferedReader;
import java.io.File;
-import java.io.IOException;
-import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
diff --git a/ard-work/src/main/java/com/ruoyi/media/service/impl/WebrtcService.java b/ard-work/src/main/java/com/ruoyi/media/service/impl/WebrtcService.java
index 36eede2..0a0c592 100644
--- a/ard-work/src/main/java/com/ruoyi/media/service/impl/WebrtcService.java
+++ b/ard-work/src/main/java/com/ruoyi/media/service/impl/WebrtcService.java
@@ -1,6 +1,6 @@
package com.ruoyi.media.service.impl;
-import com.ruoyi.utils.tools.CmdUtils;
+import com.ruoyi.utils.process.CmdUtils;
import com.sun.jna.Platform;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Value;
@@ -8,10 +8,7 @@
import javax.annotation.PostConstruct;
import javax.annotation.PreDestroy;
-import java.io.BufferedReader;
import java.io.File;
-import java.io.IOException;
-import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.List;
diff --git a/ard-work/src/main/java/com/ruoyi/scheduling/controller/SchedulingController.java b/ard-work/src/main/java/com/ruoyi/scheduling/controller/SchedulingController.java
index 4727673..b5cba4a 100644
--- a/ard-work/src/main/java/com/ruoyi/scheduling/controller/SchedulingController.java
+++ b/ard-work/src/main/java/com/ruoyi/scheduling/controller/SchedulingController.java
@@ -41,7 +41,6 @@
@ApiOperation("鑾峰彇闄勮繎鐨勮溅浜虹浉鏈�(鍗婂緞)")
AjaxResult getNearVehiPersonCam(SchedulingParam param) {
Map<String, Object> nearMap = new HashMap<>();
-
List<Map<String, Object>> Cars = iArdSyCarService.getNearCar(param);
nearMap.put("car", Cars);
List<ArdCameras> Cameras = iArdCamerasService.getNearCameras(param);
diff --git a/ard-work/src/main/java/com/ruoyi/scheduling/domian/SchedulingParam.java b/ard-work/src/main/java/com/ruoyi/scheduling/domian/SchedulingParam.java
index 63840af..83dda6a 100644
--- a/ard-work/src/main/java/com/ruoyi/scheduling/domian/SchedulingParam.java
+++ b/ard-work/src/main/java/com/ruoyi/scheduling/domian/SchedulingParam.java
@@ -1,6 +1,6 @@
package com.ruoyi.scheduling.domian;
-import com.ruoyi.utils.tools.Point;
+import com.ruoyi.utils.gis.Point;
import lombok.Data;
import java.util.List;
diff --git a/ard-work/src/main/java/com/ruoyi/storage/minio/utils/MinioConfig.java b/ard-work/src/main/java/com/ruoyi/storage/minio/utils/MinioConfig.java
deleted file mode 100644
index 28b2235..0000000
--- a/ard-work/src/main/java/com/ruoyi/storage/minio/utils/MinioConfig.java
+++ /dev/null
@@ -1,35 +0,0 @@
-package com.ruoyi.storage.minio.utils;
-
-import io.minio.MinioClient;
-import lombok.extern.slf4j.Slf4j;
-import org.springframework.beans.factory.annotation.Value;
-import org.springframework.context.annotation.Bean;
-import org.springframework.stereotype.Component;
-
-/**
- * @Description:
- * @ClassName: MinioClientSingleton
- * @Author: 鍒樿嫃涔�
- * @Date: 2023骞�05鏈�18鏃�9:32
- * @Version: 1.0
- **/
-@Slf4j(topic = "minio")
-@Component
-public class MinioConfig {
- @Value("${minio.endpoint}")
- private String endpoint;
- @Value("${minio.accessKey}")
- private String accessKey;
- @Value("${minio.secretKey}")
- private String secretKey;
-
- @Bean
- public MinioClient getMinioClient() {
- return MinioClient.builder()
- .endpoint(endpoint)
- .credentials(accessKey, secretKey)
- .build();
- }
-
-}
-
diff --git a/ard-work/src/main/java/com/ruoyi/storage/minio/utils/MinioService.java b/ard-work/src/main/java/com/ruoyi/storage/minio/utils/MinioService.java
deleted file mode 100644
index 2e095bc..0000000
--- a/ard-work/src/main/java/com/ruoyi/storage/minio/utils/MinioService.java
+++ /dev/null
@@ -1,72 +0,0 @@
-package com.ruoyi.storage.minio.utils;
-
-import com.ruoyi.utils.tools.CmdUtils;
-import com.sun.jna.Platform;
-import lombok.extern.slf4j.Slf4j;
-import org.springframework.beans.factory.annotation.Value;
-import org.springframework.stereotype.Component;
-
-import javax.annotation.PostConstruct;
-import javax.annotation.PreDestroy;
-import java.io.File;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-
-/**
- * @Description:
- * @ClassName: MinioService
- * @Author: 鍒樿嫃涔�
- * @Date: 2023骞�08鏈�04鏃�10:32:40
- * @Version: 1.0
- **/
-@Component
-@Slf4j(topic = "cmd")
-public class MinioService {
- String processName = "minio.exe";
- @Value("${minio.path}")
- String minioPath;
- @Value("${minio.accessKey}")
- String accessKey;
- @Value("${minio.secretKey}")
- String secretKey;
- @Value("${minio.enabled}")
- Boolean minioEnabled;
-
- @PostConstruct
- public void init() {
- if (minioEnabled) {
- if (Platform.isWindows()) {
- String exePath = System.getProperty("user.dir") + File.separator + "lib" + File.separator + "minio" + File.separator + processName;
- List<String> cmd = new ArrayList<>();
- cmd.add(exePath);
- cmd.add("server");
- cmd.add(minioPath);
- if (CmdUtils.isProcessRunning(processName)) {
- // 杩涚▼宸茬粡鍦ㄨ繍琛岋紝缁撴潫璇ヨ繘绋�
- CmdUtils.stopProcess(processName);
- }
- // 鍚姩鍚庡彴杩涚▼
- Map<String, String> envMap = new HashMap<>();
- envMap.put("MINIO_ROOT_USER", accessKey);
- envMap.put("MINIO_ROOT_PASSWORD", secretKey);
- CmdUtils.commandStart(processName, cmd, envMap);
- // 鍚姩cmd绐楀彛
-// String[] command = {"cmd", "/c", "start", exePath, "-H127.0.0.1:8000", "-o"};
-// CmdUtils.commandStart(command);
- }
- }
- }
-
- @PreDestroy
- public void destroyMediaMtx() {
- if (minioEnabled) {
- log.info("閿�姣乵inio");
- if (CmdUtils.isProcessRunning(processName)) {
- // 杩涚▼宸茬粡鍦ㄨ繍琛岋紝缁撴潫璇ヨ繘绋�
- CmdUtils.stopProcess(processName);
- }
- }
- }
-}
diff --git a/ard-work/src/main/java/com/ruoyi/sy/service/impl/ArdSyCarServiceImpl.java b/ard-work/src/main/java/com/ruoyi/sy/service/impl/ArdSyCarServiceImpl.java
index 788a2b2..6cd7616 100644
--- a/ard-work/src/main/java/com/ruoyi/sy/service/impl/ArdSyCarServiceImpl.java
+++ b/ard-work/src/main/java/com/ruoyi/sy/service/impl/ArdSyCarServiceImpl.java
@@ -17,13 +17,13 @@
import com.ruoyi.common.core.redis.RedisCache;
import com.ruoyi.common.utils.SecurityUtils;
import com.ruoyi.common.utils.uuid.IdUtils;
-import com.ruoyi.utils.tools.Point;
+import com.ruoyi.utils.gis.GisUtil;
+import com.ruoyi.utils.gis.Point;
import com.ruoyi.scheduling.domian.SchedulingParam;
import com.ruoyi.sy.domain.ArdSyCarDay;
import com.ruoyi.sy.mapper.ArdSyCarDayMapper;
-import com.ruoyi.utils.tools.GisTool;
+import com.ruoyi.utils.minio.MinioUtil;
import com.ruoyi.utils.websocket.util.WebSocketUtils;
-import com.ruoyi.storage.minio.utils.MinioUtils;
import com.ruoyi.sy.domain.ArdSyUser;
import com.ruoyi.sy.gps31.PositionContainer;
import com.ruoyi.sy.mapper.ArdSyUserMapper;
@@ -79,8 +79,7 @@
RedisCache redisCache;
@Resource
private ArdSyCarDayMapper ardSyCarDayMapper;
- @Resource
- private MinioUtils minioUtil;
+
private Map<Integer, Map<String, String>> logInMap = new HashMap();
private Map<String, Timer> userCarTimerMap = new HashMap();
@@ -144,7 +143,7 @@
objectNames.add(ardSyCar.getCarPicture().split("/sycar/")[1]);
}
}
- minioUtil.removeObjects("sycar", objectNames);
+ MinioUtil.removeObjects("sycar", objectNames);
return ardSyCarMapper.deleteArdSyCarByIds(ids);
}
@@ -261,12 +260,12 @@
@Override
public List<Map<String, String>> getAllCarModel() {
- boolean exsit = minioUtil.exitsBucket("sycar");
+ boolean exsit = MinioUtil.exitsBucket("sycar");
if (exsit) {
List<Map<String, String>> listObjetcName = new ArrayList<>();
try {
// ListObjectsArgs listObjectsArgs = ListObjectsArgs.builder().prefix("carmodel/").bucket("sycar").build();
- Iterable<Result<Item>> myObjects = minioUtil.getObjectsByBucket("sycar","carmodel");
+ Iterable<Result<Item>> myObjects = MinioUtil.getObjectsByBucket("sycar","carmodel");
for (Result<Item> result : myObjects) {
Item item = result.get();
Map<String, String> map = new HashMap();
@@ -329,16 +328,16 @@
if (ardSyCarr.getCarPicture() != null || !ardSyCarr.getCarPicture().equals("")) {
String objectName = ardSyCarr.getCarPicture().split("/sycar/")[1];
objectNames.add(objectName);
- minioUtil.removeObjects("sycar", objectNames);
+ MinioUtil.removeObjects("sycar", objectNames);
}
}
//鍒ゆ柇鏂囦欢鏄惁涓虹┖
if (null == carPicture || 0 == carPicture.getSize()) {
return "";
}
- boolean exsit = minioUtil.exitsBucket("sycar");
+ boolean exsit = MinioUtil.exitsBucket("sycar");
if (!exsit) {
- boolean bucket = minioUtil.createBucket("sycar");
+ boolean bucket = MinioUtil.createBucket("sycar");
}
//鏂囦欢鍚�
String originalFilename = carPicture.getOriginalFilename();
@@ -355,7 +354,7 @@
// .contentType(carPicture.getContentType())
// .build();
// MinioConfig.getMinioClient().putObject(putObjectArgs);
- minioUtil.uploadObject("sycar",fileName,inputStream,carPicture.getSize(),carPicture.getContentType());
+ MinioUtil.uploadObject("sycar",fileName,inputStream,carPicture.getSize(),carPicture.getContentType());
inputStream.close();
/*鑾峰彇url*/
GetPresignedObjectUrlArgs getPresignedObjectUrlArgs = GetPresignedObjectUrlArgs
@@ -365,7 +364,7 @@
.method(Method.GET)
.build();
//String presignedObjectUrl = MinioConfig.getMinioClient().getPresignedObjectUrl(getPresignedObjectUrlArgs);
- String ObjectUrl = minioUtil.getBucketObjectUrl("sycar", fileName);
+ String ObjectUrl = MinioUtil.getBucketObjectUrl("sycar", fileName);
if (id != null && !id.equals("")) {//id涓洪潪蹇呰
ArdSyCar ardSyCar = new ArdSyCar();
ardSyCar.setId(id);
@@ -1083,7 +1082,7 @@
List<Map<String, Object>> carGPSMap = (List<Map<String, Object>>) carGPSTrack.get("list");
Double lng = Double.valueOf((String) carGPSMap.get(0).get("lng"));
Double lat = Double.valueOf((String) carGPSMap.get(0).get("lat"));
- double distance = GisTool.getDistance( new double[]{longitude,latitude}, new double[]{lng, lat});
+ double distance = GisUtil.getDistance( new double[]{longitude,latitude}, new double[]{lng, lat});
if (distance <= radius) {
carMap.put("longitude",lng);
carMap.put("latitude",lat);
@@ -1142,7 +1141,7 @@
Double lng = Double.valueOf((String) carGPSMap.get(0).get("lng"));
Double lat = Double.valueOf((String) carGPSMap.get(0).get("lat"));
Point point = new Point(lng,lat);
- boolean inPolygon = GisTool.isInPolygon(point, partitionLocation);
+ boolean inPolygon = GisUtil.isInPolygon(point, partitionLocation);
if (inPolygon) {
carMap.put("longitude", lng);
carMap.put("latitude", lat);
diff --git a/ard-work/src/main/java/com/ruoyi/utils/gis/GisUtil.java b/ard-work/src/main/java/com/ruoyi/utils/gis/GisUtil.java
new file mode 100644
index 0000000..3aafe29
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/utils/gis/GisUtil.java
@@ -0,0 +1,195 @@
+package com.ruoyi.utils.gis;
+
+import org.gavaghan.geodesy.*;
+
+import java.awt.geom.Point2D;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+
+public class GisUtil {
+
+ public static GeodeticCalculator geodeticCalculator = new GeodeticCalculator();
+ /**
+ * 鏍规嵁缁忕含搴︼紝璁$畻涓ょ偣闂寸殑璺濈
+ *
+ * @param From 绗竴涓偣鐨勭粡绾害
+ * @param To 绗簩涓偣鐨勭粡绾害
+ * @return 杩斿洖璺濈 鍗曚綅绫�
+ */
+ public static double getDistance(double[] From, double[] To) {
+ double longitudeFrom = From[0];
+ double latitudeFrom = From[1];
+ double longitudeTo = To[0];
+ double latitudeTo = To[1];
+ GlobalCoordinates source = new GlobalCoordinates(latitudeFrom, longitudeFrom);
+ GlobalCoordinates target = new GlobalCoordinates(latitudeTo, longitudeTo);
+ return geodeticCalculator.calculateGeodeticCurve(Ellipsoid.WGS84, source, target).getEllipsoidalDistance();
+ }
+ /**
+ * 鏍规嵁缁忕含搴︼紝璁$畻涓ょ偣闂寸殑璺濈
+ *
+ * @param longitudeFrom 绗竴涓偣鐨勭粡搴�
+ * @param latitudeFrom 绗竴涓偣鐨勭含搴�
+ * @param longitudeTo 绗簩涓偣鐨勭粡搴�
+ * @param latitudeTo 绗簩涓偣鐨勭含搴�
+ * @return 杩斿洖璺濈 鍗曚綅绫�
+ */
+ public static double getDistance(double longitudeFrom, double latitudeFrom, double longitudeTo, double latitudeTo) {
+ GlobalCoordinates source = new GlobalCoordinates(latitudeFrom, longitudeFrom);
+ GlobalCoordinates target = new GlobalCoordinates(latitudeTo, longitudeTo);
+ return geodeticCalculator.calculateGeodeticCurve(Ellipsoid.WGS84, source, target).getEllipsoidalDistance();
+ }
+
+ /**
+ * 璁$畻浠巉rom鍒皌o鏂瑰悜鐨勭洿绾夸笌姝e寳鏂瑰悜澶硅
+ *
+ * @param longitudeFrom 绗竴涓偣鐨勭粡搴�
+ * @param latitudeFrom 绗竴涓偣鐨勭含搴�
+ * @param longitudeTo 绗簩涓偣鐨勭粡搴�
+ * @param latitudeTo 绗簩涓偣鐨勭含搴�
+ * @return 杩斿洖瑙掑害
+ */
+ public static double getNorthAngle(double longitudeFrom, double latitudeFrom, double longitudeTo, double latitudeTo) {
+ GlobalPosition source = new GlobalPosition(latitudeFrom, longitudeFrom, 0);
+ GlobalPosition target = new GlobalPosition(latitudeTo, longitudeTo, 0);
+ return geodeticCalculator.calculateGeodeticMeasurement(Ellipsoid.WGS84, source, target).getAzimuth();
+ }
+
+ /**
+ * @param camera 缁忓害,绾害,楂樺害 濡�:{125.097531, 46.60029, 120};
+ * @param lookAt 缁忓害,绾害,楂樺害 濡�:{125.124731, 46.584808, 0};
+ * @param viewAngle 鐩告満鍙瑙掑害 濡�:20
+ * @param viewWidth 瑙嗗煙瀹藉害 濡�:150
+ * @return ptz 鏁扮粍 濡�:[129.5355798969157, -2.5419097807416655, 23.3676043024458]
+ */
+ public static double[] getCameraPTZ(double[] camera, double[] lookAt, double viewAngle, double viewWidth) {
+ double p = 0, t = 0, z = 0;
+ double distance = GisUtil.getDistance(camera[0], camera[1], lookAt[0], lookAt[1]);
+ double northAngle = GisUtil.getNorthAngle(camera[0], camera[1], lookAt[0], lookAt[1]);
+ double height = camera[2];
+ p = northAngle;
+ t = Angle.toDegrees(Math.atan(height / distance)) * -1+360;
+ z = distance * Math.tan(viewAngle / 2) * 2 / viewWidth;
+ /* p = new BigDecimal(p).setScale(1,BigDecimal.ROUND_HALF_UP).doubleValue();
+ t = new BigDecimal(t).setScale(1,BigDecimal.ROUND_HALF_UP).doubleValue();
+ z = new BigDecimal(z).setScale(1,BigDecimal.ROUND_HALF_UP).doubleValue();*/
+ return new double[]{p, t, z};
+ }
+ /**
+ * 鏍规嵁寮�濮嬪潗鏍囩偣锛岃搴︼紝璁$畻缁撴潫鐐瑰潗鏍�
+ * @param startGlobalCoordinates
+ * @param startAngle 鏂瑰悜锛堜互璧风偣涓轰腑蹇冿級
+ * @param distance 璺濈锛堝崟浣嶏細m锛�
+ * @return
+ */
+ public static GlobalCoordinates getGlobalCoordinates(GlobalCoordinates startGlobalCoordinates, double startAngle, double distance){
+ return new GeodeticCalculator().calculateEndingGlobalCoordinates(Ellipsoid.WGS84, startGlobalCoordinates, startAngle, distance);
+ }
+ /**
+ * 鍒ゆ柇褰撳墠浣嶇疆鏄惁鍦ㄥ杈瑰舰鍖哄煙鍐�
+ * @param orderLocation 褰撳墠鐐�
+ * @param partitionLocation 鍖哄煙椤剁偣
+ * @return
+ */
+ public static boolean isInPolygon(Point orderLocation, List<Point> partitionLocation){
+
+ double p_x =orderLocation.getLongitude();
+ double p_y =orderLocation.getLatitude();
+ Point2D.Double point = new Point2D.Double(p_x, p_y);
+
+ List<Point2D.Double> pointList= new ArrayList<Point2D.Double>();
+
+ for (Point points : partitionLocation){
+ double polygonPoint_x=points.getLongitude();
+ double polygonPoint_y=points.getLatitude();
+ Point2D.Double polygonPoint = new Point2D.Double(polygonPoint_x,polygonPoint_y);
+ pointList.add(polygonPoint);
+ }
+ return IsPtInPoly(point,pointList);
+ }
+ /**
+ * 鍒ゆ柇鐐规槸鍚﹀湪澶氳竟褰㈠唴锛屽鏋滅偣浣嶄簬澶氳竟褰㈢殑椤剁偣鎴栬竟涓婏紝涔熺畻鍋氱偣鍦ㄥ杈瑰舰鍐咃紝鐩存帴杩斿洖true
+ * @param point 妫�娴嬬偣
+ * @param pts 澶氳竟褰㈢殑椤剁偣
+ * @return 鐐瑰湪澶氳竟褰㈠唴杩斿洖true,鍚﹀垯杩斿洖false
+ */
+ public static boolean IsPtInPoly(Point2D.Double point, List<Point2D.Double> pts){
+
+ int N = pts.size();
+ boolean boundOrVertex = true; //濡傛灉鐐逛綅浜庡杈瑰舰鐨勯《鐐规垨杈逛笂锛屼篃绠楀仛鐐瑰湪澶氳竟褰㈠唴锛岀洿鎺ヨ繑鍥瀟rue
+ int intersectCount = 0;//cross points count of x
+ double precision = 2e-10; //娴偣绫诲瀷璁$畻鏃跺�欎笌0姣旇緝鏃跺�欑殑瀹瑰樊
+ Point2D.Double p1, p2;//neighbour bound vertices
+ Point2D.Double p = point; //褰撳墠鐐�
+
+ p1 = pts.get(0);//left vertex
+ for(int i = 1; i <= N; ++i){//check all rays
+ if(p.equals(p1)){
+ return boundOrVertex;//p is an vertex
+ }
+
+ p2 = pts.get(i % N);
+ if(p.x < Math.min(p1.x, p2.x) || p.x > Math.max(p1.x, p2.x)){
+ p1 = p2;
+ continue;
+ }
+
+ if(p.x > Math.min(p1.x, p2.x) && p.x < Math.max(p1.x, p2.x)){
+ if(p.y <= Math.max(p1.y, p2.y)){
+ if(p1.x == p2.x && p.y >= Math.min(p1.y, p2.y)){
+ return boundOrVertex;
+ }
+
+ if(p1.y == p2.y){
+ if(p1.y == p.y){
+ return boundOrVertex;
+ }else{//before ray
+ ++intersectCount;
+ }
+ }else{
+ double xinters = (p.x - p1.x) * (p2.y - p1.y) / (p2.x - p1.x) + p1.y;
+ if(Math.abs(p.y - xinters) < precision){
+ return boundOrVertex;
+ }
+
+ if(p.y < xinters){
+ ++intersectCount;
+ }
+ }
+ }
+ }else{
+ if(p.x == p2.x && p.y <= p2.y){
+ Point2D.Double p3 = pts.get((i+1) % N);
+ if(p.x >= Math.min(p1.x, p3.x) && p.x <= Math.max(p1.x, p3.x)){
+ ++intersectCount;
+ }else{
+ intersectCount += 2;
+ }
+ }
+ }
+ p1 = p2;
+ }
+
+ if(intersectCount % 2 == 0){//鍋舵暟鍦ㄥ杈瑰舰澶�
+ return false;
+ } else { //濂囨暟鍦ㄥ杈瑰舰鍐�
+ return true;
+ }
+ }
+
+ public static void main(String[] args) {
+ // 125.097531,46.60029, 125.124731,46.584808
+ //鐩告満浣嶇疆
+ double[] camera = {125.146964331147,46.5580925811216,102};//缁忓害,绾害,楂樺害
+ //鐪嬪悜鐨勪綅缃�
+ double[] lookAt = {125.155449,46.555108,0};//缁忓害,绾害,楂樺害
+
+ double viewAngle = 20;//鐩告満鍙瑙掑害
+ double viewWidth = 150;//鐩告満瑙嗗煙瀹藉害
+
+ double[] ptz = GisUtil.getCameraPTZ(camera, lookAt, viewAngle, viewWidth);
+ System.out.println("ptz:" + Arrays.toString(ptz));
+
+ }
+}
diff --git a/ard-work/src/main/java/com/ruoyi/utils/tools/Point.java b/ard-work/src/main/java/com/ruoyi/utils/gis/Point.java
similarity index 95%
rename from ard-work/src/main/java/com/ruoyi/utils/tools/Point.java
rename to ard-work/src/main/java/com/ruoyi/utils/gis/Point.java
index 80d9235..979cc55 100644
--- a/ard-work/src/main/java/com/ruoyi/utils/tools/Point.java
+++ b/ard-work/src/main/java/com/ruoyi/utils/gis/Point.java
@@ -1,4 +1,4 @@
-package com.ruoyi.utils.tools;
+package com.ruoyi.utils.gis;
import com.fasterxml.jackson.annotation.JsonCreator;
import com.fasterxml.jackson.annotation.JsonProperty;
diff --git a/ard-work/src/main/java/com/ruoyi/device/hiksdk/util/imageUtil/waterMarkUtil.java b/ard-work/src/main/java/com/ruoyi/utils/image/WaterMarkUtil.java
similarity index 98%
rename from ard-work/src/main/java/com/ruoyi/device/hiksdk/util/imageUtil/waterMarkUtil.java
rename to ard-work/src/main/java/com/ruoyi/utils/image/WaterMarkUtil.java
index 919cf10..14a4b1f 100644
--- a/ard-work/src/main/java/com/ruoyi/device/hiksdk/util/imageUtil/waterMarkUtil.java
+++ b/ard-work/src/main/java/com/ruoyi/utils/image/WaterMarkUtil.java
@@ -1,4 +1,4 @@
-package com.ruoyi.device.hiksdk.util.imageUtil;
+package com.ruoyi.utils.image;
import org.bytedeco.ffmpeg.global.avutil;
import org.bytedeco.javacv.FFmpegFrameGrabber;
@@ -11,7 +11,6 @@
import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.OutputStream;
-import java.util.Random;
import java.awt.*;
import java.awt.image.BufferedImage;
/**
@@ -26,7 +25,7 @@
/**
* 鍥剧墖姘村嵃宸ュ叿绫�
*/
-public class waterMarkUtil {
+public class WaterMarkUtil {
// 姘村嵃閫忔槑搴�
private static final float alpha = 0.3f;
diff --git a/ard-work/src/main/java/com/ruoyi/utils/minio/MinioConfig.java b/ard-work/src/main/java/com/ruoyi/utils/minio/MinioConfig.java
new file mode 100644
index 0000000..41c8cab
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/utils/minio/MinioConfig.java
@@ -0,0 +1,32 @@
+package com.ruoyi.utils.minio;
+
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+
+/**
+ * @Description:
+ * @ClassName: MinioInit
+ * @Author: 鍒樿嫃涔�
+ * @Date: 2023骞�08鏈�25鏃�14:03:45
+ **/
+
+@Configuration
+@Slf4j(topic = "minio")
+public class MinioConfig {
+
+ @Value("${minio.endpoint}")
+ private String endpoint;
+ @Value("${minio.accessKey}")
+ private String accessKey;
+ @Value("${minio.secretKey}")
+ private String secretKey;
+
+ @Bean
+ MinioUtil getMinioUtil()
+ {
+ log.info("鍒濆鍖杕inio閰嶇疆"+"銆�"+endpoint+"("+accessKey+"/"+secretKey+")銆�");
+ return new MinioUtil(endpoint,accessKey,secretKey);
+ }
+}
diff --git a/ard-work/src/main/java/com/ruoyi/storage/minio/utils/MinioUtils.java b/ard-work/src/main/java/com/ruoyi/utils/minio/MinioUtil.java
similarity index 75%
rename from ard-work/src/main/java/com/ruoyi/storage/minio/utils/MinioUtils.java
rename to ard-work/src/main/java/com/ruoyi/utils/minio/MinioUtil.java
index 7cbcec6..62b93d6 100644
--- a/ard-work/src/main/java/com/ruoyi/storage/minio/utils/MinioUtils.java
+++ b/ard-work/src/main/java/com/ruoyi/utils/minio/MinioUtil.java
@@ -1,4 +1,4 @@
-package com.ruoyi.storage.minio.utils;
+package com.ruoyi.utils.minio;
import com.ruoyi.common.utils.StringUtils;
import com.ruoyi.common.utils.uuid.IdUtils;
@@ -6,39 +6,70 @@
import io.minio.http.Method;
import io.minio.messages.*;
import lombok.extern.slf4j.Slf4j;
-import org.springframework.stereotype.Component;
import org.springframework.web.multipart.MultipartFile;
-import javax.annotation.Resource;
-import java.io.*;
-import java.util.*;
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.InputStream;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.LinkedList;
+import java.util.List;
import java.util.concurrent.TimeUnit;
/**
- * @Description: Minio瀹㈡埛绔伐鍏风被
- * @ClassName: MinioUtils
+ * @Description: minio宸ュ叿绫�
+ * @ClassName: MinioUtil
* @Author: 鍒樿嫃涔�
- * @Date: 2023骞�05鏈�18鏃�9:34
- * @Version: 1.0
+ * @Date: 2023骞�08鏈�25鏃�14:03:00
**/
-@SuppressWarnings("ALL")
@Slf4j(topic = "minio")
-@Component
-public class MinioUtils {
+public class MinioUtil {
- @Resource
- MinioClient minioClient;
+ private volatile static MinioClient minioClient;
+ public static String domainUrl;
+ public static String accessKey;
+ public static String secretKey;
+
+ private MinioUtil() {
+ }
+
+ public MinioUtil(String domainUrl, String accessKey, String secretKey) {
+ this.domainUrl = domainUrl;
+ this.accessKey = accessKey;
+ this.secretKey = secretKey;
+ creatMinioClient();
+ }
+
+ /**
+ * 鑾峰彇minio瀹㈡埛绔疄渚�
+ *
+ * @return {@link MinioClient}
+ */
+ public static MinioClient creatMinioClient() {
+ if (minioClient == null) {
+ synchronized (MinioUtil.class) {
+ if (minioClient == null) {
+ minioClient = MinioClient.builder()
+ .endpoint(domainUrl)
+ .credentials(accessKey, secretKey)
+ .build();
+ }
+ }
+ }
+ return minioClient;
+ }
/**
* 鍒ゆ柇妗舵槸鍚﹀瓨鍦�
*/
- public boolean exitsBucket(String bucketName) {
+ public static boolean exitsBucket(String bucket) {
boolean found = false;
try {
- if (StringUtils.isEmpty(bucketName)) {
+ if (StringUtils.isEmpty(bucket)) {
return false;
}
- BucketExistsArgs bucketExistsArgs = BucketExistsArgs.builder().bucket(bucketName).build();
+ BucketExistsArgs bucketExistsArgs = BucketExistsArgs.builder().bucket(bucket).build();
found = minioClient.bucketExists(bucketExistsArgs);
} catch (Exception ex) {
@@ -50,23 +81,23 @@
/**
* 鍒涘缓妗�,骞惰缃《绛栫暐涓哄叕鍏�
*/
- public boolean createBucket(String bucketName) {
+ public static boolean createBucket(String bucket) {
try {
- if (StringUtils.isEmpty(bucketName)) {
+ if (StringUtils.isEmpty(bucket)) {
return false;
}
/*鍒涘缓妗�*/
- MakeBucketArgs makeBucketArgs = MakeBucketArgs.builder().bucket(bucketName).build();
+ MakeBucketArgs makeBucketArgs = MakeBucketArgs.builder().bucket(bucket).build();
minioClient.makeBucket(makeBucketArgs);
/*璁剧疆绛栫暐*/
String sb = "{\"Version\":\"2012-10-17\"," +
"\"Statement\":[{\"Effect\":\"Allow\",\"Principal\":" +
"{\"AWS\":[\"*\"]},\"Action\":[\"s3:ListBucket\",\"s3:ListBucketMultipartUploads\"," +
- "\"s3:GetBucketLocation\"],\"Resource\":[\"arn:aws:s3:::" + bucketName +
+ "\"s3:GetBucketLocation\"],\"Resource\":[\"arn:aws:s3:::" + bucket +
"\"]},{\"Effect\":\"Allow\",\"Principal\":{\"AWS\":[\"*\"]},\"Action\":[\"s3:PutObject\",\"s3:AbortMultipartUpload\",\"s3:DeleteObject\",\"s3:GetObject\",\"s3:ListMultipartUploadParts\"],\"Resource\":[\"arn:aws:s3:::" +
- bucketName + "/*\"]}]}";
+ bucket + "/*\"]}]}";
SetBucketPolicyArgs setBucketPolicyArgs = SetBucketPolicyArgs.builder()
- .bucket(bucketName)
+ .bucket(bucket)
.config(sb)
.build();
/*璁剧疆閫氱煡mqtt*/
@@ -85,7 +116,7 @@
queueConfigurations.add(queueConfiguration);
config.setQueueConfigurationList(queueConfigurations);
SetBucketNotificationArgs setBucketNotificationArgs = SetBucketNotificationArgs.builder()
- .bucket(bucketName)
+ .bucket(bucket)
.config(config).build();
minioClient.setBucketPolicy(setBucketPolicyArgs);
minioClient.setBucketNotification(setBucketNotificationArgs);
@@ -102,7 +133,7 @@
*
* @param bucket 妗跺悕绉�
*/
- public boolean removeBucket(String bucket) {
+ public static boolean removeBucket(String bucket) {
try {
boolean found = exitsBucket(bucket);
if (found) {
@@ -130,7 +161,7 @@
*
* @return
*/
- public List<Bucket> getListBuckets() {
+ public static List<Bucket> getListBuckets() {
try {
return minioClient.listBuckets();
} catch (Exception e) {
@@ -143,19 +174,19 @@
* 鐢熸垚涓�涓狦ET璇锋眰鐨勫甫鏈夊け鏁堟椂闂寸殑鍒嗕韩閾炬帴銆�
* 澶辨晥鏃堕棿榛樿鏄�7澶┿��
*
- * @param bucketName 瀛樺偍妗跺悕绉�
- * @param objectName 瀛樺偍妗堕噷鐨勫璞″悕绉�
- * @param expires 澶辨晥鏃堕棿锛堜互绉掍负鍗曚綅锛夛紝榛樿鏄�7澶╋紝涓嶅緱澶т簬涓冨ぉ
+ * @param bucket 瀛樺偍妗跺悕绉�
+ * @param object 瀛樺偍妗堕噷鐨勫璞″悕绉�
+ * @param expires 澶辨晥鏃堕棿锛堜互绉掍负鍗曚綅锛夛紝榛樿鏄�7澶╋紝涓嶅緱澶т簬涓冨ぉ
* @return
*/
- public String getObjectWithExpired(String bucketName, String objectName, Integer expires, TimeUnit timeUnit) {
+ public static String getObjectWithExpired(String bucket, String object, Integer expires, TimeUnit timeUnit) {
String url = "";
- if (exitsBucket(bucketName)) {
+ if (exitsBucket(bucket)) {
try {
GetPresignedObjectUrlArgs getPresignedObjectUrlArgs = GetPresignedObjectUrlArgs.builder()
.method(Method.GET)
- .bucket(bucketName)
- .object(objectName)
+ .bucket(bucket)
+ .object(object)
.expiry(expires, timeUnit)
.build();
url = minioClient.getPresignedObjectUrl(getPresignedObjectUrlArgs);
@@ -163,7 +194,7 @@
log.error("minio鐢熸垚澶辨晥url寮傚父", ex.getMessage());
}
} else {
- createBucket(bucketName);
+ createBucket(bucket);
}
return url;
}
@@ -176,20 +207,13 @@
* @鍒涘缓鏃堕棿 2023/5/18 12:16
* @淇敼浜哄拰鍏跺畠淇℃伅
*/
- public String putObjectAndGetUrl(String bucketName, MultipartFile file) {
- if (!exitsBucket(bucketName)) {
- createBucket(bucketName);
+ public static String putObjectAndGetUrl(String bucket, MultipartFile file) {
+ if (!exitsBucket(bucket)) {
+ createBucket(bucket);
}
//鍒ゆ柇鏂囦欢鏄惁涓虹┖
if (null == file || 0 == file.getSize()) {
log.error("涓婁紶minio鏂囦欢鏈嶅姟鍣ㄩ敊璇紝涓婁紶鏂囦欢涓虹┖");
- }
- boolean exsit = exitsBucket(bucketName);
- if (!exsit) {
- boolean bucket = createBucket(bucketName);
- if (bucket) {
- log.info(bucketName + "-妗朵笉瀛樺湪,鎴愬姛鍒涘缓妗�");
- }
}
//鏂囦欢鍚�
String originalFilename = file.getOriginalFilename();
@@ -200,7 +224,7 @@
/*涓婁紶瀵硅薄*/
PutObjectArgs putObjectArgs = PutObjectArgs
.builder()
- .bucket(bucketName)
+ .bucket(bucket)
.object(fileName)
.stream(inputStream, file.getSize(), -1)
.contentType(file.getContentType())
@@ -210,7 +234,7 @@
/*鑾峰彇url*/
GetPresignedObjectUrlArgs getPresignedObjectUrlArgs = GetPresignedObjectUrlArgs
.builder()
- .bucket(bucketName)
+ .bucket(bucket)
.object(fileName)
.method(Method.GET)
.build();
@@ -231,20 +255,13 @@
* @鍒涘缓鏃堕棿 2023/5/18 12:16
* @淇敼浜哄拰鍏跺畠淇℃伅
*/
- public String putObjectAndGetUrl(String bucketName, String folder, MultipartFile file) {
- if (!exitsBucket(bucketName)) {
- createBucket(bucketName);
+ public static String putObjectAndGetUrl(String bucket, String folder, MultipartFile file) {
+ if (!exitsBucket(bucket)) {
+ createBucket(bucket);
}
//鍒ゆ柇鏂囦欢鏄惁涓虹┖
if (null == file || 0 == file.getSize()) {
log.error("涓婁紶minio鏂囦欢鏈嶅姟鍣ㄩ敊璇紝涓婁紶鏂囦欢涓虹┖");
- }
- boolean exsit = exitsBucket(bucketName);
- if (!exsit) {
- boolean bucket = createBucket(bucketName);
- if (bucket) {
- log.info(bucketName + "-妗朵笉瀛樺湪,鎴愬姛鍒涘缓妗�");
- }
}
//鏂囦欢鍚�
String originalFilename = file.getOriginalFilename();
@@ -255,7 +272,7 @@
/*涓婁紶瀵硅薄*/
PutObjectArgs putObjectArgs = PutObjectArgs
.builder()
- .bucket(bucketName)
+ .bucket(bucket)
.object(fileName)
.stream(inputStream, file.getSize(), -1)
.contentType(file.getContentType())
@@ -265,7 +282,7 @@
/*鑾峰彇url*/
GetPresignedObjectUrlArgs getPresignedObjectUrlArgs = GetPresignedObjectUrlArgs
.builder()
- .bucket(bucketName)
+ .bucket(bucket)
.object(fileName)
.method(Method.GET)
.build();
@@ -281,15 +298,15 @@
/**
* 鍒犻櫎鏂囦欢
*
- * @param bucket 妗跺悕绉�
- * @param objectName 瀵硅薄鍚嶇О
+ * @param bucket 妗跺悕绉�
+ * @param object 瀵硅薄鍚嶇О
* @return boolean
*/
- public boolean removeObject(String bucket, String objectName) {
+ public static boolean removeObject(String bucket, String object) {
try {
boolean exsit = exitsBucket(bucket);
if (exsit) {
- RemoveObjectArgs removeObjectArgs = RemoveObjectArgs.builder().bucket(bucket).object(objectName).build();
+ RemoveObjectArgs removeObjectArgs = RemoveObjectArgs.builder().bucket(bucket).object(object).build();
minioClient.removeObject(removeObjectArgs);
return true;
}
@@ -302,14 +319,14 @@
/**
* 鎵归噺鍒犻櫎鏂囦欢
*
- * @param objectNames 瀵硅薄鍚嶇О
+ * @param objectList 瀵硅薄鍚嶇О鍒楄〃
* @return boolean
*/
- public boolean removeObjects(String bucket, List<String> objectNames) {
+ public static boolean removeObjects(String bucket, List<String> objectList) {
if (exitsBucket(bucket)) {
try {
List<DeleteObject> objects = new LinkedList<>();
- for (String str : objectNames) {
+ for (String str : objectList) {
objects.add(new DeleteObject(str));
}
RemoveObjectsArgs removeObjectsArgs = RemoveObjectsArgs.builder().bucket(bucket).objects(objects).build();
@@ -334,7 +351,7 @@
* @param bucket 妗跺悕绉�
* @return {@link List}<{@link String}>
*/
- public List<String> getBucketObjectName(String bucket) {
+ public static List<String> getBucketObjectName(String bucket) {
boolean exsit = exitsBucket(bucket);
if (exsit) {
List<String> listObjetcName = new ArrayList<>();
@@ -356,10 +373,11 @@
/**
* 鑾峰彇鍗曚釜妗朵腑鐨勬墍鏈夋枃浠跺璞″悕绉�
*
- * @param [bucket,prefix]
+ * @param bucket 妗跺悕绉�
+ * @param prefix 鍓嶇紑
* @return {@link List}<{@link String}>
*/
- public List<String> getBucketObjectName(String bucket, String prefix) {
+ public static List<String> getBucketObjectName(String bucket, String prefix) {
boolean exsit = exitsBucket(bucket);
if (exsit) {
List<String> listObjetcName = new ArrayList<>();
@@ -381,19 +399,19 @@
/**
* 鑾峰彇鏌愪釜妗朵笅鏌愪釜瀵硅薄鐨刄RL
*
- * @param bucket 妗跺悕绉�
- * @param objectName 瀵硅薄鍚� (鏂囦欢澶瑰悕 + 鏂囦欢鍚�)
+ * @param bucket 妗跺悕绉�
+ * @param object 瀵硅薄鍚� (鏂囦欢澶瑰悕 + 鏂囦欢鍚�)
* @return
*/
- public String getBucketObjectUrl(String bucketName, String objectName) {
+ public static String getBucketObjectUrl(String bucket, String object) {
try {
- if (!exitsBucket(bucketName)) {
+ if (!exitsBucket(bucket)) {
return "";
}
GetPresignedObjectUrlArgs getPresignedObjectUrlArgs = GetPresignedObjectUrlArgs
.builder()
- .bucket(bucketName)
- .object(objectName)
+ .bucket(bucket)
+ .object(object)
.method(Method.GET)
.build();
String presignedObjectUrl = minioClient.getPresignedObjectUrl(getPresignedObjectUrlArgs);
@@ -408,20 +426,20 @@
/**
* 涓婁紶瀵硅薄-stream
*
- * @param bucketName bucket鍚嶇О
- * @param objectName 饨備欢鍚嶇О
+ * @param bucket bucket鍚嶇О
+ * @param object 饨備欢鍚嶇О
* @param stream 饨備欢娴�
* @param size 饧も缉
* @param contextType 绫诲瀷 Image/jpeg 娴忚鍣ㄥ彲浠ョ洿鎺ユ墦寮�锛屽惁鍒欎笅杞�
*/
- public boolean uploadObject(String bucketName, String objectName, InputStream stream, long size, String contextType) {
+ public static boolean uploadObject(String bucket, String object, InputStream stream, long size, String contextType) {
try {
- if (!exitsBucket(bucketName)) {
- createBucket(bucketName);
+ if (!exitsBucket(bucket)) {
+ createBucket(bucket);
}
PutObjectArgs putObjectArgs = PutObjectArgs.builder()
- .bucket(bucketName)
- .object(objectName)
+ .bucket(bucket)
+ .object(object)
.stream(stream, size, -1)
.contentType(contextType)
.build();
@@ -436,20 +454,20 @@
/**
* 涓婁紶瀵硅薄-File
*
- * @param bucketName bucket鍚嶇О
- * @param objectName 饨備欢鍚嶇О
+ * @param bucket bucket鍚嶇О
+ * @param object 饨備欢鍚嶇О
* @param file 饨備欢
* @param contextType 绫诲瀷 Image/jpeg 娴忚鍣ㄥ彲浠ョ洿鎺ユ墦寮�锛屽惁鍒欎笅杞�
*/
- public boolean uploadObject(String bucketName, String objectName, File file, String contextType) {
+ public static boolean uploadObject(String bucket, String object, File file, String contextType) {
try {
- if (!exitsBucket(bucketName)) {
- createBucket(bucketName);
+ if (!exitsBucket(bucket)) {
+ createBucket(bucket);
}
FileInputStream fileInputStream = new FileInputStream(file);
PutObjectArgs putObjectArgs = PutObjectArgs.builder()
- .bucket(bucketName)
- .object(objectName)
+ .bucket(bucket)
+ .object(object)
.stream(fileInputStream, file.length(), -1)
.contentType(contextType)
.build();
@@ -464,20 +482,20 @@
/**
* 涓婁紶瀵硅薄-MultipartFile
*
- * @param bucketName bucket鍚嶇О
- * @param objectName 饨備欢鍚嶇О
- * @param MultipartFile 饨備欢
+ * @param bucket bucket鍚嶇О
+ * @param object 饨備欢鍚嶇О
+ * @param multipartFile 饨備欢
* @param contextType 绫诲瀷 Image/jpeg 娴忚鍣ㄥ彲浠ョ洿鎺ユ墦寮�锛屽惁鍒欎笅杞�
*/
- public boolean uploadObject(String bucketName, String objectName, MultipartFile multipartFile, String contextType) {
+ public static boolean uploadObject(String bucket, String object, MultipartFile multipartFile, String contextType) {
try {
- if (!exitsBucket(bucketName)) {
- createBucket(bucketName);
+ if (!exitsBucket(bucket)) {
+ createBucket(bucket);
}
InputStream inputStream = multipartFile.getInputStream();
PutObjectArgs putObjectArgs = PutObjectArgs.builder()
- .bucket(bucketName)
- .object(objectName)
+ .bucket(bucket)
+ .object(object)
.stream(inputStream, multipartFile.getSize(), -1)
.contentType(contextType)
.build();
@@ -492,15 +510,14 @@
/**
* 涓婁紶瀵硅薄,鐢╩ultipartFile鍚嶇О浣滀负瀵硅薄鍚�
*
- * @param bucketName bucket鍚嶇О
- * @param objectName 饨備欢鍚嶇О
- * @param MultipartFile 饨備欢
+ * @param bucket bucket鍚嶇О
+ * @param multipartFile 饨備欢
* @param contextType 绫诲瀷 Image/jpeg 娴忚鍣ㄥ彲浠ョ洿鎺ユ墦寮�锛屽惁鍒欎笅杞�
*/
- public boolean uploadObject(String bucketName, MultipartFile multipartFile, String contextType) {
+ public static boolean uploadObject(String bucket, MultipartFile multipartFile, String contextType) {
try {
- if (!exitsBucket(bucketName)) {
- createBucket(bucketName);
+ if (!exitsBucket(bucket)) {
+ createBucket(bucket);
}
if (multipartFile == null) {
log.error("涓婁紶鏂囦欢涓虹┖");
@@ -509,7 +526,7 @@
String objectName = multipartFile.getOriginalFilename();
InputStream inputStream = multipartFile.getInputStream();
PutObjectArgs putObjectArgs = PutObjectArgs.builder()
- .bucket(bucketName)
+ .bucket(bucket)
.object(objectName)
.stream(inputStream, multipartFile.getSize(), -1)
.contentType(contextType)
@@ -525,15 +542,15 @@
/**
* 涓婁紶瀵硅薄-閫氳繃鏈湴璺緞
*
- * @param bulkName
- * @param objectName
- * @param localFilePathName
- * @return
+ * @param bucket 妗跺悕绉�
+ * @param object 瀵硅薄鍚嶇О
+ * @param localFilePathName 鏂囦欢璺緞
+ * @return boolean
*/
- public boolean uploadObject(String bucketName, String objectName, String localFilePathName, String contextType) {
+ public static boolean uploadObject(String bucket, String object, String localFilePathName, String contextType) {
try {
- if (!exitsBucket(bucketName)) {
- createBucket(bucketName);
+ if (!exitsBucket(bucket)) {
+ createBucket(bucket);
}
File file = new File(localFilePathName);
if (!file.exists()) {
@@ -541,8 +558,8 @@
return false;
}
UploadObjectArgs uploadObjectArgs = UploadObjectArgs.builder()
- .bucket(bucketName)
- .object(objectName)
+ .bucket(bucket)
+ .object(object)
.filename(localFilePathName)
.contentType(contextType)
.build();
@@ -562,7 +579,7 @@
* @鍒涘缓鏃堕棿 2023/2/6 10:32
* @淇敼浜哄拰鍏跺畠淇℃伅
*/
- public Iterable<Result<Item>> getObjectsByBucket(String bucketName) {
+ public static Iterable<Result<Item>> getObjectsByBucket(String bucketName) {
Iterable<Result<Item>> listObjects = minioClient.listObjects(ListObjectsArgs.builder()
.bucket(bucketName)
.recursive(true)
@@ -578,7 +595,7 @@
* @鍒涘缓鏃堕棿 2023/2/6 10:32
* @淇敼浜哄拰鍏跺畠淇℃伅
*/
- public Iterable<Result<Item>> getObjectsByBucket(String bucketName, String prefix) {
+ public static Iterable<Result<Item>> getObjectsByBucket(String bucketName, String prefix) {
Iterable<Result<Item>> listObjects = minioClient.listObjects(ListObjectsArgs.builder()
.bucket(bucketName)
.prefix(prefix)
@@ -586,4 +603,5 @@
.build());
return listObjects;
}
-}
\ No newline at end of file
+
+}
diff --git a/ard-work/src/main/java/com/ruoyi/utils/tools/CmdUtils.java b/ard-work/src/main/java/com/ruoyi/utils/process/CmdUtils.java
similarity index 98%
rename from ard-work/src/main/java/com/ruoyi/utils/tools/CmdUtils.java
rename to ard-work/src/main/java/com/ruoyi/utils/process/CmdUtils.java
index 3204542..8322b3a 100644
--- a/ard-work/src/main/java/com/ruoyi/utils/tools/CmdUtils.java
+++ b/ard-work/src/main/java/com/ruoyi/utils/process/CmdUtils.java
@@ -1,4 +1,4 @@
-package com.ruoyi.utils.tools;
+package com.ruoyi.utils.process;
import lombok.extern.slf4j.Slf4j;
diff --git a/ard-work/src/main/java/com/ruoyi/utils/tools/GisTool.java b/ard-work/src/main/java/com/ruoyi/utils/tools/GisTool.java
deleted file mode 100644
index 4682ff7..0000000
--- a/ard-work/src/main/java/com/ruoyi/utils/tools/GisTool.java
+++ /dev/null
@@ -1,141 +0,0 @@
-package com.ruoyi.utils.tools;
-
-import org.gavaghan.geodesy.Ellipsoid;
-import org.gavaghan.geodesy.GeodeticCalculator;
-import org.gavaghan.geodesy.GlobalCoordinates;
-
-import java.awt.geom.Point2D;
-import java.util.ArrayList;
-import java.util.List;
-
-/**
- * @Description:
- * @ClassName: GisTool
- * @Author: 鍒樿嫃涔�
- * @Date: 2023骞�06鏈�15鏃�13:26
- * @Version: 1.0
- **/
-public class GisTool {
- public static GeodeticCalculator geodeticCalculator = new GeodeticCalculator();
- /**
- * 鏍规嵁缁忕含搴︼紝璁$畻涓ょ偣闂寸殑璺濈
- *
- * @param From 绗竴涓偣鐨勭粡绾害
- * @param To 绗簩涓偣鐨勭粡绾害
- * @return 杩斿洖璺濈 鍗曚綅绫�
- */
- public static double getDistance(double[] From, double[] To) {
- double longitudeFrom = From[0];
- double latitudeFrom = From[1];
- double longitudeTo = To[0];
- double latitudeTo = To[1];
- GlobalCoordinates source = new GlobalCoordinates(latitudeFrom, longitudeFrom);
- GlobalCoordinates target = new GlobalCoordinates(latitudeTo, longitudeTo);
- return geodeticCalculator.calculateGeodeticCurve(Ellipsoid.WGS84, source, target).getEllipsoidalDistance();
- }
-
- public static void main(String[] args) {
- // 琚娴嬬殑缁忕含搴︾偣
- Point point= new Point(126.649261,45.687377);
- // 鍟嗕笟鍖哄煙锛堢櫨搴﹀杈瑰舰鍖哄煙缁忕含搴﹂泦鍚堬級
- List<Point> partitionLocation = new ArrayList<>();
- partitionLocation.add(new Point(126.64459,45.688548));
- partitionLocation.add(new Point(126.653376,45.68938));
- partitionLocation.add(new Point(126.645776,45.685048));
- partitionLocation.add(new Point(126.654184,45.685778));
- System.out.println(isInPolygon(point,partitionLocation));
- }
-
- /**
- * 鍒ゆ柇褰撳墠浣嶇疆鏄惁鍦ㄥ杈瑰舰鍖哄煙鍐�
- * @param orderLocation 褰撳墠鐐�
- * @param partitionLocation 鍖哄煙椤剁偣
- * @return
- */
- public static boolean isInPolygon(Point orderLocation,List<Point> partitionLocation){
-
- double p_x =orderLocation.getLongitude();
- double p_y =orderLocation.getLatitude();
- Point2D.Double point = new Point2D.Double(p_x, p_y);
-
- List<Point2D.Double> pointList= new ArrayList<Point2D.Double>();
-
- for (Point points : partitionLocation){
- double polygonPoint_x=points.getLongitude();
- double polygonPoint_y=points.getLatitude();
- Point2D.Double polygonPoint = new Point2D.Double(polygonPoint_x,polygonPoint_y);
- pointList.add(polygonPoint);
- }
- return IsPtInPoly(point,pointList);
- }
- /**
- * 鍒ゆ柇鐐规槸鍚﹀湪澶氳竟褰㈠唴锛屽鏋滅偣浣嶄簬澶氳竟褰㈢殑椤剁偣鎴栬竟涓婏紝涔熺畻鍋氱偣鍦ㄥ杈瑰舰鍐咃紝鐩存帴杩斿洖true
- * @param point 妫�娴嬬偣
- * @param pts 澶氳竟褰㈢殑椤剁偣
- * @return 鐐瑰湪澶氳竟褰㈠唴杩斿洖true,鍚﹀垯杩斿洖false
- */
- public static boolean IsPtInPoly(Point2D.Double point, List<Point2D.Double> pts){
-
- int N = pts.size();
- boolean boundOrVertex = true; //濡傛灉鐐逛綅浜庡杈瑰舰鐨勯《鐐规垨杈逛笂锛屼篃绠楀仛鐐瑰湪澶氳竟褰㈠唴锛岀洿鎺ヨ繑鍥瀟rue
- int intersectCount = 0;//cross points count of x
- double precision = 2e-10; //娴偣绫诲瀷璁$畻鏃跺�欎笌0姣旇緝鏃跺�欑殑瀹瑰樊
- Point2D.Double p1, p2;//neighbour bound vertices
- Point2D.Double p = point; //褰撳墠鐐�
-
- p1 = pts.get(0);//left vertex
- for(int i = 1; i <= N; ++i){//check all rays
- if(p.equals(p1)){
- return boundOrVertex;//p is an vertex
- }
-
- p2 = pts.get(i % N);
- if(p.x < Math.min(p1.x, p2.x) || p.x > Math.max(p1.x, p2.x)){
- p1 = p2;
- continue;
- }
-
- if(p.x > Math.min(p1.x, p2.x) && p.x < Math.max(p1.x, p2.x)){
- if(p.y <= Math.max(p1.y, p2.y)){
- if(p1.x == p2.x && p.y >= Math.min(p1.y, p2.y)){
- return boundOrVertex;
- }
-
- if(p1.y == p2.y){
- if(p1.y == p.y){
- return boundOrVertex;
- }else{//before ray
- ++intersectCount;
- }
- }else{
- double xinters = (p.x - p1.x) * (p2.y - p1.y) / (p2.x - p1.x) + p1.y;
- if(Math.abs(p.y - xinters) < precision){
- return boundOrVertex;
- }
-
- if(p.y < xinters){
- ++intersectCount;
- }
- }
- }
- }else{
- if(p.x == p2.x && p.y <= p2.y){
- Point2D.Double p3 = pts.get((i+1) % N);
- if(p.x >= Math.min(p1.x, p3.x) && p.x <= Math.max(p1.x, p3.x)){
- ++intersectCount;
- }else{
- intersectCount += 2;
- }
- }
- }
- p1 = p2;
- }
-
- if(intersectCount % 2 == 0){//鍋舵暟鍦ㄥ杈瑰舰澶�
- return false;
- } else { //濂囨暟鍦ㄥ杈瑰舰鍐�
- return true;
- }
- }
-
-}
diff --git a/ard-work/src/main/resources/mapper/dispatch/ArdDispatchPoliceMapper.xml b/ard-work/src/main/resources/mapper/dispatch/ArdDispatchPoliceMapper.xml
index 90d8a53..fffe942 100644
--- a/ard-work/src/main/resources/mapper/dispatch/ArdDispatchPoliceMapper.xml
+++ b/ard-work/src/main/resources/mapper/dispatch/ArdDispatchPoliceMapper.xml
@@ -16,8 +16,16 @@
<result property="createTime" column="create_time"/>
<result property="updateBy" column="update_by"/>
<result property="updateTime" column="update_time"/>
- <collection property="sysUserList" javaType="java.util.List" resultMap="SysUserListResult"/>
+ <!-- 瀛愭煡璇紝鍏宠仈 ard_dispatch_police_user 琛� -->
+ <collection property="sysUserList" ofType="java.util.List" select="getSysUserListByMainTableId" column="id"/>
</resultMap>
+ <select id="getSysUserListByMainTableId" resultType="SysUser">
+ SELECT u.*
+ FROM ard_dispatch_police_user b
+ left join sys_user u on b.user_id = u.user_id
+ WHERE dispatch_id = #{id}
+ </select>
+
<resultMap id="ArdDispatchPoliceArdDispatchPoliceUserResult" type="ArdDispatchPolice"
extends="ArdDispatchPoliceResult">
@@ -32,23 +40,18 @@
</resultMap>
<sql id="selectArdDispatchPoliceVo">
- SELECT adp.ID,
- adp.NAME,
- adp.text,
- adp.longitude,
- adp.latitude,
- adp.dept_id,
- adp.user_id,
- adp.create_by,
- adp.create_time,
- adp.update_by,
- adp.update_time,
- u.user_id as sub_user_id,
- u.nick_name as sub_nick_name,
- u.dept_id as sub_dept_id
- FROM ard_dispatch_police adp
- left join ard_dispatch_police_user b on b.dispatch_id = adp.id
- left join sys_user u on b.user_id = u.user_id
+ SELECT ID,
+ NAME,
+ text,
+ longitude,
+ latitude,
+ dept_id,
+ user_id,
+ create_by,
+ create_time,
+ update_by,
+ update_time
+ FROM ard_dispatch_police
</sql>
<select id="selectArdDispatchPoliceList" parameterType="ArdDispatchPolice" resultMap="ArdDispatchPoliceResult">
@@ -75,9 +78,9 @@
a.create_time,
a.update_by,
a.update_time,
- b.user_id as sub_user_id,
- b.nick_name as sub_nick_name,
- b.dept_id as sub_dept_id
+ b.user_id as sub_user_id,
+ b.nick_name as sub_nick_name,
+ b.dept_id as sub_dept_id
from ard_dispatch_police a
left join ard_dispatch_police_user b on b.dispatch_id = a.id
where a.id = #{id}
diff --git a/ruoyi-quartz/src/main/java/com/ruoyi/quartz/task/MinioTask.java b/ruoyi-quartz/src/main/java/com/ruoyi/quartz/task/MinioTask.java
index 69ea287..7a8ef64 100644
--- a/ruoyi-quartz/src/main/java/com/ruoyi/quartz/task/MinioTask.java
+++ b/ruoyi-quartz/src/main/java/com/ruoyi/quartz/task/MinioTask.java
@@ -1,11 +1,10 @@
package com.ruoyi.quartz.task;
-import com.ruoyi.storage.minio.utils.MinioUtils;
+import com.ruoyi.utils.minio.MinioUtil;
import io.minio.Result;
import io.minio.messages.Item;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component;
-
import javax.annotation.Resource;
import java.text.SimpleDateFormat;
import java.time.ZoneId;
@@ -22,8 +21,6 @@
@Component("MinioTask")
@Slf4j(topic = "minio")
public class MinioTask {
- @Resource
- MinioUtils minioUtil;
public void delHistoryTask(Integer saveDays) {
log.debug("鎵ц鍘嗗彶鏁版嵁鍒犻櫎");
@@ -33,7 +30,7 @@
buckets.add("pic");
buckets.add("record");
for (String name : buckets) {
- Iterable<Result<Item>> listObjectsPic = minioUtil.getObjectsByBucket(name);
+ Iterable<Result<Item>> listObjectsPic = MinioUtil.getObjectsByBucket(name);
for (Result<Item> result : listObjectsPic) {
Item item = result.get();
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss").withZone(ZoneId.of("Asia/Shanghai"));
@@ -51,7 +48,7 @@
log.debug("objectTime : " + objectTime);
log.debug("expireTime : " + expireTime);
log.debug("objectTime 鏃堕棿鍦� expireTime 涔嬪墠,鎵ц鍒犻櫎");
- boolean b = minioUtil.removeObject(name, item.objectName());
+ boolean b = MinioUtil.removeObject(name, item.objectName());
if (b) {
log.debug("鎴愬姛鍒犻櫎杩囨湡鏁版嵁锛�" + item.objectName() + "---" + item.lastModified());
}
--
Gitblit v1.9.3