Browse Source

增加代码响应类封装;

tags/v2.0
swordmeng 1 month ago
parent
commit
de3e0e9517
  1. 5
      data-framework/pom.xml
  2. 8
      data-framework/src/main/java/com/huaxing/common/constant/AppConstant.java
  3. 50
      data-framework/src/main/java/com/huaxing/common/result/BaseException.java
  4. 23
      data-framework/src/main/java/com/huaxing/common/result/BizException.java
  5. 52
      data-framework/src/main/java/com/huaxing/common/result/ResultVo.java
  6. 0
      data-framework/src/main/java/com/huaxing/mqtt/ReadMe
  7. 49
      data-framework/src/main/java/com/huaxing/mqtt/processor/MqttMessageReceiver.java
  8. 31
      data-storage/src/main/java/com/huaxing/data/api/controller/DataQueryController.java
  9. 3
      data-storage/src/main/java/com/huaxing/data/api/domain/DataQueryDTO.java
  10. 5
      data-storage/src/main/java/com/huaxing/mqtt/MqttMessageConsumer.java
  11. 9
      data-storage/src/main/java/com/huaxing/test/TestController.java
  12. 1
      data-storage/src/main/resources/application-dev.yaml
  13. 2
      data-storage/src/main/resources/application.yaml
  14. 16
      data-storage/src/main/resources/banner.txt
  15. 0
      data-storage/src/main/resources/script/补水箱.script
  16. 32
      pom.xml

5
data-framework/pom.xml

@ -17,6 +17,11 @@
<artifactId>spring-beans</artifactId>
<version>6.2.1</version>
</dependency>
<dependency>
<groupId>io.swagger.core.v3</groupId>
<artifactId>swagger-annotations</artifactId>
<version>2.2.19</version>
</dependency>
</dependencies>
</project>

8
data-framework/src/main/java/com/huaxing/common/constant/AppConstant.java

@ -12,4 +12,12 @@ package com.huaxing.common.constant;
public class AppConstant {
public static final String APP_NAME = "iot-data-bridge";
/** 网络请求 - 成功 */
public static final String REQUEST_SUCCESS_CODE = "0";
/** 网络请求 - 失败(默认) */
public static final String REQUEST_CODE_FAIL = "-1";
/** 异常代码 - 业务类型 */
public static final String CODE_BIZ = "-1";
}

50
data-framework/src/main/java/com/huaxing/common/result/BaseException.java

@ -0,0 +1,50 @@
package com.huaxing.common.result;
import com.huaxing.common.constant.AppConstant;
import lombok.Getter;
import lombok.ToString;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@Getter
@ToString
public abstract class BaseException extends RuntimeException {
private static final Logger Logger = LoggerFactory.getLogger(BizException.class);
protected final String code;
protected Object data;
protected BaseException(String code, String message) {
super(message);
if (code == null){
this.code = AppConstant.CODE_BIZ;
}else {
this.code = code;
}
}
public final void print(){
Logger.error("exception info print: start");
Logger.error(this.getMessage(),this);
Logger.error("data:{}", data);
Logger.error("exception info print: end");
}
public final BaseException setData(Object data){
this.data = data;
return this;
}
public final <D> D getData(){
return (D)data;
}
protected static String buildMsg(String msg,String hint){
if (hint != null){
msg = msg + ":" + hint;
}
return msg;
}
}

23
data-framework/src/main/java/com/huaxing/common/result/BizException.java

@ -0,0 +1,23 @@
package com.huaxing.common.result;
import com.huaxing.common.constant.AppConstant;
import org.springframework.util.StringUtils;
public class BizException extends BaseException {
private BizException(String msg) {
super(AppConstant.CODE_BIZ, msg);
}
/** tag!(msg:hint) */
public static BizException custom(String tag, String msg, String hint){
return BizException.custom(tag,BaseException.buildMsg(msg,hint));
}
/** tag!(msg) */
public static BizException custom(String tag, String msg){
if (!StringUtils.isEmpty(msg)){
tag += "!(" + msg + ")";
}
return new BizException(tag);
}
}

52
data-framework/src/main/java/com/huaxing/common/result/ResultVo.java

@ -0,0 +1,52 @@
package com.huaxing.common.result;
import com.huaxing.common.constant.AppConstant;
import lombok.Getter;
import java.io.Serializable;
@Getter
public class ResultVo<T> implements Serializable {
final String code;
final String msg;
final T data;
private ResultVo(String code, String msg, T data) {
this.code = code;
this.msg = msg;
this.data = data;
}
private ResultVo(BaseException exception) {
this.code = exception.getCode();
this.msg = exception.getMessage();
this.data = exception.getData();
}
public static ResultVo<?> ok() {
return ResultVo.ok(null);
}
public static <D> ResultVo<D> ok(D data) {
return new ResultVo<>(AppConstant.REQUEST_SUCCESS_CODE,"操作成功!",data);
}
public static <D> ResultVo<D> ok(String msg,D data) {
return new ResultVo<>(AppConstant.REQUEST_SUCCESS_CODE,msg,data);
}
public static ResultVo<?> fail(String msg) {
return ResultVo.fail(msg,null);
}
public static <D> ResultVo<D> fail(String msg,D data) {
return new ResultVo<>(AppConstant.REQUEST_CODE_FAIL,msg,data);
}
public static <D> ResultVo<D> fail(BaseException exception) {
return new ResultVo<>(exception);
}
}

