197 Commits

Author SHA1 Message Date
ae09cc1996 提交一次接线图实时调试 2025-12-19 16:13:49 +08:00
efdb1781da 提交一次接线图实时调试 2025-12-19 09:56:53 +08:00
贾同学
46aef0d97f feat(report): 按创建时间倒序排列报表模板 2025-12-09 11:06:36 +08:00
贾同学
5539c8fed5 Merge remote-tracking branch 'origin/master' 2025-12-09 09:00:34 +08:00
贾同学
10d93c260c fix(service): 修复测点限值信息缺失的处理逻辑 2025-12-09 09:00:13 +08:00
cdf
4ee100a72b 暂降监测点报告接口迁移(后续需要合并代码) 2025-12-09 08:57:18 +08:00
贾同学
958f1858fc feat(event): 新增暂降方向统计接口 2025-12-05 15:01:37 +08:00
贾同学
791aac26c0 refactor(cs-device): 重命名OverLimitClient及相关类名
- 将OverLimitClient重命名为CsOverLimitClient
- 将OverLimitFallbackFactory重命名为CsOverLimitFallbackFactory
- 更新相关引用类名以匹配新命名
- 修改RStatLimitRateDetailDServiceImpl中的客户端注入名称
2025-12-05 11:05:36 +08:00
cdf
3526926034 稳态报告接口迁移(后续需要合并代码) 2025-12-05 09:51:23 +08:00
cdf
3753544e5f Merge remote-tracking branch 'origin/master'
# Conflicts:
#	cs-device/cs-device-boot/src/main/java/com/njcn/csdevice/controller/line/CslineController.java
2025-12-05 09:13:20 +08:00
cdf
e6df543f1d 稳态报告接口迁移(后续需要合并代码) 2025-12-05 09:12:28 +08:00
贾同学
f86a3c4167 模块迁移 2025-12-04 10:22:51 +08:00
cdf
29681d200d 自定义报表动态数据库切换 2025-12-04 09:44:06 +08:00
贾同学
9ff0f40349 feat(cs-device): 新增线路参数与容量字段支持
- 在 CsLineParam 中新增 monitorObj、govern 和 monitorUser 字段
- 在 CsLinePO 中新增 shortCircuitCapacity、devCapacity、basicCapacity 和 protocolCapacity 字段
- 更新 CsLinePOServiceImpl 中的更新逻辑以支持新字段写入
2025-12-03 13:48:01 +08:00
贾同学
24187ca6d9 feat(report): 优化自定义报告数值计算逻辑
- 引入NumberUtil工具类判断字符串是否为数字
- 修复治理前后数据值的BigDecimal转换逻辑
- 确保计算公式中使用正确的数值进行比较和运算
- 提高数值处理的准确性和健壮性

fix(service): 修复敏感用户服务更新逻辑

- 修改保存方法返回值直接返回this.save结果
- 更正更新操作调用this.updateById方法
- 修复查询条件中ID比较的参数传递问题
- 确保更新时排除当前记录的唯一性校验正确

feat(vo): 扩展敏感用户视图对象字段

- 新增用户协议容量字段userAgreementCapacity
- 添加装机容量字段installedCapacity
- 增加所属厂站名称字段substationName
- 完善相关字段注释说明
2025-12-03 08:43:32 +08:00
cdf
f33986e934 用户对象管理接口 2025-12-02 14:34:04 +08:00
贾同学
cea2b9694a feat(report): 新增敏感用户报表生成功能 2025-12-02 08:56:34 +08:00
8e4c4383c0 1.bug修改 2025-11-28 16:43:04 +08:00
cdd1b5075c 1.微调 2025-11-27 16:44:38 +08:00
ea54b2b907 1.自定义报表模板调整 2025-11-26 14:41:23 +08:00
贾同学
61c8656fd9 feat(report): 迁移自定义报表功能模块 2025-11-26 09:58:44 +08:00
02e5100426 1.暂降概览下穿页面接口 2025-11-26 08:43:19 +08:00
85ae7e7ddb 1.添加登录用户查询监测点,设备,电能质量用户公共接口 2025-11-25 10:15:09 +08:00
9ae17b14f5 1.暂降预览页面接口 2025-11-25 09:11:58 +08:00
贾同学
f7477ea8ff feat(device): 1、开发监测点治理报告上传和下载接口,与前端联调;2、开发监测对象电网侧和负载侧监测点指标趋势对比数据查询接口 2025-11-24 08:54:45 +08:00
xy
9c6a74a2d6 新增敏感用户相关功能 2025-11-20 11:44:49 +08:00
xy
d346e80a88 新增敏感用户相关功能 2025-11-20 11:30:21 +08:00
贾同学
0227d0731c feat(cs-device): 增加监测点列表查询接口及参数过滤功能 2025-11-20 08:50:46 +08:00
贾同学
e34721c035 feat(device): 新增指标拟合图数据查询功能 2025-11-19 14:05:49 +08:00
xy
2451df7d8d 物联用户权限功能优化 2025-11-17 09:38:43 +08:00
xy
6e5aab4791 物联用户权限功能优化 2025-11-14 15:59:17 +08:00
xy
adb811e9df 物联用户权限功能添加 2025-11-14 10:01:55 +08:00
hzj
340ba18f99 组态bug修改,从无锡同步过来的 2025-11-13 16:18:51 +08:00
hzj
e320685af1 组态bug修改,从无锡同步过来的 2025-11-13 16:11:24 +08:00
贾同学
400b9fd9c1 refactor(service):更新方法调用从getDeviceRtDataByTime到getNewDeviceRtDataByTime 2025-11-13 09:47:32 +08:00
贾同学
ce0b9892c2 feat(device): 新增趋势数据查询功能- 在CsGroupController中增加/trendData接口,支持查询趋势数据-
fix(device): 完善监测点相关接口与实体字段

- 在CsLinePO实体中新增monitorObj和govern字段
- 补充getLineByName和list接口,增强监测点查询能力
2025-11-13 08:58:43 +08:00
xy
2fb11ecaaf 新增物联设备相关算法 2025-11-11 10:57:34 +08:00
xy
b7574b2916 云前置功能调整 2025-11-04 14:08:59 +08:00
xy
43bdcbf623 微调 2025-10-28 13:35:37 +08:00
xy
629ba0746a 云前置改造-补召功能调整 2025-10-23 09:41:05 +08:00
xy
b86c81d70a 云前置改造-新增补召功能 2025-10-22 15:04:46 +08:00
xy
d10240758b 云前置改造-微调 2025-10-20 09:30:13 +08:00
xy
995bd8b310 云前置改造-前置功能优化 2025-10-17 10:49:15 +08:00
xy
9531e18e93 云前置改造-暂态数据补召功能 2025-10-15 20:50:04 +08:00
xy
753a22eb4c 云前置改造-台账更新功能 2025-10-14 13:24:56 +08:00
xy
814b5757fd 云前置改造-台账相关功能 2025-10-11 09:13:32 +08:00
xy
9d2b4b97f9 云前置改造 2025-09-23 16:34:24 +08:00
xy
ee07f7a5e2 组态调整 2025-09-23 16:32:35 +08:00
xy
214f297297 新增云前置相关功能 2025-09-18 15:03:27 +08:00
hzj
b908186758 修改兼容其他设备的bug 2025-09-18 10:03:56 +08:00
xy
0d1c142885 新增云前置相关功能 2025-09-17 20:15:48 +08:00
xy
43b8473976 新增云前置相关功能 2025-09-16 18:30:53 +08:00
xy
8c442d8897 1、新增云协议设备台账录入功能;
2、新增云协议设备实时数据请求功能
2025-09-04 13:58:30 +08:00
xy
066dceaeaf 代码优化 2025-08-22 12:31:12 +08:00
xy
9dca3408ae 新增标签 2025-08-04 09:57:22 +08:00
xy
0d7d1781e3 模块状态判断调整 2025-08-04 09:55:27 +08:00
xy
b794842d33 模块新增温度数据 2025-07-17 15:50:13 +08:00
xy
5e0c2d5cbc 模块新增温度数据 2025-07-17 15:46:48 +08:00
xy
6c9a33c05d 模块新增温度数据 2025-07-17 15:34:40 +08:00
xy
a847f541f1 微调 2025-07-17 10:42:25 +08:00
xy
94b5b92991 微调 2025-07-17 10:41:14 +08:00
xy
882d56a2c5 算法优化 2025-07-17 10:32:40 +08:00
xy
1629e1c4cc 功能调整 2025-07-17 09:05:16 +08:00
xy
45846e1889 功能调整 2025-07-16 17:50:53 +08:00
xy
030384333e 功能调整 2025-07-16 10:51:30 +08:00
xy
dc9958b249 功能调整 2025-07-16 09:37:18 +08:00
xy
a607437225 功能调整 2025-07-16 09:10:00 +08:00
xy
d277eba5fb 微调 2025-07-15 20:11:27 +08:00
xy
913c2ef262 微调 2025-07-15 20:04:35 +08:00
xy
0fe80e12b5 微调 2025-07-15 18:45:09 +08:00
xy
ffb6ead753 接口优化 2025-07-15 18:03:50 +08:00
xy
6782b19b7d 新增web端修改项目信息接口 2025-07-15 15:39:16 +08:00
xy
eeb22c749a 新增工程、项目信息修改功能 2025-07-15 13:27:56 +08:00
xy
31c21a43f4 新增工程、项目信息修改功能 2025-07-15 11:25:06 +08:00
xy
a923978f72 控制模块数据是否展示 2025-07-11 13:46:33 +08:00
xy
40588c6cd4 APF模块询问逻辑调整 2025-07-11 13:27:40 +08:00
xy
cb76943f0f 微调 2025-07-10 14:22:18 +08:00
xy
660925df31 半月报功能优化 2025-07-10 13:23:29 +08:00
xy
0ce5840d02 代码优化 2025-07-10 11:13:35 +08:00
xy
9bd6ca43e1 代码优化 2025-07-10 10:50:13 +08:00
xy
d6056e2cac 设备登记界面查询调整 2025-07-10 10:32:05 +08:00
xy
8d8eb4d274 事件添加模块信息 2025-07-10 08:49:07 +08:00
xy
b045860a43 事件添加模块信息 2025-07-09 16:45:22 +08:00
xy
c0c3ae4e41 微调 2025-07-09 15:36:00 +08:00
xy
443adfaa37 微调 2025-07-09 15:31:11 +08:00
xy
a314b3c862 新增模块数据展示 2025-07-09 15:20:21 +08:00
xy
282a592a13 调整台账树 2025-07-09 14:08:04 +08:00
xy
0f839dfd5b 微调 2025-07-08 14:02:48 +08:00
xy
45f706475b 定时任务时间调整 2025-07-08 10:11:14 +08:00
xy
0a06d2d5eb 功能优化 2025-07-08 09:40:02 +08:00
xy
bba6da3c7d 功能优化 2025-07-07 14:57:38 +08:00
xy
71d59528a3 功能优化 2025-07-07 14:10:09 +08:00
xy
06de2121f6 描述调整 2025-07-07 10:06:18 +08:00
xy
65d39224ed 新增半月报功能 2025-07-04 10:16:53 +08:00
xy
fda83a1bd9 新增定时任务和治理数据最新时间记录 2025-07-04 08:50:28 +08:00
xy
4ee41b833b 治理设备新增模块状态查询功能 2025-07-03 08:58:12 +08:00
hzj
cd07f8bee3 批量新增设备bug修改 2025-05-21 12:18:46 +08:00
xy
58a559b7b7 bug修改 2025-05-20 10:29:47 +08:00
hzj
52342d736d 批量新增设备bug修改 2025-05-19 10:58:35 +08:00
xy
6f5ffb8395 设备列表添加mqtt连接状态属性 2025-04-28 12:42:10 +08:00
hzj
ed7c02a116 批量新增设备bug修改 2025-04-28 09:42:36 +08:00
hzj
e12d23d4e1 批量新增设备bug修改 2025-04-28 08:41:24 +08:00
xy
0965eed31b 功能调整 2025-02-13 13:13:48 +08:00
xy
f754cf61c4 微调 2025-01-13 09:58:09 +08:00
xy
e32e820417 微调 2025-01-13 09:41:23 +08:00
xy
158917f2bc 新增测试项修改功能 2025-01-09 11:52:41 +08:00
xy
2df06d9597 代码优化 2025-01-08 15:44:26 +08:00
xy
81da6e54ca DVR界面添加条件筛选 2025-01-06 19:18:30 +08:00
xy
1f4e8c7e25 设备录入添加正则判断 2025-01-03 14:40:51 +08:00
xy
f90a3228b9 bug调整 2025-01-03 13:13:28 +08:00
xy
04cdb50b13 微调 2024-12-27 11:01:48 +08:00
b377ad7c95 1.sql调整 2024-12-24 14:27:47 +08:00
hzj
698c0a6eb0 添加ndid正则校验校验 2024-12-23 15:51:59 +08:00
xy
ada760eeb2 微调 2024-12-23 14:31:03 +08:00
xy
b22bd79750 代码优化 2024-12-23 11:35:45 +08:00
hzj
5f14f8fe2f 添加各种名称校验 2024-12-23 09:44:38 +08:00
xy
b93faee241 代码优化 2024-12-20 15:08:55 +08:00
xy
2191276185 添加测试项持续时间 2024-12-20 11:51:39 +08:00
xy
2206f203e8 添加版本信息 2024-12-20 11:26:01 +08:00
xy
c28724bb05 bug调整 2024-12-19 10:29:02 +08:00
hzj
86d21f984c 修改一次值二次值bug 2024-12-18 16:23:54 +08:00
hzj
6f38ddf068 修改bug 2024-12-17 20:36:54 +08:00
d1aefa92d8 1.新增测试项查询接口 2024-12-10 16:39:52 +08:00
51a22057a9 1.新增测试项查询接口 2024-12-10 15:07:44 +08:00
8055d08bda 1.新增测试项查询接口 2024-12-10 08:42:06 +08:00
xy
8a0e0d8c08 功能优化
1.优化界面描述显示;
2.新增测试项暂态事件
2024-12-06 15:24:31 +08:00
xy
3df2bedaa6 添加监测点统计间隔 2024-12-04 17:14:37 +08:00
xy
8e4adc58d4 添加接线方式 2024-12-02 19:04:54 +08:00
xy
98e880b68d 数据处理 2024-11-29 14:39:50 +08:00
xy
327923ba44 微调 2024-11-29 08:57:39 +08:00
xy
e37ace2fd7 代码优化 2024-11-28 17:34:37 +08:00
xy
ea3cff888b 新增数据集接线方式 2024-11-28 16:40:24 +08:00
xy
1f451f9d0e 1.模板调整;
2.新增装置排序
2024-11-28 16:29:28 +08:00
xy
b6c2675311 1.治理App版本信息添加
2.准实时数据接口调整
3.设备登记调整
4.设备接入调整
2024-11-28 08:43:54 +08:00
hzj
d0c7edff8a 补招日志问题修改 2024-11-27 15:57:07 +08:00
59a2bb5e62 1.添加对外接口 2024-11-15 16:12:49 +08:00
hzj
9c2b2dbd3e 补招添加测试项 2024-11-13 15:17:26 +08:00
hzj
be4f50fbc5 补招添加测试项 2024-11-13 13:04:55 +08:00
xy
625ed864c7 微调 2024-11-12 16:42:36 +08:00
xy
10910e36e0 微调 2024-11-12 16:33:18 +08:00
hzj
49d42328ff 修改批处理 2024-11-12 16:30:34 +08:00
xy
53debdf2ef 微调 2024-11-12 16:23:56 +08:00
xy
be6b29cbb7 微调 2024-11-12 14:59:53 +08:00
xy
c72882d023 微调 2024-11-12 14:42:44 +08:00
xy
5022aff834 微调 2024-11-12 14:33:27 +08:00
hzj
b2511aaaf5 将暂态文件路径:换成- 2024-11-12 13:32:10 +08:00
xy
75f07ac86f 实时数据调整 2024-11-12 13:19:33 +08:00
hzj
00b16325d6 数据解析bug 2024-11-11 16:11:53 +08:00
hzj
e09232dc55 接谐波解析bug 2024-11-11 15:50:22 +08:00
hzj
b8157f94c9 线电压项别错误 2024-11-11 14:44:49 +08:00
xy
5c50e18fc9 文件下载bug消缺 2024-11-08 14:05:39 +08:00
hzj
4b8e2488d2 添加告警,设备事件查询 2024-11-06 15:01:12 +08:00
hzj
a4acc4775a 添加告警,设备事件查询 2024-11-06 11:12:42 +08:00
hzj
c4803846a4 拓扑图数据展示 2024-11-05 10:48:46 +08:00
xy
66c54ac3eb 1.优化数据单位显示
2.优化补召功能
3.监测点数据完整性及装置在线率(未开发完)
2024-11-04 20:44:56 +08:00
hzj
ce861e1804 bug修改 2024-11-01 14:41:46 +08:00
xy
35d44dcc08 代码优化
1.公共方法提取
2.装置类型判断
2024-11-01 11:20:09 +08:00
xy
c3d87eca34 bug调整 2024-10-31 15:44:14 +08:00
xy
86c6c95777 bug调整 2024-10-31 14:07:52 +08:00
xy
f9d696faad bug调整 2024-10-31 13:42:53 +08:00
xy
c325301a8f bug调整 2024-10-30 16:09:20 +08:00
hzj
014370062a 波形下载接口开发 2024-10-30 11:28:41 +08:00
hzj
ada65fd40d 离线数据上传bug 2024-10-29 16:27:40 +08:00
hzj
a940d3961a 离线数据上传bug 2024-10-29 16:01:04 +08:00
hzj
4b7a60190c 历史趋势图添加二次值 2024-10-24 20:00:55 +08:00
xy
c0be7629dd 数据显示优化 2024-10-24 16:38:41 +08:00
hzj
5f82f65b8f 趋势图bug修改 2024-10-23 20:10:00 +08:00
xy
4e0b4b6b90 添加文件时间 2024-10-23 18:43:22 +08:00
hzj
ca9193b861 修改报表 2024-10-23 10:25:19 +08:00
hzj
469a4ba63e 组态bug修改 2024-10-23 08:48:33 +08:00
hzj
4316e72521 组态bug修改 2024-10-22 20:45:19 +08:00
hzj
f942be74f1 测试项限值生成 2024-10-22 18:11:34 +08:00
xy
b750064b16 微调 2024-10-22 10:39:55 +08:00
xy
b7c9cd2ee0 补召优化 2024-10-21 19:59:13 +08:00
hzj
6cca1cc74d 修改bug 2024-10-21 15:33:31 +08:00
hzj
a83ab8b141 修改bug 2024-10-21 11:40:33 +08:00
hzj
edc2453da2 修改bug 2024-10-17 13:53:06 +08:00
xy
cbc301da5f pom文件提交 2024-10-17 13:45:15 +08:00
xy
4142de1fcf 设备树调整 2024-10-17 10:10:23 +08:00
xy
78b9a98ab8 模板数据、设备信息初始化至内存 2024-10-16 18:53:19 +08:00
hzj
5169669b2b Merge remote-tracking branch 'origin/master' 2024-10-16 10:51:26 +08:00
hzj
10e0e96b65 修改bug 2024-10-16 10:50:58 +08:00
xy
cd35e67007 设备树显示调整 2024-10-16 10:32:40 +08:00
xy
eb7a1d9beb 优化 2024-10-15 18:30:27 +08:00
hzj
3059f5ac75 修改bug 2024-10-15 15:04:28 +08:00
hzj
346afef6d0 修改bug 2024-10-15 14:24:05 +08:00
hzj
2cf47ec3b3 修改bug 2024-10-15 12:30:59 +08:00
xy
83199f07b6 无线系统补召功能调整 2024-10-15 11:12:05 +08:00
hzj
8295801f16 修改bug 2024-10-11 19:19:57 +08:00
xy
306b426573 无线系统实时数据功能 2024-10-11 18:17:38 +08:00
hzj
3a60a05ea2 修改告警展示页面 2024-10-10 10:40:59 +08:00
xy
86108004d5 解决启动报错 2024-10-09 16:06:20 +08:00
xy
5ef232a485 模板适配调整 2024-10-09 14:57:29 +08:00
05112b5262 1.数据方案修改 2024-10-09 11:38:02 +08:00
hzj
2ca4ee702b 添加波形路径用于判断是否展示波形 2024-10-09 09:28:17 +08:00
xy
c95c1271c2 模板调整适配 2024-10-09 09:25:41 +08:00
hzj
105a5314cb 离线数据上传 2024-10-08 20:51:58 +08:00
416 changed files with 35590 additions and 1238 deletions

View File

@@ -112,7 +112,7 @@
<dependency>
<groupId>com.njcn</groupId>
<artifactId>pqs-influx</artifactId>
<version>0.0.1-SNAPSHOT</version>
<version>1.0.0</version>
</dependency>
</dependencies>
<build>

View File

@@ -35,12 +35,6 @@
<artifactId>common-microservice</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
<groupId>com.njcn</groupId>
<artifactId>cs-warn-api</artifactId>
<version>1.0.0</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>com.njcn</groupId>
<artifactId>user-api</artifactId>
@@ -59,6 +53,12 @@
<artifactId>common-device-biz</artifactId>
<version>1.0.0</version>
</dependency>
<dependency>
<groupId>cn.afterturn</groupId>
<artifactId>easypoi-base</artifactId>
<version>4.4.0</version>
<scope>compile</scope>
</dependency>
</dependencies>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>

View File

@@ -22,4 +22,13 @@ public interface CsCommTerminalFeignClient {
@GetMapping("lineUnitDetail")
HttpResult<PqsDeviceUnit> lineUnitDetail(@RequestParam("lineId") String lineId);
@GetMapping("getDevIdsByUser")
HttpResult<List<String>> getDevIdsByUser(@RequestParam("userId") String userId);
@GetMapping("getLineIdsByUser")
HttpResult<List<String>> getLineIdsByUser(@RequestParam("userId") String userId);
@GetMapping("getPqUserIdsByUser")
HttpResult<List<String>> getPqUserIdsByUser(@RequestParam("userId") String userId);
}

View File

@@ -0,0 +1,20 @@
package com.njcn.csdevice.api;
import com.njcn.common.pojo.constant.ServerInfo;
import com.njcn.common.pojo.response.HttpResult;
import com.njcn.csdevice.api.fallback.CsCommunicateFeignClientFallbackFactory;
import com.njcn.csdevice.pojo.dto.PqsCommunicateDto;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
/**
* @author xy
*/
@FeignClient(value = ServerInfo.CS_DEVICE_BOOT, path = "/pqsCommunicate", fallbackFactory = CsCommunicateFeignClientFallbackFactory.class,contextId = "pqsCommunicate")
public interface CsCommunicateFeignClient {
@PostMapping("/insertion")
HttpResult<String> insertion(@RequestBody PqsCommunicateDto pqsCommunicateDto);
}

View File

@@ -3,6 +3,7 @@ package com.njcn.csdevice.api;
import com.njcn.common.pojo.constant.ServerInfo;
import com.njcn.common.pojo.response.HttpResult;
import com.njcn.csdevice.api.fallback.CsDeviceUserClientFallbackFactory;
import com.njcn.csdevice.pojo.param.UserDevParam;
import com.njcn.csdevice.pojo.po.CsDeviceUserPO;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.PostMapping;
@@ -22,4 +23,10 @@ public interface CsDeviceUserFeignClient {
@PostMapping("/findUserById")
HttpResult<List<String>> findUserById(@RequestParam("id") String id);
@PostMapping("/findDevByUserId")
HttpResult<List<String>> findDevByUserId(@RequestParam("id") String id);
@PostMapping("/channelDevByUserId")
HttpResult<List<String>> channelDevByUserId(@RequestBody UserDevParam param);
}

View File

