From 6aaed019152161257b0a7678ea3e9b00dcb3aae7 Mon Sep 17 00:00:00 2001 From: mi9688 Date: Thu, 5 Dec 2024 15:53:52 +0800 Subject: [PATCH] =?UTF-8?q?=E8=AE=BE=E5=A4=87=E4=B8=8A=E7=94=B5=E5=AE=A1?= =?UTF-8?q?=E6=A0=B8=E5=89=8D=E4=B8=8A=E6=8A=A5=E7=9A=84=E5=9F=BA=E7=A1=80?= =?UTF-8?q?=E4=BF=A1=E6=81=AF=E8=A1=A8=E7=AE=A1=E7=90=86=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/resources/application-dev.yml | 1 + .../com/fastbee/common/enums/TopicType.java | 2 + .../common/utils/gateway/mq/TopicsUtils.java | 2 +- .../consumer/DeviceOtherMsgConsumer.java | 51 +++++++- .../service/impl/DeviceOtherMsgHandler.java | 3 + fastbee-open-api/pom.xml | 3 +- .../DeviceReportInfoController.java | 110 +++++++++++++++++ .../DeviceInfoController.java | 9 +- .../fastbee/mqttclient/PubMqttCallBack.java | 2 + .../com/fastbee/mqttclient/PubMqttClient.java | 1 + .../com/fastbee/mqtt/auth/AuthService.java | 1 + .../impl/AgricultureCropYieldServiceImpl.java | 1 - .../service/impl/GSiteDeviceServiceImpl.java | 5 +- .../fastbee/iot/domain/DeviceReportInfo.java | 93 ++++++++++++++ .../iot/mapper/DeviceReportInfoMapper.java | 64 ++++++++++ .../iot/model/ProductAuthenticateModel.java | 54 +------- .../iot/ruleEngine/MqttClientFactory.java | 16 +++ .../iot/service/IDeviceReportInfoService.java | 61 +++++++++ .../impl/DeviceReportInfoServiceImpl.java | 93 ++++++++++++++ .../mapper/iot/DeviceReportInfoMapper.xml | 116 ++++++++++++++++++ logs/record.log.2024-11-11.0.gz | Bin 0 -> 1665 bytes 21 files changed, 627 insertions(+), 61 deletions(-) create mode 100644 fastbee-open-api/src/main/java/com/fastbee/data/controller/DeviceReportInfoController.java create mode 100644 fastbee-service/fastbee-iot-service/src/main/java/com/fastbee/iot/domain/DeviceReportInfo.java create mode 100644 fastbee-service/fastbee-iot-service/src/main/java/com/fastbee/iot/mapper/DeviceReportInfoMapper.java create mode 100644 fastbee-service/fastbee-iot-service/src/main/java/com/fastbee/iot/service/IDeviceReportInfoService.java create mode 100644 fastbee-service/fastbee-iot-service/src/main/java/com/fastbee/iot/service/impl/DeviceReportInfoServiceImpl.java create mode 100644 fastbee-service/fastbee-iot-service/src/main/resources/mapper/iot/DeviceReportInfoMapper.xml create mode 100644 logs/record.log.2024-11-11.0.gz diff --git a/fastbee-admin/src/main/resources/application-dev.yml b/fastbee-admin/src/main/resources/application-dev.yml index df8b3b2..e8a17df 100644 --- a/fastbee-admin/src/main/resources/application-dev.yml +++ b/fastbee-admin/src/main/resources/application-dev.yml @@ -75,6 +75,7 @@ spring: password: fastbee # 密码 host-url: tcp://localhost:1883 # mqtt连接tcp地址 client-id: ${random.int} # 客户端Id,不能相同,采用随机数 ${random.value} +# client-id: mqttx_22ee8d0f # 客户端Id,不能相同,采用随机数 ${random.value} default-topic: test # 默认主题 timeout: 30 # 超时时间 keepalive: 30 # 保持连接 diff --git a/fastbee-common/src/main/java/com/fastbee/common/enums/TopicType.java b/fastbee-common/src/main/java/com/fastbee/common/enums/TopicType.java index 4d8f766..1e844f7 100644 --- a/fastbee-common/src/main/java/com/fastbee/common/enums/TopicType.java +++ b/fastbee-common/src/main/java/com/fastbee/common/enums/TopicType.java @@ -27,6 +27,8 @@ public enum TopicType { SERVICE_INVOKE_REPLY(0,8,"/service/reply", "订阅功能调用返回结果"), FIRMWARE_UPGRADE_REPLY(0,9,"/upgrade/reply", "订阅设备OTA升级结果"), MESSAGE_POST(0,26,"/message/post","订阅设备上报消息"), + //测试主题 + TEST_TOPIC(0,27,"/topic/test","测试主题"), /*** 通用设备订阅主题(平台下发)***/ FUNCTION_GET(1,17,"/function/get", "发布功能"), diff --git a/fastbee-common/src/main/java/com/fastbee/common/utils/gateway/mq/TopicsUtils.java b/fastbee-common/src/main/java/com/fastbee/common/utils/gateway/mq/TopicsUtils.java index 014fe27..2b93fd2 100644 --- a/fastbee-common/src/main/java/com/fastbee/common/utils/gateway/mq/TopicsUtils.java +++ b/fastbee-common/src/main/java/com/fastbee/common/utils/gateway/mq/TopicsUtils.java @@ -157,7 +157,7 @@ public class TopicsUtils { public String parseTopicName(String topic) { String[] values = topic.split("/"); if (values.length >2){ - return "/"+ values[3] + "/" + values[4]; + return "/"+ values[2] + "/" + values[3]; }else { return null; } diff --git a/fastbee-gateway/fastbee-mq/src/main/java/com/fastbee/mq/redischannel/consumer/DeviceOtherMsgConsumer.java b/fastbee-gateway/fastbee-mq/src/main/java/com/fastbee/mq/redischannel/consumer/DeviceOtherMsgConsumer.java index be32c0a..dfba6ec 100644 --- a/fastbee-gateway/fastbee-mq/src/main/java/com/fastbee/mq/redischannel/consumer/DeviceOtherMsgConsumer.java +++ b/fastbee-gateway/fastbee-mq/src/main/java/com/fastbee/mq/redischannel/consumer/DeviceOtherMsgConsumer.java @@ -1,5 +1,7 @@ package com.fastbee.mq.redischannel.consumer; +import cn.hutool.json.JSONObject; +import cn.hutool.json.JSONUtil; import com.fastbee.common.constant.FastBeeConstant; import com.fastbee.common.core.mq.DeviceReportBo; import com.fastbee.mq.service.impl.DeviceOtherMsgHandler; @@ -9,6 +11,7 @@ import org.springframework.scheduling.annotation.Async; import org.springframework.stereotype.Component; import javax.annotation.Resource; +import java.util.Arrays; /** * @author gsb @@ -25,7 +28,53 @@ public class DeviceOtherMsgConsumer { public void consume(DeviceReportBo bo){ try { //处理emq订阅的非 property/post 属性上报的消息 ,因为其他消息量小,放在一起处理 - otherMsgHandler.messageHandler(bo); + String serialNumber;//设备序列号 + Long packetId;//包号 + byte[] data = bo.getData();//数据 + String topic;//主题 + System.err.println("接收到数据:"+ new String(data)); + //解析 + String jsonString = "{\"type\": \"waterEleData\", \"pakSn\": 123, \"data\": {\"workState\": 1, \"action\": \"startPump\", \"mcuSn\": \"MCU123456\", \"sumEle\": 5000, \"sumFlow\": 3000, \"insFlow\": 2.5, \"userSumFlow\": 1500, \"areaCode\": \"010\", \"cardId\": \"CARD12345678\", \"userBalance\": 100.0, \"userSumEle\": 3000, \"curEle\": 50, \"curFlow\": 200, \"insPower\": 2300}}"; + JSONObject entries = JSONUtil.parseObj(jsonString); + System.err.println("解析后:"+entries); + //获取帧标识 + String type = entries.getStr("type"); + //获取帧号 + Long pakSn = entries.getLong("pakSn"); + //获取数据 + JSONObject dataObj = entries.getJSONObject("data"); + //获取水泵状态0=关泵,1=开泵 + Integer workState = dataObj.getInt("workState"); + //获取动作 + String action = dataObj.getStr("action"); + //获取单片机编码 + String mcuSn = dataObj.getStr("mcuSn"); + //获取累计用电量 + Integer sumEle = dataObj.getInt("sumEle"); + //获取累计用水量 + Integer sumFlow = dataObj.getInt("sumFlow"); + //获取瞬时流量 + Double insFlow = dataObj.getDouble("insFlow"); + //当前用户累计用水量 + Integer userSumFlow = dataObj.getInt("userSumFlow"); + //获取区域号 + String areaCode = dataObj.getStr("areaCode"); + //获取卡号 + String cardId = dataObj.getStr("cardId"); + //获取用户余额 + Double userBalance = dataObj.getDouble("userBalance"); + //获取用户累计用电量 + Integer userSumEle = dataObj.getInt("userSumEle"); + //获取本次用电量 + Integer curEle = dataObj.getInt("curEle"); + //获取本次用水量 + Integer curFlow = dataObj.getInt("curFlow"); + //获取瞬时功率 + Integer insPower = dataObj.getInt("insPower"); + + + +// otherMsgHandler.messageHandler(bo); }catch (Exception e){ log.error("=>设备其他消息处理出错",e); } diff --git a/fastbee-gateway/fastbee-mq/src/main/java/com/fastbee/mq/service/impl/DeviceOtherMsgHandler.java b/fastbee-gateway/fastbee-mq/src/main/java/com/fastbee/mq/service/impl/DeviceOtherMsgHandler.java index 86405d6..83f1d74 100644 --- a/fastbee-gateway/fastbee-mq/src/main/java/com/fastbee/mq/service/impl/DeviceOtherMsgHandler.java +++ b/fastbee-gateway/fastbee-mq/src/main/java/com/fastbee/mq/service/impl/DeviceOtherMsgHandler.java @@ -4,6 +4,7 @@ import com.fastbee.common.core.mq.DeviceReportBo; import com.fastbee.common.enums.TopicType; import com.fastbee.common.utils.StringUtils; import com.fastbee.common.utils.gateway.mq.TopicsUtils; +import com.fastbee.jsonchenyi.JsonChenYiProtocolService; import com.fastbee.mq.model.ReportDataBo; import com.fastbee.mq.service.IDataHandler; import com.fastbee.mq.service.IMqttMessagePublish; @@ -41,6 +42,7 @@ public class DeviceOtherMsgHandler { * @param bo */ public void messageHandler(DeviceReportBo bo) { + System.err.println("进入消息处理入口:"+bo); String type = ""; String name = topicsUtils.parseTopicName(bo.getTopicName()); if (StringUtils.isEmpty(name) || name.endsWith(TopicType.FUNCTION_GET.getTopicSuffix())) return; @@ -65,6 +67,7 @@ public class DeviceOtherMsgHandler { dataHandler.reportEvent(data); break; } + } /** diff --git a/fastbee-open-api/pom.xml b/fastbee-open-api/pom.xml index 520a788..ec488e8 100644 --- a/fastbee-open-api/pom.xml +++ b/fastbee-open-api/pom.xml @@ -61,7 +61,8 @@ compile - + + diff --git a/fastbee-open-api/src/main/java/com/fastbee/data/controller/DeviceReportInfoController.java b/fastbee-open-api/src/main/java/com/fastbee/data/controller/DeviceReportInfoController.java new file mode 100644 index 0000000..567b89f --- /dev/null +++ b/fastbee-open-api/src/main/java/com/fastbee/data/controller/DeviceReportInfoController.java @@ -0,0 +1,110 @@ +package com.fastbee.data.controller; + +import java.util.List; +import javax.servlet.http.HttpServletResponse; + +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.PutMapping; +import org.springframework.web.bind.annotation.DeleteMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; +import com.fastbee.common.annotation.Log; +import com.fastbee.common.core.controller.BaseController; +import com.fastbee.common.core.domain.AjaxResult; +import com.fastbee.common.enums.BusinessType; +import com.fastbee.iot.domain.DeviceReportInfo; +import com.fastbee.iot.service.IDeviceReportInfoService; +import com.fastbee.common.utils.poi.ExcelUtil; +import com.fastbee.common.core.page.TableDataInfo; + +/** + * 设备上电审核前上报的基础信息Controller + * + * @author kerwincui + * @date 2024-12-05 + */ +@RestController +@RequestMapping("/iot/info") +@Api(tags = "设备上电审核前上报的基础信息") +public class DeviceReportInfoController extends BaseController +{ + @Autowired + private IDeviceReportInfoService deviceReportInfoService; + +/** + * 查询设备上电审核前上报的基础信息列表 + */ +@PreAuthorize("@ss.hasPermi('iot:info:list')") +@GetMapping("/list") +@ApiOperation("查询设备上电审核前上报的基础信息列表") + public TableDataInfo list(DeviceReportInfo deviceReportInfo) + { + startPage(); + List list = deviceReportInfoService.selectDeviceReportInfoList(deviceReportInfo); + return getDataTable(list); + } + + /** + * 导出设备上电审核前上报的基础信息列表 + */ + @ApiOperation("导出设备上电审核前上报的基础信息列表") + @PreAuthorize("@ss.hasPermi('iot:info:export')") + @PostMapping("/export") + public void export(HttpServletResponse response, DeviceReportInfo deviceReportInfo) + { + List list = deviceReportInfoService.selectDeviceReportInfoList(deviceReportInfo); + ExcelUtil util = new ExcelUtil(DeviceReportInfo.class); + util.exportExcel(response, list, "设备上电审核前上报的基础信息数据"); + } + + /** + * 获取设备上电审核前上报的基础信息详细信息 + */ + @PreAuthorize("@ss.hasPermi('iot:info:query')") + @GetMapping(value = "/{id}") + @ApiOperation("获取设备上电审核前上报的基础信息详细信息") + public AjaxResult getInfo(@PathVariable("id") Long id) + { + return success(deviceReportInfoService.selectDeviceReportInfoById(id)); + } + + /** + * 新增设备上电审核前上报的基础信息 + */ + @PreAuthorize("@ss.hasPermi('iot:info:add')") + @PostMapping + @ApiOperation("新增设备上电审核前上报的基础信息") + public AjaxResult add(@RequestBody DeviceReportInfo deviceReportInfo) + { + return toAjax(deviceReportInfoService.insertDeviceReportInfo(deviceReportInfo)); + } + + /** + * 修改设备上电审核前上报的基础信息 + */ + @PreAuthorize("@ss.hasPermi('iot:info:edit')") + @PutMapping + @ApiOperation("修改设备上电审核前上报的基础信息") + public AjaxResult edit(@RequestBody DeviceReportInfo deviceReportInfo) + { + return toAjax(deviceReportInfoService.updateDeviceReportInfo(deviceReportInfo)); + } + + /** + * 删除设备上电审核前上报的基础信息 + */ + @PreAuthorize("@ss.hasPermi('iot:info:remove')") + @DeleteMapping("/{ids}") + @ApiOperation("删除设备上电审核前上报的基础信息") + public AjaxResult remove(@PathVariable Long[] ids) + { + return toAjax(deviceReportInfoService.deleteDeviceReportInfoByIds(ids)); + } +} diff --git a/fastbee-open-api/src/main/java/com/fastbee/data/controller/aaScreenAgricultural/DeviceInfoController.java b/fastbee-open-api/src/main/java/com/fastbee/data/controller/aaScreenAgricultural/DeviceInfoController.java index 970a293..bca6812 100644 --- a/fastbee-open-api/src/main/java/com/fastbee/data/controller/aaScreenAgricultural/DeviceInfoController.java +++ b/fastbee-open-api/src/main/java/com/fastbee/data/controller/aaScreenAgricultural/DeviceInfoController.java @@ -115,9 +115,9 @@ public class DeviceInfoController extends BaseController { } /** - * 查询虫情设备列表 + * 查询气象设备列表 */ - @GetMapping("/wormList") + @GetMapping("/weatherList") public AjaxResult getDeviceList() { LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); queryWrapper.select(DeviceInformationMeteorology::getId,DeviceInformationMeteorology::getName, @@ -125,10 +125,11 @@ public class DeviceInfoController extends BaseController { return success(deviceInformationMeteorologyMapper.selectList(queryWrapper)); } + /** - * 查询气象设备列表 + * 查询虫情设备列表 */ - @GetMapping("/weatherList") + @GetMapping("/wormList") public AjaxResult getWeatherList() { LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); queryWrapper.select(DeviceInformationWorms::getId,DeviceInformationWorms::getName, diff --git a/fastbee-plugs/fastbee-mqtt-client/src/main/java/com/fastbee/mqttclient/PubMqttCallBack.java b/fastbee-plugs/fastbee-mqtt-client/src/main/java/com/fastbee/mqttclient/PubMqttCallBack.java index 0d9146b..0ca85e2 100644 --- a/fastbee-plugs/fastbee-mqtt-client/src/main/java/com/fastbee/mqttclient/PubMqttCallBack.java +++ b/fastbee-plugs/fastbee-mqtt-client/src/main/java/com/fastbee/mqttclient/PubMqttCallBack.java @@ -18,6 +18,7 @@ import java.util.Arrays; @Data @NoArgsConstructor public class PubMqttCallBack implements MqttCallbackExtended { + /** * mqtt客户端 */ @@ -76,6 +77,7 @@ public class PubMqttCallBack implements MqttCallbackExtended { @Override public void messageArrived(String topic, MqttMessage message) throws Exception { // subscribe后得到的消息会执行到这里面 + System.err.println("接收消息主题:" + topic + " 消息内容:" + new String(message.getPayload())); try { listener.messageArrived(topic, message); } catch (Exception e) { diff --git a/fastbee-plugs/fastbee-mqtt-client/src/main/java/com/fastbee/mqttclient/PubMqttClient.java b/fastbee-plugs/fastbee-mqtt-client/src/main/java/com/fastbee/mqttclient/PubMqttClient.java index 54b9981..d49dd15 100644 --- a/fastbee-plugs/fastbee-mqtt-client/src/main/java/com/fastbee/mqttclient/PubMqttClient.java +++ b/fastbee-plugs/fastbee-mqtt-client/src/main/java/com/fastbee/mqttclient/PubMqttClient.java @@ -58,6 +58,7 @@ public class PubMqttClient { } log.debug("=>内部mqtt客户端连接中..."); Thread.sleep(20000); +// publish(1,true,"/topic/test","mqtt测试主题发布消息!"); } } catch (MqttException ex) { log.error("=>MQTT客户端初始化异常", ex); diff --git a/fastbee-server/mqtt-broker/src/main/java/com/fastbee/mqtt/auth/AuthService.java b/fastbee-server/mqtt-broker/src/main/java/com/fastbee/mqtt/auth/AuthService.java index 3cf5c32..5f97f68 100644 --- a/fastbee-server/mqtt-broker/src/main/java/com/fastbee/mqtt/auth/AuthService.java +++ b/fastbee-server/mqtt-broker/src/main/java/com/fastbee/mqtt/auth/AuthService.java @@ -52,6 +52,7 @@ public class AuthService { * @return 结果 */ public boolean auth(String clientId, String username, String password,String serialNumber) { + /*认证次数*/ redisCache.incr2(FastBeeConstant.REDIS.MESSAGE_AUTH_TOTAL, -1L); if (StringUtils.isEmpty(clientId) || StringUtils.isEmpty(username) || StringUtils.isEmpty(password)) { diff --git a/fastbee-service/fastbee-device-service/src/main/java/com/fastbee/crop/service/impl/AgricultureCropYieldServiceImpl.java b/fastbee-service/fastbee-device-service/src/main/java/com/fastbee/crop/service/impl/AgricultureCropYieldServiceImpl.java index 7c84e87..65b3226 100644 --- a/fastbee-service/fastbee-device-service/src/main/java/com/fastbee/crop/service/impl/AgricultureCropYieldServiceImpl.java +++ b/fastbee-service/fastbee-device-service/src/main/java/com/fastbee/crop/service/impl/AgricultureCropYieldServiceImpl.java @@ -108,7 +108,6 @@ public class AgricultureCropYieldServiceImpl implements IAgricultureCropYieldSer Map> collect = list.stream().collect(Collectors.groupingBy(AgricultureCropYield::getHarvestMonth)); List> result = new ArrayList<>(); collect.forEach((month, cropYieldList) -> { - System.out.println("月份: " + month); HashMap props = new HashMap<>(); props.put("name", month+"月"); props.put("value",cropYieldList.get(0).getYieldValue()); diff --git a/fastbee-service/fastbee-ggroup-service/src/main/java/com/fastbee/ggroup/service/impl/GSiteDeviceServiceImpl.java b/fastbee-service/fastbee-ggroup-service/src/main/java/com/fastbee/ggroup/service/impl/GSiteDeviceServiceImpl.java index c3068a8..33856c2 100644 --- a/fastbee-service/fastbee-ggroup-service/src/main/java/com/fastbee/ggroup/service/impl/GSiteDeviceServiceImpl.java +++ b/fastbee-service/fastbee-ggroup-service/src/main/java/com/fastbee/ggroup/service/impl/GSiteDeviceServiceImpl.java @@ -1,18 +1,15 @@ package com.fastbee.ggroup.service.impl; -import java.util.ArrayList; + import java.util.List; import com.baomidou.mybatisplus.extension.conditions.query.LambdaQueryChainWrapper; -import com.fastbee.ggroup.domain.GSites; -import com.fastbee.ggroup.domain.dto.GSiteDeviceDto; import com.fastbee.ggroup.domain.vo.GSiteDeviceVo; import com.fastbee.ggroup.mapper.GSitesMapper; import com.fastbee.iot.domain.Device; import com.fastbee.iot.domain.Group; import com.fastbee.iot.mapper.DeviceMapper; import com.fastbee.iot.mapper.GroupMapper; -import com.github.yulichang.query.MPJLambdaQueryWrapper; import com.github.yulichang.wrapper.MPJLambdaWrapper; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; diff --git a/fastbee-service/fastbee-iot-service/src/main/java/com/fastbee/iot/domain/DeviceReportInfo.java b/fastbee-service/fastbee-iot-service/src/main/java/com/fastbee/iot/domain/DeviceReportInfo.java new file mode 100644 index 0000000..4d065a6 --- /dev/null +++ b/fastbee-service/fastbee-iot-service/src/main/java/com/fastbee/iot/domain/DeviceReportInfo.java @@ -0,0 +1,93 @@ +package com.fastbee.iot.domain; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import org.apache.commons.lang3.builder.ToStringBuilder; +import org.apache.commons.lang3.builder.ToStringStyle; +import com.fastbee.common.annotation.Excel; +import com.fastbee.common.core.domain.BaseEntity; + +/** + * 设备上电审核前上报的基础信息对象 iot_device_report_info + * + * @author kerwincui + * @date 2024-12-05 + */ +@ApiModel(value = "DeviceReportInfo",description = "设备上电审核前上报的基础信息 iot_device_report_info") +@Data +@EqualsAndHashCode(callSuper = true) +public class DeviceReportInfo extends BaseEntity + { +private static final long serialVersionUID = 1L; + + /** $column.columnComment */ + private Long id; + + /** 模组IMEI号 */ + @Excel(name = "模组IMEI号") + @ApiModelProperty("模组IMEI号") + private String imei; + + /** 流量卡iccid */ + @Excel(name = "流量卡iccid") + @ApiModelProperty("流量卡iccid") + private String iccid; + + /** MCU唯一id */ + @Excel(name = "MCU唯一id") + @ApiModelProperty("MCU唯一id") + private String mcuId; + + /** 硬件板型 */ + @Excel(name = "硬件板型") + @ApiModelProperty("硬件板型") + private String bspType; + + /** 模组型号 */ + @Excel(name = "模组型号") + @ApiModelProperty("模组型号") + private String lteType; + + /** MCU型号 */ + @Excel(name = "MCU型号") + @ApiModelProperty("MCU型号") + private String mcuType; + + /** MCU固件,包含了固件的名称和版本 */ + @Excel(name = "MCU固件,包含了固件的名称和版本") + @ApiModelProperty("MCU固件,包含了固件的名称和版本") + private String mcufw; + + /** 模组固件,包含了固件的名称和版本 */ + @Excel(name = "模组固件,包含了固件的名称和版本") + @ApiModelProperty("模组固件,包含了固件的名称和版本") + private String ltefw; + + /** 显示屏厂家,上报1,2,3等类似的数值,通过后台进行录入数值和显示屏厂家对应关系例:1对应GT2116 */ + @Excel(name = "显示屏厂家,上报1,2,3等类似的数值,通过后台进行录入数值和显示屏厂家对应关系例:1对应GT2116") + @ApiModelProperty("显示屏厂家,上报1,2,3等类似的数值,通过后台进行录入数值和显示屏厂家对应关系例:1对应GT2116") + private Long lcdManufacturer; + + /** 语音厂家,上报1,2,3等类似的数值,通过后台进行录入数值和语音厂家对应关系例:1对应 */ + @Excel(name = "语音厂家,上报1,2,3等类似的数值,通过后台进行录入数值和语音厂家对应关系例:1对应") + @ApiModelProperty("语音厂家,上报1,2,3等类似的数值,通过后台进行录入数值和语音厂家对应关系例:1对应") + private Long voiceManufacturer; + + /** FRAM型号 */ + @Excel(name = "FRAM型号") + @ApiModelProperty("FRAM型号") + private String framModel; + + /** 代工厂家,上报1,2,3等类似的数值,通过后台进行录入数值和代工厂家对应关系例:1对应 */ + @Excel(name = "代工厂家,上报1,2,3等类似的数值,通过后台进行录入数值和代工厂家对应关系例:1对应") + @ApiModelProperty("代工厂家,上报1,2,3等类似的数值,通过后台进行录入数值和代工厂家对应关系例:1对应") + private Long replaceManufacturer; + + /** 记录测试的过程,包括了测试脉冲次数、第一次上电时间等待补充信息 */ + @Excel(name = "记录测试的过程,包括了测试脉冲次数、第一次上电时间等待补充信息") + @ApiModelProperty("记录测试的过程,包括了测试脉冲次数、第一次上电时间等待补充信息") + private String testRecord; + +} diff --git a/fastbee-service/fastbee-iot-service/src/main/java/com/fastbee/iot/mapper/DeviceReportInfoMapper.java b/fastbee-service/fastbee-iot-service/src/main/java/com/fastbee/iot/mapper/DeviceReportInfoMapper.java new file mode 100644 index 0000000..07b607b --- /dev/null +++ b/fastbee-service/fastbee-iot-service/src/main/java/com/fastbee/iot/mapper/DeviceReportInfoMapper.java @@ -0,0 +1,64 @@ +package com.fastbee.iot.mapper; + +import java.util.List; +import com.fastbee.iot.domain.DeviceReportInfo; +import org.apache.ibatis.annotations.Mapper; + + +/** + * 设备上电审核前上报的基础信息Mapper接口 + * + * @author kerwincui + * @date 2024-12-05 + */ +@Mapper +public interface DeviceReportInfoMapper +{ + /** + * 查询设备上电审核前上报的基础信息 + * + * @param id 设备上电审核前上报的基础信息主键 + * @return 设备上电审核前上报的基础信息 + */ + public DeviceReportInfo selectDeviceReportInfoById(Long id); + + /** + * 查询设备上电审核前上报的基础信息列表 + * + * @param deviceReportInfo 设备上电审核前上报的基础信息 + * @return 设备上电审核前上报的基础信息集合 + */ + public List selectDeviceReportInfoList(DeviceReportInfo deviceReportInfo); + + /** + * 新增设备上电审核前上报的基础信息 + * + * @param deviceReportInfo 设备上电审核前上报的基础信息 + * @return 结果 + */ + public int insertDeviceReportInfo(DeviceReportInfo deviceReportInfo); + + /** + * 修改设备上电审核前上报的基础信息 + * + * @param deviceReportInfo 设备上电审核前上报的基础信息 + * @return 结果 + */ + public int updateDeviceReportInfo(DeviceReportInfo deviceReportInfo); + + /** + * 删除设备上电审核前上报的基础信息 + * + * @param id 设备上电审核前上报的基础信息主键 + * @return 结果 + */ + public int deleteDeviceReportInfoById(Long id); + + /** + * 批量删除设备上电审核前上报的基础信息 + * + * @param ids 需要删除的数据主键集合 + * @return 结果 + */ + public int deleteDeviceReportInfoByIds(Long[] ids); +} diff --git a/fastbee-service/fastbee-iot-service/src/main/java/com/fastbee/iot/model/ProductAuthenticateModel.java b/fastbee-service/fastbee-iot-service/src/main/java/com/fastbee/iot/model/ProductAuthenticateModel.java index 3615b47..7f95556 100644 --- a/fastbee-service/fastbee-iot-service/src/main/java/com/fastbee/iot/model/ProductAuthenticateModel.java +++ b/fastbee-service/fastbee-iot-service/src/main/java/com/fastbee/iot/model/ProductAuthenticateModel.java @@ -2,8 +2,12 @@ package com.fastbee.iot.model; import com.fastbee.common.annotation.Excel; +import lombok.Getter; -public class ProductAuthenticateModel { +import java.io.Serializable; + +@Getter +public class ProductAuthenticateModel implements Serializable { /** 产品分类ID */ private Long deviceId; @@ -39,98 +43,50 @@ public class ProductAuthenticateModel { private int vertificateMethod; - public int getVertificateMethod() { - return vertificateMethod; - } - public void setVertificateMethod(int vertificateMethod) { this.vertificateMethod = vertificateMethod; } - public Integer getIsAuthorize() { - return isAuthorize; - } - public void setIsAuthorize(Integer isAuthorize) { this.isAuthorize = isAuthorize; } - public int getProductStatus() { - return productStatus; - } - public void setProductStatus(int productStatus) { this.productStatus = productStatus; } - public int getStatus() { - return status; - } - public void setStatus(int status) { this.status = status; } - public Long getDeviceId() { - return deviceId; - } - public void setDeviceId(Long deviceId) { this.deviceId = deviceId; } - public String getDeviceName() { - return deviceName; - } - public void setDeviceName(String deviceName) { this.deviceName = deviceName; } - public Long getProductId() { - return productId; - } - public void setProductId(Long productId) { this.productId = productId; } - public String getProductName() { - return productName; - } - public void setProductName(String productName) { this.productName = productName; } - public String getSerialNumber() { - return serialNumber; - } - public void setSerialNumber(String serialNumber) { this.serialNumber = serialNumber; } - public String getMqttAccount() { - return mqttAccount; - } - public void setMqttAccount(String mqttAccount) { this.mqttAccount = mqttAccount; } - public String getMqttPassword() { - return mqttPassword; - } - public void setMqttPassword(String mqttPassword) { this.mqttPassword = mqttPassword; } - public String getMqttSecret() { - return mqttSecret; - } - public void setMqttSecret(String mqttSecret) { this.mqttSecret = mqttSecret; } diff --git a/fastbee-service/fastbee-iot-service/src/main/java/com/fastbee/iot/ruleEngine/MqttClientFactory.java b/fastbee-service/fastbee-iot-service/src/main/java/com/fastbee/iot/ruleEngine/MqttClientFactory.java index 0ad6eb2..a5749db 100644 --- a/fastbee-service/fastbee-iot-service/src/main/java/com/fastbee/iot/ruleEngine/MqttClientFactory.java +++ b/fastbee-service/fastbee-iot-service/src/main/java/com/fastbee/iot/ruleEngine/MqttClientFactory.java @@ -29,6 +29,11 @@ public class MqttClientFactory { return client; } + /** + * 创建mqtt实例 + * @param config + * @return + */ public static MqttAsyncClient instanceNew(MqttClientConfig config) { MqttAsyncClient client = null; try { @@ -40,12 +45,18 @@ public class MqttClientFactory { options.setAutomaticReconnect(true); IMqttToken token = client.connect(options); token.waitForCompletion(); + log.info("=>mqtt客户端创建成功!!!!!,key:{},host:{}", config.getKey(), config.getHostUrl()); } catch (MqttException e) { log.error("=>mqtt客户端创建错误,原因:" + e.getMessage()); } return client; } + /** + * 添加订阅 + * @param key key + * @param topic 主题 + */ public static void addSubscribe(String key, String topic) { try { MqttAsyncClient client = CLIENT_CACHE.get(key); @@ -66,6 +77,11 @@ public class MqttClientFactory { } } + /** + * 取消订阅 + * @param key key + * @param topic 主题 + */ public static void delSubscribe(String key, String topic) { try { MqttAsyncClient client = CLIENT_CACHE.get(key); diff --git a/fastbee-service/fastbee-iot-service/src/main/java/com/fastbee/iot/service/IDeviceReportInfoService.java b/fastbee-service/fastbee-iot-service/src/main/java/com/fastbee/iot/service/IDeviceReportInfoService.java new file mode 100644 index 0000000..1ed3dae --- /dev/null +++ b/fastbee-service/fastbee-iot-service/src/main/java/com/fastbee/iot/service/IDeviceReportInfoService.java @@ -0,0 +1,61 @@ +package com.fastbee.iot.service; + +import java.util.List; +import com.fastbee.iot.domain.DeviceReportInfo; + +/** + * 设备上电审核前上报的基础信息Service接口 + * + * @author kerwincui + * @date 2024-12-05 + */ +public interface IDeviceReportInfoService +{ + /** + * 查询设备上电审核前上报的基础信息 + * + * @param id 设备上电审核前上报的基础信息主键 + * @return 设备上电审核前上报的基础信息 + */ + public DeviceReportInfo selectDeviceReportInfoById(Long id); + + /** + * 查询设备上电审核前上报的基础信息列表 + * + * @param deviceReportInfo 设备上电审核前上报的基础信息 + * @return 设备上电审核前上报的基础信息集合 + */ + public List selectDeviceReportInfoList(DeviceReportInfo deviceReportInfo); + + /** + * 新增设备上电审核前上报的基础信息 + * + * @param deviceReportInfo 设备上电审核前上报的基础信息 + * @return 结果 + */ + public int insertDeviceReportInfo(DeviceReportInfo deviceReportInfo); + + /** + * 修改设备上电审核前上报的基础信息 + * + * @param deviceReportInfo 设备上电审核前上报的基础信息 + * @return 结果 + */ + public int updateDeviceReportInfo(DeviceReportInfo deviceReportInfo); + + /** + * 批量删除设备上电审核前上报的基础信息 + * + * @param ids 需要删除的设备上电审核前上报的基础信息主键集合 + * @return 结果 + */ + public int deleteDeviceReportInfoByIds(Long[] ids); + + /** + * 删除设备上电审核前上报的基础信息信息 + * + * @param id 设备上电审核前上报的基础信息主键 + * @return 结果 + */ + public int deleteDeviceReportInfoById(Long id); +} diff --git a/fastbee-service/fastbee-iot-service/src/main/java/com/fastbee/iot/service/impl/DeviceReportInfoServiceImpl.java b/fastbee-service/fastbee-iot-service/src/main/java/com/fastbee/iot/service/impl/DeviceReportInfoServiceImpl.java new file mode 100644 index 0000000..f7c3a60 --- /dev/null +++ b/fastbee-service/fastbee-iot-service/src/main/java/com/fastbee/iot/service/impl/DeviceReportInfoServiceImpl.java @@ -0,0 +1,93 @@ +package com.fastbee.iot.service.impl; + +import java.util.List; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import com.fastbee.iot.mapper.DeviceReportInfoMapper; +import com.fastbee.iot.domain.DeviceReportInfo; +import com.fastbee.iot.service.IDeviceReportInfoService; + +/** + * 设备上电审核前上报的基础信息Service业务层处理 + * + * @author kerwincui + * @date 2024-12-05 + */ +@Service +public class DeviceReportInfoServiceImpl implements IDeviceReportInfoService +{ + @Autowired + private DeviceReportInfoMapper deviceReportInfoMapper; + + /** + * 查询设备上电审核前上报的基础信息 + * + * @param id 设备上电审核前上报的基础信息主键 + * @return 设备上电审核前上报的基础信息 + */ + @Override + public DeviceReportInfo selectDeviceReportInfoById(Long id) + { + return deviceReportInfoMapper.selectDeviceReportInfoById(id); + } + + /** + * 查询设备上电审核前上报的基础信息列表 + * + * @param deviceReportInfo 设备上电审核前上报的基础信息 + * @return 设备上电审核前上报的基础信息 + */ + @Override + public List selectDeviceReportInfoList(DeviceReportInfo deviceReportInfo) + { + return deviceReportInfoMapper.selectDeviceReportInfoList(deviceReportInfo); + } + + /** + * 新增设备上电审核前上报的基础信息 + * + * @param deviceReportInfo 设备上电审核前上报的基础信息 + * @return 结果 + */ + @Override + public int insertDeviceReportInfo(DeviceReportInfo deviceReportInfo) + { + return deviceReportInfoMapper.insertDeviceReportInfo(deviceReportInfo); + } + + /** + * 修改设备上电审核前上报的基础信息 + * + * @param deviceReportInfo 设备上电审核前上报的基础信息 + * @return 结果 + */ + @Override + public int updateDeviceReportInfo(DeviceReportInfo deviceReportInfo) + { + return deviceReportInfoMapper.updateDeviceReportInfo(deviceReportInfo); + } + + /** + * 批量删除设备上电审核前上报的基础信息 + * + * @param ids 需要删除的设备上电审核前上报的基础信息主键 + * @return 结果 + */ + @Override + public int deleteDeviceReportInfoByIds(Long[] ids) + { + return deviceReportInfoMapper.deleteDeviceReportInfoByIds(ids); + } + + /** + * 删除设备上电审核前上报的基础信息信息 + * + * @param id 设备上电审核前上报的基础信息主键 + * @return 结果 + */ + @Override + public int deleteDeviceReportInfoById(Long id) + { + return deviceReportInfoMapper.deleteDeviceReportInfoById(id); + } +} diff --git a/fastbee-service/fastbee-iot-service/src/main/resources/mapper/iot/DeviceReportInfoMapper.xml b/fastbee-service/fastbee-iot-service/src/main/resources/mapper/iot/DeviceReportInfoMapper.xml new file mode 100644 index 0000000..1e54ee5 --- /dev/null +++ b/fastbee-service/fastbee-iot-service/src/main/resources/mapper/iot/DeviceReportInfoMapper.xml @@ -0,0 +1,116 @@ + + + + + + + + + + + + + + + + + + + + + + + select id, imei, iccid, mcu_id, bsp_type, lte_type, mcu_type, mcuFw, lteFw, lcd_manufacturer, voice_manufacturer, fram_model, replace_manufacturer, test_record from iot_device_report_info + + + + + + + + insert into iot_device_report_info + + imei, + iccid, + mcu_id, + bsp_type, + lte_type, + mcu_type, + mcuFw, + lteFw, + lcd_manufacturer, + voice_manufacturer, + fram_model, + replace_manufacturer, + test_record, + + + #{imei}, + #{iccid}, + #{mcuId}, + #{bspType}, + #{lteType}, + #{mcuType}, + #{mcufw}, + #{ltefw}, + #{lcdManufacturer}, + #{voiceManufacturer}, + #{framModel}, + #{replaceManufacturer}, + #{testRecord}, + + + + + update iot_device_report_info + + imei = #{imei}, + iccid = #{iccid}, + mcu_id = #{mcuId}, + bsp_type = #{bspType}, + lte_type = #{lteType}, + mcu_type = #{mcuType}, + mcuFw = #{mcufw}, + lteFw = #{ltefw}, + lcd_manufacturer = #{lcdManufacturer}, + voice_manufacturer = #{voiceManufacturer}, + fram_model = #{framModel}, + replace_manufacturer = #{replaceManufacturer}, + test_record = #{testRecord}, + + where id = #{id} + + + + delete from iot_device_report_info where id = #{id} + + + + delete from iot_device_report_info where id in + + #{id} + + + \ No newline at end of file diff --git a/logs/record.log.2024-11-11.0.gz b/logs/record.log.2024-11-11.0.gz new file mode 100644 index 0000000000000000000000000000000000000000..f40bdf6c81b7850e60f38a22f94d4e016b4102d3 GIT binary patch literal 1665 zcmV-{27dV;iwFP!000000PR{^YvV=~er_QDVF(NHLOqe?OC0wCStoAYHW!>t7aE6U zEFIh0NE$ISa*};0r4+V>_O%cD(tl72g;H4PpXpxyM(3jV5<7{VwX=Y5PCd~@`}M5^N~T(A9&%v3N!-8-n_Iw71dW=fL;!1cpPmLD6?WnA6REhF z0L>bpO^K%iqUrdAbKr<8eBh$iInuh2{LY~L{_>JNiMz5j2kstr0kx^`(^JJ#4n>T% zJs*(A5pjgqg9=)aZSKk>5H>CsZG;|eHg?BBP#j>60}@5Ra8*&UPegY|-yb+641pp2 zsi0kocFrG2OdJ_`bV|5{6^E|kYV~NmL&vKqBF+iv07m;h5Dv)cf^&k-Y0M-6VcYA( zOm`Dcf}Y1kd;KctRsH$_u$~X%5wz45up#E8fPgb0p>Ll#5NR?YbR=NuKIv&UW{OTH z5%WS%c*OUf8rri+cHaTtS27IR40sn2As~oE1yR<)JW}ts842K&vJ>0_5^~9aBPct^ zhap#7wLNgRAcD}9rqBC8BqqkFBWJO@@kKp}87yrEBp^y9*NF@|IIuC&`h1fA_Oa1Mp% z^IP}ifxN3~oHU%i1GULbM{#{`h={73>{K8Yhbp{uB#UTeE#_>k<%Mg;2`f@c z5e55mQ%J`t|vn=ij~l`Ps`CfBgN; zw^z*W^&Hx6H1-;k0u#qAN(Da9UL6UDBcBQyex~4?t}ibwFQv0Iou%n4on@B3N5m9f z(jd&Ty%`IcmB{6Ev)`tCxKFuA>{E8HFH}>bW!r}ULLqYmPW>L}wl9evLuMLfSn*OR z6*umqua6AOtVWkD;yku3`J7eE##YW1TB}`bLl6b+wWPKNn&Pr=8FqJ zwFPYw`{F=~%JRp|jRtf)3E~{f^{W3MbFHLCXy*%e#9N=R>*&hg5tzpgvMJXRdkGK+O%4 zniyUb*raa15md39e@jrhRylOkG6`{*7s-bgOQBrdT~CH($V`+npw>%wTXws&VbBdQ-B@ww^5sQ@jcd%ZTVS;Q zeL2M2M9epnxPl> zWNxO;v-%CjSEbvi)IS4-`qm)K-CEs;Dv$YiMB9cnPi^JmjoKz04kVc;zMOfIw#;h> zn_mYYGM7cnS&t@o^rT<`DPWJDfI7I`(OEB_Aqy-ma+zC5+B#(-sG>{Z_R(d&aibnY zev(RNc8U6nJ2I}iB2-LPkc{f#ron;Y40=YQ*Fa6q1ej^mOcMv~iQ1G~iuP4*Szh`F Lltx%BvM~Sv^+F|t literal 0 HcmV?d00001