Compare commits

...

54 Commits

Author SHA1 Message Date
review512jwy@163.com 76cbfacee9 处理redisUtil的序列化问题 14 hours ago
review512jwy@163.com 0df1fd0702 在redis里存状态设备上一天最后一条状态 16 hours ago
review512jwy@163.com 33f97d8770 楼宇不传,返回全部 2 weeks ago
review512jwy@163.com a9913ba75b Merge branch 'zhc' into ppt-20260120 2 weeks ago
review512jwy@163.com ebc2fb5e47 导出数量抽到配置文件去 2 weeks ago
review512jwy@163.com f75630b639 Merge branch 'zhc' into ppt-20260120 2 weeks ago
review512jwy@163.com e6952289e5 导出优化 2 weeks ago
review512jwy@163.com 89fe8f8c85 Merge branch 'zhc' into ppt-20260120 2 weeks ago
review512jwy@163.com 1d7b42a42e 导出优化 2 weeks ago
zhczyx@163.com 3afde926fa 修改邮箱信息和模板 2 weeks ago
zhczyx@163.com 0d614ddcd3 修改邮箱信息和模板 2 weeks ago
review512jwy@163.com fcf2417662 Merge branch 'zhc' into ppt-20260120 2 weeks ago
review512jwy@163.com 55988a97dd 完善代码 2 weeks ago
review512jwy@163.com c6a7648323 Merge branch 'zhc' into ppt-20260120 2 weeks ago
zhczyx@163.com db1ba6a396 修改邮箱信息和模板 2 weeks ago
zhczyx@163.com 0cac279d0e 修改邮箱信息和模板 2 weeks ago
zhczyx@163.com 5e7c2710ed 修改邮箱信息和模板 2 weeks ago
review512jwy@163.com 608a33d218 代码完善 3 weeks ago
review512jwy@163.com 5a398c0ffc 代码完善 3 weeks ago
review512jwy@163.com 356273f74d 计测设备,增加前日、前年数据 3 weeks ago
review512jwy@163.com c716f5e886 修改文件名 3 weeks ago
review512jwy@163.com 5d4d03ba1d 导出优化 3 weeks ago
zhczyx@163.com 79957bb825 Merge branch 'ppt-20260120' into zhc 3 weeks ago
review512jwy@163.com 0760418b5f 收藏增加警报设备 3 weeks ago
review512jwy@163.com 8130e97089 收藏增加警报设备 3 weeks ago
review512jwy@163.com 32cd702112 收藏增加警报设备 3 weeks ago
zhczyx@163.com 96d42db08f Merge branch 'ppt-20260120' into zhc 3 weeks ago
review512jwy@163.com 9d4d8b4b76 警报设备增加inAlarm 3 weeks ago
zhczyx@163.com d297dccb07 Merge branch 'ppt-20260120' into zhc 3 weeks ago
review512jwy@163.com 525ab5e21a 状态设备增加inAlarm; 3 weeks ago
review512jwy@163.com 1a1a22fa3e 添加用户userType的bug 3 weeks ago
review512jwy@163.com 5a0917340e 导出日志问题修改 3 weeks ago
zhczyx@163.com e3553cc843 Merge branch 'ppt-20260120' into zhc 3 weeks ago
review512jwy@163.com a96b9af3a8 StopRun空判定 3 weeks ago
review512jwy@163.com 7d1ecfdfec 导出加上日期和时间戳 3 weeks ago
zhczyx@163.com 36184a61f5 Merge branch 'ppt-20260120' into zhc 3 weeks ago
review512jwy@163.com 2183211a0c 导出加上日期和时间戳 3 weeks ago
zhczyx@163.com 3241c29cac Merge branch 'ppt-20260120' into zhc 3 weeks ago
zhczyx@163.com bca3393cd2 同步 3 weeks ago
review512jwy@163.com 9dc8c2f52c 姓名,中间可以加两个空格 3 weeks ago
review512jwy@163.com a913f8cc40 首页【通知】支持显示多个 4 weeks ago
review512jwy@163.com 184905917e 楼宇下设备没有的监视点分类 4 weeks ago
review512jwy@163.com 6bd4021f39 补充日志 4 weeks ago
review512jwy@163.com b2e633e311 增加通知、通知分类管理 4 weeks ago
review512jwy@163.com 16dc1691cd 用户增加 姓、名字段 4 weeks ago
review512jwy@163.com 1c7b2e67f6 状态图24小时前端处理,后台取消 4 weeks ago
review512jwy@163.com eac52febd5 日志记录真实ip 4 weeks ago
review512jwy@163.com f0db8e6e43 告警设备接口增加searchType=4类型、导出表头对齐 4 weeks ago
review512jwy@163.com ec026e6510 状态运行图补充24小时 4 weeks ago
review512jwy@163.com e4f84a2239 状态迁移图 1 month ago
review512jwy@163.com c15a8c3125 dashboard告警恢复只有告警设备需要告警 1 month ago
review512jwy@163.com ecb9d4ac2b dashboard告警改为全部设备 1 month ago
review512jwy@163.com e200d1dba7 latest_是秒ts 1 month ago
review512jwy@163.com 668f26bd84 latest_是秒ts 1 month ago
  1. 9
      dongjian-dashboard-back-common/src/main/java/com/dongjian/dashboard/back/common/Constants.java
  2. 9
      dongjian-dashboard-back-common/src/main/resources/config/language/msg/msg_cn.yml
  3. 10
      dongjian-dashboard-back-common/src/main/resources/config/language/msg/msg_en.yml
  4. 10
      dongjian-dashboard-back-common/src/main/resources/config/language/msg/msg_jp.yml
  5. 11
      dongjian-dashboard-back-controller/buildPush-aeon-prod.sh
  6. 10
      dongjian-dashboard-back-controller/buildPush-aeon.sh
  7. 12
      dongjian-dashboard-back-controller/src/main/java/com/dongjian/dashboard/back/configurator/aspect/OperationLogAspect.java
  8. 98
      dongjian-dashboard-back-controller/src/main/java/com/dongjian/dashboard/back/controller/DashboardNotificationCategoryController.java
  9. 98
      dongjian-dashboard-back-controller/src/main/java/com/dongjian/dashboard/back/controller/DashboardNotificationController.java
  10. 80
      dongjian-dashboard-back-controller/src/main/java/com/dongjian/dashboard/back/controller/DeviceDataAccumulateController.java
  11. 80
      dongjian-dashboard-back-controller/src/main/java/com/dongjian/dashboard/back/controller/DeviceDataAlarmController.java
  12. 102
      dongjian-dashboard-back-controller/src/main/java/com/dongjian/dashboard/back/controller/DeviceDataBaStatusController.java
  13. 86
      dongjian-dashboard-back-controller/src/main/java/com/dongjian/dashboard/back/controller/DeviceDataMeasureController.java
  14. 2
      dongjian-dashboard-back-controller/src/main/java/com/dongjian/dashboard/back/controller/OverviewController.java
  15. 53
      dongjian-dashboard-back-controller/src/main/resources/config/application.properties
  16. 96
      dongjian-dashboard-back-dao/src/main/java/com/dongjian/dashboard/back/dao/auto/BaStatusHistoryMapper.java
  17. 96
      dongjian-dashboard-back-dao/src/main/java/com/dongjian/dashboard/back/dao/auto/DashboardNotificationCategoryMapper.java
  18. 9
      dongjian-dashboard-back-dao/src/main/java/com/dongjian/dashboard/back/dao/ex/BaStatusHistoryMapperExt.java
  19. 17
      dongjian-dashboard-back-dao/src/main/java/com/dongjian/dashboard/back/dao/ex/DashboardNotificationCategoryMapperExt.java
  20. 5
      dongjian-dashboard-back-dao/src/main/java/com/dongjian/dashboard/back/dao/ex/DashboardNotificationMapperExt.java
  21. 3
      dongjian-dashboard-back-dao/src/main/java/com/dongjian/dashboard/back/dao/ex/DeviceInfoMapperExt.java
  22. 3
      dongjian-dashboard-back-dao/src/main/java/com/dongjian/dashboard/back/dao/ex/DeviceRawdataRealtimeMapperExt.java
  23. 19
      dongjian-dashboard-back-dao/src/main/java/com/dongjian/dashboard/back/dao/ex/OverviewInfoMapperExt.java
  24. 257
      dongjian-dashboard-back-dao/src/main/resources/mappers/auto/BaStatusHistoryMapper.xml
  25. 42
      dongjian-dashboard-back-dao/src/main/resources/mappers/auto/BasicUserMapper.xml
  26. 334
      dongjian-dashboard-back-dao/src/main/resources/mappers/auto/DashboardNotificationCategoryMapper.xml
  27. 33
      dongjian-dashboard-back-dao/src/main/resources/mappers/auto/DashboardNotificationMapper.xml
  28. 2
      dongjian-dashboard-back-dao/src/main/resources/mappers/ex/BasicUserMapperExt.xml
  29. 43
      dongjian-dashboard-back-dao/src/main/resources/mappers/ex/DashboardNotificationCategoryMapperExt.xml
  30. 41
      dongjian-dashboard-back-dao/src/main/resources/mappers/ex/DashboardNotificationMapperExt.xml
  31. 70
      dongjian-dashboard-back-dao/src/main/resources/mappers/ex/DeviceInfoMapperExt.xml
  32. 47
      dongjian-dashboard-back-dao/src/main/resources/mappers/ex/DeviceRawdataRealtimeMapperExt.xml
  33. 8
      dongjian-dashboard-back-dao/src/main/resources/mappers/ex/OperationLogMapperExt.xml
  34. 78
      dongjian-dashboard-back-dao/src/main/resources/mappers/ex/OverviewInfoMapperExt.xml
  35. 10
      dongjian-dashboard-back-dao/src/main/resources/mybatis-generator/generatorConfig.xml
  36. 9
      dongjian-dashboard-back-model/src/main/java/com/dongjian/dashboard/back/bo/LatestValueBO.java
  37. 25
      dongjian-dashboard-back-model/src/main/java/com/dongjian/dashboard/back/dto/dashboardnotification/DashboardNotificationCategorySearchParams.java
  38. 22
      dongjian-dashboard-back-model/src/main/java/com/dongjian/dashboard/back/dto/dashboardnotification/DashboardNotificationSearchParams.java
  39. 16
      dongjian-dashboard-back-model/src/main/java/com/dongjian/dashboard/back/dto/dashboardnotification/DeleteDashboardNotificationCategoryParams.java
  40. 16
      dongjian-dashboard-back-model/src/main/java/com/dongjian/dashboard/back/dto/dashboardnotification/DeleteDashboardNotificationParams.java
  41. 21
      dongjian-dashboard-back-model/src/main/java/com/dongjian/dashboard/back/dto/dashboardnotification/OptDashboardNotificationCategoryParams.java
  42. 26
      dongjian-dashboard-back-model/src/main/java/com/dongjian/dashboard/back/dto/dashboardnotification/OptDashboardNotificationParams.java
  43. 2
      dongjian-dashboard-back-model/src/main/java/com/dongjian/dashboard/back/dto/data/AlarmDataSearchParam.java
  44. 6
      dongjian-dashboard-back-model/src/main/java/com/dongjian/dashboard/back/dto/user/OptUserParam.java
  45. 27
      dongjian-dashboard-back-model/src/main/java/com/dongjian/dashboard/back/easyexcel/ExportDeviceAccumulateDataDTO.java
  46. 19
      dongjian-dashboard-back-model/src/main/java/com/dongjian/dashboard/back/easyexcel/ExportDeviceBaStatusDataDTO.java
  47. 17
      dongjian-dashboard-back-model/src/main/java/com/dongjian/dashboard/back/easyexcel/ExportDeviceMeasureDataDTO.java
  48. 2
      dongjian-dashboard-back-model/src/main/java/com/dongjian/dashboard/back/easyexcel/SecondsToHMSConverter.java
  49. 166
      dongjian-dashboard-back-model/src/main/java/com/dongjian/dashboard/back/model/BaStatusHistory.java
  50. 552
      dongjian-dashboard-back-model/src/main/java/com/dongjian/dashboard/back/model/BaStatusHistoryExample.java
  51. 68
      dongjian-dashboard-back-model/src/main/java/com/dongjian/dashboard/back/model/BasicUser.java
  52. 140
      dongjian-dashboard-back-model/src/main/java/com/dongjian/dashboard/back/model/BasicUserExample.java
  53. 34
      dongjian-dashboard-back-model/src/main/java/com/dongjian/dashboard/back/model/DashboardNotification.java
  54. 336
      dongjian-dashboard-back-model/src/main/java/com/dongjian/dashboard/back/model/DashboardNotificationCategory.java
  55. 862
      dongjian-dashboard-back-model/src/main/java/com/dongjian/dashboard/back/model/DashboardNotificationCategoryExample.java
  56. 60
      dongjian-dashboard-back-model/src/main/java/com/dongjian/dashboard/back/model/DashboardNotificationExample.java
  57. 28
      dongjian-dashboard-back-model/src/main/java/com/dongjian/dashboard/back/vo/dashboardnotification/DashboardNotificationCategoryPageVO.java
  58. 12
      dongjian-dashboard-back-model/src/main/java/com/dongjian/dashboard/back/vo/dashboardnotification/DashboardNotificationPageVO.java
  59. 6
      dongjian-dashboard-back-model/src/main/java/com/dongjian/dashboard/back/vo/data/BaseData.java
  60. 3
      dongjian-dashboard-back-model/src/main/java/com/dongjian/dashboard/back/vo/data/DeviceAlarmData.java
  61. 23
      dongjian-dashboard-back-model/src/main/java/com/dongjian/dashboard/back/vo/data/OverviewCategoryVO.java
  62. 3
      dongjian-dashboard-back-model/src/main/java/com/dongjian/dashboard/back/vo/data/OverviewVO.java
  63. 2
      dongjian-dashboard-back-model/src/main/java/com/dongjian/dashboard/back/vo/device/SubLineData.java
  64. 6
      dongjian-dashboard-back-model/src/main/java/com/dongjian/dashboard/back/vo/user/UserPageDTO.java
  65. 24
      dongjian-dashboard-back-service/src/main/java/com/dongjian/dashboard/back/service/DashboardNotificationCategoryService.java
  66. 24
      dongjian-dashboard-back-service/src/main/java/com/dongjian/dashboard/back/service/DashboardNotificationService.java
  67. 5
      dongjian-dashboard-back-service/src/main/java/com/dongjian/dashboard/back/service/DeviceDataBaStatusService.java
  68. 2
      dongjian-dashboard-back-service/src/main/java/com/dongjian/dashboard/back/service/OverviewService.java
  69. 131
      dongjian-dashboard-back-service/src/main/java/com/dongjian/dashboard/back/service/common/CommonOpt.java
  70. 146
      dongjian-dashboard-back-service/src/main/java/com/dongjian/dashboard/back/service/common/LineDataAggregator.java
  71. 269
      dongjian-dashboard-back-service/src/main/java/com/dongjian/dashboard/back/service/impl/DashboardNotificationCategoryServiceImpl.java
  72. 260
      dongjian-dashboard-back-service/src/main/java/com/dongjian/dashboard/back/service/impl/DashboardNotificationServiceImpl.java
  73. 8
      dongjian-dashboard-back-service/src/main/java/com/dongjian/dashboard/back/service/impl/DeviceDataAccumulateServiceImpl.java
  74. 39
      dongjian-dashboard-back-service/src/main/java/com/dongjian/dashboard/back/service/impl/DeviceDataAlarmServiceImpl.java
  75. 118
      dongjian-dashboard-back-service/src/main/java/com/dongjian/dashboard/back/service/impl/DeviceDataBaStatusServiceImpl.java
  76. 8
      dongjian-dashboard-back-service/src/main/java/com/dongjian/dashboard/back/service/impl/DeviceDataMeasureServiceImpl.java
  77. 26
      dongjian-dashboard-back-service/src/main/java/com/dongjian/dashboard/back/service/impl/FavoritedDeviceServiceImpl.java
  78. 71
      dongjian-dashboard-back-service/src/main/java/com/dongjian/dashboard/back/service/impl/OverviewServiceImpl.java
  79. 15
      dongjian-dashboard-back-service/src/main/java/com/dongjian/dashboard/back/service/impl/UserServiceImpl.java
  80. 37
      dongjian-dashboard-back-util/src/main/java/com/dongjian/dashboard/back/util/CommonUtil.java
  81. 10
      dongjian-dashboard-back-util/src/main/java/com/dongjian/dashboard/back/util/DateUtil.java
  82. 40
      dongjian-dashboard-back-util/src/main/java/com/dongjian/dashboard/back/util/IPUtils.java
  83. 2
      dongjian-dashboard-back-util/src/main/java/com/dongjian/dashboard/back/util/redis/RedisUtil.java
  84. 39
      dongjian-dashboard-back-util/src/test/java/com/dongjian/dashboard/back/util/Test.java

9
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;
// 定义大类常量

9
dongjian-dashboard-back-common/src/main/resources/config/language/msg/msg_cn.yml

@ -49,7 +49,7 @@ msgcn:
roleHasBinded: 角色已绑定用户,请先解绑再删除
loginNameOrEmailHasExisted: 用户名或邮箱已被使用
mailAddUserPwdSubject: 新建账号密码
mailAddUserPwdContent: '账号 <u>{0}</u> 的密码为 <span style="text-transform: none;"><u>{1}</u></span> 请妥善保管<br/><br/>登陆网址:<u>{2}</u>'
mailAddUserPwdContent: '{0}<br/><br/>このたびは、データ管理プラットフォームへのご登録、誠にありがとうございます。<br/><br/>下記の通り、アカウントが発行されましたのでご案内いたします。<br/><br/>-------------------------------------------------<br/>ユーザー名(ID):<u>{1}</u><br/>初期パスワード:<span style="text-transform: none;"><u>{2}</u></span><br/>-------------------------------------------------<br/><br/>ご不明な点がございましたら、お気軽にサポートまでお問い合わせください。<br/><br/>-------------------------------<br/>イオンディライト株式会社<br/>サポート窓口: smbil-support@ifmservice.jp<br/>-------------------------------'
mailResetUserPwdSubject: 重置账号密码
pwdFormatError: 密码组成必须包含数字、英文字母、特殊符号(~!@#$%^&*)且大于等于12位
oldPwdError: 旧密码错误
@ -78,6 +78,7 @@ msgcn:
invalidParentLevel: 无效的父级层级
levelReferencedByChildren: 已被下级层级绑定,请先解绑后再删除
elapsedTime: '{0}天{1}小时{2}分'
categoryHasExisted: 分类已存在
operationLogMap:
addRole: 新增角色
editRole: 编辑角色
@ -138,5 +139,11 @@ msgcn:
editLevel: 编辑层级
deleteLevel: 删除层级
queryLevel: 获取层级列表
addNotificationCategory: 新增通知分类
editNotificationCategory: 编辑通知分类
delNotificationCategory: 删除通知分类
addNotification: 新增通知
editNotification: 编辑通知
delNotification: 删除通知

10
dongjian-dashboard-back-common/src/main/resources/config/language/msg/msg_en.yml

@ -49,7 +49,7 @@ msgen:
roleHasBinded: 角色已绑定用户,请先解绑再删除
loginNameOrEmailHasExisted: 用户名或邮箱已被使用
mailAddUserPwdSubject: 新建账号密码
mailAddUserPwdContent: '账号 <u>{0}</u> 的密码为 <span style="text-transform: none;"><u>{1}</u></span> 请妥善保管<br/><br/>登陆网址:<u>{2}</u>'
mailAddUserPwdContent: '{0}<br/><br/>このたびは、データ管理プラットフォームへのご登録、誠にありがとうございます。<br/><br/>下記の通り、アカウントが発行されましたのでご案内いたします。<br/><br/>-------------------------------------------------<br/>ユーザー名(ID):<u>{1}</u><br/>初期パスワード:<span style="text-transform: none;"><u>{2}</u></span><br/>-------------------------------------------------<br/><br/>ご不明な点がございましたら、お気軽にサポートまでお問い合わせください。<br/><br/>-------------------------------<br/>イオンディライト株式会社<br/>サポート窓口: smbil-support@ifmservice.jp<br/>-------------------------------'
mailResetUserPwdSubject: 重置账号密码
pwdFormatError: 密码组成必须包含数字、英文字母、特殊符号(~!@#$%^&*)且大于等于12位
oldPwdError: 旧密码错误
@ -78,6 +78,7 @@ msgen:
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
@ -138,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

10
dongjian-dashboard-back-common/src/main/resources/config/language/msg/msg_jp.yml

@ -49,7 +49,7 @@ msgjp:
roleHasBinded: 役割はユーザーにバインドされている ので、削除する前にバインドを解除してください
loginNameOrEmailHasExisted: ユーザー名またはメールボックスはすでに使用されています
mailAddUserPwdSubject: 新規アカウント・パスワードの作成
mailAddUserPwdContent: 'アカウント <u>{0}</u> のパスワードは <span style="text-transform: none;"><u>{1}</u></span> お忘れにならないようにお願いします。<br/><br/>ログインWebアドレス:<u>{2}</u>'
mailAddUserPwdContent: '{0} 様<br/><br/>このたびは、データ管理プラットフォームへのご登録、誠にありがとうございます。<br/><br/>下記の通り、アカウントが発行されましたのでご案内いたします。<br/><br/>-------------------------------------------------<br/>ユーザー名(ID):<u>{1}</u><br/>初期パスワード:<span style="text-transform: none;"><u>{2}</u></span><br/>-------------------------------------------------<br/><br/>ご不明な点がございましたら、お気軽にサポートまでお問い合わせください。<br/><br/>ログインはこちらから:<br/>【AD スマビル 可視化UI URL】:https://smbil.ifmservice.jp/login<br/><br/>-------------------------------<br/>イオンディライト株式会社<br/>サポート窓口: smbil-support@ifmservice.jp<br/>-------------------------------'
mailResetUserPwdSubject: アカウント・パスワードのリセット
pwdFormatError: パスワードの構成には、数字、アルファベット、特殊文字(~!@#$%^&*) で、12桁以上
oldPwdError: 旧パスワードエラー
@ -78,6 +78,7 @@ msgjp:
invalidParentLevel: 無効な上位階層です
levelReferencedByChildren: 下位階層に紐づいています。削除する前に紐付けを解除してください。
elapsedTime: '{0}日{1}時間{2}分間'
categoryHasExisted: カテゴリは既に存在します。
operationLogMap:
addRole: ロールを追加
editRole: ロールを編集
@ -138,6 +139,13 @@ msgjp:
editLevel: レベルを編集
deleteLevel: レベルを削除
queryLevel: レベル一覧を取得
addNotificationCategory: 通知カテゴリを追加
editNotificationCategory: 通知カテゴリを編集
delNotificationCategory: 通知カテゴリを削除
addNotification: 通知を追加
editNotification: 通知を編集
delNotification: 通知を削除

11
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

10
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
docker push 382934810846.dkr.ecr.ap-northeast-1.amazonaws.com/aeon/dashboard-back-stg:latest

12
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());

98
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<PageInfo<DashboardNotificationCategoryPageVO>> 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<PageInfo<DashboardNotificationCategoryPageVO>> 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;
}
}

98
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<PageInfo<DashboardNotificationPageVO>> 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<PageInfo<DashboardNotificationPageVO>> 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;
}
}

80
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<DeviceAccumulateData> pageData = deviceDataAccumulateService.getDataList(pageSearchParam, CompanyId, UserId, LanguageType);
List<DeviceAccumulateData> list = pageData.getList();
List<ExportDeviceAccumulateDataDTO> 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<List<String>> 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<DeviceAccumulateData> pageData = deviceDataAccumulateService.getDataList(pageSearchParam, CompanyId, UserId, LanguageType);
List<DeviceAccumulateData> 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();
}
}

80
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<DeviceAlarmData> pageData = deviceDataAlarmService.getDataList(pageSearchParam, CompanyId, UserId, LanguageType);
List<DeviceAlarmData> list = pageData.getList();
List<ExportDeviceAlarmDataDTO> 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<List<String>> 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<DeviceAlarmData> pageData = deviceDataAlarmService.getDataList(pageSearchParam, CompanyId, UserId, LanguageType);
List<DeviceAlarmData> 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 = "")

102
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<DeviceBaStatusData> pageData = deviceDataBaStatusService.getDataList(pageSearchParam, CompanyId, UserId, LanguageType);
List<DeviceBaStatusData> list = pageData.getList();
List<ExportDeviceBaStatusDataDTO> 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<List<String>> 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<DeviceBaStatusData> pageData = deviceDataBaStatusService.getDataList(pageSearchParam, CompanyId, UserId, LanguageType);
List<DeviceBaStatusData> 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<List<LineData>> 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);
}
}

86
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<DeviceMeasureData> pageData = deviceDataMeasureService.getDataList(pageSearchParam, CompanyId, UserId, LanguageType);
List<DeviceMeasureData> list = pageData.getList();
List<ExportDeviceMeasureDataDTO> 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<List<String>> 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<DeviceMeasureData> pageData = deviceDataMeasureService.getDataList(pageSearchParam, CompanyId, UserId, LanguageType);
List<DeviceMeasureData> 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 = "")

2
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<DashboardNotificationPageVO> getNotification(
public SimpleDataResponse<List<DashboardNotificationPageVO>> 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,

53
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}
oidc.bimviewer-cognito-auth-host = ${oidcBimviewerCognitoAuthHost:https://bimviewer-stg.auth.ap-northeast-1.amazoncognito.com}
export.page.size = ${exportPageSize:600}

96
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<BaStatusHistory> 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);
}

96
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<DashboardNotificationCategory> 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);
}

9
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 {
}

17
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<DashboardNotificationCategoryPageVO> getListPage(DashboardNotificationCategorySearchParams pageSearchParam);
}

5
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<DashboardNotificationPageVO> getNotification(Long companyId);
List<DashboardNotificationPageVO> getListPage(DashboardNotificationSearchParams pageSearchParam);
}

3
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<DeviceAlarmData> getDevice4AlarmData(AlarmDataSearchParam pageSearchParam);
List<DeviceAlarmData> getDevice4AlarmDataByGroup(AlarmDataSearchParam pageSearchParam);
List<String> selectAlertingDeviceIds(@Param("deviceIds") List<String> deviceIds);
}

3
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<OverviewInfo> getOverviewInfo(Map<String, Object> paramMap);
List<OverviewVO> getBuildingInfo(Map<String, Object> buildingMap);
}

19
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<OverviewInfo> getOverviewInfo(Map<String, Object> paramMap);
List<OverviewVO> getBuildingInfo(Map<String, Object> buildingMap);
List<OverviewCategoryVO> getExistingCategoryList(Map<String, Object> allCategoryParamMap);
}

257
dongjian-dashboard-back-dao/src/main/resources/mappers/auto/BaStatusHistoryMapper.xml

