From 92dba8e44a911c92832ecc22e4c98968409d5c68 Mon Sep 17 00:00:00 2001
From: aijinhui <aijinhui>
Date: 星期二, 14 十一月 2023 15:01:37 +0800
Subject: [PATCH] 远程封印

---
 ard-work/src/main/java/com/ruoyi/sy/service/impl/ArdSyCarLockServiceImpl.java |  223 ++++++++++++++++++++++++++++++++++++++++++++++++++++---
 1 files changed, 209 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..0dd636a 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,8 @@
 package com.ruoyi.sy.service.impl;
 
+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 +10,26 @@
 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.SysDeptMapper;
+import com.ruoyi.utils.mqtt.MqttOnce;
+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.text.DecimalFormat;
+import java.util.*;
 
 /**
  * @author Administrator
  */
+@Slf4j
 @Service
 public class ArdSyCarLockServiceImpl implements ArdSyCarLockService {
 
@@ -35,6 +42,7 @@
     @Autowired
     private ArdSyCarLockMapper lockMapper;
 
+
     @Override
     public List<CarVo> car() {
         QueryWrapper<ArdSyCar> queryWrapper = new QueryWrapper<>();
@@ -44,18 +52,31 @@
     }
 
     @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()+"/");
+        ardSyCarRtu.setTopicSubscribe("/p"+addRtuParam.getCarId()+"/set/");
+        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);
+        MqttOnce mqttOnce = new MqttOnce();
+        mqttOnce.subscribeCar(ardSyCarRtu);
+        return num;
     }
 
     @Override
@@ -97,9 +118,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
@@ -152,6 +179,173 @@
         return ardSyCarMapper.updateById(ardSyCar);
     }
 
