From 759ccbfc701c60800da901d8b5822b3528a5b002 Mon Sep 17 00:00:00 2001
From: doum <doum>
Date: 星期二, 10 三月 2026 11:23:58 +0800
Subject: [PATCH] 更改头部

---
 server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/DeviceServiceImpl.java |  162 +++++++++++++++++++++++++++++++++++++++++++++++++++---
 1 files changed, 153 insertions(+), 9 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..f86d06c 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
@@ -26,6 +26,7 @@
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.doumee.service.business.impl.hksync.HkSyncPushServiceImpl;
+import com.doumee.tcp.WaterElectricityUtil;
 import com.github.yulichang.wrapper.MPJLambdaWrapper;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.lang3.StringUtils;
@@ -33,6 +34,7 @@
 import org.eclipse.paho.client.mqttv3.MqttMessage;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
 import org.springframework.util.CollectionUtils;
 
 import java.util.*;
@@ -73,7 +75,9 @@
         model.setIsdeleted(Constants.ZERO);
         model.setEditDate(new Date());
         model.setCreateDate(model.getEditDate());
-        if(model.getDoorNameObj()!=null && Constants.equalsInteger(model.getType(),Constants.DEVICE_TYPE.duanluqi)){
+        if(model.getDoorNameObj()!=null &&
+                (Constants.equalsInteger(model.getType(),Constants.DEVICE_TYPE.duanluqi)
+                ||Constants.equalsInteger(model.getType(),Constants.DEVICE_TYPE.dianbiao))){
             model.setDoorName(JSONObject.toJSONString(model.getDoorNameObj()));
             if(StringUtils.isNotBlank(model.getLevel())){
                 if(getNumberByStr(model.getLevel()) <300){
@@ -115,10 +119,37 @@
     public void updateById(Device device) {
         device.setEdirot(device.getLoginUserInfo().getId()+"");
         device.setEditDate(new Date());
-        if(device.getDoorNameObj()!=null && Constants.equalsInteger(device.getType(),Constants.DEVICE_TYPE.duanluqi)){
+        if(device.getDoorNameObj()!=null &&
+                (Constants.equalsInteger(device.getType(),Constants.DEVICE_TYPE.duanluqi)
+                        ||Constants.equalsInteger(device.getType(),Constants.DEVICE_TYPE.dianbiao))){
             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
@@ -217,6 +248,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());
         }
@@ -291,7 +328,9 @@
         IPage<Device> result = deviceMapper.selectPage(page, queryWrapper);
         if(result!=null){
             for(Device d : result.getRecords()){
-                if(StringUtils.isNotBlank(d.getDoorName()) &&Constants.equalsInteger(d.getType(),Constants.DEVICE_TYPE.duanluqi)){
+                if(StringUtils.isNotBlank(d.getDoorName())
+                        && (Constants.equalsInteger(d.getType(),Constants.DEVICE_TYPE.duanluqi)||
+                        Constants.equalsInteger(d.getType(),Constants.DEVICE_TYPE.dianbiao))){
                     try {
                         //鏂矾鍣ㄨ澶囧弬鏁�
                         d.setDoorNameObj(JSONObject.parseObject(d.getDoorName()));
@@ -343,11 +382,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());
@@ -371,6 +411,94 @@
         }
         dealDuanluqiCmd(model,param,"device_");
 
+    }
+    @Override
+    public  void dianbaoCmd(Device param){
+        Device model = deviceMapper.selectById(param.getId());
+        if(model ==null && Constants.equalsInteger(param.getType(),Constants.DEVICE_TYPE.dianbiao)){
+            throw  new BusinessException(ResponseStatus.DATA_EMPTY);
+        }
+        if (param.getStatus() == null || param.getCmdDate() == null
+            ||param.getCmdDate().getTime() <= System.currentTimeMillis()) {
+            //濡傛灉鏄紑闂�
+            throw  new BusinessException(ResponseStatus.BAD_REQUEST);
+        }
+
+        boolean r ;
+        String date = DateUtil.formatDate(new Date(),"yyyyMMddHHmmss");
+        if(Constants.equalsInteger(param.getStatus(),Constants.ONE)) {
+            //濡傛灉鏄紑闂�
+           r = WaterElectricityUtil.electricityAct(param.getIp(),Integer.parseInt(param.getPort()),param.getNo(),0,date);
+        }else {
+            //濡傛灉鏄悎闂�
+            r = WaterElectricityUtil.electricityAct(param.getIp(),Integer.parseInt(param.getPort()),param.getNo(),1,date);
+        }
+        if(!r){
+            throw  new BusinessException(ResponseStatus.SERVER_ERROR.getCode(),"杩滅▼鎺у埗鐢佃〃澶辫触锛岃绋嶅悗閲嶈瘯锛�");
+        }
+        String curremak = "銆�"+param.getLoginUserInfo().getRealname()
+                +"銆戜簬"+ DateUtil.getPlusTime2(new Date()) +"杩涜浜�"+(Constants.equalsInteger(param.getStatus(),Constants.ONE)?"銆愬悎闂搞��":"銆愬垎闂搞��")+"鎿嶄綔,寮�鍏炽��"+param.getChannelNo()+"銆戯紱";
+        deviceMapper.update(null,new UpdateWrapper<Device>().lambda()
+                .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);
+
+    }
+    @Override
+    @Transactional
+    public  void dianbiaoData(Device param){
+        Device model = deviceMapper.selectById(param.getId());
+        if(model ==null && Constants.equalsInteger(param.getType(),Constants.DEVICE_TYPE.dianbiao)){
+            throw  new BusinessException(ResponseStatus.DATA_EMPTY);
+        }
+        try {
+            Map<String, Object>  readData=  WaterElectricityUtil.electricityData(model.getIp(),Integer.parseInt(model.getPort()),model.getNo());
+            if(readData!=null){
+                String curremak = "銆�"+param.getLoginUserInfo().getRealname()
+                        +"銆戜簬"+ DateUtil.getPlusTime2(new Date()) +"杩涜浜嗘暟鎹鍙栨搷浣�";
+                Date time =(Date) readData.get("time");
+                String total = (Double) readData.get("total")+"";
+                String status =  (String) readData.get("status");
+                model.setHkDate(new Date());//鏈�杩戝悓姝ユ椂闂�
+                model.setOnline(Constants.ONE);//鏍囪瘑璁惧鍦ㄧ嚎
+                model.setRemark(curremak);
+
+                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.ZERO);//
+                data.setVal1(total);
+                data.setVal2(status);
+                data.setHappenTime(DateUtil.getPlusTime2(data.getCreateDate()));
+                data.setVal3(DateUtil.getPlusTime2(time));
+                data.setVal4(param.getLoginUserInfo().getRealname());
+                data.setVal5(param.getNo());//鍦板潃鍩�
+                deviceDataMapper.insert(data);
+                deviceMapper.updateById(model);
+            }
+        }catch (Exception e){
+            e.printStackTrace();
+            log.error("鐢佃〃鏁版嵁璇诲彇澶辫触锛�"+e.getMessage());
+            throw new BusinessException(ResponseStatus.SERVER_ERROR.getCode(),"璇诲彇鐢佃〃鏁版嵁澶辫触锛�");
+        }
     }
 
     private void dealDuanluqiCmd(Device model, Device param,String clientIndex) {
@@ -396,13 +524,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 +768,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