From 34e2b611518f1f854eb98e68b142253f2b7e97b7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9B=B9=E7=A3=8A?= <45566618@qq.com> Date: Tue, 19 Aug 2025 14:41:18 +0800 Subject: [PATCH 1/3] =?UTF-8?q?=E6=91=84=E5=83=8F=E5=A4=B4=E9=94=99?= =?UTF-8?q?=E8=AF=AF=E7=A0=81=E6=8F=8F=E8=BF=B0=E8=B0=83=E6=95=B4=EF=BC=8C?= =?UTF-8?q?=E6=B2=A1=E6=9C=89=E6=8F=8F=E8=BF=B0=E7=9A=84=E9=94=99=E8=AF=AF?= =?UTF-8?q?=E7=A0=81=E7=9B=B4=E6=8E=A5=E8=BF=94=E5=9B=9E=E9=94=99=E8=AF=AF?= =?UTF-8?q?=E7=A0=81=EF=BC=8C=E9=81=BF=E5=85=8D=E9=94=99=E8=AF=AF=E7=A0=81?= =?UTF-8?q?=E6=B2=A1=E6=89=BE=E5=88=B0=E6=8F=8F=E8=BF=B0=E8=BF=94=E5=9B=9E?= =?UTF-8?q?=E5=AE=9E=E4=BD=93=E4=B8=BA=E7=A9=BA=E7=9A=84=E9=94=99=E8=AF=AF?= =?UTF-8?q?=E6=8F=90=E7=A4=BA=E3=80=82?= 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 | 6 + .../service/impl/CameraInfoServiceImpl.java | 610 ++++++++++++++---- 3 files changed, 476 insertions(+), 141 deletions(-) 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 7c398e3d..f660b561 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 @@ -26,5 +26,6 @@ public interface CameraInfoMapper extends BaseMapper { CameraInfo getCapabilityByDeviceId(CameraInfo cameraInfo); void insertCapability(CameraInfo cameraInfo); void updateCapabilityById(CameraInfo cameraInfo); + void updateDeviceStatusByDevId(CameraInfo cameraInfo); void updatePlanByDevId(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 3a3b200a..e65fb655 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 @@ -260,6 +260,12 @@ where id = #{id} + + UPDATE nu_iot_tplink_camera + SET device_status = #{deviceStatus} + where device_index = #{deviceIndex} + + UPDATE nu_iot_tplink_camera SET record_plan_id = #{recordPlanId} 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 3f8f11b5..60490e60 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 @@ -283,8 +283,13 @@ public class CameraInfoServiceImpl extends ServiceImpl0){ @@ -1962,8 +2200,16 @@ public class CameraInfoServiceImpl extends ServiceImpl ciList = Lists.newArrayList(); JSONArray list = jsonObject.getJSONArray("result"); for(int i=0;i ciList = Lists.newArrayList(); JSONArray list = jsonObject.getJSONArray("result"); for(int i=0;i ciList = Lists.newArrayList(); JSONArray list = jsonObject.getJSONArray("result"); for(int i=0;i10){ deletePlaybackChn(cameraInfo.getVideoDevId(),cameraInfo.getSessionId()); @@ -2161,8 +2423,16 @@ public class CameraInfoServiceImpl extends ServiceImpl获取回放通道时:"+errMsg+""; } } } }else{ - ErrorCode errVo = errorCodeService.getByCode(chnError); - String errMsg = errVo.getErrorMsg(); + String errMsg = ""; + try{ + ErrorCode errVo = errorCodeService.getByCode(chnError); + errMsg = errVo.getErrorMsg(); + }catch (Exception e){ + errMsg = chnError; + } errorMsgs = errorMsgs+ "
添加回放通道时:"+errMsg+"
"; } map.put("error",errorMsgs); @@ -2238,8 +2518,14 @@ public class CameraInfoServiceImpl extends ServiceImpl10){ map.put("error",errorCode); @@ -2340,8 +2631,16 @@ public class CameraInfoServiceImpl extends ServiceImpl获取nvmp设备双向通信URL:"+errMsg+""; + String errorMsg = ""; + try{ + ErrorCode errorVo = errorCodeService.getByCode(multitransError); + errorMsg = errorVo.getErrorMsg(); + }catch (Exception e){ + errorMsg = multitransError; + } + updateDeviceStatus(cameraInfo.getVideoDevId(),multitransError); + errorMsgs = errorMsgs+ "
获取nvmp设备双向通信URL:"+errorMsg+"
"; return Result.error(errorMsgs); } } @@ -2427,17 +2732,23 @@ public class CameraInfoServiceImpl extends ServiceImpl Date: Tue, 19 Aug 2025 14:58:33 +0800 Subject: [PATCH 2/3] =?UTF-8?q?=E7=89=A9=E8=81=94=E9=85=8D=E7=BD=AE?= =?UTF-8?q?=E5=B7=A5=E5=85=B7=E7=9B=B4=E6=8E=A5=E4=BB=8E=E5=BA=93=E4=B8=AD?= =?UTF-8?q?=E5=8F=96=E6=95=B0=E6=8D=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/java/com/nu/modules/tplink/utils/TumsApi.java | 4 ++-- .../src/main/java/com/nu/modules/tq/utils/TqApi.java | 4 ++-- .../java/com/nu/modules/yiweilian/utils/YiweilianApi.java | 4 ++-- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/nursing-unit-iot/nu-iot-biz/src/main/java/com/nu/modules/tplink/utils/TumsApi.java b/nursing-unit-iot/nu-iot-biz/src/main/java/com/nu/modules/tplink/utils/TumsApi.java index 4f66f049..49940bee 100644 --- a/nursing-unit-iot/nu-iot-biz/src/main/java/com/nu/modules/tplink/utils/TumsApi.java +++ b/nursing-unit-iot/nu-iot-biz/src/main/java/com/nu/modules/tplink/utils/TumsApi.java @@ -40,9 +40,9 @@ public class TumsApi { * @return */ public TumsClient createTumsClient(){ - if(this.tumsClient==null){ +// if(this.tumsClient==null){ login(); - } +// } return this.tumsClient; } diff --git a/nursing-unit-iot/nu-iot-biz/src/main/java/com/nu/modules/tq/utils/TqApi.java b/nursing-unit-iot/nu-iot-biz/src/main/java/com/nu/modules/tq/utils/TqApi.java index 1456e143..56168ede 100644 --- a/nursing-unit-iot/nu-iot-biz/src/main/java/com/nu/modules/tq/utils/TqApi.java +++ b/nursing-unit-iot/nu-iot-biz/src/main/java/com/nu/modules/tq/utils/TqApi.java @@ -27,13 +27,13 @@ public class TqApi { private ISysConfigApi sysConfigApi; private void initTqConfig(){ - if(tqConfig==null){ +// if(tqConfig==null){ tqConfig = tqConfigMapper.getConfig(); if(tqConfig==null){ getConfigByApi(); tqConfig = tqConfigMapper.getConfig(); } - } +// } } private void getConfigByApi(){ diff --git a/nursing-unit-iot/nu-iot-biz/src/main/java/com/nu/modules/yiweilian/utils/YiweilianApi.java b/nursing-unit-iot/nu-iot-biz/src/main/java/com/nu/modules/yiweilian/utils/YiweilianApi.java index d78e09fb..742d5b76 100644 --- a/nursing-unit-iot/nu-iot-biz/src/main/java/com/nu/modules/yiweilian/utils/YiweilianApi.java +++ b/nursing-unit-iot/nu-iot-biz/src/main/java/com/nu/modules/yiweilian/utils/YiweilianApi.java @@ -25,13 +25,13 @@ public class YiweilianApi { private ISysConfigApi sysConfigApi; private void initYiweilianConfig(){ - if(yiweilianConfig==null){ +// if(yiweilianConfig==null){ yiweilianConfig = yiweilianConfigMapper.getConfig(); if(yiweilianConfig==null){ getConfigByApi(); yiweilianConfig = yiweilianConfigMapper.getConfig(); } - } +// } } private void getConfigByApi(){ From 6357502c7e8cc512bf7b8299adfa5bd0c3b286fd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9B=B9=E7=A3=8A?= <45566618@qq.com> Date: Thu, 21 Aug 2025 09:44:15 +0800 Subject: [PATCH 3/3] =?UTF-8?q?=E7=94=B5=E8=A1=A8=E3=80=81=E6=B0=B4?= =?UTF-8?q?=E8=A1=A8=E3=80=81=E6=B8=A9=E6=B9=BF=E5=BA=A6=E8=AE=A1=E6=8A=84?= =?UTF-8?q?=E8=A1=A8=E3=80=81=E6=8B=89=E5=90=88=E9=97=B8=E6=97=B6=EF=BC=8C?= =?UTF-8?q?=E5=B0=86=E6=95=B0=E5=80=BC=E5=92=8C=E7=8A=B6=E6=80=81=E5=90=8C?= =?UTF-8?q?=E6=AD=A5=E5=88=B0=E8=BF=90=E7=BB=B4=E7=B3=BB=E7=BB=9F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/nu/dto/IotElectricityMeterMQDto.java | 2 + .../java/com/nu/dto/IotWaterMeterMQDto.java | 2 + .../nu/modules/syncLog/entity/SyncBizLog.java | 47 +++++ .../syncLog/mapper/SyncBizLogMapper.java | 15 ++ .../syncLog/mapper/xml/SyncBizLogMapper.xml | 50 +++++ .../syncLog/service/ISyncBizLogService.java | 15 ++ .../service/impl/SyncBizLogServiceImpl.java | 25 +++ .../mapper/xml/ElectricityMeterMapper.xml | 7 +- .../service/IElectricityMeterService.java | 2 + .../impl/ElectricityMeterServiceImpl.java | 106 +++++++++- .../modules/tq/water/entity/WaterMeter.java | 1 + .../tq/water/mapper/xml/WaterMeterMapper.xml | 7 +- .../tq/water/service/IWaterMeterService.java | 2 + .../service/impl/WaterMeterServiceImpl.java | 105 +++++++++- .../humid/mapper/HumidDeviceMapper.java | 1 + .../humid/mapper/xml/HumidDeviceMapper.xml | 39 ++++ .../humid/service/IHumidDeviceService.java | 2 + .../service/impl/HumidDeviceServiceImpl.java | 47 +++++ .../listener/DynamicQueueNameProvider.java | 14 ++ .../listener/IotDeviceValuesMQListener.java | 37 ++++ .../listenter/DynamicQueueNameProvider.java | 71 +++++++ .../mq/tq/listenter/IotSyncTqMQListener.java | 187 ++++++++++++++++++ .../listener/DynamicQueueNameProvider.java | 29 +++ .../listener/IotSyncHumidMQListener.java | 67 +++++++ 24 files changed, 874 insertions(+), 6 deletions(-) create mode 100644 nursing-unit-iot/nu-iot-biz/src/main/java/com/nu/modules/syncLog/entity/SyncBizLog.java create mode 100644 nursing-unit-iot/nu-iot-biz/src/main/java/com/nu/modules/syncLog/mapper/SyncBizLogMapper.java create mode 100644 nursing-unit-iot/nu-iot-biz/src/main/java/com/nu/modules/syncLog/mapper/xml/SyncBizLogMapper.xml create mode 100644 nursing-unit-iot/nu-iot-biz/src/main/java/com/nu/modules/syncLog/service/ISyncBizLogService.java create mode 100644 nursing-unit-iot/nu-iot-biz/src/main/java/com/nu/modules/syncLog/service/impl/SyncBizLogServiceImpl.java create mode 100644 nursing-unit-iot/nu-iot-biz/src/main/java/com/nu/mq/device/listener/IotDeviceValuesMQListener.java create mode 100644 nursing-unit-iot/nu-iot-biz/src/main/java/com/nu/mq/tq/listenter/DynamicQueueNameProvider.java create mode 100644 nursing-unit-iot/nu-iot-biz/src/main/java/com/nu/mq/tq/listenter/IotSyncTqMQListener.java create mode 100644 nursing-unit-iot/nu-iot-biz/src/main/java/com/nu/mq/yiweilian/listener/DynamicQueueNameProvider.java create mode 100644 nursing-unit-iot/nu-iot-biz/src/main/java/com/nu/mq/yiweilian/listener/IotSyncHumidMQListener.java diff --git a/nursing-unit-common/src/main/java/com/nu/dto/IotElectricityMeterMQDto.java b/nursing-unit-common/src/main/java/com/nu/dto/IotElectricityMeterMQDto.java index 55521ca9..d3410c4f 100644 --- a/nursing-unit-common/src/main/java/com/nu/dto/IotElectricityMeterMQDto.java +++ b/nursing-unit-common/src/main/java/com/nu/dto/IotElectricityMeterMQDto.java @@ -20,6 +20,8 @@ public class IotElectricityMeterMQDto{ private String eleValue; /**阀门状态*/ private String relayState; + /**上次查表时间*/ + private String readTime; /**描述*/ private String remark; /**区域编码*/ diff --git a/nursing-unit-common/src/main/java/com/nu/dto/IotWaterMeterMQDto.java b/nursing-unit-common/src/main/java/com/nu/dto/IotWaterMeterMQDto.java index 566521e5..85a9e30f 100644 --- a/nursing-unit-common/src/main/java/com/nu/dto/IotWaterMeterMQDto.java +++ b/nursing-unit-common/src/main/java/com/nu/dto/IotWaterMeterMQDto.java @@ -22,6 +22,8 @@ public class IotWaterMeterMQDto{ private String relayState; /**水表电池状态*/ private String batteryState; + /**上次查表时间*/ + private String readTime; /**描述*/ private String remark; /**区域编码*/ diff --git a/nursing-unit-iot/nu-iot-biz/src/main/java/com/nu/modules/syncLog/entity/SyncBizLog.java b/nursing-unit-iot/nu-iot-biz/src/main/java/com/nu/modules/syncLog/entity/SyncBizLog.java new file mode 100644 index 00000000..b315977e --- /dev/null +++ b/nursing-unit-iot/nu-iot-biz/src/main/java/com/nu/modules/syncLog/entity/SyncBizLog.java @@ -0,0 +1,47 @@ +package com.nu.modules.syncLog.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.fasterxml.jackson.annotation.JsonFormat; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; +import org.springframework.format.annotation.DateTimeFormat; + +import java.io.Serializable; +import java.util.Date; + +/** + * @Description: 配置同步日志 + * @Author: jeecg-boot + * @Date: 2025-08-08 + * @Version: V1.0 + */ +@Data +@TableName("nu_iot_sync_biz_log") +@Accessors(chain = true) +@EqualsAndHashCode(callSuper = false) +@ApiModel(value="nu_iot_sync_biz_log", description="设备同步日志") +public class SyncBizLog implements Serializable { + private static final long serialVersionUID = 1L; + /**id*/ + @TableId(type = IdType.ASSIGN_ID) + @ApiModelProperty(value = "id") + private String id; + private String logId; + private String orgCode; //机构编码 + private String orgName; //机构名称 + private String content; + private String syncType; + private String status; + private String serverType; + @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss") + @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") + private Date createTime; + @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss") + @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") + private Date updateTime; +} diff --git a/nursing-unit-iot/nu-iot-biz/src/main/java/com/nu/modules/syncLog/mapper/SyncBizLogMapper.java b/nursing-unit-iot/nu-iot-biz/src/main/java/com/nu/modules/syncLog/mapper/SyncBizLogMapper.java new file mode 100644 index 00000000..7f878965 --- /dev/null +++ b/nursing-unit-iot/nu-iot-biz/src/main/java/com/nu/modules/syncLog/mapper/SyncBizLogMapper.java @@ -0,0 +1,15 @@ +package com.nu.modules.syncLog.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.nu.modules.syncLog.entity.SyncBizLog; + +/** + * @Description: 同步日志 + * @Author: jeecg-boot + * @Date: 2025-08-08 + * @Version: V1.0 + */ +public interface SyncBizLogMapper extends BaseMapper { + void addLog(SyncBizLog syncBizLog); + void updateLog(SyncBizLog syncBizLog); +} diff --git a/nursing-unit-iot/nu-iot-biz/src/main/java/com/nu/modules/syncLog/mapper/xml/SyncBizLogMapper.xml b/nursing-unit-iot/nu-iot-biz/src/main/java/com/nu/modules/syncLog/mapper/xml/SyncBizLogMapper.xml new file mode 100644 index 00000000..1561de64 --- /dev/null +++ b/nursing-unit-iot/nu-iot-biz/src/main/java/com/nu/modules/syncLog/mapper/xml/SyncBizLogMapper.xml @@ -0,0 +1,50 @@ + + + + + insert into nu_iot_sync_biz_log ( + log_id, + org_code, + org_name, + content, + sync_type, + status, + server_type, + create_time + ) + values ( + #{logId}, + #{orgCode}, + #{orgName}, + #{content}, + #{syncType}, + #{status}, + #{serverType}, + now() + ) + + + + UPDATE nu_iot_sync_biz_log + SET + status = #{status}, + update_time = now() + where log_id = #{logId} + + + + \ No newline at end of file diff --git a/nursing-unit-iot/nu-iot-biz/src/main/java/com/nu/modules/syncLog/service/ISyncBizLogService.java b/nursing-unit-iot/nu-iot-biz/src/main/java/com/nu/modules/syncLog/service/ISyncBizLogService.java new file mode 100644 index 00000000..33da301e --- /dev/null +++ b/nursing-unit-iot/nu-iot-biz/src/main/java/com/nu/modules/syncLog/service/ISyncBizLogService.java @@ -0,0 +1,15 @@ +package com.nu.modules.syncLog.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.nu.modules.syncLog.entity.SyncBizLog; + +/** + * @Description: 同步日志 + * @Author: jeecg-boot + * @Date: 2025-08-08 + * @Version: V1.0 + */ +public interface ISyncBizLogService extends IService { + void addLog(SyncBizLog syncBizLog); + void updateLog(SyncBizLog syncBizLog); +} diff --git a/nursing-unit-iot/nu-iot-biz/src/main/java/com/nu/modules/syncLog/service/impl/SyncBizLogServiceImpl.java b/nursing-unit-iot/nu-iot-biz/src/main/java/com/nu/modules/syncLog/service/impl/SyncBizLogServiceImpl.java new file mode 100644 index 00000000..8eb9a403 --- /dev/null +++ b/nursing-unit-iot/nu-iot-biz/src/main/java/com/nu/modules/syncLog/service/impl/SyncBizLogServiceImpl.java @@ -0,0 +1,25 @@ +package com.nu.modules.syncLog.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.nu.modules.syncLog.entity.SyncBizLog; +import com.nu.modules.syncLog.mapper.SyncBizLogMapper; +import com.nu.modules.syncLog.service.ISyncBizLogService; +import org.springframework.stereotype.Service; + +/** + * @Description: 同步日志 + * @Author: jeecg-boot + * @Date: 2025-08-08 + * @Version: V1.0 + */ +@Service +public class SyncBizLogServiceImpl extends ServiceImpl implements ISyncBizLogService { + @Override + public void addLog(SyncBizLog syncBizLog){ + baseMapper.addLog(syncBizLog); + } + @Override + public void updateLog(SyncBizLog syncBizLog){ + baseMapper.updateLog(syncBizLog); + } +} 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 703d6750..56f2348a 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 @@ -84,7 +84,12 @@ ele_value as eleValue, relay_state as relayState, read_time as readTime, - remark + remark, + nu_id as nuId, + nu_name as nuName, + depart_id as departId, + depart_name as departName, + depart_server_url as departServerUrl from nu_iot_tq_electricity_meter where cid = #{cid} and address = #{address} 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 fa15689f..493562d7 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 @@ -11,6 +11,8 @@ import java.util.List; public interface IElectricityMeterService extends IService { IPage findPage(Page page, ElectricityMeter electricityMeter); List findAllList(); + void updateValue(ElectricityMeter electricityMeter); + void updateRelayState(ElectricityMeter electricityMeter); Result eleReset(ElectricityMeter electricityMeter); Result eleControl(ElectricityMeter electricityMeter); Result eleRead(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 10c8a0a1..bca0b5ea 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 @@ -3,23 +3,31 @@ package com.nu.modules.tq.electricity.service.impl; import cn.hutool.core.date.DateUtil; import cn.hutool.json.JSONArray; import cn.hutool.json.JSONObject; +import com.alibaba.fastjson.JSON; import com.baomidou.dynamic.datasource.annotation.DS; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.nu.dto.IotElectricityMeterMQDto; +import com.nu.modules.syncLog.entity.SyncBizLog; +import com.nu.modules.syncLog.service.ISyncBizLogService; import com.nu.modules.tq.common.entity.TqApiLog; import com.nu.modules.tq.common.service.ITqApiLogService; import com.nu.modules.tq.utils.HttpTool; import com.nu.modules.tq.utils.SignTool; import com.nu.modules.tq.utils.TqApi; import com.nu.modules.tq.water.entity.WaterMeter; +import com.nu.utils.RabbitMQUtil; import lombok.extern.slf4j.Slf4j; import com.nu.modules.tq.electricity.entity.ElectricityMeter; import com.nu.modules.tq.electricity.mapper.ElectricityMeterMapper; import com.nu.modules.tq.electricity.service.IElectricityMeterService; +import me.zhyd.oauth.utils.UuidUtils; import org.apache.commons.lang.StringUtils; import org.jeecg.common.api.vo.Result; +import org.jeecg.common.util.DateUtils; +import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Lazy; import org.springframework.stereotype.Service; @@ -31,11 +39,16 @@ import java.util.*; public class ElectricityMeterServiceImpl extends ServiceImpl implements IElectricityMeterService { @Autowired - TqApi tqApi; + private TqApi tqApi; @Autowired - ITqApiLogService logService; + private ITqApiLogService logService; + @Autowired + private ISyncBizLogService bizLogService; + + @Autowired + private RabbitMQUtil rabbitMQUtil; @Lazy @Autowired @@ -51,6 +64,16 @@ public class ElectricityMeterServiceImpl extends ServiceImpl { IPage findPage(Page page, WaterMeter waterMeter); List findAllList(); + void updateValue(WaterMeter waterMeter); + void updateRelayState(WaterMeter waterMeter); Result waterReset(WaterMeter waterMeter); Result waterControl(WaterMeter waterMeter); Result waterRead(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 18823d04..c7e5992b 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 @@ -3,11 +3,15 @@ package com.nu.modules.tq.water.service.impl; import cn.hutool.core.date.DateUtil; import cn.hutool.json.JSONArray; import cn.hutool.json.JSONObject; +import com.alibaba.fastjson.JSON; import com.baomidou.dynamic.datasource.annotation.DS; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.nu.dto.IotWaterMeterMQDto; +import com.nu.modules.syncLog.entity.SyncBizLog; +import com.nu.modules.syncLog.service.ISyncBizLogService; import com.nu.modules.tplink.camera.entity.CameraInfo; import com.nu.modules.tq.common.entity.TqApiLog; import com.nu.modules.tq.common.service.ITqApiLogService; @@ -17,8 +21,12 @@ import com.nu.modules.tq.utils.TqApi; import com.nu.modules.tq.water.entity.WaterMeter; import com.nu.modules.tq.water.mapper.WaterMeterMapper; import com.nu.modules.tq.water.service.IWaterMeterService; +import com.nu.utils.RabbitMQUtil; import lombok.extern.slf4j.Slf4j; +import me.zhyd.oauth.utils.UuidUtils; import org.jeecg.common.api.vo.Result; +import org.jeecg.common.util.DateUtils; +import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Lazy; import org.springframework.stereotype.Service; @@ -30,12 +38,16 @@ import java.util.*; public class WaterMeterServiceImpl extends ServiceImpl implements IWaterMeterService { @Autowired - TqApi tqApi; + private TqApi tqApi; @Autowired - ITqApiLogService logService; + private ITqApiLogService logService; + @Autowired + private ISyncBizLogService bizLogService; + @Autowired + private RabbitMQUtil rabbitMQUtil; @Lazy @Autowired @@ -51,6 +63,16 @@ public class WaterMeterServiceImpl extends ServiceImpl { int updateValue(HumidDevice humidDevice); int insertLog(HumidDevice humidDevice); IPage findLogPage(Page page, @Param("params") HumidDevice humidDevice); + HumidDevice getHumidInfo(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 57573f77..4aecc61f 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 @@ -338,4 +338,43 @@ order by id desc + + \ No newline at end of file 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 521728fd..8889cea7 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 @@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.IService; import com.nu.modules.yiweilian.humid.entity.HumidDevice; +import org.apache.ibatis.annotations.Param; import org.jeecg.common.api.vo.Result; public interface IHumidDeviceService extends IService { @@ -12,6 +13,7 @@ public interface IHumidDeviceService extends IService { String updateDeviceParameters(HumidDevice humidDevice,String type); String updateDeviceRealTime(HumidDevice humidDevice); Result updateDevice(HumidDevice humidDevice); + void updateValue(HumidDevice humidDevice); Result deleteDevice(HumidDevice humidDevice); Result getDeviceParameters(HumidDevice humidDevice); IPage findLogPage(Page page, 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 e6aa25e8..8afb0346 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 @@ -3,20 +3,27 @@ package com.nu.modules.yiweilian.humid.service.impl; import cn.hutool.core.date.DateUtil; import cn.hutool.json.JSONArray; import cn.hutool.json.JSONObject; +import com.alibaba.fastjson.JSON; import com.baomidou.dynamic.datasource.annotation.DS; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.nu.dto.IotHumidDeviceMQDto; +import com.nu.modules.syncLog.entity.SyncBizLog; +import com.nu.modules.syncLog.service.ISyncBizLogService; import com.nu.modules.tq.electricity.entity.ElectricityMeter; import com.nu.modules.yiweilian.humid.entity.HumidDevice; import com.nu.modules.yiweilian.humid.mapper.HumidDeviceMapper; import com.nu.modules.yiweilian.humid.service.IHumidDeviceService; import com.nu.modules.yiweilian.utils.YiweilianApi; +import com.nu.utils.RabbitMQUtil; import lombok.extern.slf4j.Slf4j; +import me.zhyd.oauth.utils.UuidUtils; import org.apache.shiro.SecurityUtils; import org.jeecg.common.api.vo.Result; import org.jeecg.common.system.vo.LoginUser; +import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Lazy; import org.springframework.stereotype.Service; @@ -33,7 +40,11 @@ public class HumidDeviceServiceImpl extends ServiceImpl params = getParmas(page+1,limit,humidDevice); @@ -284,6 +297,31 @@ public class HumidDeviceServiceImpl extends ServiceImpl getUpdateParmas(HumidDevice humidDevice){ Map params = new HashMap<>(); params.put("sn", humidDevice.getSn()); @@ -327,6 +365,15 @@ public class HumidDeviceServiceImpl extends ServiceImpl emQw = new QueryWrapper<>(); + emQw.eq("cid",dto.getCid()); + emQw.eq("address",dto.getAddress()); + ElectricityMeter entity = electricityMeterService.getOne(emQw); + if(entity!=null){ + entity.setEleValue(dto.getEleValue()); + entity.setReadTime(dto.getReadTime()); + electricityMeterService.updateValue(entity); + } + } + catch (Exception e) { + statusMQDto.setAsyncId(dto.getId().toString()); + statusMQDto.setMessage("失败"); + statusMQDto.setPrimaryKey(dto.getLogId()); + statusMQDto.setNote("电表"); + e.printStackTrace(); + } + rabbitMQUtil.sendToExchange("hldy.iotDeviceValues", "ywIotDeviceValues.result.async", statusMQDto); + } + + @RabbitListener( + bindings = @QueueBinding( + value = @Queue(name = "#{iotTqAsyncDQNP.getSyncEleControlQueueName()}"), + exchange = @Exchange(name = "hldy.iotDeviceValues", type = ExchangeTypes.DIRECT), + key = "#{iotTqAsyncDQNP.getSyncEleControlKeyName()}" + ), + errorHandler = "iotDeviceMQErrorHandler" + ) + public void handleEleControl_unify(IotElectricityMeterMQDto dto) { + saveSyncEleControl(dto); + } + + private void saveSyncEleControl(IotElectricityMeterMQDto dto) { + StatusMQDto statusMQDto = new StatusMQDto(); + try { + statusMQDto.setAsyncId(dto.getId().toString()); + statusMQDto.setMessage("成功"); + statusMQDto.setPrimaryKey(dto.getLogId()); + statusMQDto.setNote("电表"); + QueryWrapper emQw = new QueryWrapper<>(); + emQw.eq("cid",dto.getCid()); + emQw.eq("address",dto.getAddress()); + ElectricityMeter entity = electricityMeterService.getOne(emQw); + if(entity!=null){ + entity.setRelayState(dto.getRelayState()); + electricityMeterService.updateRelayState(entity); + } + } + catch (Exception e) { + statusMQDto.setAsyncId(dto.getId().toString()); + statusMQDto.setMessage("失败"); + statusMQDto.setPrimaryKey(dto.getLogId()); + statusMQDto.setNote("电表"); + e.printStackTrace(); + } + rabbitMQUtil.sendToExchange("hldy.iotDeviceValues", "ywIotDeviceValues.result.async", statusMQDto); + } + + @RabbitListener( + bindings = @QueueBinding( + value = @Queue(name = "#{iotTqAsyncDQNP.getSyncWaterValueQueueName()}"), + exchange = @Exchange(name = "hldy.iotDeviceValues", type = ExchangeTypes.DIRECT), + key = "#{iotTqAsyncDQNP.getSyncWaterValueKeyName()}" + ), + errorHandler = "iotDeviceMQErrorHandler" + ) + public void handleWaterValue_unify(IotWaterMeterMQDto dto) { + saveSyncWaterValue(dto); + } + + private void saveSyncWaterValue(IotWaterMeterMQDto dto) { + StatusMQDto statusMQDto = new StatusMQDto(); + try { + statusMQDto.setAsyncId(dto.getId().toString()); + statusMQDto.setMessage("成功"); + statusMQDto.setPrimaryKey(dto.getLogId()); + statusMQDto.setNote("水表"); + QueryWrapper emQw = new QueryWrapper<>(); + emQw.eq("cid",dto.getCid()); + emQw.eq("address",dto.getAddress()); + WaterMeter entity = waterMeterService.getOne(emQw); + if(entity!=null){ + entity.setWaterValue(dto.getWaterValue()); + entity.setReadTime(dto.getReadTime()); + waterMeterService.updateValue(entity); + } + } + catch (Exception e) { + statusMQDto.setAsyncId(dto.getId().toString()); + statusMQDto.setMessage("失败"); + statusMQDto.setPrimaryKey(dto.getLogId()); + statusMQDto.setNote("水表"); + e.printStackTrace(); + } + rabbitMQUtil.sendToExchange("hldy.iotDeviceValues", "ywIotDeviceValues.result.async", statusMQDto); + } + + @RabbitListener( + bindings = @QueueBinding( + value = @Queue(name = "#{iotTqAsyncDQNP.getSyncWaterControlQueueName()}"), + exchange = @Exchange(name = "hldy.iotDeviceValues", type = ExchangeTypes.DIRECT), + key = "#{iotTqAsyncDQNP.getSyncWaterControlKeyName()}" + ), + errorHandler = "iotDeviceMQErrorHandler" + ) + public void handleWaterControl_unify(IotWaterMeterMQDto dto) { + saveSyncWaterControl(dto); + } + + private void saveSyncWaterControl(IotWaterMeterMQDto dto) { + StatusMQDto statusMQDto = new StatusMQDto(); + try { + statusMQDto.setAsyncId(dto.getId().toString()); + statusMQDto.setMessage("成功"); + statusMQDto.setPrimaryKey(dto.getLogId()); + statusMQDto.setNote("水表"); + QueryWrapper emQw = new QueryWrapper<>(); + emQw.eq("cid",dto.getCid()); + emQw.eq("address",dto.getAddress()); + WaterMeter entity = waterMeterService.getOne(emQw); + if(entity!=null){ + entity.setRelayState(dto.getRelayState()); + waterMeterService.updateRelayState(entity); + } + } + catch (Exception e) { + statusMQDto.setAsyncId(dto.getId().toString()); + statusMQDto.setMessage("失败"); + statusMQDto.setPrimaryKey(dto.getLogId()); + statusMQDto.setNote("水表"); + e.printStackTrace(); + } + rabbitMQUtil.sendToExchange("hldy.iotDeviceValues", "ywIotDeviceValues.result.async", statusMQDto); + } +} diff --git a/nursing-unit-iot/nu-iot-biz/src/main/java/com/nu/mq/yiweilian/listener/DynamicQueueNameProvider.java b/nursing-unit-iot/nu-iot-biz/src/main/java/com/nu/mq/yiweilian/listener/DynamicQueueNameProvider.java new file mode 100644 index 00000000..82c59037 --- /dev/null +++ b/nursing-unit-iot/nu-iot-biz/src/main/java/com/nu/mq/yiweilian/listener/DynamicQueueNameProvider.java @@ -0,0 +1,29 @@ +package com.nu.mq.yiweilian.listener; + +import com.alibaba.fastjson.JSONObject; +import org.apache.commons.lang.StringUtils; +import org.jeecg.common.system.api.ISysBaseAPI; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; + +@Component("iotYiweilianAsyncDQNP") +public class DynamicQueueNameProvider { + + @Autowired + private ISysBaseAPI sysBaseAPI; + + public String getSyncDeviceQueueName() { + JSONObject deptInfo = sysBaseAPI.getDeptInfo(); + String orgCode = deptInfo.getString("code"); + if (StringUtils.isNotBlank(orgCode)) { + return orgCode + ".ywIotHumid.status.async"; + } else { + return ""; + } + } + + public String getSyncDeviceKeyName() { + return getSyncDeviceQueueName(); + } + +} diff --git a/nursing-unit-iot/nu-iot-biz/src/main/java/com/nu/mq/yiweilian/listener/IotSyncHumidMQListener.java b/nursing-unit-iot/nu-iot-biz/src/main/java/com/nu/mq/yiweilian/listener/IotSyncHumidMQListener.java new file mode 100644 index 00000000..ae039e70 --- /dev/null +++ b/nursing-unit-iot/nu-iot-biz/src/main/java/com/nu/mq/yiweilian/listener/IotSyncHumidMQListener.java @@ -0,0 +1,67 @@ +package com.nu.mq.yiweilian.listener; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.nu.dto.*; +import com.nu.modules.yiweilian.humid.entity.HumidDevice; +import com.nu.modules.yiweilian.humid.service.IHumidDeviceService; +import com.nu.utils.RabbitMQUtil; +import lombok.extern.slf4j.Slf4j; +import org.springframework.amqp.core.ExchangeTypes; +import org.springframework.amqp.rabbit.annotation.Exchange; +import org.springframework.amqp.rabbit.annotation.Queue; +import org.springframework.amqp.rabbit.annotation.QueueBinding; +import org.springframework.amqp.rabbit.annotation.RabbitListener; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; + + +@Slf4j +@Component +public class IotSyncHumidMQListener { + @Autowired + private RabbitMQUtil rabbitMQUtil; + + @Autowired + private IHumidDeviceService humidDeviceService; + + @RabbitListener( + bindings = @QueueBinding( + value = @Queue(name = "#{iotYiweilianAsyncDQNP.getSyncDeviceQueueName()}"), + exchange = @Exchange(name = "hldy.iotDeviceValues", type = ExchangeTypes.DIRECT), + key = "#{iotYiweilianAsyncDQNP.getSyncDeviceKeyName()}" + ), + errorHandler = "iotDeviceMQErrorHandler" + ) + public void handleMessage_unify(IotHumidDeviceMQDto dto) { + saveSyncInfo(dto); + } + + private void saveSyncInfo(IotHumidDeviceMQDto iotHumidDeviceMQDto) { + StatusMQDto statusMQDto = new StatusMQDto(); + try { + statusMQDto.setAsyncId(iotHumidDeviceMQDto.getId().toString()); + statusMQDto.setMessage("成功"); + statusMQDto.setPrimaryKey(iotHumidDeviceMQDto.getLogId()); + statusMQDto.setNote("温湿度计"); + QueryWrapper humidQw = new QueryWrapper<>(); + humidQw.eq("sn",iotHumidDeviceMQDto.getSn()); + HumidDevice entity = humidDeviceService.getOne(humidQw); + if(entity!=null){ + entity.setStatus(iotHumidDeviceMQDto.getStatus()); + entity.setElectricity(iotHumidDeviceMQDto.getElectricity()); + entity.setTemperature(iotHumidDeviceMQDto.getTemperature()); + entity.setHumidity(iotHumidDeviceMQDto.getHumidity()); + entity.setReportingTime(iotHumidDeviceMQDto.getReportingTime()); + humidDeviceService.updateValue(entity); + } + } + catch (Exception e) { + statusMQDto.setAsyncId(iotHumidDeviceMQDto.getId().toString()); + statusMQDto.setMessage("失败"); + statusMQDto.setPrimaryKey(iotHumidDeviceMQDto.getLogId()); + statusMQDto.setNote("温湿度计"); + e.printStackTrace(); + } + rabbitMQUtil.sendToExchange("hldy.iotDeviceValues", "ywIotDeviceValues.result.async", statusMQDto); + } +}