Bläddra i källkod

Merge branch 'master' into test

李进 2 år sedan
förälder
incheckning
b0d06c6b8c

+ 55 - 0
device-api-service/src/main/java/com/xy/entity/DeviceVersionUp.java

@@ -0,0 +1,55 @@
+package com.xy.entity;
+
+import java.time.LocalDateTime;
+import java.io.Serializable;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+/**
+ * <p>
+ * 设备版本升级记录表
+ * </p>
+ *
+ * @author lijin
+ * @since 2023-06-09
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+@ApiModel(value="DeviceVersionUp对象", description="设备版本升级记录表")
+public class DeviceVersionUp implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    @ApiModelProperty(value = "id")
+    private Long id;
+
+    @ApiModelProperty(value = "设备id")
+    private Long deviceId;
+
+    @ApiModelProperty(value = "版本号")
+    private String deviceVersion;
+
+    @ApiModelProperty(value = "发送次数")
+    private Integer sendNum;
+
+    @ApiModelProperty(value = "状态")
+    private Integer status;
+
+    @ApiModelProperty(value = "指令值")
+    private String cmdValue;
+
+    @ApiModelProperty(value = "升级结果值")
+    private String resultValue;
+
+    @ApiModelProperty(value = "创建时间")
+    private LocalDateTime createTime;
+
+    @ApiModelProperty(value = "更新时间")
+    private LocalDateTime updateTime;
+
+
+}

+ 0 - 5
device-api-service/src/main/java/com/xy/entity/MqttCommand.java

@@ -96,9 +96,4 @@ public class MqttCommand {
      */
     private String error;
 
-    /**
-     * 执行结果
-     */
-    private String result;
-
 }

+ 16 - 0
device-api-service/src/main/java/com/xy/mapper/DeviceVersionUpMapper.java

@@ -0,0 +1,16 @@
+package com.xy.mapper;
+
+import com.xy.entity.DeviceVersionUp;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * <p>
+ * 设备版本升级记录表 Mapper 接口
+ * </p>
+ *
+ * @author lijin
+ * @since 2023-06-09
+ */
+public interface DeviceVersionUpMapper extends BaseMapper<DeviceVersionUp> {
+
+}

+ 16 - 0
device-api-service/src/main/java/com/xy/mapper/mapper/DeviceVersionUpMapper.xml

@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.xy.mapper.DeviceVersionUpMapper">
+
+    <!-- 通用查询映射结果 -->
+    <resultMap id="BaseResultMap" type="com.xy.entity.DeviceVersionUp">
+        <id column="id" property="id" />
+        <result column="device_id" property="deviceId" />
+        <result column="device_version" property="deviceVersion" />
+        <result column="send_num" property="sendNum" />
+        <result column="status" property="status" />
+        <result column="create_time" property="createTime" />
+        <result column="update_time" property="updateTime" />
+    </resultMap>
+
+</mapper>

+ 70 - 0
device-api-service/src/main/java/com/xy/service/DeviceVersionUpServiceImpl.java

@@ -0,0 +1,70 @@
+package com.xy.service;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.github.yitter.idgen.YitIdHelper;
+import com.xy.dto.DeviceVersionUpDto;
+import com.xy.entity.DeviceVersionUp;
+import com.xy.mapper.DeviceVersionUpMapper;
+import com.xy.utils.Beans;
+import com.xy.utils.MybatisPlusQuery;
+import com.xy.utils.PageBean;
+import com.xy.utils.R;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import lombok.AllArgsConstructor;
+import org.springframework.stereotype.Service;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+
+import java.time.LocalDateTime;
+
+import static com.xy.utils.PlusBeans.toIPage;
+import static com.xy.utils.PlusBeans.toPageBean;
+
+
+/**
+ * <p>
+ * 设备版本升级记录表 服务实现类
+ * </p>
+ *
+ * @author lijin
+ * @since 2023-06-09
+ */
+@Service
+@AllArgsConstructor
+@Api(tags = "设备版本升级记录表")
+public class DeviceVersionUpServiceImpl extends ServiceImpl<DeviceVersionUpMapper, DeviceVersionUp> implements DeviceVersionUpService {
+
+    @PostMapping("page")
+    @ApiOperation("分页查询")
+    public R<PageBean<DeviceVersionUpDto.Vo>> page(@RequestBody DeviceVersionUpDto.Page page) {
+        PageBean pageBean = page.getPage();
+        LambdaQueryWrapper<DeviceVersionUp> lambdaQueryWrapper = new MybatisPlusQuery()
+                .eqWrapper(page, DeviceVersionUp.class)
+                .build()
+                .orderByDesc(DeviceVersionUp::getCreateTime);
+        IPage<DeviceVersionUp> iPage = page(toIPage(pageBean), lambdaQueryWrapper);
+        return R.ok(toPageBean(DeviceVersionUpDto.Vo.class, iPage));
+    }
+
+    @ApiOperation("添加/修改")
+    @PostMapping("saveOrUpdate")
+    public R saveOrUpdate(@RequestBody @Validated DeviceVersionUpDto.SaveOrUpdate saveOrUpdate) {
+        LambdaQueryWrapper<DeviceVersionUp> lambdaQueryWrapper = new MybatisPlusQuery().eqWrapper(saveOrUpdate, DeviceVersionUp.class).build();
+        DeviceVersionUp deviceVersionUp = getOne(lambdaQueryWrapper);
+        LocalDateTime now = LocalDateTime.now();
+        if (deviceVersionUp == null) {
+            deviceVersionUp = Beans.copy(DeviceVersionUp.class, saveOrUpdate)
+                    .setId(YitIdHelper.nextId())
+                    .setCreateTime(now)
+                    .setUpdateTime(now);
+        } else {
+            deviceVersionUp = Beans.copy(DeviceVersionUp.class, saveOrUpdate).setUpdateTime(now);
+        }
+        saveOrUpdate(deviceVersionUp);
+        return R.ok();
+    }
+}

