From b61c4537a78d58412ef7ccd6e2c30152d807c5b7 Mon Sep 17 00:00:00 2001
From: zhangnaisong <2434969829@qq.com>
Date: 星期一, 29 七月 2024 11:04:54 +0800
Subject: [PATCH] 电磁锁密码查询去除上一组密码修改提交
---
ard-work/src/main/java/com/ruoyi/sy/service/impl/ArdTankAbnormalParkAlarmServiceImpl.java | 173 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 171 insertions(+), 2 deletions(-)
diff --git a/ard-work/src/main/java/com/ruoyi/sy/service/impl/ArdTankAbnormalParkAlarmServiceImpl.java b/ard-work/src/main/java/com/ruoyi/sy/service/impl/ArdTankAbnormalParkAlarmServiceImpl.java
index c30caca..5cc3611 100644
--- a/ard-work/src/main/java/com/ruoyi/sy/service/impl/ArdTankAbnormalParkAlarmServiceImpl.java
+++ b/ard-work/src/main/java/com/ruoyi/sy/service/impl/ArdTankAbnormalParkAlarmServiceImpl.java
@@ -4,6 +4,7 @@
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.*;
+import java.util.stream.Collectors;
import com.alibaba.fastjson.JSON;
import com.ruoyi.common.core.domain.entity.SysConfig;
@@ -11,8 +12,11 @@
import com.ruoyi.common.core.domain.entity.SysUser;
import com.ruoyi.common.utils.uuid.IdUtils;
import com.ruoyi.sy.domain.ArdSyCar;
+import com.ruoyi.sy.domain.ArdTankLoadLog;
import com.ruoyi.sy.domain.ArdTankWall;
+import com.ruoyi.sy.gps31.PositionContainer;
import com.ruoyi.sy.mapper.ArdSyCarMapper;
+import com.ruoyi.sy.mapper.ArdTankLoadLogMapper;
import com.ruoyi.sy.mapper.ArdTankWallMapper;
import com.ruoyi.system.mapper.SysConfigMapper;
import com.ruoyi.system.mapper.SysDeptMapper;
@@ -58,6 +62,9 @@
@Resource
private SysUserMapper sysUserMapper;
+ @Resource
+ private ArdTankLoadLogMapper ardTankLoadLogMapper;
+
private SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
/**
@@ -88,7 +95,7 @@
ardTankAbnormalParkAlarm.setId(IdUtils.simpleUUID());
return ardTankAbnormalParkAlarmMapper.insertArdTankAbnormalParkAlarm(ardTankAbnormalParkAlarm);
}*/
- @Override
+ /*@Override
public int insertArdTankAbnormalParkAlarm(Map<String,Object> gpsMap) {
if(((Number)gpsMap.get("speed")).intValue() != 0){//閫熷害涓嶄负0锛屼笉鏄紓甯稿仠杞�
int result = ardTankAbnormalParkAlarmMapper.deleteArdTankAbnormalParkAlarmByCarId((String)gpsMap.get("carId"));
@@ -176,6 +183,163 @@
}
}
}
+ }*/
+
+ @Override
+ public int insertArdTankAbnormalParkAlarm(Map<String,Object> gpsMap) {
+ ArdSyCar ardSyCarResult = ardSyCarMapper.getArdSyTankCarByCarId((String)gpsMap.get("carId"));
+ if(ardSyCarResult == null){//娌℃湁鍒嗛厤鏉冮檺鎴栨病鏈夋寕鎺ョ數纾侀攣锛屼笉鏄綈杞�
+ PositionContainer.getTankCarParkingAlarmTHread().remove((String)gpsMap.get("carId"));
+ return 0;
+ }
+
+ List<ArdTankWall> ardTankWallResult = ardTankWallMapper.getDistinctArdTankWallByCarId((String)gpsMap.get("carId"));//鍘婚噸鏌ヨ杞﹁締鎸傛帴鐨勭數纾侀攣鎸傛帴鐨勭數瀛愬洿鏍�
+ if(ardTankWallResult.isEmpty()){//娌℃湁鎸傛帴鐢靛瓙鍥存爮锛屼笉娑夊強鎶ヨ
+ PositionContainer.getTankCarParkingAlarmTHread().remove((String)gpsMap.get("carId"));
+ return 0;
+ }
+
+ if(((Number)gpsMap.get("speed")).intValue() != 0){//閫熷害涓嶄负0锛屼笉鏄紓甯稿仠杞�
+ /*int result = ardTankAbnormalParkAlarmMapper.deleteArdTankAbnormalParkAlarmByCarIdAndLoadEndTimeIsNull((String)gpsMap.get("carId"));
+ PositionContainer.getTankCarParkingAlarmTHread().remove((String)gpsMap.get("carId"));
+ return result;*/
+ //鏌ョ湅鏄惁杩涘叆杩囪娌圭偣
+ List<ArdTankLoadLog> ardTankLoadLogResult = ardTankLoadLogMapper.selectArdTankLoadLogByCarIdAndEndTimeIsNull((String)gpsMap.get("carId"));
+ if(!ardTankLoadLogResult.isEmpty()){
+ Integer loadOilInterval = 5;//榛樿鏃堕棿涓�5min
+ SysConfig sysConfig = sysConfigMapper.checkConfigKeyUnique("loadOilInterval");//鏌ヨ鏃堕棿闂撮殧
+ if(sysConfig != null){
+ loadOilInterval = Integer.parseInt(sysConfig.getConfigValue());
+ }
+ Date endLoadDate = new Date();
+ for(ArdTankLoadLog ardTankLoadLog : ardTankLoadLogResult){
+ Date beginLoadDate = null;
+ try {
+ beginLoadDate = this.sdf.parse(ardTankLoadLog.getBeginTime());
+ } catch (ParseException e) {
+ e.printStackTrace();
+ PositionContainer.getTankCarParkingAlarmTHread().remove((String)gpsMap.get("carId"));
+ return 0;
+ }
+ if(endLoadDate.getTime() - beginLoadDate.getTime() >= loadOilInterval * 60 * 1000) {//褰撳墠鏃堕棿瓒呰繃瑁呮补鏃堕棿璁惧畾闃堝��
+ ardTankLoadLog.setEndTime(this.sdf.format(endLoadDate));
+ ardTankLoadLogMapper.updateArdTankLoadLog(ardTankLoadLog);
+ }else{
+ ardTankLoadLogMapper.deleteArdTankLoadLogById(ardTankLoadLog.getId());
+ }
+
+ }
+ }
+ int result = ardTankAbnormalParkAlarmMapper.deleteArdTankAbnormalParkAlarmByCarIdAndEndTimeIsNull((String)gpsMap.get("carId"));
+ PositionContainer.getTankCarParkingAlarmTHread().remove((String)gpsMap.get("carId"));
+ return result;
+ }else {//閫熷害涓�0锛岃�冭檻寮傚父鍋滆溅
+ //鑾峰彇瑁呮补鐐�
+ List<ArdTankWall> loadOilArdTankWallResult = ardTankWallResult.stream().filter(ardTankWall -> ardTankWall.getWallType().equals("瑁呮补鐐�")).collect(Collectors.toList());
+ //鑾峰彇鍗告补鐐瑰強杞﹀簱
+ List<ArdTankWall> unloadOilOrGarageArdTankWallResult = ardTankWallResult.stream().filter(ardTankWall -> !ardTankWall.getWallType().equals("瑁呮补鐐�")).collect(Collectors.toList());
+ //杞﹁締褰撳墠浣嶇疆
+ Point2D.Double point = new Point2D.Double(Double.parseDouble(String.valueOf((Number)gpsMap.get("lng"))), Double.parseDouble(String.valueOf((Number)gpsMap.get("lat"))));
+ List<Point2D.Double> pts = new ArrayList<Point2D.Double>();
+
+ for(ArdTankWall ardTankWall : loadOilArdTankWallResult){//鍦ㄤ换鎰忚娌圭偣鐢靛瓙鍥存爮鍐咃紝璁″叆瑁呮补璁板綍
+ pts.clear();
+ String[] wallpoiArro = ardTankWall.getWallPoi().split(",");
+ for (int j = 0; j < wallpoiArro.length; j = j + 3) {//鏋勫缓澶氳竟褰�
+ pts.add(new Point2D.Double(Double.parseDouble(wallpoiArro[j]), Double.parseDouble(wallpoiArro[j+1])));
+ }
+ if(GeoTools.IsPtInPoly(point, pts)){
+ ArdTankLoadLog ardTankLoadLogResult = ardTankLoadLogMapper.selectArdTankLoadLogByCarIdAndWallIdAndEndTimeIsNull((String)gpsMap.get("carId"),ardTankWall.getId());
+ if(ardTankLoadLogResult == null){
+ ArdTankLoadLog ardTankLoadLog = new ArdTankLoadLog();
+ ardTankLoadLog.setId(IdUtils.simpleUUID());
+ ardTankLoadLog.setCarId((String)gpsMap.get("carId"));
+ ardTankLoadLog.setWallId(ardTankWall.getId());
+ ardTankLoadLog.setBeginTime(sdf.format(new Date()));
+ PositionContainer.getTankCarParkingAlarmTHread().remove((String)gpsMap.get("carId"));
+ return ardTankLoadLogMapper.insertArdTankLoadLog(ardTankLoadLog);
+ }
+ }
+ }
+
+ for(ArdTankWall ardTankWall : unloadOilOrGarageArdTankWallResult){//鍦ㄤ换鎰忓嵏娌圭偣鎴栬溅搴撶數瀛愬洿鏍忓唴
+ pts.clear();
+ String[] wallpoiArro = ardTankWall.getWallPoi().split(",");
+ for (int j = 0; j < wallpoiArro.length; j = j + 3) {//鏋勫缓澶氳竟褰�
+ pts.add(new Point2D.Double(Double.parseDouble(wallpoiArro[j]), Double.parseDouble(wallpoiArro[j+1])));
+ }
+ if(GeoTools.IsPtInPoly(point, pts)){
+ PositionContainer.getTankCarParkingAlarmTHread().remove((String)gpsMap.get("carId"));
+ return ardTankLoadLogMapper.deleteArdTankLoadLogByCarId((String)gpsMap.get("carId"));//杩涘叆鍗告补鐐规垨杞﹀簱灏卞垹闄よ娌硅褰�
+ }
+ }
+ //鎶ヨ閫昏緫
+ List<ArdTankLoadLog> ardTankLoadLogResult = ardTankLoadLogMapper.selectArdTankLoadLogByCarIdAndEndTimeIsNotNull((String)gpsMap.get("carId"));
+ if(!ardTankLoadLogResult.isEmpty()){//涓嶄负绌猴紝鍒欏湪浠绘剰瑁呮补鐐归暱鏈熷仠鐣欒繃
+ List<ArdTankAbnormalParkAlarm> ardTankAbnormalParkAlarmResultList = ardTankAbnormalParkAlarmMapper.selectArdTankAbnormalParkAlarmByCarIdNoEndTime((String)gpsMap.get("carId"));
+ if(!ardTankAbnormalParkAlarmResultList.isEmpty()){//涓嶄负绌猴紝宸叉湁璁板綍
+ for(ArdTankAbnormalParkAlarm ardTankAbnormalParkAlarm : ardTankAbnormalParkAlarmResultList){
+ Integer abnormalParkingInterval = 5;//榛樿鏃堕棿涓�5min
+ SysConfig sysConfig = sysConfigMapper.checkConfigKeyUnique("abnormalParkingInterval");//鏌ヨ鏃堕棿闂撮殧
+ if(sysConfig != null){
+ abnormalParkingInterval = Integer.parseInt(sysConfig.getConfigValue());
+ }
+ Date beginDate = null;
+ try {
+ beginDate = this.sdf.parse(ardTankAbnormalParkAlarm.getBeginTime());
+ } catch (ParseException e) {
+ e.printStackTrace();
+ PositionContainer.getTankCarParkingAlarmTHread().remove((String)gpsMap.get("carId"));
+ return 0;
+ }
+ Date endDate = new Date();
+ if(endDate.getTime() - beginDate.getTime() >= abnormalParkingInterval * 60 * 1000){//褰撳墠鏃堕棿瓒呰繃寮�鍚椂闂磋瀹氶槇鍊�
+ ardTankAbnormalParkAlarm.setEndTime(sdf.format(endDate));
+ //鏍规嵁鏉冮檺鍋氭姤璀ebsocket鎺ㄩ��
+ List<SysDept> sysDeptList = sysDeptMapper.getParentsDeptListByDeptId(Long.parseLong(ardSyCarResult.getDeptId()));
+ List<Long> deptIdList = new ArrayList();
+ for(SysDept sysDept : sysDeptList){
+ deptIdList.add(sysDept.getDeptId());
+ }
+ List<SysUser> sysUserList = sysUserMapper.selectUserByDeptIdList(deptIdList);
+ for(SysUser sysUser : sysUserList){
+ Map<String,Object> map = new HashMap();
+ map.put("carId",ardTankAbnormalParkAlarm.getCarId());
+ map.put("carName",ardTankAbnormalParkAlarm.getCarName());
+ map.put("alarmTime",ardTankAbnormalParkAlarm.getEndTime());
+ map.put("longitude",ardTankAbnormalParkAlarm.getLongitude());
+ map.put("latitude",ardTankAbnormalParkAlarm.getLatitude());
+ map.put("alarmInfo","寮傚父鍋滆溅");
+ Map<String,Map<String,Object>> data = new HashMap();
+ data.put("40001",map);
+ for (String key : ONLINE_USER_SESSIONS.keySet()) {
+ if(key.startsWith(sysUser.getUserId() + "_")){
+ WebSocketUtils.sendMessage(ONLINE_USER_SESSIONS.get(key), JSON.toJSONString(data));
+ }
+ }
+ }
+ PositionContainer.getTankCarParkingAlarmTHread().remove((String)gpsMap.get("carId"));
+ return ardTankAbnormalParkAlarmMapper.updateArdTankAbnormalParkAlarm(ardTankAbnormalParkAlarm);
+ }else{
+ PositionContainer.getTankCarParkingAlarmTHread().remove((String)gpsMap.get("carId"));
+ return 0;
+ }
+ }
+ }else{
+ ArdTankAbnormalParkAlarm ardTankAbnormalParkAlarm = new ArdTankAbnormalParkAlarm();
+ ardTankAbnormalParkAlarm.setId(IdUtils.simpleUUID());
+ ardTankAbnormalParkAlarm.setCarId((String)gpsMap.get("carId"));
+ ardTankAbnormalParkAlarm.setCarName((String)gpsMap.get("carName"));
+ ardTankAbnormalParkAlarm.setLongitude(String.valueOf((Number)gpsMap.get("lng")));
+ ardTankAbnormalParkAlarm.setLatitude(String.valueOf((Number)gpsMap.get("lat")));
+ ardTankAbnormalParkAlarm.setBeginTime(sdf.format(new Date()));
+ PositionContainer.getTankCarParkingAlarmTHread().remove((String)gpsMap.get("carId"));
+ return ardTankAbnormalParkAlarmMapper.insertArdTankAbnormalParkAlarm(ardTankAbnormalParkAlarm);
+ }
+ }
+ PositionContainer.getTankCarParkingAlarmTHread().remove((String)gpsMap.get("carId"));
+ return 0;
+ }
}
/**
@@ -214,6 +378,11 @@
@Override
public int deleteArdTankAbnormalParkAlarmByEndTime() {
int result = ardTankAbnormalParkAlarmMapper.deleteArdTankAbnormalParkAlarmByEndTime();
- return result;
+ try{
+ return result;
+ }finally {
+ ardTankLoadLogMapper.deleteArdTankLoadLogByEndTime();
+ }
+
}
}
--
Gitblit v1.9.3