Compare commits

...

37 Commits

Author SHA1 Message Date
gjh 3eaaa50be4 人为干扰导出模板 6 days ago
gjh 831c9ced5c word模板导出demov10 6 days ago
gjh 47d9a55220 word模板导出demov9 6 days ago
gjh 98db15c66a word模板导出demov8 1 week ago
gjh 121c3847e1 word模板导出demov7 1 week ago
gjh 6aa4d08672 word模板导出demov6 1 week ago
gjh 781e847749 word模板导出demov5 1 week ago
gjh e9e5c4780f word模板导出demov4 2 weeks ago
gjh 27f168f99c word模板导出demov3 2 weeks ago
gjh cbc0c54b15 word模板导出demov2 2 weeks ago
gjh a1f3106c1e word模板导出demo 2 weeks ago
gjh f29728021e 计划默认值插入修改 2 months ago
gjh c8be42cf9d 排序,和时间信息补充 2 months ago
gjh 8978e4dd4d 相关信息的默认填充 2 months ago
gjh 93bd2a5b06 label修改 2 months ago
gjh 0f22a3e903 人员签到统计基础接口 2 months ago
gjh 11ba1b0b71 站点参数变更,运维故障信息基础接口 2 months ago
gjh 45f75c54b7 校零校准分析基础接口 2 months ago
gjh 5d9219cd03 站点联网数据分析表基础接口 2 months ago
gjh 2b1bead206 工单管理基础接口,并关联计划 2 months ago
gjh 31729716c8 定义字段里含supervise全部替换为monitor 2 months ago
gjh 923bdac17a 获取创建工单的计划列表 2 months ago
gjh 7f07b271b0 计划管理基础接口 2 months ago
gjh 137f7d2504 回复token活跃时间 2 months ago
gjh b5c46276fd 备品备件-基础接口 2 months ago
gjh 46e217ba42 时间格式调整 2 months ago
gjh d1066456e8 Revert "时间格式调整" 2 months ago
gjh 47f74ac8a2 时间格式调整 2 months ago
gjh 1899f6192e 颗粒物手工比对数据管理信息基础接口 2 months ago
gjh 7e9c2fcb0d 现场核查单管理信息基础接口 2 months ago
gjh fe3c307063 补充字段 2 months ago
gjh 1844430c08 补充注释 2 months ago
gjh 3ecb8c6fd6 设备生产日期-范围查询 2 months ago
gjh 21da09bec5 设备管理基础接口 2 months ago
gjh 90568ae6d5 子站信息管理基础接口 2 months ago
gjh 9cbba69972 初始化项目v1 2 months ago
gjh 4f3e2ca59d 初始化项目配置 3 months ago
  1. 5
      pom.xml
  2. 6
      ruoyi-admin/pom.xml
  3. 2
      ruoyi-admin/src/main/java/org/dromara/web/controller/AuthController.java
  4. 6
      ruoyi-admin/src/main/java/org/dromara/web/service/impl/PasswordAuthStrategy.java
  5. 62
      ruoyi-admin/src/main/resources/application-dev.yml
  6. 10
      ruoyi-admin/src/main/resources/application.yml
  7. 113
      ruoyi-modules/guoyan-platform/pom.xml
  8. 70
      ruoyi-modules/guoyan-platform/src/main/java/org/dromara/platform/controller/TestController.java
  9. 45
      ruoyi-modules/guoyan-platform/src/main/java/org/dromara/platform/domain/ProjectManager.java
  10. 124
      ruoyi-modules/guoyan-platform/src/main/java/org/dromara/platform/domain/WorkOrderInfo.java
  11. 137
      ruoyi-modules/guoyan-platform/src/main/java/org/dromara/platform/domain/bo/WorkOrderInfoBo.java
  12. 147
      ruoyi-modules/guoyan-platform/src/main/java/org/dromara/platform/domain/vo/WorkOrderInfoVo.java
  13. 63
      ruoyi-modules/guoyan-platform/src/main/java/org/dromara/platform/listener/ProjectManagerListener.java
  14. 36
      ruoyi-modules/guoyan-platform/src/main/java/org/dromara/platform/mapper/ProjectManagerMapper.java
  15. 15
      ruoyi-modules/guoyan-platform/src/main/java/org/dromara/platform/mapper/WorkOrderInfoMapper.java
  16. 28
      ruoyi-modules/guoyan-platform/src/main/java/org/dromara/platform/service/ProjectManagerService.java
  17. 38
      ruoyi-modules/guoyan-platform/src/main/java/org/dromara/platform/service/impl/ProjectManagerServiceImpl.java
  18. 145
      ruoyi-modules/guoyan-platform/src/main/java/org/dromara/platform/service/impl/WorkOrderInfoServiceImpl.java
  19. 11
      ruoyi-modules/guoyan-platform/src/main/resources/mapper/platform/ProjectManagerMapper.xml
  20. 1
      ruoyi-modules/pom.xml
  21. 17
      ruoyi-modules/ruoyi-demo/pom.xml
  22. 33
      ruoyi-modules/ruoyi-demo/src/main/java/org/dromara/demo/controller/DemoController.java
  23. 117
      ruoyi-modules/ruoyi-demo/src/main/java/org/dromara/demo/controller/DeviceInfoController.java
  24. 105
      ruoyi-modules/ruoyi-demo/src/main/java/org/dromara/demo/controller/OrderManagementInfoController.java
  25. 105
      ruoyi-modules/ruoyi-demo/src/main/java/org/dromara/demo/controller/PeopleCheckInfoController.java
  26. 113
      ruoyi-modules/ruoyi-demo/src/main/java/org/dromara/demo/controller/PlanInfoController.java
  27. 105
      ruoyi-modules/ruoyi-demo/src/main/java/org/dromara/demo/controller/PmDataManagementInfoController.java
  28. 117
      ruoyi-modules/ruoyi-demo/src/main/java/org/dromara/demo/controller/SiteEvaluationInfoController.java
  29. 105
      ruoyi-modules/ruoyi-demo/src/main/java/org/dromara/demo/controller/SparePartsInfoController.java
  30. 105
      ruoyi-modules/ruoyi-demo/src/main/java/org/dromara/demo/controller/StationFaultInfoController.java
  31. 129
      ruoyi-modules/ruoyi-demo/src/main/java/org/dromara/demo/controller/StationInfoController.java
  32. 105
      ruoyi-modules/ruoyi-demo/src/main/java/org/dromara/demo/controller/StationParamChangeController.java
  33. 105
      ruoyi-modules/ruoyi-demo/src/main/java/org/dromara/demo/controller/WebSiteNetDataAnalysisController.java
  34. 58
      ruoyi-modules/ruoyi-demo/src/main/java/org/dromara/demo/controller/WorkOrderInfoController.java
  35. 105
      ruoyi-modules/ruoyi-demo/src/main/java/org/dromara/demo/controller/ZeroAdjustmentAnalysisController.java
  36. 1
      ruoyi-modules/ruoyi-demo/src/main/java/org/dromara/demo/controller/package-info.java
  37. 2
      ruoyi-modules/ruoyi-demo/src/main/java/org/dromara/demo/controller/test/MailController.java
  38. 2
      ruoyi-modules/ruoyi-demo/src/main/java/org/dromara/demo/controller/test/RedisCacheController.java
  39. 2
      ruoyi-modules/ruoyi-demo/src/main/java/org/dromara/demo/controller/test/RedisLockController.java
  40. 2
      ruoyi-modules/ruoyi-demo/src/main/java/org/dromara/demo/controller/test/RedisPubSubController.java
  41. 2
      ruoyi-modules/ruoyi-demo/src/main/java/org/dromara/demo/controller/test/RedisRateLimiterController.java
  42. 2
      ruoyi-modules/ruoyi-demo/src/main/java/org/dromara/demo/controller/test/SmsController.java
  43. 2
      ruoyi-modules/ruoyi-demo/src/main/java/org/dromara/demo/controller/test/Swagger3DemoController.java
  44. 2
      ruoyi-modules/ruoyi-demo/src/main/java/org/dromara/demo/controller/test/TestBatchController.java
  45. 2
      ruoyi-modules/ruoyi-demo/src/main/java/org/dromara/demo/controller/test/TestDemoController.java
  46. 2
      ruoyi-modules/ruoyi-demo/src/main/java/org/dromara/demo/controller/test/TestEncryptController.java
  47. 2
      ruoyi-modules/ruoyi-demo/src/main/java/org/dromara/demo/controller/test/TestExcelController.java
  48. 2
      ruoyi-modules/ruoyi-demo/src/main/java/org/dromara/demo/controller/test/TestI18nController.java
  49. 2
      ruoyi-modules/ruoyi-demo/src/main/java/org/dromara/demo/controller/test/TestSensitiveController.java
  50. 2
      ruoyi-modules/ruoyi-demo/src/main/java/org/dromara/demo/controller/test/TestTreeController.java
  51. 2
      ruoyi-modules/ruoyi-demo/src/main/java/org/dromara/demo/controller/test/WeSocketController.java
  52. 1
      ruoyi-modules/ruoyi-demo/src/main/java/org/dromara/demo/controller/test/package-info.java
  53. 30
      ruoyi-modules/ruoyi-demo/src/main/java/org/dromara/demo/domain/Attachment.java
  54. 75
      ruoyi-modules/ruoyi-demo/src/main/java/org/dromara/demo/domain/AttachmentSerializer.java
  55. 95
      ruoyi-modules/ruoyi-demo/src/main/java/org/dromara/demo/domain/CheckItem.java
  56. 104
      ruoyi-modules/ruoyi-demo/src/main/java/org/dromara/demo/domain/DeviceInfo.java
  57. 129
      ruoyi-modules/ruoyi-demo/src/main/java/org/dromara/demo/domain/EvaluationDataJson.java
  58. 86
      ruoyi-modules/ruoyi-demo/src/main/java/org/dromara/demo/domain/OrderManagementInfo.java
  59. 77
      ruoyi-modules/ruoyi-demo/src/main/java/org/dromara/demo/domain/PeopleCheckInfo.java
  60. 85
      ruoyi-modules/ruoyi-demo/src/main/java/org/dromara/demo/domain/PlanInfo.java
  61. 94
      ruoyi-modules/ruoyi-demo/src/main/java/org/dromara/demo/domain/PmDataManagementInfo.java
  62. 63
      ruoyi-modules/ruoyi-demo/src/main/java/org/dromara/demo/domain/ReportData.java
  63. 76
      ruoyi-modules/ruoyi-demo/src/main/java/org/dromara/demo/domain/SiteEvaluationInfo.java
  64. 77
      ruoyi-modules/ruoyi-demo/src/main/java/org/dromara/demo/domain/SparePartsInfo.java
  65. 94
      ruoyi-modules/ruoyi-demo/src/main/java/org/dromara/demo/domain/StationFaultInfo.java
  66. 82
      ruoyi-modules/ruoyi-demo/src/main/java/org/dromara/demo/domain/StationInfo.java
  67. 79
      ruoyi-modules/ruoyi-demo/src/main/java/org/dromara/demo/domain/StationParamChange.java
  68. 82
      ruoyi-modules/ruoyi-demo/src/main/java/org/dromara/demo/domain/WebSiteNetDataAnalysis.java
  69. 293
      ruoyi-modules/ruoyi-demo/src/main/java/org/dromara/demo/domain/WordExportTest.java
  70. 371
      ruoyi-modules/ruoyi-demo/src/main/java/org/dromara/demo/domain/WordReportExporter.java
  71. 77
      ruoyi-modules/ruoyi-demo/src/main/java/org/dromara/demo/domain/WorkOrderInfo.java
  72. 109
      ruoyi-modules/ruoyi-demo/src/main/java/org/dromara/demo/domain/ZeroAdjustmentAnalysis.java
  73. 100
      ruoyi-modules/ruoyi-demo/src/main/java/org/dromara/demo/domain/bo/DeviceInfoBo.java
  74. 92
      ruoyi-modules/ruoyi-demo/src/main/java/org/dromara/demo/domain/bo/OrderManagementInfoBo.java
  75. 77
      ruoyi-modules/ruoyi-demo/src/main/java/org/dromara/demo/domain/bo/PeopleCheckInfoBo.java
  76. 92
      ruoyi-modules/ruoyi-demo/src/main/java/org/dromara/demo/domain/bo/PlanInfoBo.java
  77. 97
      ruoyi-modules/ruoyi-demo/src/main/java/org/dromara/demo/domain/bo/PmDataManagementInfoBo.java
  78. 76
      ruoyi-modules/ruoyi-demo/src/main/java/org/dromara/demo/domain/bo/SiteEvaluationInfoBo.java
  79. 77
      ruoyi-modules/ruoyi-demo/src/main/java/org/dromara/demo/domain/bo/SparePartsInfoBo.java
  80. 105
      ruoyi-modules/ruoyi-demo/src/main/java/org/dromara/demo/domain/bo/StationFaultInfoBo.java
  81. 84
      ruoyi-modules/ruoyi-demo/src/main/java/org/dromara/demo/domain/bo/StationInfoBo.java
  82. 83
      ruoyi-modules/ruoyi-demo/src/main/java/org/dromara/demo/domain/bo/StationParamChangeBo.java
  83. 83
      ruoyi-modules/ruoyi-demo/src/main/java/org/dromara/demo/domain/bo/WebSiteNetDataAnalysisBo.java
  84. 80
      ruoyi-modules/ruoyi-demo/src/main/java/org/dromara/demo/domain/bo/WorkOrderInfoBo.java
  85. 115
      ruoyi-modules/ruoyi-demo/src/main/java/org/dromara/demo/domain/bo/ZeroAdjustmentAnalysisBo.java
  86. 19
      ruoyi-modules/ruoyi-demo/src/main/java/org/dromara/demo/domain/vo/AttachmentVo.java
  87. 100
      ruoyi-modules/ruoyi-demo/src/main/java/org/dromara/demo/domain/vo/DeviceInfoVo.java
  88. 83
      ruoyi-modules/ruoyi-demo/src/main/java/org/dromara/demo/domain/vo/OrderManagementInfoVo.java
  89. 82
      ruoyi-modules/ruoyi-demo/src/main/java/org/dromara/demo/domain/vo/PeopleCheckInfoVo.java
  90. 97
      ruoyi-modules/ruoyi-demo/src/main/java/org/dromara/demo/domain/vo/PlanInfoVo.java
  91. 14
      ruoyi-modules/ruoyi-demo/src/main/java/org/dromara/demo/domain/vo/PlanSelectVo.java
  92. 106
      ruoyi-modules/ruoyi-demo/src/main/java/org/dromara/demo/domain/vo/PmDataManagementInfoVo.java
  93. 16
      ruoyi-modules/ruoyi-demo/src/main/java/org/dromara/demo/domain/vo/RegionVo.java
  94. 102
      ruoyi-modules/ruoyi-demo/src/main/java/org/dromara/demo/domain/vo/SiteEvaluationInfoVo.java
  95. 85
      ruoyi-modules/ruoyi-demo/src/main/java/org/dromara/demo/domain/vo/SparePartsInfoVo.java
  96. 113
      ruoyi-modules/ruoyi-demo/src/main/java/org/dromara/demo/domain/vo/StationFaultInfoVo.java
  97. 93
      ruoyi-modules/ruoyi-demo/src/main/java/org/dromara/demo/domain/vo/StationInfoVo.java
  98. 91
      ruoyi-modules/ruoyi-demo/src/main/java/org/dromara/demo/domain/vo/StationParamChangeVo.java
  99. 15
      ruoyi-modules/ruoyi-demo/src/main/java/org/dromara/demo/domain/vo/StationSelectVo.java
  100. 92
      ruoyi-modules/ruoyi-demo/src/main/java/org/dromara/demo/domain/vo/WebSiteNetDataAnalysisVo.java

5
pom.xml

@ -346,11 +346,6 @@
<version>${revision}</version>
</dependency>
<dependency>
<groupId>org.dromara</groupId>
<artifactId>guoyan-platform</artifactId>
<version>${revision}</version>
</dependency>
<!-- 工作流模块 -->
<dependency>

6
ruoyi-admin/pom.xml

@ -86,11 +86,7 @@
<groupId>org.dromara</groupId>
<artifactId>ruoyi-demo</artifactId>
</dependency>
<!-- guoyan-platform-->
<dependency>
<groupId>org.dromara</groupId>
<artifactId>guoyan-platform</artifactId>
</dependency>
<!-- 工作流模块 -->
<dependency>

2
ruoyi-admin/src/main/java/org/dromara/web/controller/AuthController.java