@@ -8,7 +8,6 @@ import com.njcn.csdevice.pojo.dto.LineParamDTO;
import com.njcn.csdevice.pojo.param.CsLedgerParam;
import com.njcn.csdevice.pojo.po.CsLedger;
import com.njcn.csdevice.pojo.vo.CsLedgerVO;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiOperation;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.validation.annotation.Validated;
@@ -39,4 +38,19 @@ public interface CsLedgerFeignClient {
@PostMapping("/deviceTree")
@ApiOperation("三层设备树(装置层)")
HttpResult<List<CsLedgerVO>> getDeviceTree();
}
@PostMapping("/getAllLedger")
HttpResult<List<CsLedgerVO>> getAllLedger();
@PostMapping("/getInfoByIds")
HttpResult<List<DevDetailDTO>> getInfoByIds(@RequestBody @Validated List<String> list);
@PostMapping("/getDevInfoByEngineerIds")
@ApiOperation("根据工程获取设备信息")
HttpResult<List<DevDetailDTO>> getDevInfoByEngineerIds(@RequestBody @Validated List<String> list);
@PostMapping("/getEngineeringHaveDevs")
@ApiOperation("根据工程信息获取有设备的工程")
HttpResult<List<DevDetailDTO>> getEngineeringHaveDevs(@RequestBody @Validated List<String> list);
}

View File

@@ -1,11 +1,19 @@
package com.njcn.csdevice.api;
import com.njcn.common.pojo.annotation.OperateInfo;
import com.njcn.common.pojo.constant.ServerInfo;
import com.njcn.common.pojo.enums.common.LogEnum;
import com.njcn.common.pojo.enums.response.CommonResponseEnum;
import com.njcn.common.pojo.response.HttpResult;
import com.njcn.common.utils.HttpResultUtil;
import com.njcn.csdevice.api.fallback.CsLineClientFallbackFactory;
import com.njcn.csdevice.pojo.param.CsLineParam;
import com.njcn.csdevice.pojo.po.CsLinePO;
import com.njcn.csdevice.pojo.vo.LineDetailDataVO;
import com.njcn.device.biz.pojo.po.Overlimit;
import io.swagger.annotations.ApiOperation;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestParam;
@@ -18,7 +26,6 @@ import java.util.List;
@FeignClient(value = ServerInfo.CS_DEVICE_BOOT, path = "/csline", fallbackFactory = CsLineClientFallbackFactory.class,contextId = "csline")
public interface CsLineFeignClient {
@PostMapping("/queryLineById")
HttpResult<List<CsLinePO>> queryLineById(@RequestParam("ids") List<String> ids );
@@ -36,4 +43,36 @@ public interface CsLineFeignClient {
@PostMapping("/updateLine")
HttpResult<String> updateLine(@RequestBody CsLineParam csLineParam);
@PostMapping("/updateIds")
HttpResult<Boolean> updateIds(@RequestBody @Validated CsLineParam csLineParam);
@PostMapping("/getById")
HttpResult<CsLinePO> getById(@RequestParam("lineId") String lineId);
@PostMapping("/getLinesByDevList")
HttpResult<List<CsLinePO>> getLinesByDevList(@RequestBody List<String> ids);
@PostMapping("/updateLineDataByList")
HttpResult<String> updateDataByList(@RequestParam("list") List<String> list, @RequestParam("id") String id, @RequestParam("setId") String setId);
@PostMapping("/getLineByName")
HttpResult<List<CsLinePO>> getLineByName(@RequestParam("lineName") String lineName);
@PostMapping("/getAllLine")
HttpResult<List<String>> getAllLine();
@PostMapping("/getOverLimitDataByIds")
HttpResult<List<Overlimit>> getOverLimitData(@RequestBody List<String> ids);
@PostMapping("/getLineBySensitiveUser")
@ApiOperation("根据敏感用户查询监测点")
HttpResult<List<CsLinePO>> getLineBySensitiveUser(@RequestBody List<String> list);
@PostMapping("/list")
HttpResult<List<CsLinePO>> list(@RequestBody CsLinePO param);
@PostMapping("/getLineDetailData")
HttpResult<LineDetailDataVO> getLineDetailData(@RequestParam("id") String id);
}

View File

@@ -0,0 +1,39 @@
package com.njcn.csdevice.api;
import com.njcn.common.pojo.constant.ServerInfo;
import com.njcn.common.pojo.response.HttpResult;
import com.njcn.csdevice.api.fallback.CsOverLimitFallbackFactory;
import com.njcn.csdevice.pojo.po.Overlimit;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import java.util.List;
import java.util.Map;
/**
* 监测点数据完整性
* @author cdf
* @date 2023/6/7
*/
@FeignClient(value = ServerInfo.CS_DEVICE_BOOT,
path = "/overLimit",
fallbackFactory = CsOverLimitFallbackFactory.class,contextId = "overLimit")
public interface CsOverLimitClient {
/**
*
* @author cdf
* @date 2023/6/7
*/
@PostMapping("/getOverLimitByLineIds")
HttpResult<List<Overlimit>> getOverLimitByLineIds(@RequestBody List<String> lineIds);
/**
*
* @author cdf
* @date 2023/6/7
*/
@PostMapping("/getLimitMapsByLineIds")
HttpResult<List<Map<String, Object>>> getLimitMapsByLineIds(@RequestBody List<String> lineIds);
}

View File

@@ -0,0 +1,20 @@
package com.njcn.csdevice.api;
import com.njcn.common.pojo.constant.ServerInfo;
import com.njcn.common.pojo.response.HttpResult;
import com.njcn.csdevice.api.fallback.CsTerminalLogsClientFallbackFactory;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestParam;
/**
* @author xy
*/
@FeignClient(value = ServerInfo.CS_DEVICE_BOOT, path = "/csTerminalLogs", fallbackFactory = CsTerminalLogsClientFallbackFactory.class,contextId = "csTerminalLogs")
public interface CsTerminalLogsFeignClient {
@PostMapping("/updateLaterData")
HttpResult<String> updateLaterData(@RequestParam("id") String id, @RequestParam("code") String code);
}

View File

@@ -0,0 +1,30 @@
package com.njcn.csdevice.api;
import com.njcn.common.pojo.constant.ServerInfo;
import com.njcn.common.pojo.response.HttpResult;
import com.njcn.csdevice.api.fallback.CsTerminalReplyClientFallbackFactory;
import com.njcn.csdevice.param.IcdBzReplyParam;
import io.swagger.annotations.ApiOperation;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
/**
* @author xy
*/
@FeignClient(value = ServerInfo.CS_DEVICE_BOOT, path = "/csTerminalReply", fallbackFactory = CsTerminalReplyClientFallbackFactory.class,contextId = "csTerminalReply")
public interface CsTerminalReplyFeignClient {
@PostMapping("/updateData")
@ApiOperation("更新推送结果")
HttpResult<String> updateData(@RequestBody @Validated IcdBzReplyParam param);
@PostMapping("/updateBzData")
@ApiOperation("更新补召推送结果")
HttpResult<String> updateBzData(@RequestBody @Validated IcdBzReplyParam param);
}

View File

@@ -5,7 +5,6 @@ import com.njcn.common.pojo.response.HttpResult;
import com.njcn.csdevice.api.fallback.DataArrayFeignClientFallbackFactory;
import com.njcn.csdevice.pojo.param.DataArrayParam;
import com.njcn.csdevice.pojo.po.CsDataArray;
import com.njcn.csdevice.pojo.po.CsDataSet;
import com.njcn.csdevice.pojo.vo.DataArrayTreeVO;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.PostMapping;
@@ -22,13 +21,14 @@ import java.util.List;
public interface DataArrayFeignClient {
@PostMapping("/getArrayBySet")
HttpResult<List<CsDataArray>> getArrayBySet(@RequestBody List<CsDataSet> setList);
HttpResult<List<CsDataArray>> getArrayBySet(@RequestParam("dataSet") String dataSet);
@PostMapping("/getDataArray")
HttpResult<List<DataArrayTreeVO>> getDataArray(@RequestBody List<String> dataSetList);
@PostMapping("/getDataArrayById")
HttpResult<List<CsDataArray>> getDataArrayById(@RequestParam("pid") String pid, @RequestParam("name") String name);
@PostMapping("/getDataArrayByIds")
HttpResult<List<CsDataArray>> getDataArrayByIds(@RequestParam("ids") List<String> ids);

View File

@@ -31,5 +31,13 @@ public interface DataSetFeignClient {
@PostMapping("/getDataSetBySetIds")
HttpResult<List<CsDataSet>> getDataSetBySetIds(@RequestBody List<String> lineIds);
@PostMapping("/getBaseDataSet")
HttpResult<CsDataSet> getBaseDataSet(@RequestParam("modelId") String modelId,@RequestParam("clDev") Integer clDev);
@PostMapping("/getHarmonicDataSet")
HttpResult<CsDataSet> getHarmonicDataSet(@RequestParam("modelId") String modelId,@RequestParam("clDev") Integer clDev,@RequestParam("target") Integer target);
@PostMapping("/getDataSetByIdx")
HttpResult<CsDataSet> getDataSetByIdx(@RequestParam("modelId") String modelId,@RequestParam("idx") Integer idx);
}

View File

@@ -28,4 +28,7 @@ public interface DevModelRelationFeignClient {
@PostMapping("/getModelByType")
HttpResult<String> getModelByType(@RequestParam("devId") String devId, @RequestParam("type") Integer type);
@PostMapping("/updateDataByList")
HttpResult<String> updateDataByList(@RequestParam("list") List<String> list, @RequestParam("id") String id);
}

View File

@@ -10,10 +10,13 @@ import com.njcn.csdevice.api.fallback.EquipmentFeignClientFallbackFactory;
import com.njcn.csdevice.pojo.dto.CsEquipmentDeliveryDTO;
import com.njcn.csdevice.pojo.po.CsEquipmentDeliveryPO;
import com.njcn.csdevice.pojo.vo.CsEquipmentDeliveryVO;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestParam;
import springfox.documentation.annotations.ApiIgnore;
import java.util.List;
@@ -58,4 +61,16 @@ public interface EquipmentFeignClient {
@PostMapping("/getAll")
HttpResult<List<CsEquipmentDeliveryPO>> getAll();
@PostMapping("/judgeDevModel")
HttpResult<Boolean> judgeDevModel(@RequestParam("nDid") String nDid);
@PostMapping("/getDevByLineId")
HttpResult<CsEquipmentDeliveryPO> getDevByLineId(@RequestParam("lineId") String lineId);
@PostMapping("/updateCldDevStatus")
HttpResult<Boolean> updateCldDevStatus(@RequestParam("nodeId") String nodeId, @RequestParam("processNo") Integer processNo);
@PostMapping("/flipCldDevStatus")
HttpResult<Boolean> flipCldDevStatus(@RequestParam("devId") String devId, @RequestParam("status") Integer status);
}

View File

@@ -0,0 +1,29 @@
package com.njcn.csdevice.api;
import com.njcn.common.pojo.constant.ServerInfo;
import com.njcn.common.pojo.response.HttpResult;
import com.njcn.csdevice.api.fallback.CsTerminalLogsClientFallbackFactory;
import com.njcn.csdevice.api.fallback.IcdFallbackFactory;
import com.njcn.csdevice.param.IcdBzParam;
import io.swagger.annotations.ApiOperation;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
/**
* @author xy
*/
@FeignClient(value = ServerInfo.CS_DEVICE_BOOT, path = "/icd", fallbackFactory = IcdFallbackFactory.class,contextId = "icd")
public interface IcdFeignClient {
@PostMapping("/bzEvent")
@ApiOperation("补召事件")
HttpResult<String> bzEvent(@RequestBody @Validated IcdBzParam param);
@PostMapping("/bzFile")
@ApiOperation("补召波形")
HttpResult<String> bzFile(@RequestBody @Validated IcdBzParam param);
}

View File

@@ -0,0 +1,23 @@
package com.njcn.csdevice.api;
import com.njcn.common.pojo.constant.ServerInfo;
import com.njcn.common.pojo.response.HttpResult;
import com.njcn.csdevice.api.fallback.IntegrityClientFallbackFactory;
import com.njcn.csdevice.pojo.po.RStatIntegrityD;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestParam;
import java.util.List;
/**
* @author xy
*/
@FeignClient(value = ServerInfo.CS_DEVICE_BOOT, path = "/rStatIntegrityD", fallbackFactory = IntegrityClientFallbackFactory.class,contextId = "rStatIntegrityD")
public interface IntegrityFeignClient {
@PostMapping("/list")
HttpResult<List<RStatIntegrityD>> list(@Validated @RequestParam("list") List<String> list, @RequestParam("startTime") String startTime, @RequestParam("endTime") String endTime);
}

View File

@@ -0,0 +1,24 @@
package com.njcn.csdevice.api;
import com.njcn.common.pojo.constant.ServerInfo;
import com.njcn.common.pojo.response.HttpResult;
import com.njcn.csdevice.api.fallback.NodeFallbackFactory;
import com.njcn.csdevice.pojo.po.Node;
import io.swagger.annotations.ApiOperation;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.GetMapping;
import java.util.List;
/**
* @author xy
*/
@FeignClient(value = ServerInfo.CS_DEVICE_BOOT, path = "/node", fallbackFactory = NodeFallbackFactory.class,contextId = "node")
public interface NodeFeignClient {
@ApiOperation("获取全部前置机")
@GetMapping("/nodeAllList")
HttpResult<List<Node>> nodeAllList();
}

View File

@@ -0,0 +1,23 @@
package com.njcn.csdevice.api;
import com.njcn.common.pojo.constant.ServerInfo;
import com.njcn.common.pojo.response.HttpResult;
import com.njcn.csdevice.api.fallback.onlineRateClientFallbackFactory;
import com.njcn.csdevice.pojo.po.RStatOnlineRateD;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestParam;
import java.util.List;
/**
* @author xy
*/
@FeignClient(value = ServerInfo.CS_DEVICE_BOOT, path = "/rStatOnlineRateD", fallbackFactory = onlineRateClientFallbackFactory.class,contextId = "rStatOnlineRateD")
public interface OnlineRateFeignClient {
@PostMapping("/list")
HttpResult<List<RStatOnlineRateD>> list(@Validated @RequestParam("list") List<String> list, @RequestParam("startTime") String startTime, @RequestParam("endTime") String endTime);
}

View File

@@ -5,10 +5,13 @@ import com.njcn.common.pojo.response.HttpResult;
import com.njcn.csdevice.api.fallback.WlRecordClientFallbackFactory;
import com.njcn.csdevice.pojo.param.WlRecordParam;
import com.njcn.csdevice.pojo.po.WlRecord;
import com.njcn.csdevice.pojo.vo.RecordVo;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestParam;
import java.util.List;
@@ -41,4 +44,17 @@ public interface WlRecordFeignClient {
@PostMapping("/updateTestRecord")
HttpResult<Boolean> updateTestRecord(@RequestBody @Validated WlRecordParam.UpdateRecord record);
@PostMapping("/dayDealNoEndTimeEvent")
void dayDealNoEndTimeEvent(@RequestParam("date") String date);
@GetMapping("/getWlAssByWlId")
HttpResult<List<WlRecord>> getWlAssByWlId(@RequestParam("wlId")String wlId);
@PostMapping("/findDevBaseDataByLineId")
HttpResult<List<RecordVo>> findDevBaseDataByLineId(@RequestBody @Validated WlRecordParam.lineRecord param);
@GetMapping("/getTestRecordById")
HttpResult<RecordVo.RecordItemVo> getTestRecordById(@RequestParam("testRecordId") @Validated String testRecordId);
}

View File

@@ -9,6 +9,8 @@ import feign.hystrix.FallbackFactory;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component;
import java.util.List;
/**
* @author xy
*/
@@ -31,6 +33,24 @@ public class CsCommTerminalFeignClientFallbackFactory implements FallbackFactory
log.error("{}异常,降级处理,异常为:{}","查询分组",cause.toString());
throw new BusinessException(finalExceptionEnum);
}
@Override
public HttpResult<List<String>> getDevIdsByUser(String userId) {
log.error("{}异常,降级处理,异常为:{}","根据登录用户id获取用户所有设备id集合",cause.toString());
throw new BusinessException(finalExceptionEnum);
}
@Override
public HttpResult<List<String>> getLineIdsByUser(String userId) {
log.error("{}异常,降级处理,异常为:{}","根据登录用户id获取用户所有监测点id集合",cause.toString());
throw new BusinessException(finalExceptionEnum);
}
@Override
public HttpResult<List<String>> getPqUserIdsByUser(String userId) {
log.error("{}异常,降级处理,异常为:{}","根据登录用户id获取电能质量用户id集合",cause.toString());
throw new BusinessException(finalExceptionEnum);
}
};
}
}

View File

@@ -0,0 +1,40 @@
package com.njcn.csdevice.api.fallback;
import com.njcn.common.pojo.enums.response.CommonResponseEnum;
import com.njcn.common.pojo.exception.BusinessException;
import com.njcn.common.pojo.response.HttpResult;
import com.njcn.csdevice.api.CsCommunicateFeignClient;
import com.njcn.csdevice.pojo.dto.PqsCommunicateDto;
import com.njcn.csdevice.utils.CsDeviceEnumUtil;
import feign.hystrix.FallbackFactory;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component;
/**
* 类的介绍:
*
* @author xuyang
* @version 1.0.0
* @createTime 2023/4/10 20:09
*/
@Slf4j
@Component
public class CsCommunicateFeignClientFallbackFactory implements FallbackFactory<CsCommunicateFeignClient> {
@Override
public CsCommunicateFeignClient create(Throwable cause) {
//判断抛出异常是否为解码器抛出的业务异常
Enum<?> exceptionEnum = CommonResponseEnum.SERVICE_FALLBACK;
if (cause.getCause() instanceof BusinessException) {
BusinessException businessException = (BusinessException) cause.getCause();
exceptionEnum = CsDeviceEnumUtil.getExceptionEnum(businessException.getResult());
}
Enum<?> finalExceptionEnum = exceptionEnum;
return new CsCommunicateFeignClient() {
@Override
public HttpResult<String> insertion(PqsCommunicateDto pqsCommunicateDto) {
log.error("{}异常,降级处理,异常为:{}","新增记录",cause.toString());
throw new BusinessException(finalExceptionEnum);
}
};
}
}

View File

@@ -4,6 +4,7 @@ import com.njcn.common.pojo.enums.response.CommonResponseEnum;
import com.njcn.common.pojo.exception.BusinessException;
import com.njcn.common.pojo.response.HttpResult;
import com.njcn.csdevice.api.CsDeviceUserFeignClient;
import com.njcn.csdevice.pojo.param.UserDevParam;
import com.njcn.csdevice.pojo.po.CsDeviceUserPO;
import feign.hystrix.FallbackFactory;
import lombok.extern.slf4j.Slf4j;
@@ -38,6 +39,18 @@ public class CsDeviceUserClientFallbackFactory implements FallbackFactory<CsDevi
throw new BusinessException(finalExceptionEnum);
}
@Override
public HttpResult<List<String>> findDevByUserId(String id) {
log.error("{}异常,降级处理,异常为:{}","根据用户Id查询设备集合",cause.toString());
throw new BusinessException(finalExceptionEnum);
}
@Override
public HttpResult<List<String>> channelDevByUserId(UserDevParam param) {
log.error("{}异常,降级处理,异常为:{}","根据用户Id解绑设备集合异常",cause.toString());
throw new BusinessException(finalExceptionEnum);
}
};
}
}

View File

@@ -62,6 +62,30 @@ public class CsLedgerFeignClientFallbackFactory implements FallbackFactory<CsLed
log.error("{}异常,降级处理,异常为:{}","查询设备树",cause.toString());
throw new BusinessException(finalExceptionEnum);
}
@Override
public HttpResult<List<CsLedgerVO>> getAllLedger() {
log.error("{}异常,降级处理,异常为:{}","获取台账树所有数据",cause.toString());
throw new BusinessException(finalExceptionEnum);
}
@Override
public HttpResult<List<DevDetailDTO>> getInfoByIds(List<String> list) {
log.error("{}异常,降级处理,异常为:{}","根据设备集合查询工程,设备信息",cause.toString());
throw new BusinessException(finalExceptionEnum);
}
@Override
public HttpResult<List<DevDetailDTO>> getDevInfoByEngineerIds(List<String> list) {
log.error("{}异常,降级处理,异常为:{}","根据工程获取设备信息",cause.toString());
throw new BusinessException(finalExceptionEnum);
}
@Override
public HttpResult<List<DevDetailDTO>> getEngineeringHaveDevs(List<String> list) {
log.error("{}异常,降级处理,异常为:{}","根据工程获取设备信息",cause.toString());
throw new BusinessException(finalExceptionEnum);
}
};
}
}

View File

@@ -6,9 +6,12 @@ import com.njcn.common.pojo.response.HttpResult;
import com.njcn.csdevice.api.CsLineFeignClient;
import com.njcn.csdevice.pojo.param.CsLineParam;
import com.njcn.csdevice.pojo.po.CsLinePO;
import com.njcn.csdevice.pojo.vo.LineDetailDataVO;
import com.njcn.device.biz.pojo.po.Overlimit;
import feign.hystrix.FallbackFactory;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component;
import org.springframework.web.bind.annotation.RequestParam;
import java.util.List;
@@ -28,7 +31,6 @@ public class CsLineClientFallbackFactory implements FallbackFactory<CsLineFeignC
Enum<?> finalExceptionEnum = exceptionEnum;
return new CsLineFeignClient() {
@Override
public HttpResult<List<CsLinePO>> queryLineById(List<String> ids) {
log.error("{}异常,降级处理,异常为:{}","查询监测点详情异常",cause.toString());
@@ -63,6 +65,65 @@ public class CsLineClientFallbackFactory implements FallbackFactory<CsLineFeignC
log.error("{}异常,降级处理,异常为:{}","更新监测点信息",cause.toString());
throw new BusinessException(finalExceptionEnum);
}
@Override
public HttpResult<Boolean> updateIds(CsLineParam csLineParam) {
log.error("{}异常,降级处理,异常为:{}","修改监测点模板id和数据集id",cause.toString());
throw new BusinessException(finalExceptionEnum);
}
@Override
public HttpResult<CsLinePO> getById(String lineId) {
log.error("{}异常,降级处理,异常为:{}","根据监测点id获取监测点详情",cause.toString());
throw new BusinessException(finalExceptionEnum);
}
@Override
public HttpResult<List<CsLinePO>> getLinesByDevList(List<String> ids) {
log.error("{}异常,降级处理,异常为:{}","根据装置id集合获取监测点id集合",cause.toString());
throw new BusinessException(finalExceptionEnum);
}
@Override
public HttpResult<String> updateDataByList(List<String> list, String id, String setId) {
log.error("{}异常,降级处理,异常为:{}","根据装置集合修改监测点信息",cause.toString());
throw new BusinessException(finalExceptionEnum);
}
@Override
public HttpResult<List<String>> getAllLine() {
log.error("{}异常,降级处理,异常为:{}","获取所有监测点id",cause.toString());
throw new BusinessException(finalExceptionEnum);
}
@Override
public HttpResult<List<Overlimit>> getOverLimitData(List<String> ids) {
log.error("{}异常,降级处理,异常为:{}","根据监测点id集合获取国标限值异常",cause.toString());
throw new BusinessException(finalExceptionEnum);
}
@Override
public HttpResult<List<CsLinePO>> getLineBySensitiveUser(List<String> list) {
log.error("{}异常,降级处理,异常为:{}","根据敏感用户查询监测点异常",cause.toString());
throw new BusinessException(finalExceptionEnum);
}
@Override
public HttpResult<List<CsLinePO>> getLineByName(String lineName) {
log.error("{}异常,降级处理,异常为:{}","根据名称查询监测点异常",cause.toString());
throw new BusinessException(finalExceptionEnum);
}
@Override
public HttpResult<List<CsLinePO>> list(CsLinePO param) {
log.error("{}异常,降级处理,异常为:{}","查询监测点列表异常",cause.toString());
throw new BusinessException(finalExceptionEnum);
}
@Override
public HttpResult<LineDetailDataVO> getLineDetailData(@RequestParam("id") String id) {
log.error("{}异常,降级处理,异常为:{}","查询监测点详情异常",cause.toString());
throw new BusinessException(finalExceptionEnum);
}
};
}
}

View File

