diff --git a/dongjian-dashboard-back-common/src/main/java/com/dongjian/dashboard/back/common/Constants.java b/dongjian-dashboard-back-common/src/main/java/com/dongjian/dashboard/back/common/Constants.java
index 17b73e9..a6d422b 100644
--- a/dongjian-dashboard-back-common/src/main/java/com/dongjian/dashboard/back/common/Constants.java
+++ b/dongjian-dashboard-back-common/src/main/java/com/dongjian/dashboard/back/common/Constants.java
@@ -1,5 +1,7 @@
package com.dongjian.dashboard.back.common;
+import java.time.ZoneId;
+import java.time.format.DateTimeFormatter;
import java.util.*;
/**
@@ -7,6 +9,11 @@ import java.util.*;
* @time 2022年5月20日 下午2:01:41
*/
public class Constants {
+
+ public static final ZoneId ZONE_TOKYO = ZoneId.of("Asia/Tokyo");
+ public static final DateTimeFormatter FORMATTER_YMDHMS = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
+
+// public static final int EXPORT_PAGE_SIZE = 600;
//这个很重要,不要随便动
public static final String DES_SALT = "ci3b512jwy199511";
@@ -24,6 +31,8 @@ public class Constants {
public static final String WINDOW_ALERT_IGNORED = "alert_window_notice:ignore:%d";
+ public static final String REDIS_BA_STATUS_LATEST_VALUE = "ba_status_latest_value_";
+
public static final int AURORA_IN_BATCH_SIZE = 1000;
// 定义大类常量
@@ -70,7 +79,7 @@ public class Constants {
CATEGORY_MAP.put(CATEGORY_MEASURE, new ArrayList<>(List.of(1003L)));
- CATEGORY_MAP.put(CATEGORY_ACCUMULATE, new ArrayList<>(List.of(1002L)));
+ CATEGORY_MAP.put(CATEGORY_ACCUMULATE, new ArrayList<>(List.of(1002L,1006L)));
CATEGORY_MAP.put(CATEGORY_STATUS, new ArrayList<>(List.of(1004L)));
diff --git a/dongjian-dashboard-back-common/src/main/resources/config/language/msg/msg_cn.yml b/dongjian-dashboard-back-common/src/main/resources/config/language/msg/msg_cn.yml
index d882e5e..3d94b6d 100644
--- a/dongjian-dashboard-back-common/src/main/resources/config/language/msg/msg_cn.yml
+++ b/dongjian-dashboard-back-common/src/main/resources/config/language/msg/msg_cn.yml
@@ -49,7 +49,7 @@ msgcn:
roleHasBinded: 角色已绑定用户,请先解绑再删除
loginNameOrEmailHasExisted: 用户名或邮箱已被使用
mailAddUserPwdSubject: 新建账号密码
- mailAddUserPwdContent: '账号 {0} 的密码为 {1} 请妥善保管
登陆网址:{2}'
+ mailAddUserPwdContent: '{0}
このたびは、データ管理プラットフォームへのご登録、誠にありがとうございます。
下記の通り、アカウントが発行されましたのでご案内いたします。
-------------------------------------------------
ユーザー名(ID):{1}
初期パスワード:{2}
-------------------------------------------------
ご不明な点がございましたら、お気軽にサポートまでお問い合わせください。
-------------------------------
イオンディライト株式会社
サポート窓口: smbil-support@ifmservice.jp
-------------------------------'
mailResetUserPwdSubject: 重置账号密码
pwdFormatError: 密码组成必须包含数字、英文字母、特殊符号(~!@#$%^&*)且大于等于12位
oldPwdError: 旧密码错误
@@ -77,6 +77,8 @@ msgcn:
levelNameExist: 层级名称已存在
invalidParentLevel: 无效的父级层级
levelReferencedByChildren: 已被下级层级绑定,请先解绑后再删除
+ elapsedTime: '{0}天{1}小时{2}分'
+ categoryHasExisted: 分类已存在
operationLogMap:
addRole: 新增角色
editRole: 编辑角色
@@ -137,5 +139,11 @@ msgcn:
editLevel: 编辑层级
deleteLevel: 删除层级
queryLevel: 获取层级列表
+ addNotificationCategory: 新增通知分类
+ editNotificationCategory: 编辑通知分类
+ delNotificationCategory: 删除通知分类
+ addNotification: 新增通知
+ editNotification: 编辑通知
+ delNotification: 删除通知
diff --git a/dongjian-dashboard-back-common/src/main/resources/config/language/msg/msg_en.yml b/dongjian-dashboard-back-common/src/main/resources/config/language/msg/msg_en.yml
index 4263fa6..48f8cec 100644
--- a/dongjian-dashboard-back-common/src/main/resources/config/language/msg/msg_en.yml
+++ b/dongjian-dashboard-back-common/src/main/resources/config/language/msg/msg_en.yml
@@ -49,7 +49,7 @@ msgen:
roleHasBinded: 角色已绑定用户,请先解绑再删除
loginNameOrEmailHasExisted: 用户名或邮箱已被使用
mailAddUserPwdSubject: 新建账号密码
- mailAddUserPwdContent: '账号 {0} 的密码为 {1} 请妥善保管
登陆网址:{2}'
+ mailAddUserPwdContent: '{0}
このたびは、データ管理プラットフォームへのご登録、誠にありがとうございます。
下記の通り、アカウントが発行されましたのでご案内いたします。
-------------------------------------------------
ユーザー名(ID):{1}
初期パスワード:{2}
-------------------------------------------------
ご不明な点がございましたら、お気軽にサポートまでお問い合わせください。
-------------------------------
イオンディライト株式会社
サポート窓口: smbil-support@ifmservice.jp
-------------------------------'
mailResetUserPwdSubject: 重置账号密码
pwdFormatError: 密码组成必须包含数字、英文字母、特殊符号(~!@#$%^&*)且大于等于12位
oldPwdError: 旧密码错误
@@ -77,6 +77,8 @@ msgen:
levelNameExist: Level name already exists
invalidParentLevel: Invalid parent level
levelReferencedByChildren: It is bound by child levels. Please unbind them before deleting.
+ elapsedTime: '{0}d {1}h {2}m'
+ categoryHasExisted: Category already exists.
operationLogMap:
addRole: Add Role
editRole: Edit Role
@@ -137,6 +139,13 @@ msgen:
editLevel: Edit Level
deleteLevel: Delete Level
queryLevel: Get Level List
+ addNotificationCategory: Add notification category
+ editNotificationCategory: Edit notification category
+ delNotificationCategory: Delete notification category
+ addNotification: Add notification
+ editNotification: Edit notification
+ delNotification: Delete notification
+
diff --git a/dongjian-dashboard-back-common/src/main/resources/config/language/msg/msg_jp.yml b/dongjian-dashboard-back-common/src/main/resources/config/language/msg/msg_jp.yml
index 373e8f4..ce16418 100644
--- a/dongjian-dashboard-back-common/src/main/resources/config/language/msg/msg_jp.yml
+++ b/dongjian-dashboard-back-common/src/main/resources/config/language/msg/msg_jp.yml
@@ -49,7 +49,7 @@ msgjp:
roleHasBinded: 役割はユーザーにバインドされている ので、削除する前にバインドを解除してください
loginNameOrEmailHasExisted: ユーザー名またはメールボックスはすでに使用されています
mailAddUserPwdSubject: 新規アカウント・パスワードの作成
- mailAddUserPwdContent: 'アカウント {0} のパスワードは {1} お忘れにならないようにお願いします。
ログインWebアドレス:{2}'
+ mailAddUserPwdContent: '{0} 様
このたびは、データ管理プラットフォームへのご登録、誠にありがとうございます。
下記の通り、アカウントが発行されましたのでご案内いたします。
-------------------------------------------------
ユーザー名(ID):{1}
初期パスワード:{2}
-------------------------------------------------
ご不明な点がございましたら、お気軽にサポートまでお問い合わせください。
ログインはこちらから:
【AD スマビル 可視化UI URL】:https://smbil.ifmservice.jp/login
-------------------------------
イオンディライト株式会社
サポート窓口: smbil-support@ifmservice.jp
-------------------------------'
mailResetUserPwdSubject: アカウント・パスワードのリセット
pwdFormatError: パスワードの構成には、数字、アルファベット、特殊文字(~!@#$%^&*) で、12桁以上
oldPwdError: 旧パスワードエラー
@@ -77,6 +77,8 @@ msgjp:
levelNameExist: 階層名は既に存在しています
invalidParentLevel: 無効な上位階層です
levelReferencedByChildren: 下位階層に紐づいています。削除する前に紐付けを解除してください。
+ elapsedTime: '{0}日{1}時間{2}分間'
+ categoryHasExisted: カテゴリは既に存在します。
operationLogMap:
addRole: ロールを追加
editRole: ロールを編集
@@ -137,6 +139,13 @@ msgjp:
editLevel: レベルを編集
deleteLevel: レベルを削除
queryLevel: レベル一覧を取得
+ addNotificationCategory: 通知カテゴリを追加
+ editNotificationCategory: 通知カテゴリを編集
+ delNotificationCategory: 通知カテゴリを削除
+ addNotification: 通知を追加
+ editNotification: 通知を編集
+ delNotification: 通知を削除
+
diff --git a/dongjian-dashboard-back-controller/buildPush-aeon-prod.sh b/dongjian-dashboard-back-controller/buildPush-aeon-prod.sh
new file mode 100644
index 0000000..8ddfb37
--- /dev/null
+++ b/dongjian-dashboard-back-controller/buildPush-aeon-prod.sh
@@ -0,0 +1,11 @@
+aws configure set aws_access_key_id AKIAR26KHSVRUEAKRBPZ
+aws configure set aws_secret_access_key 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
+aws configure set default.region ap-northeast-1
+aws ecr get-login-password --region ap-northeast-1 | docker login --username AWS --password-stdin 126588786019.dkr.ecr.ap-northeast-1.amazonaws.com
+
+docker build -t 126588786019.dkr.ecr.ap-northeast-1.amazonaws.com/aeon-prod/dashboard-back:latest\
+ --build-arg JAR_FILE=target/dongjian-dashboard-back-controller-0.0.1-SNAPSHOT.jar \
+ --build-arg LIB_DIR=target/lib \
+ --build-arg CONFIG_DIR=target/config \
+ .
+docker push 126588786019.dkr.ecr.ap-northeast-1.amazonaws.com/aeon-prod/dashboard-back:latest
\ No newline at end of file
diff --git a/dongjian-dashboard-back-controller/buildPush-aeon.sh b/dongjian-dashboard-back-controller/buildPush-aeon.sh
index 6a0a00f..d650f07 100644
--- a/dongjian-dashboard-back-controller/buildPush-aeon.sh
+++ b/dongjian-dashboard-back-controller/buildPush-aeon.sh
@@ -1,11 +1,11 @@
-aws configure set aws_access_key_id AKIAQNYBBSGDVT3VF4ON
-aws configure set aws_secret_access_key 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
+aws configure set aws_access_key_id AKIAVSKFRQDPNWHJDSHL
+aws configure set aws_secret_access_key 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
aws configure set default.region ap-northeast-1
-aws ecr get-login-password --region ap-northeast-1 | docker login --username AWS --password-stdin 029530100103.dkr.ecr.ap-northeast-1.amazonaws.com
+aws ecr get-login-password --region ap-northeast-1 | docker login --username AWS --password-stdin 382934810846.dkr.ecr.ap-northeast-1.amazonaws.com
-docker build -t 029530100103.dkr.ecr.ap-northeast-1.amazonaws.com/aeon/dashboard-back:latest\
+docker build -t 382934810846.dkr.ecr.ap-northeast-1.amazonaws.com/aeon/dashboard-back-stg:latest\
--build-arg JAR_FILE=target/dongjian-dashboard-back-controller-0.0.1-SNAPSHOT.jar \
--build-arg LIB_DIR=target/lib \
--build-arg CONFIG_DIR=target/config \
.
-docker push 029530100103.dkr.ecr.ap-northeast-1.amazonaws.com/aeon/dashboard-back:latest
\ No newline at end of file
+docker push 382934810846.dkr.ecr.ap-northeast-1.amazonaws.com/aeon/dashboard-back-stg:latest
\ No newline at end of file
diff --git a/dongjian-dashboard-back-controller/dockerfile b/dongjian-dashboard-back-controller/dockerfile
index 77e7952..b571e8e 100644
--- a/dongjian-dashboard-back-controller/dockerfile
+++ b/dongjian-dashboard-back-controller/dockerfile
@@ -2,7 +2,8 @@
# FROM openjdk:17-jdk
FROM amazoncorretto:17-alpine
# 安装 fontconfig 和 DejaVu 字体 (这是一个通用且免费的字体包)
-RUN apk --no-cache add fontconfig ttf-dejavu
+RUN apk --no-cache upgrade && \
+ apk --no-cache add fontconfig ttf-dejavu
ENV TZ=Asia/Tokyo
WORKDIR /home/data-center-dashboard
diff --git a/dongjian-dashboard-back-controller/src/main/java/com/dongjian/dashboard/back/configurator/aspect/OperationLogAspect.java b/dongjian-dashboard-back-controller/src/main/java/com/dongjian/dashboard/back/configurator/aspect/OperationLogAspect.java
index bfcd2ae..c38acbd 100644
--- a/dongjian-dashboard-back-controller/src/main/java/com/dongjian/dashboard/back/configurator/aspect/OperationLogAspect.java
+++ b/dongjian-dashboard-back-controller/src/main/java/com/dongjian/dashboard/back/configurator/aspect/OperationLogAspect.java
@@ -6,7 +6,10 @@ import com.dongjian.dashboard.back.common.config.DataSourceInterceptor;
import com.dongjian.dashboard.back.dao.ex.DashboardOperationLogMapperExt;
import com.dongjian.dashboard.back.model.DashboardOperationLog;
import com.dongjian.dashboard.back.service.common.CommonOpt;
+import com.dongjian.dashboard.back.util.IPUtils;
import com.fasterxml.jackson.databind.ObjectMapper;
+import jakarta.servlet.ServletRequest;
+import jakarta.servlet.ServletResponse;
import jakarta.servlet.http.HttpServletRequest;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
@@ -69,8 +72,13 @@ public class OperationLogAspect {
logEntry.setUri(uri);
logEntry.setMethodName(method.getName());
logEntry.setClassName(signature.getDeclaringTypeName());
- logEntry.setIpAddress(request.getRemoteAddr());
- String paramsJson = objectMapper.writeValueAsString(joinPoint.getArgs());
+ logEntry.setIpAddress(IPUtils.getClientIp(request));
+// String paramsJson = objectMapper.writeValueAsString(joinPoint.getArgs());
+ Object[] filteredArgs = Arrays.stream(joinPoint.getArgs())
+ .filter(arg -> !(arg instanceof ServletRequest) && !(arg instanceof ServletResponse))
+ .toArray();
+ String paramsJson = objectMapper.writeValueAsString(filteredArgs);
+
logEntry.setRequestParams(paramsJson);
logEntry.setExecutionTimeMs(duration);
logEntry.setCreatedAt(System.currentTimeMillis());
diff --git a/dongjian-dashboard-back-controller/src/main/java/com/dongjian/dashboard/back/controller/DashboardNotificationCategoryController.java b/dongjian-dashboard-back-controller/src/main/java/com/dongjian/dashboard/back/controller/DashboardNotificationCategoryController.java
new file mode 100644
index 0000000..8248449
--- /dev/null
+++ b/dongjian-dashboard-back-controller/src/main/java/com/dongjian/dashboard/back/controller/DashboardNotificationCategoryController.java
@@ -0,0 +1,98 @@
+package com.dongjian.dashboard.back.controller;
+
+import com.dongjian.dashboard.back.common.exception.BusinessException;
+import com.dongjian.dashboard.back.common.response.PageInfo;
+import com.dongjian.dashboard.back.common.response.PageResponse;
+import com.dongjian.dashboard.back.common.response.ResponseCode;
+import com.dongjian.dashboard.back.common.response.SimpleDataResponse;
+import com.dongjian.dashboard.back.configurator.aspect.OperationLog;
+import com.dongjian.dashboard.back.configurator.interceptor.AccessRequired;
+import com.dongjian.dashboard.back.dto.dashboardnotification.DashboardNotificationCategorySearchParams;
+import com.dongjian.dashboard.back.dto.dashboardnotification.DeleteDashboardNotificationCategoryParams;
+import com.dongjian.dashboard.back.dto.dashboardnotification.OptDashboardNotificationCategoryParams;
+import com.dongjian.dashboard.back.service.DashboardNotificationCategoryService;
+import com.dongjian.dashboard.back.vo.dashboardnotification.DashboardNotificationCategoryPageVO;
+import io.swagger.v3.oas.annotations.Operation;
+import io.swagger.v3.oas.annotations.tags.Tag;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+@RestController
+@AccessRequired
+@RequestMapping("/dashboardNotificationCategory")
+@Tag(name = "dashboard通知里的分类管理", description = "Data Provider manage API")
+@SuppressWarnings("unchecked")
+public class DashboardNotificationCategoryController {
+
+ private static Logger logger = LoggerFactory.getLogger(DashboardNotificationCategoryController.class);
+
+ @Autowired
+ private DashboardNotificationCategoryService dashboardNotificationCategoryService;
+
+ @OperationLog(operation = "addNotificationCategory", remark = "")
+ @Operation(summary = "Add category")
+ @RequestMapping(value = "/add", method = RequestMethod.POST)
+ public SimpleDataResponse add(
+ @RequestBody OptDashboardNotificationCategoryParams optDashboardNotificationCategoryParams,
+ @RequestHeader String LoginName,
+ @RequestHeader String AccessToken,
+ @RequestHeader Long UserId,
+ @RequestHeader(required = false) Long CompanyId,
+ @RequestHeader Integer LanguageType) {
+ return dashboardNotificationCategoryService.add(optDashboardNotificationCategoryParams, UserId, CompanyId, LanguageType);
+ }
+
+ @OperationLog(operation = "editNotificationCategory", remark = "")
+ @Operation(summary = "Edit category")
+ @RequestMapping(value = "/edit", method = RequestMethod.POST)
+ public SimpleDataResponse edit(
+ @RequestBody OptDashboardNotificationCategoryParams optDashboardNotificationCategoryParams,
+ @RequestHeader String LoginName,
+ @RequestHeader String AccessToken,
+ @RequestHeader Long UserId,
+ @RequestHeader(required = false) Long CompanyId,
+ @RequestHeader Integer LanguageType) {
+ return dashboardNotificationCategoryService.edit(optDashboardNotificationCategoryParams, UserId, CompanyId, LanguageType);
+ }
+
+ @OperationLog(operation = "delNotificationCategory", remark = "")
+ @Operation(summary = "Delete category")
+ @RequestMapping(value = "/batchDelete", method = RequestMethod.POST)
+ public SimpleDataResponse batchDelete(
+ @RequestBody DeleteDashboardNotificationCategoryParams deleteParams,
+ @RequestHeader String LoginName,
+ @RequestHeader String AccessToken,
+ @RequestHeader Long UserId,
+ @RequestHeader(required = false) Long CompanyId,
+ @RequestHeader Integer LanguageType) {
+ return dashboardNotificationCategoryService.batchDelete(deleteParams, UserId, CompanyId, LanguageType);
+ }
+
+ @Operation(summary = "Get category list")
+ @RequestMapping(value = "/getListPage", method = RequestMethod.GET)
+ public PageResponse> getListPage(
+ @RequestHeader String LoginName,
+ @RequestHeader String AccessToken,
+ @RequestHeader Long UserId,
+ @RequestHeader(required = false) Long CompanyId,
+ @RequestHeader Integer LanguageType,
+ @RequestHeader Integer UTCOffset,
+ DashboardNotificationCategorySearchParams searchParams) throws BusinessException {
+
+ searchParams.setUserId(UserId);
+ PageResponse> response = new PageResponse<>();
+ try {
+ response.setData(dashboardNotificationCategoryService.getListPage(searchParams, CompanyId, UserId, LanguageType, UTCOffset));
+ response.setCode(ResponseCode.SUCCESS);
+ response.setMsg("success");
+ } catch (Exception e) {
+ logger.error("Error querying list", e);
+ response.setCode(ResponseCode.SERVER_ERROR);
+ response.setMsg("service error");
+ }
+ return response;
+ }
+
+}
diff --git a/dongjian-dashboard-back-controller/src/main/java/com/dongjian/dashboard/back/controller/DashboardNotificationController.java b/dongjian-dashboard-back-controller/src/main/java/com/dongjian/dashboard/back/controller/DashboardNotificationController.java
new file mode 100644
index 0000000..baebe19
--- /dev/null
+++ b/dongjian-dashboard-back-controller/src/main/java/com/dongjian/dashboard/back/controller/DashboardNotificationController.java
@@ -0,0 +1,98 @@
+package com.dongjian.dashboard.back.controller;
+
+import com.dongjian.dashboard.back.common.exception.BusinessException;
+import com.dongjian.dashboard.back.common.response.PageInfo;
+import com.dongjian.dashboard.back.common.response.PageResponse;
+import com.dongjian.dashboard.back.common.response.ResponseCode;
+import com.dongjian.dashboard.back.common.response.SimpleDataResponse;
+import com.dongjian.dashboard.back.configurator.aspect.OperationLog;
+import com.dongjian.dashboard.back.configurator.interceptor.AccessRequired;
+import com.dongjian.dashboard.back.dto.dashboardnotification.DashboardNotificationSearchParams;
+import com.dongjian.dashboard.back.dto.dashboardnotification.DeleteDashboardNotificationParams;
+import com.dongjian.dashboard.back.dto.dashboardnotification.OptDashboardNotificationParams;
+import com.dongjian.dashboard.back.service.DashboardNotificationService;
+import com.dongjian.dashboard.back.vo.dashboardnotification.DashboardNotificationPageVO;
+import io.swagger.v3.oas.annotations.Operation;
+import io.swagger.v3.oas.annotations.tags.Tag;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+@RestController
+@AccessRequired
+@RequestMapping("/dashboardNotification")
+@Tag(name = "dashboard通知管理", description = "Data Provider manage API")
+@SuppressWarnings("unchecked")
+public class DashboardNotificationController {
+
+ private static Logger logger = LoggerFactory.getLogger(DashboardNotificationController.class);
+
+ @Autowired
+ private DashboardNotificationService dashboardNotificationService;
+
+ @OperationLog(operation = "addNotification", remark = "")
+ @Operation(summary = "Add dashboard notification")
+ @RequestMapping(value = "/add", method = RequestMethod.POST)
+ public SimpleDataResponse add(
+ @RequestBody OptDashboardNotificationParams optDashboardNotificationParams,
+ @RequestHeader String LoginName,
+ @RequestHeader String AccessToken,
+ @RequestHeader Long UserId,
+ @RequestHeader(required = false) Long CompanyId,
+ @RequestHeader Integer LanguageType) {
+ return dashboardNotificationService.add(optDashboardNotificationParams, UserId, CompanyId, LanguageType);
+ }
+
+ @OperationLog(operation = "editNotification", remark = "")
+ @Operation(summary = "Edit dashboard notification")
+ @RequestMapping(value = "/edit", method = RequestMethod.POST)
+ public SimpleDataResponse edit(
+ @RequestBody OptDashboardNotificationParams optDashboardNotificationParams,
+ @RequestHeader String LoginName,
+ @RequestHeader String AccessToken,
+ @RequestHeader Long UserId,
+ @RequestHeader(required = false) Long CompanyId,
+ @RequestHeader Integer LanguageType) {
+ return dashboardNotificationService.edit(optDashboardNotificationParams, UserId, CompanyId, LanguageType);
+ }
+
+ @OperationLog(operation = "delNotification", remark = "")
+ @Operation(summary = "Delete dashboard notification")
+ @RequestMapping(value = "/batchDelete", method = RequestMethod.POST)
+ public SimpleDataResponse batchDelete(
+ @RequestBody DeleteDashboardNotificationParams deleteParams,
+ @RequestHeader String LoginName,
+ @RequestHeader String AccessToken,
+ @RequestHeader Long UserId,
+ @RequestHeader(required = false) Long CompanyId,
+ @RequestHeader Integer LanguageType) {
+ return dashboardNotificationService.batchDelete(deleteParams, UserId, CompanyId, LanguageType);
+ }
+
+ @Operation(summary = "Get dashboard notification list")
+ @RequestMapping(value = "/getListPage", method = RequestMethod.GET)
+ public PageResponse> getListPage(
+ @RequestHeader String LoginName,
+ @RequestHeader String AccessToken,
+ @RequestHeader Long UserId,
+ @RequestHeader(required = false) Long CompanyId,
+ @RequestHeader Integer LanguageType,
+ @RequestHeader Integer UTCOffset,
+ DashboardNotificationSearchParams searchParams) throws BusinessException {
+
+ searchParams.setUserId(UserId);
+ PageResponse> response = new PageResponse<>();
+ try {
+ response.setData(dashboardNotificationService.getListPage(searchParams, CompanyId, UserId, LanguageType, UTCOffset));
+ response.setCode(ResponseCode.SUCCESS);
+ response.setMsg("success");
+ } catch (Exception e) {
+ logger.error("Error querying list", e);
+ response.setCode(ResponseCode.SERVER_ERROR);
+ response.setMsg("service error");
+ }
+ return response;
+ }
+
+}
diff --git a/dongjian-dashboard-back-controller/src/main/java/com/dongjian/dashboard/back/controller/DeviceDataAccumulateController.java b/dongjian-dashboard-back-controller/src/main/java/com/dongjian/dashboard/back/controller/DeviceDataAccumulateController.java
index 7404568..f99a26a 100644
--- a/dongjian-dashboard-back-controller/src/main/java/com/dongjian/dashboard/back/controller/DeviceDataAccumulateController.java
+++ b/dongjian-dashboard-back-controller/src/main/java/com/dongjian/dashboard/back/controller/DeviceDataAccumulateController.java
@@ -2,6 +2,10 @@ package com.dongjian.dashboard.back.controller;
import com.alibaba.excel.EasyExcel;
+import com.alibaba.excel.ExcelWriter;
+import com.alibaba.excel.util.StringUtils;
+import com.alibaba.excel.write.metadata.WriteSheet;
+import com.dongjian.dashboard.back.common.Constants;
import com.dongjian.dashboard.back.common.exception.BusinessException;
import com.dongjian.dashboard.back.common.response.PageInfo;
import com.dongjian.dashboard.back.common.response.PageResponse;
@@ -14,17 +18,22 @@ import com.dongjian.dashboard.back.dto.device.LineDataSearchParams;
import com.dongjian.dashboard.back.easyexcel.ExportDeviceAccumulateDataDTO;
import com.dongjian.dashboard.back.easyexcel.LanguageDynamicHeaderAdapter;
import com.dongjian.dashboard.back.service.DeviceDataAccumulateService;
+import com.dongjian.dashboard.back.service.common.CommonOpt;
+import com.dongjian.dashboard.back.util.CommonUtil;
import com.dongjian.dashboard.back.vo.data.DeviceAccumulateData;
import com.dongjian.dashboard.back.vo.device.LineData;
+import com.github.pagehelper.PageHelper;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.Parameter;
import io.swagger.v3.oas.annotations.media.Schema;
import io.swagger.v3.oas.annotations.tags.Tag;
import jakarta.servlet.http.HttpServletResponse;
+import org.apache.commons.collections4.CollectionUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.*;
import java.io.IOException;
@@ -46,8 +55,13 @@ public class DeviceDataAccumulateController {
private static final Logger logger = LoggerFactory.getLogger(DeviceDataAccumulateController.class);
+ @Value("${export.page.size}")
+ private Integer EXPORT_PAGE_SIZE;
+
@Autowired
private DeviceDataAccumulateService deviceDataAccumulateService;
+ @Autowired
+ private CommonOpt commonOpt;
@OperationLog(operation = "getCumulativeDataList", remark = "")
@Operation(summary = "获取积算数据列表")
@@ -90,25 +104,61 @@ public class DeviceDataAccumulateController {
response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");
response.setCharacterEncoding("utf-8");
- String fileName = URLEncoder.encode("積算データ", StandardCharsets.UTF_8).replace("+", "%20");
+ String fileName = URLEncoder.encode("積算データ"+CommonUtil.generateExcelSuffix(), StandardCharsets.UTF_8).replace("+", "%20");
response.setHeader("Content-disposition", "attachment;filename*=utf-8''" + fileName + ".xlsx");
- PageInfo pageData = deviceDataAccumulateService.getDataList(pageSearchParam, CompanyId, UserId, LanguageType);
- List list = pageData.getList();
-
- List exportList = list.stream().map(item -> {
- ExportDeviceAccumulateDataDTO dto = new ExportDeviceAccumulateDataDTO();
- BeanUtils.copyProperties(item, dto);
- return dto;
- }).toList();
+ // ===== 固定导出分页大小=====
+ pageSearchParam.setPageSize(EXPORT_PAGE_SIZE);
- // 构造 Excel header:每列三语组合为字符串 "中文||English||日本語"
+ // ===== 构建 Excel =====
List> head = LanguageDynamicHeaderAdapter.buildHead(ExportDeviceAccumulateDataDTO.class, LanguageType);
-
- EasyExcel.write(response.getOutputStream())
- .head(head)
- .sheet("sheet1")
- .doWrite(exportList);
+ ExcelWriter excelWriter = EasyExcel.write(response.getOutputStream()).head(head).build();
+ WriteSheet sheet = EasyExcel.writerSheet("sheet1").build();
+
+ // ===== 循环分页查询并写 Excel =====
+ int pageNum = 1;
+ try {
+ while (true) {
+ pageSearchParam.setPageNum(pageNum);
+
+ PageInfo pageData = deviceDataAccumulateService.getDataList(pageSearchParam, CompanyId, UserId, LanguageType);
+
+ List list = pageData.getList();
+ if (CollectionUtils.isEmpty(list)) {
+ break; // 没数据了,结束
+ }
+
+ for (DeviceAccumulateData item : list) {
+ ExportDeviceAccumulateDataDTO dto = new ExportDeviceAccumulateDataDTO();
+ BeanUtils.copyProperties(item, dto);
+ dto.setLastYearRatio(CommonUtil.ratio(item.getCumulativeValue(), item.getLastYearValue()));
+ dto.setYesterdayRatio(CommonUtil.ratio(item.getCumulativeValue(), item.getYesterdayValue()));
+ dto.setStatus111(commonOpt.status111Mapping(item.getStatus111()));
+ excelWriter.write(List.of(dto), sheet);
+
+ // 手动置空,提醒 GC 回收
+ dto = null;
+ item = null;
+ }
+
+ // 手动清理分页数据和缓存
+ list.clear();
+ PageHelper.clearPage();
+
+ // 最后一页判断(加这个更安全)
+ if (pageNum >= pageData.getPages()) {
+ break;
+ }
+
+ pageNum++;
+ }
+ } catch (Exception e) {
+ logger.error("export error", e);
+ throw e;
+ } finally {
+ excelWriter.finish();
+ PageHelper.clearPage();
+ }
}
@@ -116,6 +166,7 @@ public class DeviceDataAccumulateController {
@Operation(summary = "获取7日趋势数据")
@RequestMapping(value = "/getLineData",method = RequestMethod.POST)
public SimpleDataResponse> getLineData(
+ @Parameter(name = "searchType", description = "1-按小时,2-全部数据", required = true) Integer searchType,
@Parameter(name = "LoginName", description = "Login name", required = true, schema = @Schema(defaultValue = "admin")) @RequestHeader(required=true) String LoginName,
@Parameter(name = "AccessToken", description = "Authentication token", required = true) @RequestHeader(required=true) String AccessToken,
@Parameter(name = "UserId", description = "User ID", required = true, schema = @Schema(defaultValue = "1")) @RequestHeader(required=true) Long UserId,
@@ -123,7 +174,7 @@ public class DeviceDataAccumulateController {
@Parameter(name = "LanguageType", description = "Language type (0: Chinese, 1: English, 2: Japanese)", required = true, schema = @Schema(defaultValue = "2")) @RequestHeader(required=true) Integer LanguageType,
@RequestBody LineDataSearchParams lineDataSearchParams
) throws BusinessException {
- return deviceDataAccumulateService.getLineData(lineDataSearchParams, CompanyId, UserId, LanguageType);
+ return deviceDataAccumulateService.getLineData(searchType, lineDataSearchParams, CompanyId, UserId, LanguageType);
}
}
diff --git a/dongjian-dashboard-back-controller/src/main/java/com/dongjian/dashboard/back/controller/DeviceDataAlarmController.java b/dongjian-dashboard-back-controller/src/main/java/com/dongjian/dashboard/back/controller/DeviceDataAlarmController.java
index 7fbe789..9847ddf 100644
--- a/dongjian-dashboard-back-controller/src/main/java/com/dongjian/dashboard/back/controller/DeviceDataAlarmController.java
+++ b/dongjian-dashboard-back-controller/src/main/java/com/dongjian/dashboard/back/controller/DeviceDataAlarmController.java
@@ -2,6 +2,9 @@ package com.dongjian.dashboard.back.controller;
import com.alibaba.excel.EasyExcel;
+import com.alibaba.excel.ExcelWriter;
+import com.alibaba.excel.write.metadata.WriteSheet;
+import com.dongjian.dashboard.back.common.Constants;
import com.dongjian.dashboard.back.common.exception.BusinessException;
import com.dongjian.dashboard.back.common.response.PageInfo;
import com.dongjian.dashboard.back.common.response.PageResponse;
@@ -17,18 +20,22 @@ import com.dongjian.dashboard.back.dto.device.WindowAlertQueryRequest;
import com.dongjian.dashboard.back.easyexcel.ExportDeviceAlarmDataDTO;
import com.dongjian.dashboard.back.easyexcel.LanguageDynamicHeaderAdapter;
import com.dongjian.dashboard.back.service.DeviceDataAlarmService;
+import com.dongjian.dashboard.back.util.CommonUtil;
import com.dongjian.dashboard.back.vo.data.DeviceAlarmData;
import com.dongjian.dashboard.back.vo.data.HandleHistoryDataVO;
import com.dongjian.dashboard.back.vo.device.WindowAlertVO;
+import com.github.pagehelper.PageHelper;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.Parameter;
import io.swagger.v3.oas.annotations.media.Schema;
import io.swagger.v3.oas.annotations.tags.Tag;
import jakarta.servlet.http.HttpServletResponse;
+import org.apache.commons.collections4.CollectionUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.*;
import java.io.IOException;
@@ -50,6 +57,9 @@ public class DeviceDataAlarmController {
private static final Logger logger = LoggerFactory.getLogger(DeviceDataAlarmController.class);
+ @Value("${export.page.size}")
+ private Integer EXPORT_PAGE_SIZE;
+
@Autowired
private DeviceDataAlarmService deviceDataAlarmService;
@@ -84,35 +94,65 @@ public class DeviceDataAlarmController {
@OperationLog(operation = "exportAlarmData", remark = "")
@GetMapping("/exportData")
public void exportDeviceAlarm(HttpServletResponse response,
- @Parameter(name = "LoginName", description = "Login name", required = true, schema = @Schema(defaultValue = "admin")) @RequestHeader(required=true) String LoginName,
- @Parameter(name = "AccessToken", description = "Authentication token", required = true) @RequestHeader(required=true) String AccessToken,
- @Parameter(name = "UserId", description = "User ID", required = true, schema = @Schema(defaultValue = "1")) @RequestHeader(required=true) Long UserId,
- @Parameter(name = "CompanyId", description = "ID of the company to which the user belongs", required = false, schema = @Schema(defaultValue = "1")) @RequestHeader(required=false) Long CompanyId,
- @Parameter(name = "LanguageType", description = "Language type (0: Chinese, 1: English, 2: Japanese)", required = true, schema = @Schema(defaultValue = "2")) @RequestHeader(required=true) Integer LanguageType,
- AlarmDataSearchParam pageSearchParam
+ @Parameter(name = "LoginName", description = "Login name", required = true, schema = @Schema(defaultValue = "admin")) @RequestHeader(required=true) String LoginName,
+ @Parameter(name = "AccessToken", description = "Authentication token", required = true) @RequestHeader(required=true) String AccessToken,
+ @Parameter(name = "UserId", description = "User ID", required = true, schema = @Schema(defaultValue = "1")) @RequestHeader(required=true) Long UserId,
+ @Parameter(name = "CompanyId", description = "ID of the company to which the user belongs", required = false, schema = @Schema(defaultValue = "1")) @RequestHeader(required=false) Long CompanyId,
+ @Parameter(name = "LanguageType", description = "Language type (0: Chinese, 1: English, 2: Japanese)", required = true, schema = @Schema(defaultValue = "2")) @RequestHeader(required=true) Integer LanguageType,
+ AlarmDataSearchParam pageSearchParam
) throws IOException {
response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");
response.setCharacterEncoding("utf-8");
- String fileName = URLEncoder.encode("警報データ", StandardCharsets.UTF_8).replace("+", "%20");
+ String fileName = URLEncoder.encode("警報データ"+ CommonUtil.generateExcelSuffix(), StandardCharsets.UTF_8).replace("+", "%20");
response.setHeader("Content-disposition", "attachment;filename*=utf-8''" + fileName + ".xlsx");
- PageInfo pageData = deviceDataAlarmService.getDataList(pageSearchParam, CompanyId, UserId, LanguageType);
- List list = pageData.getList();
-
- List exportList = list.stream().map(item -> {
- ExportDeviceAlarmDataDTO dto = new ExportDeviceAlarmDataDTO();
- BeanUtils.copyProperties(item, dto);
- return dto;
- }).toList();
+ // ===== 固定导出分页大小 =====
+ pageSearchParam.setPageSize(EXPORT_PAGE_SIZE);
- // 构造 Excel header:每列三语组合为字符串 "中文||English||日本語"
+ // ===== 构建 Excel =====
List> head = LanguageDynamicHeaderAdapter.buildHead(ExportDeviceAlarmDataDTO.class, LanguageType);
+ ExcelWriter excelWriter = EasyExcel.write(response.getOutputStream()).head(head).build();
+ WriteSheet sheet = EasyExcel.writerSheet("sheet1").build();
- EasyExcel.write(response.getOutputStream())
- .head(head)
- .sheet("sheet1")
- .doWrite(exportList);
+ int pageNum = 1;
+ try {
+ while (true) {
+ pageSearchParam.setPageNum(pageNum);
+
+ PageInfo pageData = deviceDataAlarmService.getDataList(pageSearchParam, CompanyId, UserId, LanguageType);
+
+ List list = pageData.getList();
+ if (CollectionUtils.isEmpty(list)) {
+ break; // 没数据了,结束
+ }
+
+ for (DeviceAlarmData item : list) {
+ ExportDeviceAlarmDataDTO dto = new ExportDeviceAlarmDataDTO();
+ BeanUtils.copyProperties(item, dto);
+ excelWriter.write(List.of(dto), sheet);
+
+ // 手动置空,提醒 GC 回收
+ dto = null;
+ item = null;
+ }
+
+ // 手动清理分页数据和缓存
+ list.clear();
+ PageHelper.clearPage();
+
+ if (pageNum >= pageData.getPages()) {
+ break;
+ }
+ pageNum++;
+ }
+ } catch (Exception e) {
+ logger.error("export alarm error", e);
+ throw e;
+ } finally {
+ excelWriter.finish();
+ PageHelper.clearPage();
+ }
}
@OperationLog(operation = "handleAlarm", remark = "")
diff --git a/dongjian-dashboard-back-controller/src/main/java/com/dongjian/dashboard/back/controller/DeviceDataBaStatusController.java b/dongjian-dashboard-back-controller/src/main/java/com/dongjian/dashboard/back/controller/DeviceDataBaStatusController.java
index 6156013..9722f6b 100644
--- a/dongjian-dashboard-back-controller/src/main/java/com/dongjian/dashboard/back/controller/DeviceDataBaStatusController.java
+++ b/dongjian-dashboard-back-controller/src/main/java/com/dongjian/dashboard/back/controller/DeviceDataBaStatusController.java
@@ -2,26 +2,37 @@ package com.dongjian.dashboard.back.controller;
import com.alibaba.excel.EasyExcel;
+import com.alibaba.excel.ExcelWriter;
+import com.alibaba.excel.write.metadata.WriteSheet;
+import com.dongjian.dashboard.back.common.Constants;
import com.dongjian.dashboard.back.common.exception.BusinessException;
import com.dongjian.dashboard.back.common.response.PageInfo;
import com.dongjian.dashboard.back.common.response.PageResponse;
import com.dongjian.dashboard.back.common.response.ResponseCode;
+import com.dongjian.dashboard.back.common.response.SimpleDataResponse;
import com.dongjian.dashboard.back.configurator.aspect.OperationLog;
import com.dongjian.dashboard.back.configurator.interceptor.AccessRequired;
import com.dongjian.dashboard.back.dto.data.BaStatusDataSearchParam;
+import com.dongjian.dashboard.back.dto.device.LineDataSearchParams;
import com.dongjian.dashboard.back.easyexcel.ExportDeviceBaStatusDataDTO;
import com.dongjian.dashboard.back.easyexcel.LanguageDynamicHeaderAdapter;
import com.dongjian.dashboard.back.service.DeviceDataBaStatusService;
+import com.dongjian.dashboard.back.service.common.CommonOpt;
+import com.dongjian.dashboard.back.util.CommonUtil;
import com.dongjian.dashboard.back.vo.data.DeviceBaStatusData;
+import com.dongjian.dashboard.back.vo.device.LineData;
+import com.github.pagehelper.PageHelper;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.Parameter;
import io.swagger.v3.oas.annotations.media.Schema;
import io.swagger.v3.oas.annotations.tags.Tag;
import jakarta.servlet.http.HttpServletResponse;
+import org.apache.commons.collections4.CollectionUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.*;
import java.io.IOException;
@@ -43,8 +54,13 @@ public class DeviceDataBaStatusController {
private static final Logger logger = LoggerFactory.getLogger(DeviceDataAccumulateController.class);
+ @Value("${export.page.size}")
+ private Integer EXPORT_PAGE_SIZE;
+
@Autowired
private DeviceDataBaStatusService deviceDataBaStatusService;
+ @Autowired
+ private CommonOpt commonOpt;
@OperationLog(operation = "getBaStatusDataList", remark = "")
@Operation(summary = "获取状态数据列表")
@@ -77,35 +93,81 @@ public class DeviceDataBaStatusController {
@OperationLog(operation = "exportBaStatusData", remark = "")
@GetMapping("/exportData")
public void exportDeviceBaStatus(HttpServletResponse response,
- @Parameter(name = "LoginName", description = "Login name", required = true, schema = @Schema(defaultValue = "admin")) @RequestHeader(required=true) String LoginName,
- @Parameter(name = "AccessToken", description = "Authentication token", required = true) @RequestHeader(required=true) String AccessToken,
- @Parameter(name = "UserId", description = "User ID", required = true, schema = @Schema(defaultValue = "1")) @RequestHeader(required=true) Long UserId,
- @Parameter(name = "CompanyId", description = "ID of the company to which the user belongs", required = false, schema = @Schema(defaultValue = "1")) @RequestHeader(required=false) Long CompanyId,
- @Parameter(name = "LanguageType", description = "Language type (0: Chinese, 1: English, 2: Japanese)", required = true, schema = @Schema(defaultValue = "2")) @RequestHeader(required=true) Integer LanguageType,
- BaStatusDataSearchParam pageSearchParam
+ @Parameter(name = "LoginName", description = "Login name", required = true, schema = @Schema(defaultValue = "admin")) @RequestHeader(required=true) String LoginName,
+ @Parameter(name = "AccessToken", description = "Authentication token", required = true) @RequestHeader(required=true) String AccessToken,
+ @Parameter(name = "UserId", description = "User ID", required = true, schema = @Schema(defaultValue = "1")) @RequestHeader(required=true) Long UserId,
+ @Parameter(name = "CompanyId", description = "ID of the company to which the user belongs", required = false, schema = @Schema(defaultValue = "1")) @RequestHeader(required=false) Long CompanyId,
+ @Parameter(name = "LanguageType", description = "Language type (0: Chinese, 1: English, 2: Japanese)", required = true, schema = @Schema(defaultValue = "2")) @RequestHeader(required=true) Integer LanguageType,
+ BaStatusDataSearchParam pageSearchParam
) throws IOException {
response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");
response.setCharacterEncoding("utf-8");
- String fileName = URLEncoder.encode("稼働設備", StandardCharsets.UTF_8).replace("+", "%20");
+ String fileName = URLEncoder.encode("稼働設備"+ CommonUtil.generateExcelSuffix(), StandardCharsets.UTF_8).replace("+", "%20");
response.setHeader("Content-disposition", "attachment;filename*=utf-8''" + fileName + ".xlsx");
- PageInfo pageData = deviceDataBaStatusService.getDataList(pageSearchParam, CompanyId, UserId, LanguageType);
- List list = pageData.getList();
-
- List exportList = list.stream().map(item -> {
- ExportDeviceBaStatusDataDTO dto = new ExportDeviceBaStatusDataDTO();
- BeanUtils.copyProperties(item, dto);
- return dto;
- }).toList();
+ // ===== 固定导出分页大小 =====
+ pageSearchParam.setPageSize(EXPORT_PAGE_SIZE);
- // 构造 Excel header:每列三语组合为字符串 "中文||English||日本語"
+ // ===== 构建 Excel =====
List> head = LanguageDynamicHeaderAdapter.buildHead(ExportDeviceBaStatusDataDTO.class, LanguageType);
+ ExcelWriter excelWriter = EasyExcel.write(response.getOutputStream()).head(head).build();
+ WriteSheet sheet = EasyExcel.writerSheet("sheet1").build();
+
+ int pageNum = 1;
+ try {
+ while (true) {
+ pageSearchParam.setPageNum(pageNum);
+
+ PageInfo pageData = deviceDataBaStatusService.getDataList(pageSearchParam, CompanyId, UserId, LanguageType);
+
+ List list = pageData.getList();
+ if (CollectionUtils.isEmpty(list)) {
+ break; // 没数据了,结束
+ }
+
+ for (DeviceBaStatusData item : list) {
+ ExportDeviceBaStatusDataDTO dto = new ExportDeviceBaStatusDataDTO();
+ BeanUtils.copyProperties(item, dto);
+ dto.setStatus111(commonOpt.status111Mapping(item.getStatus111()));
+ excelWriter.write(List.of(dto), sheet);
+
+ // 手动置空,提醒 GC 回收
+ dto = null;
+ item = null;
+ }
+
+ // 手动清理分页数据和缓存
+ list.clear();
+ PageHelper.clearPage();
+
+ if (pageNum >= pageData.getPages()) {
+ break;
+ }
+ pageNum++;
+ }
+ } catch (Exception e) {
+ logger.error("export BA status error", e);
+ throw e;
+ } finally {
+ excelWriter.finish();
+ PageHelper.clearPage();
+ }
+ }
- EasyExcel.write(response.getOutputStream())
- .head(head)
- .sheet("sheet1")
- .doWrite(exportList);
+ @OperationLog(operation = "getLineData", remark = "")
+ @Operation(summary = "获取状态迁移图")
+ @RequestMapping(value = "/getLineData",method = RequestMethod.POST)
+ public SimpleDataResponse> getLineData(
+ @Parameter(name = "searchType", description = "1-按小时,2-全部数据", required = true) Integer searchType,
+ @Parameter(name = "LoginName", description = "Login name", required = true, schema = @Schema(defaultValue = "admin")) @RequestHeader(required=true) String LoginName,
+ @Parameter(name = "AccessToken", description = "Authentication token", required = true) @RequestHeader(required=true) String AccessToken,
+ @Parameter(name = "UserId", description = "User ID", required = true, schema = @Schema(defaultValue = "1")) @RequestHeader(required=true) Long UserId,
+ @Parameter(name = "CompanyId", description = "ID of the company to which the user belongs", required = false, schema = @Schema(defaultValue = "1")) @RequestHeader(required=false) Long CompanyId,
+ @Parameter(name = "LanguageType", description = "Language type (0: Chinese, 1: English, 2: Japanese)", required = true, schema = @Schema(defaultValue = "2")) @RequestHeader(required=true) Integer LanguageType,
+ @RequestBody LineDataSearchParams lineDataSearchParams
+ ) throws BusinessException {
+ return deviceDataBaStatusService.getLineData(searchType, lineDataSearchParams, CompanyId, UserId, LanguageType);
}
}
diff --git a/dongjian-dashboard-back-controller/src/main/java/com/dongjian/dashboard/back/controller/DeviceDataMeasureController.java b/dongjian-dashboard-back-controller/src/main/java/com/dongjian/dashboard/back/controller/DeviceDataMeasureController.java
index 2e34f8d..e4eff25 100644
--- a/dongjian-dashboard-back-controller/src/main/java/com/dongjian/dashboard/back/controller/DeviceDataMeasureController.java
+++ b/dongjian-dashboard-back-controller/src/main/java/com/dongjian/dashboard/back/controller/DeviceDataMeasureController.java
@@ -2,6 +2,9 @@ package com.dongjian.dashboard.back.controller;
import com.alibaba.excel.EasyExcel;
+import com.alibaba.excel.ExcelWriter;
+import com.alibaba.excel.write.metadata.WriteSheet;
+import com.dongjian.dashboard.back.common.Constants;
import com.dongjian.dashboard.back.common.exception.BusinessException;
import com.dongjian.dashboard.back.common.response.PageInfo;
import com.dongjian.dashboard.back.common.response.PageResponse;
@@ -14,17 +17,22 @@ import com.dongjian.dashboard.back.dto.device.LineDataSearchParams;
import com.dongjian.dashboard.back.easyexcel.ExportDeviceMeasureDataDTO;
import com.dongjian.dashboard.back.easyexcel.LanguageDynamicHeaderAdapter;
import com.dongjian.dashboard.back.service.DeviceDataMeasureService;
+import com.dongjian.dashboard.back.service.common.CommonOpt;
+import com.dongjian.dashboard.back.util.CommonUtil;
import com.dongjian.dashboard.back.vo.data.DeviceMeasureData;
import com.dongjian.dashboard.back.vo.device.LineData;
+import com.github.pagehelper.PageHelper;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.Parameter;
import io.swagger.v3.oas.annotations.media.Schema;
import io.swagger.v3.oas.annotations.tags.Tag;
import jakarta.servlet.http.HttpServletResponse;
+import org.apache.commons.collections4.CollectionUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.*;
import java.io.IOException;
@@ -46,8 +54,13 @@ public class DeviceDataMeasureController {
private static final Logger logger = LoggerFactory.getLogger(DeviceDataAccumulateController.class);
+ @Value("${export.page.size}")
+ private Integer EXPORT_PAGE_SIZE;
+
@Autowired
private DeviceDataMeasureService deviceDataMeasureService;
+ @Autowired
+ private CommonOpt commonOpt;
@OperationLog(operation = "getMeasureDataList", remark = "")
@Operation(summary = "获取计测数据列表")
@@ -80,35 +93,66 @@ public class DeviceDataMeasureController {
@OperationLog(operation = "exportMeasureData", remark = "")
@GetMapping("/exportData")
public void exportDeviceMeasure(HttpServletResponse response,
- @Parameter(name = "LoginName", description = "Login name", required = true, schema = @Schema(defaultValue = "admin")) @RequestHeader(required=true) String LoginName,
- @Parameter(name = "AccessToken", description = "Authentication token", required = true) @RequestHeader(required=true) String AccessToken,
- @Parameter(name = "UserId", description = "User ID", required = true, schema = @Schema(defaultValue = "1")) @RequestHeader(required=true) Long UserId,
- @Parameter(name = "CompanyId", description = "ID of the company to which the user belongs", required = false, schema = @Schema(defaultValue = "1")) @RequestHeader(required=false) Long CompanyId,
- @Parameter(name = "LanguageType", description = "Language type (0: Chinese, 1: English, 2: Japanese)", required = true, schema = @Schema(defaultValue = "2")) @RequestHeader(required=true) Integer LanguageType,
- MeasureDataSearchParam pageSearchParam
+ @Parameter(name = "LoginName", description = "Login name", required = true, schema = @Schema(defaultValue = "admin")) @RequestHeader(required=true) String LoginName,
+ @Parameter(name = "AccessToken", description = "Authentication token", required = true) @RequestHeader(required=true) String AccessToken,
+ @Parameter(name = "UserId", description = "User ID", required = true, schema = @Schema(defaultValue = "1")) @RequestHeader(required=true) Long UserId,
+ @Parameter(name = "CompanyId", description = "ID of the company to which the user belongs", required = false, schema = @Schema(defaultValue = "1")) @RequestHeader(required=false) Long CompanyId,
+ @Parameter(name = "LanguageType", description = "Language type (0: Chinese, 1: English, 2: Japanese)", required = true, schema = @Schema(defaultValue = "2")) @RequestHeader(required=true) Integer LanguageType,
+ MeasureDataSearchParam pageSearchParam
) throws IOException {
response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");
response.setCharacterEncoding("utf-8");
- String fileName = URLEncoder.encode("計測データ", StandardCharsets.UTF_8).replace("+", "%20");
+ String fileName = URLEncoder.encode("計測データ"+ CommonUtil.generateExcelSuffix(), StandardCharsets.UTF_8).replace("+", "%20");
response.setHeader("Content-disposition", "attachment;filename*=utf-8''" + fileName + ".xlsx");
- PageInfo pageData = deviceDataMeasureService.getDataList(pageSearchParam, CompanyId, UserId, LanguageType);
- List list = pageData.getList();
-
- List exportList = list.stream().map(item -> {
- ExportDeviceMeasureDataDTO dto = new ExportDeviceMeasureDataDTO();
- BeanUtils.copyProperties(item, dto);
- return dto;
- }).toList();
+ // ===== 固定导出分页大小 =====
+ pageSearchParam.setPageSize(EXPORT_PAGE_SIZE);
- // 构造 Excel header:每列三语组合为字符串 "中文||English||日本語"
+ // ===== 构建 Excel =====
List> head = LanguageDynamicHeaderAdapter.buildHead(ExportDeviceMeasureDataDTO.class, LanguageType);
-
- EasyExcel.write(response.getOutputStream())
- .head(head)
- .sheet("sheet1")
- .doWrite(exportList);
+ ExcelWriter excelWriter = EasyExcel.write(response.getOutputStream()).head(head).build();
+ WriteSheet sheet = EasyExcel.writerSheet("sheet1").build();
+
+ int pageNum = 1;
+ try {
+ while (true) {
+ pageSearchParam.setPageNum(pageNum);
+
+ PageInfo pageData = deviceDataMeasureService.getDataList(pageSearchParam, CompanyId, UserId, LanguageType);
+
+ List list = pageData.getList();
+ if (CollectionUtils.isEmpty(list)) {
+ break; // 没数据了,结束
+ }
+
+ for (DeviceMeasureData item : list) {
+ ExportDeviceMeasureDataDTO dto = new ExportDeviceMeasureDataDTO();
+ BeanUtils.copyProperties(item, dto);
+ dto.setStatus111(commonOpt.status111Mapping(item.getStatus111()));
+ excelWriter.write(List.of(dto), sheet);
+
+ // 手动置空,提醒 GC 回收
+ dto = null;
+ item = null;
+ }
+
+ // 手动清理分页数据和缓存
+ list.clear();
+ PageHelper.clearPage();
+
+ if (pageNum >= pageData.getPages()) {
+ break;
+ }
+ pageNum++;
+ }
+ } catch (Exception e) {
+ logger.error("export measure data error", e);
+ throw e;
+ } finally {
+ excelWriter.finish();
+ PageHelper.clearPage();
+ }
}
@OperationLog(operation = "getLineData", remark = "")
diff --git a/dongjian-dashboard-back-controller/src/main/java/com/dongjian/dashboard/back/controller/OverviewController.java b/dongjian-dashboard-back-controller/src/main/java/com/dongjian/dashboard/back/controller/OverviewController.java
index 86818d4..95dd689 100644
--- a/dongjian-dashboard-back-controller/src/main/java/com/dongjian/dashboard/back/controller/OverviewController.java
+++ b/dongjian-dashboard-back-controller/src/main/java/com/dongjian/dashboard/back/controller/OverviewController.java
@@ -57,7 +57,7 @@ public class OverviewController {
@Operation(summary = "Get notification")
@RequestMapping(value = "/getNotification", method = RequestMethod.GET)
- public SimpleDataResponse getNotification(
+ public SimpleDataResponse> getNotification(
@Parameter(name = "LoginName", description = "Login name", required = true, schema = @Schema(defaultValue = "admin")) @RequestHeader(required = true) String LoginName,
@Parameter(name = "AccessToken", description = "Authentication token", required = true) @RequestHeader(required = true) String AccessToken,
@Parameter(name = "UserId", description = "User ID", required = true, schema = @Schema(defaultValue = "1")) @RequestHeader(required = true) Long UserId,
diff --git a/dongjian-dashboard-back-controller/src/main/resources/config/application.properties b/dongjian-dashboard-back-controller/src/main/resources/config/application.properties
index bd5ed46..4d9e7ac 100644
--- a/dongjian-dashboard-back-controller/src/main/resources/config/application.properties
+++ b/dongjian-dashboard-back-controller/src/main/resources/config/application.properties
@@ -10,7 +10,7 @@ spring.datasource.admin.name=data_center_aeon_admin
spring.datasource.admin.url=jdbc:mysql://${datasourceDNS}/data_center_aeon_admin?useUnicode=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=${datasourceTimeZone}
spring.datasource.admin.username=${datasourceUsername}
spring.datasource.admin.password=${datasourcePassword}
-#使用druid数据源
+#使ç¨druidæ°æ®æº
spring.datasource.admin.type=com.alibaba.druid.pool.DruidDataSource
spring.datasource.admin.driverClassName=com.mysql.jdbc.Driver
spring.datasource.admin.hikari.driverClassName=com.mysql.jdbc.Driver
@@ -23,7 +23,7 @@ dynamic.jdbc.url=jdbc:mysql://${datasourceDNS:rm-bp11k2zm2fr7864428o.mysql.rds.a
spring.datasource.url=jdbc:mysql://${datasourceDNS:rm-bp11k2zm2fr7864428o.mysql.rds.aliyuncs.com:3306}/data_center_aeon_admin?useUnicode=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=${datasourceTimeZone}
-# Aurora 数据源配置
+# Aurora æ°æ®æºé
ç½®
spring.aurora.datasource.url=${auroraUrl:jdbc:mysql://rm-bp11k2zm2fr7864428o.mysql.rds.aliyuncs.com:3306/data_center_aeon_admin}
spring.aurora.datasource.username=${auroraUser:zhc}
spring.aurora.datasource.password=${auroraPass:Youqu48bnb1}
@@ -33,11 +33,11 @@ spring.aurora.datasource.maximum-pool-size=${auroraMaxPool:30}
spring.aurora.datasource.connection-timeout=${auroraConnTimeout:30000}
-#配置log日志
+#é
ç½®logæ¥å¿
logging.config=classpath:config/logback-boot.xml
logging_level=${loggingLevel}
logging_path=${loggingPath}
-#部署时使用SYSLOG
+#é¨ç½²æ¶ä½¿ç¨SYSLOG
logging_appender=${loggingAppender}
logging_maxHistory=${loggingMaxHistory:7}
logging_maxFileSize=100MB
@@ -45,54 +45,55 @@ mybatis_log_level=${mybatisLogLevel}
user.login.keytimeout=360000
-#集群模式cluster
+#é群模å¼cluster
spring.redis.cluster.nodes=192.168.0.30:7000,192.168.0.30:7001
-#跨集群执行命令时要遵循的最大重定向数量
+#è·¨é群æ§è¡å½ä»¤æ¶è¦éµå¾ªçæå¤§éå®åæ°é
spring.redis.cluster.max-redirects=3
-#哨兵模式sentinel
+#å¨å
µæ¨¡å¼sentinel
spring.redis.sentinel.master=mymaster
spring.redis.sentinel.nodes=192.168.0.30:16379,192.168.0.30:16379
-#单机模式standalone
+#åæºæ¨¡å¼standalone
spring.redis.host=${redisHost}
spring.redis.port=6379
spring.redis.password=${redisPassword}
spring.redis.timeout=5000
-#Redis数据库索引(默认为0)
+#Redisæ°æ®åºç´¢å¼ï¼é»è®¤ä¸º0ï¼
spring.redis.database=0
-#配置启动模式cluster、sentinel、standalone
+#é
ç½®å¯å¨æ¨¡å¼clusterãsentinelãstandalone
spring.redis.mode=standalone
# Lettuce
-# 连接池最大连接数(使用负值表示没有限制)
+# è¿æ¥æ± æå¤§è¿æ¥æ°ï¼ä½¿ç¨è´å¼è¡¨ç¤ºæ²¡æéå¶ï¼
spring.redis.lettuce.pool.max-active=8
-# 连接池最大阻塞等待时间(使用负值表示没有限制)
+# è¿æ¥æ± æå¤§é»å¡çå¾
æ¶é´ï¼ä½¿ç¨è´å¼è¡¨ç¤ºæ²¡æéå¶ï¼
spring.redis.lettuce.pool.max-wait=100
-# 连接池中的最大空闲连接
+# è¿æ¥æ± ä¸çæå¤§ç©ºé²è¿æ¥
spring.redis.lettuce.pool.max-idle=8
-# 连接池中的最 小空闲连接
+# è¿æ¥æ± ä¸çæ å°ç©ºé²è¿æ¥
spring.redis.lettuce.pool.min-idle=0
-# 关闭超时时间
+# å
³éè¶
æ¶æ¶é´
spring.redis.lettuce.shutdown-timeout=100
-#邮件发送信息
+#é®ä»¶åéä¿¡æ¯
mail.smtp.host=email-smtp.ap-northeast-1.amazonaws.com
mail.smtp.port=465
mail.smtp.auth=true
mail.smtp.ssl=true
-mail.sender.username=AKIAVRXFMB43Z4Q6WGZN
-mail.sender.password_encrypted=true
-mail.sender.password=a/52R0rao7ksRMvl1j17fVEmPCw7gC9OreHDqWOE+S7sgmoQT0YgoLRJqOlJqX7e
-mail.sender.sendername=datacenter-info
-mail.sender.from=alert@ttkdatatechbuild.com
-#邮件通知服务开关
+mail.sender.username=AKIAR26KHSVR3E7N7V3X
+mail.sender.password_encrypted=false
+mail.sender.password=BFe3PePmvmKJKF/cwVxKq2C3EG10IcYQ+fNq0Eccl0PU
+mail.sender.sendername=smbil-support@ifmservice.jp
+mail.sender.from=smbil-support@ifmservice.jp
+#\u90AE\u4EF6\u901A\u77E5\u670D\u52A1\u5F00\u5173
mail.send.switch=true
+
Spring.mvc.hiddenmethod.filter.enabled=true
-#单个文件上传发大小
+#å个æä»¶ä¸ä¼ å大å°
spring.servlet.multipart.max-file-size=20MB
-#多个文件上传的共大小不得超过100M
+#å¤ä¸ªæä»¶ä¸ä¼ çå
±å¤§å°ä¸å¾è¶
è¿100M
spring.servlet.multipart.max-request-size=100MB
server.servlet.context-path=/api
@@ -126,4 +127,6 @@ ai.api_base=${aiApiBase:https://pdf-demo-stg.ttkdatatechbuild.com/api}
oidc.issuer = ${oidcIssuer:https://dongjian.southwave.tech/api}
oidc.bimviewer-url = ${oidcBimviewerUrl:https://bimviewer-stg.ttkdatatechbuild.com/TTNB}
-oidc.bimviewer-cognito-auth-host = ${oidcBimviewerCognitoAuthHost:https://bimviewer-stg.auth.ap-northeast-1.amazoncognito.com}
\ No newline at end of file
+oidc.bimviewer-cognito-auth-host = ${oidcBimviewerCognitoAuthHost:https://bimviewer-stg.auth.ap-northeast-1.amazoncognito.com}
+
+export.page.size = ${exportPageSize:600}
\ No newline at end of file
diff --git a/dongjian-dashboard-back-dao/src/main/java/com/dongjian/dashboard/back/dao/aurora/DashboardRecordAccumulateMapperExt.java b/dongjian-dashboard-back-dao/src/main/java/com/dongjian/dashboard/back/dao/aurora/DashboardRecordAccumulateMapperExt.java
index 87c5eec..c165ce9 100644
--- a/dongjian-dashboard-back-dao/src/main/java/com/dongjian/dashboard/back/dao/aurora/DashboardRecordAccumulateMapperExt.java
+++ b/dongjian-dashboard-back-dao/src/main/java/com/dongjian/dashboard/back/dao/aurora/DashboardRecordAccumulateMapperExt.java
@@ -2,6 +2,7 @@ package com.dongjian.dashboard.back.dao.aurora;
import com.dongjian.dashboard.back.dao.auto.DashboardRecordAccumulateMapper;
import com.dongjian.dashboard.back.vo.device.DeviceIncrement;
+import com.dongjian.dashboard.back.vo.record.RecordAccumulateDto;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
@@ -33,4 +34,10 @@ public interface DashboardRecordAccumulateMapperExt extends DashboardRecordAccum
@Param("targetSeconds") int targetSeconds
);
+ List selectByDay(
+ @Param("deviceIds") List deviceIds,
+ @Param("year") int year,
+ @Param("month") int month,
+ @Param("day") int day
+ );
}
diff --git a/dongjian-dashboard-back-dao/src/main/java/com/dongjian/dashboard/back/dao/auto/BaStatusHistoryMapper.java b/dongjian-dashboard-back-dao/src/main/java/com/dongjian/dashboard/back/dao/auto/BaStatusHistoryMapper.java
new file mode 100644
index 0000000..a1a3387
--- /dev/null
+++ b/dongjian-dashboard-back-dao/src/main/java/com/dongjian/dashboard/back/dao/auto/BaStatusHistoryMapper.java
@@ -0,0 +1,96 @@
+package com.dongjian.dashboard.back.dao.auto;
+
+import com.dongjian.dashboard.back.model.BaStatusHistory;
+import com.dongjian.dashboard.back.model.BaStatusHistoryExample;
+import java.util.List;
+import org.apache.ibatis.annotations.Param;
+
+public interface BaStatusHistoryMapper {
+ /**
+ * This method was generated by MyBatis Generator.
+ * This method corresponds to the database table ba_status_history
+ *
+ * @mbg.generated
+ */
+ long countByExample(BaStatusHistoryExample example);
+
+ /**
+ * This method was generated by MyBatis Generator.
+ * This method corresponds to the database table ba_status_history
+ *
+ * @mbg.generated
+ */
+ int deleteByExample(BaStatusHistoryExample example);
+
+ /**
+ * This method was generated by MyBatis Generator.
+ * This method corresponds to the database table ba_status_history
+ *
+ * @mbg.generated
+ */
+ int deleteByPrimaryKey(Long id);
+
+ /**
+ * This method was generated by MyBatis Generator.
+ * This method corresponds to the database table ba_status_history
+ *
+ * @mbg.generated
+ */
+ int insert(BaStatusHistory record);
+
+ /**
+ * This method was generated by MyBatis Generator.
+ * This method corresponds to the database table ba_status_history
+ *
+ * @mbg.generated
+ */
+ int insertSelective(BaStatusHistory record);
+
+ /**
+ * This method was generated by MyBatis Generator.
+ * This method corresponds to the database table ba_status_history
+ *
+ * @mbg.generated
+ */
+ List selectByExample(BaStatusHistoryExample example);
+
+ /**
+ * This method was generated by MyBatis Generator.
+ * This method corresponds to the database table ba_status_history
+ *
+ * @mbg.generated
+ */
+ BaStatusHistory selectByPrimaryKey(Long id);
+
+ /**
+ * This method was generated by MyBatis Generator.
+ * This method corresponds to the database table ba_status_history
+ *
+ * @mbg.generated
+ */
+ int updateByExampleSelective(@Param("record") BaStatusHistory record, @Param("example") BaStatusHistoryExample example);
+
+ /**
+ * This method was generated by MyBatis Generator.
+ * This method corresponds to the database table ba_status_history
+ *
+ * @mbg.generated
+ */
+ int updateByExample(@Param("record") BaStatusHistory record, @Param("example") BaStatusHistoryExample example);
+
+ /**
+ * This method was generated by MyBatis Generator.
+ * This method corresponds to the database table ba_status_history
+ *
+ * @mbg.generated
+ */
+ int updateByPrimaryKeySelective(BaStatusHistory record);
+
+ /**
+ * This method was generated by MyBatis Generator.
+ * This method corresponds to the database table ba_status_history
+ *
+ * @mbg.generated
+ */
+ int updateByPrimaryKey(BaStatusHistory record);
+}
\ No newline at end of file
diff --git a/dongjian-dashboard-back-dao/src/main/java/com/dongjian/dashboard/back/dao/auto/DashboardNotificationCategoryMapper.java b/dongjian-dashboard-back-dao/src/main/java/com/dongjian/dashboard/back/dao/auto/DashboardNotificationCategoryMapper.java
new file mode 100644
index 0000000..5f480e5
--- /dev/null
+++ b/dongjian-dashboard-back-dao/src/main/java/com/dongjian/dashboard/back/dao/auto/DashboardNotificationCategoryMapper.java
@@ -0,0 +1,96 @@
+package com.dongjian.dashboard.back.dao.auto;
+
+import com.dongjian.dashboard.back.model.DashboardNotificationCategory;
+import com.dongjian.dashboard.back.model.DashboardNotificationCategoryExample;
+import java.util.List;
+import org.apache.ibatis.annotations.Param;
+
+public interface DashboardNotificationCategoryMapper {
+ /**
+ * This method was generated by MyBatis Generator.
+ * This method corresponds to the database table dashboard_notification_category
+ *
+ * @mbg.generated
+ */
+ long countByExample(DashboardNotificationCategoryExample example);
+
+ /**
+ * This method was generated by MyBatis Generator.
+ * This method corresponds to the database table dashboard_notification_category
+ *
+ * @mbg.generated
+ */
+ int deleteByExample(DashboardNotificationCategoryExample example);
+
+ /**
+ * This method was generated by MyBatis Generator.
+ * This method corresponds to the database table dashboard_notification_category
+ *
+ * @mbg.generated
+ */
+ int deleteByPrimaryKey(Long id);
+
+ /**
+ * This method was generated by MyBatis Generator.
+ * This method corresponds to the database table dashboard_notification_category
+ *
+ * @mbg.generated
+ */
+ int insert(DashboardNotificationCategory record);
+
+ /**
+ * This method was generated by MyBatis Generator.
+ * This method corresponds to the database table dashboard_notification_category
+ *
+ * @mbg.generated
+ */
+ int insertSelective(DashboardNotificationCategory record);
+
+ /**
+ * This method was generated by MyBatis Generator.
+ * This method corresponds to the database table dashboard_notification_category
+ *
+ * @mbg.generated
+ */
+ List selectByExample(DashboardNotificationCategoryExample example);
+
+ /**
+ * This method was generated by MyBatis Generator.
+ * This method corresponds to the database table dashboard_notification_category
+ *
+ * @mbg.generated
+ */
+ DashboardNotificationCategory selectByPrimaryKey(Long id);
+
+ /**
+ * This method was generated by MyBatis Generator.
+ * This method corresponds to the database table dashboard_notification_category
+ *
+ * @mbg.generated
+ */
+ int updateByExampleSelective(@Param("record") DashboardNotificationCategory record, @Param("example") DashboardNotificationCategoryExample example);
+
+ /**
+ * This method was generated by MyBatis Generator.
+ * This method corresponds to the database table dashboard_notification_category
+ *
+ * @mbg.generated
+ */
+ int updateByExample(@Param("record") DashboardNotificationCategory record, @Param("example") DashboardNotificationCategoryExample example);
+
+ /**
+ * This method was generated by MyBatis Generator.
+ * This method corresponds to the database table dashboard_notification_category
+ *
+ * @mbg.generated
+ */
+ int updateByPrimaryKeySelective(DashboardNotificationCategory record);
+
+ /**
+ * This method was generated by MyBatis Generator.
+ * This method corresponds to the database table dashboard_notification_category
+ *
+ * @mbg.generated
+ */
+ int updateByPrimaryKey(DashboardNotificationCategory record);
+}
\ No newline at end of file
diff --git a/dongjian-dashboard-back-dao/src/main/java/com/dongjian/dashboard/back/dao/ex/BaStatusHistoryMapperExt.java b/dongjian-dashboard-back-dao/src/main/java/com/dongjian/dashboard/back/dao/ex/BaStatusHistoryMapperExt.java
new file mode 100644
index 0000000..f863644
--- /dev/null
+++ b/dongjian-dashboard-back-dao/src/main/java/com/dongjian/dashboard/back/dao/ex/BaStatusHistoryMapperExt.java
@@ -0,0 +1,9 @@
+package com.dongjian.dashboard.back.dao.ex;
+
+import com.dongjian.dashboard.back.dao.auto.BaStatusHistoryMapper;
+import org.apache.ibatis.annotations.Mapper;
+
+@Mapper
+public interface BaStatusHistoryMapperExt extends BaStatusHistoryMapper {
+
+}
diff --git a/dongjian-dashboard-back-dao/src/main/java/com/dongjian/dashboard/back/dao/ex/DashboardNotificationCategoryMapperExt.java b/dongjian-dashboard-back-dao/src/main/java/com/dongjian/dashboard/back/dao/ex/DashboardNotificationCategoryMapperExt.java
new file mode 100644
index 0000000..dda31c0
--- /dev/null
+++ b/dongjian-dashboard-back-dao/src/main/java/com/dongjian/dashboard/back/dao/ex/DashboardNotificationCategoryMapperExt.java
@@ -0,0 +1,17 @@
+package com.dongjian.dashboard.back.dao.ex;
+
+import com.dongjian.dashboard.back.dao.auto.DashboardNotificationCategoryMapper;
+import com.dongjian.dashboard.back.dto.dashboardnotification.DashboardNotificationCategorySearchParams;
+import com.dongjian.dashboard.back.dto.dashboardnotification.OptDashboardNotificationCategoryParams;
+import com.dongjian.dashboard.back.vo.dashboardnotification.DashboardNotificationCategoryPageVO;
+import org.apache.ibatis.annotations.Mapper;
+
+import java.util.List;
+
+@Mapper
+public interface DashboardNotificationCategoryMapperExt extends DashboardNotificationCategoryMapper {
+
+ int checkExist(OptDashboardNotificationCategoryParams optDashboardNotificationCategoryParams);
+
+ List getListPage(DashboardNotificationCategorySearchParams pageSearchParam);
+}
diff --git a/dongjian-dashboard-back-dao/src/main/java/com/dongjian/dashboard/back/dao/ex/DashboardNotificationMapperExt.java b/dongjian-dashboard-back-dao/src/main/java/com/dongjian/dashboard/back/dao/ex/DashboardNotificationMapperExt.java
index 7de86e8..0a7f069 100644
--- a/dongjian-dashboard-back-dao/src/main/java/com/dongjian/dashboard/back/dao/ex/DashboardNotificationMapperExt.java
+++ b/dongjian-dashboard-back-dao/src/main/java/com/dongjian/dashboard/back/dao/ex/DashboardNotificationMapperExt.java
@@ -4,6 +4,7 @@ import java.util.List;
import com.dongjian.dashboard.back.dao.auto.DashboardNotificationMapper;
import com.dongjian.dashboard.back.dao.auto.UserBuildingRelationMapper;
+import com.dongjian.dashboard.back.dto.dashboardnotification.DashboardNotificationSearchParams;
import com.dongjian.dashboard.back.model.UserBuildingRelation;
import com.dongjian.dashboard.back.vo.building.BindedBuildingVO;
import com.dongjian.dashboard.back.vo.dashboardnotification.DashboardNotificationPageVO;
@@ -12,6 +13,8 @@ import org.apache.ibatis.annotations.Mapper;
@Mapper
public interface DashboardNotificationMapperExt extends DashboardNotificationMapper {
- DashboardNotificationPageVO getNotification(Long companyId);
+ List getNotification(Long companyId);
+
+ List getListPage(DashboardNotificationSearchParams pageSearchParam);
}
diff --git a/dongjian-dashboard-back-dao/src/main/java/com/dongjian/dashboard/back/dao/ex/DeviceInfoMapperExt.java b/dongjian-dashboard-back-dao/src/main/java/com/dongjian/dashboard/back/dao/ex/DeviceInfoMapperExt.java
index 10bed02..a3ab5be 100644
--- a/dongjian-dashboard-back-dao/src/main/java/com/dongjian/dashboard/back/dao/ex/DeviceInfoMapperExt.java
+++ b/dongjian-dashboard-back-dao/src/main/java/com/dongjian/dashboard/back/dao/ex/DeviceInfoMapperExt.java
@@ -13,6 +13,7 @@ import com.dongjian.dashboard.back.vo.data.DeviceBaStatusData;
import com.dongjian.dashboard.back.vo.data.DeviceMeasureData;
import com.dongjian.dashboard.back.vo.device.DeviceVO;
import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
import java.util.List;
@@ -38,4 +39,6 @@ public interface DeviceInfoMapperExt extends DeviceInfoMapper {
List getDevice4AlarmData(AlarmDataSearchParam pageSearchParam);
List getDevice4AlarmDataByGroup(AlarmDataSearchParam pageSearchParam);
+
+ List selectAlertingDeviceIds(@Param("deviceIds") List deviceIds);
}
diff --git a/dongjian-dashboard-back-dao/src/main/java/com/dongjian/dashboard/back/dao/ex/DeviceRawdataRealtimeMapperExt.java b/dongjian-dashboard-back-dao/src/main/java/com/dongjian/dashboard/back/dao/ex/DeviceRawdataRealtimeMapperExt.java
index 55a4b64..fb68699 100644
--- a/dongjian-dashboard-back-dao/src/main/java/com/dongjian/dashboard/back/dao/ex/DeviceRawdataRealtimeMapperExt.java
+++ b/dongjian-dashboard-back-dao/src/main/java/com/dongjian/dashboard/back/dao/ex/DeviceRawdataRealtimeMapperExt.java
@@ -11,7 +11,4 @@ import java.util.Map;
@Mapper
public interface DeviceRawdataRealtimeMapperExt extends DeviceRawdataRealtimeMapper {
- List getOverviewInfo(Map paramMap);
-
- List getBuildingInfo(Map buildingMap);
}
diff --git a/dongjian-dashboard-back-dao/src/main/java/com/dongjian/dashboard/back/dao/ex/OverviewInfoMapperExt.java b/dongjian-dashboard-back-dao/src/main/java/com/dongjian/dashboard/back/dao/ex/OverviewInfoMapperExt.java
new file mode 100644
index 0000000..e27ef49
--- /dev/null
+++ b/dongjian-dashboard-back-dao/src/main/java/com/dongjian/dashboard/back/dao/ex/OverviewInfoMapperExt.java
@@ -0,0 +1,19 @@
+package com.dongjian.dashboard.back.dao.ex;
+
+import com.dongjian.dashboard.back.vo.data.OverviewCategoryVO;
+import com.dongjian.dashboard.back.vo.data.OverviewInfo;
+import com.dongjian.dashboard.back.vo.data.OverviewVO;
+import org.apache.ibatis.annotations.Mapper;
+
+import java.util.List;
+import java.util.Map;
+
+@Mapper
+public interface OverviewInfoMapperExt {
+
+ List getOverviewInfo(Map paramMap);
+
+ List getBuildingInfo(Map buildingMap);
+
+ List getExistingCategoryList(Map allCategoryParamMap);
+}
diff --git a/dongjian-dashboard-back-dao/src/main/resources/mappers/aurora/DashboardRecordAccumulateMapperExt.xml b/dongjian-dashboard-back-dao/src/main/resources/mappers/aurora/DashboardRecordAccumulateMapperExt.xml
index b045c80..a62381b 100644
--- a/dongjian-dashboard-back-dao/src/main/resources/mappers/aurora/DashboardRecordAccumulateMapperExt.xml
+++ b/dongjian-dashboard-back-dao/src/main/resources/mappers/aurora/DashboardRecordAccumulateMapperExt.xml
@@ -77,4 +77,23 @@
+
+
+
\ No newline at end of file
diff --git a/dongjian-dashboard-back-dao/src/main/resources/mappers/auto/BaStatusHistoryMapper.xml b/dongjian-dashboard-back-dao/src/main/resources/mappers/auto/BaStatusHistoryMapper.xml
new file mode 100644
index 0000000..771aef2
--- /dev/null
+++ b/dongjian-dashboard-back-dao/src/main/resources/mappers/auto/BaStatusHistoryMapper.xml
@@ -0,0 +1,257 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ and ${criterion.condition}
+
+
+ and ${criterion.condition} #{criterion.value}
+
+
+ and ${criterion.condition} #{criterion.value} and #{criterion.secondValue}
+
+
+ and ${criterion.condition}
+
+ #{listItem}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ and ${criterion.condition}
+
+
+ and ${criterion.condition} #{criterion.value}
+
+
+ and ${criterion.condition} #{criterion.value} and #{criterion.secondValue}
+
+
+ and ${criterion.condition}
+
+ #{listItem}
+
+
+
+
+
+
+
+
+
+
+
+ id, device_info_id, is_running, update_ts
+
+
+
+
+
+ delete from ba_status_history
+ where id = #{id,jdbcType=BIGINT}
+
+
+
+ delete from ba_status_history
+
+
+
+
+
+
+
+ SELECT LAST_INSERT_ID()
+
+ insert into ba_status_history (device_info_id, is_running, update_ts
+ )
+ values (#{deviceInfoId,jdbcType=INTEGER}, #{isRunning,jdbcType=INTEGER}, #{updateTs,jdbcType=VARCHAR}
+ )
+
+
+
+
+ SELECT LAST_INSERT_ID()
+
+ insert into ba_status_history
+
+
+ device_info_id,
+
+
+ is_running,
+
+
+ update_ts,
+
+
+
+
+ #{deviceInfoId,jdbcType=INTEGER},
+
+
+ #{isRunning,jdbcType=INTEGER},
+
+
+ #{updateTs,jdbcType=VARCHAR},
+
+
+
+
+
+
+ update ba_status_history
+
+
+ id = #{record.id,jdbcType=BIGINT},
+
+
+ device_info_id = #{record.deviceInfoId,jdbcType=INTEGER},
+
+
+ is_running = #{record.isRunning,jdbcType=INTEGER},
+
+
+ update_ts = #{record.updateTs,jdbcType=VARCHAR},
+
+
+
+
+
+
+
+
+ update ba_status_history
+ set id = #{record.id,jdbcType=BIGINT},
+ device_info_id = #{record.deviceInfoId,jdbcType=INTEGER},
+ is_running = #{record.isRunning,jdbcType=INTEGER},
+ update_ts = #{record.updateTs,jdbcType=VARCHAR}
+
+
+
+
+
+
+ update ba_status_history
+
+
+ device_info_id = #{deviceInfoId,jdbcType=INTEGER},
+
+
+ is_running = #{isRunning,jdbcType=INTEGER},
+
+
+ update_ts = #{updateTs,jdbcType=VARCHAR},
+
+
+ where id = #{id,jdbcType=BIGINT}
+
+
+
+ update ba_status_history
+ set device_info_id = #{deviceInfoId,jdbcType=INTEGER},
+ is_running = #{isRunning,jdbcType=INTEGER},
+ update_ts = #{updateTs,jdbcType=VARCHAR}
+ where id = #{id,jdbcType=BIGINT}
+
+
\ No newline at end of file
diff --git a/dongjian-dashboard-back-dao/src/main/resources/mappers/auto/BasicUserMapper.xml b/dongjian-dashboard-back-dao/src/main/resources/mappers/auto/BasicUserMapper.xml
index a165f53..708a2d6 100644
--- a/dongjian-dashboard-back-dao/src/main/resources/mappers/auto/BasicUserMapper.xml
+++ b/dongjian-dashboard-back-dao/src/main/resources/mappers/auto/BasicUserMapper.xml
@@ -26,6 +26,8 @@
+
+
id, user_type, company_id, username, login_name, `password`, salt, email, mfa_secret,
mfa_bind, mobile_number, last_login_time, flag, expire_time, create_time, creator_id,
- modify_time, modifier_id, super_role, create_platform
+ modify_time, modifier_id, super_role, create_platform, last_name, first_name