From 0c0d9fca3c8cb9768eea6925d796f5d3bbfe7e1e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=B0=91=E5=B9=B4=E6=A2=A6=E4=B8=8E=E7=A0=96?= <2847127106@qq.com> Date: Sat, 28 Sep 2024 19:34:55 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- cloud-data-processing/pom.xml | 48 ++++-- .../data/processing/MyDataApplication.java | 6 +- .../controller/DataProcessingController.java | 160 ++++++++++++++++++ .../data/processing/domain/IotDbData.java | 37 ++++ .../kafka/KafkaConsumerService.java | 1 - .../mapper/DataProcessingMapper.java | 37 ++++ .../service/DataProcessingService.java | 63 +++++++ .../impl/DataProcessingServiceImpl.java | 70 ++++++++ .../src/main/resources/bootstrap.yml | 16 ++ .../processing/DataProcessingMapper.xml | 26 +++ 10 files changed, 442 insertions(+), 22 deletions(-) create mode 100644 cloud-data-processing/src/main/java/com/muyu/data/processing/controller/DataProcessingController.java create mode 100644 cloud-data-processing/src/main/java/com/muyu/data/processing/domain/IotDbData.java create mode 100644 cloud-data-processing/src/main/java/com/muyu/data/processing/mapper/DataProcessingMapper.java create mode 100644 cloud-data-processing/src/main/java/com/muyu/data/processing/service/DataProcessingService.java create mode 100644 cloud-data-processing/src/main/java/com/muyu/data/processing/service/impl/DataProcessingServiceImpl.java create mode 100644 cloud-data-processing/src/main/resources/mapper/processing/DataProcessingMapper.xml diff --git a/cloud-data-processing/pom.xml b/cloud-data-processing/pom.xml index b0649cc..0f006a2 100644 --- a/cloud-data-processing/pom.xml +++ b/cloud-data-processing/pom.xml @@ -67,35 +67,49 @@ mysql-connector-j - - - com.muyu - cloud-common-datasource - - com.muyu cloud-common-datascope - - com.muyu - cloud-common-log + org.apache.iotdb + iotdb-jdbc + 0.12.1 + + + com.alibaba + druid-spring-boot-starter + 1.1.9 - + - com.muyu - cloud-common-api-doc + org.mybatis + mybatis-spring + 3.0.3 + + + com.baomidou + mybatis-plus-boot-starter + 3.5.5 - - - com.muyu - cloud-common-xxl - + + + + + + + + + + + + + + diff --git a/cloud-data-processing/src/main/java/com/muyu/data/processing/MyDataApplication.java b/cloud-data-processing/src/main/java/com/muyu/data/processing/MyDataApplication.java index f8e5fb5..ff2394f 100644 --- a/cloud-data-processing/src/main/java/com/muyu/data/processing/MyDataApplication.java +++ b/cloud-data-processing/src/main/java/com/muyu/data/processing/MyDataApplication.java @@ -16,10 +16,8 @@ import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration; * @FilePath: com.muyu.data.processing */ -@EnableCustomConfig -//@EnableCustomSwagger2 -@EnableMyFeignClients -@SpringBootApplication(exclude = {DataSourceAutoConfiguration.class}) + +@SpringBootApplication public class MyDataApplication { public static void main(String[] args) { SpringApplication.run(MyDataApplication.class, args); diff --git a/cloud-data-processing/src/main/java/com/muyu/data/processing/controller/DataProcessingController.java b/cloud-data-processing/src/main/java/com/muyu/data/processing/controller/DataProcessingController.java new file mode 100644 index 0000000..7909d7c --- /dev/null +++ b/cloud-data-processing/src/main/java/com/muyu/data/processing/controller/DataProcessingController.java @@ -0,0 +1,160 @@ +package com.muyu.data.processing.controller; + +import com.muyu.common.core.domain.Result; +import com.muyu.data.processing.domain.IotDbData; +import com.muyu.data.processing.service.DataProcessingService; + +import javax.annotation.Resource; + +import org.springframework.web.bind.annotation.*; +import lombok.extern.slf4j.Slf4j; + +import java.util.Date; +import java.util.List; + +/** + * 数据处理控制层 + * + * @Author: 胡杨 + * @Name: DataProcessing + * @Description: 数据处理控制层 + * @CreatedDate: 2024/9/28 下午3:53 + * @FilePath: com.muyu.data.processing.controller + */ + +@Slf4j +@RestController +@RequestMapping("/DataProcessing") +public class DataProcessingController { + @Resource + private DataProcessingService service; + + + + @RequestMapping(value = "/createCarData", method = RequestMethod.POST) +// @Transactional(rollbackFor = Exception.class) + public Result createCarData(@RequestBody IotDbData data) { + try { + data.setTimestamp(System.currentTimeMillis()); + data.setCreateTime(new Date()); + Integer v = service.createCarData(data); + if (v == -1) { + return Result.success(v); + } else { + return Result.error(false); + } + } catch (Exception e) { + log.info("创建车辆报文记录失败!" + e); + return Result.error(false); + } + } + + + /** + * 更新操作 其实也是插入操作 时间戳相同 只和时间戳相关 + * @param data + * @return + */ + @RequestMapping(value = "/updateCarData", method = RequestMethod.POST) + public Result updateCarData(@RequestBody IotDbData data) { + try { + data.setTimestamp(System.currentTimeMillis()); + data.setCreateTime(new Date()); + Integer v = service.updateCarData(data); + if (v == -1) { + return Result.success(v); + } else { + return Result.error(false); + } + } catch (Exception e) { + log.info("更新车辆报文记录失败!" + e); + return Result.error(false); + } + } + + + /** + * 删除操作 要将时间戳的加号变成%2B + * @param timestamp + * @return + */ + @RequestMapping(value = "/deleteCarData", method = RequestMethod.GET) + public Result deleteCarData(String timestamp) { + try { + Integer v = service.deleteCarData(timestamp); + if (v == -1) { + return Result.success(v); + } else { + return Result.error(false); + } + } catch (Exception e) { + log.info("删除车辆报文记录失败!" + e); + return Result.error(false); + } + } + + + /** + * 创建组 也就是相当于数据库 + * @return + */ + @RequestMapping(value = "/createCarDataGroup", method = RequestMethod.POST) + public Result createCarDataGroup() { + try { + Integer v = service.createCarDataGroup(); + if (v > 0) { + return Result.success(v); + } else { + return Result.error(false); + } + } catch (Exception e) { + log.info("创建车辆报文记录组失败!" + e); + return Result.error(false); + } + } + + /** + * 查询所有车辆报文记录数据 + * @return + */ + @RequestMapping(value = "/queryCarData", method = RequestMethod.GET) + public Result queryCarData() { + try { + List v = service.queryCarData(); + if (v.size() > 0) { + v.forEach(x -> { + System.out.println(x.toString()); + }); + return Result.success(v); + } else { + return Result.error(false); + } + } catch (Exception e) { + log.info("查询车辆报文记录组失败!" + e); + return Result.error(false); + } + } + + /** + * 查看数据库有多少组 + * + * @return + */ + @RequestMapping(value = "/selectStorageGroup", method = RequestMethod.GET) + public Result selectStorageGroup() { + try { + List v = service.selectStorageGroup(); + if (v.size() > 0) { + v.forEach(x -> { + System.out.println("group------------------" + x.toString()); + }); + return Result.success(v); + } else { + return Result.error(false); + } + } catch (Exception e) { + log.info("查询组失败!" + e); + return Result.error(false); + } + } +} diff --git a/cloud-data-processing/src/main/java/com/muyu/data/processing/domain/IotDbData.java b/cloud-data-processing/src/main/java/com/muyu/data/processing/domain/IotDbData.java new file mode 100644 index 0000000..249e952 --- /dev/null +++ b/cloud-data-processing/src/main/java/com/muyu/data/processing/domain/IotDbData.java @@ -0,0 +1,37 @@ +package com.muyu.data.processing.domain; + +import com.muyu.common.core.web.domain.BaseEntity; +import lombok.*; +import lombok.experimental.SuperBuilder; + +import java.util.Date; + +/** + * 报文信息 时序实体类 + * + * @Author: 胡杨 + * @Name: DataProcessing + * @Description: 报文信息 时序实体类 + * @CreatedDate: 2024/9/28 下午3:48 + * @FilePath: com.muyu.data.processing.domain + */ + +@EqualsAndHashCode(callSuper = true) +@Data +@ToString +@SuperBuilder +@NoArgsConstructor +@AllArgsConstructor +public class IotDbData extends BaseEntity { + private long timestamp; + + private String vin; + + private String key; + private String label; + private String value; + private String type; + + +} + diff --git a/cloud-data-processing/src/main/java/com/muyu/data/processing/kafka/KafkaConsumerService.java b/cloud-data-processing/src/main/java/com/muyu/data/processing/kafka/KafkaConsumerService.java index 6de9775..5648325 100644 --- a/cloud-data-processing/src/main/java/com/muyu/data/processing/kafka/KafkaConsumerService.java +++ b/cloud-data-processing/src/main/java/com/muyu/data/processing/kafka/KafkaConsumerService.java @@ -2,7 +2,6 @@ package com.muyu.data.processing.kafka; import com.muyu.common.kafka.constants.KafkaConstants; -import io.swagger.v3.oas.annotations.servers.Server; import lombok.extern.slf4j.Slf4j; import org.springframework.kafka.annotation.KafkaListener; import org.springframework.stereotype.Component; diff --git a/cloud-data-processing/src/main/java/com/muyu/data/processing/mapper/DataProcessingMapper.java b/cloud-data-processing/src/main/java/com/muyu/data/processing/mapper/DataProcessingMapper.java new file mode 100644 index 0000000..4482b98 --- /dev/null +++ b/cloud-data-processing/src/main/java/com/muyu/data/processing/mapper/DataProcessingMapper.java @@ -0,0 +1,37 @@ +package com.muyu.data.processing.mapper; + +import com.muyu.data.processing.domain.IotDbData; +import org.apache.ibatis.annotations.Mapper; +import org.springframework.stereotype.Repository; + +import java.util.List; + +/** + * 数据处理持久层 + * + * @Author: 胡杨 + * @Name: DataPeocessingMapper + * @Description: 数据处理持久层 + * @CreatedDate: 2024/9/28 下午3:47 + * @FilePath: com.muyu.data.processing.mapper + */ + +@Repository +@Mapper +public interface DataProcessingMapper{ + + Integer createCarData(IotDbData data); + + Integer updateCarData(IotDbData data); + + Integer deleteCarData(String timestamp); + + Integer createCarDataGroup(); + + Integer createCarDataGroupElement(); + +// List queryCarData(); + + List selectStorageGroup(); + +} diff --git a/cloud-data-processing/src/main/java/com/muyu/data/processing/service/DataProcessingService.java b/cloud-data-processing/src/main/java/com/muyu/data/processing/service/DataProcessingService.java new file mode 100644 index 0000000..937bb17 --- /dev/null +++ b/cloud-data-processing/src/main/java/com/muyu/data/processing/service/DataProcessingService.java @@ -0,0 +1,63 @@ +package com.muyu.data.processing.service; + + +import com.muyu.data.processing.domain.IotDbData; + +import java.util.List; + +/** + * 数据处理业务层 + * + * @Author: 胡杨 + * @Name: DataProcessing + * @Description: 数据处理业务层 + * @CreatedDate: 2024/9/28 下午3:52 + * @FilePath: com.muyu.data.processing.server + */ + +public interface DataProcessingService{ + /** + * 创建车辆报文记录 + * + * @param data 数据 + * @return {@link Integer } + */ + Integer createCarData(IotDbData data); + + /** + * 更新车辆报文记录 + * + * @param data 数据 + * @return {@link Integer } + */ + Integer updateCarData(IotDbData data); + + /** + * 删除车辆报文记录 + * + * @param timestamp 时间戳 + * @return {@link Integer } + */ + Integer deleteCarData(String timestamp); + + /** + * 创建车辆报文记录组 + * + * @return {@link Integer } + */ + Integer createCarDataGroup(); + + /** + * 查询顺序 + * + * @return {@link List }<{@link IotDbData }> + */ + List queryCarData(); + /** + * 选择存储组 + * + * @return {@link List }<{@link String }> + */ + List selectStorageGroup(); + +} diff --git a/cloud-data-processing/src/main/java/com/muyu/data/processing/service/impl/DataProcessingServiceImpl.java b/cloud-data-processing/src/main/java/com/muyu/data/processing/service/impl/DataProcessingServiceImpl.java new file mode 100644 index 0000000..7b6139a --- /dev/null +++ b/cloud-data-processing/src/main/java/com/muyu/data/processing/service/impl/DataProcessingServiceImpl.java @@ -0,0 +1,70 @@ +package com.muyu.data.processing.service.impl; + + +import javax.annotation.Resource; + +import com.muyu.data.processing.domain.IotDbData; +import org.springframework.stereotype.Service; +import lombok.extern.slf4j.Slf4j; +import com.muyu.data.processing.mapper.DataProcessingMapper; +import com.muyu.data.processing.service.DataProcessingService; + +import java.util.List; + +/** + * 数据处理实现层 + * + * @Author: 胡杨 + * @Name: DataProcessing + * @Description: 数据处理实现层 + * @CreatedDate: 2024/9/28 下午3:52 + * @FilePath: com.muyu.data.processing.server.impl + */ + +@Slf4j +@Service +public class DataProcessingServiceImpl implements DataProcessingService { + @Resource + private DataProcessingMapper mapper; + + @Override + public Integer createCarData(IotDbData data) { + return mapper.createCarData(data); + } + + @Override + public Integer updateCarData(IotDbData data) { + return mapper.updateCarData(data); + } + + @Override + public Integer deleteCarData(String timestamp) { + return mapper.deleteCarData(timestamp); + } + + @Override + public Integer createCarDataGroup() { + try { + Integer flag = mapper.createCarDataGroup(); + Integer flagEle = mapper.createCarDataGroupElement(); + System.out.println("\n\t执行sql数量为{}" + flagEle); + return flagEle; + } catch (Exception e) { + e.printStackTrace(); + } + return 0; + } + + @Override + public List queryCarData() { +// return mapper.queryCarData(); + return null; + } + + @Override + public List selectStorageGroup() { + return mapper.selectStorageGroup(); + } + + +} diff --git a/cloud-data-processing/src/main/resources/bootstrap.yml b/cloud-data-processing/src/main/resources/bootstrap.yml index 0cfae85..a1de498 100644 --- a/cloud-data-processing/src/main/resources/bootstrap.yml +++ b/cloud-data-processing/src/main/resources/bootstrap.yml @@ -11,6 +11,22 @@ nacos: # SPRING_AMQP_DESERIALIZATION_TRUST_ALL=true spring.amqp.deserialization.trust.all # Spring spring: + datasource: + username: root + password: root + driver-class-name: org.apache.iotdb.jdbc.IoTDBDriver + url: jdbc:iotdb://47.116.173.119:6667/ + initial-size: 5 + min-idle: 10 + max-active: 20 + max-wait: 60000 + remove-abandoned: true + remove-abandoned-timeout: 30 + time-between-eviction-runs-millis: 60000 + min-evictable-idle-time-millis: 300000 + test-while-idle: false + test-on-borrow: false + test-on-return: false amqp: deserialization: trust: diff --git a/cloud-data-processing/src/main/resources/mapper/processing/DataProcessingMapper.xml b/cloud-data-processing/src/main/resources/mapper/processing/DataProcessingMapper.xml new file mode 100644 index 0000000..fab3dd1 --- /dev/null +++ b/cloud-data-processing/src/main/resources/mapper/processing/DataProcessingMapper.xml @@ -0,0 +1,26 @@ + + + + + + insert into root.one.data(timestamp, CarData_id, CarData_num, CarData_name,create_time) values(#{timestamp},#{CarDataId},#{CarDataNum},#{CarDataName},#{createTime}); + + + + delete from root.one.data where timestamp = ${timestamp}; + + + + insert into root.one.data(timestamp, CarData_id, CarData_num, CarData_name,create_time) values(2021-11-24T18:28:20.689+08:00,#{CarDataId},#{CarDataNum},#{CarDataName},#{createTime}); + + + + SET STORAGE GROUP TO root.one.data + + + CREATE TIMESERIES root.one.data.CarData_num WITH DATATYPE=INT32, ENCODING=PLAIN, COMPRESSOR=SNAPPY; + + +