@ -0,0 +1,257 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.dongjian.dashboard.back.dao.auto.BaStatusHistoryMapper">
<resultMap id="BaseResultMap" type="com.dongjian.dashboard.back.model.BaStatusHistory">
<!--
WARNING - @mbg.generated
This element is automatically generated by MyBatis Generator, do not modify.
-->
<id column="id" jdbcType="BIGINT" property="id" />
<result column="device_info_id" jdbcType="INTEGER" property="deviceInfoId" />
<result column="is_running" jdbcType="INTEGER" property="isRunning" />
<result column="update_ts" jdbcType="VARCHAR" property="updateTs" />
</resultMap>
<sql id="Example_Where_Clause">
<!--
WARNING - @mbg.generated
This element is automatically generated by MyBatis Generator, do not modify.
-->
<where>
<foreach collection="oredCriteria" item="criteria" separator="or">
<if test="criteria.valid">
<trim prefix="(" prefixOverrides="and" suffix=")">
<foreach collection="criteria.criteria" item="criterion">
<choose>
<when test="criterion.noValue">
and ${criterion.condition}
</when>
<when test="criterion.singleValue">
and ${criterion.condition} #{criterion.value}
</when>
<when test="criterion.betweenValue">
and ${criterion.condition} #{criterion.value} and #{criterion.secondValue}
</when>
<when test="criterion.listValue">
and ${criterion.condition}
<foreach close=")" collection="criterion.value" item="listItem" open="(" separator=",">
#{listItem}
</foreach>
</when>
</choose>
</foreach>
</trim>
</if>
</foreach>
</where>
</sql>
<sql id="Update_By_Example_Where_Clause">
<!--
WARNING - @mbg.generated
This element is automatically generated by MyBatis Generator, do not modify.
-->
<where>
<foreach collection="example.oredCriteria" item="criteria" separator="or">
<if test="criteria.valid">
<trim prefix="(" prefixOverrides="and" suffix=")">
<foreach collection="criteria.criteria" item="criterion">
<choose>
<when test="criterion.noValue">
and ${criterion.condition}
</when>
<when test="criterion.singleValue">
and ${criterion.condition} #{criterion.value}
</when>
<when test="criterion.betweenValue">
and ${criterion.condition} #{criterion.value} and #{criterion.secondValue}
</when>
<when test="criterion.listValue">
and ${criterion.condition}
<foreach close=")" collection="criterion.value" item="listItem" open="(" separator=",">
#{listItem}
</foreach>
</when>
</choose>
</foreach>
</trim>
</if>
</foreach>
</where>
</sql>
<sql id="Base_Column_List">
<!--
WARNING - @mbg.generated
This element is automatically generated by MyBatis Generator, do not modify.
-->
id, device_info_id, is_running, update_ts
</sql>
<select id="selectByExample" parameterType="com.dongjian.dashboard.back.model.BaStatusHistoryExample" resultMap="BaseResultMap">
<!--
WARNING - @mbg.generated
This element is automatically generated by MyBatis Generator, do not modify.
-->
select
<if test="distinct">
distinct
</if>
'true' as QUERYID,
<include refid="Base_Column_List" />
from ba_status_history
<if test="_parameter != null">
<include refid="Example_Where_Clause" />
</if>
<if test="orderByClause != null">
order by ${orderByClause}
</if>
</select>
<select id="selectByPrimaryKey" parameterType="java.lang.Long" resultMap="BaseResultMap">
<!--
WARNING - @mbg.generated
This element is automatically generated by MyBatis Generator, do not modify.
-->
select
<include refid="Base_Column_List" />
from ba_status_history
where id = #{id,jdbcType=BIGINT}
</select>
<delete id="deleteByPrimaryKey" parameterType="java.lang.Long">
<!--
WARNING - @mbg.generated
This element is automatically generated by MyBatis Generator, do not modify.
-->
delete from ba_status_history
where id = #{id,jdbcType=BIGINT}
</delete>
<delete id="deleteByExample" parameterType="com.dongjian.dashboard.back.model.BaStatusHistoryExample">
<!--
WARNING - @mbg.generated
This element is automatically generated by MyBatis Generator, do not modify.
-->
delete from ba_status_history
<if test="_parameter != null">
<include refid="Example_Where_Clause" />
</if>
</delete>
<insert id="insert" parameterType="com.dongjian.dashboard.back.model.BaStatusHistory">
<!--
WARNING - @mbg.generated
This element is automatically generated by MyBatis Generator, do not modify.
-->
<selectKey keyProperty="id" order="AFTER" resultType="java.lang.Long">
SELECT LAST_INSERT_ID()
</selectKey>
insert into ba_status_history (device_info_id, is_running, update_ts
)
values (#{deviceInfoId,jdbcType=INTEGER}, #{isRunning,jdbcType=INTEGER}, #{updateTs,jdbcType=VARCHAR}
)
</insert>
<insert id="insertSelective" parameterType="com.dongjian.dashboard.back.model.BaStatusHistory">
<!--
WARNING - @mbg.generated
This element is automatically generated by MyBatis Generator, do not modify.
-->
<selectKey keyProperty="id" order="AFTER" resultType="java.lang.Long">
SELECT LAST_INSERT_ID()
</selectKey>
insert into ba_status_history
<trim prefix="(" suffix=")" suffixOverrides=",">
<if test="deviceInfoId != null">
device_info_id,
</if>
<if test="isRunning != null">
is_running,
</if>
<if test="updateTs != null">
update_ts,
</if>
</trim>
<trim prefix="values (" suffix=")" suffixOverrides=",">
<if test="deviceInfoId != null">
#{deviceInfoId,jdbcType=INTEGER},
</if>
<if test="isRunning != null">
#{isRunning,jdbcType=INTEGER},
</if>
<if test="updateTs != null">
#{updateTs,jdbcType=VARCHAR},
</if>
</trim>
</insert>
<select id="countByExample" parameterType="com.dongjian.dashboard.back.model.BaStatusHistoryExample" resultType="java.lang.Long">
<!--
WARNING - @mbg.generated
This element is automatically generated by MyBatis Generator, do not modify.
-->
select count(*) from ba_status_history
<if test="_parameter != null">
<include refid="Example_Where_Clause" />
</if>
</select>
<update id="updateByExampleSelective" parameterType="map">
<!--
WARNING - @mbg.generated
This element is automatically generated by MyBatis Generator, do not modify.
-->
update ba_status_history
<set>
<if test="record.id != null">
id = #{record.id,jdbcType=BIGINT},
</if>
<if test="record.deviceInfoId != null">
device_info_id = #{record.deviceInfoId,jdbcType=INTEGER},
</if>
<if test="record.isRunning != null">
is_running = #{record.isRunning,jdbcType=INTEGER},
</if>
<if test="record.updateTs != null">
update_ts = #{record.updateTs,jdbcType=VARCHAR},
</if>
</set>
<if test="_parameter != null">
<include refid="Update_By_Example_Where_Clause" />
</if>
</update>
<update id="updateByExample" parameterType="map">
<!--
WARNING - @mbg.generated
This element is automatically generated by MyBatis Generator, do not modify.
-->
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}
<if test="_parameter != null">
<include refid="Update_By_Example_Where_Clause" />
</if>
</update>
<update id="updateByPrimaryKeySelective" parameterType="com.dongjian.dashboard.back.model.BaStatusHistory">
<!--
WARNING - @mbg.generated
This element is automatically generated by MyBatis Generator, do not modify.
-->
update ba_status_history
<set>
<if test="deviceInfoId != null">
device_info_id = #{deviceInfoId,jdbcType=INTEGER},
</if>
<if test="isRunning != null">
is_running = #{isRunning,jdbcType=INTEGER},
</if>
<if test="updateTs != null">
update_ts = #{updateTs,jdbcType=VARCHAR},
</if>
</set>
where id = #{id,jdbcType=BIGINT}
</update>
<update id="updateByPrimaryKey" parameterType="com.dongjian.dashboard.back.model.BaStatusHistory">
<!--
WARNING - @mbg.generated
This element is automatically generated by MyBatis Generator, do not modify.
-->
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}
</update>
</mapper>

42
dongjian-dashboard-back-dao/src/main/resources/mappers/auto/BasicUserMapper.xml

@ -26,6 +26,8 @@
<result column="modifier_id" jdbcType="BIGINT" property="modifierId" />
<result column="super_role" jdbcType="INTEGER" property="superRole" />
<result column="create_platform" jdbcType="INTEGER" property="createPlatform" />
<result column="last_name" jdbcType="VARCHAR" property="lastName" />
<result column="first_name" jdbcType="VARCHAR" property="firstName" />
</resultMap>
<sql id="Example_Where_Clause">
<!--
@ -100,7 +102,7 @@
-->
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
</sql>
<select id="selectByExample" parameterType="com.dongjian.dashboard.back.model.BasicUserExample" resultMap="BaseResultMap">
<!--
@ -163,14 +165,16 @@
mobile_number, last_login_time, flag,
expire_time, create_time, creator_id,
modify_time, modifier_id, super_role,
create_platform)
create_platform, last_name, first_name
)
values (#{userType,jdbcType=INTEGER}, #{companyId,jdbcType=BIGINT}, #{username,jdbcType=VARCHAR},
#{loginName,jdbcType=VARCHAR}, #{password,jdbcType=VARCHAR}, #{salt,jdbcType=VARCHAR},
#{email,jdbcType=VARCHAR}, #{mfaSecret,jdbcType=VARCHAR}, #{mfaBind,jdbcType=INTEGER},
#{mobileNumber,jdbcType=VARCHAR}, #{lastLoginTime,jdbcType=BIGINT}, #{flag,jdbcType=INTEGER},
#{expireTime,jdbcType=BIGINT}, #{createTime,jdbcType=BIGINT}, #{creatorId,jdbcType=BIGINT},
#{modifyTime,jdbcType=BIGINT}, #{modifierId,jdbcType=BIGINT}, #{superRole,jdbcType=INTEGER},
#{createPlatform,jdbcType=INTEGER})
#{createPlatform,jdbcType=INTEGER}, #{lastName,jdbcType=VARCHAR}, #{firstName,jdbcType=VARCHAR}
)
</insert>
<insert id="insertSelective" parameterType="com.dongjian.dashboard.back.model.BasicUser">
<!--
@ -239,6 +243,12 @@
<if test="createPlatform != null">
create_platform,
</if>
<if test="lastName != null">
last_name,
</if>
<if test="firstName != null">
first_name,
</if>
</trim>
<trim prefix="values (" suffix=")" suffixOverrides=",">
<if test="userType != null">
@ -298,6 +308,12 @@
<if test="createPlatform != null">
#{createPlatform,jdbcType=INTEGER},
</if>
<if test="lastName != null">
#{lastName,jdbcType=VARCHAR},
</if>
<if test="firstName != null">
#{firstName,jdbcType=VARCHAR},
</if>
</trim>
</insert>
<select id="countByExample" parameterType="com.dongjian.dashboard.back.model.BasicUserExample" resultType="java.lang.Long">
@ -377,6 +393,12 @@
<if test="record.createPlatform != null">
create_platform = #{record.createPlatform,jdbcType=INTEGER},
</if>
<if test="record.lastName != null">
last_name = #{record.lastName,jdbcType=VARCHAR},
</if>
<if test="record.firstName != null">
first_name = #{record.firstName,jdbcType=VARCHAR},
</if>
</set>
<if test="_parameter != null">
<include refid="Update_By_Example_Where_Clause" />
@ -407,7 +429,9 @@
modify_time = #{record.modifyTime,jdbcType=BIGINT},
modifier_id = #{record.modifierId,jdbcType=BIGINT},
super_role = #{record.superRole,jdbcType=INTEGER},
create_platform = #{record.createPlatform,jdbcType=INTEGER}
create_platform = #{record.createPlatform,jdbcType=INTEGER},
last_name = #{record.lastName,jdbcType=VARCHAR},
first_name = #{record.firstName,jdbcType=VARCHAR}
<if test="_parameter != null">
<include refid="Update_By_Example_Where_Clause" />
</if>
@ -476,6 +500,12 @@
<if test="createPlatform != null">
create_platform = #{createPlatform,jdbcType=INTEGER},
</if>
<if test="lastName != null">
last_name = #{lastName,jdbcType=VARCHAR},
</if>
<if test="firstName != null">
first_name = #{firstName,jdbcType=VARCHAR},
</if>
</set>
where id = #{id,jdbcType=BIGINT}
</update>
@ -503,7 +533,9 @@
modify_time = #{modifyTime,jdbcType=BIGINT},
modifier_id = #{modifierId,jdbcType=BIGINT},
super_role = #{superRole,jdbcType=INTEGER},
create_platform = #{createPlatform,jdbcType=INTEGER}
create_platform = #{createPlatform,jdbcType=INTEGER},
last_name = #{lastName,jdbcType=VARCHAR},
first_name = #{firstName,jdbcType=VARCHAR}
where id = #{id,jdbcType=BIGINT}
</update>
</mapper>

334
dongjian-dashboard-back-dao/src/main/resources/mappers/auto/DashboardNotificationCategoryMapper.xml

@ -0,0 +1,334 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.dongjian.dashboard.back.dao.auto.DashboardNotificationCategoryMapper">
<resultMap id="BaseResultMap" type="com.dongjian.dashboard.back.model.DashboardNotificationCategory">
<!--
WARNING - @mbg.generated
This element is automatically generated by MyBatis Generator, do not modify.
-->
<id column="id" jdbcType="BIGINT" property="id" />
<result column="company_id" jdbcType="BIGINT" property="companyId" />
<result column="name" jdbcType="VARCHAR" property="name" />
<result column="remark" jdbcType="VARCHAR" property="remark" />
<result column="flag" jdbcType="INTEGER" property="flag" />
<result column="created_by" jdbcType="BIGINT" property="createdBy" />
<result column="created_at" jdbcType="BIGINT" property="createdAt" />
<result column="updated_at" jdbcType="BIGINT" property="updatedAt" />
<result column="updated_by" jdbcType="BIGINT" property="updatedBy" />
</resultMap>
<sql id="Example_Where_Clause">
<!--
WARNING - @mbg.generated
This element is automatically generated by MyBatis Generator, do not modify.
-->
<where>
<foreach collection="oredCriteria" item="criteria" separator="or">
<if test="criteria.valid">
<trim prefix="(" prefixOverrides="and" suffix=")">
<foreach collection="criteria.criteria" item="criterion">
<choose>
<when test="criterion.noValue">
and ${criterion.condition}
</when>
<when test="criterion.singleValue">
and ${criterion.condition} #{criterion.value}
</when>
<when test="criterion.betweenValue">
and ${criterion.condition} #{criterion.value} and #{criterion.secondValue}
</when>
<when test="criterion.listValue">
and ${criterion.condition}
<foreach close=")" collection="criterion.value" item="listItem" open="(" separator=",">
#{listItem}
</foreach>
</when>
</choose>
</foreach>
</trim>
</if>
</foreach>
</where>
</sql>
<sql id="Update_By_Example_Where_Clause">
<!--
WARNING - @mbg.generated
This element is automatically generated by MyBatis Generator, do not modify.
-->
<where>
<foreach collection="example.oredCriteria" item="criteria" separator="or">
<if test="criteria.valid">
<trim prefix="(" prefixOverrides="and" suffix=")">
<foreach collection="criteria.criteria" item="criterion">
<choose>
<when test="criterion.noValue">
and ${criterion.condition}
</when>
<when test="criterion.singleValue">
and ${criterion.condition} #{criterion.value}
</when>
<when test="criterion.betweenValue">
and ${criterion.condition} #{criterion.value} and #{criterion.secondValue}
</when>
<when test="criterion.listValue">
and ${criterion.condition}
<foreach close=")" collection="criterion.value" item="listItem" open="(" separator=",">
#{listItem}
</foreach>
</when>
</choose>
</foreach>
</trim>
</if>
</foreach>
</where>
</sql>
<sql id="Base_Column_List">
<!--
WARNING - @mbg.generated
This element is automatically generated by MyBatis Generator, do not modify.
-->
id, company_id, `name`, remark, flag, created_by, created_at, updated_at, updated_by
</sql>
<select id="selectByExample" parameterType="com.dongjian.dashboard.back.model.DashboardNotificationCategoryExample" resultMap="BaseResultMap">
<!--
WARNING - @mbg.generated
This element is automatically generated by MyBatis Generator, do not modify.
-->
select
<if test="distinct">
distinct
</if>
'true' as QUERYID,
<include refid="Base_Column_List" />
from dashboard_notification_category
<if test="_parameter != null">
<include refid="Example_Where_Clause" />
</if>
<if test="orderByClause != null">
order by ${orderByClause}
</if>
</select>
<select id="selectByPrimaryKey" parameterType="java.lang.Long" resultMap="BaseResultMap">
<!--
WARNING - @mbg.generated
This element is automatically generated by MyBatis Generator, do not modify.
-->
select
<include refid="Base_Column_List" />
from dashboard_notification_category
where id = #{id,jdbcType=BIGINT}
</select>
<delete id="deleteByPrimaryKey" parameterType="java.lang.Long">
<!--
WARNING - @mbg.generated
This element is automatically generated by MyBatis Generator, do not modify.
-->
delete from dashboard_notification_category
where id = #{id,jdbcType=BIGINT}
</delete>
<delete id="deleteByExample" parameterType="com.dongjian.dashboard.back.model.DashboardNotificationCategoryExample">
<!--
WARNING - @mbg.generated
This element is automatically generated by MyBatis Generator, do not modify.
-->
delete from dashboard_notification_category
<if test="_parameter != null">
<include refid="Example_Where_Clause" />
</if>
</delete>
<insert id="insert" parameterType="com.dongjian.dashboard.back.model.DashboardNotificationCategory">
<!--
WARNING - @mbg.generated
This element is automatically generated by MyBatis Generator, do not modify.
-->
<selectKey keyProperty="id" order="AFTER" resultType="java.lang.Long">
SELECT LAST_INSERT_ID()
</selectKey>
insert into dashboard_notification_category (company_id, `name`, remark,
flag, created_by, created_at,
updated_at, updated_by)
values (#{companyId,jdbcType=BIGINT}, #{name,jdbcType=VARCHAR}, #{remark,jdbcType=VARCHAR},
#{flag,jdbcType=INTEGER}, #{createdBy,jdbcType=BIGINT}, #{createdAt,jdbcType=BIGINT},
#{updatedAt,jdbcType=BIGINT}, #{updatedBy,jdbcType=BIGINT})
</insert>
<insert id="insertSelective" parameterType="com.dongjian.dashboard.back.model.DashboardNotificationCategory">
<!--
WARNING - @mbg.generated
This element is automatically generated by MyBatis Generator, do not modify.
-->
<selectKey keyProperty="id" order="AFTER" resultType="java.lang.Long">
SELECT LAST_INSERT_ID()
</selectKey>
insert into dashboard_notification_category
<trim prefix="(" suffix=")" suffixOverrides=",">
<if test="companyId != null">
company_id,
</if>
<if test="name != null">
`name`,
</if>
<if test="remark != null">
remark,
</if>
<if test="flag != null">
flag,
</if>
<if test="createdBy != null">
created_by,
</if>
<if test="createdAt != null">
created_at,
</if>
<if test="updatedAt != null">
updated_at,
</if>
<if test="updatedBy != null">
updated_by,
</if>
</trim>
<trim prefix="values (" suffix=")" suffixOverrides=",">
<if test="companyId != null">
#{companyId,jdbcType=BIGINT},
</if>
<if test="name != null">
#{name,jdbcType=VARCHAR},
</if>
<if test="remark != null">
#{remark,jdbcType=VARCHAR},
</if>
<if test="flag != null">
#{flag,jdbcType=INTEGER},
</if>
<if test="createdBy != null">
#{createdBy,jdbcType=BIGINT},
</if>
<if test="createdAt != null">
#{createdAt,jdbcType=BIGINT},
</if>
<if test="updatedAt != null">
#{updatedAt,jdbcType=BIGINT},
</if>
<if test="updatedBy != null">
#{updatedBy,jdbcType=BIGINT},
</if>
</trim>
</insert>
<select id="countByExample" parameterType="com.dongjian.dashboard.back.model.DashboardNotificationCategoryExample" resultType="java.lang.Long">
<!--
WARNING - @mbg.generated
This element is automatically generated by MyBatis Generator, do not modify.
-->
select count(*) from dashboard_notification_category
<if test="_parameter != null">
<include refid="Example_Where_Clause" />
</if>
</select>
<update id="updateByExampleSelective" parameterType="map">
<!--
WARNING - @mbg.generated
This element is automatically generated by MyBatis Generator, do not modify.
-->
update dashboard_notification_category
<set>
<if test="record.id != null">
id = #{record.id,jdbcType=BIGINT},
</if>
<if test="record.companyId != null">
company_id = #{record.companyId,jdbcType=BIGINT},
</if>
<if test="record.name != null">
`name` = #{record.name,jdbcType=VARCHAR},
</if>
<if test="record.remark != null">
remark = #{record.remark,jdbcType=VARCHAR},
</if>
<if test="record.flag != null">
flag = #{record.flag,jdbcType=INTEGER},
</if>
<if test="record.createdBy != null">
created_by = #{record.createdBy,jdbcType=BIGINT},
</if>
<if test="record.createdAt != null">
created_at = #{record.createdAt,jdbcType=BIGINT},
</if>
<if test="record.updatedAt != null">
updated_at = #{record.updatedAt,jdbcType=BIGINT},
</if>
<if test="record.updatedBy != null">
updated_by = #{record.updatedBy,jdbcType=BIGINT},
</if>
</set>
<if test="_parameter != null">
<include refid="Update_By_Example_Where_Clause" />
</if>
</update>
<update id="updateByExample" parameterType="map">
<!--
WARNING - @mbg.generated
This element is automatically generated by MyBatis Generator, do not modify.
-->
update dashboard_notification_category
set id = #{record.id,jdbcType=BIGINT},
company_id = #{record.companyId,jdbcType=BIGINT},
`name` = #{record.name,jdbcType=VARCHAR},
remark = #{record.remark,jdbcType=VARCHAR},
flag = #{record.flag,jdbcType=INTEGER},
created_by = #{record.createdBy,jdbcType=BIGINT},
created_at = #{record.createdAt,jdbcType=BIGINT},
updated_at = #{record.updatedAt,jdbcType=BIGINT},
updated_by = #{record.updatedBy,jdbcType=BIGINT}
<if test="_parameter != null">
<include refid="Update_By_Example_Where_Clause" />
</if>
</update>
<update id="updateByPrimaryKeySelective" parameterType="com.dongjian.dashboard.back.model.DashboardNotificationCategory">
<!--
WARNING - @mbg.generated
This element is automatically generated by MyBatis Generator, do not modify.
-->
update dashboard_notification_category
<set>
<if test="companyId != null">
company_id = #{companyId,jdbcType=BIGINT},
</if>
<if test="name != null">
`name` = #{name,jdbcType=VARCHAR},
</if>
<if test="remark != null">
remark = #{remark,jdbcType=VARCHAR},
</if>
<if test="flag != null">
flag = #{flag,jdbcType=INTEGER},
</if>
<if test="createdBy != null">
created_by = #{createdBy,jdbcType=BIGINT},
</if>
<if test="createdAt != null">
created_at = #{createdAt,jdbcType=BIGINT},
</if>
<if test="updatedAt != null">
updated_at = #{updatedAt,jdbcType=BIGINT},
</if>
<if test="updatedBy != null">
updated_by = #{updatedBy,jdbcType=BIGINT},
</if>
</set>
where id = #{id,jdbcType=BIGINT}
</update>
<update id="updateByPrimaryKey" parameterType="com.dongjian.dashboard.back.model.DashboardNotificationCategory">
<!--
WARNING - @mbg.generated
This element is automatically generated by MyBatis Generator, do not modify.
-->
update dashboard_notification_category
set company_id = #{companyId,jdbcType=BIGINT},
`name` = #{name,jdbcType=VARCHAR},
remark = #{remark,jdbcType=VARCHAR},
flag = #{flag,jdbcType=INTEGER},
created_by = #{createdBy,jdbcType=BIGINT},
created_at = #{createdAt,jdbcType=BIGINT},
updated_at = #{updatedAt,jdbcType=BIGINT},
updated_by = #{updatedBy,jdbcType=BIGINT}
where id = #{id,jdbcType=BIGINT}
</update>
</mapper>

33
dongjian-dashboard-back-dao/src/main/resources/mappers/auto/DashboardNotificationMapper.xml

@ -10,6 +10,7 @@
<result column="company_id" jdbcType="BIGINT" property="companyId" />
<result column="demand_time" jdbcType="VARCHAR" property="demandTime" />
<result column="category" jdbcType="VARCHAR" property="category" />
<result column="category_id" jdbcType="BIGINT" property="categoryId" />
<result column="flag" jdbcType="INTEGER" property="flag" />
<result column="created_at" jdbcType="BIGINT" property="createdAt" />
<result column="created_by" jdbcType="BIGINT" property="createdBy" />
@ -94,8 +95,8 @@
WARNING - @mbg.generated
This element is automatically generated by MyBatis Generator, do not modify.
-->
id, company_id, demand_time, category, flag, created_at, created_by, updated_at,
updated_by
id, company_id, demand_time, category, category_id, flag, created_at, created_by,
updated_at, updated_by
</sql>
<sql id="Blob_Column_List">
<!--
@ -183,13 +184,13 @@
SELECT LAST_INSERT_ID()
</selectKey>
insert into dashboard_notification (company_id, demand_time, category,
flag, created_at, created_by,
updated_at, updated_by, content
)
category_id, flag, created_at,
created_by, updated_at, updated_by,
content)
values (#{companyId,jdbcType=BIGINT}, #{demandTime,jdbcType=VARCHAR}, #{category,jdbcType=VARCHAR},
#{flag,jdbcType=INTEGER}, #{createdAt,jdbcType=BIGINT}, #{createdBy,jdbcType=BIGINT},
#{updatedAt,jdbcType=BIGINT}, #{updatedBy,jdbcType=BIGINT}, #{content,jdbcType=LONGVARCHAR}
)
#{categoryId,jdbcType=BIGINT}, #{flag,jdbcType=INTEGER}, #{createdAt,jdbcType=BIGINT},
#{createdBy,jdbcType=BIGINT}, #{updatedAt,jdbcType=BIGINT}, #{updatedBy,jdbcType=BIGINT},
#{content,jdbcType=LONGVARCHAR})
</insert>
<insert id="insertSelective" parameterType="com.dongjian.dashboard.back.model.DashboardNotification">
<!--
@ -210,6 +211,9 @@
<if test="category != null">
category,
</if>
<if test="categoryId != null">
category_id,
</if>
<if test="flag != null">
flag,
</if>
@ -239,6 +243,9 @@
<if test="category != null">
#{category,jdbcType=VARCHAR},
</if>
<if test="categoryId != null">
#{categoryId,jdbcType=BIGINT},
</if>
<if test="flag != null">
#{flag,jdbcType=INTEGER},
</if>
@ -288,6 +295,9 @@
<if test="record.category != null">
category = #{record.category,jdbcType=VARCHAR},
</if>
<if test="record.categoryId != null">
category_id = #{record.categoryId,jdbcType=BIGINT},
</if>
<if test="record.flag != null">
flag = #{record.flag,jdbcType=INTEGER},
</if>
@ -321,6 +331,7 @@
company_id = #{record.companyId,jdbcType=BIGINT},
demand_time = #{record.demandTime,jdbcType=VARCHAR},
category = #{record.category,jdbcType=VARCHAR},
category_id = #{record.categoryId,jdbcType=BIGINT},
flag = #{record.flag,jdbcType=INTEGER},
created_at = #{record.createdAt,jdbcType=BIGINT},
created_by = #{record.createdBy,jdbcType=BIGINT},
@ -341,6 +352,7 @@
company_id = #{record.companyId,jdbcType=BIGINT},
demand_time = #{record.demandTime,jdbcType=VARCHAR},
category = #{record.category,jdbcType=VARCHAR},
category_id = #{record.categoryId,jdbcType=BIGINT},
flag = #{record.flag,jdbcType=INTEGER},
created_at = #{record.createdAt,jdbcType=BIGINT},
created_by = #{record.createdBy,jdbcType=BIGINT},
@ -366,6 +378,9 @@
<if test="category != null">
category = #{category,jdbcType=VARCHAR},
</if>
<if test="categoryId != null">
category_id = #{categoryId,jdbcType=BIGINT},
</if>
<if test="flag != null">
flag = #{flag,jdbcType=INTEGER},
</if>
@ -396,6 +411,7 @@
set company_id = #{companyId,jdbcType=BIGINT},
demand_time = #{demandTime,jdbcType=VARCHAR},
category = #{category,jdbcType=VARCHAR},
category_id = #{categoryId,jdbcType=BIGINT},
flag = #{flag,jdbcType=INTEGER},
created_at = #{createdAt,jdbcType=BIGINT},
created_by = #{createdBy,jdbcType=BIGINT},
@ -413,6 +429,7 @@
set company_id = #{companyId,jdbcType=BIGINT},
demand_time = #{demandTime,jdbcType=VARCHAR},
category = #{category,jdbcType=VARCHAR},
category_id = #{categoryId,jdbcType=BIGINT},
flag = #{flag,jdbcType=INTEGER},
created_at = #{createdAt,jdbcType=BIGINT},
created_by = #{createdBy,jdbcType=BIGINT},

