物联设备损坏增加更换设备

This commit is contained in:
曹磊 2026-04-28 17:49:03 +08:00
parent e94e0c12a5
commit a73785a9f4
7 changed files with 151 additions and 24 deletions

View File

@ -358,4 +358,23 @@ public class DeviceManagerController extends JeecgController<DeviceManager, IDev
service.updateById(deviceManager); service.updateById(deviceManager);
return Result.OK("绑定成功!"); return Result.OK("绑定成功!");
} }
/**
* 分页列表查询
*
* @param DeviceManager
* @param pageNo
* @param pageSize
* @param req
* @return
*/
@GetMapping(value = "/ghList")
public Result<IPage<DeviceManager>> ghList(DeviceManager DeviceManager,
@RequestParam(name="pageNo", defaultValue="1") Integer pageNo,
@RequestParam(name="pageSize", defaultValue="10") Integer pageSize,
HttpServletRequest req) {
Page<DeviceManager> page = new Page<DeviceManager>(pageNo, pageSize);
IPage<DeviceManager> pageList = service.findGhPage(page, DeviceManager);
return Result.OK(pageList);
}
} }

View File

@ -34,4 +34,5 @@ public class DeviceBindLog implements Serializable {
private String optType; private String optType;
private String remarks; private String remarks;
private Integer ywId; private Integer ywId;
private Integer newId;
} }

View File

@ -41,4 +41,5 @@ public interface DeviceManagerMapper extends BaseMapper<DeviceManager> {
IPage<HumidDevice> findHumidDeviceUnbindPage(Page<HumidDevice> page, @Param("params") DeviceManager deviceManager); IPage<HumidDevice> findHumidDeviceUnbindPage(Page<HumidDevice> page, @Param("params") DeviceManager deviceManager);
void editPreviewStatusBySn(DeviceManager deviceManager); void editPreviewStatusBySn(DeviceManager deviceManager);
void editPreviewById(DeviceManager deviceManager); void editPreviewById(DeviceManager deviceManager);
IPage<DeviceManager> findGhPage(Page<DeviceManager> page, @Param("params") DeviceManager deviceManager);
} }

View File