@@ -0,0 +1,49 @@
package com.njcn.csdevice.api.fallback;
import com.njcn.common.pojo.enums.response.CommonResponseEnum;
import com.njcn.common.pojo.exception.BusinessException;
import com.njcn.common.pojo.response.HttpResult;
import com.njcn.csdevice.api.CsOverLimitClient;
import com.njcn.csdevice.pojo.po.Overlimit;
import com.njcn.device.biz.utils.DeviceEnumUtil;
import feign.hystrix.FallbackFactory;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component;
import java.util.List;
import java.util.Map;
/**
* 告警管理熔断降级
* @author yzh
* @date 2022/9/19
*/
@Slf4j
@Component
public class CsOverLimitFallbackFactory implements FallbackFactory<CsOverLimitClient> {
@Override
public CsOverLimitClient create(Throwable throwable) {
//判断抛出异常是否为解码器抛出的业务异常
Enum<?> exceptionEnum = CommonResponseEnum.SERVICE_FALLBACK;
if (throwable.getCause() instanceof BusinessException) {
BusinessException businessException = (BusinessException) throwable.getCause();
exceptionEnum = DeviceEnumUtil.getExceptionEnum(businessException.getResult());
}
Enum<?> finalExceptionEnum = exceptionEnum;
return new CsOverLimitClient() {
@Override
public HttpResult<List<Overlimit>> getOverLimitByLineIds(List<String> lineIds) {
log.error("{}异常,降级处理,异常为:{}", "监测点限值", throwable.toString());
throw new BusinessException(finalExceptionEnum);
}
@Override
public HttpResult<List<Map<String, Object>>> getLimitMapsByLineIds(List<String> lineIds) {
log.error("{}异常,降级处理,异常为:{}", "获取监测点限值map", throwable.toString());
throw new BusinessException(finalExceptionEnum);
}
};
}
}

View File

@@ -0,0 +1,33 @@
package com.njcn.csdevice.api.fallback;
import com.njcn.common.pojo.enums.response.CommonResponseEnum;
import com.njcn.common.pojo.exception.BusinessException;
import com.njcn.common.pojo.response.HttpResult;
import com.njcn.csdevice.api.CsTerminalLogsFeignClient;
import feign.hystrix.FallbackFactory;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component;
/**
* @author xy
*/
@Slf4j
@Component
public class CsTerminalLogsClientFallbackFactory implements FallbackFactory<CsTerminalLogsFeignClient> {
@Override
public CsTerminalLogsFeignClient create(Throwable cause) {
//判断抛出异常是否为解码器抛出的业务异常
Enum<?> exceptionEnum = CommonResponseEnum.SERVICE_FALLBACK;
if (cause.getCause() instanceof BusinessException) {
BusinessException businessException = (BusinessException) cause.getCause();
}
Enum<?> finalExceptionEnum = exceptionEnum;
return new CsTerminalLogsFeignClient() {
@Override
public HttpResult<String> updateLaterData(String id, String code) {
log.error("{}异常,降级处理,异常为:{}","更新最新一组数据的推送状态",cause.toString());
throw new BusinessException(finalExceptionEnum);
}
};
}
}

View File

@@ -0,0 +1,41 @@
package com.njcn.csdevice.api.fallback;
import com.njcn.common.pojo.enums.response.CommonResponseEnum;
import com.njcn.common.pojo.exception.BusinessException;
import com.njcn.common.pojo.response.HttpResult;
import com.njcn.csdevice.api.CsTerminalReplyFeignClient;
import com.njcn.csdevice.param.IcdBzReplyParam;
import feign.hystrix.FallbackFactory;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component;
/**
* @author xy
*/
@Slf4j
@Component
public class CsTerminalReplyClientFallbackFactory implements FallbackFactory<CsTerminalReplyFeignClient> {
@Override
public CsTerminalReplyFeignClient create(Throwable cause) {
//判断抛出异常是否为解码器抛出的业务异常
Enum<?> exceptionEnum = CommonResponseEnum.SERVICE_FALLBACK;
if (cause.getCause() instanceof BusinessException) {
BusinessException businessException = (BusinessException) cause.getCause();
}
Enum<?> finalExceptionEnum = exceptionEnum;
return new CsTerminalReplyFeignClient() {
@Override
public HttpResult<String> updateData(IcdBzReplyParam param) {
log.error("{}异常,降级处理,异常为:{}","更新推送结果异常",cause.toString());
throw new BusinessException(finalExceptionEnum);
}
@Override
public HttpResult<String> updateBzData(IcdBzReplyParam param) {
log.error("{}异常,降级处理,异常为:{}","更新补召推送结果异常",cause.toString());
throw new BusinessException(finalExceptionEnum);
}
};
}
}

View File

@@ -6,7 +6,6 @@ import com.njcn.common.pojo.response.HttpResult;
import com.njcn.csdevice.api.DataArrayFeignClient;
import com.njcn.csdevice.pojo.param.DataArrayParam;
import com.njcn.csdevice.pojo.po.CsDataArray;
import com.njcn.csdevice.pojo.po.CsDataSet;
import com.njcn.csdevice.pojo.vo.DataArrayTreeVO;
import com.njcn.csdevice.utils.CsDeviceEnumUtil;
import feign.hystrix.FallbackFactory;
@@ -36,7 +35,7 @@ public class DataArrayFeignClientFallbackFactory implements FallbackFactory<Data
Enum<?> finalExceptionEnum = exceptionEnum;
return new DataArrayFeignClient() {
@Override
public HttpResult<List<CsDataArray>> getArrayBySet(List<CsDataSet> setList) {
public HttpResult<List<CsDataArray>> getArrayBySet(String dataSet) {
log.error("{}异常,降级处理,异常为:{}","根据数据集获取详细数据失败",cause.toString());
throw new BusinessException(finalExceptionEnum);
}

View File

@@ -56,6 +56,24 @@ public class DataSetFeignClientFallbackFactory implements FallbackFactory<DataSe
log.error("{}异常,降级处理,异常为:{}","根据数据集ids获取数据集",cause.toString());
throw new BusinessException(finalExceptionEnum);
}
@Override
public HttpResult<CsDataSet> getBaseDataSet(String modelId, Integer clDev) {
log.error("{}异常,降级处理,异常为:{}","获取实时数据-基础数据集",cause.toString());
throw new BusinessException(finalExceptionEnum);
}
@Override
public HttpResult<CsDataSet> getHarmonicDataSet(String modelId, Integer clDev, Integer target) {
log.error("{}异常,降级处理,异常为:{}","获取实时数据-谐波数据集",cause.toString());
throw new BusinessException(finalExceptionEnum);
}
@Override
public HttpResult<CsDataSet> getDataSetByIdx(String modelId, Integer idx) {
log.error("{}异常,降级处理,异常为:{}","根据idx获取数据集数据",cause.toString());
throw new BusinessException(finalExceptionEnum);
}
};
}
}

View File

@@ -46,6 +46,12 @@ public class DevModelRelationFeignClientFallbackFactory implements FallbackFacto
log.error("{}异常,降级处理,异常为:{}","根据装置类型查询模板",cause.toString());
throw new BusinessException(finalExceptionEnum);
}
@Override
public HttpResult<String> updateDataByList(List<String> list, String id) {
log.error("{}异常,降级处理,异常为:{}","根据装置集合修改模板信息",cause.toString());
throw new BusinessException(finalExceptionEnum);
}
};
}
}

View File

@@ -77,6 +77,31 @@ public class EquipmentFeignClientFallbackFactory implements FallbackFactory<Equi
log.error("{}异常,降级处理,异常为:{}","获取所有装置",cause.toString());
throw new BusinessException(finalExceptionEnum);
}
@Override
public HttpResult<Boolean> judgeDevModel(String nDid) {
log.error("{}异常,降级处理,异常为:{}","判断设备型号",cause.toString());
throw new BusinessException(finalExceptionEnum);
}
@Override
public HttpResult<CsEquipmentDeliveryPO> getDevByLineId(String lineId) {
log.error("{}异常,降级处理,异常为:{}","根据监测点id查询装置信息",cause.toString());
throw new BusinessException(finalExceptionEnum);
}
@Override
public HttpResult<Boolean> updateCldDevStatus(String nodeId, Integer processNo) {
log.error("{}异常,降级处理,异常为:{}","云前置心跳丢失切换设备状态",cause.toString());
throw new BusinessException(finalExceptionEnum);
}
@Override
public HttpResult<Boolean> flipCldDevStatus(String devId, Integer status) {
log.error("{}异常,降级处理,异常为:{}","云前置设备状态翻转",cause.toString());
throw new BusinessException(finalExceptionEnum);
}
};
}
}

View File

@@ -0,0 +1,40 @@
package com.njcn.csdevice.api.fallback;
import com.njcn.common.pojo.enums.response.CommonResponseEnum;
import com.njcn.common.pojo.exception.BusinessException;
import com.njcn.common.pojo.response.HttpResult;
import com.njcn.csdevice.api.IcdFeignClient;
import com.njcn.csdevice.param.IcdBzParam;
import feign.hystrix.FallbackFactory;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component;
/**
* @author xy
*/
@Slf4j
@Component
public class IcdFallbackFactory implements FallbackFactory<IcdFeignClient> {
@Override
public IcdFeignClient create(Throwable cause) {
//判断抛出异常是否为解码器抛出的业务异常
Enum<?> exceptionEnum = CommonResponseEnum.SERVICE_FALLBACK;
if (cause.getCause() instanceof BusinessException) {
BusinessException businessException = (BusinessException) cause.getCause();
}
Enum<?> finalExceptionEnum = exceptionEnum;
return new IcdFeignClient() {
@Override
public HttpResult<String> bzEvent(IcdBzParam param) {
log.error("{}异常,降级处理,异常为:{}","定时补召事件异常",cause.toString());
throw new BusinessException(finalExceptionEnum);
}
@Override
public HttpResult<String> bzFile(IcdBzParam param) {
log.error("{}异常,降级处理,异常为:{}","定时补召波形异常",cause.toString());
throw new BusinessException(finalExceptionEnum);
}
};
}
}

View File

@@ -0,0 +1,37 @@
package com.njcn.csdevice.api.fallback;
import com.njcn.common.pojo.enums.response.CommonResponseEnum;
import com.njcn.common.pojo.exception.BusinessException;
import com.njcn.common.pojo.response.HttpResult;
import com.njcn.csdevice.api.IntegrityFeignClient;
import com.njcn.csdevice.pojo.po.RStatIntegrityD;
import feign.hystrix.FallbackFactory;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component;
import java.util.List;
/**
* @author xy
*/
@Slf4j
@Component
public class IntegrityClientFallbackFactory implements FallbackFactory<IntegrityFeignClient> {
@Override
public IntegrityFeignClient create(Throwable cause) {
//判断抛出异常是否为解码器抛出的业务异常
Enum<?> exceptionEnum = CommonResponseEnum.SERVICE_FALLBACK;
if (cause.getCause() instanceof BusinessException) {
BusinessException businessException = (BusinessException) cause.getCause();
}
Enum<?> finalExceptionEnum = exceptionEnum;
return new IntegrityFeignClient() {
@Override
public HttpResult<List<RStatIntegrityD>> list(List<String> list, String startTime, String endTime) {
log.error("{}异常,降级处理,异常为:{}","查询数据异常",cause.toString());
throw new BusinessException(finalExceptionEnum);
}
};
}
}

View File

@@ -0,0 +1,37 @@
package com.njcn.csdevice.api.fallback;
import com.njcn.common.pojo.enums.response.CommonResponseEnum;
import com.njcn.common.pojo.exception.BusinessException;
import com.njcn.common.pojo.response.HttpResult;
import com.njcn.csdevice.api.NodeFeignClient;
import com.njcn.csdevice.pojo.po.Node;
import feign.hystrix.FallbackFactory;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component;
import java.util.List;
/**
* @author xy
*/
@Slf4j
@Component
public class NodeFallbackFactory implements FallbackFactory<NodeFeignClient> {
@Override
public NodeFeignClient create(Throwable cause) {
//判断抛出异常是否为解码器抛出的业务异常
Enum<?> exceptionEnum = CommonResponseEnum.SERVICE_FALLBACK;
if (cause.getCause() instanceof BusinessException) {
BusinessException businessException = (BusinessException) cause.getCause();
}
Enum<?> finalExceptionEnum = exceptionEnum;
return new NodeFeignClient() {
@Override
public HttpResult<List<Node>> nodeAllList() {
log.error("{}异常,降级处理,异常为:{}","获取全部前置机异常",cause.toString());
throw new BusinessException(finalExceptionEnum);
}
};
}
}

View File

@@ -6,6 +6,7 @@ import com.njcn.common.pojo.response.HttpResult;
import com.njcn.csdevice.api.WlRecordFeignClient;
import com.njcn.csdevice.pojo.param.WlRecordParam;
import com.njcn.csdevice.pojo.po.WlRecord;
import com.njcn.csdevice.pojo.vo.RecordVo;
import feign.hystrix.FallbackFactory;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component;
@@ -51,6 +52,30 @@ public class WlRecordClientFallbackFactory implements FallbackFactory<WlRecordFe
log.error("{}异常,降级处理,异常为:{}","修改测试项",cause.toString());
throw new BusinessException(finalExceptionEnum);
}
@Override
public void dayDealNoEndTimeEvent(String date) {
log.error("{}异常,降级处理,异常为:{}","每日处理没有结束时间的测试基础数据",cause.toString());
throw new BusinessException(finalExceptionEnum);
}
@Override
public HttpResult<List<WlRecord>> getWlAssByWlId(String wlId) {
log.error("{}异常,降级处理,异常为:{}","根据测试项id获取测试项详细条目",cause.toString());
throw new BusinessException(finalExceptionEnum);
}
@Override
public HttpResult<List<RecordVo>> findDevBaseDataByLineId(WlRecordParam.lineRecord param) {
log.error("{}异常,降级处理,异常为:{}","根据监测点id查询装置基础数据",cause.toString());
throw new BusinessException(finalExceptionEnum);
}
@Override
public HttpResult<RecordVo.RecordItemVo> getTestRecordById(String testRecordId) {
log.error("{}异常,降级处理,异常为:{}","根据测试项ID查询测试项信息",cause.toString());
throw new BusinessException(finalExceptionEnum);
}
};
}
}

View File

@@ -0,0 +1,37 @@
package com.njcn.csdevice.api.fallback;
import com.njcn.common.pojo.enums.response.CommonResponseEnum;
import com.njcn.common.pojo.exception.BusinessException;
import com.njcn.common.pojo.response.HttpResult;
import com.njcn.csdevice.api.OnlineRateFeignClient;
import com.njcn.csdevice.pojo.po.RStatOnlineRateD;
import feign.hystrix.FallbackFactory;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component;
import java.util.List;
/**
* @author xy
*/
@Slf4j
@Component
public class onlineRateClientFallbackFactory implements FallbackFactory<OnlineRateFeignClient> {
@Override
public OnlineRateFeignClient create(Throwable cause) {
//判断抛出异常是否为解码器抛出的业务异常
Enum<?> exceptionEnum = CommonResponseEnum.SERVICE_FALLBACK;
if (cause.getCause() instanceof BusinessException) {
BusinessException businessException = (BusinessException) cause.getCause();
}
Enum<?> finalExceptionEnum = exceptionEnum;
return new OnlineRateFeignClient() {
@Override
public HttpResult<List<RStatOnlineRateD>> list(List<String> list, String startTime, String endTime) {
log.error("{}异常,降级处理,异常为:{}","查询数据异常",cause.toString());
throw new BusinessException(finalExceptionEnum);
}
};
}
}

View File