+ 29 - 5
device-api-service/src/main/java/com/xy/service/MqttServiceImpl.java

@@ -37,6 +37,7 @@ import org.springframework.web.bind.annotation.RequestBody;
 
 import java.util.ArrayList;
 import java.util.List;
+import java.util.Map;
 
 import static com.xy.utils.PlusBeans.*;
 
@@ -52,6 +53,8 @@ public class MqttServiceImpl extends ServiceImpl<MqttCommandMapper, MqttCommand>
 
     private final DeviceInfoServiceImpl deviceInfoService;
 
+    private String keyStr = "mqtt:cmd:result:%d";
+
     private boolean snInit;
 
     public long getSn() {
@@ -141,12 +144,27 @@ public class MqttServiceImpl extends ServiceImpl<MqttCommandMapper, MqttCommand>
         if (!Emptys.check(mqttCommand)) {
             return R.fail("数据不存在");
         }
-        JSONObject result = ackMqttDto.getResult();
+        //写入mysql
         mqttCommand.setStatus(Integer.valueOf(ackMqttDto.getStatusEnum().getKey()))
-                .setResult(result != null ? result.toString() : null)
                 .setBackClientTime(DataTime.toString(ackMqttDto.getBackClientTime()))
                 .setBackServerTime(DataTime.getSring());
         updateById(mqttCommand);
+        //写入redis
+        String result = ackMqttDto.getResult().toString();
+        if (Emptys.check(ackMqttDto.getResult())) {
+            String key = String.format(keyStr, ackMqttDto.getSn());
+            String backClientTime = DataTime.toString(ackMqttDto.getBackClientTime());
+            Map<String, String> map = redisService.getMap(key);
+            if (Emptys.check(map)) {
+                String time = map.get("time");
+                if (DataTime.stringContrast(time, backClientTime) >= 0) {
+                    return R.ok();
+                }
+            }
+            JMap<String, String> jmap = new JHashMap<String, String>().set("time", backClientTime).set("result", result);
+            redisService.setMap(key, jmap);
+            redisService.timeout(key, 300);
+        }
         return R.ok();
     }
 
@@ -158,10 +176,16 @@ public class MqttServiceImpl extends ServiceImpl<MqttCommandMapper, MqttCommand>
 
     @PostMapping("snByCmdAndResult")
     @ApiOperation("sn查询指令和结果数据")
