فهرست منبع

[task-2813]深圳三院-温控对接

szjbdgzl 1 سال پیش
والد
کامیت
d99b6cd6ab

+ 5 - 0
exchange/pom.xml

@@ -40,6 +40,11 @@
             <artifactId>spring-boot-starter-test</artifactId>
             <scope>test</scope>
         </dependency>
+        <dependency>
+            <groupId>cn.hutool</groupId>
+            <artifactId>hutool-all</artifactId>
+            <version>5.7.10</version>
+        </dependency>
 
         <!-- Apache HttpClient -->
         <dependency>

+ 14 - 2
exchange/src/main/java/com/jyxt/thridparty/exchange/ExchangeApplication.java

@@ -1,6 +1,7 @@
 package com.jyxt.thridparty.exchange;
 
 import com.jyxt.thridparty.exchange.bx.VendorBinxiang;
+import com.jyxt.thridparty.exchange.bx.entity.TWsdyjjlb;
 import com.jyxt.thridparty.exchange.bx.repository.BinxiangRepository;
 import com.jyxt.thridparty.exchange.bx.repository.VendorBinxiangRepository;
 import org.slf4j.Logger;
@@ -36,8 +37,19 @@ public class ExchangeApplication implements CommandLineRunner {
         if(bxs != null){
             for (VendorBinxiang bx : bxs) {
                 try {
-                    binxiangRepository.save(bx);
-                    log.info(String.format("save a new id with: %s",bx.getId()));
+                    binxiangRepository.saveWsd(bx);
+                    log.info(String.format("save a wsd new id with: %s",bx.getId()));
+                }catch (Exception ex){
+                    log.error(ex.getMessage());
+                }
+            }
+        }
+        List<TWsdyjjlb> alarm = vendorBinxiangRepository.getAlarmData();
+        if(alarm != null){
+            for (TWsdyjjlb bx : alarm) {
+                try {
+                    binxiangRepository.saveAlarm(bx);
+                    log.info(String.format("save a alarm new id with: %s",bx.getId()));
                 }catch (Exception ex){
                     log.error(ex.getMessage());
                 }

+ 0 - 11
exchange/src/main/java/com/jyxt/thridparty/exchange/ExchangeConfiguration.java

@@ -1,6 +1,5 @@
 package com.jyxt.thridparty.exchange;
 
-import org.springframework.beans.factory.annotation.Qualifier;
 import org.springframework.boot.context.properties.ConfigurationProperties;
 import org.springframework.boot.jdbc.DataSourceBuilder;
 import org.springframework.context.annotation.Bean;
@@ -19,20 +18,10 @@ public class ExchangeConfiguration {
         return DataSourceBuilder.create().build();
     }
 
-    @Bean(name = "secondDatasource")
-    @ConfigurationProperties(prefix = "spring.second-datasource")
-    public DataSource secondDataSource() {
-        return DataSourceBuilder.create().build();
-    }
-
     @Bean
     @Primary
     public JdbcTemplate primaryJdbcTemplate(DataSource dataSource) {
         return new JdbcTemplate(dataSource);
     }
 
-    @Bean(name = "secondJdbcTemplate")
-    public JdbcTemplate secondJdbcTemplate(@Qualifier("secondDatasource") DataSource dataSource) {
-        return new JdbcTemplate(dataSource);
-    }
 }

+ 106 - 95
exchange/src/main/java/com/jyxt/thridparty/exchange/bx/entity/EquipRelation.java

@@ -14,230 +14,241 @@ public class EquipRelation implements Serializable {
 /**
      * 主键
      */
-    private String id;
+    private String id_;
 /**
      * 创建时间
      */
-    private Date createTime;
+    private Date createTime_;
 /**
      * 创建人
      */
-    private String createBy;
+    private String createBy_;
 /**
      * 冰箱设备编号
      */
-    private String bxBianHao;
+    private String bxBianHao_;
 /**
      * 原设备编号
      */
-    private String sheBeiBianHao;
+    private String sheBeiBianHao_;
 /**
      * 部门ID
      */
-    private String deptId;
+    private String deptId_;
 /**
      * 部门名称
      */
-    private String deptName;
+    private String deptName_;
 /**
      * 组织名称
      */
-    private String groupName;
+    private String groupName_;
 /**
      * 设备号
      */
-    private String deviceNo;
+    private String deviceNo_;
 /**
      * 设备名称
      */
-    private String deviceName;
+    private String deviceName_;
 /**
      * 测点号
      */
-    private String serialNo;
+    private String serialNo_;
 /**
      * 测点名称
      */
-    private String serialName;
+    private String serialName_;
 /**
      * 资产类型
      */
-    private String assetType;
+    private String assetType_;
 /**
      * 报警类型
      */
-    private String alarmType;
+    private String alarmType_;
 /**
      * 温湿度下限
      */
-    private String low;
+    private String low_;
 /**
      * 温湿度上限
      */
-    private String high;
+    private String high_;
 /**
      * 是否启用
      */
-    private String enable;
+    private String enable_;
 /**
      * 设备类型
      */
-    private String deviceType;
+    private String deviceType_;
 /**
      * 区域
      */
-    private String area;
+    private String area_;
 
-    public String getId() {
-        return id;
+    private String diDian_;
+
+    public String getDiDian_() {
+        return diDian_;
+    }
+
+    public void setDiDian_(String diDian_) {
+        this.diDian_ = diDian_;
     }
 
-    public void setId(String id) {
-        this.id = id;
+    public String getId_() {
+        return id_;
     }
 
-    public Date getCreateTime() {
-        return createTime;
+    public void setId_(String id_) {
+        this.id_ = id_;
     }
 
-    public void setCreateTime(Date createTime) {
-        this.createTime = createTime;
+    public Date getCreateTime_() {
+        return createTime_;
     }
 
-    public String getCreateBy() {
-        return createBy;
+    public void setCreateTime_(Date createTime_) {
+        this.createTime_ = createTime_;
     }
 
-    public void setCreateBy(String createBy) {
-        this.createBy = createBy;
+    public String getCreateBy_() {
+        return createBy_;
     }
 
-    public String getBxBianHao() {
-        return bxBianHao;
+    public void setCreateBy_(String createBy_) {
+        this.createBy_ = createBy_;
     }
 
-    public void setBxBianHao(String bxBianHao) {
-        this.bxBianHao = bxBianHao;
+    public String getBxBianHao_() {
+        return bxBianHao_;
     }
 
-    public String getSheBeiBianHao() {
-        return sheBeiBianHao;
+    public void setBxBianHao_(String bxBianHao_) {
+        this.bxBianHao_ = bxBianHao_;
     }
 
-    public void setSheBeiBianHao(String sheBeiBianHao) {
-        this.sheBeiBianHao = sheBeiBianHao;
+    public String getSheBeiBianHao_() {
+        return sheBeiBianHao_;
     }
 
-    public String getDeptId() {
-        return deptId;
+    public void setSheBeiBianHao_(String sheBeiBianHao_) {
+        this.sheBeiBianHao_ = sheBeiBianHao_;
     }
 
-    public void setDeptId(String deptId) {
-        this.deptId = deptId;
+    public String getDeptId_() {
+        return deptId_;
     }
 
-    public String getDeptName() {
-        return deptName;
+    public void setDeptId_(String deptId_) {
+        this.deptId_ = deptId_;
     }
 
-    public void setDeptName(String deptName) {
-        this.deptName = deptName;
+    public String getDeptName_() {
+        return deptName_;
     }
 
-    public String getGroupName() {
-        return groupName;
+    public void setDeptName_(String deptName_) {
+        this.deptName_ = deptName_;
     }
 
-    public void setGroupName(String groupName) {
-        this.groupName = groupName;
+    public String getGroupName_() {
+        return groupName_;
     }
 
-    public String getDeviceNo() {
-        return deviceNo;
+    public void setGroupName_(String groupName_) {
+        this.groupName_ = groupName_;
     }
 
-    public void setDeviceNo(String deviceNo) {
-        this.deviceNo = deviceNo;
+    public String getDeviceNo_() {
+        return deviceNo_;
     }
 
-    public String getDeviceName() {
-        return deviceName;
+    public void setDeviceNo_(String deviceNo_) {
+        this.deviceNo_ = deviceNo_;
     }
 
-    public void setDeviceName(String deviceName) {
-        this.deviceName = deviceName;
+    public String getDeviceName_() {
+        return deviceName_;
     }
 
-    public String getSerialNo() {
-        return serialNo;
+    public void setDeviceName_(String deviceName_) {
+        this.deviceName_ = deviceName_;
     }
 
-    public void setSerialNo(String serialNo) {
-        this.serialNo = serialNo;
+    public String getSerialNo_() {
+        return serialNo_;
     }
 
-    public String getSerialName() {
-        return serialName;
+    public void setSerialNo_(String serialNo_) {
+        this.serialNo_ = serialNo_;
     }
 
-    public void setSerialName(String serialName) {
-        this.serialName = serialName;
+    public String getSerialName_() {
+        return serialName_;
     }
 
-    public String getAssetType() {
-        return assetType;
+    public void setSerialName_(String serialName_) {
+        this.serialName_ = serialName_;
     }
 
-    public void setAssetType(String assetType) {
-        this.assetType = assetType;
+    public String getAssetType_() {
+        return assetType_;
     }
 
-    public String getAlarmType() {
-        return alarmType;
+    public void setAssetType_(String assetType_) {
+        this.assetType_ = assetType_;
     }
 
-    public void setAlarmType(String alarmType) {
-        this.alarmType = alarmType;
+    public String getAlarmType_() {
+        return alarmType_;
     }
 
-    public String getLow() {
-        return low;
+    public void setAlarmType_(String alarmType_) {
+        this.alarmType_ = alarmType_;
     }
 
-    public void setLow(String low) {
-        this.low = low;
+    public String getLow_() {
+        return low_;
     }
 
-    public String getHigh() {
-        return high;
+    public void setLow_(String low_) {
+        this.low_ = low_;
     }
 
-    public void setHigh(String high) {
-        this.high = high;
+    public String getHigh_() {
+        return high_;
     }
 
-    public String getEnable() {
-        return enable;
+    public void setHigh_(String high_) {
+        this.high_ = high_;
     }
 
-    public void setEnable(String enable) {
-        this.enable = enable;
+    public String getEnable_() {
+        return enable_;
     }
 
-    public String getDeviceType() {
-        return deviceType;
+    public void setEnable_(String enable_) {
+        this.enable_ = enable_;
     }
 
-    public void setDeviceType(String deviceType) {
-        this.deviceType = deviceType;
+    public String getDeviceType_() {
+        return deviceType_;
     }
 
-    public String getArea() {
-        return area;
+    public void setDeviceType_(String deviceType_) {
+        this.deviceType_ = deviceType_;
     }
 
-    public void setArea(String area) {
-        this.area = area;
+    public String getArea_() {
+        return area_;
     }
+
+    public void setArea_(String area_) {
+        this.area_ = area_;
+    }
+
 }
 

+ 232 - 0
exchange/src/main/java/com/jyxt/thridparty/exchange/bx/entity/TWsdyjjlb.java

@@ -0,0 +1,232 @@
+package com.jyxt.thridparty.exchange.bx.entity;
+
+import java.io.Serializable;
+
+/**
+ * (TWsdyjjlb)实体类
+ *
+ * @author makejava
+ * @since 2024-11-09 13:44:26
+ */
+public class TWsdyjjlb implements Serializable {
+    private static final long serialVersionUID = -17225392412271232L;
+
+    private String id;
+/**
+     * 8 位设备号
+     */
+    private String mainserial;
+/**
+     * 设备名称
+     */
+    private String devicetitle;
+/**
+     * 报警关联探头序列号
+     */
+    private String serial;
+/**
+     * 探头名称
+     */
+    private String serialtitle;
+/**
+     * 报警信息内容
+     */
+    private String message;
+/**
+     * 探头数值
+     */
+    private String value;
+/**
+     * 触发报警的数据时间戳
+     */
+    private String datatime;
+/**
+     * 报警发送时间戳
+     */
+    private String sendtime;
+/**
+     * 报警标志:0 - 报警1 - 预警
+     */
+    private String tsign;
+/**
+     * 报警指标:temperature - 温度humidity - 湿度voltage - 低电offline - 离线unplugged - 断电
+     */
+    private String eventfield;
+/**
+     * 报警信息类型:0 - 正常提醒 1 - 报警
+     */
+    private String isnormalnotification;
+/**
+     * 报警等级
+     */
+    private String level;
+/**
+     * 是否处理:
+1 - 是
+0 - 否
+     */
+    private String ishandled;
+/**
+     * 报警原因
+     */
+    private String alarmreason;
+/**
+     * 处理措施
+     */
+    private String solution;
+/**
+     * 处理人
+     */
+    private String handledby;
+/**
+     * 处理时间戳,未处理返回 0
+     */
+    private String handledtime;
+
+
+    public String getId() {
+        return id;
+    }
+
+    public void setId(String id) {
+        this.id = id;
+    }
+
+    public String getMainserial() {
+        return mainserial;
+    }
+
+    public void setMainserial(String mainserial) {
+        this.mainserial = mainserial;
+    }
+
+    public String getDevicetitle() {
+        return devicetitle;
+    }
+
+    public void setDevicetitle(String devicetitle) {
+        this.devicetitle = devicetitle;
+    }
+
+    public String getSerial() {
+        return serial;
+    }
+
+    public void setSerial(String serial) {
+        this.serial = serial;
+    }
+
+    public String getSerialtitle() {
+        return serialtitle;
+    }
+
+    public void setSerialtitle(String serialtitle) {
+        this.serialtitle = serialtitle;
+    }
+
+    public String getMessage() {
+        return message;
+    }
+
+    public void setMessage(String message) {
+        this.message = message;
+    }
+
+    public String getValue() {
+        return value;
+    }
+
+    public void setValue(String value) {
+        this.value = value;
+    }
+
+    public String getDatatime() {
+        return datatime;
+    }
+
+    public void setDatatime(String datatime) {
+        this.datatime = datatime;
+    }
+
+    public String getSendtime() {
+        return sendtime;
+    }
+
+    public void setSendtime(String sendtime) {
+        this.sendtime = sendtime;
+    }
+
+    public String getTsign() {
+        return tsign;
+    }
+
+    public void setTsign(String tsign) {
+        this.tsign = tsign;
+    }
+
+    public String getEventfield() {
+        return eventfield;
+    }
+
+    public void setEventfield(String eventfield) {
+        this.eventfield = eventfield;
+    }
+
+    public String getIsnormalnotification() {
+        return isnormalnotification;
+    }
+
+    public void setIsnormalnotification(String isnormalnotification) {
+        this.isnormalnotification = isnormalnotification;
+    }
+
+    public String getLevel() {
+        return level;
+    }
+
+    public void setLevel(String level) {
+        this.level = level;
+    }
+
+    public String getIshandled() {
+        return ishandled;
+    }
+
+    public void setIshandled(String ishandled) {
+        this.ishandled = ishandled;
+    }
+
+    public String getAlarmreason() {
+        return alarmreason;
+    }
+
+    public void setAlarmreason(String alarmreason) {
+        this.alarmreason = alarmreason;
+    }
+
+    public String getSolution() {
+        return solution;
+    }
+
+    public void setSolution(String solution) {
+        this.solution = solution;
+    }
+
+    public String getHandledby() {
+        return handledby;
+    }
+
+    public void setHandledby(String handledby) {
+        this.handledby = handledby;
+    }
+
+    public String getHandledtime() {
+        return handledtime;
+    }
+
+    public void setHandledtime(String handledtime) {
+        this.handledtime = handledtime;
+    }
+
+}
+

+ 51 - 13
exchange/src/main/java/com/jyxt/thridparty/exchange/bx/repository/BinxiangRepository.java

@@ -1,6 +1,7 @@
 package com.jyxt.thridparty.exchange.bx.repository;
 
 import com.jyxt.thridparty.exchange.bx.VendorBinxiang;
+import com.jyxt.thridparty.exchange.bx.entity.TWsdyjjlb;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Qualifier;
 import org.springframework.jdbc.core.JdbcTemplate;
@@ -15,14 +16,13 @@ import java.util.Calendar;
 public class BinxiangRepository {
 
     @Autowired
-    @Qualifier("secondJdbcTemplate")
     private JdbcTemplate jdbcTemplate;
 
-    public void save(final VendorBinxiang bx){
+    public void saveWsd(final VendorBinxiang bx){
         //sql语句
-        final String sql = "insert into t_dsfbxwdjl (id_,create_time_,cai_ji_shi_jian_,wen_du_,bing_xiang_id_,bing_xiang_ming_c,cai_ji_qi_id_," +
-                "cai_ji_qi_ming_ch,wen_du_shang_xian,wen_du_xia_xian_,shi_yan_zu_,shi_yan_zu_id_)" +
-                " values (?,?,?,?,?,?,?,?,?,?,?,?) ";
+        final String sql = "insert into t_dsfbxwdjl (id_,create_time_,cai_ji_shi_jian_,wen_du_,shi_du_,bing_xiang_id_,bing_xiang_ming_c,cai_ji_qi_id_," +
+                "cai_ji_qi_ming_ch,wen_du_shang_xian,wen_du_xia_xian_,shi_yan_zu_,shi_yan_zu_id_,shi_du_shang_xian,shi_du_xia_xian_,type_,area_)" +
+                " values (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) ";
         jdbcTemplate.update(new PreparedStatementCreator() {
             public PreparedStatement createPreparedStatement(Connection connection) throws SQLException {
                 PreparedStatement prepareStatement = connection.prepareStatement(sql);
@@ -30,14 +30,52 @@ public class BinxiangRepository {
                 prepareStatement.setTimestamp(2, Timestamp.from(Instant.now()));
                 prepareStatement.setString(3,bx.getCaiJiTime());
                 prepareStatement.setString(4,bx.getWendu());
-                prepareStatement.setString(5,bx.getBinXiangId());
-                prepareStatement.setString(6,bx.getBinxiangName());
-                prepareStatement.setString(7,bx.getCaiJiId());
-                prepareStatement.setString(8,bx.getCaiJiName());
-                prepareStatement.setString(9,bx.getWenduUp());
-                prepareStatement.setString(10,bx.getWenduDown());
-                prepareStatement.setString(11,bx.getShiyanzhuName());
-                prepareStatement.setString(12,bx.getShiyanzhuId());
+                prepareStatement.setString(5,bx.getShidu());
+                prepareStatement.setString(6,bx.getBinXiangId());
+                prepareStatement.setString(7,bx.getBinxiangName());
+                prepareStatement.setString(8,bx.getCaiJiId());
+                prepareStatement.setString(9,bx.getCaiJiName());
+                prepareStatement.setString(10,bx.getWenduUp());
+                prepareStatement.setString(11,bx.getWenduDown());
+                prepareStatement.setString(12,bx.getShiyanzhuName());
+                prepareStatement.setString(13,bx.getShiyanzhuId());
+                prepareStatement.setString(14,bx.getShiduUp());
+                prepareStatement.setString(15,bx.getShiduDown());
+                prepareStatement.setString(16,bx.getType());
+                prepareStatement.setString(17,bx.getArea());
+                return prepareStatement;
+            }
+        });
+    }
+
+
+    public void saveAlarm(final TWsdyjjlb alarm){
+        //sql语句
+        final String sql = "insert into t_wsdyjjlb (id,createTime,mainSerial,deviceTitle,serial,serialTitle,message,value,dataTime," +
+                "sendTime,tSign,eventField,isNormalNotification,level,isHandled,alarmReason,solution,handledBy,handledTime)" +
+                " values (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?.?) ";
+        jdbcTemplate.update(new PreparedStatementCreator() {
+            public PreparedStatement createPreparedStatement(Connection connection) throws SQLException {
+                PreparedStatement prepareStatement = connection.prepareStatement(sql);
+                prepareStatement.setString(1,alarm.getId());
+                prepareStatement.setTimestamp(2, Timestamp.from(Instant.now()));
+                prepareStatement.setString(3,alarm.getMainserial());
+                prepareStatement.setString(4,alarm.getDevicetitle());
+                prepareStatement.setString(5,alarm.getSerial());
+                prepareStatement.setString(6,alarm.getSerialtitle());
+                prepareStatement.setString(7,alarm.getMessage());
+                prepareStatement.setString(8, alarm.getValue());
+                prepareStatement.setString(9,alarm.getDatatime());
+                prepareStatement.setString(10,alarm.getSendtime());
+                prepareStatement.setString(11,alarm.getTsign());
+                prepareStatement.setString(12,alarm.getEventfield());
+                prepareStatement.setString(13,alarm.getIsnormalnotification());
+                prepareStatement.setString(14,alarm.getLevel());
+                prepareStatement.setString(15,alarm.getIshandled());
+                prepareStatement.setString(16,alarm.getAlarmreason());
+                prepareStatement.setString(17,alarm.getSolution());
+                prepareStatement.setString(18,alarm.getHandledby());
+                prepareStatement.setString(19,alarm.getHandledtime());
                 return prepareStatement;
             }
         });

+ 144 - 88
exchange/src/main/java/com/jyxt/thridparty/exchange/bx/repository/VendorBinxiangRepository.java

@@ -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;
-//                    }
-//                }
-//        );
-//    }
 
 }

+ 1 - 5
exchange/src/main/resources/application.properties

@@ -1,11 +1,7 @@
-spring.datasource.jdbc-url = jdbc:mysql://demo2.local:3306/zdqy_view?characterEncoding=utf8&useSSL=false
+spring.datasource.jdbc-url = jdbc:mysql://demo2.local:3306/klims-ibps3?characterEncoding=utf8&useSSL=false
 spring.datasource.username = root
 spring.datasource.password = test001
 spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
-spring.second-datasource.jdbc-url = jdbc:mysql://dev1.local:3306/klims-ibps3?characterEncoding=utf8&useSSL=false
-spring.second-datasource.username = root
-spring.second-datasource.password = test001
-spring.second-datasource.driver-class-name = com.mysql.cj.jdbc.Driver
 # \u8BBE\u5907\u6570\u636E
 equip.uri=http://api-jk.ztmscloud.com/v1
 # \u8BBE\u5907\u6E05\u5355

+ 3 - 0
exchange/src/test/java/com/jyxt/thridparty/exchange/ExchangeApplicationTests.java

@@ -1,5 +1,6 @@
 package com.jyxt.thridparty.exchange;
 
+import cn.hutool.crypto.digest.DigestUtil;
 import org.junit.jupiter.api.Test;
 import org.springframework.boot.test.context.SpringBootTest;
 
@@ -8,6 +9,8 @@ class ExchangeApplicationTests {
 
     @Test
     void contextLoads() {
+        String mded = DigestUtil.md5Hex("JBXEVMVCK_device_66111887_end_1731032520_start_1730995200_1731032538_8dN3ZaoPO05OZevtadsm");
+        System.out.println(mded.toUpperCase());
     }
 
 }