Commit 6fd2557e by 龙明普

Merge branch 'dev'

parents 55137e34 3b4df289
......@@ -61,7 +61,7 @@ public class EmptyUtil {
fieldValue = field.get(obj); //得到属性值
Type fieldType =field.getGenericType();//得到属性类型
String fieldName = field.getName(); // 得到属性名
System.out.println("属性类型:"+fieldType+",属性名:"+fieldName+",属性值:"+fieldValue);
//System.out.println("属性类型:"+fieldType+",属性名:"+fieldName+",属性值:"+fieldValue);
} catch (IllegalArgumentException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
......
......@@ -6,7 +6,6 @@ import com.jln.common.utils.EmptyUtil;
import com.jln.system.web.action.mqtt.pojo.dto.JsonDataDto;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.data.domain.Sort;
import org.springframework.data.mongodb.core.MongoTemplate;
import org.springframework.data.mongodb.core.query.Query;
......@@ -23,23 +22,17 @@ public class Base64decrypt {
@Autowired
private MongoTemplate mongoTemplate;
@Value("${jugeTime}")
private Long jugeTime;
@Value("${sleepTime}")
private Long sleepTime;
private Map<String,Object> findMongo( Map<String,Set<Map<String,Object>>> tableFiels ) {
private Map<String, Object> findMongo(Map<String, Set<Map<String, Object>>> tableFiels) {
DateTimeFormatter fmDate = DateTimeFormatter.ofPattern("yyyyMM");
String yearMonth = LocalDate.now().format(fmDate);
Map<String,Object> map = new HashMap<>();
Map<String, Object> map = new HashMap<>();
for (Map.Entry<String, Set<Map<String, Object>>> stringSetEntry : tableFiels.entrySet()) {
Query query = new Query();
Map<String,String> mapper = new HashMap<>();
Map<String, String> mapper = new HashMap<>();
for (Map<String, Object> stringStringMap : stringSetEntry.getValue()) {
for (String s : stringStringMap.keySet()) {
query.fields().include(s);
mapper.put(s,stringStringMap.get(s).toString());
mapper.put(s, stringStringMap.get(s).toString());
}
}
......@@ -49,12 +42,16 @@ public class Base64decrypt {
Sort.Order.desc("time")
));
List<JSONObject> objectList = mongoTemplate.find(query, JSONObject.class, stringSetEntry.getKey()+yearMonth);
List<JSONObject> objectList = mongoTemplate.find(query, JSONObject.class, stringSetEntry.getKey() + yearMonth);
//mongdb最新数据时间
Map<String ,Object> map1 = objectList.get(0).toJavaObject(Map.class);
if (!EmptyUtil.isEmpty(objectList)) {
Map<String, Object> map1 = objectList.get(0).toJavaObject(Map.class);
for (Map.Entry<String, Object> stringObjectEntry : map1.entrySet()) {
Object value = stringObjectEntry.getValue()==null?"":stringObjectEntry.getValue();
map.put(mapper.get(stringObjectEntry.getKey()),value);
Object value = stringObjectEntry.getValue() == null ? "" : stringObjectEntry.getValue();
map.put(mapper.get(stringObjectEntry.getKey()), value);
}
} else {
log.error("表[" + stringSetEntry.getKey() + yearMonth + "] , 找不到点位" + JSONObject.toJSONString(mapper));
}
}
map.remove(null);
......@@ -66,73 +63,77 @@ public class Base64decrypt {
* 机器人测试
*/
public Map<String, Object> jqrSendString(JsonDataDto jsonDataDto, Map<String, Object> objectMap, long millis, Map<String, Object> reportDto) {
//获取Mongo数据
Map<String, Object> mongoMap = findMongo(jsonDataDto.getTableFiels());
mongoMap.forEach((key,value)->{
if(key.equals("Status")){
if(EmptyUtil.isEmpty(value) || "0".equals(value) || "".equals(value)){
mongoMap.forEach((key, value) -> {
if (key.equals("Status")) {
if (EmptyUtil.isEmpty(value) || "0".equals(value) || "".equals(value)) {
mongoMap.put(key, "4");
}
}
});
//状态为4 只返回状态数据
for (String key : mongoMap.keySet()) {
if(key.equals("Status") && (mongoMap.get(key).equals("4") || mongoMap.get(key).equals(4))) {
List<Map<String,Object>> list = new ArrayList<>();
Map<String,Object> map = new HashMap<>();
map.put("Status","4");
map.put("ts",millis);
if (key.equals("Status") && (mongoMap.get(key).equals("4") || mongoMap.get(key).equals(4))) {
List<Map<String, Object>> list = new ArrayList<>();
Map<String, Object> map = new HashMap<>();
map.put("Status", "4");
map.put("ts", millis);
list.add(map);
reportDto.put("reported",list);
reportDto.put("reported", list);
return reportDto;
}
}
mongoMap.putAll(objectMap);
millis = Calendar.getInstance().getTimeInMillis();
//处理实体类在每个字段加上时间
millis = Calendar.getInstance().getTimeInMillis();
List<Map<String, Object>> allDto = new ArrayList<>();
Map<String,Object> sites = new HashMap<>();
for (Map.Entry<String, Object> stringObjectEntry : objectMap.entrySet()) {
Map<String,Object> properites = new HashMap<>();
if(EmptyUtil.isEmpty(stringObjectEntry.getValue())){
Map<String, Object> properites = new HashMap<>();
if (EmptyUtil.isEmpty(stringObjectEntry.getValue())) {
continue;
}
properites.put(stringObjectEntry.getKey(),stringObjectEntry.getValue());
properites.put("ts",millis);
properites.put(stringObjectEntry.getKey(), stringObjectEntry.getValue());
properites.put("ts", millis);
allDto.add(properites);
}
try{
Map<String,Object> treeMap = new HashMap<>();
try {
Map<String, Object> treeMap = new HashMap<>();
for (Map<String, Object> stringObjectMap : jsonDataDto.getTree()) {
//循环key
Set<Map.Entry<String, Object>> entrySet = stringObjectMap.entrySet();
for (Map.Entry<String, Object> stringObjectEntry : entrySet) {
String value = JSON.toJSONString(stringObjectEntry.getValue());
try{
try {
JSONObject jsonObject = JSONObject.parseObject(value);
Map<String,Object> keyValue = new HashMap<>();
Map<String, Object> keyValue = new HashMap<>();
for (Map.Entry<String, Object> objectEntry : jsonObject.entrySet()) {
Object zhi = mongoMap.get(objectEntry.getValue());
if(zhi==null || zhi.equals("")){
continue;
}
keyValue.put(String.valueOf(objectEntry.getValue()),zhi);
keyValue.put(String.valueOf(objectEntry.getValue()), zhi);
}
treeMap.put(stringObjectEntry.getKey(),keyValue);
}catch (Exception e){
Map<String,Object> keyValue = new HashMap<>();
treeMap.put(stringObjectEntry.getKey(), keyValue);
} catch (Exception e) {
Map<String, Object> keyValue = new HashMap<>();
Object zhi = mongoMap.get(stringObjectEntry.getValue());
if(zhi==null || zhi.equals("")){
continue;
}
keyValue.put(String.valueOf(stringObjectEntry.getValue()),zhi);
keyValue.put("ts",millis);
keyValue.put(String.valueOf(stringObjectEntry.getValue()), zhi);
keyValue.put("ts", millis);
allDto.add(keyValue);
}
}
}
allDto.add(treeMap);
}catch (Exception e){
System.out.println(e);
} catch (Exception e) {
log.error(e.getMessage());
Map<String, Object> site = new HashMap<>();
site.put("Status", "2");
site.put("ts", millis);
......@@ -141,7 +142,6 @@ public class Base64decrypt {
reportDto.put("edgeTime", millis);
return reportDto;
}
reportDto.put("reported", allDto);
return reportDto;
}
......
......@@ -71,7 +71,7 @@ public class XBMqttDataUtil {
mqttClient.connect(options);
logger.info("SSL连接MQTT成功");
} catch (Exception e) {
logger.info("SSL连接MQTT失败" + e.getMessage());
logger.error("SSL连接MQTT失败" + e.getMessage());
}
}
......@@ -126,7 +126,7 @@ public class XBMqttDataUtil {
public void destroy() {
try {
this.mqttClient.disconnect();
logger.info("mqtt 手动断开连接!!!");
logger.error("mqtt 手动断开连接!!!");
} catch (MqttException e) {
logger.error("手动断开连接报错error={}", e.getMessage());
}
......
......@@ -55,7 +55,7 @@ public class SendMqttServerImpl implements SendMqttServer {
String topic = "$SANY/gateway/pdev/sany/mdc/" + jsonObject.getString("accessKey") + "/data";
configParams.put(MqttEnum.MQTT_TOPIC.getMqttName(), topic);
XBMqttDataUtil xbMqttDataUtil = new XBMqttDataUtil(configParams);
final XBMqttDataUtil[] xbMqttDataUtil = {new XBMqttDataUtil(configParams)};
// 线程循环发送Mqtt
String threadName = "test-Thread";
......@@ -65,14 +65,15 @@ public class SendMqttServerImpl implements SendMqttServer {
public void run() {
while (true) {
try {
dtoList.forEach(t -> {
Long start = System.currentTimeMillis();
mqttStartClient.jqr(t, xbMqttDataUtil);
Long end = System.currentTimeMillis();
System.out.println("-----------耗时:------------" + (end - start) / 1000);
dtoList.forEach(t -> {
mqttStartClient.jqr(t, xbMqttDataUtil[0]);
});
Long end = System.currentTimeMillis();
log.info("-----------耗时:------------" + (end - start) / 1000);
Thread.sleep(sleepTime);
} catch (InterruptedException e) {
xbMqttDataUtil[0] = new XBMqttDataUtil(configParams);
continue;
}
}
......@@ -87,11 +88,11 @@ public class SendMqttServerImpl implements SendMqttServer {
int noThreads = currentGroup.activeCount();
Thread[] lstThreads = new Thread[noThreads];
currentGroup.enumerate(lstThreads);
System.out.println("现有线程个数:" + noThreads);
//System.out.println("现有线程个数:" + noThreads);
for (int i = 0; i < noThreads; i++) {
String threadName = lstThreads[i].getName();
System.out.println("第" + i + "个线程名为:" + threadName);
//System.out.println("第" + i + "个线程名为:" + threadName);
// 中断指定的线程
if (threadName.equals(name)) {
System.out.println("中断线程:" + name);
......@@ -202,46 +203,37 @@ public class SendMqttServerImpl implements SendMqttServer {
List<String> list = msr52Map.computeIfAbsent("CycSec", k -> new ArrayList<String>());
list.add(msr52Vo.getCclm());
continue;
}else
if ("程序行号".equals(msr52Vo.getBlmc())) {
} else if ("程序行号".equals(msr52Vo.getBlmc())) {
//转化为秒
List<String> list = msr52Map.computeIfAbsent("CurSeq", k -> new ArrayList<String>());
list.add(msr52Vo.getCclm());
continue;
}else
if ("产量".equals(msr52Vo.getBlmc())) {
} else if ("产量".equals(msr52Vo.getBlmc())) {
//转化为秒
List<String> list = msr52Map.computeIfAbsent("PartCnt", k -> new ArrayList<String>());
list.add(msr52Vo.getCclm());
continue;
}else
if ("当前程序块".equals(msr52Vo.getBlmc())) {
} else if ("当前程序块".equals(msr52Vo.getBlmc())) {
//转化为秒
List<String> list = msr52Map.computeIfAbsent("CurNcBlk", k -> new ArrayList<String>());
list.add(msr52Vo.getCclm());
continue;
}else
if ("切割速度".equals(msr52Vo.getBlmc())) {
} else if ("切割速度".equals(msr52Vo.getBlmc())) {
//转化为秒
List<String> list = msr52Map.computeIfAbsent("CutSpeed", k -> new ArrayList<String>());
list.add(msr52Vo.getCclm());
continue;
}else
if ("板材规格".equals(msr52Vo.getBlmc())) {
} else if ("板材规格".equals(msr52Vo.getBlmc())) {
//转化为秒
List<String> list = msr52Map.computeIfAbsent("PlateType", k -> new ArrayList<String>());
list.add(msr52Vo.getCclm());
continue;
}
else
if ("切割气体流量".equals(msr52Vo.getBlmc())) {
} else if ("切割气体流量".equals(msr52Vo.getBlmc())) {
//转化为秒
List<String> list = msr52Map.computeIfAbsent("CutGasFlow", k -> new ArrayList<String>());
list.add(msr52Vo.getCclm());
continue;
}else
if ("保护气体流量".equals(msr52Vo.getBlmc())) {
} else if ("保护气体流量".equals(msr52Vo.getBlmc())) {
//转化为秒
List<String> list = msr52Map.computeIfAbsent("ProGasFlow", k -> new ArrayList<String>());
list.add(msr52Vo.getCclm());
......
[
{
"skurl": "\\cacert\\test.sk",
"txtFileUrl": "\\cacert\\cjhwcm.txt",
"mongdbTableb": "zengjiabianliang",
"clientUuid": "5099800654",
"cmdId": 10,
"productKey": "OtherPaintMach",
"sequenceId": 1,
"reported": {
"singleField": [
{
"feilds": [
{
"AlarmMsg1": [
{
"subTable": "zengjiabianliang02",
"dbField": "d71",
"fieldDataType": "string",
"iotField": "AlmCode1"
},
{
"subTable": "zengjiabianliang02",
"dbField": "d72",
"fieldDataType": "string",
"iotField": "AlmClass1"
},
{
"subTable": "zengjiabianliang02",
"dbField": "d73",
"fieldDataType": "string",
"iotField": "AlarmMsg1"
}
],
"AlarmMsg2": [
{
"subTable": "zengjiabianliang02",
"dbField": "d74",
"fieldDataType": "string",
"iotField": "AlmCode2"
},
{
"subTable": "zengjiabianliang02",
"dbField": "d75",
"fieldDataType": "string",
"iotField": "AlmClass2"
},
{
"subTable": "zengjiabianliang02",
"dbField": "d76",
"fieldDataType": "string",
"iotField": "AlarmMsg2"
}
],
"AlarmMsg3": [
{
"subTable": "zengjiabianliang02",
"dbField": "d77",
"fieldDataType": "string",
"iotField": "AlmCode3"
},
{
"subTable": "zengjiabianliang02",
"dbField": "d78",
"fieldDataType": "string",
"iotField": "AlmClass3"
},
{
"subTable": "zengjiabianliang02",
"dbField": "d79",
"fieldDataType": "string",
"iotField": "AlarmMsg3"
}
],
"AlarmMsg4": [
{
"subTable": "zengjiabianliang02",
"dbField": "d80",
"fieldDataType": "string",
"iotField": "AlmCode4"
},
{
"subTable": "zengjiabianliang02",
"dbField": "d81",
"fieldDataType": "string",
"iotField": "AlmClass4"
},
{
"subTable": "zengjiabianliang02",
"dbField": "d82",
"fieldDataType": "string",
"iotField": "AlarmMsg4"
}
],
"AlarmMsg5": [
{
"subTable": "20230531xinzengbianliang01",
"dbField": "d20",
"fieldDataType": "string",
"iotField": "AlarmMsg5"
},
{
"subTable": "20230531xinzengbianliang01",
"dbField": "d21",
"fieldDataType": "string",
"iotField": "AlmClass5"
},
{
"subTable": "20230531xinzengbianliang01",
"dbField": "d22",
"fieldDataType": "string",
"iotField": "AlmCode5"
}
]
}
]
},
{
"subTable": "zengjiabianliang02",
"dbField": "d69",
"fieldDataType": "Int",
"iotField": "Alarm"
},
{
"subTable": "zengjiabianliang02",
"dbField": "d70",
"fieldDataType": "Int",
"iotField": "Status"
},
{
"subTable": "zengjiabianliang02",
"dbField": "d83",
"fieldDataType": "float",
"iotField": "WarmTemp1"
},
{
"subTable": "zengjiabianliang02",
"dbField": "d84",
"fieldDataType": "float",
"iotField": "WarmTemp2"
},
{
"subTable": "20230531xinzengbianliang01",
"dbField": "d14",
"fieldDataType": "float",
"iotField": "WarmTemp"
},
{
"subTable": "20230531xinzengbianliang01",
"dbField": "d15",
"fieldDataType": "float",
"iotField": "RightWorkTemp"
},
{
"subTable": "20230531xinzengbianliang01",
"dbField": "d16",
"fieldDataType": "float",
"iotField": "WorkTemp"
},
{
"subTable": "20230531xinzengbianliang01",
"dbField": "d17",
"fieldDataType": "int",
"iotField": "PowTime"
},
{
"subTable": "20230531xinzengbianliang01",
"dbField": "d18",
"fieldDataType": "float",
"iotField": "LeftWorkTemp"
},
{
"subTable": "20230531xinzengbianliang01",
"dbField": "d19",
"fieldDataType": "int",
"iotField": "Alarm"
},
{
"subTable": "20230531xinzengbianliang01",
"dbField": "d23",
"fieldDataType": "float",
"iotField": "InTemp"
},
{
"subTable": "20230531xinzengbianliang01",
"dbField": "d24",
"fieldDataType": "float",
"iotField": "GasConsumption"
},
{
"subTable": "20230531xinzengbianliang01",
"dbField": "d25",
"fieldDataType": "float",
"iotField": "PowerConsumption"
},
{
"subTable": "20230531xinzengbianliang01",
"dbField": "d26",
"fieldDataType": "int",
"iotField": "Status"
}
]
}
}
]
\ No newline at end of file
......@@ -14,7 +14,7 @@ import springfox.documentation.swagger2.annotations.EnableSwagger2;
@Configuration
@EnableSwagger2
@Profile({"dev","pro"})
@Profile({"dev","master"})
public class SwaggerConfig {
@Bean("mqttservice")
......
......@@ -23,6 +23,17 @@ spring.data.mongodb.username=admin
spring.data.mongodb.password=123456
spring.data.mongodb.database=gscada
#redis
spring.redis.database=0
spring.redis.host=127.0.0.1
spring.redis.port=63790
spring.redis.password=123456
spring.redis.jedis.pool.max-active=8
spring.redis.jedis.pool.max-wait=8
spring.redis.jedis.pool.max-idle=8
spring.redis.jedis.pool.min-idle=0
spring.redis.timeout=800
......@@ -16,8 +16,24 @@ spring.datasource.mysql.druid.min-idle=5
spring.datasource.mysql.druid.max-active=30
spring.datasource.mysql.druid.max-wait=50000
#mongodb
spring.data.mongodb.host=127.0.0.1
spring.data.mongodb.port=27017
#spring.data.mongodb.username=dev
#spring.data.mongodb.username=root
#spring.data.mongodb.password=123456
spring.data.mongodb.database=gscada
#spring.data.mongodb.authentication-database=admin
#redis
spring.redis.database=0
spring.redis.host=127.0.0.1
spring.redis.port=63790
spring.redis.password=123456
spring.redis.jedis.pool.max-active=8
spring.redis.jedis.pool.max-wait=8
spring.redis.jedis.pool.max-idle=8
spring.redis.jedis.pool.min-idle=0
spring.redis.timeout=800
......@@ -8,6 +8,8 @@ spring.jackson.time-zone=GMT+8
spring.jackson.default-property-inclusion:non_null
spring.servlet.multipart.max-file-size=104857600
spring.servlet.multipart.max-request-size=104857600
# 设置进程名称
spring.application.name=iot
# mqtt��������
HOST=tcp://127.0.0.1:1883
......@@ -50,14 +52,3 @@ spring.thymeleaf.prefix=classpath:/templates/
spring.thymeleaf.suffix=.html
spring.thymeleaf.encoding=UTF-8
spring.thymeleaf.cache=false
\ No newline at end of file
#redis 该项目没有使用redis,保留配置
spring.redis.database=0
spring.redis.host=127.0.0.1
spring.redis.port=63790
spring.redis.password=123456
spring.redis.jedis.pool.max-active=8
spring.redis.jedis.pool.max-wait=8
spring.redis.jedis.pool.max-idle=8
spring.redis.jedis.pool.min-idle=0
spring.redis.timeout=800
\ No newline at end of file
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论