From 9fec315c9e7f159115f3cc2341c064038f1727de Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9B=B9=E7=A3=8A?= <45566618@qq.com> Date: Wed, 15 Apr 2026 18:04:37 +0800 Subject: [PATCH] =?UTF-8?q?=E7=89=A9=E8=81=94=E8=AE=BE=E5=A4=87BUG?= =?UTF-8?q?=E5=A4=84=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/DeviceManagerController.java | 58 ++++++- .../modules/manager/entity/DeviceBindLog.java | 1 + .../mapper/xml/DeviceManagerMapper.xml | 14 ++ .../camera/mapper/xml/CameraInfoMapper.xml | 150 +++++++++++------- .../humid/mapper/HumidDeviceMapper.java | 3 + .../humid/mapper/xml/HumidDeviceMapper.xml | 31 ++++ .../service/impl/HumidDeviceServiceImpl.java | 2 +- .../device/listener/IotSyncBizMQListener.java | 72 ++++----- .../nubaseinfo/mapper/NuBaseInfoMapper.java | 13 +- .../mapper/xml/NuBaseInfoMapper.xml | 77 ++++++--- .../service/impl/NuBaseInfoServiceImpl.java | 10 +- 11 files changed, 301 insertions(+), 130 deletions(-) diff --git a/nursing-unit-iot/nu-iot-biz/src/main/java/com/nu/modules/manager/controller/DeviceManagerController.java b/nursing-unit-iot/nu-iot-biz/src/main/java/com/nu/modules/manager/controller/DeviceManagerController.java index 8f29d614..be89918b 100644 --- a/nursing-unit-iot/nu-iot-biz/src/main/java/com/nu/modules/manager/controller/DeviceManagerController.java +++ b/nursing-unit-iot/nu-iot-biz/src/main/java/com/nu/modules/manager/controller/DeviceManagerController.java @@ -1,5 +1,6 @@ package com.nu.modules.manager.controller; +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.nu.modules.manager.entity.DeviceBindLog; @@ -11,16 +12,28 @@ import com.nu.modules.tq.water.entity.WaterMeter; import com.nu.modules.yiweilian.humid.entity.HumidDevice; import io.swagger.annotations.ApiOperation; import lombok.extern.slf4j.Slf4j; +import org.apache.shiro.SecurityUtils; import org.jeecg.common.api.vo.Result; import org.jeecg.common.system.base.controller.JeecgController; +import org.jeecg.common.system.query.QueryGenerator; +import org.jeecg.common.system.vo.LoginUser; +import org.jeecg.common.util.oConvertUtils; +import org.jeecg.config.JeecgBaseConfig; +import org.jeecgframework.poi.excel.def.NormalExcelConstants; +import org.jeecgframework.poi.excel.entity.ExportParams; +import org.jeecgframework.poi.excel.view.JeecgEntityExcelView; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; import org.springframework.web.servlet.ModelAndView; + +import javax.annotation.Resource; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.util.Arrays; +import java.util.HashMap; import java.util.List; import java.util.Map; +import java.util.stream.Collectors; /** * @Description: 设备管理 @@ -34,7 +47,8 @@ import java.util.Map; public class DeviceManagerController extends JeecgController { @Autowired private IDeviceManagerService service; - + @Resource + private JeecgBaseConfig jeecgBaseConfig; /** * 分页列表查询 * @@ -164,7 +178,47 @@ public class DeviceManagerController extends JeecgController queryWrapper = QueryGenerator.initQueryWrapper(DeviceManager, request.getParameterMap()); + LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal(); + + // 过滤选中数据 + String selections = request.getParameter("selections"); + if (oConvertUtils.isNotEmpty(selections)) { + List selectionList = Arrays.asList(selections.split(",")); + queryWrapper.in("id",selectionList); + } + // Step.2 获取导出数据 + List exportList = service.list(queryWrapper); + + // Step.3 AutoPoi 导出Excel + ModelAndView mv = new ModelAndView(new JeecgEntityExcelView()); + //此处设置的filename无效 ,前端会重更新设置一下 + mv.addObject(NormalExcelConstants.FILE_NAME, "物联设备清单"); + mv.addObject(NormalExcelConstants.CLASS, DeviceManager.class); + //update-begin--Author:liusq Date:20210126 for:图片导出报错,ImageBasePath未设置-------------------- + ExportParams exportParams=new ExportParams("物联设备清单", "导出人:" + sysUser.getRealname(), "物联设备清单"); + exportParams.setImageBasePath(jeecgBaseConfig.getPath().getUpload()); + //update-end--Author:liusq Date:20210126 for:图片导出报错,ImageBasePath未设置---------------------- + mv.addObject(NormalExcelConstants.PARAMS,exportParams); + + Map result = new HashMap<>(); + for (DeviceManager device : exportList) { + String name = device.getDeviceName(); + result.put(name, result.getOrDefault(name, 0) + 1); + } + + for (Map.Entry entry : result.entrySet()) { + String deviceName = entry.getKey(); + Integer count = entry.getValue(); + DeviceManager dm = new DeviceManager(); + dm.setDeviceName(deviceName + ", 数量: " + count); + exportList.add(dm); + } + mv.addObject(NormalExcelConstants.DATA_LIST, exportList); + return mv; +// return super.exportXls(request, DeviceManager, DeviceManager.class, "物联设备清单"); } /** diff --git a/nursing-unit-iot/nu-iot-biz/src/main/java/com/nu/modules/manager/entity/DeviceBindLog.java b/nursing-unit-iot/nu-iot-biz/src/main/java/com/nu/modules/manager/entity/DeviceBindLog.java index d31ec88d..29e06afa 100644 --- a/nursing-unit-iot/nu-iot-biz/src/main/java/com/nu/modules/manager/entity/DeviceBindLog.java +++ b/nursing-unit-iot/nu-iot-biz/src/main/java/com/nu/modules/manager/entity/DeviceBindLog.java @@ -22,6 +22,7 @@ public class DeviceBindLog implements Serializable { private String nuId; private String nuName; private String dimension; + private String deviceName; @Dict(dicCode = "tplink_device_type") private String deviceType; private String deviceModel; diff --git a/nursing-unit-iot/nu-iot-biz/src/main/java/com/nu/modules/manager/mapper/xml/DeviceManagerMapper.xml b/nursing-unit-iot/nu-iot-biz/src/main/java/com/nu/modules/manager/mapper/xml/DeviceManagerMapper.xml index 4bcbca1f..7f0f9cde 100644 --- a/nursing-unit-iot/nu-iot-biz/src/main/java/com/nu/modules/manager/mapper/xml/DeviceManagerMapper.xml +++ b/nursing-unit-iot/nu-iot-biz/src/main/java/com/nu/modules/manager/mapper/xml/DeviceManagerMapper.xml @@ -83,6 +83,7 @@ nu_id, nu_name, dimension, + device_name, device_type, device_model, sn, @@ -90,6 +91,17 @@ opt_date, opt_type from nu_iot_device_bind_log + + + AND dimension = #{params.dimension} + + + AND device_type = #{params.deviceType} + + + AND device_name LIKE concat('%',#{params.deviceName},'%') + + order by factory asc ,device_type asc ,device_model asc ,sn asc,opt_date desc @@ -98,6 +110,7 @@ nu_id, nu_name, dimension, + device_name, device_type, device_model, sn, @@ -109,6 +122,7 @@ #{nuId}, #{nuName}, #{dimension}, + #{deviceName}, #{deviceType}, #{deviceModel}, #{sn}, 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 ea4c9f3c..b8aa4fbc 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 @@ -107,32 +107,60 @@ - select a.*,b.nu_name,b.area_flag - from ( - select mac as id,nu_id,device_index,mac as sn,device_model,device_type, - ( case device_status when '0' then '离线' when '1' then '在线' end ) as device_status, - dimension, - maintain_status + select + a.id, + a.nu_id, + c.nu_name, + a.dimension, + a.device_name, + a.device_type, + a.device_model, + a.factory, + a.sn, + a.create_time, + a.update_time, + a.remarks, + t.online_status as deviceStatus + from nu_iot_device_preview a + inner join nu_base_info c on a.nu_id = c.nu_id + inner join ( + select mac as sn, + ( case device_status when '0' then '离线' when '1' then '在线' end ) as online_status from nu_iot_tplink_camera union all - select sn as id,nu_id,sn as device_index,sn,'' as device_model,'db' as device_type, - ( case relay_state when '0' then '拉闸' else '合闸' end ) as device_status, - dimension, - maintain_status + select sn, + ( case relay_state when '0' then '离线' else '在线' end ) as online_status from nu_iot_ds_electricity_meter union all - select cid as id,nu_id,cid as device_index,cid as sn,'' as device_model,'sb' as device_type, - ( case relay_state when '0' then '关阀' else '开阀' end ) as device_status, - dimension, - maintain_status + select cid as sn, + ( case relay_state when '0' then '离线' else '在线' end ) as online_status from nu_iot_tq_water_meter union all - select sn as id,nu_id,sn as device_index,sn,'' as device_model,'wsdj' as device_type, - ( case status when '0' then '在线' else '离线' end ) as device_status, - dimension, - maintain_status + select sn, + ( case status when '0' then '在线' else '离线' end ) as online_status from nu_iot_yiweilian_humid_device - ) a - left join nu_base_info b on a.nu_id = b.nu_id - - - and b.nu_name like concat('%',#{params.nuName},'%') - - - and a.device_status = #{params.deviceStatus} - - - and a.device_type = #{params.deviceType} - - - and a.dimension = #{params.dimension} - - - order by a.nu_id,a.device_type,a.sn + ) t on a.sn = t.sn + where a.sn is not null + and ifnull(a.device_status,'') != '损坏' + + AND a.nu_id = #{params.nuId} + + + AND c.nu_name LIKE concat('%',#{params.nuName},'%') + + + AND a.dimension = #{params.dimension} + + + AND a.device_type = #{params.deviceType} + + order by a.dimension,a.device_type,a.device_model,a.sn diff --git a/nursing-unit-iot/nu-iot-biz/src/main/java/com/nu/modules/yiweilian/humid/mapper/HumidDeviceMapper.java b/nursing-unit-iot/nu-iot-biz/src/main/java/com/nu/modules/yiweilian/humid/mapper/HumidDeviceMapper.java index acea6377..febfa459 100644 --- a/nursing-unit-iot/nu-iot-biz/src/main/java/com/nu/modules/yiweilian/humid/mapper/HumidDeviceMapper.java +++ b/nursing-unit-iot/nu-iot-biz/src/main/java/com/nu/modules/yiweilian/humid/mapper/HumidDeviceMapper.java @@ -6,8 +6,11 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.nu.modules.yiweilian.humid.entity.HumidDevice; import org.apache.ibatis.annotations.Param; +import java.util.List; + public interface HumidDeviceMapper extends BaseMapper { IPage findPage(Page page, @Param("params") HumidDevice humidDevice); + List addList(); HumidDevice getHumidDevice(HumidDevice humidDevice); int insertDevice(HumidDevice humidDevice); int updateDevice(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 ebdda732..4484c48b 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 @@ -54,6 +54,37 @@ + + - - update nu_iot_tplink_camera - set nu_id = null, - dimension = null - where nu_id = #{nuId} - - - update nu_iot_ds_electricity_meter - set nu_id = null, - dimension = null - where nu_id = #{nuId} - - - update nu_iot_tq_water_meter - set nu_id = null, - dimension = null - where nu_id = #{nuId} - - - update nu_iot_yiweilian_humid_device - set nu_id = null, - dimension = null + + + + + + + + + + + + + + + + + + + + + + + + + + + insert into nu_iot_device_bind_log( + sn, + dimension, + device_name, + device_type, + device_model, + factory, + opt_date, + opt_type, + remarks + ) + select + sn, + dimension, + device_name, + device_type, + device_model, + factory, + now(), + '释放', + '区域停用' + from nu_iot_device_preview a + where a.nu_id = #{nuId} + and ifnull(a.device_status,'') != '损坏' + + + + update nu_iot_device_preview + set nu_id = null where nu_id = #{nuId} diff --git a/nursing-unit-nu/nu-nu-biz/src/main/java/com/nu/modules/nubaseinfo/service/impl/NuBaseInfoServiceImpl.java b/nursing-unit-nu/nu-nu-biz/src/main/java/com/nu/modules/nubaseinfo/service/impl/NuBaseInfoServiceImpl.java index 00866ad9..20457c3c 100644 --- a/nursing-unit-nu/nu-nu-biz/src/main/java/com/nu/modules/nubaseinfo/service/impl/NuBaseInfoServiceImpl.java +++ b/nursing-unit-nu/nu-nu-biz/src/main/java/com/nu/modules/nubaseinfo/service/impl/NuBaseInfoServiceImpl.java @@ -167,10 +167,12 @@ public class NuBaseInfoServiceImpl extends ServiceImpl