@ -22,6 +22,11 @@
a.yw_id, a.yw_id,
t.device_index t.device_index
from nu_iot_device_preview a from nu_iot_device_preview a
inner join (
select distinct sdi.item_value,sdi.item_text
from sys_dict sd inner join sys_dict_item sdi on sd.id = sdi.dict_id
where sd.dict_code = 'tplink_device_type' and sdi.status = '0'
) dict on a.device_type = dict.item_value
left join nu_base_info c on a.nu_id = c.nu_id left join nu_base_info c on a.nu_id = c.nu_id
left join ( left join (
select mac as sn, select mac as sn,
@ -46,21 +51,14 @@
) t on a.sn = t.sn ) t on a.sn = t.sn
where a.sn is not null where a.sn is not null
and ifnull(a.device_status,'') != '损坏' and ifnull(a.device_status,'') != '损坏'
<if test="params.nuName != null and params.nuName != ''"> <if test="params.nuName != null and params.nuName != ''">
AND c.nu_name LIKE concat('%',#{params.nuName},'%') AND (
</if> c.nu_name LIKE concat('%',#{params.nuName},'%')
<if test="params.dimension != null and params.dimension != ''"> or a.dimension LIKE concat('%',#{params.nuName},'%')
AND a.dimension = #{params.dimension} or a.batch_no LIKE concat('%',#{params.nuName},'%')
</if> or dict.item_text LIKE concat('%',#{params.nuName},'%')
<if test="params.deviceType != null and params.deviceType != ''"> )
AND a.device_type = #{params.deviceType} </if>
</if>
<if test="params.batchNo != null and params.batchNo != ''">
AND a.batch_no = #{params.batchNo}
</if>
<if test="params.deviceStatus != null and params.deviceStatus != ''">
AND t.online_status = #{params.deviceStatus}
</if>
order by a.batch_no,a.dimension,a.device_type,a.device_model,a.sn order by a.batch_no,a.dimension,a.device_type,a.device_model,a.sn
</select> </select>
@ -159,7 +157,7 @@
AND device_name LIKE concat('%',#{params.deviceName},'%') AND device_name LIKE concat('%',#{params.deviceName},'%')
</if> </if>
</where> </where>
order by factory asc ,device_type asc ,device_model asc ,sn asc,opt_date desc order by opt_date desc ,factory asc ,device_type asc ,device_model asc ,sn asc
</select> </select>
<insert id="addLog"> <insert id="addLog">
@ -298,4 +296,61 @@
where id = #{id} where id = #{id}
</update> </update>
<select id="findGhPage" parameterType="com.nu.modules.manager.entity.DeviceManager" resultType="com.nu.modules.manager.entity.DeviceManager">
select
a.id,
a.batch_no,
a.dimension,
a.device_name,
a.device_type,
a.device_model,
a.factory,
a.sn,
a.create_time,
a.update_time,
a.remarks,
a.device_status,
t.online_status,
a.yw_id,
t.device_index
from nu_iot_device_preview a
inner join (
select mac as sn,
( case device_status when '0' then '离线' when '1' then '在线' end ) as online_status,
device_index
from nu_iot_tplink_camera
union all
select sn,
( case relay_state when '0' then '离线' else '在线' end ) as online_status,
'' as device_index
from nu_iot_ds_electricity_meter
union all
select cid as sn,
( case relay_state when '0' then '离线' else '在线' end ) as online_status,
'' as device_index
from nu_iot_tq_water_meter
union all
select sn,
( case status when '0' then '在线' else '离线' end ) as online_status,
'' as device_index
from nu_iot_yiweilian_humid_device
) t on a.sn = t.sn
where a.sn is not null
and a.nu_id is null
and ifnull(a.device_status,'') != '损坏'
<if test="params.dimension != null and params.dimension != ''">
AND a.dimension = #{params.dimension}
</if>
<if test="params.deviceType != null and params.deviceType != ''">
AND a.device_type = #{params.deviceType}
</if>
<if test="params.batchNo != null and params.batchNo != ''">
AND a.batch_no = #{params.batchNo}
</if>
<if test="params.id != null and params.id != ''">
AND a.id != #{params.id}
</if>
order by a.batch_no,a.dimension,a.device_type,a.device_model,a.sn
</select>
</mapper> </mapper>

View File

@ -26,7 +26,7 @@ public interface IDeviceManagerService extends IService<DeviceManager> {
IPage<DeviceManager> findAllPage(Page<DeviceManager> page, DeviceManager deviceManager); IPage<DeviceManager> findAllPage(Page<DeviceManager> page, DeviceManager deviceManager);
IPage<DeviceBindLog> findBingLogPage(Page<DeviceBindLog> page, DeviceBindLog deviceBindLog); IPage<DeviceBindLog> findBingLogPage(Page<DeviceBindLog> page, DeviceBindLog deviceBindLog);
Result<String> updateManager(DeviceManager deviceManager); Result<String> updateManager(DeviceManager deviceManager);
void addLog(DeviceBindLog deviceBindLog); void addLog(DeviceBindLog deviceBindLog) throws Exception;
List<DeviceManager> queryNuList(DeviceManager deviceManager); List<DeviceManager> queryNuList(DeviceManager deviceManager);
List<DeviceManager> exportDeviceExcel(DeviceManager deviceManager); List<DeviceManager> exportDeviceExcel(DeviceManager deviceManager);
List<DeviceManagerHz> exportDeviceHzExcel(DeviceManagerHz deviceManager); List<DeviceManagerHz> exportDeviceHzExcel(DeviceManagerHz deviceManager);
@ -40,4 +40,6 @@ public interface IDeviceManagerService extends IService<DeviceManager> {
DeviceManager findOneByType(DeviceManager deviceManager); DeviceManager findOneByType(DeviceManager deviceManager);
void editPreviewStatusBySn(DeviceManager deviceManager); void editPreviewStatusBySn(DeviceManager deviceManager);
void editPreviewById(DeviceManager deviceManager); void editPreviewById(DeviceManager deviceManager);
IPage<DeviceManager> findGhPage(Page<DeviceManager> page, DeviceManager deviceManager);
} }

View File

@ -1,6 +1,7 @@
package com.nu.modules.manager.service.impl; package com.nu.modules.manager.service.impl;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
@ -22,6 +23,7 @@ import org.jeecg.common.system.api.ISysBaseAPI;
import org.springframework.beans.BeanUtils; import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
@ -74,13 +76,17 @@ public class DeviceManagerServiceImpl extends ServiceImpl<DeviceManagerMapper, D
return Result.OK("编辑成功!"); return Result.OK("编辑成功!");
} }
@Transactional(rollbackFor = Exception.class)
@Override @Override
public void addLog(DeviceBindLog deviceBindLog){ public void addLog(DeviceBindLog deviceBindLog) throws Exception {
baseMapper.addLog(deviceBindLog); baseMapper.addLog(deviceBindLog);
DeviceManager deviceManager = new DeviceManager(); DeviceManager deviceManager = new DeviceManager();
deviceManager.setId(deviceBindLog.getId()); deviceManager.setId(deviceBindLog.getId());
deviceManager.setDeviceStatus(deviceBindLog.getOptType()); deviceManager.setDeviceStatus(deviceBindLog.getOptType());
if(deviceBindLog.getOptType().equals("绑定区域")||deviceBindLog.getOptType().equals("更换区域")){ if(!deviceBindLog.getOptType().equals("损坏")){
deviceManager.setDeviceStatus("已绑定");
}
if(deviceBindLog.getDimension().equals("区域维度")){
deviceManager.setNuId(deviceBindLog.getNuId()); deviceManager.setNuId(deviceBindLog.getNuId());
} }
baseMapper.updateById(deviceManager); baseMapper.updateById(deviceManager);
@ -92,6 +98,38 @@ public class DeviceManagerServiceImpl extends ServiceImpl<DeviceManagerMapper, D
dto.setOrgCode(orgCode); dto.setOrgCode(orgCode);
dto.setDeviceStatus(deviceBindLog.getOptType()); dto.setDeviceStatus(deviceBindLog.getOptType());
rabbitMQUtil.sendToExchange("hldy.iotsyncbiz", "iotsyncbiz.bindpreview", dto); rabbitMQUtil.sendToExchange("hldy.iotsyncbiz", "iotsyncbiz.bindpreview", dto);
if(deviceBindLog.getOptType().equals("损坏")){
if(deviceBindLog.getNewId()!=null){
//更新新数据状态为绑定如区域维度给定nuId
if(deviceBindLog.getDimension().equals("区域维度")){
deviceManager.setNuId(deviceBindLog.getNuId());
}
QueryWrapper<DeviceManager> qw = new QueryWrapper<>();
qw.eq("id",deviceBindLog.getNewId());
DeviceManager entity = this.getOne(qw);
if(deviceBindLog.getDimension().equals("区域维度")){
entity.setNuId(deviceBindLog.getNuId());
entity.setNuName(deviceBindLog.getNuName());
}
entity.setDeviceStatus("已绑定");
baseMapper.updateById(entity);
//同步给运维平台
DevicePreviewMqDto dto2 = new DevicePreviewMqDto();
BeanUtils.copyProperties(entity, dto2);
dto2.setOrgCode(orgCode);
dto2.setDeviceStatus("更换设备");
dto2.setRemarks(deviceBindLog.getRemarks());
rabbitMQUtil.sendToExchange("hldy.iotsyncbiz", "iotsyncbiz.bindpreview", dto2);
DeviceBindLog deviceBindLog2 = new DeviceBindLog();
BeanUtils.copyProperties(entity, deviceBindLog2);
deviceBindLog2.setOptType("更换设备");
deviceBindLog2.setRemarks(deviceBindLog.getRemarks());
baseMapper.addLog(deviceBindLog2);
}
}
} }
@Override @Override
@ -162,4 +200,9 @@ public class DeviceManagerServiceImpl extends ServiceImpl<DeviceManagerMapper, D
public void editPreviewById(DeviceManager deviceManager){ public void editPreviewById(DeviceManager deviceManager){
baseMapper.editPreviewById(deviceManager); baseMapper.editPreviewById(deviceManager);
} }
@Override
public IPage<DeviceManager> findGhPage(Page<DeviceManager> page, DeviceManager deviceManager){
return baseMapper.findGhPage(page,deviceManager);
}
} }