@ -103,7 +103,7 @@ public class AuthController {
Long userId = LoginHelper.getUserId();
scheduledExecutorService.schedule(() -> {
SseMessageDto dto = new SseMessageDto();
dto.setMessage("欢迎登录RuoYi-Vue-Plus后台管理系统");
dto.setMessage("欢迎登录国研空气质量监控系统运维监理及考核平台");
dto.setUserIds(List.of(userId));
SseMessageUtils.publishMessage(dto);
}, 5, TimeUnit.SECONDS);

6
ruoyi-admin/src/main/java/org/dromara/web/service/impl/PasswordAuthStrategy.java

@ -59,9 +59,9 @@ public class PasswordAuthStrategy implements IAuthStrategy {
boolean captchaEnabled = captchaProperties.getEnable();
// 验证码开关
if (captchaEnabled) {
validateCaptcha(tenantId, username, code, uuid);
}
// if (captchaEnabled) {
// validateCaptcha(tenantId, username, code, uuid);
// }
LoginUser loginUser = TenantHelper.dynamic(tenantId, () -> {
SysUserVo user = loadUserByUsername(username);
loginService.checkLogin(LoginType.PASSWORD, tenantId, username, () -> !BCrypt.checkpw(password, user.getPassword()));

62
ruoyi-admin/src/main/resources/application-dev.yml

@ -1,7 +1,7 @@
--- # 监控中心配置
spring.boot.admin.client:
# 增加客户端开关
enabled: true
enabled: false
url: http://localhost:9090/admin
instance:
service-host-type: IP
@ -13,7 +13,7 @@ spring.boot.admin.client:
--- # snail-job 配置
snail-job:
enabled: true
enabled: false
# 需要在 SnailJob 后台组管理创建对应名称的组,然后创建任务的时候选择对应的组,才能正确分派任务
group: "ruoyi_group"
# SnailJob 接入验证令牌 详见 script/sql/snail_job.sql `sj_group_config` 表
@ -47,35 +47,35 @@ spring:
driverClassName: com.mysql.cj.jdbc.Driver
# jdbc 所有参数配置参考 https://lionli.blog.csdn.net/article/details/122018562
# rewriteBatchedStatements=true 批处理优化 大幅提升批量插入更新删除性能(对数据库有性能损耗 使用批量操作应考虑性能问题)
url: jdbc:mysql://localhost:3306/ry-vue?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8&autoReconnect=true&rewriteBatchedStatements=true&allowPublicKeyRetrieval=true&nullCatalogMeansCurrent=true
url: jdbc:mysql://localhost:3306/air_quality?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8&autoReconnect=true&rewriteBatchedStatements=true&allowPublicKeyRetrieval=true&nullCatalogMeansCurrent=true
username: root
password: root
password: 1234
# 从库数据源
slave:
lazy: true
type: ${spring.datasource.type}
driverClassName: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://localhost:3306/ry-vue?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8&autoReconnect=true&rewriteBatchedStatements=true&allowPublicKeyRetrieval=true&nullCatalogMeansCurrent=true
username:
password:
# oracle:
# type: ${spring.datasource.type}
# driverClassName: oracle.jdbc.OracleDriver
# url: jdbc:oracle:thin:@//localhost:1521/XE
# username: ROOT
# password: root
# postgres:
# type: ${spring.datasource.type}
# driverClassName: org.postgresql.Driver
# url: jdbc:postgresql://localhost:5432/postgres?useUnicode=true&characterEncoding=utf8&useSSL=true&autoReconnect=true&reWriteBatchedInserts=true
# username: root
# password: root
# sqlserver:
# type: ${spring.datasource.type}
# driverClassName: com.microsoft.sqlserver.jdbc.SQLServerDriver
# url: jdbc:sqlserver://localhost:1433;DatabaseName=tempdb;SelectMethod=cursor;encrypt=false;rewriteBatchedStatements=true
# username: SA
# password: root
# slave:
# lazy: true
# type: ${spring.datasource.type}
# driverClassName: com.mysql.cj.jdbc.Driver
# url: jdbc:mysql://localhost:3306/ry-vue?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8&autoReconnect=true&rewriteBatchedStatements=true&allowPublicKeyRetrieval=true&nullCatalogMeansCurrent=true
# username:
# password:
# oracle:
# type: ${spring.datasource.type}
# driverClassName: oracle.jdbc.OracleDriver
# url: jdbc:oracle:thin:@//localhost:1521/XE
# username: ROOT
# password: root
# postgres:
# type: ${spring.datasource.type}
# driverClassName: org.postgresql.Driver
# url: jdbc:postgresql://localhost:5432/postgres?useUnicode=true&characterEncoding=utf8&useSSL=true&autoReconnect=true&reWriteBatchedInserts=true
# username: root
# password: root
# sqlserver:
# type: ${spring.datasource.type}
# driverClassName: com.microsoft.sqlserver.jdbc.SQLServerDriver
# url: jdbc:sqlserver://localhost:1433;DatabaseName=tempdb;SelectMethod=cursor;encrypt=false;rewriteBatchedStatements=true
# username: SA
# password: root
hikari:
# 最大连接池数量
maxPoolSize: 20
@ -100,9 +100,9 @@ spring.data:
# 端口,默认为6379
port: 6379
# 数据库索引
database: 0
database: 11
# redis 密码必须配置
password: ruoyi123
# password: ruoyi123
# 连接超时时间
timeout: 10s
# 是否开启ssl

10
ruoyi-admin/src/main/resources/application.yml

@ -21,7 +21,7 @@ captcha:
# 开发环境配置
server:
# 服务器的HTTP端口,默认为8080
# 服务器的HTTP端口,默认为8080 远程dev:8084
port: 8080
servlet:
# 应用的访问路径
@ -70,7 +70,7 @@ spring:
# 国际化资源文件路径
basename: i18n/messages
profiles:
active: @profiles.active@
active: dev
# 文件上传
servlet:
multipart:
@ -185,9 +185,9 @@ springdoc:
api-docs:
# 是否开启接口文档
enabled: true
# swagger-ui:
# # 持久化认证数据
# persistAuthorization: true
# swagger-ui:
# # 持久化认证数据
# persistAuthorization: true
info:
# 标题
title: '标题:${ruoyi.name}多租户管理系统_接口文档'

113
ruoyi-modules/guoyan-platform/pom.xml

@ -1,113 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<parent>
<artifactId>ruoyi-modules</artifactId>
<groupId>org.dromara</groupId>
<version>5.2.3</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>guoyan-platform</artifactId>
<dependencies>
<!-- 通用工具-->
<dependency>
<groupId>org.dromara</groupId>
<artifactId>ruoyi-common-core</artifactId>
</dependency>
<dependency>
<groupId>org.dromara</groupId>
<artifactId>ruoyi-common-doc</artifactId>
</dependency>
<dependency>
<groupId>org.dromara</groupId>
<artifactId>ruoyi-common-sms</artifactId>
</dependency>
<dependency>
<groupId>org.dromara</groupId>
<artifactId>ruoyi-common-mail</artifactId>
</dependency>
<dependency>
<groupId>org.dromara</groupId>
<artifactId>ruoyi-common-redis</artifactId>
</dependency>
<dependency>
<groupId>org.dromara</groupId>
<artifactId>ruoyi-common-idempotent</artifactId>
</dependency>
<dependency>
<groupId>org.dromara</groupId>
<artifactId>ruoyi-common-mybatis</artifactId>
</dependency>
<dependency>
<groupId>org.dromara</groupId>
<artifactId>ruoyi-common-log</artifactId>
</dependency>
<dependency>
<groupId>org.dromara</groupId>
<artifactId>ruoyi-common-excel</artifactId>
</dependency>
<dependency>
<groupId>org.dromara</groupId>
<artifactId>ruoyi-common-security</artifactId>
</dependency>
<dependency>
<groupId>org.dromara</groupId>
<artifactId>ruoyi-common-web</artifactId>
</dependency>
<dependency>
<groupId>org.dromara</groupId>
<artifactId>ruoyi-common-ratelimiter</artifactId>
</dependency>
<dependency>
<groupId>org.dromara</groupId>
<artifactId>ruoyi-common-translation</artifactId>
</dependency>
<dependency>
<groupId>org.dromara</groupId>
<artifactId>ruoyi-common-sensitive</artifactId>
</dependency>
<dependency>
<groupId>org.dromara</groupId>
<artifactId>ruoyi-common-encrypt</artifactId>
</dependency>
<dependency>
<groupId>org.dromara</groupId>
<artifactId>ruoyi-common-tenant</artifactId>
</dependency>
<dependency>
<groupId>org.dromara</groupId>
<artifactId>ruoyi-common-websocket</artifactId>
</dependency>
<dependency>
<groupId>org.dromara</groupId>
<artifactId>ruoyi-demo</artifactId>
</dependency>
<dependency>
<groupId>org.dromara</groupId>
<artifactId>ruoyi-system</artifactId>
</dependency>
</dependencies>
</project>

70
ruoyi-modules/guoyan-platform/src/main/java/org/dromara/platform/controller/TestController.java

@ -1,70 +0,0 @@
package org.dromara.platform.controller;
import com.alibaba.excel.EasyExcel;
import jakarta.annotation.Resource;
import jakarta.servlet.http.HttpServletResponse;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.dromara.platform.domain.ProjectManager;
import org.dromara.platform.listener.ProjectManagerListener;
import org.dromara.platform.service.ProjectManagerService;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;
import java.io.IOException;
import java.net.URLEncoder;
import java.time.LocalDate;
/**
* @Author gejunhao
* @Date 2025/1/10 14:11
* @Description: 测试接口
*/
@RequiredArgsConstructor
@RestController
@Slf4j
@RequestMapping("/test")
public class TestController {
@GetMapping("/hello")
public void test(HttpServletResponse response) throws IOException {
log.warn("hello word!");
response.setContentType("text/html;charset=utf8");
response.getWriter().println("调用接口成功!");
}
@Resource
private ProjectManagerService projectManagerService;
@PostMapping("/uploadProjectManager")
public void upload(MultipartFile file, HttpServletResponse response) throws IOException {
long t1 = System.currentTimeMillis();
EasyExcel.read(file.getInputStream(), ProjectManager.class, new ProjectManagerListener(projectManagerService)).sheet().doRead();
response.setContentType("text/html;charset=utf8");
long t2 = System.currentTimeMillis();
response.getWriter().println("导入数据成功!,共用时:"+(t2-t1));
log.info("导入项目负责人数据成功! 共用时:{}ms",(t2-t1));
}
@GetMapping("/downloadProjectManager")
public void download(HttpServletResponse response) throws IOException {
// 这里注意 有同学反应使用swagger 会导致各种问题,请直接用浏览器或者用postman
response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");
response.setCharacterEncoding("utf-8");
String flag = "项目负责人信息";
// 这里URLEncoder.encode可以防止中文乱码 当然和easyexcel没有关系
LocalDate currentDate = LocalDate.now();
System.out.println("当前日期: " + currentDate);
String fileName = URLEncoder.encode( flag+currentDate, "UTF-8")
.replaceAll("\\+", "%20");
response.setHeader("Content-disposition", "attachment;filename*=utf-8''" + fileName + ".xlsx");
EasyExcel.write(response.getOutputStream(), ProjectManager.class)
.sheet("项目联系人信息"+currentDate)
.doWrite(projectManagerService.getData());
}
}

45
ruoyi-modules/guoyan-platform/src/main/java/org/dromara/platform/domain/ProjectManager.java

@ -1,45 +0,0 @@
package org.dromara.platform.domain;
import com.alibaba.excel.annotation.ExcelIgnore;
import com.alibaba.excel.annotation.ExcelProperty;
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 lombok.Data;
import java.io.Serializable;
/**
*
* @author 14212
* @TableName project_manager
*/
@TableName(value ="project_manager")
@Data
public class ProjectManager implements Serializable {
@ExcelProperty(value = "序号")
//@TableId(type = IdType.AUTO)
@TableField(exist = false)
private Integer id;
@ExcelProperty(value = "项目名称")
private String projectName;
/**
* 可以有多个项目负责人
*/
@ExcelProperty(value = "项目负责人")
private String manager;
@ExcelProperty(value = "联系方式")
private String phone;
@ExcelIgnore
private String tenantId;
@TableField(exist = false)
private static final long serialVersionUID = 1L;
}

124
ruoyi-modules/guoyan-platform/src/main/java/org/dromara/platform/domain/WorkOrderInfo.java

@ -1,124 +0,0 @@
package org.dromara.platform.domain;
import org.dromara.common.tenant.core.TenantEntity;
import com.baomidou.mybatisplus.annotation.*;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.dromara.common.translation.annotation.Translation;
import org.dromara.common.translation.constant.TransConstant;
import java.io.Serial;
/**
* 工单信息对象 work_order_info
*
* @author gejunhao
* @date 2025-01-13
*/
@Data
@EqualsAndHashCode(callSuper = true)
@TableName("work_order_info")
public class WorkOrderInfo extends TenantEntity {
@Serial
private static final long serialVersionUID = 1L;
/**
* 工单ID
*/
@TableId(value = "id")
private String id;
/**
* 所属项目
*/
private String projectName;
/**
* 报修人员
*/
private String repairer;
/**
* 保修人员ID
*/
private Long repairerId;
/**
* 是否事故 (0: , 1: )
*/
private Long isAccident;
/**
* 响应级别 (0: 常规, 1: 紧急, 2: 特急)
*/
private String responseLevel;
/**
* 响应时限
*/
private Long responseTime;
/**
* 故障大类
*/
private String faultCategory;
/**
* 故障小类 (0: 电源故障, 1: 光缆故障, 2: 设备故障, 3: 监控故障, 4: 抓拍方向偏移, 5: 树枝遮挡, 6: 无图像, 7: 图像模糊)
*/
private String faultSubcategory;
/**
* 所属机构
*/
private String institution;
/**
* 故障地点
*/
private String faultLocation;
/**
* 故障描述
*/
private String faultDescription;
/**
* 故障图片
*/
private String faultImage;
/**
* 维护要求 (0: 修复, 1: 新增, 2: 拆除, 3: 清除, 4: 其他)
*/
private String maintenanceRequirement;
/**
* 派遣意见
*/
private String dispatchOpinion;
/**
* 是否派遣 (0: , 1: )
*/
private Long isDispatched;
/**
* 纬度
*/
private String latitude;
/**
* 经度
*/
private String longitude;
/**
* 删除标志0代表存在 2代表删除
*/
@TableLogic
private String delFlag;
}

137
ruoyi-modules/guoyan-platform/src/main/java/org/dromara/platform/domain/bo/WorkOrderInfoBo.java

@ -1,137 +0,0 @@
package org.dromara.platform.domain.bo;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import org.dromara.platform.domain.WorkOrderInfo;
import org.dromara.common.mybatis.core.domain.BaseEntity;
import org.dromara.common.core.validate.AddGroup;
import org.dromara.common.core.validate.EditGroup;
import io.github.linpeilie.annotations.AutoMapper;
import lombok.Data;
import lombok.EqualsAndHashCode;
import jakarta.validation.constraints.*;
import org.dromara.common.translation.annotation.Translation;
import org.dromara.common.translation.constant.TransConstant;
/**
* 工单信息业务对象 work_order_info
*
* @author gejunhao
* @date 2025-01-13
*/
@Data
@EqualsAndHashCode(callSuper = true)
@AutoMapper(target = WorkOrderInfo.class, reverseConvertGenerate = false)
public class WorkOrderInfoBo extends BaseEntity {
/**
* 工单ID
*/
//@NotBlank(message = "工单ID不能为空", groups = { EditGroup.class })
@TableId(type = IdType.ASSIGN_ID)
private String id;
/**
* 所属项目
*/
@NotBlank(message = "所属项目不能为空", groups = { AddGroup.class, EditGroup.class })
private String projectName;
/**
* 报修人员
*/
@NotBlank(message = "报修人员不能为空", groups = { AddGroup.class, EditGroup.class })
private String repairer;
/**
* 保修人员ID
*/
@NotNull(message = "保修人员ID不能为空", groups = { AddGroup.class, EditGroup.class })
private Long repairerId;
/**
* 是否事故 (0: , 1: )
*/
@NotNull(message = "是否事故 (0: 否, 1: 是)不能为空", groups = { AddGroup.class, EditGroup.class })
private Long isAccident;
/**
* 响应级别 (0: 常规, 1: 紧急, 2: 特急)
*/
@NotBlank(message = "响应级别 (0: 常规, 1: 紧急, 2: 特急)不能为空", groups = { AddGroup.class, EditGroup.class })
private String responseLevel;
/**
* 响应时限
*/
@NotNull(message = "响应时限不能为空", groups = { AddGroup.class, EditGroup.class })
private Long responseTime;
/**
* 故障大类
*/
@NotBlank(message = "故障大类不能为空", groups = { AddGroup.class, EditGroup.class })
private String faultCategory;
/**
* 故障小类 (0: 电源故障, 1: 光缆故障, 2: 设备故障, 3: 监控故障, 4: 抓拍方向偏移, 5: 树枝遮挡, 6: 无图像, 7: 图像模糊)
*/
@NotBlank(message = "故障小类 (0: 电源故障, 1: 光缆故障, 2: 设备故障, 3: 监控故障, 4: 抓拍方向偏移, 5: 树枝遮挡, 6: 无图像, 7: 图像模糊)不能为空", groups = { AddGroup.class, EditGroup.class })
private String faultSubcategory;
/**
* 所属机构
*/
@NotBlank(message = "所属机构不能为空", groups = { AddGroup.class, EditGroup.class })
private String institution;
/**
* 故障地点
*/
@NotBlank(message = "故障地点不能为空", groups = { AddGroup.class, EditGroup.class })
private String faultLocation;
/**
* 故障描述
*/
@NotBlank(message = "故障描述不能为空", groups = { AddGroup.class, EditGroup.class })
private String faultDescription;
/**
* 故障图片
*/
@NotBlank(message = "故障图片不能为空", groups = { AddGroup.class, EditGroup.class })
private String faultImage;
/**
* 维护要求 (0: 修复, 1: 新增, 2: 拆除, 3: 清除, 4: 其他)
*/
@NotBlank(message = "维护要求 (0: 修复, 1: 新增, 2: 拆除, 3: 清除, 4: 其他)不能为空", groups = { AddGroup.class, EditGroup.class })
private String maintenanceRequirement;
/**
* 派遣意见
*/
@NotBlank(message = "派遣意见不能为空", groups = { AddGroup.class, EditGroup.class })
private String dispatchOpinion;
/**
* 是否派遣 (0: , 1: )
*/
@NotNull(message = "是否派遣 (0: 否, 1: 是)不能为空", groups = { AddGroup.class, EditGroup.class })
private Long isDispatched;
/**
* 纬度
*/
@NotBlank(message = "纬度不能为空", groups = { AddGroup.class, EditGroup.class })
private String latitude;
/**
* 经度
*/
@NotBlank(message = "经度不能为空", groups = { AddGroup.class, EditGroup.class })
private String longitude;
}

147
ruoyi-modules/guoyan-platform/src/main/java/org/dromara/platform/domain/vo/WorkOrderInfoVo.java

@ -1,147 +0,0 @@
package org.dromara.platform.domain.vo;
import org.dromara.common.translation.annotation.Translation;
import org.dromara.common.translation.constant.TransConstant;
import org.dromara.platform.domain.WorkOrderInfo;
import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
import com.alibaba.excel.annotation.ExcelProperty;
import org.dromara.common.excel.annotation.ExcelDictFormat;
import org.dromara.common.excel.convert.ExcelDictConvert;
import io.github.linpeilie.annotations.AutoMapper;
import lombok.Data;
import java.io.Serial;
import java.io.Serializable;
import java.util.Date;
/**
* 工单信息视图对象 work_order_info
*
* @author gejunhao
* @date 2025-01-13
*/
@Data
@ExcelIgnoreUnannotated
@AutoMapper(target = WorkOrderInfo.class)
public class WorkOrderInfoVo implements Serializable {
@Serial
private static final long serialVersionUID = 1L;
/**
* 工单ID
*/
@ExcelProperty(value = "工单ID")
private String id;
/**
* 所属项目
*/
@ExcelProperty(value = "所属项目")
private String projectName;
/**
* 报修人员
*/
@ExcelProperty(value = "报修人员")
private String repairer;
/**
* 保修人员ID
*/
@ExcelProperty(value = "保修人员ID")
private Long repairerId;
/**
* 是否事故 (0: , 1: )
*/
@ExcelProperty(value = "是否事故 (0: 否, 1: 是)")
private Long isAccident;
/**
* 响应级别 (0: 常规, 1: 紧急, 2: 特急)
*/
@ExcelProperty(value = "响应级别 (0: 常规, 1: 紧急, 2: 特急)")
private String responseLevel;
/**
* 响应时限
*/
@ExcelProperty(value = "响应时限")
private Long responseTime;
/**
* 故障大类
*/
@ExcelProperty(value = "故障大类")
private String faultCategory;
/**
* 故障小类 (0: 电源故障, 1: 光缆故障, 2: 设备故障, 3: 监控故障, 4: 抓拍方向偏移, 5: 树枝遮挡, 6: 无图像, 7: 图像模糊)
*/
@ExcelProperty(value = "故障小类 (0: 电源故障, 1: 光缆故障, 2: 设备故障, 3: 监控故障, 4: 抓拍方向偏移, 5: 树枝遮挡, 6: 无图像, 7: 图像模糊)")
private String faultSubcategory;
/**
* 所属机构
*/
@ExcelProperty(value = "所属机构")
private String institution;
/**
* 故障地点
*/
@ExcelProperty(value = "故障地点")
private String faultLocation;
/**
* 故障描述
*/
@ExcelProperty(value = "故障描述")
private String faultDescription;
/**
* 故障图片
*/
@ExcelProperty(value = "故障图片")
private String faultImage;
/**
* 故障图片Url
*/
@Translation(type = TransConstant.OSS_ID_TO_URL, mapper = "faultImage")
private String faultImageUrl;
/**
* 维护要求 (0: 修复, 1: 新增, 2: 拆除, 3: 清除, 4: 其他)
*/
@ExcelProperty(value = "维护要求 (0: 修复, 1: 新增, 2: 拆除, 3: 清除, 4: 其他)")
private String maintenanceRequirement;
/**
* 派遣意见
*/
@ExcelProperty(value = "派遣意见")
private String dispatchOpinion;
/**
* 是否派遣 (0: , 1: )
*/
@ExcelProperty(value = "是否派遣 (0: 否, 1: 是)")
private Long isDispatched;
/**
* 纬度
*/
@ExcelProperty(value = "纬度")
private String latitude;
/**
* 经度
*/
@ExcelProperty(value = "经度")
private String longitude;
}

63
ruoyi-modules/guoyan-platform/src/main/java/org/dromara/platform/listener/ProjectManagerListener.java

@ -1,63 +0,0 @@
package org.dromara.platform.listener;
import com.alibaba.excel.context.AnalysisContext;
import com.alibaba.excel.read.listener.ReadListener;
import lombok.extern.slf4j.Slf4j;
import org.dromara.platform.domain.ProjectManager;
import org.dromara.platform.service.ProjectManagerService;
import org.springframework.beans.factory.annotation.Autowired;
import java.util.ArrayList;
import java.util.List;
/**
* 自定义监听器读数据
* @author gjh
*/
@Slf4j
public class ProjectManagerListener implements ReadListener<ProjectManager> {
private List<ProjectManager> list = new ArrayList<>();
/**
* 自己定义一个缓冲量
*/
private static final int BATCH_COUNT = 20;
@Autowired
private ProjectManagerService projectManagerService;
public ProjectManagerListener(ProjectManagerService projectManagerService) {
this.projectManagerService = projectManagerService;
}
/**
* 每读一行数据都会调用这个方法
*
* @param projectManager
* @param analysisContext
*/
@Override
public void invoke(ProjectManager projectManager, AnalysisContext analysisContext) {
// 读取一行数据就添加到集合
list.add(projectManager);
// 判断是否到达缓存量了
if (list.size() >= BATCH_COUNT){
// 操作数据库
projectManagerService.addData(list);
list = new ArrayList<>(BATCH_COUNT);
}
}
/**
* 读完整个excel之后再调用这个方法
*
* @param analysisContext
*/
@Override
public void doAfterAllAnalysed(AnalysisContext analysisContext) {
if (list.size()>0){
projectManagerService.addData(list);
}
}
}

36
ruoyi-modules/guoyan-platform/src/main/java/org/dromara/platform/mapper/ProjectManagerMapper.java

@ -1,36 +0,0 @@
package org.dromara.platform.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.ResultType;
import org.apache.ibatis.annotations.Select;
import org.dromara.platform.domain.ProjectManager;
import java.util.List;
/**
* @author 14212
* @description 针对表project_manager的数据库操作Mapper
* @createDate 2025-01-08 09:22:14
* @Entity com.gejunhao.pojo.ProjectManager
*/
public interface ProjectManagerMapper extends BaseMapper<ProjectManager> {
/**
*从数据库中获取数据
* @return
*/
@Select("select * from project_manager")
@ResultType(ProjectManager.class)
List<ProjectManager> getDate();
/**
* xml写法
* @return
*/
@ResultType(ProjectManager.class)
List<ProjectManager> selectAll();
}

15
ruoyi-modules/guoyan-platform/src/main/java/org/dromara/platform/mapper/WorkOrderInfoMapper.java

@ -1,15 +0,0 @@
package org.dromara.platform.mapper;
import org.dromara.platform.domain.WorkOrderInfo;
import org.dromara.platform.domain.vo.WorkOrderInfoVo;
import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
/**
* 工单信息Mapper接口
*
* @author gejunhao
* @date 2025-01-10
*/
public interface WorkOrderInfoMapper extends BaseMapperPlus<WorkOrderInfo, WorkOrderInfoVo> {
}

28
ruoyi-modules/guoyan-platform/src/main/java/org/dromara/platform/service/ProjectManagerService.java

@ -1,28 +0,0 @@
package org.dromara.platform.service;
import com.baomidou.mybatisplus.extension.service.IService;
import org.dromara.platform.domain.ProjectManager;
import java.util.List;
/**
* @author 14212
* @description 针对表project_manager的数据库操作Service
* @createDate 2025-01-08 09:22:14
*/
public interface ProjectManagerService extends IService<ProjectManager> {
/**
* 批量插入数据
* @param list
*/
public void addData(List<ProjectManager> list);
/**
* 从数据库中获取数据
* @return
*/
public List<ProjectManager> getData();
}

38
ruoyi-modules/guoyan-platform/src/main/java/org/dromara/platform/service/impl/ProjectManagerServiceImpl.java

@ -1,38 +0,0 @@
package org.dromara.platform.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import jakarta.annotation.Resource;
import org.dromara.platform.domain.ProjectManager;
import org.dromara.platform.mapper.ProjectManagerMapper;
import org.dromara.platform.service.ProjectManagerService;
import org.springframework.stereotype.Service;
import java.util.List;
/**
* @author 14212
* @description 针对表project_manager的数据库操作Service实现
* @createDate 2025-01-08 09:22:14
*/
@Service
public class ProjectManagerServiceImpl extends ServiceImpl<ProjectManagerMapper, ProjectManager>
implements ProjectManagerService {
@Resource
private ProjectManagerMapper projectManagerMapper;
@Override
public void addData(List<ProjectManager> list) {
this.saveBatch(list);
}
@Override
public List<ProjectManager> getData() {
List<ProjectManager> projectManagers = projectManagerMapper.selectAll();
return projectManagers;
}
}

145
ruoyi-modules/guoyan-platform/src/main/java/org/dromara/platform/service/impl/WorkOrderInfoServiceImpl.java

@ -1,145 +0,0 @@
package org.dromara.platform.service.impl;
import org.dromara.common.core.utils.MapstructUtils;
import org.dromara.common.core.utils.StringUtils;
import org.dromara.common.mybatis.core.page.TableDataInfo;
import org.dromara.common.mybatis.core.page.PageQuery;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;
import org.dromara.platform.domain.bo.WorkOrderInfoBo;
import org.dromara.platform.domain.vo.WorkOrderInfoVo;
import org.dromara.platform.domain.WorkOrderInfo;
import org.dromara.platform.mapper.WorkOrderInfoMapper;
import org.dromara.platform.service.IWorkOrderInfoService;
import java.util.List;
import java.util.Map;
import java.util.Collection;
/**
* 工单信息Service业务层处理
*
* @author gejunhao
* @date 2025-01-13
*/
@RequiredArgsConstructor
@Service
public class WorkOrderInfoServiceImpl implements IWorkOrderInfoService {
private final WorkOrderInfoMapper baseMapper;
/**
* 查询工单信息
*
* @param id 主键
* @return 工单信息
*/
@Override
public WorkOrderInfoVo queryById(String id){
return baseMapper.selectVoById(id);
}
/**
* 分页查询工单信息列表
*
* @param bo 查询条件
* @param pageQuery 分页参数
* @return 工单信息分页列表
*/
@Override
public TableDataInfo<WorkOrderInfoVo> queryPageList(WorkOrderInfoBo bo, PageQuery pageQuery) {
LambdaQueryWrapper<WorkOrderInfo> lqw = buildQueryWrapper(bo);
Page<WorkOrderInfoVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw);
return TableDataInfo.build(result);
}
/**
* 查询符合条件的工单信息列表
*
* @param bo 查询条件
* @return 工单信息列表
*/
@Override
public List<WorkOrderInfoVo> queryList(WorkOrderInfoBo bo) {
LambdaQueryWrapper<WorkOrderInfo> lqw = buildQueryWrapper(bo);
return baseMapper.selectVoList(lqw);
}
private LambdaQueryWrapper<WorkOrderInfo> buildQueryWrapper(WorkOrderInfoBo bo) {
Map<String, Object> params = bo.getParams();
LambdaQueryWrapper<WorkOrderInfo> lqw = Wrappers.lambdaQuery();
lqw.like(StringUtils.isNotBlank(bo.getProjectName()), WorkOrderInfo::getProjectName, bo.getProjectName());
lqw.eq(StringUtils.isNotBlank(bo.getRepairer()), WorkOrderInfo::getRepairer, bo.getRepairer());
lqw.eq(bo.getRepairerId() != null, WorkOrderInfo::getRepairerId, bo.getRepairerId());
lqw.eq(bo.getIsAccident() != null, WorkOrderInfo::getIsAccident, bo.getIsAccident());
lqw.eq(StringUtils.isNotBlank(bo.getResponseLevel()), WorkOrderInfo::getResponseLevel, bo.getResponseLevel());
lqw.eq(bo.getResponseTime() != null, WorkOrderInfo::getResponseTime, bo.getResponseTime());
lqw.eq(StringUtils.isNotBlank(bo.getFaultCategory()), WorkOrderInfo::getFaultCategory, bo.getFaultCategory());
lqw.eq(StringUtils.isNotBlank(bo.getFaultSubcategory()), WorkOrderInfo::getFaultSubcategory, bo.getFaultSubcategory());
lqw.eq(StringUtils.isNotBlank(bo.getInstitution()), WorkOrderInfo::getInstitution, bo.getInstitution());
lqw.eq(StringUtils.isNotBlank(bo.getFaultLocation()), WorkOrderInfo::getFaultLocation, bo.getFaultLocation());
lqw.eq(StringUtils.isNotBlank(bo.getFaultDescription()), WorkOrderInfo::getFaultDescription, bo.getFaultDescription());
lqw.eq(StringUtils.isNotBlank(bo.getFaultImage()), WorkOrderInfo::getFaultImage, bo.getFaultImage());
lqw.eq(StringUtils.isNotBlank(bo.getMaintenanceRequirement()), WorkOrderInfo::getMaintenanceRequirement, bo.getMaintenanceRequirement());
lqw.eq(StringUtils.isNotBlank(bo.getDispatchOpinion()), WorkOrderInfo::getDispatchOpinion, bo.getDispatchOpinion());
lqw.eq(bo.getIsDispatched() != null, WorkOrderInfo::getIsDispatched, bo.getIsDispatched());
lqw.eq(StringUtils.isNotBlank(bo.getLatitude()), WorkOrderInfo::getLatitude, bo.getLatitude());
lqw.eq(StringUtils.isNotBlank(bo.getLongitude()), WorkOrderInfo::getLongitude, bo.getLongitude());
return lqw;
}
/**
* 新增工单信息
*
* @param bo 工单信息
* @return 是否新增成功
*/
@Override
public Boolean insertByBo(WorkOrderInfoBo bo) {
WorkOrderInfo add = MapstructUtils.convert(bo, WorkOrderInfo.class);
//validEntityBeforeSave(add);
boolean flag = baseMapper.insert(add) > 0;
if (flag) {
bo.setId(add.getId());
}
return flag;
}
/**
* 修改工单信息
*
* @param bo 工单信息
* @return 是否修改成功
*/
@Override
public Boolean updateByBo(WorkOrderInfoBo bo) {
WorkOrderInfo update = MapstructUtils.convert(bo, WorkOrderInfo.class);
//validEntityBeforeSave(update);
return baseMapper.updateById(update) > 0;
}
/**
* 保存前的数据校验
*/
private void validEntityBeforeSave(WorkOrderInfo entity){
//TODO 做一些数据校验,如唯一约束
}
/**
* 校验并批量删除工单信息信息
*
* @param ids 待删除的主键集合
* @param isValid 是否进行有效性校验
* @return 是否删除成功
*/
@Override
public Boolean deleteWithValidByIds(Collection<String> ids, Boolean isValid) {
if(isValid){
//TODO 做一些业务上的校验,判断是否需要校验
}
return baseMapper.deleteByIds(ids) > 0;
}
}

11
ruoyi-modules/guoyan-platform/src/main/resources/mapper/platform/ProjectManagerMapper.xml

@ -1,11 +0,0 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="org.dromara.platform.mapper.ProjectManagerMapper">
<select id="selectAll" resultType="org.dromara.platform.domain.ProjectManager">
select * from project_manager
</select>
</mapper>

1
ruoyi-modules/pom.xml

@ -15,7 +15,6 @@
<module>ruoyi-job</module>
<module>ruoyi-system</module>
<module>ruoyi-workflow</module>
<module>guoyan-platform</module>
</modules>
<artifactId>ruoyi-modules</artifactId>

17
ruoyi-modules/ruoyi-demo/pom.xml

@ -14,8 +14,19 @@
<description>
demo模块
</description>
<!-- poi-->
<dependencies>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml</artifactId>
<version>5.2.4</version>
</dependency>
<!-- easy-poi-->
<dependency>
<groupId>cn.afterturn</groupId>
<artifactId>easypoi-spring-boot-starter</artifactId>
<version>4.4.0</version> <!-- 或最新版本 -->
</dependency>
<!-- 通用工具-->
<dependency>
@ -102,6 +113,10 @@
<groupId>org.dromara</groupId>
<artifactId>ruoyi-common-websocket</artifactId>
</dependency>
<dependency>
<groupId>org.dromara</groupId>
<artifactId>ruoyi-system</artifactId>
</dependency>
</dependencies>

33
ruoyi-modules/ruoyi-demo/src/main/java/org/dromara/demo/controller/DemoController.java

@ -0,0 +1,33 @@
package org.dromara.demo.controller;
import jakarta.servlet.http.HttpServletResponse;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.io.IOException;
/**
* @Author gejunhao
* @Date 2025/1/10 14:11
* @Description: 测试接口
*/
@Slf4j
@Validated
@RequiredArgsConstructor
@RestController
@RequestMapping("/test")
public class DemoController {
@GetMapping("/hello")
public void test(HttpServletResponse response) throws IOException {
log.info("hello word!");
response.setContentType("text/html;charset=utf8");
response.getWriter().println("GJH-调用接口成功!");
}
}

117
ruoyi-modules/ruoyi-demo/src/main/java/org/dromara/demo/controller/DeviceInfoController.java

@ -0,0 +1,117 @@
package org.dromara.demo.controller;
import java.util.List;
import lombok.RequiredArgsConstructor;
import jakarta.servlet.http.HttpServletResponse;
import jakarta.validation.constraints.*;
import cn.dev33.satoken.annotation.SaCheckPermission;
import org.dromara.demo.domain.vo.StationSelectVo;
import org.springframework.web.bind.annotation.*;
import org.springframework.validation.annotation.Validated;
import org.dromara.common.idempotent.annotation.RepeatSubmit;
import org.dromara.common.log.annotation.Log;
import org.dromara.common.web.core.BaseController;
import org.dromara.common.mybatis.core.page.PageQuery;
import org.dromara.common.core.domain.R;
import org.dromara.common.core.validate.AddGroup;
import org.dromara.common.core.validate.EditGroup;
import org.dromara.common.log.enums.BusinessType;
import org.dromara.common.excel.utils.ExcelUtil;
import org.dromara.demo.domain.vo.DeviceInfoVo;
import org.dromara.demo.domain.bo.DeviceInfoBo;
import org.dromara.demo.service.IDeviceInfoService;
import org.dromara.common.mybatis.core.page.TableDataInfo;
/**
* 设备信息
*
* @author GJH
* @date 2025-07-01
*/
@Validated
@RequiredArgsConstructor
@RestController
@RequestMapping("/air/deviceInfo")
public class DeviceInfoController extends BaseController {
private final IDeviceInfoService deviceInfoService;
/**
* 查询设备信息列表
*/
//@SaCheckPermission("air:deviceInfo:list")
@GetMapping("/list")
public TableDataInfo<DeviceInfoVo> list(DeviceInfoBo bo, PageQuery pageQuery) {
return deviceInfoService.queryPageList(bo, pageQuery);
}
/**
* 导出设备信息列表
*/
//@SaCheckPermission("air:deviceInfo:export")
@Log(title = "设备信息", businessType = BusinessType.EXPORT)
@PostMapping("/export")
public void export(DeviceInfoBo bo, HttpServletResponse response) {
List<DeviceInfoVo> list = deviceInfoService.queryList(bo);
ExcelUtil.exportExcel(list, "设备信息", DeviceInfoVo.class, response);
}
/**
* 获取设备信息详细信息
*
* @param id 主键
*/
//@SaCheckPermission("air:deviceInfo:query")
@GetMapping("/{id}")
public R<DeviceInfoVo> getInfo(@NotNull(message = "主键不能为空")
@PathVariable String id) {
return R.ok(deviceInfoService.queryById(id));
}
/**
* 新增设备信息
*/
//@SaCheckPermission("air:deviceInfo:add")
@Log(title = "设备信息", businessType = BusinessType.INSERT)
@RepeatSubmit()
@PostMapping()
public R<Void> add(@Validated(AddGroup.class) @RequestBody DeviceInfoBo bo) {
return toAjax(deviceInfoService.insertByBo(bo));
}
/**
* 修改设备信息
*/
//@SaCheckPermission("air:deviceInfo:edit")
@Log(title = "设备信息", businessType = BusinessType.UPDATE)
@RepeatSubmit()
@PutMapping()
public R<Void> edit(@Validated(EditGroup.class) @RequestBody DeviceInfoBo bo) {
return toAjax(deviceInfoService.updateByBo(bo));
}
/**
* 删除设备信息
*
* @param ids 主键串
*/
//@SaCheckPermission("air:deviceInfo:remove")
@Log(title = "设备信息", businessType = BusinessType.DELETE)
@DeleteMapping("/{ids}")
public R<Void> remove(@NotEmpty(message = "主键不能为空")
@PathVariable String[] ids) {
return toAjax(deviceInfoService.deleteWithValidByIds(List.of(ids), true));
}
/**
* 获取站点名称下拉框列表
* @return
*/
@GetMapping("/getStationList")
public R< List<StationSelectVo>> getStationList() {
List<StationSelectVo> stationList = deviceInfoService.getStationList();
return R.ok(stationList);
}
}

105
ruoyi-modules/ruoyi-demo/src/main/java/org/dromara/demo/controller/OrderManagementInfoController.java

@ -0,0 +1,105 @@
package org.dromara.demo.controller;
import java.util.List;
import lombok.RequiredArgsConstructor;
import jakarta.servlet.http.HttpServletResponse;
import jakarta.validation.constraints.*;
import cn.dev33.satoken.annotation.SaCheckPermission;
import org.springframework.web.bind.annotation.*;
import org.springframework.validation.annotation.Validated;
import org.dromara.common.idempotent.annotation.RepeatSubmit;
import org.dromara.common.log.annotation.Log;
import org.dromara.common.web.core.BaseController;
import org.dromara.common.mybatis.core.page.PageQuery;
import org.dromara.common.core.domain.R;
import org.dromara.common.core.validate.AddGroup;
import org.dromara.common.core.validate.EditGroup;
import org.dromara.common.log.enums.BusinessType;
import org.dromara.common.excel.utils.ExcelUtil;
import org.dromara.demo.domain.vo.OrderManagementInfoVo;
import org.dromara.demo.domain.bo.OrderManagementInfoBo;
import org.dromara.demo.service.IOrderManagementInfoService;
import org.dromara.common.mybatis.core.page.TableDataInfo;
/**
* 现场核查单管理信息
*
* @author GJH
* @date 2025-07-02
*/
@Validated
@RequiredArgsConstructor
@RestController
@RequestMapping("/air/managementInfo")
public class OrderManagementInfoController extends BaseController {
private final IOrderManagementInfoService orderManagementInfoService;
/**
* 查询现场核查单管理信息列表
*/
//@SaCheckPermission("air:managementInfo:list")
@GetMapping("/list")
public TableDataInfo<OrderManagementInfoVo> list(OrderManagementInfoBo bo, PageQuery pageQuery) {
return orderManagementInfoService.queryPageList(bo, pageQuery);
}
/**
* 导出现场核查单管理信息列表
*/
//@SaCheckPermission("air:managementInfo:export")
@Log(title = "现场核查单管理信息", businessType = BusinessType.EXPORT)
@PostMapping("/export")
public void export(OrderManagementInfoBo bo, HttpServletResponse response) {
List<OrderManagementInfoVo> list = orderManagementInfoService.queryList(bo);
ExcelUtil.exportExcel(list, "现场核查单管理信息", OrderManagementInfoVo.class, response);
}
/**
* 获取现场核查单管理信息详细信息
*
* @param id 主键
*/
//@SaCheckPermission("air:managementInfo:query")
@GetMapping("/{id}")
public R<OrderManagementInfoVo> getInfo(@NotNull(message = "主键不能为空")
@PathVariable String id) {
return R.ok(orderManagementInfoService.queryById(id));
}
/**
* 新增现场核查单管理信息
*/
//@SaCheckPermission("air:managementInfo:add")
@Log(title = "现场核查单管理信息", businessType = BusinessType.INSERT)
@RepeatSubmit()
@PostMapping()
public R<Void> add(@Validated(AddGroup.class) @RequestBody OrderManagementInfoBo bo) {
return toAjax(orderManagementInfoService.insertByBo(bo));
}
/**
* 修改现场核查单管理信息
*/
//@SaCheckPermission("air:managementInfo:edit")
@Log(title = "现场核查单管理信息", businessType = BusinessType.UPDATE)
@RepeatSubmit()
@PutMapping()
public R<Void> edit(@Validated(EditGroup.class) @RequestBody OrderManagementInfoBo bo) {
return toAjax(orderManagementInfoService.updateByBo(bo));
}
/**
* 删除现场核查单管理信息
*
* @param ids 主键串
*/
//@SaCheckPermission("air:managementInfo:remove")
@Log(title = "现场核查单管理信息", businessType = BusinessType.DELETE)
@DeleteMapping("/{ids}")
public R<Void> remove(@NotEmpty(message = "主键不能为空")
@PathVariable String[] ids) {
return toAjax(orderManagementInfoService.deleteWithValidByIds(List.of(ids), true));
}
}

105
ruoyi-modules/ruoyi-demo/src/main/java/org/dromara/demo/controller/PeopleCheckInfoController.java

@ -0,0 +1,105 @@
package org.dromara.demo.controller;
import java.util.List;
import lombok.RequiredArgsConstructor;
import jakarta.servlet.http.HttpServletResponse;
import jakarta.validation.constraints.*;
import cn.dev33.satoken.annotation.SaCheckPermission;
import org.springframework.web.bind.annotation.*;
import org.springframework.validation.annotation.Validated;
import org.dromara.common.idempotent.annotation.RepeatSubmit;
import org.dromara.common.log.annotation.Log;
import org.dromara.common.web.core.BaseController;
import org.dromara.common.mybatis.core.page.PageQuery;
import org.dromara.common.core.domain.R;
import org.dromara.common.core.validate.AddGroup;
import org.dromara.common.core.validate.EditGroup;
import org.dromara.common.log.enums.BusinessType;
import org.dromara.common.excel.utils.ExcelUtil;
import org.dromara.demo.domain.vo.PeopleCheckInfoVo;
import org.dromara.demo.domain.bo.PeopleCheckInfoBo;
import org.dromara.demo.service.IPeopleCheckInfoService;
import org.dromara.common.mybatis.core.page.TableDataInfo;
/**
* 人员签到统计
*
* @author GJH
* @date 2025-07-08
*/
@Validated
@RequiredArgsConstructor
@RestController
@RequestMapping("/air/checkInfo")
public class PeopleCheckInfoController extends BaseController {
private final IPeopleCheckInfoService peopleCheckInfoService;
/**
* 查询人员签到统计列表
*/
//@SaCheckPermission("air:checkInfo:list")
@GetMapping("/list")
public TableDataInfo<PeopleCheckInfoVo> list(PeopleCheckInfoBo bo, PageQuery pageQuery) {
return peopleCheckInfoService.queryPageList(bo, pageQuery);
}
/**
* 导出人员签到统计列表
*/
//@SaCheckPermission("air:checkInfo:export")
@Log(title = "人员签到统计", businessType = BusinessType.EXPORT)
@PostMapping("/export")
public void export(PeopleCheckInfoBo bo, HttpServletResponse response) {
List<PeopleCheckInfoVo> list = peopleCheckInfoService.queryList(bo);
ExcelUtil.exportExcel(list, "人员签到统计", PeopleCheckInfoVo.class, response);
}
/**
* 获取人员签到统计详细信息
*
* @param id 主键
*/
//@SaCheckPermission("air:checkInfo:query")
@GetMapping("/{id}")
public R<PeopleCheckInfoVo> getInfo(@NotNull(message = "主键不能为空")
@PathVariable String id) {
return R.ok(peopleCheckInfoService.queryById(id));
}
/**
* 新增人员签到统计
*/
//@SaCheckPermission("air:checkInfo:add")
@Log(title = "人员签到统计", businessType = BusinessType.INSERT)
@RepeatSubmit()
@PostMapping()
public R<Void> add(@Validated(AddGroup.class) @RequestBody PeopleCheckInfoBo bo) {
return toAjax(peopleCheckInfoService.insertByBo(bo));
}
/**
* 修改人员签到统计
*/
//@SaCheckPermission("air:checkInfo:edit")
@Log(title = "人员签到统计", businessType = BusinessType.UPDATE)
@RepeatSubmit()
@PutMapping()
public R<Void> edit(@Validated(EditGroup.class) @RequestBody PeopleCheckInfoBo bo) {
return toAjax(peopleCheckInfoService.updateByBo(bo));
}
/**
* 删除人员签到统计
*
* @param ids 主键串
*/
//@SaCheckPermission("air:checkInfo:remove")
@Log(title = "人员签到统计", businessType = BusinessType.DELETE)
@DeleteMapping("/{ids}")
public R<Void> remove(@NotEmpty(message = "主键不能为空")
@PathVariable String[] ids) {
return toAjax(peopleCheckInfoService.deleteWithValidByIds(List.of(ids), true));
}
}

113
ruoyi-modules/ruoyi-demo/src/main/java/org/dromara/demo/controller/PlanInfoController.java

@ -0,0 +1,113 @@
package org.dromara.demo.controller;
import java.util.List;
import lombok.RequiredArgsConstructor;
import jakarta.servlet.http.HttpServletResponse;
import jakarta.validation.constraints.*;
import cn.dev33.satoken.annotation.SaCheckPermission;
import org.dromara.demo.domain.vo.PlanSelectVo;
import org.springframework.web.bind.annotation.*;
import org.springframework.validation.annotation.Validated;
import org.dromara.common.idempotent.annotation.RepeatSubmit;
import org.dromara.common.log.annotation.Log;
import org.dromara.common.web.core.BaseController;
import org.dromara.common.mybatis.core.page.PageQuery;
import org.dromara.common.core.domain.R;
import org.dromara.common.core.validate.AddGroup;
import org.dromara.common.core.validate.EditGroup;
import org.dromara.common.log.enums.BusinessType;
import org.dromara.common.excel.utils.ExcelUtil;
import org.dromara.demo.domain.vo.PlanInfoVo;
import org.dromara.demo.domain.bo.PlanInfoBo;
import org.dromara.demo.service.IPlanInfoService;
import org.dromara.common.mybatis.core.page.TableDataInfo;
/**
* 计划管理
*
* @author GJH
* @date 2025-07-03
*/
@Validated
@RequiredArgsConstructor
@RestController
@RequestMapping("/air/planInfo")
public class PlanInfoController extends BaseController {
private final IPlanInfoService planInfoService;
/**
* 查询计划管理列表
*/
//@SaCheckPermission("air:planInfo:list")
@GetMapping("/list")
public TableDataInfo<PlanInfoVo> list(PlanInfoBo bo, PageQuery pageQuery) {
return planInfoService.queryPageList(bo, pageQuery);
}
/**
* 导出计划管理列表
*/
//@SaCheckPermission("air:planInfo:export")
@Log(title = "计划管理", businessType = BusinessType.EXPORT)
@PostMapping("/export")
public void export(PlanInfoBo bo, HttpServletResponse response) {
List<PlanInfoVo> list = planInfoService.queryList(bo);
ExcelUtil.exportExcel(list, "计划管理", PlanInfoVo.class, response);
}
/**
* 获取计划管理详细信息
*
* @param id 主键
*/
//@SaCheckPermission("air:planInfo:query")
@GetMapping("/{id}")
public R<PlanInfoVo> getInfo(@NotNull(message = "主键不能为空")
@PathVariable String id) {
return R.ok(planInfoService.queryById(id));
}
/**
* 新增计划管理
*/
//@SaCheckPermission("air:planInfo:add")
@Log(title = "计划管理", businessType = BusinessType.INSERT)
@RepeatSubmit()
@PostMapping()
public R<Void> add(@Validated(AddGroup.class) @RequestBody PlanInfoBo bo) {
return toAjax(planInfoService.insertByBo(bo));
}
/**
* 修改计划管理
*/
//@SaCheckPermission("air:planInfo:edit")
@Log(title = "计划管理", businessType = BusinessType.UPDATE)
@RepeatSubmit()
@PutMapping()
public R<Void> edit(@Validated(EditGroup.class) @RequestBody PlanInfoBo bo) {
return toAjax(planInfoService.updateByBo(bo));
}
/**
* 删除计划管理
*
* @param ids 主键串
*/
//@SaCheckPermission("air:planInfo:remove")
@Log(title = "计划管理", businessType = BusinessType.DELETE)
@DeleteMapping("/{ids}")
public R<Void> remove(@NotEmpty(message = "主键不能为空")
@PathVariable String[] ids) {
return toAjax(planInfoService.deleteWithValidByIds(List.of(ids), true));
}
@GetMapping("/getPlans")
public R<List<PlanSelectVo>> getPlans(PlanInfoBo bo) {
List<PlanSelectVo> rs = planInfoService.getPlans(bo);
return R.ok(rs);
}
}

105
ruoyi-modules/ruoyi-demo/src/main/java/org/dromara/demo/controller/PmDataManagementInfoController.java

@ -0,0 +1,105 @@
package org.dromara.demo.controller;
import java.util.List;
import lombok.RequiredArgsConstructor;
import jakarta.servlet.http.HttpServletResponse;
import jakarta.validation.constraints.*;
import cn.dev33.satoken.annotation.SaCheckPermission;
import org.springframework.web.bind.annotation.*;
import org.springframework.validation.annotation.Validated;
import org.dromara.common.idempotent.annotation.RepeatSubmit;
import org.dromara.common.log.annotation.Log;
import org.dromara.common.web.core.BaseController;
import org.dromara.common.mybatis.core.page.PageQuery;
import org.dromara.common.core.domain.R;
import org.dromara.common.core.validate.AddGroup;
import org.dromara.common.core.validate.EditGroup;
import org.dromara.common.log.enums.BusinessType;
import org.dromara.common.excel.utils.ExcelUtil;
import org.dromara.demo.domain.vo.PmDataManagementInfoVo;
import org.dromara.demo.domain.bo.PmDataManagementInfoBo;
import org.dromara.demo.service.IPmDataManagementInfoService;
import org.dromara.common.mybatis.core.page.TableDataInfo;
/**
* 颗粒物手工比对数据管理信息
*
* @author GJH
* @date 2025-07-02
*/
@Validated
@RequiredArgsConstructor
@RestController
@RequestMapping("/air/dataManagementInfo")
public class PmDataManagementInfoController extends BaseController {
private final IPmDataManagementInfoService pmDataManagementInfoService;
/**
* 查询颗粒物手工比对数据管理信息列表
*/
//@SaCheckPermission("air:dataManagementInfo:list")
@GetMapping("/list")
public TableDataInfo<PmDataManagementInfoVo> list(PmDataManagementInfoBo bo, PageQuery pageQuery) {
return pmDataManagementInfoService.queryPageList(bo, pageQuery);
}
/**
* 导出颗粒物手工比对数据管理信息列表
*/
//@SaCheckPermission("air:dataManagementInfo:export")
@Log(title = "颗粒物手工比对数据管理信息", businessType = BusinessType.EXPORT)
@PostMapping("/export")
public void export(PmDataManagementInfoBo bo, HttpServletResponse response) {
List<PmDataManagementInfoVo> list = pmDataManagementInfoService.queryList(bo);
ExcelUtil.exportExcel(list, "颗粒物手工比对数据管理信息", PmDataManagementInfoVo.class, response);
}
/**
* 获取颗粒物手工比对数据管理信息详细信息
*
* @param id 主键
*/
//@SaCheckPermission("air:dataManagementInfo:query")
@GetMapping("/{id}")
public R<PmDataManagementInfoVo> getInfo(@NotNull(message = "主键不能为空")
@PathVariable String id) {
return R.ok(pmDataManagementInfoService.queryById(id));
}
/**
* 新增颗粒物手工比对数据管理信息
*/
//@SaCheckPermission("air:dataManagementInfo:add")
@Log(title = "颗粒物手工比对数据管理信息", businessType = BusinessType.INSERT)
@RepeatSubmit()
@PostMapping()
public R<Void> add(@Validated(AddGroup.class) @RequestBody PmDataManagementInfoBo bo) {
return toAjax(pmDataManagementInfoService.insertByBo(bo));
}
/**
* 修改颗粒物手工比对数据管理信息
*/
//@SaCheckPermission("air:dataManagementInfo:edit")
@Log(title = "颗粒物手工比对数据管理信息", businessType = BusinessType.UPDATE)
@RepeatSubmit()
@PutMapping()
public R<Void> edit(@Validated(EditGroup.class) @RequestBody PmDataManagementInfoBo bo) {
return toAjax(pmDataManagementInfoService.updateByBo(bo));
}
/**
* 删除颗粒物手工比对数据管理信息
*
* @param ids 主键串
*/
//@SaCheckPermission("air:dataManagementInfo:remove")
@Log(title = "颗粒物手工比对数据管理信息", businessType = BusinessType.DELETE)
@DeleteMapping("/{ids}")
public R<Void> remove(@NotEmpty(message = "主键不能为空")
@PathVariable String[] ids) {
return toAjax(pmDataManagementInfoService.deleteWithValidByIds(List.of(ids), true));
}
}

117
ruoyi-modules/ruoyi-demo/src/main/java/org/dromara/demo/controller/SiteEvaluationInfoController.java

@ -0,0 +1,117 @@
package org.dromara.demo.controller;
import java.io.IOException;
import java.util.List;
import com.fasterxml.jackson.core.JsonProcessingException;
import lombok.RequiredArgsConstructor;
import jakarta.servlet.http.HttpServletResponse;
import jakarta.validation.constraints.*;
import cn.dev33.satoken.annotation.SaCheckPermission;
import org.springframework.web.bind.annotation.*;
import org.springframework.validation.annotation.Validated;
import org.dromara.common.idempotent.annotation.RepeatSubmit;
import org.dromara.common.log.annotation.Log;
import org.dromara.common.web.core.BaseController;
import org.dromara.common.mybatis.core.page.PageQuery;
import org.dromara.common.core.domain.R;
import org.dromara.common.core.validate.AddGroup;
import org.dromara.common.core.validate.EditGroup;
import org.dromara.common.log.enums.BusinessType;
import org.dromara.common.excel.utils.ExcelUtil;
import org.dromara.demo.domain.vo.SiteEvaluationInfoVo;
import org.dromara.demo.domain.bo.SiteEvaluationInfoBo;
import org.dromara.demo.service.ISiteEvaluationInfoService;
import org.dromara.common.mybatis.core.page.TableDataInfo;
/**
* 现场考核信息
*
* @author GJH
* @date 2025-09-05
*/
@Validated
@RequiredArgsConstructor
@RestController
@RequestMapping("/air/evaluationInfo")
public class SiteEvaluationInfoController extends BaseController {
private final ISiteEvaluationInfoService siteEvaluationInfoService;
/**
* 查询现场考核信息列表
*/
//@SaCheckPermission("air:evaluationInfo:list")
@GetMapping("/list")
public TableDataInfo<SiteEvaluationInfoVo> list(SiteEvaluationInfoBo bo, PageQuery pageQuery) {
return siteEvaluationInfoService.queryPageList(bo, pageQuery);
}
/**
* 导出现场考核信息列表
*/
//@SaCheckPermission("air:evaluationInfo:export")
@Log(title = "现场考核信息", businessType = BusinessType.EXPORT)
@PostMapping("/export")
public void export(SiteEvaluationInfoBo bo, HttpServletResponse response) {
List<SiteEvaluationInfoVo> list = siteEvaluationInfoService.queryList(bo);
ExcelUtil.exportExcel(list, "现场考核信息", SiteEvaluationInfoVo.class, response);
}
/**
* 获取现场考核信息详细信息
*
* @param id 主键
*/
//@SaCheckPermission("air:evaluationInfo:query")
@GetMapping("/{id}")
public R<SiteEvaluationInfoVo> getInfo(@NotNull(message = "主键不能为空")
@PathVariable String id) throws JsonProcessingException {
return R.ok(siteEvaluationInfoService.queryById(id));
}
/**
* 新增现场考核信息
*/
//@SaCheckPermission("air:evaluationInfo:add")
@Log(title = "现场考核信息", businessType = BusinessType.INSERT)
@RepeatSubmit()
@PostMapping()
public R<Void> add(@Validated(AddGroup.class) @RequestBody SiteEvaluationInfoBo bo) {
return toAjax(siteEvaluationInfoService.insertByBo(bo));
}
/**
* 修改现场考核信息
*/
//@SaCheckPermission("air:evaluationInfo:edit")
@Log(title = "现场考核信息", businessType = BusinessType.UPDATE)
@RepeatSubmit()
@PutMapping()
public R<Void> edit(@Validated(EditGroup.class) @RequestBody SiteEvaluationInfoBo bo) {
return toAjax(siteEvaluationInfoService.updateByBo(bo));
}
/**
* 删除现场考核信息
*
* @param ids 主键串
*/
//@SaCheckPermission("air:evaluationInfo:remove")
@Log(title = "现场考核信息", businessType = BusinessType.DELETE)
@DeleteMapping("/{ids}")
public R<Void> remove(@NotEmpty(message = "主键不能为空")
@PathVariable String[] ids) {
return toAjax(siteEvaluationInfoService.deleteWithValidByIds(List.of(ids), true));
}
@GetMapping("/download/world")
public void download( HttpServletResponse response) throws Exception {
siteEvaluationInfoService.download(response);
}
@GetMapping("/download/world2")
public void download2( HttpServletResponse response) throws Exception {
siteEvaluationInfoService.download2(response);
}
}

105
ruoyi-modules/ruoyi-demo/src/main/java/org/dromara/demo/controller/SparePartsInfoController.java

@ -0,0 +1,105 @@
package org.dromara.demo.controller;
import java.util.List;
import lombok.RequiredArgsConstructor;
import jakarta.servlet.http.HttpServletResponse;
import jakarta.validation.constraints.*;
import cn.dev33.satoken.annotation.SaCheckPermission;
import org.springframework.web.bind.annotation.*;
import org.springframework.validation.annotation.Validated;
import org.dromara.common.idempotent.annotation.RepeatSubmit;
import org.dromara.common.log.annotation.Log;
import org.dromara.common.web.core.BaseController;
import org.dromara.common.mybatis.core.page.PageQuery;
import org.dromara.common.core.domain.R;
import org.dromara.common.core.validate.AddGroup;
import org.dromara.common.core.validate.EditGroup;
import org.dromara.common.log.enums.BusinessType;
import org.dromara.common.excel.utils.ExcelUtil;
import org.dromara.demo.domain.vo.SparePartsInfoVo;
import org.dromara.demo.domain.bo.SparePartsInfoBo;
import org.dromara.demo.service.ISparePartsInfoService;
import org.dromara.common.mybatis.core.page.TableDataInfo;
/**
* 备品备件列
*
* @author GJH
* @date 2025-07-02
*/
@Validated
@RequiredArgsConstructor
@RestController
@RequestMapping("/air/partsInfo")
public class SparePartsInfoController extends BaseController {
private final ISparePartsInfoService sparePartsInfoService;
/**
* 查询备品备件列列表
*/
//@SaCheckPermission("air:partsInfo:list")
@GetMapping("/list")
public TableDataInfo<SparePartsInfoVo> list(SparePartsInfoBo bo, PageQuery pageQuery) {
return sparePartsInfoService.queryPageList(bo, pageQuery);
}
/**
* 导出备品备件列列表
*/
//@SaCheckPermission("air:partsInfo:export")
@Log(title = "备品备件列", businessType = BusinessType.EXPORT)
@PostMapping("/export")
public void export(SparePartsInfoBo bo, HttpServletResponse response) {
List<SparePartsInfoVo> list = sparePartsInfoService.queryList(bo);
ExcelUtil.exportExcel(list, "备品备件列", SparePartsInfoVo.class, response);
}
/**
* 获取备品备件列详细信息
*
* @param id 主键
*/
//@SaCheckPermission("air:partsInfo:query")
@GetMapping("/{id}")
public R<SparePartsInfoVo> getInfo(@NotNull(message = "主键不能为空")
@PathVariable String id) {
return R.ok(sparePartsInfoService.queryById(id));
}
/**
* 新增备品备件列
*/
//@SaCheckPermission("air:partsInfo:add")
@Log(title = "备品备件列", businessType = BusinessType.INSERT)
@RepeatSubmit()
@PostMapping()
public R<Void> add(@Validated(AddGroup.class) @RequestBody SparePartsInfoBo bo) {
return toAjax(sparePartsInfoService.insertByBo(bo));
}
/**
* 修改备品备件列
*/
//@SaCheckPermission("air:partsInfo:edit")
@Log(title = "备品备件列", businessType = BusinessType.UPDATE)
@RepeatSubmit()
@PutMapping()
public R<Void> edit(@Validated(EditGroup.class) @RequestBody SparePartsInfoBo bo) {
return toAjax(sparePartsInfoService.updateByBo(bo));
}
/**
* 删除备品备件列
*
* @param ids 主键串
*/
//@SaCheckPermission("air:partsInfo:remove")
@Log(title = "备品备件列", businessType = BusinessType.DELETE)
@DeleteMapping("/{ids}")
public R<Void> remove(@NotEmpty(message = "主键不能为空")
@PathVariable String[] ids) {
return toAjax(sparePartsInfoService.deleteWithValidByIds(List.of(ids), true));
}
}

105
ruoyi-modules/ruoyi-demo/src/main/java/org/dromara/demo/controller/StationFaultInfoController.java

@ -0,0 +1,105 @@
package org.dromara.demo.controller;
import java.util.List;
import lombok.RequiredArgsConstructor;
import jakarta.servlet.http.HttpServletResponse;
import jakarta.validation.constraints.*;
import cn.dev33.satoken.annotation.SaCheckPermission;
import org.springframework.web.bind.annotation.*;
import org.springframework.validation.annotation.Validated;
import org.dromara.common.idempotent.annotation.RepeatSubmit;
import org.dromara.common.log.annotation.Log;
import org.dromara.common.web.core.BaseController;
import org.dromara.common.mybatis.core.page.PageQuery;
import org.dromara.common.core.domain.R;
import org.dromara.common.core.validate.AddGroup;
import org.dromara.common.core.validate.EditGroup;
import org.dromara.common.log.enums.BusinessType;
import org.dromara.common.excel.utils.ExcelUtil;
import org.dromara.demo.domain.vo.StationFaultInfoVo;
import org.dromara.demo.domain.bo.StationFaultInfoBo;
import org.dromara.demo.service.IStationFaultInfoService;
import org.dromara.common.mybatis.core.page.TableDataInfo;
/**
* 站点运维故障信息
*
* @author gejunhao
* @date 2025-07-08
*/
@Validated
@RequiredArgsConstructor
@RestController
@RequestMapping("/air/stationFaultInfo")
public class StationFaultInfoController extends BaseController {
private final IStationFaultInfoService stationFaultInfoService;
/**
* 查询站点运维故障信息列表
*/
//@SaCheckPermission("air:faultInfo:list")
@GetMapping("/list")
public TableDataInfo<StationFaultInfoVo> list(StationFaultInfoBo bo, PageQuery pageQuery) {
return stationFaultInfoService.queryPageList(bo, pageQuery);
}
/**
* 导出站点运维故障信息列表
*/
//@SaCheckPermission("air:faultInfo:export")
@Log(title = "站点运维故障信息", businessType = BusinessType.EXPORT)
@PostMapping("/export")
public void export(StationFaultInfoBo bo, HttpServletResponse response) {
List<StationFaultInfoVo> list = stationFaultInfoService.queryList(bo);
ExcelUtil.exportExcel(list, "站点运维故障信息", StationFaultInfoVo.class, response);
}
/**
* 获取站点运维故障信息详细信息
*
* @param id 主键
*/
//@SaCheckPermission("air:faultInfo:query")
@GetMapping("/{id}")
public R<StationFaultInfoVo> getInfo(@NotNull(message = "主键不能为空")
@PathVariable String id) {
return R.ok(stationFaultInfoService.queryById(id));
}
/**
* 新增站点运维故障信息
*/
//@SaCheckPermission("air:faultInfo:add")
@Log(title = "站点运维故障信息", businessType = BusinessType.INSERT)
@RepeatSubmit()
@PostMapping()
public R<Void> add(@Validated(AddGroup.class) @RequestBody StationFaultInfoBo bo) {
return toAjax(stationFaultInfoService.insertByBo(bo));
}
/**
* 修改站点运维故障信息
*/
//@SaCheckPermission("air:faultInfo:edit")
@Log(title = "站点运维故障信息", businessType = BusinessType.UPDATE)
@RepeatSubmit()
@PutMapping()
public R<Void> edit(@Validated(EditGroup.class) @RequestBody StationFaultInfoBo bo) {
return toAjax(stationFaultInfoService.updateByBo(bo));
}
/**
* 删除站点运维故障信息
*
* @param ids 主键串
*/
//@SaCheckPermission("air:faultInfo:remove")
@Log(title = "站点运维故障信息", businessType = BusinessType.DELETE)
@DeleteMapping("/{ids}")
public R<Void> remove(@NotEmpty(message = "主键不能为空")
@PathVariable String[] ids) {
return toAjax(stationFaultInfoService.deleteWithValidByIds(List.of(ids), true));
}
}

129
ruoyi-modules/ruoyi-demo/src/main/java/org/dromara/demo/controller/StationInfoController.java

@ -0,0 +1,129 @@
package org.dromara.demo.controller;
import java.util.List;
import lombok.RequiredArgsConstructor;
import jakarta.servlet.http.HttpServletResponse;
import jakarta.validation.constraints.*;
import cn.dev33.satoken.annotation.SaCheckPermission;
import org.dromara.demo.domain.vo.RegionVo;
import org.dromara.demo.domain.vo.StationSelectVo;
import org.springframework.web.bind.annotation.*;
import org.springframework.validation.annotation.Validated;
import org.dromara.common.idempotent.annotation.RepeatSubmit;
import org.dromara.common.log.annotation.Log;
import org.dromara.common.web.core.BaseController;
import org.dromara.common.mybatis.core.page.PageQuery;
import org.dromara.common.core.domain.R;
import org.dromara.common.core.validate.AddGroup;
import org.dromara.common.core.validate.EditGroup;
import org.dromara.common.log.enums.BusinessType;
import org.dromara.common.excel.utils.ExcelUtil;
import org.dromara.demo.domain.vo.StationInfoVo;
import org.dromara.demo.domain.bo.StationInfoBo;
import org.dromara.demo.service.IStationInfoService;
import org.dromara.common.mybatis.core.page.TableDataInfo;
/**
* 子站信息
*
* @author GJH
* @date 2025-07-01
*/
@Validated
@RequiredArgsConstructor
@RestController
@RequestMapping("/air/stationInfo")
public class StationInfoController extends BaseController {
private final IStationInfoService stationInfoService;
/**
* 查询子站信息列表
*/
//@SaCheckPermission("air:stationInfo:list")
@GetMapping("/list")
public TableDataInfo<StationInfoVo> list(StationInfoBo bo, PageQuery pageQuery) {
return stationInfoService.queryPageList(bo, pageQuery);
}
/**
* 导出子站信息列表
*/
//@SaCheckPermission("air:stationInfo:export")
@Log(title = "子站信息", businessType = BusinessType.EXPORT)
@PostMapping("/export")
public void export(StationInfoBo bo, HttpServletResponse response) {
List<StationInfoVo> list = stationInfoService.queryList(bo);
ExcelUtil.exportExcel(list, "子站信息", StationInfoVo.class, response);
}
/**
* 获取子站信息详细信息
*
* @param id 主键
*/
//@SaCheckPermission("air:stationInfo:query")
@GetMapping("/{id}")
public R<StationInfoVo> getInfo(@NotNull(message = "主键不能为空")
@PathVariable String id) {
return R.ok(stationInfoService.queryById(id));
}
/**
* 新增子站信息
*/
//@SaCheckPermission("air:stationInfo:add")
@Log(title = "子站信息", businessType = BusinessType.INSERT)
@RepeatSubmit()
@PostMapping()
public R<Void> add(@Validated(AddGroup.class) @RequestBody StationInfoBo bo) {
return toAjax(stationInfoService.insertByBo(bo));
}
/**
* 修改子站信息
*/
//@SaCheckPermission("air:stationInfo:edit")
@Log(title = "子站信息", businessType = BusinessType.UPDATE)
@RepeatSubmit()
@PutMapping()
public R<Void> edit(@Validated(EditGroup.class) @RequestBody StationInfoBo bo) {
return toAjax(stationInfoService.updateByBo(bo));
}
/**
* 删除子站信息
*
* @param ids 主键串
*/
//@SaCheckPermission("air:stationInfo:remove")
@Log(title = "子站信息", businessType = BusinessType.DELETE)
@DeleteMapping("/{ids}")
public R<Void> remove(@NotEmpty(message = "主键不能为空")
@PathVariable String[] ids) {
return toAjax(stationInfoService.deleteWithValidByIds(List.of(ids), true));
}
/**
* 获取杭州区域列表
*/
@GetMapping("/getHangzhouRegions")
public R<List<RegionVo>> getHangzhouRegions() {
return R.ok(stationInfoService.getHangzhouRegions());
}
@GetMapping("/getStationNameById")
public R<String> getStationNameById(String stationId) {
return R.ok("获取子站名称",stationInfoService.getStationNameById(stationId));
}
@GetMapping("/getStationList")
public R< List<StationSelectVo>> getStationList() {
List<StationSelectVo> stationList = stationInfoService.getStationList();
return R.ok(stationList);
}
}

105
ruoyi-modules/ruoyi-demo/src/main/java/org/dromara/demo/controller/StationParamChangeController.java

@ -0,0 +1,105 @@
package org.dromara.demo.controller;
import java.util.List;
import lombok.RequiredArgsConstructor;
import jakarta.servlet.http.HttpServletResponse;
import jakarta.validation.constraints.*;
import cn.dev33.satoken.annotation.SaCheckPermission;
import org.springframework.web.bind.annotation.*;
import org.springframework.validation.annotation.Validated;
import org.dromara.common.idempotent.annotation.RepeatSubmit;
import org.dromara.common.log.annotation.Log;
import org.dromara.common.web.core.BaseController;
import org.dromara.common.mybatis.core.page.PageQuery;
import org.dromara.common.core.domain.R;
import org.dromara.common.core.validate.AddGroup;
import org.dromara.common.core.validate.EditGroup;
import org.dromara.common.log.enums.BusinessType;
import org.dromara.common.excel.utils.ExcelUtil;
import org.dromara.demo.domain.vo.StationParamChangeVo;
import org.dromara.demo.domain.bo.StationParamChangeBo;
import org.dromara.demo.service.IStationParamChangeService;
import org.dromara.common.mybatis.core.page.TableDataInfo;
/**
* 站点参数变更
*
* @author gejunhao
* @date 2025-07-08
*/
@Validated
@RequiredArgsConstructor
@RestController
@RequestMapping("/air/paramChange")
public class StationParamChangeController extends BaseController {
private final IStationParamChangeService stationParamChangeService;
/**
* 查询站点参数变更列表
*/
//@SaCheckPermission("air:paramChange:list")
@GetMapping("/list")
public TableDataInfo<StationParamChangeVo> list(StationParamChangeBo bo, PageQuery pageQuery) {
return stationParamChangeService.queryPageList(bo, pageQuery);
}
/**
* 导出站点参数变更列表
*/
//@SaCheckPermission("air:paramChange:export")
@Log(title = "站点参数变更", businessType = BusinessType.EXPORT)
@PostMapping("/export")
public void export(StationParamChangeBo bo, HttpServletResponse response) {
List<StationParamChangeVo> list = stationParamChangeService.queryList(bo);
ExcelUtil.exportExcel(list, "站点参数变更", StationParamChangeVo.class, response);
}
/**
* 获取站点参数变更详细信息
*
* @param id 主键
*/
//@SaCheckPermission("air:paramChange:query")
@GetMapping("/{id}")
public R<StationParamChangeVo> getInfo(@NotNull(message = "主键不能为空")
@PathVariable String id) {
return R.ok(stationParamChangeService.queryById(id));
}
/**
* 新增站点参数变更
*/
//@SaCheckPermission("air:paramChange:add")
@Log(title = "站点参数变更", businessType = BusinessType.INSERT)
@RepeatSubmit()
@PostMapping()
public R<Void> add(@Validated(AddGroup.class) @RequestBody StationParamChangeBo bo) {
return toAjax(stationParamChangeService.insertByBo(bo));
}
/**
* 修改站点参数变更
*/
//@SaCheckPermission("air:paramChange:edit")
@Log(title = "站点参数变更", businessType = BusinessType.UPDATE)
@RepeatSubmit()
@PutMapping()
public R<Void> edit(@Validated(EditGroup.class) @RequestBody StationParamChangeBo bo) {
return toAjax(stationParamChangeService.updateByBo(bo));
}
/**
* 删除站点参数变更
*
* @param ids 主键串
*/
//@SaCheckPermission("air:paramChange:remove")
@Log(title = "站点参数变更", businessType = BusinessType.DELETE)
@DeleteMapping("/{ids}")
public R<Void> remove(@NotEmpty(message = "主键不能为空")
@PathVariable String[] ids) {
return toAjax(stationParamChangeService.deleteWithValidByIds(List.of(ids), true));
}
}

105
ruoyi-modules/ruoyi-demo/src/main/java/org/dromara/demo/controller/WebSiteNetDataAnalysisController.java

@ -0,0 +1,105 @@
package org.dromara.demo.controller;
import java.util.List;
import lombok.RequiredArgsConstructor;
import jakarta.servlet.http.HttpServletResponse;
import jakarta.validation.constraints.*;
import cn.dev33.satoken.annotation.SaCheckPermission;
import org.springframework.web.bind.annotation.*;
import org.springframework.validation.annotation.Validated;
import org.dromara.common.idempotent.annotation.RepeatSubmit;
import org.dromara.common.log.annotation.Log;
import org.dromara.common.web.core.BaseController;
import org.dromara.common.mybatis.core.page.PageQuery;
import org.dromara.common.core.domain.R;
import org.dromara.common.core.validate.AddGroup;
import org.dromara.common.core.validate.EditGroup;
import org.dromara.common.log.enums.BusinessType;
import org.dromara.common.excel.utils.ExcelUtil;
import org.dromara.demo.domain.vo.WebSiteNetDataAnalysisVo;
import org.dromara.demo.domain.bo.WebSiteNetDataAnalysisBo;
import org.dromara.demo.service.IWebSiteNetDataAnalysisService;
import org.dromara.common.mybatis.core.page.TableDataInfo;
/**
* 站点联网数据分析
*
* @author gejunhao
* @date 2025-07-08
*/
@Validated
@RequiredArgsConstructor
@RestController
@RequestMapping("/air/webSiteNetDataAnalysis")
public class WebSiteNetDataAnalysisController extends BaseController {
private final IWebSiteNetDataAnalysisService webSiteNetDataAnalysisService;
/**
* 查询站点联网数据分析列表
*/
//@SaCheckPermission("air:siteNetDataAnalysis:list")
@GetMapping("/list")
public TableDataInfo<WebSiteNetDataAnalysisVo> list(WebSiteNetDataAnalysisBo bo, PageQuery pageQuery) {
return webSiteNetDataAnalysisService.queryPageList(bo, pageQuery);
}
/**
* 导出站点联网数据分析列表
*/
//@SaCheckPermission("air:siteNetDataAnalysis:export")
@Log(title = "站点联网数据分析", businessType = BusinessType.EXPORT)
@PostMapping("/export")
public void export(WebSiteNetDataAnalysisBo bo, HttpServletResponse response) {
List<WebSiteNetDataAnalysisVo> list = webSiteNetDataAnalysisService.queryList(bo);
ExcelUtil.exportExcel(list, "站点联网数据分析", WebSiteNetDataAnalysisVo.class, response);
}
/**
* 获取站点联网数据分析详细信息
*
* @param id 主键
*/
//@SaCheckPermission("air:siteNetDataAnalysis:query")
@GetMapping("/{id}")
public R<WebSiteNetDataAnalysisVo> getInfo(@NotNull(message = "主键不能为空")
@PathVariable String id) {
return R.ok(webSiteNetDataAnalysisService.queryById(id));
}
/**
* 新增站点联网数据分析
*/
//@SaCheckPermission("air:siteNetDataAnalysis:add")
@Log(title = "站点联网数据分析", businessType = BusinessType.INSERT)
@RepeatSubmit()
@PostMapping()
public R<Void> add(@Validated(AddGroup.class) @RequestBody WebSiteNetDataAnalysisBo bo) {
return toAjax(webSiteNetDataAnalysisService.insertByBo(bo));
}
/**
* 修改站点联网数据分析
*/
//@SaCheckPermission("air:siteNetDataAnalysis:edit")
@Log(title = "站点联网数据分析", businessType = BusinessType.UPDATE)
@RepeatSubmit()
@PutMapping()
public R<Void> edit(@Validated(EditGroup.class) @RequestBody WebSiteNetDataAnalysisBo bo) {
return toAjax(webSiteNetDataAnalysisService.updateByBo(bo));
}
/**
* 删除站点联网数据分析
*
* @param ids 主键串
*/
//@SaCheckPermission("air:siteNetDataAnalysis:remove")
@Log(title = "站点联网数据分析", businessType = BusinessType.DELETE)
@DeleteMapping("/{ids}")
public R<Void> remove(@NotEmpty(message = "主键不能为空")
@PathVariable String[] ids) {
return toAjax(webSiteNetDataAnalysisService.deleteWithValidByIds(List.of(ids), true));
}
}

58
ruoyi-modules/guoyan-platform/src/main/java/org/dromara/platform/controller/WorkOrderInfoController.java → ruoyi-modules/ruoyi-demo/src/main/java/org/dromara/demo/controller/WorkOrderInfoController.java

@ -1,4 +1,4 @@
package org.dromara.platform.controller;
package org.dromara.demo.controller;
import java.util.List;
@ -17,86 +17,86 @@ import org.dromara.common.core.validate.AddGroup;
import org.dromara.common.core.validate.EditGroup;
import org.dromara.common.log.enums.BusinessType;
import org.dromara.common.excel.utils.ExcelUtil;
import org.dromara.platform.domain.vo.WorkOrderInfoVo;
import org.dromara.platform.domain.bo.WorkOrderInfoBo;
import org.dromara.platform.service.IWorkOrderInfoService;
import org.dromara.demo.domain.vo.WorkOrderInfoVo;
import org.dromara.demo.domain.bo.WorkOrderInfoBo;
import org.dromara.demo.service.IWorkOrderInfoService;
import org.dromara.common.mybatis.core.page.TableDataInfo;
/**
* 工单信息
* 工单管理
*
* @author gejunhao
* @date 2025-01-13
* @author GJH
* @date 2025-07-03
*/
@Validated
@RequiredArgsConstructor
@RestController
@RequestMapping("/platform/workOrder")
@RequestMapping("/air/orderInfo")
public class WorkOrderInfoController extends BaseController {
private final IWorkOrderInfoService workOrderInfoService;
/**
* 查询工单信息列表
* 查询工单管理列表
*/
@SaCheckPermission("platform:workOrder:list")
//@SaCheckPermission("air:orderInfo:list")
@GetMapping("/list")
public TableDataInfo<WorkOrderInfoVo> list(WorkOrderInfoBo bo, PageQuery pageQuery) {
return workOrderInfoService.queryPageList(bo, pageQuery);
}
/**
* 导出工单信息列表
* 导出工单管理列表
*/
@SaCheckPermission("platform:workOrder:export")
@Log(title = "工单信息", businessType = BusinessType.EXPORT)
//@SaCheckPermission("air:orderInfo:export")
@Log(title = "工单管理", businessType = BusinessType.EXPORT)
@PostMapping("/export")
public void export(WorkOrderInfoBo bo, HttpServletResponse response) {
List<WorkOrderInfoVo> list = workOrderInfoService.queryList(bo);
ExcelUtil.exportExcel(list, "工单信息", WorkOrderInfoVo.class, response);
ExcelUtil.exportExcel(list, "工单管理", WorkOrderInfoVo.class, response);
}
/**
* 获取工单信息详细信息
* 获取工单管理详细信息
*
* @param id 主键
*/
@SaCheckPermission("platform:workOrder:query")
//@SaCheckPermission("air:orderInfo:query")
@GetMapping("/{id}")
public R<WorkOrderInfoVo> getInfo(@NotNull(message = "主键不能为空")
@PathVariable String id) {
@PathVariable String id) {
return R.ok(workOrderInfoService.queryById(id));
}
/**
* 新增工单信息
* 新增工单管理
*/
@SaCheckPermission("platform:workOrder:add")
@Log(title = "工单信息", businessType = BusinessType.INSERT)
//@SaCheckPermission("air:orderInfo:add")
@Log(title = "工单管理", businessType = BusinessType.INSERT)
@RepeatSubmit()
@PostMapping("/add")
@PostMapping()
public R<Void> add(@Validated(AddGroup.class) @RequestBody WorkOrderInfoBo bo) {
return toAjax(workOrderInfoService.insertByBo(bo));
}
/**
* 修改工单信息
* 修改工单管理
*/
@SaCheckPermission("platform:workOrder:edit")
@Log(title = "工单信息", businessType = BusinessType.UPDATE)
//@SaCheckPermission("air:orderInfo:edit")
@Log(title = "工单管理", businessType = BusinessType.UPDATE)
@RepeatSubmit()
@PutMapping("/update")
public R<Void> edit(@RequestBody WorkOrderInfoBo bo) {
@PutMapping()
public R<Void> edit(@Validated(EditGroup.class) @RequestBody WorkOrderInfoBo bo) {
return toAjax(workOrderInfoService.updateByBo(bo));
}
/**
* 删除工单信息
* 删除工单管理
*
* @param ids 主键串
*/
@SaCheckPermission("platform:workOrder:remove")
@Log(title = "工单信息", businessType = BusinessType.DELETE)
//@SaCheckPermission("air:orderInfo:remove")
@Log(title = "工单管理", businessType = BusinessType.DELETE)
@DeleteMapping("/{ids}")
public R<Void> remove(@NotEmpty(message = "主键不能为空")
@PathVariable String[] ids) {

105
ruoyi-modules/ruoyi-demo/src/main/java/org/dromara/demo/controller/ZeroAdjustmentAnalysisController.java

@ -0,0 +1,105 @@
package org.dromara.demo.controller;
import java.util.List;
import lombok.RequiredArgsConstructor;
import jakarta.servlet.http.HttpServletResponse;
import jakarta.validation.constraints.*;
import cn.dev33.satoken.annotation.SaCheckPermission;
import org.springframework.web.bind.annotation.*;
import org.springframework.validation.annotation.Validated;
import org.dromara.common.idempotent.annotation.RepeatSubmit;
import org.dromara.common.log.annotation.Log;
import org.dromara.common.web.core.BaseController;
import org.dromara.common.mybatis.core.page.PageQuery;
import org.dromara.common.core.domain.R;
import org.dromara.common.core.validate.AddGroup;
import org.dromara.common.core.validate.EditGroup;
import org.dromara.common.log.enums.BusinessType;
import org.dromara.common.excel.utils.ExcelUtil;
import org.dromara.demo.domain.vo.ZeroAdjustmentAnalysisVo;
import org.dromara.demo.domain.bo.ZeroAdjustmentAnalysisBo;
import org.dromara.demo.service.IZeroAdjustmentAnalysisService;
import org.dromara.common.mybatis.core.page.TableDataInfo;
/**
* 校零校准分析
*
* @author gejunhao
* @date 2025-07-08
*/
@Validated
@RequiredArgsConstructor
@RestController
@RequestMapping("/air/zeroAdjustmentAnalysis")
public class ZeroAdjustmentAnalysisController extends BaseController {
private final IZeroAdjustmentAnalysisService zeroAdjustmentAnalysisService;
/**
* 查询校零校准分析列表
*/
//@SaCheckPermission("air:adjustmentAnalysis:list")
@GetMapping("/list")
public TableDataInfo<ZeroAdjustmentAnalysisVo> list(ZeroAdjustmentAnalysisBo bo, PageQuery pageQuery) {
return zeroAdjustmentAnalysisService.queryPageList(bo, pageQuery);
}
/**
* 导出校零校准分析列表
*/
//@SaCheckPermission("air:adjustmentAnalysis:export")
@Log(title = "校零校准分析", businessType = BusinessType.EXPORT)
@PostMapping("/export")
public void export(ZeroAdjustmentAnalysisBo bo, HttpServletResponse response) {
List<ZeroAdjustmentAnalysisVo> list = zeroAdjustmentAnalysisService.queryList(bo);
ExcelUtil.exportExcel(list, "校零校准分析", ZeroAdjustmentAnalysisVo.class, response);
}
/**
* 获取校零校准分析详细信息
*
* @param id 主键
*/
//@SaCheckPermission("air:adjustmentAnalysis:query")
@GetMapping("/{id}")
public R<ZeroAdjustmentAnalysisVo> getInfo(@NotNull(message = "主键不能为空")
@PathVariable String id) {
return R.ok(zeroAdjustmentAnalysisService.queryById(id));
}
/**
* 新增校零校准分析
*/
//@SaCheckPermission("air:adjustmentAnalysis:add")
@Log(title = "校零校准分析", businessType = BusinessType.INSERT)
@RepeatSubmit()
@PostMapping()
public R<Void> add(@Validated(AddGroup.class) @RequestBody ZeroAdjustmentAnalysisBo bo) {
return toAjax(zeroAdjustmentAnalysisService.insertByBo(bo));
}
/**
* 修改校零校准分析
*/
//@SaCheckPermission("air:adjustmentAnalysis:edit")
@Log(title = "校零校准分析", businessType = BusinessType.UPDATE)
@RepeatSubmit()
@PutMapping()
public R<Void> edit(@Validated(EditGroup.class) @RequestBody ZeroAdjustmentAnalysisBo bo) {
return toAjax(zeroAdjustmentAnalysisService.updateByBo(bo));
}
/**
* 删除校零校准分析
*
* @param ids 主键串
*/
//@SaCheckPermission("air:adjustmentAnalysis:remove")
@Log(title = "校零校准分析", businessType = BusinessType.DELETE)
@DeleteMapping("/{ids}")
public R<Void> remove(@NotEmpty(message = "主键不能为空")
@PathVariable String[] ids) {
return toAjax(zeroAdjustmentAnalysisService.deleteWithValidByIds(List.of(ids), true));
}
}

1
ruoyi-modules/ruoyi-demo/src/main/java/org/dromara/demo/controller/package-info.java

@ -1 +0,0 @@
package org.dromara.demo.controller;

2
ruoyi-modules/ruoyi-demo/src/main/java/org/dromara/demo/controller/MailController.java → ruoyi-modules/ruoyi-demo/src/main/java/org/dromara/demo/controller/test/MailController.java

@ -1,4 +1,4 @@
package org.dromara.demo.controller;
package org.dromara.demo.controller.test;
import org.dromara.common.core.domain.R;
import org.dromara.common.mail.utils.MailUtils;

2
ruoyi-modules/ruoyi-demo/src/main/java/org/dromara/demo/controller/RedisCacheController.java → ruoyi-modules/ruoyi-demo/src/main/java/org/dromara/demo/controller/test/RedisCacheController.java

@ -1,4 +1,4 @@
package org.dromara.demo.controller;
package org.dromara.demo.controller.test;
import org.dromara.common.core.constant.CacheNames;
import org.dromara.common.core.domain.R;

2
ruoyi-modules/ruoyi-demo/src/main/java/org/dromara/demo/controller/RedisLockController.java → ruoyi-modules/ruoyi-demo/src/main/java/org/dromara/demo/controller/test/RedisLockController.java

@ -1,4 +1,4 @@
package org.dromara.demo.controller;
package org.dromara.demo.controller.test;
import com.baomidou.lock.LockInfo;
import com.baomidou.lock.LockTemplate;

2
ruoyi-modules/ruoyi-demo/src/main/java/org/dromara/demo/controller/RedisPubSubController.java → ruoyi-modules/ruoyi-demo/src/main/java/org/dromara/demo/controller/test/RedisPubSubController.java

@ -1,4 +1,4 @@
package org.dromara.demo.controller;
package org.dromara.demo.controller.test;
import org.dromara.common.core.domain.R;
import org.dromara.common.redis.utils.RedisUtils;

2
ruoyi-modules/ruoyi-demo/src/main/java/org/dromara/demo/controller/RedisRateLimiterController.java → ruoyi-modules/ruoyi-demo/src/main/java/org/dromara/demo/controller/test/RedisRateLimiterController.java

@ -1,4 +1,4 @@
package org.dromara.demo.controller;
package org.dromara.demo.controller.test;
import org.dromara.common.core.domain.R;
import org.dromara.common.ratelimiter.annotation.RateLimiter;

2
ruoyi-modules/ruoyi-demo/src/main/java/org/dromara/demo/controller/SmsController.java → ruoyi-modules/ruoyi-demo/src/main/java/org/dromara/demo/controller/test/SmsController.java

@ -1,4 +1,4 @@
package org.dromara.demo.controller;
package org.dromara.demo.controller.test;
import lombok.RequiredArgsConstructor;
import org.dromara.common.core.domain.R;

2
ruoyi-modules/ruoyi-demo/src/main/java/org/dromara/demo/controller/Swagger3DemoController.java → ruoyi-modules/ruoyi-demo/src/main/java/org/dromara/demo/controller/test/Swagger3DemoController.java

@ -1,4 +1,4 @@
package org.dromara.demo.controller;
package org.dromara.demo.controller.test;
import org.dromara.common.core.domain.R;
import org.springframework.http.MediaType;

2
ruoyi-modules/ruoyi-demo/src/main/java/org/dromara/demo/controller/TestBatchController.java → ruoyi-modules/ruoyi-demo/src/main/java/org/dromara/demo/controller/test/TestBatchController.java

@ -1,4 +1,4 @@
package org.dromara.demo.controller;
package org.dromara.demo.controller.test;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import org.dromara.common.core.domain.R;

2
ruoyi-modules/ruoyi-demo/src/main/java/org/dromara/demo/controller/TestDemoController.java → ruoyi-modules/ruoyi-demo/src/main/java/org/dromara/demo/controller/test/TestDemoController.java

@ -1,4 +1,4 @@
package org.dromara.demo.controller;
package org.dromara.demo.controller.test;
import cn.dev33.satoken.annotation.SaCheckPermission;
import org.dromara.common.core.domain.R;

2
ruoyi-modules/ruoyi-demo/src/main/java/org/dromara/demo/controller/TestEncryptController.java → ruoyi-modules/ruoyi-demo/src/main/java/org/dromara/demo/controller/test/TestEncryptController.java

@ -1,4 +1,4 @@
package org.dromara.demo.controller;
package org.dromara.demo.controller.test;
import org.dromara.common.core.domain.R;
import org.dromara.demo.domain.TestDemoEncrypt;

2
ruoyi-modules/ruoyi-demo/src/main/java/org/dromara/demo/controller/TestExcelController.java → ruoyi-modules/ruoyi-demo/src/main/java/org/dromara/demo/controller/test/TestExcelController.java

@ -1,4 +1,4 @@
package org.dromara.demo.controller;
package org.dromara.demo.controller.test;
import cn.hutool.core.collection.CollUtil;
import jakarta.servlet.http.HttpServletResponse;

2
ruoyi-modules/ruoyi-demo/src/main/java/org/dromara/demo/controller/TestI18nController.java → ruoyi-modules/ruoyi-demo/src/main/java/org/dromara/demo/controller/test/TestI18nController.java

@ -1,4 +1,4 @@
package org.dromara.demo.controller;
package org.dromara.demo.controller.test;
import org.dromara.common.core.domain.R;
import org.dromara.common.core.utils.MessageUtils;

2
ruoyi-modules/ruoyi-demo/src/main/java/org/dromara/demo/controller/TestSensitiveController.java → ruoyi-modules/ruoyi-demo/src/main/java/org/dromara/demo/controller/test/TestSensitiveController.java

@ -1,4 +1,4 @@
package org.dromara.demo.controller;
package org.dromara.demo.controller.test;
import org.dromara.common.core.domain.R;
import org.dromara.common.web.core.BaseController;

2
ruoyi-modules/ruoyi-demo/src/main/java/org/dromara/demo/controller/TestTreeController.java → ruoyi-modules/ruoyi-demo/src/main/java/org/dromara/demo/controller/test/TestTreeController.java

@ -1,4 +1,4 @@
package org.dromara.demo.controller;
package org.dromara.demo.controller.test;
import cn.dev33.satoken.annotation.SaCheckPermission;
import org.dromara.common.core.domain.R;

2
ruoyi-modules/ruoyi-demo/src/main/java/org/dromara/demo/controller/WeSocketController.java → ruoyi-modules/ruoyi-demo/src/main/java/org/dromara/demo/controller/test/WeSocketController.java

@ -1,4 +1,4 @@
package org.dromara.demo.controller;
package org.dromara.demo.controller.test;
import org.dromara.common.core.domain.R;
import org.dromara.common.websocket.dto.WebSocketMessageDto;

1
ruoyi-modules/ruoyi-demo/src/main/java/org/dromara/demo/controller/test/package-info.java

@ -0,0 +1 @@
package org.dromara.demo.controller.test;

30
ruoyi-modules/ruoyi-demo/src/main/java/org/dromara/demo/domain/Attachment.java

@ -0,0 +1,30 @@
package org.dromara.demo.domain;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
@Data
@AllArgsConstructor
@NoArgsConstructor
public class Attachment {
/**
* 附件地址
*/
private String url;
/**
* 附件名称
*/
private String name;
/**
* 附件存储ID
*/
private String ossId;
/**
* 附件描述
*/
private String description;
}

75
ruoyi-modules/ruoyi-demo/src/main/java/org/dromara/demo/domain/AttachmentSerializer.java

@ -0,0 +1,75 @@
package org.dromara.demo.domain;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.core.type.TypeReference;
import com.fasterxml.jackson.databind.ObjectMapper;
import java.util.List;
public class AttachmentSerializer {
private final ObjectMapper objectMapper = new ObjectMapper();
/**
* 将List<Attachment>序列化为JSON字符串
* 序列化
* @param attachment 包含附件信息的列表
* @return 序列化后的JSON字符串
*/
public String serializeAttachments(List<Attachment> attachment) {
try {
// 使用ObjectMapper将List<Attachment>转换为JSON字符串
return objectMapper.writeValueAsString(attachment);
} catch (JsonProcessingException e) {
// 处理可能发生的异常
e.printStackTrace();
// 根据实际情况决定如何处理错误,这里简单地返回null
return null;
}
}
/**
* 将JSON字符串反序列化为List<Attachment>
* 反序列化
* @param attachmentJson JSON格式的字符串
* @return 反序列化后的List<Attachment>
*/
public List<Attachment> deserializeAttachments(String attachmentJson) {
try {
// 使用ObjectMapper将JSON字符串转换回List<Attachment>
return objectMapper.readValue(attachmentJson, new TypeReference<List<Attachment>>() {});
} catch (JsonProcessingException e) {
// 处理可能发生的异常
e.printStackTrace();
// 根据实际情况决定如何处理错误,这里简单地返回null
return null;
}
}
// 测试方法
public static void main(String[] args) {
AttachmentSerializer serializer = new AttachmentSerializer();
// 创建一些模拟数据
List<Attachment> attachmentList = List.of(
new Attachment("http://example.com/file1.pdf", "File One", "ossId1", "Description One"),
new Attachment("http://example.com/file2.docx", "File Two", "ossId2","Description Two" )
);
// 序列化
String serialized = serializer.serializeAttachments(attachmentList);
System.out.println(serialized); // 输出序列化后的JSON字符串
// 反序列化
List<Attachment> deserializedAttachments = serializer.deserializeAttachments(serialized);
System.out.println("Deserialized:");
if (deserializedAttachments != null) {
for (Attachment attachment : deserializedAttachments) {
System.out.println("URL: " + attachment.getUrl() + ", Name: " + attachment.getName());
}
} else {
System.out.println("Failed to deserialize the JSON string.");
}
}
}

95
ruoyi-modules/ruoyi-demo/src/main/java/org/dromara/demo/domain/CheckItem.java

@ -0,0 +1,95 @@
package org.dromara.demo.domain;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.List;
/**
* 检查项实体类平铺结构中的最小单位
* 每个字段说明如下
*/
@Data
@AllArgsConstructor
@NoArgsConstructor
public class CheckItem {
/**
* 检查项目用于合并单元格
* 示例值"01 站房环境保障情况"
* 多个 CheckItem 可共享相同的 checkProject表示属于同一类别
*/
private String checkProject;
// TODO 需要设置集合
private List<String> checkItemBasis;
/**
* 该项满分分数
* 示例值2
* 表示该检查项的总分为 2
*/
private Integer itemScore;
/**
* 实际获得分数
* 示例值1
* 表示本次检查实际得分为 1
*/
private Integer obtainedScore;
/**
* 评分细则列表前端传入的多条依据
* 示例值
* [
* "1)站房环境脏,有明显灰尘和异味;",
* "2)物品摆放不整齐;"
* ]
* 每条为独立字符串导出时需换行显示
*/
private List<String> scoringBasis;
/**
* 扣分规则说明
* 示例值"一项不合格扣0.5分,扣完为止"
* 用于说明扣分逻辑通常显示在评分细则下方
*/
private String deductionRule;
/**
* 格式化评分说明用于导出 Word
* 将评分细则和扣分规则拼接成带换行符的字符串
*
* @return 格式化后的完整说明文本
*/
public String formatScoringExplanation() {
StringBuilder sb = new StringBuilder();
if (this.scoringBasis != null) {
for (String basis : this.scoringBasis) {
sb.append(basis).append("\n");
}
}
if (this.deductionRule != null && !this.deductionRule.trim().isEmpty()) {
sb.append(this.deductionRule);
}
return sb.toString().trim();
}
/**
* 格式化检查要点用于导出 Word
* 将检查要点拼接成带换行符的字符串
*
* @return 格式化后的完整说明文本
*/
public String formatCheckItem() {
StringBuilder sb = new StringBuilder();
if (this.checkItemBasis != null) {
for (String basis : this.checkItemBasis) {
sb.append(basis).append("\n");
}
}
return sb.toString().trim();
}
}

104
ruoyi-modules/ruoyi-demo/src/main/java/org/dromara/demo/domain/DeviceInfo.java

@ -0,0 +1,104 @@
package org.dromara.demo.domain;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableLogic;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.dromara.common.tenant.core.TenantEntity;
import org.springframework.format.annotation.DateTimeFormat;
import java.io.Serial;
import java.util.Date;
/**
* 设备信息对象 device_info
*
* @author GJH
* @date 2025-07-01
*/
@Data
@EqualsAndHashCode(callSuper = true)
@TableName("device_info")
public class DeviceInfo extends TenantEntity {
@Serial
private static final long serialVersionUID = 1L;
/**
* 主键ID自增
*/
@TableId(value = "id")
private String id;
/**
* 站点
*/
private String station;
/**
* 所属区域
*/
private String area;
/**
* 设备名称
*/
private String device;
/**
* 设备型号
*/
private String model;
/**
* 生产厂家
*/
private String manufacturer;
/**
* 生产日期
*/
private Date manufactureDate;
/**
* 序列号
*/
private String number;
/**
* 检测物
*/
private String testSubstance;
/**
* 监理公司
*/
private String monitorCompany;
/**
* 状态
*/
private String status;
/**
* 删除标志
*/
@TableLogic
private Long delFlag;
@TableField(exist = false)
@JsonFormat(pattern = "yyyy-MM-dd")
@DateTimeFormat(pattern = "yyyy-MM-dd")
private Date startDate;
/**
* 结束日期
*/
@TableField(exist = false)
@JsonFormat(pattern = "yyyy-MM-dd")
@DateTimeFormat(pattern = "yyyy-MM-dd")
private Date endDate;
}

129
ruoyi-modules/ruoyi-demo/src/main/java/org/dromara/demo/domain/EvaluationDataJson.java

@ -0,0 +1,129 @@
package org.dromara.demo.domain;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import java.io.Serializable;
import java.math.BigDecimal;
/**
* 现场考核业务数据实体类用于 JSON 序列化
* 对应数据库中的 evaluation_data JSON 字段
* checkDateTime 格式yyyy-MM-dd HH:mm:ss
*/
@Data
public class EvaluationDataJson implements Serializable {
private static final long serialVersionUID = 1L;
/** 站点名称 */
private String siteName;
/**
* 检查时间
* 格式yyyy-MM-dd HH:mm:ss年月日时分秒
* 注意此处使用 String 类型以保持格式一致性避免时区问题
*/
private String checkDateTime;
/** 运维单位 */
private String operationUnit;
/** 检查人员 */
private String checkPeople;
/** 总分 */
private String totalScore; // 使用 String 接收原始 JSON 字符串,或可改为 Integer
// -------------------- 评分项 score_01 到 score_28 --------------------
private String score_01;
private String score_02;
private String score_03;
private String score_04;
private String score_05;
private String score_06;
private String score_07;
private String score_08;
private String score_09;
private String score_10;
private String score_11;
private String score_12;
private String score_13;
private String score_14;
private String score_15;
private String score_16;
private String score_17;
private String score_18;
private String score_19;
private String score_20;
private String score_21;
private String score_22;
private String score_23;
private String score_24;
private String score_25;
private String score_26;
private String score_27;
private String score_28;
// -------------------- 零点校准 --------------------
private String zero_flow;
private String zero_std;
private String zero_error;
// -------------------- 量程校准 --------------------
private String span_flow;
private String span_std;
private String span_error;
// -------------------- SO 参数 --------------------
private String so_display;
private String so_std;
private String so_error;
private String so_conc_output;
private String so_conc_response;
private String so_conc_error;
private String so_time;
// -------------------- NO 参数 --------------------
private String no_display;
private String no_std;
private String no_error;
private String no_conc_output;
private String no_conc_response;
private String no_conc_error;
private String no_time;
// -------------------- CO 参数 --------------------
private String co_display;
private String co_std;
private String co_error;
private String co_conc_output;
private String co_conc_response;
private String co_conc_error;
private String co_time;
// -------------------- O2 参数 --------------------
private String o_display;
private String o_std;
private String o_error;
private String o_conc_output;
private String o_conc_response;
private String o_conc_error;
private String o_time;
// -------------------- PM10 参数 --------------------
private String pm_ten_display;
private String pm_ten_std;
private String pm_ten_error;
private String pm_ten_k;
// -------------------- PM2.5 参数 --------------------
private String pm_two_display;
private String pm_two_std;
private String pm_two_error;
private String pm_two_k;
// -------------------- 斜率参数 --------------------
private String slope_a;
private String slope_b;
}

86
ruoyi-modules/ruoyi-demo/src/main/java/org/dromara/demo/domain/OrderManagementInfo.java

@ -0,0 +1,86 @@
package org.dromara.demo.domain;
import org.dromara.common.tenant.core.TenantEntity;
import com.baomidou.mybatisplus.annotation.*;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
import org.springframework.format.annotation.DateTimeFormat;
import java.io.Serial;
/**
* 现场核查单管理信息对象 order_management_info
*
* @author GJH
* @date 2025-07-02
*/
@Data
@EqualsAndHashCode(callSuper = true)
@TableName("order_management_info")
public class OrderManagementInfo extends TenantEntity {
@Serial
private static final long serialVersionUID = 1L;
/**
* 主键IDMyBatis-Plus自增
*/
@TableId(value = "id")
private String id;
/**
* 核查时间
*/
private Date checkTime;
/**
* 子站名称
*/
private String station;
/**
* 所属区域
*/
private String area;
/**
* 状态
*/
private String status;
/**
* 监理类型
*/
private String monitorType;
/**
* 核查人员
*/
private String checkPerson;
/**
* 核查得分
*/
private Long checkScore;
/**
* 删除标志
*/
@TableLogic
private Long delFlag;
@TableField(exist = false)
@JsonFormat(pattern = "yyyy-MM-dd")
@DateTimeFormat(pattern = "yyyy-MM-dd")
private Date startDate;
/**
* 结束日期
*/
@TableField(exist = false)
@JsonFormat(pattern = "yyyy-MM-dd")
@DateTimeFormat(pattern = "yyyy-MM-dd")
private Date endDate;
}

77
ruoyi-modules/ruoyi-demo/src/main/java/org/dromara/demo/domain/PeopleCheckInfo.java

@ -0,0 +1,77 @@
package org.dromara.demo.domain;
import org.dromara.common.tenant.core.TenantEntity;
import com.baomidou.mybatisplus.annotation.*;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
import org.springframework.format.annotation.DateTimeFormat;
import java.io.Serial;
/**
* 人员签到统计对象 people_check_info
*
* @author GJH
* @date 2025-07-08
*/
@Data
@EqualsAndHashCode(callSuper = true)
@TableName("people_check_info")
public class PeopleCheckInfo extends TenantEntity {
@Serial
private static final long serialVersionUID = 1L;
/**
* 主键ID
*/
@TableId(value = "id")
private String id;
/**
* 站点名称
*/
private String station;
/**
* 所属区域
*/
private String area;
/**
* 人员性质
*/
private String attribute;
/**
* 人员姓名
*/
private String person;
/**
* 所属公司
*/
private String company;
/**
* 签到时间
*/
@JsonFormat(pattern = "yyyy-MM-dd")
@DateTimeFormat(pattern = "yyyy-MM-dd")
private Date registerTime;
/**
* 签到类型
*/
private String registerType;
/**
* 删除标志
*/
@TableLogic
private Long delFlag;
}

85
ruoyi-modules/ruoyi-demo/src/main/java/org/dromara/demo/domain/PlanInfo.java

@ -0,0 +1,85 @@
package org.dromara.demo.domain;
import org.dromara.common.tenant.core.TenantEntity;
import com.baomidou.mybatisplus.annotation.*;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
import java.io.Serial;
/**
* 计划管理对象 plan_info
*
* @author GJH
* @date 2025-07-03
*/
@Data
@EqualsAndHashCode(callSuper = true)
@TableName("plan_info")
public class PlanInfo extends TenantEntity {
@Serial
private static final long serialVersionUID = 1L;
/**
* 主键ID
*/
@TableId(value = "id")
private String id;
/**
* 计划号
*/
private String planNum;
/**
* 计划日期
*/
private Date planDate;
/**
* 子站名称
*/
private String station;
/**
* 子站状态
*/
private String status;
/**
* 所属区域
*/
private String area;
/**
* 运维公司
*/
private String ioCompany;
/**
* 运维人员
*/
private String ioPerson;
/**
* 监理类型
*/
private String monitorType;
/**
* 监理公司
*/
private String monitorCompany;
/**
* 删除标志
*/
@TableLogic
private Long delFlag;
private String flag;
}

94
ruoyi-modules/ruoyi-demo/src/main/java/org/dromara/demo/domain/PmDataManagementInfo.java

@ -0,0 +1,94 @@
package org.dromara.demo.domain;
import org.dromara.common.tenant.core.TenantEntity;
import com.baomidou.mybatisplus.annotation.*;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
import org.springframework.format.annotation.DateTimeFormat;
import java.io.Serial;
/**
* 颗粒物手工比对数据管理信息对象 pm_data_management_info
*
* @author GJH
* @date 2025-07-02
*/
@Data
@EqualsAndHashCode(callSuper = true)
@TableName("pm_data_management_info")
public class PmDataManagementInfo extends TenantEntity {
@Serial
private static final long serialVersionUID = 1L;
/**
* 主键IDMyBatis-Plus自增
*/
@TableId(value = "id")
private String id;
/**
* 子站名称
*/
private String station;
/**
* 所属区域
*/
private String area;
/**
* 运维公司
*/
private String ioCompany;
/**
* 开始时间
*/
@JsonFormat(pattern = "yyyy-MM-dd")
@DateTimeFormat(pattern = "yyyy-MM-dd")
private Date startDate;
/**
* 结束时间
*/
@JsonFormat(pattern = "yyyy-MM-dd")
@DateTimeFormat(pattern = "yyyy-MM-dd")
private Date endDate;
/**
* 监测项目
*/
private String monitorProject;
/**
* 自动监测(mg/m³)
*/
private Long autoMonitor;
/**
* 手动监测(mg/m³)
*/
private Long handleMonitor;
/**
* 相对误差
*/
private Long difference;
/**
* 结论
*/
private String result;
/**
* 删除标志
*/
@TableLogic
private Long delFlag;
}

63
ruoyi-modules/ruoyi-demo/src/main/java/org/dromara/demo/domain/ReportData.java

@ -0,0 +1,63 @@
package org.dromara.demo.domain;
import lombok.Data;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.util.List;
/**
* 监理服务现场技术核查评分报告数据模型
* 注意checkItems 是平铺列表每个 CheckItem 都包含 checkProject 字段
* 用于后续按 checkProject 值进行合并单元格Word 或前端表格
*/
@Data
public class ReportData {
/** 报告标题,如:监理服务现场技术核查评分报告 */
private String reportTitle;
/** 站点名称,如:浦东新区张江空气质量监测站 */
private String siteName;
/** 运维单位,如:上海环保科技有限公司 */
private String operationUnit;
/** 检查时间,格式:yyyy-MM-dd HH:mm:ss */
private LocalDateTime checkTime;
/** 检查人员,多人用顿号或逗号分隔,如:张三、李四 */
private String checkPersonnel;
/**
* 检查项列表平铺结构
* 每个 CheckItem 自带 checkProject 字段
* 多个 CheckItem 可能具有相同的 checkProject用于合并单元格
*/
private List<CheckItem> checkItems;
/** 总分 */
private Integer totalScore;
/** 备注 */
private String remarks;
public int getTotalPossibleScore() {
return getCheckItems().stream()
.mapToInt(CheckItem::getItemScore)
.sum();
}
public int getTotalObtainedScore() {
return getCheckItems().stream()
.mapToInt(CheckItem::getObtainedScore)
.sum();
}
// 可选:返回格式化字符串 "85/100"
public String getFormattedTotalScore() {
int obtained = getTotalObtainedScore();
int total = getTotalPossibleScore();
return obtained + "/" + total;
}
}

76
ruoyi-modules/ruoyi-demo/src/main/java/org/dromara/demo/domain/SiteEvaluationInfo.java

@ -0,0 +1,76 @@
package org.dromara.demo.domain;
import org.dromara.common.tenant.core.TenantEntity;
import com.baomidou.mybatisplus.annotation.*;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.time.LocalDateTime;
import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
import java.io.Serial;
/**
* 现场考核信息对象 site_evaluation_info
*
* @author GJH
* @date 2025-09-05
*/
@Data
@EqualsAndHashCode(callSuper = true)
@TableName("site_evaluation_info")
public class SiteEvaluationInfo extends TenantEntity {
@Serial
private static final long serialVersionUID = 1L;
/**
* 主键IDMyBatis-Plus
*/
@TableId(value = "id")
private String id;
/**
* 核查时间
*/
private LocalDateTime checkDateTime;
/**
* 站点名称
*/
private String siteName;
/**
* 核查人员
*/
private String checkPeople;
/**
* 评分相关业务数据
*/
private String evaluationData;
/**
* 图片附件数据
*/
private String imgData;
/**
* 状态
*/
private String status;
/**
* 监理类型
*/
private String monitorType;
/**
* 删除标志
*/
@TableLogic
private Long delFlag;
}

77
ruoyi-modules/ruoyi-demo/src/main/java/org/dromara/demo/domain/SparePartsInfo.java

@ -0,0 +1,77 @@
package org.dromara.demo.domain;
import org.dromara.common.tenant.core.TenantEntity;
import com.baomidou.mybatisplus.annotation.*;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
import org.springframework.format.annotation.DateTimeFormat;
import java.io.Serial;
/**
* 备品备件列对象 spare_parts_info
*
* @author GJH
* @date 2025-07-02
*/
@Data
@EqualsAndHashCode(callSuper = true)
@TableName("spare_parts_info")
public class SparePartsInfo extends TenantEntity {
@Serial
private static final long serialVersionUID = 1L;
/**
* 主键ID
*/
@TableId(value = "id")
private String id;
/**
* 品名
*/
private String name;
/**
* 类型
*/
private String type;
/**
* 型号
*/
private String model;
/**
* 数量
*/
private Long amount;
/**
* 入库日期
*/
@JsonFormat(pattern = "yyyy-MM-dd")
@DateTimeFormat(pattern = "yyyy-MM-dd")
private Date indate;
/**
* 运维公司
*/
private String ioCompany;
/**
* 监理公司
*/
private String monitorCompany;
/**
* 删除标志
*/
@TableLogic
private Long delFlag;
}

94
ruoyi-modules/ruoyi-demo/src/main/java/org/dromara/demo/domain/StationFaultInfo.java

@ -0,0 +1,94 @@
package org.dromara.demo.domain;
import org.dromara.common.tenant.core.TenantEntity;
import com.baomidou.mybatisplus.annotation.*;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
import java.io.Serial;
/**
* air对象 station_fault_info
*
* @author gejunhao
* @date 2025-07-08
*/
@Data
@EqualsAndHashCode(callSuper = true)
@TableName("station_fault_info")
public class StationFaultInfo extends TenantEntity {
@Serial
private static final long serialVersionUID = 1L;
/**
* 主键ID
*/
@TableId(value = "id")
private String id;
/**
* 删除标志
*/
@TableLogic
private Long delFlag;
/**
* 站点
*/
private String station;
/**
* 监测项目
*/
private String monitorProject;
/**
* 故障开始时间
*/
private Date faultStartDate;
/**
* 故障结束时间
*/
private Date faultEndDate;
/**
* 运维响应时间
*/
private Date ioResponseDate;
/**
* 响应时间跨度
*/
private String responseDuration;
/**
* 故障时间跨度
*/
private String faultDuration;
/**
* 监理人员
*/
private String monitorPerson;
/**
* 监理单位
*/
private String monitorCompany;
/**
* 运维单位
*/
private String ioCompany;
/**
* 备注
*/
private String remark;
}

82
ruoyi-modules/ruoyi-demo/src/main/java/org/dromara/demo/domain/StationInfo.java

@ -0,0 +1,82 @@
package org.dromara.demo.domain;
import org.dromara.common.tenant.core.TenantEntity;
import com.baomidou.mybatisplus.annotation.*;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.io.Serial;
/**
* 子站信息对象 station_info
*
* @author GJH
* @date 2025-07-01
*/
@Data
@EqualsAndHashCode(callSuper = true)
@TableName("station_info")
public class StationInfo extends TenantEntity {
@Serial
private static final long serialVersionUID = 1L;
/**
* 主键ID数据库自增
*/
@TableId(value = "id")
private String id;
/**
* 子站名称
*/
private String station;
/**
* 所属区域
*/
private String area;
/**
* 地址
*/
private String address;
/**
* 经度
*/
private String longitude;
/**
* 纬度
*/
private String latitude;
/**
* 运维公司
*/
private String ioCompany;
/**
* 运维人员
*/
private String ioPerson;
/**
* 监理公司
*/
private String monitorCompany;
/**
* 状态
*/
private String status;
/**
* 删除标志
*/
@TableLogic
private Long delFlag;
}

79
ruoyi-modules/ruoyi-demo/src/main/java/org/dromara/demo/domain/StationParamChange.java

@ -0,0 +1,79 @@
package org.dromara.demo.domain;
import org.dromara.common.tenant.core.TenantEntity;
import com.baomidou.mybatisplus.annotation.*;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
import java.io.Serial;
/**
* 站点参数变更对象 station_param_change
*
* @author gejunhao
* @date 2025-07-08
*/
@Data
@EqualsAndHashCode(callSuper = true)
@TableName("station_param_change")
public class StationParamChange extends TenantEntity {
@Serial
private static final long serialVersionUID = 1L;
/**
* 主键ID
*/
@TableId(value = "id")
private String id;
/**
* 站点名称
*/
private String station;
/**
* 监测项目
*/
private String monitorProject;
/**
* 参数名称
*/
private String arguments;
/**
* 发现时间
*/
private Date foundDate;
/**
* 监理人员
*/
private String monitorPerson;
/**
* 监理单位
*/
private String monitorCompany;
/**
* 运维单位
*/
private String ioCompany;
/**
* 备注
*/
private String remark;
/**
* 删除标志0未删除1已删除
*/
@TableLogic
private Long delFlag;
}

82
ruoyi-modules/ruoyi-demo/src/main/java/org/dromara/demo/domain/WebSiteNetDataAnalysis.java

@ -0,0 +1,82 @@
package org.dromara.demo.domain;
import org.dromara.common.tenant.core.TenantEntity;
import com.baomidou.mybatisplus.annotation.*;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
import org.springframework.format.annotation.DateTimeFormat;
import java.io.Serial;
/**
* 站点联网数据分析对象 web_site_net_data_analysis
*
* @author gejunhao
* @date 2025-07-08
*/
@Data
@EqualsAndHashCode(callSuper = true)
@TableName("web_site_net_data_analysis")
public class WebSiteNetDataAnalysis extends TenantEntity {
@Serial
private static final long serialVersionUID = 1L;
/**
* 主键ID
*/
@TableId(value = "id")
private String id;
/**
* 站点名称
*/
private String station;
/**
* 所属区域
*/
private String area;
/**
* 当前状态运行中维护中离线
*/
private String status;
/**
* 运维单位
*/
private String ioCompany;
/**
* 监理单位
*/
private String monitorCompany;
/**
* 本月应收数据金额
*/
private Long planIncome;
/**
* 本月实收数据金额
*/
private Long actualIncome;
/**
* 最新数据更新时间
*/
@JsonFormat(pattern = "yyyy-MM-dd")
@DateTimeFormat(pattern = "yyyy-MM-dd")
private Date lastTime;
/**
* 删除标志0未删除1已删除
*/
@TableLogic
private Long delFlag;
}

293
ruoyi-modules/ruoyi-demo/src/main/java/org/dromara/demo/domain/WordExportTest.java

@ -0,0 +1,293 @@
package org.dromara.demo.domain;
import cn.afterturn.easypoi.word.WordExportUtil;
import cn.hutool.json.JSONObject;
import cn.hutool.json.JSONUtil;
import org.apache.poi.util.Units;
import org.apache.poi.xwpf.usermodel.ParagraphAlignment;
import org.apache.poi.xwpf.usermodel.XWPFDocument;
import org.apache.poi.xwpf.usermodel.XWPFParagraph;
import org.apache.poi.xwpf.usermodel.XWPFRun;
import org.jetbrains.annotations.NotNull;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.Arrays;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
public class WordExportTest {
// ✅ 假设这是你要插入的图片路径列表(可以来自数据库、文件夹扫描等)
private static final List<String> IMAGE_PATHS = List.of(
"D:\\Users\\14212\\Desktop\\故障图片.png",
"D:\\Users\\14212\\Desktop\\故障图片.png",
"D:\\Users\\14212\\Desktop\\故障图片.png"
// 可以是 0 个、1 个、N 个
);
public static void main(String[] args) throws Exception {
// 1. 准备数据(用户填写的内容)
Map<String, Object> data = getData();
// 2. 从 classpath 根目录加载模板文件:resources/score_template.docx
InputStream templateIs = WordExportTest.class
.getClassLoader()
.getResourceAsStream("score_template.docx"); // ✅ 路径已调整
if (templateIs == null) {
System.err.println("❌ 模板文件未找到!请检查路径:classpath:score_template.docx");
return;
}
System.out.println("✅ 模板加载成功!");
// 3. 创建临时文件(因为 EasyPOI exportWord07 不支持 InputStream)
File tempFile = File.createTempFile("temp_template", ".docx");
tempFile.deleteOnExit();
try (FileOutputStream fos = new FileOutputStream(tempFile)) {
byte[] buffer = new byte[1024];
int len;
while ((len = templateIs.read(buffer)) != -1) {
fos.write(buffer, 0, len);
}
}
// 4. ✅ 使用 EasyPOI 填充模板(传 File)
XWPFDocument document = WordExportUtil.exportWord07(String.valueOf(tempFile), data);
List<String> descriptions = Arrays.asList(
"这是第一张图片的描述",
"这是第二张图片的描述",
"这是第三张图片的描述"
);
// 5. ✅ 在文档末尾追加图片
appendImages(document, IMAGE_PATHS, descriptions);
// 5. 导出到本地
String outputPath = "D:\\Users\\14212\\Desktop\\"+data.get("siteName") + "现场技术核查评分表.docx"; // 可改为你的路径
try (FileOutputStream out = new FileOutputStream(outputPath)) {
document.write(out);
}
// 6. 关闭资源
document.close();
templateIs.close();
System.out.println("✅ Word 文件已生成:" + outputPath);
}
private static void appendImages(XWPFDocument document, List<String> imagePaths, List<String> descriptions) throws Exception {
if (imagePaths == null || imagePaths.isEmpty()) {
System.out.println("📭 无图片需要插入");
return;
}
// 确保描述的数量不超过图片数量
if (descriptions != null && descriptions.size() > imagePaths.size()) {
descriptions = descriptions.subList(0, imagePaths.size());
}
for (int i = 0; i < imagePaths.size(); i++) {
String imagePath = imagePaths.get(i);
File imageFile = new File(imagePath);
if (!imageFile.exists()) {
System.err.println("⚠️ 图片未找到:" + imagePath);
continue;
}
// 创建新段落用于图片(居中)
XWPFParagraph imgParagraph = document.createParagraph();
imgParagraph.setAlignment(ParagraphAlignment.CENTER); // 居中
XWPFRun imgRun = imgParagraph.createRun();
// 读取图片
try (FileInputStream is = new FileInputStream(imageFile)) {
int pictureType = getPictureType(imageFile.getName());
// 设置图片大小,这里使用300x150 EMU
imgRun.addPicture(is, pictureType, imageFile.getName(),
Units.toEMU(300), Units.toEMU(150));
}
// 如果提供了描述,则在图片下方添加描述段落
if (descriptions != null && i < descriptions.size()) {
String desc = descriptions.get(i);
XWPFParagraph captionParagraph = document.createParagraph();
captionParagraph.setAlignment(ParagraphAlignment.CENTER); // 描述也居中
XWPFRun captionRun = captionParagraph.createRun();
captionRun.setText("图" + (i + 1) + ":" + desc); // 使用描述内容
captionRun.setColor("666666"); // 灰色文字,更像图注
captionRun.setFontSize(10); // 字体小一点
captionRun.setItalic(true); // 斜体(可选)
captionRun.setFontFamily("宋体"); // 设置字体
}
// 每张图和描述后空一行
document.createParagraph();
}
}
// ✅ 根据文件扩展名判断图片类型
private static int getPictureType(String filename) {
String ext = filename.substring(filename.lastIndexOf(".") + 1).toLowerCase();
return switch (ext) {
case "png" -> XWPFDocument.PICTURE_TYPE_PNG;
case "jpg", "jpeg" -> XWPFDocument.PICTURE_TYPE_JPEG;
case "gif" -> XWPFDocument.PICTURE_TYPE_GIF;
case "bmp" -> XWPFDocument.PICTURE_TYPE_BMP;
default -> XWPFDocument.PICTURE_TYPE_JPEG;
};
}
@NotNull
private static Map<String, Object> getData() {
// 1. 准备数据(用户填写的内容)
Map<String, Object> data = new LinkedHashMap<>();
data.put("siteName", "临安区龙岗镇站");
// ✅ 自动生成当前时间,并格式化为 "yyyy-MM-dd HH:mm:ss"
String currentDateTime = LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));
data.put("checkDateTime", currentDateTime);
data.put("operationUnit", "安徽蓝盾光电子股份有限公司");
data.put("checkPeople", "李工");
data.put("totalScore", "140"); // 28项 × 5分 = 140
// === 简单粗暴:score_01 到 score_28 全部设为 5 ===
for (int i = 1; i <= 28; i++) {
data.put("score_" + String.format("%02d", i), "5");
}
// -------------------- 零气测试 --------------------
double zero_flow = 5.0; // 零气MFC设定流量(L/min)
double zero_std = 4.98; // 标准流量计实测值(L/min)
// -------------------- 标气测试 --------------------
double span_flow = 100.0; // 标气MFC设定流量(ml/min)
double span_std = 101.5; // 标准流量计实测值(ml/min)
data.put("zero_flow", String.valueOf(zero_flow));
data.put("zero_std", String.valueOf(zero_std));
data.put("zero_error", calcError(zero_flow, zero_std)); // 自动计算
data.put("span_flow", String.valueOf(span_flow));
data.put("span_std", String.valueOf(span_std));
data.put("span_error", calcError(span_flow, span_std)); // 自动计算
// -------------------- SO2 流量测试 --------------------
double soDisplay = 0.8; // SO2显示流量(L/min)
double soStd = 0.78; // 标准流量计测值(L/min)
data.put("so_display", String.valueOf(soDisplay));
data.put("so_std", String.valueOf(soStd));
data.put("so_error", calcError(soDisplay, soStd)); // 自动计算:相对误差
// -------------------- SO2 浓度测试 --------------------
double soConcOutput = 500.0; // 标气稀释输出浓度(ppb)
double soConcResponse = 492.0; // 仪器响应浓度(ppb)
data.put("so_conc_output", String.valueOf(soConcOutput));
data.put("so_conc_response", String.valueOf(soConcResponse));
data.put("so_conc_error", calcError(soConcResponse, soConcOutput)); // (响应 - 输出)/输出 × 100%
// -------------------- t90响应时间(用户填写,不参与计算)--------------------
data.put("so_time", "4.2"); // 用户手动填写,单位:min,不参与任何计算
// -------------------- NO2 流量测试 --------------------
double noDisplay = 0.8;
double noStd = 0.78;
data.put("no_display", String.valueOf(noDisplay));
data.put("no_std", String.valueOf(noStd));
data.put("no_error", calcError(noDisplay, noStd)); // 自动计算:相对误差
// -------------------- NO 浓度测试 --------------------
double noConcOutput = 500.0; // 标气稀释输出浓度(ppb)
double noConcResponse = 492.0; // 仪器响应浓度(ppb)
data.put("no_conc_output", String.valueOf(noConcOutput));
data.put("no_conc_response", String.valueOf(noConcResponse));
data.put("no_conc_error", calcError(noConcResponse, noConcOutput)); // (响应 - 输出)/输出 × 100%
// -------------------- t90响应时间(用户填写,不参与计算)--------------------
data.put("no_time", "4.2"); // 用户手动填写,单位:min,不参与任何计算
// -------------------- CO 流量测试 --------------------
double coDisplay = 0.8; // SO2显示流量(L/min)
double coStd = 0.78; // 标准流量计测值(L/min)
data.put("co_display", String.valueOf(coDisplay));
data.put("co_std", String.valueOf(coStd));
data.put("co_error", calcError(coDisplay, coStd)); // 自动计算:相对误差
// -------------------- NO2 浓度测试 --------------------
double coConcOutput = 500.0; // 标气稀释输出浓度(ppb)
double coConcResponse = 492.0; // 仪器响应浓度(ppb)
data.put("co_conc_output", String.valueOf(coConcOutput));
data.put("co_conc_response", String.valueOf(coConcResponse));
data.put("co_conc_error", calcError(coConcResponse, coConcOutput)); // (响应 - 输出)/输出 × 100%
// -------------------- t90响应时间(用户填写,不参与计算)--------------------
data.put("co_time", "4.2"); // 用户手动填写,单位:min,不参与任何计算
double oDisplay = 0.8; // SO2显示流量(L/min)
double oStd = 0.78; // 标准流量计测值(L/min)
data.put("o_display", String.valueOf(oDisplay));
data.put("o_std", String.valueOf(oStd));
data.put("o_error", calcError(oDisplay, oStd)); // 自动计算:相对误差
double oConcOutput = 500.0; // 标气稀释输出浓度(ppb)
double oConcResponse = 492.0; // 仪器响应浓度(ppb)
data.put("o_conc_output", String.valueOf(oConcOutput));
data.put("o_conc_response", String.valueOf(oConcResponse));
data.put("o_conc_error", calcError(oConcResponse, oConcOutput)); // (响应 - 输出)/输出 × 100%
// -------------------- t90响应时间(用户填写,不参与计算)--------------------
data.put("o_time", "4.2"); // 用户手动填写,单位:min,不参与任何计算
//----------PM10 测试----------
double pmTenDisplay = 0.8;
double pmTenStd = 0.78;
data.put("pm_ten_display", String.valueOf(pmTenDisplay));
data.put("pm_ten_std", String.valueOf(pmTenStd));
data.put("pm_ten_error", calcError(pmTenDisplay, pmTenStd)); // 自动计算:相对误差
data.put("pm_ten_k", 0.8);
data.put("slope_a", 0.8);
//----------PM2 测试----------
double pmTwoDisplay = 0.8;
double pmTwoStd = 0.78;
data.put("pm_two_display", String.valueOf(pmTwoDisplay));
data.put("pm_two_std", String.valueOf(pmTwoStd));
data.put("pm_two_error", calcError(pmTwoDisplay, pmTwoStd)); // 自动计算:相对误差
data.put("pm_two_k", 0.5);
data.put("slope_b", 0.5);
System.out.println("✅ 数据准备完成!");
System.out.println(JSONUtil.toJsonStr(data));
//System.out.println(JSONUtil.toJsonPrettyStr(data)); // 格式化 + 缩进输出
JSONObject jsonObject = JSONUtil.parseObj(data);
System.out.println(jsonObject.toStringPretty());
return data;
}
// 工具方法:计算相对误差,保留1位小数
private static String calcError(double mfcFlow, double stdFlow) {
if (Math.abs(stdFlow) < 0.0001) return "0.0"; // 防止除0
double error = (mfcFlow - stdFlow) / stdFlow * 100;
return String.format("%.1f", error);
}
}

371
ruoyi-modules/ruoyi-demo/src/main/java/org/dromara/demo/domain/WordReportExporter.java

@ -0,0 +1,371 @@
package org.dromara.demo.domain;
import cn.hutool.json.JSONUtil;
import org.apache.poi.xwpf.usermodel.*;
import org.openxmlformats.schemas.wordprocessingml.x2006.main.*;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.math.BigInteger;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.Comparator;
import java.util.List;
import java.util.Map;
import java.util.TreeMap;
import java.util.stream.Collectors;
public class WordReportExporter {
// 获取桌面路径(跨平台)
private static String getDesktopPath() {
return "D:\\Users\\14212\\Desktop";
}
public static void export(ReportData reportData) throws IOException {
System.out.println(JSONUtil.toJsonStr(reportData));
String desktopPath = getDesktopPath();
String filename = "数据购买监理服务现场技术核查评分表.docx";
String fullPath = desktopPath + File.separator + filename;
XWPFDocument document = new XWPFDocument();
// 1. 添加标题
XWPFParagraph titlePara = document.createParagraph();
titlePara.setAlignment(ParagraphAlignment.CENTER);
XWPFRun titleRun = titlePara.createRun();
titleRun.setText(reportData.getReportTitle());
titleRun.setBold(true);
titleRun.setFontSize(16);
titleRun.setFontFamily("宋体");
// 2. 添加基本信息
addBasicInfo(document, reportData);
// 3. 添加评分表格
addScoreTable(document, reportData);
// 4. 添加总分和备注
addTotalAndRemarks(document, reportData);
// 保存到桌面
try (FileOutputStream out = new FileOutputStream(fullPath)) {
document.write(out);
}
document.close();
System.out.println("✅ 报告已成功导出到桌面:");
System.out.println("📄 " + fullPath);
}
private static void addBasicInfo(XWPFDocument document, ReportData reportData) {
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
// 站点名称
XWPFParagraph p = document.createParagraph();
p.setSpacingAfter(10);
XWPFRun label = p.createRun();
label.setFontFamily("宋体");
label.setFontSize(12);
label.setBold(false);
label.setText("站点名称:");
XWPFRun value = p.createRun();
value.setFontFamily("宋体");
value.setFontSize(12);
value.setBold(false);
value.setText(reportData.getSiteName());
// // 区(管委会)
// p = document.createParagraph();
// p.setSpacingAfter(10);
//
// label = p.createRun();
// label.setFontFamily("宋体");
// label.setFontSize(12);
// label.setBold(false);
// label.setText("区(管委会):");
//
// value = p.createRun();
// value.setFontFamily("宋体");
// value.setFontSize(12);
// value.setBold(false);
// value.setText(reportData.getDistrict());
//
// // 街道(乡、镇)
// p = document.createParagraph();
// p.setSpacingAfter(10);
//
// label = p.createRun();
// label.setFontFamily("宋体");
// label.setFontSize(12);
// label.setBold(false);
// label.setText("街道(乡、镇):");
//
// value = p.createRun();
// value.setFontFamily("宋体");
// value.setFontSize(12);
// value.setBold(false);
// value.setText(reportData.getStreet());
// 运维单位
p = document.createParagraph();
p.setSpacingAfter(10);
label = p.createRun();
label.setFontFamily("宋体");
label.setFontSize(12);
label.setBold(false);
label.setText("运维单位:");
value = p.createRun();
value.setFontFamily("宋体");
value.setFontSize(12);
value.setBold(false);
value.setText(reportData.getOperationUnit());
}
private static void addScoreTable(XWPFDocument document, ReportData reportData) {
List<CheckItem> items = reportData.getCheckItems();
if (items == null || items.isEmpty()) return;
// ✅ 1. 创建表格
XWPFTable table = document.createTable();
// ✅ 2. 设置表格总宽度 (9000 TWIP ≈ 页面宽度)
CTTblPr tblPr = table.getCTTbl().getTblPr();
CTTblWidth tblWidth = tblPr.addNewTblW();
tblWidth.setW(BigInteger.valueOf(9000));
tblWidth.setType(STTblWidth.DXA);
// ✅ 3. 强制第一行有 5 列
XWPFTableRow header = table.getRow(0);
for (int i = 1; i < 5; i++) {
header.addNewTableCell();
}
// ✅ 4. 设置表头文本和样式
setCellTextAndStyle(header.getCell(0), "检查项目", true);
setCellTextAndStyle(header.getCell(1), "检查要点", true);
setCellTextAndStyle(header.getCell(2), "单项分值", true);
setCellTextAndStyle(header.getCell(3), "得分", true);
setCellTextAndStyle(header.getCell(4), "评分说明", true);
// ✅ 5. 设置列宽(关键:20% / 35% / 10% / 10% / 25%)
setCellWidth(header.getCell(0), 1500); // 检查项目
setCellWidth(header.getCell(1), 2800); // 检查要点
setCellWidth(header.getCell(2), 950); // 单项分值(窄)
setCellWidth(header.getCell(3), 950); // 得分(窄)
setCellWidth(header.getCell(4), 2200); // 评分说明
// ✅ 6. 分组数据
Map<String, List<CheckItem>> grouped = items.stream()
.sorted(Comparator.comparing(CheckItem::getCheckProject))
.collect(Collectors.groupingBy(
CheckItem::getCheckProject,
TreeMap::new,
Collectors.toList()
));
int totalScore = 0;
for (Map.Entry<String, List<CheckItem>> entry : grouped.entrySet()) {
List<CheckItem> groupItems = entry.getValue();
String project = entry.getKey();
for (int i = 0; i < groupItems.size(); i++) {
CheckItem item = groupItems.get(i);
XWPFTableRow row = table.createRow();
// 设置内容
setCellTextAndStyle(row.getCell(1), item.formatCheckItem(), false);
setCellTextAndStyle(row.getCell(2), String.valueOf(item.getItemScore()), false);
setCellTextAndStyle(row.getCell(3), String.valueOf(item.getObtainedScore()), false);
setCellTextAndStyle(row.getCell(4), item.formatScoringExplanation(), false);
// ✅ 累加总分
totalScore += item.getObtainedScore();
// 设置第0列(检查项目)及垂直合并
XWPFTableCell cell = row.getCell(0);
setCellTextAndStyle(cell, i == 0 ? project : "", i == 0);
CTTcPr tcPr = cell.getCTTc().addNewTcPr();
CTVMerge merge = tcPr.addNewVMerge();
merge.setVal(i == 0 ? STMerge.RESTART : STMerge.CONTINUE);
}
}
// ✅ 7. 总分行
XWPFTableRow totalRow = table.createRow();
XWPFTableCell labelCell = totalRow.getCell(0);
setCellTextAndStyle(labelCell, "总分", true);
XWPFTableCell scoreCell = totalRow.getCell(1);
setCellTextAndStyle(scoreCell, String.valueOf(totalScore), true);
// 合并第1~4列(共4列)
CTTcPr tcPr = scoreCell.getCTTc().addNewTcPr();
tcPr.addNewGridSpan().setVal(BigInteger.valueOf(4));
// 清空后面单元格(避免显示多余文本)
for (int i = 2; i <= 4; i++) {
XWPFTableCell cell = totalRow.getCell(i);
if (cell != null) {
cell.setText("");
}
}
}
// ✅ 辅助方法:设置单元格宽度
private static void setCellWidth(XWPFTableCell cell, int width) {
CTTc ctTc = cell.getCTTc();
CTTcPr tcPr = ctTc.isSetTcPr() ? ctTc.getTcPr() : ctTc.addNewTcPr();
CTTblWidth tcW = tcPr.isSetTcW() ? tcPr.getTcW() : tcPr.addNewTcW();
tcW.setW(BigInteger.valueOf(width));
tcW.setType(STTblWidth.DXA);
}
private static void setCellTextAndStyle(XWPFTableCell cell, String text, boolean isHeader) {
cell.removeParagraph(0);
XWPFParagraph p = cell.addParagraph();
p.setAlignment(isHeader ? ParagraphAlignment.CENTER : ParagraphAlignment.LEFT);
p.setSpacingAfter(0);
p.setSpacingBefore(0);
String[] lines = (text == null ? "" : text).split("\n", -1); // 保留末尾空行
for (int i = 0; i < lines.length; i++) {
if (i > 0) {
p.createRun().addCarriageReturn();
}
XWPFRun run = p.createRun();
run.setText(lines[i]);
run.setBold(isHeader);
run.setFontSize(10);
run.setFontFamily("等线");
}
}
// private static void setCellTextAndStyle(XWPFTableCell cell, String text, boolean isHeader) {
// // 1. 先设置文本(✅ 支持 \n 换行)
// cell.setText(text);
//
// // 2. 获取或创建单元格属性,设置宽度
// CTTc ctTc = cell.getCTTc();
// CTTcPr tcPr = ctTc.isSetTcPr() ? ctTc.getTcPr() : ctTc.addNewTcPr();
// CTTblWidth tcW = tcPr.getTcW() != null ? tcPr.getTcW() : tcPr.addNewTcW();
// tcW.setW(BigInteger.valueOf(2000));
// tcW.setType(STTblWidth.DXA); // 推荐设置单位
//
// // 3. 遍历所有段落和 Run,设置样式
// for (XWPFParagraph p : cell.getParagraphs()) {
// p.setSpacingAfter(50); // 段后间距
// for (XWPFRun r : p.getRuns()) {
// r.setFontFamily("宋体");
// r.setFontSize(10);
// if (isHeader) {
// r.setBold(true);
// }
// }
// }
// }
private static void addTotalAndRemarks(XWPFDocument document, ReportData reportData) {
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
// 1. 总分
/* XWPFParagraph totalPara = document.createParagraph();
XWPFRun totalRun = totalPara.createRun();
totalRun.setBold(false);
totalRun.setText("总分:" + reportData.getTotalScore());
totalRun.setFontFamily("宋体");
totalRun.setFontSize(12);*/
// 2. 备注
XWPFParagraph remarksPara = document.createParagraph();
XWPFRun remarksRun = remarksPara.createRun();
remarksRun.setText("备注:" + reportData.getRemarks());
remarksRun.setFontFamily("宋体");
remarksRun.setFontSize(12);
// 3. 检查时间(左) + 检查人员(右)
XWPFParagraph p = document.createParagraph();
p.setAlignment(ParagraphAlignment.BOTH); // 两端对齐
XWPFRun run = p.createRun();
run.setText("检查时间:" + reportData.getCheckTime().format(formatter) +
" " + // 多个空格
"检查人员:" + reportData.getCheckPersonnel());
run.setFontFamily("宋体");
run.setFontSize(12);
}
// ==================== 测试入口 ====================
public static void main(String[] args) {
try {
ReportData report = new ReportData();
report.setReportTitle("数据购买监理服务现场技术核查评分表");
report.setSiteName("临安区龙岗镇站");
report.setOperationUnit("国研信息");
report.setCheckTime(LocalDateTime.now());
report.setCheckPersonnel("张三、李四");
report.setRemarks("注1:《环境空气环境空气气态污染物(SO2、NO2、O3、CO)连续自动监测系统技术要求及检测方法HJ654-2013》\n" +
"*标项一包含的项目,标项二不包含。\n" +
"04质量控制效果中相关质控因子有缺项的,分值按比例分摊。\n");
CheckItem item1 = new CheckItem();
item1.setCheckProject("01站房环境保障情况(5分)");
item1.setItemScore(2);
item1.setObtainedScore(1);
item1.setScoringBasis(List.of(
"1)站房环境脏,有明显灰尘和异味;",
"2)物品摆放不整齐;"
));
item1.setDeductionRule("一项不合格扣0.5分,扣完为止(评分规则)");
item1.setCheckItemBasis(List.of(
"1)站房环境脏,有明显灰尘和异味;",
"2)物品摆放不整齐;"
));
CheckItem item2 = new CheckItem();
item2.setCheckProject("01站房环境保障情况(5分)");
item2.setItemScore(3);
item2.setObtainedScore(3);
item2.setScoringBasis(List.of("1)仪器运行正常;"));
item2.setDeductionRule("发现异常未处理扣1分");
item2.setCheckItemBasis(List.of(
"动态校准仪质量流量控制器(MFC)单点流量测试(要求相对误差≤±2%):",
"零气MFC流量: L/min,标准流量计测值: L/min,相对误差: %",
"标气MFC流量: ml/min,标准流量计测值: ml/min,相对误差: %"
));
CheckItem item3 = new CheckItem();
item3.setCheckProject("02采样系统维护效果(10分)");
item3.setItemScore(3);
item3.setObtainedScore(3);
item3.setScoringBasis(List.of("1)仪器运行正常;"));
item3.setDeductionRule("发现异常未处理扣1分");
item3.setCheckItemBasis(List.of(
"动态校准仪质量流量控制器(MFC)单点流量测试(要求相对误差≤±2%):",
"零气MFC流量: L/min,标准流量计测值: L/min,相对误差: %",
"标气MFC流量: ml/min,标准流量计测值: ml/min,相对误差: %"
));
// 添加到集合
report.setCheckItems(List.of(item1, item2, item3));
// ✅ 默认导出到桌面
WordReportExporter.export(report);
} catch (Exception e) {
e.printStackTrace();
System.err.println("❌ 导出失败:" + e.getMessage());
}
}
}

77
ruoyi-modules/ruoyi-demo/src/main/java/org/dromara/demo/domain/WorkOrderInfo.java

@ -0,0 +1,77 @@
package org.dromara.demo.domain;
import org.dromara.common.tenant.core.TenantEntity;
import com.baomidou.mybatisplus.annotation.*;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
import org.springframework.format.annotation.DateTimeFormat;
import java.io.Serial;
/**
* 工单管理对象 work_order_info
*
* @author GJH
* @date 2025-07-03
*/
@Data
@EqualsAndHashCode(callSuper = true)
@TableName("work_order_info")
public class WorkOrderInfo extends TenantEntity {
@Serial
private static final long serialVersionUID = 1L;
/**
* 主键ID
*/
@TableId(value = "id")
private String id;
/**
* 工单编号
*/
private String orderNum;
/**
* 工作日期
*/
@JsonFormat(pattern = "yyyy-MM-dd")
@DateTimeFormat(pattern = "yyyy-MM-dd")
private Date workDate;
/**
* 子站名称
*/
private String station;
/**
* 子站状态
*/
private String status;
/**
* 所属区域
*/
private String area;
/**
* 监理类型
*/
private String monitorType;
/**
* 监理人员
*/
private String monitorPerson;
/**
* 删除标志
*/
@TableLogic
private Long delFlag;
}

109
ruoyi-modules/ruoyi-demo/src/main/java/org/dromara/demo/domain/ZeroAdjustmentAnalysis.java

@ -0,0 +1,109 @@
package org.dromara.demo.domain;
import org.dromara.common.tenant.core.TenantEntity;
import com.baomidou.mybatisplus.annotation.*;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
import org.springframework.format.annotation.DateTimeFormat;
import java.io.Serial;
/**
* 校零校准分析对象 zero_adjustment_analysis
*
* @author gejunhao
* @date 2025-07-08
*/
@Data
@EqualsAndHashCode(callSuper = true)
@TableName("zero_adjustment_analysis")
public class ZeroAdjustmentAnalysis extends TenantEntity {
@Serial
private static final long serialVersionUID = 1L;
/**
* 主键ID
*/
@TableId(value = "id")
private String id;
/**
* 站点名称
*/
private String station;
/**
* 所属区域
*/
private String area;
/**
* 监测项目
*/
private String monitorProject;
/**
* 上次校零校准时间
*/
private Date toZeroDate;
/**
* 时间跨度7天30天
*/
private String duration;
/**
* 核查开始日期
*/
@JsonFormat(pattern = "yyyy-MM-dd")
@DateTimeFormat(pattern = "yyyy-MM-dd")
private Date checkStartDate;
/**
* 核查结束日期
*/
@JsonFormat(pattern = "yyyy-MM-dd")
@DateTimeFormat(pattern = "yyyy-MM-dd")
private Date checkEndDate;
/**
* 实际校零校准次数
*/
private Long actualTimes;
/**
* 应校零校准次数
*/
private Long planTimes;
/**
* 监理人员
*/
private String monitorPerson;
/**
* 监理单位
*/
private String monitorCompany;
/**
* 环保知情人
*/
private String insider;
/**
* 备注
*/
private String remark;
/**
* 删除标志0未删除1已删除
*/
@TableLogic
private Long delFlag;
}

100
ruoyi-modules/ruoyi-demo/src/main/java/org/dromara/demo/domain/bo/DeviceInfoBo.java

@ -0,0 +1,100 @@
package org.dromara.demo.domain.bo;
import org.dromara.demo.domain.DeviceInfo;
import org.dromara.common.mybatis.core.domain.BaseEntity;
import org.dromara.common.core.validate.AddGroup;
import org.dromara.common.core.validate.EditGroup;
import io.github.linpeilie.annotations.AutoMapper;
import lombok.Data;
import lombok.EqualsAndHashCode;
import jakarta.validation.constraints.*;
import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
import org.springframework.format.annotation.DateTimeFormat;
/**
* 设备信息业务对象 device_info
*
* @author GJH
* @date 2025-07-01
*/
@Data
@EqualsAndHashCode(callSuper = true)
@AutoMapper(target = DeviceInfo.class, reverseConvertGenerate = false)
public class DeviceInfoBo extends BaseEntity {
/**
* 主键ID自增
*/
//@NotBlank(message = "主键ID(自增)不能为空", groups = { EditGroup.class })
private String id;
/**
* 站点
*/
//@NotBlank(message = "站点不能为空", groups = { AddGroup.class, EditGroup.class })
private String station;
/**
* 所属区域
*/
//@NotBlank(message = "所属区域不能为空", groups = { AddGroup.class, EditGroup.class })
private String area;
/**
* 设备名称
*/
//@NotBlank(message = "设备名称不能为空", groups = { AddGroup.class, EditGroup.class })
private String device;
/**
* 设备型号
*/
//@NotBlank(message = "设备型号不能为空", groups = { AddGroup.class, EditGroup.class })
private String model;
/**
* 生产厂家
*/
//@NotBlank(message = "生产厂家不能为空", groups = { AddGroup.class, EditGroup.class })
private String manufacturer;
/**
* 生产日期
*/
//@NotNull(message = "生产日期不能为空", groups = { AddGroup.class, EditGroup.class })
@JsonFormat(pattern = "yyyy-MM-dd")
@DateTimeFormat(pattern = "yyyy-MM-dd")
private Date manufactureDate;
/**
* 序列号
*/
//@NotBlank(message = "序列号不能为空", groups = { AddGroup.class, EditGroup.class })
private String number;
/**
* 检测物
*/
//@NotBlank(message = "检测物不能为空", groups = { AddGroup.class, EditGroup.class })
private String testSubstance;
/**
* 状态
*/
//@NotBlank(message = "状态不能为空", groups = { AddGroup.class, EditGroup.class })
private String status;
@JsonFormat(pattern = "yyyy-MM-dd")
@DateTimeFormat(pattern = "yyyy-MM-dd")
private Date startDate;
/**
* 结束日期
*/
@JsonFormat(pattern = "yyyy-MM-dd")
@DateTimeFormat(pattern = "yyyy-MM-dd")
private Date endDate;
}

92
ruoyi-modules/ruoyi-demo/src/main/java/org/dromara/demo/domain/bo/OrderManagementInfoBo.java

@ -0,0 +1,92 @@
package org.dromara.demo.domain.bo;
import org.dromara.demo.domain.OrderManagementInfo;
import org.dromara.common.mybatis.core.domain.BaseEntity;
import org.dromara.common.core.validate.AddGroup;
import org.dromara.common.core.validate.EditGroup;
import io.github.linpeilie.annotations.AutoMapper;
import lombok.Data;
import lombok.EqualsAndHashCode;
import jakarta.validation.constraints.*;
import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
import org.springframework.format.annotation.DateTimeFormat;
/**
* 现场核查单管理信息业务对象 order_management_info
*
* @author GJH
* @date 2025-07-02
*/
@Data
@EqualsAndHashCode(callSuper = true)
@AutoMapper(target = OrderManagementInfo.class, reverseConvertGenerate = false)
public class OrderManagementInfoBo extends BaseEntity {
/**
* 主键IDMyBatis-Plus自增
*/
//@NotBlank(message = "主键ID(MyBatis-Plus自增)不能为空", groups = { EditGroup.class })
private String id;
/**
* 核查时间
*/
//@NotNull(message = "核查时间不能为空", groups = { AddGroup.class, EditGroup.class })
@JsonFormat(pattern = "yyyy-MM-dd")
@DateTimeFormat(pattern = "yyyy-MM-dd")
private Date checkTime;
/**
* 子站名称
*/
//@NotBlank(message = "子站名称不能为空", groups = { AddGroup.class, EditGroup.class })
private String station;
/**
* 所属区域
*/
//@NotBlank(message = "所属区域不能为空", groups = { AddGroup.class, EditGroup.class })
private String area;
/**
* 状态
*/
//@NotBlank(message = "状态不能为空", groups = { AddGroup.class, EditGroup.class })
private String status;
/**
* 监理类型
*/
//@NotBlank(message = "监理类型不能为空", groups = { AddGroup.class, EditGroup.class })
private String monitorType;
/**
* 核查人员
*/
//@NotBlank(message = "核查人员不能为空", groups = { AddGroup.class, EditGroup.class })
private String checkPerson;
/**
* 核查得分
*/
//@NotNull(message = "核查得分不能为空", groups = { AddGroup.class, EditGroup.class })
private Long checkScore;
/**
* 子站ID
*/
private String stationId;
@JsonFormat(pattern = "yyyy-MM-dd")
@DateTimeFormat(pattern = "yyyy-MM-dd")
private Date startDate;
/**
* 结束日期
*/
@JsonFormat(pattern = "yyyy-MM-dd")
@DateTimeFormat(pattern = "yyyy-MM-dd")
private Date endDate;
}

77
ruoyi-modules/ruoyi-demo/src/main/java/org/dromara/demo/domain/bo/PeopleCheckInfoBo.java

@ -0,0 +1,77 @@
package org.dromara.demo.domain.bo;
import org.dromara.demo.domain.PeopleCheckInfo;
import org.dromara.common.mybatis.core.domain.BaseEntity;
import org.dromara.common.core.validate.AddGroup;
import org.dromara.common.core.validate.EditGroup;
import io.github.linpeilie.annotations.AutoMapper;
import lombok.Data;
import lombok.EqualsAndHashCode;
import jakarta.validation.constraints.*;
import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
import org.springframework.format.annotation.DateTimeFormat;
/**
* 人员签到统计业务对象 people_check_info
*
* @author GJH
* @date 2025-07-08
*/
@Data
@EqualsAndHashCode(callSuper = true)
@AutoMapper(target = PeopleCheckInfo.class, reverseConvertGenerate = false)
public class PeopleCheckInfoBo extends BaseEntity {
/**
* 主键ID
*/
//@NotBlank(message = "主键ID不能为空", groups = { EditGroup.class })
private String id;
/**
* 站点名称
*/
//@NotBlank(message = "站点名称不能为空", groups = { AddGroup.class, EditGroup.class })
private String station;
/**
* 所属区域
*/
//@NotBlank(message = "所属区域不能为空", groups = { AddGroup.class, EditGroup.class })
private String area;
/**
* 人员性质
*/
//@NotBlank(message = "人员性质不能为空", groups = { AddGroup.class, EditGroup.class })
private String attribute;
/**
* 人员姓名
*/
//@NotBlank(message = "人员姓名不能为空", groups = { AddGroup.class, EditGroup.class })
private String person;
/**
* 所属公司
*/
//@NotBlank(message = "所属公司不能为空", groups = { AddGroup.class, EditGroup.class })
private String company;
/**
* 签到时间
*/
//@NotNull(message = "签到时间不能为空", groups = { AddGroup.class, EditGroup.class })
@JsonFormat(pattern = "yyyy-MM-dd")
@DateTimeFormat(pattern = "yyyy-MM-dd")
private Date registerTime;
/**
* 签到类型
*/
//@NotBlank(message = "签到类型不能为空", groups = { AddGroup.class, EditGroup.class })
private String registerType;
}

92
ruoyi-modules/ruoyi-demo/src/main/java/org/dromara/demo/domain/bo/PlanInfoBo.java

@ -0,0 +1,92 @@
package org.dromara.demo.domain.bo;
import org.dromara.demo.domain.PlanInfo;
import org.dromara.common.mybatis.core.domain.BaseEntity;
import org.dromara.common.core.validate.AddGroup;
import org.dromara.common.core.validate.EditGroup;
import io.github.linpeilie.annotations.AutoMapper;
import lombok.Data;
import lombok.EqualsAndHashCode;
import jakarta.validation.constraints.*;
import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
import org.springframework.format.annotation.DateTimeFormat;
/**
* 计划管理业务对象 plan_info
*
* @author GJH
* @date 2025-07-03
*/
@Data
@EqualsAndHashCode(callSuper = true)
@AutoMapper(target = PlanInfo.class, reverseConvertGenerate = false)
public class PlanInfoBo extends BaseEntity {
/**
* 主键ID
*/
//@NotBlank(message = "主键ID不能为空", groups = { EditGroup.class })
private String id;
/**
* 计划号
*/
//@NotBlank(message = "计划号不能为空", groups = { AddGroup.class, EditGroup.class })
private String planNum;
/**
* 计划日期
*/
//@NotNull(message = "计划日期不能为空", groups = { AddGroup.class, EditGroup.class })
@JsonFormat(pattern = "yyyy-MM-dd")
@DateTimeFormat(pattern = "yyyy-MM-dd")
private Date planDate;
/**
* 子站名称
*/
//@NotBlank(message = "子站名称不能为空", groups = { AddGroup.class, EditGroup.class })
private String station;
/**
* 子站状态
*/
//@NotBlank(message = "子站状态不能为空", groups = { AddGroup.class, EditGroup.class })
private String status;
/**
* 所属区域
*/
//@NotBlank(message = "所属区域不能为空", groups = { AddGroup.class, EditGroup.class })
private String area;
/**
* 运维公司
*/
//@NotBlank(message = "运维公司不能为空", groups = { AddGroup.class, EditGroup.class })
private String ioCompany;
/**
* 运维人员
*/
//@NotBlank(message = "运维人员不能为空", groups = { AddGroup.class, EditGroup.class })
private String ioPerson;
/**
* 监理类型
*/
//@NotBlank(message = "监理类型不能为空", groups = { AddGroup.class, EditGroup.class })
private String monitorType;
/**
* 监理公司
*/
//@NotBlank(message = "监理公司不能为空", groups = { AddGroup.class, EditGroup.class })
private String monitorCompany;
/**
* 是否被添加工单
*/
private String flag;
}

97
ruoyi-modules/ruoyi-demo/src/main/java/org/dromara/demo/domain/bo/PmDataManagementInfoBo.java

@ -0,0 +1,97 @@
package org.dromara.demo.domain.bo;
import org.dromara.demo.domain.PmDataManagementInfo;
import org.dromara.common.mybatis.core.domain.BaseEntity;
import org.dromara.common.core.validate.AddGroup;
import org.dromara.common.core.validate.EditGroup;
import io.github.linpeilie.annotations.AutoMapper;
import lombok.Data;
import lombok.EqualsAndHashCode;
import jakarta.validation.constraints.*;
import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
import org.springframework.format.annotation.DateTimeFormat;
/**
* 颗粒物手工比对数据管理信息业务对象 pm_data_management_info
*
* @author GJH
* @date 2025-07-02
*/
@Data
@EqualsAndHashCode(callSuper = true)
@AutoMapper(target = PmDataManagementInfo.class, reverseConvertGenerate = false)
public class PmDataManagementInfoBo extends BaseEntity {
/**
* 主键IDMyBatis-Plus自增
*/
//@NotBlank(message = "主键ID(MyBatis-Plus自增)不能为空", groups = { EditGroup.class })
private String id;
/**
* 子站名称
*/
//@NotBlank(message = "子站名称不能为空", groups = { AddGroup.class, EditGroup.class })
private String station;
/**
* 所属区域
*/
//@NotBlank(message = "所属区域不能为空", groups = { AddGroup.class, EditGroup.class })
private String area;
/**
* 运维公司
*/
//@NotBlank(message = "运维公司不能为空", groups = { AddGroup.class, EditGroup.class })
private String ioCompany;
/**
* 开始时间
*/
//@NotNull(message = "开始时间不能为空", groups = { AddGroup.class, EditGroup.class })
@JsonFormat(pattern = "yyyy-MM-dd")
@DateTimeFormat(pattern = "yyyy-MM-dd")
private Date startDate;
/**
* 结束时间
*/
//@NotNull(message = "结束时间不能为空", groups = { AddGroup.class, EditGroup.class })
@JsonFormat(pattern = "yyyy-MM-dd")
@DateTimeFormat(pattern = "yyyy-MM-dd")
private Date endDate;
/**
* 监测项目
*/
//@NotBlank(message = "监测项目不能为空", groups = { AddGroup.class, EditGroup.class })
private String monitorProject;
/**
* 自动监测(mg/m³)
*/
//@NotNull(message = "自动监测(mg/m³)不能为空", groups = { AddGroup.class, EditGroup.class })
private Long autoMonitor;
/**
* 手动监测(mg/m³)
*/
//@NotNull(message = "手动监测(mg/m³)不能为空", groups = { AddGroup.class, EditGroup.class })
private Long handleMonitor;
/**
* 相对误差
*/
//@NotNull(message = "相对误差不能为空", groups = { AddGroup.class, EditGroup.class })
private Long difference;
/**
* 结论
*/
//@NotBlank(message = "结论不能为空", groups = { AddGroup.class, EditGroup.class })
private String result;
}

76
ruoyi-modules/ruoyi-demo/src/main/java/org/dromara/demo/domain/bo/SiteEvaluationInfoBo.java

@ -0,0 +1,76 @@
package org.dromara.demo.domain.bo;
import org.dromara.demo.domain.SiteEvaluationInfo;
import org.dromara.common.mybatis.core.domain.BaseEntity;
import org.dromara.common.core.validate.AddGroup;
import org.dromara.common.core.validate.EditGroup;
import io.github.linpeilie.annotations.AutoMapper;
import lombok.Data;
import lombok.EqualsAndHashCode;
import jakarta.validation.constraints.*;
import java.time.LocalDateTime;
import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
/**
* 现场考核信息业务对象 site_evaluation_info
*
* @author GJH
* @date 2025-09-05
*/
@Data
@EqualsAndHashCode(callSuper = true)
@AutoMapper(target = SiteEvaluationInfo.class, reverseConvertGenerate = false)
public class SiteEvaluationInfoBo extends BaseEntity {
/**
* 主键IDMyBatis-Plus
*/
//@NotBlank(message = "主键ID(MyBatis-Plus)不能为空", groups = { EditGroup.class })
private String id;
/**
* 核查时间
*/
//@NotNull(message = "核查时间不能为空", groups = { AddGroup.class, EditGroup.class })
private LocalDateTime checkDateTime;
/**
* 站点名称
*/
//@NotBlank(message = "站点名称不能为空", groups = { AddGroup.class, EditGroup.class })
private String siteName;
/**
* 核查人员
*/
//@NotBlank(message = "核查人员不能为空", groups = { AddGroup.class, EditGroup.class })
private String checkPeople;
/**
* 评分相关业务数据
*/
//@NotBlank(message = "评分相关业务数据不能为空", groups = { AddGroup.class, EditGroup.class })
private String evaluationData;
/**
* 图片附件数据
*/
//@NotBlank(message = "图片附件数据不能为空", groups = { AddGroup.class, EditGroup.class })
private String imgData;
/**
* 状态
*/
//@NotBlank(message = "状态不能为空", groups = { AddGroup.class, EditGroup.class })
private String status;
/**
* 监理类型
*/
//@NotBlank(message = "监理类型不能为空", groups = { AddGroup.class, EditGroup.class })
private String monitorType;
}

77
ruoyi-modules/ruoyi-demo/src/main/java/org/dromara/demo/domain/bo/SparePartsInfoBo.java

@ -0,0 +1,77 @@
package org.dromara.demo.domain.bo;
import org.dromara.demo.domain.SparePartsInfo;
import org.dromara.common.mybatis.core.domain.BaseEntity;
import org.dromara.common.core.validate.AddGroup;
import org.dromara.common.core.validate.EditGroup;
import io.github.linpeilie.annotations.AutoMapper;
import lombok.Data;
import lombok.EqualsAndHashCode;
import jakarta.validation.constraints.*;
import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
import org.springframework.format.annotation.DateTimeFormat;
/**
* 备品备件列业务对象 spare_parts_info
*
* @author GJH
* @date 2025-07-02
*/
@Data
@EqualsAndHashCode(callSuper = true)
@AutoMapper(target = SparePartsInfo.class, reverseConvertGenerate = false)
public class SparePartsInfoBo extends BaseEntity {
/**
* 主键ID
*/
//@NotBlank(message = "主键ID不能为空", groups = { EditGroup.class })
private String id;
/**
* 品名
*/
//@NotBlank(message = "品名不能为空", groups = { AddGroup.class, EditGroup.class })
private String name;
/**
* 类型
*/
//@NotBlank(message = "类型不能为空", groups = { AddGroup.class, EditGroup.class })
private String type;
/**
* 型号
*/
//@NotBlank(message = "型号不能为空", groups = { AddGroup.class, EditGroup.class })
private String model;
/**
* 数量
*/
//@NotNull(message = "数量不能为空", groups = { AddGroup.class, EditGroup.class })
private Long amount;
/**
* 入库日期
*/
//@NotNull(message = "入库日期不能为空", groups = { AddGroup.class, EditGroup.class })
@JsonFormat(pattern = "yyyy-MM-dd")
@DateTimeFormat(pattern = "yyyy-MM-dd")
private Date indate;
/**
* 运维公司
*/
//@NotBlank(message = "运维公司不能为空", groups = { AddGroup.class, EditGroup.class })
private String ioCompany;
/**
* 监理公司
*/
//@NotBlank(message = "监理公司不能为空", groups = { AddGroup.class, EditGroup.class })
private String monitorCompany;
}

105
ruoyi-modules/ruoyi-demo/src/main/java/org/dromara/demo/domain/bo/StationFaultInfoBo.java

@ -0,0 +1,105 @@
package org.dromara.demo.domain.bo;
import org.dromara.demo.domain.StationFaultInfo;
import org.dromara.common.mybatis.core.domain.BaseEntity;
import org.dromara.common.core.validate.AddGroup;
import org.dromara.common.core.validate.EditGroup;
import io.github.linpeilie.annotations.AutoMapper;
import lombok.Data;
import lombok.EqualsAndHashCode;
import jakarta.validation.constraints.*;
import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
import org.springframework.format.annotation.DateTimeFormat;
/**
* air业务对象 station_fault_info
*
* @author gejunhao
* @date 2025-07-08
*/
@Data
@EqualsAndHashCode(callSuper = true)
@AutoMapper(target = StationFaultInfo.class, reverseConvertGenerate = false)
public class StationFaultInfoBo extends BaseEntity {
/**
* 主键ID
*/
//@NotBlank(message = "主键ID不能为空", groups = { EditGroup.class })
private String id;
/**
* 站点
*/
//@NotBlank(message = "站点不能为空", groups = { AddGroup.class, EditGroup.class })
private String station;
/**
* 监测项目
*/
//@NotBlank(message = "监测项目不能为空", groups = { AddGroup.class, EditGroup.class })
private String monitorProject;
/**
* 故障开始时间
*/
//@NotNull(message = "故障开始时间不能为空", groups = { AddGroup.class, EditGroup.class })
@JsonFormat(pattern = "yyyy-MM-dd")
@DateTimeFormat(pattern = "yyyy-MM-dd")
private Date faultStartDate;
/**
* 故障结束时间
*/
//@NotNull(message = "故障结束时间不能为空", groups = { AddGroup.class, EditGroup.class })
@JsonFormat(pattern = "yyyy-MM-dd")
@DateTimeFormat(pattern = "yyyy-MM-dd")
private Date faultEndDate;
/**
* 运维响应时间
*/
//@NotNull(message = "运维响应时间不能为空", groups = { AddGroup.class, EditGroup.class })
@JsonFormat(pattern = "yyyy-MM-dd")
@DateTimeFormat(pattern = "yyyy-MM-dd")
private Date ioResponseDate;
/**
* 响应时间跨度
*/
//@NotBlank(message = "响应时间跨度不能为空", groups = { AddGroup.class, EditGroup.class })
private String responseDuration;
/**
* 故障时间跨度
*/
//@NotBlank(message = "故障时间跨度不能为空", groups = { AddGroup.class, EditGroup.class })
private String faultDuration;
/**
* 监理人员
*/
//@NotBlank(message = "监理人员不能为空", groups = { AddGroup.class, EditGroup.class })
private String monitorPerson;
/**
* 监理单位
*/
//@NotBlank(message = "监理单位不能为空", groups = { AddGroup.class, EditGroup.class })
private String monitorCompany;
/**
* 运维单位
*/
//@NotBlank(message = "运维单位不能为空", groups = { AddGroup.class, EditGroup.class })
private String ioCompany;
/**
* 备注
*/
//@NotBlank(message = "备注不能为空", groups = { AddGroup.class, EditGroup.class })
private String remark;
}

84
ruoyi-modules/ruoyi-demo/src/main/java/org/dromara/demo/domain/bo/StationInfoBo.java

@ -0,0 +1,84 @@
package org.dromara.demo.domain.bo;
import org.dromara.demo.domain.StationInfo;
import org.dromara.common.mybatis.core.domain.BaseEntity;
import org.dromara.common.core.validate.AddGroup;
import org.dromara.common.core.validate.EditGroup;
import io.github.linpeilie.annotations.AutoMapper;
import lombok.Data;
import lombok.EqualsAndHashCode;
import jakarta.validation.constraints.*;
/**
* 子站信息业务对象 station_info
*
* @author GJH
* @date 2025-07-01
*/
@Data
@EqualsAndHashCode(callSuper = true)
@AutoMapper(target = StationInfo.class, reverseConvertGenerate = false)
public class StationInfoBo extends BaseEntity {
/**
* 主键ID数据库自增
*/
//@NotBlank(message = "主键ID(数据库自增)不能为空", groups = { EditGroup.class })
private String id;
/**
* 子站名称
*/
//@NotBlank(message = "子站名称不能为空", groups = { AddGroup.class, EditGroup.class })
private String station;
/**
* 所属区域
*/
//@NotBlank(message = "所属区域不能为空", groups = { AddGroup.class, EditGroup.class })
private String area;
/**
* 地址
*/
//@NotBlank(message = "地址不能为空", groups = { AddGroup.class, EditGroup.class })
private String address;
/**
* 经度
*/
//@NotBlank(message = "经度不能为空", groups = { AddGroup.class, EditGroup.class })
private String longitude;
/**
* 纬度
*/
//@NotBlank(message = "纬度不能为空", groups = { AddGroup.class, EditGroup.class })
private String latitude;
/**
* 运维公司
*/
//@NotBlank(message = "运维公司不能为空", groups = { AddGroup.class, EditGroup.class })
private String ioCompany;
/**
* 运维人员
*/
//@NotBlank(message = "运维人员不能为空", groups = { AddGroup.class, EditGroup.class })
private String ioPerson;
/**
* 监理公司
*/
//@NotBlank(message = "监理公司不能为空", groups = { AddGroup.class, EditGroup.class })
private String monitorCompany;
/**
* 状态
*/
//@NotBlank(message = "状态不能为空", groups = { AddGroup.class, EditGroup.class })
private String status;
}

83
ruoyi-modules/ruoyi-demo/src/main/java/org/dromara/demo/domain/bo/StationParamChangeBo.java

@ -0,0 +1,83 @@
package org.dromara.demo.domain.bo;
import org.dromara.demo.domain.StationParamChange;
import org.dromara.common.mybatis.core.domain.BaseEntity;
import org.dromara.common.core.validate.AddGroup;
import org.dromara.common.core.validate.EditGroup;
import io.github.linpeilie.annotations.AutoMapper;
import lombok.Data;
import lombok.EqualsAndHashCode;
import jakarta.validation.constraints.*;
import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
import org.springframework.format.annotation.DateTimeFormat;
/**
* 站点参数变更业务对象 station_param_change
*
* @author gejunhao
* @date 2025-07-08
*/
@Data
@EqualsAndHashCode(callSuper = true)
@AutoMapper(target = StationParamChange.class, reverseConvertGenerate = false)
public class StationParamChangeBo extends BaseEntity {
/**
* 主键ID
*/
//@NotBlank(message = "主键ID不能为空", groups = { EditGroup.class })
private String id;
/**
* 站点名称
*/
//@NotBlank(message = "站点名称不能为空", groups = { AddGroup.class, EditGroup.class })
private String station;
/**
* 监测项目
*/
//@NotBlank(message = "监测项目不能为空", groups = { AddGroup.class, EditGroup.class })
private String monitorProject;
/**
* 参数名称
*/
//@NotBlank(message = "参数名称不能为空", groups = { AddGroup.class, EditGroup.class })
private String arguments;
/**
* 发现时间
*/
//@NotNull(message = "发现时间不能为空", groups = { AddGroup.class, EditGroup.class })
@JsonFormat(pattern = "yyyy-MM-dd")
@DateTimeFormat(pattern = "yyyy-MM-dd")
private Date foundDate;
/**
* 监理人员
*/
//@NotBlank(message = "监理人员不能为空", groups = { AddGroup.class, EditGroup.class })
private String monitorPerson;
/**
* 监理单位
*/
//@NotBlank(message = "监理单位不能为空", groups = { AddGroup.class, EditGroup.class })
private String monitorCompany;
/**
* 运维单位
*/
//@NotBlank(message = "运维单位不能为空", groups = { AddGroup.class, EditGroup.class })
private String ioCompany;
/**
* 备注
*/
//@NotBlank(message = "备注不能为空", groups = { AddGroup.class, EditGroup.class })
private String remark;
}

83
ruoyi-modules/ruoyi-demo/src/main/java/org/dromara/demo/domain/bo/WebSiteNetDataAnalysisBo.java

@ -0,0 +1,83 @@
package org.dromara.demo.domain.bo;
import org.dromara.demo.domain.WebSiteNetDataAnalysis;
import org.dromara.common.mybatis.core.domain.BaseEntity;
import org.dromara.common.core.validate.AddGroup;
import org.dromara.common.core.validate.EditGroup;
import io.github.linpeilie.annotations.AutoMapper;
import lombok.Data;
import lombok.EqualsAndHashCode;
import jakarta.validation.constraints.*;
import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
import org.springframework.format.annotation.DateTimeFormat;
/**
* 站点联网数据分析业务对象 web_site_net_data_analysis
*
* @author gejunhao
* @date 2025-07-08
*/
@Data
@EqualsAndHashCode(callSuper = true)
@AutoMapper(target = WebSiteNetDataAnalysis.class, reverseConvertGenerate = false)
public class WebSiteNetDataAnalysisBo extends BaseEntity {
/**
* 主键ID
*/
//@NotBlank(message = "主键ID不能为空", groups = { EditGroup.class })
private String id;
/**
* 站点名称
*/
//@NotBlank(message = "站点名称不能为空", groups = { AddGroup.class, EditGroup.class })
private String station;
/**
* 所属区域
*/
//@NotBlank(message = "所属区域不能为空", groups = { AddGroup.class, EditGroup.class })
private String area;
/**
* 当前状态运行中维护中离线
*/
//@NotBlank(message = "当前状态(如:运行中、维护中、离线)不能为空", groups = { AddGroup.class, EditGroup.class })
private String status;
/**
* 运维单位
*/
//@NotBlank(message = "运维单位不能为空", groups = { AddGroup.class, EditGroup.class })
private String ioCompany;
/**
* 监理单位
*/
//@NotBlank(message = "监理单位不能为空", groups = { AddGroup.class, EditGroup.class })
private String monitorCompany;
/**
* 本月应收数据金额
*/
//@NotNull(message = "本月应收数据金额不能为空", groups = { AddGroup.class, EditGroup.class })
private Long planIncome;
/**
* 本月实收数据金额
*/
//@NotNull(message = "本月实收数据金额不能为空", groups = { AddGroup.class, EditGroup.class })
private Long actualIncome;
/**
* 最新数据更新时间
*/
//@NotNull(message = "最新数据更新时间不能为空", groups = { AddGroup.class, EditGroup.class })
@JsonFormat(pattern = "yyyy-MM-dd")
@DateTimeFormat(pattern = "yyyy-MM-dd")
private Date lastTime;
}

80
ruoyi-modules/ruoyi-demo/src/main/java/org/dromara/demo/domain/bo/WorkOrderInfoBo.java

@ -0,0 +1,80 @@
package org.dromara.demo.domain.bo;
import org.dromara.demo.domain.WorkOrderInfo;
import org.dromara.common.mybatis.core.domain.BaseEntity;
import org.dromara.common.core.validate.AddGroup;
import org.dromara.common.core.validate.EditGroup;
import io.github.linpeilie.annotations.AutoMapper;
import lombok.Data;
import lombok.EqualsAndHashCode;
import jakarta.validation.constraints.*;
import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
import org.springframework.format.annotation.DateTimeFormat;
/**
* 工单管理业务对象 work_order_info
*
* @author GJH
* @date 2025-07-03
*/
@Data
@EqualsAndHashCode(callSuper = true)
@AutoMapper(target = WorkOrderInfo.class, reverseConvertGenerate = false)
public class WorkOrderInfoBo extends BaseEntity {
/**
* 主键ID
*/
//@NotBlank(message = "主键ID不能为空", groups = { EditGroup.class })
private String id;
/**
* 工单编号
*/
//@NotBlank(message = "工单编号不能为空", groups = { AddGroup.class, EditGroup.class })
private String orderNum;
/**
* 工作日期
*/
//@NotNull(message = "工作日期不能为空", groups = { AddGroup.class, EditGroup.class })
@JsonFormat(pattern = "yyyy-MM-dd")
@DateTimeFormat(pattern = "yyyy-MM-dd")
private Date workDate;
/**
* 子站名称
*/
//@NotBlank(message = "子站名称不能为空", groups = { AddGroup.class, EditGroup.class })
private String station;
/**
* 子站状态
*/
//@NotBlank(message = "子站状态不能为空", groups = { AddGroup.class, EditGroup.class })
private String status;
/**
* 所属区域
*/
//@NotBlank(message = "所属区域不能为空", groups = { AddGroup.class, EditGroup.class })
private String area;
/**
* 监理类型
*/
//@NotBlank(message = "监理类型不能为空", groups = { AddGroup.class, EditGroup.class })
private String monitorType;
/**
* 监理人员
*/
//@NotBlank(message = "监理人员不能为空", groups = { AddGroup.class, EditGroup.class })
private String monitorPerson;
/**
* 计划ID
*/
private String planId;
}

115
ruoyi-modules/ruoyi-demo/src/main/java/org/dromara/demo/domain/bo/ZeroAdjustmentAnalysisBo.java

@ -0,0 +1,115 @@
package org.dromara.demo.domain.bo;
import org.dromara.demo.domain.ZeroAdjustmentAnalysis;
import org.dromara.common.mybatis.core.domain.BaseEntity;
import org.dromara.common.core.validate.AddGroup;
import org.dromara.common.core.validate.EditGroup;
import io.github.linpeilie.annotations.AutoMapper;
import lombok.Data;
import lombok.EqualsAndHashCode;
import jakarta.validation.constraints.*;
import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
import org.springframework.format.annotation.DateTimeFormat;
/**
* 校零校准分析业务对象 zero_adjustment_analysis
*
* @author gejunhao
* @date 2025-07-08
*/
@Data
@EqualsAndHashCode(callSuper = true)
@AutoMapper(target = ZeroAdjustmentAnalysis.class, reverseConvertGenerate = false)
public class ZeroAdjustmentAnalysisBo extends BaseEntity {
/**
* 主键ID
*/
//@NotBlank(message = "主键ID不能为空", groups = { EditGroup.class })
private String id;
/**
* 站点名称
*/
//@NotBlank(message = "站点名称不能为空", groups = { AddGroup.class, EditGroup.class })
private String station;
/**
* 所属区域
*/
//@NotBlank(message = "所属区域不能为空", groups = { AddGroup.class, EditGroup.class })
private String area;
/**
* 监测项目
*/
//@NotBlank(message = "监测项目不能为空", groups = { AddGroup.class, EditGroup.class })
private String monitorProject;
/**
* 上次校零校准时间
*/
//@NotNull(message = "上次校零校准时间不能为空", groups = { AddGroup.class, EditGroup.class })
private Date toZeroDate;
/**
* 时间跨度7天30天
*/
//@NotBlank(message = "时间跨度(如:7天、30天)不能为空", groups = { AddGroup.class, EditGroup.class })
private String duration;
/**
* 核查开始日期
*/
//@NotNull(message = "核查开始日期不能为空", groups = { AddGroup.class, EditGroup.class })
@JsonFormat(pattern = "yyyy-MM-dd")
@DateTimeFormat(pattern = "yyyy-MM-dd")
private Date checkStartDate;
/**
* 核查结束日期
*/
//@NotNull(message = "核查结束日期不能为空", groups = { AddGroup.class, EditGroup.class })
@JsonFormat(pattern = "yyyy-MM-dd")
@DateTimeFormat(pattern = "yyyy-MM-dd")
private Date checkEndDate;
/**
* 实际校零校准次数
*/
//@NotNull(message = "实际校零校准次数不能为空", groups = { AddGroup.class, EditGroup.class })
private Long actualTimes;
/**
* 应校零校准次数
*/
//@NotNull(message = "应校零校准次数不能为空", groups = { AddGroup.class, EditGroup.class })
private Long planTimes;
/**
* 监理人员
*/
//@NotBlank(message = "监理人员不能为空", groups = { AddGroup.class, EditGroup.class })
private String monitorPerson;
/**
* 监理单位
*/
//@NotBlank(message = "监理单位不能为空", groups = { AddGroup.class, EditGroup.class })
private String monitorCompany;
/**
* 环保知情人
*/
//@NotBlank(message = "环保知情人不能为空", groups = { AddGroup.class, EditGroup.class })
private String insider;
/**
* 备注
*/
//@NotBlank(message = "备注不能为空", groups = { AddGroup.class, EditGroup.class })
private String remark;
}

19
ruoyi-modules/ruoyi-demo/src/main/java/org/dromara/demo/domain/vo/AttachmentVo.java

@ -0,0 +1,19 @@
package org.dromara.demo.domain.vo;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.dromara.demo.domain.Attachment;
import java.util.List;
@Data
@AllArgsConstructor
@NoArgsConstructor
public class AttachmentVo {
private List<Attachment> attachmentList;
/**
* 备注
*/
private String remark;
}

100
ruoyi-modules/ruoyi-demo/src/main/java/org/dromara/demo/domain/vo/DeviceInfoVo.java

@ -0,0 +1,100 @@
package org.dromara.demo.domain.vo;
import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
import org.dromara.demo.domain.DeviceInfo;
import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
import com.alibaba.excel.annotation.ExcelProperty;
import org.dromara.common.excel.annotation.ExcelDictFormat;
import org.dromara.common.excel.convert.ExcelDictConvert;
import io.github.linpeilie.annotations.AutoMapper;
import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;
import java.io.Serial;
import java.io.Serializable;
import java.util.Date;
/**
* 设备信息视图对象 device_info
*
* @author GJH
* @date 2025-07-01
*/
@Data
@ExcelIgnoreUnannotated
@AutoMapper(target = DeviceInfo.class)
public class DeviceInfoVo implements Serializable {
@Serial
private static final long serialVersionUID = 1L;
/**
* 主键ID自增
*/
@ExcelProperty(value = "主键ID", converter = ExcelDictConvert.class)
//@ExcelDictFormat(readConverterExp = "自=增")
private String id;
/**
* 站点
*/
@ExcelProperty(value = "站点")
private String station;
/**
* 所属区域
*/
@ExcelProperty(value = "所属区域")
private String area;
/**
* 设备名称
*/
@ExcelProperty(value = "设备名称")
private String device;
/**
* 设备型号
*/
@ExcelProperty(value = "设备型号")
private String model;
/**
* 生产厂家
*/
@ExcelProperty(value = "生产厂家")
private String manufacturer;
/**
* 生产日期
*/
@ExcelProperty(value = "生产日期")
@JsonFormat(pattern = "yyyy-MM-dd")
@DateTimeFormat(pattern = "yyyy-MM-dd")
private Date manufactureDate;
/**
* 序列号
*/
@ExcelProperty(value = "序列号")
private String number;
/**
* 检测物
*/
@ExcelProperty(value = "检测物")
private String testSubstance;
/**
* 状态
*/
@ExcelProperty(value = "状态")
private String status;
@ExcelProperty(value = "监理公司")
private String monitorCompany;
}

83
ruoyi-modules/ruoyi-demo/src/main/java/org/dromara/demo/domain/vo/OrderManagementInfoVo.java

@ -0,0 +1,83 @@
package org.dromara.demo.domain.vo;
import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
import org.dromara.demo.domain.OrderManagementInfo;
import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
import com.alibaba.excel.annotation.ExcelProperty;
import org.dromara.common.excel.annotation.ExcelDictFormat;
import org.dromara.common.excel.convert.ExcelDictConvert;
import io.github.linpeilie.annotations.AutoMapper;
import lombok.Data;
import java.io.Serial;
import java.io.Serializable;
import java.util.Date;
/**
* 现场核查单管理信息视图对象 order_management_info
*
* @author GJH
* @date 2025-07-02
*/
@Data
@ExcelIgnoreUnannotated
@AutoMapper(target = OrderManagementInfo.class)
public class OrderManagementInfoVo implements Serializable {
@Serial
private static final long serialVersionUID = 1L;
/**
* 主键IDMyBatis-Plus自增
*/
@ExcelProperty(value = "主键ID", converter = ExcelDictConvert.class)
//@ExcelDictFormat(readConverterExp = "M=yBatis-Plus自增")
private String id;
/**
* 核查时间
*/
@ExcelProperty(value = "核查时间")
private Date checkTime;
/**
* 子站名称
*/
@ExcelProperty(value = "子站名称")
private String station;
/**
* 所属区域
*/
@ExcelProperty(value = "所属区域")
private String area;
/**
* 状态
*/
@ExcelProperty(value = "状态")
private String status;
/**
* 监理类型
*/
@ExcelProperty(value = "监理类型")
private String monitorType;
/**
* 核查人员
*/
@ExcelProperty(value = "核查人员")
private String checkPerson;
/**
* 核查得分
*/
@ExcelProperty(value = "核查得分")
private Long checkScore;
}

82
ruoyi-modules/ruoyi-demo/src/main/java/org/dromara/demo/domain/vo/PeopleCheckInfoVo.java

@ -0,0 +1,82 @@
package org.dromara.demo.domain.vo;
import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
import org.dromara.demo.domain.PeopleCheckInfo;
import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
import com.alibaba.excel.annotation.ExcelProperty;
import org.dromara.common.excel.annotation.ExcelDictFormat;
import org.dromara.common.excel.convert.ExcelDictConvert;
import io.github.linpeilie.annotations.AutoMapper;
import lombok.Data;
import java.io.Serial;
import java.io.Serializable;
import java.util.Date;
/**
* 人员签到统计视图对象 people_check_info
*
* @author GJH
* @date 2025-07-08
*/
@Data
@ExcelIgnoreUnannotated
@AutoMapper(target = PeopleCheckInfo.class)
public class PeopleCheckInfoVo implements Serializable {
@Serial
private static final long serialVersionUID = 1L;
/**
* 主键ID
*/
@ExcelProperty(value = "主键ID")
private String id;
/**
* 站点名称
*/
@ExcelProperty(value = "站点名称")
private String station;
/**
* 所属区域
*/
@ExcelProperty(value = "所属区域")
private String area;
/**
* 人员性质
*/
@ExcelProperty(value = "人员性质")
private String attribute;
/**
* 人员姓名
*/
@ExcelProperty(value = "人员姓名")
private String person;
/**
* 所属公司
*/
@ExcelProperty(value = "所属公司")
private String company;
/**
* 签到时间
*/
@ExcelProperty(value = "签到时间")
private Date registerTime;
/**
* 签到类型
*/
@ExcelProperty(value = "签到类型")
private String registerType;
}

97
ruoyi-modules/ruoyi-demo/src/main/java/org/dromara/demo/domain/vo/PlanInfoVo.java

@ -0,0 +1,97 @@
package org.dromara.demo.domain.vo;
import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
import org.dromara.demo.domain.PlanInfo;
import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
import com.alibaba.excel.annotation.ExcelProperty;
import org.dromara.common.excel.annotation.ExcelDictFormat;
import org.dromara.common.excel.convert.ExcelDictConvert;
import io.github.linpeilie.annotations.AutoMapper;
import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;
import java.io.Serial;
import java.io.Serializable;
import java.util.Date;
/**
* 计划管理视图对象 plan_info
*
* @author GJH
* @date 2025-07-03
*/
@Data
@ExcelIgnoreUnannotated
@AutoMapper(target = PlanInfo.class)
public class PlanInfoVo implements Serializable {
@Serial
private static final long serialVersionUID = 1L;
/**
* 主键ID
*/
@ExcelProperty(value = "主键ID")
private String id;
/**
* 计划号
*/
@ExcelProperty(value = "计划号")
private String planNum;
/**
* 计划日期
*/
@ExcelProperty(value = "计划日期")
@JsonFormat(pattern = "yyyy-MM-dd")
@DateTimeFormat(pattern = "yyyy-MM-dd")
private Date planDate;
/**
* 子站名称
*/
@ExcelProperty(value = "子站名称")
private String station;
/**
* 子站状态
*/
@ExcelProperty(value = "子站状态")
private String status;
/**
* 所属区域
*/
@ExcelProperty(value = "所属区域")
private String area;
/**
* 运维公司
*/
@ExcelProperty(value = "运维公司")
private String ioCompany;
/**
* 运维人员
*/
@ExcelProperty(value = "运维人员")
private String ioPerson;
/**
* 监理类型
*/
@ExcelProperty(value = "监理类型")
private String monitorType;
/**
* 监理公司
*/
@ExcelProperty(value = "监理公司")
private String monitorCompany;
}

14
ruoyi-modules/ruoyi-demo/src/main/java/org/dromara/demo/domain/vo/PlanSelectVo.java

@ -0,0 +1,14 @@
package org.dromara.demo.domain.vo;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
@Data
@AllArgsConstructor
@NoArgsConstructor
public class PlanSelectVo {
private String label;
private String value;
}

106
ruoyi-modules/ruoyi-demo/src/main/java/org/dromara/demo/domain/vo/PmDataManagementInfoVo.java

@ -0,0 +1,106 @@
package org.dromara.demo.domain.vo;
import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
import org.dromara.demo.domain.PmDataManagementInfo;
import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
import com.alibaba.excel.annotation.ExcelProperty;
import org.dromara.common.excel.annotation.ExcelDictFormat;
import org.dromara.common.excel.convert.ExcelDictConvert;
import io.github.linpeilie.annotations.AutoMapper;
import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;
import java.io.Serial;
import java.io.Serializable;
import java.util.Date;
/**
* 颗粒物手工比对数据管理信息视图对象 pm_data_management_info
*
* @author GJH
* @date 2025-07-02
*/
@Data
@ExcelIgnoreUnannotated
@AutoMapper(target = PmDataManagementInfo.class)
public class PmDataManagementInfoVo implements Serializable {
@Serial
private static final long serialVersionUID = 1L;
/**
* 主键IDMyBatis-Plus自增
*/
@ExcelProperty(value = "主键ID", converter = ExcelDictConvert.class)
//@ExcelDictFormat(readConverterExp = "M=yBatis-Plus自增")
private String id;
/**
* 子站名称
*/
@ExcelProperty(value = "子站名称")
private String station;
/**
* 所属区域
*/
@ExcelProperty(value = "所属区域")
private String area;
/**
* 运维公司
*/
@ExcelProperty(value = "运维公司")
private String ioCompany;
/**
* 开始时间
*/
@ExcelProperty(value = "开始时间")
@JsonFormat(pattern = "yyyy-MM-dd")
@DateTimeFormat(pattern = "yyyy-MM-dd")
private Date startDate;
/**
* 结束时间
*/
@ExcelProperty(value = "结束时间")
@JsonFormat(pattern = "yyyy-MM-dd")
@DateTimeFormat(pattern = "yyyy-MM-dd")
private Date endDate;
/**
* 监测项目
*/
@ExcelProperty(value = "监测项目")
private String monitorProject;
/**
* 自动监测(mg/m³)
*/
@ExcelProperty(value = "自动监测(mg/m³)")
private Long autoMonitor;
/**
* 手动监测(mg/m³)
*/
@ExcelProperty(value = "手动监测(mg/m³)")
private Long handleMonitor;
/**
* 相对误差
*/
@ExcelProperty(value = "相对误差")
private Long difference;
/**
* 结论
*/
@ExcelProperty(value = "结论")
private String result;
}

16
ruoyi-modules/ruoyi-demo/src/main/java/org/dromara/demo/domain/vo/RegionVo.java

@ -0,0 +1,16 @@
package org.dromara.demo.domain.vo;
import lombok.Data;
@Data
public class RegionVo {
private String value;
// 无参构造函数(Lombok已经帮你生成了,除非你手动写了其他构造函数)
public RegionVo() {}
// 全参构造函数
public RegionVo(String value) {
this.value = value;
}
}

102
ruoyi-modules/ruoyi-demo/src/main/java/org/dromara/demo/domain/vo/SiteEvaluationInfoVo.java

@ -0,0 +1,102 @@
package org.dromara.demo.domain.vo;
import java.time.LocalDateTime;
import java.util.Date;
import com.baomidou.mybatisplus.annotation.TableField;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.AllArgsConstructor;
import lombok.NoArgsConstructor;
import org.dromara.demo.domain.Attachment;
import org.dromara.demo.domain.EvaluationDataJson;
import org.dromara.demo.domain.SiteEvaluationInfo;
import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
import com.alibaba.excel.annotation.ExcelProperty;
import org.dromara.common.excel.annotation.ExcelDictFormat;
import org.dromara.common.excel.convert.ExcelDictConvert;
import io.github.linpeilie.annotations.AutoMapper;
import lombok.Data;
import java.io.Serial;
import java.io.Serializable;
import java.util.Date;
import java.util.List;
/**
* 现场考核信息视图对象 site_evaluation_info
*
* @author GJH
* @date 2025-09-05
*/
@Data
@ExcelIgnoreUnannotated
@AutoMapper(target = SiteEvaluationInfo.class)
@AllArgsConstructor
@NoArgsConstructor
public class SiteEvaluationInfoVo implements Serializable {
@Serial
private static final long serialVersionUID = 1L;
/**
* 主键IDMyBatis-Plus
*/
@ExcelProperty(value = "主键ID", converter = ExcelDictConvert.class)
@ExcelDictFormat(readConverterExp = "M=yBatis-Plus")
private String id;
/**
* 核查时间
*/
@ExcelProperty(value = "核查时间")
private LocalDateTime checkDateTime;
/**
* 站点名称
*/
@ExcelProperty(value = "站点名称")
private String siteName;
/**
* 核查人员
*/
@ExcelProperty(value = "核查人员")
private String checkPeople;
/**
* 评分相关业务数据
*/
@ExcelProperty(value = "评分相关业务数据")
private String evaluationData;
/**
* 图片附件数据
*/
@ExcelProperty(value = "图片附件数据")
private String imgData;
/**
* 状态
*/
@ExcelProperty(value = "状态")
private String status;
/**
* 监理类型
*/
@ExcelProperty(value = "监理类型")
private String monitorType;
/**
* 评分业务数据
*/
@TableField(exist = false)
private EvaluationDataJson evaluationDataVo;
/**
* 附件业务数据
*/
@TableField(exist = false)
private List<AttachmentVo> attachmentVoList;
}

85
ruoyi-modules/ruoyi-demo/src/main/java/org/dromara/demo/domain/vo/SparePartsInfoVo.java

@ -0,0 +1,85 @@
package org.dromara.demo.domain.vo;
import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
import org.dromara.demo.domain.SparePartsInfo;
import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
import com.alibaba.excel.annotation.ExcelProperty;
import org.dromara.common.excel.annotation.ExcelDictFormat;
import org.dromara.common.excel.convert.ExcelDictConvert;
import io.github.linpeilie.annotations.AutoMapper;
import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;
import java.io.Serial;
import java.io.Serializable;
import java.util.Date;
/**
* 备品备件列视图对象 spare_parts_info
*
* @author GJH
* @date 2025-07-02
*/
@Data
@ExcelIgnoreUnannotated
@AutoMapper(target = SparePartsInfo.class)
public class SparePartsInfoVo implements Serializable {
@Serial
private static final long serialVersionUID = 1L;
/**
* 主键ID
*/
@ExcelProperty(value = "主键ID")
private String id;
/**
* 品名
*/
@ExcelProperty(value = "品名")
private String name;
/**
* 类型
*/
@ExcelProperty(value = "类型")
private String type;
/**
* 型号
*/
@ExcelProperty(value = "型号")
private String model;
/**
* 数量
*/
@ExcelProperty(value = "数量")
private Long amount;
/**
* 入库日期
*/
@ExcelProperty(value = "入库日期")
@JsonFormat(pattern = "yyyy-MM-dd")
@DateTimeFormat(pattern = "yyyy-MM-dd")
private Date indate;
/**
* 运维公司
*/
@ExcelProperty(value = "运维公司")
private String ioCompany;
/**
* 监理公司
*/
@ExcelProperty(value = "监理公司")
private String monitorCompany;
}

113
ruoyi-modules/ruoyi-demo/src/main/java/org/dromara/demo/domain/vo/StationFaultInfoVo.java

@ -0,0 +1,113 @@
package org.dromara.demo.domain.vo;
import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
import org.dromara.demo.domain.StationFaultInfo;
import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
import com.alibaba.excel.annotation.ExcelProperty;
import org.dromara.common.excel.annotation.ExcelDictFormat;
import org.dromara.common.excel.convert.ExcelDictConvert;
import io.github.linpeilie.annotations.AutoMapper;
import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;
import java.io.Serial;
import java.io.Serializable;
import java.util.Date;
/**
* air视图对象 station_fault_info
*
* @author gejunhao
* @date 2025-07-08
*/
@Data
@ExcelIgnoreUnannotated
@AutoMapper(target = StationFaultInfo.class)
public class StationFaultInfoVo implements Serializable {
@Serial
private static final long serialVersionUID = 1L;
/**
* 主键ID
*/
@ExcelProperty(value = "主键ID")
private String id;
/**
* 站点
*/
@ExcelProperty(value = "站点")
private String station;
/**
* 监测项目
*/
@ExcelProperty(value = "监测项目")
private String monitorProject;
/**
* 故障开始时间
*/
@ExcelProperty(value = "故障开始时间")
@JsonFormat(pattern = "yyyy-MM-dd")
@DateTimeFormat(pattern = "yyyy-MM-dd")
private Date faultStartDate;
/**
* 故障结束时间
*/
@ExcelProperty(value = "故障结束时间")
@JsonFormat(pattern = "yyyy-MM-dd")
@DateTimeFormat(pattern = "yyyy-MM-dd")
private Date faultEndDate;
/**
* 运维响应时间
*/
@ExcelProperty(value = "运维响应时间")
@JsonFormat(pattern = "yyyy-MM-dd")
@DateTimeFormat(pattern = "yyyy-MM-dd")
private Date ioResponseDate;
/**
* 响应时间跨度
*/
@ExcelProperty(value = "响应时间跨度")
private String responseDuration;
/**
* 故障时间跨度
*/
@ExcelProperty(value = "故障时间跨度")
private String faultDuration;
/**
* 监理人员
*/
@ExcelProperty(value = "监理人员")
private String monitorPerson;
/**
* 监理单位
*/
@ExcelProperty(value = "监理单位")
private String monitorCompany;
/**
* 运维单位
*/
@ExcelProperty(value = "运维单位")
private String ioCompany;
/**
* 备注
*/
@ExcelProperty(value = "备注")
private String remark;
}

93
ruoyi-modules/ruoyi-demo/src/main/java/org/dromara/demo/domain/vo/StationInfoVo.java

@ -0,0 +1,93 @@
package org.dromara.demo.domain.vo;
import org.dromara.demo.domain.StationInfo;
import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
import com.alibaba.excel.annotation.ExcelProperty;
import org.dromara.common.excel.annotation.ExcelDictFormat;
import org.dromara.common.excel.convert.ExcelDictConvert;
import io.github.linpeilie.annotations.AutoMapper;
import lombok.Data;
import java.io.Serial;
import java.io.Serializable;
import java.util.Date;
/**
* 子站信息视图对象 station_info
*
* @author GJH
* @date 2025-07-01
*/
@Data
@ExcelIgnoreUnannotated
@AutoMapper(target = StationInfo.class)
public class StationInfoVo implements Serializable {
@Serial
private static final long serialVersionUID = 1L;
/**
* 主键ID数据库自增
*/
@ExcelProperty(value = "主键ID", converter = ExcelDictConvert.class)
//@ExcelDictFormat(readConverterExp = "数=据库自增")
private String id;
/**
* 子站名称
*/
@ExcelProperty(value = "子站名称")
private String station;
/**
* 所属区域
*/
@ExcelProperty(value = "所属区域")
private String area;
/**
* 地址
*/
@ExcelProperty(value = "地址")
private String address;
/**
* 经度
*/
@ExcelProperty(value = "经度")
private String longitude;
/**
* 纬度
*/
@ExcelProperty(value = "纬度")
private String latitude;
/**
* 运维公司
*/
@ExcelProperty(value = "运维公司")
private String ioCompany;
/**
* 运维人员
*/
@ExcelProperty(value = "运维人员")
private String ioPerson;
/**
* 监理公司
*/
@ExcelProperty(value = "监理公司")
private String monitorCompany;
/**
* 状态
*/
@ExcelProperty(value = "状态")
private String status;
}

91
ruoyi-modules/ruoyi-demo/src/main/java/org/dromara/demo/domain/vo/StationParamChangeVo.java

@ -0,0 +1,91 @@
package org.dromara.demo.domain.vo;
import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
import org.dromara.demo.domain.StationParamChange;
import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
import com.alibaba.excel.annotation.ExcelProperty;
import org.dromara.common.excel.annotation.ExcelDictFormat;
import org.dromara.common.excel.convert.ExcelDictConvert;
import io.github.linpeilie.annotations.AutoMapper;
import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;
import java.io.Serial;
import java.io.Serializable;
import java.util.Date;
/**
* 站点参数变更视图对象 station_param_change
*
* @author gejunhao
* @date 2025-07-08
*/
@Data
@ExcelIgnoreUnannotated
@AutoMapper(target = StationParamChange.class)
public class StationParamChangeVo implements Serializable {
@Serial
private static final long serialVersionUID = 1L;
/**
* 主键ID
*/
@ExcelProperty(value = "主键ID")
private String id;
/**
* 站点名称
*/
@ExcelProperty(value = "站点名称")
private String station;
/**
* 监测项目
*/
@ExcelProperty(value = "监测项目")
private String monitorProject;
/**
* 参数名称
*/
@ExcelProperty(value = "参数名称")
private String arguments;
/**
* 发现时间
*/
@ExcelProperty(value = "发现时间")
@JsonFormat(pattern = "yyyy-MM-dd")
@DateTimeFormat(pattern = "yyyy-MM-dd")
private Date foundDate;
/**
* 监理人员
*/
@ExcelProperty(value = "监理人员")
private String monitorPerson;
/**
* 监理单位
*/
@ExcelProperty(value = "监理单位")
private String monitorCompany;
/**
* 运维单位
*/
@ExcelProperty(value = "运维单位")
private String ioCompany;
/**
* 备注
*/
@ExcelProperty(value = "备注")
private String remark;
}

15
ruoyi-modules/ruoyi-demo/src/main/java/org/dromara/demo/domain/vo/StationSelectVo.java

@ -0,0 +1,15 @@
package org.dromara.demo.domain.vo;
import lombok.Data;
@Data
public class StationSelectVo {
private String value;
public StationSelectVo() {}
// 全参构造函数
public StationSelectVo(String value) {
this.value = value;
}
}

92
ruoyi-modules/ruoyi-demo/src/main/java/org/dromara/demo/domain/vo/WebSiteNetDataAnalysisVo.java

@ -0,0 +1,92 @@
package org.dromara.demo.domain.vo;
import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
import org.dromara.demo.domain.WebSiteNetDataAnalysis;
import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
import com.alibaba.excel.annotation.ExcelProperty;
import org.dromara.common.excel.annotation.ExcelDictFormat;
import org.dromara.common.excel.convert.ExcelDictConvert;
import io.github.linpeilie.annotations.AutoMapper;
import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;
import java.io.Serial;
import java.io.Serializable;
import java.util.Date;
/**
* 站点联网数据分析视图对象 web_site_net_data_analysis
*
* @author gejunhao
* @date 2025-07-08
*/
@Data
@ExcelIgnoreUnannotated
@AutoMapper(target = WebSiteNetDataAnalysis.class)
public class WebSiteNetDataAnalysisVo implements Serializable {
@Serial
private static final long serialVersionUID = 1L;
/**
* 主键ID
*/
@ExcelProperty(value = "主键ID")
private String id;
/**
* 站点名称
*/
@ExcelProperty(value = "站点名称")
private String station;
/**
* 所属区域
*/
@ExcelProperty(value = "所属区域")
private String area;
/**
* 当前状态运行中维护中离线
*/
@ExcelProperty(value = "当前状态", converter = ExcelDictConvert.class)
@ExcelDictFormat(readConverterExp = "如=:运行中、维护中、离线")
private String status;
/**
* 运维单位
*/
@ExcelProperty(value = "运维单位")
private String ioCompany;
/**
* 监理单位
*/
@ExcelProperty(value = "监理单位")
private String monitorCompany;
/**
* 本月应收数据金额
*/
@ExcelProperty(value = "本月应收数据金额")
private Long planIncome;
/**
* 本月实收数据金额
*/
@ExcelProperty(value = "本月实收数据金额")
private Long actualIncome;
/**
* 最新数据更新时间
*/
@ExcelProperty(value = "最新数据更新时间")
@JsonFormat(pattern = "yyyy-MM-dd")
@DateTimeFormat(pattern = "yyyy-MM-dd")
private Date lastTime;
}

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

Loading…
Cancel
Save