Browse Source

Merge branch 'master' of http://git.xt.wenhq.top:8083/wenhongquan/khyznh

# Conflicts:
#	ruoyi-admin/src/main/resources/application-dev.yml
liwei19941102 2 years ago
parent
commit
00bcf9a519

+ 3 - 0
pom.xml

@@ -42,6 +42,7 @@
         <justauth.version>1.16.6</justauth.version>
         <justauth.version>1.16.6</justauth.version>
         <!-- 离线IP地址定位库 -->
         <!-- 离线IP地址定位库 -->
         <ip2region.version>2.7.0</ip2region.version>
         <ip2region.version>2.7.0</ip2region.version>
+        <camel.version>4.4.0</camel.version>
 
 
         <!-- OSS 配置 -->
         <!-- OSS 配置 -->
         <aws-java-sdk-s3.version>1.12.600</aws-java-sdk-s3.version>
         <aws-java-sdk-s3.version>1.12.600</aws-java-sdk-s3.version>
@@ -103,6 +104,8 @@
                 <scope>import</scope>
                 <scope>import</scope>
             </dependency>
             </dependency>
 
 
+
+
             <!-- hutool 的依赖配置-->
             <!-- hutool 的依赖配置-->
             <dependency>
             <dependency>
                 <groupId>cn.hutool</groupId>
                 <groupId>cn.hutool</groupId>

+ 9 - 0
ruoyi-admin/pom.xml

@@ -23,6 +23,12 @@
             <groupId>com.mysql</groupId>
             <groupId>com.mysql</groupId>
             <artifactId>mysql-connector-j</artifactId>
             <artifactId>mysql-connector-j</artifactId>
         </dependency>
         </dependency>
+
+        <dependency>
+            <groupId>com.taosdata.jdbc</groupId>
+            <artifactId>taos-jdbcdriver</artifactId>
+            <version>3.2.8</version>
+        </dependency>
         <!-- Oracle -->
         <!-- Oracle -->
         <dependency>
         <dependency>
             <groupId>com.oracle.database.jdbc</groupId>
             <groupId>com.oracle.database.jdbc</groupId>
@@ -92,6 +98,9 @@
             <artifactId>JustAuth</artifactId>
             <artifactId>JustAuth</artifactId>
         </dependency>
         </dependency>
 
 
+
+
+
         <!-- skywalking 整合 logback -->
         <!-- skywalking 整合 logback -->
 <!--        <dependency>-->
 <!--        <dependency>-->
 <!--            <groupId>org.apache.skywalking</groupId>-->
 <!--            <groupId>org.apache.skywalking</groupId>-->

+ 9 - 7
ruoyi-admin/src/main/resources/application-dev.yml

@@ -43,17 +43,17 @@ spring:
           driverClassName: com.mysql.cj.jdbc.Driver
           driverClassName: com.mysql.cj.jdbc.Driver
           # jdbc 所有参数配置参考 https://lionli.blog.csdn.net/article/details/122018562
           # jdbc 所有参数配置参考 https://lionli.blog.csdn.net/article/details/122018562
           # rewriteBatchedStatements=true 批处理优化 大幅提升批量插入更新删除性能(对数据库有性能损耗 使用批量操作应考虑性能问题)
           # rewriteBatchedStatements=true 批处理优化 大幅提升批量插入更新删除性能(对数据库有性能损耗 使用批量操作应考虑性能问题)
-          url: jdbc:mysql://60.204.209.152:3306/khyznh?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8&autoReconnect=true&rewriteBatchedStatements=true&allowPublicKeyRetrieval=true
+          url: jdbc:mysql://localhost:3306/khyznh?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8&autoReconnect=true&rewriteBatchedStatements=true&allowPublicKeyRetrieval=true
           username: root
           username: root
-          password: Liwei199411..
+          password: root
         # 从库数据源
         # 从库数据源
         slave:
         slave:
           lazy: false
           lazy: false
           type: ${spring.datasource.type}
           type: ${spring.datasource.type}
-          driverClassName: com.mysql.cj.jdbc.Driver
-          url: jdbc:mysql://60.204.209.152:3306/khyznh?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8&autoReconnect=true&rewriteBatchedStatements=true&allowPublicKeyRetrieval=true
+          driverClassName: com.taosdata.jdbc.rs.RestfulDriver
+          url: jdbc:TAOS-RS://127.0.0.1:6041/khyznh?charset=utf8&timezone=GMT%2B8
           username: root
           username: root
