邵洋 1 год назад
Родитель
Сommit
8c1238508c

+ 43 - 1
pole-service/src/main/java/com/zksy/pole/controller/InstructionIssuanceController.java

@@ -1,7 +1,7 @@
 package com.zksy.pole.controller;
 package com.zksy.pole.controller;
 
 
 import com.zksy.common.domain.Result;
 import com.zksy.common.domain.Result;
-import com.zksy.pole.domain.dto.ReportEnvironmentalDataDto;
+import com.zksy.pole.domain.dto.*;
 import com.zksy.pole.service.InstructionIssuanceServer;
 import com.zksy.pole.service.InstructionIssuanceServer;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import io.swagger.annotations.ApiOperation;
@@ -31,4 +31,46 @@ public class InstructionIssuanceController {
         return result;
         return result;
     }
     }
 
 
+    @ApiOperation(value = "灯控设备状态查询和抄读网关场景策略")
+    @GetMapping(value = "/equipmentStatus")
+    public Result equipmentStatus(EquipmentStatusDto dto){
+        Result result = Result.ok(server.equipmentStatus(dto));
+        return result;
+    }
+
+    @ApiOperation(value = "场景策略设置")
+    @GetMapping(value = "/scenarioStrategy")
+    public Result scenarioStrategy(ScenarioStrategyDto dto){
+        Result result = Result.ok(server.scenarioStrategy(dto));
+        return result;
+    }
+
+    @ApiOperation(value = "删除场景策略")
+    @GetMapping(value = "/delScenarioStrategy")
+    public Result delScenarioStrategy(DelScenarioStrategyDto dto){
+        Result result = Result.ok(server.delScenarioStrategy(dto));
+        return result;
+    }
+
+    @ApiOperation(value = "设置网关时间")
+    @GetMapping("/setGatewayTime")
+    public Result gatewayStrategy(SetGatewayTimeDto dto){
+        Result result = Result.ok(server.setGatewayTime(dto));
+        return result;
+    }
+
+    @ApiOperation(value = "服务器强制网关重新注册")
+    @GetMapping(value = "/reRegistered")
+    public Result reRegistered(EquipmentStatusDto dto){
+        Result result = Result.ok(server.reRegistered(dto));
+        return result;
+    }
+
+    @ApiOperation(value = "继电器控制")
+    @GetMapping(value = "/relayControl")
+    public Result relayControl(RelayControlDto dto){
+        Result result = Result.ok(server.relayControl(dto));
+        return result;
+    }
+
 }
 }

+ 29 - 0
pole-service/src/main/java/com/zksy/pole/domain/dto/DelScenarioStrategyDto.java

@@ -0,0 +1,29 @@
+package com.zksy.pole.domain.dto;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.List;
+
+/**
+ * @author Administrator
+ * @version 1.0
+ * @project dh-server-micro
+ * @description 删除场景策略
+ * @date 2024/8/28 17:25:33
+ */
+@Data
+@ApiModel(value = "删除场景策略设置dto")
+public class DelScenarioStrategyDto {
+    @ApiModelProperty(value = "命令")
+    private String cmd;
+    @ApiModelProperty(value = "包id")
+    private String packageId;
+    @ApiModelProperty(value = "灯编号")
+    private String lightNums;
+    @ApiModelProperty(value = "策略编号")
+    private String id;
+    @ApiModelProperty(value = "1代表灯编号下的所有定时器都删除,0代表只删除上面灯编号的id=策略编号的定时器")
+    private String tag;
+}

+ 23 - 0
pole-service/src/main/java/com/zksy/pole/domain/dto/EquipmentStatusDto.java

@@ -0,0 +1,23 @@
+package com.zksy.pole.domain.dto;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ * @author Administrator
+ * @version 1.0
+ * @project dh-server-micro
+ * @description 灯控设备状态查询
+ * @date 2024/8/28 17:25:33
+ */
+@Data
+@ApiModel(value = "灯控设备状态查询dto")
+public class EquipmentStatusDto {
+    @ApiModelProperty(value = "命令")
+    private String cmd;
+    @ApiModelProperty(value = "包id")
+    private String packageId;
+    @ApiModelProperty(value = "灯编号")
+    private String lightNums;
+}

+ 21 - 0
pole-service/src/main/java/com/zksy/pole/domain/dto/RelayControlDetailDto.java

@@ -0,0 +1,21 @@
+package com.zksy.pole.domain.dto;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ * @author Administrator
+ * @version 1.0
+ * @project dh-server-micro
+ * @description 继电器控制详情
+ * @date 2024/8/28 17:25:33
+ */
+@Data
+@ApiModel(value = "继电器控制详情dto")
+public class RelayControlDetailDto {
+    @ApiModelProperty(value = "继电器编号")
+    private String index;
+    @ApiModelProperty(value = "继电器状态")
+    private String val;
+}

+ 27 - 0
pole-service/src/main/java/com/zksy/pole/domain/dto/RelayControlDto.java