2
dongjian-dashboard-back-dao/src/main/resources/mappers/ex/BasicUserMapperExt.xml

@ -24,6 +24,8 @@
buser.username username,
buser.login_name loginName,
buser.email,
buser.last_name,
buser.first_name,
buser.mfa_bind,
buser.mobile_number mobileNumber,
buser.create_time createTime,

43
dongjian-dashboard-back-dao/src/main/resources/mappers/ex/DashboardNotificationCategoryMapperExt.xml

@ -0,0 +1,43 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.dongjian.dashboard.back.dao.ex.DashboardNotificationCategoryMapperExt">
<select id="checkExist" resultType="java.lang.Integer">
SELECT
COUNT(1)
FROM
dashboard_notification_category
WHERE
flag != 1 AND name = #{name}
<if test="companyId != null">
AND company_id = #{companyId}
</if>
<if test="categoryId != null">
AND id != #{categoryId}
</if>
</select>
<select id="getListPage" resultType="com.dongjian.dashboard.back.vo.dashboardnotification.DashboardNotificationCategoryPageVO">
SELECT
dn.id categoryId,
dn.company_id,
dn.`name`,
dn.remark,
dn.created_at
FROM
dashboard_notification_category dn
WHERE
dn.flag != 1
AND dn.company_id IN <foreach collection="companyIdList" item="item" open="(" separator="," close=")">#{item}</foreach>
<if test="categoryIdList != null">
AND dn.id IN <foreach collection="categoryIdList" item="item" open="(" separator="," close=")">#{item}</foreach>
</if>
<if test="name != null and name != ''">
AND dn.name LIKE CONCAT('%',#{name},'%')
</if>
ORDER BY dn.id DESC
</select>
</mapper>

41
dongjian-dashboard-back-dao/src/main/resources/mappers/ex/DashboardNotificationMapperExt.xml

@ -4,14 +4,39 @@
<select id="getNotification" resultType="com.dongjian.dashboard.back.vo.dashboardnotification.DashboardNotificationPageVO">
SELECT
id dashboardNotificationId,
demand_time,
category,
content,
created_at
FROM dashboard_notification
WHERE flag = 0 AND company_id = #{companyId}
ORDER BY id DESC limit 1
dn.id AS dashboardNotificationId,
dn.demand_time,
COALESCE(
NULLIF(dn.category, ''),
dnc.name
) AS category,
dn.content,
dn.created_at
FROM
dashboard_notification dn LEFT JOIN dashboard_notification_category dnc ON dnc.id = dn.category_id AND dnc.flag = 0
WHERE dn.flag = 0 AND dn.company_id = #{companyId}
ORDER BY dn.id DESC
</select>
<select id="getListPage" resultType="com.dongjian.dashboard.back.vo.dashboardnotification.DashboardNotificationPageVO">
SELECT
dn.id dashboardNotificationId,
dn.company_id,
dn.`demand_time`,
dnc.`name` AS category,
dnc.id AS categoryId,
dn.content,
dn.created_at
FROM
dashboard_notification dn
left join dashboard_notification_category dnc on dn.category_id = dnc.id and dnc.flag != 1
WHERE
dn.flag != 1
AND dn.company_id IN <foreach collection="companyIdList" item="item" open="(" separator="," close=")">#{item}</foreach>
<if test="dashboardNotificationIdList != null">
AND dn.id IN <foreach collection="dashboardNotificationIdList" item="item" open="(" separator="," close=")">#{item}</foreach>
</if>
ORDER BY dn.created_at DESC
</select>
</mapper>

70
dongjian-dashboard-back-dao/src/main/resources/mappers/ex/DeviceInfoMapperExt.xml

@ -6,6 +6,8 @@
<sql id="deviceDataSelect">
basic_floor.floor_id as floorId,
basic_floor.name as floorName,
basic_building.building_id,
basic_building.name as buildingName,
device_info.id,
device_info.device_id,
device_info.device_name,
@ -294,6 +296,12 @@
,device_info.id desc
</sql>
<sql id="Where_In_Alarm">
(alert_history.handle_status != 3 AND alert_history.handle_status != 4)
OR
(alert_history.handle_status = 4 AND alert_history.retain_alert = 1)
</sql>
<select id="getDevice4AlarmData" resultType="com.dongjian.dashboard.back.vo.data.DeviceAlarmData">
select
<include refid="deviceDataSelect"/>
@ -302,11 +310,28 @@
alert_history.confirm_status,
alert_history.handle_status,
alert_history.id alertHistoryId,
alert_history.retain_alert,
1 as classId,
basic_monitoring_asset.`symbol` assetSymbol
from
alert_history
left join device_info on alert_history.device_id = device_info.device_id
<choose>
<when test="searchType == 4">
device_info
left join (
SELECT
*,
ROW_NUMBER() OVER (
PARTITION BY device_id
ORDER BY receive_ts DESC
) AS rn
FROM alert_history
) alert_history on alert_history.device_id = device_info.device_id AND alert_history.rn = 1
</when>
<otherwise>
alert_history
left join device_info on alert_history.device_id = device_info.device_id
</otherwise>
</choose>
left join basic_monitoring_asset on device_info.asset_id = basic_monitoring_asset.equipment_id
left join basic_space on basic_monitoring_asset.space_id = basic_space.space_id
left join basic_floor on basic_space.floor_id = basic_floor.floor_id
@ -324,10 +349,7 @@
<include refid="deviceDataCommonWhere"/>
<choose>
<when test="searchType == 1">
AND (
(alert_history.handle_status != 3 AND alert_history.handle_status != 4)
OR (alert_history.handle_status = 4 AND alert_history.retain_alert = 1)
)
AND (<include refid="Where_In_Alarm"/>)
</when>
<when test="searchType == 2">
@ -351,11 +373,28 @@
alert_history.confirm_status,
alert_history.handle_status,
alert_history.id alertHistoryId,
alert_history.retain_alert,
1 as classId,
basic_monitoring_asset.`symbol` assetSymbol
from
alert_history
left join device_info on alert_history.device_id = device_info.device_id
<choose>
<when test="searchType == 4">
device_info
left join (
SELECT
*,
ROW_NUMBER() OVER (
PARTITION BY device_id
ORDER BY receive_ts DESC
) AS rn
FROM alert_history
) alert_history on alert_history.device_id = device_info.device_id AND alert_history.rn = 1
</when>
<otherwise>
alert_history
left join device_info on alert_history.device_id = device_info.device_id
</otherwise>
</choose>
left join basic_monitoring_asset on device_info.asset_id = basic_monitoring_asset.equipment_id
left join basic_space on basic_monitoring_asset.space_id = basic_space.space_id
left join basic_floor on basic_space.floor_id = basic_floor.floor_id
@ -375,10 +414,7 @@
<include refid="deviceDataCommonWhere"/>
<choose>
<when test="searchType == 1">
AND (
(alert_history.handle_status != 3 AND alert_history.handle_status != 4)
OR (alert_history.handle_status = 4 AND alert_history.retain_alert = 1)
)
AND (<include refid="Where_In_Alarm"/>)
</when>
<when test="searchType == 2">
@ -393,6 +429,16 @@
<include refid="alertHistoryOrder"/>
</select>
<select id="selectAlertingDeviceIds" resultType="java.lang.String">
SELECT DISTINCT LOWER(device_id) AS device_id
FROM alert_history
WHERE device_id IN
<foreach collection="deviceIds" item="deviceId" open="(" close=")" separator=",">
#{deviceId}
</foreach>
AND (<include refid="Where_In_Alarm"/>)
</select>
<!-- 公共字段 -->
<sql id="commonDeviceSelectFields">
device_info.id,

47
dongjian-dashboard-back-dao/src/main/resources/mappers/ex/DeviceRawdataRealtimeMapperExt.xml

@ -2,52 +2,5 @@
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.dongjian.dashboard.back.dao.ex.DeviceRawdataRealtimeMapperExt">
<select id="getOverviewInfo" resultType="com.dongjian.dashboard.back.vo.data.OverviewInfo">
SELECT
bbuilding.building_id,
bbuilding.name AS buildingName,
ah.device_id,
ah.receive_ts,
basic_asset_class_big.id AS monitoringPointCategoryId,
basic_asset_class_big.class_name AS monitoringPointCategoryName
FROM
basic_building bbuilding
INNER JOIN basic_floor on basic_floor.building_id = bbuilding.building_id
INNER JOIN basic_space on basic_space.floor_id = basic_floor.floor_id
INNER JOIN basic_monitoring_asset on basic_monitoring_asset.space_id = basic_space.space_id
INNER JOIN device_info dinfo ON dinfo.asset_id = basic_monitoring_asset.equipment_id
INNER JOIN alert_history ah ON dinfo.device_id = ah.device_id
LEFT JOIN basic_asset_class_big on basic_asset_class_big.id = basic_monitoring_asset.class_big_id
LEFT JOIN type ty ON dinfo.type_id = ty.id
WHERE
bbuilding.company_id = #{companyId} AND bbuilding.flag = 0 AND basic_floor.flag = 0 AND basic_space.flag = 0
AND basic_monitoring_asset.flag = 0 AND dinfo.flag = 0 AND basic_asset_class_big.flag = 0
AND ah.confirm_status = 0 AND ah.handle_status = 1
AND ty.device_category_id in
<foreach collection="categoryIdList" item="categoryId" open="(" separator="," close=")">
#{categoryId}
</foreach>
</select>
<select id="getBuildingInfo" resultType="com.dongjian.dashboard.back.vo.data.OverviewVO">
SELECT
bbuilding.building_id,
bbuilding.name buildingName,
bbuilding.retain_alert,
bbuilding.latitude,
bbuilding.longitude,
bbuilding.picture_introduction,
bbuilding.udf_building_id
FROM
basic_building bbuilding
WHERE
bbuilding.flag != 1
AND bbuilding.company_id = #{companyId}
<if test="bindBuildingIdList != null">
AND bbuilding.building_id IN <foreach collection="bindBuildingIdList" item="item" open="(" separator="," close=")">#{item}</foreach>
</if>
order by bbuilding.building_id desc
</select>
</mapper>

8
dongjian-dashboard-back-dao/src/main/resources/mappers/ex/OperationLogMapperExt.xml

@ -16,7 +16,13 @@
dolog.request_params,
dolog.execution_time_ms,
dolog.created_at,
buser.login_name `user`
COALESCE(
NULLIF(
CONCAT_WS(' ', buser.last_name, buser.first_name),
''
),
buser.login_name
) AS `user`
FROM
dashboard_operation_log dolog
INNER JOIN data_center_aeon_admin.basic_user buser ON buser.id = dolog.user_id

78
dongjian-dashboard-back-dao/src/main/resources/mappers/ex/OverviewInfoMapperExt.xml

@ -0,0 +1,78 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.dongjian.dashboard.back.dao.ex.OverviewInfoMapperExt">
<select id="getOverviewInfo" resultType="com.dongjian.dashboard.back.vo.data.OverviewInfo">
SELECT
bbuilding.building_id,
bbuilding.name AS buildingName,
ah.device_id,
ah.receive_ts,
basic_asset_class_big.id AS monitoringPointCategoryId,
basic_asset_class_big.class_name AS monitoringPointCategoryName
FROM
basic_building bbuilding
INNER JOIN basic_floor on basic_floor.building_id = bbuilding.building_id
INNER JOIN basic_space on basic_space.floor_id = basic_floor.floor_id
INNER JOIN basic_monitoring_asset on basic_monitoring_asset.space_id = basic_space.space_id
INNER JOIN device_info dinfo ON dinfo.asset_id = basic_monitoring_asset.equipment_id
INNER JOIN alert_history ah ON dinfo.device_id = ah.device_id
LEFT JOIN basic_asset_class_big on basic_asset_class_big.id = basic_monitoring_asset.class_big_id
LEFT JOIN type ty ON dinfo.type_id = ty.id AND ty.flag = 0
AND ty.device_category_id in
<foreach collection="categoryIdList" item="categoryId" open="(" separator="," close=")">
#{categoryId}
</foreach>
WHERE
bbuilding.company_id = #{companyId} AND bbuilding.flag = 0 AND basic_floor.flag = 0 AND basic_space.flag = 0
AND basic_monitoring_asset.flag = 0 AND dinfo.flag = 0 AND basic_asset_class_big.flag = 0
AND ah.confirm_status = 0 AND ah.handle_status = 1
</select>
<select id="getBuildingInfo" resultType="com.dongjian.dashboard.back.vo.data.OverviewVO">
SELECT
bbuilding.building_id,
bbuilding.name buildingName,
bbuilding.retain_alert,
bbuilding.latitude,
bbuilding.longitude,
bbuilding.picture_introduction,
bbuilding.udf_building_id
FROM
basic_building bbuilding
WHERE
bbuilding.flag != 1
AND bbuilding.company_id = #{companyId}
<if test="bindBuildingIdList != null">
AND bbuilding.building_id IN <foreach collection="bindBuildingIdList" item="item" open="(" separator="," close=")">#{item}</foreach>
</if>
order by bbuilding.building_id desc
</select>
<select id="getExistingCategoryList" resultType="com.dongjian.dashboard.back.vo.data.OverviewCategoryVO">
SELECT
bbuilding.building_id,
bbuilding.name AS buildingName,
dinfo.device_id,
basic_asset_class_big.id AS monitoringPointCategoryId,
basic_asset_class_big.class_name AS monitoringPointCategoryName
FROM
basic_building bbuilding
INNER JOIN basic_floor on basic_floor.building_id = bbuilding.building_id
INNER JOIN basic_space on basic_space.floor_id = basic_floor.floor_id
INNER JOIN basic_monitoring_asset on basic_monitoring_asset.space_id = basic_space.space_id
INNER JOIN device_info dinfo ON dinfo.asset_id = basic_monitoring_asset.equipment_id
LEFT JOIN basic_asset_class_big on basic_asset_class_big.id = basic_monitoring_asset.class_big_id
LEFT JOIN type ty ON dinfo.type_id = ty.id AND ty.flag = 0
AND ty.device_category_id in
<foreach collection="categoryIdList" item="categoryId" open="(" separator="," close=")">
#{categoryId}
</foreach>
WHERE
bbuilding.company_id = #{companyId} AND bbuilding.flag = 0 AND basic_floor.flag = 0 AND basic_space.flag = 0
AND basic_monitoring_asset.flag = 0 AND dinfo.flag = 0 AND basic_asset_class_big.flag = 0
</select>
</mapper>

10
dongjian-dashboard-back-dao/src/main/resources/mybatis-generator/generatorConfig.xml

@ -154,5 +154,15 @@
<generatedKey column="id" sqlStatement="Mysql" identity="true" />
</table>
<table tableName="dashboard_notification_category" domainObjectName="DashboardNotificationCategory" enableCountByExample="true" enableUpdateByExample="true" enableDeleteByExample="true" enableSelectByExample="true" selectByExampleQueryId="true">
<property name="useActualColumnNames" value="false" />
<generatedKey column="id" sqlStatement="Mysql" identity="true" />
</table>
<table tableName="ba_status_history" domainObjectName="BaStatusHistory" enableCountByExample="true" enableUpdateByExample="true" enableDeleteByExample="true" enableSelectByExample="true" selectByExampleQueryId="true">
<property name="useActualColumnNames" value="false" />
<generatedKey column="id" sqlStatement="Mysql" identity="true" />
</table>
</context>
</generatorConfiguration>

9
dongjian-dashboard-back-model/src/main/java/com/dongjian/dashboard/back/bo/LatestValueBO.java

@ -0,0 +1,9 @@
package com.dongjian.dashboard.back.bo;
import lombok.Data;
@Data
public class LatestValueBO {
private Long updateTs;
private Integer value;
}

25
dongjian-dashboard-back-model/src/main/java/com/dongjian/dashboard/back/dto/dashboardnotification/DashboardNotificationCategorySearchParams.java

@ -0,0 +1,25 @@
package com.dongjian.dashboard.back.dto.dashboardnotification;
import com.dongjian.dashboard.back.dto.BaseSearchParams;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import java.util.List;
/**
* @author Mr.Jiang
* @time 2022年7月21日 下午8:50:31
*/
@Data
public class DashboardNotificationCategorySearchParams extends BaseSearchParams{
@Schema(description = "IDs, comma-separated", example = "1,47")
private String categoryIds;
@Schema(description = "name", example = "name47")
private String name;
@Schema(description = "ID list", hidden = true)
private List<Long> categoryIdList;
}

22
dongjian-dashboard-back-model/src/main/java/com/dongjian/dashboard/back/dto/dashboardnotification/DashboardNotificationSearchParams.java

@ -0,0 +1,22 @@
package com.dongjian.dashboard.back.dto.dashboardnotification;
import com.dongjian.dashboard.back.dto.BaseSearchParams;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import java.util.List;
/**
* @author Mr.Jiang
* @time 2022年7月21日 下午8:50:31
*/
@Data
public class DashboardNotificationSearchParams extends BaseSearchParams{
@Schema(description = "DashboardNotification IDs, comma-separated", example = "1,47")
private String dashboardNotificationIds;
@Schema(description = "DashboardNotification ID list", hidden = true)
private List<Long> dashboardNotificationIdList;
}

16
dongjian-dashboard-back-model/src/main/java/com/dongjian/dashboard/back/dto/dashboardnotification/DeleteDashboardNotificationCategoryParams.java

@ -0,0 +1,16 @@
package com.dongjian.dashboard.back.dto.dashboardnotification;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
/**
* @author Mr.Jiang
* @time 2022年7月21日 下午8:50:31
*/
@Data
public class DeleteDashboardNotificationCategoryParams {
@Schema(description = "IDs, separated by commas", example = "2738967,587")
private String categoryIds;
}

16
dongjian-dashboard-back-model/src/main/java/com/dongjian/dashboard/back/dto/dashboardnotification/DeleteDashboardNotificationParams.java

@ -0,0 +1,16 @@
package com.dongjian.dashboard.back.dto.dashboardnotification;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
/**
* @author Mr.Jiang
* @time 2022年7月21日 下午8:50:31
*/
@Data
public class DeleteDashboardNotificationParams{
@Schema(description = "DashboardNotification IDs, separated by commas", example = "2738967,587")
private String dashboardNotificationIds;
}

21
dongjian-dashboard-back-model/src/main/java/com/dongjian/dashboard/back/dto/dashboardnotification/OptDashboardNotificationCategoryParams.java

@ -0,0 +1,21 @@
package com.dongjian.dashboard.back.dto.dashboardnotification;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
@Data
public class OptDashboardNotificationCategoryParams {
@Schema(description = "unique identifier ID, not required for new entries", example = "2738967")
private Long categoryId;
@Schema(description = "Company ID", example = "2738967", hidden = true)
private Long companyId;
@Schema(description = "name", example = "webhook", required = true)
private String name;
@Schema(description = "remark", example = "remark")
private String remark;
}

26
dongjian-dashboard-back-model/src/main/java/com/dongjian/dashboard/back/dto/dashboardnotification/OptDashboardNotificationParams.java

@ -0,0 +1,26 @@
package com.dongjian.dashboard.back.dto.dashboardnotification;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
@Data
public class OptDashboardNotificationParams {
@Schema(description = "Provider unique identifier ID, not required for new entries", example = "2738967")
private Long dashboardNotificationId;
@Schema(description = "Company ID", example = "2738967", hidden = true)
private Long companyId;
@Schema(description = "demand time", example = "testProvider1")
private String demandTime;
// @Schema(description = "category", example = "remark")
// private String category;
@Schema(description = "Category ID", example = "2738967")
private Long categoryId;
@Schema(description ="content", example = "2")
private String content;
}

2
dongjian-dashboard-back-model/src/main/java/com/dongjian/dashboard/back/dto/data/AlarmDataSearchParam.java

@ -8,7 +8,7 @@ import lombok.EqualsAndHashCode;
@Data
public class AlarmDataSearchParam extends DataSearchParam {
@Schema(description = "查询类型:1-告警一览,2-告警历史,3-未确认告警",example = "1")
@Schema(description = "查询类型:1-告警一览,2-告警历史,3-未确认告警,4-只查告警类型设备(不是历史)",example = "1")
private Integer searchType;
}

6
dongjian-dashboard-back-model/src/main/java/com/dongjian/dashboard/back/dto/user/OptUserParam.java

@ -36,6 +36,12 @@ public class OptUserParam {
@Schema(description = "所属企业ID",example = "2", hidden = true)
private Long companyId;
@Schema(description = "姓",example = "鸠山", required = true)
private String lastName;
@Schema(description = "名",example = "由纪夫", required = true)
private String firstName;
}

27
dongjian-dashboard-back-model/src/main/java/com/dongjian/dashboard/back/easyexcel/ExportDeviceAccumulateDataDTO.java

@ -10,32 +10,35 @@ public class ExportDeviceAccumulateDataDTO {
@ExcelProperty(value = {"上传时间", "Upload Time", "計測日時"}, converter = TimestampConverter.class)
private Long uploadTimestamp;
@ExcelProperty({"设施名", "Facility Name", "施設名"})
private String buildingName;
@ExcelProperty({"监视点名称", "Monitoring Point Name", "監視点名称"})
private String monitoringPointName;
@ExcelProperty({"楼层名称", "Floor Name", "フロア"})
@ExcelProperty({"楼层名称", "Floor", "フロア"})
private String floorName;
@ExcelProperty({"监控点分类名称", "Monitoring Point Category Name", "分類"})
@ExcelProperty({"监控点分类名称", "Category", "分類"})
private String monitoringPointCategoryName;
@ExcelProperty({"网关信息名称", "Gateway Info Name", "接続先情報"})
private String gatewayInfoName;
// @ExcelProperty({"网关信息名称", "Gateway Info Name", "接続先情報"})
// private String gatewayInfoName;
@ExcelProperty({"数据提供方名称", "Data Provider Name", "データソース"})
private String dataProviderName;
// @ExcelProperty({"数据提供方名称", "Data Provider Name", "データソース"})
// private String dataProviderName;
@ExcelProperty({"设备状态", "Device Status", "デバイス状態"})
@ExcelProperty({"设备状态", "Device Status", "ステータスフラグ"})
private String status111;
@ExcelProperty({"积值", "Cumulative Value", "計測値"})
@ExcelProperty({"积值", "Accumulated Value", "積算値"})
private String cumulativeValue;
@ExcelProperty({"昨日值", "Yesterday's Value", "前日値"})
private String yesterdayValue;
@ExcelProperty({"前日比(%)", "Previous Day Ratio(%)", "前日比(%)"})
private String yesterdayRatio;
@ExcelProperty({"去年值", "Last Year's Value", "前年値"})
private String lastYearValue;
@ExcelProperty({"前年比(%)", "Previous Year Ratio(%)", "前年比(%)"})
private String lastYearRatio;
@ExcelProperty({"单位", "Unit", "単位"})
private String unit;

19
dongjian-dashboard-back-model/src/main/java/com/dongjian/dashboard/back/easyexcel/ExportDeviceBaStatusDataDTO.java

@ -10,6 +10,9 @@ public class ExportDeviceBaStatusDataDTO {
@ExcelProperty(value = {"上传时间", "Upload Time", "計測日時"}, converter = TimestampConverter.class)
private Long uploadTimestamp;
@ExcelProperty({"设施名", "Facility Name", "施設名"})
private String buildingName;
@ExcelProperty({"监视点名称", "Monitoring Point Name", "監視点名称"})
private String monitoringPointName;
@ -19,17 +22,17 @@ public class ExportDeviceBaStatusDataDTO {
@ExcelProperty({"监控点分类名称", "Monitoring Point Category Name", "分類"})
private String monitoringPointCategoryName;
@ExcelProperty({"网关信息名称", "Gateway Info Name", "接続先情報"})
private String gatewayInfoName;
// @ExcelProperty({"网关信息名称", "Gateway Info Name", "接続先情報"})
// private String gatewayInfoName;
@ExcelProperty({"数据提供方名称", "Data Provider Name", "データソース"})
private String dataProviderName;
// @ExcelProperty({"数据提供方名称", "Data Provider Name", "データソース"})
// private String dataProviderName;
@ExcelProperty({"设备状态", "Device Status", "デバイス状態"})
private String status111;
@ExcelProperty({"状态", "Status", "状態"})
private String runningStatus;
@ExcelProperty(value = {"运行状态", "Running status", "状態"}, converter = RunningStatusConverter.class)
private Integer runningStatus;
@ExcelProperty({"设备状态", "Device Status", "ステータスフラグ"})
private String status111;
@ExcelProperty(value = {"上次运行时间", "Last start time", "前回ON"}, converter = TimestampConverter.class)
private Long lastStartTime;

17
dongjian-dashboard-back-model/src/main/java/com/dongjian/dashboard/back/easyexcel/ExportDeviceMeasureDataDTO.java

@ -10,6 +10,9 @@ public class ExportDeviceMeasureDataDTO {
@ExcelProperty(value = {"上传时间", "Upload Time", "計測日時"}, converter = TimestampConverter.class)
private Long uploadTimestamp;
@ExcelProperty({"设施名", "Facility Name", "施設名"})
private String buildingName;
@ExcelProperty({"监视点名称", "Monitoring Point Name", "監視点名称"})
private String monitoringPointName;
@ -19,22 +22,22 @@ public class ExportDeviceMeasureDataDTO {
@ExcelProperty({"监控点分类名称", "Monitoring Point Category Name", "分類"})
private String monitoringPointCategoryName;
@ExcelProperty({"网关信息名称", "Gateway Info Name", "接続先情報"})
private String gatewayInfoName;
// @ExcelProperty({"网关信息名称", "Gateway Info Name", "接続先情報"})
// private String gatewayInfoName;
@ExcelProperty({"数据提供方名称", "Data Provider Name", "データソース"})
private String dataProviderName;
// @ExcelProperty({"数据提供方名称", "Data Provider Name", "データソース"})
// private String dataProviderName;
@ExcelProperty({"设备状态", "Device Status", "デバイス状態"})
@ExcelProperty({"设备状态", "Device Status", "ステータスフラグ"})
private String status111;
@ExcelProperty({"测量值", "Measurement value", "計測値"})
private String measurementValue;
@ExcelProperty({"最大值", "Maximum Value", "最値"})
@ExcelProperty({"最大值", "Maximum Value", "最値"})
private String maxValue;
@ExcelProperty({"最小值", "Minimum Value", "最値"})
@ExcelProperty({"最小值", "Minimum Value", "最値"})
private String minValue;
@ExcelProperty({"单位", "Unit", "単位"})

2
dongjian-dashboard-back-model/src/main/java/com/dongjian/dashboard/back/easyexcel/SecondsToHMSConverter.java

@ -28,6 +28,8 @@ public class SecondsToHMSConverter implements Converter<Long> {
if (null == value) return "";
value = value / 1000;
long hours = value / 3600;
long minutes = (value % 3600) / 60;
long seconds = value % 60;

166
dongjian-dashboard-back-model/src/main/java/com/dongjian/dashboard/back/model/BaStatusHistory.java

@ -0,0 +1,166 @@
package com.dongjian.dashboard.back.model;
import java.io.Serializable;
public class BaStatusHistory implements Serializable {
/**
*
* This field was generated by MyBatis Generator.
* This field corresponds to the database column ba_status_history.id
*
* @mbg.generated
*/
private Long id;
/**
*
* This field was generated by MyBatis Generator.
* This field corresponds to the database column ba_status_history.device_info_id
*
* @mbg.generated
*/
private Integer deviceInfoId;
/**
*
* This field was generated by MyBatis Generator.
* This field corresponds to the database column ba_status_history.is_running
*
* @mbg.generated
*/
private Integer isRunning;
/**
*
* This field was generated by MyBatis Generator.
* This field corresponds to the database column ba_status_history.update_ts
*
* @mbg.generated
*/
private String updateTs;
/**
* This field was generated by MyBatis Generator.
* This field corresponds to the database table ba_status_history
*
* @mbg.generated
*/
private static final long serialVersionUID = 1L;
/**
* This method was generated by MyBatis Generator.
* This method returns the value of the database column ba_status_history.id
*
* @return the value of ba_status_history.id
*
* @mbg.generated
*/
public Long getId() {
return id;
}
/**
* This method was generated by MyBatis Generator.
* This method sets the value of the database column ba_status_history.id
*
* @param id the value for ba_status_history.id
*
* @mbg.generated
*/
public void setId(Long id) {
this.id = id;
}
/**
* This method was generated by MyBatis Generator.
* This method returns the value of the database column ba_status_history.device_info_id
*
* @return the value of ba_status_history.device_info_id
*
* @mbg.generated
*/
public Integer getDeviceInfoId() {
return deviceInfoId;
}
/**
* This method was generated by MyBatis Generator.
* This method sets the value of the database column ba_status_history.device_info_id
*
* @param deviceInfoId the value for ba_status_history.device_info_id
*
* @mbg.generated
*/
public void setDeviceInfoId(Integer deviceInfoId) {
this.deviceInfoId = deviceInfoId;
}
/**
* This method was generated by MyBatis Generator.
* This method returns the value of the database column ba_status_history.is_running
*
* @return the value of ba_status_history.is_running
*
* @mbg.generated
*/
public Integer getIsRunning() {
return isRunning;
}
/**
* This method was generated by MyBatis Generator.
* This method sets the value of the database column ba_status_history.is_running
*
* @param isRunning the value for ba_status_history.is_running
*
* @mbg.generated
*/
public void setIsRunning(Integer isRunning) {
this.isRunning = isRunning;
}
/**
* This method was generated by MyBatis Generator.
* This method returns the value of the database column ba_status_history.update_ts
*
* @return the value of ba_status_history.update_ts
*
* @mbg.generated
*/
public String getUpdateTs() {
return updateTs;
}
/**
* This method was generated by MyBatis Generator.
* This method sets the value of the database column ba_status_history.update_ts
*
* @param updateTs the value for ba_status_history.update_ts
*
* @mbg.generated
*/
public void setUpdateTs(String updateTs) {
this.updateTs = updateTs == null ? null : updateTs.trim();
}
/**
* This method was generated by MyBatis Generator.
* This method corresponds to the database table ba_status_history
*
* @mbg.generated
*/
@Override
public String toString() {
StringBuilder sb = new StringBuilder();
sb.append(getClass().getSimpleName());
sb.append(" [");
sb.append("Hash = ").append(hashCode());
sb.append(", id=").append(id);
sb.append(", deviceInfoId=").append(deviceInfoId);
sb.append(", isRunning=").append(isRunning);
sb.append(", updateTs=").append(updateTs);
sb.append(", serialVersionUID=").append(serialVersionUID);
sb.append("]");
return sb.toString();
}
}

552
dongjian-dashboard-back-model/src/main/java/com/dongjian/dashboard/back/model/BaStatusHistoryExample.java

@ -0,0 +1,552 @@
package com.dongjian.dashboard.back.model;
import java.util.ArrayList;
import java.util.List;
public class BaStatusHistoryExample {
/**
* This field was generated by MyBatis Generator.
* This field corresponds to the database table ba_status_history
*
* @mbg.generated
*/
protected String orderByClause;
/**
* This field was generated by MyBatis Generator.
* This field corresponds to the database table ba_status_history
*
* @mbg.generated
*/
protected boolean distinct;
/**
* This field was generated by MyBatis Generator.
* This field corresponds to the database table ba_status_history
*
* @mbg.generated
*/
protected List<Criteria> oredCriteria;
/**
* This method was generated by MyBatis Generator.
* This method corresponds to the database table ba_status_history
*
* @mbg.generated
*/
public BaStatusHistoryExample() {
oredCriteria = new ArrayList<Criteria>();
}
/**
* This method was generated by MyBatis Generator.
* This method corresponds to the database table ba_status_history
*
* @mbg.generated
*/
public void setOrderByClause(String orderByClause) {
this.orderByClause = orderByClause;
}
/**
* This method was generated by MyBatis Generator.
* This method corresponds to the database table ba_status_history
*
* @mbg.generated
*/
public String getOrderByClause() {
return orderByClause;
}
/**
* This method was generated by MyBatis Generator.
* This method corresponds to the database table ba_status_history
*
* @mbg.generated
*/
public void setDistinct(boolean distinct) {
this.distinct = distinct;
}
/**
* This method was generated by MyBatis Generator.
* This method corresponds to the database table ba_status_history
*
* @mbg.generated
*/
public boolean isDistinct() {
return distinct;
}
/**
* This method was generated by MyBatis Generator.
* This method corresponds to the database table ba_status_history
*
* @mbg.generated
*/
public List<Criteria> getOredCriteria() {
return oredCriteria;
}
/**
* This method was generated by MyBatis Generator.
* This method corresponds to the database table ba_status_history
*
* @mbg.generated
*/
public void or(Criteria criteria) {
oredCriteria.add(criteria);
}
/**
* This method was generated by MyBatis Generator.
* This method corresponds to the database table ba_status_history
*
* @mbg.generated
*/
public Criteria or() {
Criteria criteria = createCriteriaInternal();
oredCriteria.add(criteria);
return criteria;
}
/**
* This method was generated by MyBatis Generator.
* This method corresponds to the database table ba_status_history
*
* @mbg.generated
*/
public Criteria createCriteria() {
Criteria criteria = createCriteriaInternal();
if (oredCriteria.size() == 0) {
oredCriteria.add(criteria);
}
return criteria;
}
/**
* This method was generated by MyBatis Generator.
* This method corresponds to the database table ba_status_history
*
* @mbg.generated
*/
protected Criteria createCriteriaInternal() {
Criteria criteria = new Criteria();
return criteria;
}
/**
* This method was generated by MyBatis Generator.
* This method corresponds to the database table ba_status_history
*
* @mbg.generated
*/
public void clear() {
oredCriteria.clear();
orderByClause = null;
distinct = false;
}
/**
* This class was generated by MyBatis Generator.
* This class corresponds to the database table ba_status_history
*
* @mbg.generated
*/
protected abstract static class GeneratedCriteria {
protected List<Criterion> criteria;
protected GeneratedCriteria() {
super();
criteria = new ArrayList<Criterion>();
}
public boolean isValid() {
return criteria.size() > 0;
}
public List<Criterion> getAllCriteria() {
return criteria;
}
public List<Criterion> getCriteria() {
return criteria;
}
protected void addCriterion(String condition) {
if (condition == null) {
throw new RuntimeException("Value for condition cannot be null");
}
criteria.add(new Criterion(condition));
}
protected void addCriterion(String condition, Object value, String property) {
if (value == null) {
throw new RuntimeException("Value for " + property + " cannot be null");
}
criteria.add(new Criterion(condition, value));
}
protected void addCriterion(String condition, Object value1, Object value2, String property) {
if (value1 == null || value2 == null) {
throw new RuntimeException("Between values for " + property + " cannot be null");
}
criteria.add(new Criterion(condition, value1, value2));
}
public Criteria andIdIsNull() {
addCriterion("id is null");
return (Criteria) this;
}
public Criteria andIdIsNotNull() {
addCriterion("id is not null");
return (Criteria) this;
}
public Criteria andIdEqualTo(Long value) {
addCriterion("id =", value, "id");
return (Criteria) this;
}
public Criteria andIdNotEqualTo(Long value) {
addCriterion("id <>", value, "id");
return (Criteria) this;
}
public Criteria andIdGreaterThan(Long value) {
addCriterion("id >", value, "id");
return (Criteria) this;
}
public Criteria andIdGreaterThanOrEqualTo(Long value) {
addCriterion("id >=", value, "id");
return (Criteria) this;
}
public Criteria andIdLessThan(Long value) {
addCriterion("id <", value, "id");
return (Criteria) this;
}
public Criteria andIdLessThanOrEqualTo(Long value) {
addCriterion("id <=", value, "id");
return (Criteria) this;
}
public Criteria andIdIn(List<Long> values) {
addCriterion("id in", values, "id");
return (Criteria) this;
}
public Criteria andIdNotIn(List<Long> values) {
addCriterion("id not in", values, "id");
return (Criteria) this;
}
public Criteria andIdBetween(Long value1, Long value2) {
addCriterion("id between", value1, value2, "id");
return (Criteria) this;
}
public Criteria andIdNotBetween(Long value1, Long value2) {
addCriterion("id not between", value1, value2, "id");
return (Criteria) this;
}
public Criteria andDeviceInfoIdIsNull() {
addCriterion("device_info_id is null");
return (Criteria) this;
}
public Criteria andDeviceInfoIdIsNotNull() {
addCriterion("device_info_id is not null");
return (Criteria) this;
}
public Criteria andDeviceInfoIdEqualTo(Integer value) {
addCriterion("device_info_id =", value, "deviceInfoId");
return (Criteria) this;
}
public Criteria andDeviceInfoIdNotEqualTo(Integer value) {
addCriterion("device_info_id <>", value, "deviceInfoId");
return (Criteria) this;
}
public Criteria andDeviceInfoIdGreaterThan(Integer value) {
addCriterion("device_info_id >", value, "deviceInfoId");
return (Criteria) this;
}
public Criteria andDeviceInfoIdGreaterThanOrEqualTo(Integer value) {
addCriterion("device_info_id >=", value, "deviceInfoId");
return (Criteria) this;
}
public Criteria andDeviceInfoIdLessThan(Integer value) {
addCriterion("device_info_id <", value, "deviceInfoId");
return (Criteria) this;
}
public Criteria andDeviceInfoIdLessThanOrEqualTo(Integer value) {
addCriterion("device_info_id <=", value, "deviceInfoId");
return (Criteria) this;
}
public Criteria andDeviceInfoIdIn(List<Integer> values) {
addCriterion("device_info_id in", values, "deviceInfoId");
return (Criteria) this;
}
public Criteria andDeviceInfoIdNotIn(List<Integer> values) {
addCriterion("device_info_id not in", values, "deviceInfoId");
return (Criteria) this;
}
public Criteria andDeviceInfoIdBetween(Integer value1, Integer value2) {
addCriterion("device_info_id between", value1, value2, "deviceInfoId");
return (Criteria) this;
}
public Criteria andDeviceInfoIdNotBetween(Integer value1, Integer value2) {
addCriterion("device_info_id not between", value1, value2, "deviceInfoId");
return (Criteria) this;
}
public Criteria andIsRunningIsNull() {
addCriterion("is_running is null");
return (Criteria) this;
}
public Criteria andIsRunningIsNotNull() {
addCriterion("is_running is not null");
return (Criteria) this;
}
public Criteria andIsRunningEqualTo(Integer value) {
addCriterion("is_running =", value, "isRunning");
return (Criteria) this;
}
public Criteria andIsRunningNotEqualTo(Integer value) {
addCriterion("is_running <>", value, "isRunning");
return (Criteria) this;
}
public Criteria andIsRunningGreaterThan(Integer value) {
addCriterion("is_running >", value, "isRunning");
return (Criteria) this;
}
public Criteria andIsRunningGreaterThanOrEqualTo(Integer value) {
addCriterion("is_running >=", value, "isRunning");
return (Criteria) this;
}
public Criteria andIsRunningLessThan(Integer value) {
addCriterion("is_running <", value, "isRunning");
return (Criteria) this;
}
public Criteria andIsRunningLessThanOrEqualTo(Integer value) {
addCriterion("is_running <=", value, "isRunning");
return (Criteria) this;
}
public Criteria andIsRunningIn(List<Integer> values) {
addCriterion("is_running in", values, "isRunning");
return (Criteria) this;
}
public Criteria andIsRunningNotIn(List<Integer> values) {
addCriterion("is_running not in", values, "isRunning");
return (Criteria) this;
}
public Criteria andIsRunningBetween(Integer value1, Integer value2) {
addCriterion("is_running between", value1, value2, "isRunning");
return (Criteria) this;
}
public Criteria andIsRunningNotBetween(Integer value1, Integer value2) {
addCriterion("is_running not between", value1, value2, "isRunning");
return (Criteria) this;
}
public Criteria andUpdateTsIsNull() {
addCriterion("update_ts is null");
return (Criteria) this;
}
public Criteria andUpdateTsIsNotNull() {
addCriterion("update_ts is not null");
return (Criteria) this;
}
public Criteria andUpdateTsEqualTo(String value) {
addCriterion("update_ts =", value, "updateTs");
return (Criteria) this;
}
public Criteria andUpdateTsNotEqualTo(String value) {
addCriterion("update_ts <>", value, "updateTs");
return (Criteria) this;
}
public Criteria andUpdateTsGreaterThan(String value) {
addCriterion("update_ts >", value, "updateTs");
return (Criteria) this;
}
public Criteria andUpdateTsGreaterThanOrEqualTo(String value) {
addCriterion("update_ts >=", value, "updateTs");
return (Criteria) this;
}
public Criteria andUpdateTsLessThan(String value) {
addCriterion("update_ts <", value, "updateTs");
return (Criteria) this;
}
public Criteria andUpdateTsLessThanOrEqualTo(String value) {
addCriterion("update_ts <=", value, "updateTs");
return (Criteria) this;
}
public Criteria andUpdateTsLike(String value) {
addCriterion("update_ts like", value, "updateTs");
return (Criteria) this;
}
public Criteria andUpdateTsNotLike(String value) {
addCriterion("update_ts not like", value, "updateTs");
return (Criteria) this;
}
public Criteria andUpdateTsIn(List<String> values) {
addCriterion("update_ts in", values, "updateTs");
return (Criteria) this;
}
public Criteria andUpdateTsNotIn(List<String> values) {
addCriterion("update_ts not in", values, "updateTs");
return (Criteria) this;
}
public Criteria andUpdateTsBetween(String value1, String value2) {
addCriterion("update_ts between", value1, value2, "updateTs");
return (Criteria) this;
}
public Criteria andUpdateTsNotBetween(String value1, String value2) {
addCriterion("update_ts not between", value1, value2, "updateTs");
return (Criteria) this;
}
}
/**
* This class was generated by MyBatis Generator.
* This class corresponds to the database table ba_status_history
*
* @mbg.generated do_not_delete_during_merge
*/
public static class Criteria extends GeneratedCriteria {
protected Criteria() {
super();
}
}
/**
* This class was generated by MyBatis Generator.
* This class corresponds to the database table ba_status_history
*
* @mbg.generated
*/
public static class Criterion {
private String condition;
private Object value;
private Object secondValue;
private boolean noValue;
private boolean singleValue;
private boolean betweenValue;
private boolean listValue;
private String typeHandler;
public String getCondition() {
return condition;
}
public Object getValue() {
return value;
}
public Object getSecondValue() {
return secondValue;
}
public boolean isNoValue() {
return noValue;
}
public boolean isSingleValue() {
return singleValue;
}
public boolean isBetweenValue() {
return betweenValue;
}
public boolean isListValue() {
return listValue;
}
public String getTypeHandler() {
return typeHandler;
}
protected Criterion(String condition) {
super();
this.condition = condition;
this.typeHandler = null;
this.noValue = true;
}
protected Criterion(String condition, Object value, String typeHandler) {
super();
this.condition = condition;
this.value = value;
this.typeHandler = typeHandler;
if (value instanceof List<?>) {
this.listValue = true;
} else {
this.singleValue = true;
}
}
protected Criterion(String condition, Object value) {
this(condition, value, null);
}
protected Criterion(String condition, Object value, Object secondValue, String typeHandler) {
super();
this.condition = condition;
this.value = value;
this.secondValue = secondValue;
this.typeHandler = typeHandler;
this.betweenValue = true;
}
protected Criterion(String condition, Object value, Object secondValue) {
this(condition, value, secondValue, null);
}
}
}

68
dongjian-dashboard-back-model/src/main/java/com/dongjian/dashboard/back/model/BasicUser.java

@ -183,6 +183,24 @@ public class BasicUser implements Serializable {
*/
private Integer createPlatform;
/**
*
* This field was generated by MyBatis Generator.
* This field corresponds to the database column basic_user.last_name
*
* @mbg.generated
*/
private String lastName;
/**
*
* This field was generated by MyBatis Generator.
* This field corresponds to the database column basic_user.first_name
*
* @mbg.generated
*/
private String firstName;
/**
* This field was generated by MyBatis Generator.
* This field corresponds to the database table basic_user
@ -671,6 +689,54 @@ public class BasicUser implements Serializable {
this.createPlatform = createPlatform;
}
/**
* This method was generated by MyBatis Generator.
* This method returns the value of the database column basic_user.last_name
*
* @return the value of basic_user.last_name
*
* @mbg.generated
*/
public String getLastName() {
return lastName;
}
/**
* This method was generated by MyBatis Generator.
* This method sets the value of the database column basic_user.last_name
*
* @param lastName the value for basic_user.last_name
*
* @mbg.generated
*/
public void setLastName(String lastName) {
this.lastName = lastName == null ? null : lastName.trim();
}
/**
* This method was generated by MyBatis Generator.
* This method returns the value of the database column basic_user.first_name
*
* @return the value of basic_user.first_name
*
* @mbg.generated
*/
public String getFirstName() {
return firstName;
}
/**
* This method was generated by MyBatis Generator.
* This method sets the value of the database column basic_user.first_name
*
* @param firstName the value for basic_user.first_name
*
* @mbg.generated
*/
public void setFirstName(String firstName) {
this.firstName = firstName == null ? null : firstName.trim();
}
/**
* This method was generated by MyBatis Generator.
* This method corresponds to the database table basic_user
@ -703,6 +769,8 @@ public class BasicUser implements Serializable {
sb.append(", modifierId=").append(modifierId);
sb.append(", superRole=").append(superRole);
sb.append(", createPlatform=").append(createPlatform);
sb.append(", lastName=").append(lastName);
sb.append(", firstName=").append(firstName);
sb.append(", serialVersionUID=").append(serialVersionUID);
sb.append("]");
return sb.toString();

140
dongjian-dashboard-back-model/src/main/java/com/dongjian/dashboard/back/model/BasicUserExample.java

@ -1463,6 +1463,146 @@ public class BasicUserExample {
addCriterion("create_platform not between", value1, value2, "createPlatform");
return (Criteria) this;
}
public Criteria andLastNameIsNull() {
addCriterion("last_name is null");
return (Criteria) this;
}
public Criteria andLastNameIsNotNull() {
addCriterion("last_name is not null");
return (Criteria) this;
}
public Criteria andLastNameEqualTo(String value) {
addCriterion("last_name =", value, "lastName");
return (Criteria) this;
}
public Criteria andLastNameNotEqualTo(String value) {
addCriterion("last_name <>", value, "lastName");
return (Criteria) this;
}
public Criteria andLastNameGreaterThan(String value) {
addCriterion("last_name >", value, "lastName");
return (Criteria) this;
}
public Criteria andLastNameGreaterThanOrEqualTo(String value) {
addCriterion("last_name >=", value, "lastName");
return (Criteria) this;
}
public Criteria andLastNameLessThan(String value) {
addCriterion("last_name <", value, "lastName");
return (Criteria) this;
}
public Criteria andLastNameLessThanOrEqualTo(String value) {
addCriterion("last_name <=", value, "lastName");
return (Criteria) this;
}
public Criteria andLastNameLike(String value) {
addCriterion("last_name like", value, "lastName");
return (Criteria) this;
}
public Criteria andLastNameNotLike(String value) {
addCriterion("last_name not like", value, "lastName");
return (Criteria) this;
}
public Criteria andLastNameIn(List<String> values) {
addCriterion("last_name in", values, "lastName");
return (Criteria) this;
}
public Criteria andLastNameNotIn(List<String> values) {
addCriterion("last_name not in", values, "lastName");
return (Criteria) this;
}
public Criteria andLastNameBetween(String value1, String value2) {
addCriterion("last_name between", value1, value2, "lastName");
return (Criteria) this;
}
public Criteria andLastNameNotBetween(String value1, String value2) {
addCriterion("last_name not between", value1, value2, "lastName");
return (Criteria) this;
}
public Criteria andFirstNameIsNull() {
addCriterion("first_name is null");
return (Criteria) this;
}
public Criteria andFirstNameIsNotNull() {
addCriterion("first_name is not null");
return (Criteria) this;
}
public Criteria andFirstNameEqualTo(String value) {
addCriterion("first_name =", value, "firstName");
return (Criteria) this;
}
public Criteria andFirstNameNotEqualTo(String value) {
addCriterion("first_name <>", value, "firstName");
return (Criteria) this;
}
public Criteria andFirstNameGreaterThan(String value) {
addCriterion("first_name >", value, "firstName");
return (Criteria) this;
}
public Criteria andFirstNameGreaterThanOrEqualTo(String value) {
addCriterion("first_name >=", value, "firstName");
return (Criteria) this;
}
public Criteria andFirstNameLessThan(String value) {
addCriterion("first_name <", value, "firstName");
return (Criteria) this;
}
public Criteria andFirstNameLessThanOrEqualTo(String value) {
addCriterion("first_name <=", value, "firstName");
return (Criteria) this;
}
public Criteria andFirstNameLike(String value) {
addCriterion("first_name like", value, "firstName");
return (Criteria) this;
}
public Criteria andFirstNameNotLike(String value) {
addCriterion("first_name not like", value, "firstName");
return (Criteria) this;
}
public Criteria andFirstNameIn(List<String> values) {
addCriterion("first_name in", values, "firstName");
return (Criteria) this;
}
public Criteria andFirstNameNotIn(List<String> values) {
addCriterion("first_name not in", values, "firstName");
return (Criteria) this;
}
public Criteria andFirstNameBetween(String value1, String value2) {
addCriterion("first_name between", value1, value2, "firstName");
return (Criteria) this;
}
public Criteria andFirstNameNotBetween(String value1, String value2) {
addCriterion("first_name not between", value1, value2, "firstName");
return (Criteria) this;
}
}
/**

34
dongjian-dashboard-back-model/src/main/java/com/dongjian/dashboard/back/model/DashboardNotification.java

@ -39,6 +39,15 @@ public class DashboardNotification implements Serializable {
*/
private String category;
/**
*
* This field was generated by MyBatis Generator.
* This field corresponds to the database column dashboard_notification.category_id
*
* @mbg.generated
*/
private Long categoryId;
/**
*
* This field was generated by MyBatis Generator.
@ -197,6 +206,30 @@ public class DashboardNotification implements Serializable {
this.category = category == null ? null : category.trim();
}
/**
* This method was generated by MyBatis Generator.
* This method returns the value of the database column dashboard_notification.category_id
*
* @return the value of dashboard_notification.category_id
*
* @mbg.generated
*/
public Long getCategoryId() {
return categoryId;
}
/**
* This method was generated by MyBatis Generator.
* This method sets the value of the database column dashboard_notification.category_id
*
* @param categoryId the value for dashboard_notification.category_id
*
* @mbg.generated
*/
public void setCategoryId(Long categoryId) {
this.categoryId = categoryId;
}
/**
* This method was generated by MyBatis Generator.
* This method returns the value of the database column dashboard_notification.flag
@ -357,6 +390,7 @@ public class DashboardNotification implements Serializable {
sb.append(", companyId=").append(companyId);
sb.append(", demandTime=").append(demandTime);
sb.append(", category=").append(category);
sb.append(", categoryId=").append(categoryId);
sb.append(", flag=").append(flag);
sb.append(", createdAt=").append(createdAt);
sb.append(", createdBy=").append(createdBy);

336
dongjian-dashboard-back-model/src/main/java/com/dongjian/dashboard/back/model/DashboardNotificationCategory.java

@ -0,0 +1,336 @@
package com.dongjian.dashboard.back.model;
import java.io.Serializable;
public class DashboardNotificationCategory implements Serializable {
/**
*
* This field was generated by MyBatis Generator.
* This field corresponds to the database column dashboard_notification_category.id
*
* @mbg.generated
*/
private Long id;
/**
*
* This field was generated by MyBatis Generator.
* This field corresponds to the database column dashboard_notification_category.company_id
*
* @mbg.generated
*/
private Long companyId;
/**
*
* This field was generated by MyBatis Generator.
* This field corresponds to the database column dashboard_notification_category.name
*
* @mbg.generated
*/
private String name;
/**
*
* This field was generated by MyBatis Generator.
* This field corresponds to the database column dashboard_notification_category.remark
*
* @mbg.generated
*/
private String remark;
/**
*
* This field was generated by MyBatis Generator.
* This field corresponds to the database column dashboard_notification_category.flag
*
* @mbg.generated
*/
private Integer flag;
/**
*
* This field was generated by MyBatis Generator.
* This field corresponds to the database column dashboard_notification_category.created_by
*
* @mbg.generated
*/
private Long createdBy;
/**
*
* This field was generated by MyBatis Generator.
* This field corresponds to the database column dashboard_notification_category.created_at
*
* @mbg.generated
*/
private Long createdAt;
/**
*
* This field was generated by MyBatis Generator.
* This field corresponds to the database column dashboard_notification_category.updated_at
*
* @mbg.generated
*/
private Long updatedAt;
/**
*
* This field was generated by MyBatis Generator.
* This field corresponds to the database column dashboard_notification_category.updated_by
*
* @mbg.generated
*/
private Long updatedBy;
/**
* This field was generated by MyBatis Generator.
* This field corresponds to the database table dashboard_notification_category
*
* @mbg.generated
*/
private static final long serialVersionUID = 1L;
/**
* This method was generated by MyBatis Generator.
* This method returns the value of the database column dashboard_notification_category.id
*
* @return the value of dashboard_notification_category.id
*
* @mbg.generated
*/
public Long getId() {
return id;
}
/**
* This method was generated by MyBatis Generator.
* This method sets the value of the database column dashboard_notification_category.id
*
* @param id the value for dashboard_notification_category.id
*
* @mbg.generated
*/
public void setId(Long id) {
this.id = id;
}
/**
* This method was generated by MyBatis Generator.
* This method returns the value of the database column dashboard_notification_category.company_id
*
* @return the value of dashboard_notification_category.company_id
*
* @mbg.generated
*/
public Long getCompanyId() {
return companyId;
}
/**
* This method was generated by MyBatis Generator.
* This method sets the value of the database column dashboard_notification_category.company_id
*
* @param companyId the value for dashboard_notification_category.company_id
*
* @mbg.generated
*/
public void setCompanyId(Long companyId) {
this.companyId = companyId;
}
/**
* This method was generated by MyBatis Generator.
* This method returns the value of the database column dashboard_notification_category.name
*
* @return the value of dashboard_notification_category.name
*
* @mbg.generated
*/
public String getName() {
return name;
}
/**
* This method was generated by MyBatis Generator.
* This method sets the value of the database column dashboard_notification_category.name
*
* @param name the value for dashboard_notification_category.name
*
* @mbg.generated
*/
public void setName(String name) {
this.name = name == null ? null : name.trim();
}
/**
* This method was generated by MyBatis Generator.
* This method returns the value of the database column dashboard_notification_category.remark
*
* @return the value of dashboard_notification_category.remark
*
* @mbg.generated
*/
public String getRemark() {
return remark;
}
/**
* This method was generated by MyBatis Generator.
* This method sets the value of the database column dashboard_notification_category.remark
*
* @param remark the value for dashboard_notification_category.remark
*
* @mbg.generated
*/
public void setRemark(String remark) {
this.remark = remark == null ? null : remark.trim();
}
/**
* This method was generated by MyBatis Generator.
* This method returns the value of the database column dashboard_notification_category.flag
*
* @return the value of dashboard_notification_category.flag
*
* @mbg.generated
*/
public Integer getFlag() {
return flag;
}
/**
* This method was generated by MyBatis Generator.
* This method sets the value of the database column dashboard_notification_category.flag
*
* @param flag the value for dashboard_notification_category.flag
*
* @mbg.generated
*/
public void setFlag(Integer flag) {
this.flag = flag;
}
/**
* This method was generated by MyBatis Generator.
* This method returns the value of the database column dashboard_notification_category.created_by
*
* @return the value of dashboard_notification_category.created_by
*
* @mbg.generated
*/
public Long getCreatedBy() {
return createdBy;
}
/**
* This method was generated by MyBatis Generator.
* This method sets the value of the database column dashboard_notification_category.created_by
*
* @param createdBy the value for dashboard_notification_category.created_by
*
* @mbg.generated
*/
public void setCreatedBy(Long createdBy) {
this.createdBy = createdBy;
}
/**
* This method was generated by MyBatis Generator.
* This method returns the value of the database column dashboard_notification_category.created_at
*
* @return the value of dashboard_notification_category.created_at
*
* @mbg.generated
*/
public Long getCreatedAt() {
return createdAt;
}
/**
* This method was generated by MyBatis Generator.
* This method sets the value of the database column dashboard_notification_category.created_at
*
* @param createdAt the value for dashboard_notification_category.created_at
*
* @mbg.generated
*/
public void setCreatedAt(Long createdAt) {
this.createdAt = createdAt;
}
/**
* This method was generated by MyBatis Generator.
* This method returns the value of the database column dashboard_notification_category.updated_at
*
* @return the value of dashboard_notification_category.updated_at
*
* @mbg.generated
*/
public Long getUpdatedAt() {
return updatedAt;
}
/**
* This method was generated by MyBatis Generator.
* This method sets the value of the database column dashboard_notification_category.updated_at
*
* @param updatedAt the value for dashboard_notification_category.updated_at
*
* @mbg.generated
*/
public void setUpdatedAt(Long updatedAt) {
this.updatedAt = updatedAt;
}
/**
* This method was generated by MyBatis Generator.
* This method returns the value of the database column dashboard_notification_category.updated_by
*
* @return the value of dashboard_notification_category.updated_by
*
* @mbg.generated
*/
public Long getUpdatedBy() {
return updatedBy;
}
/**
* This method was generated by MyBatis Generator.
* This method sets the value of the database column dashboard_notification_category.updated_by
*
* @param updatedBy the value for dashboard_notification_category.updated_by
*
* @mbg.generated
*/
public void setUpdatedBy(Long updatedBy) {
this.updatedBy = updatedBy;
}
/**
* This method was generated by MyBatis Generator.
* This method corresponds to the database table dashboard_notification_category
*
* @mbg.generated
*/
@Override
public String toString() {
StringBuilder sb = new StringBuilder();
sb.append(getClass().getSimpleName());
sb.append(" [");
sb.append("Hash = ").append(hashCode());
sb.append(", id=").append(id);
sb.append(", companyId=").append(companyId);
sb.append(", name=").append(name);
sb.append(", remark=").append(remark);
sb.append(", flag=").append(flag);
sb.append(", createdBy=").append(createdBy);
sb.append(", createdAt=").append(createdAt);
sb.append(", updatedAt=").append(updatedAt);
sb.append(", updatedBy=").append(updatedBy);
sb.append(", serialVersionUID=").append(serialVersionUID);
sb.append("]");
return sb.toString();
}
}

862
dongjian-dashboard-back-model/src/main/java/com/dongjian/dashboard/back/model/DashboardNotificationCategoryExample.java

@ -0,0 +1,862 @@
package com.dongjian.dashboard.back.model;
import java.util.ArrayList;
import java.util.List;
public class DashboardNotificationCategoryExample {
/**
* This field was generated by MyBatis Generator.
* This field corresponds to the database table dashboard_notification_category
*
* @mbg.generated
*/
protected String orderByClause;
/**
* This field was generated by MyBatis Generator.
* This field corresponds to the database table dashboard_notification_category
*
* @mbg.generated
*/
protected boolean distinct;
/**
* This field was generated by MyBatis Generator.
* This field corresponds to the database table dashboard_notification_category
*
* @mbg.generated
*/
protected List<Criteria> oredCriteria;
/**
* This method was generated by MyBatis Generator.
* This method corresponds to the database table dashboard_notification_category
*
* @mbg.generated
*/
public DashboardNotificationCategoryExample() {
oredCriteria = new ArrayList<Criteria>();
}
/**
* This method was generated by MyBatis Generator.
* This method corresponds to the database table dashboard_notification_category
*
* @mbg.generated
*/
public void setOrderByClause(String orderByClause) {
this.orderByClause = orderByClause;
}
/**
* This method was generated by MyBatis Generator.
* This method corresponds to the database table dashboard_notification_category
*
* @mbg.generated
*/
public String getOrderByClause() {
return orderByClause;
}
/**
* This method was generated by MyBatis Generator.
* This method corresponds to the database table dashboard_notification_category
*
* @mbg.generated
*/
public void setDistinct(boolean distinct) {
this.distinct = distinct;
}
/**
* This method was generated by MyBatis Generator.
* This method corresponds to the database table dashboard_notification_category
*
* @mbg.generated
*/
public boolean isDistinct() {
return distinct;
}
/**
* This method was generated by MyBatis Generator.
* This method corresponds to the database table dashboard_notification_category
*
* @mbg.generated
*/
public List<Criteria> getOredCriteria() {
return oredCriteria;
}
/**
* This method was generated by MyBatis Generator.
* This method corresponds to the database table dashboard_notification_category
*
* @mbg.generated
*/
public void or(Criteria criteria) {
oredCriteria.add(criteria);
}
/**
* This method was generated by MyBatis Generator.
* This method corresponds to the database table dashboard_notification_category
*
* @mbg.generated
*/
public Criteria or() {
Criteria criteria = createCriteriaInternal();
oredCriteria.add(criteria);
return criteria;
}
/**
* This method was generated by MyBatis Generator.
* This method corresponds to the database table dashboard_notification_category
*
* @mbg.generated
*/
public Criteria createCriteria() {
Criteria criteria = createCriteriaInternal();
if (oredCriteria.size() == 0) {
oredCriteria.add(criteria);
}
return criteria;
}
/**
* This method was generated by MyBatis Generator.
* This method corresponds to the database table dashboard_notification_category
*
* @mbg.generated
*/
protected Criteria createCriteriaInternal() {
Criteria criteria = new Criteria();
return criteria;
}
/**
* This method was generated by MyBatis Generator.
* This method corresponds to the database table dashboard_notification_category
*
* @mbg.generated
*/
public void clear() {
oredCriteria.clear();
orderByClause = null;
distinct = false;
}
/**
* This class was generated by MyBatis Generator.
* This class corresponds to the database table dashboard_notification_category
*
* @mbg.generated
*/
protected abstract static class GeneratedCriteria {
protected List<Criterion> criteria;
protected GeneratedCriteria() {
super();
criteria = new ArrayList<Criterion>();
}
public boolean isValid() {
return criteria.size() > 0;
}
public List<Criterion> getAllCriteria() {
return criteria;
}
public List<Criterion> getCriteria() {
return criteria;
}
protected void addCriterion(String condition) {
if (condition == null) {
throw new RuntimeException("Value for condition cannot be null");
}
criteria.add(new Criterion(condition));
}
protected void addCriterion(String condition, Object value, String property) {
if (value == null) {
throw new RuntimeException("Value for " + property + " cannot be null");
}
criteria.add(new Criterion(condition, value));
}
protected void addCriterion(String condition, Object value1, Object value2, String property) {
if (value1 == null || value2 == null) {
throw new RuntimeException("Between values for " + property + " cannot be null");
}
criteria.add(new Criterion(condition, value1, value2));
}
public Criteria andIdIsNull() {
addCriterion("id is null");
return (Criteria) this;
}
public Criteria andIdIsNotNull() {
addCriterion("id is not null");
return (Criteria) this;
}
public Criteria andIdEqualTo(Long value) {
addCriterion("id =", value, "id");
return (Criteria) this;
}
public Criteria andIdNotEqualTo(Long value) {
addCriterion("id <>", value, "id");
return (Criteria) this;
}
public Criteria andIdGreaterThan(Long value) {
addCriterion("id >", value, "id");
return (Criteria) this;
}
public Criteria andIdGreaterThanOrEqualTo(Long value) {
addCriterion("id >=", value, "id");
return (Criteria) this;
}
public Criteria andIdLessThan(Long value) {
addCriterion("id <", value, "id");
return (Criteria) this;
}
public Criteria andIdLessThanOrEqualTo(Long value) {
addCriterion("id <=", value, "id");
return (Criteria) this;
}
public Criteria andIdIn(List<Long> values) {
addCriterion("id in", values, "id");
return (Criteria) this;
}
public Criteria andIdNotIn(List<Long> values) {
addCriterion("id not in", values, "id");
return (Criteria) this;
}
public Criteria andIdBetween(Long value1, Long value2) {
addCriterion("id between", value1, value2, "id");
return (Criteria) this;
}
public Criteria andIdNotBetween(Long value1, Long value2) {
addCriterion("id not between", value1, value2, "id");
return (Criteria) this;
}
public Criteria andCompanyIdIsNull() {
addCriterion("company_id is null");
return (Criteria) this;
}
public Criteria andCompanyIdIsNotNull() {
addCriterion("company_id is not null");
return (Criteria) this;
}
public Criteria andCompanyIdEqualTo(Long value) {
addCriterion("company_id =", value, "companyId");
return (Criteria) this;
}
public Criteria andCompanyIdNotEqualTo(Long value) {
addCriterion("company_id <>", value, "companyId");
return (Criteria) this;
}
public Criteria andCompanyIdGreaterThan(Long value) {
addCriterion("company_id >", value, "companyId");
return (Criteria) this;
}
public Criteria andCompanyIdGreaterThanOrEqualTo(Long value) {
addCriterion("company_id >=", value, "companyId");
return (Criteria) this;
}
public Criteria andCompanyIdLessThan(Long value) {
addCriterion("company_id <", value, "companyId");
return (Criteria) this;
}
public Criteria andCompanyIdLessThanOrEqualTo(Long value) {
addCriterion("company_id <=", value, "companyId");
return (Criteria) this;
}
public Criteria andCompanyIdIn(List<Long> values) {
addCriterion("company_id in", values, "companyId");
return (Criteria) this;
}
public Criteria andCompanyIdNotIn(List<Long> values) {
addCriterion("company_id not in", values, "companyId");
return (Criteria) this;
}
public Criteria andCompanyIdBetween(Long value1, Long value2) {
addCriterion("company_id between", value1, value2, "companyId");
return (Criteria) this;
}
public Criteria andCompanyIdNotBetween(Long value1, Long value2) {
addCriterion("company_id not between", value1, value2, "companyId");
return (Criteria) this;
}
public Criteria andNameIsNull() {
addCriterion("`name` is null");
return (Criteria) this;
}
public Criteria andNameIsNotNull() {
addCriterion("`name` is not null");
return (Criteria) this;
}
public Criteria andNameEqualTo(String value) {
addCriterion("`name` =", value, "name");
return (Criteria) this;
}
public Criteria andNameNotEqualTo(String value) {
addCriterion("`name` <>", value, "name");
return (Criteria) this;
}
public Criteria andNameGreaterThan(String value) {
addCriterion("`name` >", value, "name");
return (Criteria) this;
}
public Criteria andNameGreaterThanOrEqualTo(String value) {
addCriterion("`name` >=", value, "name");
return (Criteria) this;
}
public Criteria andNameLessThan(String value) {
addCriterion("`name` <", value, "name");
return (Criteria) this;
}
public Criteria andNameLessThanOrEqualTo(String value) {
addCriterion("`name` <=", value, "name");
return (Criteria) this;
}
public Criteria andNameLike(String value) {
addCriterion("`name` like", value, "name");
return (Criteria) this;
}
public Criteria andNameNotLike(String value) {
addCriterion("`name` not like", value, "name");
return (Criteria) this;
}
public Criteria andNameIn(List<String> values) {
addCriterion("`name` in", values, "name");
return (Criteria) this;
}
public Criteria andNameNotIn(List<String> values) {
addCriterion("`name` not in", values, "name");
return (Criteria) this;
}
public Criteria andNameBetween(String value1, String value2) {
addCriterion("`name` between", value1, value2, "name");
return (Criteria) this;
}
public Criteria andNameNotBetween(String value1, String value2) {
addCriterion("`name` not between", value1, value2, "name");
return (Criteria) this;
}
public Criteria andRemarkIsNull() {
addCriterion("remark is null");
return (Criteria) this;
}
public Criteria andRemarkIsNotNull() {
addCriterion("remark is not null");
return (Criteria) this;
}
public Criteria andRemarkEqualTo(String value) {
addCriterion("remark =", value, "remark");
return (Criteria) this;
}
public Criteria andRemarkNotEqualTo(String value) {
addCriterion("remark <>", value, "remark");
return (Criteria) this;
}
public Criteria andRemarkGreaterThan(String value) {
addCriterion("remark >", value, "remark");
return (Criteria) this;
}
public Criteria andRemarkGreaterThanOrEqualTo(String value) {
addCriterion("remark >=", value, "remark");
return (Criteria) this;
}
public Criteria andRemarkLessThan(String value) {
addCriterion("remark <", value, "remark");
return (Criteria) this;
}
public Criteria andRemarkLessThanOrEqualTo(String value) {
addCriterion("remark <=", value, "remark");
return (Criteria) this;
}
public Criteria andRemarkLike(String value) {
addCriterion("remark like", value, "remark");
return (Criteria) this;
}
public Criteria andRemarkNotLike(String value) {
addCriterion("remark not like", value, "remark");
return (Criteria) this;
}
public Criteria andRemarkIn(List<String> values) {
addCriterion("remark in", values, "remark");
return (Criteria) this;
}
public Criteria andRemarkNotIn(List<String> values) {
addCriterion("remark not in", values, "remark");
return (Criteria) this;
}
public Criteria andRemarkBetween(String value1, String value2) {
addCriterion("remark between", value1, value2, "remark");
return (Criteria) this;
}
public Criteria andRemarkNotBetween(String value1, String value2) {
addCriterion("remark not between", value1, value2, "remark");
return (Criteria) this;
}
public Criteria andFlagIsNull() {
addCriterion("flag is null");
return (Criteria) this;
}
public Criteria andFlagIsNotNull() {
addCriterion("flag is not null");
return (Criteria) this;
}
public Criteria andFlagEqualTo(Integer value) {
addCriterion("flag =", value, "flag");
return (Criteria) this;
}
public Criteria andFlagNotEqualTo(Integer value) {
addCriterion("flag <>", value, "flag");
return (Criteria) this;
}
public Criteria andFlagGreaterThan(Integer value) {
addCriterion("flag >", value, "flag");
return (Criteria) this;
}
public Criteria andFlagGreaterThanOrEqualTo(Integer value) {
addCriterion("flag >=", value, "flag");
return (Criteria) this;
}
public Criteria andFlagLessThan(Integer value) {
addCriterion("flag <", value, "flag");
return (Criteria) this;
}
public Criteria andFlagLessThanOrEqualTo(Integer value) {
addCriterion("flag <=", value, "flag");
return (Criteria) this;
}
public Criteria andFlagIn(List<Integer> values) {
addCriterion("flag in", values, "flag");
return (Criteria) this;
}
public Criteria andFlagNotIn(List<Integer> values) {
addCriterion("flag not in", values, "flag");
return (Criteria) this;
}
public Criteria andFlagBetween(Integer value1, Integer value2) {
addCriterion("flag between", value1, value2, "flag");
return (Criteria) this;
}
public Criteria andFlagNotBetween(Integer value1, Integer value2) {
addCriterion("flag not between", value1, value2, "flag");
return (Criteria) this;
}
public Criteria andCreatedByIsNull() {
addCriterion("created_by is null");
return (Criteria) this;
}
public Criteria andCreatedByIsNotNull() {
addCriterion("created_by is not null");
return (Criteria) this;
}
public Criteria andCreatedByEqualTo(Long value) {
addCriterion("created_by =", value, "createdBy");
return (Criteria) this;
}
public Criteria andCreatedByNotEqualTo(Long value) {
addCriterion("created_by <>", value, "createdBy");
return (Criteria) this;
}
public Criteria andCreatedByGreaterThan(Long value) {
addCriterion("created_by >", value, "createdBy");
return (Criteria) this;
}
public Criteria andCreatedByGreaterThanOrEqualTo(Long value) {
addCriterion("created_by >=", value, "createdBy");
return (Criteria) this;
}
public Criteria andCreatedByLessThan(Long value) {
addCriterion("created_by <", value, "createdBy");
return (Criteria) this;
}
public Criteria andCreatedByLessThanOrEqualTo(Long value) {
addCriterion("created_by <=", value, "createdBy");
return (Criteria) this;
}
public Criteria andCreatedByIn(List<Long> values) {
addCriterion("created_by in", values, "createdBy");
return (Criteria) this;
}
public Criteria andCreatedByNotIn(List<Long> values) {
addCriterion("created_by not in", values, "createdBy");
return (Criteria) this;
}
public Criteria andCreatedByBetween(Long value1, Long value2) {
addCriterion("created_by between", value1, value2, "createdBy");
return (Criteria) this;
}
public Criteria andCreatedByNotBetween(Long value1, Long value2) {
addCriterion("created_by not between", value1, value2, "createdBy");
return (Criteria) this;
}
public Criteria andCreatedAtIsNull() {
addCriterion("created_at is null");
return (Criteria) this;
}
public Criteria andCreatedAtIsNotNull() {
addCriterion("created_at is not null");
return (Criteria) this;
}
public Criteria andCreatedAtEqualTo(Long value) {
addCriterion("created_at =", value, "createdAt");
return (Criteria) this;
}
public Criteria andCreatedAtNotEqualTo(Long value) {
addCriterion("created_at <>", value, "createdAt");
return (Criteria) this;
}
public Criteria andCreatedAtGreaterThan(Long value) {
addCriterion("created_at >", value, "createdAt");
return (Criteria) this;
}
public Criteria andCreatedAtGreaterThanOrEqualTo(Long value) {
addCriterion("created_at >=", value, "createdAt");
return (Criteria) this;
}
public Criteria andCreatedAtLessThan(Long value) {
addCriterion("created_at <", value, "createdAt");
return (Criteria) this;
}
public Criteria andCreatedAtLessThanOrEqualTo(Long value) {
addCriterion("created_at <=", value, "createdAt");
return (Criteria) this;
}
public Criteria andCreatedAtIn(List<Long> values) {
addCriterion("created_at in", values, "createdAt");
return (Criteria) this;
}
public Criteria andCreatedAtNotIn(List<Long> values) {
addCriterion("created_at not in", values, "createdAt");
return (Criteria) this;
}
public Criteria andCreatedAtBetween(Long value1, Long value2) {
addCriterion("created_at between", value1, value2, "createdAt");
return (Criteria) this;
}
public Criteria andCreatedAtNotBetween(Long value1, Long value2) {
addCriterion("created_at not between", value1, value2, "createdAt");
return (Criteria) this;
}
public Criteria andUpdatedAtIsNull() {
addCriterion("updated_at is null");
return (Criteria) this;
}
public Criteria andUpdatedAtIsNotNull() {
addCriterion("updated_at is not null");
return (Criteria) this;
}
public Criteria andUpdatedAtEqualTo(Long value) {
addCriterion("updated_at =", value, "updatedAt");
return (Criteria) this;
}
public Criteria andUpdatedAtNotEqualTo(Long value) {
addCriterion("updated_at <>", value, "updatedAt");
return (Criteria) this;
}
public Criteria andUpdatedAtGreaterThan(Long value) {
addCriterion("updated_at >", value, "updatedAt");
return (Criteria) this;
}
public Criteria andUpdatedAtGreaterThanOrEqualTo(Long value) {
addCriterion("updated_at >=", value, "updatedAt");
return (Criteria) this;
}
public Criteria andUpdatedAtLessThan(Long value) {
addCriterion("updated_at <", value, "updatedAt");
return (Criteria) this;
}
public Criteria andUpdatedAtLessThanOrEqualTo(Long value) {
addCriterion("updated_at <=", value, "updatedAt");
return (Criteria) this;
}
public Criteria andUpdatedAtIn(List<Long> values) {
addCriterion("updated_at in", values, "updatedAt");
return (Criteria) this;
}
public Criteria andUpdatedAtNotIn(List<Long> values) {
addCriterion("updated_at not in", values, "updatedAt");
return (Criteria) this;
}
public Criteria andUpdatedAtBetween(Long value1, Long value2) {
addCriterion("updated_at between", value1, value2, "updatedAt");
return (Criteria) this;
}
public Criteria andUpdatedAtNotBetween(Long value1, Long value2) {
addCriterion("updated_at not between", value1, value2, "updatedAt");
return (Criteria) this;
}
public Criteria andUpdatedByIsNull() {
addCriterion("updated_by is null");
return (Criteria) this;
}
public Criteria andUpdatedByIsNotNull() {
addCriterion("updated_by is not null");
return (Criteria) this;
}
public Criteria andUpdatedByEqualTo(Long value) {
addCriterion("updated_by =", value, "updatedBy");
return (Criteria) this;
}
public Criteria andUpdatedByNotEqualTo(Long value) {
addCriterion("updated_by <>", value, "updatedBy");
return (Criteria) this;
}
public Criteria andUpdatedByGreaterThan(Long value) {
addCriterion("updated_by >", value, "updatedBy");
return (Criteria) this;
}
public Criteria andUpdatedByGreaterThanOrEqualTo(Long value) {
addCriterion("updated_by >=", value, "updatedBy");
return (Criteria) this;
}
public Criteria andUpdatedByLessThan(Long value) {
addCriterion("updated_by <", value, "updatedBy");
return (Criteria) this;
}
public Criteria andUpdatedByLessThanOrEqualTo(Long value) {
addCriterion("updated_by <=", value, "updatedBy");
return (Criteria) this;
}
public Criteria andUpdatedByIn(List<Long> values) {
addCriterion("updated_by in", values, "updatedBy");
return (Criteria) this;
}
public Criteria andUpdatedByNotIn(List<Long> values) {
addCriterion("updated_by not in", values, "updatedBy");
return (Criteria) this;
}
public Criteria andUpdatedByBetween(Long value1, Long value2) {
addCriterion("updated_by between", value1, value2, "updatedBy");
return (Criteria) this;
}
public Criteria andUpdatedByNotBetween(Long value1, Long value2) {
addCriterion("updated_by not between", value1, value2, "updatedBy");
return (Criteria) this;
}
}
/**
* This class was generated by MyBatis Generator.
* This class corresponds to the database table dashboard_notification_category
*
* @mbg.generated do_not_delete_during_merge
*/
public static class Criteria extends GeneratedCriteria {
protected Criteria() {
super();
}
}
/**
* This class was generated by MyBatis Generator.
* This class corresponds to the database table dashboard_notification_category
*
* @mbg.generated
*/
public static class Criterion {
private String condition;
private Object value;
private Object secondValue;
private boolean noValue;
private boolean singleValue;
private boolean betweenValue;
private boolean listValue;
private String typeHandler;
public String getCondition() {
return condition;
}
public Object getValue() {
return value;
}
public Object getSecondValue() {
return secondValue;
}
public boolean isNoValue() {
return noValue;
}
public boolean isSingleValue() {
return singleValue;
}
public boolean isBetweenValue() {
return betweenValue;
}
public boolean isListValue() {
return listValue;
}
public String getTypeHandler() {
return typeHandler;
}
protected Criterion(String condition) {
super();
this.condition = condition;
this.typeHandler = null;
this.noValue = true;
}
protected Criterion(String condition, Object value, String typeHandler) {
super();
this.condition = condition;
this.value = value;
this.typeHandler = typeHandler;
if (value instanceof List<?>) {
this.listValue = true;
} else {
this.singleValue = true;
}
}
protected Criterion(String condition, Object value) {
this(condition, value, null);
}
protected Criterion(String condition, Object value, Object secondValue, String typeHandler) {
super();
this.condition = condition;
this.value = value;
this.secondValue = secondValue;
this.typeHandler = typeHandler;
this.betweenValue = true;
}
protected Criterion(String condition, Object value, Object secondValue) {
this(condition, value, secondValue, null);
}
}
}

60
dongjian-dashboard-back-model/src/main/java/com/dongjian/dashboard/back/model/DashboardNotificationExample.java

@ -454,6 +454,66 @@ public class DashboardNotificationExample {
return (Criteria) this;
}
public Criteria andCategoryIdIsNull() {
addCriterion("category_id is null");
return (Criteria) this;
}
public Criteria andCategoryIdIsNotNull() {
addCriterion("category_id is not null");
return (Criteria) this;
}
public Criteria andCategoryIdEqualTo(Long value) {
addCriterion("category_id =", value, "categoryId");
return (Criteria) this;
}
public Criteria andCategoryIdNotEqualTo(Long value) {
addCriterion("category_id <>", value, "categoryId");
return (Criteria) this;
}
public Criteria andCategoryIdGreaterThan(Long value) {
addCriterion("category_id >", value, "categoryId");
return (Criteria) this;
}
public Criteria andCategoryIdGreaterThanOrEqualTo(Long value) {
addCriterion("category_id >=", value, "categoryId");
return (Criteria) this;
}
public Criteria andCategoryIdLessThan(Long value) {
addCriterion("category_id <", value, "categoryId");
return (Criteria) this;
}
public Criteria andCategoryIdLessThanOrEqualTo(Long value) {
addCriterion("category_id <=", value, "categoryId");
return (Criteria) this;
}
public Criteria andCategoryIdIn(List<Long> values) {
addCriterion("category_id in", values, "categoryId");
return (Criteria) this;
}
public Criteria andCategoryIdNotIn(List<Long> values) {
addCriterion("category_id not in", values, "categoryId");
return (Criteria) this;
}
public Criteria andCategoryIdBetween(Long value1, Long value2) {
addCriterion("category_id between", value1, value2, "categoryId");
return (Criteria) this;
}
public Criteria andCategoryIdNotBetween(Long value1, Long value2) {
addCriterion("category_id not between", value1, value2, "categoryId");
return (Criteria) this;
}
public Criteria andFlagIsNull() {
addCriterion("flag is null");
return (Criteria) this;

28
dongjian-dashboard-back-model/src/main/java/com/dongjian/dashboard/back/vo/dashboardnotification/DashboardNotificationCategoryPageVO.java

@ -0,0 +1,28 @@
package com.dongjian.dashboard.back.vo.dashboardnotification;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
/**
* @author Mr.Jiang
* @time 2022年7月21日 下午8:50:31
*/
@Data
public class DashboardNotificationCategoryPageVO {
@Schema(description = "unique identifier ID, not required for new entries", example = "2738967")
private Long categoryId;
@Schema(description = "Company ID", example = "2738967", hidden = true)
private Long companyId;
@Schema(description = "name", example = "webhook", required = true)
private String name;
@Schema(description = "remark", example = "remark")
private String remark;
@Schema(description = "created time", example = "2738967")
private Long createdAt;
}

12
dongjian-dashboard-back-model/src/main/java/com/dongjian/dashboard/back/vo/dashboardnotification/DashboardNotificationPageVO.java

@ -3,9 +3,9 @@ package com.dongjian.dashboard.back.vo.dashboardnotification;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
/**
/**
* @author Mr.Jiang
* @time 2022年7月21日 下午8:50:31
* @time 2022年7月21日 下午8:50:31
*/
@Data
public class DashboardNotificationPageVO {
@ -13,15 +13,21 @@ public class DashboardNotificationPageVO {
@Schema(description = "Provider unique identifier ID, not required for new entries", example = "2738967")
private Long dashboardNotificationId;
@Schema(description = "Company ID", example = "2738967", hidden = true)
private Long companyId;
@Schema(description = "demand time", example = "testProvider1")
private String demandTime;
@Schema(description = "category", example = "remark")
private String category;
@Schema(description = "Category ID", example = "2738967")
private Long categoryId;
@Schema(description ="content", example = "2")
private String content;
@Schema(description = "created time", example = "2738967")
private Long createdAt;

6
dongjian-dashboard-back-model/src/main/java/com/dongjian/dashboard/back/vo/data/BaseData.java

@ -15,6 +15,12 @@ public class BaseData {
@Schema(description = "device name", example = "12-34")
private String deviceName;
@Schema(description = "building ID", example = "33")
private Long buildingId;
@Schema(description = "building name", example = "66")
private String buildingName;
@Schema(description = "upload timestamp", example = "1740033000234")
private Long uploadTimestamp;

3
dongjian-dashboard-back-model/src/main/java/com/dongjian/dashboard/back/vo/data/DeviceAlarmData.java

@ -39,5 +39,8 @@ public class DeviceAlarmData extends BaseData{
@Schema(description = "已过去时长", example = "177日3時間54分間")
private String elapsedTimeStr;
@Schema(description = "0=正常,1=告警", example = "1")
private Integer inAlarm;
}

23
dongjian-dashboard-back-model/src/main/java/com/dongjian/dashboard/back/vo/data/OverviewCategoryVO.java

@ -0,0 +1,23 @@
package com.dongjian.dashboard.back.vo.data;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import java.util.ArrayList;
import java.util.List;
@Data
public class OverviewCategoryVO {
private Long buildingId;
private String buildingName;
private String deviceId;
private Long monitoringPointCategoryId;
private String monitoringPointCategoryName;
}

3
dongjian-dashboard-back-model/src/main/java/com/dongjian/dashboard/back/vo/data/OverviewVO.java

@ -33,6 +33,9 @@ public class OverviewVO {
@Schema(description = "今天告警数量",example = "1111")
private Integer alarmCountToday = 0;
@Schema(description = "楼宇下设备没有的监视点分类",example = "[]")
private List<Long> missingMonitoringPointCategoryList = new ArrayList<>();
@Schema(description = "监视点分类告警数量",example = "1111")
private List<MonitoringPointCategoryAlarm> monitoringPointCategoryAlarmList = new ArrayList<>();

2
dongjian-dashboard-back-model/src/main/java/com/dongjian/dashboard/back/vo/device/AccumulateLineData.java → dongjian-dashboard-back-model/src/main/java/com/dongjian/dashboard/back/vo/device/SubLineData.java

@ -9,7 +9,7 @@ import java.util.List;
import java.util.Map;
@Data
public class AccumulateLineData {
public class SubLineData {
@Schema(description = "属性编码, 默认:single,温湿度设备:temperature或者humidity")
private String attrCode;

6
dongjian-dashboard-back-model/src/main/java/com/dongjian/dashboard/back/vo/user/UserPageDTO.java

@ -48,5 +48,11 @@ public class UserPageDTO {
@Schema(description = "创建时间",example = "1678990326897", required = false)
private Long createTime;
@Schema(description = "姓",example = "鸠山", required = true)
private String lastName;
@Schema(description = "名",example = "由纪夫", required = true)
private String firstName;
}

24
dongjian-dashboard-back-service/src/main/java/com/dongjian/dashboard/back/service/DashboardNotificationCategoryService.java

@ -0,0 +1,24 @@
package com.dongjian.dashboard.back.service;
import com.dongjian.dashboard.back.common.response.PageInfo;
import com.dongjian.dashboard.back.common.response.SimpleDataResponse;
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.vo.dashboardnotification.DashboardNotificationCategoryPageVO;
public interface DashboardNotificationCategoryService {
SimpleDataResponse add(OptDashboardNotificationCategoryParams optDashboardNotificationCategoryParams, Long userId, Long companyId,
Integer languageType);
SimpleDataResponse edit(OptDashboardNotificationCategoryParams optDashboardNotificationCategoryParams, Long userId, Long companyId,
Integer languageType);
SimpleDataResponse batchDelete(DeleteDashboardNotificationCategoryParams deleteParams, Long userId, Long companyId,
Integer languageType);
PageInfo<DashboardNotificationCategoryPageVO> getListPage(DashboardNotificationCategorySearchParams searchParams, Long companyId, Long userId,
Integer languageType, Integer uTCOffset);
}

24
dongjian-dashboard-back-service/src/main/java/com/dongjian/dashboard/back/service/DashboardNotificationService.java

@ -0,0 +1,24 @@
package com.dongjian.dashboard.back.service;
import com.dongjian.dashboard.back.common.response.PageInfo;
import com.dongjian.dashboard.back.common.response.SimpleDataResponse;
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.vo.dashboardnotification.DashboardNotificationPageVO;
public interface DashboardNotificationService {
SimpleDataResponse add(OptDashboardNotificationParams optDashboardNotificationParams, Long userId, Long companyId,
Integer languageType);
SimpleDataResponse edit(OptDashboardNotificationParams optDashboardNotificationParams, Long userId, Long companyId,
Integer languageType);
SimpleDataResponse batchDelete(DeleteDashboardNotificationParams deleteParams, Long userId, Long companyId,
Integer languageType);
PageInfo<DashboardNotificationPageVO> getListPage(DashboardNotificationSearchParams searchParams, Long companyId, Long userId,
Integer languageType, Integer uTCOffset);
}

5
dongjian-dashboard-back-service/src/main/java/com/dongjian/dashboard/back/service/DeviceDataBaStatusService.java

@ -1,8 +1,11 @@
package com.dongjian.dashboard.back.service;
import com.dongjian.dashboard.back.common.response.PageInfo;
import com.dongjian.dashboard.back.common.response.SimpleDataResponse;
import com.dongjian.dashboard.back.dto.data.BaStatusDataSearchParam;
import com.dongjian.dashboard.back.dto.device.LineDataSearchParams;
import com.dongjian.dashboard.back.vo.data.DeviceBaStatusData;
import com.dongjian.dashboard.back.vo.device.LineData;
import java.util.List;
@ -14,4 +17,6 @@ public interface DeviceDataBaStatusService {
PageInfo<DeviceBaStatusData> getDataList(BaStatusDataSearchParam pageSearchParam, Long companyId, Long userId, Integer languageType);
List<DeviceBaStatusData> handleDeviceBaStatusData(BaStatusDataSearchParam pageSearchParam);
SimpleDataResponse<List<LineData>> getLineData(Integer searchType, LineDataSearchParams lineDataSearchParams, Long companyId, Long userId, Integer languageType);
}

2
dongjian-dashboard-back-service/src/main/java/com/dongjian/dashboard/back/service/OverviewService.java

@ -17,5 +17,5 @@ public interface OverviewService {
SimpleDataResponse<JpMeshHourlyForecasts> getWeatherInfo(QueryWeather queryWeather, Long userId, Long companyId, Integer languageType, Integer utcOffset);
SimpleDataResponse<DashboardNotificationPageVO> getNotification(Long userId, Long companyId, Integer languageType, Integer utcOffset);
SimpleDataResponse<List<DashboardNotificationPageVO>> getNotification(Long userId, Long companyId, Integer languageType, Integer utcOffset);
}

131
dongjian-dashboard-back-service/src/main/java/com/dongjian/dashboard/back/service/common/CommonOpt.java

@ -25,7 +25,7 @@ import com.dongjian.dashboard.back.util.DateUtil;
import com.dongjian.dashboard.back.util.DurationData;
import com.dongjian.dashboard.back.vo.building.BindedBuildingVO;
import com.dongjian.dashboard.back.vo.company.AuroraInfo;
import com.dongjian.dashboard.back.vo.device.AccumulateLineData;
import com.dongjian.dashboard.back.vo.device.SubLineData;
import com.dongjian.dashboard.back.vo.device.DeviceIncrement;
import com.dongjian.dashboard.back.vo.device.LineData;
import com.dongjian.dashboard.back.vo.record.RecordAccumulateDto;
@ -159,11 +159,6 @@ public class CommonOpt {
return getAuroraInfoByApikey(paramMap);
}
public String buildAuroraJdbcUrl(String dbUrl, String auroraHost) {
String regex = "(jdbc:mysql://)([^/]+)(/data_center_aeon_admin.*)";
return dbUrl.replaceAll(regex, "$1" + auroraHost + "$3");
}
public String extractValue(ObjectMapper mapper, Long categoryId, String rawData) {
if (Constants.DEVICE_TYPE_TEMPERATURE_HUMIDITY.contains(categoryId)){
List<String> values = extractAllValues(mapper, rawData);
@ -260,7 +255,7 @@ public class CommonOpt {
public List<String> getPreDay(int days) {
// 日本时区
ZoneId JST = ZoneId.of("Asia/Tokyo");
ZoneId JST = Constants.ZONE_TOKYO;
// 获取当前日期
LocalDate currentDate = LocalDate.now(JST);
// 设置日期格式化
@ -300,14 +295,14 @@ public class CommonOpt {
Double yesterdayBase = getDayAccumulate(conn, beforeYesterday, lineDataSearchParams.getDeviceId());
Double lastYearBase = getDayAccumulate(conn, lastYearPrev, lineDataSearchParams.getDeviceId());
AccumulateLineData acc = new AccumulateLineData();
SubLineData acc = new SubLineData();
acc.setAttrCode(lineData.getAttrCode());
processAccumulateDay(conn, current, todayBase, "today", acc, deviceInfo);
if (searchType == 1) {
processAccumulateDay(conn, yesterday, yesterdayBase, "yesterday", acc, deviceInfo);
processAccumulateDay(conn, lastYear, lastYearBase, "lastYear", acc, deviceInfo);
LineDataAggregator.convertToLineDataHour(acc, lineData);
LineDataAggregator.convertToAccumulateLineData(acc, lineData);
} else {
LineDataAggregator.convertToLineDataAll(acc, lineData);
}
@ -381,10 +376,10 @@ public class CommonOpt {
LocalDate date,
Double baseValue,
String yKey,
AccumulateLineData accumulateLineData,
SubLineData SubLineData,
DeviceInfo deviceInfo) {
AccumulateLineData.childLineData childLineData = new AccumulateLineData.childLineData();
SubLineData.childLineData childLineData = new SubLineData.childLineData();
String sql = "SELECT upload_value, upload_at FROM dashboard_record_accumulate " +
@ -392,15 +387,15 @@ public class CommonOpt {
try (PreparedStatement ps = conn.prepareStatement(sql)) {
ps.setString(1, deviceInfo.getDeviceId());
ps.setString(2, accumulateLineData.getAttrCode());
ps.setString(2, SubLineData.getAttrCode());
ps.setInt(3, date.getYear());
ps.setInt(4, date.getMonthValue());
ps.setInt(5, date.getDayOfMonth());
try (ResultSet rs = ps.executeQuery()) {
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
ZoneId JST = ZoneId.of("Asia/Tokyo");
DateTimeFormatter formatter = Constants.FORMATTER_YMDHMS;
ZoneId JST = Constants.ZONE_TOKYO;
while (rs.next()) {
long ts = rs.getLong("upload_at");
@ -429,7 +424,7 @@ public class CommonOpt {
logger.error("processAccumulateDay error", e);
}
accumulateLineData.getSubData().put(yKey, childLineData);
SubLineData.getSubData().put(yKey, childLineData);
}
private Double getDayAccumulate(Connection conn, LocalDate date, String deviceId) {
@ -476,39 +471,77 @@ public class CommonOpt {
List<String> dateList = getPreDay(1);
for (String date : dateList) {
LocalDate localDate = LocalDate.parse(date, DateTimeFormatter.ofPattern("yyyy_MM_dd"));
String sql = "SELECT upload_value, upload_at FROM dashboard_record_measure " +
"WHERE device_id = ? AND attr_code = ? AND date_year = ? AND date_month = ? AND date_day = ? ORDER BY id";
try (PreparedStatement ps = conn.prepareStatement(sql)) {
ps.setString(1, lineDataSearchParams.getDeviceId());
ps.setString(2, lineData.getAttrCode());
ps.setInt(3, localDate.getYear());
ps.setInt(4, localDate.getMonthValue());
ps.setInt(5, localDate.getDayOfMonth());
try (ResultSet rs = ps.executeQuery()) {
if (rs.next()) {
processResult(rs, lineData, deviceInfo);
}
}
} catch (Exception e) {
logger.error("process measure data error", e);
LocalDate today = LocalDate.parse(date, DateTimeFormatter.ofPattern("yyyy_MM_dd"));
LocalDate yesterday = today.minusDays(1);
LocalDate lastYear = DateUtil.getLastYearSameIsoWeekDay(today);
SubLineData sub = new SubLineData();
sub.setAttrCode(lineData.getAttrCode());
processMeasureDay(conn, today, "today", sub, deviceInfo);
if (searchType == 1) {
processMeasureDay(conn, yesterday, "yesterday", sub, deviceInfo);
processMeasureDay(conn, lastYear, "lastYear", sub, deviceInfo);
LineDataAggregator.convertToMeasureLineDataAvg(sub, lineData);
} else {
LineDataAggregator.convertToLineDataAll(sub, lineData);
}
}
});
if (searchType == 1) {
list.forEach(ld -> {
LineDataAggregator.aggregateAverageByHalfHour(ld);
LineDataAggregator.fillTo48HalfHour(ld);
});
return list;
}
private void processMeasureDay(
Connection conn,
LocalDate date,
String yKey,
SubLineData sub,
DeviceInfo deviceInfo
) {
SubLineData.childLineData child = new SubLineData.childLineData();
String sql = "SELECT upload_value, upload_at FROM dashboard_record_measure " +
"WHERE device_id = ? AND attr_code = ? " +
"AND date_year = ? AND date_month = ? AND date_day = ? ORDER BY id";
try (PreparedStatement ps = conn.prepareStatement(sql)) {
ps.setString(1, deviceInfo.getDeviceId());
ps.setString(2, sub.getAttrCode());
ps.setInt(3, date.getYear());
ps.setInt(4, date.getMonthValue());
ps.setInt(5, date.getDayOfMonth());
try (ResultSet rs = ps.executeQuery()) {
DateTimeFormatter formatter = Constants.FORMATTER_YMDHMS;
while (rs.next()) {
long ts = rs.getLong("upload_at");
String value = rs.getString("upload_value");
if (ts == 0) continue;
String time = Instant.ofEpochMilli(ts)
.atZone(Constants.ZONE_TOKYO)
.toLocalDateTime()
.format(formatter);
child.getXData().add(time);
child.getYData().add(
CommonUtil.formatDecimal(
StringUtils.isBlank(value) ? "0" : value,
deviceInfo.getDashboardDecimalPlaces()
)
);
}
}
} catch (Exception e) {
logger.error("processMeasureDay error", e);
}
return list;
sub.getSubData().put(yKey, child);
}
private void processResult(ResultSet result, LineData lineData, DeviceInfo deviceInfo) {
try {
// 用于存储 xData 和 yData
@ -516,7 +549,7 @@ public class CommonOpt {
List<Object> yDataList = new ArrayList<>();
// 使用 DateTimeFormatter 来格式化时间
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
DateTimeFormatter formatter = Constants.FORMATTER_YMDHMS;
ObjectMapper mapper = new ObjectMapper();
// 遍历查询结果
@ -532,7 +565,7 @@ public class CommonOpt {
// 将 long 时间戳转换为 LocalDateTime(日本时区)
Instant instant = Instant.ofEpochMilli(receiveTs);
String formattedDate = instant.atZone(ZoneId.of("Asia/Tokyo"))
String formattedDate = instant.atZone(Constants.ZONE_TOKYO)
.toLocalDateTime()
.format(formatter);
@ -761,4 +794,18 @@ public class CommonOpt {
return result;
}
public String status111Mapping(String status111) {
if(StringUtils.isBlank(status111)){
return null;
}
return switch (status111) {
case "0" -> "NML";
case "128" -> "MSK";
case "64" -> "OVR";
case "32" -> "TBL";
case "16" -> "ALM";
default -> null;
};
}
}

146
dongjian-dashboard-back-service/src/main/java/com/dongjian/dashboard/back/service/common/LineDataAggregator.java

@ -1,6 +1,6 @@
package com.dongjian.dashboard.back.service.common;
import com.dongjian.dashboard.back.vo.device.AccumulateLineData;
import com.dongjian.dashboard.back.vo.device.SubLineData;
import com.dongjian.dashboard.back.vo.device.LineData;
import java.time.LocalDate;
@ -149,84 +149,104 @@ public class LineDataAggregator {
return LocalDateTime.parse(String.valueOf(x), TimeAxisUtil.DATETIME_FMT);
}
/* ===============================
* 按小时聚合平均值
* =============================== */
public static void aggregateByHour(LineData lineData) {
aggregateByHourOrHalfHour(lineData, new AvgCollector(), true);
}
public static void convertToMeasureLineDataAvg(SubLineData accumulate, LineData lineData) {
if (accumulate == null || accumulate.getSubData() == null) return;
/* ===============================
* 按半小时聚合平均值
* =============================== */
public static void aggregateAverageByHalfHour(LineData lineData) {
aggregateByHourOrHalfHour(lineData, new AvgCollector(), false);
// 1. 每个 series 做「半小时平均」
Map<String, HalfHourSeries> seriesMap = new LinkedHashMap<>();
for (Map.Entry<String, SubLineData.childLineData> entry : accumulate.getSubData().entrySet()) {
seriesMap.put(entry.getKey(), aggregateAvgByHalfHour(entry.getValue()));
}
// 2. today 作为 X 轴基准
HalfHourSeries today = seriesMap.get("today");
if (today == null) {
throw new IllegalStateException("subData 必须包含 today");
}
// 3. 构建最终 X(yyyy-MM-dd HH:mm:00)
List<String> finalX = new ArrayList<>();
for (String hm : today.xList) {
finalX.add(today.date + " " + hm + ":00");
}
// 4. 构建临时 map,用 today.xList 对齐
Map<String, Map<String, Object>> tmpMap = new HashMap<>();
for (Map.Entry<String, HalfHourSeries> entry : seriesMap.entrySet()) {
tmpMap.put(entry.getKey(), entry.getValue().toMap());
}
// 5. 写入 LineData
lineData.setXData(finalX);
lineData.setYData(LineDataAligner.alignY(today.xList, tmpMap));
lineData.setAttrCode(accumulate.getAttrCode());
// 6. 补齐 48 半小时
fillTo48HalfHour(lineData);
}
/* 公共聚合方法 */
private static <T> void aggregateByHourOrHalfHour(
LineData lineData,
HalfHourCollector<T> collector,
boolean byHour
) {
if (lineData == null) return;
private static HalfHourSeries aggregateAvgByHalfHour(SubLineData.childLineData child) {
if (child == null || child.getXData() == null || child.getYData() == null) {
return new HalfHourSeries(null);
}
List<String> xData = lineData.getXData();
Map<String, List<Object>> yDataMap = lineData.getYData();
if (xData == null || xData.isEmpty() || yDataMap == null || yDataMap.isEmpty()) return;
Map<String, List<Double>> bucket = new HashMap<>();
String date = null;
Set<String> allSeriesKeys = yDataMap.keySet();
int size = Math.min(child.getXData().size(), child.getYData().size());
Map<String, Map<String, T>> bucket = new TreeMap<>();
for (int i = 0; i < xData.size(); i++) {
LocalDateTime time = parseTime(xData.get(i));
String key = byHour ? TimeAxisUtil.hourKey(time) : TimeAxisUtil.halfHourKey(time);
for (int i = 0; i < size; i++) {
Object x = child.getXData().get(i);
Object y = child.getYData().get(i);
if (x == null || y == null) continue;
LocalDateTime time;
try {
time = LocalDateTime.parse(x.toString(), TimeAxisUtil.DATETIME_FMT);
} catch (Exception e) {
continue;
}
for (String series : allSeriesKeys) {
Object yVal = safeGet(yDataMap.get(series), i);
if (yVal == null) continue;
if (date == null) {
date = time.toLocalDate().toString();
}
bucket.computeIfAbsent(key, k -> new HashMap<>());
collector.collect(bucket.get(key), series, time, yVal);
double num;
try {
num = Double.parseDouble(y.toString());
} catch (Exception e) {
// 非数字直接丢
continue;
}
String hm = TimeAxisUtil.alignToHalfHour(time.toLocalTime()); // HH:mm
bucket.computeIfAbsent(hm, k -> new ArrayList<>()).add(num);
}
// 构建临时 Map 用于统一对齐
Map<String, Map<String, Object>> tmpMap = new HashMap<>();
boolean isAvg = collector instanceof AvgCollector;
for (Map.Entry<String, Map<String, T>> entry : bucket.entrySet()) {
String xKey = entry.getKey();
Map<String, T> seriesMap = entry.getValue();
for (String series : allSeriesKeys) {
Object val;
T tVal = seriesMap.get(series);
if (isAvg && tVal instanceof List) {
List<Double> list = (List<Double>) tVal;
val = list.stream().mapToDouble(Double::doubleValue).average().orElse(0);
} else if (!isAvg && tVal instanceof TimeValue) {
val = ((TimeValue) tVal).value;
} else {
val = tVal;
}
tmpMap.computeIfAbsent(series, k -> new HashMap<>()).put(xKey, val);
}
List<String> sortedHM = new ArrayList<>(bucket.keySet());
Collections.sort(sortedHM);
List<Object> values = new ArrayList<>();
for (String hm : sortedHM) {
List<Double> list = bucket.get(hm);
double avg = list.stream().mapToDouble(Double::doubleValue).average().orElse(0D);
values.add(avg);
}
List<String> newX = new ArrayList<>(bucket.keySet());
lineData.setXData(newX);
lineData.setYData(LineDataAligner.alignY(newX, tmpMap));
return new HalfHourSeries(date, sortedHM, values);
}
/* ===============================
* AccumulateLineData -> LineData
* SubLineData -> LineData
* 半小时取最后一条
* =============================== */
public static void convertToLineDataHour(AccumulateLineData accumulate, LineData lineData) {
public static void convertToAccumulateLineData(SubLineData accumulate, LineData lineData) {
if (accumulate == null || accumulate.getSubData() == null) return;
Map<String, HalfHourSeries> seriesMap = new LinkedHashMap<>();
for (Map.Entry<String, AccumulateLineData.childLineData> entry : accumulate.getSubData().entrySet()) {
for (Map.Entry<String, SubLineData.childLineData> entry : accumulate.getSubData().entrySet()) {
seriesMap.put(entry.getKey(), aggregateLastByHalfHour(entry.getValue()));
}
@ -250,7 +270,7 @@ public class LineDataAggregator {
fillTo48HalfHour(lineData);
}
private static HalfHourSeries aggregateLastByHalfHour(AccumulateLineData.childLineData child) {
private static HalfHourSeries aggregateLastByHalfHour(SubLineData.childLineData child) {
if (child == null || child.getXData() == null || child.getYData() == null)
return new HalfHourSeries(null);
@ -307,19 +327,19 @@ public class LineDataAggregator {
/* ===============================
* 全量对齐
* =============================== */
public static void convertToLineDataAll(AccumulateLineData accumulate, LineData lineData) {
public static void convertToLineDataAll(SubLineData accumulate, LineData lineData) {
if (accumulate == null || accumulate.getSubData() == null) return;
LinkedHashSet<String> xSet = new LinkedHashSet<>();
for (AccumulateLineData.childLineData child : accumulate.getSubData().values()) {
for (SubLineData.childLineData child : accumulate.getSubData().values()) {
if (child.getXData() != null) xSet.addAll(child.getXData());
}
List<String> mergedX = new ArrayList<>(xSet);
Map<String, Map<String, Object>> tmpMap = new LinkedHashMap<>();
for (Map.Entry<String, AccumulateLineData.childLineData> entry : accumulate.getSubData().entrySet()) {
for (Map.Entry<String, SubLineData.childLineData> entry : accumulate.getSubData().entrySet()) {
Map<String, Object> map = new LinkedHashMap<>();
AccumulateLineData.childLineData child = entry.getValue();
SubLineData.childLineData child = entry.getValue();
if (child.getXData() != null && child.getYData() != null) {
int size = Math.min(child.getXData().size(), child.getYData().size());
for (int i = 0; i < size; i++) map.put(child.getXData().get(i), child.getYData().get(i));

269
dongjian-dashboard-back-service/src/main/java/com/dongjian/dashboard/back/service/impl/DashboardNotificationCategoryServiceImpl.java

@ -0,0 +1,269 @@
package com.dongjian.dashboard.back.service.impl;
import com.github.pagehelper.PageHelper;
import com.dongjian.dashboard.back.common.exception.MsgCodeException;
import com.dongjian.dashboard.back.common.language.msg.MsgLanguageChange;
import com.dongjian.dashboard.back.common.response.PageInfo;
import com.dongjian.dashboard.back.common.response.ResponseCode;
import com.dongjian.dashboard.back.common.response.SimpleDataResponse;
import com.dongjian.dashboard.back.dao.ex.DashboardNotificationCategoryMapperExt;
import com.dongjian.dashboard.back.dao.ex.DeviceInfoMapperExt;
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.model.DashboardNotificationCategory;
import com.dongjian.dashboard.back.model.DashboardNotificationCategoryExample;
import com.dongjian.dashboard.back.service.DashboardNotificationCategoryService;
import com.dongjian.dashboard.back.service.common.CommonOpt;
import com.dongjian.dashboard.back.util.CommonUtil;
import com.dongjian.dashboard.back.vo.dashboardnotification.DashboardNotificationCategoryPageVO;
import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.transaction.interceptor.TransactionAspectSupport;
import org.springframework.util.ObjectUtils;
import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;
/**
*
* @author jwy-style
*
*/
@Service
public class DashboardNotificationCategoryServiceImpl implements DashboardNotificationCategoryService {
private static Logger logger = LoggerFactory.getLogger(DashboardNotificationCategoryServiceImpl.class);
@Autowired
private CommonOpt commonOpt;
@Autowired
private MsgLanguageChange msgLanguageChange;
@Autowired
private DashboardNotificationCategoryMapperExt dashboardNotificationCategoryMapperExt;
@Autowired
private DeviceInfoMapperExt deviceInfoMapperExt;
/**
* Adds a new dashboardNotificationCategory based on the provided parameters.
* Validates company ownership, performs common verification, and inserts the dashboardNotificationCategory into the database.
*
* @param optDashboardNotificationCategoryParams Parameters for the new dashboardNotificationCategory to be added
* @param userId ID of the user performing the operation
* @param companyId ID of the company associated with the dashboardNotificationCategory
* @param languageType Language type for error messages
* @return SimpleDataResponse indicating success or failure of the operation
*/
@Override
@Transactional
public SimpleDataResponse add(OptDashboardNotificationCategoryParams optDashboardNotificationCategoryParams, Long userId, Long companyId,
Integer languageType) {
try {
optDashboardNotificationCategoryParams.setCategoryId(null);
try {
// Validate company ownership to prevent unauthorized operations
if (ObjectUtils.isEmpty(optDashboardNotificationCategoryParams.getCompanyId())) {
optDashboardNotificationCategoryParams.setCompanyId(companyId);
} else {
checkCompany(optDashboardNotificationCategoryParams, languageType, companyId);
}
// Perform common verification for the dashboardNotificationCategory parameters
commonVerifyOpt(optDashboardNotificationCategoryParams, companyId, languageType);
} catch (MsgCodeException e) {
return new SimpleDataResponse(ResponseCode.MSG_ERROR, e.getMessage());
}
long currentUnix = System.currentTimeMillis();
DashboardNotificationCategory dashboardNotificationCategory = new DashboardNotificationCategory();
BeanUtils.copyProperties(optDashboardNotificationCategoryParams,dashboardNotificationCategory);
dashboardNotificationCategory.setId(null);
dashboardNotificationCategory.setCreatedAt(currentUnix);
dashboardNotificationCategory.setCreatedBy(userId);
dashboardNotificationCategoryMapperExt.insertSelective(dashboardNotificationCategory);
return SimpleDataResponse.success();
} catch (Exception e) {
logger.error("Error occurred while adding a new dashboardNotificationCategory", e);
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
return new SimpleDataResponse(ResponseCode.SERVER_ERROR, "server error");
}
}
/**
* Performs common verification operations on the dashboardNotificationCategory parameters.
* Checks parameter validity and existence of the dashboardNotificationCategory name.
*
* @param optDashboardNotificationCategoryParams Parameters of the dashboardNotificationCategory to be verified
* @param companyId ID of the company associated with the dashboardNotificationCategory
* @param languageType Language type for error messages
*/
private void commonVerifyOpt(OptDashboardNotificationCategoryParams optDashboardNotificationCategoryParams, Long companyId, Integer languageType) {
checkParam(optDashboardNotificationCategoryParams, languageType);
checkExist(optDashboardNotificationCategoryParams, languageType);
}
private void checkExist(OptDashboardNotificationCategoryParams optDashboardNotificationCategoryParams, Integer languageType) {
if (dashboardNotificationCategoryMapperExt.checkExist(optDashboardNotificationCategoryParams) > 0) {
throw new MsgCodeException(msgLanguageChange.getParameterMapByCode(languageType, "categoryHasExisted"));
}
}
/**
* Checks if the specified dashboardNotificationCategory's company ID matches the logged-in user's company or its subsidiary.
* Throws a MsgCodeException if the company ID does not match.
*
* @param optDashboardNotificationCategoryParams Parameters of the dashboardNotificationCategory to be checked
* @param languageType Language type for error messages
* @param companyId ID of the company associated with the logged-in user
* @throws MsgCodeException If the operation is not authorized for the given company
*/
private void checkCompany(OptDashboardNotificationCategoryParams optDashboardNotificationCategoryParams, Integer languageType, Long companyId) {
if (!commonOpt.isSubCompany(companyId, optDashboardNotificationCategoryParams.getCompanyId())) {
throw new MsgCodeException(msgLanguageChange.getParameterMapByCode(languageType, "noOperationAuth"));
}
}
/**
* Checks the validity of the dashboardNotificationCategory name parameter.
* Throws a MsgCodeException if the dashboardNotificationCategory name is blank or exceeds 100 characters.
*
* @param optDashboardNotificationCategoryParams Parameters of the dashboardNotificationCategory to be checked
* @param languageType Language type for error messages
* @throws MsgCodeException If the dashboardNotificationCategory name parameter is invalid
*/
private void checkParam(OptDashboardNotificationCategoryParams optDashboardNotificationCategoryParams, Integer languageType) {
if(StringUtils.isBlank(optDashboardNotificationCategoryParams.getName()) || optDashboardNotificationCategoryParams.getName().length() > 255){
throw new MsgCodeException("Parameter error [name]");
}
if(StringUtils.isNotBlank(optDashboardNotificationCategoryParams.getRemark()) && optDashboardNotificationCategoryParams.getRemark().length() > 255){
throw new MsgCodeException("Parameter error [remark]");
}
}
/**
* Updates an existing dashboardNotificationCategory with the provided parameters.
* Performs validation checks on the dashboardNotificationCategory parameters and authorization.
*
* @param optDashboardNotificationCategoryParams Parameters of the dashboardNotificationCategory to be updated
* @param userId ID of the user performing the update
* @param companyId ID of the company associated with the dashboardNotificationCategory
* @param languageType Language type for error messages
* @return SimpleDataResponse indicating success or failure of the update operation
*/
@Override
@Transactional
public SimpleDataResponse edit(OptDashboardNotificationCategoryParams optDashboardNotificationCategoryParams, Long userId, Long companyId,
Integer languageType) {
try {
DashboardNotificationCategory oldBP = dashboardNotificationCategoryMapperExt.selectByPrimaryKey(optDashboardNotificationCategoryParams.getCategoryId());
if (ObjectUtils.isEmpty(oldBP) || 1 == oldBP.getFlag()){
return new SimpleDataResponse(ResponseCode.MSG_ERROR, "Not found");
}
try {
List<Long> selfAndSubCompanyList = commonOpt.getSelfAndSubCompanyId(companyId);
if (!selfAndSubCompanyList.contains(oldBP.getCompanyId())){
throw new MsgCodeException(msgLanguageChange.getParameterMapByCode(languageType, "noOperationAuth"));
}
//
if (ObjectUtils.isEmpty(optDashboardNotificationCategoryParams.getCompanyId())) {
optDashboardNotificationCategoryParams.setCompanyId(oldBP.getCompanyId());
} else if(!selfAndSubCompanyList.contains(optDashboardNotificationCategoryParams.getCompanyId())){//设置的所属企业不属于自己权限企业
throw new MsgCodeException(msgLanguageChange.getParameterMapByCode(languageType, "noOperationAuth"));
}
commonVerifyOpt(optDashboardNotificationCategoryParams, companyId, languageType);
} catch (MsgCodeException e) {
return new SimpleDataResponse(ResponseCode.MSG_ERROR, e.getMessage());
}
DashboardNotificationCategory dashboardNotificationCategory = new DashboardNotificationCategory();
BeanUtils.copyProperties(optDashboardNotificationCategoryParams,dashboardNotificationCategory);
dashboardNotificationCategory.setUpdatedAt(System.currentTimeMillis());
dashboardNotificationCategory.setUpdatedBy(userId);
DashboardNotificationCategoryExample example = new DashboardNotificationCategoryExample();
DashboardNotificationCategoryExample.Criteria criteria = example.createCriteria();
criteria.andIdEqualTo(optDashboardNotificationCategoryParams.getCategoryId());
dashboardNotificationCategoryMapperExt.updateByExampleSelective(dashboardNotificationCategory, example);
return SimpleDataResponse.success();
} catch (Exception e) {
logger.error("Edit dashboardNotificationCategory error", e);
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
return new SimpleDataResponse(ResponseCode.SERVER_ERROR, "server error");
}
}
/**
* Batch deletes dashboardNotificationCategorys based on the provided dashboardNotificationCategory IDs.
* Performs validation checks on the dashboardNotificationCategory IDs and authorization.
*
* @param deleteDashboardNotificationCategoryParams Parameters containing dashboardNotificationCategory IDs to be deleted
* @param userId ID of the user performing the deletion
* @param companyId ID of the company associated with the dashboardNotificationCategorys
* @param languageType Language type for error messages
* @return SimpleDataResponse indicating success or failure of the batch deletion operation
*/
@Override
@Transactional
public SimpleDataResponse batchDelete(DeleteDashboardNotificationCategoryParams deleteDashboardNotificationCategoryParams, Long userId,
Long companyId, Integer languageType) {
if (StringUtils.isBlank(deleteDashboardNotificationCategoryParams.getCategoryIds())) {
return SimpleDataResponse.success();
}
try {
List<Long> ids = Arrays.asList(StringUtils.split(deleteDashboardNotificationCategoryParams.getCategoryIds(), ",")).stream()
.map(id -> CommonUtil.String2Long(id.trim())).collect(Collectors.toList());
DashboardNotificationCategoryExample dashboardNotificationCategoryExample = new DashboardNotificationCategoryExample();
DashboardNotificationCategoryExample.Criteria criteria = dashboardNotificationCategoryExample.createCriteria();
criteria.andIdIn(ids).andCompanyIdIn(commonOpt.getSelfAndSubCompanyId(companyId));
DashboardNotificationCategory dashboardNotificationCategory = new DashboardNotificationCategory();
dashboardNotificationCategory.setFlag(1);
dashboardNotificationCategoryMapperExt.updateByExampleSelective(dashboardNotificationCategory, dashboardNotificationCategoryExample);
return SimpleDataResponse.success();
} catch (Exception e) {
logger.error("Batch delete dashboardNotificationCategory error", e);
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
return new SimpleDataResponse(ResponseCode.SERVER_ERROR, "server error");
}
}
@Override
public PageInfo<DashboardNotificationCategoryPageVO> getListPage(DashboardNotificationCategorySearchParams pageSearchParam, Long companyId,
Long userId, Integer languageType, Integer uTCOffset) {
//list防${}注入
if (StringUtils.isBlank(pageSearchParam.getCompanyIds())) {
pageSearchParam.setCompanyIdList(Arrays.asList(companyId));
} else {
pageSearchParam.setCompanyIdList(commonOpt.filterCompanyIds(companyId, pageSearchParam.getCompanyIds()));
}
if (StringUtils.isNotBlank(pageSearchParam.getCategoryIds())) {
pageSearchParam.setCategoryIdList(CommonUtil.commaStr2LongList(pageSearchParam.getCategoryIds()));
}
PageHelper.startPage(pageSearchParam.getPageNum() == null ? 1 : pageSearchParam.getPageNum(), pageSearchParam.getPageSize() == null ? 20 : pageSearchParam.getPageSize());
List<DashboardNotificationCategoryPageVO> resultList = dashboardNotificationCategoryMapperExt.getListPage(pageSearchParam);
return new PageInfo<>(resultList);
}
}

260
dongjian-dashboard-back-service/src/main/java/com/dongjian/dashboard/back/service/impl/DashboardNotificationServiceImpl.java

@ -0,0 +1,260 @@
package com.dongjian.dashboard.back.service.impl;
import com.github.pagehelper.PageHelper;
import com.dongjian.dashboard.back.common.exception.MsgCodeException;
import com.dongjian.dashboard.back.common.language.msg.MsgLanguageChange;
import com.dongjian.dashboard.back.common.response.PageInfo;
import com.dongjian.dashboard.back.common.response.ResponseCode;
import com.dongjian.dashboard.back.common.response.SimpleDataResponse;
import com.dongjian.dashboard.back.dao.ex.DashboardNotificationMapperExt;
import com.dongjian.dashboard.back.dao.ex.DeviceInfoMapperExt;
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.model.DashboardNotification;
import com.dongjian.dashboard.back.model.DashboardNotificationExample;
import com.dongjian.dashboard.back.service.DashboardNotificationService;
import com.dongjian.dashboard.back.service.common.CommonOpt;
import com.dongjian.dashboard.back.util.CommonUtil;
import com.dongjian.dashboard.back.vo.dashboardnotification.DashboardNotificationPageVO;
import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.transaction.interceptor.TransactionAspectSupport;
import org.springframework.util.ObjectUtils;
import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;
/**
*
* @author jwy-style
*
*/
@Service
public class DashboardNotificationServiceImpl implements DashboardNotificationService {
private static Logger logger = LoggerFactory.getLogger(DashboardNotificationServiceImpl.class);
@Autowired
private CommonOpt commonOpt;
@Autowired
private MsgLanguageChange msgLanguageChange;
@Autowired
private DashboardNotificationMapperExt dashboardNotificationMapperExt;
/**
* Adds a new dashboardNotification based on the provided parameters.
* Validates company ownership, performs common verification, and inserts the dashboardNotification into the database.
*
* @param optDashboardNotificationParams Parameters for the new dashboardNotification to be added
* @param userId ID of the user performing the operation
* @param companyId ID of the company associated with the dashboardNotification
* @param languageType Language type for error messages
* @return SimpleDataResponse indicating success or failure of the operation
*/
@Override
@Transactional
public SimpleDataResponse add(OptDashboardNotificationParams optDashboardNotificationParams, Long userId, Long companyId,
Integer languageType) {
try {
optDashboardNotificationParams.setDashboardNotificationId(null);
try {
// Validate company ownership to prevent unauthorized operations
if (ObjectUtils.isEmpty(optDashboardNotificationParams.getCompanyId())) {
optDashboardNotificationParams.setCompanyId(companyId);
} else {
checkCompany(optDashboardNotificationParams, languageType, companyId);
}
// Perform common verification for the dashboardNotification parameters
commonVerifyOpt(optDashboardNotificationParams, companyId, languageType);
} catch (MsgCodeException e) {
return new SimpleDataResponse(ResponseCode.MSG_ERROR, e.getMessage());
}
long currentUnix = System.currentTimeMillis();
DashboardNotification dashboardNotification = new DashboardNotification();
BeanUtils.copyProperties(optDashboardNotificationParams,dashboardNotification);
dashboardNotification.setId(null);
dashboardNotification.setCreatedAt(currentUnix);
dashboardNotification.setCreatedBy(userId);
dashboardNotificationMapperExt.insertSelective(dashboardNotification);
return SimpleDataResponse.success();
} catch (Exception e) {
logger.error("Error occurred while adding a new dashboardNotification", e);
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
return new SimpleDataResponse(ResponseCode.SERVER_ERROR, "server error");
}
}
/**
* Performs common verification operations on the dashboardNotification parameters.
* Checks parameter validity and existence of the dashboardNotification name.
*
* @param optDashboardNotificationParams Parameters of the dashboardNotification to be verified
* @param companyId ID of the company associated with the dashboardNotification
* @param languageType Language type for error messages
*/
private void commonVerifyOpt(OptDashboardNotificationParams optDashboardNotificationParams, Long companyId, Integer languageType) {
checkParam(optDashboardNotificationParams, languageType);
}
/**
* Checks if the specified dashboardNotification's company ID matches the logged-in user's company or its subsidiary.
* Throws a MsgCodeException if the company ID does not match.
*
* @param optDashboardNotificationParams Parameters of the dashboardNotification to be checked
* @param languageType Language type for error messages
* @param companyId ID of the company associated with the logged-in user
* @throws MsgCodeException If the operation is not authorized for the given company
*/
private void checkCompany(OptDashboardNotificationParams optDashboardNotificationParams, Integer languageType, Long companyId) {
if (!commonOpt.isSubCompany(companyId, optDashboardNotificationParams.getCompanyId())) {
throw new MsgCodeException(msgLanguageChange.getParameterMapByCode(languageType, "noOperationAuth"));
}
}
/**
* Checks the validity of the dashboardNotification name parameter.
* Throws a MsgCodeException if the dashboardNotification name is blank or exceeds 100 characters.
*
* @param optDashboardNotificationParams Parameters of the dashboardNotification to be checked
* @param languageType Language type for error messages
* @throws MsgCodeException If the dashboardNotification name parameter is invalid
*/
private void checkParam(OptDashboardNotificationParams optDashboardNotificationParams, Integer languageType) {
if(StringUtils.isNotBlank(optDashboardNotificationParams.getDemandTime()) && optDashboardNotificationParams.getDemandTime().length() > 100){
throw new MsgCodeException("Parameter error [demandTime]");
}
if(null == optDashboardNotificationParams.getCategoryId()){
throw new MsgCodeException("Parameter error [categoryId]");
}
}
/**
* Updates an existing dashboardNotification with the provided parameters.
* Performs validation checks on the dashboardNotification parameters and authorization.
*
* @param optDashboardNotificationParams Parameters of the dashboardNotification to be updated
* @param userId ID of the user performing the update
* @param companyId ID of the company associated with the dashboardNotification
* @param languageType Language type for error messages
* @return SimpleDataResponse indicating success or failure of the update operation
*/
@Override
@Transactional
public SimpleDataResponse edit(OptDashboardNotificationParams optDashboardNotificationParams, Long userId, Long companyId,
Integer languageType) {
try {
DashboardNotification oldBP = dashboardNotificationMapperExt.selectByPrimaryKey(optDashboardNotificationParams.getDashboardNotificationId());
if (ObjectUtils.isEmpty(oldBP) || 1 == oldBP.getFlag()){
return new SimpleDataResponse(ResponseCode.MSG_ERROR, "Not found");
}
try {
List<Long> selfAndSubCompanyList = commonOpt.getSelfAndSubCompanyId(companyId);
if (!selfAndSubCompanyList.contains(oldBP.getCompanyId())){
throw new MsgCodeException(msgLanguageChange.getParameterMapByCode(languageType, "noOperationAuth"));
}
//
if (ObjectUtils.isEmpty(optDashboardNotificationParams.getCompanyId())) {
optDashboardNotificationParams.setCompanyId(oldBP.getCompanyId());
} else if(!selfAndSubCompanyList.contains(optDashboardNotificationParams.getCompanyId())){//设置的所属企业不属于自己权限企业
throw new MsgCodeException(msgLanguageChange.getParameterMapByCode(languageType, "noOperationAuth"));
}
commonVerifyOpt(optDashboardNotificationParams, companyId, languageType);
} catch (MsgCodeException e) {
return new SimpleDataResponse(ResponseCode.MSG_ERROR, e.getMessage());
}
DashboardNotification dashboardNotification = new DashboardNotification();
BeanUtils.copyProperties(optDashboardNotificationParams,dashboardNotification);
dashboardNotification.setUpdatedAt(System.currentTimeMillis());
dashboardNotification.setUpdatedBy(userId);
DashboardNotificationExample example = new DashboardNotificationExample();
DashboardNotificationExample.Criteria criteria = example.createCriteria();
criteria.andIdEqualTo(optDashboardNotificationParams.getDashboardNotificationId());
dashboardNotificationMapperExt.updateByExampleSelective(dashboardNotification, example);
return SimpleDataResponse.success();
} catch (Exception e) {
logger.error("Edit dashboardNotification error", e);
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
return new SimpleDataResponse(ResponseCode.SERVER_ERROR, "server error");
}
}
/**
* Batch deletes dashboardNotifications based on the provided dashboardNotification IDs.
* Performs validation checks on the dashboardNotification IDs and authorization.
*
* @param deleteDashboardNotificationParams Parameters containing dashboardNotification IDs to be deleted
* @param userId ID of the user performing the deletion
* @param companyId ID of the company associated with the dashboardNotifications
* @param languageType Language type for error messages
* @return SimpleDataResponse indicating success or failure of the batch deletion operation
*/
@Override
@Transactional
public SimpleDataResponse batchDelete(DeleteDashboardNotificationParams deleteDashboardNotificationParams, Long userId,
Long companyId, Integer languageType) {
if (StringUtils.isBlank(deleteDashboardNotificationParams.getDashboardNotificationIds())) {
return SimpleDataResponse.success();
}
try {
List<Long> ids = Arrays.asList(StringUtils.split(deleteDashboardNotificationParams.getDashboardNotificationIds(), ",")).stream()
.map(id -> CommonUtil.String2Long(id.trim())).collect(Collectors.toList());
DashboardNotificationExample dashboardNotificationExample = new DashboardNotificationExample();
DashboardNotificationExample.Criteria criteria = dashboardNotificationExample.createCriteria();
criteria.andIdIn(ids).andCompanyIdIn(commonOpt.getSelfAndSubCompanyId(companyId));
DashboardNotification dashboardNotification = new DashboardNotification();
dashboardNotification.setFlag(1);
dashboardNotificationMapperExt.updateByExampleSelective(dashboardNotification, dashboardNotificationExample);
return SimpleDataResponse.success();
} catch (Exception e) {
logger.error("Batch delete dashboardNotification error", e);
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
return new SimpleDataResponse(ResponseCode.SERVER_ERROR, "server error");
}
}
@Override
public PageInfo<DashboardNotificationPageVO> getListPage(DashboardNotificationSearchParams pageSearchParam, Long companyId,
Long userId, Integer languageType, Integer uTCOffset) {
//list防${}注入
if (StringUtils.isBlank(pageSearchParam.getCompanyIds())) {
pageSearchParam.setCompanyIdList(Arrays.asList(companyId));
} else {
pageSearchParam.setCompanyIdList(commonOpt.filterCompanyIds(companyId, pageSearchParam.getCompanyIds()));
}
if (StringUtils.isNotBlank(pageSearchParam.getDashboardNotificationIds())) {
pageSearchParam.setDashboardNotificationIdList(CommonUtil.commaStr2LongList(pageSearchParam.getDashboardNotificationIds()));
}
PageHelper.startPage(pageSearchParam.getPageNum() == null ? 1 : pageSearchParam.getPageNum(), pageSearchParam.getPageSize() == null ? 20 : pageSearchParam.getPageSize());
List<DashboardNotificationPageVO> resultList = dashboardNotificationMapperExt.getListPage(pageSearchParam);
return new PageInfo<>(resultList);
}
}

8
dongjian-dashboard-back-service/src/main/java/com/dongjian/dashboard/back/service/impl/DeviceDataAccumulateServiceImpl.java

@ -64,9 +64,9 @@ public class DeviceDataAccumulateServiceImpl implements DeviceDataAccumulateServ
@Override
public PageInfo<DeviceAccumulateData> getDataList(AccumulateDataSearchParam pageSearchParam, Long companyId, Long userId, Integer languageType) {
if (null == pageSearchParam.getBuildingId()) {
return new PageInfo<>(new ArrayList<>());
}
// if (null == pageSearchParam.getBuildingId()) {
// return new PageInfo<>(new ArrayList<>());
// }
//list防${}注入
if (StringUtils.isBlank(pageSearchParam.getCompanyIds())) {
@ -138,7 +138,7 @@ public class DeviceDataAccumulateServiceImpl implements DeviceDataAccumulateServ
}
}
LocalDateTime now = LocalDateTime.now(ZoneId.of("Asia/Tokyo"));
LocalDateTime now = LocalDateTime.now(Constants.ZONE_TOKYO);
LocalDate today = now.toLocalDate();
LocalDate yesterday = today.minusDays(1);
LocalDate lastYear = DateUtil.getLastYearSameIsoWeekDay(today);

39
dongjian-dashboard-back-service/src/main/java/com/dongjian/dashboard/back/service/impl/DeviceDataAlarmServiceImpl.java

@ -61,9 +61,9 @@ public class DeviceDataAlarmServiceImpl implements DeviceDataAlarmService {
@Override
public PageInfo<DeviceAlarmData> getDataList(AlarmDataSearchParam pageSearchParam, Long companyId, Long userId, Integer languageType) {
if (null == pageSearchParam.getBuildingId()) {
return new PageInfo<>(new ArrayList<>());
}
// if (null == pageSearchParam.getBuildingId()) {
// return new PageInfo<>(new ArrayList<>());
// }
//list防${}注入
if (StringUtils.isBlank(pageSearchParam.getCompanyIds())) {
@ -108,17 +108,40 @@ public class DeviceDataAlarmServiceImpl implements DeviceDataAlarmService {
} else {
data.setCollected(0);
}
data.setAlertLevelStr(msgLanguageChange.getParameterMapByCode(languageType, "alertLevel_" + data.getAlertLevel()));
data.setConfirmStatusStr(msgLanguageChange.getParameterMapByCode(languageType, "confirmStatus_" + data.getConfirmStatus()));
data.setHandleStatusStr(msgLanguageChange.getParameterMapByCode(languageType, "handleStatus_" + data.getHandleStatus()));
data.setElapsedTime(currentTs - data.getUploadTimestamp());
data.setElapsedTimeStr(commonOpt.formatElapsedTime(data.getElapsedTime(), languageType));
if (null != data.getAlertLevel()) {
data.setAlertLevelStr(msgLanguageChange.getParameterMapByCode(languageType, "alertLevel_" + data.getAlertLevel()));
}
if (null != data.getConfirmStatus()) {
data.setConfirmStatusStr(msgLanguageChange.getParameterMapByCode(languageType, "confirmStatus_" + data.getConfirmStatus()));
}
if (null != data.getHandleStatus()) {
data.setHandleStatusStr(msgLanguageChange.getParameterMapByCode(languageType, "handleStatus_" + data.getHandleStatus()));
}
if (null != data.getUploadTimestamp()) {
data.setElapsedTime(currentTs - data.getUploadTimestamp());
data.setElapsedTimeStr(commonOpt.formatElapsedTime(data.getElapsedTime(), languageType));
}
data.setInAlarm(isInAlarm(data.getHandleStatus(), data.getRetainAlert()) ? 1 : 0);
}
}
return resultList;
}
public static boolean isInAlarm(Integer handleStatus, Integer retainAlert) {
if (handleStatus == null) {
return false;
}
// (handle_status != 3 AND handle_status != 4)
if (handleStatus != 3 && handleStatus != 4) {
return true;
}
// (handle_status = 4 AND retain_alert = 1)
return handleStatus == 4 && Integer.valueOf(1).equals(retainAlert);
}
@Override
@Transactional
public SimpleDataResponse handleAlarm(HandleAlarmParams handleAlarmParams, Long userId, Long companyId, Integer languageType) {

118
dongjian-dashboard-back-service/src/main/java/com/dongjian/dashboard/back/service/impl/DeviceDataBaStatusServiceImpl.java

@ -1,22 +1,28 @@
package com.dongjian.dashboard.back.service.impl;
import com.alibaba.fastjson2.JSONObject;
import com.dongjian.dashboard.back.bo.LatestValueBO;
import com.dongjian.dashboard.back.common.Constants;
import com.dongjian.dashboard.back.common.language.msg.MsgLanguageChange;
import com.dongjian.dashboard.back.common.response.PageInfo;
import com.dongjian.dashboard.back.common.response.SimpleDataResponse;
import com.dongjian.dashboard.back.dao.ex.BaStatusHistoryMapperExt;
import com.dongjian.dashboard.back.dao.ex.DeviceInfoMapperExt;
import com.dongjian.dashboard.back.dao.ex.DeviceRawdataRealtimeMapperExt;
import com.dongjian.dashboard.back.dao.ex.FavoritedDeviceMapperExt;
import com.dongjian.dashboard.back.dto.data.BaStatusDataSearchParam;
import com.dongjian.dashboard.back.dto.device.LineDataSearchParams;
import com.dongjian.dashboard.back.easyexcel.SecondsToHMSConverter;
import com.dongjian.dashboard.back.model.DeviceInfo;
import com.dongjian.dashboard.back.model.DeviceInfoExample;
import com.dongjian.dashboard.back.model.DeviceRawdataRealtime;
import com.dongjian.dashboard.back.model.DeviceRawdataRealtimeExample;
import com.dongjian.dashboard.back.model.*;
import com.dongjian.dashboard.back.service.DeviceDataBaStatusService;
import com.dongjian.dashboard.back.service.common.CommonOpt;
import com.dongjian.dashboard.back.util.DateUtil;
import com.dongjian.dashboard.back.util.redis.RedisUtil;
import com.dongjian.dashboard.back.vo.data.DeviceAccumulateData;
import com.dongjian.dashboard.back.vo.data.DeviceBaStatusData;
import com.dongjian.dashboard.back.vo.data.DeviceMeasureData;
import com.dongjian.dashboard.back.vo.device.LineData;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.github.pagehelper.PageHelper;
@ -30,6 +36,8 @@ import org.springframework.stereotype.Service;
import java.net.URLDecoder;
import java.nio.charset.StandardCharsets;
import java.time.*;
import java.time.format.DateTimeFormatter;
import java.util.*;
import java.util.function.Function;
import java.util.stream.Collectors;
@ -49,20 +57,24 @@ public class DeviceDataBaStatusServiceImpl implements DeviceDataBaStatusService
@Autowired
private FavoritedDeviceMapperExt favoritedDeviceMapperExt;
@Autowired
private BaStatusHistoryMapperExt baStatusHistoryMapperExt;
@Autowired
private DeviceRawdataRealtimeMapperExt deviceRawdataRealtimeMapperExt;
@Autowired
private MsgLanguageChange msgLanguageChange;
@Autowired
private CommonOpt commonOpt;
@Autowired
private RedisUtil redisUtil;
@Override
public PageInfo<DeviceBaStatusData> getDataList(BaStatusDataSearchParam pageSearchParam, Long companyId, Long userId, Integer languageType) {
if (null == pageSearchParam.getBuildingId()) {
return new PageInfo<>(new ArrayList<>());
}
// if (null == pageSearchParam.getBuildingId()) {
// return new PageInfo<>(new ArrayList<>());
// }
//list防${}注入
if (StringUtils.isBlank(pageSearchParam.getCompanyIds())) {
@ -160,11 +172,13 @@ public class DeviceDataBaStatusServiceImpl implements DeviceDataBaStatusService
data.setStopRun(commonOpt.judgeStopRun(objectMapper, realtime85Map.get(deviceId)));
}
if (0 == data.getStopRun()) {
data.setContinuousRunningTimeStr(SecondsToHMSConverter.covertSeconds(data.getContinuousRunningTime()));
} else if (StringUtils.isNotBlank(data.getLatestTs()) && currentTs >= Long.parseLong(data.getLatestTs())) {
long diff = currentTs - Long.parseLong(data.getLatestTs());
data.setContinuousRunningTimeStr(SecondsToHMSConverter.covertSeconds(diff));
if (null != data.getStopRun()) {
if (0 == data.getStopRun()) {
data.setContinuousRunningTimeStr(SecondsToHMSConverter.covertSeconds(data.getContinuousRunningTime()));
} else if (StringUtils.isNotBlank(data.getLatestTs()) && currentTs >= Long.parseLong(data.getLatestTs())) {
long diff = currentTs - Long.parseLong(data.getLatestTs());
data.setContinuousRunningTimeStr(SecondsToHMSConverter.covertSeconds(diff));
}
}
}
}
@ -172,4 +186,84 @@ public class DeviceDataBaStatusServiceImpl implements DeviceDataBaStatusService
return resultList;
}
@Override
public SimpleDataResponse<List<LineData>> getLineData(Integer searchType, LineDataSearchParams lineDataSearchParams, Long companyId, Long userId, Integer languageType) {
List<LineData> lineDataList = new ArrayList<>();
LineData lineData = new LineData();
lineData.setAttrCode(lineDataSearchParams.getAttrCodeList()[0]);
List<Object> yCommon = new ArrayList<>();
//** 获取昨日最新数据 **//
String redisKey = Constants.REDIS_BA_STATUS_LATEST_VALUE + DateUtil.getYesterdayInJapan();
Object cacheLastValue = redisUtil.HGet(redisKey, lineDataSearchParams.getDeviceId().toLowerCase());
if (null != cacheLastValue) {
try {
LatestValueBO latestValueBO = objectMapper.readValue(JSONObject.toJSONString(cacheLastValue), LatestValueBO.class);
String dateFormatted = Instant.ofEpochMilli(latestValueBO.getUpdateTs())
.atZone(Constants.ZONE_TOKYO)
.format(Constants.FORMATTER_YMDHMS);
lineData.getXData().add(dateFormatted);
yCommon.add(latestValueBO.getValue());
} catch (JsonProcessingException e) {
logger.error("LatestValueBO error", e);
}
}
DeviceInfoExample devExample = new DeviceInfoExample();
devExample.createCriteria()
.andCompanyIdEqualTo(companyId)
.andDeviceIdEqualTo(lineDataSearchParams.getDeviceId());
List<DeviceInfo> deviceInfoList = deviceInfoMapperExt.selectByExample(devExample);
if (CollectionUtils.isEmpty(deviceInfoList)) {
return SimpleDataResponse.success(lineDataList);
}
DeviceInfo deviceInfo = deviceInfoList.get(0);
// 今天 00:00:00.000
LocalDate today = LocalDate.now();
long startOfDay = today
.atStartOfDay(ZoneId.systemDefault())
.toInstant()
.toEpochMilli();
String startTs = String.valueOf(startOfDay);
BaStatusHistoryExample bshExample = new BaStatusHistoryExample();
BaStatusHistoryExample.Criteria criteria = bshExample.createCriteria();
criteria.andUpdateTsGreaterThanOrEqualTo(startTs).andDeviceInfoIdEqualTo(deviceInfo.getId());
List<BaStatusHistory> result = baStatusHistoryMapperExt.selectByExample(bshExample);
if (CollectionUtils.isNotEmpty(result)) {
for (BaStatusHistory item : result) {
String tsStr = item.getUpdateTs();
if (tsStr == null || tsStr.isEmpty()) {
continue; // 跳过
}
long ts;
try {
ts = Long.parseLong(tsStr);
} catch (NumberFormatException e) {
logger.error("Invalid timestamp: {}", tsStr);
continue; // 非法时间戳跳过
}
// 毫秒 -> 日本时间 -> 格式化
String formatted = Instant.ofEpochMilli(ts)
.atZone(Constants.ZONE_TOKYO)
.format(Constants.FORMATTER_YMDHMS);
lineData.getXData().add(formatted);
yCommon.add(item.getIsRunning());
}
}
lineData.getYData().put("common", yCommon);
lineDataList.add(lineData);
return SimpleDataResponse.success(lineDataList);
}
}

8
dongjian-dashboard-back-service/src/main/java/com/dongjian/dashboard/back/service/impl/DeviceDataMeasureServiceImpl.java

@ -75,9 +75,9 @@ public class DeviceDataMeasureServiceImpl implements DeviceDataMeasureService {
@Override
public PageInfo<DeviceMeasureData> getDataList(MeasureDataSearchParam pageSearchParam, Long companyId, Long userId, Integer languageType) {
if (null == pageSearchParam.getBuildingId()) {
return new PageInfo<>(new ArrayList<>());
}
// if (null == pageSearchParam.getBuildingId()) {
// return new PageInfo<>(new ArrayList<>());
// }
//list防${}注入
if (StringUtils.isBlank(pageSearchParam.getCompanyIds())) {
@ -148,7 +148,7 @@ public class DeviceDataMeasureServiceImpl implements DeviceDataMeasureService {
}
}
ZoneId tokyoZone = ZoneId.of("Asia/Tokyo");
ZoneId tokyoZone = Constants.ZONE_TOKYO;
LocalDate tokyoToday = LocalDate.now(tokyoZone);
int year = tokyoToday.getYear();
int month = tokyoToday.getMonthValue();

26
dongjian-dashboard-back-service/src/main/java/com/dongjian/dashboard/back/service/impl/FavoritedDeviceServiceImpl.java

@ -7,16 +7,15 @@ import com.dongjian.dashboard.back.common.response.ResponseCode;
import com.dongjian.dashboard.back.common.response.SimpleDataResponse;
import com.dongjian.dashboard.back.dao.ex.FavoritedDeviceMapperExt;
import com.dongjian.dashboard.back.dto.data.AccumulateDataSearchParam;
import com.dongjian.dashboard.back.dto.data.AlarmDataSearchParam;
import com.dongjian.dashboard.back.dto.data.BaStatusDataSearchParam;
import com.dongjian.dashboard.back.dto.data.MeasureDataSearchParam;
import com.dongjian.dashboard.back.dto.device.FavoritedDeviceSearchParams;
import com.dongjian.dashboard.back.dto.device.OptFavoritedDeviceParams;
import com.dongjian.dashboard.back.service.DeviceDataAccumulateService;
import com.dongjian.dashboard.back.service.DeviceDataBaStatusService;
import com.dongjian.dashboard.back.service.DeviceDataMeasureService;
import com.dongjian.dashboard.back.service.FavoritedDeviceService;
import com.dongjian.dashboard.back.service.*;
import com.dongjian.dashboard.back.service.common.CommonOpt;
import com.dongjian.dashboard.back.vo.data.DeviceAccumulateData;
import com.dongjian.dashboard.back.vo.data.DeviceAlarmData;
import com.dongjian.dashboard.back.vo.data.DeviceBaStatusData;
import com.dongjian.dashboard.back.vo.data.DeviceMeasureData;
import com.dongjian.dashboard.back.vo.device.FavoritedDeviceVO;
@ -52,6 +51,8 @@ public class FavoritedDeviceServiceImpl implements FavoritedDeviceService {
DeviceDataBaStatusService deviceDataBaStatusService;
@Autowired
DeviceDataMeasureService deviceDataMeasureService;
@Autowired
DeviceDataAlarmService deviceDataAlarmService;
@Override
@ -77,6 +78,7 @@ public class FavoritedDeviceServiceImpl implements FavoritedDeviceService {
List<String> accumulateDeviceIds = new ArrayList<>();
List<String> measureDeviceIds = new ArrayList<>();
List<String> statusDeviceIds = new ArrayList<>();
List<String> alarmDeviceIds = new ArrayList<>();
for (FavoritedDeviceVO vo : favoritedDeviceVOList) {
Long categoryId = vo.getCategoryId();
@ -86,6 +88,8 @@ public class FavoritedDeviceServiceImpl implements FavoritedDeviceService {
measureDeviceIds.add(vo.getDeviceId());
} else if (Constants.CATEGORY_MAP.get(Constants.CATEGORY_STATUS).contains(categoryId)) {
statusDeviceIds.add(vo.getDeviceId());
} else if (Constants.CATEGORY_MAP.get(Constants.CATEGORY_ALARM).contains(categoryId)) {
alarmDeviceIds.add(vo.getDeviceId());
}
}
@ -93,6 +97,7 @@ public class FavoritedDeviceServiceImpl implements FavoritedDeviceService {
Map<String, DeviceAccumulateData> accumulateDataMap = buildAccumulateDataMap(companyId, accumulateDeviceIds);
Map<String, DeviceMeasureData> measureDataMap = buildMeasureDataMap(companyId, measureDeviceIds);
Map<String, DeviceBaStatusData> statusDataMap = buildStatusDataMap(companyId, statusDeviceIds);
Map<String, DeviceAlarmData> alarmDataMap = buildAlarmDataMap(companyId, languageType, alarmDeviceIds);
// 按收藏顺序生成结果
for (FavoritedDeviceVO vo : favoritedDeviceVOList) {
@ -106,6 +111,8 @@ public class FavoritedDeviceServiceImpl implements FavoritedDeviceService {
data = measureDataMap.get(deviceId);
} else if (Constants.CATEGORY_MAP.get(Constants.CATEGORY_STATUS).contains(categoryId)) {
data = statusDataMap.get(deviceId);
} else if (Constants.CATEGORY_MAP.get(Constants.CATEGORY_ALARM).contains(categoryId)) {
data = alarmDataMap.get(deviceId);
}
if (data != null) {
@ -116,6 +123,17 @@ public class FavoritedDeviceServiceImpl implements FavoritedDeviceService {
return new PageInfo<>(resultList);
}
private Map<String, DeviceAlarmData> buildAlarmDataMap(Long companyId, Integer languageType, List<String> deviceIds) {
if (CollectionUtils.isEmpty(deviceIds)) return Collections.emptyMap();
AlarmDataSearchParam param = new AlarmDataSearchParam();
param.setDeviceIdList(deviceIds);
param.setCompanyIdList(List.of(companyId));
param.setSearchType(4);
return deviceDataAlarmService.handleDeviceAlarmData(languageType, param).stream()
.collect(Collectors.toMap(DeviceAlarmData::getDeviceId, Function.identity(), (existing, replacement) -> replacement));
}
private Map<String, DeviceAccumulateData> buildAccumulateDataMap(Long companyId, List<String> deviceIds) {
if (CollectionUtils.isEmpty(deviceIds)) return Collections.emptyMap();

71
dongjian-dashboard-back-service/src/main/java/com/dongjian/dashboard/back/service/impl/OverviewServiceImpl.java

@ -1,18 +1,19 @@
package com.dongjian.dashboard.back.service.impl;
import com.dongjian.dashboard.back.common.Constants;
import com.dongjian.dashboard.back.common.language.msg.MsgLanguageChange;
import com.dongjian.dashboard.back.common.response.ResponseCode;
import com.dongjian.dashboard.back.common.response.SimpleDataResponse;
import com.dongjian.dashboard.back.dao.ex.DashboardNotificationMapperExt;
import com.dongjian.dashboard.back.dao.ex.DeviceRawdataRealtimeMapperExt;
import com.dongjian.dashboard.back.model.DashboardNotification;
import com.dongjian.dashboard.back.model.DashboardNotificationExample;
import com.dongjian.dashboard.back.dao.ex.MonitoringPointCategoryMapperExt;
import com.dongjian.dashboard.back.dao.ex.OverviewInfoMapperExt;
import com.dongjian.dashboard.back.dto.monitoringpointcategory.MonitoringPointCategorySearchParams;
import com.dongjian.dashboard.back.service.OverviewService;
import com.dongjian.dashboard.back.service.common.CommonOpt;
import com.dongjian.dashboard.back.vo.dashboardnotification.DashboardNotificationPageVO;
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 com.dongjian.dashboard.back.vo.monitoringpointcategory.MonitoringPointCategoryPageVO;
import com.dongjian.dashboard.back.weather.JpMeshHourlyForecasts;
import com.dongjian.dashboard.back.weather.QueryWeather;
import com.fasterxml.jackson.databind.ObjectMapper;
@ -47,11 +48,11 @@ public class OverviewServiceImpl implements OverviewService {
@Autowired
private DeviceRawdataRealtimeMapperExt deviceRawdataRealtimeMapperExt;
private OverviewInfoMapperExt overviewInfoMapperExt;
@Autowired
private DashboardNotificationMapperExt dashboardNotificationMapperExt;
@Autowired
private MsgLanguageChange msgLanguageChange;
@Autowired
private MonitoringPointCategoryMapperExt monitoringPointCategoryMapperExt;
@Autowired
private CommonOpt commonOpt;
@ -61,21 +62,71 @@ public class OverviewServiceImpl implements OverviewService {
buildingMap.put("companyId", companyId);
buildingMap.put("bindBuildingIdList", commonOpt.getBindBuildingIdList(userId));
List<OverviewVO> buildingInfoList = deviceRawdataRealtimeMapperExt.getBuildingInfo(buildingMap);
List<OverviewVO> buildingInfoList = overviewInfoMapperExt.getBuildingInfo(buildingMap);
if (CollectionUtils.isNotEmpty(buildingInfoList)){
Map<String, Object> paramMap = new HashMap<>();
paramMap.put("companyId", companyId);
paramMap.put("categoryIdList", Constants.CATEGORY_MAP.get(Constants.CATEGORY_ALARM));
List<OverviewInfo> alarmInfoList = deviceRawdataRealtimeMapperExt.getOverviewInfo(paramMap);
List<OverviewInfo> alarmInfoList = overviewInfoMapperExt.getOverviewInfo(paramMap);
List<OverviewVO> overviewVOList = convert(alarmInfoList, utcOffset);
mergeOverviewList(buildingInfoList, overviewVOList);
// 查找楼宇没有的监测点分类
// Map<Long, List<Long>> notExistingCategoryMap = handleMissingMonitoringPointCategory(companyId, buildingInfoList);
// mergeMissingMonitoringPointCategory(buildingInfoList, notExistingCategoryMap);
}
return SimpleDataResponse.success(buildingInfoList);
}
private void mergeMissingMonitoringPointCategory(List<OverviewVO> buildingInfoList, Map<Long, List<Long>> notExistingCategoryMap) {
buildingInfoList.forEach(building -> {
List<Long> missingCategoryIds = notExistingCategoryMap.get(building.getBuildingId());
if (missingCategoryIds != null && !missingCategoryIds.isEmpty()) {
building.setMissingMonitoringPointCategoryList(missingCategoryIds);
}
});
}
private Map<Long, List<Long>> handleMissingMonitoringPointCategory(Long companyId, List<OverviewVO> buildingInfoList) {
//全部分类
MonitoringPointCategorySearchParams categorySearchParam = new MonitoringPointCategorySearchParams();
categorySearchParam.setCompanyIdList(List.of(companyId));
List<MonitoringPointCategoryPageVO> categoryList = monitoringPointCategoryMapperExt.getListPage(categorySearchParam);
//所有楼宇的监测点分类
Map<String, Object> allCategoryParamMap = new HashMap<>();
allCategoryParamMap.put("companyId", companyId);
allCategoryParamMap.put("categoryIdList", Constants.ALL_CATEGORY_IDS);
List<OverviewCategoryVO> existingCategoryList = overviewInfoMapperExt.getExistingCategoryList(allCategoryParamMap);
Map<Long, Set<Long>> existingCategoryMap =
existingCategoryList.stream()
.filter(e -> e.getBuildingId() != null && e.getMonitoringPointCategoryId() != null)
.collect(Collectors.groupingBy(
OverviewCategoryVO::getBuildingId,
Collectors.mapping(
OverviewCategoryVO::getMonitoringPointCategoryId,
Collectors.toSet()
)
));
Map<Long, List<Long>> notExistingCategoryMap = new HashMap<>();
existingCategoryMap.forEach((buildingId, existingCategoryIds) -> {
List<Long> missingCategoryIds =
categoryList.stream()
.map(MonitoringPointCategoryPageVO::getMonitoringPointCategoryId)
.filter(Objects::nonNull)
.filter(id -> !existingCategoryIds.contains(id))
.collect(Collectors.toList());
notExistingCategoryMap.put(buildingId, missingCategoryIds);
});
return notExistingCategoryMap;
}
public static void mergeOverviewList(List<OverviewVO> buildingInfoList, List<OverviewVO> overviewVOList) {
// 构建 buildingId 到 OverviewVO 的映射表
Map<Long, OverviewVO> overviewMap = overviewVOList.stream()
@ -201,7 +252,7 @@ public class OverviewServiceImpl implements OverviewService {
}
@Override
public SimpleDataResponse<DashboardNotificationPageVO> getNotification(Long userId, Long companyId, Integer languageType, Integer utcOffset) {
public SimpleDataResponse<List<DashboardNotificationPageVO>> getNotification(Long userId, Long companyId, Integer languageType, Integer utcOffset) {
return SimpleDataResponse.success(dashboardNotificationMapperExt.getNotification(companyId));
}

15
dongjian-dashboard-back-service/src/main/java/com/dongjian/dashboard/back/service/impl/UserServiceImpl.java

@ -85,6 +85,7 @@ public class UserServiceImpl implements UserService {
@Transactional
public SimpleDataResponse add(OptUserParam param, Long companyId, Long userId, Integer languageType) {
try {
param.setUserType(2);
// if (StringUtils.isBlank(param.getLoginName())) {
param.setLoginName(param.getUsername());
// }
@ -132,9 +133,9 @@ public class UserServiceImpl implements UserService {
loginUrl = webAdminLoginUrl;
}
optAsync.doSendWork(
msgLanguageChange.getParameterMapByCode(languageType, "mailAddUserPwdSubject") + "【" + basicCompany.getCompanyName() +"】",
MessageFormat.format(msgLanguageChange.getParameterMapByCode(languageType, "mailAddUserPwdContent"), basicUser.getLoginName(), rawPwd, loginUrl),
basicUser.getEmail(),
msgLanguageChange.getParameterMapByCode(languageType, "mailAddUserPwdSubject") + "【" + basicCompany.getCompanyName() +"】",
MessageFormat.format(msgLanguageChange.getParameterMapByCode(languageType, "mailAddUserPwdContent"),basicUser.getLastName()+" "+basicUser.getFirstName(),basicUser.getLoginName(), rawPwd, loginUrl),
basicUser.getEmail(),
null);
return SimpleDataResponse.success();
@ -172,6 +173,12 @@ public class UserServiceImpl implements UserService {
private SimpleDataResponse checkParam(OptUserParam param, Integer languageType) {
if(StringUtils.isBlank(param.getLastName()) || param.getLastName().length() > 50){
return new SimpleDataResponse(ResponseCode.MSG_ERROR, "Parameter [lastName] error");
}
if(StringUtils.isBlank(param.getFirstName()) || param.getFirstName().length() > 50){
return new SimpleDataResponse(ResponseCode.MSG_ERROR, "Parameter [firstName] error");
}
if(StringUtils.isBlank(param.getEmail()) || param.getEmail().length() > 100){
return new SimpleDataResponse(ResponseCode.MSG_ERROR, "Parameter [email] error");
}
@ -331,7 +338,7 @@ public class UserServiceImpl implements UserService {
}
optAsync.doSendWork(
msgLanguageChange.getParameterMapByCode(languageType, "mailResetUserPwdSubject") + "【" + basicCompany.getCompanyName() +"】",
MessageFormat.format(msgLanguageChange.getParameterMapByCode(languageType, "mailAddUserPwdContent"), basicUser.getLoginName(), rawPwd, loginUrl),
MessageFormat.format(msgLanguageChange.getParameterMapByCode(languageType, "mailAddUserPwdContent"),basicUser.getLastName()+" "+basicUser.getFirstName(),basicUser.getLoginName(), rawPwd, loginUrl),
basicUser.getEmail(),
null);
}

37
dongjian-dashboard-back-util/src/main/java/com/dongjian/dashboard/back/util/CommonUtil.java

@ -5,6 +5,9 @@ import java.math.BigDecimal;
import java.math.RoundingMode;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.time.LocalDate;
import java.time.ZoneId;
import java.time.format.DateTimeFormatter;
import java.util.*;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
@ -847,4 +850,38 @@ public class CommonUtil {
System.out.println(formatDecimal("123.456,7.898", 2));
}
public static String ratio(String a, String b) {
if (StringUtils.isBlank(a) || StringUtils.isBlank(b)) {
return "-";
}
a = a.trim();
b = b.trim();
BigDecimal numA;
BigDecimal numB;
try {
numA = new BigDecimal(a);
numB = new BigDecimal(b);
} catch (NumberFormatException e) {
logger.error("参数必须是合法数字字符串", e);
return "-";
}
// 除 0 校验
if (numB.compareTo(BigDecimal.ZERO) == 0) {
logger.error("除数不能为 0");
return "-";
}
BigDecimal result = numA.divide(numB, 2, RoundingMode.HALF_UP);
return result.multiply(new BigDecimal(100)).toPlainString() + "%";
}
public static String generateExcelSuffix() {
String date = LocalDate.now(ZoneId.of("Asia/Tokyo"))
.format(DateTimeFormatter.ofPattern("yyyyMMdd"));
long timestampSeconds = System.currentTimeMillis() / 1000;
return "_" + date + "_" + timestampSeconds;
}
}

10
dongjian-dashboard-back-util/src/main/java/com/dongjian/dashboard/back/util/DateUtil.java

@ -16,6 +16,8 @@ import java.util.*;
public class DateUtil {
private static final DateTimeFormatter FORMATTER = DateTimeFormatter.ISO_DATE;
private static final ZoneId JAPAN_ZONE = ZoneId.of("Asia/Tokyo");
public static void main(String[] args) {
// 指定的日期时间字符串
@ -85,4 +87,12 @@ public class DateUtil {
LocalDate lastYearDate = getLastYearSameIsoWeekDay(date);
return lastYearDate.format(FORMATTER);
}
public static String getYesterdayInJapan() {
DateTimeFormatter FORMATTER = DateTimeFormatter.ofPattern("yyyy_MM_dd");
LocalDate japanYesterday = LocalDate
.now(JAPAN_ZONE)
.minusDays(1);
return japanYesterday.format(FORMATTER);
}
}

40
dongjian-dashboard-back-util/src/main/java/com/dongjian/dashboard/back/util/IPUtils.java

@ -0,0 +1,40 @@
package com.dongjian.dashboard.back.util;
import jakarta.servlet.http.HttpServletRequest;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
@Slf4j
public class IPUtils {
private IPUtils() {}
public static String getClientIp(HttpServletRequest request) {
if (request == null) {
return "";
}
String ip = request.getHeader("X-Forwarded-For");
if (StringUtils.isNotBlank(ip) && !"unknown".equalsIgnoreCase(ip)) {
return ip.split(",")[0].trim();
}
ip = request.getHeader("X-Real-IP");
if (StringUtils.isNotBlank(ip) && !"unknown".equalsIgnoreCase(ip)) {
return ip;
}
ip = request.getHeader("Proxy-Client-IP");
if (StringUtils.isNotBlank(ip) && !"unknown".equalsIgnoreCase(ip)) {
return ip;
}
ip = request.getHeader("WL-Proxy-Client-IP");
if (StringUtils.isNotBlank(ip) && !"unknown".equalsIgnoreCase(ip)) {
return ip;
}
return request.getRemoteAddr();
}
}

2
dongjian-dashboard-back-util/src/main/java/com/dongjian/dashboard/back/util/redis/RedisUtil.java

@ -42,7 +42,7 @@ public class RedisUtil {
Jackson2JsonRedisSerializer jackson2JsonRedisSerializer = new Jackson2JsonRedisSerializer(Object.class);
ObjectMapper om = new ObjectMapper();
om.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY);
om.enableDefaultTyping(ObjectMapper.DefaultTyping.NON_FINAL);
// om.enableDefaultTyping(ObjectMapper.DefaultTyping.NON_FINAL);
jackson2JsonRedisSerializer.setObjectMapper(om);
redisTemplate.setValueSerializer(jackson2JsonRedisSerializer);
redisTemplate.setHashValueSerializer(jackson2JsonRedisSerializer);

39
dongjian-dashboard-back-util/src/test/java/com/dongjian/dashboard/back/util/Test.java

@ -7,6 +7,7 @@ import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.LocalTime;
import java.time.ZoneId;
import java.util.Arrays;
import java.util.Calendar;
import java.util.Date;
import java.util.regex.Matcher;
@ -22,23 +23,31 @@ public class Test {
private final static long ondDayMillis = 3600 * 24 * 1000;
private static final String betweenQuotesRegex = "\"([^\"]*)\"";
private static final String[] suffixes = { "_85", "_85_9003", "_111", "_111_9003", "_S", "_s", "_131_5" };
public static void main(String[] args) throws ParseException{
long ZeroTime = getTodayZeroTime();
System.out.println(ZeroTime);
long startTime = ZeroTime - ondDayMillis;
System.out.println(startTime);
long endTime = ZeroTime - 1;
System.out.println(endTime);
int days = 2;
System.out.println("前"+ days +"天的0点的毫秒级时间戳: " + getMinusZeroTimestamp(days));
int mins = 9;
minusInterval(mins);
System.out.println(CommonUtil.extractContentBetweenQuotes("aurora_cluster_endpoint = \"company-13-aurora-cluster.cluster-cde6q2assvmn.ap-northeast-1.rds.amazonaws.com\""));
// long ZeroTime = getTodayZeroTime();
// System.out.println(ZeroTime);
// long startTime = ZeroTime - ondDayMillis;
// System.out.println(startTime);
// long endTime = ZeroTime - 1;
// System.out.println(endTime);
//
// int days = 2;
// System.out.println("前"+ days +"天的0点的毫秒级时间戳: " + getMinusZeroTimestamp(days));
//
// int mins = 9;
// minusInterval(mins);
//
// System.out.println(CommonUtil.extractContentBetweenQuotes("aurora_cluster_endpoint = \"company-13-aurora-cluster.cluster-cde6q2assvmn.ap-northeast-1.rds.amazonaws.com\""));
if (Arrays.stream(suffixes).anyMatch("AMMM_42_TL_TRED800073_131_5"::endsWith)){
System.out.println("包含");
} else {
System.out.println("不包含");
}
}
public static String extractContentBetweenQuotes(String text) {

Loading…
Cancel
Save