-          password: Liwei199411..
+          password: taosdata
 #        oracle:
 #        oracle:
 #          type: ${spring.datasource.type}
 #          type: ${spring.datasource.type}
 #          driverClassName: oracle.jdbc.OracleDriver
 #          driverClassName: oracle.jdbc.OracleDriver
@@ -92,13 +92,13 @@ spring:
 spring.data:
 spring.data:
   redis:
   redis:
     # 地址
     # 地址
-    host: 60.204.209.152
+    host: localhost
     # 端口,默认为6379
     # 端口,默认为6379
     port: 6379
     port: 6379
     # 数据库索引
     # 数据库索引
     database: 0
     database: 0
     # 密码(如没有密码请注释掉)
     # 密码(如没有密码请注释掉)
-    password: 123456
+    # password:
     # 连接超时时间
     # 连接超时时间
     timeout: 10s
     timeout: 10s
     # 是否开启ssl
     # 是否开启ssl
@@ -245,3 +245,5 @@ justauth:
       client-id: 10**********6
       client-id: 10**********6
       client-secret: 1f7d08**********5b7**********29e
       client-secret: 1f7d08**********5b7**********29e
       redirect-uri: ${justauth.address}/social-callback?source=gitlab
       redirect-uri: ${justauth.address}/social-callback?source=gitlab
+
+camelxmlpath: ${XML_PATH:./router/t.xml}

+ 6 - 1
ruoyi-admin/src/main/resources/application.yml

@@ -5,7 +5,7 @@ ruoyi:
   # 版本
   # 版本
   version: ${revision}
   version: ${revision}
   # 版权年份
   # 版权年份
-  copyrightYear: 2023
+  copyrightYear: 2024
 
 
 captcha:
 captcha:
   enable: false
   enable: false
@@ -261,3 +261,8 @@ websocket:
   path: /resource/websocket
   path: /resource/websocket
   # 设置访问源地址
   # 设置访问源地址
   allowedOrigins: '*'
   allowedOrigins: '*'
+
+
+camel:
+  springboot:
+    name: SampleCamel

+ 19 - 0
ruoyi-admin/src/main/resources/router/t.xml

@@ -0,0 +1,19 @@
+<routes xmlns="http://camel.apache.org/schema/spring">
+    <!--同步服务配置-->
+
+    <route>
+        <from uri="paho:/dev/gps/#?brokerUrl=tcp://122.51.118.117:1883&amp;userName=iot2yun&amp;password=123456&amp;clientId=khy_redclient"></from>
+        <to uri="bean:org.dromara.util.CamelDataUtil?method=ReciveData(${body})"></to>
+    </route>
+
+
+
+    <route>
+        <from uri="direct:sendMessage"/>
+        <to uri="bean:org.dromara.util.CamelDataUtil?method=processdata(${body})"></to>
+        <to uri="paho:/dev/?brokerUrl=tcp://122.51.118.117:1883&amp;userName=iot2yun&amp;password=123456&amp;clientId=khy_writeclient"/>
+    </route>
+
+
+
+</routes>

+ 32 - 0
ruoyi-modules/ruoyi-khy/pom.xml

@@ -103,6 +103,38 @@
             <artifactId>ruoyi-common-websocket</artifactId>
             <artifactId>ruoyi-common-websocket</artifactId>
         </dependency>
         </dependency>
 
 