+    @Override
+    public List<CarVo> queryCar(List<String> list) {
+        QueryWrapper<ArdSyCar> queryWrapper = new QueryWrapper<>();
+        queryWrapper.ne("reserved_1","").notIn("car_id",list);
+        List<ArdSyCar> ardSyCars = ardSyCarMapper.selectList(queryWrapper);
+        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.setCurrents("C01");
+        ardSyCarLock1.setCurrentInfo(decimalFormat.format(jsonObject.getDouble("C01")));
+        lockList.add(ardSyCarLock1);
+        ArdSyCarLock ardSyCarLock2 = new ArdSyCarLock();
+        ardSyCarLock2.setRelay("A02");
+        ardSyCarLock2.setRelayInfo(String.valueOf(jsonObject.getInteger("A02")));
+        ardSyCarLock2.setCurrents("C02");
+        ardSyCarLock2.setCurrentInfo(decimalFormat.format(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("carId",rtuTypeParam.getCarId());
+        ArdSyCarRtu ardSyCarRtu = rtuMapper.selectOne(queryWrapper);
+        MqttOnce mqttOnce = new MqttOnce();
+        //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()));
+            try {
+                return AjaxResult.success(mqttOnce.publishCar(rtuTypeParam.getCarId(),ardSyCarRtu.getTopicPublish(),String.valueOf(new com.alibaba.fastjson2.JSONObject(map)),"瑙e皝"));
+            } catch (MqttException e) {
+                log.debug("瑙e皝鎸囦护鍙戠敓澶辫触"+e);
+            }
+        }
+        //0鏂藉皝
+        if(rtuTypeParam.getType()==0){
+            //閿佸紑鍏崇姸鎬�
+            int lockCloseNum = 0;
+            //鏌ヨ閿佷俊鎭�
+            List<ArdSyCarLock> ardSyCarLocks = carLock(ardSyCarRtu.getId());
+            for (int j = 0; j < ardSyCarLocks.size(); j++) {
+                ArdSyCarLock ardSyCarLock = ardSyCarLocks.get(j);
+                String currents = ardSyCarLock.getCurrents();
+                String currentInfo = ardSyCarLock.getCurrentInfo();
+                //鐢垫祦鍊间负4.0鏄叧閿佺姸鎬�
+                if(currentInfo.equals(4.00)){
+                    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()));
+                    try {
+                        mqttOnce.publishCar("carId",ardSyCarRtu.getTopicPublish(),String.valueOf(new com.alibaba.fastjson2.JSONObject(map)),"寮�閿侊細"+currents);
+                    } catch (MqttException e) {
+                        log.debug("寮�閿佹寚浠ゅ彂鐢熷け璐�"+e);
+                    }
+                    while(true){
+                        ArdSyCarLock ardSyCarLock1 = getCurrentInfo(ardSyCarRtu.getId(),currents);
+                        String currentInfo1 = ardSyCarLock1.getCurrentInfo();
+                        if(currentInfo1.equals(4.00)){
+                            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()));
+                try {
+                    return AjaxResult.success(mqttOnce.publishCar(rtuTypeParam.getCarId(),ardSyCarRtu.getTopicPublish(),String.valueOf(new com.alibaba.fastjson2.JSONObject(map)),"鏂藉皝"));
+                } catch (MqttException e) {
+                    log.debug("鏂藉皝鎸囦护鍙戠敓澶辫触"+e);
+                }
+            }
+        }
+        return AjaxResult.success();
+    }
+
+    @Override
+    public AjaxResult onOff(LockTypeParam lockTypeParam) {
+        QueryWrapper<ArdSyCarRtu> queryWrapper = new QueryWrapper<>();
+        queryWrapper.eq("car_id",lockTypeParam.getCarId());
+        ArdSyCarRtu ardSyCarRtu = rtuMapper.selectOne(queryWrapper);
+        ArdSyCarLock ardSyCarLock = lockMapper.selectById(lockTypeParam.getLockId());
+        String relay = ardSyCarLock.getRelayInfo();
+        if(relay.equals("1")){
+            AjaxResult.error(0,"璇ラ攣澶勪簬瑙e皝鐘舵��,杩滅▼鏃犳硶鎿嶆帶,璇峰厛鎵ц鏂藉皝鎿嶄綔!");
+        }
+        String key = "";
+        String currentInfo = ardSyCarLock.getCurrentInfo();
+        if(currentInfo.equals("C01")){
+            key = "D03";
+        }else if(currentInfo.equals("C02")){
+            key = "D04";
+        }
+        Number lockState = (Number) lockTypeParam.getNum();
+        if(lockState.equals(100)){
+            lockState = 99.99;
+        }else if(lockState.equals(0)){
+            lockState = 0.01;
+        }else{
+            lockState = lockState.doubleValue() + 0.01;
+        }
+        Map<String,Object> map = new HashMap();
+        map.put(key, lockState);//鑼冨洿鏄�0.01鍒�99.99
+        map.put("res", String.valueOf(System.currentTimeMillis()));
+        MqttOnce mqttOnce = new MqttOnce();
+        try {
+            return AjaxResult.success(mqttOnce.publishCar("carId",ardSyCarRtu.getTopicPublish(),String.valueOf(new com.alibaba.fastjson2.JSONObject(map)),"寮�鍏抽攣鎸囦护"+lockState));
+        } catch (MqttException e) {
+            log.debug("寮�鍏抽攣鎸囦护鍙戦�佸け璐�"+e);
+        }
+        return AjaxResult.success();
+    }
+
+    @Override
+    public List<ArdSyCarLock> lockIng(String carId) {
+        QueryWrapper<ArdSyCarRtu> queryWrapper = new QueryWrapper<>();
+        queryWrapper.eq("car_id",carId);
+        ArdSyCarRtu ardSyCarRtu = rtuMapper.selectOne(queryWrapper);
+        return lockMapper.lockList(ardSyCarRtu.getId());
+    }
+
+
+    //杞﹁締鍒楄〃灏佽
     public List<CarVo> carAnalysis(List<ArdSyCar> ardSyCars){
         List<CarVo> list = new ArrayList<>();
         for (int i = 0; i < ardSyCars.size(); i++) {
@@ -164,6 +358,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