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/mapper/ArdTankAbnormalParkAlarmMapper.java | 6 ard-work/src/main/java/com/ruoyi/sy/gps31/PositionContainer.java | 10 + ard-work/src/main/resources/mapper/sy/ArdTankAbnormalParkAlarmMapper.xml | 8 ard-work/src/main/resources/mapper/sy/ArdTankWallMapper.xml | 7 ard-work/src/main/java/com/ruoyi/sy/domain/ArdTankLoadLog.java | 93 +++++++++++ ard-work/src/main/java/com/ruoyi/sy/mapper/ArdTankLoadLogMapper.java | 70 ++++++++ ard-work/src/main/java/com/ruoyi/sy/service/impl/ArdTankAbnormalParkAlarmServiceImpl.java | 170 ++++++++++++++++++++ ard-work/src/main/java/com/ruoyi/sy/gps31/PushClientImplPosition.java | 17 + ard-work/src/main/java/com/ruoyi/sy/service/IArdTankAbnormalParkAlarmService.java | 2 ard-work/src/main/resources/mapper/sy/ArdTankLoadLogMapper.xml | 90 +++++++++++ 10 files changed, 452 insertions(+), 21 deletions(-) diff --git a/ard-work/src/main/java/com/ruoyi/sy/domain/ArdTankLoadLog.java b/ard-work/src/main/java/com/ruoyi/sy/domain/ArdTankLoadLog.java new file mode 100644 index 0000000..ae3b5b4 --- /dev/null +++ b/ard-work/src/main/java/com/ruoyi/sy/domain/ArdTankLoadLog.java @@ -0,0 +1,93 @@ +package com.ruoyi.sy.domain; + +import org.apache.commons.lang3.builder.ToStringBuilder; +import org.apache.commons.lang3.builder.ToStringStyle; +import com.ruoyi.common.annotation.Excel; +import com.ruoyi.common.core.domain.BaseEntity; + +/** + * 缃愯溅杩涘叆鍗告补鐐硅褰曞璞� ard_tank_load_log + * + * @author ard + * @date 2024-07-23 + */ +public class ArdTankLoadLog extends BaseEntity +{ + private static final long serialVersionUID = 1L; + + /** 涓婚敭 */ + private String id; + + /** 杞﹁締涓婚敭 */ + @Excel(name = "杞﹁締涓婚敭") + private String carId; + + /** 鍥存爮涓婚敭 */ + @Excel(name = "鍥存爮涓婚敭") + private String wallId; + + /** 寮�濮嬫椂闂� */ + @Excel(name = "寮�濮嬫椂闂�") + private String beginTime; + + /** 缁撴潫鏃堕棿 */ + @Excel(name = "缁撴潫鏃堕棿") + private String endTime; + + public void setId(String id) + { + this.id = id; + } + + public String getId() + { + return id; + } + public void setCarId(String carId) + { + this.carId = carId; + } + + public String getCarId() + { + return carId; + } + public void setWallId(String wallId) + { + this.wallId = wallId; + } + + public String getWallId() + { + return wallId; + } + public void setBeginTime(String beginTime) + { + this.beginTime = beginTime; + } + + public String getBeginTime() + { + return beginTime; + } + public void setEndTime(String endTime) + { + this.endTime = endTime; + } + + public String getEndTime() + { + return endTime; + } + + @Override + public String toString() { + return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE) + .append("id", getId()) + .append("carId", getCarId()) + .append("wallId", getWallId()) + .append("beginTime", getBeginTime()) + .append("endTime", getEndTime()) + .toString(); + } +} diff --git a/ard-work/src/main/java/com/ruoyi/sy/gps31/PositionContainer.java b/ard-work/src/main/java/com/ruoyi/sy/gps31/PositionContainer.java index 6a58728..1b6e628 100644 --- a/ard-work/src/main/java/com/ruoyi/sy/gps31/PositionContainer.java +++ b/ard-work/src/main/java/com/ruoyi/sy/gps31/PositionContainer.java @@ -14,6 +14,8 @@ private static Map<String,Map<String,Object>> carPositionMap = new HashMap();//渚濊溅杈嗗瓨鏀惧疄鏂借溅杈嗕綅缃�:carId锛岃溅杈嗕綅缃� + private static Map<String,Thread> tankCarParkingAlarmTHread = new HashMap();//渚濊溅杈嗗瓨鏀惧紓甯稿仠杞︾嚎绋�:carId锛屽紓甯稿仠杞︾嚎绋� + public static Map<String, List<ArdSyCarLock>> getTopicSubscribe() { return topicSubscribe; } @@ -48,4 +50,12 @@ public static void setCarPositionMap(Map<String, Map<String, Object>> carPositionMap) { PositionContainer.carPositionMap = carPositionMap; } + + public static Map<String, Thread> getTankCarParkingAlarmTHread() { + return tankCarParkingAlarmTHread; + } + + public static void setTankCarParkingAlarmTHread(Map<String, Thread> tankCarParkingAlarmTHread) { + PositionContainer.tankCarParkingAlarmTHread = tankCarParkingAlarmTHread; + } } diff --git a/ard-work/src/main/java/com/ruoyi/sy/gps31/PushClientImplPosition.java b/ard-work/src/main/java/com/ruoyi/sy/gps31/PushClientImplPosition.java index 4a90e08..6771295 100644 --- a/ard-work/src/main/java/com/ruoyi/sy/gps31/PushClientImplPosition.java +++ b/ard-work/src/main/java/com/ruoyi/sy/gps31/PushClientImplPosition.java @@ -376,14 +376,17 @@ }*/ + if(PositionContainer.getTankCarParkingAlarmTHread().get(carId) == null){ + Thread tankCarParkingAlarmThread = new Thread(){//鍒涘缓绾跨▼鍒ゆ柇缃愯溅寮傚父鍋滆溅鎶ヨ + @Override + public void run() { + ((ArdTankAbnormalParkAlarmServiceImpl)SpringUtils.getBean("ardTankAbnormalParkAlarmServiceImpl")).insertArdTankAbnormalParkAlarm(gpsMap); + } + }; + PositionContainer.getTankCarParkingAlarmTHread().put(carId,tankCarParkingAlarmThread); + tankCarParkingAlarmThread.start(); + } - Thread tankCarParkingAlarmThread = new Thread(){//鍒涘缓绾跨▼鍒ゆ柇缃愯溅寮傚父鍋滆溅鎶ヨ - @Override - public void run() { - ((ArdTankAbnormalParkAlarmServiceImpl)SpringUtils.getBean("ardTankAbnormalParkAlarmServiceImpl")).insertArdTankAbnormalParkAlarm(gpsMap); - } - }; - //tankCarParkingAlarmThread.start(); /*Thread autoProcessThread = new Thread(){//鑷姩鎿嶆帶绾跨▼ @Override diff --git a/ard-work/src/main/java/com/ruoyi/sy/mapper/ArdTankAbnormalParkAlarmMapper.java b/ard-work/src/main/java/com/ruoyi/sy/mapper/ArdTankAbnormalParkAlarmMapper.java index c3ffaf2..2e01bc5 100644 --- a/ard-work/src/main/java/com/ruoyi/sy/mapper/ArdTankAbnormalParkAlarmMapper.java +++ b/ard-work/src/main/java/com/ruoyi/sy/mapper/ArdTankAbnormalParkAlarmMapper.java @@ -59,9 +59,7 @@ */ public int deleteArdTankAbnormalParkAlarmByIds(String[] ids); - public ArdTankAbnormalParkAlarm selectArdTankAbnormalParkAlarmByCarIdAndEndTimeIsNull(String carId); + public List<ArdTankAbnormalParkAlarm> selectArdTankAbnormalParkAlarmByCarIdNoEndTime(String carId); - public int deleteArdTankAbnormalParkAlarmByCarId(String carId); - - public int deleteArdTankAbnormalParkAlarmByEndTime(); + public int deleteArdTankAbnormalParkAlarmByCarIdAndEndTimeIsNull(String carId); } diff --git a/ard-work/src/main/java/com/ruoyi/sy/mapper/ArdTankLoadLogMapper.java b/ard-work/src/main/java/com/ruoyi/sy/mapper/ArdTankLoadLogMapper.java new file mode 100644 index 0000000..bc0ce9f --- /dev/null +++ b/ard-work/src/main/java/com/ruoyi/sy/mapper/ArdTankLoadLogMapper.java @@ -0,0 +1,70 @@ +package com.ruoyi.sy.mapper; + +import java.util.List; +import com.ruoyi.sy.domain.ArdTankLoadLog; +import org.apache.ibatis.annotations.Param; + +/** + * 缃愯溅杩涘叆鍗告补鐐硅褰昅apper鎺ュ彛 + * + * @author ard + * @date 2024-07-23 + */ +public interface ArdTankLoadLogMapper +{ + /** + * 鏌ヨ缃愯溅杩涘叆鍗告补鐐硅褰� + * + * @param id 缃愯溅杩涘叆鍗告补鐐硅褰曚富閿� + * @return 缃愯溅杩涘叆鍗告补鐐硅褰� + */ + public ArdTankLoadLog selectArdTankLoadLogById(String id); + + /** + * 鏌ヨ缃愯溅杩涘叆鍗告补鐐硅褰曞垪琛� + * + * @param ardTankLoadLog 缃愯溅杩涘叆鍗告补鐐硅褰� + * @return 缃愯溅杩涘叆鍗告补鐐硅褰曢泦鍚� + */ + public List<ArdTankLoadLog> selectArdTankLoadLogList(ArdTankLoadLog ardTankLoadLog); + + /** + * 鏂板缃愯溅杩涘叆鍗告补鐐硅褰� + * + * @param ardTankLoadLog 缃愯溅杩涘叆鍗告补鐐硅褰� + * @return 缁撴灉 + */ + public int insertArdTankLoadLog(ArdTankLoadLog ardTankLoadLog); + + /** + * 淇敼缃愯溅杩涘叆鍗告补鐐硅褰� + * + * @param ardTankLoadLog 缃愯溅杩涘叆鍗告补鐐硅褰� + * @return 缁撴灉 + */ + public int updateArdTankLoadLog(ArdTankLoadLog ardTankLoadLog); + + /** + * 鍒犻櫎缃愯溅杩涘叆鍗告补鐐硅褰� + * + * @param id 缃愯溅杩涘叆鍗告补鐐硅褰曚富閿� + * @return 缁撴灉 + */ + public int deleteArdTankLoadLogById(String id); + + /** + * 鎵归噺鍒犻櫎缃愯溅杩涘叆鍗告补鐐硅褰� + * + * @param ids 闇�瑕佸垹闄ょ殑鏁版嵁涓婚敭闆嗗悎 + * @return 缁撴灉 + */ + public int deleteArdTankLoadLogByIds(String[] ids); + + public ArdTankLoadLog selectArdTankLoadLogByCarIdAndWallIdAndEndTimeIsNull(@Param("carId") String carId,@Param("wallId") String wallId); + + public List<ArdTankLoadLog> selectArdTankLoadLogByCarIdAndEndTimeIsNull(String carId); + + public int deleteArdTankLoadLogByCarId(String carId); + + public List<ArdTankLoadLog> selectArdTankLoadLogByCarIdAndEndTimeIsNotNull(String carId); +} diff --git a/ard-work/src/main/java/com/ruoyi/sy/service/IArdTankAbnormalParkAlarmService.java b/ard-work/src/main/java/com/ruoyi/sy/service/IArdTankAbnormalParkAlarmService.java index b2a5403..577cb4b 100644 --- a/ard-work/src/main/java/com/ruoyi/sy/service/IArdTankAbnormalParkAlarmService.java +++ b/ard-work/src/main/java/com/ruoyi/sy/service/IArdTankAbnormalParkAlarmService.java @@ -56,5 +56,5 @@ */ public int deleteArdTankAbnormalParkAlarmById(String id); - public int deleteArdTankAbnormalParkAlarmByEndTime(); + //public int deleteArdTankAbnormalParkAlarmByEndTime(); } 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..03146fe 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; + } } /** @@ -211,9 +375,9 @@ return ardTankAbnormalParkAlarmMapper.deleteArdTankAbnormalParkAlarmById(id); } - @Override + /*@Override public int deleteArdTankAbnormalParkAlarmByEndTime() { int result = ardTankAbnormalParkAlarmMapper.deleteArdTankAbnormalParkAlarmByEndTime(); return result; - } + }*/ } diff --git a/ard-work/src/main/resources/mapper/sy/ArdTankAbnormalParkAlarmMapper.xml b/ard-work/src/main/resources/mapper/sy/ArdTankAbnormalParkAlarmMapper.xml index f8fa69f..7fcb444 100644 --- a/ard-work/src/main/resources/mapper/sy/ArdTankAbnormalParkAlarmMapper.xml +++ b/ard-work/src/main/resources/mapper/sy/ArdTankAbnormalParkAlarmMapper.xml @@ -81,17 +81,13 @@ </foreach> </delete> - <select id="selectArdTankAbnormalParkAlarmByCarIdAndEndTimeIsNull" parameterType="java.lang.String" resultMap="ArdTankAbnormalParkAlarmResult"> + <select id="selectArdTankAbnormalParkAlarmByCarIdNoEndTime" parameterType="java.lang.String" resultMap="ArdTankAbnormalParkAlarmResult"> select * from ard_tank_abnormal_park_alarm atapa where atapa.car_id = #{carId} and atapa.end_time is null </select> - <delete id="deleteArdTankAbnormalParkAlarmByCarId" parameterType="java.lang.String"> + <delete id="deleteArdTankAbnormalParkAlarmByCarIdAndEndTimeIsNull" parameterType="java.lang.String"> delete from ard_tank_abnormal_park_alarm atapa where atapa.car_id = #{carId} and atapa.end_time is null - </delete> - - <delete id="deleteArdTankAbnormalParkAlarmByEndTime" > - delete from ard_tank_abnormal_park_alarm atapa where atapa.end_time is null </delete> </mapper> \ No newline at end of file diff --git a/ard-work/src/main/resources/mapper/sy/ArdTankLoadLogMapper.xml b/ard-work/src/main/resources/mapper/sy/ArdTankLoadLogMapper.xml new file mode 100644 index 0000000..0a44fbb --- /dev/null +++ b/ard-work/src/main/resources/mapper/sy/ArdTankLoadLogMapper.xml @@ -0,0 +1,90 @@ +<?xml version="1.0" encoding="UTF-8" ?> +<!DOCTYPE mapper +PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" +"http://mybatis.org/dtd/mybatis-3-mapper.dtd"> +<mapper namespace="com.ruoyi.sy.mapper.ArdTankLoadLogMapper"> + + <resultMap type="ArdTankLoadLog" id="ArdTankLoadLogResult"> + <result property="id" column="id" /> + <result property="carId" column="car_id" /> + <result property="wallId" column="wall_id" /> + <result property="beginTime" column="begin_time" /> + <result property="endTime" column="end_time" /> + </resultMap> + + <sql id="selectArdTankLoadLogVo"> + select id, car_id, wall_id, begin_time, end_time from ard_tank_load_log + </sql> + + <select id="selectArdTankLoadLogList" parameterType="ArdTankLoadLog" resultMap="ArdTankLoadLogResult"> + <include refid="selectArdTankLoadLogVo"/> + <where> + <if test="carId != null and carId != ''"> and car_id = #{carId}</if> + <if test="wallId != null and wallId != ''"> and wall_id = #{wallId}</if> + <if test="beginTime != null and beginTime != ''"> and begin_time = #{beginTime}</if> + <if test="endTime != null and endTime != ''"> and end_time = #{endTime}</if> + </where> + </select> + + <select id="selectArdTankLoadLogById" parameterType="String" resultMap="ArdTankLoadLogResult"> + <include refid="selectArdTankLoadLogVo"/> + where id = #{id} + </select> + + <insert id="insertArdTankLoadLog" parameterType="ArdTankLoadLog"> + insert into ard_tank_load_log + <trim prefix="(" suffix=")" suffixOverrides=","> + <if test="id != null">id,</if> + <if test="carId != null">car_id,</if> + <if test="wallId != null">wall_id,</if> + <if test="beginTime != null">begin_time,</if> + <if test="endTime != null">end_time,</if> + </trim> + <trim prefix="values (" suffix=")" suffixOverrides=","> + <if test="id != null">#{id},</if> + <if test="carId != null">#{carId},</if> + <if test="wallId != null">#{wallId},</if> + <if test="beginTime != null">#{beginTime},</if> + <if test="endTime != null">#{endTime},</if> + </trim> + </insert> + + <update id="updateArdTankLoadLog" parameterType="ArdTankLoadLog"> + update ard_tank_load_log + <trim prefix="SET" suffixOverrides=","> + <if test="carId != null">car_id = #{carId},</if> + <if test="wallId != null">wall_id = #{wallId},</if> + <if test="beginTime != null">begin_time = #{beginTime},</if> + <if test="endTime != null">end_time = #{endTime},</if> + </trim> + where id = #{id} + </update> + + <delete id="deleteArdTankLoadLogById" parameterType="String"> + delete from ard_tank_load_log where id = #{id} + </delete> + + <delete id="deleteArdTankLoadLogByIds" parameterType="String"> + delete from ard_tank_load_log where id in + <foreach item="id" collection="array" open="(" separator="," close=")"> + #{id} + </foreach> + </delete> + + <select id="selectArdTankLoadLogByCarIdAndWallIdAndEndTimeIsNull" parameterType="java.lang.String" resultMap="ArdTankLoadLogResult"> + select * from ard_tank_load_log atll where atll.car_id = #{carId} and atll.wall_id = #{wallId} + and atll.end_time is null + </select> + + <select id="selectArdTankLoadLogByCarIdAndEndTimeIsNull" parameterType="java.lang.String" resultMap="ArdTankLoadLogResult"> + select * from ard_tank_load_log atll where atll.car_id = #{carId} and atll.end_time is null + </select> + + <delete id="deleteArdTankLoadLogByCarId" parameterType="java.lang.String"> + delete from ard_tank_load_log atll where atll.car_id = #{carId} + </delete> + + <select id="selectArdTankLoadLogByCarIdAndEndTimeIsNotNull" parameterType="java.lang.String" resultMap="ArdTankLoadLogResult"> + select * from ard_tank_load_log atll where atll.car_id = #{carId} and atll.end_time is not null + </select> +</mapper> \ No newline at end of file diff --git a/ard-work/src/main/resources/mapper/sy/ArdTankWallMapper.xml b/ard-work/src/main/resources/mapper/sy/ArdTankWallMapper.xml index 74a49be..125528f 100644 --- a/ard-work/src/main/resources/mapper/sy/ArdTankWallMapper.xml +++ b/ard-work/src/main/resources/mapper/sy/ArdTankWallMapper.xml @@ -98,4 +98,11 @@ inner join ard_tank_wall atw on atwl.wall_id = atw.id where atwl.lock_id = #{lockId} and atwl.process_type != '0' </select> + + <select id="getDistinctArdTankWallByCarId" resultMap="ArdTankWallResult" parameterType="java.lang.String"> + select distinct atw.* from ard_tank_lock atl + inner join ard_tank_wall_lock atwl on atl.id = atwl.lock_id + inner join ard_tank_wall atw on atwl.wall_id = atw.id + where atl.car_id = #{carId} + </select> </mapper> \ No newline at end of file -- Gitblit v1.9.3