You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

73 lines
2.8 KiB
Java

2 years ago
package com.xydl.util;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
2 years ago
import java.sql.Timestamp;
2 years ago
import java.util.*;
2 years ago
import java.util.stream.Collectors;
2 years ago
public class FormatUtil {
2 years ago
public static String mqttFormatTransform(List<Map<String,Object>> list, Map<String,String> fieldMap){
2 years ago
ObjectMapper objectMapper = new ObjectMapper();
2 years ago
2 years ago
Map<String,Object> resultMap = new HashMap<String,Object>(){{
2 years ago
put("AssetList",list.stream().map(e -> recordTransform(e,fieldMap)).collect(Collectors.toList()));
2 years ago
}};
2 years ago
2 years ago
String jsonString = null;
try {
jsonString = objectMapper.writeValueAsString(resultMap);
} catch (JsonProcessingException e) {
throw new RuntimeException(e);
}
return jsonString;
}
2 years ago
public static Map<String,Object> recordTransform(Map<String, Object> record, Map<String, String> fieldMap){
Map<String,Object> mqttRecord = new TreeMap<>();
List<Map<String,Object>> attribuiteList = new ArrayList<>();
for(String key : record.keySet()){
if(fieldMap.containsKey(key)){
attribuiteList.add(new HashMap<String,Object>(){{
put("AttributeCode", fieldMap.get(key));
put("DataValue",record.get(key));
}});
}
}
mqttRecord.put("AssetCode",record.get("sensorid"));
mqttRecord.put("AttributeList",attribuiteList);
String captureTime = record.get("d_time") !=null ? (String) record.get("d_time") : (String) record.get("capturetime");
mqttRecord.put("Timestamp",Timestamp.valueOf(captureTime).getTime());
return mqttRecord;
2 years ago
}
2 years ago
2 years ago
// private static List<Map<String,Object>> transformFieldForList(Map<String, String> fieldMap, List<Map<String, Object>> oriFieldList) {
// List<Map<String,Object>> newDeviceIDData = new ArrayList<>();
// for(Map<String,Object> fieldValueMap : oriFieldList){
// newDeviceIDData.add(transformOneRecord(fieldMap,fieldValueMap));
// }
// return newDeviceIDData;
// }
//
// private static Map<String,Object> transformOneRecord(Map<String, String> fieldMap, Map<String, Object> fieldValueMap) {
// Map<String,Object> newFieldValueMap = new HashMap<>();
// for(String field : fieldMap.keySet()){
// if(fieldValueMap.containsKey(field)){
// newFieldValueMap.put(fieldMap.get(field),fieldValueMap.get(field) );
// }
// }
// return newFieldValueMap;
// }
// public static void main(String[] args) {
// System.out.println(Timestamp.valueOf("2022-05-01 12:11:00").getTime());
// System.out.println(new Timestamp(new Date(Timestamp.valueOf("2022-05-01 12:11:00").getTime()).getTime()));
// }
2 years ago
}