package com.fastbee.controller; import com.fastbee.common.CommandConstant; import com.fastbee.common.core.controller.BaseController; import com.fastbee.common.core.domain.AjaxResult; import com.fastbee.common.core.domain.model.LoginUser; import com.fastbee.common.utils.SecurityUtils; import com.fastbee.common.utils.json.JsonUtils; import com.fastbee.dto.DeviceTaskQueryDTO; import com.fastbee.dto.NettyDevice; import com.fastbee.dto.ObstacleData; import com.fastbee.iot.domain.DevicePlan; import com.fastbee.manager.DeviceSessionManager; import com.fastbee.service.DeviceTaskService; import com.fastbee.utils.CommandUtils; import io.netty.buffer.ByteBuf; import io.netty.buffer.Unpooled; import io.netty.util.CharsetUtil; import org.apache.commons.lang3.StringUtils; import org.java_websocket.WebSocket; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.util.CollectionUtils; import org.springframework.web.bind.annotation.*; import java.util.List; import java.util.Map; @RestController @RequestMapping("/iot/api") public class DeviceExternalApiController extends BaseController { @Autowired private DeviceSessionManager deviceSessionManager; @PostMapping("/obstacleData") public AjaxResult obstacleData(@RequestBody ObstacleData obstacleData) { Map data = obstacleData.getData(); String deviceId = (String) data.get("deviceId"); if (StringUtils.isEmpty(deviceId)) { return AjaxResult.error("deviceId为空!"); } // Map obstacle = (Map) data.get("obstacle"); // Boolean isSecure = (Boolean) data.get("isSecure"); List devices = deviceSessionManager.getSlaveControl(deviceId); if (!CollectionUtils.isEmpty(devices)) { devices.forEach(x -> { ByteBuf buf = Unpooled.buffer(); CommandUtils.buildCommand(buf, obstacleData, CommandConstant.interaction); String content = buf.toString(CharsetUtil.UTF_8); logger.info("推送设备:{}障碍物消息:{}到:{}", deviceId, content, x.getConnectorId()); if (x.getChannel() != null && x.getChannel().isActive()) { x.getChannel().writeAndFlush(buf); } }); } return AjaxResult.success(); } }