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