Explorar o código

温度下发指令

李进 %!s(int64=2) %!d(string=hai) anos
pai
achega
30c5f6a66a

+ 1 - 1
device-api-service/src/main/java/com/xy/service/DeviceTempSetServiceImpl.java

@@ -42,7 +42,7 @@ public class DeviceTempSetServiceImpl extends ServiceImpl<DeviceTempSetMapper, D
 
     @ApiOperation("获取最新一条记录")
     @PostMapping("getLastOne")
-    public R getLastOne(@RequestBody DeviceTempSetDto.GetLastOneDto dto){
+    public R<DeviceTempSetDto.Vo> getLastOne(@RequestBody DeviceTempSetDto.GetLastOneDto dto){
         LambdaQueryWrapper lambdaQueryWrapper = new MybatisPlusQuery().eqWrapper(dto,DeviceTempSet.class)
                 .build()
                 .orderByDesc(DeviceTempSet::getId)

+ 41 - 0
device-api-service/src/main/java/com/xy/service/factory/SetsCmdServiceImpl.java

@@ -1,7 +1,17 @@
 package com.xy.service.factory;
 
+import cn.hutool.json.JSONObject;
+import com.xy.dto.DeviceTempSetDto;
 import com.xy.dto.MqttDto;
+import com.xy.dto.PaterDto;
+import com.xy.entity.DeviceTempSet;
+import com.xy.service.DeviceTempSetServiceImpl;
+import com.xy.utils.DataTime;
+import com.xy.utils.LambdaUtils;
 import com.xy.utils.R;
+import com.xy.utils.enums.SetsEnum;
+import com.xy.utils.enums.TaskEnum;
+import lombok.AllArgsConstructor;
 import org.springframework.stereotype.Service;
 
 import java.util.List;
@@ -10,15 +20,46 @@ import java.util.List;
  * 设置指令 接口实现
  */
 @Service
+@AllArgsConstructor
 public class SetsCmdServiceImpl implements CmdService {
 
+    private DeviceTempSetServiceImpl deviceTempSetService;
+
     @Override
     public R senCommand(List<MqttDto> mqttDtos) {
+        for (MqttDto mqttDto : mqttDtos) {
+            PaterDto pater = mqttDto.getPater();
+            JSONObject data = pater.getData();
+            String type = data.getStr(LambdaUtils.getProperty(TaskEnum::getType));
+            //温度设置指令
+            if (type.equals(SetsEnum.TEMPERATURE.getType())) {
+                DeviceTempSetDto.Save save = new DeviceTempSetDto.Save()
+                        .setDeviceId(mqttDto.getDeviceId())
+                        .setWorkMode(data.getStr("workModel"))
+                        .setTempValue(data.getInt("target"))
+                        .setJob1StartTime(DataTime.toLocal(data.getStr("start1")).toLocalTime())
+                        .setJob1StartEnd(DataTime.toLocal(data.getStr("end1")).toLocalTime())
+                        .setJob2StartTime(DataTime.toLocal(data.getStr("start2")).toLocalTime())
+                        .setJob2StartEnd(DataTime.toLocal(data.getStr("end2")).toLocalTime())
+                        .setJob3StartTime(DataTime.toLocal(data.getStr("start3")).toLocalTime())
+                        .setJob3EndTime(DataTime.toLocal(data.getStr("end3")).toLocalTime());
+                deviceTempSetService.save(save);
+            }
+        }
         return R.ok();
     }
 
     @Override
     public R resultBack(MqttDto.ResultBack resultBack) {
+        DeviceTempSetDto.DeviceTempResultBack deviceTempResultBack = resultBack.getDeviceTempResultBack();
+        //温度设置指令
+        if (resultBack.getCmdType().equals(SetsEnum.TEMPERATURE.getType())) {
+            DeviceTempSetDto.Vo deviceTempSetVo = deviceTempSetService.getLastOne(new DeviceTempSetDto.GetLastOneDto().setDeviceId(deviceTempResultBack.getDeviceId())).getData();
+            DeviceTempSet deviceTempSet = new DeviceTempSet()
+                    .setId(deviceTempSetVo.getId())
+                    .setStatus(deviceTempResultBack.getDeviceTempSetStatusEnum().getCode());
+            deviceTempSetService.updateById(deviceTempSet);
+        }
         return R.ok();
     }
 }

+ 36 - 0
device-api-service/src/main/java/com/xy/utils/enums/SetsEnum.java

@@ -0,0 +1,36 @@
+package com.xy.utils.enums;
+
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+
+/**
+ * 温度设置指令枚举
+ */
+@Getter
+@AllArgsConstructor
+public enum SetsEnum {
+
+    TEMPERATURE("temperature", "温度设置指令"),
+
+    ;
+
+    /**
+     * 任务类型
+     */
+    private String type;
+
+    /**
+     * 说明
+     */
+    private String msg;
+
+    public static SetsEnum getTaskEnum(String type) {
+        SetsEnum[] values = SetsEnum.values();
+        for (SetsEnum qualityEnum : values) {
+            if (qualityEnum.type.equals(type)) {
+                return qualityEnum;
+            }
+        }
+        return null;
+    }
+}

+ 17 - 3
device-api/src/main/java/com/xy/dto/DeviceTempSetDto.java

@@ -1,10 +1,12 @@
 package com.xy.dto;
 
 import com.fasterxml.jackson.annotation.JsonFormat;
+import com.xy.utils.enums.DeviceTempSetStatusEnum;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 import lombok.experimental.Accessors;
 
+import javax.validation.constraints.NotNull;
 import java.time.LocalDateTime;
 import java.time.LocalTime;
 
@@ -22,14 +24,14 @@ public class DeviceTempSetDto {
 
     @Data
     @Accessors(chain = true)
-    public static class GetLastOneDto{
+    public static class GetLastOneDto {
         @ApiModelProperty(value = "设备ID")
         private Long deviceId;
     }
 
     @Data
     @Accessors(chain = true)
-    public static class Save{
+    public static class Save {
         @ApiModelProperty(value = "设备ID")
         private Long deviceId;
 
@@ -72,7 +74,19 @@ public class DeviceTempSetDto {
 
     @Data
     @Accessors(chain = true)
-    public static class  Vo{
+    public static class DeviceTempResultBack {
+
+        @NotNull(message = "deviceId不能为空")
+        @ApiModelProperty(value = "设备ID", required = true)
+        private Long deviceId;
+
+        @ApiModelProperty(value = "设置状态", required = true)
+        private DeviceTempSetStatusEnum deviceTempSetStatusEnum;
+    }
+
+    @Data
+    @Accessors(chain = true)
+    public static class Vo {
         @ApiModelProperty(value = "id")
         private Integer id;
 

+ 3 - 0
device-api/src/main/java/com/xy/dto/MqttDto.java

@@ -44,6 +44,9 @@ public class MqttDto {
 
         @ApiModelProperty(value = "质检通知对象")
         private DeviceQualityDto.QualityResultBack qualityResultBack;
+
+        @ApiModelProperty(value = "温度设置通知对象")
+        private DeviceTempSetDto.DeviceTempResultBack deviceTempResultBack;
     }
 
     @Data