From 7ae1456345209704248fd184e0218b0c0f677a84 Mon Sep 17 00:00:00 2001
From: doum <doum>
Date: 星期二, 06 一月 2026 15:26:17 +0800
Subject: [PATCH] 最新版本541200007最新版本541200007

---
 server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/DeviceServiceImpl.java |   60 ++++++++++++++++++++++++++++++++++++++++++++++++++++++------
 1 files changed, 54 insertions(+), 6 deletions(-)

diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/DeviceServiceImpl.java b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/DeviceServiceImpl.java
index b72835a..e8b905c 100644
--- a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/DeviceServiceImpl.java
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/DeviceServiceImpl.java
@@ -118,7 +118,32 @@
         if(device.getDoorNameObj()!=null && Constants.equalsInteger(device.getType(),Constants.DEVICE_TYPE.duanluqi)){
             device.setDoorName(JSONObject.toJSONString(device.getDoorNameObj()));
         }
+        Device model = deviceMapper.selectById(device.getId());
+        if(model ==null){
+            throw  new BusinessException(ResponseStatus.DATA_EMPTY);
+        }
+        if(Constants.equalsInteger(model.getType(),Constants.DEVICE_TYPE.duanluqi)){
+            //濡傛灉鏄柗璺櫒
+            if( Constants.equalsInteger(model.getIsUsed(),Constants.ZERO)
+                    && StringUtils.equals(device.getDoorName(),model.getDoorName())){
+                //濡傛灉閰嶇疆鍙傛暟鍙戠敓浜嗗彉鍖�,璁剧疆鐘舵�佹湭鍚敤
+                device.setIsUsed(Constants.ONE);
+                try {
+                    MqttClient mqttClient = MqttClientCache.clientMapCache.get("device"+device.getId());
+                    if(mqttClient !=null){
+                        if(mqttClient.isConnected()){
+                            mqttClient.disconnect();
+                        }
+                        mqttClient.close();
+                        MqttClientCache.clientMapCache.remove("device"+device.getId());
+                    }
+                }catch (Exception e){
+                    log.error("==============绔彛mqtt閾炬帴澶辫触锛�"+model.getName()+e.getMessage());
+                }
+            }
+        }
         deviceMapper.updateById(device);
+
     }
 
     @Override
@@ -216,6 +241,12 @@
         }
         if (pageWrap.getModel().getName() != null) {
             queryWrapper.lambda().like(Device::getName, pageWrap.getModel().getName());
+        }
+        if (pageWrap.getModel().getDoorNo() != null) {
+            queryWrapper.lambda().like(Device::getDoorNo, pageWrap.getModel().getDoorNo());
+        }
+        if (pageWrap.getModel().getNo() != null) {
+            queryWrapper.lambda().like(Device::getNo, pageWrap.getModel().getNo());
         }
         if (pageWrap.getModel().getDoorName() != null) {
             queryWrapper.lambda().like(Device::getDoorName, pageWrap.getModel().getDoorName());
@@ -343,11 +374,12 @@
             //濡傛灉绯荤粺涓嶇敤浜嗭紝绔彛mqtt杩炴帴
             try {
                 mqttClient = mqttBizService.unsubscribe(mqttClient,config  ,topics);
-                if(mqttClient ==null){
-                    throw new BusinessException(ResponseStatus.SERVER_ERROR.getCode(),"寤虹珛杩炴帴澶辫触锛�");
-                }
-                if(mqttClient.isConnected()){
-                    mqttClient.disconnect();
+                if(mqttClient !=null){
+                    if(mqttClient.isConnected()){
+                        mqttClient.disconnect();
+                    }
+                    mqttClient.close();
+                    MqttClientCache.clientMapCache.remove("device"+param.getId());
                 }
             }catch (Exception e){
                 log.error("==============绔彛mqtt閾炬帴澶辫触锛�"+model.getName()+e.getMessage());
@@ -396,13 +428,28 @@
         }
         MqttClientCache.clientMapCache.put("device"+param.getId(),mqttClient);
         String curremak = "銆�"+param.getLoginUserInfo().getRealname()
-                +"銆戜簬"+ DateUtil.getPlusTime2(new Date()) +"杩涜浜�"+(Constants.equalsInteger(param.getStatus(),Constants.ONE)?"銆愬紑闂搞��":"銆愬叧闂搞��")+"鎿嶄綔,寮�鍏炽��"+param.getChannelNo()+"銆戯紱";
+                +"銆戜簬"+ DateUtil.getPlusTime2(new Date()) +"杩涜浜�"+(Constants.equalsInteger(param.getStatus(),Constants.ONE)?"銆愬悎闂搞��":"銆愬垎闂搞��")+"鎿嶄綔,寮�鍏炽��"+param.getChannelNo()+"銆戯紱";
         deviceMapper.update(null,new UpdateWrapper<Device>().lambda()
 //                        .setSql("remark = concat(ifnull(remark,''),'"+curremak+"','\n')")
                 .set(Device::getRemark,curremak)
                 .set(Device::getEditDate,new Date())
                 .set(Device::getEdirot,param.getLoginUserInfo().getId())
                 .eq(Device::getId,param.getId()));
+
+        DeviceData data = new DeviceData();
+        data.setCreateDate(new Date());
+        data.setEditDate(new Date());
+        data.setCreator(param.getLoginUserInfo().getId());
+        data.setEditor(param.getLoginUserInfo().getId());
+        data.setDeviceId(param.getId()+"");
+        data.setDataType(Constants.ONE);//
+        data.setVal1("杩滅▼鎺у埗");
+        data.setVal2(curremak);
+        data.setHappenTime(DateUtil.getPlusTime2(data.getCreateDate()));
+        data.setVal3((Constants.equalsInteger(param.getStatus(),Constants.ONE)?"銆愬悎闂搞��":"銆愬垎闂搞��"));
+        data.setVal4(param.getLoginUserInfo().getRealname());
+        data.setVal5(param.getChannelNo());
+        deviceDataMapper.insert(data);
     }
 
     private MqttConfig getMqttConfigByParam(Device model,String index) {
@@ -625,6 +672,7 @@
                         String[] btns = device.getChannelInfo().split(",");
                         Date startDate = new Date((System.currentTimeMillis()-time*1000));//鏌ヨ寮�濮嬫椂闂�
                         List<DeviceData> dataList = deviceDataMapper.selectList(new QueryWrapper<DeviceData>().lambda()
+                                .eq(DeviceData::getDataType,Constants.ZERO)
                                 .eq(DeviceData::getDeviceId,device.getId())
                                 .in(DeviceData::getVal1,btns)
                                 .ge(DeviceData::getHappenTime,DateUtil.getPlusTime2(startDate))

--
Gitblit v1.9.3