@@ -0,0 +1,27 @@
+package com.zksy.pole.domain.dto;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.List;
+
+/**
+ * @author Administrator
+ * @version 1.0
+ * @project dh-server-micro
+ * @description 继电器控制
+ * @date 2024/8/28 17:25:33
+ */
+@Data
+@ApiModel(value = "继电器控制dto")
+public class RelayControlDto {
+    @ApiModelProperty(value = "命令")
+    private String cmd;
+    @ApiModelProperty(value = "包id")
+    private String packageId;
+    @ApiModelProperty(value = "灯编号")
+    private String lightNums;
+    @ApiModelProperty(value = "继电器控制详情")
+    private List<RelayControlDetailDto> params;
+}

+ 26 - 0
pole-service/src/main/java/com/zksy/pole/domain/dto/ScenarioStrategyDetailDto.java

@@ -0,0 +1,26 @@
+package com.zksy.pole.domain.dto;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ * @author Administrator
+ * @version 1.0
+ * @project dh-server-micro
+ * @description 场景策略设置详情
+ * @date 2024/8/28 17:25:33
+ */
+@Data
+@ApiModel(value = "场景策略设置明细dto")
+public class ScenarioStrategyDetailDto {
+    @ApiModelProperty(value = "亮度值0-100")
+    private String brightness;
+    @ApiModelProperty(value = "bit0-bit6 分别对应周日到周六 循环定时有效")
+    private String week;
+    @ApiModelProperty(value = "小时:分,示例:代表5点5分 循环定时有效。2020-05-26 15:55,单次定时有效,time根据策略类型来设置")
+    private String time;
+    @ApiModelProperty(value = "分钟,type=2,3有效。正负120分钟内")
+    private String offset;
+    
+}

+ 37 - 0
pole-service/src/main/java/com/zksy/pole/domain/dto/ScenarioStrategyDto.java

@@ -0,0 +1,37 @@
+package com.zksy.pole.domain.dto;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.List;
+
+/**
+ * @author Administrator
+ * @version 1.0
+ * @project dh-server-micro
+ * @description 场景策略设置
+ * @date 2024/8/28 17:25:33
+ */
+@Data
+@ApiModel(value = "场景策略设置dto")
+public class ScenarioStrategyDto {
+    @ApiModelProperty(value = "命令")
+    private String cmd;
+    @ApiModelProperty(value = "包id")
+    private String packageId;
+    @ApiModelProperty(value = "灯编号")
+    private String lightNums;
+    @ApiModelProperty(value = "策略编号")
+    private String id;
+    @ApiModelProperty(value = "策略类型 0循环定时 1单次定时2日出 3日落")
+    private String type;
+    @ApiModelProperty(value = "策略状态 0禁止 1启用")
+    private String status;
+    @ApiModelProperty(value = "策略有效时间年-月-日-小时-分")
+    private String start_time;
+    @ApiModelProperty(value = "策略失效时间年-月-日-小时-分")
+    private String end_time;
+    @ApiModelProperty(value = "场景策略设置明细")
+    private List<ScenarioStrategyDetailDto> params;
+}

+ 25 - 0
pole-service/src/main/java/com/zksy/pole/domain/dto/SetGatewayTimeDto.java

@@ -0,0 +1,25 @@
+package com.zksy.pole.domain.dto;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ * @author Administrator
+ * @version 1.0
+ * @project dh-server-micro
+ * @description 设置网关时间
+ * @date 2024/8/28 17:25:33
+ */
+@Data
+@ApiModel(value = "设置网关时间dto")
+public class SetGatewayTimeDto {
+    @ApiModelProperty(value = "命令")
+    private String cmd;
+    @ApiModelProperty(value = "包id")
+    private String packageId;
+    @ApiModelProperty(value = "灯编号")
+    private String lightNums;
+    @ApiModelProperty(value = "时间戳")
+    private String timestamp;
+}

+ 13 - 1
pole-service/src/main/java/com/zksy/pole/service/InstructionIssuanceServer.java

@@ -1,6 +1,6 @@
 package com.zksy.pole.service;
 package com.zksy.pole.service;
 
 
