|
|
@@ -1,9 +1,11 @@
|
|
|
package com.jyxt.thridparty.exchange.bx.repository;
|
|
|
|
|
|
+import cn.hutool.crypto.digest.DigestUtil;
|
|
|
import com.alibaba.fastjson2.JSONArray;
|
|
|
import com.alibaba.fastjson2.JSONObject;
|
|
|
import com.jyxt.thridparty.exchange.bx.VendorBinxiang;
|
|
|
import com.jyxt.thridparty.exchange.bx.entity.EquipRelation;
|
|
|
+import com.jyxt.thridparty.exchange.bx.entity.TWsdyjjlb;
|
|
|
import com.jyxt.thridparty.exchange.bx.utils.HttpClientUtil;
|
|
|
import org.slf4j.Logger;
|
|
|
import org.slf4j.LoggerFactory;
|
|
|
@@ -14,6 +16,7 @@ import org.springframework.jdbc.core.JdbcTemplate;
|
|
|
import org.springframework.jdbc.core.RowMapper;
|
|
|
import org.springframework.stereotype.Repository;
|
|
|
|
|
|
+import java.nio.charset.StandardCharsets;
|
|
|
import java.security.MessageDigest;
|
|
|
import java.security.NoSuchAlgorithmException;
|
|
|
import java.time.Instant;
|
|
|
@@ -28,12 +31,18 @@ public class VendorBinxiangRepository {
|
|
|
@Autowired
|
|
|
private JdbcTemplate jdbcTemplate;
|
|
|
|
|
|
+ @Value("${equip.uri}")
|
|
|
+ private String equipUri;
|
|
|
+
|
|
|
@Value("${equip.appKey}")
|
|
|
private String equipAppKey;
|
|
|
|
|
|
@Value("${equip.appSecret}")
|
|
|
private String equipAppSecret;
|
|
|
|
|
|
+ @Value("${equip.alarmhistory}")
|
|
|
+ private String equipAlarmhistory;
|
|
|
+
|
|
|
@Value("${humiture.uri}")
|
|
|
private String humitureUri;
|
|
|
|
|
|
@@ -68,10 +77,10 @@ public class VendorBinxiangRepository {
|
|
|
Set<VendorBinxiang> bxSet = new LinkedHashSet<>();
|
|
|
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
|
|
|
for(EquipRelation twksbpzb : list){
|
|
|
- params.put("devices",twksbpzb.getDeviceNo());
|
|
|
- String paramStr = "devices_"+twksbpzb.getDeviceNo()+"_start"+startTime+"_end"+endTime;
|
|
|
+ params.put("device",twksbpzb.getDeviceNo_());
|
|
|
+ String paramStr = "device_"+twksbpzb.getDeviceNo_()+"_end_"+endTime+"_start_"+startTime;
|
|
|
String origin = humitureAppKey+"_"+paramStr+"_"+second+"_"+humitureAppSecret;
|
|
|
- String sign = encryptMD5(origin);
|
|
|
+ String sign = DigestUtil.md5Hex(origin).toUpperCase();
|
|
|
headers.put("sign",sign);
|
|
|
String result = HttpClientUtil.doPost(humitureUri+humitureHistory,headers,params);
|
|
|
JSONObject reposn = JSONObject.parseObject(result);
|
|
|
@@ -92,79 +101,171 @@ public class VendorBinxiangRepository {
|
|
|
VendorBinxiang bx = new VendorBinxiang();
|
|
|
long time = Long.parseLong(item.getString("time"));
|
|
|
String date = LocalDateTime.ofInstant(Instant.ofEpochSecond(time), ZoneId.systemDefault()).format(formatter);
|
|
|
- bx.setId(twksbpzb.getDeviceNo()+"-"+time+"-"+type);
|
|
|
+ bx.setId(twksbpzb.getDeviceNo_()+"-"+time+"-"+type);
|
|
|
bx.setWendu(item.getString("temp"));
|
|
|
bx.setShidu(item.getString("hum"));
|
|
|
- bx.setBinXiangId(twksbpzb.getDeviceNo());
|
|
|
- bx.setBinxiangName(twksbpzb.getDeviceName());
|
|
|
+ bx.setBinXiangId(twksbpzb.getDeviceNo_());
|
|
|
+ bx.setBinxiangName(twksbpzb.getDeviceName_());
|
|
|
bx.setCaiJiId(channel.getString("serial"));
|
|
|
- bx.setCaiJiName(twksbpzb.getDeviceName());
|
|
|
+ bx.setCaiJiName(twksbpzb.getDeviceName_());
|
|
|
bx.setCaiJiTime(date);
|
|
|
- EquipRelation wenDu = getWsdRange(twksbpzb.getDeviceNo(),"温度");
|
|
|
- bx.setWenduUp(wenDu.getHigh());
|
|
|
- bx.setWenduDown(wenDu.getLow());
|
|
|
- EquipRelation shiDu = getWsdRange(twksbpzb.getDeviceNo(),"湿度");
|
|
|
- bx.setShiduUp(shiDu.getHigh());
|
|
|
- bx.setShiduDown(shiDu.getLow());
|
|
|
- bx.setShiyanzhuName(shiDu.getDeptName());
|
|
|
- bx.setShiyanzhuId(shiDu.getDeptId());
|
|
|
- bx.setType(shiDu.getDeviceType());
|
|
|
- bx.setArea(shiDu.getArea());
|
|
|
+ EquipRelation wenDu = getWsdRange(twksbpzb.getDeviceNo_(),"温度");
|
|
|
+ if (wenDu != null){
|
|
|
+ bx.setWenduUp(wenDu.getHigh_());
|
|
|
+ bx.setWenduDown(wenDu.getLow_());
|
|
|
+ bx.setShiyanzhuName(wenDu.getDeptName_());
|
|
|
+ bx.setShiyanzhuId(wenDu.getDeptId_());
|
|
|
+ bx.setType(wenDu.getDeviceType_());
|
|
|
+ bx.setArea(wenDu.getArea_());
|
|
|
+ }
|
|
|
+ EquipRelation shiDu = getWsdRange(twksbpzb.getDeviceNo_(),"湿度");
|
|
|
+ if (shiDu != null){
|
|
|
+ bx.setShiduUp(shiDu.getHigh_());
|
|
|
+ bx.setShiduDown(shiDu.getLow_());
|
|
|
+ bx.setShiyanzhuName(shiDu.getDeptName_());
|
|
|
+ bx.setShiyanzhuId(shiDu.getDeptId_());
|
|
|
+ bx.setType(shiDu.getDeviceType_());
|
|
|
+ bx.setArea(shiDu.getArea_());
|
|
|
+ }
|
|
|
bxSet.add(bx);
|
|
|
}
|
|
|
}
|
|
|
- if (channel.get("dataitem").equals("19")){
|
|
|
+ if (type.equals("19")){
|
|
|
JSONArray values = channel.getJSONArray("values");
|
|
|
for(Object value : values){
|
|
|
JSONObject item = (JSONObject) value;
|
|
|
VendorBinxiang bx = new VendorBinxiang();
|
|
|
long time = Long.parseLong(item.getString("time"));
|
|
|
String date = LocalDateTime.ofInstant(Instant.ofEpochSecond(time), ZoneId.systemDefault()).format(formatter);
|
|
|
- bx.setId(twksbpzb.getDeviceNo()+"-"+time+"-"+type);
|
|
|
+ bx.setId(twksbpzb.getDeviceNo_()+"-"+time+"-"+type);
|
|
|
bx.setWendu(item.getString("temp"));
|
|
|
- bx.setBinXiangId(twksbpzb.getDeviceNo());
|
|
|
- bx.setBinxiangName(twksbpzb.getDeviceName());
|
|
|
+ bx.setBinXiangId(twksbpzb.getDeviceNo_());
|
|
|
+ bx.setBinxiangName(twksbpzb.getDeviceName_());
|
|
|
bx.setCaiJiId(channel.getString("serial"));
|
|
|
- bx.setCaiJiName(twksbpzb.getDeviceName());
|
|
|
+ bx.setCaiJiName(twksbpzb.getDeviceName_());
|
|
|
bx.setCaiJiTime(date);
|
|
|
- EquipRelation wenDu = getWsdRange(twksbpzb.getDeviceNo(),"温度");
|
|
|
- bx.setWenduUp(wenDu.getHigh());
|
|
|
- bx.setWenduDown(wenDu.getLow());
|
|
|
- bx.setShiyanzhuName(wenDu.getDeptName());
|
|
|
- bx.setShiyanzhuId(wenDu.getDeptId());
|
|
|
- bx.setType(wenDu.getDeviceType());
|
|
|
- bx.setArea(wenDu.getArea());
|
|
|
- bxSet.add(bx);
|
|
|
+ EquipRelation wenDu = getWsdRange(twksbpzb.getDeviceNo_(),"温度");
|
|
|
+ if (wenDu != null){
|
|
|
+ bx.setWenduUp(wenDu.getHigh_());
|
|
|
+ bx.setWenduDown(wenDu.getLow_());
|
|
|
+ bx.setShiyanzhuName(wenDu.getDeptName_());
|
|
|
+ bx.setShiyanzhuId(wenDu.getDeptId_());
|
|
|
+ bx.setType(wenDu.getDeviceType_());
|
|
|
+ bx.setArea(wenDu.getArea_());
|
|
|
+ bxSet.add(bx);
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
+ }else {
|
|
|
+ log.info("温湿度数据拉取异常,请求头headers:{},请求参数params:{},异常返回值:{}",headers,params,result);
|
|
|
}
|
|
|
}
|
|
|
return new ArrayList<>(bxSet);
|
|
|
}
|
|
|
|
|
|
- public EquipRelation getWsdRange(String deviceNo,String type){
|
|
|
+ public EquipRelation getWsdRange(String deviceNo,String type) {
|
|
|
+ EquipRelation equipRelation = null;
|
|
|
String sql = "SELECT * FROM equip_relation WHERE enable_='是' and device_no_ = ? and alarm_type_=? ";
|
|
|
- final EquipRelation equipRelation = jdbcTemplate.queryForObject(sql, new Object[]{deviceNo,type}, (rs, rowNum) -> {
|
|
|
- EquipRelation er = new EquipRelation();
|
|
|
- er.setLow(rs.getString("low_"));
|
|
|
- er.setHigh(rs.getString("high_"));
|
|
|
- er.setDeviceType(rs.getString("device_type_"));
|
|
|
- er.setArea(rs.getString("area_"));
|
|
|
- er.setDeptId(rs.getString("dept_id_"));
|
|
|
- er.setDeptName(rs.getString("dept_name_"));
|
|
|
- return er;
|
|
|
- });
|
|
|
+ try {
|
|
|
+ equipRelation = jdbcTemplate.queryForObject(sql, new Object[]{deviceNo, type}, (rs, rowNum) -> {
|
|
|
+ EquipRelation er = new EquipRelation();
|
|
|
+ er.setLow_(rs.getString("low_"));
|
|
|
+ er.setHigh_(rs.getString("high_"));
|
|
|
+ er.setDeviceType_(rs.getString("device_type_"));
|
|
|
+ er.setArea_(rs.getString("area_"));
|
|
|
+ er.setDeptId_(rs.getString("dept_id_"));
|
|
|
+ er.setDeptName_(rs.getString("dept_name_"));
|
|
|
+ return er;
|
|
|
+ });
|
|
|
+ } catch (Exception e) {
|
|
|
+ log.warn("deviceNo:{},type:{},sql:{}",deviceNo,type, sql);
|
|
|
+ return null;
|
|
|
+ }
|
|
|
return equipRelation;
|
|
|
}
|
|
|
|
|
|
+
|
|
|
+ public List<TWsdyjjlb> getAlarmData(){
|
|
|
+ String second = String.valueOf(Instant.now().getEpochSecond());
|
|
|
+ Map<String, String> headers = new HashMap<>();
|
|
|
+ headers.put("appKey",equipAppKey);
|
|
|
+ headers.put("time",second);
|
|
|
+ Map<String, String> params = new HashMap<>();
|
|
|
+ LocalDateTime now = LocalDateTime.now();
|
|
|
+ long endTime = LocalDateTime.of(now.getYear(), now.getMonthValue(), now.getDayOfMonth(), now.getHour(), now.getMinute()).
|
|
|
+ atZone(ZoneId.systemDefault()).toInstant().getEpochSecond();
|
|
|
+ long startTime = LocalDateTime.of(now.getYear(), now.getMonthValue(), 2, 17, 0).
|
|
|
+ atZone(ZoneId.systemDefault()).toInstant().getEpochSecond();
|
|
|
+ params.put("starttime",String.valueOf(startTime));
|
|
|
+ params.put("endtime",String.valueOf(endTime));
|
|
|
+ params.put("tsign","1");
|
|
|
+ params.put("eventfield","temperature");
|
|
|
+ params.put("level","1,2,3,4,5");
|
|
|
+ params.put("isnormalnotification","0");
|
|
|
+ String sql = "SELECT device_no_,serial_no_ from equip_relation WHERE enable_='是' GROUP BY device_no_";
|
|
|
+ RowMapper<EquipRelation> infoRowMapper = new BeanPropertyRowMapper<>(EquipRelation.class);
|
|
|
+ List<EquipRelation> list = jdbcTemplate.query(sql, infoRowMapper);
|
|
|
+ List<TWsdyjjlb> alarmList = new ArrayList<>();
|
|
|
+ DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
|
|
|
+ for(EquipRelation twksbpzb : list){
|
|
|
+ params.put("mainserial",twksbpzb.getDeviceNo_());
|
|
|
+ params.put("serial",twksbpzb.getSerialNo_());
|
|
|
+ String paramStr = "_endtime_"+endTime+"_eventfield_"+"temperature"+"_isnormalnotification_"+"0"+"_level_"+"1,2,3,4,5"
|
|
|
+ +"_mainserial_"+twksbpzb.getDeviceNo_()+"_serial_"+twksbpzb.getSerialNo_()+"_starttime_"+startTime+"_tsign_"+"1_";
|
|
|
+ String origin = equipAppKey + paramStr + second + "_" + equipAppSecret;
|
|
|
+ String sign = DigestUtil.md5Hex(origin).toUpperCase();
|
|
|
+ headers.put("sign",sign);
|
|
|
+ String result = HttpClientUtil.doGet(equipUri+equipAlarmhistory,headers,params);
|
|
|
+ JSONObject reposn = JSONObject.parseObject(result);
|
|
|
+ if (reposn.get("status").equals("0000")){
|
|
|
+ JSONArray data = reposn.getJSONArray("data");
|
|
|
+ if(!data.isEmpty()){
|
|
|
+ for(Object object : data){
|
|
|
+ JSONObject alarm = (JSONObject) object;
|
|
|
+ TWsdyjjlb wsdyjjlb = new TWsdyjjlb();
|
|
|
+ wsdyjjlb.setId(alarm.getString("serial")+alarm.getInteger("dataTime"));
|
|
|
+ wsdyjjlb.setMainserial(alarm.getString("mainSerial"));
|
|
|
+ wsdyjjlb.setDevicetitle(alarm.getString("deviceTitle"));
|
|
|
+ wsdyjjlb.setSerial(alarm.getString("serial"));
|
|
|
+ wsdyjjlb.setSerialtitle(alarm.getString("serialTitle"));
|
|
|
+ wsdyjjlb.setMessage(alarm.getString("message"));
|
|
|
+ wsdyjjlb.setValue(alarm.getString("value"));
|
|
|
+ String dataTime = LocalDateTime.ofInstant(Instant.ofEpochSecond(alarm.getInteger("dataTime")), ZoneId.systemDefault()).format(formatter);
|
|
|
+ String sendTime = LocalDateTime.ofInstant(Instant.ofEpochSecond(alarm.getInteger("sendTime")), ZoneId.systemDefault()).format(formatter);
|
|
|
+ wsdyjjlb.setDatatime(dataTime);
|
|
|
+ wsdyjjlb.setSendtime(sendTime);
|
|
|
+ wsdyjjlb.setTsign(alarm.get("tsign").toString());
|
|
|
+ wsdyjjlb.setEventfield(alarm.getString("eventField"));
|
|
|
+ wsdyjjlb.setIsnormalnotification(alarm.getString("isNormalNotification"));
|
|
|
+ wsdyjjlb.setLevel(alarm.getString("level"));
|
|
|
+ wsdyjjlb.setIshandled(alarm.get("isHandled").toString());
|
|
|
+ wsdyjjlb.setAlarmreason(alarm.getString("alarmReason"));
|
|
|
+ wsdyjjlb.setSolution(alarm.getString("solution"));
|
|
|
+ wsdyjjlb.setHandledby(alarm.getString("handledBy"));
|
|
|
+ if (alarm.getInteger("handledTime")!=0){
|
|
|
+ String handledTime = LocalDateTime.ofInstant(Instant.ofEpochSecond(alarm.getInteger("handledTime")), ZoneId.systemDefault()).format(formatter);
|
|
|
+ wsdyjjlb.setHandledtime(handledTime);
|
|
|
+ }else {
|
|
|
+ wsdyjjlb.setHandledtime(alarm.get("handledTime").toString());
|
|
|
+ }
|
|
|
+ alarmList.add(wsdyjjlb);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }else {
|
|
|
+ log.info("告警数据拉取异常,请求头headers:{},请求参数params:{},异常返回值:{}",headers,params,result);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return alarmList;
|
|
|
+ }
|
|
|
+
|
|
|
public void getEquipList(){
|
|
|
String second = String.valueOf(Instant.now().getEpochSecond());
|
|
|
String origin = equipAppKey+"_"+second+"_"+equipAppSecret;
|
|
|
log.warn(origin);
|
|
|
- String sign = encryptMD5(origin);
|
|
|
+ String sign = DigestUtil.md5Hex(origin).toUpperCase();
|
|
|
Map<String, String> headers = new HashMap<>();
|
|
|
headers.put("appKey",equipAppKey);
|
|
|
headers.put("time",second);
|
|
|
@@ -187,57 +288,12 @@ public class VendorBinxiangRepository {
|
|
|
String paramStr = "devices_66111897,66120895_force_1";
|
|
|
String origin = humitureAppKey+"_"+paramStr+"_"+second+"_"+humitureAppSecret;
|
|
|
log.warn(origin);
|
|
|
- String sign = encryptMD5(origin);
|
|
|
+ String sign = DigestUtil.md5Hex(origin).toUpperCase();
|
|
|
log.warn(sign);
|
|
|
headers.put("sign",sign);
|
|
|
String result = HttpClientUtil.doPost(humitureUri+humitureLatest,headers,params);
|
|
|
log.warn(result);
|
|
|
}
|
|
|
|
|
|
- public static String encryptMD5(String input) {
|
|
|
- try {
|
|
|
- // 创建MD5加密对象
|
|
|
- MessageDigest md = MessageDigest.getInstance("MD5");
|
|
|
- // 执行加密操作
|
|
|
- byte[] messageDigest = md.digest(input.getBytes());
|
|
|
- // 将字节数组转换为16进制字符串
|
|
|
- StringBuilder hexString = new StringBuilder();
|
|
|
- for (byte b : messageDigest) {
|
|
|
- String hex = Integer.toHexString(0xff & b);
|
|
|
- if (hex.length() == 1) {
|
|
|
- hexString.append('0');
|
|
|
- }
|
|
|
- hexString.append(hex);
|
|
|
- }
|
|
|
- return hexString.toString().toUpperCase();
|
|
|
- } catch (NoSuchAlgorithmException e) {
|
|
|
- throw new RuntimeException(e);
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
-// public List<VendorBinxiang> query() {
|
|
|
-// log.info("sql");
|
|
|
-// return jdbcTemplate.query(
|
|
|
-// "sqlsssss",new RowMapper<VendorBinxiang>(){
|
|
|
-//
|
|
|
-// @Override
|
|
|
-// public VendorBinxiang mapRow(ResultSet rs, int rowNum) throws SQLException {
|
|
|
-// VendorBinxiang bx = new VendorBinxiang();
|
|
|
-// bx.setId(rs.getString("id"));
|
|
|
-// bx.setWendu(rs.getString("温度"));
|
|
|
-// bx.setBinXiangId(rs.getString("冰箱ID"));
|
|
|
-// bx.setBinxiangName(rs.getString("冰箱名称"));
|
|
|
-// bx.setCaiJiId(rs.getString("采集器ID"));
|
|
|
-// bx.setCaiJiName(rs.getString("采集器名称"));
|
|
|
-// bx.setCaiJiTime(rs.getString("采集时间"));
|
|
|
-// bx.setWenduUp(rs.getString("温度上限"));
|
|
|
-// bx.setWenduDown(rs.getString("温度下限"));
|
|
|
-// bx.setShiyanzhuName(rs.getString("实验组"));
|
|
|
-// bx.setShiyanzhuId(rs.getString("实验组ID"));
|
|
|
-// return bx;
|
|
|
-// }
|
|
|
-// }
|
|
|
-// );
|
|
|
-// }
|
|
|
|
|
|
}
|