From 234aa4098c961c1ecb356d0c556d0d8df016e36b Mon Sep 17 00:00:00 2001 From: "review512jwy@163.com" <“review512jwy@163.com”> Date: Tue, 9 Dec 2025 09:05:06 +0800 Subject: [PATCH 1/5] =?UTF-8?q?=E5=A2=9E=E5=8A=A0@Cacheable?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../techsor/datacenter/sender/dao/DeviceAlertConfigDao.java | 2 ++ .../datacenter/sender/dao/DeviceAlertTemplateBindDao.java | 2 ++ .../datacenter/sender/dao/DeviceAlertTemplateDao.java | 2 ++ .../java/com/techsor/datacenter/sender/dao/DeviceDao.java | 5 +++-- .../datacenter/sender/dao/DeviceForwardConfigDao.java | 2 ++ .../com/techsor/datacenter/sender/dao/MqttConfigDao.java | 2 ++ 6 files changed, 13 insertions(+), 2 deletions(-) diff --git a/src/main/java/com/techsor/datacenter/sender/dao/DeviceAlertConfigDao.java b/src/main/java/com/techsor/datacenter/sender/dao/DeviceAlertConfigDao.java index 7136f2a..c5a5fa9 100644 --- a/src/main/java/com/techsor/datacenter/sender/dao/DeviceAlertConfigDao.java +++ b/src/main/java/com/techsor/datacenter/sender/dao/DeviceAlertConfigDao.java @@ -2,6 +2,7 @@ package com.techsor.datacenter.sender.dao; import com.techsor.datacenter.sender.dto.DeviceAlertInfo; import com.techsor.datacenter.sender.entitiy.DeviceAlertConfigEntity; +import org.springframework.cache.annotation.Cacheable; import org.springframework.jdbc.core.JdbcTemplate; import org.springframework.stereotype.Component; @@ -31,6 +32,7 @@ public class DeviceAlertConfigDao { **/ + @Cacheable(value = "DeviceAlertConfigDao::selectCurrentDeviceAlertConfigByDeviceId", key = "#deviceId") public List selectCurrentDeviceAlertConfigByDeviceId(Long deviceId){ String sql="select * from device_alert_config where device_config_id="+deviceId+" and flag!=1"; diff --git a/src/main/java/com/techsor/datacenter/sender/dao/DeviceAlertTemplateBindDao.java b/src/main/java/com/techsor/datacenter/sender/dao/DeviceAlertTemplateBindDao.java index 5b8c7d9..11c6d35 100644 --- a/src/main/java/com/techsor/datacenter/sender/dao/DeviceAlertTemplateBindDao.java +++ b/src/main/java/com/techsor/datacenter/sender/dao/DeviceAlertTemplateBindDao.java @@ -1,6 +1,7 @@ package com.techsor.datacenter.sender.dao; +import org.springframework.cache.annotation.Cacheable; import org.springframework.jdbc.core.JdbcTemplate; import org.springframework.stereotype.Component; @@ -13,6 +14,7 @@ public class DeviceAlertTemplateBindDao { @Resource private JdbcTemplate jdbcTemplate; + @Cacheable(value = "DeviceAlertTemplateBindDao::selectDeviceAlertTemplateBindByDeviceId", key = "#deviceId") public List selectDeviceAlertTemplateBindByDeviceId(Long deviceId){ String sql="select device_alert_template_id from device_alert_template_bind where device_info_id="+deviceId; return this.jdbcTemplate.query(sql,(rs, rowNum)-> rs.getLong("device_alert_template_id")); diff --git a/src/main/java/com/techsor/datacenter/sender/dao/DeviceAlertTemplateDao.java b/src/main/java/com/techsor/datacenter/sender/dao/DeviceAlertTemplateDao.java index 672293b..b9b3318 100644 --- a/src/main/java/com/techsor/datacenter/sender/dao/DeviceAlertTemplateDao.java +++ b/src/main/java/com/techsor/datacenter/sender/dao/DeviceAlertTemplateDao.java @@ -1,6 +1,7 @@ package com.techsor.datacenter.sender.dao; import com.techsor.datacenter.sender.entitiy.DeviceAlertTemplateEntity; +import org.springframework.cache.annotation.Cacheable; import org.springframework.jdbc.core.JdbcTemplate; import org.springframework.stereotype.Component; @@ -35,6 +36,7 @@ public class DeviceAlertTemplateDao { @Resource private JdbcTemplate jdbcTemplate; + @Cacheable(value = "DeviceAlertTemplateDao::selectDeviceAlertTemplatesByDeviceId", key = "#deviceId") public List selectDeviceAlertTemplatesByDeviceId(Long deviceId) { String sql = "SELECT tmp.id, " + "tmp.company_id AS companyId, " + diff --git a/src/main/java/com/techsor/datacenter/sender/dao/DeviceDao.java b/src/main/java/com/techsor/datacenter/sender/dao/DeviceDao.java index 305971c..942ad81 100644 --- a/src/main/java/com/techsor/datacenter/sender/dao/DeviceDao.java +++ b/src/main/java/com/techsor/datacenter/sender/dao/DeviceDao.java @@ -225,8 +225,9 @@ public class DeviceDao { }); return dataList; } - - + + + @Cacheable(value = "DeviceDao::getDeviceInfo", key = "#deviceId") public List getDeviceInfo(String deviceId){ if (StringUtils.isEmpty(deviceId)){ return new ArrayList<>(); diff --git a/src/main/java/com/techsor/datacenter/sender/dao/DeviceForwardConfigDao.java b/src/main/java/com/techsor/datacenter/sender/dao/DeviceForwardConfigDao.java index 6dc8446..bdf146a 100644 --- a/src/main/java/com/techsor/datacenter/sender/dao/DeviceForwardConfigDao.java +++ b/src/main/java/com/techsor/datacenter/sender/dao/DeviceForwardConfigDao.java @@ -1,6 +1,7 @@ package com.techsor.datacenter.sender.dao; import com.techsor.datacenter.sender.entitiy.DeviceForwardConfigEntity; +import org.springframework.cache.annotation.Cacheable; import org.springframework.jdbc.core.JdbcTemplate; import org.springframework.stereotype.Component; @@ -14,6 +15,7 @@ public class DeviceForwardConfigDao { private JdbcTemplate jdbcTemplate ; + @Cacheable(value = "DeviceForwardConfigDao::selectDeviceForwardConfigByDeviceId", key = "#deviceId") public List selectDeviceForwardConfigByDeviceId(Long deviceId){ String sql="select * from device_forward_config where device_id="+deviceId; sql=String.format(sql,deviceId); diff --git a/src/main/java/com/techsor/datacenter/sender/dao/MqttConfigDao.java b/src/main/java/com/techsor/datacenter/sender/dao/MqttConfigDao.java index 3716cd4..bb0bac1 100644 --- a/src/main/java/com/techsor/datacenter/sender/dao/MqttConfigDao.java +++ b/src/main/java/com/techsor/datacenter/sender/dao/MqttConfigDao.java @@ -3,6 +3,7 @@ package com.techsor.datacenter.sender.dao; import com.techsor.datacenter.sender.entitiy.MqttConfigEntity; import com.techsor.datacenter.sender.entitiy.bastatus.BaStatusEntity; import lombok.extern.slf4j.Slf4j; +import org.springframework.cache.annotation.Cacheable; import org.springframework.jdbc.core.JdbcTemplate; import org.springframework.stereotype.Component; @@ -23,6 +24,7 @@ public class MqttConfigDao { * @param purposeType * @return */ + @Cacheable(value = "MqttConfigDao::getByDeviceId", key = "#deviceId + '::' + #purposeType") public List getByDeviceId(String deviceId, int purposeType) { String sql="SELECT " + "bmqtt.id mqttId, bmqtt.company_id, bcomp.company_name, " From 58fe68a9abc5b83c52d2062c630b4b25765e556f Mon Sep 17 00:00:00 2001 From: "review512jwy@163.com" <“review512jwy@163.com”> Date: Tue, 9 Dec 2025 13:41:40 +0800 Subject: [PATCH 2/5] =?UTF-8?q?bug=E5=A4=84=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../sender/dao/DashboardAlertDao.java | 101 ++++++++++-------- .../sender/dto/DeviceAlertInfo.java | 4 +- .../datacenter/sender/dto/DeviceInfoVO.java | 4 +- 3 files changed, 64 insertions(+), 45 deletions(-) diff --git a/src/main/java/com/techsor/datacenter/sender/dao/DashboardAlertDao.java b/src/main/java/com/techsor/datacenter/sender/dao/DashboardAlertDao.java index c27ffd0..3ba09d5 100644 --- a/src/main/java/com/techsor/datacenter/sender/dao/DashboardAlertDao.java +++ b/src/main/java/com/techsor/datacenter/sender/dao/DashboardAlertDao.java @@ -1,5 +1,6 @@ package com.techsor.datacenter.sender.dao; +import com.techsor.datacenter.sender.config.DataSourceContextHolder; import com.techsor.datacenter.sender.disruptor.AlertEvent; import com.techsor.datacenter.sender.entitiy.AlertHistoryDTO; import com.techsor.datacenter.sender.entitiy.DynamodbEntity; @@ -9,6 +10,8 @@ import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; import org.apache.commons.collections.CollectionUtils; import org.apache.commons.lang.StringUtils; @@ -63,49 +66,61 @@ public class DashboardAlertDao { } public void batchUpsertRawData(List list) { - jdbcTemplate.batchUpdate( - "INSERT INTO device_rawdata_realtime (" + - "device_id, building_id, status, receive_ts, alert_title, alert_content, " + - "alert_cancel_title, alert_cancel_content, raw_data, upload_year, upload_month, upload_day) " + - "VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?) " + - "ON DUPLICATE KEY UPDATE " + - "building_id = VALUES(building_id), " + - "status = VALUES(status), " + - "receive_ts = VALUES(receive_ts), " + - "alert_title = VALUES(alert_title), " + - "alert_content = VALUES(alert_content), " + - "alert_cancel_title = VALUES(alert_cancel_title), " + - "alert_cancel_content = VALUES(alert_cancel_content), " + - "raw_data = VALUES(raw_data), " + - "upload_year = VALUES(upload_year), " + - "upload_month = VALUES(upload_month), " + - "upload_day = VALUES(upload_day)", - new BatchPreparedStatementSetter() { - - @Override - public void setValues(PreparedStatement ps, int i) throws SQLException { - AlertEvent e = list.get(i); - - ps.setString(1, e.getEntity().getDeviceId()); - ps.setLong(2, e.getEntity().getDbBuildingId()); - ps.setString(3, e.getEntity().getStatus()); - ps.setLong(4, e.getEntity().getReceive_ts()); - ps.setString(5, e.getEntity().getAlertTitle()); - ps.setString(6, e.getEntity().getAlertContent()); - ps.setString(7, e.getEntity().getAlertCancelTitle()); - ps.setString(8, e.getEntity().getAlertCancelContent()); - ps.setString(9, e.getEntity().getRawData()); - ps.setInt(10, Integer.parseInt(e.getEntity().getYearKey())); - ps.setInt(11, Integer.parseInt(e.getEntity().getMonthKey())); - ps.setInt(12, Integer.parseInt(e.getEntity().getDayKey())); - } - - @Override - public int getBatchSize() { - return list.size(); - } - } - ); + // 按 companyId 分组 + Map> grouped = list.stream() + .filter(e -> e.getEntity() != null && e.getEntity().getCompanyId() != null) + .collect(Collectors.groupingBy(e -> e.getEntity().getCompanyId())); + + grouped.forEach((companyId, subList) -> { + String dsKey = "dataSourceForCompany_" + companyId; + try { + DataSourceContextHolder.setCurrentDataSourceKey(dsKey); + + // 批量执行 upsert + jdbcTemplate.batchUpdate( + "INSERT INTO device_rawdata_realtime (" + + "device_id, building_id, status, receive_ts, alert_title, alert_content, alert_cancel_title," + + "alert_cancel_content, raw_data, upload_year, upload_month, upload_day) " + + "VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?) " + + "ON DUPLICATE KEY UPDATE " + + "building_id = VALUES(building_id), " + + "status = VALUES(status), " + + "receive_ts = VALUES(receive_ts)," + + "alert_title = VALUES(alert_title)," + + "alert_content = VALUES(alert_content)," + + "alert_cancel_title = VALUES(alert_cancel_title)," + + "alert_cancel_content = VALUES(alert_cancel_content)," + + "raw_data = VALUES(raw_data)," + + "upload_year = VALUES(upload_year)," + + "upload_month = VALUES(upload_month)," + + "upload_day = VALUES(upload_day)", + new BatchPreparedStatementSetter() { + + public void setValues(PreparedStatement ps, int i) throws SQLException { + DynamodbEntity entity = subList.get(i).getEntity(); + ps.setString(1, entity.getDeviceId()); + ps.setLong(2, entity.getDbBuildingId()); + ps.setString(3, entity.getStatus()); + ps.setLong(4, entity.getReceive_ts()); + ps.setString(5, entity.getAlertTitle()); + ps.setString(6, entity.getAlertContent()); + ps.setString(7, entity.getAlertCancelTitle()); + ps.setString(8, entity.getAlertCancelContent()); + ps.setString(9, entity.getRawData()); + ps.setInt(10, Integer.parseInt(entity.getYearKey())); + ps.setInt(11, Integer.parseInt(entity.getMonthKey())); + ps.setInt(12, Integer.parseInt(entity.getDayKey())); + } + + public int getBatchSize() { + return subList.size(); + } + } + ); + } finally { + DataSourceContextHolder.clearCurrentDataSourceKey(); + } + }); } public void insertAlertHistory(DynamodbEntity entity) { diff --git a/src/main/java/com/techsor/datacenter/sender/dto/DeviceAlertInfo.java b/src/main/java/com/techsor/datacenter/sender/dto/DeviceAlertInfo.java index d9be41d..c75f346 100644 --- a/src/main/java/com/techsor/datacenter/sender/dto/DeviceAlertInfo.java +++ b/src/main/java/com/techsor/datacenter/sender/dto/DeviceAlertInfo.java @@ -3,8 +3,10 @@ package com.techsor.datacenter.sender.dto; import lombok.Data; +import java.io.Serializable; + @Data -public class DeviceAlertInfo { +public class DeviceAlertInfo implements Serializable { private Integer id; private Long deviceConfigId; diff --git a/src/main/java/com/techsor/datacenter/sender/dto/DeviceInfoVO.java b/src/main/java/com/techsor/datacenter/sender/dto/DeviceInfoVO.java index 5cd74b2..efa1b09 100644 --- a/src/main/java/com/techsor/datacenter/sender/dto/DeviceInfoVO.java +++ b/src/main/java/com/techsor/datacenter/sender/dto/DeviceInfoVO.java @@ -2,12 +2,14 @@ package com.techsor.datacenter.sender.dto; import lombok.Data; +import java.io.Serializable; + /** * @author Mr.Jiang * @time 2022年7月21日 下午8:50:31 */ @Data -public class DeviceInfoVO{ +public class DeviceInfoVO implements Serializable { private String deviceId; From d70185ec55966b6525a08d778a0d12f848a50ee9 Mon Sep 17 00:00:00 2001 From: "review512jwy@163.com" <“review512jwy@163.com”> Date: Tue, 9 Dec 2025 13:44:10 +0800 Subject: [PATCH 3/5] =?UTF-8?q?=E6=89=93=E5=BC=80dashboard=E8=AE=BE?= =?UTF-8?q?=E5=A4=87=E5=A4=84=E7=90=86=E6=B3=A8=E9=87=8A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/impl/DataProcessServiceImpl.java | 22 +++++++++---------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/src/main/java/com/techsor/datacenter/sender/service/impl/DataProcessServiceImpl.java b/src/main/java/com/techsor/datacenter/sender/service/impl/DataProcessServiceImpl.java index fb08ab1..7afc119 100644 --- a/src/main/java/com/techsor/datacenter/sender/service/impl/DataProcessServiceImpl.java +++ b/src/main/java/com/techsor/datacenter/sender/service/impl/DataProcessServiceImpl.java @@ -622,17 +622,17 @@ public class DataProcessServiceImpl implements IDataProcessService { } baseTransDataEntity.setHashId(UUID.randomUUID()); -// try { -// handleDashboardAlert(baseTransDataEntity); -// } catch (Exception e) { -// log.error("dashboard alert error", e); -// } -// -// try { -// minuteLevelStorage(baseTransDataEntity); -// } catch (Exception e) { -// log.error("minuteLevelStorage error", e); -// } + try { + handleDashboardAlert(baseTransDataEntity); + } catch (Exception e) { + log.error("dashboard alert error", e); + } + + try { + minuteLevelStorage(baseTransDataEntity); + } catch (Exception e) { + log.error("minuteLevelStorage error", e); + } // try { // if ("alert".equals(baseTransDataEntity.getStatus())) { From c9a8fc944c4823109fedcce5956d3d6ab49e3611 Mon Sep 17 00:00:00 2001 From: "review512jwy@163.com" <“review512jwy@163.com”> Date: Tue, 9 Dec 2025 14:22:25 +0800 Subject: [PATCH 4/5] =?UTF-8?q?bug=E5=A4=84=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/techsor/datacenter/sender/dao/DashboardAlertDao.java | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/main/java/com/techsor/datacenter/sender/dao/DashboardAlertDao.java b/src/main/java/com/techsor/datacenter/sender/dao/DashboardAlertDao.java index 3ba09d5..37de8da 100644 --- a/src/main/java/com/techsor/datacenter/sender/dao/DashboardAlertDao.java +++ b/src/main/java/com/techsor/datacenter/sender/dao/DashboardAlertDao.java @@ -29,6 +29,8 @@ public class DashboardAlertDao { @Resource private JdbcTemplate jdbcTemplate; + @Resource + private CompanyInfoDao companyInfoDao; public void upsertDeviceRawData(DynamodbEntity entity) { if (StringUtils.isEmpty(entity.getDeviceId())) { @@ -72,7 +74,8 @@ public class DashboardAlertDao { .collect(Collectors.groupingBy(e -> e.getEntity().getCompanyId())); grouped.forEach((companyId, subList) -> { - String dsKey = "dataSourceForCompany_" + companyId; + long topCompanyId = companyInfoDao.getTopCompanyId(String.valueOf(companyId)); + String dsKey = "dataSourceForCompany_" + topCompanyId; try { DataSourceContextHolder.setCurrentDataSourceKey(dsKey); From 8f172ae24c52713c8a2010f4e6a9b053361c496c Mon Sep 17 00:00:00 2001 From: zhczyx Date: Tue, 9 Dec 2025 15:28:48 +0800 Subject: [PATCH 5/5] =?UTF-8?q?=E6=9B=B4=E6=96=B0=E6=8E=A8=E9=80=81?= =?UTF-8?q?=E4=BF=A1=E6=81=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pom.xml | 45 +++++++++++++++++++++++---------------------- 1 file changed, 23 insertions(+), 22 deletions(-) diff --git a/pom.xml b/pom.xml index 627dc26..c64717c 100644 --- a/pom.xml +++ b/pom.xml @@ -18,6 +18,7 @@ 126588786019.dkr.ecr.ap-northeast-1.amazonaws.com 029530100103.dkr.ecr.ap-northeast-1.amazonaws.com spf-sender-stg + spf-sender @@ -501,28 +502,7 @@ - ${aws.ecr.registry}/${aws.ecr.repository}:latest - ${aws.ecr.registry} - - ${project.basedir}/Dockerfile - - - - - - - - io.fabric8 - docker-maven-plugin - 0.38.1 - - - AKIAQNYBBSGDVT3VF4ON - DEhPMTHAIsKK7L2klURQrmMe3r2Tqgbaa6z2FYQu - - - - ${aws.ecr.registryTest}/aeon/${aws.ecr.repository}:latest + ${aws.ecr.registry}/aeon-prod/${aws.ecr.repositoryProd}:latest ${aws.ecr.registry} ${project.basedir}/Dockerfile @@ -531,6 +511,27 @@ + + + + + + + + + + + + + + + + + + + + +