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())) { 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); } } 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); 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(); ard-work/src/main/java/com/ruoyi/device/hiksdk/sdk/HCNetSDK.java
ÎļþÃû´Ó ard-work/src/main/java/com/ruoyi/device/hiksdk/util/hikSdkUtil/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; ard-work/src/main/java/com/ruoyi/device/hiksdk/sdk/HIKSDKStructure.java
ÎļþÃû´Ó ard-work/src/main/java/com/ruoyi/device/hiksdk/util/hikSdkUtil/HIKSDKStructure.java ÐÞ¸Ä @@ -1,4 +1,4 @@ package com.ruoyi.device.hiksdk.util.hikSdkUtil; package com.ruoyi.device.hiksdk.sdk; import com.sun.jna.Structure; ard-work/src/main/java/com/ruoyi/device/hiksdk/sdk/LoginResultCallBack.java
ÎļþÃû´Ó ard-work/src/main/java/com/ruoyi/device/hiksdk/util/hikSdkUtil/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; 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; ard-work/src/main/java/com/ruoyi/device/hiksdk/util/hikSdkUtil/GisUtil.java
ÎļþÒÑɾ³ý 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; 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; 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; 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); 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; ard-work/src/main/java/com/ruoyi/storage/minio/utils/MinioConfig.java
ÎļþÒÑɾ³ý ard-work/src/main/java/com/ruoyi/storage/minio/utils/MinioService.java
ÎļþÒÑɾ³ý 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); 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(); } /** * 计ç®ä»fromå°toæ¹åçç´çº¿ä¸æ£åæ¹åå¤¹è§ * * @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; //妿ç¹ä½äºå¤è¾¹å½¢çé¡¶ç¹æè¾¹ä¸ï¼ä¹ç®åç¹å¨å¤è¾¹å½¢å ï¼ç´æ¥è¿åtrue 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)); } } ard-work/src/main/java/com/ruoyi/utils/gis/Point.java
ÎļþÃû´Ó ard-work/src/main/java/com/ruoyi/utils/tools/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; ard-work/src/main/java/com/ruoyi/utils/image/WaterMarkUtil.java
ÎļþÃû´Ó ard-work/src/main/java/com/ruoyi/device/hiksdk/util/imageUtil/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; 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("åå§åminioé ç½®"+"ã"+endpoint+"("+accessKey+"/"+secretKey+")ã"); return new MinioUtil(endpoint,accessKey,secretKey); } } ard-work/src/main/java/com/ruoyi/utils/minio/MinioUtil.java
ÎļþÃû´Ó ard-work/src/main/java/com/ruoyi/storage/minio/utils/MinioUtils.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 @@ * çæä¸ä¸ªGET请æ±ç带æå¤±ææ¶é´çåäº«é¾æ¥ã * å¤±ææ¶é´é»è®¤æ¯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 @@ /** * è·åæä¸ªæ¡¶ä¸æä¸ªå¯¹è±¡çURL * * @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 @@ /** * ä¸ä¼ 对象,ç¨multipartFileåç§°ä½ä¸ºå¯¹è±¡å * * @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; } } } ard-work/src/main/java/com/ruoyi/utils/process/CmdUtils.java
ÎļþÃû´Ó ard-work/src/main/java/com/ruoyi/utils/tools/CmdUtils.java ÐÞ¸Ä @@ -1,4 +1,4 @@ package com.ruoyi.utils.tools; package com.ruoyi.utils.process; import lombok.extern.slf4j.Slf4j; ard-work/src/main/java/com/ruoyi/utils/tools/GisTool.java
ÎļþÒÑɾ³ý 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} 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()); }