@@ -48,8 +48,18 @@ public interface DataParam {
String portableDev = "便携式设备";
String PORTABLE_SYSTEM = "便携式系统";
String WIRELESS_PROJECT = "无线项目";
String WIRELESS_PROJECT_ID = "WIRELESS_PROJECT_ID";
String governmentDev = "治理设备";
String GOVERNANCE_SYSTEM = "治理系统";
String cldDev = "在线设备";
String EvtParamPhase = "Evt_Param_Phase";
String EvtParamDepth = "Evt_Param_VVaDepth";

View File

@@ -35,7 +35,6 @@ public enum AlgorithmResponseEnum {
CHIRLDREN2_EXIST("A00514","项目下存在设备,不能删除"),
CHIRLDREN3_EXIST("A00516","存在设备使用拓扑图,不能删除"),
DATA_ARRAY_MISSING("A00515","详细数据为空"),
UNKNOW_ROLE("A00515","角色无权限操作"),
DATA_MISSING("A00516","数据缺失"),
@@ -47,6 +46,14 @@ public enum AlgorithmResponseEnum {
FILE_BUSY("A00516","正在进行其他文件操作,请稍后重试"),
RECORD_FILE_LOST("A00516","record.bin文件缺失请检查上传文件夹"),
LINE_NUM_MISMATCH("A00516","上传文件的监测点序号和选择的监测点不匹配,请检查"),
DEV_OFFLINE("A00516","装置未连接MQTT服务器"),
OVER_MAX_DEV_COUNT("A00517","前置机超出最大支持装置数"),
DEV_OLD_DATA("A00519","进程数修改失败,原进程数下存在装置,请修改装置进程号"),
DEV_EXIST_DATA("A00520","删除失败,前置机下存在装置"),
CLD_MODEL_MISSING("A00521","云前置模板缺失,请检查模板信息"),
CLD_MODEL_MORE("A00521","存在多个云前置模板,请检查模板信息"),
;

View File

@@ -0,0 +1,24 @@
package com.njcn.csdevice.param;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.io.Serializable;
import java.util.List;
/**
* @author xy
*/
@Data
public class IcdBzParam implements Serializable {
@ApiModelProperty("监测点集合")
private List<String> lineList;
@ApiModelProperty("开始时间")
private String startTime;
@ApiModelProperty("结束时间")
private String endTime;
}

View File

@@ -0,0 +1,31 @@
package com.njcn.csdevice.param;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.io.Serializable;
/**
* @author xy
*/
@Data
public class IcdBzReplyParam implements Serializable {
@ApiModelProperty("guid")
private String id;
@ApiModelProperty("状态")
private Integer state;
@ApiModelProperty("设备id")
private String deviceId;
@ApiModelProperty("监测点id")
private String lineId;
@ApiModelProperty("响应码")
private Integer code;
@ApiModelProperty("响应消息")
private String msg;
}

View File

@@ -0,0 +1,48 @@
package com.njcn.csdevice.param;
import com.njcn.csdevice.pojo.param.AppProjectAddParm;
import com.njcn.csdevice.pojo.param.CsEngineeringAddParm;
import com.njcn.csdevice.pojo.param.CsEquipmentDeliveryAddParm;
import com.njcn.csdevice.pojo.param.CsLineParam;
import com.njcn.csdevice.pojo.po.CsEquipmentDeliveryPO;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.io.Serializable;
import java.util.List;
import java.util.Map;
/**
* @author xy
*/
@Data
public class IcdLedgerParam implements Serializable {
@ApiModelProperty("工程索引")
private String engineeringIndex;
@ApiModelProperty("项目索引")
private String projectIndex;
@ApiModelProperty("设备id")
private String devIndex;
@ApiModelProperty("设备和mac关系")
private Map<String,String> devMacMap;
@ApiModelProperty("设备mac和设备信息关系")
private Map<String, CsEquipmentDeliveryPO> devMap;
@ApiModelProperty("工程信息")
private CsEngineeringAddParm engineering;
@ApiModelProperty("项目信息")
private AppProjectAddParm project;
@ApiModelProperty("装置信息")
private List<CsEquipmentDeliveryAddParm> device;
@ApiModelProperty("监测点信息")
private List<CsLineParam> line;
}

View File

@@ -0,0 +1,22 @@
package com.njcn.csdevice.param;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.io.Serializable;
/**
* @author xy
*/
@Data
public class IcdNodeParam implements Serializable {
@ApiModelProperty("设备id")
private String id;
@ApiModelProperty("前置服务器id")
private String nodeId;
@ApiModelProperty("进程号")
private Integer processNo;
}

View File

@@ -0,0 +1,26 @@
package com.njcn.csdevice.param;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import javax.validation.constraints.NotBlank;
import java.io.Serializable;
import java.util.List;
/**
* @author xy
*/
@Data
public class IcdParam implements Serializable {
@ApiModelProperty("前置id不传时查询所有的终端台账信息")
@NotBlank(message = "前置id不可为空")
private String id;
@ApiModelProperty("终端运行状态,不传则查询所有的终端信息 (0运行1检修2停运3调试4退运)")
private List<Integer> runFlag;
@ApiModelProperty("终端型号(集合为空查询所有icd模型)")
private List<String> devType;
}

View File

@@ -0,0 +1,70 @@
package com.njcn.csdevice.param;
import lombok.Data;
import java.io.Serializable;
import java.util.List;
import java.util.Map;
/**
* 监测点有效数值统计数据评估入参
*
* @author hongawen
* @version 1.0
* @data 2024/11/6 20:36
*/
@Data
public class LineCountEvaluateParam implements Serializable {
/**
* 监测点编号集合
*/
private List<String> lineId;
/**
* 表名
*/
private String tableName;
/**
* 相别集合
*/
private List<String> phasicType;
/**
* 值类型
*/
private List<String> valueType;
/**
* 异常数据时间集合
* Map<String,List<String>> key:监测点id value:异常时间集合
*/
private Map<String, List<String>> abnormalTime;
/**
* 列名
*/
private String columnName;
/**
* 最小值 >=
*/
private String ge;
/**
* 最大值 <=
*/
private String lt;
/**
* 数据类型 判断获取数据是否排除暂态异常数据
*/
private Boolean dataType = true;
private String startTime;
private String endTime;
}

View File

@@ -0,0 +1,118 @@
package com.njcn.csdevice.pojo.dto;
import com.baomidou.mybatisplus.annotation.TableField;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.io.Serializable;
import java.util.Date;
import java.util.List;
/**
* 初始化模板实体
* @author xy
*/
@Data
public class CsDevModelDto implements Serializable {
@ApiModelProperty("模板id")
private String id;
@ApiModelProperty("版本号")
private String versionNo;
@TableField("版本日期")
@JsonFormat(pattern = "yyyy-MM-dd",timezone = "GMT+8")
private Date versionDate;
@ApiModelProperty("模板名称")
private String name;
@ApiModelProperty("设备类型名称")
private String devTypeName;
@ApiModelProperty("模板存储路径")
private String filePath;
@ApiModelProperty("模板类型(0:治理类型 1:电能质量类型)")
private Integer type;
@ApiModelProperty("数据集")
private List<CsDataSet> dataSets;
@Data
public static class CsDataSet implements Serializable {
@ApiModelProperty("数据集id")
private String id;
@ApiModelProperty("模板id")
private String pid;
@ApiModelProperty("数据集名称")
private String name;
@ApiModelProperty("数据集别名")
private String anotherName;
@ApiModelProperty("数据集编号")
private Integer idx;
@ApiModelProperty("数据集类型")
private String dataType;
@ApiModelProperty("统计周期")
private Integer period;
@ApiModelProperty("是否存储 0:不存储 1:存储")
private Integer storeFlag;
@ApiModelProperty("逻辑子设备")
private Integer clDev;
@ApiModelProperty("数据集类型(0:主设备 1:子模块 2:监测设备)")
private Integer type;
@ApiModelProperty("数据类型(Primary:一次值 Secondary:二次值)")
private String dataLevel;
@ApiModelProperty("数据类型")
private List<CsDataArray> dataArrays;
}
@Data
public static class CsDataArray implements Serializable {
@ApiModelProperty("指标id")
private String id;
@ApiModelProperty("数据集id")
private String pid;
@ApiModelProperty("字典表id")
private String dataId;
@ApiModelProperty("数据集名称")
private String name;
@ApiModelProperty("数据集别名")
private String anotherName;
@ApiModelProperty("数据集编号")
private Integer idx;
@ApiModelProperty("数据统计方法(max、min、avg、cp95)")
private String statMethod;
@ApiModelProperty("数据类型")
private String dataType;
@ApiModelProperty("相别")
private String phase;
@ApiModelProperty("排序")
private Integer sort;
}
}

View File

@@ -0,0 +1,24 @@
package com.njcn.csdevice.pojo.dto;
import lombok.Data;
import java.io.Serializable;
/**
* @Description:
* @Author: wr
* @Date: 2025/3/10 10:01
*/
@Data
public class PqsCommunicateDto implements Serializable {
private String time;
private String devId;
private String description;
private Integer type;
}

View File

@@ -5,7 +5,6 @@ import lombok.Data;
import org.springframework.web.multipart.MultipartFile;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import java.math.BigDecimal;
import java.util.List;
@@ -20,16 +19,16 @@ import java.util.List;
@Data
public class AppProjectAddParm {
private String description;
@ApiModelProperty(value="项目名称")
@NotBlank(message="项目名称不能为空!")
private String name;
@NotBlank(message="工程id不能为空")
//@NotBlank(message="工程id不能为空")
private String engineeringId;
private String icdEngineeringId;
/**
* 地市Id

View File

@@ -1,9 +1,12 @@
package com.njcn.csdevice.pojo.param;
import com.baomidou.mybatisplus.annotation.TableField;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import javax.validation.constraints.NotBlank;
import java.util.Date;
/**
*
@@ -36,8 +39,9 @@ public class CsDevModelAddParm {
/**
* 版本日期
*/
@ApiModelProperty(value = "版本日期")
private String time;
@TableField(value = "version_date")
@JsonFormat(pattern = "yyyy-MM-dd",timezone = "GMT+8")
private Date versionDate;
/**
* 装置模板文件路径

View File

@@ -47,7 +47,8 @@ public class CsDevModelQueryParm {
@DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
private String versionEndDate;
@ApiModelProperty(value = "装置型号")
private String devType;

View File

@@ -1,12 +1,11 @@
package com.njcn.csdevice.pojo.param;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import java.util.Date;
import javax.validation.constraints.Pattern;
import java.io.Serializable;
/**
*
@@ -19,8 +18,7 @@ import java.util.Date;
*/
@Data
public class CsEquipmentDeliveryAddParm{
public class CsEquipmentDeliveryAddParm implements Serializable {
/**
* 装置名称
@@ -34,13 +32,13 @@ public class CsEquipmentDeliveryAddParm{
*/
@ApiModelProperty(value="网络设备ID")
@NotBlank(message="网络设备ID不能为空")
@Pattern(regexp = "^[A-Za-z0-9]{6,32}$", message = "网络设备ID只可为数字或字母,长度至少为6位")
private String ndid;
/**
* 装置mac地址
*/
@ApiModelProperty(value="装置mac地址")
// @NotBlank(message="装置mac地址不能为空")
private String mac;
/**
@@ -57,56 +55,12 @@ public class CsEquipmentDeliveryAddParm{
@NotBlank(message="装置型号不能为空!")
private String devModel;
// /**
// * 装置程序版本
// */
// @ApiModelProperty(value="装置程序版本")
// @NotBlank(message="装置程序版本不能为空!")
// private String programVersion;
// /**
// * 调试人员
// */
// @ApiModelProperty(value="调试人员")
// @NotBlank(message="调试人员不能为空!")
// private String debugPerson;
//
// /**
// * 出厂日期
// */
// @ApiModelProperty(value="出厂日期")
// @NotNull(message="出厂日期不能为空!")
// @JsonFormat(pattern = "yyyy-MM-dd",timezone = "GMT+8")
// private Date producteTime;
//
// /**
// * 检修日期
// */
// @ApiModelProperty(value="检修日期")
// @NotNull(message="检修日期不能为空!")
// @JsonFormat(pattern = "yyyy-MM-dd",timezone = "GMT+8")
// private Date checkTime;
//
// /**
// * 调试日期
// */
// @ApiModelProperty(value="调试日期")
// @NotNull(message="调试日期不能为空!")
// @JsonFormat(pattern = "yyyy-MM-dd",timezone = "GMT+8")
// private Date debugTime;
/**
* 合同号
*/
@ApiModelProperty(value="合同号")
private String cntractNo;
// /**
// * 营销经理
// */
// @ApiModelProperty(value="营销经理")
// private String salesManager;
/**
* 装置接入方式
*/
@@ -125,4 +79,22 @@ public class CsEquipmentDeliveryAddParm{
@ApiModelProperty(value="模块个数")
private Integer modelNumber;
@ApiModelProperty(value="排序")
private Integer sort;
@ApiModelProperty(value="前置机id")
private String nodeId;
@ApiModelProperty(value="前置机进程号")
private Integer nodeProcess;
@ApiModelProperty(value="模板id")
private String modelId;
@ApiModelProperty(value="工程id")
private String engineeringId;
@ApiModelProperty(value="项目id")
private String projectId;
}

View File

@@ -1,12 +1,11 @@
package com.njcn.csdevice.pojo.param;
import com.baomidou.mybatisplus.annotation.TableField;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import javax.validation.constraints.NotBlank;
import java.util.Date;
import javax.validation.constraints.Pattern;
/**
*
@@ -34,6 +33,7 @@ public class CsEquipmentDeliveryAuditParm {
* 网关识别码
*/
@ApiModelProperty(value="网关识别码")
@Pattern(regexp = "^[A-Za-z0-9]{1,32}$", message = "网络设备ID只可为(数字,字母)")
private String ndid;
/**
@@ -60,51 +60,12 @@ public class CsEquipmentDeliveryAuditParm {
@ApiModelProperty(value="装置接入方式")
private String devAccessMethod;
// /**
// * 装置程序版本
// */
// @ApiModelProperty(value="装置程序版本")
// private String programVersion;
// /**
// * 调试人员
// */
// @ApiModelProperty(value="调试人员")
// private String debugPerson;
//
// /**
// * 出厂日期
// */
// @ApiModelProperty(value="出厂日期")
// @JsonFormat(pattern = "yyyy-MM-dd",timezone = "GMT+8")
// private Date producteTime;
//
// /**
// * 检修日期
// */
// @ApiModelProperty(value="检修日期")
// @JsonFormat(pattern = "yyyy-MM-dd",timezone = "GMT+8")
// private Date checkTime;
//
// /**
// * 调试日期
// */
// @ApiModelProperty(value="调试日期")
// @JsonFormat(pattern = "yyyy-MM-dd",timezone = "GMT+8")
// private Date debugTime;
/**
* 合同号
*/
@ApiModelProperty(value="合同号")
private String cntractNo;
// /**
// * 营销经理
// */
// @ApiModelProperty(value="营销经理")
// private String salesManager;
/**
* 状态
*/
@@ -128,4 +89,16 @@ public class CsEquipmentDeliveryAuditParm {
*/
@ApiModelProperty(value="模块个数")
private Integer modelNumber;
@ApiModelProperty(value="装置使用状态(0:停用 1:启用)")
private Integer usageStatus;
@ApiModelProperty(value="排序")
private Integer sort;
@ApiModelProperty(value="前置机id")
private String nodeId;
@ApiModelProperty(value="前置机进程号")
private Integer nodeProcess;
}

View File

@@ -34,4 +34,10 @@ public class CsEquipmentDeliveryQueryParm extends BaseParam {
@ApiModelProperty("运行状态 1:离线 2:在线")
private Integer runStatus;
@ApiModelProperty("流程步骤")
private Integer process;
@ApiModelProperty("物联通讯状态 0:未连接 1:已连接")
private Integer connectStatus;
}

View File

@@ -1,9 +1,12 @@
package com.njcn.csdevice.pojo.param;
import com.njcn.db.bo.BaseEntity;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import javax.validation.constraints.Min;
/**
*
* Description:
@@ -18,24 +21,125 @@ public class CsLineParam extends BaseEntity {
private String lineId;
/**
* 监测点名称
*/
private String name;
@ApiModelProperty(value="工程id")
private String engineeringId;
@ApiModelProperty(value="项目id")
private String projectId;
/**
* 装置id
*/
private String devId;
/**
* 装置mac
*/
private String devMac;
/**
* 电压等级
*/
private Double volGrade;
/**
* PT变比
*/
private Double ptRatio;
/**
* CT变比
*/
private Double ctRatio;
/**
* 接线方式
*/
private Integer conType;
/**
* PT一次变比
*/
@Min(value = 1, message = "PT一次变比必须大于等于1")
private Double ptRatio;
/**
* PT二次变比
*/
@Min(value = 1, message = "PT二次变比必须大于等于1")
private Double pt2Ratio;
/**
* CT一次变比
*/
@Min(value = 1, message = "CT一次变比必须大于等于1")
private Double ctRatio;
/**
* CT二次变比
*/
@Min(value = 1, message = "CT二次变比必须大于等于1")
private Double ct2Ratio;
/**
* 逻辑子设备id
*/
private Integer clDid;
/**
* 监测点线路号
*/
private Integer lineNo;
/**
* 统计间隔
*/
private Integer lineInterval;
/**
* 模板id
*/
private String modelId;
/**
* 数据集id
*/
private String dataSetId;
/**
* 运行状态0运行1检修2停运3调试4退运
*/
private Integer runStatus;
/**
* 短路容量
*/
private Double shortCircuitCapacity;
/**
* 设备容量
*/
private Double devCapacity;
/**
* 基准容量
*/
private Double basicCapacity;
/**
* 协议容量
*/
private Double protocolCapacity;
/**
* 监测对象类型
*/
private String monitorObj;
/**
* 是否治理(0:未治理 1:已治理)
*/
private Integer govern;
/**
* 敏感用户ID
*/
private String monitorUser;
}

View File

@@ -24,4 +24,7 @@ public class DataArrayParam {
@ApiModelProperty("数据类型")
private String statMethod;
@ApiModelProperty("数据集编号")
private Integer idx;
}

View File

@@ -0,0 +1,104 @@
package com.njcn.csdevice.pojo.param;
import com.njcn.common.pojo.constant.PatternRegex;
import com.njcn.web.constant.ValidMessage;
import com.njcn.web.pojo.param.BaseParam;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import javax.validation.constraints.*;
/**
* pqs
*
* @author cdf
* @date 2022/1/14
*/
@Data
@ApiModel
public class NodeParam {
/**
* 名称
*/
@ApiModelProperty(name = "name",value = "前置服务器名称")
@NotBlank(message = "前置机名称不能为空")
@Pattern(regexp = PatternRegex.DEV_NAME_REGEX, message = ValidMessage.NAME_FORMAT_ERROR)
private String name;
/**
* 服务器IP
*/
@ApiModelProperty(name = "ip",value = "服务器IP")
@NotBlank(message = "前置机IP不能为空")
@Pattern(regexp = PatternRegex.IP_REGEX, message = ValidMessage.IP_FORMAT_ERROR)
private String ip;
/**
* 描述
*/
@ApiModelProperty(name = "remark",value = "描述")
private String remark;
/**
* 状态 前置等级
*/
@ApiModelProperty(name = "nodeGrade",value = "前置等级")
@NotNull(message = "前置机等级不可为空")
private Integer nodeGrade;
/**
* 前置机支持最大装置数
*/
@ApiModelProperty(name = "nodeDevNum",value = "前置机支持最大装置数")
@NotNull(message = "前置机支持最大装置数不可为空")
@Min(value = 1, message = "装置数不可小于1")
@Max(value = 1000, message = "装置数不可大于1000")
private Integer nodeDevNum;
/**
* 前置机支持最大进程数量
*/
@ApiModelProperty(name = "nodeDevNum",value = "前置机支持最大进程数量")
@NotNull(message = "前置机支持最大进程数量")
@Min(value = 1, message = "最大进程数量不可小于1")
@Max(value = 10, message = "最大进程数量不可大于10")
private Integer maxProcessNum;
/**
* 排序
*/
@ApiModelProperty(name = "sort",value = "排序")
@NotNull(message = "排序不可为空")
private Integer sort;
/**
* 更新操作实体
*/
@Data
@EqualsAndHashCode(callSuper = true)
public static class NodeUpdateParam extends NodeParam {
/**
* 表Id
*/
@ApiModelProperty("id")
@NotBlank(message = ValidMessage.ID_NOT_BLANK)
@Pattern(regexp = PatternRegex.SYSTEM_ID, message = ValidMessage.ID_FORMAT_ERROR)
private String id;
}
/**
* 前置查询
*/
@Data
@EqualsAndHashCode(callSuper = true)
public static class NodeQueryParam extends BaseParam {
@ApiModelProperty("前置等级")
private Integer nodeGrade;
}
}

View File

@@ -0,0 +1,18 @@
package com.njcn.csdevice.pojo.param;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.io.Serializable;
import java.util.List;
@Data
public class UserDevParam implements Serializable {
@ApiModelProperty(value="用户id")
private String userId;
@ApiModelProperty(value="设备集合id")
private List<String> list;
}

View File

@@ -1,5 +1,6 @@
package com.njcn.csdevice.pojo.param;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
@@ -34,9 +35,11 @@ public class WlRecordParam {
private String lineId;
@ApiModelProperty("项目起始时间")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private LocalDateTime proStartTime;
@ApiModelProperty("项目结束时间")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private LocalDateTime proEndTime;
@ApiModelProperty("测试项名称")
@@ -99,4 +102,23 @@ public class WlRecordParam {
private String id;
}
@Data
@EqualsAndHashCode(callSuper = true)
public static class lineRecord extends WlRecordParam {
@ApiModelProperty("监测点id")
private String lineId;
@ApiModelProperty("测试项起始时间")
private String itemStartTime;
@ApiModelProperty("测试项结束时间")
private String itemEndTime;
@ApiModelProperty("数据来源 0:补召 1:在线监测 ")
private Integer dataSource;
}
}

View File

@@ -80,4 +80,8 @@ public class CsDataSet extends BaseEntity {
*/
private String dataLevel;
/**
* 接线方式
*/
private Integer conType;
}

View File

@@ -64,8 +64,6 @@ public class CsEquipmentDeliveryPO extends BaseEntity {
@TableField(value = "dev_access_method")
private String devAccessMethod;
/**
* 合同号
*/
@@ -108,4 +106,28 @@ public class CsEquipmentDeliveryPO extends BaseEntity {
@TableField(value = "process")
private Integer process;
/**
* 装置使用状态(0:停用 1:启用)
*/
@TableField(value = "usage_status")
private Integer usageStatus;
/**
* 排序
*/
@TableField(value = "sort")
private Integer sort;
/**
* 前置服务器IP
*/
@TableField(value = "node_id")
private String nodeId;
/**
* 前置进程号
*/
@TableField(value = "node_process")
private Integer nodeProcess;
}

View File

@@ -66,12 +66,24 @@ public class CsLinePO extends BaseEntity {
@TableField(value = "pt_ratio")
private Double ptRatio;
/**
* PT2次变比
*/
@TableField(value = "pt2_ratio")
private Double pt2Ratio;
/**
* CT变比
*/
@TableField(value = "ct_ratio")
private Double ctRatio;
/**
* CT2变比
*/
@TableField(value = "ct2_ratio")
private Double ct2Ratio;
/**
* 状态(0删除 1正常)
*/
@@ -86,13 +98,71 @@ public class CsLinePO extends BaseEntity {
/**
* 逻辑子设备id(与模板对应)
* 治理监测点 0
* 负载监测点 1
* 电网监测点 2
*/
@TableField(value = "clDid")
private Integer clDid;
@TableField(value = "device_id")
private String deviceId;
}
/**
* 监测点统计间隔
*/
@TableField(value = "line_interval")
private Integer lineInterval;
/**
* 运行状态
*/
@TableField(value = "run_status")
private Integer runStatus;
/**
* 监测点线路号
*/
@TableField(value = "line_no")
private Integer lineNo;
/**
* 监测对象类型
*/
@TableField(value = "monitor_obj")
private String monitorObj;
/**
* 是否治理(0:未治理 1:已治理)
*/
@TableField(value = "is_govern")
private Integer govern;
@TableField(value = "monitor_user")
private String monitorUser;
/**
* 短路容量
*/
@TableField(value = "short_circuit_capacity")
private Double shortCircuitCapacity;
/**
* 设备容量
*/
@TableField(value = "dev_capacity")
private Double devCapacity;
/**
* 基准容量
*/
@TableField(value = "basic_capacity")
private Double basicCapacity;
/**
* 协议容量
*/
@TableField(value = "protocol_capacity")
private Double protocolCapacity;
/**
* 治理报告文件路径
*/
@TableField(value = "report_file_path")
private String reportFilePath;
}

View File

@@ -0,0 +1,65 @@
package com.njcn.csdevice.pojo.po;
import com.baomidou.mybatisplus.annotation.TableName;
import com.njcn.db.bo.BaseEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.io.Serializable;
/**
* <p>
*
* </p>
*
* @author xy
* @since 2025-09-26
*/
@EqualsAndHashCode(callSuper = true)
@Data
@TableName("cs_terminal_logs")
public class CsTerminalLogs extends BaseEntity implements Serializable {
private static final long serialVersionUID = 1L;
/**
* 主键id
*/
private String id;
/**
* 设备id
*/
private String deviceId;
/**
* 设备名称
*/
private String deviceName;
/**
* 监测点id
*/
private String lineId;
/**
* 前置服务器id
*/
private String nodeId;
/**
* 进程号
*/
private Integer nodeProcess;
/**
* 操作类型(0:新增 1:修改 2:删除)
*/
private Integer operateType;
/**
* 是否推送(0未推送 1已推送)
*/
private Integer isPush;
}

View File

@@ -0,0 +1,81 @@
package com.njcn.csdevice.pojo.po;
import com.baomidou.mybatisplus.annotation.TableName;
import com.njcn.db.bo.BaseEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.io.Serializable;
/**
* <p>
*
* </p>
*
* @author xy
* @since 2025-10-09
*/
@EqualsAndHashCode(callSuper = true)
@Data
@TableName("cs_terminal_reply")
public class CsTerminalReply extends BaseEntity implements Serializable {
private static final long serialVersionUID = 1L;
/**
* 主键
*/
private String id;
/**
* 消息id
*/
private String replyId;
/**
* 操作类型
*/
private String code;
/**
* 前置id
*/
private String nodeId;
/**
* 进程号
*/
private Integer processNo;
/**
* 设备id
*/
private String deviceId;
/**
* 设备名称
*/
private String deviceName;
/**
* 监测点id
*/
private String lineId;
/**
* 是否收到0未收到 1收到
*/
private Integer isReceived;
/**
* 接收消息状态码
*/
private Integer receivedCode;
/**
* 接收消息描述
*/
private String receivedMsg;
}

View File

@@ -0,0 +1,70 @@
package com.njcn.csdevice.pojo.po;
import com.baomidou.mybatisplus.annotation.TableName;
import com.njcn.db.bo.BaseEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.io.Serializable;
/**
* <p>
*
* </p>
*
* @author xy
*/
@Data
@EqualsAndHashCode(callSuper = true)
@TableName("pq_node")
public class Node extends BaseEntity implements Serializable {
private static final long serialVersionUID = 1L;
/**
* 前置序号
*/
private String id;
/**
* 名称
*/
private String name;
/**
* 服务器IP
*/
private String ip;
/**
* 描述
*/
private String remark;
/**
* 状态 0-删除1-正常;默认正常
*/
private Integer state;
/**
* 状态 前置等级
*/
private Integer nodeGrade;
/**
* 前置机支持最大装置数
*/
private Integer nodeDevNum;
/**
* 前置机支持最大进程数量
*/
private Integer maxProcessNum;
/**
* 排序
*/
private Integer sort;
}

View File

@@ -0,0 +1,953 @@
package com.njcn.csdevice.pojo.po;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import com.njcn.device.biz.utils.COverlimit;
import lombok.Data;
import java.io.Serializable;
/**
* <p>
*
* </p>
*
* @author cdf
* @since 2022-01-04
*/
@Data
@TableName("pq_overlimit")
public class Overlimit implements Serializable {
private static final long serialVersionUID = 1L;
/**
* 监测点序号
*/
private String id;
/**
* 频率限值
*/
private Float freqDev;
/**
* 电压波动
*/
private Float voltageFluctuation;
/**
* 电压上偏差限值
*/
private Float voltageDev;
/**
* 电压下偏差限值
*/
private Float uvoltageDev;
/**
* 三相电压不平衡度限值
*/
private Float ubalance;
/**
* 短时电压不平衡度限值
*/
private Float shortUbalance;
/**
* 闪变限值
*/
private Float flicker;
/**
* 电压总谐波畸变率限值
*/
private Float uaberrance;
/**
* 负序电流限值
*/
private Float iNeg;
/**
* 2次谐波电压限值
*/
@TableField("uharm_2")
private Float uharm2;
/**
* 3次谐波电压限值
*/
@TableField("uharm_3")
private Float uharm3;
/**
* 4次谐波电压限值
*/
@TableField("uharm_4")
private Float uharm4;
/**
* 5次谐波电压限值
*/
@TableField("uharm_5")
private Float uharm5;
/**
* 6次谐波电压限值
*/
@TableField("uharm_6")
private Float uharm6;
/**
* 7次谐波电压限值
*/
@TableField("uharm_7")
private Float uharm7;
/**
* 8次谐波电压限值
*/
@TableField("uharm_8")
private Float uharm8;
/**
* 9次谐波电压限值
*/
@TableField("uharm_9")
private Float uharm9;
/**
* 10次谐波电压限值
*/
@TableField("uharm_10")
private Float uharm10;
/**
* 11次谐波电压限值
*/
@TableField("uharm_11")
private Float uharm11;
/**
* 12次谐波电压限值
*/
@TableField("uharm_12")
private Float uharm12;
/**
* 13次谐波电压限值
*/
@TableField("uharm_13")
private Float uharm13;
/**
* 14次谐波电压限值
*/
@TableField("uharm_14")
private Float uharm14;
/**
* 15次谐波电压限值
*/
@TableField("uharm_15")
private Float uharm15;
/**
* 16次谐波电压限值
*/
@TableField("uharm_16")
private Float uharm16;
/**
* 17次谐波电压限值
*/
@TableField("uharm_17")
private Float uharm17;
/**
* 18次谐波电压限值
*/
@TableField("uharm_18")
private Float uharm18;
/**
* 19次谐波电压限值
*/
@TableField("uharm_19")
private Float uharm19;
/**
* 20次谐波电压限值
*/
@TableField("uharm_20")
private Float uharm20;
/**
* 21次谐波电压限值
*/
@TableField("uharm_21")
private Float uharm21;
/**
* 22次谐波电压限值
*/
@TableField("uharm_22")
private Float uharm22;
/**
* 23次谐波电压限值
*/
@TableField("uharm_23")
private Float uharm23;
/**
* 24次谐波电压限值
*/
@TableField("uharm_24")
private Float uharm24;
/**
* 25次谐波电压限值
*/
@TableField("uharm_25")
private Float uharm25;
/**
* 2次谐波电压限值
*/
@TableField("uharm_26")
private Float uharm26;
/**
* 3次谐波电压限值
*/
@TableField("uharm_27")
private Float uharm27;
/**
* 4次谐波电压限值
*/
@TableField("uharm_28")
private Float uharm28;
/**
* 5次谐波电压限值
*/
@TableField("uharm_29")
private Float uharm29;
/**
* 6次谐波电压限值
*/
@TableField("uharm_30")
private Float uharm30;
/**
* 7次谐波电压限值
*/
@TableField("uharm_31")
private Float uharm31;
/**
* 8次谐波电压限值
*/
@TableField("uharm_32")
private Float uharm32;
/**
* 9次谐波电压限值
*/
@TableField("uharm_33")
private Float uharm33;
/**
* 10次谐波电压限值
*/
@TableField("uharm_34")
private Float uharm34;
/**
* 11次谐波电压限值
*/
@TableField("uharm_35")
private Float uharm35;
/**
* 12次谐波电压限值
*/
@TableField("uharm_36")
private Float uharm36;
/**
* 13次谐波电压限值
*/
@TableField("uharm_37")
private Float uharm37;
/**
* 14次谐波电压限值
*/
@TableField("uharm_38")
private Float uharm38;
/**
* 15次谐波电压限值
*/
@TableField("uharm_39")
private Float uharm39;
/**
* 16次谐波电压限值
*/
@TableField("uharm_40")
private Float uharm40;
/**
* 17次谐波电压限值
*/
@TableField("uharm_41")
private Float uharm41;
/**
* 18次谐波电压限值
*/
@TableField("uharm_42")
private Float uharm42;
/**
* 19次谐波电压限值
*/
@TableField("uharm_43")
private Float uharm43;
/**
* 20次谐波电压限值
*/
@TableField("uharm_44")
private Float uharm44;
/**
* 21次谐波电压限值
*/
@TableField("uharm_45")
private Float uharm45;
/**
* 22次谐波电压限值
*/
@TableField("uharm_46")
private Float uharm46;
/**
* 23次谐波电压限值
*/
@TableField("uharm_47")
private Float uharm47;
/**
* 24次谐波电压限值
*/
@TableField("uharm_48")
private Float uharm48;
/**
* 25次谐波电压限值
*/
@TableField("uharm_49")
private Float uharm49;
/**
* 50次谐波电压限值
*/
@TableField("uharm_50")
private Float uharm50;
/**
* 2次谐波电流限值
*/
@TableField("iharm_2")
private Float iharm2;
/**
* 3次谐波电流限值
*/
@TableField("iharm_3")
private Float iharm3;
/**
* 4次谐波电流限值
*/
@TableField("iharm_4")
private Float iharm4;
/**
* 5次谐波电流限值
*/
@TableField("iharm_5")
private Float iharm5;
/**
* 6次谐波电流限值
*/
@TableField("iharm_6")
private Float iharm6;
/**
* 7次谐波电流限值
*/
@TableField("iharm_7")
private Float iharm7;
/**
* 8次谐波电流限值
*/
@TableField("iharm_8")
private Float iharm8;
/**
* 9次谐波电流限值
*/
@TableField("iharm_9")
private Float iharm9;
/**
* 10次谐波电流限值
*/
@TableField("iharm_10")
private Float iharm10;
/**
* 11次谐波电流限值
*/
@TableField("iharm_11")
private Float iharm11;
/**
* 12次谐波电流限值
*/
@TableField("iharm_12")
private Float iharm12;
/**
* 13次谐波电流限值
*/
@TableField("iharm_13")
private Float iharm13;
/**
* 14次谐波电流限值
*/
@TableField("iharm_14")
private Float iharm14;
/**
* 15次谐波电流限值
*/
@TableField("iharm_15")
private Float iharm15;
/**
* 16次谐波电流限值
*/
@TableField("iharm_16")
private Float iharm16;
/**
* 17次谐波电流限值
*/
@TableField("iharm_17")
private Float iharm17;
/**
* 18次谐波电流限值
*/
@TableField("iharm_18")
private Float iharm18;
/**
* 19次谐波电流限值
*/
@TableField("iharm_19")
private Float iharm19;
/**
* 20次谐波电流限值
*/
@TableField("iharm_20")
private Float iharm20;
/**
* 21次谐波电流限值
*/
@TableField("iharm_21")
private Float iharm21;
/**
* 22次谐波电流限值
*/
@TableField("iharm_22")
private Float iharm22;
/**
* 23次谐波电流限值
*/
@TableField("iharm_23")
private Float iharm23;
/**
* 24次谐波电流限值
*/
@TableField("iharm_24")
private Float iharm24;
/**
* 25次谐波电流限值
*/
@TableField("iharm_25")
private Float iharm25;
/**
* 2次谐波电压限值
*/
@TableField("iharm_26")
private Float iharm26;
/**
* 3次谐波电压限值
*/
@TableField("iharm_27")
private Float iharm27;
/**
* 4次谐波电压限值
*/
@TableField("iharm_28")
private Float iharm28;
/**
* 5次谐波电压限值
*/
@TableField("iharm_29")
private Float iharm29;
/**
* 6次谐波电压限值
*/
@TableField("iharm_30")
private Float iharm30;
/**
* 7次谐波电压限值
*/
@TableField("iharm_31")
private Float iharm31;
/**
* 8次谐波电压限值
*/
@TableField("iharm_32")
private Float iharm32;
/**
* 9次谐波电压限值
*/
@TableField("iharm_33")
private Float iharm33;
/**
* 10次谐波电压限值
*/
@TableField("iharm_34")
private Float iharm34;
/**
* 11次谐波电压限值
*/
@TableField("iharm_35")
private Float iharm35;
/**
* 12次谐波电压限值
*/
@TableField("iharm_36")
private Float iharm36;
/**
* 13次谐波电压限值
*/
@TableField("iharm_37")
private Float iharm37;
/**
* 14次谐波电压限值
*/
@TableField("iharm_38")
private Float iharm38;
/**
* 15次谐波电压限值
*/
@TableField("iharm_39")
private Float iharm39;
/**
* 16次谐波电压限值
*/
@TableField("iharm_40")
private Float iharm40;
/**
* 17次谐波电压限值
*/
@TableField("iharm_41")
private Float iharm41;
/**
* 18次谐波电压限值
*/
@TableField("iharm_42")
private Float iharm42;
/**
* 19次谐波电压限值
*/
@TableField("iharm_43")
private Float iharm43;
/**
* 20次谐波电压限值
*/
@TableField("iharm_44")
private Float iharm44;
/**
* 21次谐波电压限值
*/
@TableField("iharm_45")
private Float iharm45;
/**
* 22次谐波电压限值
*/
@TableField("iharm_46")
private Float iharm46;
/**
* 23次谐波电压限值
*/
@TableField("iharm_47")
private Float iharm47;
/**
* 24次谐波电压限值
*/
@TableField("iharm_48")
private Float iharm48;
/**
* 25次谐波电压限值
*/
@TableField("iharm_49")
private Float iharm49;
/**
* 50次谐波电压限值
*/
@TableField("iharm_50")
private Float iharm50;
/**
* 0.5次间谐波电压限值
*/
@TableField("inuharm_1")
private Float inuharm1;
/**
* 1.5次间谐波电压限值
*/
@TableField("inuharm_2")
private Float inuharm2;
/**
* 2.5次间谐波电压限值
*/
@TableField("inuharm_3")
private Float inuharm3;
/**
* 3.5次间谐波电压限值
*/
@TableField("inuharm_4")
private Float inuharm4;
/**
* 4.5次间谐波电压限值
*/
@TableField("inuharm_5")
private Float inuharm5;
/**
* 5.5次间谐波电压限值
*/
@TableField("inuharm_6")
private Float inuharm6;
/**
* 6.5次间谐波电压限值
*/
@TableField("inuharm_7")
private Float inuharm7;
/**
* 7.5次间谐波电压限值
*/
@TableField("inuharm_8")
private Float inuharm8;
/**
* 8.5次间谐波电压限值
*/
@TableField("inuharm_9")
private Float inuharm9;
/**
* 9.5次间谐波电压限值
*/
@TableField("inuharm_10")
private Float inuharm10;
/**
* 10.5次间谐波电压限值
*/
@TableField("inuharm_11")
private Float inuharm11;
/**
* 11.5次间谐波电压限值
*/
@TableField("inuharm_12")
private Float inuharm12;
/**
* 12.5次间谐波电压限值
*/
@TableField("inuharm_13")
private Float inuharm13;
/**
* 13.5次间谐波电压限值
*/
@TableField("inuharm_14")
private Float inuharm14;
/**
* 14.5次间谐波电压限值
*/
@TableField("inuharm_15")
private Float inuharm15;
/**
* 15.5次间谐波电压限值
*/
@TableField("inuharm_16")
private Float inuharm16;
public Overlimit(){}
public Overlimit(String lineId, String scaTmp, float fDLRL, float fJZRL, float fXYRL, float fSBRL){
float[] fLimit = COverlimit.GetOverLimit(scaTmp, fDLRL, fJZRL, fXYRL, fSBRL);
this.id=lineId;
this.freqDev=fLimit[0];
this.voltageDev=fLimit[1];
this.ubalance=fLimit[2];
this.flicker=fLimit[3];
this.uaberrance=fLimit[4];
this.uharm2=fLimit[5];
this.uharm3=fLimit[6];
this.uharm4=fLimit[7];
this.uharm5=fLimit[8];
this.uharm6=fLimit[9];
this.uharm7=fLimit[10];
this.uharm8=fLimit[11];
this.uharm9=fLimit[12];
this.uharm10=fLimit[13];
this.uharm11=fLimit[14];
this.uharm12=fLimit[15];
this.uharm13=fLimit[16];
this.uharm14=fLimit[17];
this.uharm15=fLimit[18];
this.uharm16=fLimit[19];
this.uharm17=fLimit[20];
this.uharm18=fLimit[21];
this.uharm19=fLimit[22];
this.uharm20=fLimit[23];
this.uharm21=fLimit[24];
this.uharm22=fLimit[25];
this.uharm23=fLimit[26];
this.uharm24=fLimit[27];
this.uharm25=fLimit[28];
this.iharm2=fLimit[29];
this.iharm3=fLimit[30];
this.iharm4=fLimit[31];
this.iharm5=fLimit[32];
this.iharm6=fLimit[33];
this.iharm7=fLimit[34];
this.iharm8=fLimit[35];
this.iharm9=fLimit[36];
this.iharm10=fLimit[37];
this.iharm11=fLimit[38];
this.iharm12=fLimit[39];
this.iharm13=fLimit[40];
this.iharm14=fLimit[41];
this.iharm15=fLimit[42];
this.iharm16=fLimit[43];
this.iharm17=fLimit[44];
this.iharm18=fLimit[45];
this.iharm19=fLimit[46];
this.iharm20=fLimit[47];
this.iharm21=fLimit[48];
this.iharm22=fLimit[49];
this.iharm23=fLimit[50];
this.iharm24=fLimit[51];
this.iharm25=fLimit[52];
this.uvoltageDev=fLimit[53];
this.iNeg=fLimit[54];
this.inuharm1=fLimit[55];
this.inuharm2=fLimit[56];
this.inuharm3=fLimit[57];
this.inuharm4=fLimit[58];
this.inuharm5=fLimit[59];
this.inuharm6=fLimit[60];
this.inuharm7=fLimit[61];
this.inuharm8=fLimit[62];
this.inuharm9=fLimit[63];
this.inuharm10=fLimit[64];
this.inuharm11=fLimit[65];
this.inuharm12=fLimit[66];
this.inuharm13=fLimit[67];
this.inuharm14=fLimit[68];
this.inuharm15=fLimit[69];
this.inuharm16=fLimit[70];
}
public void buildIHarm(Float[] iHarmTem){
this.iharm2= iHarmTem[0];
this.iharm4= iHarmTem[2];
this.iharm6= iHarmTem[4];
this.iharm8= iHarmTem[6];
this.iharm10= iHarmTem[8];
this.iharm12= iHarmTem[10];
this.iharm14= iHarmTem[12];
this.iharm16= iHarmTem[14];
this.iharm18= iHarmTem[16];
this.iharm20= iHarmTem[18];
this.iharm22= iHarmTem[20];
this.iharm24= iHarmTem[22];
this.iharm26= iHarmTem[24];
this.iharm28= iHarmTem[26];
this.iharm30= iHarmTem[28];
this.iharm32= iHarmTem[30];
this.iharm34= iHarmTem[32];
this.iharm36= iHarmTem[34];
this.iharm38= iHarmTem[36];
this.iharm40= iHarmTem[38];
this.iharm42= iHarmTem[40];
this.iharm44= iHarmTem[42];
this.iharm46= iHarmTem[44];
this.iharm48= iHarmTem[46];
this.iharm50= iHarmTem[48];
this.iharm3= iHarmTem[1];
this.iharm5= iHarmTem[3];
this.iharm7= iHarmTem[5];
this.iharm9= iHarmTem[7];
this.iharm11= iHarmTem[9];
this.iharm13= iHarmTem[11];
this.iharm15= iHarmTem[13];
this.iharm17= iHarmTem[15];
this.iharm19= iHarmTem[17];
this.iharm21= iHarmTem[19];
this.iharm23= iHarmTem[21];
this.iharm25= iHarmTem[23];
this.iharm27= iHarmTem[25];
this.iharm29= iHarmTem[27];
this.iharm31= iHarmTem[29];
this.iharm33= iHarmTem[31];
this.iharm35= iHarmTem[33];
this.iharm37= iHarmTem[35];
this.iharm39= iHarmTem[37];
this.iharm41= iHarmTem[39];
this.iharm43= iHarmTem[41];
this.iharm45= iHarmTem[43];
this.iharm47= iHarmTem[45];
this.iharm49= iHarmTem[47];
}
public void buildUharm(Float resultEven,Float resultOdd){
this.uharm2=resultEven;
this.uharm4=resultEven;
this.uharm6=resultEven;
this.uharm8=resultEven;
this.uharm10=resultEven;
this.uharm12=resultEven;
this.uharm14=resultEven;
this.uharm16=resultEven;
this.uharm18=resultEven;
this.uharm20=resultEven;
this.uharm22=resultEven;
this.uharm24=resultEven;
this.uharm26=resultEven;
this.uharm28=resultEven;
this.uharm30=resultEven;
this.uharm32=resultEven;
this.uharm34=resultEven;
this.uharm36=resultEven;
this.uharm38=resultEven;
this.uharm40=resultEven;
this.uharm42=resultEven;
this.uharm44=resultEven;
this.uharm46=resultEven;
this.uharm48=resultEven;
this.uharm50=resultEven;
this.uharm3=resultOdd;
this.uharm5=resultOdd;
this.uharm7=resultOdd;
this.uharm9=resultOdd;
this.uharm11=resultOdd;
this.uharm13=resultOdd;
this.uharm15=resultOdd;
this.uharm17=resultOdd;
this.uharm19=resultOdd;
this.uharm21=resultOdd;
this.uharm23=resultOdd;
this.uharm25=resultOdd;
this.uharm27=resultOdd;
this.uharm29=resultOdd;
this.uharm31=resultOdd;
this.uharm33=resultOdd;
this.uharm35=resultOdd;
this.uharm37=resultOdd;
this.uharm39=resultOdd;
this.uharm41=resultOdd;
this.uharm43=resultOdd;
this.uharm45=resultOdd;
this.uharm47=resultOdd;
this.uharm49=resultOdd;
}
}

View File

@@ -0,0 +1,72 @@
package com.njcn.csdevice.pojo.po;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import java.time.LocalDateTime;
import java.util.List;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.njcn.db.bo.BaseEntity;
import lombok.Data;
import lombok.NoArgsConstructor;
/**
*
* Description:
* Date: 2024/10/15 10:43【需求编号】
*
* @author clam
* @version V1.0.0
*/
@Data
@NoArgsConstructor
@TableName(value = "portable_off_main_log")
public class PortableOffMainLog extends BaseEntity {
/**
* 批次id
*/
@TableId(value = "id", type = IdType.INPUT)
private String id;
/**
* 导入开始时间
*/
@TableField(value = "start_time")
@JsonFormat(
pattern = "yyyy-MM-dd HH:mm:ss"
)
private LocalDateTime startTime;
/**
* 工程名称
*/
@TableField(value = "project_name")
private String projectName;
/**
* 导入结束时间
*/
@JsonFormat(
pattern = "yyyy-MM-dd HH:mm:ss"
)
@TableField(value = "end_time")
private LocalDateTime endTime;
/**
* 成功解析数
*/
@TableField(value = "success_count")
private Integer successCount;
/**
* 状态(0删除 1正常)
*/
@TableField(value = "status")
private String status;
@TableField(exist = false)
private List<PortableOfflLog> portableOfflLogList;
}

View File

@@ -1,5 +1,6 @@
package com.njcn.csdevice.pojo.po;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import com.njcn.db.bo.BaseEntity;
import lombok.Getter;
@@ -21,6 +22,8 @@ public class PortableOfflLog extends BaseEntity {
private static final long serialVersionUID = 1L;
private String logsIndex;
@TableField( value = "log_main_id")
private String logMainId;
/**
* 文件名称
@@ -38,7 +41,7 @@ public class PortableOfflLog extends BaseEntity {
private String dataPath;
/**
* 0-解析 1-解析成功 2-解析失败 3-文件不存在
* 0-无需解析解析 1-解析成功 2-解析失败 3-文件不存在
*/
private Integer state;

View File

@@ -0,0 +1,35 @@
package com.njcn.csdevice.pojo.po;
import com.baomidou.mybatisplus.annotation.TableName;
import com.github.jeffreyning.mybatisplus.anno.MppMultiId;
import lombok.Data;
import java.io.Serializable;
import java.time.LocalDate;
/**
* <p>
* 数据完整性日表
* </p>
*
* @author xy
* @since 2025-06-23
*/
@Data
@TableName("r_stat_integrity_d")
public class RStatIntegrityD implements Serializable {
private static final long serialVersionUID = 1L;
@MppMultiId
private LocalDate timeId;
@MppMultiId
private String lineIndex;
private Integer dueTime;
private Integer realTime;
}

View File

@@ -0,0 +1,35 @@
package com.njcn.csdevice.pojo.po;
import com.baomidou.mybatisplus.annotation.TableName;
import com.github.jeffreyning.mybatisplus.anno.MppMultiId;
import lombok.Data;
import java.io.Serializable;
import java.time.LocalDate;
/**
* <p>
* 在线率日表
* </p>
*
* @author xy
* @since 2025-06-23
*/
@Data
@TableName("r_stat_onlinerate_d")
public class RStatOnlineRateD implements Serializable {
private static final long serialVersionUID = 1L;
@MppMultiId
private LocalDate timeId;
@MppMultiId
private String devIndex;
private Integer onlineMin;
private Integer offlineMin;
}

View File

@@ -150,4 +150,10 @@ public class WlRecord extends BaseEntity {
*/
private String gcDataPath;
/**
* 数据类型(Primary:一次值 Secondary:二次值)
*/
@TableField(exist = false)
private String dataLevel;
}

View File

@@ -0,0 +1,42 @@
package com.njcn.csdevice.pojo.vo;
import com.njcn.csdevice.pojo.po.AppProjectPO;
import com.njcn.csdevice.pojo.po.CsEquipmentDeliveryPO;
import com.njcn.csdevice.pojo.po.CsLinePO;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.io.Serializable;
import java.util.List;
/**
* @author xy
*/ //台账信息
@Data
public class CldLedgerVo implements Serializable {
@ApiModelProperty("工程id")
private String engineeringId;
@ApiModelProperty(value = "工程名称")
private String engineeringName;
@ApiModelProperty(value = "")
private String province;
@ApiModelProperty(value = "")
private String city;
@ApiModelProperty(value = "工程描述")
private String engineeringDescription;
@ApiModelProperty(value = "项目信息")
private List<AppProjectPO> projectInfoList;
@ApiModelProperty(value = "设备信息")
private List<CsEquipmentDeliveryPO> deviceInfoList;
@ApiModelProperty(value = "监测点信息")
private List<CsLinePO> lineInfoList;
}

View File

@@ -0,0 +1,42 @@
package com.njcn.csdevice.pojo.vo;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.io.Serializable;
import java.time.LocalDateTime;
/**
* @author xy
* 日志信息
*/
@Data
public class CldLogsVo implements Serializable {
@ApiModelProperty("工程名称")
private String engineeringName;
@ApiModelProperty("项目名称")
private String projectName;
@ApiModelProperty("设备名称")
private String deviceName;
@ApiModelProperty("监测点名称")
private String lineName;
@ApiModelProperty("补召类型")
private String log;
@ApiModelProperty("补召时间")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private LocalDateTime logTime;
@ApiModelProperty("状态")
private String status;
@ApiModelProperty("结果")
private String result;
}

View File

@@ -83,4 +83,15 @@ public class CsEquipmentDeliveryVO extends BaseEntity {
@ApiModelProperty(value="设备当前流程状态")
private Integer process ;
@ApiModelProperty(value="装置使用状态(0:停用 1:启用)")
private Integer usageStatus ;
@ApiModelProperty(value="装置与MQTT服务器连接状态")
private String connectStatus ;
private Integer sort;
@ApiModelProperty(value="前置服务器id")
private String nodeId ;
}

View File

@@ -23,13 +23,25 @@ public class CsLedgerVO implements Serializable {
@ApiModelProperty(name = "pid",value = "父id")
private String pid;
@ApiModelProperty(name = "pids",value = "父id集合")
private String pids;
@ApiModelProperty(name = "name",value = "名称")
private String name;
@ApiModelProperty(name = "path",value = "拓扑图路径")
private String path;
@ApiModelProperty(name = "provinceId",value = "省Id")
private String provinceId;
@ApiModelProperty(name = "cityId",value = "市Id")
private String cityId;
@ApiModelProperty(name = "area",value = "区域")
private String area;
@ApiModelProperty(name = "remark",value = "备注")
private String remark;
@@ -45,6 +57,18 @@ public class CsLedgerVO implements Serializable {
@ApiModelProperty(name = "nDid",value = "nDid")
private String nDId;
@ApiModelProperty(name = "type",value = "类型 项目 工程 装置 监测点")
private String type;
@ApiModelProperty(name = "lineType",value = "监测点类型 0:治理监测点 1:电能质量监测点")
private Integer lineType;
@ApiModelProperty(name = "conType",value = "接线方式 0-星型 1-角型 2-V型")
private Integer conType;
@ApiModelProperty(name = "process",value = "流程状态")
private Integer process;
@ApiModelProperty(name = "children",value = "子节点")
private List<CsLedgerVO> children = new ArrayList<>();

View File

@@ -4,6 +4,8 @@ import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;
import java.math.BigDecimal;
import java.time.LocalDateTime;
/**
@@ -12,7 +14,7 @@ import java.time.LocalDateTime;
* @date 2023/6/19
*/
@Data
public class DataGroupEventVO {
public class DataGroupEventVO {
@ApiModelProperty("id")
private String id;
@@ -26,6 +28,12 @@ public class DataGroupEventVO {
@ApiModelProperty("监测点名称")
private String lineName;
@ApiModelProperty("装置ID")
private String deviceId;
@ApiModelProperty("装置名称")
private String devName;
@ApiModelProperty("项目名称")
private String projectName;
@@ -53,4 +61,13 @@ public class DataGroupEventVO {
@ApiModelProperty("暂降幅值")
private Float featureAmplitude;
@ApiModelProperty("映射数据库暂降幅值")
private Double amplitude;
@ApiModelProperty("严重度")
private String severity;
@ApiModelProperty("波形路径")
private String wavePath;
}

View File

@@ -1,7 +1,6 @@
package com.njcn.csdevice.pojo.vo;
import com.njcn.csdevice.pojo.po.CsEquipmentDeliveryPO;
import com.njcn.cswarn.pojo.vo.CsEquipmentAlarmVO;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

View File

@@ -0,0 +1,75 @@
package com.njcn.csdevice.pojo.vo;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.io.Serializable;
import java.util.List;
//台账信息
@Data
public class DeviceInfo implements Serializable {
@ApiModelProperty("终端索引")
private String id;
@ApiModelProperty("终端mac")
private String ip;
@ApiModelProperty("终端型号")
private String devType;
@ApiModelProperty("终端名称")
private String name;
@ApiModelProperty("前置机序号")
private Integer node;
@ApiModelProperty("开启的进程数")
private Integer maxProcessNum;
@ApiModelProperty("对时启动标志")
private boolean rightTime;
@ApiModelProperty("监测点集合")
private List<MonitorInfo> monitorData;
//终端下的监测点信息
@Data
public static class MonitorInfo implements Serializable {
@ApiModelProperty("监测点索引")
private String id;
@ApiModelProperty("名称")
private String name;
@ApiModelProperty("监测点逻辑号")
private String lineNo;
@ApiModelProperty("监测点电压等级")
private String voltageLevel;
@ApiModelProperty("监测点运行状态 0运行1检修2停运3调试4退运")
private Integer status;
@ApiModelProperty("监测点接线方式 0-星型 1-角型 2-V型")
private String ptType;
@ApiModelProperty("装置id")
private String deviceId;
@ApiModelProperty("pt1")
private Double pt1;
@ApiModelProperty("pt2")
private Double pt2;
@ApiModelProperty("ct1")
private Double ct1;
@ApiModelProperty("ct2")
private Double ct2;
}
}

View File

@@ -0,0 +1,68 @@
package com.njcn.csdevice.pojo.vo;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.io.Serializable;
import java.time.LocalDateTime;
import java.util.List;
/**
* @author xy
*/
@Data
public class EachModuleVO implements Serializable {
@ApiModelProperty("模块名称")
private String moduleName;
@ApiModelProperty("模块状态")
private String moduleState;
@ApiModelProperty("模块运行状态数据")
List<HarmonicVo> dataList;
@ApiModelProperty("负载电流数据")
List<DataVo> loadList;
@ApiModelProperty("模块输出电流")
List<DataVo> modOutList;
@ApiModelProperty("模块温度")
List<DataVo> temperatureList;
@Data
public static class HarmonicVo implements Serializable {
@ApiModelProperty("稳态数据时间")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private LocalDateTime time;
@ApiModelProperty("模块状态 0-离线1-运行2-停止3-故障")
private String stateDesc;
@ApiModelProperty("数据类型 0-稳态数据 1-事件数据 2-主动触发")
private Integer dataType;
@ApiModelProperty("事件code")
private String eventCode;
@ApiModelProperty("事件名称")
private String eventName;
}
@Data
public static class DataVo implements Serializable {
@ApiModelProperty("稳态数据时间")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private LocalDateTime time;
@ApiModelProperty("相别")
private String phasicType;
@ApiModelProperty("数据")
private Double data;
}
}

View File

@@ -0,0 +1,135 @@
package com.njcn.csdevice.pojo.vo;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.time.LocalDate;
import java.time.LocalDateTime;
/**
* @author denghuajun
* @date 2022/2/23
* 监测点信息
*/
@Data
@ApiModel
public class LineDetailDataVO {
private String lineId;
@ApiModelProperty(name = "id",value = "监测点序号")
private Integer id;
@ApiModelProperty(name = "lineName",value = "监测点名称")
private String lineName;
@ApiModelProperty(name = "areaName",value = "工程名称")
private String areaName;
@ApiModelProperty(name = "gdName",value = "单位")
private String gdName;
@ApiModelProperty(name = "bdName",value = "部门")
private String bdName;
@ApiModelProperty(name = "scale",value = "电压等级")
private String scale;
@ApiModelProperty(name = "manufacturer",value = "厂家")
private String manufacturer;
@ApiModelProperty(name = "devId",value = "终端Id")
private String devId;
@ApiModelProperty(name = "devName",value = "终端名称")
private String devName;
@ApiModelProperty(name = "ip",value = "网络参数")
private String ip;
@ApiModelProperty(name = "runFlag",value = "终端运行状态")
private String runFlag;
@ApiModelProperty(name = "comFlag",value = "通讯状态")
private String comFlag;
@ApiModelProperty(name = "loadType",value = "干扰源类型")
private String loadType;
@ApiModelProperty(name = "businessType",value = "行业类型")
private String businessType;
@ApiModelProperty(name = "objName",value = "监测点对象名称")
private String objName;
@ApiModelProperty(name = "ptType",value = "接线方式")
private String ptType;
@ApiModelProperty(name = "pt",value = "PT变比")
private String pt;
@ApiModelProperty(name = "ct",value = "CT变比")
private String ct;
@ApiModelProperty(name = "standardCapacity",value = "基准容量MVA")
private Float standardCapacity;
@ApiModelProperty(name = "shortCapacity",value = "最小短路容量MVA")
private Float shortCapacity;
@ApiModelProperty(name = "devCapacity",value = "供电设备容量MVA")
private Float devCapacity;
@ApiModelProperty(name = "dealCapacity",value = "用户协议容量MVA")
private Float dealCapacity;
@ApiModelProperty(name = "powerFlag",value = "电网标志0-电网侧1-非电网侧)")
private Integer powerFlag;
/**
* 测量间隔1-10分钟
*/
@ApiModelProperty(name = "timeInterval",value = "测量间隔1-10分钟")
private Integer timeInterval;
/**
* 监测点拥有者
*/
@ApiModelProperty(name = "owner",value = "监测点拥有者")
private String owner;
/**
* 拥有者职务
*/
@ApiModelProperty(name = "ownerDuty",value = "拥有者职务")
private String ownerDuty;
/**
* 拥有者联系方式
*/
@ApiModelProperty(name = "ownerTel",value = "拥有者联系方式")
private String ownerTel;
/**
* 接线图
*/
@ApiModelProperty(name = "wiringDiagram",value = "接线图")
private String wiringDiagram;
@ApiModelProperty(name = "ptPhaseType",value = "监测点接线相别0单相,1三相默认三相")
private Integer ptPhaseType;
@ApiModelProperty(name = "投运日期")
private LocalDate loginTime;
@ApiModelProperty(name = "最新数据时间")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private LocalDateTime updateTime;
@ApiModelProperty(name = "监测对象信息ID")
private String objId;
@ApiModelProperty(name = "对象类型大类")
private String bigObjType;
}

View File

@@ -0,0 +1,120 @@
package com.njcn.csdevice.pojo.vo;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
* @author denghuajun
* @date 2022/2/23
*
*/
@Data
@ApiModel
public class LineOverLimitVO {
@ApiModelProperty(name = "freqDev",value = "频率限值")
private Float freqDev;
@ApiModelProperty(name = "voltageDev",value = "电压上偏差限值")
private Float voltageDev;
@ApiModelProperty(name = "uvoltageDev",value = "电压下偏差限值")
private Float uvoltageDev;
@ApiModelProperty(name = "ubalance",value = "三相电压不平衡度限值")
private Float ubalance;
@ApiModelProperty(name = "iNeg",value = "负序电流")
private Float iNeg;
@ApiModelProperty(name = "flicker",value = "长时闪变限值")
private Float flicker;
@ApiModelProperty(name = "uaberrance",value = "电压总谐波畸变率限值")
private Float uaberrance;
@ApiModelProperty(name = "oddHarm",value = "奇次谐波含有率限值")
private Float oddHarm;
@ApiModelProperty(name = "evenHarm",value = "偶次谐波含有率限值")
private Float evenHarm;
@ApiModelProperty(name = "iharm2",value = "2次谐波电流幅值限值")
private Float iharm2;
@ApiModelProperty(name = "iharm3",value = "3次谐波电流幅值限值")
private Float iharm3;
@ApiModelProperty(name = "iharm4",value = "4次谐波电流幅值限值")
private Float iharm4;
@ApiModelProperty(name = "iharm5",value = "5次谐波电流幅值限值")
private Float iharm5;
@ApiModelProperty(name = "iharm6",value = "6次谐波电流幅值限值")
private Float iharm6;
@ApiModelProperty(name = "iharm7",value = "7次谐波电流幅值限值")
private Float iharm7;
@ApiModelProperty(name = "iharm8",value = "8次谐波电流幅值限值")
private Float iharm8;
@ApiModelProperty(name = "iharm9",value = "9次谐波电流幅值限值")
private Float iharm9;
@ApiModelProperty(name = "iharm10",value = "10次谐波电流幅值限值")
private Float iharm10;
@ApiModelProperty(name = "iharm11",value = "11次谐波电流幅值限值")
private Float iharm11;
@ApiModelProperty(name = "iharm12",value = "12次谐波电流幅值限值")
private Float iharm12;
@ApiModelProperty(name = "iharm13",value = "13次谐波电流幅值限值")
private Float iharm13;
@ApiModelProperty(name = "iharm14",value = "14次谐波电流幅值限值")
private Float iharm14;
@ApiModelProperty(name = "iharm15",value = "15次谐波电流幅值限值")
private Float iharm15;
@ApiModelProperty(name = "iharm16",value = "16次谐波电流幅值限值")
private Float iharm16;
@ApiModelProperty(name = "iharm17",value = "17次谐波电流幅值限值")
private Float iharm17;
@ApiModelProperty(name = "iharm18",value = "18次谐波电流幅值限值")
private Float iharm18;
@ApiModelProperty(name = "iharm19",value = "19次谐波电流幅值限值")
private Float iharm19;
@ApiModelProperty(name = "iharm20",value = "20次谐波电流幅值限值")
private Float iharm20;
@ApiModelProperty(name = "iharm21",value = "21次谐波电流幅值限值")
private Float iharm21;
@ApiModelProperty(name = "iharm22",value = "22次谐波电流幅值限值")
private Float iharm22;
@ApiModelProperty(name = "iharm23",value = "23次谐波电流幅值限值")
private Float iharm23;
@ApiModelProperty(name = "iharm24",value = "24次谐波电流幅值限值")
private Float iharm24;
@ApiModelProperty(name = "iharm25",value = "25次谐波电流幅值限值")
private Float iharm25;
@ApiModelProperty(name = "inUharm",value = "0.5-1.5次间谐波电压幅值限值")
private Float inUharm;
@ApiModelProperty(name = "inUharm16",value = "2.5-15.5次间谐波电压幅值限值")
private Float inUharm16;
}

View File

@@ -0,0 +1,31 @@
package com.njcn.csdevice.pojo.vo;
import com.njcn.csdevice.pojo.po.CsEquipmentDeliveryPO;
import com.njcn.csdevice.pojo.po.Node;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.io.Serializable;
import java.util.List;
/**
* @author xy
*/
@Data
public class NodeProcessDeviceVo implements Serializable {
private Node node;
private List<ProcessDevice> processDeviceList;
@Data
@EqualsAndHashCode(callSuper = false)
public static class ProcessDevice implements Serializable{
private Integer processNo;
private String processState;
private List<CsEquipmentDeliveryPO> deviceInfoList;
}
}

View File

@@ -0,0 +1,30 @@
package com.njcn.csdevice.pojo.vo;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.time.LocalDateTime;
@Data
public class PqSensitiveUserLineVO {
@ApiModelProperty("治理对象")
private String sensitiveUser;
@ApiModelProperty("监测点ID")
private String lineId;
@ApiModelProperty("测点名称")
private String lineName;
@ApiModelProperty("是否治理")
private String govern;
@ApiModelProperty("电压等级")
private double volGrade;
@ApiModelProperty("监测类型")
private String position;
@ApiModelProperty("运行状态")
private String runStatus;
@ApiModelProperty("报告文件")
private String reportFilePath;
@ApiModelProperty("最新数据时间")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
private LocalDateTime latestTime;
}

View File

@@ -22,6 +22,9 @@ public class RecordVo {
@ApiModelProperty("名称")
private String itemName;
@ApiModelProperty("监测点id")
private String lineId;
@ApiModelProperty("数据起始时间")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private LocalDateTime startTime;
@@ -30,6 +33,9 @@ public class RecordVo {
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private LocalDateTime endTime;
@ApiModelProperty("持续时间")
private String lastTime;
@ApiModelProperty("测试位置")
private String location;
@@ -66,6 +72,9 @@ public class RecordVo {
@ApiModelProperty("电压接线方式")
private String volConType;
@ApiModelProperty("基础数据集合ID")
private List<String> list;
@Data
public static class RecordItemVo{

View File

@@ -0,0 +1,383 @@
package com.njcn.csdevice.utils;
import com.njcn.csdevice.pojo.po.Overlimit;
import com.njcn.device.biz.enums.RunFlagEnum;
import com.njcn.system.enums.DicDataEnum;
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.util.Objects;
/**
* pqs
* 限值计算工具类
*
* @author cdf
* @date 2023/5/15
*/
public class COverlimitUtil {
/**
* 谐波电流系数
*/
private static final double[][] ARR = {
{78, 62, 39, 62, 26, 44, 19, 21, 16, 28, 13, 24, 11, 12, 9.7, 18, 8.6, 16, 7.8, 8.9, 7.1, 14, 6.5, 12, 6.0, 6.9, 5.6, 11, 5.2, 10, 4.9, 5.6, 4.6, 8.9, 4.3, 8.4, 4.1, 4.8, 3.9, 7.6, 3.7, 7.2, 3.5, 4.1, 3.4, 6.6, 3.3, 6.3, 3.1},
{43, 34, 21, 34, 14, 24, 11, 11, 8.5, 16, 7.1, 13, 6.1, 6.8, 5.3, 10, 4.7, 9, 4.3, 4.9, 3.9, 7.4, 3.6, 6.8, 3.3, 3.8, 3.1, 5.9, 2.9, 5.5, 2.7, 3.1, 2.5, 4.9, 2.4, 4.6, 2.3, 2.6, 2.2, 4.1, 2.0, 4.0, 2.0, 2.3, 1.9, 3.6, 1.8, 3.5, 1.7},
{26, 20, 13, 20, 8.5, 15, 6.4, 6.8, 5.1, 9.3, 4.3, 7.9, 3.7, 4.1, 3.2, 6, 2.8, 5.4, 2.6, 2.9, 2.3, 4.5, 2.1, 4.1, 2.0, 2.2, 1.9, 3.4, 1.7, 3.2, 1.6, 1.8, 1.5, 2.9, 1.4, 2.7, 1.4, 1.5, 1.3, 2.4, 1.2, 2.3, 1.2, 1.3, 1.1, 2.1, 1.1, 2.0, 1.0},
{15, 12, 7.7, 12, 5.1, 8.8, 3.8, 4.1, 3.1, 5.6, 2.6, 4.7, 2.2, 2.5, 1.9, 3.6, 1.7, 3.2, 1.5, 1.8, 1.4, 2.7, 1.3, 2.5, 1.2, 1.3, 1.1, 2.1, 1.0, 1.9, 0.9, 1.1, 0.9, 1.7, 0.8, 1.6, 0.8, 0.9, 0.8, 1.5, 0.7, 1.4, 0.7, 0.8, 0.7, 1.3, 0.6, 1.2, 0.6},
{16, 13, 8.1, 13, 5.4, 9.3, 4.1, 4.3, 3.3, 5.9, 2.7, 5, 2.3, 2.6, 2, 3.8, 1.8, 3.4, 1.6, 1.9, 1.5, 2.8, 1.4, 2.6, 1.2, 1.4, 1.1, 2.2, 1.1, 2.1, 1.0, 1.2, 0.9, 1.9, 0.9, 1.8, 0.8, 1.0, 0.8, 1.6, 0.8, 1.5, 0.7, 0.9, 0.7, 1.4, 0.7, 1.3, 0.6},
{12, 9.6, 6, 9.6, 4, 6.8, 3, 3.2, 2.4, 4.3, 2, 3.7, 1.7, 1.9, 1.5, 2.8, 1.3, 2.5, 1.2, 1.4, 1.1, 2.1, 1, 1.9, 0.9, 1.1, 0.9, 1.7, 0.8, 1.5, 0.8, 0.9, 0.7, 1.4, 0.7, 1.3, 0.6, 0.7, 0.6, 1.2, 0.6, 1.1, 0.5, 0.6, 0.5, 1.0, 0.5, 1.0, 0.5}
};
/**
* 计算监测点限值
* @param voltageLevel 电压等级10kV = 10 220kV = 220
* @param protocolCapacity 协议容量
* @param devCapacity 设备容量
* @param shortCapacity 短路容量
* @param powerFlag 0.用户侧 1.电网侧
* @param lineType 0.主网 1.配网 需要注意配网目前没有四种容量,谐波电流幅值限值,负序电流限值无法计算默认-3.14159
*/
public static Overlimit globalAssemble(Float voltageLevel, Float protocolCapacity, Float devCapacity,
Float shortCapacity, Integer powerFlag, Integer lineType) {
Overlimit overlimit = new Overlimit();
voltageDeviation(overlimit,voltageLevel);
frequency(overlimit);
voltageFluctuation(overlimit,voltageLevel);
voltageFlicker(overlimit,voltageLevel);
totalHarmonicDistortion(overlimit,voltageLevel);
uHarm(overlimit,voltageLevel);
threeVoltageUnbalance(overlimit);
interharmonicCurrent(overlimit,voltageLevel);
if(Objects.equals(lineType, RunFlagEnum.PW_FLAG.getStatus())) {
//配网
Float[] iHarmTem = new Float[49];
for (int i = 0; i <= 48; i++) {
iHarmTem[i] = -3.14159f;
}
overlimit.buildIHarm(iHarmTem);
overlimit.setINeg(-3.14159f);
}else {
//主网
iHarm(overlimit, voltageLevel, protocolCapacity, devCapacity, shortCapacity);
negativeSequenceCurrent(overlimit, voltageLevel, shortCapacity);
}
return overlimit;
}
/**
* 电压偏差限值
*
*/
public static void voltageDeviation(Overlimit overlimit,Float voltageLevel) {
float voltageDev = 3.14159f,uvoltageDev = 3.14159f;
if(voltageLevel <= Float.parseFloat(DicDataEnum.V220.getCode())){
voltageDev = 7.0f;
uvoltageDev=-10.0f;
}else if(voltageLevel>Float.parseFloat(DicDataEnum.V220.getCode())&&voltageLevel<Float.parseFloat(DicDataEnum.KV20.getCode())){
voltageDev = 7.0f;
uvoltageDev=-7.0f;
}else if(voltageLevel>=Float.parseFloat(DicDataEnum.KV20.getCode())&&voltageLevel<Float.parseFloat(DicDataEnum.KV35.getCode())){
voltageDev = 7.0f;
uvoltageDev=-7.0f;
}else if(voltageLevel>=Float.parseFloat(DicDataEnum.KV35.getCode())&&voltageLevel<Float.parseFloat(DicDataEnum.KV66.getCode())){
voltageDev = 10.0f;
uvoltageDev=-10.0f;
}else if(voltageLevel>=Float.parseFloat(DicDataEnum.KV66.getCode())&&voltageLevel<=Float.parseFloat(DicDataEnum.KV110.getCode())){
voltageDev = 7.0f;
uvoltageDev=-3.0f;
}else if(voltageLevel>Float.parseFloat(DicDataEnum.KV110.getCode())){
voltageDev = 10.0f;
uvoltageDev=-10.0f;
}
overlimit.setVoltageDev(voltageDev);
overlimit.setUvoltageDev(uvoltageDev);
}
/**
* 频率偏差
* 默认限值±0.2Hz(即:-0.2 Hz≤限值≤0.2 Hz
*/
public static void frequency(Overlimit overlimit) {
overlimit.setFreqDev(0.2f);
}
/**
* 电压波动
* 对LV、MV0≤限值≤3%对HV0≤限值≤2.5%。
* LV、MV、HV的定义
* 低压LV UN≤1kV
* 中压MV 1kVUN≤35kV
* 高压HV 35kVUN≤220kV
* 超高压EHV220kVUN参照HV执行
*/
public static void voltageFluctuation(Overlimit overlimit, Float voltageLevel) {
if (voltageLevel < Float.parseFloat(DicDataEnum.KV35.getCode())) {
overlimit.setVoltageFluctuation(3.0f);
} else {
overlimit.setVoltageFluctuation(2.5f);
}
}
/**
* 电压闪变
* ≤110kV 1
* 110kV 0.8
*/
public static void voltageFlicker(Overlimit overlimit, Float voltageLevel) {
if (voltageLevel <= Float.parseFloat(DicDataEnum.KV110.getCode())) {
overlimit.setFlicker(1.0f);
} else {
overlimit.setFlicker(0.8f);
}
}
/**
* 总谐波电压畸变率
*
*
*/
public static void totalHarmonicDistortion(Overlimit overlimit, Float voltageLevel) {
float result = 3.14159f;
if (voltageLevel < Float.parseFloat(DicDataEnum.KV6.getCode())) {
result = 5.0f;
} else if(voltageLevel >= Float.parseFloat(DicDataEnum.KV6.getCode()) && voltageLevel <= Float.parseFloat(DicDataEnum.KV20.getCode())){
result = 4.0f;
} else if(voltageLevel >= Float.parseFloat(DicDataEnum.KV35.getCode()) && voltageLevel <= Float.parseFloat(DicDataEnum.KV66.getCode())){
result = 3.0f;
} else if(voltageLevel >= Float.parseFloat(DicDataEnum.KV110.getCode()) && voltageLevel <= Float.parseFloat(DicDataEnum.KV1000.getCode())){
result = 2.0f;
}
overlimit.setUaberrance(result);
}
/**
* 谐波电压含有率
*/
public static void uHarm(Overlimit overlimit, Float voltageLevel) {
float resultOdd = 3.14159f,resultEven = 3.14159f;
if (voltageLevel < Float.parseFloat(DicDataEnum.KV6.getCode())) {
resultOdd = 4.0f;
resultEven = 2.0f;
} else if(voltageLevel >= Float.parseFloat(DicDataEnum.KV6.getCode()) && voltageLevel <= Float.parseFloat(DicDataEnum.KV20.getCode())){
resultOdd = 3.2f;
resultEven = 1.6f;
} else if(voltageLevel >= Float.parseFloat(DicDataEnum.KV35.getCode()) && voltageLevel <= Float.parseFloat(DicDataEnum.KV66.getCode())){
resultOdd = 2.4f;
resultEven = 1.2f;
} else if(voltageLevel >= Float.parseFloat(DicDataEnum.KV110.getCode()) && voltageLevel <= Float.parseFloat(DicDataEnum.KV1000.getCode())){
resultOdd = 1.6f;
resultEven = 0.8f;
}
overlimit.buildUharm(resultEven,resultOdd);
}
/**
* 负序电压不平衡(三相电压不平衡度)
*
*/
public static void threeVoltageUnbalance(Overlimit overlimit) {
overlimit.setUbalance(2.0f);
overlimit.setShortUbalance(4.0f);
}
/*---------------------------------谐波电流限值start-----------------------------------*/
/**
* 谐波电流限值
*/
public static void iHarm(Overlimit overlimit, Float voltageLevel,Float protocolCapacity,Float devCapacity,Float shortCapacity) {
float calCap = shortCapacity/getDlCapByVoltageLevel(voltageLevel);
//24谐波电流幅值
Float[] iHarmTem = new Float[49];
for (int i = 0; i <= 48; i++) {
float inHarm = iHarmCalculate(i+2,voltageLevel,protocolCapacity,devCapacity,calCap);
iHarmTem[i] = inHarm;
}
overlimit.buildIHarm(iHarmTem);
}
/**
* @Description: iHarmCalculate
* @Param: protocolCapacity 协议容量 devCapacity设备容量 calCap 短路容量
* @return: float
* @Author: clam
* @Date: 2024/2/4
*/
private static float iHarmCalculate(int nHarm, Float voltageLevel,float protocolCapacity, float devCapacity,float calCap) {
double tag = calCap*getHarmTag(nHarm,voltageLevel);
Double limit = getHarmonicLimit(nHarm,tag,new BigDecimal(String.valueOf(devCapacity)).doubleValue(),new BigDecimal(String.valueOf(protocolCapacity)).doubleValue());
BigDecimal bigDecimal = BigDecimal.valueOf(limit).setScale(4,RoundingMode.HALF_UP);
return bigDecimal.floatValue();
}
/**
* 电流谐波限值
*/
private static Double getHarmTag(Integer iCount, Float voltageLevel) {
int x, y;
if (voltageLevel < DicDataEnum.KV6.getValue()) {
x = 0;
} else if (voltageLevel<DicDataEnum.KV10.getValue()) {
x = 1;
} else if (voltageLevel<DicDataEnum.KV35.getValue()) {
x = 2;
} else if (voltageLevel<DicDataEnum.KV66.getValue()) {
x = 3;
} else if (voltageLevel<DicDataEnum.KV110.getValue()) {
x = 4;
} else {
x = 5;
}
y = iCount - 2;
return ARR[x][y];
}
/**
* 相位叠加系数的取值
*/
public static Double getHarmonicLimit(Integer times, double iTag, double supply, double user) {
if (supply == 0) {
return 0.0;
}
double coefficient = 2.0;
if (times == 3) {
coefficient = 1.1;
} else if (times == 5) {
coefficient = 1.2;
} else if (times == 7) {
coefficient = 1.4;
} else if (times == 11) {
coefficient = 1.8;
} else if (times == 13) {
coefficient = 1.9;
}
BigDecimal bd = new BigDecimal(iTag * Math.pow((user / supply), (1 / coefficient)));
bd = bd.setScale(6, RoundingMode.HALF_UP);
return Double.parseDouble(bd.toString());
}
/**
* 根据电压等级获取基准短路容量
*/
public static float getDlCapByVoltageLevel(Float voltageLevel){
float capValue;
if(voltageLevel< DicDataEnum.KV06.getValue()){
capValue = 10;
}else if(voltageLevel<DicDataEnum.KV20.getValue()){
capValue = 100;
}else if(voltageLevel<DicDataEnum.KV35.getValue()){
capValue = 200;
}else if(voltageLevel<DicDataEnum.KV66.getValue()){
capValue = 250;
}else if(voltageLevel<DicDataEnum.KV110.getValue()){
capValue = 500;
}else if(voltageLevel<DicDataEnum.KV220.getValue()){
capValue = 750;
}else if(voltageLevel<DicDataEnum.KV330.getValue()){
capValue = 2000;
}else if(voltageLevel<DicDataEnum.KV500.getValue()){
capValue = 3000;
}else if(voltageLevel<DicDataEnum.KV750.getValue()){
capValue = 4500;
}else if(voltageLevel<DicDataEnum.KV1000.getValue()){
capValue = 7000;
}else {
capValue = 9000;
}
return capValue;
}
/*---------------------------------谐波电流限值end-----------------------------------*/
/**
* 间谐波电压含有率
*/
public static void interharmonicCurrent(Overlimit overlimit,Float voltageLevel){
float aValue,bValue;
if(voltageLevel <= DicDataEnum.KV1.getValue()){
aValue = 0.2f;bValue = 0.5f;
}else {
aValue = 0.16f;bValue = 0.4f;
}
overlimit.setInuharm1(aValue);
overlimit.setInuharm2(aValue);
overlimit.setInuharm3(bValue);
overlimit.setInuharm4(bValue);
overlimit.setInuharm5(bValue);
overlimit.setInuharm6(bValue);
overlimit.setInuharm7(bValue);
overlimit.setInuharm8(bValue);
overlimit.setInuharm9(bValue);
overlimit.setInuharm10(bValue);
overlimit.setInuharm11(bValue);
overlimit.setInuharm12(bValue);
overlimit.setInuharm13(bValue);
overlimit.setInuharm14(bValue);
overlimit.setInuharm15(bValue);
overlimit.setInuharm16(bValue);
}
/**
* 负序电流限值
*/
public static void negativeSequenceCurrent(Overlimit overlimit,Float voltageLevel,Float shortCapacity){
double v = (0.013*shortCapacity*1000)/(getUl(voltageLevel)*Math.sqrt(3));
overlimit.setINeg((float) v);
}
/**
* 获取额定线电压
*/
private static float getUl(Float voltageLevel){
float value;
if(voltageLevel<DicDataEnum.KV6.getValue()){
value = 0.4f;
}else if(voltageLevel<DicDataEnum.KV10.getValue()){
value = 6.3f;
}else if(voltageLevel<DicDataEnum.KV20.getValue()){
value = 10.5f;
}else if(voltageLevel<DicDataEnum.KV35.getValue()){
value = 21.0f;
}else if(voltageLevel<DicDataEnum.KV66.getValue()){
value = 36.5f;
}else if(voltageLevel<DicDataEnum.KV110.getValue()){
value = 69.0f;
}else if(voltageLevel<DicDataEnum.KV220.getValue()){
value = 115.5f;
}else if(voltageLevel<DicDataEnum.KV330.getValue()){
value = 230.0f;
}else {
value = 345.0f;
}
return value;
}
public static void main(String[] args) {
System.out.println("sss");
float aa = iHarmCalculate(9,500f,10,10,0.002222222222f);
System.out.println(aa);
}
}

View File

@@ -0,0 +1,30 @@
package com.njcn.csdevice.utils;
import com.njcn.common.pojo.exception.BusinessException;
import java.util.regex.Pattern;
/**
* Description:
* Date: 2024/12/17 14:29【需求编号】
*
* @author clam
* @version V1.0.0
*/
public class StringUtil {
public static void containsSpecialCharacters(String str) {
// 定义包含特殊字符的正则表达式
String specialChars = "[<>%'%;()&+/\\\\-\\\\\\\\_|@*?#$!,.]|html";
// 创建Pattern对象
Pattern pattern = Pattern.compile(specialChars);
// 使用Pattern对象的matcher方法检查字符串
if(pattern.matcher(str).find()){
throw new BusinessException("存在特殊字符[<>\"'%;()&+//\\-———|@*_?#$!,.html]");
}
}
public static void main(String[] args) {
StringUtil.containsSpecialCharacters("*");
}
}

View File

@@ -76,8 +76,7 @@
<dependency>
<groupId>com.njcn</groupId>
<artifactId>user-api</artifactId>
<version>1.0.0</version>
<scope>compile</scope>
<version>${project.version}</version>
</dependency>
<dependency>
<groupId>com.baomidou</groupId>
@@ -89,12 +88,6 @@
<artifactId>hutool-all</artifactId>
<version>5.8.5</version>
</dependency>
<dependency>
<groupId>com.njcn</groupId>
<artifactId>cs-warn-api</artifactId>
<version>1.0.0</version>
<scope>compile</scope>
</dependency>
<!-- zxing生成二维码 -->
<dependency>
@@ -107,9 +100,6 @@
<groupId>com.njcn</groupId>
<version>1.0.0</version>
</dependency>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi</artifactId>
@@ -139,8 +129,7 @@
<dependency>
<groupId>com.njcn</groupId>
<artifactId>cs-harmonic-api</artifactId>
<version>1.0.0</version>
<scope>compile</scope>
<version>${project.version}</version>
<exclusions>
<exclusion>
<groupId>com.njcn</groupId>
@@ -151,20 +140,29 @@
<dependency>
<groupId>com.njcn</groupId>
<artifactId>cs-system-api</artifactId>
<version>1.0.0</version>
<scope>compile</scope>
<version>${project.version}</version>
</dependency>
<dependency>
<groupId>com.njcn</groupId>
<artifactId>access-api</artifactId>
<version>1.0.0</version>
<scope>compile</scope>
<version>${project.version}</version>
</dependency>
<dependency>
<groupId>com.njcn</groupId>
<artifactId>common-mq</artifactId>
<version>1.0.0</version>
</dependency>
<dependency>
<groupId>org.apache.rocketmq</groupId>
<artifactId>rocketmq-spring-boot-starter</artifactId>
<version>2.2.2</version>
</dependency>
<dependency>
<groupId>com.njcn.platform</groupId>
<artifactId>message-api</artifactId>
<version>1.0.0</version>
</dependency>
</dependencies>
<build>

View File

@@ -0,0 +1,104 @@
package com.njcn.csdevice.controller;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.njcn.common.pojo.annotation.OperateInfo;
import com.njcn.common.pojo.enums.common.LogEnum;
import com.njcn.common.pojo.enums.response.CommonResponseEnum;
import com.njcn.common.pojo.response.HttpResult;
import com.njcn.common.utils.HttpResultUtil;
import com.njcn.csdevice.pojo.po.Overlimit;
import com.njcn.csdevice.pojo.vo.LineOverLimitVO;
import com.njcn.csdevice.service.IOverLimitService;
import com.njcn.web.controller.BaseController;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiOperation;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import springfox.documentation.annotations.ApiIgnore;
import java.util.List;
import java.util.Map;
@Slf4j
@RestController
@RequiredArgsConstructor
@Api(tags = "监测点限值信息查询")
public class PQOverlimitController extends BaseController {
private final IOverLimitService overLimitService;
// -------- 3个重复的代码 ----------
/**
* 来源于CommTerminalController的getOverLimitData
*/
@OperateInfo(info = LogEnum.BUSINESS_COMMON)
@PostMapping("/commTerminal/getOverLimitData")
@ApiOperation("根据监测点id获取越限数值")
@ApiImplicitParam(name = "id", value = "监测点id", required = true)
public HttpResult<Overlimit> getOverLimitDataTerminal(@RequestParam("id") String id) {
String methodDescribe = getMethodDescribe("getOverLimitData");
Overlimit result = overLimitService.getOverLimitDataById(id);
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, result, methodDescribe);
}
@OperateInfo(info = LogEnum.BUSINESS_COMMON)
@PostMapping("/line/getOverLimitData")
@ApiOperation("根据监测点id获取越限数值")
@ApiImplicitParam(name = "id", value = "监测点id", required = true)
public HttpResult<Overlimit> getOverLimitData(@RequestParam("id") String id) {
String methodDescribe = getMethodDescribe("getOverLimitData");
Overlimit result = overLimitService.getOverLimitDataById(id);
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, result, methodDescribe);
}
@OperateInfo(info = LogEnum.BUSINESS_COMMON)
@PostMapping("/line/getLineOverLimitData")
@ApiOperation("根据监测点id获取越限详情")
@ApiImplicitParam(name = "id", value = "监测点id", required = true)
public HttpResult<LineOverLimitVO> getLineOverLimitData(@RequestParam("id") String id) {
String methodDescribe = getMethodDescribe("getLineOverLimitData");
LineOverLimitVO result = overLimitService.getLineOverLimitDataById(id);
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, result, methodDescribe);
}
@OperateInfo(info = LogEnum.BUSINESS_COMMON)
@PostMapping("/overLimit/getOverLimitByLineIds")
@ApiOperation("监测点集合获取限值")
@ApiImplicitParam(name = "lineIds", value = "监测点ids", required = true)
@ApiIgnore
public HttpResult<List<Overlimit>> getOverLimitByLineIds(@RequestBody List<String> lineIds){
String methodDescribe = getMethodDescribe("getOverLimitByLineIds");
List<Overlimit> overLimitList= overLimitService.list(new LambdaQueryWrapper<Overlimit>().in(Overlimit::getId,lineIds));
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, overLimitList, methodDescribe);
}
@OperateInfo(info = LogEnum.BUSINESS_COMMON)
@PostMapping("/commTerminal/getOverLimitDataByIds")
@ApiOperation("根据监测点id集合获取越限数值")
@ApiImplicitParam(name = "ids", value = "监测点id集合", required = true)
public HttpResult<List<Overlimit>> getOverLimitDataByIds(@RequestBody List<String> ids) {
String methodDescribe = getMethodDescribe("getOverLimitDataByIds");
List<Overlimit> result = overLimitService.listByIds(ids);
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, result, methodDescribe);
}
@OperateInfo(info = LogEnum.BUSINESS_COMMON)
@PostMapping("/overLimit/getLimitMapsByLineIds")
@ApiOperation("监测点集合获取限值")
@ApiImplicitParam(name = "lineIds", value = "监测点ids", required = true)
@ApiIgnore
public HttpResult<List<Map<String, Object>>> getLimitMapsByLineIds(@RequestBody List<String> lineIds){
String methodDescribe = getMethodDescribe("getLimitMapsByLineIds");
List<Map<String, Object>> overLimitList= overLimitService.listMaps(new LambdaQueryWrapper<Overlimit>().in(Overlimit::getId,lineIds));
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, overLimitList, methodDescribe);
}
}

View File

@@ -0,0 +1,20 @@
package com.njcn.csdevice.controller.annotation;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
/**
*
* 动态注解类
*
* @author hongawen
* @version 1.0
* @data 2024/11/7 11:00
*/
@Target({ElementType.TYPE,ElementType.METHOD,ElementType.FIELD})
@Retention(RetentionPolicy.RUNTIME)
public @interface InsertBean {
}

View File

@@ -0,0 +1,20 @@
package com.njcn.csdevice.controller.annotation;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
/**
*
* 动态注解类
*
* @author hongawen
* @version 1.0
* @data 2024/11/7 11:00
*/
@Target({ElementType.TYPE,ElementType.METHOD,ElementType.FIELD})
@Retention(RetentionPolicy.RUNTIME)
public @interface QueryBean {
}

View File

@@ -0,0 +1,78 @@
package com.njcn.csdevice.controller.bean;
import com.njcn.common.pojo.exception.BusinessException;
import com.njcn.csdevice.controller.annotation.InsertBean;
import com.njcn.csdevice.controller.annotation.QueryBean;
import org.springframework.beans.BeansException;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.beans.factory.config.BeanPostProcessor;
import org.springframework.context.ApplicationContext;
import org.springframework.stereotype.Component;
import org.springframework.stereotype.Controller;
import org.springframework.stereotype.Service;
import org.springframework.web.bind.annotation.RestController;
import java.lang.reflect.Field;
/**
* @author hongawen
* @version 1.0
* @data 2024/11/7 11:31
*/
@Component
public class DynamicBeanProcessor implements BeanPostProcessor {
@Autowired
private ApplicationContext context;
/**
* 查询配置
*/
@Value("${data.source.query:Influxdb}")
private String queryParam;
/**
* 插入配置
*/
@Value("${data.source.insert:Relation}")
private String insertParam;
@Override
public Object postProcessBeforeInitialization(Object bean, String beanName) throws BeansException {
if (bean.getClass().isAnnotationPresent(Controller.class) || bean.getClass().isAnnotationPresent(RestController.class) || bean.getClass().isAnnotationPresent(Service.class)) {
processFields(bean);
}
return bean;
}
private void processFields(Object bean) {
Field[] fields = bean.getClass().getDeclaredFields();
for (Field field : fields) {
String beanId;
Class<?> type = field.getType();
// 判断是否是接口类型,并且是否是注解指定类库
if (type.isInterface() && (field.isAnnotationPresent(QueryBean.class) || field.isAnnotationPresent(InsertBean.class))) {
String name = type.getName();
beanId = name.substring(name.lastIndexOf(".") + 2);
if (field.isAnnotationPresent(QueryBean.class)) {
beanId = queryParam + beanId + "Impl";
} else if (field.isAnnotationPresent(InsertBean.class)) {
beanId = insertParam + beanId + "Impl";
}
try {
field.setAccessible(true);
field.set(bean, context.getBean(beanId));
} catch (IllegalAccessException e) {
throw new BusinessException("获取动态实现类失败");
}
}
}
}
@Override
public Object postProcessAfterInitialization(Object bean, String beanName) throws BeansException {
return bean;
}
}

View File

@@ -0,0 +1,78 @@
package com.njcn.csdevice.controller.data;
import com.njcn.common.pojo.annotation.OperateInfo;
import com.njcn.common.pojo.constant.OperateType;
import com.njcn.common.pojo.enums.common.LogEnum;
import com.njcn.common.pojo.enums.response.CommonResponseEnum;
import com.njcn.common.pojo.response.HttpResult;
import com.njcn.common.utils.HttpResultUtil;
import com.njcn.csdevice.controller.annotation.QueryBean;
import com.njcn.csdevice.param.LineCountEvaluateParam;
import com.njcn.csdevice.pojo.dto.PqsCommunicateDto;
import com.njcn.csdevice.service.ICsCommunicateService;
import com.njcn.web.controller.BaseController;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Controller;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.List;
/**
* @author hongawen
* @version 1.0
* @data 2024/11/6 19:48
*/
@Validated
@Slf4j
@Controller
@RestController
@RequestMapping("/pqsCommunicate")
@Api(tags = "获取装置上下线记录")
public class PqsCommunicateController extends BaseController {
@QueryBean
private ICsCommunicateService pqsCommunicateCvtQuery;
@OperateInfo(info = LogEnum.BUSINESS_COMMON)
@PostMapping("/getRawDataLatest")
@ApiOperation("获取取出最新装置数据")
public HttpResult<List<PqsCommunicateDto>> getRawDataLatest(@RequestBody LineCountEvaluateParam lineParam) {
String methodDescribe = getMethodDescribe("getRawDataLatest");
List<PqsCommunicateDto> rawData = pqsCommunicateCvtQuery.getRawDataLatest(lineParam);
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, rawData, methodDescribe);
}
@OperateInfo(info = LogEnum.BUSINESS_COMMON)
@PostMapping("/getRawData")
@ApiOperation("获取原始数据")
public HttpResult<List<PqsCommunicateDto>> getRawData(@RequestBody LineCountEvaluateParam lineParam) {
String methodDescribe = getMethodDescribe("getRawData");
List<PqsCommunicateDto> rawData = pqsCommunicateCvtQuery.getRawData(lineParam);
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, rawData, methodDescribe);
}
@OperateInfo(info = LogEnum.BUSINESS_COMMON)
@PostMapping("/getRawDataEnd")
@ApiOperation("获取是否有当天最后一条数据")
public HttpResult<List<PqsCommunicateDto>> getRawDataEnd(@RequestBody LineCountEvaluateParam lineParam) {
String methodDescribe = getMethodDescribe("getRawData");
List<PqsCommunicateDto> rawData = pqsCommunicateCvtQuery.getRawDataEnd(lineParam);
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, rawData, methodDescribe);
}
@OperateInfo(info = LogEnum.BUSINESS_COMMON,operateType = OperateType.ADD)
@PostMapping("/insertion")
@ApiOperation("插入数据")
public HttpResult<String> insertion(@RequestBody PqsCommunicateDto pqsCommunicateDto) {
String methodDescribe = getMethodDescribe("insertion");
pqsCommunicateCvtQuery.insertion(pqsCommunicateDto);
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, null, methodDescribe);
}
}

View File

@@ -0,0 +1,60 @@
package com.njcn.csdevice.controller.data;
import com.njcn.common.pojo.annotation.OperateInfo;
import com.njcn.common.pojo.enums.common.LogEnum;
import com.njcn.common.pojo.enums.response.CommonResponseEnum;
import com.njcn.common.pojo.response.HttpResult;
import com.njcn.common.utils.HttpResultUtil;
import com.njcn.csdevice.pojo.po.RStatIntegrityD;
import com.njcn.csdevice.service.IRStatIntegrityDService;
import com.njcn.csharmonic.pojo.param.StatisticsDataParam;
import com.njcn.web.controller.BaseController;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiOperation;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import java.util.List;
/**
* <p>
* 数据完整性日表 前端控制器
* </p>
*
* @author xy
* @since 2025-06-23
*/
@Slf4j
@RestController
@RequestMapping("/rStatIntegrityD")
@Api(tags = "数据完整性接口")
@AllArgsConstructor
public class RStatIntegrityDController extends BaseController {
private final IRStatIntegrityDService irStatIntegrityDService;
@OperateInfo(info = LogEnum.BUSINESS_COMMON)
@PostMapping("/add")
@ApiOperation("新增数据完整性(可根据时间段进行补召)")
@ApiImplicitParam(name = "param", value = "参数", required = true)
public HttpResult<String> addData(@RequestBody @Validated StatisticsDataParam param){
String methodDescribe = getMethodDescribe("addData");
irStatIntegrityDService.addData(param);
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, null, methodDescribe);
}
@OperateInfo(info = LogEnum.BUSINESS_COMMON)
@PostMapping("/list")
@ApiOperation("获取数据")
public HttpResult<List<RStatIntegrityD>> list(@Validated @RequestParam("list") List<String> list, @RequestParam("startTime") String startTime, @RequestParam("endTime") String endTime){
String methodDescribe = getMethodDescribe("list");
List<RStatIntegrityD> result = irStatIntegrityDService.getData(list,startTime,endTime);
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, result, methodDescribe);
}
}

View File

@@ -0,0 +1,60 @@
package com.njcn.csdevice.controller.data;
import com.njcn.common.pojo.annotation.OperateInfo;
import com.njcn.common.pojo.enums.common.LogEnum;
import com.njcn.common.pojo.enums.response.CommonResponseEnum;
import com.njcn.common.pojo.response.HttpResult;
import com.njcn.common.utils.HttpResultUtil;
import com.njcn.csdevice.pojo.po.RStatOnlineRateD;
import com.njcn.csdevice.service.IRStatOnlineRateDService;
import com.njcn.csharmonic.pojo.param.StatisticsDataParam;
import com.njcn.web.controller.BaseController;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiOperation;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import java.util.List;
/**
* <p>
* 在线率日表 前端控制器
* </p>
*
* @author xy
* @since 2025-06-23
*/
@Slf4j
@RestController
@RequestMapping("/rStatOnlineRateD")
@Api(tags = "终端在线率接口")
@AllArgsConstructor
public class RStatOnlineRateDController extends BaseController {
private final IRStatOnlineRateDService rStatOnlineRateDService;
@OperateInfo(info = LogEnum.BUSINESS_COMMON)
@PostMapping("/add")
@ApiOperation("新增终端在线率(可根据时间段进行补召)")
@ApiImplicitParam(name = "param", value = "参数", required = true)
public HttpResult<String> addData(@RequestBody @Validated StatisticsDataParam param){
String methodDescribe = getMethodDescribe("addData");
rStatOnlineRateDService.addData(param);
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, null, methodDescribe);
}
@OperateInfo(info = LogEnum.BUSINESS_COMMON)
@PostMapping("/list")
@ApiOperation("获取数据")
public HttpResult<List<RStatOnlineRateD>> list(@Validated @RequestParam("list") List<String> list, @RequestParam("startTime") String startTime, @RequestParam("endTime") String endTime){
String methodDescribe = getMethodDescribe("list");
List<RStatOnlineRateD> result = rStatOnlineRateDService.getData(list,startTime,endTime);
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, result, methodDescribe);
}
}

View File

@@ -83,5 +83,45 @@ public class CsDataSetController extends BaseController {
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, list, methodDescribe);
}
@OperateInfo(info = LogEnum.BUSINESS_COMMON)
@PostMapping("/getBaseDataSet")
@ApiOperation("获取实时数据-基础数据集")
@ApiImplicitParams({
@ApiImplicitParam(name = "modelId", value = "模板id", required = true),
@ApiImplicitParam(name = "clDev", value = "逻辑子设备标识", required = true)
})
public HttpResult<CsDataSet> getBaseDataSet(@RequestParam("modelId") String modelId,@RequestParam("clDev") Integer clDev){
String methodDescribe = getMethodDescribe("getBaseDataSet");
CsDataSet dataSet = csDataSetService.getBaseDataSet(modelId,clDev);
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, dataSet, methodDescribe);
}
@OperateInfo(info = LogEnum.BUSINESS_COMMON)
@PostMapping("/getHarmonicDataSet")
@ApiOperation("获取实时数据-谐波数据集")
@ApiImplicitParams({
@ApiImplicitParam(name = "modelId", value = "模板id", required = true),
@ApiImplicitParam(name = "clDev", value = "逻辑子设备标识", required = true),
@ApiImplicitParam(name = "target", value = "指标序号", required = true),
})
public HttpResult<CsDataSet> getHarmonicDataSet(@RequestParam("modelId") String modelId,@RequestParam("clDev") Integer clDev,@RequestParam("target") Integer target){
String methodDescribe = getMethodDescribe("getHarmonicDataSet");
CsDataSet dataSet = csDataSetService.getHarmonicDataSet(modelId,clDev,target);
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, dataSet, methodDescribe);
}
@OperateInfo(info = LogEnum.BUSINESS_COMMON)
@PostMapping("/getDataSetByIdx")
@ApiOperation("根据idx获取数据集数据")
@ApiImplicitParams({
@ApiImplicitParam(name = "modelId", value = "模板id", required = true),
@ApiImplicitParam(name = "idx", value = "数据集序号", required = true)
})
public HttpResult<CsDataSet> getDataSetByIdx(@RequestParam("modelId") String modelId,@RequestParam("idx") Integer idx){
String methodDescribe = getMethodDescribe("getDataSetByIdx");
CsDataSet csDataSet = csDataSetService.getDataSetByIdx(modelId,idx);
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, csDataSet, methodDescribe);
}
}