View File

@ -156,13 +156,19 @@ public class IotSyncBizMQListener {
deviceManager.setDeviceType(iotCameraInfoMQDto.getDeviceType()); deviceManager.setDeviceType(iotCameraInfoMQDto.getDeviceType());
DeviceManager dm = deviceManagerService.findBySn(deviceManager); DeviceManager dm = deviceManagerService.findBySn(deviceManager);
if(dm!=null){ if(dm!=null){
deviceManager.setDeviceStatus("正常"); deviceManager.setDeviceStatus("未绑定");
if(dm.getDimension().equals("机构维度")){
deviceManager.setDeviceStatus("已绑定");
}
deviceManagerService.editPreviewStatusBySn(deviceManager); deviceManagerService.editPreviewStatusBySn(deviceManager);
}else{ }else{
DeviceManager snEmpty = deviceManagerService.findOneByType(deviceManager); DeviceManager snEmpty = deviceManagerService.findOneByType(deviceManager);
if(snEmpty!=null){ if(snEmpty!=null){
deviceManager.setId(snEmpty.getId()); deviceManager.setId(snEmpty.getId());
deviceManager.setDeviceStatus("正常"); deviceManager.setDeviceStatus("未绑定");
if(snEmpty.getDimension().equals("机构维度")){
deviceManager.setDeviceStatus("已绑定");
}
deviceManagerService.updateById(deviceManager); deviceManagerService.updateById(deviceManager);
deviceManager.setYwId(snEmpty.getYwId()); deviceManager.setYwId(snEmpty.getYwId());
@ -250,7 +256,7 @@ public class IotSyncBizMQListener {
mqttMessageHandler.subscribeUplinkMessage(iotElectricityMeterMQDto.getSn()); mqttMessageHandler.subscribeUplinkMessage(iotElectricityMeterMQDto.getSn());
DeviceManager deviceManager = new DeviceManager(); DeviceManager deviceManager = new DeviceManager();
deviceManager.setSn(iotElectricityMeterMQDto.getSn()); deviceManager.setSn(iotElectricityMeterMQDto.getSn());
deviceManager.setDeviceStatus("正常"); deviceManager.setDeviceStatus("未绑定");
deviceManagerService.editPreviewStatusBySn(deviceManager); deviceManagerService.editPreviewStatusBySn(deviceManager);
} }
statusList.add(statusMQDto); statusList.add(statusMQDto);
@ -297,7 +303,7 @@ public class IotSyncBizMQListener {
waterMeterService.save(waterMeter); waterMeterService.save(waterMeter);
DeviceManager deviceManager = new DeviceManager(); DeviceManager deviceManager = new DeviceManager();
deviceManager.setSn(iotWaterMeterMQDto.getCid()); deviceManager.setSn(iotWaterMeterMQDto.getCid());
deviceManager.setDeviceStatus("正常"); deviceManager.setDeviceStatus("未绑定");
deviceManagerService.editPreviewStatusBySn(deviceManager); deviceManagerService.editPreviewStatusBySn(deviceManager);
} }
statusList.add(statusMQDto); statusList.add(statusMQDto);
@ -375,7 +381,7 @@ public class IotSyncBizMQListener {
humidDeviceService.save(humidDevice); humidDeviceService.save(humidDevice);
DeviceManager deviceManager = new DeviceManager(); DeviceManager deviceManager = new DeviceManager();
deviceManager.setSn(iotHumidDeviceMQDto.getSn()); deviceManager.setSn(iotHumidDeviceMQDto.getSn());
deviceManager.setDeviceStatus("正常"); deviceManager.setDeviceStatus("未绑定");
deviceManagerService.editPreviewStatusBySn(deviceManager); deviceManagerService.editPreviewStatusBySn(deviceManager);
} }
statusList.add(statusMQDto); statusList.add(statusMQDto);