-    public R<MqttDto.Vo2> snByCmdAndResult(@RequestBody MqttDto.SnByCmdAndResult snByCmdAndResult) {
+    public R<MqttDto.Vo3> snByCmdAndResult(@RequestBody MqttDto.SnByCmdAndResult snByCmdAndResult) {
         MqttCommand mqttCommand = getById(snByCmdAndResult.getSn());
-        MqttDto.Vo2 vo2 = copy(MqttDto.Vo2.class, mqttCommand);
-        return R.ok(vo2);
+        String key = String.format(keyStr, snByCmdAndResult.getSn());
+        Map<String, String> map = redisService.getMap(key);
+        MqttDto.Vo3 vo3 = copy(MqttDto.Vo3.class, mqttCommand);
+        if (Emptys.check(map)) {
+            String result = map.get("result");
+            vo3.setResult(JSONUtil.parseObj(result));
+        }
+        return R.ok(vo3);
     }
 
     @PostMapping("page")

+ 7 - 0
device-api-service/src/main/java/com/xy/service/factory/cmd/impl/TaskCmdServiceImpl.java

@@ -6,6 +6,7 @@ import com.xy.device.EnumMqttCmdTempletTask;
 import com.xy.dto.ActivityInfoDto;
 import com.xy.dto.MqttDto;
 import com.xy.service.ActivityInfoService;
+import com.xy.service.DeviceVersionUpServiceImpl;
 import com.xy.service.factory.cmd.CmdService;
 import com.xy.utils.R;
 import lombok.AllArgsConstructor;
@@ -21,6 +22,8 @@ public class TaskCmdServiceImpl implements CmdService {
 
     private ActivityInfoService activityInfoService;
 
+    private DeviceVersionUpServiceImpl deviceVersionUpService;
+
     @Override
     public R senCommand(List<MqttDto> mqttDtos) {
         for (MqttDto mqttDto : mqttDtos) {
@@ -30,6 +33,10 @@ public class TaskCmdServiceImpl implements CmdService {
             if (type.equals(EnumMqttCmdTempletTask.ABORT.getCode())) {
                 activityInfoService.abort(new ActivityInfoDto.Abort().setDeviceId(mqttDto.getDeviceId()));
             }
+            //版本升级
+            if (type.equals(EnumMqttCmdTempletTask.APPUPDATE.getCode())) {
+
+            }
         }
         return R.ok();
     }

+ 81 - 0
device-api/src/main/java/com/xy/dto/DeviceVersionUpDto.java

@@ -0,0 +1,81 @@
+package com.xy.dto;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.xy.utils.PageBean;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.experimental.Accessors;
+
+import javax.validation.constraints.NotBlank;
+import javax.validation.constraints.NotNull;
+import java.time.LocalDateTime;
+
+/**
+ * <p>
+ * 设备版本升级记录表
+ * </p>
+ *
+ * @author lijin
+ * @since 2023-06-09
+ */
+public class DeviceVersionUpDto {
+
+    @Data
+    @Accessors(chain = true)
+    public static class Page extends Vo {
+
+        @ApiModelProperty(value = "分页对象", required = true)
+        private PageBean page;
+
+    }
+
+    @Data
+    @Accessors(chain = true)
+    public static class SaveOrUpdate extends Vo {
+
+        @NotNull(message = "deviceId不能为空")
+        @ApiModelProperty(value = "设备id")
+        private Long deviceId;
+
+        @NotBlank(message = "deviceVersion不能为空")
+        @ApiModelProperty(value = "版本号")
+        private String deviceVersion;
+    }
+
+    @Data
+    @Accessors(chain = true)
+    public static class Vo {
+
+        @ApiModelProperty(value = "id")
+        private Long id;
+
+        @ApiModelProperty(value = "设备id")
+        private Long deviceId;
+
+        @ApiModelProperty(value = "版本号")
+        private String deviceVersion;
+
+        @ApiModelProperty(value = "发送次数")
+        private Integer sendNum;
+
+        @ApiModelProperty(value = "状态")
+        private Integer status;
+
+        @ApiModelProperty(value = "指令值")
+        private String cmdValue;
+
+        @ApiModelProperty(value = "升级结果值")
+        private String resultValue;
+
+        @ApiModelProperty(value = "创建时间")
+        @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+        private LocalDateTime createTime;
+
+        @ApiModelProperty(value = "更新时间")
+        @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+        private LocalDateTime updateTime;
+
+
+    }
+
+}

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

@@ -1,5 +1,6 @@
 package com.xy.dto;
 
+import cn.hutool.json.JSONObject;
 import com.fasterxml.jackson.annotation.JsonFormat;
 import com.xy.utils.PageBean;
 import io.swagger.annotations.ApiModelProperty;
@@ -171,4 +172,12 @@ public class MqttDto {
         @ApiModelProperty("执行结果")
         private String result;
     }
+    @Data
+    @Accessors(chain = true)
+    public static class Vo3 extends Vo2 {
+
+        @ApiModelProperty("执行结果")
+        private JSONObject result;
+    }
+
 }

+ 16 - 0
device-api/src/main/java/com/xy/service/DeviceVersionUpService.java

@@ -0,0 +1,16 @@
+package com.xy.service;
+
+import com.xy.annotate.RestMappingController;
+
+/**
+ * <p>
+ * 设备版本升级记录表 服务类
+ * </p>
+ *
+ * @author lijin
+ * @since 2023-06-09
+ */
+@RestMappingController("/device-version-up")
+public interface DeviceVersionUpService {
+
+}