From ce4b956f4fcee89c96236b5d3c2b1e6db4fb68bf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9B=B9=E7=A3=8A?= <45566618@qq.com> Date: Thu, 19 Mar 2026 16:19:57 +0800 Subject: [PATCH] =?UTF-8?q?=E7=89=A9=E8=81=94=E8=AE=BE=E5=A4=87=E9=87=8A?= =?UTF-8?q?=E6=94=BE=E8=A7=A3=E7=BB=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../camera/mapper/CameraInfoMapper.java | 1 + .../camera/mapper/xml/CameraInfoMapper.xml | 9 + .../camera/service/ICameraInfoService.java | 3 + .../service/impl/CameraInfoServiceImpl.java | 5 + .../mapper/ElectricityMeterMapper.java | 1 + .../mapper/xml/ElectricityMeterMapper.xml | 8 + .../service/IElectricityMeterService.java | 1 + .../impl/ElectricityMeterServiceImpl.java | 4 + .../tq/water/mapper/WaterMeterMapper.java | 1 + .../tq/water/mapper/xml/WaterMeterMapper.xml | 8 + .../tq/water/service/IWaterMeterService.java | 1 + .../service/impl/WaterMeterServiceImpl.java | 5 + .../humid/mapper/HumidDeviceMapper.java | 1 + .../humid/mapper/xml/HumidDeviceMapper.xml | 9 + .../humid/service/IHumidDeviceService.java | 1 + .../service/impl/HumidDeviceServiceImpl.java | 5 + .../listener/DynamicQueueNameProvider.java | 28 ++ .../device/listener/IotSyncBizMQListener.java | 279 ++++++++++++++++++ 18 files changed, 370 insertions(+) diff --git a/nursing-unit-iot/nu-iot-biz/src/main/java/com/nu/modules/tplink/camera/mapper/CameraInfoMapper.java b/nursing-unit-iot/nu-iot-biz/src/main/java/com/nu/modules/tplink/camera/mapper/CameraInfoMapper.java index be522c07..754b055c 100644 --- a/nursing-unit-iot/nu-iot-biz/src/main/java/com/nu/modules/tplink/camera/mapper/CameraInfoMapper.java +++ b/nursing-unit-iot/nu-iot-biz/src/main/java/com/nu/modules/tplink/camera/mapper/CameraInfoMapper.java @@ -30,4 +30,5 @@ public interface CameraInfoMapper extends BaseMapper { void updatePlanByDevId(CameraInfo cameraInfo); IPage previewList(Page page, @Param("params") CameraInfo cameraInfo); + void release(CameraInfo cameraInfo); } diff --git a/nursing-unit-iot/nu-iot-biz/src/main/java/com/nu/modules/tplink/camera/mapper/xml/CameraInfoMapper.xml b/nursing-unit-iot/nu-iot-biz/src/main/java/com/nu/modules/tplink/camera/mapper/xml/CameraInfoMapper.xml index d40258b4..a397f03b 100644 --- a/nursing-unit-iot/nu-iot-biz/src/main/java/com/nu/modules/tplink/camera/mapper/xml/CameraInfoMapper.xml +++ b/nursing-unit-iot/nu-iot-biz/src/main/java/com/nu/modules/tplink/camera/mapper/xml/CameraInfoMapper.xml @@ -325,4 +325,13 @@ order by a.nu_id,a.device_type,a.sn + + update nu_iot_tplink_camera + set + nu_id = null, + nu_name = null, + dimension = null + where id = #{id} + + diff --git a/nursing-unit-iot/nu-iot-biz/src/main/java/com/nu/modules/tplink/camera/service/ICameraInfoService.java b/nursing-unit-iot/nu-iot-biz/src/main/java/com/nu/modules/tplink/camera/service/ICameraInfoService.java index a123aa9d..5f4f78df 100644 --- a/nursing-unit-iot/nu-iot-biz/src/main/java/com/nu/modules/tplink/camera/service/ICameraInfoService.java +++ b/nursing-unit-iot/nu-iot-biz/src/main/java/com/nu/modules/tplink/camera/service/ICameraInfoService.java @@ -91,4 +91,7 @@ public interface ICameraInfoService extends IService { String zdyTplinkVideo(String nuId, String startTime, String endTime); IPage previewList(Page page, CameraInfo cameraInfo); + + //释放设备 + void release(CameraInfo cameraInfo); } diff --git a/nursing-unit-iot/nu-iot-biz/src/main/java/com/nu/modules/tplink/camera/service/impl/CameraInfoServiceImpl.java b/nursing-unit-iot/nu-iot-biz/src/main/java/com/nu/modules/tplink/camera/service/impl/CameraInfoServiceImpl.java index 64db7e4f..510ada87 100644 --- a/nursing-unit-iot/nu-iot-biz/src/main/java/com/nu/modules/tplink/camera/service/impl/CameraInfoServiceImpl.java +++ b/nursing-unit-iot/nu-iot-biz/src/main/java/com/nu/modules/tplink/camera/service/impl/CameraInfoServiceImpl.java @@ -3283,5 +3283,10 @@ public class CameraInfoServiceImpl extends ServiceImpl { int update(ElectricityMeter electricityMeter); int updateValue(ElectricityMeter electricityMeter); int updateRelayState(ElectricityMeter electricityMeter); + void release(ElectricityMeter electricityMeter); } diff --git a/nursing-unit-iot/nu-iot-biz/src/main/java/com/nu/modules/tq/electricity/mapper/xml/ElectricityMeterMapper.xml b/nursing-unit-iot/nu-iot-biz/src/main/java/com/nu/modules/tq/electricity/mapper/xml/ElectricityMeterMapper.xml index 493e826b..543ae38c 100644 --- a/nursing-unit-iot/nu-iot-biz/src/main/java/com/nu/modules/tq/electricity/mapper/xml/ElectricityMeterMapper.xml +++ b/nursing-unit-iot/nu-iot-biz/src/main/java/com/nu/modules/tq/electricity/mapper/xml/ElectricityMeterMapper.xml @@ -108,5 +108,13 @@ where sn = #{sn} + + update nu_iot_ds_electricity_meter + set + nu_id = null, + nu_name = null, + dimension = null + where id = #{id} + \ No newline at end of file diff --git a/nursing-unit-iot/nu-iot-biz/src/main/java/com/nu/modules/tq/electricity/service/IElectricityMeterService.java b/nursing-unit-iot/nu-iot-biz/src/main/java/com/nu/modules/tq/electricity/service/IElectricityMeterService.java index 290299b4..bd5fc67c 100644 --- a/nursing-unit-iot/nu-iot-biz/src/main/java/com/nu/modules/tq/electricity/service/IElectricityMeterService.java +++ b/nursing-unit-iot/nu-iot-biz/src/main/java/com/nu/modules/tq/electricity/service/IElectricityMeterService.java @@ -22,4 +22,5 @@ public interface IElectricityMeterService extends IService { void baoxiu(ElectricityMeter electricityMeter); void processReceivedMessage(String payload); + void release(ElectricityMeter electricityMeter); } diff --git a/nursing-unit-iot/nu-iot-biz/src/main/java/com/nu/modules/tq/electricity/service/impl/ElectricityMeterServiceImpl.java b/nursing-unit-iot/nu-iot-biz/src/main/java/com/nu/modules/tq/electricity/service/impl/ElectricityMeterServiceImpl.java index 47df7fdf..a156bf3b 100644 --- a/nursing-unit-iot/nu-iot-biz/src/main/java/com/nu/modules/tq/electricity/service/impl/ElectricityMeterServiceImpl.java +++ b/nursing-unit-iot/nu-iot-biz/src/main/java/com/nu/modules/tq/electricity/service/impl/ElectricityMeterServiceImpl.java @@ -469,5 +469,9 @@ public class ElectricityMeterServiceImpl extends ServiceImpl { int update(WaterMeter waterMeter); int updateValue(WaterMeter waterMeter); int updateRelayState(WaterMeter waterMeter); + void release(WaterMeter waterMeter); } diff --git a/nursing-unit-iot/nu-iot-biz/src/main/java/com/nu/modules/tq/water/mapper/xml/WaterMeterMapper.xml b/nursing-unit-iot/nu-iot-biz/src/main/java/com/nu/modules/tq/water/mapper/xml/WaterMeterMapper.xml index 18cb5582..b31f2904 100644 --- a/nursing-unit-iot/nu-iot-biz/src/main/java/com/nu/modules/tq/water/mapper/xml/WaterMeterMapper.xml +++ b/nursing-unit-iot/nu-iot-biz/src/main/java/com/nu/modules/tq/water/mapper/xml/WaterMeterMapper.xml @@ -115,5 +115,13 @@ and address = #{address} + + update nu_iot_tq_water_meter + set + nu_id = null, + nu_name = null, + dimension = null + where id = #{id} + \ No newline at end of file diff --git a/nursing-unit-iot/nu-iot-biz/src/main/java/com/nu/modules/tq/water/service/IWaterMeterService.java b/nursing-unit-iot/nu-iot-biz/src/main/java/com/nu/modules/tq/water/service/IWaterMeterService.java index 5a881d63..6c698c1c 100644 --- a/nursing-unit-iot/nu-iot-biz/src/main/java/com/nu/modules/tq/water/service/IWaterMeterService.java +++ b/nursing-unit-iot/nu-iot-biz/src/main/java/com/nu/modules/tq/water/service/IWaterMeterService.java @@ -22,4 +22,5 @@ public interface IWaterMeterService extends IService { String waterReadNotify(String response_content, String timestamp, String sign); void baoxiu(WaterMeter waterMeter); + void release(WaterMeter waterMeter); } diff --git a/nursing-unit-iot/nu-iot-biz/src/main/java/com/nu/modules/tq/water/service/impl/WaterMeterServiceImpl.java b/nursing-unit-iot/nu-iot-biz/src/main/java/com/nu/modules/tq/water/service/impl/WaterMeterServiceImpl.java index 1caf74b6..0e53c11e 100644 --- a/nursing-unit-iot/nu-iot-biz/src/main/java/com/nu/modules/tq/water/service/impl/WaterMeterServiceImpl.java +++ b/nursing-unit-iot/nu-iot-biz/src/main/java/com/nu/modules/tq/water/service/impl/WaterMeterServiceImpl.java @@ -595,6 +595,11 @@ public class WaterMeterServiceImpl extends ServiceImpl { int insertLog(HumidDevice humidDevice); IPage findLogPage(Page page, @Param("params") HumidDevice humidDevice); HumidDevice getHumidInfo(HumidDevice humidDevice); + void release(HumidDevice humidDevice); } diff --git a/nursing-unit-iot/nu-iot-biz/src/main/java/com/nu/modules/yiweilian/humid/mapper/xml/HumidDeviceMapper.xml b/nursing-unit-iot/nu-iot-biz/src/main/java/com/nu/modules/yiweilian/humid/mapper/xml/HumidDeviceMapper.xml index 0a266a95..30577622 100644 --- a/nursing-unit-iot/nu-iot-biz/src/main/java/com/nu/modules/yiweilian/humid/mapper/xml/HumidDeviceMapper.xml +++ b/nursing-unit-iot/nu-iot-biz/src/main/java/com/nu/modules/yiweilian/humid/mapper/xml/HumidDeviceMapper.xml @@ -378,4 +378,13 @@ where sn = #{sn} + + update nu_iot_yiweilian_humid_device + set + nu_id = null, + nu_name = null, + dimension = null + where id = #{id} + + diff --git a/nursing-unit-iot/nu-iot-biz/src/main/java/com/nu/modules/yiweilian/humid/service/IHumidDeviceService.java b/nursing-unit-iot/nu-iot-biz/src/main/java/com/nu/modules/yiweilian/humid/service/IHumidDeviceService.java index 8889cea7..f903482b 100644 --- a/nursing-unit-iot/nu-iot-biz/src/main/java/com/nu/modules/yiweilian/humid/service/IHumidDeviceService.java +++ b/nursing-unit-iot/nu-iot-biz/src/main/java/com/nu/modules/yiweilian/humid/service/IHumidDeviceService.java @@ -21,4 +21,5 @@ public interface IHumidDeviceService extends IService { void editHldy(HumidDevice humidDevice); void baoxiu(HumidDevice humidDevice); + void release(HumidDevice humidDevice); } diff --git a/nursing-unit-iot/nu-iot-biz/src/main/java/com/nu/modules/yiweilian/humid/service/impl/HumidDeviceServiceImpl.java b/nursing-unit-iot/nu-iot-biz/src/main/java/com/nu/modules/yiweilian/humid/service/impl/HumidDeviceServiceImpl.java index 76fba775..3705da01 100644 --- a/nursing-unit-iot/nu-iot-biz/src/main/java/com/nu/modules/yiweilian/humid/service/impl/HumidDeviceServiceImpl.java +++ b/nursing-unit-iot/nu-iot-biz/src/main/java/com/nu/modules/yiweilian/humid/service/impl/HumidDeviceServiceImpl.java @@ -512,6 +512,11 @@ public class HumidDeviceServiceImpl extends ServiceImpl statusList = new ArrayList<>(); + + List cameraList = dto.getCameraInfoList(); + if(cameraList!=null&&cameraList.size()>0){ + for(int i=0;i cameraQw = new QueryWrapper<>(); + cameraQw.eq("mac",iotCameraInfoMQDto.getMac()); + CameraInfo entity = cameraInfoService.getOne(cameraQw); + if(entity!=null){ + cameraInfoService.release(entity); + } + statusList.add(statusMQDto); + } + catch (Exception e) { + StatusMQDto statusMQDto = new StatusMQDto(); + statusMQDto.setAsyncId(iotCameraInfoMQDto.getMac()); + statusMQDto.setMessage("失败"); + statusMQDto.setPrimaryKey(iotCameraInfoMQDto.getLogId()); + statusMQDto.setNote("TPLINK"); + statusList.add(statusMQDto); + e.printStackTrace(); + } + } + } + + List electricityList = dto.getElectricityMeterList(); + if(electricityList!=null&&electricityList.size()>0){ + for(int i=0;i electricityQw = new QueryWrapper<>(); + electricityQw.eq("sn",iotElectricityMeterMQDto.getSn()); + ElectricityMeter entity = electricityMeterService.getOne(electricityQw); + if(entity!=null){ + electricityMeterService.release(entity); + } + statusList.add(statusMQDto); + } + catch (Exception e) { + StatusMQDto statusMQDto = new StatusMQDto(); + statusMQDto.setAsyncId(iotElectricityMeterMQDto.getSn()); + statusMQDto.setMessage("失败"); + statusMQDto.setPrimaryKey(iotElectricityMeterMQDto.getLogId()); + statusMQDto.setNote("电表"); + statusList.add(statusMQDto); + e.printStackTrace(); + } + } + } + + List waterMeterList = dto.getWaterMeterList(); + if(waterMeterList!=null&&waterMeterList.size()>0){ + for(int i=0;i waterQw = new QueryWrapper<>(); + waterQw.eq("cid",iotWaterMeterMQDto.getCid()); + WaterMeter entity = waterMeterService.getOne(waterQw); + if(entity!=null){ + waterMeterService.release(entity); + } + statusList.add(statusMQDto); + } + catch (Exception e) { + StatusMQDto statusMQDto = new StatusMQDto(); + statusMQDto.setAsyncId(iotWaterMeterMQDto.getCid()); + statusMQDto.setMessage("失败"); + statusMQDto.setPrimaryKey(iotWaterMeterMQDto.getLogId()); + statusMQDto.setNote("水表"); + statusList.add(statusMQDto); + e.printStackTrace(); + } + } + } + + List humidDeviceList = dto.getHumidDeviceList(); + if(humidDeviceList!=null&&humidDeviceList.size()>0){ + for(int i=0;i humidQw = new QueryWrapper<>(); + humidQw.eq("sn",iotHumidDeviceMQDto.getSn()); + HumidDevice entity = humidDeviceService.getOne(humidQw); + if(entity!=null){ + humidDeviceService.release(entity); + } + statusList.add(statusMQDto); + } + catch (Exception e) { + StatusMQDto statusMQDto = new StatusMQDto(); + statusMQDto.setAsyncId(iotHumidDeviceMQDto.getSn()); + statusMQDto.setMessage("失败"); + statusMQDto.setPrimaryKey(iotHumidDeviceMQDto.getLogId()); + statusMQDto.setNote("温湿度计"); + statusList.add(statusMQDto); + e.printStackTrace(); + } + } + } + StatusListMQDto statusListMQDto = new StatusListMQDto(); + statusListMQDto.setStatusList(statusList); + rabbitMQUtil.sendToExchange("hldy.iotsyncbiz", "iotsyncbiz.release.result", statusListMQDto); + } + + @RabbitListener( + bindings = @QueueBinding( + value = @Queue(name = "#{iotDeviceAsyncDQNP.getUnbindDeviceQueueName()}"), + exchange = @Exchange(name = "hldy.iotsyncbiz", type = ExchangeTypes.DIRECT), + key = "#{iotDeviceAsyncDQNP.getUnbindDeviceKeyName()}" + ), + errorHandler = "iotDeviceMQErrorHandler" + ) + public void handleUnbind_unify(IotSyncBizMQDto dto) { + syncUnbindIot(dto); + } + + private void syncUnbindIot(IotSyncBizMQDto dto) { + List statusList = new ArrayList<>(); + + List cameraList = dto.getCameraInfoList(); + if(cameraList!=null&&cameraList.size()>0){ + for(int i=0;i cameraQw = new QueryWrapper<>(); + cameraQw.eq("mac",iotCameraInfoMQDto.getMac()); + CameraInfo entity = cameraInfoService.getOne(cameraQw); + if(entity!=null){ + cameraInfoService.removeById(entity.getId()); + } + statusList.add(statusMQDto); + } + catch (Exception e) { + StatusMQDto statusMQDto = new StatusMQDto(); + statusMQDto.setAsyncId(iotCameraInfoMQDto.getMac()); + statusMQDto.setMessage("失败"); + statusMQDto.setPrimaryKey(iotCameraInfoMQDto.getLogId()); + statusMQDto.setNote("TPLINK"); + statusList.add(statusMQDto); + e.printStackTrace(); + } + } + } + + List electricityList = dto.getElectricityMeterList(); + if(electricityList!=null&&electricityList.size()>0){ + for(int i=0;i electricityQw = new QueryWrapper<>(); + electricityQw.eq("sn",iotElectricityMeterMQDto.getSn()); + ElectricityMeter entity = electricityMeterService.getOne(electricityQw); + if(entity!=null){ + electricityMeterService.removeById(entity.getId()); + } + statusList.add(statusMQDto); + } + catch (Exception e) { + StatusMQDto statusMQDto = new StatusMQDto(); + statusMQDto.setAsyncId(iotElectricityMeterMQDto.getSn()); + statusMQDto.setMessage("失败"); + statusMQDto.setPrimaryKey(iotElectricityMeterMQDto.getLogId()); + statusMQDto.setNote("电表"); + statusList.add(statusMQDto); + e.printStackTrace(); + } + } + } + + List waterMeterList = dto.getWaterMeterList(); + if(waterMeterList!=null&&waterMeterList.size()>0){ + for(int i=0;i waterQw = new QueryWrapper<>(); + waterQw.eq("cid",iotWaterMeterMQDto.getCid()); + WaterMeter entity = waterMeterService.getOne(waterQw); + if(entity!=null){ + waterMeterService.removeById(entity.getId()); + } + statusList.add(statusMQDto); + } + catch (Exception e) { + StatusMQDto statusMQDto = new StatusMQDto(); + statusMQDto.setAsyncId(iotWaterMeterMQDto.getCid()); + statusMQDto.setMessage("失败"); + statusMQDto.setPrimaryKey(iotWaterMeterMQDto.getLogId()); + statusMQDto.setNote("水表"); + statusList.add(statusMQDto); + e.printStackTrace(); + } + } + } + + List humidDeviceList = dto.getHumidDeviceList(); + if(humidDeviceList!=null&&humidDeviceList.size()>0){ + for(int i=0;i humidQw = new QueryWrapper<>(); + humidQw.eq("sn",iotHumidDeviceMQDto.getSn()); + HumidDevice entity = humidDeviceService.getOne(humidQw); + if(entity!=null){ + humidDeviceService.removeById(entity.getId()); + } + statusList.add(statusMQDto); + } + catch (Exception e) { + StatusMQDto statusMQDto = new StatusMQDto(); + statusMQDto.setAsyncId(iotHumidDeviceMQDto.getSn()); + statusMQDto.setMessage("失败"); + statusMQDto.setPrimaryKey(iotHumidDeviceMQDto.getLogId()); + statusMQDto.setNote("温湿度计"); + statusList.add(statusMQDto); + e.printStackTrace(); + } + } + } + StatusListMQDto statusListMQDto = new StatusListMQDto(); + statusListMQDto.setStatusList(statusList); + rabbitMQUtil.sendToExchange("hldy.iotsyncbiz", "iotsyncbiz.unbind.result", statusListMQDto); + } + }