+        <dependency>
+            <groupId>org.apache.camel.springboot</groupId>
+            <artifactId>camel-spring-boot-bom</artifactId>
+            <version>${camel.version}</version>
+            <type>pom</type>
+            <scope>import</scope>
+        </dependency>
+
+        <dependency>
+            <groupId>org.apache.camel.springboot</groupId>
+            <artifactId>camel-spring-boot-starter</artifactId>
+            <version>${camel.version}</version>
+        </dependency>
+
+        <dependency>
+            <groupId>org.apache.camel.springboot</groupId>
+            <artifactId>camel-paho-starter</artifactId>
+            <version>${camel.version}</version>
+        </dependency>
+
+        <dependency>
+            <groupId>org.apache.camel.springboot</groupId>
+            <artifactId>camel-spring-boot-xml-starter</artifactId>
+            <version>${camel.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.camel.springboot</groupId>
+            <artifactId>camel-xml-jaxb-dsl-starter</artifactId>
+            <version>${camel.version}</version>
+        </dependency>
+
+
     </dependencies>
     </dependencies>
 
 
 </project>
 </project>

+ 40 - 0
ruoyi-modules/ruoyi-khy/src/main/java/org/dromara/config/CamelRouterConfig.java

@@ -0,0 +1,40 @@
+package org.dromara.config;
+
+import cn.hutool.core.io.file.FileReader;
+import org.apache.camel.builder.RouteBuilder;
+import org.apache.camel.dsl.xml.jaxb.CamelJaxbXmlRoutesBuilderLoader;
+import org.apache.camel.spi.Resource;
+import org.apache.camel.support.ResourceHelper;
+import org.springframework.beans.factory.InitializingBean;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.stereotype.Component;
+import org.apache.camel.*;
+
+@Component
+public class CamelRouterConfig implements InitializingBean {
+
+    @Value("${camelxmlpath}")
+    private String filepath;
+
+    @Autowired
+    private CamelContext camelContext;
+
+    @Override
+    public void afterPropertiesSet() throws Exception {
+        try {
+            CamelContext camelContext = this.camelContext;
+            FileReader routexml = new FileReader(filepath);
+            Resource resource = ResourceHelper.fromString("a.xml", routexml.readString());
+            CamelJaxbXmlRoutesBuilderLoader xmlRoutesBuilderLoader = new CamelJaxbXmlRoutesBuilderLoader();
+
+            RouteBuilder routeBuilder = xmlRoutesBuilderLoader.doLoadRouteBuilder(resource);
+            camelContext.addRoutes(routeBuilder);
+
+            camelContext.getRouteController().startAllRoutes();
+
+        } catch (Exception e) {
+            System.out.println("------error-----");
+        }
+    }
+}

+ 14 - 0
ruoyi-modules/ruoyi-khy/src/main/java/org/dromara/system/domain/GpsData.java

@@ -0,0 +1,14 @@
+package org.dromara.system.domain;
+
+import lombok.Data;
+
+import java.io.Serializable;
+
+@Data
+public class GpsData implements Serializable {
+    private String devicecode;
+    private Double speed;
+    private Double lat;
+    private Double lng;
+    private Double alt;
+}

+ 18 - 0
ruoyi-modules/ruoyi-khy/src/main/java/org/dromara/system/mapper/TblGpsDataMapper.java

@@ -0,0 +1,18 @@
+package org.dromara.system.mapper;
+
+import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
+import org.dromara.system.domain.GpsData;
+import org.dromara.system.domain.TblUserVacate;
+import org.dromara.system.domain.vo.TblUserVacateVo;
+
+/**
+ * 人员请假Mapper接口
+ *
+ * @author Lion Li
+ * @date 2024-02-22
+ */
+public interface TblGpsDataMapper extends BaseMapperPlus<GpsData, GpsData> {
+
+    public void insertdata(GpsData data);
+
+}

+ 49 - 0
ruoyi-modules/ruoyi-khy/src/main/java/org/dromara/system/service/ITblGpsDataService.java

@@ -0,0 +1,49 @@
+package org.dromara.system.service;
+
+import org.dromara.common.mybatis.core.page.PageQuery;
+import org.dromara.common.mybatis.core.page.TableDataInfo;
+import org.dromara.system.domain.GpsData;
+
+import java.util.Collection;
+import java.util.List;
+
+/**
+ * GpsService接口
+ *
+ * @author Lion Li
+ * @date 2024-02-22
+ */
+public interface ITblGpsDataService {
+
+    /**
+     * 查询丢失货物
+     */
+    GpsData queryById(Long id);
+
+    /**
+     * 查询丢失货物列表
+     */
+    TableDataInfo<GpsData> queryPageList(GpsData bo, PageQuery pageQuery);
+
+    /**
+     * 查询丢失货物列表
+     */
+    List<GpsData> queryList(GpsData bo);
+
+    /**
+     * 新增丢失货物
+     */
+    Boolean insertByBo(GpsData bo);
+
+    Boolean insertData(GpsData bo);
+
+    /**
+     * 修改丢失货物
+     */
+    Boolean updateByBo(GpsData bo);
+
+    /**
+     * 校验并批量删除丢失货物信息
+     */
+    Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
+}

+ 13 - 0
ruoyi-modules/ruoyi-khy/src/main/java/org/dromara/system/service/impl/TblCarInfoServiceImpl.java

@@ -8,6 +8,8 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import lombok.RequiredArgsConstructor;
 import lombok.RequiredArgsConstructor;
+import org.dromara.util.CamelDataUtil;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.stereotype.Service;
 import org.dromara.system.domain.bo.TblCarInfoBo;
 import org.dromara.system.domain.bo.TblCarInfoBo;
 import org.dromara.system.domain.vo.TblCarInfoVo;
 import org.dromara.system.domain.vo.TblCarInfoVo;
@@ -15,6 +17,7 @@ import org.dromara.system.domain.TblCarInfo;
 import org.dromara.system.mapper.TblCarInfoMapper;
 import org.dromara.system.mapper.TblCarInfoMapper;
 import org.dromara.system.service.ITblCarInfoService;
 import org.dromara.system.service.ITblCarInfoService;
 
 
+import java.util.HashMap;
 import java.util.List;
 import java.util.List;
 import java.util.Map;
 import java.util.Map;
 import java.util.Collection;
 import java.util.Collection;
@@ -31,11 +34,21 @@ public class TblCarInfoServiceImpl implements ITblCarInfoService {
 
 
     private final TblCarInfoMapper baseMapper;
     private final TblCarInfoMapper baseMapper;
 
 
+
+    @Autowired
+    public CamelDataUtil camelDataUtil;
+
     /**
     /**
      * 查询车辆信息
      * 查询车辆信息
      */
      */
     @Override
     @Override
     public TblCarInfoVo queryById(Long id){
     public TblCarInfoVo queryById(Long id){
+
+        Map<String,String> data = new HashMap<>();
+        data.put("devtype","led");
+        data.put("devcode","0001");
+        camelDataUtil.SendData("direct:sendMessage", "{\"val\":\"hello\"}", "mqheader", data);
+
         return baseMapper.selectVoById(id);
         return baseMapper.selectVoById(id);
     }
     }
 
 

+ 114 - 0
ruoyi-modules/ruoyi-khy/src/main/java/org/dromara/system/service/impl/TblGpsDataServiceImpl.java

@@ -0,0 +1,114 @@
+package org.dromara.system.service.impl;
+
+import com.baomidou.dynamic.datasource.annotation.DS;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import lombok.RequiredArgsConstructor;
+import org.dromara.common.core.utils.MapstructUtils;
+import org.dromara.common.core.utils.StringUtils;
+import org.dromara.common.mybatis.core.page.PageQuery;
+import org.dromara.common.mybatis.core.page.TableDataInfo;
+import org.dromara.system.domain.GpsData;
+import org.dromara.system.mapper.TblGpsDataMapper;
+import org.dromara.system.service.ITblGpsDataService;
+import org.springframework.stereotype.Service;
+
+import java.util.Collection;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * 丢失货物Service业务层处理
+ *
+ * @author Lion Li
+ * @date 2024-02-22
+ */
+@RequiredArgsConstructor
+@DS("slave")
+@Service
+public class TblGpsDataServiceImpl implements ITblGpsDataService {
+
+    private final TblGpsDataMapper baseMapper;
+
+    /**
+     * 查询丢失货物
+     */
+    @Override
+    public GpsData queryById(Long id){
+        return baseMapper.selectVoById(id);
+    }
+
+    /**
+     * 查询丢失货物列表
+     */
+    @Override
+    public TableDataInfo<GpsData> queryPageList(GpsData bo, PageQuery pageQuery) {
+        LambdaQueryWrapper<GpsData> lqw = buildQueryWrapper(bo);
+        Page<GpsData> result = baseMapper.selectVoPage(pageQuery.build(), lqw);
+        return TableDataInfo.build(result);
+    }
+
+    /**
+     * 查询丢失货物列表
+     */
+    @Override
+    public List<GpsData> queryList(GpsData bo) {
+        LambdaQueryWrapper<GpsData> lqw = buildQueryWrapper(bo);
+        return baseMapper.selectVoList(lqw);
+    }
+
+    private LambdaQueryWrapper<GpsData> buildQueryWrapper(GpsData bo) {
+        LambdaQueryWrapper<GpsData> lqw = Wrappers.lambdaQuery();
+
+        return lqw;
+    }
+
+    /**
+     * 新增丢失货物
+     */
+    @Override
+    public Boolean insertByBo(GpsData bo) {
+//        GpsData add = MapstructUtils.convert(bo, GpsData.class);
+        validEntityBeforeSave(bo);
+        boolean flag = baseMapper.insert(bo) > 0;
+        if (flag) {
+
+        }
+        return flag;
+    }
+
+    @Override
+    public Boolean insertData(GpsData bo) {
+        baseMapper.insertdata(bo);
+        return true;
+    }
+
+    /**
+     * 修改丢失货物
+     */
+    @Override
+    public Boolean updateByBo(GpsData bo) {
+        GpsData update = MapstructUtils.convert(bo, GpsData.class);
+        validEntityBeforeSave(update);
+        return baseMapper.updateById(update) > 0;
+    }
+
+    /**
+     * 保存前的数据校验
+     */
+    private void validEntityBeforeSave(GpsData entity){
+        //TODO 做一些数据校验,如唯一约束
+    }
+
+    /**
+     * 批量删除丢失货物
+     */
+    @Override
+    public Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid) {
+        if(isValid){
+            //TODO 做一些业务上的校验,判断是否需要校验
+        }
+        return baseMapper.deleteBatchIds(ids) > 0;
+    }
+}

+ 51 - 0
ruoyi-modules/ruoyi-khy/src/main/java/org/dromara/util/CamelDataUtil.java

@@ -0,0 +1,51 @@
+package org.dromara.util;
+
+import cn.hutool.json.JSON;
+import cn.hutool.json.JSONUtil;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.camel.CamelContext;
+import org.apache.camel.Exchange;
+import org.apache.camel.ProducerTemplate;
+import org.dromara.system.domain.GpsData;
+import org.dromara.system.service.ITblGpsDataService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+import java.io.UnsupportedEncodingException;
+import java.util.Map;
+
+@Slf4j
+@Component
+public class CamelDataUtil {
+    @Autowired
+    private CamelContext camelContext;
+
+    @Autowired
+    ITblGpsDataService gpsDataService;
+
+    public void SendData(String endrouter,Object payload,String headerkey,Object headervalue){
+        ProducerTemplate template = camelContext.createProducerTemplate();
+        template.sendBodyAndHeader(endrouter,payload,headerkey,headervalue);
+    }
+
+    public void processdata(String body, Exchange exchange) throws UnsupportedEncodingException {
+        Map<String,String> o = exchange.getMessage().getHeader("mqheader", Map.class);
+        exchange.getMessage().setHeader("CamelPahoOverrideTopic","/dev/"+o.get("devtype")+"/"+o.get("devcode"));
+        exchange.getMessage().setBody(body.getBytes("gb2312"));
+    }
+    public void ReciveData(String body, Exchange exchange){
+        if(exchange.getMessage().getHeaders().get("CamelMqttTopic").toString().contains("gps")){
+            String devicecode = exchange.getMessage().getHeaders().get("CamelMqttTopic").toString().split("/")[3];
+            GpsData gpsData = new GpsData();
+            gpsData.setDevicecode(devicecode);
+            gpsData.setLat(JSONUtil.parseObj(body).getDouble("LAT"));
+            gpsData.setLng(JSONUtil.parseObj(body).getDouble("LNG"));
+            gpsData.setAlt(JSONUtil.parseObj(body).getDouble("ALT"));
+            gpsData.setSpeed(JSONUtil.parseObj(body).getDouble("SPD"));
+            log.info("body:{}",JSONUtil.toJsonStr(gpsData));
+            gpsDataService.insertData(gpsData);
+        }
+
+        log.info("body:{}",body);
+    }
+}

+ 12 - 0
ruoyi-modules/ruoyi-khy/src/main/resources/mapper/system/TblGpsDataMapper.xml

@@ -0,0 +1,12 @@
+<?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="org.dromara.system.mapper.TblGpsDataMapper">
+
+
+    <insert id="insertdata" parameterType="org.dromara.system.domain.GpsData">
+        INSERT INTO "${devicecode}" USING gps_data TAGS (#{devicecode}, 1) VALUES (NOW, #{speed}, #{lat}, #{lng}, #{alt});
+    </insert>
+
+</mapper>