From 8a2bfef1ebf3a1e24f770d3481ff82856f14d9e0 Mon Sep 17 00:00:00 2001 From: aijinhui <aijinhui> Date: 星期五, 24 十一月 2023 15:47:42 +0800 Subject: [PATCH] 设备运行状态 --- ard-work/src/main/java/com/ruoyi/sy/service/impl/ArdSyCarServiceImpl.java | 146 ++++++++++++++++++++++++++++++++++++------------ 1 files changed, 108 insertions(+), 38 deletions(-) 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 51d7958..c5d4c27 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 @@ -1,8 +1,9 @@ package com.ruoyi.sy.service.impl; -import java.awt.geom.Point2D; import java.io.IOException; import java.io.InputStream; +import java.io.UnsupportedEncodingException; +import java.net.URLEncoder; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.*; @@ -18,25 +19,23 @@ 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.sy.domain.ArdAccessFence; +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.device.hiksdk.config.MinioClientSingleton; -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; -import com.ruoyi.system.domain.SysConfig; +import com.ruoyi.common.core.domain.entity.SysConfig; import com.ruoyi.system.mapper.SysConfigMapper; import com.ruoyi.system.mapper.SysUserMapper; import com.ruoyi.utils.forest.SYClient; import com.ruoyi.utils.result.Results; import io.minio.GetPresignedObjectUrlArgs; -import io.minio.ListObjectsArgs; -import io.minio.PutObjectArgs; import io.minio.Result; import io.minio.http.Method; import io.minio.messages.Item; @@ -46,6 +45,7 @@ import okhttp3.Response; import okhttp3.ResponseBody; import org.apache.commons.codec.digest.DigestUtils; +import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; import com.ruoyi.sy.mapper.ArdSyCarMapper; import com.ruoyi.sy.domain.ArdSyCar; @@ -83,6 +83,9 @@ RedisCache redisCache; @Resource private ArdSyCarDayMapper ardSyCarDayMapper; + + @Value("${minio.endpoint}") + private String minioEndpoint; private Map<Integer, Map<String, String>> logInMap = new HashMap(); @@ -147,7 +150,7 @@ objectNames.add(ardSyCar.getCarPicture().split("/sycar/")[1]); } } - MinioUtils.removeObjects("sycar", objectNames); + MinioUtil.removeObjects("sycar", objectNames); return ardSyCarMapper.deleteArdSyCarByIds(ids); } @@ -264,17 +267,19 @@ @Override public List<Map<String, String>> getAllCarModel() { - boolean exsit = MinioUtils.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 = MinioClientSingleton.getMinioClient().listObjects(listObjectsArgs); + // ListObjectsArgs listObjectsArgs = ListObjectsArgs.builder().prefix("carmodel/").bucket("sycar").build(); + Iterable<Result<Item>> myObjects = MinioUtil.getObjectsByBucket("sycar","carmodel"); for (Result<Item> result : myObjects) { Item item = result.get(); Map<String, String> map = new HashMap(); + String[] strArr = item.objectName().split("/"); + map.put("carType", strArr[1]); map.put("carModel", "sycar/" + item.objectName()); - switch (item.objectName()) { + /*switch (item.objectName()) { case "carmodel/aodi.glb": map.put("carType", "濂ヨ开"); break; @@ -313,11 +318,12 @@ break; default: break; - } + }*/ listObjetcName.add(map); } return listObjetcName; } catch (Exception ex) { + ex.printStackTrace(); //log.error("minio鑾峰彇妗朵笅瀵硅薄寮傚父锛�" + ex.getMessage()); } } @@ -332,16 +338,16 @@ if (ardSyCarr.getCarPicture() != null || !ardSyCarr.getCarPicture().equals("")) { String objectName = ardSyCarr.getCarPicture().split("/sycar/")[1]; objectNames.add(objectName); - MinioUtils.removeObjects("sycar", objectNames); + MinioUtil.removeObjects("sycar", objectNames); } } //鍒ゆ柇鏂囦欢鏄惁涓虹┖ if (null == carPicture || 0 == carPicture.getSize()) { return ""; } - boolean exsit = MinioUtils.exitsBucket("sycar"); + boolean exsit = MinioUtil.exitsBucket("sycar"); if (!exsit) { - boolean bucket = MinioUtils.createBucket("sycar"); + boolean bucket = MinioUtil.createBucket("sycar"); } //鏂囦欢鍚� String originalFilename = carPicture.getOriginalFilename(); @@ -350,14 +356,15 @@ try { InputStream inputStream = carPicture.getInputStream(); /*涓婁紶瀵硅薄*/ - PutObjectArgs putObjectArgs = PutObjectArgs - .builder() - .bucket("sycar") - .object(fileName) - .stream(inputStream, carPicture.getSize(), -1) - .contentType(carPicture.getContentType()) - .build(); - MinioClientSingleton.getMinioClient().putObject(putObjectArgs); +// PutObjectArgs putObjectArgs = PutObjectArgs +// .builder() +// .bucket("sycar") +// .object(fileName) +// .stream(inputStream, carPicture.getSize(), -1) +// .contentType(carPicture.getContentType()) +// .build(); +// MinioConfig.getMinioClient().putObject(putObjectArgs); + MinioUtil.uploadObject("sycar",fileName,inputStream,carPicture.getSize(),carPicture.getContentType()); inputStream.close(); /*鑾峰彇url*/ GetPresignedObjectUrlArgs getPresignedObjectUrlArgs = GetPresignedObjectUrlArgs @@ -366,8 +373,8 @@ .object(fileName) .method(Method.GET) .build(); - String presignedObjectUrl = MinioClientSingleton.getMinioClient().getPresignedObjectUrl(getPresignedObjectUrlArgs); - String ObjectUrl = presignedObjectUrl.substring(0, presignedObjectUrl.indexOf("?")); + //String presignedObjectUrl = MinioConfig.getMinioClient().getPresignedObjectUrl(getPresignedObjectUrlArgs); + String ObjectUrl = MinioUtil.getBucketObjectUrl("sycar", fileName); if (id != null && !id.equals("")) {//id涓洪潪蹇呰 ArdSyCar ardSyCar = new ArdSyCar(); ardSyCar.setId(id); @@ -408,8 +415,9 @@ if (result != null) { if (result.get("carPicture") != null) { if (!((String) result.get("carPicture")).equals("")) { - String url = ((String) result.get("carPicture")).split("sycar")[0]; - String carModel = url + (String) result.get("carModel"); + /*String url = ((String) result.get("carPicture")).split("sycar")[0]; + String carModel = url + (String) result.get("carModel");*/ + String carModel = this.minioEndpoint + "/" + (String) result.get("carModel"); result.put("carModel", carModel); } } @@ -620,13 +628,13 @@ for (int i = 0; i < carList.size(); i++) { ArdSyCar ardSyCar = carList.get(i); if (carId.equals(ardSyCar.getCarId())) { - String url = ""; + /*String url = ""; if (ardSyCar.getCarPicture() != null) { if (!ardSyCar.getCarPicture().equals("")) { url = ardSyCar.getCarPicture().split("sycar")[0]; } - } - m.put("carModel", url + ardSyCar.getCarModel());//zns + }*/ + m.put("carModel", this.minioEndpoint + "/" + ardSyCar.getCarModel());//zns //m.put("carModel",ardSyCar.getCarModel()); m.put("carTypeArd", ardSyCar.getCarType()); m.put("carBrand", ardSyCar.getCarBrand()); @@ -774,7 +782,7 @@ } @Override - public Results getCarGPSBycarId(String usersId, String carId, String syURL, ArdSyUser ardSyUser) { + public Map<String, Object> getCarGPSBycarId(String usersId, String carId, String syURL, ArdSyUser ardSyUser) { Map<String, String> result = logInMap.get(Integer.parseInt(usersId)); //31鐢ㄦ埛鍚嶅瘑鐮� String username31 = ardSyUser.getUserId(); @@ -784,10 +792,58 @@ result = new HashMap(); result.put("userId", username31); result.put("sessionId", (String) result1.get("sessionId")); - Map<String, Object> result0 = new HashMap(); - result0 = sYClient.getCarNearPositionByCarId(syURL, carId, result.get("userId"), result.get("sessionId")); - return Results.succeed(result0); + return sYClient.getCarNearPositionByCarId(syURL, carId, result.get("userId"), result.get("sessionId")); } + + @Override + public Map<String, Object> getCarPicture(String carId, String syURL, String sessionId) { + return sYClient.getCarPicture(syURL, carId, sessionId); + } + + @Override + public String getSessionId(String syURL,ArdSyUser ardSyUser) { + String username31 = ardSyUser.getUserId(); + String password31 = ardSyUser.getPassword(); + String passwordMd5 = DigestUtils.md5Hex(password31); + System.out.println(passwordMd5); + Map<String, Object> result1 = sYClient.logIn(syURL, passwordMd5, username31); + return (String) result1.get("sessionId"); + } + + @Override + public Map<String, Object> sendCmd(String userId,String syURL, String sessionId, String carId, List<String> channelList) throws UnsupportedEncodingException { +// for (int i = 0; i < channelList.size(); i++) { + Map<String,String> params = new HashMap(); + params.put("channel", channelList.get(1));//閫夋嫨閫氶亾1 + params.put("interval", "0");//姣忛殧0s鐓т竴娆� + params.put("photoNum", "1");//鐓�1寮� + params.put("action", "0");//涓婁紶妯″紡 + String paramsStr = com.alibaba.fastjson2.JSON.toJSONString(params); + paramsStr = URLEncoder.encode(paramsStr,"UTF-8"); + System.out.println("鎷嶇収鍙傛暟锛�"+paramsStr); + return sYClient.sendCmd(syURL,userId,carId,301,"MediaTake",paramsStr,sessionId); +// } +// return sendCmdMap; + } + + @Override + public Map<String, Object> getPhoto(String syURL, String carId, String sessionId,String startTime) { + SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmss"); + String endTime = sdf.format(new Date()); + System.out.println("寮�濮嬫椂闂达細"+startTime+" 缁撴潫鏃堕棿锛�"+endTime); + return sYClient.getPhoto(syURL,carId,startTime,endTime,sessionId); + } + + @Override + public Map<String, Object> getVideo(String syURL,String carId,ArdSyUser ardSyUser) { + //31鐢ㄦ埛鍚嶅瘑鐮� + String username = ardSyUser.getUserId(); + String password31 = ardSyUser.getPassword(); + String password = DigestUtils.md5Hex(password31); +// Map<String, Object> result1 = sYClient.logIn(syURL, passwordMd5, username31); + return sYClient.getVideo(syURL,username,password,"榛慐12401",1); + } + @Override public Results chaseCarByCarId(String usersId, String carId, String cycle) { @@ -1085,7 +1141,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); @@ -1144,7 +1200,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); @@ -1158,4 +1214,18 @@ } return filteredList; } + + @Override + public List<ArdSyCar> all() { + QueryWrapper<ArdSyCar> queryWrapper = new QueryWrapper<>(); + queryWrapper.ne("reserved_1",""); + return ardSyCarMapper.selectList(queryWrapper); + } + + @Override + public Map<String, Object> getAlarmHPfmCountDetail(String sessionId, String usersId, String carId, String startTime, String endTime, String syURL) { +// System.out.println("sessionId------"+sessionId+",usersId-----"+usersId+",carId-----"+carId+",startTime----"+startTime+",endTime----"+endTime+",syURL----"+syURL); + return sYClient.getAlarmHPfmCountDetail(syURL,carId,sessionId,startTime,endTime); + } + } -- Gitblit v1.9.3