From a2e85a4911dd285f7a1ac9fde312187aec597198 Mon Sep 17 00:00:00 2001
From: zhangnaisong <2434969829@qq.com>
Date: 星期二, 23 七月 2024 16:34:54 +0800
Subject: [PATCH] 异常停车逻辑修改提交
---
ard-work/src/main/java/com/ruoyi/sy/service/impl/ArdSyCarServiceImpl.java | 206 +++++++++++++++++++++++++++++++++------------------
1 files changed, 133 insertions(+), 73 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 ea18e26..f3d9d50 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
@@ -26,6 +26,7 @@
import com.ruoyi.common.utils.SecurityUtils;
import com.ruoyi.common.utils.uuid.IdUtils;
import com.ruoyi.sy.domain.ArdAccessFence;
+import com.ruoyi.sy.mapper.ArdTankLockMapper;
import com.ruoyi.sy.param.ArdSyCarParam;
import com.ruoyi.sy.vo.ArdSyCarVo;
import com.ruoyi.system.mapper.SysDeptMapper;
@@ -98,6 +99,9 @@
@Resource
private SysDeptMapper sysDeptMapper;
+
+ @Resource
+ private ArdTankLockMapper ardTankLockMapper;
@Value("${minio.endpoint}")
private String minioEndpoint;
@@ -212,7 +216,16 @@
}
}
MinioUtil.removeObjects("sycar", objectNames);
- return ardSyCarMapper.deleteArdSyCarByIds(ids);
+ try{
+ return ardSyCarMapper.deleteArdSyCarByIds(ids);
+ }finally {
+ List<String> carIds = new ArrayList();
+ for(ArdSyCar ardSyCar : result){
+ carIds.add(ardSyCar.getCarId());
+ }
+ ardTankLockMapper.deleteArdTankLockAndWallByCarIds(carIds);
+ }
+
}
/**
@@ -559,17 +572,30 @@
}
for (Map<String, Object> m : carList) {
if (((String) m.get("stateCn")).contains("鍦ㄧ嚎")) {
- online = online + 1;
+ String carId = (String) m.get("carId");
+ ArdSyCar ardSyCarQuery = new ArdSyCar();
+ ardSyCarQuery.setCarId(carId);
+ List<ArdSyCar> ardSyCarList = ardSyCarMapper.selectArdSyCarList(ardSyCarQuery);
+ if(ardSyCarList.size() != 0){
+ online = online + 1;
+ }else{
+ continue;
+ }
} else {
continue;
}
}
-// for (Map<String, Object> m : (List<Map<String, Object>>) result0.get("list")) {
-// if (((String) m.get("teamId")).equals(((String) map.get("teamId")))) {
-// map.put("count", Integer.parseInt((String) m.get("carNum")));
-// }
-// }
- map.put("count", carList.size());
+ List<String> carIdList = new ArrayList();//瀛樻斁杞﹂槦涓嬪叏閮ㄨ溅杈嗕富閿�
+ for(Map<String, Object> carMap : carList){
+ carIdList.add((String) carMap.get("carId"));
+ }
+ //map.put("count", carList.size());
+ if(carIdList.size() == 0){
+ map.put("count", 0);
+ }else{
+ Long count = ardSyCarMapper.getCountByCarIdList(carIdList);
+ map.put("count", count);
+ }
map.put("online", online);
online = 0;
}
@@ -675,29 +701,19 @@
//瀵规瘮鎶婂尮閰嶅埌鐨勬暟鎹坊鍔犲埌list涓�
for (int i = 0; i < list.size(); i++) {
String carId = list.get(i).get("carId");
- Boolean isCar = false;
for (int j = 0; j < carList.size(); j++) {
ArdSyCar ardSyCar = carList.get(j);
if (carId.equals(ardSyCar.getCarId())) {
- /*String url = "";
- if (ardSyCar.getCarPicture() != null) {
- if (!ardSyCar.getCarPicture().equals("")) {
- url = ardSyCar.getCarPicture().split("sycar")[0];
- }
- }*/
list.get(i).put("carModel", this.minioEndpoint + "/" + ardSyCar.getCarModel());//zns
- //m.put("carModel",ardSyCar.getCarModel());
list.get(i).put("carTypeArd", ardSyCar.getCarType());
list.get(i).put("carBrand", ardSyCar.getCarBrand());
list.get(i).put("carPicture", ardSyCar.getCarPicture());
- isCar = true;
+ list.get(i).put("deptId", ardSyCar.getDeptId());
break;
}
}
- if(!isCar){
- list.remove(list.get(i));
- }
}
+ list = list.stream().filter(map -> map.get("deptId") != null).collect(Collectors.toList());
return list;
}
@@ -717,7 +733,12 @@
String passwordMd5 = DigestUtils.md5Hex(password31);
Map<String, Object> result1 = sYClient.logIn(syURL, passwordMd5, username31);
Map<String, Object> result0 = new HashMap();
- result0 = sYClient.getCarGPSTrack(syURL, carId, startTime, endTime, maxSpeed, (String) result1.get("sessionId"));
+ //result0 = sYClient.getCarGPSTrack(syURL, carId, startTime, endTime, maxSpeed, (String) result1.get("sessionId"));
+ try {
+ result0 = getCarGPSTrack(syURL, carId, startTime, endTime, maxSpeed, (String) result1.get("sessionId"));
+ } catch (Exception e) {
+ return Results.error("鏌ヨ鍘嗗彶鏁版嵁鏁伴噺杩囧瀵艰嚧瓒呮椂锛岃缂╁皬鑼冨洿鏌ヨ锛�");
+ }
List<Map<String, Object>> list = (List<Map<String, Object>>) result0.get("list");
if (list.isEmpty()) {
return Results.succeed();
@@ -734,6 +755,37 @@
m.putAll(sgnMap);
}
return Results.succeed(list);
+ }
+ }
+
+ public static Map<String,Object> getCarGPSTrack(String syURL,String carId,String startTime,String endTime,String maxSpeed,String sessionId){
+ OkHttpClient okHttpClient = new OkHttpClient();
+
+ Request request = new Request.Builder()
+ .url(syURL + "/gps-web/api/get_gps_h.jsp?carId=" + carId + "&startTime=" + startTime + "&endTime=" + endTime + "&sessionId=" + sessionId)
+ .build();
+
+ Response response = null;
+ try {
+ response = okHttpClient.newCall(request).execute();
+ } catch (IOException e1) {
+ // TODO Auto-generated catch block
+ e1.printStackTrace();
+ }
+
+ response.headers(); //鍝嶅簲澶�
+
+ ResponseBody responseBody = response.body();
+
+ try {
+ String message = responseBody.string();// 鍝嶅簲浣�
+ Map<String,Object> map = (Map<String, Object>) JSON.parse(message);
+ //System.out.println(message);
+ return map;
+ } catch (IOException e) {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ return new HashMap();
}
}
@@ -1281,62 +1333,70 @@
*/
@Override
public List<Map<String, Object>> getNearCar(SchedulingParam param) {
- Double longitude = param.getLongitude();
- Double latitude = param.getLatitude();
- Integer radius = param.getSealingRadius();
- if (longitude == null && latitude == null) {
- log.debug("鍘熺偣鍧愭爣涓虹┖");
- return null;
- }
- if (radius == null) {
- log.debug("鍗婂緞璺濈涓虹┖");
- return null;
- }
- String userId = SecurityUtils.getUserId();
- ArdSyUser syUser = new ArdSyUser();
- syUser.setSysUserId(userId);
- List<ArdSyUser> ardSyUserList = ardSyUserMapper.selectArdSyUserList(syUser);
- if (ardSyUserList.size() == 0) {
- log.debug("鐢ㄦ埛鏈寕鎺ヤ笁涓�杞﹁締");
- return null;
- }
- ArdSyUser ardSyUser = ardSyUserList.get(0);
- String syUrl = redisCache.getCacheObject("sys_config:syCarPT");
- String passwordMd5 = DigestUtils.md5Hex(ardSyUser.getPassword());
- Map<String, Object> LogInResult = sYClient.logIn(syUrl, passwordMd5, ardSyUser.getUserId());
- String sessionId = (String) LogInResult.get("sessionId");
+ try {
+ Double longitude = param.getLongitude();
+ Double latitude = param.getLatitude();
+ Integer radius = param.getSealingRadius();
+ if (longitude == null && latitude == null) {
+ log.debug("鍘熺偣鍧愭爣涓虹┖");
+ return null;
+ }
+ if (radius == null) {
+ log.debug("鍗婂緞璺濈涓虹┖");
+ return null;
+ }
+ String userId = SecurityUtils.getUserId();
+ ArdSyUser syUser = new ArdSyUser();
+ syUser.setSysUserId(userId);
+ List<ArdSyUser> ardSyUserList = ardSyUserMapper.selectArdSyUserList(syUser);
+ if (ardSyUserList.size() == 0) {
+ log.debug("鐢ㄦ埛鏈寕鎺ヤ笁涓�杞﹁締");
+ return null;
+ }
+ ArdSyUser ardSyUser = ardSyUserList.get(0);
+ String syUrl = redisCache.getCacheObject("sys_config:syCarPT");
+ String passwordMd5 = DigestUtils.md5Hex(ardSyUser.getPassword());
+ Map<String, Object> LogInResult = sYClient.logIn(syUrl, passwordMd5, ardSyUser.getUserId());
+ String sessionId = (String) LogInResult.get("sessionId");
- Map<String, Object> teamList = sYClient.getTeamList(syUrl, ardSyUser.getUserId(), sessionId);
- List<Map<String, Object>> listMap = (List<Map<String, Object>>) teamList.get("list");
- List<Map<String, Object>> allList = new ArrayList<>();
- for (Map<String, Object> team : listMap) {
- String teamId = (String) team.get("teamId");
- Map<String, Object> carListMap = sYClient.getCarList1(syUrl, teamId, ardSyUser.getUserId(), sessionId);
- if (((String) carListMap.get("rspCode")).equals("1")) {
- List<Map<String, Object>> list = (List<Map<String, Object>>) carListMap.get("list");
- allList.addAll(list);
+ Map<String, Object> teamList = sYClient.getTeamList(syUrl, ardSyUser.getUserId(), sessionId);
+ List<Map<String, Object>> listMap = (List<Map<String, Object>>) teamList.get("list");
+ List<Map<String, Object>> allList = new ArrayList<>();
+ for (Map<String, Object> team : listMap) {
+ String teamId = (String) team.get("teamId");
+ Map<String, Object> carListMap = sYClient.getCarList1(syUrl, teamId, ardSyUser.getUserId(), sessionId);
+ if (((String) carListMap.get("rspCode")).equals("1")) {
+ List<Map<String, Object>> list = (List<Map<String, Object>>) carListMap.get("list");
+ allList.addAll(list);
+ }
}
- }
- //杩囨护鍦ㄧ嚎杞﹁締
- List<Map<String, Object>> onlineList = allList.stream()
- .filter(map -> !"绂荤嚎".equals(map.get("stateCn")))
- .collect(Collectors.toList());
- List<Map<String, Object>> filteredList = new ArrayList<>();
- //杩囨护鍗婂緞
- for (Map<String, Object> carMap : onlineList) {
- String carId = (String) carMap.get("carId");
- Map<String, Object> carGPSTrack = sYClient.getCarNearPositionByCarId(syUrl, carId, ardSyUser.getUserId(), sessionId);
- 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 = GisUtil.getDistance( new double[]{longitude,latitude}, new double[]{lng, lat});
- if (distance <= radius) {
- carMap.put("longitude",lng);
- carMap.put("latitude",lat);
- filteredList.add(carMap); // 灏嗘弧瓒虫潯浠剁殑杞﹁締娣诲姞鍒扮瓫閫夊垪琛ㄤ腑
+ //杩囨护鍦ㄧ嚎杞﹁締
+ List<Map<String, Object>> onlineList = allList.stream()
+ .filter(map -> !"绂荤嚎".equals(map.get("stateCn")))
+ .collect(Collectors.toList());
+ List<Map<String, Object>> filteredList = new ArrayList<>();
+ //杩囨护鍗婂緞
+ for (Map<String, Object> carMap : onlineList) {
+ String carId = (String) carMap.get("carId");
+ Map<String, Object> carGPSTrack = sYClient.getCarNearPositionByCarId(syUrl, carId, ardSyUser.getUserId(), sessionId);
+ List<Map<String, Object>> carGPSMap = (List<Map<String, Object>>) carGPSTrack.get("list");
+ if(carGPSMap.size()>0) {
+ Double lng = Double.valueOf((String) carGPSMap.get(0).get("lng"));
+ Double lat = Double.valueOf((String) carGPSMap.get(0).get("lat"));
+ double distance = GisUtil.getDistance(new double[]{longitude, latitude}, new double[]{lng, lat});
+ if (distance <= radius) {
+ carMap.put("longitude", lng);
+ carMap.put("latitude", lat);
+ filteredList.add(carMap); // 灏嗘弧瓒虫潯浠剁殑杞﹁締娣诲姞鍒扮瓫閫夊垪琛ㄤ腑
+ }
+ }
}
+ return filteredList;
+ }catch (Exception e)
+ {
+ log.error("鑾峰彇闄勮繎鑼冨洿鍐呯殑杞﹁締淇℃伅寮傚父:"+e.getMessage());
+ return null;
}
- return filteredList;
}
/**
* 鑾峰彇鑼冨洿鍐呯殑杞﹁締淇℃伅(澶氳竟褰�)
--
Gitblit v1.9.3