From a2e85a4911dd285f7a1ac9fde312187aec597198 Mon Sep 17 00:00:00 2001
From: zhangnaisong <2434969829@qq.com>
Date: Tue, 23 Jul 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;
+
+/**
+ * 罐车进入卸油点记录Mapper接口
+ *
+ * @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));
+ //根据权限做报警websocket推送
+ 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