From 08826bc3017e9f25edc4b9b95ca365169846d1e9 Mon Sep 17 00:00:00 2001 From: aijinhui <aijinhui> Date: 星期五, 12 一月 2024 17:29:27 +0800 Subject: [PATCH] 锁 --- ard-work/src/main/java/com/ruoyi/sy/service/impl/ArdSyCarLockServiceImpl.java | 276 ++++++++++++++++++++++++++++++++++++++++++++++++++++--- 1 files changed, 260 insertions(+), 16 deletions(-) diff --git a/ard-work/src/main/java/com/ruoyi/sy/service/impl/ArdSyCarLockServiceImpl.java b/ard-work/src/main/java/com/ruoyi/sy/service/impl/ArdSyCarLockServiceImpl.java index 631a1d0..6f7c357 100644 --- a/ard-work/src/main/java/com/ruoyi/sy/service/impl/ArdSyCarLockServiceImpl.java +++ b/ard-work/src/main/java/com/ruoyi/sy/service/impl/ArdSyCarLockServiceImpl.java @@ -1,30 +1,39 @@ package com.ruoyi.sy.service.impl; +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.ruoyi.common.core.domain.AjaxResult; import com.ruoyi.common.core.domain.entity.SysDept; -import com.ruoyi.sy.domain.ArdAccessFence; import com.ruoyi.sy.domain.ArdSyCar; import com.ruoyi.sy.domain.ArdSyCarLock; import com.ruoyi.sy.domain.ArdSyCarRtu; -import com.ruoyi.sy.mapper.ArdAccessFenceMapper; import com.ruoyi.sy.mapper.ArdSyCarLockMapper; import com.ruoyi.sy.mapper.ArdSyCarMapper; import com.ruoyi.sy.mapper.ArdSyCarRtuMapper; +import com.ruoyi.sy.param.AddRtuParam; +import com.ruoyi.sy.param.LockTypeParam; +import com.ruoyi.sy.param.RtuTypeParam; import com.ruoyi.sy.service.ArdSyCarLockService; -import com.ruoyi.sy.vo.CarLockVo; import com.ruoyi.sy.vo.CarVo; import com.ruoyi.sy.vo.RtuVo; +import com.ruoyi.system.mapper.SysConfigMapper; import com.ruoyi.system.mapper.SysDeptMapper; +import com.ruoyi.utils.qymqtt.newM.EmqClient; +import com.ruoyi.utils.qymqtt.newM.QosEnum; +import com.ruoyi.utils.qymqtt.oldM.MqttCustomerClient; +import lombok.extern.slf4j.Slf4j; +import org.eclipse.paho.client.mqttv3.MqttException; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; -import java.util.ArrayList; -import java.util.List; -import java.util.UUID; +import java.util.*; +import java.util.concurrent.TimeUnit; /** * @author Administrator */ +@Slf4j(topic = "mqttCar") @Service public class ArdSyCarLockServiceImpl implements ArdSyCarLockService { @@ -36,6 +45,8 @@ private ArdSyCarRtuMapper rtuMapper; @Autowired private ArdSyCarLockMapper lockMapper; + @Autowired + private SysConfigMapper configMapper; @Override @@ -55,18 +66,24 @@ } @Override - public int addRtu(String carId) { + public int addRtu(AddRtuParam addRtuParam) { ArdSyCarRtu ardSyCarRtu = new ArdSyCarRtu(); ardSyCarRtu.setId(String.valueOf(UUID.randomUUID())); - ardSyCarRtu.setCarId(carId); - ardSyCarRtu.setTopicPublish("/p"+carId+"/"); - ardSyCarRtu.setTopicSubscribe("/p"+carId+"/set/"); - rtuMapper.insert(ardSyCarRtu); + ardSyCarRtu.setCarId(addRtuParam.getCarId()); + ardSyCarRtu.setTopicPublish("/p"+addRtuParam.getCarId()+"/set/"); + ardSyCarRtu.setTopicSubscribe("/p"+addRtuParam.getCarId()+"/"); + ardSyCarRtu.setInstallType(addRtuParam.getInstallType()); + ardSyCarRtu.setUnloadType(addRtuParam.getUnloadType()); + int num = rtuMapper.insert(ardSyCarRtu); QueryWrapper<ArdSyCar> queryWrapper = new QueryWrapper<>(); - queryWrapper.eq("car_id",carId); + queryWrapper.eq("car_id",addRtuParam.getCarId()); ArdSyCar ardSyCar = ardSyCarMapper.selectOne(queryWrapper); ardSyCar.setReserved1(ardSyCarRtu.getId()); - return ardSyCarMapper.updateById(ardSyCar); + ardSyCarMapper.updateById(ardSyCar); + MqttCustomerClient mqttCustomerClient = new MqttCustomerClient(); + mqttCustomerClient.connect(addRtuParam.getCarId()+"mqtt"); + mqttCustomerClient.subscribe(ardSyCarRtu.getTopicSubscribe()); + return num; } @Override @@ -79,6 +96,11 @@ @Override public int delCar(String id) { + ArdSyCarRtu ardSyCarRtu = rtuMapper.selectById(id); + String subscribe = ardSyCarRtu.getTopicSubscribe(); + MqttCustomerClient mqttCustomerClient = new MqttCustomerClient(); + mqttCustomerClient.connect(ardSyCarRtu.getCarId()+"del"); + mqttCustomerClient.unSubscribe(subscribe); rtuMapper.deleteById(id); QueryWrapper<ArdSyCarLock> queryWrapper1 = new QueryWrapper<>(); queryWrapper1.eq("rtu_id",id); @@ -108,9 +130,15 @@ @Override public List<ArdSyCarLock> carLock(String rtu) { - QueryWrapper<ArdSyCarLock> queryWrapper = new QueryWrapper<>(); - queryWrapper.eq("rtu_id",rtu); - return lockMapper.selectList(queryWrapper); +// List<ArdSyCarLock> locks = new ArrayList<>(); +// try { +// QueryWrapper<ArdSyCarLock> queryWrapper = new QueryWrapper<>(); +// queryWrapper.eq("rtu_id",rtu); +// locks = lockMapper.selectList(queryWrapper); +// }catch (Exception e){ +// +// } + return lockMapper.lockList(rtu); } @Override @@ -150,6 +178,8 @@ rtuVo.setRtu(ardSyCar.getReserved1()); rtuVo.setTopicPublish(ardSyCarRtu.getTopicPublish()); rtuVo.setTopicSubscribe(ardSyCarRtu.getTopicSubscribe()); + rtuVo.setInstallType(ardSyCarRtu.getInstallType()); + rtuVo.setUnloadType(ardSyCarRtu.getUnloadType()); return rtuVo; } @@ -163,7 +193,220 @@ return ardSyCarMapper.updateById(ardSyCar); } + @Override + public List<CarVo> queryCar(List<String> list) { +// QueryWrapper<ArdSyCar> queryWrapper = new QueryWrapper<>(); +// if(list.size()>0){ +// queryWrapper.ne("reserved_1","").notIn("car_id",list); +// }else { +// queryWrapper.ne("reserved_1",""); +// } +// List<ArdSyCar> ardSyCars = ardSyCarMapper.selectList(queryWrapper); + List<ArdSyCar> ardSyCars = new ArrayList<>(); + if(list.size()>0){ + QueryWrapper<ArdSyCar> queryWrapper = new QueryWrapper<>(); + queryWrapper.notIn("car_id",list); + ardSyCars = ardSyCarMapper.selectList(queryWrapper); + }else { + ardSyCars = ardSyCarMapper.selectList(null); + } + return carAnalysis(ardSyCars); + } + @Override + public List<CarVo> addCarBefore(String id) { + QueryWrapper<ArdSyCar> ardSyCarQueryWrapper = new QueryWrapper<>(); + ardSyCarQueryWrapper.eq("car_id",id); + List<ArdSyCar> carList = ardSyCarMapper.selectList(ardSyCarQueryWrapper); + return carAnalysis(carList); + } + + @Override + public List<ArdSyCarLock> data(String msg) { +// String pattern = "0.00"; // 鎸囧畾淇濈暀涓や綅灏忔暟鐨勬牸寮� +// DecimalFormat decimalFormat = new DecimalFormat(pattern); // + JSONObject jsonObject = JSONObject.parseObject(msg); + List<ArdSyCarLock> lockList = new ArrayList<>(); + ArdSyCarLock ardSyCarLock1 = new ArdSyCarLock(); + ardSyCarLock1.setRelay("A01"); +// ardSyCarLock1.setRelayInfo(String.valueOf(jsonObject.getInteger("A01"))); + ardSyCarLock1.setRelayInfo(jsonObject.getInteger("A01")); + ardSyCarLock1.setCurrents("C01"); +// ardSyCarLock1.setCurrentInfo(decimalFormat.format(jsonObject.getDouble("C01"))); + ardSyCarLock1.setCurrentInfo(jsonObject.getDouble("C01")); + lockList.add(ardSyCarLock1); + ArdSyCarLock ardSyCarLock2 = new ArdSyCarLock(); + ardSyCarLock2.setRelay("A02"); + ardSyCarLock2.setRelayInfo(jsonObject.getInteger("A02")); + ardSyCarLock2.setCurrents("C02"); + ardSyCarLock2.setCurrentInfo(jsonObject.getDouble("C02")); + lockList.add(ardSyCarLock2); + return lockList; + } + + @Override + public int updLock(ArdSyCarLock ardSyCarLock) { + return lockMapper.updateById(ardSyCarLock); + } + + @Override + public ArdSyCarLock getCurrentInfo(String Rtu, String currents) { + QueryWrapper<ArdSyCarLock> queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("rtu_id",Rtu).eq("currents",currents); + return lockMapper.selectOne(queryWrapper); + } + + @Override + public AjaxResult seal(RtuTypeParam rtuTypeParam) { + QueryWrapper<ArdSyCarRtu> queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("car_id",rtuTypeParam.getCarId()); + ArdSyCarRtu ardSyCarRtu = rtuMapper.selectOne(queryWrapper); + //1瑙e皝 + if(rtuTypeParam.getType()==1){ +// Map<String,Object> map = new HashMap<>(); +// map.put("A01", 110000);//瀵奸�氱涓�璺户鐢靛櫒 +// map.put("A02", 110000);//瀵奸�氱浜岃矾缁х數鍣� +// map.put("res", String.valueOf(System.currentTimeMillis())); +// String mapString = JSON.toJSONString(map); + String mapString = "{\"A01\":110000,\"A02\":110000,\"res\":\""+String.valueOf(System.currentTimeMillis())+"\"}"; + log.debug("瑙e皝锛�"+mapString); + EmqClient emqClient = new EmqClient(rtuTypeParam.getCarId()+"mqttPublish"+UUID.randomUUID()); + emqClient.connect(); + emqClient.publish(ardSyCarRtu.getTopicPublish(),mapString, QosEnum.QoS2,false); + return AjaxResult.success("瑙e皝鍛戒护鍙戦�佹垚鍔燂紒"); +// return AjaxResult.success(mqttOnce.publishCar(rtuTypeParam.getCarId(),ardSyCarRtu.getTopicPublish(),String.valueOf(new com.alibaba.fastjson2.JSONObject(map)),"瑙e皝")); + } + //0鏂藉皝 + if(rtuTypeParam.getType()==0){ + //閿佸紑鍏崇姸鎬� + int lockCloseNum = 0; + //鏌ヨ閿佷俊鎭� + List<ArdSyCarLock> ardSyCarLocks = carLock(ardSyCarRtu.getId()); + String mapString1 = "{\"A01\":100000,\"A02\":100000,\"res\":\""+String.valueOf(System.currentTimeMillis())+"\"}"; + System.out.println("鏂藉皝锛�"+mapString1); + EmqClient emqClient1 = new EmqClient(rtuTypeParam.getCarId()+"mqttPublish"+UUID.randomUUID()); + emqClient1.connect(); + emqClient1.publish(ardSyCarRtu.getTopicPublish(),mapString1, QosEnum.QoS2,false); + for (int j = 0; j < ardSyCarLocks.size(); j++) { + ArdSyCarLock ardSyCarLock = ardSyCarLocks.get(j); + String currents = ardSyCarLock.getCurrents(); + Double currentInfo = ardSyCarLock.getCurrentInfo(); + //鐢垫祦鍊间负4.0鏄叧閿佺姸鎬� + if(currentInfo.equals(4.00) || currentInfo.equals(4)){ + lockCloseNum += 1; + }else { + String key = ""; + if(currents.equals("C01")){ + key = "D03"; + }else if(currents.equals("C02")){ + key = "D04"; + } +// Map<String,Object> map = new HashMap(); +// map.put(key, 0.01); +// map.put("res", String.valueOf(System.currentTimeMillis())); +// String mapString = JSON.toJSONString(map); + String mapString = "{\""+key+"\":0.01,\"res\":\""+String.valueOf(System.currentTimeMillis())+"\"}"; + log.debug("鍏抽攣锛�"+mapString); + EmqClient emqClient = new EmqClient(rtuTypeParam.getCarId()+"mqttPublish"+UUID.randomUUID()); + emqClient.connect(); + emqClient.publish(ardSyCarRtu.getTopicPublish(),mapString, QosEnum.QoS2,false); +// mqttOnce.publishCar("carId",ardSyCarRtu.getTopicPublish(),String.valueOf(new com.alibaba.fastjson2.JSONObject(map)),"寮�閿侊細"+currents); +// long startTime = System.currentTimeMillis(); // 鑾峰彇寰幆寮�濮嬫椂闂� +// long endTime = startTime + 30000; // 璁剧疆寰幆缁撴潫鏃堕棿涓哄紑濮嬫椂闂村姞涓�5绉掗挓 + while(true){ + ArdSyCarLock ardSyCarLock1 = getCurrentInfo(ardSyCarRtu.getId(),currents); + Double currentInfo1 = ardSyCarLock1.getCurrentInfo(); + if(currentInfo1.equals(4.00) || currentInfo1.equals(4)){ + lockCloseNum +=1; + break; + } + } + } + } + if(lockCloseNum == 2){ +// Map<String,Object> map = new HashMap<>(); +// map.put("A01", 100000);//鏂紑绗竴璺户鐢靛櫒 +// map.put("A02", 100000);//鏂紑绗簩璺户鐢靛櫒 +// map.put("res", String.valueOf(System.currentTimeMillis())); +// String mapString = JSON.toJSONString(map); + return AjaxResult.success("鏂藉皝鍛戒护鍙戠敓鎴愬姛锛�"); +// return AjaxResult.success(mqttOnce.publishCar(rtuTypeParam.getCarId(),ardSyCarRtu.getTopicPublish(),String.valueOf(new com.alibaba.fastjson2.JSONObject(map)),"鏂藉皝")); + } + } + return AjaxResult.success(); + } + + @Override + public AjaxResult onOff(LockTypeParam lockTypeParam) throws MqttException { + QueryWrapper<ArdSyCarRtu> queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("car_id",lockTypeParam.getCarId()); + ArdSyCarRtu ardSyCarRtu = rtuMapper.selectOne(queryWrapper); + ArdSyCarLock ardSyCarLock = lockMapper.selectById(lockTypeParam.getLockId()); + Integer relay = ardSyCarLock.getRelayInfo(); + if(relay!=null){ + if(relay.equals(1)){ + return AjaxResult.error(0,"璇ラ攣澶勪簬瑙e皝鐘舵��,杩滅▼鏃犳硶鎿嶆帶,璇峰厛鎵ц鏂藉皝鎿嶄綔!"); + } + } + String key = ""; + String currents = ardSyCarLock.getCurrents(); + if(currents.equals("C01")){ + key = "D03"; + }else if(currents.equals("C02")){ + key = "D04"; + } + double lockState = lockTypeParam.getNum(); + if(lockState==100){ + lockState = 99.99; + }else if(lockState==0){ + lockState = 0.01; + }else{ + lockState = lockState + 0.01; + } +// Map<String,Object> map = new HashMap(); +// map.put(key, lockState);//鑼冨洿鏄�0.01鍒�99.99 +// map.put("res", String.valueOf(System.currentTimeMillis())); +// String mapString = JSON.toJSONString(map); + String mapString = "{\""+key+"\":"+lockState+",\"res\":\""+String.valueOf(System.currentTimeMillis())+"\"}"; + log.debug("寮�鍏抽攣锛�"+mapString); + EmqClient emqClient = new EmqClient(lockTypeParam.getCarId()+"mqttPublish"+UUID.randomUUID()); + emqClient.connect(); + emqClient.publish(ardSyCarRtu.getTopicPublish(),mapString, QosEnum.QoS2,false); +// MqttCustomerClient mqttCustomerClient = new MqttCustomerClient(); +// mqttCustomerClient.connect(lockTypeParam.getCarId()+"change"+UUID.randomUUID()); +// mqttCustomerClient.pushlish(ardSyCarRtu.getTopicPublish(),mapString); + try { + while(true){ + TimeUnit.SECONDS.sleep(5); + break; + } + } catch (InterruptedException e) { + e.printStackTrace(); + } + return AjaxResult.success("寮�鍏抽攣鍛戒护鍙戦�佹垚鍔�,鍙戦�佽繘搴︿负"+lockTypeParam.getNum()); + } + + @Override + public AjaxResult lockIng(String carId) { + QueryWrapper<ArdSyCarRtu> queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("car_id",carId); + ArdSyCarRtu ardSyCarRtu = rtuMapper.selectOne(queryWrapper); + List<ArdSyCarLock> locks = lockMapper.lockList(ardSyCarRtu.getId()); + if(locks.size()>0){ + for (int i = 0; i < locks.size(); i++) { + ArdSyCarLock ardSyCarLock = locks.get(i); + double info = ardSyCarLock.getCurrentInfo(); + int d = (int) ((int)(info*150/138.3 - 4)/0.16); + ardSyCarLock.setCurrentInfo((double) d); + } + return AjaxResult.success(locks); + }else { + return AjaxResult.error("鏃犺杞︾殑閿佹暟鎹紒"); + } + } + + + //杞﹁締鍒楄〃灏佽 public List<CarVo> carAnalysis(List<ArdSyCar> ardSyCars){ List<CarVo> list = new ArrayList<>(); for (int i = 0; i < ardSyCars.size(); i++) { @@ -176,6 +419,7 @@ SysDept sysDept = sysDeptMapper.selectById(ardSyCar.getDeptId()); carVo.setDeptName(sysDept.getDeptName()); carVo.setRtu(ardSyCar.getReserved1()); + carVo.setCarModel(ardSyCar.getCarModel()); list.add(carVo); } return list; -- Gitblit v1.9.3