View File

@@ -12,7 +12,11 @@ import com.njcn.csdevice.pojo.vo.CsGroupVO;
import com.njcn.csdevice.pojo.vo.DataGroupTemplateVO;
import com.njcn.csdevice.service.ICsGroupService;
import com.njcn.csharmonic.param.CommonStatisticalQueryParam;
import com.njcn.csharmonic.param.FittingDataQueryParam;
import com.njcn.csharmonic.param.SensitiveUserTrendDataQueryParam;
import com.njcn.csharmonic.param.TrendDataQueryParam;
import com.njcn.csharmonic.pojo.vo.ThdDataTdVO;
import com.njcn.csharmonic.pojo.vo.ThdDataVO;
import com.njcn.system.pojo.po.EleEpdPqd;
import com.njcn.web.controller.BaseController;
import io.swagger.annotations.Api;
@@ -21,9 +25,11 @@ import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import java.util.List;
import java.util.Map;
/**
* <p>
@@ -143,5 +149,39 @@ public class CsGroupController extends BaseController {
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, null, methodDescribe);
}
@OperateInfo(info = LogEnum.BUSINESS_COMMON)
@PostMapping("/trendData")
@ApiOperation("查询指标趋势图数据")
@ApiImplicitParam(name = "param",required = true)
public HttpResult<List<ThdDataVO>> trendData(@RequestBody @Validated TrendDataQueryParam param){
String methodDescribe = getMethodDescribe("trendData");
List<ThdDataVO> list = csGroupService.trendData(param);
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, list, methodDescribe);
}
@OperateInfo(info = LogEnum.BUSINESS_COMMON)
@PostMapping("/fittingData")
@ApiOperation("查询指标拟合图数据")
@ApiImplicitParam(name = "param",required = true)
public HttpResult<List<ThdDataVO>> fittingData(@RequestBody @Validated FittingDataQueryParam param){
String methodDescribe = getMethodDescribe("fittingData");
List<ThdDataVO> list = csGroupService.fittingData(param);
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, list, methodDescribe);
}
@OperateInfo(info = LogEnum.BUSINESS_COMMON)
@PostMapping("/sensitiveUserTrendData")
@ApiOperation("查询监测对象电网侧和负载侧监测点指标趋势对比数据")
@ApiImplicitParam(name = "param",required = true)
public HttpResult<Map<String,List<ThdDataVO>>> sensitiveUserTrendData(@RequestBody @Validated SensitiveUserTrendDataQueryParam param){
String methodDescribe = getMethodDescribe("sensitiveUserTrendData");
Map<String,List<ThdDataVO>> result = csGroupService.sensitiveUserTrendData(param);
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, result, methodDescribe);
}
}

View File

@@ -56,9 +56,10 @@ public class CsLogController extends BaseController {
@ApiOperation("查询日志")
@ApiImplicitParam(name = "baseParam", value = "查询日志参数", required = true)
public HttpResult<IPage<CsLogsPO>> queryLog(@RequestBody BaseParam baseParam){
IPage<CsLogsPO> list = csLogsPOService.queryPage(baseParam);
String methodDescribe = getMethodDescribe("queryLog");
IPage<CsLogsPO> list = csLogsPOService.queryPage(baseParam);
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, list, methodDescribe);
}

View File

@@ -54,7 +54,7 @@ public class DevModelController extends BaseController {
@OperateInfo(info = LogEnum.BUSINESS_COMMON)
@PostMapping("/AuditDevModel")
@ApiOperation("更新/删除出厂设备")
@ApiOperation("更新/删除设备模板参数")
@ApiImplicitParam(name = "csDevModelAuditParm", value = "更新/删除设备模板参数", required = true)
public HttpResult<Boolean> AuditDevModel(@RequestBody @Validated CsDevModelAuditParm csDevModelAuditParm ){
String methodDescribe = getMethodDescribe("AuditDevModel");

View File

@@ -93,8 +93,8 @@ public class DevModelRelationController extends BaseController {
@PostMapping("/getModelByType")
@ApiOperation("根据装置类型查询模板")
@ApiImplicitParams({
@ApiImplicitParam(name = "devId", value = "装置id", required = true),
@ApiImplicitParam(name = "type", value = "模板类型", required = true)
@ApiImplicitParam(name = "devId", value = "装置id", required = true),
@ApiImplicitParam(name = "type", value = "模板类型", required = true)
})
@ApiIgnore
public HttpResult<String> getModelByType(@RequestParam("devId") String devId, @RequestParam("type") Integer type){
@@ -103,4 +103,18 @@ public class DevModelRelationController extends BaseController {
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, modelId, methodDescribe);
}
@OperateInfo(info = LogEnum.BUSINESS_COMMON)
@PostMapping("/updateDataByList")
@ApiOperation("根据装置集合修改模板信息")
@ApiImplicitParams({
@ApiImplicitParam(name = "list", value = "装置id集合", required = true),
@ApiImplicitParam(name = "id", value = "模板id", required = true)
})
@ApiIgnore
public HttpResult<String> updateDataByList(@RequestParam("list") List<String> list, @RequestParam("id") String id){
String methodDescribe = getMethodDescribe("updateDataByList");
csDevModelRelationService.updateDataByList(list,id);
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, null, methodDescribe);
}
}

View File

@@ -1,17 +1,16 @@
package com.njcn.csdevice.controller.equipment;
import cn.hutool.core.collection.CollectionUtil;
import com.github.tocrhz.mqtt.publisher.MqttPublisher;
import com.njcn.common.pojo.annotation.OperateInfo;
import com.njcn.common.pojo.enums.common.LogEnum;
import com.njcn.common.pojo.enums.response.CommonResponseEnum;
import com.njcn.common.pojo.exception.BusinessException;
import com.njcn.common.pojo.response.HttpResult;
import com.njcn.common.utils.HttpResultUtil;
import com.njcn.csdevice.enums.AlgorithmResponseEnum;
import com.njcn.csdevice.service.DeviceFtpService;
import com.njcn.csharmonic.pojo.vo.MakeUpVo;
import com.njcn.redis.utils.RedisUtil;
import com.njcn.web.controller.BaseController;
import com.njcn.web.utils.RequestUtil;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
@@ -24,7 +23,6 @@ import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import java.util.List;
import java.util.Objects;
/**
* @author xy
@@ -38,6 +36,7 @@ public class DeviceFtpController extends BaseController {
private final DeviceFtpService deviceFtpService;
private final RedisUtil redisUtil;
private final MqttPublisher publisher;
@OperateInfo(info = LogEnum.BUSINESS_COMMON)
@PostMapping("/askDeviceRootPath")
@@ -61,9 +60,6 @@ public class DeviceFtpController extends BaseController {
public HttpResult<List<MakeUpVo>> askDeviceFileOrDir(@RequestParam("nDid") String nDid, @RequestParam("name") String name, @RequestParam("type") String type){
String methodDescribe = getMethodDescribe("askDeviceFileOrDir");
List<MakeUpVo> list = deviceFtpService.askDeviceFileOrDir(nDid,name,type);
if (CollectionUtil.isEmpty(list) && Objects.equals(type,"file")) {
throw new BusinessException(AlgorithmResponseEnum.ASK_DEVICE_DIR_ERROR);
}
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, list, methodDescribe);
}
@@ -77,16 +73,22 @@ public class DeviceFtpController extends BaseController {
@ApiImplicitParam(name = "fileCheck", value = "文件校验码", required = true)
})
public HttpResult<String> downloadFile(@RequestParam("nDid") String nDid, @RequestParam("name") String name, @RequestParam("size") Integer size, @RequestParam("fileCheck") String fileCheck){
String methodDescribe = getMethodDescribe("downloadFile");
String result = deviceFtpService.downloadFile(nDid,name,size,fileCheck);
redisUtil.delete("downloadFilePath:"+name);
redisUtil.delete("fileCheck"+name);
redisUtil.delete("fileDowning:"+nDid);
if (Objects.isNull(result)) {
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.FAIL, null, methodDescribe);
} else {
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, result, methodDescribe);
}
redisUtil.saveByKeyWithExpire("fileDownUserId"+nDid+name,RequestUtil.getUserIndex(),600L);
deviceFtpService.downloadFile(nDid,name,size,fileCheck);
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, null, "文件下载中,请稍等");
}
@OperateInfo(info = LogEnum.BUSINESS_COMMON)
@PostMapping("/getDownloadFilePath")
@ApiOperation("获取文件下载路径")
@ApiImplicitParams({
@ApiImplicitParam(name = "nDid", value = "nDid", required = true),
@ApiImplicitParam(name = "name", value = "文件路径名", required = true)
})
public HttpResult<String> getDownloadFilePath(@RequestParam("nDid") String nDid, @RequestParam("name") String name){
String methodDescribe = getMethodDescribe("getDownloadFilePath");
String result = deviceFtpService.getDownloadFilePath(nDid,name);
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, result, methodDescribe);
}
@OperateInfo(info = LogEnum.BUSINESS_COMMON)

View File

@@ -6,6 +6,7 @@ import com.njcn.common.pojo.enums.response.CommonResponseEnum;
import com.njcn.common.pojo.response.HttpResult;
import com.njcn.common.utils.HttpResultUtil;
import com.njcn.csdevice.enums.DeviceOperate;
import com.njcn.csdevice.pojo.param.UserDevParam;
import com.njcn.csdevice.pojo.po.CsDeviceUserPO;
import com.njcn.csdevice.pojo.vo.DevCountVO;
import com.njcn.csdevice.pojo.vo.DevUserVO;
@@ -140,4 +141,24 @@ public class DeviceUserController extends BaseController {
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, list, methodDescribe);
}
@OperateInfo(info = LogEnum.BUSINESS_COMMON)
@PostMapping("/findDevByUserId")
@ApiOperation("根据用户Id查询设备集合")
@ApiImplicitParam(name = "id", value = "用户id", required = true)
public HttpResult<List<String>> findDevByUserId(@RequestParam("id") String id){
String methodDescribe = getMethodDescribe("findDevByUserId");
List<String> list = csDeviceUserPOService.findDevByUserId(id);
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, list, methodDescribe);
}
@OperateInfo(info = LogEnum.BUSINESS_COMMON)
@PostMapping("/channelDevByUserId")
@ApiOperation("根据用户Id解绑设备集合")
@ApiImplicitParam(name = "param", value = "参数", required = true)
public HttpResult<List<String>> channelDevByUserId(@RequestBody UserDevParam param){
String methodDescribe = getMethodDescribe("channelDevByUserId");
csDeviceUserPOService.channelDevByUserId(param);
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, null, methodDescribe);
}
}

View File

@@ -2,6 +2,7 @@ package com.njcn.csdevice.controller.equipment;
import cn.afterturn.easypoi.excel.ExcelExportUtil;
import cn.afterturn.easypoi.excel.entity.ExportParams;
import cn.hutool.core.collection.CollectionUtil;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.njcn.common.pojo.annotation.OperateInfo;
@@ -9,7 +10,6 @@ import com.njcn.common.pojo.enums.common.LogEnum;
import com.njcn.common.pojo.enums.response.CommonResponseEnum;
import com.njcn.common.pojo.response.HttpResult;
import com.njcn.common.utils.HttpResultUtil;
import com.njcn.csdevice.constant.DataParam;
import com.njcn.csdevice.enums.DeviceOperate;
import com.njcn.csdevice.pojo.dto.CsEquipmentDeliveryDTO;
import com.njcn.csdevice.pojo.param.*;
@@ -23,6 +23,9 @@ import com.njcn.csdevice.service.IMqttUserService;
import com.njcn.csdevice.utils.ExcelStyleUtil;
import com.njcn.poi.excel.ExcelUtil;
import com.njcn.poi.util.PoiUtil;
import com.njcn.system.api.DictTreeFeignClient;
import com.njcn.system.enums.DicDataTypeEnum;
import com.njcn.system.pojo.po.SysDicTreePO;
import com.njcn.web.advice.DeviceLog;
import com.njcn.web.controller.BaseController;
import io.swagger.annotations.*;
@@ -30,6 +33,7 @@ import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.apache.poi.ss.usermodel.Workbook;
import org.springframework.beans.BeanUtils;
import org.springframework.util.CollectionUtils;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
@@ -37,10 +41,11 @@ import springfox.documentation.annotations.ApiIgnore;
import javax.servlet.http.HttpServletResponse;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
import java.util.Objects;
import java.util.stream.Collectors;
import java.util.stream.Stream;
/**
* Description:
* 接口文档访问地址http://serverIP:port/swagger-ui.html
@@ -55,21 +60,20 @@ import java.util.stream.Stream;
@Api(tags = " 出厂设备")
@AllArgsConstructor
public class EquipmentDeliveryController extends BaseController {
private final CsEquipmentDeliveryService csEquipmentDeliveryService;
private final IMqttUserService mqttUserService;
private final CsDevModelRelationService csDevModelRelationService;
private final DictTreeFeignClient dictTreeFeignClient;
@OperateInfo(info = LogEnum.BUSINESS_COMMON)
@PostMapping("/addEquipmentDelivery")
@ApiOperation("新增出厂设备")
@ApiImplicitParam(name = "csEquipmentDeliveryAddParm", value = "新增项目参数", required = true)
@DeviceLog(operateType = DeviceOperate.ADD)
public HttpResult<Boolean> addEquipmentDelivery(@RequestBody @Validated CsEquipmentDeliveryAddParm csEquipmentDeliveryAddParm){
public HttpResult<CsEquipmentDeliveryPO> addEquipmentDelivery(@RequestBody @Validated CsEquipmentDeliveryAddParm csEquipmentDeliveryAddParm){
String methodDescribe = getMethodDescribe("addEquipmentDelivery");
Boolean flag = csEquipmentDeliveryService.save(csEquipmentDeliveryAddParm);
if (flag){
CsEquipmentDeliveryPO po = csEquipmentDeliveryService.save(csEquipmentDeliveryAddParm);
if (Objects.nonNull(po)){
//查询mqtt用户名和密码是否存在
boolean result = mqttUserService.findMqttUser(csEquipmentDeliveryAddParm.getNdid());
if (result){
@@ -77,10 +81,9 @@ public class EquipmentDeliveryController extends BaseController {
mqttUserService.insertMqttUser(csEquipmentDeliveryAddParm.getNdid());
}
}
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, flag, methodDescribe);
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, po, methodDescribe);
}
@OperateInfo(info = LogEnum.BUSINESS_COMMON)
@PostMapping("/AuditEquipmentDelivery")
@ApiOperation("删除出厂设备")
@@ -99,19 +102,24 @@ public class EquipmentDeliveryController extends BaseController {
public HttpResult<Boolean> updateEquipmentDelivery(@RequestBody @Validated CsEquipmentDeliveryAuditParm csEquipmentDeliveryAuditParm ){
String methodDescribe = getMethodDescribe("updateEquipmentDelivery");
Boolean flag = csEquipmentDeliveryService.updateEquipmentDelivery(csEquipmentDeliveryAuditParm);
if (flag){
//查询mqtt用户名和密码是否存在
boolean result = mqttUserService.findMqttUser(csEquipmentDeliveryAuditParm.getNdid());
if (result){
//初始化装置mqtt连接信息(使用sha256加密)
mqttUserService.insertMqttUser(csEquipmentDeliveryAuditParm.getNdid());
}
}
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, flag, methodDescribe);
}
@OperateInfo(info = LogEnum.BUSINESS_COMMON)
@PostMapping("/queryEquipmentByndid")
@ApiOperation("通过ndid查询出厂设备")
@ApiImplicitParam(name = "ndid", value = "网关识别码", required = true)
public HttpResult<CsEquipmentDeliveryVO> queryEquipmentByndid(@RequestParam("ndid")String ndid){
String methodDescribe = getMethodDescribe("queryEquipmentByndid");
CsEquipmentDeliveryVO csEquipmentDeliveryVO = csEquipmentDeliveryService.queryEquipmentByndid (ndid);
CsEquipmentDeliveryVO csEquipmentDeliveryVO = csEquipmentDeliveryService.queryEquipmentByndid (ndid);
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, csEquipmentDeliveryVO, methodDescribe);
}
@@ -133,17 +141,21 @@ public class EquipmentDeliveryController extends BaseController {
@ApiImplicitParam(name = "status", value = "状态", required = true)
})
@DeviceLog(operateType = DeviceOperate.UPDATESTATUSBYNDID)
public HttpResult<Boolean> updateStatusBynDid(@RequestParam("nDId") String nDid,@RequestParam("status") Integer status){
public HttpResult<Boolean> updateStatusBynDid(@RequestParam("nDId") String nDid,@RequestParam("status") Integer status){
String methodDescribe = getMethodDescribe("updateStatusBynDid");
csEquipmentDeliveryService.updateStatusBynDid(nDid,status);
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, null, methodDescribe);
}
@OperateInfo(info = LogEnum.BUSINESS_COMMON)
@PostMapping("/queryEquipmentById")
@ApiOperation("设备查询通过id获取")
@ApiImplicitParam(name = "ids", value = "设备id集合", required = true)
public HttpResult<List<CsEquipmentDeliveryDTO>> queryEquipmentById(@RequestParam List<String> ids){
String methodDescribe = getMethodDescribe("queryEquipmentById");
if (CollectionUtil.isEmpty(ids)) {
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, null, methodDescribe);
}
List<CsEquipmentDeliveryPO> csEquipmentDeliveryPOS = csEquipmentDeliveryService.listByIds(ids);
List<CsEquipmentDeliveryDTO> collect = csEquipmentDeliveryPOS.stream().map(temp -> {
CsEquipmentDeliveryDTO csEquipmentDeliveryDTO = new CsEquipmentDeliveryDTO();
@@ -162,12 +174,6 @@ public class EquipmentDeliveryController extends BaseController {
public HttpResult<Page<CsEquipmentDeliveryVO>> list(@RequestBody CsEquipmentDeliveryQueryParm param){
String methodDescribe = getMethodDescribe("list");
Page<CsEquipmentDeliveryVO> page = csEquipmentDeliveryService.list(param);
//新增逻辑(只针对便携式设备):修改设备中的未注册状态(status = 1)改为5(前端定义的字典也即未接入)
for(CsEquipmentDeliveryVO csEquipmentDeliveryVO : page.getRecords()){
if(DataParam.portableDevType.equals(csEquipmentDeliveryVO.getDevType()) && csEquipmentDeliveryVO.getStatus() == 1){
csEquipmentDeliveryVO.setStatus(5);
}
}
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, page, methodDescribe);
}
@@ -210,17 +216,21 @@ public class EquipmentDeliveryController extends BaseController {
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, po, methodDescribe);
}
@ResponseBody
@ApiOperation("导出设备模板")
@GetMapping(value = "getExcelTemplate")
public HttpResult<String> getExcelTemplate(HttpServletResponse response) {
String methodDescribe = getMethodDescribe("getExcelTemplate");
ExportParams exportParams = new ExportParams("批量导入模板(请严格按照模板标准填入数据)", "终端入网检测录入信息");
exportParams.setStyle(ExcelStyleUtil.class);
Workbook workbook = ExcelExportUtil.exportExcel(exportParams, DeviceExcelTemplete.class, new ArrayList<DeviceExcelTemplete>());
ExcelUtil.selectList(workbook, 2, 2, Stream.of("直连设备","网关设备").collect(Collectors.toList()).toArray(new String[]{}));
List<SysDicTreePO> deviceType = dictTreeFeignClient.queryByCodeList(DicDataTypeEnum.DEVICE_TYPE.getCode()).getData();
if(!CollectionUtils.isEmpty(deviceType)){
List<String> collect = deviceType.get(0).getChildren().stream().map(SysDicTreePO::getName).collect(Collectors.toList());
ExcelUtil.selectList(workbook, 2, 2, collect.toArray(new String[]{}));
List<String> collect2 = deviceType.get(0).getChildren().stream().map(SysDicTreePO::getChildren).flatMap(Collection::stream).map(SysDicTreePO::getName).collect(Collectors.toList());
ExcelUtil.selectList(workbook, 3, 3, collect2.toArray(new String[]{}));
}
ExcelUtil.selectList(workbook, 4, 4, Stream.of("MQTT","CLD").collect(Collectors.toList()).toArray(new String[]{}));
String fileName = "设备模板.xlsx";
ExportParams exportExcel = new ExportParams("设备模板", "设备模板");
@@ -233,9 +243,20 @@ public class EquipmentDeliveryController extends BaseController {
@PostMapping(value = "importEquipment")
public HttpResult<String> importEquipment(@ApiParam(value = "文件", required = true) @RequestPart("file") MultipartFile file, HttpServletResponse response) {
String methodDescribe = getMethodDescribe("importEquipment");
csEquipmentDeliveryService.importEquipment(file, response);
List<CsEquipmentDeliveryPO> csEquipmentDeliveryPOS = csEquipmentDeliveryService.importEquipment(file, response);
if (!CollectionUtils.isEmpty(csEquipmentDeliveryPOS)){
csEquipmentDeliveryPOS.forEach(temp->{
//查询mqtt用户名和密码是否存在
boolean result = mqttUserService.findMqttUser(temp.getNdid());
if (result){
//初始化装置mqtt连接信息(使用sha256加密)
mqttUserService.insertMqttUser(temp.getNdid());
}
});
}
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, null, methodDescribe);
}
@ResponseBody
@ApiOperation("联调完成")
@PostMapping(value = "testcompletion")
@@ -258,8 +279,8 @@ public class EquipmentDeliveryController extends BaseController {
@PostMapping("/updateSoftInfo")
@ApiOperation("更新设备软件信息")
@ApiImplicitParams({
@ApiImplicitParam(name = "nDid", value = "网络设备码", required = true),
@ApiImplicitParam(name = "id", value = "软件信息id", required = true)
@ApiImplicitParam(name = "nDid", value = "网络设备码", required = true),
@ApiImplicitParam(name = "id", value = "软件信息id", required = true)
})
@ApiIgnore
public HttpResult<String> updateSoftInfo(@RequestParam("nDid") String nDid,@RequestParam("id") String id){
@@ -282,7 +303,6 @@ public class EquipmentDeliveryController extends BaseController {
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, null, methodDescribe);
}
@OperateInfo(info = LogEnum.BUSINESS_COMMON)
@PostMapping("/rebootDevice")
@ApiOperation("重启设备")
@@ -306,4 +326,93 @@ public class EquipmentDeliveryController extends BaseController {
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, result, methodDescribe);
}
}
@OperateInfo(info = LogEnum.BUSINESS_COMMON)
@PostMapping("/judgeDevModel")
@ApiOperation("判断设备型号")
public HttpResult<Boolean> judgeDevModel(@RequestParam("nDid") String nDid){
String methodDescribe = getMethodDescribe("judgeDevModel");
boolean result = csEquipmentDeliveryService.judgeDevModel(nDid);
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, result, methodDescribe);
}
@OperateInfo(info = LogEnum.BUSINESS_COMMON)
@PostMapping("/getDevByLineId")
@ApiOperation("根据监测点id查询装置信息")
public HttpResult<CsEquipmentDeliveryPO> getDevByLineId(@RequestParam("lineId") String lineId){
String methodDescribe = getMethodDescribe("getDevByLineId");
CsEquipmentDeliveryPO po = csEquipmentDeliveryService.getDevByLineId(lineId);
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, po, methodDescribe);
}
@OperateInfo(info = LogEnum.BUSINESS_COMMON)
@PostMapping("/addCldDev")
@ApiOperation("新增云前置设备")
@ApiImplicitParam(name = "param", value = "参数", required = true)
@DeviceLog(operateType = DeviceOperate.ADD)
public HttpResult<CsEquipmentDeliveryPO> addCldDev(@RequestBody @Validated CsEquipmentDeliveryAddParm param){
String methodDescribe = getMethodDescribe("addCldDev");
CsEquipmentDeliveryPO po = csEquipmentDeliveryService.saveCld(param);
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, po, methodDescribe);
}
@OperateInfo(info = LogEnum.BUSINESS_COMMON)
@PostMapping("/delCldDev")
@ApiOperation("删除云前置设备")
@ApiImplicitParam(name = "id", value = "id", required = true)
@DeviceLog(operateType = DeviceOperate.DELETE)
public HttpResult<Boolean> delCldDev(@RequestParam("id") String id){
String methodDescribe = getMethodDescribe("delCldDev");
boolean result = csEquipmentDeliveryService.delCldDev(id);
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, result, methodDescribe);
}
@OperateInfo(info = LogEnum.BUSINESS_COMMON)
@PostMapping("/updateCldDev")
@ApiOperation("修改云前置设备")
@ApiImplicitParam(name = "param", value = "参数", required = true)
@DeviceLog(operateType = DeviceOperate.UPDATE)
public HttpResult<Boolean> updateCldDev(@RequestBody @Validated CsEquipmentDeliveryAuditParm param){
String methodDescribe = getMethodDescribe("updateCldDev");
boolean result = csEquipmentDeliveryService.updateCldDev(param);
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, result, methodDescribe);
}
@OperateInfo(info = LogEnum.BUSINESS_COMMON)
@PostMapping("/updateCldDevStatus")
@ApiOperation("云前置心跳丢失切换设备状态")
@ApiImplicitParams({
@ApiImplicitParam(name = "nodeId", value = "前置服务器id", required = true),
@ApiImplicitParam(name = "processNo", value = "进程号", required = true)
})
@ApiIgnore
public HttpResult<Boolean> updateCldDevStatus(@RequestParam("nodeId") String nodeId, @RequestParam("processNo") Integer processNo){
String methodDescribe = getMethodDescribe("updateCldDevStatus");
csEquipmentDeliveryService.updateCldDevStatus(nodeId,processNo);
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, null, methodDescribe);
}
@OperateInfo(info = LogEnum.BUSINESS_COMMON)
@PostMapping("/flipCldDevStatus")
@ApiOperation("云前置设备状态翻转")
@ApiImplicitParams({
@ApiImplicitParam(name = "devId", value = "设备id", required = true),
@ApiImplicitParam(name = "status", value = "状态", required = true)
})
@ApiIgnore
public HttpResult<Boolean> flipCldDevStatus(@RequestParam("devId") String devId, @RequestParam("status") Integer status){
String methodDescribe = getMethodDescribe("flipCldDevStatus");
csEquipmentDeliveryService.flipCldDevStatus(devId,status);
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, null, methodDescribe);
}
@OperateInfo(info = LogEnum.BUSINESS_COMMON)
@PostMapping("/getRunPortableDev")
@ApiOperation("获取用户未绑定的在运的便携式设备")
@ApiImplicitParam(name = "userId", value = "用户id", required = true)
public HttpResult<List<CsEquipmentDeliveryPO>> getRunPortableDev(@RequestParam("userId") String userId){
String methodDescribe = getMethodDescribe("getRunPortableDev");
List<CsEquipmentDeliveryPO> result = csEquipmentDeliveryService.getRunPortableDev(userId);
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, result, methodDescribe);
}
}

Some files were not shown because too many files have changed in this diff Show More