Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
S
SanyCoating
概览
Overview
Details
Activity
Cycle Analytics
版本库
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
问题
0
Issues
0
列表
Board
标记
里程碑
合并请求
0
Merge Requests
0
CI / CD
CI / CD
流水线
作业
日程表
图表
维基
Wiki
代码片段
Snippets
成员
Collapse sidebar
Close sidebar
活动
图像
聊天
创建新问题
作业
提交
Issue Boards
Open sidebar
蔡楷
SanyCoating
Commits
79e275e8
Commit
79e275e8
authored
Jan 20, 2022
by
黄强
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
解析json 模板比你且複製,還差變量替換
parent
f8fa2926
隐藏空白字符变更
内嵌
并排
正在显示
7 个修改的文件
包含
146 行增加
和
49 行删除
+146
-49
mqttservice/src/main/java/com/jln/system/web/action/mqtt/Base64decrypt.java
+3
-3
mqttservice/src/main/java/com/jln/system/web/action/mqtt/MqttStartClient.java
+17
-12
mqttservice/src/main/java/com/jln/system/web/action/mqtt/controller/MqttClientController.java
+78
-0
mqttservice/src/main/java/com/jln/system/web/action/mqtt/init/InitHander.java
+35
-31
mqttservice/src/main/java/com/jln/system/web/action/mqtt/pojo/dto/JsonDataDto.java
+3
-3
mqttservice/src/main/java/com/jln/system/web/action/mqtt/pojo/vo/SendJsonDataVo.java
+4
-0
system/src/main/resources/cacert/cjdqzdtqsb1.txt
+6
-0
没有找到文件。
mqttservice/src/main/java/com/jln/system/web/action/mqtt/Base64decrypt.java
查看文件 @
79e275e8
...
...
@@ -140,13 +140,13 @@ public class Base64decrypt {
/**
* 机器人测试
*/
public
Map
<
String
,
Object
>
jqrSendString
(
Map
<
String
,
Map
<
String
,
Object
>>
map
,
Map
<
String
,
Object
>
objectMap
,
public
Map
<
String
,
Object
>
jqrSendString
(
Map
<
String
,
Map
<
String
,
Object
>>
map
,
Map
<
String
,
Object
>
objectMap
,
long
millis
,
Map
<
String
,
Object
>
reportDto
)
{
Map
<
String
,
Object
>
mongoMap
=
findMongo
(
map
);
mongoMap
.
putAll
(
objectMap
);
mongoMap
.
remove
(
"_id"
);
mongoMap
.
remove
(
"time"
);
long
millis
=
Calendar
.
getInstance
().
getTimeInMillis
();
//处理实体类在每个字段加上时间
List
<
Map
<
String
,
Object
>>
allDto
=
new
ArrayList
<>();
for
(
Map
.
Entry
<
String
,
Object
>
entry
:
mongoMap
.
entrySet
())
{
...
...
@@ -168,7 +168,7 @@ public class Base64decrypt {
}
}
reportDto
.
put
(
"reported"
,
allDto
);
reportDto
.
put
(
"edgeTime"
,
millis
);
JSONObject
jsonObj
=
new
JSONObject
(
reportDto
);
String
s
=
jsonObj
.
toString
();
System
.
out
.
println
(
"輸出Json:"
+
s
);
...
...
mqttservice/src/main/java/com/jln/system/web/action/mqtt/MqttStartClient.java
查看文件 @
79e275e8
...
...
@@ -48,17 +48,17 @@ public class MqttStartClient {
* @param skFileUrl
* @return
*/
public
Map
<
String
,
Object
>
resolveSk
(
String
skFileUrl
)
{
Map
<
String
,
Object
>
skReportDto
=
new
HashMap
<>();
public
Integer
resolveSk
(
String
skFileUrl
)
{
//
Map<String, Object> skReportDto = new HashMap<>();
String
skFileValue
=
readSkFileToList
(
skFileUrl
);
if
(
skFileValue
.
isEmpty
())
{
/*
if (skFileValue.isEmpty()) {
return skReportDto;
}
}
*/
JSONObject
jsonObject
=
JSONObject
.
parseObject
(
skFileValue
);
//skReportDto.put("cmdId", "10");
skReportDto
.
put
(
"version"
,
jsonObject
.
getInteger
(
"version"
));
//
skReportDto.put("version", jsonObject.getInteger("version"));
//skReportDto.put("sequenceId", 1);
return
skReportDto
;
return
jsonObject
.
getInteger
(
"version"
)
;
}
...
...
@@ -158,17 +158,22 @@ public class MqttStartClient {
*/
public
void
jqr
(
JsonDataDto
jsonDataDto
,
XBMqttDataUtil
xbMqttDataUtil
)
{
try
{
long
millis
=
Calendar
.
getInstance
().
getTimeInMillis
();
//解析sk证书信息
Map
<
String
,
Object
>
reportDto
=
resolveSk
(
jsonDataDto
.
getSkurl
());
Integer
version
=
resolveSk
(
jsonDataDto
.
getSkurl
());
//reportDto.put("productKey", "PaintRobot");
//解析设备txt文本获取静态属性值
Map
<
String
,
Object
>
reportDto
=
new
LinkedHashMap
<>();
Map
<
String
,
Object
>
fileSitesMap
=
readTxtFileToMap
(
jsonDataDto
.
getTxtFileUrl
());
Map
<
String
,
Object
>
sites
=
new
HashMap
<>();
if
(!
fileSitesMap
.
isEmpty
())
{
reportDto
.
put
(
"clientUuid"
,
jsonDataDto
.
getClientUuid
());
//TODO 上报到客户那边数据中必要的参数值
reportDto
.
put
(
"cmdId"
,
jsonDataDto
.
getCmdId
());
//指 令 标 识
reportDto
.
put
(
"
productKey"
,
jsonDataDto
.
getProductKey
());
//必填,表示设备类型,设备类型在IoT平台上维护
reportDto
.
put
(
"
version"
,
version
);
//版本
reportDto
.
put
(
"sequenceId"
,
jsonDataDto
.
getSequenceId
());
//必填,值为1
reportDto
.
put
(
"edgeTime"
,
millis
);
reportDto
.
put
(
"productKey"
,
jsonDataDto
.
getProductKey
());
//必填,表示设备类型,设备类型在IoT平台上维护
reportDto
.
put
(
"clientUuid"
,
jsonDataDto
.
getClientUuid
());
//TODO 上报到客户那边数据中必要的参数值
sites
.
put
(
"DeviceID"
,
fileSitesMap
.
get
(
"设备ID"
));
sites
.
put
(
"CompanyNo"
,
fileSitesMap
.
get
(
"公司编码"
));
sites
.
put
(
"factoryNo"
,
fileSitesMap
.
get
(
"工厂编码"
));
...
...
@@ -180,17 +185,17 @@ public class MqttStartClient {
//1 redis和mqtt分开
if
(
separate
==
1
)
{
//TODO 同时MQTT上报和推送前端数据
Map
<
String
,
Object
>
objectMap
=
base64decrypt
.
jqrSendString
(
jsonDataDto
.
getTableFiels
(),
sites
,
reportDto
);
Map
<
String
,
Object
>
objectMap
=
base64decrypt
.
jqrSendString
(
jsonDataDto
.
getTableFiels
(),
sites
,
millis
,
reportDto
);
StaticData
.
data
.
put
(
jsonDataDto
.
getMongdbTableb
(),
objectMap
);
String
json
=
new
Gson
().
toJson
(
objectMap
);
xbMqttDataUtil
.
publish
(
json
);
}
else
if
(
separate
==
2
)
{
// TODO 只推送前端数据
Map
<
String
,
Object
>
objectMap
=
base64decrypt
.
jqrSendString
(
jsonDataDto
.
getTableFiels
(),
sites
,
reportDto
);
Map
<
String
,
Object
>
objectMap
=
base64decrypt
.
jqrSendString
(
jsonDataDto
.
getTableFiels
(),
sites
,
millis
,
reportDto
);
StaticData
.
data
.
put
(
jsonDataDto
.
getMongdbTableb
(),
objectMap
);
}
else
if
(
separate
==
3
)
{
//TODO 只发送mqtt
Map
<
String
,
Object
>
objectMap
=
base64decrypt
.
jqrSendString
(
jsonDataDto
.
getTableFiels
(),
sites
,
reportDto
);
Map
<
String
,
Object
>
objectMap
=
base64decrypt
.
jqrSendString
(
jsonDataDto
.
getTableFiels
(),
sites
,
millis
,
reportDto
);
String
json
=
new
Gson
().
toJson
(
objectMap
);
xbMqttDataUtil
.
publish
(
json
);
}
...
...
mqttservice/src/main/java/com/jln/system/web/action/mqtt/controller/MqttClientController.java
查看文件 @
79e275e8
...
...
@@ -46,6 +46,10 @@ public class MqttClientController {
public
Result
start
(
@RequestParam
MultipartFile
file
)
throws
IOException
{
InitHander
initHander
=
new
InitHander
();
List
<
JsonDataDto
>
jsonDataDtoList
=
initHander
.
analysisJsonParm
(
file
);
if
(
jsonDataDtoList
.
isEmpty
()){
String
initJson
=
initJson
();
return
new
Result
().
toFailure
(
"标准格式:"
+
initJson
);
}
sendMqttServer
.
sendMqtt
(
jsonDataDtoList
);
/* List<BldzCclmVo> xpjVos = scadaMapper.find("校平机");
...
...
@@ -473,4 +477,78 @@ public class MqttClientController {
return
new
Result
().
toSuccess
(
list
);
}
private
String
initJson
(){
String
jsonStr
=
"[\n"
+
" {\n"
+
" \"skurl\":\"\\\\cacert\\\\test.sk\",\n"
+
" \"txtFileUrl\":\"\\\\cacert\\\\cjdqzdtqsb1.txt\",\n"
+
" \"mongdbTableb\":\"chejiashebeibianliang\",\n"
+
" \"clientUuid\":\"5003820063\",\n"
+
" \"cmdId\":\"10\",\n"
+
" \"productKey\":\"PaintRobot\",\n"
+
" \"sequenceId\":1,\n"
+
" \"reported\":{\n"
+
" \"singleField\":[\n"
+
" {\n"
+
" \"subTable\":\"chejiashebeibianliang03\",\n"
+
" \"feilds\":[\n"
+
" {\n"
+
" \"dbField\":\"d141\",\n"
+
" \"fieldDataType\":\"FLOAT\",\n"
+
" \"iotField\":\"GroupDistr\"\n"
+
" }\n"
+
" ]\n"
+
" },\n"
+
" {\n"
+
" \"subTable\":\"chejiashebeibianliang04\",\n"
+
" \"feilds\":[\n"
+
" {\n"
+
" \"dbField\":\"d142\",\n"
+
" \"fieldDataType\":\"FLOAT\",\n"
+
" \"iotField\":\"SolidFlow\"\n"
+
" },\n"
+
" {\n"
+
" \"dbField\":\"d143\",\n"
+
" \"fieldDataType\":\"FLOAT\",\n"
+
" \"iotField\":\"SolidContent\"\n"
+
" },\n"
+
" {\n"
+
" \"dbField\":\"d144\",\n"
+
" \"fieldDataType\":\"INT\",\n"
+
" \"iotField\":\"PowTime\"\n"
+
" },\n"
+
" {\n"
+
" \"dbField\":\"d145\",\n"
+
" \"fieldDataType\":\"INT\",\n"
+
" \"iotField\":\"Alarm\"\n"
+
" },\n"
+
" {\n"
+
" \"dbField\":\"d146\",\n"
+
" \"fieldDataType\":\"STRING\",\n"
+
" \"iotField\":\"AlarmMsg\"\n"
+
" },\n"
+
" {\n"
+
" \"dbField\":\"d147\",\n"
+
" \"fieldDataType\":\"FLOAT\",\n"
+
" \"iotField\":\"PaintFlow\"\n"
+
" },\n"
+
" {\n"
+
" \"dbField\":\"d148\",\n"
+
" \"fieldDataType\":\"FLOAT\",\n"
+
" \"iotField\":\"PaintValu\"\n"
+
" },\n"
+
" {\n"
+
" \"dbField\":\"d149\",\n"
+
" \"fieldDataType\":\"INT\",\n"
+
" \"iotField\":\"Status\"\n"
+
" }\n"
+
" ]\n"
+
" }\n"
+
" ]\n"
+
" }\n"
+
" }\n"
+
"]"
;
return
jsonStr
;
}
}
mqttservice/src/main/java/com/jln/system/web/action/mqtt/init/InitHander.java
查看文件 @
79e275e8
...
...
@@ -35,40 +35,44 @@ public class InitHander implements CommandLineRunner {
String
jsonStr
=
FlieUrlUtil
.
readJsonField
(
file
);
//String jsonStr = strJson();//模拟数据
List
<
JsonDataDto
>
jsonDataDtoList
=
new
ArrayList
<>();
try
{
List
<
JSONObject
>
list
=
JSONObject
.
parseObject
(
JSONArray
.
parseArray
(
jsonStr
).
toString
(),
List
.
class
);
list
.
forEach
(
j
->{
JsonDataDto
jsonDataDto
=
new
JsonDataDto
();
List
<
JSONObject
>
mongdbTableList
=
JSONObject
.
parseObject
(
j
.
getJSONObject
(
"reported"
).
getJSONArray
(
"singleField"
).
toString
(),
List
.
class
);
jsonDataDto
.
setCmdId
(
j
.
get
(
"cmdId"
).
toString
());
jsonDataDto
.
setMongdbTableb
(
j
.
get
(
"mongdbTableb"
).
toString
());
jsonDataDto
.
setSequenceId
(
j
.
get
(
"sequenceId"
).
toString
());
jsonDataDto
.
setProductKey
(
j
.
get
(
"productKey"
).
toString
());
jsonDataDto
.
setSkurl
(
j
.
get
(
"skurl"
).
toString
());
jsonDataDto
.
setTxtFileUrl
(
j
.
get
(
"txtFileUrl"
).
toString
());
jsonDataDto
.
setClientUuid
(
j
.
get
(
"clientUuid"
).
toString
());
Map
<
String
,
Map
<
String
,
Object
>>
tableFiels
=
new
HashMap
<>();
//存储对应的表和对应的字段
mongdbTableList
.
forEach
(
t
->{
//处理字段
Map
<
String
,
Object
>
fields
=
new
HashMap
<>();
//存储需要查询的表字段
String
subTable
=
t
.
get
(
"subTable"
).
toString
();
//拿到表名
List
<
JSONObject
>
feildslist
=
JSONObject
.
parseObject
(
t
.
getJSONArray
(
"feilds"
).
toString
(),
List
.
class
);
feildslist
.
forEach
(
f
->{
//取出对应的字段和属性
String
dbField
=
f
.
get
(
"dbField"
).
toString
();
//查询的表字段
String
iotField
=
f
.
get
(
"iotField"
).
toString
();
//给iot 的字段
String
fieldDataType
=
f
.
get
(
"fieldDataType"
).
toString
();
//给iot的属性
/*Map<String,Object> objectMap = new HashMap<>();
objectMap.put(dbField,iotField);*/
fields
.
put
(
dbField
,
iotField
);
List
<
JSONObject
>
list
=
JSONObject
.
parseObject
(
JSONArray
.
parseArray
(
jsonStr
).
toString
(),
List
.
class
);
list
.
forEach
(
j
->{
JsonDataDto
jsonDataDto
=
new
JsonDataDto
();
List
<
JSONObject
>
mongdbTableList
=
JSONObject
.
parseObject
(
j
.
getJSONObject
(
"reported"
).
getJSONArray
(
"singleField"
).
toString
(),
List
.
class
);
jsonDataDto
.
setCmdId
(
j
.
get
(
"cmdId"
).
toString
());
jsonDataDto
.
setMongdbTableb
(
j
.
get
(
"mongdbTableb"
).
toString
());
jsonDataDto
.
setSequenceId
(
j
.
get
(
"sequenceId"
).
toString
());
jsonDataDto
.
setProductKey
(
j
.
get
(
"productKey"
).
toString
());
jsonDataDto
.
setSkurl
(
j
.
get
(
"skurl"
).
toString
());
jsonDataDto
.
setTxtFileUrl
(
j
.
get
(
"txtFileUrl"
).
toString
());
jsonDataDto
.
setClientUuid
(
j
.
get
(
"clientUuid"
).
toString
());
Map
<
String
,
Map
<
String
,
Object
>>
tableFiels
=
new
HashMap
<>();
//存储对应的表和对应的字段
mongdbTableList
.
forEach
(
t
->{
//处理字段
Map
<
String
,
Object
>
fields
=
new
HashMap
<>();
//存储需要查询的表字段
String
subTable
=
t
.
get
(
"subTable"
).
toString
();
//拿到表名
List
<
JSONObject
>
feildslist
=
JSONObject
.
parseObject
(
t
.
getJSONArray
(
"feilds"
).
toString
(),
List
.
class
);
feildslist
.
forEach
(
f
->{
//取出对应的字段和属性
String
dbField
=
f
.
get
(
"dbField"
).
toString
();
//查询的表字段
String
iotField
=
f
.
get
(
"iotField"
).
toString
();
//给iot 的字段
String
fieldDataType
=
f
.
get
(
"fieldDataType"
).
toString
();
//给iot的属性
/*Map<String,Object> objectMap = new HashMap<>();
objectMap.put(dbField,iotField);*/
fields
.
put
(
dbField
,
iotField
);
});
tableFiels
.
put
(
subTable
,
fields
);
jsonDataDto
.
setTableFiels
(
tableFiels
);
});
tableFiels
.
put
(
subTable
,
fields
);
jsonDataDto
.
setTableFiels
(
tableFiels
);
jsonDataDtoList
.
add
(
jsonDataDto
);
//查询数据
});
jsonDataDtoList
.
add
(
jsonDataDto
);
//查询数据
});
}
catch
(
Exception
e
){
return
jsonDataDtoList
;
}
return
jsonDataDtoList
;
}
...
...
mqttservice/src/main/java/com/jln/system/web/action/mqtt/pojo/dto/JsonDataDto.java
查看文件 @
79e275e8
...
...
@@ -9,7 +9,8 @@ import java.util.Map;
@Data
public
class
JsonDataDto
{
@JsonProperty
(
"cmdId"
)
private
String
cmdId
;
/**
* sk 路徑
*/
...
...
@@ -29,8 +30,7 @@ public class JsonDataDto {
@JsonProperty
(
"mongdbTableb"
)
private
String
mongdbTableb
;
@JsonProperty
(
"cmdId"
)
private
String
cmdId
;
@JsonProperty
(
"productKey"
)
private
String
productKey
;
...
...
mqttservice/src/main/java/com/jln/system/web/action/mqtt/pojo/vo/SendJsonDataVo.java
0 → 100644
查看文件 @
79e275e8
package
com
.
jln
.
system
.
web
.
action
.
mqtt
.
pojo
.
vo
;
public
class
SendJsonDataVo
{
}
system/src/main/resources/cacert/cjdqzdtqsb1.txt
0 → 100644
查看文件 @
79e275e8
设备ID=5003820063
公司编码=2R00
工厂编码=2R01
设备名称=平台车架底漆自动调漆设备1
设备类型=S0608
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论