| | |
| | | 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());//åéå®ï¼ä»å®¹å¨å»é¤ |
| | | } |
| | | }; |
| | | if(PositionContainer.getCarThreadMap().get(ardTankLock.getCarId()) != null){//容å¨ä¸æ 线ç¨ï¼æ¾å
¥å®¹å¨ |
| | | PositionContainer.getCarThreadMap().put(ardTankLock.getCarId(),lockThread); |
| | | } |
| | | lockThread.start(); |
| | | } |
| | | } |
| | |
| | | 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(); |
| | | } |
| | | } |
| | |
| | | }; |
| | | sendTimer.scheduleAtFixedRate(sendLockStateTask,date,3000); |
| | | |
| | | try{ |
| | | Thread.sleep(3000); |
| | | }catch(Exception e){ |
| | | |
| | | } |
| | | |
| | | |
| | | /*Timer alarmTimer = new Timer();//宿¶è·åæ¥è¦ |
| | | TimerTask alarmTask = new TimerTask(){ |
| | | Timer passwordTimer = new Timer();//宿¶æ¥ççµç£éå¯ç ç¶æ |
| | | TimerTask passwordTask = new TimerTask(){ |
| | | @Override |
| | | public void run() { |
| | | Thread alarmThread = new Thread() { |
| | | @Override |
| | | public void run() { |
| | | ardTankLockService.getAlarm(userId,password); |
| | | } |
| | | }; |
| | | alarmThread.start(); |
| | | ardTankLockService.readPassword(userId,password); |
| | | } |
| | | }; |
| | | alarmTimer.scheduleAtFixedRate(alarmTask,date,3000);*/ |
| | | passwordTimer.scheduleAtFixedRate(passwordTask,date,11000); |
| | | |
| | | } |
| | | |
| | |
| | | @Autowired |
| | | private IArdTankLockAlarmService ardTankLockAlarmService; |
| | | |
| | | @Autowired |
| | | private IArdTankLockPasswordService ardTankLockPasswordService; |
| | | |
| | | /** |
| | | * æ¥è¯¢çµç£éå表 |
| | | */ |
| | |
| | | dataTable.setMsg("æ¥è¯¢æå"); |
| | | return dataTable; |
| | | } |
| | | |
| | | @ApiOperation("æ¥è¯¢çµç£éå¯ç ") |
| | | @PreAuthorize("@ss.hasPermi('sy:lock:getLockPasswordByLockId')") |
| | | @PostMapping("/getLockPasswordByLockId") |
| | | public TableDataInfo getLockPasswordByLockId(@RequestBody Map<String,Object> para) { |
| | | Map<String,Object> result = ardTankLockPasswordService.getLockPasswordByLockId(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; |
| | | } |
| | | } |
| | |
| | | import com.ruoyi.common.annotation.Excel; |
| | | import com.ruoyi.common.core.domain.BaseEntity; |
| | | |
| | | import java.util.List; |
| | | |
| | | /** |
| | | * çµç£é对象 ard_tank_lock |
| | | * |
| | |
| | | private String onlineTime; |
| | | |
| | | private ArdTankLockState ardTankLockState; |
| | | |
| | | private List<ArdTankLockPassword> ardTankLockPasswords; |
| | | |
| | | public void setId(String id) |
| | | { |
| | |
| | | this.ardTankLockState = ardTankLockState; |
| | | } |
| | | |
| | | public List<ArdTankLockPassword> getArdTankLockPasswords() { |
| | | return ardTankLockPasswords; |
| | | } |
| | | |
| | | public void setArdTankLockPasswords(List<ArdTankLockPassword> ardTankLockPasswords) { |
| | | this.ardTankLockPasswords = ardTankLockPasswords; |
| | | } |
| | | |
| | | @Override |
| | | public String toString() { |
| | | return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE) |
¶Ô±ÈÐÂÎļþ |
| | |
| | | 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_password |
| | | * |
| | | * @author ard |
| | | * @date 2024-07-27 |
| | | */ |
| | | public class ArdTankLockPassword extends BaseEntity |
| | | { |
| | | private static final long serialVersionUID = 1L; |
| | | |
| | | /** ä¸»é® */ |
| | | private String id; |
| | | |
| | | /** éä¸»é® */ |
| | | @Excel(name = "é主é®") |
| | | private String lockId; |
| | | |
| | | /** å¯ç */ |
| | | @Excel(name = "å¯ç ") |
| | | private String password; |
| | | |
| | | /** ç¼å· */ |
| | | @Excel(name = "ç¼å·") |
| | | private String no; |
| | | |
| | | /** ä½¿ç¨æ¶é´ */ |
| | | @Excel(name = "ä½¿ç¨æ¶é´") |
| | | private String useTime; |
| | | |
| | | 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 setPassword(String password) |
| | | { |
| | | this.password = password; |
| | | } |
| | | |
| | | public String getPassword() |
| | | { |
| | | return password; |
| | | } |
| | | public void setNo(String no) |
| | | { |
| | | this.no = no; |
| | | } |
| | | |
| | | public String getNo() |
| | | { |
| | | return no; |
| | | } |
| | | public void setUseTime(String useTime) |
| | | { |
| | | this.useTime = useTime; |
| | | } |
| | | |
| | | public String getUseTime() |
| | | { |
| | | return useTime; |
| | | } |
| | | |
| | | @Override |
| | | public String toString() { |
| | | return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE) |
| | | .append("id", getId()) |
| | | .append("lockId", getLockId()) |
| | | .append("password", getPassword()) |
| | | .append("no", getNo()) |
| | | .append("createTime", getCreateTime()) |
| | | .append("useTime", getUseTime()) |
| | | .toString(); |
| | | } |
| | | } |
| | |
| | | import java.util.HashMap; |
| | | import java.util.List; |
| | | import java.util.Map; |
| | | import java.util.Set; |
| | | |
| | | public class PositionContainer { |
| | | |
| | |
| | | |
| | | private static Map<String,Thread> tankCarParkingAlarmTHread = new HashMap();//ä¾è½¦è¾åæ¾å¼å¸¸å车线ç¨:carIdï¼å¼å¸¸åè½¦çº¿ç¨ |
| | | |
| | | private static Map<String,Thread> carThreadMap = new HashMap();//车è¾ä¸»é®,线ç¨å®¹å¨ |
| | | private static Map<String, Set<String>> carLockPasswordMap = new HashMap();//ä¾çµç£éç¼å·åæ¾çæçå¯ç |
| | | |
| | | |
| | | |
| | | public static Map<String, List<ArdSyCarLock>> getTopicSubscribe() { |
| | | return topicSubscribe; |
| | |
| | | PositionContainer.tankCarParkingAlarmTHread = tankCarParkingAlarmTHread; |
| | | } |
| | | |
| | | public static Map<String, Thread> getCarThreadMap() { |
| | | return carThreadMap; |
| | | public static synchronized Map<String, Set<String>> getCarLockPasswordMap() { |
| | | return carLockPasswordMap; |
| | | } |
| | | |
| | | public static void setCarThreadMap(Map<String, Thread> carThreadMap) { |
| | | PositionContainer.carThreadMap = carThreadMap; |
| | | public static synchronized void setCarLockPasswordMap(Map<String, Set<String>> carLockPasswordMap) { |
| | | PositionContainer.carLockPasswordMap = carLockPasswordMap; |
| | | } |
| | | |
| | | } |
| | |
| | | ardTankLockState.setUniqueMark(uniqueMark); |
| | | ((ArdTankLockStateServiceImpl)SpringUtils.getBean("ardTankLockStateServiceImpl")).insertOrUpdateArdTankLockState(ardTankLockState); |
| | | } |
| | | }/*else if(code.equals("06")){//åè½ç 06为éå岿¥è¦ |
| | | }else if(code.equals("05")){//åè½ç 05为读åéå¯ç |
| | | Set<String> passwordAndTimeSet = new HashSet(); |
| | | for(int i = 1;i <= 10;i++){ |
| | | String passwordAndTime = data.substring(6 + 24*(i - 1),6 + 24 * i); |
| | | passwordAndTimeSet.add(passwordAndTime);//æååºå¯ç åä½¿ç¨æ¶é´ |
| | | } |
| | | if(passwordAndTimeSet.size() == 1){//å
¨é¨ä¸ºåå§å¯ç ï¼å仿°è®¾ç½® |
| | | Set<String> passwordSet = new HashSet(); |
| | | while(passwordSet.size() != 10){ |
| | | String password = ""; |
| | | for(int i = 0;i <= 5;i++){ |
| | | password = password + String.valueOf(10 * Math.random()).split("\\.")[0]; |
| | | } |
| | | passwordSet.add(password); |
| | | } |
| | | if(PositionContainer.getCarLockPasswordMap().get(lockNum) == null){ |
| | | PositionContainer.getCarLockPasswordMap().put(lockNum,passwordSet); |
| | | } |
| | | }else{//æ¥çåªäºå¯ç 使ç¨è¿ |
| | | for(String passwordAndTime : passwordAndTimeSet){ |
| | | String time = passwordAndTime.substring(12,24); |
| | | if(!time.equals("FFFFFFFFFFFF")){ |
| | | String passwordHex = passwordAndTime.substring(0,12);//16è¿å¶å¯ç |
| | | String password = "";//å®é
å¯ç |
| | | for(int i = 0;i <= 10;i = i + 2){ |
| | | String passwordHexByte = passwordHex.substring(i, i+2); |
| | | password = password + passwordHexByte.split("")[1]; |
| | | } |
| | | |
| | | }*/ |
| | | String useTimeHex = passwordAndTime.substring(12,24);//16è¿å¶æ¶é´ |
| | | String yearHex = useTimeHex.substring(0, 2); |
| | | String monthHex = useTimeHex.substring(2, 4); |
| | | String dayHex = useTimeHex.substring(4, 6); |
| | | String hourHex = useTimeHex.substring(6, 8); |
| | | String minuteHex = useTimeHex.substring(8, 10); |
| | | String secondHex = useTimeHex.substring(10, 12); |
| | | |
| | | String useTime = ""; |
| | | Integer yearNum = Integer.parseInt(yearHex, 16); |
| | | if(yearNum <= 9){ |
| | | useTime = "200" + yearNum + "-"; |
| | | }else{ |
| | | useTime = "20" + yearNum + "-"; |
| | | } |
| | | |
| | | Integer monthNum = Integer.parseInt(monthHex, 16); |
| | | if(monthNum <= 9){ |
| | | useTime = useTime + "0" + monthNum + "-"; |
| | | }else{ |
| | | useTime = useTime + monthNum + "-"; |
| | | } |
| | | |
| | | Integer dayNum = Integer.parseInt(dayHex, 16); |
| | | if(dayNum <= 9){ |
| | | useTime = useTime + "0" + dayNum + " "; |
| | | }else{ |
| | | useTime = useTime + dayNum + " "; |
| | | } |
| | | |
| | | Integer hourNum = Integer.parseInt(hourHex, 16); |
| | | if(hourNum <= 9){ |
| | | useTime = useTime + "0" + hourNum + ":"; |
| | | }else{ |
| | | useTime = useTime + hourNum + ":"; |
| | | } |
| | | |
| | | Integer minuteNum = Integer.parseInt(minuteHex, 16); |
| | | if(minuteNum <= 9){ |
| | | useTime = useTime + "0" + minuteNum + ":"; |
| | | }else{ |
| | | useTime = useTime + minuteNum + ":"; |
| | | } |
| | | |
| | | Integer secondNum = Integer.parseInt(secondHex, 16); |
| | | if(secondNum <= 9){ |
| | | useTime = useTime + "0" + secondNum; |
| | | }else{ |
| | | useTime = useTime + secondNum; |
| | | } |
| | | ((ArdTankLockPasswordServiceImpl)SpringUtils.getBean("ardTankLockPasswordServiceImpl")).updateArdTankLockPasswordByLockNum(lockNum,password,useTime); |
| | | } |
| | | } |
| | | } |
| | | } |
| | | }catch (Exception e){ |
| | | e.printStackTrace(); |
| | | return;//强转失败è¿å |
| | |
| | | public int deleteArdTankLockAndWallByCarIds(@Param("carIds") List<String> carIds); |
| | | |
| | | public String getIdByLockNum(String lockNum); |
| | | |
| | | public List<ArdTankLock> selectArdTankLockWithPassword(); |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.ruoyi.sy.mapper; |
| | | |
| | | import java.util.List; |
| | | import com.ruoyi.sy.domain.ArdTankLockPassword; |
| | | import org.apache.ibatis.annotations.Param; |
| | | |
| | | /** |
| | | * ç½è½¦éå¯ç Mapperæ¥å£ |
| | | * |
| | | * @author ard |
| | | * @date 2024-07-27 |
| | | */ |
| | | public interface ArdTankLockPasswordMapper |
| | | { |
| | | /** |
| | | * æ¥è¯¢ç½è½¦éå¯ç |
| | | * |
| | | * @param id ç½è½¦éå¯ç ä¸»é® |
| | | * @return ç½è½¦éå¯ç |
| | | */ |
| | | public ArdTankLockPassword selectArdTankLockPasswordById(String id); |
| | | |
| | | /** |
| | | * æ¥è¯¢ç½è½¦éå¯ç å表 |
| | | * |
| | | * @param ardTankLockPassword ç½è½¦éå¯ç |
| | | * @return ç½è½¦éå¯ç éå |
| | | */ |
| | | public List<ArdTankLockPassword> selectArdTankLockPasswordList(ArdTankLockPassword ardTankLockPassword); |
| | | |
| | | /** |
| | | * æ°å¢ç½è½¦éå¯ç |
| | | * |
| | | * @param ardTankLockPassword ç½è½¦éå¯ç |
| | | * @return ç»æ |
| | | */ |
| | | public int insertArdTankLockPassword(ArdTankLockPassword ardTankLockPassword); |
| | | |
| | | /** |
| | | * ä¿®æ¹ç½è½¦éå¯ç |
| | | * |
| | | * @param ardTankLockPassword ç½è½¦éå¯ç |
| | | * @return ç»æ |
| | | */ |
| | | public int updateArdTankLockPassword(ArdTankLockPassword ardTankLockPassword); |
| | | |
| | | /** |
| | | * å é¤ç½è½¦éå¯ç |
| | | * |
| | | * @param id ç½è½¦éå¯ç ä¸»é® |
| | | * @return ç»æ |
| | | */ |
| | | public int deleteArdTankLockPasswordById(String id); |
| | | |
| | | /** |
| | | * æ¹éå é¤ç½è½¦éå¯ç |
| | | * |
| | | * @param ids éè¦å é¤çæ°æ®ä¸»é®éå |
| | | * @return ç»æ |
| | | */ |
| | | public int deleteArdTankLockPasswordByIds(String[] ids); |
| | | |
| | | public int updateArdTankLockPasswordByLockNum(@Param("lockNum") String lockNum,@Param("password") String password,@Param("useTime") String useTime); |
| | | |
| | | public int insertArdTankLockPasswordList(@Param("ardTankLockPasswordList") List<ArdTankLockPassword> ardTankLockPasswordList); |
| | | |
| | | public List<ArdTankLockPassword> getLockPasswordByLockId(String lockId); |
| | | |
| | | public Long selectLockPasswordTotalBylockId(String lockId); |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.ruoyi.sy.service; |
| | | |
| | | import java.util.List; |
| | | import java.util.Map; |
| | | |
| | | import com.ruoyi.sy.domain.ArdTankLockPassword; |
| | | |
| | | /** |
| | | * ç½è½¦éå¯ç Serviceæ¥å£ |
| | | * |
| | | * @author ard |
| | | * @date 2024-07-27 |
| | | */ |
| | | public interface IArdTankLockPasswordService |
| | | { |
| | | /** |
| | | * æ¥è¯¢ç½è½¦éå¯ç |
| | | * |
| | | * @param id ç½è½¦éå¯ç ä¸»é® |
| | | * @return ç½è½¦éå¯ç |
| | | */ |
| | | public ArdTankLockPassword selectArdTankLockPasswordById(String id); |
| | | |
| | | /** |
| | | * æ¥è¯¢ç½è½¦éå¯ç å表 |
| | | * |
| | | * @param ardTankLockPassword ç½è½¦éå¯ç |
| | | * @return ç½è½¦éå¯ç éå |
| | | */ |
| | | public List<ArdTankLockPassword> selectArdTankLockPasswordList(ArdTankLockPassword ardTankLockPassword); |
| | | |
| | | /** |
| | | * æ°å¢ç½è½¦éå¯ç |
| | | * |
| | | * @param ardTankLockPassword ç½è½¦éå¯ç |
| | | * @return ç»æ |
| | | */ |
| | | public int insertArdTankLockPassword(ArdTankLockPassword ardTankLockPassword); |
| | | |
| | | /** |
| | | * ä¿®æ¹ç½è½¦éå¯ç |
| | | * |
| | | * @param ardTankLockPassword ç½è½¦éå¯ç |
| | | * @return ç»æ |
| | | */ |
| | | public int updateArdTankLockPassword(ArdTankLockPassword ardTankLockPassword); |
| | | |
| | | /** |
| | | * æ¹éå é¤ç½è½¦éå¯ç |
| | | * |
| | | * @param ids éè¦å é¤çç½è½¦éå¯ç 主é®éå |
| | | * @return ç»æ |
| | | */ |
| | | public int deleteArdTankLockPasswordByIds(String[] ids); |
| | | |
| | | /** |
| | | * å é¤ç½è½¦éå¯ç ä¿¡æ¯ |
| | | * |
| | | * @param id ç½è½¦éå¯ç ä¸»é® |
| | | * @return ç»æ |
| | | */ |
| | | public int deleteArdTankLockPasswordById(String id); |
| | | |
| | | public int updateArdTankLockPasswordByLockNum(String lockNum, String password, String useTime); |
| | | |
| | | public Map<String,Object> getLockPasswordByLockId(Map<String,Object> para); |
| | | } |
| | |
| | | |
| | | public void sendLockState(String userId,String syUserId,String syPassword); |
| | | |
| | | public void getAlarm(String syUserId,String syPassword); |
| | | public void readPassword(String userId,String password); |
| | | |
| | | //public void getAlarm(String syUserId,String syPassword); |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.ruoyi.sy.service.impl; |
| | | |
| | | import java.util.HashMap; |
| | | import java.util.List; |
| | | |
| | | import com.github.pagehelper.PageHelper; |
| | | import com.ruoyi.common.utils.DateUtils; |
| | | |
| | | import com.ruoyi.common.utils.uuid.IdUtils; |
| | | 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.ArdTankLockPasswordMapper; |
| | | import com.ruoyi.sy.domain.ArdTankLockPassword; |
| | | import com.ruoyi.sy.service.IArdTankLockPasswordService; |
| | | |
| | | import javax.annotation.Resource; |
| | | |
| | | /** |
| | | * ç½è½¦éå¯ç Serviceä¸å¡å±å¤ç |
| | | * |
| | | * @author ard |
| | | * @date 2024-07-27 |
| | | */ |
| | | @Service |
| | | public class ArdTankLockPasswordServiceImpl implements IArdTankLockPasswordService { |
| | | @Resource |
| | | private ArdTankLockPasswordMapper ardTankLockPasswordMapper; |
| | | |
| | | /** |
| | | * æ¥è¯¢ç½è½¦éå¯ç |
| | | * |
| | | * @param id ç½è½¦éå¯ç ä¸»é® |
| | | * @return ç½è½¦éå¯ç |
| | | */ |
| | | @Override |
| | | public ArdTankLockPassword selectArdTankLockPasswordById(String id) { |
| | | return ardTankLockPasswordMapper.selectArdTankLockPasswordById(id); |
| | | } |
| | | |
| | | /** |
| | | * æ¥è¯¢ç½è½¦éå¯ç å表 |
| | | * |
| | | * @param ardTankLockPassword ç½è½¦éå¯ç |
| | | * @return ç½è½¦éå¯ç |
| | | */ |
| | | @Override |
| | | public List<ArdTankLockPassword> selectArdTankLockPasswordList(ArdTankLockPassword ardTankLockPassword) { |
| | | return ardTankLockPasswordMapper.selectArdTankLockPasswordList(ardTankLockPassword); |
| | | } |
| | | |
| | | /** |
| | | * æ°å¢ç½è½¦éå¯ç |
| | | * |
| | | * @param ardTankLockPassword ç½è½¦éå¯ç |
| | | * @return ç»æ |
| | | */ |
| | | @Override |
| | | public int insertArdTankLockPassword(ArdTankLockPassword ardTankLockPassword) { |
| | | ardTankLockPassword.setId(IdUtils.simpleUUID()); |
| | | ardTankLockPassword.setCreateTime(DateUtils.getNowDate()); |
| | | return ardTankLockPasswordMapper.insertArdTankLockPassword(ardTankLockPassword); |
| | | } |
| | | |
| | | /** |
| | | * ä¿®æ¹ç½è½¦éå¯ç |
| | | * |
| | | * @param ardTankLockPassword ç½è½¦éå¯ç |
| | | * @return ç»æ |
| | | */ |
| | | @Override |
| | | public int updateArdTankLockPassword(ArdTankLockPassword ardTankLockPassword) { |
| | | return ardTankLockPasswordMapper.updateArdTankLockPassword(ardTankLockPassword); |
| | | } |
| | | |
| | | /** |
| | | * æ¹éå é¤ç½è½¦éå¯ç |
| | | * |
| | | * @param ids éè¦å é¤çç½è½¦éå¯ç ä¸»é® |
| | | * @return ç»æ |
| | | */ |
| | | @Override |
| | | public int deleteArdTankLockPasswordByIds(String[] ids) { |
| | | return ardTankLockPasswordMapper.deleteArdTankLockPasswordByIds(ids); |
| | | } |
| | | |
| | | /** |
| | | * å é¤ç½è½¦éå¯ç ä¿¡æ¯ |
| | | * |
| | | * @param id ç½è½¦éå¯ç ä¸»é® |
| | | * @return ç»æ |
| | | */ |
| | | @Override |
| | | public int deleteArdTankLockPasswordById(String id) { |
| | | return ardTankLockPasswordMapper.deleteArdTankLockPasswordById(id); |
| | | } |
| | | |
| | | @Override |
| | | public int updateArdTankLockPasswordByLockNum(String lockNum, String password, String useTime) { |
| | | int result = ardTankLockPasswordMapper.updateArdTankLockPasswordByLockNum(lockNum,password,useTime); |
| | | return result; |
| | | } |
| | | |
| | | @Override |
| | | public Map<String, Object> getLockPasswordByLockId(Map<String,Object> para) { |
| | | String lockId = (String) para.get("lockId"); |
| | | |
| | | //å页屿§ |
| | | Integer pageNum = (Integer) para.get("pageNum"); |
| | | Integer pageSize = (Integer) para.get("pageSize"); |
| | | |
| | | PageHelper.startPage(pageNum, pageSize);//å页 |
| | | Map<String,Object> resultMap = new HashMap(); |
| | | List<ArdTankLockPassword> resultList = ardTankLockPasswordMapper.getLockPasswordByLockId(lockId); |
| | | Long total = ardTankLockPasswordMapper.selectLockPasswordTotalBylockId(lockId); |
| | | resultMap.put("list",resultList); |
| | | resultMap.put("total",total); |
| | | return resultMap; |
| | | } |
| | | } |
| | |
| | | package com.ruoyi.sy.service.impl; |
| | | |
| | | import java.io.IOException; |
| | | import java.nio.charset.StandardCharsets; |
| | | import java.text.SimpleDateFormat; |
| | | import java.util.*; |
| | | |
| | | import com.alibaba.fastjson.JSON; |
| | | 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.ArdSyCar; |
| | | import com.ruoyi.sy.domain.ArdSyUser; |
| | | import com.ruoyi.sy.domain.ArdTankLockState; |
| | | import com.ruoyi.sy.domain.*; |
| | | import com.ruoyi.sy.gps31.PositionContainer; |
| | | import com.ruoyi.sy.mapper.*; |
| | | import com.ruoyi.system.mapper.SysConfigMapper; |
| | | import com.ruoyi.utils.forest.SYClient; |
| | |
| | | |
| | | import java.util.stream.Collectors; |
| | | |
| | | import com.ruoyi.sy.domain.ArdTankLock; |
| | | import com.ruoyi.sy.service.IArdTankLockService; |
| | | |
| | | import javax.annotation.Resource; |
| | |
| | | private ArdTankLockStateMapper ardTankLockStateMapper; |
| | | |
| | | @Resource |
| | | private ArdTankLockPasswordMapper ardTankLockPasswordMapper; |
| | | |
| | | @Resource |
| | | private SYClient sYClient; |
| | | |
| | | private Map<String,Thread> alarmMap = new HashMap();//çµç£éå岿¥è¦çº¿ç¨å®¹å¨ |
| | | //private Map<String,Thread> alarmMap = new HashMap();//çµç£éå岿¥è¦çº¿ç¨å®¹å¨ |
| | | |
| | | /** |
| | | * æ¥è¯¢çµç£é |
| | |
| | | data.put("40002",result); |
| | | WebSocketUtils.sendMessage(ONLINE_USER_SESSIONS.get(userId), JSON.toJSONString(data)); |
| | | } |
| | | return; |
| | | } |
| | | |
| | | @Override |
| | | public void readPassword(String userId,String password) { |
| | | List<SysConfig> syURLResult = sysConfigMapper.selectByType("syCarPT"); |
| | | String syURL = ""; |
| | | if(syURLResult.size() != 0){ |
| | | syURL = syURLResult.get(0).getConfigValue(); |
| | | }else{ |
| | | return; |
| | | } |
| | | String passwordMd5 = DigestUtils.md5Hex(password); |
| | | Map<String, Object> LogInResult = sYClient.logIn(syURL, passwordMd5, userId); |
| | | String sessionId = (String) LogInResult.get("sessionId"); |
| | | |
| | | String finalSyURL = syURL; |
| | | Thread passwordThread = new Thread(syURL){ |
| | | @Override |
| | | public void run() { |
| | | List<ArdTankLock> ardTankLockResult = ardTankLockMapper.selectArdTankLockWithPassword(); |
| | | for(ArdTankLock ardTankLock : ardTankLockResult){ |
| | | Thread lockThread = new Thread(){//读åå¯ç |
| | | @Override |
| | | public void run() { |
| | | if(ardTankLock.getArdTankLockPasswords().isEmpty()){//æ å¯ç¨å¯ç |
| | | if(PositionContainer.getCarLockPasswordMap().get(ardTankLock.getLockNum()) != null){//æ°è®¾ç½®ç10ç»å¯ç |
| | | Set<String> passwordSet = PositionContainer.getCarLockPasswordMap().get(ardTankLock.getLockNum()); |
| | | //设置æ°å¯ç |
| | | String lockNumHead = ardTankLock.getLockNum().substring(0,2); |
| | | String lockNumTail = ardTankLock.getLockNum().substring(2,4); |
| | | String code = "04"; |
| | | Integer check = Integer.parseInt(lockNumHead, 16) + Integer.parseInt(lockNumTail, 16) + Integer.parseInt(code, 16);; |
| | | for(String password : passwordSet){ |
| | | String[] passwordArray = password.split(""); |
| | | for(String p : passwordArray){ |
| | | check = check + Integer.parseInt(p); |
| | | } |
| | | } |
| | | String checkNum = Integer.toHexString(check); |
| | | if(checkNum.length() == 1){ |
| | | checkNum = "0" + checkNum; |
| | | }else if(checkNum.length() > 2){ |
| | | checkNum = checkNum.substring(checkNum.length() - 2,checkNum.length()); |
| | | } |
| | | String data = ardTankLock.getLockNum() + "04"; |
| | | for(String password : passwordSet){ |
| | | String[] passwordArray = password.split(""); |
| | | for(String p : passwordArray){ |
| | | data = data + "0" + p; |
| | | } |
| | | } |
| | | data = data + checkNum; |
| | | String paramsStr = "%7B%22type%22%3A%22ff%22%2C%22dataCnt%22%3A%22" + data + "%22%7D"; |
| | | Map<String,Object> syResult = sendCmd(finalSyURL,userId,ardTankLock.getCarId(),199,"DataDownTransfer", paramsStr,sessionId); |
| | | if(((String)syResult.get("rspCode")).equals("0")){ |
| | | List<ArdTankLockPassword> ardTankLockPasswordList = new ArrayList(); |
| | | int i = 0; |
| | | for(String password : passwordSet){ |
| | | ArdTankLockPassword ardTankLockPassword = new ArdTankLockPassword(); |
| | | ardTankLockPassword.setId(IdUtils.simpleUUID()); |
| | | ardTankLockPassword.setLockId(ardTankLock.getLockNum());//æåéç¼å· |
| | | ardTankLockPassword.setPassword(password); |
| | | ardTankLockPassword.setNo(String.valueOf(i)); |
| | | ardTankLockPasswordList.add(ardTankLockPassword); |
| | | i = i + 1; |
| | | } |
| | | int result = ardTankLockPasswordMapper.insertArdTankLockPasswordList(ardTankLockPasswordList); |
| | | PositionContainer.getCarLockPasswordMap().remove(ardTankLock.getLockNum()); |
| | | } |
| | | }else{//读åå¯ç |
| | | /*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("05", 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() + "05" + checkNum + "%22%7D"; |
| | | |
| | | sendCmd(finalSyURL,userId,ardTankLock.getCarId(),199,"DataDownTransfer", paramsStr,sessionId);*/ |
| | | Set<String> passwordSet = new HashSet(); |
| | | while(passwordSet.size() != 10){ |
| | | String password = ""; |
| | | for(int i = 0;i <= 5;i++){ |
| | | password = password + String.valueOf(10 * Math.random()).split("\\.")[0]; |
| | | } |
| | | passwordSet.add(password); |
| | | } |
| | | System.out.println("1111111111111111"); |
| | | System.out.println(passwordSet); |
| | | //设置æ°å¯ç |
| | | String lockNumHead = ardTankLock.getLockNum().substring(0,2); |
| | | String lockNumTail = ardTankLock.getLockNum().substring(2,4); |
| | | String code = "04"; |
| | | Integer check = Integer.parseInt(lockNumHead, 16) + Integer.parseInt(lockNumTail, 16) + Integer.parseInt(code, 16);; |
| | | for(String password : passwordSet){ |
| | | String[] passwordArray = password.split(""); |
| | | for(String p : passwordArray){ |
| | | check = check + Integer.parseInt(p); |
| | | } |
| | | } |
| | | String checkNum = Integer.toHexString(check); |
| | | if(checkNum.length() == 1){ |
| | | checkNum = "0" + checkNum; |
| | | }else if(checkNum.length() > 2){ |
| | | checkNum = checkNum.substring(checkNum.length() - 2,checkNum.length()); |
| | | } |
| | | String data = ardTankLock.getLockNum() + "04"; |
| | | for(String password : passwordSet){ |
| | | String[] passwordArray = password.split(""); |
| | | for(String p : passwordArray){ |
| | | data = data + "0" + p; |
| | | } |
| | | } |
| | | data = data + checkNum; |
| | | String paramsStr = "%7B%22type%22%3A%22ff%22%2C%22dataCnt%22%3A%22" + data + "%22%7D"; |
| | | Map<String,Object> syResult = sendCmd(finalSyURL,userId,ardTankLock.getCarId(),199,"DataDownTransfer", paramsStr,sessionId); |
| | | if(((String)syResult.get("rspCode")).equals("0")){ |
| | | List<ArdTankLockPassword> ardTankLockPasswordList = new ArrayList(); |
| | | int i = 0; |
| | | for(String password : passwordSet){ |
| | | ArdTankLockPassword ardTankLockPassword = new ArdTankLockPassword(); |
| | | ardTankLockPassword.setId(IdUtils.simpleUUID()); |
| | | ardTankLockPassword.setLockId(ardTankLock.getLockNum());//æåéç¼å· |
| | | ardTankLockPassword.setPassword(password); |
| | | ardTankLockPassword.setNo(String.valueOf(i)); |
| | | ardTankLockPasswordList.add(ardTankLockPassword); |
| | | i = i + 1; |
| | | } |
| | | int result = ardTankLockPasswordMapper.insertArdTankLockPasswordList(ardTankLockPasswordList); |
| | | } |
| | | } |
| | | }else{ |
| | | 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("05", 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() + "05" + checkNum + "%22%7D"; |
| | | |
| | | sendCmd(finalSyURL,userId,ardTankLock.getCarId(),199,"DataDownTransfer", paramsStr,sessionId); |
| | | } |
| | | } |
| | | }; |
| | | lockThread.start(); |
| | | } |
| | | |
| | | } |
| | | }; |
| | | passwordThread.start(); |
| | | } |
| | | |
| | | /*@Override |
| | | public void getAlarm(String syUserId,String syPassword) { |
| | | List<SysConfig> syURLResult = sysConfigMapper.selectByType("syCarPT"); |
| | | String syURL = ""; |
| | |
| | | thread.start(); |
| | | alarmMap.put(ardTankLock.getLockNum(),thread); |
| | | } |
| | | } |
| | | }*/ |
| | | |
| | | public Map<String,Object> sendCmd(String syURL,String userId,String carId,Integer cmdId,String cmd,String paramsStr,String sessionId){ |
| | | OkHttpClient okHttpClient = new OkHttpClient(); |
| | |
| | | </association> |
| | | </resultMap> |
| | | |
| | | <resultMap type="ArdTankLock" id="ArdTankLockWithPasswordResult"> |
| | | <result property="id" column="id" /> |
| | | <result property="lockNum" column="lock_num" /> |
| | | <result property="lockName" column="lock_name" /> |
| | | <result property="imgPositionTop" column="img_position_top" /> |
| | | <result property="imgPositionLeft" column="img_position_left" /> |
| | | <result property="carId" column="car_id" /> |
| | | <result property="enable" column="enable" /> |
| | | <result property="restartState" column="restart_state" /> |
| | | <result property="onlineTime" column="online_time" /> |
| | | <collection property="ardTankLockPasswords" ofType="com.ruoyi.sy.domain.ArdTankLockPassword"> |
| | | <result property="id" column="pid" /> |
| | | <result property="lockId" column="lock_id" /> |
| | | <result property="password" column="password" /> |
| | | <result property="no" column="no" /> |
| | | <result property="createTime" column="create_time" /> |
| | | <result property="useTime" column="use_time" /> |
| | | </collection> |
| | | </resultMap> |
| | | |
| | | <sql id="selectArdTankLockVo"> |
| | | select id, lock_num, lock_name, img_position_top, img_position_left, car_id, enable, restart_state, online_time from ard_tank_lock |
| | | </sql> |
| | |
| | | <select id="getIdByLockNum" resultType="java.lang.String" parameterType="java.lang.String"> |
| | | select id from ard_tank_lock atl where atl.lock_num = #{lockNum} |
| | | </select> |
| | | |
| | | <select id="selectArdTankLockWithPassword" resultMap="ArdTankLockWithPasswordResult" > |
| | | select atl."id",atl.lock_num,atl.lock_name,atl.img_position_top, |
| | | atl.img_position_left,atl.car_id,atl."enable",atl.restart_state, |
| | | atl.online_time,atlp."id" as pid,atlp.lock_id,atlp."password", |
| | | atlp.create_time,atlp.use_time from ard_tank_lock atl |
| | | left join ard_tank_lock_password atlp on atl.id = atlp.lock_id and use_time is null |
| | | </select> |
| | | </mapper> |
¶Ô±ÈÐÂÎļþ |
| | |
| | | <?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.ArdTankLockPasswordMapper"> |
| | | |
| | | <resultMap type="ArdTankLockPassword" id="ArdTankLockPasswordResult"> |
| | | <result property="id" column="id" /> |
| | | <result property="lockId" column="lock_id" /> |
| | | <result property="password" column="password" /> |
| | | <result property="no" column="no" /> |
| | | <result property="createTime" column="create_time" /> |
| | | <result property="useTime" column="use_time" /> |
| | | </resultMap> |
| | | |
| | | <sql id="selectArdTankLockPasswordVo"> |
| | | select id, lock_id, password, no, create_time, use_time from ard_tank_lock_password |
| | | </sql> |
| | | |
| | | <select id="selectArdTankLockPasswordList" parameterType="ArdTankLockPassword" resultMap="ArdTankLockPasswordResult"> |
| | | <include refid="selectArdTankLockPasswordVo"/> |
| | | <where> |
| | | <if test="lockId != null and lockId != ''"> and lock_id = #{lockId}</if> |
| | | <if test="password != null and password != ''"> and password = #{password}</if> |
| | | <if test="no != null and no != ''"> and no = #{no}</if> |
| | | <if test="useTime != null and useTime != ''"> and use_time = #{useTime}</if> |
| | | </where> |
| | | </select> |
| | | |
| | | <select id="selectArdTankLockPasswordById" parameterType="String" resultMap="ArdTankLockPasswordResult"> |
| | | <include refid="selectArdTankLockPasswordVo"/> |
| | | where id = #{id} |
| | | </select> |
| | | |
| | | <insert id="insertArdTankLockPassword" parameterType="ArdTankLockPassword"> |
| | | insert into ard_tank_lock_password |
| | | <trim prefix="(" suffix=")" suffixOverrides=","> |
| | | <if test="id != null">id,</if> |
| | | <if test="lockId != null">lock_id,</if> |
| | | <if test="password != null">password,</if> |
| | | <if test="no != null">no,</if> |
| | | <if test="createTime != null">create_time,</if> |
| | | <if test="useTime != null">use_time,</if> |
| | | </trim> |
| | | <trim prefix="values (" suffix=")" suffixOverrides=","> |
| | | <if test="id != null">#{id},</if> |
| | | <if test="lockId != null">#{lockId},</if> |
| | | <if test="password != null">#{password},</if> |
| | | <if test="no != null">#{no},</if> |
| | | <if test="createTime != null">#{createTime},</if> |
| | | <if test="useTime != null">#{useTime},</if> |
| | | </trim> |
| | | </insert> |
| | | |
| | | <update id="updateArdTankLockPassword" parameterType="ArdTankLockPassword"> |
| | | update ard_tank_lock_password |
| | | <trim prefix="SET" suffixOverrides=","> |
| | | <if test="lockId != null">lock_id = #{lockId},</if> |
| | | <if test="password != null">password = #{password},</if> |
| | | <if test="no != null">no = #{no},</if> |
| | | <if test="createTime != null">create_time = #{createTime},</if> |
| | | <if test="useTime != null">use_time = #{useTime},</if> |
| | | </trim> |
| | | where id = #{id} |
| | | </update> |
| | | |
| | | <delete id="deleteArdTankLockPasswordById" parameterType="String"> |
| | | delete from ard_tank_lock_password where id = #{id} |
| | | </delete> |
| | | |
| | | <delete id="deleteArdTankLockPasswordByIds" parameterType="String"> |
| | | delete from ard_tank_lock_password where id in |
| | | <foreach item="id" collection="array" open="(" separator="," close=")"> |
| | | #{id} |
| | | </foreach> |
| | | </delete> |
| | | |
| | | <update id="updateArdTankLockPasswordByLockNum" parameterType="java.lang.String"> |
| | | update ard_tank_lock_password set use_time = #{useTime} |
| | | where "password" = #{password} |
| | | and lock_id = (select id from ard_tank_lock where lock_num = #{lockNum}) |
| | | </update> |
| | | |
| | | <insert id="insertArdTankLockPasswordList" > |
| | | insert into ard_tank_lock_password(id,lock_id,password,no,create_time) values |
| | | <foreach collection ="ardTankLockPasswordList" item="ardTankLockPassword" separator =","> |
| | | (#{ardTankLockPassword.id},(select atl.id from ard_tank_lock atl where atl.lock_num = #{ardTankLockPassword.lockId}), |
| | | #{ardTankLockPassword.password},#{ardTankLockPassword.no},to_char(now(), 'YYYY-MM-DD HH24:MI:SS')) |
| | | </foreach> |
| | | </insert> |
| | | |
| | | <select id="getLockPasswordByLockId" parameterType="java.lang.String" resultMap="ArdTankLockPasswordResult"> |
| | | select atlp.id,atlp.lock_id,atlp."password",atlp."no", |
| | | atlp.create_time,coalesce(atlp.use_time,'') as use_time |
| | | from ard_tank_lock_password atlp |
| | | where lock_id = #{lockId} order by use_time asc,no asc |
| | | </select> |
| | | |
| | | <select id="selectLockPasswordTotalBylockId" parameterType="java.lang.String" resultType="java.lang.Long"> |
| | | select count(*) from ard_tank_lock_password atlp where lock_id = #{lockId} |
| | | </select> |
| | | </mapper> |