|
|
@@ -0,0 +1,73 @@
|
|
|
+package com.inspur.netty.handler;
|
|
|
+
|
|
|
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|
|
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
|
|
+import com.inspur.device.domain.SmsbDeviceTask;
|
|
|
+import com.inspur.device.domain.SmsbDeviceTaskDetail;
|
|
|
+import com.inspur.device.domain.constants.DeviceTaskConstants;
|
|
|
+import com.inspur.device.domain.vo.SmsbDeviceTaskVo;
|
|
|
+import com.inspur.device.domain.vo.SmsbDeviceVo;
|
|
|
+import com.inspur.device.mapper.SmsbDeviceTaskDetailMapper;
|
|
|
+import com.inspur.device.mapper.SmsbDeviceTaskMapper;
|
|
|
+import com.inspur.device.service.ISmsbDeviceService;
|
|
|
+import com.inspur.device.service.impl.SmsbDeviceServiceImpl;
|
|
|
+import com.inspur.netty.message.receive.ReceiveMessageType;
|
|
|
+import io.netty.channel.ChannelHandlerContext;
|
|
|
+import io.netty.channel.ChannelInboundHandlerAdapter;
|
|
|
+import lombok.extern.slf4j.Slf4j;
|
|
|
+import org.dromara.common.core.utils.SpringUtils;
|
|
|
+
|
|
|
+/**
|
|
|
+ * 播放控制 包括上一个下一个
|
|
|
+ *
|
|
|
+ * @author lihao16
|
|
|
+ */
|
|
|
+@Slf4j
|
|
|
+public class TaskPlayControlHandler extends ChannelInboundHandlerAdapter {
|
|
|
+
|
|
|
+ private static final ISmsbDeviceService smsbDeviceService = SpringUtils.getBean(SmsbDeviceServiceImpl.class);
|
|
|
+
|
|
|
+ private static final SmsbDeviceTaskMapper smsbDeviceTaskMapper = SpringUtils.getBean(SmsbDeviceTaskMapper.class);
|
|
|
+
|
|
|
+ private static final SmsbDeviceTaskDetailMapper smsbDeviceTaskDetailMapper = SpringUtils.getBean(SmsbDeviceTaskDetailMapper.class);
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public void channelRead(ChannelHandlerContext ctx, Object msg) {
|
|
|
+ String message = (String) msg;
|
|
|
+ // 处理设置设备亮度 reply消息
|
|
|
+ if (message.contains(ReceiveMessageType.DEVICE_PLAY_NEXT_REPLAY.getValue())
|
|
|
+ || message.contains(ReceiveMessageType.DEVICE_PLAY_LAST_REPLAY.getValue())) {
|
|
|
+ log.info("收到设备播放控制回复消息:{}", message);
|
|
|
+ String identifier = message.split("/")[0];
|
|
|
+ // 1、 查询当前设备最近一条播放控制任务
|
|
|
+ SmsbDeviceVo smsbDeviceVo = smsbDeviceService.getDeviceByIdentifier(identifier);
|
|
|
+ if (null == smsbDeviceVo) {
|
|
|
+ log.error("未查询到设备信息:{}", identifier);
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ LambdaQueryWrapper<SmsbDeviceTask> lqw = Wrappers.lambdaQuery();
|
|
|
+ lqw.eq(SmsbDeviceTask::getIdentifier, identifier);
|
|
|
+ if (message.contains(ReceiveMessageType.DEVICE_PLAY_NEXT_REPLAY.getValue())) {
|
|
|
+ lqw.eq(SmsbDeviceTask::getTaskType, DeviceTaskConstants.DEVICE_PLAY_NEXT);
|
|
|
+ }else {
|
|
|
+ lqw.eq(SmsbDeviceTask::getTaskType, DeviceTaskConstants.DEVICE_PLAY_LAST);
|
|
|
+ }
|
|
|
+ lqw.orderByDesc(SmsbDeviceTask::getCreateTime);
|
|
|
+ lqw.last("limit 1");
|
|
|
+ SmsbDeviceTaskVo smsbDeviceTask = smsbDeviceTaskMapper.selectVoOne(lqw);
|
|
|
+ if (null == smsbDeviceTask) {
|
|
|
+ log.error("未查询到控制设备播放的任务:{}", identifier);
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ // 2、收到回复 认定接收任务
|
|
|
+ SmsbDeviceTaskDetail taskDetail = new SmsbDeviceTaskDetail();
|
|
|
+ taskDetail.setTaskId(smsbDeviceTask.getId());
|
|
|
+ taskDetail.setTaskStatus(DeviceTaskConstants.DEVICE_TASK_STATUS_INIT);
|
|
|
+ taskDetail.setTenantId(smsbDeviceVo.getTenantId());
|
|
|
+ smsbDeviceTaskDetailMapper.insert(taskDetail);
|
|
|
+ } else {
|
|
|
+ ctx.fireChannelRead(message);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+}
|