Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
B
bme-access-guangdong-upload
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
1
Merge Requests
1
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
李洪明
bme-access-guangdong-upload
Commits
aebf4937
Commit
aebf4937
authored
Aug 27, 2025
by
李洪明
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
init
parent
9699b737
Pipeline
#1299
failed with stages
Changes
18
Pipelines
2
Hide whitespace changes
Inline
Side-by-side
Showing
18 changed files
with
727 additions
and
0 deletions
+727
-0
.gitignore
.gitignore
+38
-0
pom.xml
pom.xml
+177
-0
Application.java
src/main/java/com/bme/access/guangdong/Application.java
+21
-0
HttpUtils.java
src/main/java/com/bme/access/guangdong/common/HttpUtils.java
+117
-0
DataUploadTimeMapper.java
...va/com/bme/access/guangdong/dao/DataUploadTimeMapper.java
+14
-0
UploadDataTask.java
...ain/java/com/bme/access/guangdong/job/UploadDataTask.java
+12
-0
BarrierGateInfo.java
.../java/com/bme/access/guangdong/model/BarrierGateInfo.java
+14
-0
EnterpriseInfo.java
...n/java/com/bme/access/guangdong/model/EnterpriseInfo.java
+25
-0
InFactoryVehicleInfo.java
.../com/bme/access/guangdong/model/InFactoryVehicleInfo.java
+21
-0
InOutInfo.java
src/main/java/com/bme/access/guangdong/model/InOutInfo.java
+31
-0
NoRoadVehicleInfo.java
...ava/com/bme/access/guangdong/model/NoRoadVehicleInfo.java
+24
-0
VehicleInfo.java
...main/java/com/bme/access/guangdong/model/VehicleInfo.java
+22
-0
InAndOutDateService.java
...com/bme/access/guangdong/service/InAndOutDateService.java
+8
-0
TestController.java
...ain/java/com/bme/access/guangdong/web/TestController.java
+129
-0
application-zhanhong.yml
src/main/resources/application-zhanhong.yml
+10
-0
application.yml
src/main/resources/application.yml
+15
-0
logback.xml
src/main/resources/logback.xml
+32
-0
DataUploadTimeMapper.xml
src/main/resources/mapper/DataUploadTimeMapper.xml
+17
-0
No files found.
.gitignore
0 → 100644
View file @
aebf4937
target/
!.mvn/wrapper/maven-wrapper.jar
!**/src/main/**/target/
!**/src/test/**/target/
### IntelliJ IDEA ###
.idea/modules.xml
.idea/jarRepositories.xml
.idea/compiler.xml
.idea/libraries/
*.iws
*.iml
*.ipr
### Eclipse ###
.apt_generated
.classpath
.factorypath
.project
.settings
.springBeans
.sts4-cache
### NetBeans ###
/nbproject/private/
/nbbuild/
/dist/
/nbdist/
/.nb-gradle/
build/
!**/src/main/**/build/
!**/src/test/**/build/
### VS Code ###
.vscode/
### Mac OS ###
.DS_Store
\ No newline at end of file
pom.xml
0 → 100644
View file @
aebf4937
<?xml version="1.0" encoding="UTF-8"?>
<project
xmlns=
"http://maven.apache.org/POM/4.0.0"
xmlns:xsi=
"http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation=
"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"
>
<modelVersion>
4.0.0
</modelVersion>
<parent>
<groupId>
org.springframework.boot
</groupId>
<artifactId>
spring-boot-starter-parent
</artifactId>
<version>
2.4.5
</version>
<relativePath/>
</parent>
<groupId>
com.bme.access.upload
</groupId>
<artifactId>
bme-access-guangdong-upload
</artifactId>
<version>
1.0.0-release
</version>
<name>
bme-access-guangdong-upload
</name>
<properties>
<java.version>
1.8
</java.version>
</properties>
<dependencies>
<dependency>
<groupId>
org.springframework.boot
</groupId>
<artifactId>
spring-boot-starter-web
</artifactId>
</dependency>
<dependency>
<groupId>
org.springframework.retry
</groupId>
<artifactId>
spring-retry
</artifactId>
</dependency>
<dependency>
<groupId>
org.aspectj
</groupId>
<artifactId>
aspectjweaver
</artifactId>
</dependency>
<dependency>
<groupId>
org.mybatis.spring.boot
</groupId>
<artifactId>
mybatis-spring-boot-starter
</artifactId>
<version>
2.1.3
</version>
</dependency>
<dependency>
<groupId>
com.alibaba
</groupId>
<artifactId>
druid
</artifactId>
<version>
1.0.27
</version>
</dependency>
<dependency>
<groupId>
com.alibaba
</groupId>
<artifactId>
druid-spring-boot-starter
</artifactId>
<version>
1.1.9
</version>
</dependency>
<dependency>
<groupId>
com.microsoft.sqlserver
</groupId>
<artifactId>
sqljdbc4
</artifactId>
<version>
4.0
</version>
</dependency>
<dependency>
<groupId>
org.springframework.boot
</groupId>
<artifactId>
spring-boot-devtools
</artifactId>
<optional>
true
</optional>
<!-- optional=true,依赖不会传递,该项目依赖devtools;之后依赖myboot项目的项目如果想要使用devtools,需要重新引入 -->
<scope>
runtime
</scope>
</dependency>
<dependency>
<groupId>
org.springframework.boot
</groupId>
<artifactId>
spring-boot-configuration-processor
</artifactId>
<optional>
true
</optional>
</dependency>
<!-- logback -->
<dependency>
<groupId>
org.springframework.boot
</groupId>
<artifactId>
spring-boot-starter-logging
</artifactId>
</dependency>
<!--swagger2-->
<dependency>
<groupId>
io.springfox
</groupId>
<artifactId>
springfox-swagger2
</artifactId>
<version>
2.6.1
</version>
</dependency>
<dependency>
<groupId>
io.springfox
</groupId>
<artifactId>
springfox-swagger-ui
</artifactId>
<version>
2.6.1
</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.projectlombok/lombok -->
<dependency>
<groupId>
org.projectlombok
</groupId>
<artifactId>
lombok
</artifactId>
<scope>
provided
</scope>
</dependency>
<dependency>
<groupId>
commons-lang
</groupId>
<artifactId>
commons-lang
</artifactId>
<version>
2.6
</version>
</dependency>
<dependency>
<groupId>
org.apache.httpcomponents
</groupId>
<artifactId>
httpclient
</artifactId>
</dependency>
<dependency>
<groupId>
org.apache.httpcomponents
</groupId>
<artifactId>
httpcore
</artifactId>
</dependency>
<dependency>
<groupId>
com.alibaba
</groupId>
<artifactId>
fastjson
</artifactId>
<version>
1.2.75
</version>
</dependency>
<dependency>
<groupId>
net.coobird
</groupId>
<artifactId>
thumbnailator
</artifactId>
<version>
0.4.15
</version>
</dependency>
<dependency>
<groupId>
com.alibaba
</groupId>
<artifactId>
easyexcel
</artifactId>
<version>
2.1.4
</version>
</dependency>
<dependency>
<groupId>
org.springframework.boot
</groupId>
<artifactId>
spring-boot-starter-test
</artifactId>
<scope>
test
</scope>
<exclusions>
<exclusion>
<groupId>
org.junit.vintage
</groupId>
<artifactId>
junit-vintage-engine
</artifactId>
</exclusion>
</exclusions>
</dependency>
<!-- https://mvnrepository.com/artifact/cn.hutool/hutool-all -->
<dependency>
<groupId>
cn.hutool
</groupId>
<artifactId>
hutool-all
</artifactId>
<version>
5.8.28
</version>
</dependency>
<dependency>
<groupId>
org.bouncycastle
</groupId>
<artifactId>
bcprov-jdk15on
</artifactId>
<version>
1.68
</version>
</dependency>
<dependency>
<groupId>
com.aliyun
</groupId>
<artifactId>
alibaba-dingtalk-service-sdk
</artifactId>
<version>
2.0.0
</version>
<classifier>
javadoc
</classifier>
</dependency>
<dependency>
<groupId>
com.aliyun
</groupId>
<artifactId>
alibaba-dingtalk-service-sdk
</artifactId>
<version>
2.0.0
</version>
<classifier>
sources
</classifier>
</dependency>
<dependency>
<groupId>
com.aliyun
</groupId>
<artifactId>
alibaba-dingtalk-service-sdk
</artifactId>
<version>
2.0.0
</version>
</dependency>
<dependency>
<groupId>
junit
</groupId>
<artifactId>
junit
</artifactId>
<scope>
test
</scope>
</dependency>
</dependencies>
<build>
<finalName>
${project.artifactId}
</finalName>
<plugins>
<plugin>
<groupId>
org.springframework.boot
</groupId>
<artifactId>
spring-boot-maven-plugin
</artifactId>
</plugin>
</plugins>
</build>
</project>
\ No newline at end of file
src/main/java/com/bme/access/guangdong/Application.java
0 → 100644
View file @
aebf4937
package
com
.
bme
.
access
.
guangdong
;
import
com.alibaba.druid.pool.DruidDataSource
;
import
org.mybatis.spring.annotation.MapperScan
;
import
org.springframework.boot.SpringApplication
;
import
org.springframework.boot.autoconfigure.SpringBootApplication
;
import
org.springframework.boot.context.properties.ConfigurationProperties
;
import
org.springframework.context.annotation.Bean
;
@SpringBootApplication
@MapperScan
(
"com.bme.access.guangdong.dao"
)
public
class
Application
{
@ConfigurationProperties
(
prefix
=
"spring.datasource.original"
)
@Bean
public
DruidDataSource
dataSource
()
{
return
new
DruidDataSource
();
}
public
static
void
main
(
String
[]
args
)
{
SpringApplication
.
run
(
Application
.
class
,
args
);
}
}
src/main/java/com/bme/access/guangdong/common/HttpUtils.java
0 → 100644
View file @
aebf4937
package
com
.
bme
.
access
.
guangdong
.
common
;
import
com.alibaba.fastjson.JSONObject
;
import
com.alibaba.fastjson.serializer.SerializerFeature
;
import
org.springframework.http.HttpEntity
;
import
org.springframework.http.HttpHeaders
;
import
org.springframework.http.HttpMethod
;
import
org.springframework.http.ResponseEntity
;
import
org.springframework.http.converter.StringHttpMessageConverter
;
import
org.springframework.web.client.RestTemplate
;
import
java.nio.charset.StandardCharsets
;
import
java.security.MessageDigest
;
import
java.security.NoSuchAlgorithmException
;
import
java.util.Base64
;
public
class
HttpUtils
{
private
static
final
String
USERACT
=
""
;
private
static
final
String
USERPWD
=
""
;
private
static
final
String
ACTKEY
=
""
;
public
static
String
uploadData
(
String
method
,
String
version
,
String
cityId
,
String
jsonStr
)
{
String
businessContent
=
base64Encode
(
jsonStr
);
String
str
=
"{"
+
"\"VERSION\":\""
+
version
+
"\","
+
"\"CITYID\":\""
+
cityId
+
"\","
+
"\"TYPE\":\""
+
method
+
"\","
+
"\"BUSINESSCONTENT\":\""
+
businessContent
+
"\""
+
"}"
;
JSONObject
data
=
JSONObject
.
parseObject
(
str
);
String
dataStr
=
JSONObject
.
toJSONString
(
data
,
SerializerFeature
.
WriteMapNullValue
);
// 计算签名
// USERACT用户账号、USERPWD密码
String
source
=
USERACT
+
dataStr
+
USERPWD
;
String
iSign
=
md5
(
source
);
//获取md5并实现二进制小写字符串转换
//将签名添加进上传的JSON串中
data
.
put
(
"ISIGN"
,
iSign
);
//数据上报,在Request Headers添加账户密钥
//ACTKEY账户密钥
HttpHeaders
httpHeaders
=
new
HttpHeaders
();
httpHeaders
.
add
(
"AccountKey"
,
ACTKEY
);
httpHeaders
.
add
(
"Accept-Charset"
,
"UTF-8"
);
httpHeaders
.
add
(
"Content-Type"
,
"application/json;charset=UTF-8"
);
HttpEntity
<
JSONObject
>
requestEntity
=
new
HttpEntity
<>(
data
,
httpHeaders
);
RestTemplate
restTemplate
=
new
RestTemplate
();
restTemplate
.
getMessageConverters
().
set
(
1
,
new
StringHttpMessageConverter
(
StandardCharsets
.
UTF_8
));
ResponseEntity
<
String
>
resp
=
restTemplate
.
exchange
(
"https://m.gdeei.cn/ydyjgpt/qymj/submitQYMJData"
,
HttpMethod
.
POST
,
requestEntity
,
String
.
class
);
//获得返回值
String
body
=
resp
.
getBody
();
// JSONObject responseObj = JSONObject.parseObject(body);
//按获取的返回信息完成处理
//……
return
body
;
}
/**
* 完整的MD5编码过程
*
* @param input 原始字符串
* @return 32位小写MD5字符串
* @throws RuntimeException 当MD5算法不可用时
*/
private
static
String
md5
(
String
input
)
{
// 参数校验
if
(
input
==
null
)
{
throw
new
IllegalArgumentException
(
"Input string cannot be null"
);
}
try
{
// 1. 获取MessageDigest实例
MessageDigest
md
=
MessageDigest
.
getInstance
(
"MD5"
);
// 2. 将字符串转换为字节数组(必须指定编码)
byte
[]
inputBytes
=
input
.
getBytes
(
StandardCharsets
.
UTF_8
);
// 3. 计算哈希值(digest方法会执行完整计算)
byte
[]
hashBytes
=
md
.
digest
(
inputBytes
);
// 4. 将字节数组转换为十六进制表示
return
bytesToHex
(
hashBytes
);
}
catch
(
NoSuchAlgorithmException
e
)
{
// 理论上所有Java实现都必须支持MD5
throw
new
RuntimeException
(
"MD5 algorithm not available"
,
e
);
}
}
/**
* 字节数组转十六进制字符串(优化版)
*
* @param bytes 字节数组
* @return 十六进制字符串
*/
private
static
String
bytesToHex
(
byte
[]
bytes
)
{
// 一个字节对应两个十六进制字符
char
[]
hexChars
=
new
char
[
bytes
.
length
*
2
];
// 预定义十六进制字符
final
char
[]
hexArray
=
"0123456789abcdef"
.
toCharArray
();
for
(
int
i
=
0
;
i
<
bytes
.
length
;
i
++)
{
// 取字节的高4位
int
high
=
(
bytes
[
i
]
&
0xF0
)
>>>
4
;
// 取字节的低4位
int
low
=
bytes
[
i
]
&
0x0F
;
// 转换为对应的十六进制字符
hexChars
[
i
*
2
]
=
hexArray
[
high
];
hexChars
[
i
*
2
+
1
]
=
hexArray
[
low
];
}
return
new
String
(
hexChars
);
}
private
static
String
base64Encode
(
String
input
)
{
byte
[]
encodedBytes
=
Base64
.
getEncoder
().
encode
(
input
.
getBytes
());
return
new
String
(
encodedBytes
);
}
}
src/main/java/com/bme/access/guangdong/dao/DataUploadTimeMapper.java
0 → 100644
View file @
aebf4937
package
com
.
bme
.
access
.
guangdong
.
dao
;
import
org.apache.ibatis.annotations.Mapper
;
import
org.apache.ibatis.annotations.Param
;
@Mapper
public
interface
DataUploadTimeMapper
{
String
getUploadTime
(
@Param
(
"type"
)
Integer
type
);
Integer
insertUploadTime
(
@Param
(
"uploadTime"
)
String
uploadTime
,
@Param
(
"type"
)
Integer
type
);
Integer
updateUploadTimeByType
(
@Param
(
"uploadTime"
)
String
uploadTime
,
@Param
(
"type"
)
Integer
type
);
}
src/main/java/com/bme/access/guangdong/job/UploadDataTask.java
0 → 100644
View file @
aebf4937
package
com
.
bme
.
access
.
guangdong
.
job
;
import
lombok.extern.slf4j.Slf4j
;
import
org.springframework.scheduling.annotation.EnableScheduling
;
import
org.springframework.stereotype.Component
;
@Component
@EnableScheduling
@Slf4j
public
class
UploadDataTask
{
}
src/main/java/com/bme/access/guangdong/model/BarrierGateInfo.java
0 → 100644
View file @
aebf4937
package
com
.
bme
.
access
.
guangdong
.
model
;
import
lombok.Data
;
@Data
public
class
BarrierGateInfo
{
private
String
XZQHDM
;
// 行政区划代码 字符(6) 见2.3.2,精确到辖区县
private
String
QYBH
;
// 企业编号 字符(22) 见2.3.3
private
String
CRKBH
;
// 出入口编号 字符(1) 见2.3.4
private
String
CRKLX
;
// 出入口类型 字符(1) 1—入口;2—出口
private
String
DZBH
;
// 道闸编号 字符(3) 见2.3.5
private
String
SFYSSSP
;
// 是否有实时视频 字符(1) 0—否;1—是
private
String
SSSPLJ
;
// 实时视频链接 字符(256) SFYSSSP=1时适用,RTSP协议
}
src/main/java/com/bme/access/guangdong/model/EnterpriseInfo.java
0 → 100644
View file @
aebf4937
package
com
.
bme
.
access
.
guangdong
.
model
;
import
lombok.Data
;
@Data
public
class
EnterpriseInfo
{
private
String
XZQHDM
;
// 行政区划代码 字符(6)
private
String
QYBH
;
// 企业编号 字符(22)
private
String
QYMC
;
// 企业名称 字符(100)
private
String
TYSHXYDM
;
// 统一社会信用代码 字符(18)
private
String
QYDZ
;
// 企业地址 字符(255)
private
Number
JD
;
// 经度 数值
private
Number
WD
;
// 纬度 数值
private
String
FRDB
;
// 法人代表 字符(20)
private
String
HYLX
;
// 行业类型 字符(50)
private
String
HYFZ
;
// 行业分支 字符(50)
private
String
JXFJGK
;
//绩效分级管控类型 字符(50)
private
String
LXR
;
// 联系人 字符(20)
private
String
LXRDH
;
// 联系人电话 字符(20)
private
Number
ZHCRKSL
;
// 载货出入口数量 数值
private
Number
DZSL
;
// 道闸数量 数值
private
Number
YSCLSL
;
// 运输车辆数量 数值
private
Number
CNYSCLSL
;
// 厂内运输车辆数量 数值
private
Number
FDLYDJXSL
;
// 非道路移动机械数量 数值
}
src/main/java/com/bme/access/guangdong/model/InFactoryVehicleInfo.java
0 → 100644
View file @
aebf4937
package
com
.
bme
.
access
.
guangdong
.
model
;
import
lombok.Data
;
@Data
public
class
InFactoryVehicleInfo
{
private
String
XZQHDM
;
// 行政区划编码 字符(6) 见2.3.2,精确到辖区县
private
String
QYBH
;
// 企业编号 字符(22) 见2.3.3
private
String
HBDJBM
;
// 环保登记编码 字符(32) 在非道路移动机械监管平台编码登记的编码
private
String
CLSBDM
;
// 车辆识别代码(VIN) 字符(17) —
private
String
SCRQ
;
// 生产日期 日期 格式:YYYYMMDD
private
String
CPHM
;
// 车牌号码 字符(10) 可选项 若已在公安交管部门上牌请填写
private
String
ZCDJRQ
;
// 注册登记日期 日期 可选项 若已在公安交管部门上牌请填写
private
String
CLPPXH
;
// 车辆品牌型号 字符(32) —
private
String
RLLX
;
// 燃料类型 字符 见2.3.12
private
String
PFBZ
;
// 排放标准 字符(1) 见2.3.13
private
String
LWZT
;
// 联网状态 字符(1) 0—未联网;1—已联网
private
String
SCQD
;
// 随车清单* 字符 JPG格式照片,Base64编码
private
String
XSZ
;
// 行驶证* 字符 JPG格式照片,Base64编码
private
String
CLSYR
;
// 车辆所有人(单位) 字符(100) 自有/租赁(写明租赁公司名称)
}
src/main/java/com/bme/access/guangdong/model/InOutInfo.java
0 → 100644
View file @
aebf4937
package
com
.
bme
.
access
.
guangdong
.
model
;
import
lombok.Data
;
@Data
public
class
InOutInfo
{
private
String
XZQHDM
;
// 行政区划编码 字符(6) 见2.3.2,精确到辖区县
private
String
QYBH
;
// 企业编号 字符(22) 见2.3.3
private
String
CRKBH
;
// 出入口编号 字符(1) 见2.3.4
private
String
DZBH
;
// 道闸编号 字符(3) 见2.3.5
private
String
JCCZT
;
// 进出厂状态 字符(1) 1—进厂;2—出厂
private
String
JCCSJ
;
// 进厂/出厂时间 时间 格式:YYYY-MM-DD hh:mm:ss
private
String
CTZP
;
// 进厂/出厂车头照片 字符 车头照片,JPG格式照片,Base64编码
private
String
CSZP
;
// 进厂/出厂车身照片* 字符 车身照片,JPG格式照片,Base64编码
private
String
CPHM
;
// 车牌号码 字符(10) —
private
String
HPYS
;
// 号牌颜色 字符(1) 见2.3.9
private
String
CLLX
;
// 车辆类型 字符 见2.3.10
private
String
CLSBDM
;
// 车辆识别代码(VIN) 字符(17) —
private
String
ZCDJRQ
;
// 注册登记日期 日期 格式:YYYYMMDD
private
String
CLPPXH
;
// 车辆品牌型号 字符(32) —
private
String
RLLX
;
// 燃料类型 字符 见2.3.12
private
String
PFBZ
;
// 排放标准 字符(1) 见2.3.13
private
String
LWZT
;
// 联网状态 字符(1) 0—未联网;1—已联网
private
String
SYXZ
;
// 使用性质 字符 见2.3.11
private
String
SCQD
;
// 随车清单* 字符 JPG格式照片,Base64编码
private
String
XSZ
;
// 行驶证* 字符 JPG格式照片,Base64编码
private
String
YSHWMC
;
// 运输货物名称* 字符(32) —
private
Number
YSL
;
// 运输量 数值 单位:吨(t)、升(L)、包
private
String
YSLDW
;
// 运输量单位 字符(5) 吨;升;包
private
String
CDMC
;
// 车队名称 字符(100) 自有、个人或运输公司营业执照名称
}
src/main/java/com/bme/access/guangdong/model/NoRoadVehicleInfo.java
0 → 100644
View file @
aebf4937
package
com
.
bme
.
access
.
guangdong
.
model
;
import
lombok.Data
;
@Data
public
class
NoRoadVehicleInfo
{
private
String
XZQHDM
;
// 行政区划编码 字符(6) 见2.3.2,精确到辖区县
private
String
QYBH
;
// 企业编号 字符(22) 见2.3.3
private
String
HBDJBM
;
// 环保登记编码 字符(32) 在非道路移动机械监管平台编码登记的编码
private
String
JXSCRQ
;
// 机械生产日期 日期 格式:YYYYMMDD
private
String
CPHM
;
// 车牌号码 字符(10) 可选项 若已在公安交管部门上牌请填写
private
String
PFBZ
;
// 排放标准 字符(1) 见2.3.13
private
String
RLLX
;
// 燃料类型 字符 见2.3.12
private
String
JXZL
;
// 机械种类 字符(1) 见2.3.14
private
String
JXHBDM
;
// 机械环保代码/产品识别码(PIN) 字符(64) —
private
String
JXXH
;
// 机械型号 字符(32) —
private
String
FDJXH
;
// 发动机型号 字符(32) —
private
String
FDJSCC
;
// 发动机生产厂 字符(100) —
private
String
FDJBH
;
// 发动机编号 字符(32) —
private
String
ZCMP
;
// 整车(机)铭牌 字符 JPG格式照片,Base64编码
private
String
FDJMP
;
// 发动机铭牌 字符 JPG格式照片,Base64编码
private
String
JXHBXXBQ
;
// 机械环保信息标签 字符 JPG格式照片,Base64编码
private
String
SSR
;
// 所属人(单位) 字符(100) 自有/租赁(写明租赁公司名称)
}
src/main/java/com/bme/access/guangdong/model/VehicleInfo.java
0 → 100644
View file @
aebf4937
package
com
.
bme
.
access
.
guangdong
.
model
;
import
lombok.Data
;
@Data
public
class
VehicleInfo
{
private
String
XZQHDM
;
// 行政区划编码 字符(6) 见2.3.2,精确到辖区县
private
String
QYBH
;
// 企业编号 字符(22) 见2.3.3
private
String
CPHM
;
// 车牌号码 字符(10) —
private
String
HPYS
;
// 号牌颜色 字符(1) 见2.3.9
private
String
CLLX
;
// 车辆类型 字符 见2.3.10
private
String
CLSBDM
;
// 车辆识别代码(VIN) 字符(17) —
private
String
ZCDJRQ
;
// 注册登记日期 日期 格式:YYYYMMDD
private
String
CLPPXH
;
// 车辆品牌型号 字符(32) —
private
String
RLLX
;
// 燃料类型 字符 见2.3.12
private
String
PFBZ
;
// 排放标准 字符(1) 见2.3.13
private
String
LWZT
;
// 联网状态 字符(1) 0—未联网;1—已联网
private
String
SYXZ
;
// 使用性质 字符 见2.3.11
private
String
SCQD
;
// 随车清单* 字符 JPG格式照片,Base64编码
private
String
XSZ
;
// 行驶证* 字符 JPG格式照片,Base64编码
private
String
CDMC
;
// 车队名称 字符(100) 自有、个人或运输公司营业执照名称
}
src/main/java/com/bme/access/guangdong/service/InAndOutDateService.java
0 → 100644
View file @
aebf4937
package
com
.
bme
.
access
.
guangdong
.
service
;
import
org.springframework.stereotype.Service
;
@Service
public
class
InAndOutDateService
{
}
src/main/java/com/bme/access/guangdong/web/TestController.java
0 → 100644
View file @
aebf4937
package
com
.
bme
.
access
.
guangdong
.
web
;
import
com.alibaba.fastjson.JSONObject
;
import
com.alibaba.fastjson.serializer.SerializerFeature
;
import
lombok.extern.slf4j.Slf4j
;
import
org.springframework.http.HttpEntity
;
import
org.springframework.http.HttpHeaders
;
import
org.springframework.http.HttpMethod
;
import
org.springframework.http.ResponseEntity
;
import
org.springframework.http.converter.StringHttpMessageConverter
;
import
org.springframework.web.bind.annotation.GetMapping
;
import
org.springframework.web.bind.annotation.RequestMapping
;
import
org.springframework.web.bind.annotation.RequestParam
;
import
org.springframework.web.bind.annotation.RestController
;
import
org.springframework.web.client.RestTemplate
;
import
java.nio.charset.StandardCharsets
;
import
java.security.MessageDigest
;
import
java.security.NoSuchAlgorithmException
;
import
java.util.Base64
;
@RestController
@Slf4j
@RequestMapping
public
class
TestController
{
private
static
final
String
USERACT
=
""
;
private
static
final
String
USERPWD
=
""
;
private
static
final
String
ACTKEY
=
""
;
@GetMapping
(
"/uploadInfo"
)
public
String
uploadInfo
(
@RequestParam
(
"method"
)
String
method
,
@RequestParam
(
"version"
)
String
version
,
@RequestParam
(
"cityId"
)
String
cityId
,
@RequestParam
(
"jsonStr"
)
String
jsonStr
)
{
String
businessContent
=
base64Encode
(
jsonStr
);
String
str
=
"{"
+
"\"VERSION\":\""
+
version
+
"\","
+
"\"CITYID\":\""
+
cityId
+
"\","
+
"\"TYPE\":\""
+
method
+
"\","
+
"\"BUSINESSCONTENT\":\""
+
businessContent
+
"\""
+
"}"
;
JSONObject
data
=
JSONObject
.
parseObject
(
str
);
String
dataStr
=
JSONObject
.
toJSONString
(
data
,
SerializerFeature
.
WriteMapNullValue
);
// 计算签名
// USERACT用户账号、USERPWD密码
String
source
=
USERACT
+
dataStr
+
USERPWD
;
String
iSign
=
md5
(
source
);
//获取md5并实现二进制小写字符串转换
//将签名添加进上传的JSON串中
data
.
put
(
"ISIGN"
,
iSign
);
//数据上报,在Request Headers添加账户密钥
//ACTKEY账户密钥
HttpHeaders
httpHeaders
=
new
HttpHeaders
();
httpHeaders
.
add
(
"AccountKey"
,
ACTKEY
);
httpHeaders
.
add
(
"Accept-Charset"
,
"UTF-8"
);
httpHeaders
.
add
(
"Content-Type"
,
"application/json;charset=UTF-8"
);
HttpEntity
<
JSONObject
>
requestEntity
=
new
HttpEntity
<>(
data
,
httpHeaders
);
RestTemplate
restTemplate
=
new
RestTemplate
();
restTemplate
.
getMessageConverters
().
set
(
1
,
new
StringHttpMessageConverter
(
StandardCharsets
.
UTF_8
));
ResponseEntity
<
String
>
resp
=
restTemplate
.
exchange
(
"https://m.gdeei.cn/ydyjgpt/qymj/submitQYMJData"
,
HttpMethod
.
POST
,
requestEntity
,
String
.
class
);
//获得返回值
String
body
=
resp
.
getBody
();
// JSONObject responseObj = JSONObject.parseObject(body);
//按获取的返回信息完成处理
//……
return
body
;
}
/**
* 完整的MD5编码过程
*
* @param input 原始字符串
* @return 32位小写MD5字符串
* @throws RuntimeException 当MD5算法不可用时
*/
private
static
String
md5
(
String
input
)
{
// 参数校验
if
(
input
==
null
)
{
throw
new
IllegalArgumentException
(
"Input string cannot be null"
);
}
try
{
// 1. 获取MessageDigest实例
MessageDigest
md
=
MessageDigest
.
getInstance
(
"MD5"
);
// 2. 将字符串转换为字节数组(必须指定编码)
byte
[]
inputBytes
=
input
.
getBytes
(
StandardCharsets
.
UTF_8
);
// 3. 计算哈希值(digest方法会执行完整计算)
byte
[]
hashBytes
=
md
.
digest
(
inputBytes
);
// 4. 将字节数组转换为十六进制表示
return
bytesToHex
(
hashBytes
);
}
catch
(
NoSuchAlgorithmException
e
)
{
// 理论上所有Java实现都必须支持MD5
throw
new
RuntimeException
(
"MD5 algorithm not available"
,
e
);
}
}
/**
* 字节数组转十六进制字符串(优化版)
*
* @param bytes 字节数组
* @return 十六进制字符串
*/
private
static
String
bytesToHex
(
byte
[]
bytes
)
{
// 一个字节对应两个十六进制字符
char
[]
hexChars
=
new
char
[
bytes
.
length
*
2
];
// 预定义十六进制字符
final
char
[]
hexArray
=
"0123456789abcdef"
.
toCharArray
();
for
(
int
i
=
0
;
i
<
bytes
.
length
;
i
++)
{
// 取字节的高4位
int
high
=
(
bytes
[
i
]
&
0xF0
)
>>>
4
;
// 取字节的低4位
int
low
=
bytes
[
i
]
&
0x0F
;
// 转换为对应的十六进制字符
hexChars
[
i
*
2
]
=
hexArray
[
high
];
hexChars
[
i
*
2
+
1
]
=
hexArray
[
low
];
}
return
new
String
(
hexChars
);
}
private
static
String
base64Encode
(
String
input
)
{
byte
[]
encodedBytes
=
Base64
.
getEncoder
().
encode
(
input
.
getBytes
());
return
new
String
(
encodedBytes
);
}
}
src/main/resources/application-zhanhong.yml
0 → 100644
View file @
aebf4937
spring
:
datasource
:
original
:
url
:
jdbc:sqlserver://192.168.8.239;Databasename=BME_Vehilce_Gate;trustServerCertificate=true
username
:
sa
password
:
dp@2024
driver-class-name
:
com.microsoft.sqlserver.jdbc.SQLServerDriver
initialSize
:
5
minIdle
:
5
maxActive
:
20
\ No newline at end of file
src/main/resources/application.yml
0 → 100644
View file @
aebf4937
server
:
port
:
9115
servlet
:
context-path
:
/bme-access-upload
compression
:
enabled
:
true
mybatis
:
type-aliases-package
:
com.bme.upload.module.entity
configuration
:
log-impl
:
org.apache.ibatis.logging.stdout.StdOutImpl
map-underscore-to-camel-case
:
true
mapper-locations
:
classpath:/mapper/*.xml
spring
:
profiles
:
active
:
zhanhong
\ No newline at end of file
src/main/resources/logback.xml
0 → 100644
View file @
aebf4937
<?xml version="1.0" encoding="UTF-8"?>
<configuration
scan=
"true"
scanPeriod=
"10 seconds"
>
<appender
name=
"STDOUT"
class=
"ch.qos.logback.core.ConsoleAppender"
>
<encoder>
<pattern>
%d{HH:mm:ss.SSS} [%thread] %level %logger{36} - %msg%n
</pattern>
</encoder>
</appender>
<appender
name=
"rollingAppender"
class=
"ch.qos.logback.core.rolling.RollingFileAppender"
>
<file>
${catalina.home:-.}/logs/bme-access-guangdong-upload.log
</file>
<rollingPolicy
class=
"ch.qos.logback.core.rolling.TimeBasedRollingPolicy"
>
<fileNamePattern>
${catalina.home:-.}/logs/bme-access-guangdong-upload-%d{yyyy-MM-dd}.%i.log
</fileNamePattern>
<maxHistory>
7
</maxHistory>
<timeBasedFileNamingAndTriggeringPolicy
class=
"ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP"
>
<maxFileSize>
100MB
</maxFileSize>
</timeBasedFileNamingAndTriggeringPolicy>
</rollingPolicy>
<encoder>
<!-- 必须指定,否则不会往文件输出内容 -->
<pattern>
%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{56}.%method:%L - %msg%n
</pattern>
</encoder>
<append>
true
</append>
<prudent>
true
</prudent>
</appender>
<logger
name=
"zyun"
level=
"INFO"
/>
<root
level=
"INFO"
>
<appender-ref
ref=
"rollingAppender"
/>
<appender-ref
ref=
"STDOUT"
/>
</root>
</configuration>
\ No newline at end of file
src/main/resources/mapper/DataUploadTimeMapper.xml
0 → 100644
View file @
aebf4937
<?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=
"com.bme.access.guangdong.dao.DataUploadTimeMapper"
>
<select
id=
"getUploadTime"
resultType=
"java.lang.String"
>
select Upload_Time uploadTime from Data_Upload_Time where Type=#{type}
</select>
<insert
id=
"insertUploadTime"
>
insert into Data_Upload_Time (Upload_Time, type) values (#{uploadTime}, #{type});
</insert>
<update
id=
"updateUploadTimeByType"
>
update Data_Upload_Time set Upload_Time=#{uploadTime} where type=#{type};
</update>
</mapper>
\ No newline at end of file
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment