From b468cde8bfd9d6e1d7ae7ccc535fc7e8ffb9f818 Mon Sep 17 00:00:00 2001
From: zhangnaisong <2434969829@qq.com>
Date: 星期五, 26 七月 2024 22:34:44 +0800
Subject: [PATCH] 电磁锁报警查询提交
---
ard-work/src/main/java/com/ruoyi/sy/domain/ArdTankLockAlarm.java | 93 +++++++
ard-work/src/main/java/com/ruoyi/sy/controller/ArdTankLockController.java | 25 +
ard-work/src/main/java/com/ruoyi/sy/gps31/PushClientImplSerialPort.java | 16
ard-work/src/main/java/com/ruoyi/sy/service/IArdTankLockAlarmService.java | 65 +++++
ard-work/src/main/java/com/ruoyi/sy/gps31/PositionContainer.java | 10
ard-work/src/main/java/com/ruoyi/sy/service/impl/ArdTankLockAlarmServiceImpl.java | 172 +++++++++++++
ard-work/src/main/resources/mapper/sy/ArdTankLockAlarmMapper.xml | 141 ++++++++++
ard-work/src/main/java/com/ruoyi/sy/controller/ArdSyCarController.java | 156 ++++++-----
ard-work/src/main/java/com/ruoyi/sy/mapper/ArdTankLockAlarmMapper.java | 73 +++++
ard-work/src/main/java/com/ruoyi/sy/service/impl/ArdTankLockServiceImpl.java | 3
10 files changed, 668 insertions(+), 86 deletions(-)
diff --git a/ard-work/src/main/java/com/ruoyi/sy/controller/ArdSyCarController.java b/ard-work/src/main/java/com/ruoyi/sy/controller/ArdSyCarController.java
index f525c5c..d3d2fbd 100644
--- a/ard-work/src/main/java/com/ruoyi/sy/controller/ArdSyCarController.java
+++ b/ard-work/src/main/java/com/ruoyi/sy/controller/ArdSyCarController.java
@@ -104,8 +104,6 @@
@Value("${syCar.password}")
private String password;
- private Timer lockStateTimer;
-
@PostConstruct
public void init(){
ardSyCarController = this;
@@ -155,7 +153,7 @@
//鍒犻櫎缁撴潫鏃堕棿涓簄ull鐨勮褰�
int result = ardTankAbnormalParkAlarmService.deleteArdTankAbnormalParkAlarmByEndTime();
- this.lockStateTimer = new Timer();//瀹氭椂鑾峰彇鍚勪釜閿佺殑鐘舵��
+ Timer lockStateTimer = new Timer();//瀹氭椂鑾峰彇鍚勪釜閿佺殑鐘舵��
TimerTask lockStateTask =new TimerTask(){
@Override
public void run(){
@@ -180,7 +178,7 @@
List<ArdTankLock> result = ardTankLockService.getArdTankLockAll();//鏌ヨ鍏ㄩ儴鐢电閿�
for(ArdTankLock ardTankLock : result){
- Thread LockThread = new Thread(finalSyURL){
+ Thread lockThread = new Thread(finalSyURL){
@Override
public void run() {
String lockNumHead = ardTankLock.getLockNum().substring(0,2);
@@ -197,9 +195,13 @@
String paramsStr = "%7B%22type%22%3A%22ff%22%2C%22dataCnt%22%3A%22" + ardTankLock.getLockNum() + "01" + checkNum + "%22%7D";
sendCmd(finalSyURL,userId,ardTankLock.getCarId(),199,"DataDownTransfer", paramsStr,sessionId);
+ PositionContainer.getCarThreadMap().remove(ardTankLock.getCarId());//鍙戦�佸畬锛屼粠瀹瑰櫒鍘婚櫎
}
};
- LockThread.start();
+ if(PositionContainer.getCarThreadMap().get(ardTankLock.getCarId()) != null){//瀹瑰櫒涓棤绾跨▼锛屾斁鍏ュ鍣�
+ PositionContainer.getCarThreadMap().put(ardTankLock.getCarId(),lockThread);
+ }
+ lockThread.start();
}
}
};
@@ -214,80 +216,84 @@
TimerTask lockCheckTimeTask =new TimerTask(){
@Override
public void run() {
- SysConfig config = new SysConfig();
- config.setConfigKey("syCarPT");
- List<SysConfig> sysConfigResult = sysConfigService.selectConfigList(config);
- String syURL = "";
+ SysConfig config = new SysConfig();
+ config.setConfigKey("syCarPT");
+ List<SysConfig> sysConfigResult = sysConfigService.selectConfigList(config);
+ String syURL = "";
- if(sysConfigResult.size() == 0){
- return;
- }else{
- syURL = sysConfigResult.get(0).getConfigValue();
- }
- String passwordMd5 = DigestUtils.md5Hex(password);
- Map<String, Object> LogInResult = sYClient.logIn(syURL, passwordMd5, userId);
- String sessionId = (String) LogInResult.get("sessionId");
+ if(sysConfigResult.size() == 0){
+ return;
+ }else{
+ syURL = sysConfigResult.get(0).getConfigValue();
+ }
+ String passwordMd5 = DigestUtils.md5Hex(password);
+ Map<String, Object> LogInResult = sYClient.logIn(syURL, passwordMd5, userId);
+ String sessionId = (String) LogInResult.get("sessionId");
- String finalSyURL = syURL;
+ String finalSyURL = syURL;
- List<ArdTankLock> result = ardTankLockService.getArdTankLockAll();//鏌ヨ鍏ㄩ儴鐢电閿�
- for(ArdTankLock ardTankLock : result){
- Thread LockThread = new Thread(finalSyURL){
- @Override
- public void run() {
- //鑾峰彇鏃堕棿骞舵媶鍒嗗勾鏈堟棩鏃跺垎绉�
- String nowTime = sdf.format(new Date());
- String nowYear = nowTime.substring(2,4);
- String nowMonth = nowTime.substring(5,7);
- String nowDay = nowTime.substring(8,10);
- String nowHour = nowTime.substring(11,13);
- String nowMinute = nowTime.substring(14,16);
- String nowSecond = nowTime.substring(17,19);
+ List<ArdTankLock> result = ardTankLockService.getArdTankLockAll();//鏌ヨ鍏ㄩ儴鐢电閿�
+ for(ArdTankLock ardTankLock : result){
+ Thread lockThread = new Thread(finalSyURL){
+ @Override
+ public void run() {
+ //鑾峰彇鏃堕棿骞舵媶鍒嗗勾鏈堟棩鏃跺垎绉�
+ String nowTime = sdf.format(new Date());
+ String nowYear = nowTime.substring(2,4);
+ String nowMonth = nowTime.substring(5,7);
+ String nowDay = nowTime.substring(8,10);
+ String nowHour = nowTime.substring(11,13);
+ String nowMinute = nowTime.substring(14,16);
+ String nowSecond = nowTime.substring(17,19);
- String nowYearHex = Integer.toHexString(Integer.parseInt(nowYear));
- if(nowYearHex.length() == 1){
- nowYearHex = "0" + nowYearHex;
- }
- String nowMonthHex = Integer.toHexString(Integer.parseInt(nowMonth));
- if(nowMonthHex.length() == 1){
- nowMonthHex = "0" + nowMonthHex;
- }
- String nowDayHex = Integer.toHexString(Integer.parseInt(nowDay));
- if(nowDayHex.length() == 1){
- nowDayHex = "0" + nowDayHex;
- }
- String nowHourHex = Integer.toHexString(Integer.parseInt(nowHour));
- if(nowHourHex.length() == 1){
- nowHourHex = "0" + nowHourHex;
- }
- String nowMinuteHex = Integer.toHexString(Integer.parseInt(nowMinute));
- if(nowMinuteHex.length() == 1){
- nowMinuteHex = "0" + nowMinuteHex;
- }
- String nowSecondHex = Integer.toHexString(Integer.parseInt(nowSecond));
- if(nowSecondHex.length() == 1){
- nowSecondHex = "0" + nowSecondHex;
- }
- //16杩涘埗鏃堕棿
- String timeHex = nowYearHex + nowMonthHex + nowDayHex + nowHourHex + nowMinuteHex + nowSecondHex;
- String lockNumHead = ardTankLock.getLockNum().substring(0,2);
- String lockNumTail = ardTankLock.getLockNum().substring(2,4);
- //璁$畻鏍¢獙
- String checkNum = Integer.toHexString(Integer.parseInt(lockNumHead, 16) + Integer.parseInt(lockNumTail, 16) + Integer.parseInt("08", 16) +
- Integer.parseInt(nowYearHex, 16) + Integer.parseInt(nowMonthHex, 16) + Integer.parseInt(nowDayHex, 16) +
- Integer.parseInt(nowHourHex, 16) + Integer.parseInt(nowMinuteHex, 16) + Integer.parseInt(nowSecondHex, 16));
- if(checkNum.length() == 1){
- checkNum = "0" + checkNum;
- }else if(checkNum.length() > 2){
- checkNum = checkNum.substring(checkNum.length() - 2,checkNum.length());
- }
- String paramsStr = "%7B%22type%22%3A%22ff%22%2C%22dataCnt%22%3A%22" + ardTankLock.getLockNum() + "08" + timeHex + checkNum + "%22%7D";
-
- sendCmd(finalSyURL,userId,ardTankLock.getCarId(),199,"DataDownTransfer", paramsStr,sessionId);
+ String nowYearHex = Integer.toHexString(Integer.parseInt(nowYear));
+ if(nowYearHex.length() == 1){
+ nowYearHex = "0" + nowYearHex;
}
- };
- LockThread.start();
+ String nowMonthHex = Integer.toHexString(Integer.parseInt(nowMonth));
+ if(nowMonthHex.length() == 1){
+ nowMonthHex = "0" + nowMonthHex;
+ }
+ String nowDayHex = Integer.toHexString(Integer.parseInt(nowDay));
+ if(nowDayHex.length() == 1){
+ nowDayHex = "0" + nowDayHex;
+ }
+ String nowHourHex = Integer.toHexString(Integer.parseInt(nowHour));
+ if(nowHourHex.length() == 1){
+ nowHourHex = "0" + nowHourHex;
+ }
+ String nowMinuteHex = Integer.toHexString(Integer.parseInt(nowMinute));
+ if(nowMinuteHex.length() == 1){
+ nowMinuteHex = "0" + nowMinuteHex;
+ }
+ String nowSecondHex = Integer.toHexString(Integer.parseInt(nowSecond));
+ if(nowSecondHex.length() == 1){
+ nowSecondHex = "0" + nowSecondHex;
+ }
+ //16杩涘埗鏃堕棿
+ String timeHex = nowYearHex + nowMonthHex + nowDayHex + nowHourHex + nowMinuteHex + nowSecondHex;
+ String lockNumHead = ardTankLock.getLockNum().substring(0,2);
+ String lockNumTail = ardTankLock.getLockNum().substring(2,4);
+ //璁$畻鏍¢獙
+ String checkNum = Integer.toHexString(Integer.parseInt(lockNumHead, 16) + Integer.parseInt(lockNumTail, 16) + Integer.parseInt("08", 16) +
+ Integer.parseInt(nowYearHex, 16) + Integer.parseInt(nowMonthHex, 16) + Integer.parseInt(nowDayHex, 16) +
+ Integer.parseInt(nowHourHex, 16) + Integer.parseInt(nowMinuteHex, 16) + Integer.parseInt(nowSecondHex, 16));
+ if(checkNum.length() == 1){
+ checkNum = "0" + checkNum;
+ }else if(checkNum.length() > 2){
+ checkNum = checkNum.substring(checkNum.length() - 2,checkNum.length());
+ }
+ String paramsStr = "%7B%22type%22%3A%22ff%22%2C%22dataCnt%22%3A%22" + ardTankLock.getLockNum() + "08" + timeHex + checkNum + "%22%7D";
+
+ sendCmd(finalSyURL,userId,ardTankLock.getCarId(),199,"DataDownTransfer", paramsStr,sessionId);
+ PositionContainer.getCarThreadMap().remove(ardTankLock.getCarId());//鍙戦�佸畬锛屼粠瀹瑰櫒鍘婚櫎
+ }
+ };
+ if(PositionContainer.getCarThreadMap().get(ardTankLock.getCarId()) != null){//瀹瑰櫒涓棤绾跨▼锛屾斁鍏ュ鍣�
+ PositionContainer.getCarThreadMap().put(ardTankLock.getCarId(),lockThread);
}
+ lockThread.start();
+ }
}
};
lockCheckTimeTimer.scheduleAtFixedRate(lockCheckTimeTask,date,7000);
@@ -316,7 +322,7 @@
}
- Timer alarmTimer = new Timer();//瀹氭椂鑾峰彇鎶ヨ
+ /*Timer alarmTimer = new Timer();//瀹氭椂鑾峰彇鎶ヨ
TimerTask alarmTask = new TimerTask(){
@Override
public void run() {
@@ -329,7 +335,7 @@
alarmThread.start();
}
};
- alarmTimer.scheduleAtFixedRate(alarmTask,date,3000);
+ alarmTimer.scheduleAtFixedRate(alarmTask,date,3000);*/
}
diff --git a/ard-work/src/main/java/com/ruoyi/sy/controller/ArdTankLockController.java b/ard-work/src/main/java/com/ruoyi/sy/controller/ArdTankLockController.java
index 079d6b9..379c517 100644
--- a/ard-work/src/main/java/com/ruoyi/sy/controller/ArdTankLockController.java
+++ b/ard-work/src/main/java/com/ruoyi/sy/controller/ArdTankLockController.java
@@ -9,9 +9,7 @@
import com.ruoyi.common.utils.SecurityUtils;
import com.ruoyi.common.utils.uuid.IdUtils;
import com.ruoyi.sy.domain.ArdTankWall;
-import com.ruoyi.sy.service.IArdTankLockProcessLogService;
-import com.ruoyi.sy.service.IArdTankWallLockService;
-import com.ruoyi.sy.service.IArdTankWallService;
+import com.ruoyi.sy.service.*;
import com.ruoyi.utils.result.Results;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
@@ -30,7 +28,6 @@
import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.common.enums.BusinessType;
import com.ruoyi.sy.domain.ArdTankLock;
-import com.ruoyi.sy.service.IArdTankLockService;
import com.ruoyi.common.utils.poi.ExcelUtil;
import com.ruoyi.common.core.page.TableDataInfo;
@@ -55,6 +52,9 @@
@Autowired
private IArdTankLockProcessLogService ardTankLockProcessLogService;
+
+ @Autowired
+ private IArdTankLockAlarmService ardTankLockAlarmService;
/**
* 鏌ヨ鐢电閿佸垪琛�
@@ -335,4 +335,21 @@
String username = SecurityUtils.getUsername();
return ardTankLockProcessLogService.processArdTankLockByLockId(userId,username,para);
}
+
+ @ApiOperation("鏌ヨ鐢电閿佹姤璀�")
+ @PreAuthorize("@ss.hasPermi('sy:lock:getAlarm')")
+ @PostMapping("/getAlarm")
+ public TableDataInfo getAlarm(@RequestBody Map<String,Object> para) {
+
+ PageHelper.startPage((Integer) para.get("pageNum"), (Integer) para.get("pageSize"));
+ String userId = SecurityUtils.getUserId();
+ Map<String,Object> result = ardTankLockAlarmService.getAlarm(userId,para);
+
+ TableDataInfo dataTable = new TableDataInfo();
+ dataTable.setRows((List<Map<String,Object>>) result.get("list"));
+ dataTable.setTotal((Long) result.get("total"));
+ dataTable.setCode(200);
+ dataTable.setMsg("鏌ヨ鎴愬姛");
+ return dataTable;
+ }
}
diff --git a/ard-work/src/main/java/com/ruoyi/sy/domain/ArdTankLockAlarm.java b/ard-work/src/main/java/com/ruoyi/sy/domain/ArdTankLockAlarm.java
new file mode 100644
index 0000000..28c9ffb
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/sy/domain/ArdTankLockAlarm.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_lock_alarm
+ *
+ * @author ard
+ * @date 2024-07-26
+ */
+public class ArdTankLockAlarm extends BaseEntity
+{
+ private static final long serialVersionUID = 1L;
+
+ /** 閿佺紪鍙� */
+ @Excel(name = "閿佺紪鍙�")
+ private String lockNum;
+
+ /** 鎶ヨ淇℃伅 */
+ @Excel(name = "鎶ヨ淇℃伅")
+ private String alarmInfo;
+
+ /** 涓婚敭 */
+ private String id;
+
+ /** 閿佷富閿� */
+ @Excel(name = "閿佷富閿�")
+ private String lockId;
+
+ /** 鎶ヨ鏃堕棿 */
+ @Excel(name = "鎶ヨ鏃堕棿")
+ private String alarmTime;
+
+ public void setLockNum(String lockNum)
+ {
+ this.lockNum = lockNum;
+ }
+
+ public String getLockNum()
+ {
+ return lockNum;
+ }
+ public void setAlarmInfo(String alarmInfo)
+ {
+ this.alarmInfo = alarmInfo;
+ }
+
+ public String getAlarmInfo()
+ {
+ return alarmInfo;
+ }
+ public void setId(String id)
+ {
+ this.id = id;
+ }
+
+ public String getId()
+ {
+ return id;
+ }
+ public void setLockId(String lockId)
+ {
+ this.lockId = lockId;
+ }
+
+ public String getLockId()
+ {
+ return lockId;
+ }
+ public void setAlarmTime(String alarmTime)
+ {
+ this.alarmTime = alarmTime;
+ }
+
+ public String getAlarmTime()
+ {
+ return alarmTime;
+ }
+
+ @Override
+ public String toString() {
+ return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
+ .append("lockNum", getLockNum())
+ .append("alarmInfo", getAlarmInfo())
+ .append("id", getId())
+ .append("lockId", getLockId())
+ .append("alarmTime", getAlarmTime())
+ .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 1b6e628..36ef9cc 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
@@ -16,6 +16,8 @@
private static Map<String,Thread> tankCarParkingAlarmTHread = new HashMap();//渚濊溅杈嗗瓨鏀惧紓甯稿仠杞︾嚎绋�:carId锛屽紓甯稿仠杞︾嚎绋�
+ private static Map<String,Thread> carThreadMap = new HashMap();//杞﹁締涓婚敭,绾跨▼瀹瑰櫒
+
public static Map<String, List<ArdSyCarLock>> getTopicSubscribe() {
return topicSubscribe;
}
@@ -58,4 +60,12 @@
public static void setTankCarParkingAlarmTHread(Map<String, Thread> tankCarParkingAlarmTHread) {
PositionContainer.tankCarParkingAlarmTHread = tankCarParkingAlarmTHread;
}
+
+ public static Map<String, Thread> getCarThreadMap() {
+ return carThreadMap;
+ }
+
+ public static void setCarThreadMap(Map<String, Thread> carThreadMap) {
+ PositionContainer.carThreadMap = carThreadMap;
+ }
}
diff --git a/ard-work/src/main/java/com/ruoyi/sy/gps31/PushClientImplSerialPort.java b/ard-work/src/main/java/com/ruoyi/sy/gps31/PushClientImplSerialPort.java
index d0af9ea..ee4a60d 100644
--- a/ard-work/src/main/java/com/ruoyi/sy/gps31/PushClientImplSerialPort.java
+++ b/ard-work/src/main/java/com/ruoyi/sy/gps31/PushClientImplSerialPort.java
@@ -121,9 +121,14 @@
for(int i = 0;i <= data.length() - 4;i = i + 2){
String str = data.substring(i, i + 2);
sum = sum + Integer.parseInt(str, 16);
- }
+ }//姹傚拰
String checkNum = data.substring(data.length() - 2, data.length());
- if(!checkNum.equals(Integer.toHexString(sum).toUpperCase())){//鏍¢獙涓嶉�氳繃锛屽氨杩斿洖
+ String checkNumComputed = Integer.toHexString(sum).toUpperCase();//璁$畻鏍¢獙
+ //褰撴牎楠屾暟鎹ぇ浜�2涓瓧绗︼紝鎴彇鏈�鍚庝袱浣�
+ if(checkNumComputed.length() != 2){
+ checkNumComputed = checkNumComputed.substring(checkNumComputed.length() - 2,checkNumComputed.length());
+ }
+ if(!checkNum.equals(checkNumComputed)){//鏍¢獙涓嶉�氳繃锛屽氨杩斿洖
return;
}
@@ -196,9 +201,6 @@
}
long cha = now.getTime() - sdf.parse(time).getTime();
- /*System.out.println("////////////////");
- System.out.println(time);
- System.out.println(cha);*/
if(Math.abs(cha) >= 5 * 1000){
//鏃堕棿鏍″噯
/*String url = "http://" + ip + ":9999";
@@ -328,9 +330,9 @@
ardTankLockState.setUniqueMark(uniqueMark);
((ArdTankLockStateServiceImpl)SpringUtils.getBean("ardTankLockStateServiceImpl")).insertOrUpdateArdTankLockState(ardTankLockState);
}
- }else if(code.equals("06")){//鍔熻兘鐮�06涓洪攣鍘嗗彶鎶ヨ
+ }/*else if(code.equals("06")){//鍔熻兘鐮�06涓洪攣鍘嗗彶鎶ヨ
- }
+ }*/
}catch (Exception e){
e.printStackTrace();
return;//寮鸿浆澶辫触杩斿洖
diff --git a/ard-work/src/main/java/com/ruoyi/sy/mapper/ArdTankLockAlarmMapper.java b/ard-work/src/main/java/com/ruoyi/sy/mapper/ArdTankLockAlarmMapper.java
new file mode 100644
index 0000000..89bcbad
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/sy/mapper/ArdTankLockAlarmMapper.java
@@ -0,0 +1,73 @@
+package com.ruoyi.sy.mapper;
+
+import java.util.List;
+import java.util.Map;
+
+import com.ruoyi.common.utils.SecurityUtils;
+import com.ruoyi.sy.domain.ArdTankLockAlarm;
+import org.apache.ibatis.annotations.Param;
+
+/**
+ * 鐢电閿佹姤璀apper鎺ュ彛
+ *
+ * @author ard
+ * @date 2024-07-26
+ */
+public interface ArdTankLockAlarmMapper
+{
+ /**
+ * 鏌ヨ鐢电閿佹姤璀�
+ *
+ * @param lockNum 鐢电閿佹姤璀︿富閿�
+ * @return 鐢电閿佹姤璀�
+ */
+ public ArdTankLockAlarm selectArdTankLockAlarmByLockNum(String lockNum);
+
+ /**
+ * 鏌ヨ鐢电閿佹姤璀﹀垪琛�
+ *
+ * @param ardTankLockAlarm 鐢电閿佹姤璀�
+ * @return 鐢电閿佹姤璀﹂泦鍚�
+ */
+ public List<ArdTankLockAlarm> selectArdTankLockAlarmList(ArdTankLockAlarm ardTankLockAlarm);
+
+ /**
+ * 鏂板鐢电閿佹姤璀�
+ *
+ * @param ardTankLockAlarm 鐢电閿佹姤璀�
+ * @return 缁撴灉
+ */
+ public int insertArdTankLockAlarm(ArdTankLockAlarm ardTankLockAlarm);
+
+ /**
+ * 淇敼鐢电閿佹姤璀�
+ *
+ * @param ardTankLockAlarm 鐢电閿佹姤璀�
+ * @return 缁撴灉
+ */
+ public int updateArdTankLockAlarm(ArdTankLockAlarm ardTankLockAlarm);
+
+ /**
+ * 鍒犻櫎鐢电閿佹姤璀�
+ *
+ * @param lockNum 鐢电閿佹姤璀︿富閿�
+ * @return 缁撴灉
+ */
+ public int deleteArdTankLockAlarmByLockNum(String lockNum);
+
+ /**
+ * 鎵归噺鍒犻櫎鐢电閿佹姤璀�
+ *
+ * @param lockNums 闇�瑕佸垹闄ょ殑鏁版嵁涓婚敭闆嗗悎
+ * @return 缁撴灉
+ */
+ public int deleteArdTankLockAlarmByLockNums(String[] lockNums);
+
+ public List<Map<String, Object>> selectArdTankLockAlarmBylockIdAndTime(@Param("carId") String carId,@Param("lockId") String lockId,@Param("beginTime") String beginTime,@Param("endTime") String endTime);
+
+ public Long selectArdTankLockAlarmTotalBylockIdAndTime(@Param("carId") String carId,@Param("lockId") String lockId,@Param("beginTime") String beginTime,@Param("endTime") String endTime);
+
+ public List<Map<String, Object>> selectArdTankLockAlarmByDeptIdAndTime(@Param("deptId") Long deptId,@Param("beginTime") String beginTime,@Param("endTime") String endTime);
+
+ public Long selectArdTankLockAlarmTotalByDeptIdAndTime(@Param("deptId") Long deptId,@Param("beginTime") String beginTime,@Param("endTime") String endTime);
+}
diff --git a/ard-work/src/main/java/com/ruoyi/sy/service/IArdTankLockAlarmService.java b/ard-work/src/main/java/com/ruoyi/sy/service/IArdTankLockAlarmService.java
new file mode 100644
index 0000000..c189687
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/sy/service/IArdTankLockAlarmService.java
@@ -0,0 +1,65 @@
+package com.ruoyi.sy.service;
+
+import java.util.List;
+import java.util.Map;
+
+import com.ruoyi.sy.domain.ArdTankLockAlarm;
+
+/**
+ * 鐢电閿佹姤璀ervice鎺ュ彛
+ *
+ * @author ard
+ * @date 2024-07-26
+ */
+public interface IArdTankLockAlarmService
+{
+ /**
+ * 鏌ヨ鐢电閿佹姤璀�
+ *
+ * @param lockNum 鐢电閿佹姤璀︿富閿�
+ * @return 鐢电閿佹姤璀�
+ */
+ public ArdTankLockAlarm selectArdTankLockAlarmByLockNum(String lockNum);
+
+ /**
+ * 鏌ヨ鐢电閿佹姤璀﹀垪琛�
+ *
+ * @param ardTankLockAlarm 鐢电閿佹姤璀�
+ * @return 鐢电閿佹姤璀﹂泦鍚�
+ */
+ public List<ArdTankLockAlarm> selectArdTankLockAlarmList(ArdTankLockAlarm ardTankLockAlarm);
+
+ /**
+ * 鏂板鐢电閿佹姤璀�
+ *
+ * @param ardTankLockAlarm 鐢电閿佹姤璀�
+ * @return 缁撴灉
+ */
+ public int insertArdTankLockAlarm(ArdTankLockAlarm ardTankLockAlarm);
+
+ /**
+ * 淇敼鐢电閿佹姤璀�
+ *
+ * @param ardTankLockAlarm 鐢电閿佹姤璀�
+ * @return 缁撴灉
+ */
+ public int updateArdTankLockAlarm(ArdTankLockAlarm ardTankLockAlarm);
+
+ /**
+ * 鎵归噺鍒犻櫎鐢电閿佹姤璀�
+ *
+ * @param lockNums 闇�瑕佸垹闄ょ殑鐢电閿佹姤璀︿富閿泦鍚�
+ * @return 缁撴灉
+ */
+ public int deleteArdTankLockAlarmByLockNums(String[] lockNums);
+
+ /**
+ * 鍒犻櫎鐢电閿佹姤璀︿俊鎭�
+ *
+ * @param lockNum 鐢电閿佹姤璀︿富閿�
+ * @return 缁撴灉
+ */
+ public int deleteArdTankLockAlarmByLockNum(String lockNum);
+
+ public Map<String,Object> getAlarm(String userId,Map<String,Object> para);
+}
diff --git a/ard-work/src/main/java/com/ruoyi/sy/service/impl/ArdTankLockAlarmServiceImpl.java b/ard-work/src/main/java/com/ruoyi/sy/service/impl/ArdTankLockAlarmServiceImpl.java
new file mode 100644
index 0000000..66ae158
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/sy/service/impl/ArdTankLockAlarmServiceImpl.java
@@ -0,0 +1,172 @@
+package com.ruoyi.sy.service.impl;
+
+import java.util.HashMap;
+import java.util.List;
+
+import com.github.pagehelper.PageHelper;
+import com.ruoyi.common.core.domain.entity.SysConfig;
+import com.ruoyi.common.utils.uuid.IdUtils;
+import com.ruoyi.sy.domain.ArdSyUser;
+import com.ruoyi.sy.mapper.ArdSyCarMapper;
+import com.ruoyi.sy.mapper.ArdSyUserMapper;
+import com.ruoyi.system.mapper.SysConfigMapper;
+import com.ruoyi.utils.forest.SYClient;
+import org.apache.commons.codec.digest.DigestUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import java.util.ArrayList;
+import java.util.Map;
+
+import com.ruoyi.common.utils.StringUtils;
+import com.ruoyi.common.utils.SecurityUtils;
+import com.ruoyi.sy.mapper.ArdTankLockAlarmMapper;
+import com.ruoyi.sy.domain.ArdTankLockAlarm;
+import com.ruoyi.sy.service.IArdTankLockAlarmService;
+
+import javax.annotation.Resource;
+
+/**
+ * 鐢电閿佹姤璀ervice涓氬姟灞傚鐞�
+ *
+ * @author ard
+ * @date 2024-07-26
+ */
+@Service
+public class ArdTankLockAlarmServiceImpl implements IArdTankLockAlarmService {
+ @Resource
+ private ArdTankLockAlarmMapper ardTankLockAlarmMapper;
+
+ @Resource
+ private SysConfigMapper sysConfigMapper;
+
+ @Resource
+ private ArdSyUserMapper ardSyUserMapper;
+
+ @Resource
+ private SYClient sYClient;
+
+ /**
+ * 鏌ヨ鐢电閿佹姤璀�
+ *
+ * @param lockNum 鐢电閿佹姤璀︿富閿�
+ * @return 鐢电閿佹姤璀�
+ */
+ @Override
+ public ArdTankLockAlarm selectArdTankLockAlarmByLockNum(String lockNum) {
+ return ardTankLockAlarmMapper.selectArdTankLockAlarmByLockNum(lockNum);
+ }
+
+ /**
+ * 鏌ヨ鐢电閿佹姤璀﹀垪琛�
+ *
+ * @param ardTankLockAlarm 鐢电閿佹姤璀�
+ * @return 鐢电閿佹姤璀�
+ */
+ @Override
+ public List<ArdTankLockAlarm> selectArdTankLockAlarmList(ArdTankLockAlarm ardTankLockAlarm) {
+ return ardTankLockAlarmMapper.selectArdTankLockAlarmList(ardTankLockAlarm);
+ }
+
+ /**
+ * 鏂板鐢电閿佹姤璀�
+ *
+ * @param ardTankLockAlarm 鐢电閿佹姤璀�
+ * @return 缁撴灉
+ */
+ @Override
+ public int insertArdTankLockAlarm(ArdTankLockAlarm ardTankLockAlarm) {
+ ardTankLockAlarm.setId(IdUtils.simpleUUID());
+ return ardTankLockAlarmMapper.insertArdTankLockAlarm(ardTankLockAlarm);
+ }
+
+ /**
+ * 淇敼鐢电閿佹姤璀�
+ *
+ * @param ardTankLockAlarm 鐢电閿佹姤璀�
+ * @return 缁撴灉
+ */
+ @Override
+ public int updateArdTankLockAlarm(ArdTankLockAlarm ardTankLockAlarm) {
+ return ardTankLockAlarmMapper.updateArdTankLockAlarm(ardTankLockAlarm);
+ }
+
+ /**
+ * 鎵归噺鍒犻櫎鐢电閿佹姤璀�
+ *
+ * @param lockNums 闇�瑕佸垹闄ょ殑鐢电閿佹姤璀︿富閿�
+ * @return 缁撴灉
+ */
+ @Override
+ public int deleteArdTankLockAlarmByLockNums(String[] lockNums) {
+ return ardTankLockAlarmMapper.deleteArdTankLockAlarmByLockNums(lockNums);
+ }
+
+ /**
+ * 鍒犻櫎鐢电閿佹姤璀︿俊鎭�
+ *
+ * @param lockNum 鐢电閿佹姤璀︿富閿�
+ * @return 缁撴灉
+ */
+ @Override
+ public int deleteArdTankLockAlarmByLockNum(String lockNum) {
+ return ardTankLockAlarmMapper.deleteArdTankLockAlarmByLockNum(lockNum);
+ }
+
+ @Override
+ public Map<String, Object> getAlarm(String userId,Map<String, Object> para) {
+ //鏉′欢灞炴��
+ String carId = (String) para.get("carId");
+ String lockId = (String) para.get("lockId");
+ String beginTime = (String) para.get("beginTime");
+ String endTime = (String) para.get("endTime");
+ //鍒嗛〉灞炴��
+ Integer pageNum = (Integer) para.get("pageNum");
+ Integer pageSize = (Integer) para.get("pageSize");
+
+ ArdSyUser ardSyUser = ardSyUserMapper.userById(userId);
+ if(ardSyUser == null){
+ return new HashMap();
+ }
+ List<SysConfig> syURLResult = sysConfigMapper.selectByType("syCarPT");
+ String syURL = "";
+ if(syURLResult.size() != 0){
+ syURL = syURLResult.get(0).getConfigValue();
+ }else{
+ return new HashMap();
+ }
+ String passwordMd5 = DigestUtils.md5Hex(ardSyUser.getPassword());
+ Map<String, Object> LogInResult = sYClient.logIn(syURL, passwordMd5, ardSyUser.getUserId());
+ String sessionId = (String) LogInResult.get("sessionId");
+
+ PageHelper.startPage(pageNum, pageSize);//鍒嗛〉
+ List<Map<String, Object>> resultList = new ArrayList();
+ Long total = Long.valueOf(0);
+ Map<String,Object> resultMap = new HashMap();
+ if(!carId.equals("") || !lockId.equals("")){//carI鎴杔ockId涓虹┖瀛楃涓�
+ resultList = ardTankLockAlarmMapper.selectArdTankLockAlarmBylockIdAndTime(carId,lockId,beginTime,endTime);
+ total = ardTankLockAlarmMapper.selectArdTankLockAlarmTotalBylockIdAndTime(carId,lockId,beginTime,endTime);
+ }else{//carI鍜宭ockId閮戒负绌哄瓧绗︿覆锛屾煡璇㈡潈闄愪笅鍏ㄩ儴杞﹁締鎶ヨ
+ try{
+ resultList = ardTankLockAlarmMapper.selectArdTankLockAlarmByDeptIdAndTime(SecurityUtils.getDeptId(),beginTime,endTime);
+ }catch(Exception e){
+ e.printStackTrace();
+ }
+ try{
+ total = ardTankLockAlarmMapper.selectArdTankLockAlarmTotalByDeptIdAndTime(SecurityUtils.getDeptId(),beginTime,endTime);
+ }catch(Exception e){
+ e.printStackTrace();
+ }
+ }
+
+ for(Map<String, Object> map : resultList){
+ Map<String,Object> syResult = sYClient.getCarNearPositionByCarId(syURL, (String) map.get("carId"), ardSyUser.getUserId(), sessionId);
+ if(((String)syResult.get("rspCode")).equals("1")){
+ Map<String,Object> carMap = ((List<Map<String,Object>>)syResult.get("list")).get(0);
+ map.put("carPlate",carMap.get("carPlate"));
+ }
+ }
+ resultMap.put("list",resultList);
+ resultMap.put("total",total);
+ return resultMap;
+ }
+}
diff --git a/ard-work/src/main/java/com/ruoyi/sy/service/impl/ArdTankLockServiceImpl.java b/ard-work/src/main/java/com/ruoyi/sy/service/impl/ArdTankLockServiceImpl.java
index 5b23022..622e4ae 100644
--- a/ard-work/src/main/java/com/ruoyi/sy/service/impl/ArdTankLockServiceImpl.java
+++ b/ard-work/src/main/java/com/ruoyi/sy/service/impl/ArdTankLockServiceImpl.java
@@ -592,6 +592,9 @@
lockMap.put("ardTankLockState",ardTankLockState);*/
String alarmInfo = "";
lockMap.put("lockState",ardTankLockStateResult.getLockState());
+ if(ardTankLockStateResult.getLockState().equals("寮傚父鐘舵��")){
+ alarmInfo = alarmInfo + "閿佽姱寮傚父;";
+ }
lockMap.put("lockPositionState",ardTankLockStateResult.getLockPositionState());
if(ardTankLockStateResult.getLockPositionState().equals("寮傚父")){
alarmInfo = alarmInfo + "浣嶇疆寮傚父;";
diff --git a/ard-work/src/main/resources/mapper/sy/ArdTankLockAlarmMapper.xml b/ard-work/src/main/resources/mapper/sy/ArdTankLockAlarmMapper.xml
new file mode 100644
index 0000000..b23c0ba
--- /dev/null
+++ b/ard-work/src/main/resources/mapper/sy/ArdTankLockAlarmMapper.xml
@@ -0,0 +1,141 @@
+<?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.ArdTankLockAlarmMapper">
+
+ <resultMap type="ArdTankLockAlarm" id="ArdTankLockAlarmResult">
+ <result property="lockNum" column="lock_num" />
+ <result property="alarmInfo" column="alarm_info" />
+ <result property="id" column="id" />
+ <result property="lockId" column="lock_id" />
+ <result property="alarmTime" column="alarm_time" />
+ </resultMap>
+
+ <sql id="selectArdTankLockAlarmVo">
+ select lock_num, alarm_info, id, lock_id, alarm_time from ard_tank_lock_alarm
+ </sql>
+
+ <select id="selectArdTankLockAlarmList" parameterType="ArdTankLockAlarm" resultMap="ArdTankLockAlarmResult">
+ <include refid="selectArdTankLockAlarmVo"/>
+ <where>
+ <if test="lockNum != null and lockNum != ''"> and lock_num = #{lockNum}</if>
+ <if test="alarmInfo != null and alarmInfo != ''"> and alarm_info = #{alarmInfo}</if>
+ <if test="lockId != null and lockId != ''"> and lock_id = #{lockId}</if>
+ <if test="alarmTime != null and alarmTime != ''"> and alarm_time = #{alarmTime}</if>
+ </where>
+ </select>
+
+ <select id="selectArdTankLockAlarmByLockNum" parameterType="String" resultMap="ArdTankLockAlarmResult">
+ <include refid="selectArdTankLockAlarmVo"/>
+ where lock_num = #{lockNum}
+ </select>
+
+ <insert id="insertArdTankLockAlarm" parameterType="ArdTankLockAlarm">
+ insert into ard_tank_lock_alarm
+ <trim prefix="(" suffix=")" suffixOverrides=",">
+ <if test="lockNum != null">lock_num,</if>
+ <if test="alarmInfo != null">alarm_info,</if>
+ <if test="id != null">id,</if>
+ <if test="lockId != null">lock_id,</if>
+ <if test="alarmTime != null">alarm_time,</if>
+ </trim>
+ <trim prefix="values (" suffix=")" suffixOverrides=",">
+ <if test="lockNum != null">#{lockNum},</if>
+ <if test="alarmInfo != null">#{alarmInfo},</if>
+ <if test="id != null">#{id},</if>
+ <if test="lockId != null">#{lockId},</if>
+ <if test="alarmTime != null">#{alarmTime},</if>
+ </trim>
+ </insert>
+
+ <update id="updateArdTankLockAlarm" parameterType="ArdTankLockAlarm">
+ update ard_tank_lock_alarm
+ <trim prefix="SET" suffixOverrides=",">
+ <if test="alarmInfo != null">alarm_info = #{alarmInfo},</if>
+ <if test="id != null">id = #{id},</if>
+ <if test="lockId != null">lock_id = #{lockId},</if>
+ <if test="alarmTime != null">alarm_time = #{alarmTime},</if>
+ </trim>
+ where lock_num = #{lockNum}
+ </update>
+
+ <delete id="deleteArdTankLockAlarmByLockNum" parameterType="String">
+ delete from ard_tank_lock_alarm where lock_num = #{lockNum}
+ </delete>
+
+ <delete id="deleteArdTankLockAlarmByLockNums" parameterType="String">
+ delete from ard_tank_lock_alarm where lock_num in
+ <foreach item="lockNum" collection="array" open="(" separator="," close=")">
+ #{lockNum}
+ </foreach>
+ </delete>
+
+ <select id="selectArdTankLockAlarmBylockIdAndTime" parameterType="java.lang.String" resultType="java.util.Map">
+ select atlm.id,atlm.lock_id as "lockId",atlm.lock_num as "lockNum",
+ atlm.alarm_info as "alarmInfo",atlm.alarm_time as "alarmTime",
+ atl.lock_name as "lockName",atl.car_id as "carId"
+ from ard_tank_lock_alarm atlm
+ inner join ard_tank_lock atl on atlm.lock_id = atl."id"
+ <where>
+ <if test="carId != null and carId != ''"> and car_id = #{carId}</if>
+ <if test="lockId != null and lockId != ''"> and lock_id = #{lockId}</if>
+ <if test="beginTime != null and beginTime != ''"> and alarm_time >= #{beginTime}</if>
+ <if test="endTime != null and endTime != ''"> and alarm_time <= #{endTime}</if>
+ </where>
+ order by atlm.alarm_time desc
+ </select>
+
+ <select id="selectArdTankLockAlarmTotalBylockIdAndTime" parameterType="java.lang.String" resultType="java.lang.Long">
+ select count(*)
+ from ard_tank_lock_alarm atlm
+ inner join ard_tank_lock atl on atlm.lock_id = atl."id"
+ <where>
+ <if test="carId != null and carId != ''"> and car_id = #{carId}</if>
+ <if test="lockId != null and lockId != ''"> and lock_id = #{lockId}</if>
+ <if test="beginTime != null and beginTime != ''"> and alarm_time >= #{beginTime}</if>
+ <if test="endTime != null and endTime != ''"> and alarm_time <= #{endTime}</if>
+ </where>
+ </select>
+
+ <select id="selectArdTankLockAlarmByDeptIdAndTime" resultType="java.util.Map">
+ select atlm.id,atlm.lock_id as "lockId",atlm.lock_num as "lockNum",
+ atlm.alarm_info as "alarmInfo",atlm.alarm_time as "alarmTime",
+ atl.lock_name as "lockName",atl.car_id as "carId"
+ from ard_tank_lock_alarm atlm
+ inner join ard_tank_lock atl on atlm.lock_id = atl."id"
+ <where>
+ <if test="beginTime != null and beginTime != ''"> and alarm_time >= #{beginTime}</if>
+ <if test="endTime != null and endTime != ''"> and alarm_time <= #{endTime}</if>
+ <if test="deptId != null">
+ and atl.car_id in (select car_id from ard_sy_car "asc" where "asc".dept_id in (
+ with recursive rsd as (
+ select sd.dept_id from sys_dept sd where sd.dept_id = #{deptId}
+ union
+ select csd.dept_id from sys_dept csd inner join rsd on rsd.dept_id = csd.parent_id
+ )
+ select * from rsd))
+ </if>
+ </where>
+ order by atlm.alarm_time desc
+ </select>
+
+ <select id="selectArdTankLockAlarmTotalByDeptIdAndTime" resultType="java.lang.Long">
+ select count(*)
+ from ard_tank_lock_alarm atlm
+ inner join ard_tank_lock atl on atlm.lock_id = atl."id"
+ <where>
+ <if test="beginTime != null and beginTime != ''"> and alarm_time >= #{beginTime}</if>
+ <if test="endTime != null and endTime != ''"> and alarm_time <= #{endTime}</if>
+ <if test="deptId != null">
+ and atl.car_id in (select car_id from ard_sy_car "asc" where "asc".dept_id in (
+ with recursive rsd as (
+ select sd.dept_id from sys_dept sd where sd.dept_id = #{deptId}
+ union
+ select csd.dept_id from sys_dept csd inner join rsd on rsd.dept_id = csd.parent_id
+ )
+ select * from rsd))
+ </if>
+ </where>
+ </select>
+</mapper>
\ No newline at end of file
--
Gitblit v1.9.3