省厅位置汇聚数据上传到讯飞gauss库

stwzhj
luyya 2025-12-01 10:38:58 +08:00
parent 61b89e502b
commit e5d32cce80
29 changed files with 151 additions and 136 deletions

View File

@ -15,8 +15,12 @@ public interface RemoteDeviceService {
List<RemoteDeviceVo> deviceList(RemoteDeviceBo bo);
List<RemoteDeviceVo> deviceListPage(RemoteDeviceBo bo);
R saveDeviceToSt(String infoSource, List<RemoteDeviceBo> list);
RemoteDeviceVo getDeviceInfo(String deviceCode,String deviceType);
Long deviceCount();
}

View File

@ -104,4 +104,8 @@ public class RemoteDeviceVo implements Serializable {
private String xgrxm;
private String xgrsfzh;
private String gbbm;
private String tdbm;
}

View File

@ -18,6 +18,7 @@
<module>stwzhj-baseToSt</module>
<module>stwzhj-data2StKafka</module>
<module>stwzhj-extract</module>
<module>stwzhj-data2gas</module>
</modules>
<artifactId>stwzhj-modules</artifactId>

View File

@ -9,14 +9,23 @@
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>stwzhj-dataToGas</artifactId>
<artifactId>stwzhj-data2gas</artifactId>
<description>
stwzhj-dataToGas 数据上传到高斯库
stwzhj-data2gas 数据上传到高斯库
</description>
<dependencies>
<dependency>
<groupId>org.dromara</groupId>
<artifactId>stwzhj-common-nacos</artifactId>
</dependency>
<dependency>
<groupId>org.dromara</groupId>
<artifactId>stwzhj-common-sentinel</artifactId>
</dependency>
<!-- RuoYi Common Log -->
<dependency>
@ -42,6 +51,12 @@
<dependency>
<groupId>org.dromara</groupId>
<artifactId>stwzhj-common-mybatis</artifactId>
<exclusions>
<exclusion>
<groupId>org.postgresql</groupId>
<artifactId>postgresql</artifactId>
</exclusion>
</exclusions>
</dependency>
@ -75,6 +90,13 @@
<artifactId>stwzhj-common-encrypt</artifactId>
</dependency>
<!-- 当前项目特有的华为 GaussDB 驱动 -->
<dependency>
<groupId>com.huaweicloud.dws</groupId>
<artifactId>huaweicloud-dws-jdbc</artifactId>
<version>8.3.0</version>
</dependency>
</dependencies>
<build>

View File

@ -1,4 +1,4 @@
package org.dromara.data2gs;
package org.dromara.data2gas;
import org.apache.dubbo.config.spring.context.annotation.EnableDubbo;
import org.springframework.boot.SpringApplication;

View File

@ -1,4 +1,4 @@
package org.dromara.data2gs.domain;
package org.dromara.data2gas.domain;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;

View File

@ -1,4 +1,4 @@
package org.dromara.data2gs.domain;
package org.dromara.data2gas.domain;
import com.baomidou.mybatisplus.annotation.IdType;

View File

@ -1,4 +1,4 @@
package org.dromara.data2gs.domain;
package org.dromara.data2gas.domain;
import com.baomidou.mybatisplus.annotation.IdType;

View File

@ -1,4 +1,4 @@
package org.dromara.data2gs.domain;
package org.dromara.data2gas.domain;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;

View File

