From 7931656b17def59e738843eebb13411051e29a39 Mon Sep 17 00:00:00 2001
From: zhangnaisong <2434969829@qq.com>
Date: 星期五, 26 一月 2024 15:13:43 +0800
Subject: [PATCH] 单兵端查看已通过的申请提交
---
ard-work/src/main/java/com/ruoyi/sy/service/impl/ArdSyCarLockServiceImpl.java | 295 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++--
1 files changed, 281 insertions(+), 14 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 81876d7..190dc44 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,6 +1,9 @@
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.ArdSyCar;
import com.ruoyi.sy.domain.ArdSyCarLock;
@@ -8,21 +11,29 @@
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 {
@@ -34,6 +45,9 @@
private ArdSyCarRtuMapper rtuMapper;
@Autowired
private ArdSyCarLockMapper lockMapper;
+ @Autowired
+ private SysConfigMapper configMapper;
+
@Override
public List<CarVo> car() {
@@ -44,18 +58,32 @@
}
@Override
- public int addRtu(String carId) {
+ public List<CarVo> carAddOne(String carId) {
+ QueryWrapper<ArdSyCar> queryWrapper = new QueryWrapper<>();
+ queryWrapper.isNull("reserved_1").or().eq("reserved_1","").or().eq("car_id",carId);
+ List<ArdSyCar> ardSyCars= ardSyCarMapper.selectList(queryWrapper);
+ return carAnalysis(ardSyCars);
+ }
+
+ @Override
+ 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
@@ -68,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);
@@ -97,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
@@ -139,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;
}
@@ -152,6 +193,231 @@
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);
+ int min = lockTypeParam.getNum() -5; int max = lockTypeParam.getNum() +5;
+ while(true){
+ ArdSyCarLock ardSyCarLockLoop = lockMapper.selectById(lockTypeParam.getLockId());
+ Double currentInfo = ardSyCarLockLoop.getCurrentInfo();
+ int d = (int) ((int)(currentInfo*150/138.3 - 4)/0.16);
+ if(d >= min && d <= max){
+ break;
+ }
+// TimeUnit.SECONDS.sleep(5);
+ }
+ 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);
+ if(ardSyCarRtu!=null){
+ List<ArdSyCarLock> locks = lockMapper.lockList(ardSyCarRtu.getId());
+ if(locks.size()>0){
+ for (int i = 0; i < locks.size(); i++) {
+ ArdSyCarLock ardSyCarLock = locks.get(i);
+ if(ardSyCarLock.getCurrentInfo()!=null){
+ double info = ardSyCarLock.getCurrentInfo();
+ int d = (int) ((int)(info*150/138.3 - 4)/0.16);
+ ardSyCarLock.setCurrentInfo((double) d);
+ }else {
+ ardSyCarLock.setCurrentInfo(0.0);
+ }
+ }
+ return AjaxResult.success(locks);
+ }else {
+ return AjaxResult.error("鏃犺杞︾殑閿佹暟鎹紒");
+ }
+ }else{
+ return AjaxResult.error("璇ヨ溅鏃燫TU锛�");
+ }
+
+ }
+
+
+ //杞﹁締鍒楄〃灏佽
public List<CarVo> carAnalysis(List<ArdSyCar> ardSyCars){
List<CarVo> list = new ArrayList<>();
for (int i = 0; i < ardSyCars.size(); i++) {
@@ -164,6 +430,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