0
data-framework/src/main/java/com/huaxing/mqtt/ReadMe

49
data-framework/src/main/java/com/huaxing/mqtt/processor/MqttMessageReceiver.java

@ -3,12 +3,6 @@ package com.huaxing.mqtt.processor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.messaging.MessageHandler;
import org.springframework.stereotype.Component;
//import org.springframework.integration.mqtt.support.MqttHeaders;
//import org.springframework.messaging.Message;
//import org.springframework.messaging.MessageHeaders;
//import org.springframework.messaging.MessagingException;
//import org.springframework.scheduling.annotation.Async;
//import java.util.concurrent.CompletableFuture;
/**
* 消费者处理器
@ -16,46 +10,5 @@ import org.springframework.stereotype.Component;
@Slf4j
@Component
@SuppressWarnings("all")
public abstract class MqttMessageReceiver implements MessageHandler {
// 获取消息接口
// public abstract String getMessage(String payload);
// /**
// * 消息处理
// *
// * @param message 消息
// * @throws MessagingException 消息异常
// */
// @Override
// @Async("handleMessage")
// public void handleMessage(Message<?> message) throws MessagingException {
// try {
// // 获取消息Topic
// MessageHeaders headers = message.getHeaders();
// String topic = String.valueOf(headers.get(MqttHeaders.RECEIVED_TOPIC));
// log.info("[获取到的消息的topic]:{} ", topic);
// // 获取消息体
// String payload = (String) message.getPayload();
// log.info("[获取到的消息的payload]:{} ", payload);
// // 数据库入库消息
// if (topic.contains("iot/test1/in-storage")) {
// // 模拟1000000条数据入库
// log.info("接收到iot/test1/in-storage的消息啦,快去处理");
// getMessage(payload);
//// long l = System.currentTimeMillis();
//// System.currentTimeMillis();
//// CompletableFuture<Void> future = CompletableFuture.runAsync(() -> {
////// analysisService.parseStoreData(payload);
//// });
//// long l1 = System.currentTimeMillis();
//// log.info("入库完成,耗时:{}", l1 - l);
//// analysisService.parseStoreData(payload);
// } else if (topic.contains("table-update/")){} // TODO 表更新topic
// } catch (Exception e) {
// log.error(e.toString());
// }
// }
}
public abstract class MqttMessageReceiver implements MessageHandler { }

31
data-storage/src/main/java/com/huaxing/data/api/controller/DataQueryController.java

@ -0,0 +1,31 @@
package com.huaxing.data.api.controller;
import com.huaxing.data.api.domain.DataQueryDTO;
import com.huaxing.common.result.ResultVo;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.Map;
/**
* @ProjectName: data-bridge
* @Package: com.huaxing.data.api.controller
* @ClassName: DataQueryController
* @Author: swordmeng8@163.com
* @Description: 数据查询控制器
* @Date: 2025/1/20 16:02
* @Version: 1.0
*/
@RestController
@RequestMapping("/data")
public class DataQueryController {
// TODO 查询方法
@PostMapping("/query")
public ResultVo<Map<String, Object>> query(DataQueryDTO queryDTO) {
return ResultVo.ok(null);
}
}

3
data-storage/src/main/java/com/huaxing/data/storage/domain/DataQueryDTO.java → data-storage/src/main/java/com/huaxing/data/api/domain/DataQueryDTO.java