@ -1,11 +1,11 @@
package org.dromara.data2gs.mapper;
package org.dromara.data2gas.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Insert;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.dromara.data2gs.domain.JysbSbxx001;
import org.dromara.data2gas.domain.JysbSbxx001;
import java.util.List;
@ -16,7 +16,6 @@ import java.util.List;
* @author luuy
* @date 2024-12-07
*/
@Mapper
public interface JysbSbxx001Mapper extends BaseMapper<JysbSbxx001> {
@Insert("<script> " +

View File

@ -1,10 +1,10 @@
package org.dromara.data2gs.mapper;
package org.dromara.data2gas.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Insert;
import org.apache.ibatis.annotations.Param;
import org.dromara.data2gs.domain.JysbSbxx002;
import org.dromara.data2gas.domain.JysbSbxx002;
import java.util.List;

View File

@ -1,10 +1,10 @@
package org.dromara.data2gs.mapper;
package org.dromara.data2gas.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Delete;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;
import org.dromara.data2gs.domain.NewDevice;
import org.dromara.data2gas.domain.NewDevice;
import java.util.List;

View File

@ -1,22 +1,27 @@
package org.dromara.data2gs.schedule;
package org.dromara.data2gas.schedule;
import cn.hutool.core.date.DateUtil;
import cn.hutool.json.JSONObject;
import cn.hutool.json.JSONUtil;
import lombok.extern.slf4j.Slf4j;
import org.apache.dubbo.config.annotation.DubboReference;
import org.dromara.common.core.domain.R;
import org.dromara.common.core.utils.RedisConstants;
import org.dromara.common.mybatis.core.page.TableDataInfo;
import org.dromara.common.redis.utils.RedisUtils;
import org.dromara.data2gs.domain.JysbSbxx001;
import org.dromara.data2gs.domain.NewDevice;
import org.dromara.data2gs.service.IJysbSbxx001Service;
import org.dromara.data2gs.service.NewDeviceService;
import org.dromara.data2gas.domain.JysbSbxx001;
import org.dromara.data2gas.domain.NewDevice;
import org.dromara.data2gas.service.IJysbSbxx001Service;
import org.dromara.data2gas.service.NewDeviceService;
import org.dromara.system.api.RemoteDeviceService;
import org.dromara.system.api.domain.bo.RemoteDeviceBo;
import org.dromara.system.api.domain.vo.RemoteDeviceVo;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.util.CollectionUtils;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource;
import java.math.BigDecimal;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
@ -40,29 +45,29 @@ public class BaseData2GasSchedule {
IJysbSbxx001Service jysbSbxx001Service;
@Autowired
NewDeviceService newDeviceService;
@DubboReference
private RemoteDeviceService deviceService;
@Scheduled( cron = "0 0 */1 * * ?") //每隔一小时执行一次
// @Scheduled( cron = "0 */10 * * * ?")
public void deviceTrans(){
Date date = new Date();
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd");
String format = simpleDateFormat.format(date);
int count = 0;
Long total = newDeviceService.count();
Long total = deviceService.deviceCount();
BigDecimal totalBig = new BigDecimal(total);
BigDecimal sizeBig = new BigDecimal(500);
int ceilNum = (int)Math.ceil(totalBig.divide(sizeBig).doubleValue());
for (int j = 0; j < ceilNum; j++) {
List<NewDevice> list = newDeviceService.querylist(j,500);
RemoteDeviceBo deviceBo = new RemoteDeviceBo();
deviceBo.setPageNum(j);
deviceBo.setPageSize(500);
List<RemoteDeviceVo> list = deviceService.deviceListPage(deviceBo);
if(CollectionUtils.isEmpty(list)){
log.info("没有可更新的设备");
return;
}
List<JysbSbxx001> jylist = new ArrayList<>();
for (NewDevice device : list) {
for (RemoteDeviceVo device : list) {
JysbSbxx001 sbxx001 = new JysbSbxx001();
sbxx001.setSbbh(strSub(device.getDeviceCode(),20) );
if (null == device.getGbbm() || "".equals(device.getGbbm())){
@ -100,7 +105,7 @@ public class BaseData2GasSchedule {
}else {
sbxx001.setJysfz("341125198507120019"); //没有使用韦科身份证代替
}
String onlineUsersKey = RedisConstants.ONLINE_USERS + format + ":" +
String onlineUsersKey = RedisConstants.ONLINE_USERS +
device.getZzjgdm() + ":" + device.getDeviceType() +
":" + device.getDeviceCode();
Object obj = RedisUtils.getBucket(onlineUsersKey);
@ -155,18 +160,21 @@ public class BaseData2GasSchedule {
SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmss");
String format = simpleDateFormat.format(date);
int count = 0;
Long total = newDeviceService.count();
Long total = deviceService.deviceCount();
BigDecimal totalBig = new BigDecimal(total);
BigDecimal sizeBig = new BigDecimal(500);
int ceilNum = (int)Math.ceil(totalBig.divide(sizeBig).doubleValue());
for (int j = 0; j < ceilNum; j++) {
List<NewDevice> list = newDeviceService.querylist(j,500);
RemoteDeviceBo deviceBo = new RemoteDeviceBo();
deviceBo.setPageNum(j);
deviceBo.setPageSize(500);
List<RemoteDeviceVo> list = deviceService.deviceListPage(deviceBo);
if(CollectionUtils.isEmpty(list)){
log.info("没有可更新的设备");
return;
}
List<JysbSbxx001> jylist = new ArrayList<>();
for (NewDevice device : list) {
for (RemoteDeviceVo device : list) {
JysbSbxx001 sbxx001 = new JysbSbxx001();
sbxx001.setSbbh(strSub(device.getDeviceCode(),20) );
if (null == device.getGbbm() || "".equals(device.getGbbm())){

View File

@ -1,16 +1,15 @@
package org.dromara.data2gs.schedule;
package org.dromara.data2gas.schedule;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.date.DateUtil;
import cn.hutool.json.JSONObject;
import cn.hutool.json.JSONUtil;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.dromara.common.redis.utils.RedisUtils;
import org.dromara.data2gs.domain.EsGpsInfo;
import org.dromara.data2gs.domain.JysbSbxx002;
import org.dromara.data2gs.service.IJysbSbxx002Service;
import org.dromara.data2gas.domain.EsGpsInfo;
import org.dromara.data2gas.domain.JysbSbxx002;
import org.dromara.data2gas.service.IJysbSbxx002Service;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
@ -18,7 +17,6 @@ import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
@ -37,7 +35,7 @@ public class BasePoint2GasSchedule {
@Scheduled( cron = "0 */15 * * * ?")
@Scheduled( cron = "0 */20 * * * ?")
public void deviceStatus(){
String keys = "online_users:"+"*";
// String keys = "online_users:*";

View File

@ -1,8 +1,8 @@
package org.dromara.data2gs.service;
package org.dromara.data2gas.service;
import com.baomidou.mybatisplus.extension.service.IService;
import org.dromara.data2gs.domain.JysbSbxx001;
import org.dromara.data2gas.domain.JysbSbxx001;
import java.util.List;

View File

@ -1,8 +1,8 @@
package org.dromara.data2gs.service;
package org.dromara.data2gas.service;
import com.baomidou.mybatisplus.extension.service.IService;
import org.dromara.data2gs.domain.JysbSbxx002;
import org.dromara.data2gas.domain.JysbSbxx002;
import java.util.List;

View File

@ -1,7 +1,7 @@
package org.dromara.data2gs.service;
package org.dromara.data2gas.service;
import com.baomidou.mybatisplus.extension.service.IService;
import org.dromara.data2gs.domain.NewDevice;
import org.dromara.data2gas.domain.NewDevice;
import java.util.List;

View File

@ -1,4 +1,4 @@
package org.dromara.data2gs.service.impl;
package org.dromara.data2gas.service.impl;
import com.baomidou.dynamic.datasource.annotation.DS;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
@ -6,9 +6,9 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.apache.ibatis.session.ExecutorType;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.dromara.data2gs.domain.JysbSbxx001;
import org.dromara.data2gs.mapper.JysbSbxx001Mapper;
import org.dromara.data2gs.service.IJysbSbxx001Service;
import org.dromara.data2gas.domain.JysbSbxx001;
import org.dromara.data2gas.mapper.JysbSbxx001Mapper;
import org.dromara.data2gas.service.IJysbSbxx001Service;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@ -16,7 +16,6 @@ import java.util.Collection;
import java.util.List;
@Service
@DS("slave")
public class JysbSbxx001ServiceImpl extends ServiceImpl<JysbSbxx001Mapper, JysbSbxx001> implements IJysbSbxx001Service {
@Autowired

View File

@ -1,13 +1,13 @@
package org.dromara.data2gs.service.impl;
package org.dromara.data2gas.service.impl;
import com.baomidou.dynamic.datasource.annotation.DS;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.apache.ibatis.session.ExecutorType;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.dromara.data2gs.domain.JysbSbxx002;
import org.dromara.data2gs.mapper.JysbSbxx002Mapper;
import org.dromara.data2gs.service.IJysbSbxx002Service;
import org.dromara.data2gas.domain.JysbSbxx002;
import org.dromara.data2gas.mapper.JysbSbxx002Mapper;
import org.dromara.data2gas.service.IJysbSbxx002Service;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
@ -17,7 +17,6 @@ import java.util.Collection;
import java.util.List;
@Service
@DS("slave")
public class JysbSbxx002ServiceImpl extends ServiceImpl<JysbSbxx002Mapper, JysbSbxx002> implements IJysbSbxx002Service {
private Logger logger = LoggerFactory.getLogger(JysbSbxx002ServiceImpl.class);

View File

@ -1,14 +1,11 @@
package org.dromara.data2gs.service.impl;
package org.dromara.data2gas.service.impl;
import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.dromara.data2gs.domain.NewDevice;
import org.dromara.data2gs.mapper.NewDeviceMapper;
import org.dromara.data2gs.service.NewDeviceService;
import org.dromara.data2gas.domain.NewDevice;
import org.dromara.data2gas.mapper.NewDeviceMapper;
import org.dromara.data2gas.service.NewDeviceService;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;

View File

@ -0,0 +1,34 @@
# Tomcat
server:
port: 9207
# Spring
spring:
application:
# 应用名称
name: stwzhj-data2gas
profiles:
# 环境配置
active: @profiles.active@
--- # nacos 配置
spring:
cloud:
nacos:
# nacos 服务地址
server-addr: @nacos.server@
username: @nacos.username@
password: @nacos.password@
discovery:
# 注册组
group: @nacos.discovery.group@
namespace: ${spring.profiles.active}
config:
# 配置组
group: @nacos.config.group@
namespace: ${spring.profiles.active}
config:
import:
- optional:nacos:application-common.yml
- optional:nacos:datasource.yml
- optional:nacos:${spring.application.name}.yml

View File

@ -0,0 +1,6 @@
<?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.data2gas.mapper.JysbSbxx001Mapper">
</mapper>

View File

@ -1,6 +1,6 @@
<?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.data2gs.mapper.JysbSbxx002Mapper">
<mapper namespace="org.dromara.data2gas.mapper.JysbSbxx002Mapper">

View File

@ -1,52 +0,0 @@
# Tomcat
server:
port: 9201
# Spring
spring:
datasource:
dynamic:
# 设置默认的数据源或者数据源组,默认值即为 master
primary: master
datasource:
# 主库数据源
master:
type: ${spring.datasource.type}
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://localhost:3306/rs_doris_db?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8&rewriteBatchedStatements=true&allowPublicKeyRetrieval=true
username: root
password: ycgis
slave:
type: ${spring.datasource.type}
driver-class-name: org.postgresql.Driver
url: jdbc:postgresql://53.1.213.131:25308/st_zazdr?currentSchema=public&useUnicode=true&characterEncoding=utf8&useSSL=true&autoReconnect=true&reWriteBatchedInserts=true
username: ahrs
password: Ycgis!2509
application:
# 应用名称
name: stwzhj-system
profiles:
# 环境配置
active: @profiles.active@
--- # nacos 配置
spring:
cloud:
nacos:
# nacos 服务地址
server-addr: @nacos.server@
username: @nacos.username@
password: @nacos.password@
discovery:
# 注册组
group: @nacos.discovery.group@
namespace: ${spring.profiles.active}
config:
# 配置组
group: @nacos.config.group@
namespace: ${spring.profiles.active}
config:
import:
- optional:nacos:application-common.yml
- optional:nacos:datasource.yml
- optional:nacos:${spring.application.name}.yml

View File

@ -1,21 +0,0 @@
<?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.data2gs.mapper.JysbSbxx001Mapper">
<insert id="insertManyJbxx">
insert into jysb_sbxx_001 (sbbh,sbpp,sbxh,zblx,ssgajgjgdm,cphm,jybh,jyxm,hh,lxdh,sbsyzt,bz,sjczlxdm,sjly,lrsj,lrdwdm,lrdwmc,lrrxm,lrrsfzh,
xgsj,xgdwdm,xgdwmc,xgrxm,xgrsfzh,xxzjbh,gbbm,tdbm)
values
<foreach collection="list" item="i" separator=",">
(
#{i.sbbh},#{i.sbpp},#{i.sbxh},#{i.zblx},#{i.sbxh},#{i.ssgajgjgdm},#{i.jybh},#{i.jyxm},#{i.hh},#{i.sbxh},#{i.lxdh},#{i.sbsyzt},#{i.sjczlxdm},#{i.sjly}
,#{i.lrsj},#{i.lrdwdm},#{i.lrdwmc},#{i.lrrxm},#{i.lrrsfzh},#{i.xgsj},#{i.xgdwdm},#{i.xgdwmc},#{i.xgrxm},#{i.xgrsfzh},#{i.xxzjbh},#{i.gbbm},#{i.tdbm}
)
</foreach>
ON conflict(sbbh,zblx,sjly) do update set
(ssgajgjgdm,cphm,jybh,jyxm,sbsyzt,sjczlxdm,xgsj) =
(EXCLUDED.ssgajgjgdm,EXCLUDED.cphm,EXCLUDED.jybh,EXCLUDED.jyxm,EXCLUDED.sbsyzt,'2',EXCLUDED.xgsj)
</insert>
</mapper>

View File

@ -64,6 +64,16 @@ public class RemoteDeviceImpl implements RemoteDeviceService {
return BeanUtil.copyToList(voList,RemoteDeviceVo.class);
}
@Override
public List<RemoteDeviceVo> deviceListPage(RemoteDeviceBo bo) {
PageQuery pageQuery = new PageQuery();
pageQuery.setPageNum(bo.getPageNum());
pageQuery.setPageSize(bo.getPageSize());
TableDataInfo<TDeviceVo> result = deviceService.queryPageList(BeanUtil.copyProperties(bo, TDeviceBo.class),pageQuery);
List<TDeviceVo> deviceVos = result.getRows();
return BeanUtil.copyToList(deviceVos,RemoteDeviceVo.class);
}
@Override
public R saveDeviceToSt(String infoSource, List<RemoteDeviceBo> list) {
return deviceService.saveDeviceToSt(infoSource,BeanUtil.copyToList(list,TDevice.class));
@ -76,4 +86,9 @@ public class RemoteDeviceImpl implements RemoteDeviceService {
bo.setDeviceType(deviceType);
return BeanUtil.toBean(deviceService.queryOne(bo), RemoteDeviceVo.class) ;
}
@Override
public Long deviceCount() {
return deviceService.countByCondition(new TDeviceBo());
}
}

View File

@ -64,6 +64,7 @@ public class TDeviceServiceImpl implements ITDeviceService {
@Override
public TableDataInfo<TDeviceVo> queryPageList(TDeviceBo bo, PageQuery pageQuery) {
LambdaQueryWrapper<TDevice> lqw = buildQueryWrapper(bo);
lqw.orderByDesc(TDevice::getUpdateTime);
Page<TDeviceVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw);
List<TDeviceVo> list = result.getRecords();
for (TDeviceVo vo : list) {
@ -130,6 +131,7 @@ public class TDeviceServiceImpl implements ITDeviceService {
lqw.eq(StringUtils.isNotBlank(bo.getRemark2()), TDevice::getRemark2, bo.getRemark2());
lqw.between(bo.getBeginTime() != null && bo.getEndTime() != null,
TDevice::getUpdateTime, bo.getBeginTime(), bo.getEndTime());
return lqw;
}