-import com.zksy.pole.domain.dto.ReportEnvironmentalDataDto;
+import com.zksy.pole.domain.dto.*;
 
 
 /**
 /**
  * @author Administrator
  * @author Administrator
@@ -12,4 +12,16 @@ import com.zksy.pole.domain.dto.ReportEnvironmentalDataDto;
 public interface InstructionIssuanceServer {
 public interface InstructionIssuanceServer {
 
 
     public String instructionIssuance(ReportEnvironmentalDataDto dto);
     public String instructionIssuance(ReportEnvironmentalDataDto dto);
+
+    public String equipmentStatus(EquipmentStatusDto dto);
+
+    public String scenarioStrategy(ScenarioStrategyDto dto);
+
+    public String delScenarioStrategy(DelScenarioStrategyDto dto);
+
+    public String setGatewayTime(SetGatewayTimeDto dto);
+
+    public String reRegistered(EquipmentStatusDto dto);
+
+    public String relayControl(RelayControlDto dto);
 }
 }

+ 79 - 1
pole-service/src/main/java/com/zksy/pole/service/impl/InstructionIssuanceServerImpl.java

@@ -3,7 +3,7 @@ package com.zksy.pole.service.impl;
 import com.alibaba.fastjson.JSONObject;
 import com.alibaba.fastjson.JSONObject;
 import com.zksy.pole.MQTTServer.request.MqttRequest;
 import com.zksy.pole.MQTTServer.request.MqttRequest;
 import com.zksy.pole.MQTTServer.server.MQTTServer;
 import com.zksy.pole.MQTTServer.server.MQTTServer;
-import com.zksy.pole.domain.dto.ReportEnvironmentalDataDto;
+import com.zksy.pole.domain.dto.*;
 import com.zksy.pole.service.InstructionIssuanceServer;
 import com.zksy.pole.service.InstructionIssuanceServer;
 import io.netty.buffer.Unpooled;
 import io.netty.buffer.Unpooled;
 import io.netty.channel.Channel;
 import io.netty.channel.Channel;
@@ -39,6 +39,84 @@ public class InstructionIssuanceServerImpl implements InstructionIssuanceServer
         return "ok";
         return "ok";
     }
     }
 
 
+    @Override
+    public String equipmentStatus(EquipmentStatusDto dto) {
+        MqttQoS qos = MqttQoS.AT_MOST_ONCE;
+        String topic = "down/light/"+dto.getLightNums();
+        JSONObject jsonObject = new JSONObject();
+        jsonObject.put("cmd",dto.getCmd());
+        jsonObject.put("package_id","1050");
+        jsonObject.put("light_nums",dto.getLightNums());
+        writeAndFlush(qos,topic,jsonObject);
+        return "ok";
+    }
+
+    @Override
+    public String scenarioStrategy(ScenarioStrategyDto dto) {
+        MqttQoS qos = MqttQoS.AT_MOST_ONCE;;
+        String topic = "down/light/"+dto.getLightNums();
+        JSONObject jsonObject = new JSONObject();
+        jsonObject.put("cmd",dto.getCmd());
+        jsonObject.put("package_id","1050");
+        jsonObject.put("light_nums",dto.getLightNums());
+        jsonObject.put("id",15);
+        jsonObject.put("type",dto.getType());
+        jsonObject.put("status",dto.getStatus());
+        jsonObject.put("start_time",dto.getStart_time());
+        jsonObject.put("end_time",dto.getEnd_time());
+        jsonObject.put("params",dto.getParams());
+        writeAndFlush(qos,topic,jsonObject);
+        return "ok";
+    }
+
+    @Override
+    public String delScenarioStrategy(DelScenarioStrategyDto dto) {
+        MqttQoS qos = MqttQoS.AT_MOST_ONCE;;
+        String topic = "down/light/"+dto.getLightNums();
+        JSONObject jsonObject = new JSONObject();
+        jsonObject.put("cmd",dto.getCmd());
+        jsonObject.put("package_id","1050");
+        jsonObject.put("light_nums",dto.getLightNums());
+        jsonObject.put("id",15);
+        jsonObject.put("tag",dto.getTag());
+        writeAndFlush(qos,topic,jsonObject);
+        return "ok";
+    }
+
+    @Override
+    public String setGatewayTime(SetGatewayTimeDto dto) {
+        MqttQoS qos = MqttQoS.AT_MOST_ONCE;
+        String topic = "down/light/"+dto.getLightNums();
+        JSONObject jsonObject = new JSONObject();
+        jsonObject.put("cmd",dto.getCmd());
+        jsonObject.put("package_id","1050");
+        jsonObject.put("timestamp",dto.getTimestamp());
+        writeAndFlush(qos,topic,jsonObject);
+        return "ok";
+    }
+
+    @Override
+    public String reRegistered(EquipmentStatusDto dto) {
+        MqttQoS qos = MqttQoS.AT_MOST_ONCE;
+        String topic = "down/light/"+dto.getLightNums();
+        JSONObject jsonObject = new JSONObject();
+        jsonObject.put("cmd",dto.getCmd());
+        writeAndFlush(qos,topic,jsonObject);
+        return "ok";
+    }
+
+    @Override
+    public String relayControl(RelayControlDto dto) {
+        MqttQoS qos = MqttQoS.AT_MOST_ONCE;
+        String topic = "down/light/"+dto.getLightNums();
+        JSONObject jsonObject = new JSONObject();
+        jsonObject.put("cmd",dto.getCmd());
+        jsonObject.put("package_id",dto.getPackageId());
+        jsonObject.put("params",dto.getParams());
+        writeAndFlush(qos,topic,jsonObject);
+        return "ok";
+    }
+
     public void writeAndFlush(MqttQoS qos,String topic,JSONObject jsonObject){
     public void writeAndFlush(MqttQoS qos,String topic,JSONObject jsonObject){
         MqttRequest request = new MqttRequest((jsonObject.toString().getBytes()));
         MqttRequest request = new MqttRequest((jsonObject.toString().getBytes()));
         MqttPublishMessage pubMessage = (MqttPublishMessage) MqttMessageFactory.newMessage(
         MqttPublishMessage pubMessage = (MqttPublishMessage) MqttMessageFactory.newMessage(