@ -1,10 +1,9 @@
package com.huaxing.data.storage.domain;
package com.huaxing.data.api.domain;
import lombok.Data;
import lombok.experimental.Accessors;
import java.util.List;
import java.util.Map;
/**
* @ProjectName: iot-data-bridge

5
data-storage/src/main/java/com/huaxing/data/mqtt/MqttMessageConsumer.java → data-storage/src/main/java/com/huaxing/mqtt/MqttMessageConsumer.java

@ -1,4 +1,4 @@
package com.huaxing.data.mqtt;
package com.huaxing.mqtt;
import com.huaxing.data.storage.service.IDataAnalysisService;
import com.huaxing.mqtt.processor.MqttMessageReceiver;
@ -39,16 +39,13 @@ public class MqttMessageConsumer extends MqttMessageReceiver {
@Async("handleMessage")
public void handleMessage(Message<?> message) throws MessagingException {
try {
// 获取消息Topic
MessageHeaders headers = message.getHeaders();
String topic = String.valueOf(headers.get(MqttHeaders.RECEIVED_TOPIC));
log.info("[获取到的消息的topic]:{} ", topic);
// 获取消息体
String payload = (String) message.getPayload();
log.info("[获取到的消息的payload]:{} ", payload);
// 数据库入库消息
if (topic.contains("iot/test1/in-storage")) {
// 模拟1000000条数据入库
log.info("接收到iot/test1/in-storage的消息啦,快去处理");
CompletableFuture.runAsync(() -> {
analysisService.parseStoreData(payload);

9
data-storage/src/main/java/com/huaxing/test/TestController.java

@ -7,6 +7,7 @@ import com.huaxing.data.storage.service.IDeviceDataStoredService;
import com.huaxing.data.tablemanagement.service.ITableStructureService;
import com.huaxing.common.util.JacksonUtil;
import com.huaxing.mqtt.processor.MqttMessageSender;
import com.huaxing.common.result.ResultVo;
import jakarta.annotation.Resource;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.GetMapping;
@ -57,17 +58,17 @@ public class TestController {
// =============================================== 测试Dfs表查询 ======================================
@GetMapping(value = "/testSelectDfs")
public List<Map<String, Object>> testSelectDfs() {
public ResultVo<List<Map<String, Object>>> testSelectDfs() {
String dbPath = "dfs://ZbDB";
String sql = String.format("select * from loadTable('%s','%s')", dbPath, "ZbWaterMeter1Dfs");
return dataQueryDfsService.selectList(sql);
return ResultVo.ok(dataQueryDfsService.selectList(sql));
}
// =============================================== 测试订阅流表查询 ======================================
@GetMapping(value = "/testSelectStream")
public List<Map<String, Object>> testSelectStream() {
public ResultVo<List<Map<String, Object>>> testSelectStream() {
String sql = "select * from WaterMeterTset1Stream";
return dataQueryStreamService.selectList(sql);
return ResultVo.ok(dataQueryStreamService.selectList(sql));
}
// =============================================== 给指定的流表增加列字段 ======================================

1
data-storage/src/main/resources/application-dev.yaml

@ -1,6 +1,7 @@
spring:
application:
name: iot-data-bridge
version: 1.0.0
datasource:
url: jdbc:dolphindb://localhost:8848?databasePath=dfs://ZbDB
username: admin

2
data-storage/src/main/resources/application.yaml

@ -1,5 +1,7 @@
server:
port: 8088
servlet:
context-path: /api
spring:
profiles:
active: dev

16
data-storage/src/main/resources/banner.txt

@ -1,7 +1,9 @@
######## ### ######## ### ###### ######## ####### ######## ### ###### ########
## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ##
## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ##
## ## ## ## ## ## ## ####### ###### ## ## ## ######## ## ## ## #### ######
## ## ######### ## ######### ## ## ## ## ## ## ######### ## ## ##
## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ##
######## ## ## ## ## ## ###### ## ####### ## ## ## ## ###### ########
${AnsiColor.BLUE} ######## ### ######## ### ###### ######## ####### ######## ### ###### ########
${AnsiColor.BLUE} ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ##
${AnsiColor.BLUE} ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ##
${AnsiColor.BLUE} ## ## ## ## ## ## ## ####### ###### ## ## ## ######## ## ## ## #### ######
${AnsiColor.BLUE} ## ## ######### ## ######### ## ## ## ## ## ## ######### ## ## ##
${AnsiColor.BLUE} ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ##
${AnsiColor.BLUE} ######## ## ## ## ## ## ###### ## ####### ## ## ## ## ###### ########
${AnsiColor.BRIGHT_GREEN}Spring Boot Version: ${spring-boot.version}
${AnsiColor.BRIGHT_YELLOW}Application Version: ${application.version}

0
data-storage/src/main/resources/补水箱.script → data-storage/src/main/resources/script/补水箱.script

32
pom.xml

@ -84,22 +84,22 @@
</dependency>
<!-- 日志 -->
<dependency>
<groupId> org.apache.cassandra</groupId>
<artifactId>cassandra-all</artifactId>
<version>0.8.1</version>
<exclusions>
<exclusion>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
</exclusion>
<exclusion>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
</exclusion>
</exclusions>
</dependency>
<!-- <dependency>-->
<!-- <groupId> org.apache.cassandra</groupId>-->
<!-- <artifactId>cassandra-all</artifactId>-->
<!-- <version>0.8.1</version>-->
<!-- <exclusions>-->
<!-- <exclusion>-->
<!-- <groupId>org.slf4j</groupId>-->
<!-- <artifactId>slf4j-log4j12</artifactId>-->
<!-- </exclusion>-->
<!-- <exclusion>-->
<!-- <groupId>log4j</groupId>-->
<!-- <artifactId>log4j</artifactId>-->
<!-- </exclusion>-->
<!-- </exclusions>-->
<!-- </dependency>-->
<dependency>
<groupId>org.springframework.integration</groupId>

Loading…
Cancel
Save