Browse Source

Accept Merge Request #5: (develop-wxl -> master)

Merge Request: 增加mq消息日志打印

Created By: @万新亮
Accepted By: @万新亮
URL: https://chuanghaikeji.coding.net/p/jingandashujupingtai/d/jayq_java_oldtravel/git/merge/5
万新亮 1 year ago
parent
commit
3fb3092162
100 changed files with 5984 additions and 1 deletions
  1. 38 0
      .gitignore
  2. 1 1
      README.md
  3. BIN
      doc/摄像头报警信息接收文档.assets/image-20220225142808501.png
  4. 226 0
      doc/摄像头报警信息接收文档.md
  5. 169 0
      pom.xml
  6. 13 0
      src/main/java/com/chuanghai/travelbigdata/disease/command/DiseaseCommandApplication.java
  7. 43 0
      src/main/java/com/chuanghai/travelbigdata/disease/command/config/ContactsConfig.java
  8. 52 0
      src/main/java/com/chuanghai/travelbigdata/disease/command/config/DateFormatConfig.java
  9. 23 0
      src/main/java/com/chuanghai/travelbigdata/disease/command/config/MybatisPlusPageConfig.java
  10. 11 0
      src/main/java/com/chuanghai/travelbigdata/disease/command/config/ScheduledConfig.java
  11. 21 0
      src/main/java/com/chuanghai/travelbigdata/disease/command/config/TencentCloudSMSConfig.java
  12. 32 0
      src/main/java/com/chuanghai/travelbigdata/disease/command/config/WebMvcConfig.java
  13. 20 0
      src/main/java/com/chuanghai/travelbigdata/disease/command/config/WechatPublicConfig.java
  14. 220 0
      src/main/java/com/chuanghai/travelbigdata/disease/command/controller/AdminInfoController.java
  15. 151 0
      src/main/java/com/chuanghai/travelbigdata/disease/command/controller/BroadcastController.java
  16. 64 0
      src/main/java/com/chuanghai/travelbigdata/disease/command/controller/ConsumptionCategoryStatisticsController.java
  17. 147 0
      src/main/java/com/chuanghai/travelbigdata/disease/command/controller/DetectionStatisticsController.java
  18. 120 0
      src/main/java/com/chuanghai/travelbigdata/disease/command/controller/DutyArrangementController.java
  19. 137 0
      src/main/java/com/chuanghai/travelbigdata/disease/command/controller/DutyArrangementOfUrgentController.java
  20. 54 0
      src/main/java/com/chuanghai/travelbigdata/disease/command/controller/EmergencyDisposalStatisticsController.java
  21. 143 0
      src/main/java/com/chuanghai/travelbigdata/disease/command/controller/EmergencySuppliesController.java
  22. 251 0
      src/main/java/com/chuanghai/travelbigdata/disease/command/controller/EmergencyTeamController.java
  23. 125 0
      src/main/java/com/chuanghai/travelbigdata/disease/command/controller/EventPlanningController.java
  24. 118 0
      src/main/java/com/chuanghai/travelbigdata/disease/command/controller/EventPlanningMonthSummaryController.java
  25. 141 0
      src/main/java/com/chuanghai/travelbigdata/disease/command/controller/FeverClinicOfHospitalStatisticsController.java
  26. 70 0
      src/main/java/com/chuanghai/travelbigdata/disease/command/controller/FileController.java
  27. 101 0
      src/main/java/com/chuanghai/travelbigdata/disease/command/controller/FireRatingController.java
  28. 149 0
      src/main/java/com/chuanghai/travelbigdata/disease/command/controller/IsolatedPlaceController.java
  29. 110 0
      src/main/java/com/chuanghai/travelbigdata/disease/command/controller/NewsFocusController.java
  30. 162 0
      src/main/java/com/chuanghai/travelbigdata/disease/command/controller/ParkingInfoController.java
  31. 150 0
      src/main/java/com/chuanghai/travelbigdata/disease/command/controller/PeopleAndGoodsDetectionStatisticsController.java
  32. 122 0
      src/main/java/com/chuanghai/travelbigdata/disease/command/controller/ScenicSpotMaxCapacitySettingController.java
  33. 132 0
      src/main/java/com/chuanghai/travelbigdata/disease/command/controller/ScenicSpotOverviewController.java
  34. 108 0
      src/main/java/com/chuanghai/travelbigdata/disease/command/controller/ThemeController.java
  35. 135 0
      src/main/java/com/chuanghai/travelbigdata/disease/command/controller/ToiletController.java
  36. 121 0
      src/main/java/com/chuanghai/travelbigdata/disease/command/controller/WarningOfSmokeRecordController.java
  37. 51 0
      src/main/java/com/chuanghai/travelbigdata/disease/command/controller/WechatPublicArticleController.java
  38. 26 0
      src/main/java/com/chuanghai/travelbigdata/disease/command/converter/Decimal2Serializer.java
  39. 38 0
      src/main/java/com/chuanghai/travelbigdata/disease/command/converter/StringTOLocalDateConverter.java
  40. 16 0
      src/main/java/com/chuanghai/travelbigdata/disease/command/dao/AdminInfoDao.java
  41. 9 0
      src/main/java/com/chuanghai/travelbigdata/disease/command/dao/BroadcastPlayRecordDao.java
  42. 17 0
      src/main/java/com/chuanghai/travelbigdata/disease/command/dao/ConsumptionCategoryStatisticsDao.java
  43. 19 0
      src/main/java/com/chuanghai/travelbigdata/disease/command/dao/DetectionStatisticsDao.java
  44. 22 0
      src/main/java/com/chuanghai/travelbigdata/disease/command/dao/DutyArrangementDao.java
  45. 25 0
      src/main/java/com/chuanghai/travelbigdata/disease/command/dao/DutyArrangementOfUrgentDao.java
  46. 17 0
      src/main/java/com/chuanghai/travelbigdata/disease/command/dao/EmergencyBroadcastDispatchingStatisticsDao.java
  47. 17 0
      src/main/java/com/chuanghai/travelbigdata/disease/command/dao/EmergencyDisposalStatisticsDao.java
  48. 26 0
      src/main/java/com/chuanghai/travelbigdata/disease/command/dao/EmergencySuppliesDao.java
  49. 19 0
      src/main/java/com/chuanghai/travelbigdata/disease/command/dao/EmergencyTeamDao.java
  50. 20 0
      src/main/java/com/chuanghai/travelbigdata/disease/command/dao/EmergencyTeamMemberDao.java
  51. 22 0
      src/main/java/com/chuanghai/travelbigdata/disease/command/dao/EventPlanningDao.java
  52. 17 0
      src/main/java/com/chuanghai/travelbigdata/disease/command/dao/EventPlanningMonthSummaryDao.java
  53. 17 0
      src/main/java/com/chuanghai/travelbigdata/disease/command/dao/FeverClinicOfHospitalStatisticsDao.java
  54. 17 0
      src/main/java/com/chuanghai/travelbigdata/disease/command/dao/FireRatingRecordDao.java
  55. 17 0
      src/main/java/com/chuanghai/travelbigdata/disease/command/dao/IsolatedPlaceDao.java
  56. 17 0
      src/main/java/com/chuanghai/travelbigdata/disease/command/dao/NewsFocusDao.java
  57. 17 0
      src/main/java/com/chuanghai/travelbigdata/disease/command/dao/ParkingDataForServer02Dao.java
  58. 21 0
      src/main/java/com/chuanghai/travelbigdata/disease/command/dao/ParkingInfoDao.java
  59. 17 0
      src/main/java/com/chuanghai/travelbigdata/disease/command/dao/PeopleAndGoodsDetectionStatisticsDao.java
  60. 20 0
      src/main/java/com/chuanghai/travelbigdata/disease/command/dao/ScenicSpotMaxCapacitySettingDao.java
  61. 17 0
      src/main/java/com/chuanghai/travelbigdata/disease/command/dao/ScenicSpotOverviewDao.java
  62. 17 0
      src/main/java/com/chuanghai/travelbigdata/disease/command/dao/ThemeDao.java
  63. 21 0
      src/main/java/com/chuanghai/travelbigdata/disease/command/dao/ToiletBaseDao.java
  64. 17 0
      src/main/java/com/chuanghai/travelbigdata/disease/command/dao/WarningOfSmokePushRecordDao.java
  65. 9 0
      src/main/java/com/chuanghai/travelbigdata/disease/command/dao/WarningOfSmokePushSettingDao.java
  66. 33 0
      src/main/java/com/chuanghai/travelbigdata/disease/command/dao/WarningOfSmokeRecordDao.java
  67. 17 0
      src/main/java/com/chuanghai/travelbigdata/disease/command/dao/WeatherRecordDao.java
  68. 16 0
      src/main/java/com/chuanghai/travelbigdata/disease/command/dao/WechatPublicArticleDao.java
  69. 26 0
      src/main/java/com/chuanghai/travelbigdata/disease/command/dto/BroadcastPlayRecordQueryDTO.java
  70. 101 0
      src/main/java/com/chuanghai/travelbigdata/disease/command/dto/CameraAlarmMessageDTO.java
  71. 17 0
      src/main/java/com/chuanghai/travelbigdata/disease/command/dto/EmergencyTeamMemberQueryDTO.java
  72. 27 0
      src/main/java/com/chuanghai/travelbigdata/disease/command/dto/EventPlanningQueryDTO.java
  73. 27 0
      src/main/java/com/chuanghai/travelbigdata/disease/command/dto/FeverClinicOfHospitalStatisticsSaveDTO.java
  74. 27 0
      src/main/java/com/chuanghai/travelbigdata/disease/command/dto/NewsFocusQueryDTO.java
  75. 64 0
      src/main/java/com/chuanghai/travelbigdata/disease/command/dto/ParkingRealTimeDataUpdateForServer02DTO.java
  76. 27 0
      src/main/java/com/chuanghai/travelbigdata/disease/command/dto/PeopleAndGoodsDetectionStatisticsSaveDTO.java
  77. 27 0
      src/main/java/com/chuanghai/travelbigdata/disease/command/dto/WarningOfSmokeQueryDTO.java
  78. 22 0
      src/main/java/com/chuanghai/travelbigdata/disease/command/dto/WarningRecordHandleDTO.java
  79. 51 0
      src/main/java/com/chuanghai/travelbigdata/disease/command/entity/AdminInfoEntity.java
  80. 71 0
      src/main/java/com/chuanghai/travelbigdata/disease/command/entity/BroadcastPlayRecordEntity.java
  81. 44 0
      src/main/java/com/chuanghai/travelbigdata/disease/command/entity/ConsumptionCategoryStatisticsEntity.java
  82. 63 0
      src/main/java/com/chuanghai/travelbigdata/disease/command/entity/DetectionStatisticsEntity.java
  83. 53 0
      src/main/java/com/chuanghai/travelbigdata/disease/command/entity/DutyArrangementEntity.java
  84. 61 0
      src/main/java/com/chuanghai/travelbigdata/disease/command/entity/DutyArrangementOfUrgentEntity.java
  85. 60 0
      src/main/java/com/chuanghai/travelbigdata/disease/command/entity/EmergencyBroadcastDispatchingStatisticsEntity.java
  86. 84 0
      src/main/java/com/chuanghai/travelbigdata/disease/command/entity/EmergencyDisposalStatisticsEntity.java
  87. 54 0
      src/main/java/com/chuanghai/travelbigdata/disease/command/entity/EmergencySuppliesEntity.java
  88. 52 0
      src/main/java/com/chuanghai/travelbigdata/disease/command/entity/EmergencyTeamEntity.java
  89. 72 0
      src/main/java/com/chuanghai/travelbigdata/disease/command/entity/EmergencyTeamMemberEntity.java
  90. 58 0
      src/main/java/com/chuanghai/travelbigdata/disease/command/entity/EventPlanningEntity.java
  91. 54 0
      src/main/java/com/chuanghai/travelbigdata/disease/command/entity/EventPlanningMonthSummaryEntity.java
  92. 61 0
      src/main/java/com/chuanghai/travelbigdata/disease/command/entity/FeverClinicOfHospitalStatisticsEntity.java
  93. 39 0
      src/main/java/com/chuanghai/travelbigdata/disease/command/entity/FireRatingRecordEntity.java
  94. 90 0
      src/main/java/com/chuanghai/travelbigdata/disease/command/entity/IsolatedPlaceEntity.java
  95. 65 0
      src/main/java/com/chuanghai/travelbigdata/disease/command/entity/NewsFocusEntity.java
  96. 48 0
      src/main/java/com/chuanghai/travelbigdata/disease/command/entity/ParkingDataForServer02Entity.java
  97. 73 0
      src/main/java/com/chuanghai/travelbigdata/disease/command/entity/ParkingInfoEntity.java
  98. 87 0
      src/main/java/com/chuanghai/travelbigdata/disease/command/entity/PeopleAndGoodsDetectionStatisticsEntity.java
  99. 48 0
      src/main/java/com/chuanghai/travelbigdata/disease/command/entity/ScenicSpotMaxCapacitySettingEntity.java
  100. 0 0
      src/main/java/com/chuanghai/travelbigdata/disease/command/entity/ScenicSpotOverviewEntity.java

+ 38 - 0
.gitignore

@@ -0,0 +1,38 @@
+# Java
+*.class
+*.jar
+*.war
+*.ear
+
+# Eclipse
+.project
+.classpath
+.settings
+
+# Idea
+.idea
+*.iml
+*.iws
+*.ipr
+
+# OS
+Thumbs.db
+.DS_Store
+
+# Gradle
+.gradle
+!gradle-wrapper.jar
+
+# Maven
+target
+
+# Build
+out
+build
+bin
+
+# Other
+*.log
+*.swp
+*.bak
+

+ 1 - 1
README.md

@@ -1 +1 @@
-#jayq_java_oldtravel
+#jayq_java_oldtravel

BIN
doc/摄像头报警信息接收文档.assets/image-20220225142808501.png


+ 226 - 0
doc/摄像头报警信息接收文档.md

@@ -0,0 +1,226 @@
+# 摄像头报警信息接收
+
+## 前言
+
+触发报警信息后,摄像头会把相应的报警信息通过`camera_alarm`路由键推送到`rabbitmq`的`amq.topic`交换机,`amq.topic`交换机和`camera_alarm`队列通过`camera_alarm`路由键绑定,所以最后报警信息会被推送至`camera_alarm`队列,消费者(后台服务)只需要监听该队列即可。
+
+报警信息的具体内容如下:
+
+```json
+{
+    'id': 200,
+    'alarm_id': 100,
+    'status':  0,
+    'device_id':  1,
+    'device_name':  '森林防⽕',
+    'device_type':  0,
+    'device_manufacturer':  1,
+    'image':  '/record/hk_alarm/20201119/image_1_20201119131301.jpg',
+    'video':  '/record/hk_alarm/20201119/video_1_20201119131301.mp4',
+    'rule_id':  0,
+    'event_channel':  1,
+    'fire_max_temperature':  '0.00',
+    'fire_target_distance':  0,
+    'event_type':  18833,
+    'event_type_desc':  '⽕点检测报警.',
+    'event_type_ext':  1,
+    'event_type_ext_desc':  '烟雾检测报警.',
+    'created_at':  '2020-11-19 14:09:07',
+    'updated_at':  '2020-11-19 14:09:07'
+}
+```
+
+![image-20220225142808501](./摄像头报警信息接收文档.assets/image-20220225142808501.png)
+
+## 环境
+
+### 测试环境
+
+- **rabbitmq host & ip** 112.74.89.58:43504(端口由于使用映射工具映射,可能随时会发生改变)
+- **rabbitmq username & password** guest/guest
+- **rabbitmq virtual-host**/
+- **rabbitmq management**http://92cwif.natappfree.cc(url由于使用映射工具映射,可能随时会发生改变)
+
+### 正式环境
+
+- **rabbitmq host & ip** 6.200.0.4:5672
+- **rabbitmq username & password** third333/third333@qwerv
+- **rabbitmq virtual-host**/
+- **rabbitmq management**暂无
+
+> 正式环境只能在靖安旅游集散中心内网环境下访问。
+
+## 开发
+
+> 本例使用SpringBoot集成RabbitMQ进行测试。
+
+### pom
+
+```xml
+<dependency>
+    <groupId>org.springframework.boot</groupId>
+    <artifactId>spring-boot-starter-amqp</artifactId>
+</dependency>
+```
+
+### yml
+
+```yaml
+spring:
+  rabbitmq:
+    host: 112.74.89.58
+    port: 43504
+    virtual-host: /
+    # 消息发送到消息队列服务器确认
+    publisher-confirms: true
+    # 消息成功发送到队列确认
+    publisher-returns: true
+    # 和publisher-returns搭配使用,只要消息抵达队列,以异步发送优先回调publisher-return
+    template:
+      mandatory: true
+    # 手动ack
+    listener:
+      simple:
+        acknowledge-mode: manual
+```
+
+### main
+
+```java
+@EnableRabbit
+@SpringBootApplication
+public class CameraAlarmApplication {
+
+    public static void main(String[] args) {
+        SpringApplication.run(CameraAlarmApplication.class, args);
+    }
+}
+```
+
+### CameraAlarmMessage.java
+
+> 根据发生的内容格式封装CameraAlarmMessage
+
+```java
+@Data
+public class CameraAlarmMessage {
+
+    /**
+     * 99:设备列表、1:结束事件、0:新增事件
+     * (只需要关注status为0的事件)
+     */
+    private Integer status;
+    /**
+     * status为0,1时会有该字段
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private LocalDateTime created_at;
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private LocalDateTime updated_at;
+    /**
+     * status为99时会有该字段
+     */
+    private String data_count;
+    /**
+     * status为99时会有该字段
+     */
+    private Object[] data;
+    /**
+     * status为0,1时会有该字段
+     */
+    private Long id;
+    /**
+     * 设备id
+     * status为0,1时会有该字段
+     */
+    private Long device_id;
+
+
+    // == status为0时会有以下字段 ==
+
+    /**
+     * 设备品牌 1:海康、2:大华
+     */
+    private Integer device_manufacturer;
+    private Long alarm_id;
+    /**
+     * 设备名称
+     */
+    private String device_name;
+    private Integer device_type;
+    /**
+     * 图片
+     */
+    private String image;
+    /**
+     * 视频
+     */
+    private String video;
+    private Integer rule_id;
+    private Integer event_channel;
+    private String fire_max_temperature;
+    private String fire_target_distance;
+    /**
+     * 事件类型
+     * 4354:⾏为分析报警信息(海康)、18833:⽕点检测报警(海康)、
+     * 4391:报告报警上传,注:报警柱(海康)、8591:视频移动侦测事件(大华)、
+     * 8561:设备请求对⽅发起对讲事件,报警柱(大华)
+     */
+    private Integer event_type;
+    private String event_type_desc;
+    /**
+     * 事件类型
+     */
+    private String event_type_ext;
+    /**
+     * 事件类型描述
+     */
+    private String event_type_ext_desc;
+
+}
+```
+
+### listener
+
+```java
+@Component
+@RabbitListener(queues = "camera_alarm") // 监听 camera_alarm 队列
+public class CameraAlarmListener {
+
+    // 本例使用ObjectMapper把json格式的数据转换成实体类
+    public static final ObjectMapper mapper = new ObjectMapper();
+
+    static {
+        JavaTimeModule javaTimeModule = new JavaTimeModule();
+        // LocalDateTime 日期支持
+        javaTimeModule.addDeserializer(LocalDateTime.class,new LocalDateTimeDeserializer(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));
+        mapper.registerModule(javaTimeModule);
+        mapper.setTimeZone(TimeZone.getDefault());
+    }
+
+    @RabbitHandler
+    public void listener(Object data, Channel channel, Message message) throws IOException {
+        try {
+            // 警告信息
+            String body = new String(message.getBody(), Charset.forName("utf-8"));
+            // json数据转换成实体类
+            CameraAlarmMessage cameraAlarmMessage = mapper.readValue(body, CameraAlarmMessage.class);
+            // 根据图例,status为0时表示新增事件
+            if (0 == cameraAlarmMessage.getStatus().intValue()) {
+                // 打印事件信息
+                System.out.println("==============");
+                System.out.println(cameraAlarmMessage.toString());
+                System.out.println("==============");
+                // TODO 具体业务操作
+            }
+
+            // 手动 ack
+            channel.basicAck(message.getMessageProperties().getDeliveryTag(),false);
+        } catch (Exception e) {
+            // 发生异常直接 reject
+            channel.basicReject(message.getMessageProperties().getDeliveryTag(),true);
+        }
+    }
+}
+```
+

+ 169 - 0
pom.xml

@@ -0,0 +1,169 @@
+<?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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+    <parent>
+        <groupId>org.springframework.boot</groupId>
+        <artifactId>spring-boot-starter-parent</artifactId>
+        <version>2.6.2</version>
+        <relativePath/> <!-- lookup parent from repository -->
+    </parent>
+    <groupId>com.chuanghai.travelbigdata</groupId>
+    <artifactId>disease-command</artifactId>
+    <version>0.0.1-SNAPSHOT</version>
+    <name>disease-command</name>
+    <description>旅游大数据疾控平台</description>
+    <properties>
+        <java.version>1.8</java.version>
+    </properties>
+    <dependencies>
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-web</artifactId>
+        </dependency>
+
+        <!-- validator -->
+        <dependency>
+            <groupId>org.hibernate</groupId>
+            <artifactId>hibernate-validator</artifactId>
+            <version>6.1.5.Final</version>
+        </dependency>
+
+        <dependency>
+            <groupId>mysql</groupId>
+            <artifactId>mysql-connector-java</artifactId>
+            <scope>runtime</scope>
+        </dependency>
+
+        <dependency>
+            <groupId>com.baomidou</groupId>
+            <artifactId>mybatis-plus-boot-starter</artifactId>
+            <version>3.3.1</version>
+        </dependency>
+
+        <!-- excel操作 -->
+        <dependency>
+            <groupId>com.alibaba</groupId>
+            <artifactId>easyexcel</artifactId>
+            <version>2.2.10</version>
+        </dependency>
+
+        <!-- 密码加密 -->
+        <dependency>
+            <groupId>org.springframework.security</groupId>
+            <artifactId>spring-security-crypto</artifactId>
+            <version>5.4.2</version>
+        </dependency>
+
+        <!-- jwt -->
+        <dependency>
+            <groupId>io.jsonwebtoken</groupId>
+            <artifactId>jjwt-api</artifactId>
+            <version>0.10.7</version>
+        </dependency>
+        <dependency>
+            <groupId>io.jsonwebtoken</groupId>
+            <artifactId>jjwt-impl</artifactId>
+            <version>0.10.7</version>
+            <scope>runtime</scope>
+        </dependency>
+        <dependency>
+            <groupId>io.jsonwebtoken</groupId>
+            <artifactId>jjwt-jackson</artifactId>
+            <version>0.10.7</version>
+            <scope>runtime</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.assertj</groupId>
+            <artifactId>assertj-core</artifactId>
+            <version>3.16.1</version>
+            <scope>compile</scope>
+        </dependency>
+
+        <dependency>
+            <groupId>org.projectlombok</groupId>
+            <artifactId>lombok</artifactId>
+            <optional>true</optional>
+        </dependency>
+
+        <!-- springboot 配置文件处理器 -->
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-configuration-processor</artifactId>
+            <optional>true</optional>
+        </dependency>
+
+        <!-- hutool cache -->
+        <dependency>
+            <groupId>cn.hutool</groupId>
+            <artifactId>hutool-cache</artifactId>
+            <version>5.3.3</version>
+        </dependency>
+
+        <!-- rabbitmq -->
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-amqp</artifactId>
+        </dependency>
+
+        <!-- 腾讯云sdk -->
+        <dependency>
+            <groupId>com.tencentcloudapi</groupId>
+            <artifactId>tencentcloud-sdk-java</artifactId>
+            <version>3.1.270</version>
+        </dependency>
+
+        <!-- RestTemplate解析gzip添加 -->
+        <dependency>
+            <groupId>org.apache.httpcomponents</groupId>
+            <artifactId>httpclient</artifactId>
+        </dependency>
+
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-test</artifactId>
+            <scope>test</scope>
+        </dependency>
+    </dependencies>
+
+    <build>
+        <plugins>
+            <plugin>
+                <groupId>org.springframework.boot</groupId>
+                <artifactId>spring-boot-maven-plugin</artifactId>
+                <configuration>
+                    <excludes>
+                        <exclude>
+                            <groupId>org.projectlombok</groupId>
+                            <artifactId>lombok</artifactId>
+                        </exclude>
+                    </excludes>
+                </configuration>
+            </plugin>
+
+            <!-- smart doc -->
+            <plugin>
+                <groupId>com.github.shalousun</groupId>
+                <artifactId>smart-doc-maven-plugin</artifactId>
+                <version>2.2.2</version>
+                <configuration>
+                    <!--指定生成文档的使用的配置文件,配置文件放在自己的项目中-->
+                    <configFile>./src/main/resources/smart-doc.json</configFile>
+                    <!--指定项目名称-->
+                    <projectName>靖安智慧旅游疾控中心</projectName>
+                </configuration>
+                <executions>
+                    <execution>
+                        <!--如果不需要在执行编译时启动smart-doc,则将phase注释掉-->
+                        <phase>compile</phase>
+                        <goals>
+                            <!--smart-doc提供了html、openapi、markdown等goal,可按需配置-->
+                            <goal>html</goal>
+                        </goals>
+                    </execution>
+                </executions>
+            </plugin>
+        </plugins>
+    </build>
+
+</project>

+ 13 - 0
src/main/java/com/chuanghai/travelbigdata/disease/command/DiseaseCommandApplication.java

@@ -0,0 +1,13 @@
+package com.chuanghai.travelbigdata.disease.command;
+
+import org.springframework.boot.SpringApplication;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+
+@SpringBootApplication
+public class DiseaseCommandApplication {
+
+    public static void main(String[] args) {
+        SpringApplication.run(DiseaseCommandApplication.class, args);
+    }
+
+}

+ 43 - 0
src/main/java/com/chuanghai/travelbigdata/disease/command/config/ContactsConfig.java

@@ -0,0 +1,43 @@
+package com.chuanghai.travelbigdata.disease.command.config;
+
+import lombok.Data;
+import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.context.annotation.Configuration;
+
+import java.util.List;
+
+/**
+ * @Author: codingliang
+ * @Description: 联系人配置
+ * @Date: 2022-03-10 16:44
+ * @Version: V1.0
+ **/
+@Data
+@Configuration
+@ConfigurationProperties(prefix = "contacts")
+public class ContactsConfig {
+
+    /**
+     * 联系人信息列表
+     */
+    private List<ContactsInfo> infos;
+
+    /**
+     * 联系人信息
+     */
+    @Data
+    public static class ContactsInfo {
+        /**
+         * 联系人姓名
+         */
+        private String name;
+        /**
+         * 联系人电话
+         */
+        private String phone;
+        /**
+         * 联系人单位
+         */
+        private String organization;
+    }
+}

+ 52 - 0
src/main/java/com/chuanghai/travelbigdata/disease/command/config/DateFormatConfig.java

@@ -0,0 +1,52 @@
+package com.chuanghai.travelbigdata.disease.command.config;
+
+import com.fasterxml.jackson.databind.SerializationFeature;
+import com.fasterxml.jackson.datatype.jsr310.ser.LocalDateTimeSerializer;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.boot.autoconfigure.jackson.Jackson2ObjectMapperBuilderCustomizer;
+import org.springframework.boot.jackson.JsonComponent;
+import org.springframework.context.annotation.Bean;
+
+import java.text.DateFormat;
+import java.text.SimpleDateFormat;
+import java.time.LocalDateTime;
+import java.time.format.DateTimeFormatter;
+import java.util.TimeZone;
+
+/**
+ * @Author: codingliang
+ * @Description: 日期格式化配置 (下次禁止使用)
+ * @Date: 2022-01-13 10:09
+ * @Version: V1.0
+ **/
+@JsonComponent
+public class DateFormatConfig {
+
+    @Value("${my.global.date-format:yyyy-MM-dd HH:mm:ss}")
+    private String pattern;
+
+    // date类型全局时间格式化
+    @Bean
+    public Jackson2ObjectMapperBuilderCustomizer jackson2ObjectMapperBuilder() {
+        return builder -> {
+            TimeZone tz = TimeZone.getTimeZone("UTC");
+            DateFormat df = new SimpleDateFormat(pattern);
+            df.setTimeZone(tz);
+            builder.failOnEmptyBeans(false)
+                    .failOnUnknownProperties(false)
+                    .featuresToDisable(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS)
+                    .dateFormat(df);
+        };
+    }
+
+    // LocalDate类型全局时间格式化
+    @Bean
+    public LocalDateTimeSerializer localDateTimeDeserializer() {
+        return new LocalDateTimeSerializer(DateTimeFormatter.ofPattern(pattern));
+    }
+
+    @Bean
+    public Jackson2ObjectMapperBuilderCustomizer jackson2ObjectMapperBuilderCustomizer() {
+        return builder -> builder.serializerByType(LocalDateTime.class, localDateTimeDeserializer());
+    }
+}

+ 23 - 0
src/main/java/com/chuanghai/travelbigdata/disease/command/config/MybatisPlusPageConfig.java

@@ -0,0 +1,23 @@
+package com.chuanghai.travelbigdata.disease.command.config;
+
+import com.baomidou.mybatisplus.extension.plugins.PaginationInterceptor;
+import com.baomidou.mybatisplus.extension.plugins.pagination.optimize.JsqlParserCountOptimize;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+
+/**
+ * @Author: codingliang
+ * @Description: mp.mybatis 分页配置
+ * @Date: 2021-11-22 9:15
+ * @Version: V1.0
+ **/
+@Configuration
+public class MybatisPlusPageConfig {
+
+    @Bean
+    public PaginationInterceptor paginationInterceptor() {
+        PaginationInterceptor paginationInterceptor = new PaginationInterceptor();
+        paginationInterceptor.setCountSqlParser(new JsqlParserCountOptimize(true));
+        return paginationInterceptor;
+    }
+}

+ 11 - 0
src/main/java/com/chuanghai/travelbigdata/disease/command/config/ScheduledConfig.java

@@ -0,0 +1,11 @@
+package com.chuanghai.travelbigdata.disease.command.config;
+
+import org.springframework.context.annotation.Configuration;
+import org.springframework.scheduling.annotation.EnableAsync;
+import org.springframework.scheduling.annotation.EnableScheduling;
+
+@EnableAsync
+@EnableScheduling
+@Configuration
+public class ScheduledConfig {
+}

+ 21 - 0
src/main/java/com/chuanghai/travelbigdata/disease/command/config/TencentCloudSMSConfig.java

@@ -0,0 +1,21 @@
+package com.chuanghai.travelbigdata.disease.command.config;
+
+import lombok.Data;
+import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.context.annotation.Configuration;
+
+/**
+ * @Author: codingliang
+ * @Description: 腾讯云短信配置
+ * @Date: 2022-03-10 16:42
+ * @Version: V1.0
+ **/
+@Data
+@Configuration
+@ConfigurationProperties(prefix = "tencent-cloud.sms")
+public class TencentCloudSMSConfig {
+
+    private String secretId;
+    private String secretKey;
+    private String sdkAppId;
+}

+ 32 - 0
src/main/java/com/chuanghai/travelbigdata/disease/command/config/WebMvcConfig.java

@@ -0,0 +1,32 @@
+package com.chuanghai.travelbigdata.disease.command.config;
+
+
+import com.chuanghai.travelbigdata.disease.command.interceptor.AdminTokenInterceptor;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
+import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
+
+import javax.annotation.Resource;
+
+/**
+ * @Author: codingliang
+ * @Description: webmvc配置
+ * @Date: 2020-06-03 14:33
+ * @Version: V1.0
+ **/
+@Configuration
+public class WebMvcConfig implements WebMvcConfigurer {
+
+    @Resource
+    private AdminTokenInterceptor adminTokenInterceptor;
+
+    // 添加拦截器
+    @Override
+    public void addInterceptors(InterceptorRegistry registry) {
+
+        registry.addInterceptor(adminTokenInterceptor)
+                .addPathPatterns("/**");
+
+        WebMvcConfigurer.super.addInterceptors(registry);
+    }
+}

+ 20 - 0
src/main/java/com/chuanghai/travelbigdata/disease/command/config/WechatPublicConfig.java

@@ -0,0 +1,20 @@
+package com.chuanghai.travelbigdata.disease.command.config;
+
+import lombok.Data;
+import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.context.annotation.Configuration;
+
+/**
+ * @Author: codingliang
+ * @Description: 微信公众号配置
+ * @Date: 2022-03-08 11:20
+ * @Version: V1.0
+ **/
+@Data
+@Configuration
+@ConfigurationProperties(prefix = "wechat.public")
+public class WechatPublicConfig {
+
+    private String appId;
+    private String secret;
+}

+ 220 - 0
src/main/java/com/chuanghai/travelbigdata/disease/command/controller/AdminInfoController.java

@@ -0,0 +1,220 @@
+package com.chuanghai.travelbigdata.disease.command.controller;
+
+import com.chuanghai.travelbigdata.disease.command.entity.AdminInfoEntity;
+import com.chuanghai.travelbigdata.disease.command.exception.BizCodeEnume;
+import com.chuanghai.travelbigdata.disease.command.exception.RRException;
+import com.chuanghai.travelbigdata.disease.command.service.AdminInfoService;
+import com.chuanghai.travelbigdata.disease.command.utils.CommonResult;
+import com.chuanghai.travelbigdata.disease.command.utils.PageParam;
+import com.chuanghai.travelbigdata.disease.command.utils.PageUtils;
+import com.chuanghai.travelbigdata.disease.command.utils.ParamCheck;
+import com.chuanghai.travelbigdata.disease.command.vo.UserTokenVO;
+import org.assertj.core.util.Arrays;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
+import org.springframework.util.StringUtils;
+import org.springframework.validation.BindingResult;
+import org.springframework.web.bind.annotation.DeleteMapping;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.PutMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestHeader;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.RestController;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.validation.Valid;
+import java.io.IOException;
+import java.nio.charset.StandardCharsets;
+import java.nio.file.Files;
+import java.nio.file.Paths;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.concurrent.atomic.AtomicInteger;
+import java.util.concurrent.atomic.LongAdder;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+import java.util.stream.IntStream;
+import java.util.stream.Stream;
+
+/**
+ * 管理员模块
+ * @author codingliang
+ * @email codingliang@gmail.com
+ * @date 2021-01-24 10:05:20
+ */
+@RestController
+@RequestMapping("adminInfo")
+public class AdminInfoController {
+
+    @Autowired
+    private AdminInfoService adminInfoService;
+
+    /**
+     * 管理员登录
+     * @param userName 用户名
+     * @param password 密码
+     * @apiNote 测试用户名密码:admin/123456
+     */
+    @PostMapping("login")
+    public CommonResult<UserTokenVO> login(@RequestParam String userName,
+                                           @RequestParam String password) {
+        UserTokenVO tokenVO =  adminInfoService.login(userName, password);
+        return CommonResult.ok().setResult(tokenVO);
+    }
+
+    /**
+     * 管理员列表
+     */
+    @GetMapping("/list")
+    public CommonResult<PageUtils<AdminInfoEntity>> list(PageParam pageParam){
+        PageUtils page = adminInfoService.queryPage(pageParam);
+        return CommonResult.ok().setResult(page);
+    }
+
+    /**
+     * 新增管理员
+     * @param adminToken 管理员token
+     * @apiNote 只有超级管理员才可以新增管理员
+     */
+    @PostMapping("/save")
+    public CommonResult<String> save(@RequestHeader("Admin-Token") String adminToken,
+                                     @RequestBody @Valid AdminInfoEntity adminInfo,
+                                     BindingResult result,
+                                     HttpServletRequest request){
+        ParamCheck.checkBean(result);
+
+        checkAuth(request);
+
+        String password = adminInfo.getPassword();
+        if (!StringUtils.hasText(password)) {
+            throw new RRException(BizCodeEnume.PARAMETER_ERROR, "密码不能为空");
+        }
+
+        BCryptPasswordEncoder passwordEncoder = new BCryptPasswordEncoder();
+        adminInfo.setPassword(passwordEncoder.encode(password));
+        adminInfoService.save(adminInfo);
+        return CommonResult.ok();
+    }
+
+    /**
+     * 修改管理员
+     * @param adminToken 管理员token
+     * @apiNote 只有超级管理员才可以修改管理员
+     */
+    @PutMapping("/update")
+    public CommonResult<String> update(@RequestHeader("Admin-Token") String adminToken,
+                                       @RequestBody @Valid AdminInfoEntity adminInfo,
+                                       BindingResult result,
+                                       HttpServletRequest request){
+        ParamCheck.checkBean(result);
+
+        checkAuth(request);
+
+        adminInfo.setPassword(null);
+		adminInfoService.updateById(adminInfo);
+        return CommonResult.ok();
+    }
+
+    /**
+     * 删除管理员
+     * @param adminToken 管理员token
+     * @param id 管理员id
+     * @apiNote 只有超级管理员才可以删除管理员
+     */
+    @DeleteMapping("/delete/{id}")
+    public CommonResult<String> delete(@RequestHeader("Admin-Token") String adminToken,
+                               @PathVariable("id") Long id,
+                               HttpServletRequest request){
+        Long userId = Long.valueOf(String.valueOf(request.getAttribute("currentUserId")));
+        if (id.longValue() == userId.longValue()) {
+            throw new RRException(BizCodeEnume.PARAMETER_ERROR, "非法操作");
+        }
+
+        checkAuth(request);
+
+        adminInfoService.removeById(id);
+        return CommonResult.ok();
+    }
+
+    private void checkAuth(HttpServletRequest request) {
+        Long userId = Long.valueOf(String.valueOf(request.getAttribute("currentUserId")));
+        AdminInfoEntity admin = adminInfoService.getById(userId);
+        // adminType 为 0,表示为超级管理员
+        if (admin == null || !"0".equals(admin.getAdminType())) {
+            throw new RRException(BizCodeEnume.PERMISSION_DENIED);
+        }
+    }
+
+    // 1-10791
+    public static void main(String[] args) throws IOException {
+        String fileName = "E:\\newworkspace\\wangxinan-project\\文档\\wangxinan\\开发文档\\10.193.5.25.log";
+        AtomicInteger i = new AtomicInteger(1);
+        long startTime = System.currentTimeMillis();
+        Stream<String> files = Files.lines(Paths.get(fileName), StandardCharsets.ISO_8859_1);
+        files.forEachOrdered(line -> {
+            try {
+                System.out.println("===================");
+                System.out.println("【" + i.getAndIncrement() + "】" + line);
+//                List<String> ips = getInfos(line);
+//                System.out.println(String.join(",", ips));
+                System.out.println("===================");
+            } catch (Exception e) {
+                System.out.println("发生错误" + e.getMessage());
+                System.out.println("===================");
+            }
+        });
+        System.out.println("处理完成:花费" + (System.currentTimeMillis() - startTime) + "毫秒");
+    }
+
+    public static List<String> getInfos(String content){
+        // From 1.15.82.77:55945(xethernet1/0) to 42.123.72.136:39474(-), threat name: syn-flood, threat type: Dos, threat subtype: DDoS Flood, App/Protocol: IPv4/TCP, action: DROP, defender: AD, severity: Medium, zone untrust: TCP SYN flood attack, occur
+        String regEx1 = "From\\s*(.+?):.+to\\s*(.+?):.+?threat\\s*name\\s*:\\s*(.+?),\\s*threat\\s*type\\s*:\\s*(.+?),\\s*threat\\s*subtype\\s*:\\s*(.+?),.+?severity\\s*:\\s*(.+?),";
+        String regEx2 = "alertlevel:(.+?)\\s\\sevent_type:(.+?)\\s.+?dst_ip:(.+?)\\s.+?src_ip:(.+?)\\s";
+        List<String> ips = new ArrayList<>();
+        Pattern p = Pattern.compile(regEx2);
+        Matcher m = p.matcher(content);
+        if (m.find()) {
+            System.out.println(m.group());
+            ips.add(m.group(1) + "," + m.group(2) + "," + m.group(3) + "," + m.group(4));
+        } else {
+            System.out.println("【未匹配】" + content);
+        }
+        return ips;
+
+        /**
+         *    限定符
+         *      d? d可以出现0次或者一次      ? 0次或者1次
+         *      ab*c a和c之间可以出现0个或者多个b     * 0次或者多次
+         *      ab+c a和c之间要出现1个以上的b      + 一次或一次以上
+         *      ab{6}c a和b之间要出现6个的b
+         *      ab{2, 6}c a和b之间要出现2-6之间个的b
+         *
+         *    或
+         *      a cat
+         *      a dog
+         *      a bird
+         *
+         *      a (cat | dog) 可以匹配到上面的 a cat 和 a dog
+         *
+         *    字符类
+         *
+         *    元字符
+         *      \d 代表数字字符
+         *      \w 代表单词字符(也就是所有的英文字符、数字、下划线)
+         *      \s 代表空白符(包含tab和换行符)
+         *      \b 代表一个单词的开头或结尾
+         *      \D 代表非数字字符
+         *      \W 代表非单词字符
+         *      \S 代表非空白字符
+         *      .  代表任意字符(但不包含换行符)
+         *      ^  匹配行首  ^a 匹配以a开始的
+         *      $  匹配行尾  $a 匹配以a结尾的
+         *
+         *      \b((25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(25[0-5]|2[0-4]\d|[01]?\d\d?)\b
+         */
+    }
+}

+ 151 - 0
src/main/java/com/chuanghai/travelbigdata/disease/command/controller/BroadcastController.java

@@ -0,0 +1,151 @@
+package com.chuanghai.travelbigdata.disease.command.controller;
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.chuanghai.travelbigdata.disease.command.dto.BroadcastPlayRecordQueryDTO;
+import com.chuanghai.travelbigdata.disease.command.entity.BroadcastPlayRecordEntity;
+import com.chuanghai.travelbigdata.disease.command.entity.EmergencyBroadcastDispatchingStatisticsEntity;
+import com.chuanghai.travelbigdata.disease.command.exception.BizCodeEnume;
+import com.chuanghai.travelbigdata.disease.command.exception.RRException;
+import com.chuanghai.travelbigdata.disease.command.service.BroadcastPlayRecordService;
+import com.chuanghai.travelbigdata.disease.command.service.EmergencyBroadcastDispatchingStatisticsService;
+import com.chuanghai.travelbigdata.disease.command.utils.CommonResult;
+import com.chuanghai.travelbigdata.disease.command.utils.PageParam;
+import com.chuanghai.travelbigdata.disease.command.utils.PageUtils;
+import com.chuanghai.travelbigdata.disease.command.utils.ParamCheck;
+import com.chuanghai.travelbigdata.disease.command.vo.BroadcastPlayRecordVO;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.validation.BindingResult;
+import org.springframework.web.bind.annotation.DeleteMapping;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.PutMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import javax.validation.Valid;
+import java.util.Arrays;
+
+/**
+ * 广播模块
+ *
+ * @author codingliang
+ * @email codingliang@gmail.com
+ * @date 2022-03-09 15:37:45
+ */
+@RestController
+@RequestMapping("broadcast")
+public class BroadcastController {
+
+    @Autowired
+    private EmergencyBroadcastDispatchingStatisticsService emergencyBroadcastDispatchingStatisticsService;
+    @Autowired
+    private BroadcastPlayRecordService broadcastPlayRecordService;
+
+    /**
+     * 应急广播调度统计信息
+     */
+    @GetMapping("statistics/info")
+    public CommonResult<EmergencyBroadcastDispatchingStatisticsEntity> info(){
+		EmergencyBroadcastDispatchingStatisticsEntity emergencyBroadcastDispatchingStatistics = emergencyBroadcastDispatchingStatisticsService.getOne(null);
+
+        return CommonResult.ok().setResult(emergencyBroadcastDispatchingStatistics);
+    }
+
+    /**
+     * 应急广播调度统计信息修改
+     */
+    @PutMapping("statistics/update")
+    public CommonResult<String> updateInfo(@Valid @RequestBody EmergencyBroadcastDispatchingStatisticsEntity emergencyBroadcastDispatchingStatistics,
+                                       BindingResult result){
+        ParamCheck.checkBean(result);
+
+        if (emergencyBroadcastDispatchingStatistics.getId() == null) {
+            throw new RRException(BizCodeEnume.PARAMETER_ERROR, "id不能为空");
+        }
+
+		emergencyBroadcastDispatchingStatisticsService.updateById(emergencyBroadcastDispatchingStatistics);
+
+        return CommonResult.ok();
+    }
+
+    /**
+     * 新增播发信息
+     * @param record
+     * @param result
+     * @return
+     */
+    @PostMapping("record/add")
+    public CommonResult<String> addRecord(@Valid @RequestBody BroadcastPlayRecordEntity record, BindingResult result) {
+        ParamCheck.checkBean(result);
+
+        broadcastPlayRecordService.saveRecord(record);
+
+        return CommonResult.ok();
+    }
+
+    /**
+     * 修改播发信息
+     * @param record
+     * @param result
+     * @return
+     */
+    @PostMapping("record/update")
+    public CommonResult<String> updateRecord(@Valid @RequestBody BroadcastPlayRecordEntity record, BindingResult result) {
+        if (record.getId() == null) {
+            throw new RRException(BizCodeEnume.PARAMETER_ERROR, "id不能为空");
+        }
+
+        ParamCheck.checkBean(result);
+
+        broadcastPlayRecordService.updateRecordById(record);
+
+        return CommonResult.ok();
+    }
+
+    /**
+     * 播发记录
+     * @param pageParam 分页参数
+     * @param queryDTO 查询参数
+     * @return
+     */
+    @GetMapping("record/page")
+    public CommonResult<BroadcastPlayRecordVO> recordPage(PageParam pageParam, BroadcastPlayRecordQueryDTO queryDTO) {
+        PageUtils page = broadcastPlayRecordService.queryPage(pageParam, queryDTO);
+        EmergencyBroadcastDispatchingStatisticsEntity statistics = emergencyBroadcastDispatchingStatisticsService.getOne(null);
+
+        BroadcastPlayRecordVO vo = new BroadcastPlayRecordVO();
+        vo.setRecordPage(page);
+        vo.setBroadcastDuration(statistics.getBroadcastDuration());
+        vo.setNumOfBroadcasts(statistics.getNumOfBroadcasts());
+        return CommonResult.ok().setResult(vo);
+    }
+
+    /**
+     * 删除播发记录
+     * @param ids 播发记录id集合
+     * @return
+     */
+    @DeleteMapping("record/delete")
+    public CommonResult<String> deleteRecord(@RequestBody Long[] ids){
+        broadcastPlayRecordService.removeByIds(Arrays.asList(ids));
+
+        return CommonResult.ok();
+    }
+
+    /**
+     * 播发详情
+     * @param recordId
+     * @return
+     */
+    @GetMapping("record/info/{recordId}")
+    public CommonResult<BroadcastPlayRecordEntity> recordInfo(@PathVariable("recordId") Long recordId) {
+        BroadcastPlayRecordEntity record = broadcastPlayRecordService.getRecordById(recordId);
+        if (record == null) {
+            throw new RRException(BizCodeEnume.DATA_NOT_EXIST, "数据不存在");
+        }
+        return CommonResult.ok().setResult(record);
+    }
+}

+ 64 - 0
src/main/java/com/chuanghai/travelbigdata/disease/command/controller/ConsumptionCategoryStatisticsController.java

@@ -0,0 +1,64 @@
+package com.chuanghai.travelbigdata.disease.command.controller;
+
+import com.chuanghai.travelbigdata.disease.command.entity.ConsumptionCategoryStatisticsEntity;
+import com.chuanghai.travelbigdata.disease.command.service.ConsumptionCategoryStatisticsService;
+import com.chuanghai.travelbigdata.disease.command.utils.CommonResult;
+import com.chuanghai.travelbigdata.disease.command.utils.PageUtils;
+import com.chuanghai.travelbigdata.disease.command.utils.ParamCheck;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.util.StringUtils;
+import org.springframework.validation.BindingResult;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PutMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import javax.validation.Valid;
+import java.util.List;
+
+/**
+ * 消费类别统计 
+ *
+ * @author codingliang
+ * @email codingliang@gmail.com
+ * @date 2022-03-09 15:37:44
+ */
+@RestController
+@RequestMapping("consumptionCategoryStatistics")
+public class ConsumptionCategoryStatisticsController {
+
+    @Autowired
+    private ConsumptionCategoryStatisticsService consumptionCategoryStatisticsService;
+
+    /**
+     * 消费类别统计列表
+     */
+    @GetMapping("/list")
+    public CommonResult<PageUtils<ConsumptionCategoryStatisticsEntity>> list(){
+        List<ConsumptionCategoryStatisticsEntity> list = consumptionCategoryStatisticsService.list();
+
+        return CommonResult.ok().setResult(list);
+    }
+
+    /**
+     * 消费类别统计修改
+     */
+    @PutMapping("/update")
+    public CommonResult<String> update(@Valid @RequestBody ConsumptionCategoryStatisticsEntity consumptionCategoryStatistics,
+                                       BindingResult result){
+        ParamCheck.checkBean(result);
+
+        if (StringUtils.hasText(consumptionCategoryStatistics.getCategoryName())) {
+            consumptionCategoryStatistics.setCategoryName(null);
+        }
+
+        boolean b = consumptionCategoryStatisticsService.updateById(consumptionCategoryStatistics);
+
+        if (b) {
+            return CommonResult.ok();
+        } else {
+            return CommonResult.fail();
+        }
+    }
+}

+ 147 - 0
src/main/java/com/chuanghai/travelbigdata/disease/command/controller/DetectionStatisticsController.java

@@ -0,0 +1,147 @@
+package com.chuanghai.travelbigdata.disease.command.controller;
+
+import com.chuanghai.travelbigdata.disease.command.entity.DetectionStatisticsEntity;
+import com.chuanghai.travelbigdata.disease.command.exception.BizCodeEnume;
+import com.chuanghai.travelbigdata.disease.command.exception.RRException;
+import com.chuanghai.travelbigdata.disease.command.service.DetectionStatisticsService;
+import com.chuanghai.travelbigdata.disease.command.utils.CommonResult;
+import com.chuanghai.travelbigdata.disease.command.utils.PageParam;
+import com.chuanghai.travelbigdata.disease.command.utils.PageUtils;
+import com.chuanghai.travelbigdata.disease.command.utils.ParamCheck;
+import com.chuanghai.travelbigdata.disease.command.vo.DetectionStatisticsVO;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.validation.BindingResult;
+import org.springframework.web.bind.annotation.DeleteMapping;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.PutMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestHeader;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.multipart.MultipartFile;
+
+import javax.validation.Valid;
+import java.io.IOException;
+import java.text.Bidi;
+import java.time.LocalDateTime;
+import java.util.Arrays;
+import java.util.List;
+
+
+/**
+ * 检测统计 
+ *
+ * @author codingliang
+ * @email codingliang@gmail.com
+ * @date 2022-01-12 19:08:03
+ */
+@RestController
+@RequestMapping("detectionStatistics")
+public class DetectionStatisticsController {
+
+    @Autowired
+    private DetectionStatisticsService detectionStatisticsService;
+
+    /**
+     * 检测列表
+     */
+    @GetMapping("/list")
+    public CommonResult<PageUtils<DetectionStatisticsEntity>> list(PageParam pageParam){
+        PageUtils page = detectionStatisticsService.queryPage(pageParam);
+
+        return CommonResult.ok().setResult(page);
+    }
+
+    /**
+     * 新增检测数据
+     * @param adminToken 管理员token
+     */
+    @PostMapping("/save")
+    public CommonResult<String> save(@RequestHeader("Admin-Token") String adminToken,
+                                     @Valid @RequestBody DetectionStatisticsEntity detectionStatistics,
+                                     BindingResult result){
+        ParamCheck.checkBean(result);
+		detectionStatisticsService.saveEntity(detectionStatistics);
+
+        return CommonResult.ok();
+    }
+
+    /**
+     * 批量新增检测数据
+     * @param adminToken 管理员token
+     * @param dateStr 日期 yyyy-MM-dd
+     * @param file 模板文件
+     * @return
+     * @apiNote 使用指定的模板上传
+     */
+    @PostMapping("/saveByExcel/{dateStr}")
+    public CommonResult<String> saveByExcel(@RequestHeader("Admin-Token") String adminToken,
+                                            @PathVariable("dateStr") String dateStr, @RequestParam MultipartFile file) throws IOException {
+        if (file.isEmpty()) {
+        }
+        detectionStatisticsService.saveByExcel(dateStr, file);
+
+        return CommonResult.ok();
+    }
+
+    /**
+     * 修改检测数据
+     * @param adminToken 管理员token
+     */
+    @PutMapping("/update")
+    public CommonResult<String> update(@RequestHeader("Admin-Token") String adminToken,
+                                       @Valid @RequestBody DetectionStatisticsEntity detectionStatistics,
+                                       BindingResult result){
+        ParamCheck.checkBean(result);
+
+        if (detectionStatistics.getId() == null) {
+            throw new RRException(BizCodeEnume.PARAMETER_ERROR, "id不能为空");
+        }
+
+        detectionStatistics.setUpdateTime(LocalDateTime.now());
+        detectionStatistics.setStatisticsDate(null);
+
+		detectionStatisticsService.updateById(detectionStatistics);
+
+        return CommonResult.ok();
+    }
+
+    /**
+     * 删除检测数据
+     * @param adminToken 管理员token
+     * @param ids 检测数据id集合
+     * @return
+     */
+    @DeleteMapping("/delete")
+    public CommonResult<String> delete(@RequestHeader("Admin-Token") String adminToken,
+                                       @RequestBody Long[] ids){
+		detectionStatisticsService.removeByIds(Arrays.asList(ids));
+
+        return CommonResult.ok();
+    }
+
+    /**
+     * 最近检测情况统计
+     * @return
+     * @apiNote 本接口用于大数据页面【重点环节-核酸检测】数据获取
+     */
+    @GetMapping("infoOfLast")
+    public CommonResult<DetectionStatisticsVO> infoOfLast() {
+        DetectionStatisticsVO data = detectionStatisticsService.getLastInfo();
+        return CommonResult.ok().setResult(data);
+    }
+
+    /**
+     * 最近检测情况统计详情
+     * @return
+     * @apiNote 本接口用于大数据页面【重点环节-核酸检测-详情】数据获取
+     */
+    @GetMapping("infoOfLastDetail")
+    public CommonResult<List<DetectionStatisticsEntity>> infoOfLastDetail() {
+        List<DetectionStatisticsEntity> data = detectionStatisticsService.infoOfLastDetail();
+        return CommonResult.ok().setResult(data);
+    }
+}

+ 120 - 0
src/main/java/com/chuanghai/travelbigdata/disease/command/controller/DutyArrangementController.java

@@ -0,0 +1,120 @@
+package com.chuanghai.travelbigdata.disease.command.controller;
+
+import com.chuanghai.travelbigdata.disease.command.entity.DutyArrangementEntity;
+import com.chuanghai.travelbigdata.disease.command.exception.BizCodeEnume;
+import com.chuanghai.travelbigdata.disease.command.exception.RRException;
+import com.chuanghai.travelbigdata.disease.command.service.DutyArrangementService;
+import com.chuanghai.travelbigdata.disease.command.utils.CommonResult;
+import com.chuanghai.travelbigdata.disease.command.utils.PageParam;
+import com.chuanghai.travelbigdata.disease.command.utils.PageUtils;
+import com.chuanghai.travelbigdata.disease.command.utils.ParamCheck;
+import com.chuanghai.travelbigdata.disease.command.vo.DutyArrangementListForManageVO;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.util.StringUtils;
+import org.springframework.validation.BindingResult;
+import org.springframework.web.bind.annotation.DeleteMapping;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.PutMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.RestController;
+
+import javax.validation.Valid;
+import java.util.Arrays;
+import java.util.List;
+
+/**
+ * 值班安排 
+ *
+ * @author codingliang
+ * @email codingliang@gmail.com
+ * @date 2022-03-09 15:37:45
+ */
+@RestController
+@RequestMapping("dutyArrangement")
+public class DutyArrangementController {
+    @Autowired
+    private DutyArrangementService dutyArrangementService;
+
+    /**
+     * 当天值班安排列表
+     *
+     * @apiNote 本接口用于客户端展示当天值班人员的安排
+     */
+    @GetMapping("/list")
+    public CommonResult<PageUtils<DutyArrangementEntity>> listOfToday(PageParam pageParam){
+        PageUtils page = dutyArrangementService.listOfToday(pageParam);
+
+        return CommonResult.ok().setResult(page);
+    }
+
+    /**
+     * 值班安排列表
+     *
+     * @param todayWork 1查当天值班、2查明天值班、不填查所有
+     * @return
+     */
+    @GetMapping("listOfGroup")
+    public CommonResult<List<DutyArrangementListForManageVO>> listOfGroup(String todayWork) {
+        if (StringUtils.hasText(todayWork)) {
+            if (!("1".equals(todayWork) || "2".equals(todayWork))) {
+                throw new RRException(BizCodeEnume.PARAMETER_ERROR, "todayWork只能为1或2");
+            }
+        }
+        List<DutyArrangementListForManageVO> data = dutyArrangementService.listOfGroup(todayWork);
+
+        return CommonResult.ok().setResult(data);
+    }
+
+
+    /**
+     * 新增值班安排
+     */
+    @PostMapping("/save")
+    public CommonResult<String> save(@Valid @RequestBody DutyArrangementEntity dutyArrangement,
+                                     BindingResult result){
+        ParamCheck.checkBean(result);
+
+		dutyArrangementService.save(dutyArrangement);
+
+        return CommonResult.ok();
+    }
+
+    /**
+     * 修改值班安排
+     */
+    @PutMapping("/update")
+    public CommonResult<String> update(@Valid @RequestBody DutyArrangementEntity dutyArrangement,
+                                       BindingResult result){
+
+        if (dutyArrangement.getId() == null) {
+            throw new RRException(BizCodeEnume.PARAMETER_ERROR, "id不能为空");
+        }
+
+        ParamCheck.checkBean(result);
+
+        boolean b = dutyArrangementService.updateById(dutyArrangement);
+        if (b) {
+            return CommonResult.ok();
+        } else {
+            return CommonResult.fail();
+        }
+    }
+
+    /**
+     * 删除值班安排
+     * @param ids 安排id集合
+     */
+    @DeleteMapping("/delete")
+    public CommonResult<String> delete(@RequestBody Long[] ids){
+        boolean b = dutyArrangementService.removeByIds(Arrays.asList(ids));
+        if (b) {
+            return CommonResult.ok();
+        } else {
+            return CommonResult.fail();
+        }
+    }
+
+}

+ 137 - 0
src/main/java/com/chuanghai/travelbigdata/disease/command/controller/DutyArrangementOfUrgentController.java

@@ -0,0 +1,137 @@
+package com.chuanghai.travelbigdata.disease.command.controller;
+
+import com.chuanghai.travelbigdata.disease.command.entity.DutyArrangementOfUrgentEntity;
+import com.chuanghai.travelbigdata.disease.command.exception.BizCodeEnume;
+import com.chuanghai.travelbigdata.disease.command.exception.RRException;
+import com.chuanghai.travelbigdata.disease.command.service.DutyArrangementOfUrgentService;
+import com.chuanghai.travelbigdata.disease.command.utils.CommonResult;
+import com.chuanghai.travelbigdata.disease.command.utils.ParamCheck;
+import com.chuanghai.travelbigdata.disease.command.vo.DutyArrangementGroupForManageVO;
+import com.chuanghai.travelbigdata.disease.command.vo.DutyArrangementVO;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.validation.BindingResult;
+import org.springframework.web.bind.annotation.DeleteMapping;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.PutMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestHeader;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.multipart.MultipartFile;
+
+import javax.validation.Valid;
+import java.io.IOException;
+import java.time.LocalDate;
+import java.util.Arrays;
+import java.util.List;
+
+
+/**
+ * 紧急值班安排 
+ *
+ * @author codingliang
+ * @email codingliang@gmail.com
+ * @date 2022-01-12 19:08:03
+ */
+@RestController
+@RequestMapping("dutyArrangementOfUrgent")
+public class DutyArrangementOfUrgentController {
+
+    @Autowired
+    private DutyArrangementOfUrgentService dutyArrangementOfUrgentService;
+
+    /**
+     * 紧急值班安排列表
+     */
+    @GetMapping("/list")
+    public CommonResult<List<DutyArrangementGroupForManageVO>> list(){
+        List<DutyArrangementGroupForManageVO> vos = dutyArrangementOfUrgentService.listGroupByDayOfWeek();
+
+        return CommonResult.ok().setResult(vos);
+    }
+
+    /**
+     * 新增值班安排(单独新增)
+     * @param adminToken 管理员token
+     */
+    @PostMapping("/save")
+    public CommonResult<String> save(@RequestHeader("Admin-Token") String adminToken,
+                                     @Valid @RequestBody DutyArrangementOfUrgentEntity dutyArrangementOfUrgent,
+                                     BindingResult result){
+        ParamCheck.checkBean(result);
+
+		dutyArrangementOfUrgentService.saveEntity(dutyArrangementOfUrgent);
+
+        return CommonResult.ok();
+    }
+
+    /**
+     * 新增值班安排(模板批量导入)
+     * @param adminToken 管理员token
+     * @param file 模板文件
+     * @apiNote 使用指定模板文件上传
+     */
+    @PostMapping("/saveByExcel")
+    public CommonResult<String> saveByExcel(@RequestHeader("Admin-Token") String adminToken,
+                                            @RequestParam MultipartFile file) throws IOException {
+        if (file.isEmpty()) {
+            throw new RRException(BizCodeEnume.PARAMETER_ERROR, "文件不能为空");
+        }
+
+        dutyArrangementOfUrgentService.saveByExcel(file);
+
+        return CommonResult.ok();
+    }
+
+    /**
+     * 修改值班安排
+     * @param adminToken 管理员token
+     */
+    @PutMapping("/update")
+    public CommonResult<String> update(@RequestHeader("Admin-Token") String adminToken,
+                                       @Valid @RequestBody DutyArrangementOfUrgentEntity dutyArrangementOfUrgent,
+                                       BindingResult result){
+        ParamCheck.checkBean(result);
+
+        if (dutyArrangementOfUrgent.getId() == null) {
+            throw new RRException(BizCodeEnume.PARAMETER_ERROR, "id不能为空");
+        }
+		dutyArrangementOfUrgentService.updateEntity(dutyArrangementOfUrgent);
+
+        return CommonResult.ok();
+    }
+
+    /**
+     * 删除值班安排
+     * @param adminToken 管理员token
+     * @param ids 值班安排id集合
+     * @return
+     */
+    @DeleteMapping("/delete")
+    public CommonResult<String> delete(@RequestHeader("Admin-Token") String adminToken,
+                                       @RequestBody Long[] ids){
+		dutyArrangementOfUrgentService.removeByIds(Arrays.asList(ids));
+
+        return CommonResult.ok();
+    }
+
+    /**
+     * 根据星期获取值班安排表
+     * @param dayOfWeek 使用[1-7]分别代表周一到周日,如果不传,默认查询当天的值日安排
+     * @return
+     * @apiNote 本接口用于大数据页面【疫情值守-当日值班表】模块数据获取
+     */
+    @GetMapping("dutyArrangementByDayOfWeek")
+    public CommonResult<List<DutyArrangementVO>> getDutyArrangementByDayOfWeek(Integer dayOfWeek){
+        if (dayOfWeek == null) {
+            dayOfWeek = LocalDate.now().getDayOfWeek().getValue();
+        }
+
+        List<DutyArrangementVO> datas = dutyArrangementOfUrgentService.getDutyArrangementByDayOfWeek(dayOfWeek);
+
+        return CommonResult.ok().setResult(datas);
+    }
+
+}

+ 54 - 0
src/main/java/com/chuanghai/travelbigdata/disease/command/controller/EmergencyDisposalStatisticsController.java

@@ -0,0 +1,54 @@
+package com.chuanghai.travelbigdata.disease.command.controller;
+
+import com.chuanghai.travelbigdata.disease.command.entity.EmergencyDisposalStatisticsEntity;
+import com.chuanghai.travelbigdata.disease.command.service.EmergencyDisposalStatisticsService;
+import com.chuanghai.travelbigdata.disease.command.utils.CommonResult;
+import com.chuanghai.travelbigdata.disease.command.utils.ParamCheck;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.validation.BindingResult;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PutMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import javax.validation.Valid;
+
+
+/**
+ * 应急处置统计 
+ *
+ * @author codingliang
+ * @email codingliang@gmail.com
+ * @date 2022-03-09 15:37:44
+ */
+@RestController
+@RequestMapping("emergencyDisposalStatistics")
+public class EmergencyDisposalStatisticsController {
+
+    @Autowired
+    private EmergencyDisposalStatisticsService emergencyDisposalStatisticsService;
+
+    /**
+     * 应急处置信息
+     */
+    @GetMapping("info")
+    public CommonResult<EmergencyDisposalStatisticsEntity> info(){
+		EmergencyDisposalStatisticsEntity emergencyDisposalStatistics = emergencyDisposalStatisticsService.getOne(null);
+
+        return CommonResult.ok().setResult(emergencyDisposalStatistics);
+    }
+
+    /**
+     * 应急处置信息修改
+     */
+    @PutMapping("/update")
+    public CommonResult<String> update(@Valid @RequestBody EmergencyDisposalStatisticsEntity emergencyDisposalStatistics,
+                                       BindingResult result){
+        ParamCheck.checkBean(result);
+
+		emergencyDisposalStatisticsService.updateById(emergencyDisposalStatistics);
+
+        return CommonResult.ok();
+    }
+}

+ 143 - 0
src/main/java/com/chuanghai/travelbigdata/disease/command/controller/EmergencySuppliesController.java

@@ -0,0 +1,143 @@
+package com.chuanghai.travelbigdata.disease.command.controller;
+
+import com.chuanghai.travelbigdata.disease.command.entity.EmergencySuppliesEntity;
+import com.chuanghai.travelbigdata.disease.command.exception.BizCodeEnume;
+import com.chuanghai.travelbigdata.disease.command.exception.RRException;
+import com.chuanghai.travelbigdata.disease.command.service.EmergencySuppliesService;
+import com.chuanghai.travelbigdata.disease.command.utils.CommonResult;
+import com.chuanghai.travelbigdata.disease.command.utils.PageParam;
+import com.chuanghai.travelbigdata.disease.command.utils.PageUtils;
+import com.chuanghai.travelbigdata.disease.command.utils.ParamCheck;
+import com.chuanghai.travelbigdata.disease.command.vo.EmergencySuppliesDetailVO;
+import com.chuanghai.travelbigdata.disease.command.vo.EmergencySuppliesStatisticsVO;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.validation.BindingResult;
+import org.springframework.web.bind.annotation.DeleteMapping;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.PutMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestHeader;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.multipart.MultipartFile;
+
+import javax.validation.Valid;
+import java.io.IOException;
+import java.util.Arrays;
+import java.util.List;
+
+
+/**
+ * 防疫物资
+ *
+ * @author codingliang
+ * @email codingliang@gmail.com
+ * @date 2022-01-12 19:08:03
+ */
+@RestController
+@RequestMapping("emergencySupplies")
+public class EmergencySuppliesController {
+
+    @Autowired
+    private EmergencySuppliesService emergencySuppliesService;
+
+    /**
+     * 防疫物资列表
+     */
+    @GetMapping("/list")
+    public CommonResult<PageUtils<EmergencySuppliesEntity>> list(PageParam pageParam){
+        PageUtils page = emergencySuppliesService.queryPage(pageParam);
+
+        return CommonResult.ok().setResult(page);
+    }
+
+    /**
+     * 新增防疫物资
+     * @param adminToken 管理员token
+     */
+    @PostMapping("/save")
+    public CommonResult<String> save(@RequestHeader("Admin-Token") String adminToken,
+                                     @Valid @RequestBody EmergencySuppliesEntity emergencySupplies,
+                                     BindingResult result){
+        ParamCheck.checkBean(result);
+		emergencySuppliesService.saveEntity(emergencySupplies);
+
+        return CommonResult.ok();
+    }
+
+    /**
+     * 批量新增防疫物资
+     * @param adminToken 管理员token
+     * @param file 模板文件
+     * @return
+     * @apiNote 通过指定模板上传文件
+     */
+    @PostMapping("/saveByExcel")
+    public CommonResult<String> saveByExcel(@RequestHeader("Admin-Token") String adminToken,
+                                            @RequestParam MultipartFile file) throws IOException {
+        if (file.isEmpty()) {
+            throw new RRException(BizCodeEnume.PARAMETER_ERROR, "文件不能为空");
+        }
+        emergencySuppliesService.saveByExcel(file);
+
+        return CommonResult.ok();
+    }
+
+    /**
+     * 修改防疫物资
+     * @param adminToken 管理员token
+     */
+    @PutMapping("/update")
+    public CommonResult<String> update(@RequestHeader("Admin-Token") String adminToken,
+                                       @Valid @RequestBody EmergencySuppliesEntity emergencySupplies,
+                                       BindingResult result){
+        ParamCheck.checkBean(result);
+
+        if (emergencySupplies.getId() == null) {
+            throw new RRException(BizCodeEnume.PARAMETER_ERROR, "id不能为空");
+        }
+
+		emergencySuppliesService.updateEntity(emergencySupplies);
+
+        return CommonResult.ok();
+    }
+
+    /**
+     * 删除防疫物资
+     * @param adminToken 管理员token
+     * @param ids 物资id集合
+     * @return
+     */
+    @DeleteMapping("/delete")
+    public CommonResult<String> delete(@RequestHeader("Admin-Token") String adminToken,
+                                       @RequestBody Long[] ids){
+		emergencySuppliesService.removeByIds(Arrays.asList(ids));
+
+        return CommonResult.ok();
+    }
+
+    /**
+     * 防控物资统计
+     * @return
+     * @apiNote 用于大数据页面【应急储备-防控物资】模块数据获取
+     */
+    @GetMapping("statistics")
+    public CommonResult<List<EmergencySuppliesStatisticsVO>> statistics() {
+        List<EmergencySuppliesStatisticsVO> list = emergencySuppliesService.getStatisticsData();
+        return CommonResult.ok().setResult(list);
+    }
+
+    /**
+     * 防控物资列表详情
+     * @param pageParam
+     * @return
+     * @apiNote 用于大数据页面【应急储备-防疫物资-防疫物资详情】模块数据获取
+     */
+    @GetMapping("listDetail")
+    public CommonResult<EmergencySuppliesDetailVO> listDetail(PageParam pageParam) {
+        EmergencySuppliesDetailVO detailVO = emergencySuppliesService.getListDetail(pageParam);
+        return CommonResult.ok().setResult(detailVO);
+    }
+}

+ 251 - 0
src/main/java/com/chuanghai/travelbigdata/disease/command/controller/EmergencyTeamController.java

@@ -0,0 +1,251 @@
+package com.chuanghai.travelbigdata.disease.command.controller;
+
+import com.chuanghai.travelbigdata.disease.command.dto.EmergencyTeamMemberQueryDTO;
+import com.chuanghai.travelbigdata.disease.command.entity.EmergencyTeamEntity;
+import com.chuanghai.travelbigdata.disease.command.entity.EmergencyTeamMemberEntity;
+import com.chuanghai.travelbigdata.disease.command.exception.BizCodeEnume;
+import com.chuanghai.travelbigdata.disease.command.exception.RRException;
+import com.chuanghai.travelbigdata.disease.command.service.EmergencyTeamMemberService;
+import com.chuanghai.travelbigdata.disease.command.service.EmergencyTeamService;
+import com.chuanghai.travelbigdata.disease.command.utils.CommonResult;
+import com.chuanghai.travelbigdata.disease.command.utils.PageParam;
+import com.chuanghai.travelbigdata.disease.command.utils.PageUtils;
+import com.chuanghai.travelbigdata.disease.command.utils.ParamCheck;
+import com.chuanghai.travelbigdata.disease.command.vo.EmergencyTeamMemberListVO;
+import com.chuanghai.travelbigdata.disease.command.vo.EmergencyTeamStatisticsVO;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.validation.BindingResult;
+import org.springframework.web.bind.annotation.DeleteMapping;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.PutMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestHeader;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.multipart.MultipartFile;
+
+import javax.validation.Valid;
+import java.io.IOException;
+import java.util.Arrays;
+
+
+/**
+ * 应急队伍 
+ *
+ * @author codingliang
+ * @email codingliang@gmail.com
+ * @date 2022-01-12 19:08:03
+ */
+@RestController
+@RequestMapping("emergencyTeam")
+public class EmergencyTeamController {
+
+    @Autowired
+    private EmergencyTeamService emergencyTeamService;
+    @Autowired
+    private EmergencyTeamMemberService emergencyTeamMemberService;
+
+    /**
+     * 应急队伍列表
+     * @param pageParam 分页参数
+     * @return
+     * @apiNote <br/>
+     *  - 用于大数据页面【应急储备-应急队伍-队伍列表】模块数据获取;<br/>
+     *  - 用于管理端应急队伍列表。
+     */
+    @GetMapping("/list")
+    public CommonResult<PageUtils<EmergencyTeamEntity>> list(PageParam pageParam){
+        PageUtils page = emergencyTeamService.queryPage(pageParam);
+
+        return CommonResult.ok().setResult(page);
+    }
+
+    /**
+     * 应急队伍成员列表
+     * @param pageParam 分页参数
+     * @param teamId 队伍id
+     * @param queryDTO 查询参数
+     * @return
+     * @apiNote <br/>
+     *  - 用于大数据页面【应急储备-应急队伍-队伍列表-成员列表】模块数据获取;<br/>
+     *  - 用于管理端应急队伍成员列表。
+     */
+    @Deprecated
+    @GetMapping("/list/member/{teamId}")
+    public CommonResult<PageUtils<EmergencyTeamMemberEntity>> memberList(PageParam pageParam, EmergencyTeamMemberQueryDTO queryDTO, @PathVariable("teamId") Long teamId){
+        PageUtils page = emergencyTeamMemberService.queryPage(pageParam, queryDTO, teamId);
+
+        return CommonResult.ok().setResult(page);
+    }
+
+    /**
+     * 应急队伍成员列表V2
+     * @param pageParam 分页参数
+     * @param teamId 队伍id
+     * @param queryDTO 查询参数
+     * @return
+     * @apiNote <br/>
+     *  - 可用于大数据页面【应急储备-应急队伍-队伍列表-成员列表】模块数据获取;<br/>
+     */
+    @GetMapping("/list/member/{teamId}/v2")
+    public CommonResult<EmergencyTeamMemberListVO> memberListV2(PageParam pageParam, EmergencyTeamMemberQueryDTO queryDTO, @PathVariable("teamId") Long teamId){
+        EmergencyTeamMemberListVO page = emergencyTeamMemberService.queryPageEmergencyTeamMemberListByTeamId(pageParam, queryDTO, teamId);
+
+        return CommonResult.ok().setResult(page);
+    }
+
+    /**
+     * 新增应急队伍
+     * @param adminToken 管理员token
+     */
+    @PostMapping("/save")
+    public CommonResult<String> save(@RequestHeader("Admin-Token") String adminToken,
+                                     @Valid @RequestBody EmergencyTeamEntity emergencyTeam,
+                                     BindingResult result){
+        ParamCheck.checkBean(result);
+
+		emergencyTeamService.saveEntity(emergencyTeam);
+
+        return CommonResult.ok();
+    }
+
+    /**
+     * 批量新增应急队伍
+     * @param adminToken 管理员token
+     * @param file 模板文件
+     * @return
+     * @apiNote 使用指定的模板文件上传
+     */
+    @PostMapping("/saveByExcel")
+    public CommonResult<String> saveByExcel(@RequestHeader("Admin-Token") String adminToken,
+                                            @RequestParam MultipartFile file) throws IOException {
+        if (file.isEmpty()) {
+            throw new RRException(BizCodeEnume.PARAMETER_ERROR, "文件不能为空");
+        }
+
+        emergencyTeamService.saveByExcel(file);
+
+        return CommonResult.ok();
+    }
+
+    /**
+     * 应急队伍修改
+     * @param adminToken 管理员token
+     */
+    @PutMapping("/update")
+    public CommonResult<String> update(@RequestHeader("Admin-Token") String adminToken,
+                                       @Valid @RequestBody EmergencyTeamEntity emergencyTeam,
+                                       BindingResult result){
+        ParamCheck.checkBean(result);
+        if (emergencyTeam.getId() == null) {
+            throw new RRException(BizCodeEnume.PARAMETER_ERROR, "id不能为空");
+        }
+
+		emergencyTeamService.updateEntity(emergencyTeam);
+
+        return CommonResult.ok();
+    }
+
+    /**
+     * 应急队伍删除
+     * @param adminToken 管理员token
+     * @param ids 队伍id集合
+     * @return
+     */
+    @DeleteMapping("/delete")
+    public CommonResult<String> delete(@RequestHeader("Admin-Token") String adminToken,
+                                       @RequestBody Long[] ids){
+
+        emergencyTeamService.removeTeamByIds(Arrays.asList(ids));
+
+        return CommonResult.ok();
+    }
+
+    /**
+     * 新增队伍成员
+     * @param adminToken 管理员token
+     * @param entity
+     * @param result
+     * @return
+     */
+    @PostMapping("member/save")
+    public CommonResult<String> saveMember(@RequestHeader("Admin-Token") String adminToken,
+                                           @Valid @RequestBody EmergencyTeamMemberEntity entity,
+                                           BindingResult result) {
+        ParamCheck.checkBean(result);
+
+        emergencyTeamMemberService.saveEntity(entity);
+
+        return CommonResult.ok();
+    }
+
+    /**
+     * 批量新增队伍成员
+     * @param adminToken 管理员token
+     * @param teamId 队伍id
+     * @param file 模板文件
+     * @return
+     */
+    @PostMapping("member/{teamId}/saveByExcel")
+    public CommonResult<String> saveMemberByExcel(@RequestHeader("Admin-Token") String adminToken,
+                                                  @PathVariable("teamId") Long teamId,
+                                                  @RequestParam MultipartFile file) throws IOException {
+        if (file.isEmpty()) {
+            throw new RRException(BizCodeEnume.PARAMETER_ERROR, "文件不能为空");
+        }
+
+        emergencyTeamMemberService.saveByExcel(teamId, file);
+
+        return CommonResult.ok();
+    }
+
+    /**
+     * 修改队伍成员
+     * @param adminToken 管理员token
+     * @param entity
+     * @param result
+     * @return
+     */
+    @PutMapping("member/update")
+    public CommonResult<String> updateMember(@RequestHeader("Admin-Token") String adminToken,
+                                             @Valid @RequestBody EmergencyTeamMemberEntity entity,
+                                             BindingResult result) {
+        ParamCheck.checkBean(result);
+
+        if (entity.getId() == null) {
+            throw new RRException(BizCodeEnume.PARAMETER_ERROR, "id不能为空");
+        }
+
+        emergencyTeamMemberService.updateEntity(entity);
+
+        return CommonResult.ok();
+    }
+
+    /**
+     * 删除队伍队员
+     * @param adminToken 管理员token
+     * @param ids 队员id集合
+     * @return
+     */
+    @DeleteMapping("member/delete")
+    public CommonResult<String> deleteMember(@RequestHeader("Admin-Token") String adminToken,
+                                             @RequestBody Long[] ids) {
+        emergencyTeamMemberService.removeByIds(Arrays.asList(ids));
+
+        return CommonResult.ok();
+    }
+
+    /**
+     * 应急队伍总览
+     * @return
+     * @apiNote 用于大数据页面【应急储备-应急队伍】模块数据获取
+     */
+    @GetMapping("statistics")
+    public CommonResult<EmergencyTeamStatisticsVO> statistics () {
+        EmergencyTeamStatisticsVO vo = emergencyTeamService.getStatisticsData();
+        return CommonResult.ok().setResult(vo);
+    }
+}

+ 125 - 0
src/main/java/com/chuanghai/travelbigdata/disease/command/controller/EventPlanningController.java

@@ -0,0 +1,125 @@
+package com.chuanghai.travelbigdata.disease.command.controller;
+
+import java.time.LocalDateTime;
+import java.util.Arrays;
+
+import com.chuanghai.travelbigdata.disease.command.dto.EventPlanningQueryDTO;
+import com.chuanghai.travelbigdata.disease.command.exception.BizCodeEnume;
+import com.chuanghai.travelbigdata.disease.command.exception.RRException;
+import com.chuanghai.travelbigdata.disease.command.utils.CommonResult;
+import com.chuanghai.travelbigdata.disease.command.utils.PageParam;
+import com.chuanghai.travelbigdata.disease.command.utils.PageUtils;
+import com.chuanghai.travelbigdata.disease.command.utils.ParamCheck;
+import com.chuanghai.travelbigdata.disease.command.vo.EventPlanningGroupByMonthVO;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.validation.BindingResult;
+import org.springframework.web.bind.annotation.DeleteMapping;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.PutMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import com.chuanghai.travelbigdata.disease.command.entity.EventPlanningEntity;
+import com.chuanghai.travelbigdata.disease.command.service.EventPlanningService;
+
+import javax.validation.Valid;
+
+/**
+ * 活动策划 
+ *
+ * @author codingliang
+ * @email codingliang@gmail.com
+ * @date 2022-03-22 16:10:11
+ */
+@RestController
+@RequestMapping("eventPlanning")
+public class EventPlanningController {
+
+    @Autowired
+    private EventPlanningService eventPlanningService;
+
+    /**
+     * 活动策划列表
+     */
+    @GetMapping("/list")
+    public CommonResult<PageUtils<EventPlanningEntity>> list(PageParam pageParam, EventPlanningQueryDTO queryDTO){
+        PageUtils page = eventPlanningService.queryPage(pageParam, queryDTO);
+
+        return CommonResult.ok().setResult(page);
+    }
+
+    /**
+     * 按月份分组活动策划列表
+     */
+    @GetMapping("/list/groupByMonth")
+    public CommonResult<PageUtils<EventPlanningGroupByMonthVO>> listGroupByMonth(PageParam pageParam, EventPlanningQueryDTO queryDTO){
+        PageUtils page = eventPlanningService.queryPageGroupByMonth(pageParam, queryDTO);
+
+        return CommonResult.ok().setResult(page);
+    }
+
+    /**
+     * 活动策划详情
+     * @param id 活动策划id
+     */
+    @GetMapping("/info/{id}")
+    public CommonResult<EventPlanningEntity> info(@PathVariable("id") Long id){
+		EventPlanningEntity eventPlanning = eventPlanningService.getById(id);
+
+        return CommonResult.ok().setResult(eventPlanning);
+    }
+
+    /**
+     * 新增活动策划
+     */
+    @PostMapping("/save")
+    public CommonResult<String> save(@Valid @RequestBody EventPlanningEntity eventPlanning, BindingResult result){
+        ParamCheck.checkBean(result);
+
+        if (eventPlanning.getPublishTime() == null) {
+            eventPlanning.setPublishTime(LocalDateTime.now());
+        }
+		eventPlanningService.save(eventPlanning);
+
+        return CommonResult.ok();
+    }
+
+    /**
+     * 活动策划修改
+     */
+    @PutMapping("/update")
+    public CommonResult<String> update(@Valid @RequestBody EventPlanningEntity eventPlanning, BindingResult result){
+        ParamCheck.checkBean(result);
+
+        if (eventPlanning.getId() == null) {
+            throw new RRException(BizCodeEnume.PARAMETER_ERROR, "id不能为空");
+        }
+
+		boolean flag = eventPlanningService.updateById(eventPlanning);
+
+		if (flag) {
+            return CommonResult.ok();
+        } else {
+		    return CommonResult.fail();
+        }
+    }
+
+    /**
+     * 删除活动策划
+     * @param ids 策划id集合
+     */
+    @DeleteMapping("/delete")
+    public CommonResult<String> delete(@RequestBody Long[] ids){
+        boolean flag = eventPlanningService.removeByIds(Arrays.asList(ids));
+
+        if (flag) {
+            return CommonResult.ok();
+        } else {
+            return CommonResult.fail();
+        }
+    }
+
+}

+ 118 - 0
src/main/java/com/chuanghai/travelbigdata/disease/command/controller/EventPlanningMonthSummaryController.java

@@ -0,0 +1,118 @@
+package com.chuanghai.travelbigdata.disease.command.controller;
+
+import com.chuanghai.travelbigdata.disease.command.entity.EventPlanningMonthSummaryEntity;
+import com.chuanghai.travelbigdata.disease.command.exception.BizCodeEnume;
+import com.chuanghai.travelbigdata.disease.command.exception.RRException;
+import com.chuanghai.travelbigdata.disease.command.service.EventPlanningMonthSummaryService;
+import com.chuanghai.travelbigdata.disease.command.utils.CommonResult;
+import com.chuanghai.travelbigdata.disease.command.utils.PageParam;
+import com.chuanghai.travelbigdata.disease.command.utils.PageUtils;
+import com.chuanghai.travelbigdata.disease.command.utils.ParamCheck;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.validation.BindingResult;
+import org.springframework.web.bind.annotation.DeleteMapping;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.PutMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import javax.validation.Valid;
+import java.util.Arrays;
+
+
+/**
+ * 活动策划月度总结 
+ *
+ * @author codingliang
+ * @email codingliang@gmail.com
+ * @date 2022-05-18 17:12:11
+ */
+@RestController
+@RequestMapping("eventPlanningMonthSummary")
+public class EventPlanningMonthSummaryController {
+    @Autowired
+    private EventPlanningMonthSummaryService eventPlanningMonthSummaryService;
+
+    /**
+     * 月度总结列表
+     * @param pageParam 分页参数
+     * @param month 月份 格式:yyyy-MM
+     * @return
+     */
+    @GetMapping("/list")
+    public CommonResult<PageUtils<EventPlanningMonthSummaryEntity>> list(PageParam pageParam, String month){
+        PageUtils page = eventPlanningMonthSummaryService.queryPage(pageParam, month);
+
+        return CommonResult.ok().setResult(page);
+    }
+
+
+    /**
+     * 月度总结详情【根据id查询】
+     * @param id 月度总结详情
+     */
+    @GetMapping("/info/{id}")
+    public CommonResult<EventPlanningMonthSummaryEntity> info(@PathVariable("id") Long id){
+		EventPlanningMonthSummaryEntity eventPlanningMonthSummary = eventPlanningMonthSummaryService.getByMyId(id);
+
+        return CommonResult.ok().setResult(eventPlanningMonthSummary);
+    }
+
+    /**
+     * 月度总结详情【根据月份查询】
+     *
+     * @param month 月份 格式:yyyy-MM
+     * @apiNote 根据月份查询月度总结详情,日期格式 yyyy-MM ,日期格式不正确不会返回正确的数据
+     */
+    @GetMapping("{month}/info")
+    public CommonResult<EventPlanningMonthSummaryEntity> infoByMonth(@PathVariable("month") String month){
+        EventPlanningMonthSummaryEntity eventPlanningMonthSummary = eventPlanningMonthSummaryService.getByMonth(month);
+
+        return CommonResult.ok().setResult(eventPlanningMonthSummary);
+    }
+
+    /**
+     * 新增月度总结
+     */
+    @PostMapping("/save")
+    public CommonResult<String> save(@Valid @RequestBody EventPlanningMonthSummaryEntity eventPlanningMonthSummary, BindingResult result){
+        ParamCheck.checkBean(result);
+
+		eventPlanningMonthSummaryService.saveSummary(eventPlanningMonthSummary);
+
+        return CommonResult.ok();
+    }
+
+    /**
+     * 修改月度总结
+     */
+    @PutMapping("/update")
+    public CommonResult<String> update(@Valid @RequestBody EventPlanningMonthSummaryEntity eventPlanningMonthSummary, BindingResult result){
+        ParamCheck.checkBean(result);
+
+        if (eventPlanningMonthSummary.getId() == null) {
+            throw new RRException(BizCodeEnume.PARAMETER_ERROR, "id不能为空");
+        }
+
+		eventPlanningMonthSummaryService.updateSummary(eventPlanningMonthSummary);
+        return CommonResult.ok();
+    }
+
+    /**
+     * 删除月度总结
+     */
+    @DeleteMapping("/delete")
+    public CommonResult<String> delete(@RequestBody Long[] ids){
+        boolean flag = eventPlanningMonthSummaryService.removeByIds(Arrays.asList(ids));
+
+        if (flag) {
+            return CommonResult.ok();
+        } else {
+            return CommonResult.fail();
+        }
+    }
+
+}

+ 141 - 0
src/main/java/com/chuanghai/travelbigdata/disease/command/controller/FeverClinicOfHospitalStatisticsController.java

@@ -0,0 +1,141 @@
+package com.chuanghai.travelbigdata.disease.command.controller;
+
+import com.chuanghai.travelbigdata.disease.command.dto.FeverClinicOfHospitalStatisticsSaveDTO;
+import com.chuanghai.travelbigdata.disease.command.entity.FeverClinicOfHospitalStatisticsEntity;
+import com.chuanghai.travelbigdata.disease.command.exception.BizCodeEnume;
+import com.chuanghai.travelbigdata.disease.command.exception.RRException;
+import com.chuanghai.travelbigdata.disease.command.service.FeverClinicOfHospitalStatisticsService;
+import com.chuanghai.travelbigdata.disease.command.utils.CommonResult;
+import com.chuanghai.travelbigdata.disease.command.utils.PageParam;
+import com.chuanghai.travelbigdata.disease.command.utils.PageUtils;
+import com.chuanghai.travelbigdata.disease.command.utils.ParamCheck;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.validation.BindingResult;
+import org.springframework.web.bind.annotation.DeleteMapping;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.PutMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestHeader;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.multipart.MultipartFile;
+
+import javax.validation.Valid;
+import java.io.IOException;
+import java.time.LocalDateTime;
+import java.util.Arrays;
+import java.util.List;
+
+
+/**
+ * 医院发热门诊统计 
+ *
+ * @author codingliang
+ * @email codingliang@gmail.com
+ * @date 2022-01-12 19:08:03
+ */
+@RestController
+@RequestMapping("feverClinicOfHospitalStatistics")
+public class FeverClinicOfHospitalStatisticsController {
+    @Autowired
+    private FeverClinicOfHospitalStatisticsService feverClinicOfHospitalStatisticsService;
+
+    /**
+     * 发热门诊统计列表
+     */
+    @GetMapping("/list")
+    public CommonResult<PageUtils<FeverClinicOfHospitalStatisticsEntity>> list(PageParam pageParam){
+        PageUtils page = feverClinicOfHospitalStatisticsService.queryPage(pageParam);
+
+        return CommonResult.ok().setResult(page);
+    }
+
+    /**
+     * 新增发热门诊统计数据
+     * @param adminToken 管理员token
+     */
+    @PostMapping("/save")
+    public CommonResult<String> save(@RequestHeader("Admin-Token") String adminToken,
+                                     @Valid @RequestBody FeverClinicOfHospitalStatisticsSaveDTO dto,
+                                     BindingResult result){
+        ParamCheck.checkBean(result);
+
+        dto.getDatas().forEach(e -> e.setUpdateTime(LocalDateTime.now()));
+		feverClinicOfHospitalStatisticsService.saveBatch(dto.getDatas());
+
+        return CommonResult.ok();
+    }
+
+    /**
+     * 批量新增发热门诊统计数据
+     * @param adminToken 管理员token
+     * @param dateStr 统计日期 yyyy-MM-dd
+     * @param file 模板文件
+     * @return
+     * @throws IOException
+     * @apiNote 使用指定模板上传数据
+     */
+    @PostMapping("/saveByExcel/{dateStr}")
+    public CommonResult<String> saveByExcel(@RequestHeader("Admin-Token") String adminToken,
+                                            @PathVariable("dateStr") String dateStr,
+                                            @RequestParam MultipartFile file) throws IOException {
+        if (file.isEmpty()) {
+            throw new RRException(BizCodeEnume.PARAMETER_ERROR, "文件不能为空");
+        }
+
+        feverClinicOfHospitalStatisticsService.saveByExcel(dateStr, file);
+
+        return CommonResult.ok();
+    }
+
+    /**
+     * 发热门诊数据修改
+     * @param adminToken 管理员token
+     */
+    @PutMapping("/update")
+    public CommonResult<String> update(@RequestHeader("Admin-Token") String adminToken,
+                                       @Valid @RequestBody FeverClinicOfHospitalStatisticsEntity entity,
+                                       BindingResult result){
+        ParamCheck.checkBean(result);
+        if (entity.getId() == null) {
+            throw new RRException(BizCodeEnume.PARAMETER_ERROR, "id不能为空");
+        }
+
+        LocalDateTime now = LocalDateTime.now();
+        entity.setStatisticsDate(null);
+        entity.setUpdateTime(now);
+
+		feverClinicOfHospitalStatisticsService.updateById(entity);
+
+        return CommonResult.ok();
+    }
+
+    /**
+     * 删除发热门诊数据
+     * @param adminToken 管理员token
+     * @param ids 数据id集合
+     * @return
+     */
+    @DeleteMapping("/delete")
+    public CommonResult<String> delete(@RequestHeader("Admin-Token") String adminToken,
+                                       @RequestBody Long[] ids){
+		feverClinicOfHospitalStatisticsService.removeByIds(Arrays.asList(ids));
+
+        return CommonResult.ok();
+    }
+
+    /**
+     * 发热门诊最新数据
+     * @return
+     * @apiNote 本接口用于获取大数据页面【重点环境-发热门诊TOP6】模块数据
+     */
+    @GetMapping("lastData")
+    public CommonResult<List<FeverClinicOfHospitalStatisticsEntity>> getLastData() {
+        List<FeverClinicOfHospitalStatisticsEntity> datas = feverClinicOfHospitalStatisticsService.getLastData();
+        return CommonResult.ok().setResult(datas);
+    }
+
+}

+ 70 - 0
src/main/java/com/chuanghai/travelbigdata/disease/command/controller/FileController.java

@@ -0,0 +1,70 @@
+package com.chuanghai.travelbigdata.disease.command.controller;
+
+
+import com.chuanghai.travelbigdata.disease.command.exception.BizCodeEnume;
+import com.chuanghai.travelbigdata.disease.command.exception.RRException;
+import com.chuanghai.travelbigdata.disease.command.service.impl.FileService;
+import com.chuanghai.travelbigdata.disease.command.utils.CommonResult;
+import com.chuanghai.travelbigdata.disease.command.vo.FileUploadSuccessVO;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.web.bind.annotation.DeleteMapping;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestHeader;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.multipart.MultipartFile;
+
+import javax.annotation.Resource;
+
+/**
+ * 文件上传服务
+ *
+ * @author codingliang
+ * @email codingliang@gmail.com
+ * @date 2022-01-12 19:08:03
+ */
+@RestController
+@RequestMapping("file")
+public class FileController {
+
+    @Resource
+    private FileService fileService;
+    @Value("${file.showUrl}")
+    private String showUrl;
+
+    /**
+     * 文件上传
+     * @param adminToken 管理员token
+     * @param file 文件内容
+     * @return
+     */
+    @PostMapping("imageUpload")
+    public CommonResult<FileUploadSuccessVO> imageUpload(@RequestHeader("Admin-Token") String adminToken,
+                                                         @RequestParam MultipartFile file) {
+        if (file.isEmpty()) {
+            throw new RRException(BizCodeEnume.PARAMETER_ERROR, "文件不能为空");
+        }
+
+        String imageName = fileService.fileUpload(file);
+
+        return CommonResult.ok().setResult(FileUploadSuccessVO.builder()
+                .imageName(imageName)
+                .showUrl(showUrl + imageName)
+                .build());
+    }
+
+    /**
+     * 删除已经上传的文件
+     * @param adminToken 管理员token
+     * @param imageName 文件名称
+     * @return
+     */
+    @DeleteMapping("delete/{imageName}")
+    public CommonResult<String> delete(@RequestHeader("Admin-Token") String adminToken,
+                                       @PathVariable("imageName") String imageName) {
+        fileService.deleteRealFile(imageName);
+        return CommonResult.ok();
+    }
+}

+ 101 - 0
src/main/java/com/chuanghai/travelbigdata/disease/command/controller/FireRatingController.java

@@ -0,0 +1,101 @@
+package com.chuanghai.travelbigdata.disease.command.controller;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.chuanghai.travelbigdata.disease.command.entity.FireRatingRecordEntity;
+import com.chuanghai.travelbigdata.disease.command.exception.BizCodeEnume;
+import com.chuanghai.travelbigdata.disease.command.exception.RRException;
+import com.chuanghai.travelbigdata.disease.command.service.FireRatingRecordService;
+import com.chuanghai.travelbigdata.disease.command.utils.CommonResult;
+import com.chuanghai.travelbigdata.disease.command.utils.PageParam;
+import com.chuanghai.travelbigdata.disease.command.utils.PageUtils;
+import com.chuanghai.travelbigdata.disease.command.utils.ParamCheck;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.validation.BindingResult;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PutMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestHeader;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import javax.validation.Valid;
+
+/**
+ * 防火等级模块
+ * @author codingliang
+ * @email codingliang@gmail.com
+ * @date 2022-03-15 16:05:20
+ */
+@RestController
+@RequestMapping("fireRating")
+public class FireRatingController {
+
+    @Autowired
+    private FireRatingRecordService fireRatingRecordService;
+
+    /**
+     * 获取最新的防火等级记录
+     * @apiNote <br/>
+     * Ⅰ级(特别严重)红色警告,极其危险、极易燃烧,森林火险等级五级,连续20天以上晴天,相对湿度50%以下;<br/>
+     * Ⅱ级(严重)橙色警告,高度危险、容易燃烧,森林火险等级四级,连续15天以上晴天,相对湿度50%-60%;<br/>
+     * Ⅲ级(较重)黄色警告,中度危险、较易燃烧,森林火险等级三级,连续7天以上晴天,相对湿度60%-70%;<br/>
+     * Ⅳ级(一般)蓝色警告,低度危险、难以燃烧,森林火险等级三级以下,连续7天以上晴天,相对湿度70%以上;<br/>
+     * level 1-4分别代表预警Ⅰ到Ⅳ级
+     * @return
+     */
+    @GetMapping("/last")
+    public CommonResult<FireRatingRecordEntity> last(){
+        QueryWrapper<FireRatingRecordEntity> queryWrapper = new QueryWrapper<>();
+        queryWrapper.orderByDesc("update_time");
+        queryWrapper.last("limit 1");
+        FireRatingRecordEntity entity = fireRatingRecordService.getOne(queryWrapper);
+        if (entity == null) {
+            throw new RRException(BizCodeEnume.DATA_NOT_EXIST, "暂无防火等级记录");
+        }
+        return CommonResult.ok().setResult(entity);
+    }
+
+    /**
+     * 历史防火等级列表
+     */
+    @GetMapping("/list")
+    public CommonResult<PageUtils<FireRatingRecordEntity>> list(PageParam pageParam){
+        PageUtils page = fireRatingRecordService.queryPage(pageParam);
+        return CommonResult.ok().setResult(page);
+    }
+
+    /**
+     * 修改防火等级
+     * @param adminToken 管理员token
+     */
+    @PutMapping("/update")
+    public CommonResult<String> update(@RequestHeader("Admin-Token") String adminToken,
+                                       @RequestBody @Valid FireRatingRecordEntity fireRatingRecordEntity,
+                                       BindingResult result){
+        ParamCheck.checkBean(result);
+
+        if (fireRatingRecordEntity.getId() == null) {
+            throw new RRException(BizCodeEnume.PARAMETER_ERROR, "id不能为空");
+        }
+
+        fireRatingRecordEntity.setUpdateTime(null);
+        boolean b = fireRatingRecordService.updateById(fireRatingRecordEntity);
+        if (b) {
+            return CommonResult.ok();
+        } else {
+            return CommonResult.fail();
+        }
+    }
+
+    /**
+     * 更新当天的防火等级
+     * @param adminToken 管理员token
+     * @apiNote 如果数据库中没有最新防火等级记录,或者记录是1小时之前的,则会重新查询当前天气状况后查询更新当前防火记录
+     * @return
+     */
+    @PutMapping("updateTodayFireRating")
+    public CommonResult<String> updateTodayFireRating(@RequestHeader("Admin-Token") String adminToken) {
+        fireRatingRecordService.updateFireRating();
+        return CommonResult.ok();
+    }
+}

+ 149 - 0
src/main/java/com/chuanghai/travelbigdata/disease/command/controller/IsolatedPlaceController.java

@@ -0,0 +1,149 @@
+package com.chuanghai.travelbigdata.disease.command.controller;
+
+import com.chuanghai.travelbigdata.disease.command.entity.IsolatedPlaceEntity;
+import com.chuanghai.travelbigdata.disease.command.exception.BizCodeEnume;
+import com.chuanghai.travelbigdata.disease.command.exception.RRException;
+import com.chuanghai.travelbigdata.disease.command.service.IsolatedPlaceService;
+import com.chuanghai.travelbigdata.disease.command.utils.CommonResult;
+import com.chuanghai.travelbigdata.disease.command.utils.PageParam;
+import com.chuanghai.travelbigdata.disease.command.utils.PageUtils;
+import com.chuanghai.travelbigdata.disease.command.utils.ParamCheck;
+import com.chuanghai.travelbigdata.disease.command.vo.IsolatedPlaceStatisticsVO;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.validation.BindingResult;
+import org.springframework.web.bind.annotation.DeleteMapping;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.PutMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestHeader;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.multipart.MultipartFile;
+
+import javax.validation.Valid;
+import java.io.IOException;
+import java.util.Arrays;
+import java.util.List;
+
+
+/**
+ * 隔离场所 
+ *
+ * @author codingliang
+ * @email codingliang@gmail.com
+ * @date 2022-01-13 14:32:52
+ */
+@RestController
+@RequestMapping("isolatedPlace")
+public class IsolatedPlaceController {
+    @Autowired
+    private IsolatedPlaceService isolatedPlaceService;
+
+    /**
+     * 隔离场所列表
+     * @param pageParam 分页参数
+     * @return
+     * @apiNote <br/>
+     * - 用于大数据页面【应急储备-隔离场所-隔离场所列表】模块数据获取;<br/>
+     * - 用于管理端隔离参数列表。
+     */
+    @GetMapping("/list")
+    public CommonResult<PageUtils<IsolatedPlaceEntity>> list(PageParam pageParam){
+        PageUtils page = isolatedPlaceService.queryPage(pageParam);
+
+        return CommonResult.ok().setResult(page);
+    }
+
+    /**
+     * 新增隔离场所
+     * @param adminToken 管理员token
+     */
+    @PostMapping("/save")
+    public CommonResult<String> save(@RequestHeader("Admin-Token") String adminToken,
+                                     @Valid @RequestBody IsolatedPlaceEntity isolatedPlace,
+                                     BindingResult result){
+        ParamCheck.checkBean(result);
+		isolatedPlaceService.saveEntity(isolatedPlace);
+
+        return CommonResult.ok();
+    }
+
+    /**
+     * 批量新增隔离场所
+     * @param adminToken 管理员token
+     * @param file 模板文件
+     * @return
+     * @apiNote 使用规定的模板文件上传
+     */
+    @PostMapping("/saveByExcel")
+    public CommonResult<String> saveByExcel(@RequestHeader("Admin-Token") String adminToken,
+                                            @RequestParam MultipartFile file) throws IOException {
+        if (file.isEmpty()) {
+            throw new RRException(BizCodeEnume.PARAMETER_ERROR, "文件不能为空");
+        }
+        isolatedPlaceService.saveByExcel(file);
+
+        return CommonResult.ok();
+    }
+
+    /**
+     * 修改隔离场所
+     * @param adminToken 管理员token
+     */
+    @PutMapping("/update")
+    public CommonResult<String> update(@RequestHeader("Admin-Token") String adminToken,
+                                       @Valid @RequestBody IsolatedPlaceEntity isolatedPlace,
+                                       BindingResult result){
+        ParamCheck.checkBean(result);
+
+        if (isolatedPlace.getId() == null) {
+            throw new RRException(BizCodeEnume.PARAMETER_ERROR, "id不能为空");
+        }
+		isolatedPlaceService.updateEntity(isolatedPlace);
+
+        return CommonResult.ok();
+    }
+
+    /**
+     * 修改场地图片
+     * @param adminToken 管理员token
+     * @param isolatedPlaceId 场地id
+     * @param imageNames 图片名称
+     * @return
+     */
+    @PutMapping("/{isolatedPlaceId}/updateImages")
+    public CommonResult<String> updateImages(@RequestHeader("Admin-Token") String adminToken,
+                                             @PathVariable("isolatedPlaceId") Long isolatedPlaceId,
+                                             @RequestBody String[] imageNames) {
+        isolatedPlaceService.updateImages(isolatedPlaceId, Arrays.asList(imageNames));
+        return CommonResult.ok();
+    }
+
+    /**
+     * 删除隔离场所
+     * @param adminToken 管理员token
+     * @param ids 场所id集合
+     * @return
+     */
+    @DeleteMapping("/delete")
+    public CommonResult<String> delete(@RequestHeader("Admin-Token") String adminToken,
+                                       @RequestBody Long[] ids){
+		isolatedPlaceService.removeByIds(Arrays.asList(ids));
+
+        return CommonResult.ok();
+    }
+
+    /**
+     * 隔离场所总览
+     * @return
+     * @apiNote 用于大数据页面【应急储备-隔离场所】模块数据获取
+     */
+    @GetMapping("statistics")
+    public CommonResult<IsolatedPlaceStatisticsVO> statistics () {
+        IsolatedPlaceStatisticsVO vo = isolatedPlaceService.getStatisticsData();
+        return CommonResult.ok().setResult(vo);
+    }
+}

+ 110 - 0
src/main/java/com/chuanghai/travelbigdata/disease/command/controller/NewsFocusController.java

@@ -0,0 +1,110 @@
+package com.chuanghai.travelbigdata.disease.command.controller;
+
+import java.time.LocalDate;
+import java.time.LocalDateTime;
+import java.util.Arrays;
+
+import com.chuanghai.travelbigdata.disease.command.dto.NewsFocusQueryDTO;
+import com.chuanghai.travelbigdata.disease.command.exception.BizCodeEnume;
+import com.chuanghai.travelbigdata.disease.command.exception.RRException;
+import com.chuanghai.travelbigdata.disease.command.utils.CommonResult;
+import com.chuanghai.travelbigdata.disease.command.utils.PageParam;
+import com.chuanghai.travelbigdata.disease.command.utils.PageUtils;
+import com.chuanghai.travelbigdata.disease.command.utils.ParamCheck;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.validation.BindingResult;
+import org.springframework.web.bind.annotation.DeleteMapping;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.PutMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import com.chuanghai.travelbigdata.disease.command.entity.NewsFocusEntity;
+import com.chuanghai.travelbigdata.disease.command.service.NewsFocusService;
+
+import javax.validation.Valid;
+
+/**
+ * 新闻聚焦 
+ *
+ * @author codingliang
+ * @email codingliang@gmail.com
+ * @date 2022-03-22 16:10:11
+ */
+@RestController
+@RequestMapping("newsFocus")
+public class NewsFocusController {
+    @Autowired
+    private NewsFocusService newsFocusService;
+
+    /**
+     * 新闻聚焦列表
+     */
+    @GetMapping("/list")
+    public CommonResult<PageUtils<NewsFocusEntity>> list(PageParam pageParam, NewsFocusQueryDTO queryDTO){
+        PageUtils page = newsFocusService.queryPage(pageParam, queryDTO);
+        return CommonResult.ok().setResult(page);
+    }
+
+    /**
+     * 新闻聚焦详细信息
+     * @param id 新闻id
+     */
+    @GetMapping("/info/{id}")
+    public CommonResult<NewsFocusEntity> info(@PathVariable("id") Long id){
+		NewsFocusEntity newsFocus = newsFocusService.myGetById(id);
+
+        return CommonResult.ok().setResult(newsFocus);
+    }
+
+    /**
+     * 新增新闻聚焦
+     */
+    @PostMapping("/save")
+    public CommonResult<String> save(@Valid @RequestBody NewsFocusEntity newsFocus, BindingResult result){
+        ParamCheck.checkBean(result);
+
+        if (newsFocus.getPublishTime() == null) {
+            newsFocus.setPublishTime(LocalDateTime.now());
+        }
+
+		newsFocusService.saveNewFocus(newsFocus);
+
+        return CommonResult.ok();
+    }
+
+    /**
+     * 新闻聚焦修改
+     */
+    @PutMapping("/update")
+    public CommonResult<String> update(@Valid @RequestBody NewsFocusEntity newsFocus, BindingResult result){
+        ParamCheck.checkBean(result);
+
+        if (newsFocus.getId() == null) {
+            throw new RRException(BizCodeEnume.PARAMETER_ERROR, "id不能为空");
+        }
+
+		newsFocusService.updateNewFocus(newsFocus);
+
+        return CommonResult.ok();
+    }
+
+    /**
+     * 删除新闻聚焦
+     * @param ids ids集合
+     */
+    @DeleteMapping("/delete")
+    public CommonResult<String> delete(@RequestBody Long[] ids){
+        boolean flag = newsFocusService.removeByIds(Arrays.asList(ids));
+
+        if (flag) {
+            return CommonResult.ok();
+        } else {
+            return CommonResult.fail();
+        }
+    }
+
+}

+ 162 - 0
src/main/java/com/chuanghai/travelbigdata/disease/command/controller/ParkingInfoController.java

@@ -0,0 +1,162 @@
+package com.chuanghai.travelbigdata.disease.command.controller;
+
+import com.chuanghai.travelbigdata.disease.command.dto.ParkingRealTimeDataUpdateForServer02DTO;
+import com.chuanghai.travelbigdata.disease.command.entity.ParkingInfoEntity;
+import com.chuanghai.travelbigdata.disease.command.exception.BizCodeEnume;
+import com.chuanghai.travelbigdata.disease.command.exception.RRException;
+import com.chuanghai.travelbigdata.disease.command.service.ParkingDataForServer02Service;
+import com.chuanghai.travelbigdata.disease.command.service.ParkingInfoService;
+import com.chuanghai.travelbigdata.disease.command.service.impl.ParkingRealDataService;
+import com.chuanghai.travelbigdata.disease.command.utils.CommonResult;
+import com.chuanghai.travelbigdata.disease.command.utils.PageParam;
+import com.chuanghai.travelbigdata.disease.command.utils.PageUtils;
+import com.chuanghai.travelbigdata.disease.command.utils.ParamCheck;
+import com.chuanghai.travelbigdata.disease.command.vo.ParkingMiniInfoVO;
+import com.chuanghai.travelbigdata.disease.command.vo.ParkingRealTimeDataVO;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.validation.BindingResult;
+import org.springframework.web.bind.annotation.DeleteMapping;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.PutMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import javax.validation.Valid;
+import javax.validation.constraints.NotNull;
+import javax.validation.constraints.Size;
+import java.util.Arrays;
+import java.util.List;
+
+
+/**
+ * 停车场信息 
+ *
+ * @author codingliang
+ * @email codingliang@gmail.com
+ * @date 2022-05-19 16:17:51
+ */
+@RestController
+@RequestMapping("parking")
+public class ParkingInfoController {
+    @Autowired
+    private ParkingInfoService parkingInfoService;
+    @Autowired
+    private ParkingRealDataService parkingRealDataService;
+    @Autowired
+    private ParkingDataForServer02Service parkingDataForServer02Service;
+
+    /**
+     * 停车场列表
+     * @param keyword 关键字搜索 支持根据名称模糊搜索
+     */
+    @GetMapping("/page")
+    public CommonResult<PageUtils<ParkingInfoEntity>> list(PageParam pageParam, String keyword){
+        PageUtils page = parkingInfoService.queryPage(pageParam, keyword);
+
+        return CommonResult.ok().setResult(page);
+    }
+
+    /**
+     * 停车场列表精简信息
+     */
+    @GetMapping("/listMini")
+    public CommonResult<List<ParkingMiniInfoVO>> listMini(){
+        List<ParkingMiniInfoVO> list = parkingInfoService.listMini();
+
+        return CommonResult.ok().setResult(list);
+    }
+
+
+    /**
+     * 停车场详情
+     */
+    @GetMapping("/info/{id}")
+    public CommonResult<ParkingInfoEntity> info(@PathVariable("id") Long id){
+		ParkingInfoEntity parkingInfo = parkingInfoService.getById(id);
+
+        return CommonResult.ok().setResult(parkingInfo);
+    }
+
+    /**
+     * 新增停车场
+     */
+    @PostMapping("/save")
+    public CommonResult<String> save(@Valid @RequestBody ParkingInfoEntity parkingInfo, BindingResult result){
+        ParamCheck.checkBean(result);
+
+        parkingInfo.setThirdOpenFlag(null);
+        parkingInfo.setThirdOpenId(null);
+		parkingInfoService.save(parkingInfo);
+
+        return CommonResult.ok();
+    }
+
+    /**
+     * 修改停车场
+     */
+    @PutMapping("/update")
+    public CommonResult<String> update(@Valid @RequestBody ParkingInfoEntity parkingInfo, BindingResult result){
+        ParamCheck.checkBean(result);
+
+        if (parkingInfo.getId() == null) {
+            throw new RRException(BizCodeEnume.PARAMETER_ERROR, "停车场id不能为空");
+        }
+
+        parkingInfo.setThirdOpenFlag(null);
+        parkingInfo.setThirdOpenId(null);
+		boolean flag = parkingInfoService.updateById(parkingInfo);
+
+		if (flag) {
+            return CommonResult.ok();
+        } else {
+		    return CommonResult.fail();
+        }
+    }
+
+    /**
+     * 删除停车场
+     */
+    @DeleteMapping("/delete")
+    public CommonResult<String> delete(@RequestBody Long[] ids){
+        parkingInfoService.removeBatchByIds(Arrays.asList(ids));
+        return CommonResult.ok();
+    }
+
+
+    /**
+     * 停车场实时数据
+     * @param parkingId 停车场id
+     * @return
+     */
+    @GetMapping("realData/{parkingId}")
+    public CommonResult<ParkingRealTimeDataVO> realData(@PathVariable("parkingId") Long parkingId) {
+        ParkingRealTimeDataVO realTimeData = parkingRealDataService.getRealTimeDataById(parkingId);
+        return CommonResult.ok().setResult(realTimeData);
+    }
+
+    /**
+     * server02服务商停车场实时数据上传
+     * @param datas 实时数据
+     * @param result
+     * @return
+     * @apiNote server02服务商停车场使用本接口实时上传停车场数据,一次性上传[1-256]之内条数据,超出拒绝上传
+     */
+    @PostMapping("realTimeDataUpdate/server02")
+    public CommonResult<String> realTimeDataUpdateForServer02(@RequestBody
+                                                              @Valid
+                                                              List<ParkingRealTimeDataUpdateForServer02DTO> datas,
+                                                              BindingResult result) {
+        if (datas.size() <= 0) {
+            throw new RRException(BizCodeEnume.PARAMETER_ERROR, "数据不能为空");
+        }
+
+        ParamCheck.checkBean(result);
+
+        parkingDataForServer02Service.updateData(datas);
+
+        return CommonResult.ok();
+    }
+}

+ 150 - 0
src/main/java/com/chuanghai/travelbigdata/disease/command/controller/PeopleAndGoodsDetectionStatisticsController.java

@@ -0,0 +1,150 @@
+package com.chuanghai.travelbigdata.disease.command.controller;
+
+import com.chuanghai.travelbigdata.disease.command.dto.PeopleAndGoodsDetectionStatisticsSaveDTO;
+import com.chuanghai.travelbigdata.disease.command.entity.PeopleAndGoodsDetectionStatisticsEntity;
+import com.chuanghai.travelbigdata.disease.command.exception.BizCodeEnume;
+import com.chuanghai.travelbigdata.disease.command.exception.RRException;
+import com.chuanghai.travelbigdata.disease.command.service.PeopleAndGoodsDetectionStatisticsService;
+import com.chuanghai.travelbigdata.disease.command.utils.CommonResult;
+import com.chuanghai.travelbigdata.disease.command.utils.PageParam;
+import com.chuanghai.travelbigdata.disease.command.utils.PageUtils;
+import com.chuanghai.travelbigdata.disease.command.utils.ParamCheck;
+import com.chuanghai.travelbigdata.disease.command.vo.PeopleAndGoodsDetectionStatisticsVO;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.validation.BindingResult;
+import org.springframework.web.bind.annotation.DeleteMapping;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.PutMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestHeader;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.multipart.MultipartFile;
+
+import javax.validation.Valid;
+import java.io.IOException;
+import java.time.LocalDateTime;
+import java.util.Arrays;
+import java.util.List;
+
+
+/**
+ * 人和物检测统计 
+ *
+ * @author codingliang
+ * @email codingliang@gmail.com
+ * @date 2022-01-12 19:08:03
+ */
+@RestController
+@RequestMapping("peopleAndGoodsDetectionStatistics")
+public class PeopleAndGoodsDetectionStatisticsController {
+
+    @Autowired
+    private PeopleAndGoodsDetectionStatisticsService peopleAndGoodsDetectionStatisticsService;
+
+    /**
+     * 人和物检测统计列表
+     */
+    @GetMapping("/list")
+    public CommonResult<PageUtils<PeopleAndGoodsDetectionStatisticsEntity>> list(PageParam pageParam){
+        PageUtils page = peopleAndGoodsDetectionStatisticsService.queryPage(pageParam);
+
+        return CommonResult.ok().setResult(page);
+    }
+
+    /**
+     * 新增人和物检测统计
+     * @param adminToken 管理员token
+     */
+    @PostMapping("/save")
+    public CommonResult<String> save(@RequestHeader("Admin-Token") String adminToken,
+                                     @Valid @RequestBody PeopleAndGoodsDetectionStatisticsSaveDTO datas,
+                                     BindingResult result){
+        ParamCheck.checkBean(result);
+
+        List<PeopleAndGoodsDetectionStatisticsEntity> entities = datas.getDatas();
+
+        entities.forEach(e -> e.setUpdateTime(LocalDateTime.now()));
+		peopleAndGoodsDetectionStatisticsService.saveBatch(entities);
+
+        return CommonResult.ok();
+    }
+
+    /**
+     * 批量新增人和物检测统计
+     * @param adminToken 管理员token
+     * @param dateStr 统计日期 yyyy-MM-dd
+     * @param file 模板文件
+     * @return
+     * @apiNote 使用指定模板文件上传
+     */
+    @PostMapping("/saveByExcel/{dateStr}")
+    public CommonResult<String> saveByExcel(@RequestHeader("Admin-Token") String adminToken,
+                                            @PathVariable("dateStr") String dateStr,
+                                            @RequestParam MultipartFile file) throws IOException {
+        if (file.isEmpty()) {
+            throw new RRException(BizCodeEnume.PARAMETER_ERROR, "文件不能为空");
+        }
+        peopleAndGoodsDetectionStatisticsService.saveByExcel(dateStr, file);
+        return CommonResult.ok();
+    }
+
+    /**
+     * 修改人和物检测统计数据
+     * @param adminToken 管理员token
+     */
+    @PutMapping("/update")
+    public CommonResult<String> update(@RequestHeader("Admin-Token") String adminToken,
+                                       @Valid @RequestBody PeopleAndGoodsDetectionStatisticsEntity entity,
+                                       BindingResult result){
+        ParamCheck.checkBean(result);
+
+        if (entity.getId() == null) {
+            throw new RRException(BizCodeEnume.PARAMETER_ERROR, "id不能为空");
+        }
+
+        entity.setStatisticsDate(null);
+        entity.setUpdateTime(LocalDateTime.now());
+		peopleAndGoodsDetectionStatisticsService.updateById(entity);
+
+        return CommonResult.ok();
+    }
+
+    /**
+     * 删除人和物检测统计数据
+     * @param adminToken 管理员token
+     * @param ids 数据id集合
+     * @return
+     */
+    @DeleteMapping("/delete")
+    public CommonResult<String> delete(@RequestHeader("Admin-Token") String adminToken,
+                                       @RequestBody Long[] ids){
+		peopleAndGoodsDetectionStatisticsService.removeByIds(Arrays.asList(ids));
+        return CommonResult.ok();
+    }
+
+    /**
+     * 人、物检测统计最新数据
+     * @return
+     * @apiNote 本接口用于大数据页面【重点环节-冷链人物同防】模块数据获取
+     */
+    @GetMapping("lastData")
+    public CommonResult<List<PeopleAndGoodsDetectionStatisticsVO>> getLastData() {
+        List<PeopleAndGoodsDetectionStatisticsVO> last = peopleAndGoodsDetectionStatisticsService.getLastData();
+        return CommonResult.ok().setResult(last);
+    }
+
+    /**
+     * 人、物检测统计最新数据详情
+     * @return
+     * @apiNote 本接口用于大数据页面【重点环节-冷链人物同防-详情】模块数据获取
+     */
+    @GetMapping("lastDataDetail")
+    public CommonResult<List<PeopleAndGoodsDetectionStatisticsEntity>> getLastDataDetail() {
+        List<PeopleAndGoodsDetectionStatisticsEntity> last = peopleAndGoodsDetectionStatisticsService.getLastDataDetail();
+        return CommonResult.ok().setResult(last);
+    }
+}

+ 122 - 0
src/main/java/com/chuanghai/travelbigdata/disease/command/controller/ScenicSpotMaxCapacitySettingController.java

@@ -0,0 +1,122 @@
+package com.chuanghai.travelbigdata.disease.command.controller;
+
+import java.util.Arrays;
+import java.util.List;
+
+import com.chuanghai.travelbigdata.disease.command.exception.BizCodeEnume;
+import com.chuanghai.travelbigdata.disease.command.exception.RRException;
+import com.chuanghai.travelbigdata.disease.command.utils.CommonResult;
+import com.chuanghai.travelbigdata.disease.command.utils.PageParam;
+import com.chuanghai.travelbigdata.disease.command.utils.PageUtils;
+import com.chuanghai.travelbigdata.disease.command.utils.ParamCheck;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.validation.BindingResult;
+import org.springframework.web.bind.annotation.DeleteMapping;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.PutMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import com.chuanghai.travelbigdata.disease.command.entity.ScenicSpotMaxCapacitySettingEntity;
+import com.chuanghai.travelbigdata.disease.command.service.ScenicSpotMaxCapacitySettingService;
+
+import javax.validation.Valid;
+
+
+/**
+ * 景区最大容量设置 
+ *
+ * @author codingliang
+ * @email codingliang@gmail.com
+ * @date 2022-03-22 16:10:10
+ */
+@RestController
+@RequestMapping("scenicSpotMaxCapacitySetting")
+public class ScenicSpotMaxCapacitySettingController {
+
+    @Autowired
+    private ScenicSpotMaxCapacitySettingService scenicSpotMaxCapacitySettingService;
+
+    /**
+     * 乡镇列表
+     * @return
+     */
+    @GetMapping("township/list")
+    public CommonResult<List<String>> townshipList() {
+        List<String> list = scenicSpotMaxCapacitySettingService.getTownshipList();
+        return CommonResult.ok().setResult(list);
+    }
+
+    /**
+     * 设置列表
+     * @param townshipName 乡镇名称
+     * @apiNote 如果需要一次性把所有数据显示出来,可以把pageSize设置的足够大
+     */
+    @GetMapping("/list")
+    public CommonResult<PageUtils<ScenicSpotMaxCapacitySettingEntity>> list(PageParam pageParam, String townshipName){
+        PageUtils page = scenicSpotMaxCapacitySettingService.queryPage(pageParam, townshipName);
+
+        return CommonResult.ok().setResult(page);
+    }
+
+    /**
+     * 设置详情
+     */
+    @GetMapping("/info/{id}")
+    public CommonResult<ScenicSpotMaxCapacitySettingEntity> info(@PathVariable("id") Long id){
+		ScenicSpotMaxCapacitySettingEntity scenicSpotMaxCapacitySetting = scenicSpotMaxCapacitySettingService.getById(id);
+
+        return CommonResult.ok().setResult(scenicSpotMaxCapacitySetting);
+    }
+
+    /**
+     * 新增设置
+     */
+    @PostMapping("/save")
+    public CommonResult<String> save(@Valid @RequestBody ScenicSpotMaxCapacitySettingEntity scenicSpotMaxCapacitySetting, BindingResult result){
+        ParamCheck.checkBean(result);
+
+		scenicSpotMaxCapacitySettingService.save(scenicSpotMaxCapacitySetting);
+
+        return CommonResult.ok();
+    }
+
+    /**
+     * 修改设置
+     */
+    @PutMapping("/update")
+    public CommonResult<String> update(@Valid @RequestBody ScenicSpotMaxCapacitySettingEntity scenicSpotMaxCapacitySetting, BindingResult result){
+        ParamCheck.checkBean(result);
+
+        if (scenicSpotMaxCapacitySetting.getId() == null) {
+            throw new RRException(BizCodeEnume.PARAMETER_ERROR, "id不能为空");
+        }
+
+		boolean flag = scenicSpotMaxCapacitySettingService.updateById(scenicSpotMaxCapacitySetting);
+
+		if (flag) {
+		    return CommonResult.ok();
+        }
+
+		return CommonResult.fail();
+    }
+
+    /**
+     * 删除设置
+     * @param ids 设置id集合
+     */
+    @DeleteMapping("/delete")
+    public CommonResult<String> delete(@RequestBody Long[] ids){
+        boolean flag = scenicSpotMaxCapacitySettingService.removeByIds(Arrays.asList(ids));
+
+        if (flag) {
+            return CommonResult.ok();
+        } else {
+            return CommonResult.fail();
+        }
+    }
+
+}

+ 132 - 0
src/main/java/com/chuanghai/travelbigdata/disease/command/controller/ScenicSpotOverviewController.java

@@ -0,0 +1,132 @@
+package com.chuanghai.travelbigdata.disease.command.controller;
+
+import java.util.Arrays;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.chuanghai.travelbigdata.disease.command.exception.BizCodeEnume;
+import com.chuanghai.travelbigdata.disease.command.exception.RRException;
+import com.chuanghai.travelbigdata.disease.command.utils.CommonResult;
+import com.chuanghai.travelbigdata.disease.command.utils.PageParam;
+import com.chuanghai.travelbigdata.disease.command.utils.PageUtils;
+import com.chuanghai.travelbigdata.disease.command.utils.ParamCheck;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.util.StringUtils;
+import org.springframework.validation.BindingResult;
+import org.springframework.web.bind.annotation.DeleteMapping;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.PutMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import com.chuanghai.travelbigdata.disease.command.entity.ScenicSpotOverviewEntity;
+import com.chuanghai.travelbigdata.disease.command.service.ScenicSpotOverviewService;
+
+import javax.validation.Valid;
+
+/**
+ * 景区概览 
+ *
+ * @author codingliang
+ * @email codingliang@gmail.com
+ * @date 2022-03-09 15:37:44
+ */
+@RestController
+@RequestMapping("scenicSpotOverview")
+public class ScenicSpotOverviewController {
+
+    @Autowired
+    private ScenicSpotOverviewService scenicSpotOverviewService;
+
+    /**
+     * 图片显示地址
+     */
+    @Value("${file.showUrl}")
+    private String showUrl;
+
+    /**
+     * 景区列表
+     */
+    @GetMapping("list")
+    public CommonResult<PageUtils<ScenicSpotOverviewEntity>> list(PageParam pageParam){
+        PageUtils page = scenicSpotOverviewService.queryPage(pageParam);
+
+        return CommonResult.ok().setResult(page);
+    }
+
+    /**
+     * 景区信息(根据景区id查询)
+     */
+    @GetMapping("info/id/{id}")
+    public CommonResult<ScenicSpotOverviewEntity> info(@PathVariable("id") Long id){
+		ScenicSpotOverviewEntity scenicSpotOverview = scenicSpotOverviewService.getById(id);
+
+        scenicSpotOverviewHandle(scenicSpotOverview);
+        return CommonResult.ok().setResult(scenicSpotOverview);
+    }
+
+    /**
+     * 景区信息(根据景区名称查询)
+     */
+    @GetMapping("info/name/{scenicSpotName}")
+    public CommonResult<ScenicSpotOverviewEntity> infoByScenicSpotName(@PathVariable("scenicSpotName") String scenicSpotName){
+        ScenicSpotOverviewEntity scenicSpotOverview = scenicSpotOverviewService.getOne(new QueryWrapper<ScenicSpotOverviewEntity>().eq("scenic_spot_name", scenicSpotName));
+
+        scenicSpotOverviewHandle(scenicSpotOverview);
+        return CommonResult.ok().setResult(scenicSpotOverview);
+    }
+
+    /**
+     * 新增景区
+     */
+    @PostMapping("add")
+    public CommonResult<String> save(@Valid @RequestBody ScenicSpotOverviewEntity scenicSpotOverview, BindingResult result){
+
+        ParamCheck.checkBean(result);
+
+		scenicSpotOverviewService.saveScenicSpot(scenicSpotOverview);
+
+        return CommonResult.ok();
+    }
+
+    /**
+     * 修改景区
+     */
+    @PutMapping("/update")
+    public CommonResult<String> update(@Valid @RequestBody ScenicSpotOverviewEntity scenicSpotOverview,
+                                       BindingResult result){
+
+        if (scenicSpotOverview.getId() == null) {
+            throw new RRException(BizCodeEnume.PARAMETER_ERROR, "景区id不能为空");
+        }
+
+        ParamCheck.checkBean(result);
+
+		scenicSpotOverviewService.updateScenicSpot(scenicSpotOverview);
+
+        return CommonResult.ok();
+    }
+
+    /**
+     * 删除景区
+     */
+    @DeleteMapping("/delete")
+    public CommonResult<String> delete(@RequestBody Long[] ids){
+		scenicSpotOverviewService.removeScenicSpotByIds(Arrays.asList(ids));
+
+        return CommonResult.ok();
+    }
+
+    private void scenicSpotOverviewHandle(ScenicSpotOverviewEntity scenicSpotOverview) {
+        if (scenicSpotOverview == null) {
+            throw new RRException(BizCodeEnume.PARAMETER_ERROR, "景区不存在");
+        }
+        if (StringUtils.hasText(scenicSpotOverview.getImage())) {
+            scenicSpotOverview.setImage(showUrl + scenicSpotOverview.getImage());
+        }
+    }
+
+}

+ 108 - 0
src/main/java/com/chuanghai/travelbigdata/disease/command/controller/ThemeController.java

@@ -0,0 +1,108 @@
+package com.chuanghai.travelbigdata.disease.command.controller;
+
+import com.chuanghai.travelbigdata.disease.command.entity.ThemeEntity;
+import com.chuanghai.travelbigdata.disease.command.exception.BizCodeEnume;
+import com.chuanghai.travelbigdata.disease.command.exception.RRException;
+import com.chuanghai.travelbigdata.disease.command.service.ThemeService;
+import com.chuanghai.travelbigdata.disease.command.utils.CommonResult;
+import com.chuanghai.travelbigdata.disease.command.utils.ParamCheck;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.validation.BindingResult;
+import org.springframework.web.bind.annotation.DeleteMapping;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.PutMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestHeader;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import javax.validation.Valid;
+import java.util.Arrays;
+import java.util.List;
+
+
+/**
+ * 疾控主题 
+ *
+ * @author codingliang
+ * @email codingliang@gmail.com
+ * @date 2022-01-12 19:08:03
+ */
+@RestController
+@RequestMapping("theme")
+public class ThemeController {
+    @Autowired
+    private ThemeService themeService;
+
+    /**
+     * 疾控主题列表
+     */
+    @GetMapping("/list")
+    public CommonResult<List<ThemeEntity>> list(){
+        List<ThemeEntity> list = themeService.list();
+
+        return CommonResult.ok().setResult(list);
+    }
+
+    /**
+     * 新增疾控主题
+     * @param adminToken 管理员token
+     */
+    @PostMapping("/save")
+    public CommonResult<String> save(@RequestHeader("Admin-Token") String adminToken,
+                                     @Valid @RequestBody ThemeEntity theme,
+                                     BindingResult result){
+        ParamCheck.checkBean(result);
+
+		themeService.saveTheme(theme);
+
+        return CommonResult.ok();
+    }
+
+    /**
+     * 修改疾控主题
+     * @param adminToken 管理员token
+     */
+    @PutMapping("/update")
+    public CommonResult<String> update(@RequestHeader("Admin-Token") String adminToken,
+                                       @Valid @RequestBody ThemeEntity theme,
+                                       BindingResult result){
+        ParamCheck.checkBean(result);
+
+        if (theme.getId() == null) {
+            throw new RRException(BizCodeEnume.PARAMETER_ERROR, "id不能为空");
+        }
+
+		themeService.updateThem(theme);
+
+        return CommonResult.ok();
+    }
+
+    /**
+     * 删除疾控主题
+     * @param adminToken 管理员token
+     * @param ids 疾控主题id集合
+     * @return
+     */
+    @DeleteMapping("/delete")
+    public CommonResult<String> delete(@RequestHeader("Admin-Token") String adminToken,
+                                       @RequestBody Long[] ids){
+		themeService.removeByIds(Arrays.asList(ids));
+
+        return CommonResult.ok();
+    }
+
+    /**
+     * 获取当前的疾控主题
+     * @return
+     * @apiNote 本接口用于大数据页面【疫情值守-当前启用专班】模块数据获取
+     */
+    @GetMapping("currentItem")
+    public CommonResult<ThemeEntity> getCurrentItem() {
+        ThemeEntity entity = themeService.getCurrentItem();
+
+        return CommonResult.ok().setResult(entity);
+    }
+
+}

+ 135 - 0
src/main/java/com/chuanghai/travelbigdata/disease/command/controller/ToiletController.java

@@ -0,0 +1,135 @@
+package com.chuanghai.travelbigdata.disease.command.controller;
+
+import com.chuanghai.travelbigdata.disease.command.entity.ToiletBaseEntity;
+import com.chuanghai.travelbigdata.disease.command.exception.BizCodeEnume;
+import com.chuanghai.travelbigdata.disease.command.exception.RRException;
+import com.chuanghai.travelbigdata.disease.command.service.ToiletBaseService;
+import com.chuanghai.travelbigdata.disease.command.service.impl.ToiletRealDataService;
+import com.chuanghai.travelbigdata.disease.command.utils.CommonResult;
+import com.chuanghai.travelbigdata.disease.command.utils.PageParam;
+import com.chuanghai.travelbigdata.disease.command.utils.PageUtils;
+import com.chuanghai.travelbigdata.disease.command.utils.ParamCheck;
+import com.chuanghai.travelbigdata.disease.command.vo.ToiletMiniDataVO;
+import com.chuanghai.travelbigdata.disease.command.vo.ToiletRealTimeDataVO;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.validation.BindingResult;
+import org.springframework.web.bind.annotation.DeleteMapping;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.PutMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import javax.validation.Valid;
+import java.util.Arrays;
+import java.util.List;
+
+
+/**
+ * 厕所基本数据 
+ *
+ * @author codingliang
+ * @email codingliang@gmail.com
+ * @date 2022-05-19 10:31:39
+ */
+@RestController
+@RequestMapping("toilet")
+public class ToiletController {
+
+    @Autowired
+    private ToiletBaseService toiletBaseService;
+    @Autowired
+    private ToiletRealDataService toiletRealDataService;
+
+    /**
+     * 厕所列表
+     * @param keyword 关键字搜索
+     * @apiNote 本接口提供给管理端使用
+     */
+    @GetMapping("/page")
+    public CommonResult<PageUtils<ToiletBaseEntity>> page(PageParam pageParam, String keyword){
+        PageUtils page = toiletBaseService.queryPage(pageParam, keyword);
+
+        return CommonResult.ok().setResult(page);
+    }
+
+    /**
+     * 厕所列表
+     * @apiNote 一次性返回所有厕所列表精简信息
+     */
+    @GetMapping("/list/mini")
+    public CommonResult<List<ToiletMiniDataVO>> listMini(){
+        List<ToiletMiniDataVO> data = toiletBaseService.listAll();
+        return CommonResult.ok().setResult(data);
+    }
+
+
+    /**
+     * 厕所详情信息
+     * @param id id
+     */
+    @GetMapping("/info/{id}")
+    public CommonResult<ToiletBaseEntity> info(@PathVariable("id") Long id){
+		ToiletBaseEntity toiletBase = toiletBaseService.getById(id);
+		if (toiletBase == null) {
+		    throw new RRException(BizCodeEnume.DATA_NOT_EXIST, "数据不存在");
+        }
+
+        return CommonResult.ok().setResult(toiletBase);
+    }
+
+    /**
+     * 新增厕所
+     */
+    @PostMapping("/save")
+    public CommonResult<String> save(@Valid @RequestBody ToiletBaseEntity toiletBase, BindingResult result){
+        ParamCheck.checkBean(result);
+        toiletBase.setThirdOpenFlag(null);
+        toiletBase.setThirdOpenId(null);
+		toiletBaseService.save(toiletBase);
+
+        return CommonResult.ok();
+    }
+
+    /**
+     * 修改厕所
+     */
+    @PutMapping("/update")
+    public CommonResult<String> update(@Valid @RequestBody ToiletBaseEntity toiletBase, BindingResult result){
+        ParamCheck.checkBean(result);
+
+        if (toiletBase.getId() == null) {
+            throw new RRException(BizCodeEnume.PARAMETER_ERROR, "id不能为空");
+        }
+
+        toiletBase.setThirdOpenFlag(null);
+        toiletBase.setThirdOpenId(null);
+		toiletBaseService.updateById(toiletBase);
+        return CommonResult.ok();
+    }
+
+    /**
+     * 删除厕所
+     * @param ids id集合
+     */
+    @DeleteMapping("/delete")
+    public CommonResult<String> delete(@RequestBody Long[] ids){
+        toiletBaseService.removeBatchByIds(Arrays.asList(ids));
+
+        return CommonResult.ok();
+    }
+
+    /**
+     * 厕所实时数据
+     * @param toiletId 厕所id
+     * @return
+     */
+    @GetMapping("realData/{toiletId}")
+    public CommonResult<ToiletRealTimeDataVO> realData(@PathVariable("toiletId") Long toiletId) {
+        ToiletRealTimeDataVO realTimeData = toiletRealDataService.getRealTimeDataById(toiletId);
+        return CommonResult.ok().setResult(realTimeData);
+    }
+
+}

+ 121 - 0
src/main/java/com/chuanghai/travelbigdata/disease/command/controller/WarningOfSmokeRecordController.java

@@ -0,0 +1,121 @@
+package com.chuanghai.travelbigdata.disease.command.controller;
+
+import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
+import com.chuanghai.travelbigdata.disease.command.dto.WarningOfSmokeQueryDTO;
+import com.chuanghai.travelbigdata.disease.command.dto.WarningRecordHandleDTO;
+import com.chuanghai.travelbigdata.disease.command.entity.WarningOfSmokePushSettingEntity;
+import com.chuanghai.travelbigdata.disease.command.entity.WarningOfSmokeRecordEntity;
+import com.chuanghai.travelbigdata.disease.command.exception.BizCodeEnume;
+import com.chuanghai.travelbigdata.disease.command.exception.RRException;
+import com.chuanghai.travelbigdata.disease.command.service.WarningOfSmokePushSettingService;
+import com.chuanghai.travelbigdata.disease.command.service.WarningOfSmokeRecordService;
+import com.chuanghai.travelbigdata.disease.command.utils.CommonResult;
+import com.chuanghai.travelbigdata.disease.command.utils.PageParam;
+import com.chuanghai.travelbigdata.disease.command.utils.PageUtils;
+import com.chuanghai.travelbigdata.disease.command.utils.ParamCheck;
+import com.chuanghai.travelbigdata.disease.command.vo.WarningOfSmokeRecordDetailVO;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.validation.BindingResult;
+import org.springframework.web.bind.annotation.DeleteMapping;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.PutMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import javax.validation.Valid;
+import java.util.Arrays;
+import java.util.List;
+
+
+/**
+ * 冒烟警告记录 
+ *
+ * @author codingliang
+ * @email codingliang@gmail.com
+ * @date 2022-03-09 15:37:44
+ */
+@RestController
+@RequestMapping("warningOfSmokeRecord")
+public class WarningOfSmokeRecordController {
+
+    @Autowired
+    private WarningOfSmokeRecordService warningOfSmokeRecordService;
+    @Autowired
+    private WarningOfSmokePushSettingService warningOfSmokePushSettingService;
+
+    /**
+     * 冒烟警告记录列表
+     */
+    @GetMapping("/list")
+    public CommonResult<PageUtils<WarningOfSmokeRecordEntity>> list(PageParam pageParam, WarningOfSmokeQueryDTO queryDTO){
+        PageUtils page = warningOfSmokeRecordService.queryPage(pageParam, queryDTO);
+
+        return CommonResult.ok().setResult(page);
+    }
+
+    /**
+     * 冒烟警告记录详细信息
+     */
+    @GetMapping("/infoDetail/{id}")
+    public CommonResult<WarningOfSmokeRecordDetailVO> infoDetail(@PathVariable("id") Long id){
+        WarningOfSmokeRecordDetailVO detailVO = warningOfSmokeRecordService.getWarningOfSmokeRecordDetail(id);
+
+        return CommonResult.ok().setResult(detailVO);
+    }
+
+    /**
+     * 冒烟警告记录删除
+     * @param ids 警告记录id集合
+     * @return
+     */
+    @DeleteMapping("/delete")
+    public CommonResult<String> delete(@RequestBody Long[] ids){
+        List<Long> recordIds = Arrays.asList(ids);
+        if (CollectionUtils.isEmpty(recordIds)) {
+            throw new RRException(BizCodeEnume.PARAMETER_ERROR, "ids不能为空");
+        }
+
+        warningOfSmokeRecordService.deleteByIds(recordIds);
+
+        return CommonResult.ok();
+    }
+
+
+    /**
+     * 冒烟警告记录处理
+     */
+    @PutMapping("/handle")
+    public CommonResult<String> handle(@RequestBody WarningRecordHandleDTO handleDTO){
+		warningOfSmokeRecordService.handle(handleDTO);
+
+        return CommonResult.ok();
+    }
+
+    /**
+     * 推送设置
+     * @return
+     */
+    @GetMapping("/setting/info")
+    public CommonResult<WarningOfSmokePushSettingEntity> settingInfo() {
+        WarningOfSmokePushSettingEntity one = warningOfSmokePushSettingService.getOne(null);
+        return CommonResult.ok().setResult(one);
+    }
+
+    /**
+     * 推送设置修改
+     * @return
+     */
+    @PutMapping("/setting/update")
+    public CommonResult<String> settingUpdate(@RequestBody @Valid WarningOfSmokePushSettingEntity setting, BindingResult result) {
+        ParamCheck.checkBean(result);
+
+        if (setting.getId() == null) {
+            throw new RRException(BizCodeEnume.PARAMETER_ERROR, "id不能为空");
+        }
+
+        warningOfSmokePushSettingService.updateById(setting);
+        return CommonResult.ok();
+    }
+}

+ 51 - 0
src/main/java/com/chuanghai/travelbigdata/disease/command/controller/WechatPublicArticleController.java

@@ -0,0 +1,51 @@
+package com.chuanghai.travelbigdata.disease.command.controller;
+
+import com.chuanghai.travelbigdata.disease.command.dto.NewsFocusQueryDTO;
+import com.chuanghai.travelbigdata.disease.command.entity.WechatPublicArticleEntity;
+import com.chuanghai.travelbigdata.disease.command.service.WechatPublicArticleService;
+import com.chuanghai.travelbigdata.disease.command.utils.CommonResult;
+import com.chuanghai.travelbigdata.disease.command.utils.PageParam;
+import com.chuanghai.travelbigdata.disease.command.utils.PageUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ * 微信公众文章
+ *
+ * @author codingliang
+ * @email codingliang@gmail.com
+ * @date 2022-03-08 19:08:03
+ */
+@RestController
+@RequestMapping("wechatArticle")
+public class WechatPublicArticleController {
+
+    @Autowired
+    private WechatPublicArticleService wechatPublicArticleService;
+
+    /**
+     * 同步文章
+     *
+     * @apiNote 从微信服务器同步文章,受微信接口限制,该接口半个小时内只能调用一次
+     * @return
+     */
+    @GetMapping("syncArticle")
+    public CommonResult<String> syncArticle() {
+        int result = wechatPublicArticleService.syncArticleFromWechat();
+        return CommonResult.ok().setResult(result);
+    }
+
+    /**
+     * 文章列表
+     * @param pageParam 分页参数
+     * @param queryDTO 查询参数
+     * @return
+     */
+    @GetMapping("list")
+    public CommonResult<PageUtils<WechatPublicArticleEntity>> list(PageParam pageParam, NewsFocusQueryDTO queryDTO) {
+        PageUtils page = wechatPublicArticleService.queryPage(pageParam, queryDTO);
+        return CommonResult.ok().setResult(page);
+    }
+}

+ 26 - 0
src/main/java/com/chuanghai/travelbigdata/disease/command/converter/Decimal2Serializer.java

@@ -0,0 +1,26 @@
+package com.chuanghai.travelbigdata.disease.command.converter;
+
+import com.fasterxml.jackson.core.JsonGenerator;
+import com.fasterxml.jackson.databind.JsonSerializer;
+import com.fasterxml.jackson.databind.SerializerProvider;
+
+import java.io.IOException;
+import java.math.BigDecimal;
+
+/**
+ * @Author: codingliang
+ * @Description: 小数保留2位返回给前端序列化器,
+ * 具体使用参考{@link com.chuanghai.travelbigdata.disease.command.entity.ConsumptionCategoryStatisticsEntity#getValue}
+ * @Date: 2022-03-09 17:29
+ * @Version: V1.0
+ **/
+public class Decimal2Serializer extends JsonSerializer<Object> {
+
+    @Override
+    public void serialize(Object o, JsonGenerator jsonGenerator, SerializerProvider serializerProvider) throws IOException {
+        if (o != null) {
+            BigDecimal bigDecimal = new BigDecimal(o.toString()).setScale(2, BigDecimal.ROUND_HALF_UP);
+            jsonGenerator.writeString(bigDecimal.toString());
+        }
+    }
+}

+ 38 - 0
src/main/java/com/chuanghai/travelbigdata/disease/command/converter/StringTOLocalDateConverter.java

@@ -0,0 +1,38 @@
+package com.chuanghai.travelbigdata.disease.command.converter;
+
+import com.alibaba.excel.converters.Converter;
+import com.alibaba.excel.enums.CellDataTypeEnum;
+import com.alibaba.excel.metadata.CellData;
+import com.alibaba.excel.metadata.GlobalConfiguration;
+import com.alibaba.excel.metadata.property.ExcelContentProperty;
+
+import java.time.LocalDate;
+
+/**
+ * @Author: codingliang
+ * @Description: 日期转换
+ * @Date: 2021-05-19 14:55
+ * @Version: V1.0
+ **/
+public class StringTOLocalDateConverter implements Converter<LocalDate> {
+
+    @Override
+    public Class supportJavaTypeKey() {
+        return LocalDate.class;
+    }
+
+    @Override
+    public CellDataTypeEnum supportExcelTypeKey() {
+        return CellDataTypeEnum.STRING;
+    }
+
+    @Override
+    public LocalDate convertToJavaData(CellData cellData, ExcelContentProperty contentProperty, GlobalConfiguration globalConfiguration) throws Exception {
+        return LocalDate.parse(cellData.getStringValue());
+    }
+
+    @Override
+    public CellData convertToExcelData(LocalDate value, ExcelContentProperty contentProperty, GlobalConfiguration globalConfiguration) throws Exception {
+        return null;
+    }
+}

+ 16 - 0
src/main/java/com/chuanghai/travelbigdata/disease/command/dao/AdminInfoDao.java

@@ -0,0 +1,16 @@
+package com.chuanghai.travelbigdata.disease.command.dao;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.chuanghai.travelbigdata.disease.command.entity.AdminInfoEntity;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * 管理员信息 
+ * @author codingliang
+ * @email codingliang@gmail.com
+ * @date 2021-05-14 15:05:20
+ */
+@Mapper
+public interface AdminInfoDao extends BaseMapper<AdminInfoEntity> {
+	
+}

+ 9 - 0
src/main/java/com/chuanghai/travelbigdata/disease/command/dao/BroadcastPlayRecordDao.java

@@ -0,0 +1,9 @@
+package com.chuanghai.travelbigdata.disease.command.dao;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.chuanghai.travelbigdata.disease.command.entity.BroadcastPlayRecordEntity;
+import org.apache.ibatis.annotations.Mapper;
+
+@Mapper
+public interface BroadcastPlayRecordDao extends BaseMapper<BroadcastPlayRecordEntity> {
+}

+ 17 - 0
src/main/java/com/chuanghai/travelbigdata/disease/command/dao/ConsumptionCategoryStatisticsDao.java

@@ -0,0 +1,17 @@
+package com.chuanghai.travelbigdata.disease.command.dao;
+
+import com.chuanghai.travelbigdata.disease.command.entity.ConsumptionCategoryStatisticsEntity;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * 消费类别统计 
+ * 
+ * @author codingliang
+ * @email codingliang@gmail.com
+ * @date 2022-03-09 15:37:44
+ */
+@Mapper
+public interface ConsumptionCategoryStatisticsDao extends BaseMapper<ConsumptionCategoryStatisticsEntity> {
+	
+}

+ 19 - 0
src/main/java/com/chuanghai/travelbigdata/disease/command/dao/DetectionStatisticsDao.java

@@ -0,0 +1,19 @@
+package com.chuanghai.travelbigdata.disease.command.dao;
+
+import com.chuanghai.travelbigdata.disease.command.entity.DetectionStatisticsEntity;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.chuanghai.travelbigdata.disease.command.vo.DetectionStatisticsVO;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * 检测统计 
+ * 
+ * @author codingliang
+ * @email codingliang@gmail.com
+ * @date 2022-01-12 19:08:03
+ */
+@Mapper
+public interface DetectionStatisticsDao extends BaseMapper<DetectionStatisticsEntity> {
+
+    DetectionStatisticsVO getCurrentYearCount();
+}

+ 22 - 0
src/main/java/com/chuanghai/travelbigdata/disease/command/dao/DutyArrangementDao.java

@@ -0,0 +1,22 @@
+package com.chuanghai.travelbigdata.disease.command.dao;
+
+import com.chuanghai.travelbigdata.disease.command.entity.DutyArrangementEntity;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.chuanghai.travelbigdata.disease.command.vo.DutyArrangementListForManageVO;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+/**
+ * 值班安排 
+ * 
+ * @author codingliang
+ * @email codingliang@gmail.com
+ * @date 2022-03-09 15:37:45
+ */
+@Mapper
+public interface DutyArrangementDao extends BaseMapper<DutyArrangementEntity> {
+
+    List<DutyArrangementListForManageVO> listOfGroup(@Param("todayWork") String todayWork);
+}

+ 25 - 0
src/main/java/com/chuanghai/travelbigdata/disease/command/dao/DutyArrangementOfUrgentDao.java

@@ -0,0 +1,25 @@
+package com.chuanghai.travelbigdata.disease.command.dao;
+
+import com.chuanghai.travelbigdata.disease.command.entity.DutyArrangementOfUrgentEntity;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.chuanghai.travelbigdata.disease.command.vo.DutyArrangementGroupForManageVO;
+import com.chuanghai.travelbigdata.disease.command.vo.DutyArrangementVO;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+/**
+ * 紧急值班安排 
+ * 
+ * @author codingliang
+ * @email codingliang@gmail.com
+ * @date 2022-01-12 19:08:03
+ */
+@Mapper
+public interface DutyArrangementOfUrgentDao extends BaseMapper<DutyArrangementOfUrgentEntity> {
+
+    List<DutyArrangementVO> getDutyArrangementByDayOfWeek(@Param("dayOfWeek") Integer dayOfWeek);
+
+    List<DutyArrangementGroupForManageVO> listGroupByDayOfWeek();
+}

+ 17 - 0
src/main/java/com/chuanghai/travelbigdata/disease/command/dao/EmergencyBroadcastDispatchingStatisticsDao.java

@@ -0,0 +1,17 @@
+package com.chuanghai.travelbigdata.disease.command.dao;
+
+import com.chuanghai.travelbigdata.disease.command.entity.EmergencyBroadcastDispatchingStatisticsEntity;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * 应急广播调度统计 
+ * 
+ * @author codingliang
+ * @email codingliang@gmail.com
+ * @date 2022-03-09 15:37:45
+ */
+@Mapper
+public interface EmergencyBroadcastDispatchingStatisticsDao extends BaseMapper<EmergencyBroadcastDispatchingStatisticsEntity> {
+	
+}

+ 17 - 0
src/main/java/com/chuanghai/travelbigdata/disease/command/dao/EmergencyDisposalStatisticsDao.java

@@ -0,0 +1,17 @@
+package com.chuanghai.travelbigdata.disease.command.dao;
+
+import com.chuanghai.travelbigdata.disease.command.entity.EmergencyDisposalStatisticsEntity;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * 应急处置统计 
+ * 
+ * @author codingliang
+ * @email codingliang@gmail.com
+ * @date 2022-03-09 15:37:44
+ */
+@Mapper
+public interface EmergencyDisposalStatisticsDao extends BaseMapper<EmergencyDisposalStatisticsEntity> {
+	
+}

+ 26 - 0
src/main/java/com/chuanghai/travelbigdata/disease/command/dao/EmergencySuppliesDao.java

@@ -0,0 +1,26 @@
+package com.chuanghai.travelbigdata.disease.command.dao;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.chuanghai.travelbigdata.disease.command.entity.EmergencySuppliesEntity;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.chuanghai.travelbigdata.disease.command.vo.EmergencySuppliesListVO;
+import com.chuanghai.travelbigdata.disease.command.vo.EmergencySuppliesStatisticsVO;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+/**
+ * 防疫物质 
+ * 
+ * @author codingliang
+ * @email codingliang@gmail.com
+ * @date 2022-01-12 19:08:03
+ */
+@Mapper
+public interface EmergencySuppliesDao extends BaseMapper<EmergencySuppliesEntity> {
+
+    List<EmergencySuppliesStatisticsVO> getStatisticsData();
+
+    IPage<EmergencySuppliesListVO> pageSuppliesGroupByType(@Param("page") IPage<EmergencySuppliesListVO> page);
+}

+ 19 - 0
src/main/java/com/chuanghai/travelbigdata/disease/command/dao/EmergencyTeamDao.java

@@ -0,0 +1,19 @@
+package com.chuanghai.travelbigdata.disease.command.dao;
+
+import com.chuanghai.travelbigdata.disease.command.entity.EmergencyTeamEntity;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.chuanghai.travelbigdata.disease.command.vo.EmergencyTeamStatisticsVO;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * 应急队伍 
+ * 
+ * @author codingliang
+ * @email codingliang@gmail.com
+ * @date 2022-01-12 19:08:03
+ */
+@Mapper
+public interface EmergencyTeamDao extends BaseMapper<EmergencyTeamEntity> {
+
+    EmergencyTeamStatisticsVO getStatisticsData();
+}

+ 20 - 0
src/main/java/com/chuanghai/travelbigdata/disease/command/dao/EmergencyTeamMemberDao.java

@@ -0,0 +1,20 @@
+package com.chuanghai.travelbigdata.disease.command.dao;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.chuanghai.travelbigdata.disease.command.entity.EmergencyTeamMemberEntity;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+/**
+ * 应急队伍成员
+ * 
+ * @author codingliang
+ * @email codingliang@gmail.com
+ * @date 2022-01-12 19:08:03
+ */
+@Mapper
+public interface EmergencyTeamMemberDao extends BaseMapper<EmergencyTeamMemberEntity> {
+    List<String> getTeamNickNamesByTeamId(@Param("teamId") Long teamId);
+}

+ 22 - 0
src/main/java/com/chuanghai/travelbigdata/disease/command/dao/EventPlanningDao.java

@@ -0,0 +1,22 @@
+package com.chuanghai.travelbigdata.disease.command.dao;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.chuanghai.travelbigdata.disease.command.dto.EventPlanningQueryDTO;
+import com.chuanghai.travelbigdata.disease.command.entity.EventPlanningEntity;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.chuanghai.travelbigdata.disease.command.vo.EventPlanningGroupByMonthVO;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+
+/**
+ * 活动策划 
+ * 
+ * @author codingliang
+ * @email codingliang@gmail.com
+ * @date 2022-03-22 16:10:11
+ */
+@Mapper
+public interface EventPlanningDao extends BaseMapper<EventPlanningEntity> {
+
+    IPage<EventPlanningGroupByMonthVO> queryPageGroupByMonth(@Param("page") IPage<EventPlanningEntity> page, @Param("queryDTO") EventPlanningQueryDTO queryDTO);
+}

+ 17 - 0
src/main/java/com/chuanghai/travelbigdata/disease/command/dao/EventPlanningMonthSummaryDao.java

@@ -0,0 +1,17 @@
+package com.chuanghai.travelbigdata.disease.command.dao;
+
+import com.chuanghai.travelbigdata.disease.command.entity.EventPlanningMonthSummaryEntity;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * 活动策划月度总结 
+ * 
+ * @author codingliang
+ * @email codingliang@gmail.com
+ * @date 2022-05-18 17:12:11
+ */
+@Mapper
+public interface EventPlanningMonthSummaryDao extends BaseMapper<EventPlanningMonthSummaryEntity> {
+	
+}

+ 17 - 0
src/main/java/com/chuanghai/travelbigdata/disease/command/dao/FeverClinicOfHospitalStatisticsDao.java

@@ -0,0 +1,17 @@
+package com.chuanghai.travelbigdata.disease.command.dao;
+
+import com.chuanghai.travelbigdata.disease.command.entity.FeverClinicOfHospitalStatisticsEntity;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * 医院发热门诊统计 
+ * 
+ * @author codingliang
+ * @email codingliang@gmail.com
+ * @date 2022-01-12 19:08:03
+ */
+@Mapper
+public interface FeverClinicOfHospitalStatisticsDao extends BaseMapper<FeverClinicOfHospitalStatisticsEntity> {
+	
+}

+ 17 - 0
src/main/java/com/chuanghai/travelbigdata/disease/command/dao/FireRatingRecordDao.java

@@ -0,0 +1,17 @@
+package com.chuanghai.travelbigdata.disease.command.dao;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.chuanghai.travelbigdata.disease.command.entity.FireRatingRecordEntity;
+import com.chuanghai.travelbigdata.disease.command.entity.WeatherRecordEntity;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * 防火等级记录
+ * @author codingliang
+ * @email codingliang@gmail.com
+ * @date 2022-03-15 15:05:20
+ */
+@Mapper
+public interface FireRatingRecordDao extends BaseMapper<FireRatingRecordEntity> {
+	
+}

+ 17 - 0
src/main/java/com/chuanghai/travelbigdata/disease/command/dao/IsolatedPlaceDao.java

@@ -0,0 +1,17 @@
+package com.chuanghai.travelbigdata.disease.command.dao;
+
+import com.chuanghai.travelbigdata.disease.command.entity.IsolatedPlaceEntity;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * 隔离场所 
+ * 
+ * @author codingliang
+ * @email codingliang@gmail.com
+ * @date 2022-01-13 14:32:52
+ */
+@Mapper
+public interface IsolatedPlaceDao extends BaseMapper<IsolatedPlaceEntity> {
+	
+}

+ 17 - 0
src/main/java/com/chuanghai/travelbigdata/disease/command/dao/NewsFocusDao.java

@@ -0,0 +1,17 @@
+package com.chuanghai.travelbigdata.disease.command.dao;
+
+import com.chuanghai.travelbigdata.disease.command.entity.NewsFocusEntity;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * 新闻聚焦 
+ * 
+ * @author codingliang
+ * @email codingliang@gmail.com
+ * @date 2022-03-22 16:10:11
+ */
+@Mapper
+public interface NewsFocusDao extends BaseMapper<NewsFocusEntity> {
+	
+}

+ 17 - 0
src/main/java/com/chuanghai/travelbigdata/disease/command/dao/ParkingDataForServer02Dao.java

@@ -0,0 +1,17 @@
+package com.chuanghai.travelbigdata.disease.command.dao;
+
+import com.chuanghai.travelbigdata.disease.command.entity.ParkingDataForServer02Entity;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * 02号服务商停车场实时数据 
+ * 
+ * @author codingliang
+ * @email codingliang@gmail.com
+ * @date 2022-05-22 10:18:49
+ */
+@Mapper
+public interface ParkingDataForServer02Dao extends BaseMapper<ParkingDataForServer02Entity> {
+	
+}

+ 21 - 0
src/main/java/com/chuanghai/travelbigdata/disease/command/dao/ParkingInfoDao.java

@@ -0,0 +1,21 @@
+package com.chuanghai.travelbigdata.disease.command.dao;
+
+import com.chuanghai.travelbigdata.disease.command.entity.ParkingInfoEntity;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.chuanghai.travelbigdata.disease.command.vo.ParkingMiniInfoVO;
+import org.apache.ibatis.annotations.Mapper;
+
+import java.util.List;
+
+/**
+ * 停车场信息 
+ * 
+ * @author codingliang
+ * @email codingliang@gmail.com
+ * @date 2022-05-19 16:17:51
+ */
+@Mapper
+public interface ParkingInfoDao extends BaseMapper<ParkingInfoEntity> {
+
+    List<ParkingMiniInfoVO> listMini();
+}

+ 17 - 0
src/main/java/com/chuanghai/travelbigdata/disease/command/dao/PeopleAndGoodsDetectionStatisticsDao.java

@@ -0,0 +1,17 @@
+package com.chuanghai.travelbigdata.disease.command.dao;
+
+import com.chuanghai.travelbigdata.disease.command.entity.PeopleAndGoodsDetectionStatisticsEntity;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * 人和物检测统计 
+ * 
+ * @author codingliang
+ * @email codingliang@gmail.com
+ * @date 2022-01-12 19:08:03
+ */
+@Mapper
+public interface PeopleAndGoodsDetectionStatisticsDao extends BaseMapper<PeopleAndGoodsDetectionStatisticsEntity> {
+	
+}

+ 20 - 0
src/main/java/com/chuanghai/travelbigdata/disease/command/dao/ScenicSpotMaxCapacitySettingDao.java

@@ -0,0 +1,20 @@
+package com.chuanghai.travelbigdata.disease.command.dao;
+
+import com.chuanghai.travelbigdata.disease.command.entity.ScenicSpotMaxCapacitySettingEntity;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Mapper;
+
+import java.util.List;
+
+/**
+ * 景区最大容量设置 
+ * 
+ * @author codingliang
+ * @email codingliang@gmail.com
+ * @date 2022-03-22 16:10:10
+ */
+@Mapper
+public interface ScenicSpotMaxCapacitySettingDao extends BaseMapper<ScenicSpotMaxCapacitySettingEntity> {
+
+    List<String> getTownshipList();
+}

+ 17 - 0
src/main/java/com/chuanghai/travelbigdata/disease/command/dao/ScenicSpotOverviewDao.java

@@ -0,0 +1,17 @@
+package com.chuanghai.travelbigdata.disease.command.dao;
+
+import com.chuanghai.travelbigdata.disease.command.entity.ScenicSpotOverviewEntity;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * 景区概览 
+ * 
+ * @author codingliang
+ * @email codingliang@gmail.com
+ * @date 2022-03-09 15:37:44
+ */
+@Mapper
+public interface ScenicSpotOverviewDao extends BaseMapper<ScenicSpotOverviewEntity> {
+	
+}

+ 17 - 0
src/main/java/com/chuanghai/travelbigdata/disease/command/dao/ThemeDao.java

@@ -0,0 +1,17 @@
+package com.chuanghai.travelbigdata.disease.command.dao;
+
+import com.chuanghai.travelbigdata.disease.command.entity.ThemeEntity;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * 疾控主题 
+ * 
+ * @author codingliang
+ * @email codingliang@gmail.com
+ * @date 2022-01-12 19:08:03
+ */
+@Mapper
+public interface ThemeDao extends BaseMapper<ThemeEntity> {
+	
+}

+ 21 - 0
src/main/java/com/chuanghai/travelbigdata/disease/command/dao/ToiletBaseDao.java

@@ -0,0 +1,21 @@
+package com.chuanghai.travelbigdata.disease.command.dao;
+
+import com.chuanghai.travelbigdata.disease.command.entity.ToiletBaseEntity;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.chuanghai.travelbigdata.disease.command.vo.ToiletMiniDataVO;
+import org.apache.ibatis.annotations.Mapper;
+
+import java.util.List;
+
+/**
+ * 厕所基本数据 
+ * 
+ * @author codingliang
+ * @email codingliang@gmail.com
+ * @date 2022-05-19 10:31:39
+ */
+@Mapper
+public interface ToiletBaseDao extends BaseMapper<ToiletBaseEntity> {
+
+    List<ToiletMiniDataVO> listMiniAll();
+}

+ 17 - 0
src/main/java/com/chuanghai/travelbigdata/disease/command/dao/WarningOfSmokePushRecordDao.java

@@ -0,0 +1,17 @@
+package com.chuanghai.travelbigdata.disease.command.dao;
+
+import com.chuanghai.travelbigdata.disease.command.entity.WarningOfSmokePushRecordEntity;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * 冒烟警告推送记录 
+ * 
+ * @author codingliang
+ * @email codingliang@gmail.com
+ * @date 2022-03-09 15:37:44
+ */
+@Mapper
+public interface WarningOfSmokePushRecordDao extends BaseMapper<WarningOfSmokePushRecordEntity> {
+	
+}

+ 9 - 0
src/main/java/com/chuanghai/travelbigdata/disease/command/dao/WarningOfSmokePushSettingDao.java

@@ -0,0 +1,9 @@
+package com.chuanghai.travelbigdata.disease.command.dao;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.chuanghai.travelbigdata.disease.command.entity.WarningOfSmokePushSettingEntity;
+import org.apache.ibatis.annotations.Mapper;
+
+@Mapper
+public interface WarningOfSmokePushSettingDao  extends BaseMapper<WarningOfSmokePushSettingEntity> {
+}

+ 33 - 0
src/main/java/com/chuanghai/travelbigdata/disease/command/dao/WarningOfSmokeRecordDao.java

@@ -0,0 +1,33 @@
+package com.chuanghai.travelbigdata.disease.command.dao;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.chuanghai.travelbigdata.disease.command.dto.WarningOfSmokeQueryDTO;
+import com.chuanghai.travelbigdata.disease.command.entity.WarningOfSmokePushRecordEntity;
+import com.chuanghai.travelbigdata.disease.command.entity.WarningOfSmokeRecordEntity;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Insert;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+import org.apache.ibatis.annotations.Select;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * 冒烟警告记录 
+ * 
+ * @author codingliang
+ * @email codingliang@gmail.com
+ * @date 2022-03-09 15:37:44
+ */
+@Mapper
+public interface WarningOfSmokeRecordDao extends BaseMapper<WarningOfSmokeRecordEntity> {
+
+    IPage<WarningOfSmokeRecordEntity> getRecords(@Param("page") IPage<WarningOfSmokeRecordEntity> page, @Param("queryDTO") WarningOfSmokeQueryDTO queryDTO);
+
+    List<WarningOfSmokePushRecordEntity> getPushRecords(@Param("recordId") Long recordId);
+
+    @Insert("insert into warning_of_smoke_video (id,video,images) values \n" +
+            "(uuid(),#{video},#{pic})")
+    Integer insertVideoByPic(@Param("video") String video,@Param("pic") String pic);
+}

+ 17 - 0
src/main/java/com/chuanghai/travelbigdata/disease/command/dao/WeatherRecordDao.java

@@ -0,0 +1,17 @@
+package com.chuanghai.travelbigdata.disease.command.dao;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.chuanghai.travelbigdata.disease.command.entity.AdminInfoEntity;
+import com.chuanghai.travelbigdata.disease.command.entity.WeatherRecordEntity;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * 天气记录
+ * @author codingliang
+ * @email codingliang@gmail.com
+ * @date 2022-03-15 15:05:20
+ */
+@Mapper
+public interface WeatherRecordDao extends BaseMapper<WeatherRecordEntity> {
+	
+}

+ 16 - 0
src/main/java/com/chuanghai/travelbigdata/disease/command/dao/WechatPublicArticleDao.java

@@ -0,0 +1,16 @@
+package com.chuanghai.travelbigdata.disease.command.dao;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.chuanghai.travelbigdata.disease.command.entity.WechatPublicArticleEntity;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * 微信公众文章
+ * @author codingliang
+ * @email codingliang@gmail.com
+ * @date 2022-03-15 15:05:20
+ */
+@Mapper
+public interface WechatPublicArticleDao extends BaseMapper<WechatPublicArticleEntity> {
+	
+}

+ 26 - 0
src/main/java/com/chuanghai/travelbigdata/disease/command/dto/BroadcastPlayRecordQueryDTO.java

@@ -0,0 +1,26 @@
+package com.chuanghai.travelbigdata.disease.command.dto;
+
+import lombok.Data;
+
+/**
+ * @Author: codingliang
+ * @Description: 广播播放记录查询dto
+ * @Date: 2022-04-07 15:02
+ * @Version: V1.0
+ **/
+@Data
+public class BroadcastPlayRecordQueryDTO {
+
+    /**
+     * 标题 模糊搜索
+     */
+    private String title;
+    /**
+     * 广播类型 精确搜索
+     */
+    private String broadcastType;
+    /**
+     * 消息类型 精确搜索
+     */
+    private String messageType;
+}

+ 101 - 0
src/main/java/com/chuanghai/travelbigdata/disease/command/dto/CameraAlarmMessageDTO.java

@@ -0,0 +1,101 @@
+package com.chuanghai.travelbigdata.disease.command.dto;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import lombok.Data;
+
+import java.time.LocalDateTime;
+
+/**
+ * @Author: codingliang
+ * @Description: rabbitmq camera_alarm队列消息dto
+ * @Date: 2022-03-10 15:38
+ * @Version: V1.0
+ **/
+@Data
+public class CameraAlarmMessageDTO {
+    /**
+     * 99:设备列表、1:结束事件、0:新增事件
+     * (只需要关注status为0的事件)
+     */
+    private Integer status;
+    /**
+     * status为0,1时会有该字段
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private LocalDateTime created_at;
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private LocalDateTime updated_at;
+    /**
+     * status为99时会有该字段
+     */
+    @JsonProperty("data_count")
+    private String dataCount;
+    /**
+     * status为99时会有该字段
+     */
+    private Object[] data;
+    /**
+     * status为0,1时会有该字段
+     */
+    private Long id;
+    /**
+     * 设备id
+     * status为0,1时会有该字段
+     */
+    @JsonProperty("device_id")
+    private Long deviceId;
+
+
+    // == status为0时会有以下字段 ==
+
+    /**
+     * 设备品牌 1:海康、2:大华
+     */
+    @JsonProperty("device_manufacturer")
+    private Integer deviceManufacturer;
+    private Long alarm_id;
+    /**
+     * 设备名称
+     */
+    @JsonProperty("device_name")
+    private String deviceName;
+    @JsonProperty("device_type")
+    private Integer deviceType;
+    /**
+     * 图片
+     */
+    private String image;
+    /**
+     * 视频
+     */
+    private String video;
+    @JsonProperty("rule_id")
+    private Integer ruleId;
+    @JsonProperty("event_channel")
+    private Integer eventChannel;
+    @JsonProperty("fire_max_temperature")
+    private String fireMaxTemperature;
+    @JsonProperty("fire_target_distance")
+    private String fireTargetDistance;
+    /**
+     * 事件类型
+     * 4354:⾏为分析报警信息(海康)、18833:⽕点检测报警(海康)、
+     * 4391:报告报警上传,注:报警柱(海康)、8591:视频移动侦测事件(大华)、
+     * 8561:设备请求对⽅发起对讲事件,报警柱(大华)
+     */
+    @JsonProperty("event_type")
+    private Integer eventType;
+    @JsonProperty("event_type_desc")
+    private String eventTypeDesc;
+    /**
+     * 事件类型
+     */
+    @JsonProperty("event_type_ext")
+    private Integer eventTypeExt;
+    /**
+     * 事件类型描述
+     */
+    @JsonProperty("event_type_ext_desc")
+    private String eventTypeExtDesc;
+}

+ 17 - 0
src/main/java/com/chuanghai/travelbigdata/disease/command/dto/EmergencyTeamMemberQueryDTO.java

@@ -0,0 +1,17 @@
+package com.chuanghai.travelbigdata.disease.command.dto;
+
+import lombok.Data;
+
+/**
+ * @Author: codingliang
+ * @Description: 应急队员查询dto
+ * @Date: 2022-01-18 14:35
+ * @Version: V1.0
+ **/
+@Data
+public class EmergencyTeamMemberQueryDTO {
+    /**
+     * 小队名称
+     */
+    private String teamNickName;
+}

+ 27 - 0
src/main/java/com/chuanghai/travelbigdata/disease/command/dto/EventPlanningQueryDTO.java

@@ -0,0 +1,27 @@
+package com.chuanghai.travelbigdata.disease.command.dto;
+
+import lombok.Data;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.time.LocalDateTime;
+
+/**
+ * @Author: codingliang
+ * @Description: 活动策划查询参数
+ * @Date: 2022-03-22 16:17
+ * @Version: V1.0
+ **/
+@Data
+public class EventPlanningQueryDTO {
+
+    /**
+     * 查询开始时间 yyyy-MM-dd HH:mm:ss
+     */
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private LocalDateTime startTime;
+    /**
+     * 查询结束时间 yyyy-MM-dd HH:mm:ss
+     */
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private LocalDateTime endTime;
+}

+ 27 - 0
src/main/java/com/chuanghai/travelbigdata/disease/command/dto/FeverClinicOfHospitalStatisticsSaveDTO.java

@@ -0,0 +1,27 @@
+package com.chuanghai.travelbigdata.disease.command.dto;
+
+import com.chuanghai.travelbigdata.disease.command.entity.FeverClinicOfHospitalStatisticsEntity;
+import lombok.Data;
+
+import javax.validation.Valid;
+import javax.validation.constraints.NotNull;
+import javax.validation.constraints.Size;
+import java.util.List;
+
+/**
+ * @Author: codingliang
+ * @Description: 发热门诊数据保存vo
+ * @Date: 2022-01-13 20:59
+ * @Version: V1.0
+ **/
+@Data
+public class FeverClinicOfHospitalStatisticsSaveDTO {
+
+    /**
+     * 数据集合
+     */
+    @Valid
+    @NotNull(message = "必须要有一条数据")
+    @Size(min = 1, message = "必须要有一条数据")
+    private List<FeverClinicOfHospitalStatisticsEntity> datas;
+}

+ 27 - 0
src/main/java/com/chuanghai/travelbigdata/disease/command/dto/NewsFocusQueryDTO.java

@@ -0,0 +1,27 @@
+package com.chuanghai.travelbigdata.disease.command.dto;
+
+import lombok.Data;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.time.LocalDateTime;
+
+/**
+ * @Author: codingliang
+ * @Description: 新闻聚焦查询dto
+ * @Date: 2022-03-22 16:32
+ * @Version: V1.0
+ **/
+@Data
+public class NewsFocusQueryDTO {
+
+    /**
+     * 查询开始时间 yyyy-MM-dd HH:mm:ss
+     */
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private LocalDateTime startTime;
+    /**
+     * 查询结束时间 yyyy-MM-dd HH:mm:ss
+     */
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private LocalDateTime endTime;
+}

+ 64 - 0
src/main/java/com/chuanghai/travelbigdata/disease/command/dto/ParkingRealTimeDataUpdateForServer02DTO.java

@@ -0,0 +1,64 @@
+package com.chuanghai.travelbigdata.disease.command.dto;
+
+import lombok.Data;
+
+import javax.validation.Valid;
+import javax.validation.constraints.Min;
+import javax.validation.constraints.NotBlank;
+import javax.validation.constraints.NotNull;
+import javax.validation.constraints.Size;
+import java.util.List;
+
+/**
+ * @Author: codingliang
+ * @Description: 停车场实时数据上传【server02服务商】
+ * @Date: 2022-05-22 10:24
+ * @Version: V1.0
+ **/
+@Data
+public class ParkingRealTimeDataUpdateForServer02DTO {
+
+    /**
+     * 第三方停车id
+     */
+    @NotBlank(message = "第三方停车id不能为空")
+    private String id;
+    /**
+     * 停车场名称
+     */
+    @NotBlank(message = "停车场名称不能为空")
+    private String name;
+    /**
+     * 停车场地址
+     */
+    @NotBlank(message = "停车场地址不能为空")
+    private String address;
+    /**
+     * 车位总数
+     */
+    @NotNull(message = "车位总数不能为空")
+    @Min(value = 0, message = "车位总数数量不能少于0")
+    private Integer total;
+    /**
+     * 车位余量
+     */
+    @NotNull(message = "车位余量不能为空")
+    @Min(value = 0, message = "车位余量不能少于0")
+    private Integer remainder;
+    /**
+     * 经度
+     */
+    @NotBlank(message = "经度不能为空")
+    private String lng;
+    /**
+     * 纬度
+     */
+    @NotBlank(message = "纬度不能为空")
+    private String lat;
+
+    /**
+     * 状态 启用,停用
+     */
+    @NotBlank(message = "状态不能为空")
+    private Boolean status;
+}

+ 27 - 0
src/main/java/com/chuanghai/travelbigdata/disease/command/dto/PeopleAndGoodsDetectionStatisticsSaveDTO.java

@@ -0,0 +1,27 @@
+package com.chuanghai.travelbigdata.disease.command.dto;
+
+import com.chuanghai.travelbigdata.disease.command.entity.PeopleAndGoodsDetectionStatisticsEntity;
+import lombok.Data;
+
+import javax.validation.Valid;
+import javax.validation.constraints.NotNull;
+import javax.validation.constraints.Size;
+import java.util.List;
+
+/**
+ * @Author: codingliang
+ * @Description: 人物同防新增dto
+ * @Date: 2022-01-13 19:52
+ * @Version: V1.0
+ **/
+@Data
+public class PeopleAndGoodsDetectionStatisticsSaveDTO {
+
+    /**
+     * 数据集合
+     */
+    @Valid
+    @Size(min = 1, message = "必须要有一条数据")
+    @NotNull(message = "必须要有一条数据")
+    private List<PeopleAndGoodsDetectionStatisticsEntity> datas;
+}

+ 27 - 0
src/main/java/com/chuanghai/travelbigdata/disease/command/dto/WarningOfSmokeQueryDTO.java

@@ -0,0 +1,27 @@
+package com.chuanghai.travelbigdata.disease.command.dto;
+
+import lombok.Data;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.time.LocalDateTime;
+
+/**
+ * @Author: codingliang
+ * @Description: 冒烟警告查询dto
+ * @Date: 2022-03-17 14:20
+ * @Version: V1.0
+ **/
+@Data
+public class WarningOfSmokeQueryDTO {
+
+    /**
+     * 查询开始时间 yyyy-MM-dd HH:mm:ss
+     */
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private LocalDateTime startTime;
+    /**
+     * 查询结束时间 yyyy-MM-dd HH:mm:ss
+     */
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private LocalDateTime endTime;
+}

+ 22 - 0
src/main/java/com/chuanghai/travelbigdata/disease/command/dto/WarningRecordHandleDTO.java

@@ -0,0 +1,22 @@
+package com.chuanghai.travelbigdata.disease.command.dto;
+
+import lombok.Data;
+
+/**
+ * @Author: codingliang
+ * @Description: 警告记录处理
+ * @Date: 2022-03-11 10:45
+ * @Version: V1.0
+ **/
+@Data
+public class WarningRecordHandleDTO {
+
+    /**
+     * 警告id
+     */
+    private Long warningId;
+    /**
+     * 处理意见描述
+     */
+    private String handleDesc;
+}

+ 51 - 0
src/main/java/com/chuanghai/travelbigdata/disease/command/entity/AdminInfoEntity.java

@@ -0,0 +1,51 @@
+package com.chuanghai.travelbigdata.disease.command.entity;
+
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import lombok.Data;
+
+import javax.validation.constraints.NotBlank;
+import javax.validation.constraints.Pattern;
+import java.io.Serializable;
+
+/**
+ * 管理员信息 
+ * 
+ * @author codingliang
+ * @email codingliang@gmail.com
+ * @date 2021-05-14 15:05:20
+ */
+@Data
+@TableName("admin_info")
+public class AdminInfoEntity implements Serializable {
+	private static final long serialVersionUID = 1L;
+
+	/**
+	 * id,新增时不用传
+	 */
+	@TableId
+	private Long id;
+	/**
+	 * 用户名
+	 */
+	@NotBlank(message = "用户名不能为空")
+	private String userName;
+	/**
+	 * 密码, 新增时不能为空
+	 */
+	@JsonProperty(access = JsonProperty.Access.WRITE_ONLY)
+	private String password;
+	/**
+	 * 管理员类别 0超级管理员、1其他管理员
+	 */
+	@NotBlank(message = "用户类别不能为空")
+	@Pattern(regexp = "^[1-9]*$", message = "管理员类别不能为0")
+	private String adminType;
+	/**
+	 * 状态 0冻结、1正常
+	 */
+	@NotBlank(message = "状态不能为空")
+	@Pattern(regexp = "^[0-1]*$", message = "状态只能为0或1")
+	private String status;
+}

+ 71 - 0
src/main/java/com/chuanghai/travelbigdata/disease/command/entity/BroadcastPlayRecordEntity.java

@@ -0,0 +1,71 @@
+package com.chuanghai.travelbigdata.disease.command.entity;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.Data;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import javax.validation.constraints.NotBlank;
+import java.time.LocalDateTime;
+
+/**
+ * 广播播发记录
+ *
+ * @author codingliang
+ * @email codingliang@gmail.com
+ * @date 2022-03-09 15:37:45
+ */
+@Data
+@TableName("broadcast_play_record")
+public class BroadcastPlayRecordEntity {
+
+    /**
+     * id,新增时不能为空
+     */
+    @TableId
+    private Long id;
+    /**
+     * 播发标题
+     */
+    @NotBlank(message = "播发标题不能为空")
+    private String title;
+    /**
+     * 播发地点
+     */
+    @NotBlank(message = "播发地点不能为空")
+    private String address;
+    /**
+     * 广播类型
+     */
+    @NotBlank(message = "广播类型不能为空")
+    private String broadcastType;
+    /**
+     * 消息类型
+     */
+    @NotBlank(message = "消息类型不能为空")
+    private String messageType;
+    /**
+     * 播发内容
+     */
+    @NotBlank(message = "播发内容不能为空")
+    private String content;
+    /**
+     * 播发时间
+     */
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private LocalDateTime playTime;
+    /**
+     * 附件
+     * 通过上传接口获取临时文件名称
+     */
+    private String extraFile;
+    /**
+     * 新增和修改时不需要传
+     * 附件显示地址Url,extraFileShowUrl 拼接 extraFile为资源访问完整路径
+     */
+    @TableField(exist = false)
+    private String extraFileShowUrl;
+}

+ 44 - 0
src/main/java/com/chuanghai/travelbigdata/disease/command/entity/ConsumptionCategoryStatisticsEntity.java

@@ -0,0 +1,44 @@
+package com.chuanghai.travelbigdata.disease.command.entity;
+
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.chuanghai.travelbigdata.disease.command.converter.Decimal2Serializer;
+import com.fasterxml.jackson.databind.annotation.JsonSerialize;
+import lombok.Data;
+
+import javax.validation.constraints.Min;
+import javax.validation.constraints.NotNull;
+import java.io.Serializable;
+import java.math.BigDecimal;
+
+/**
+ * 消费类别统计 
+ * 
+ * @author codingliang
+ * @email codingliang@gmail.com
+ * @date 2022-03-09 15:37:44
+ */
+@Data
+@TableName("consumption_category_statistics")
+public class ConsumptionCategoryStatisticsEntity implements Serializable {
+	private static final long serialVersionUID = 1L;
+
+	/**
+	 * id
+	 */
+	@TableId
+	@NotNull(message = "类别id不能为空")
+	private Long id;
+	/**
+	 * 类别名称,类别名称不能修改
+	 */
+	private String categoryName;
+	/**
+	 * 消费值 单位:万元
+	 */
+	@NotNull(message = "消费值不能为空")
+	@Min(value = 0, message = "消费值不能少于0")
+	@JsonSerialize(using = Decimal2Serializer.class)
+	private BigDecimal value;
+
+}

+ 63 - 0
src/main/java/com/chuanghai/travelbigdata/disease/command/entity/DetectionStatisticsEntity.java

@@ -0,0 +1,63 @@
+package com.chuanghai.travelbigdata.disease.command.entity;
+
+import com.alibaba.excel.annotation.ExcelProperty;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.Data;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import javax.validation.constraints.NotBlank;
+import javax.validation.constraints.NotNull;
+import java.io.Serializable;
+import java.time.LocalDate;
+import java.time.LocalDateTime;
+
+/**
+ * 检测统计 
+ * 
+ * @author codingliang
+ * @email codingliang@gmail.com
+ * @date 2022-01-12 19:08:03
+ */
+@Data
+@TableName("detection_statistics")
+public class DetectionStatisticsEntity implements Serializable {
+	private static final long serialVersionUID = 1L;
+
+	/**
+	 * id
+	 */
+	@TableId
+	private Long id;
+	/**
+	 * 统计日期
+	 */
+	@DateTimeFormat(pattern = "yyyy-MM-dd")
+	@JsonFormat(pattern = "yyyy-MM-dd")
+	@NotNull(message = "统计日期不能为空")
+	private LocalDate statisticsDate;
+	/**
+	 * 检测对象类别
+	 */
+	@ExcelProperty("检测对象类别")
+	@NotBlank(message = "检测对象类别不能为空")
+	private String peopleType;
+	/**
+	 * 检测人数
+	 */
+	@ExcelProperty("检测人数")
+	@NotNull(message = "检测人数不能为空")
+	private Long detectionCount;
+	/**
+	 * 异常人数
+	 */
+	@ExcelProperty("异常人数")
+	@NotNull(message = "异常人数不能为空")
+	private Long abnormalCount;
+	/**
+	 * 更新时间,不需要传
+	 */
+	private LocalDateTime updateTime;
+
+}

+ 53 - 0
src/main/java/com/chuanghai/travelbigdata/disease/command/entity/DutyArrangementEntity.java

@@ -0,0 +1,53 @@
+package com.chuanghai.travelbigdata.disease.command.entity;
+
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+
+import javax.validation.constraints.NotEmpty;
+import javax.validation.constraints.Pattern;
+import java.io.Serializable;
+
+/**
+ * 值班安排 
+ * 
+ * @author codingliang
+ * @email codingliang@gmail.com
+ * @date 2022-03-09 15:37:45
+ */
+@Data
+@TableName("duty_arrangement")
+public class DutyArrangementEntity implements Serializable {
+	private static final long serialVersionUID = 1L;
+
+	/**
+	 * id,新增时不需要传
+	 */
+	@TableId
+	private Long id;
+	/**
+	 * 值班人
+	 */
+	@NotEmpty(message = "值班人姓名不能为空")
+	private String dutyName;
+	/**
+	 * 值班人电话
+	 */
+	@NotEmpty(message = "值班人电话不能为空")
+	private String dutyPhone;
+	/**
+	 * 值班人部门
+	 */
+	@NotEmpty(message = "值班人部门不能为空")
+	private String dutyDept;
+	/**
+	 * 当天是否值班标识 1是、2否
+	 */
+	@Pattern(regexp = "^[1-2]*$", message = "当天是否值班标识只能为1或2")
+	private String todayWork;
+	/**
+	 * 排序
+	 */
+	private Integer sort;
+
+}

+ 61 - 0
src/main/java/com/chuanghai/travelbigdata/disease/command/entity/DutyArrangementOfUrgentEntity.java

@@ -0,0 +1,61 @@
+package com.chuanghai.travelbigdata.disease.command.entity;
+
+import com.alibaba.excel.annotation.ExcelProperty;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+
+import javax.validation.constraints.NotBlank;
+import javax.validation.constraints.Pattern;
+import java.io.Serializable;
+
+/**
+ * 紧急值班安排 
+ * 
+ * @author codingliang
+ * @email codingliang@gmail.com
+ * @date 2022-01-12 19:08:03
+ */
+@Data
+@TableName("duty_arrangement_of_urgent")
+public class DutyArrangementOfUrgentEntity implements Serializable {
+	private static final long serialVersionUID = 1L;
+
+	/**
+	 * id,新增时不需要传
+	 */
+	@TableId
+	private Long id;
+	/**
+	 * 值班星期 使[1-7]分别代表周一到周日
+	 */
+	@NotBlank(message = "值班星期不能为空")
+	@Pattern(regexp = "^[1-7]*$", message = "值班星期不能为空只能为1-7")
+	@ExcelProperty("值班星期")
+	private String dayOfWeek;
+	/**
+	 * 职务等级
+	 */
+	@NotBlank(message = "职务等级不能为空")
+	@ExcelProperty("职务等级")
+	private String dutyLevel;
+	/**
+	 * 职务名称
+	 */
+	@NotBlank(message = "职务名称不能为空")
+	@ExcelProperty("职务名称")
+	private String dutyName;
+	/**
+	 * 领导名称
+	 */
+	@NotBlank(message = "领导名称不能为空")
+	@ExcelProperty("领导名称")
+	private String leaderName;
+	/**
+	 * 领导联系方式
+	 */
+	@NotBlank(message = "领导联系方式不能为空")
+	@ExcelProperty("联系方式")
+	private String leaderPhone;
+
+}

+ 60 - 0
src/main/java/com/chuanghai/travelbigdata/disease/command/entity/EmergencyBroadcastDispatchingStatisticsEntity.java

@@ -0,0 +1,60 @@
+package com.chuanghai.travelbigdata.disease.command.entity;
+
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+
+import javax.validation.constraints.Max;
+import javax.validation.constraints.Min;
+import javax.validation.constraints.NotBlank;
+import javax.validation.constraints.NotNull;
+import java.io.Serializable;
+import java.math.BigDecimal;
+
+/**
+ * 应急广播调度统计 
+ * 
+ * @author codingliang
+ * @email codingliang@gmail.com
+ * @date 2022-03-09 15:37:45
+ */
+@Data
+@TableName("emergency_broadcast_dispatching_statistics")
+public class EmergencyBroadcastDispatchingStatisticsEntity implements Serializable {
+	private static final long serialVersionUID = 3778243502536461058L;
+
+	/**
+	 * id
+	 */
+	@TableId
+	@NotNull(message = "id不能为空")
+	private Long id;
+	/**
+	 * 设备数量
+	 */
+	@NotNull(message = "设备数量不能为空")
+	@Min(value = 0, message = "设备数量不能少于0")
+	private Integer numOfDevice;
+	/**
+	 * 设备在线率 设备数量*设备在线率=设备在线数量
+	 */
+	@NotNull(message = "设备在线率不能为空")
+	@Min(value = 0, message = "设备在线率不能少于0")
+	@Max(value = 100, message = "设备在线率不能大于100")
+	private BigDecimal rateOfInline;
+	/**
+	 * 广播数目
+	 */
+	@NotNull(message = "广播数目不能为空")
+	@Min(value = 0, message = "广播数目不能少于0")
+	private Long numOfBroadcasts;
+	/**
+	 * 累计播放时长 单位:小时
+	 */
+	private Long broadcastDuration;
+	/**
+	 * 播发时间段 时间段之间使用,分割
+	 */
+	@NotBlank(message = "播发时间段不能为空")
+	private String broadcastTime;
+}

+ 84 - 0
src/main/java/com/chuanghai/travelbigdata/disease/command/entity/EmergencyDisposalStatisticsEntity.java

@@ -0,0 +1,84 @@
+package com.chuanghai.travelbigdata.disease.command.entity;
+
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+
+import javax.validation.constraints.Min;
+import javax.validation.constraints.NotNull;
+import java.io.Serializable;
+
+/**
+ * 应急处置统计 
+ * 
+ * @author codingliang
+ * @email codingliang@gmail.com
+ * @date 2022-03-09 15:37:44
+ */
+@Data
+@TableName("emergency_disposal_statistics")
+public class EmergencyDisposalStatisticsEntity implements Serializable {
+	private static final long serialVersionUID = 1L;
+
+	/**
+	 * id
+	 */
+	@TableId
+	@NotNull(message = "id不能为空")
+	private Long id;
+	/**
+	 * 扑灭火灾次数 单位:次
+	 */
+	@NotNull(message = "扑灭火灾次数不能为空")
+	@Min(value = 0, message = "扑灭火灾次数不能少于0")
+	private Integer numOfPutOutTheFire;
+	/**
+	 * 转移安置人员人数 单位:人次
+	 */
+	@NotNull(message = "转移安置人员人数不能为空")
+	@Min(value = 0, message = "转移安置人员人数不能少于0")
+	private Integer numOfTransfer;
+	/**
+	 * 救治伤员人数 单位:人次
+	 */
+	@NotNull(message = "救治伤员人数不能为空")
+	@Min(value = 0, message = "救治伤员人数不能少于0")
+	private Integer numOfCure;
+	/**
+	 * 保护重要目标次数 单位:次
+	 */
+	@NotNull(message = "保护重要目标次数不能为空")
+	@Min(value = 0, message = "保护重要目标次数不能少于0")
+	private Integer numOfImportantTarget;
+	/**
+	 * 维护社会治安次数 单位:次
+	 */
+	@NotNull(message = "维护社会治安次数不能为空")
+	@Min(value = 0, message = "维护社会治安次数不能少于0")
+	private Integer numOfPublicSecurity;
+	/**
+	 * 发布信息次数 单位:次
+	 */
+	@NotNull(message = "发布信息次数不能为空")
+	@Min(value = 0, message = "发布信息次数不能少于0")
+	private Integer numOfInfo;
+	/**
+	 * 善后处置次数 单位:次
+	 */
+	@NotNull(message = "善后处置次数不能为空")
+	@Min(value = 0, message = "善后处置次数不能少于0")
+	private Integer numOfAftermath;
+	/**
+	 * 火场清理次数 单位:次
+	 */
+	@NotNull(message = "火场清理次数不能为空")
+	@Min(value = 0, message = "火场清理次数不能少于0")
+	private Integer numOfFireClean;
+	/**
+	 * 冒烟警告次数 单位:次
+	 */
+	@NotNull(message = "冒烟警告次数不能为空")
+	@Min(value = 0, message = "冒烟警告次数不能少于0")
+	private Integer numOfSmoke;
+
+}

+ 54 - 0
src/main/java/com/chuanghai/travelbigdata/disease/command/entity/EmergencySuppliesEntity.java

@@ -0,0 +1,54 @@
+package com.chuanghai.travelbigdata.disease.command.entity;
+
+import com.alibaba.excel.annotation.ExcelProperty;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+
+import javax.validation.constraints.NotBlank;
+import javax.validation.constraints.NotNull;
+import java.io.Serializable;
+
+/**
+ * 防疫物资
+ * 
+ * @author codingliang
+ * @email codingliang@gmail.com
+ * @date 2022-01-12 19:08:03
+ */
+@Data
+@TableName("emergency_supplies")
+public class EmergencySuppliesEntity implements Serializable {
+	private static final long serialVersionUID = 1L;
+
+	/**
+	 * id
+	 */
+	@TableId
+	private Long id;
+	/**
+	 * 物资种类
+	 */
+	@ExcelProperty("物资种类")
+	@NotBlank(message = "物资种类不能为空")
+	private String type;
+	/**
+	 * 物资名称
+	 */
+	@ExcelProperty("物资要求")
+	@NotBlank(message = "物资名称不能为空")
+	private String suppliesName;
+	/**
+	 * 物资数量 单位:件
+	 */
+	@ExcelProperty("现有储备(件)")
+	@NotNull(message = "物资数量不能为空")
+	private Integer suppliesNum;
+	/**
+	 * 物资要求数量
+ 	 */
+	@ExcelProperty("储备要求(件)")
+	@NotNull(message = "物资要求数量")
+	private Integer suppliesRequireNum;
+
+}

+ 52 - 0
src/main/java/com/chuanghai/travelbigdata/disease/command/entity/EmergencyTeamEntity.java

@@ -0,0 +1,52 @@
+package com.chuanghai.travelbigdata.disease.command.entity;
+
+import com.alibaba.excel.annotation.ExcelProperty;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+
+import javax.validation.constraints.NotBlank;
+import javax.validation.constraints.NotNull;
+import java.io.Serializable;
+
+/**
+ * 应急队伍 
+ * 
+ * @author codingliang
+ * @email codingliang@gmail.com
+ * @date 2022-01-12 19:08:03
+ */
+@Data
+@TableName("emergency_team")
+public class EmergencyTeamEntity implements Serializable {
+	private static final long serialVersionUID = 1L;
+
+	/**
+	 * id,新增时不用传
+	 */
+	@TableId
+	private Long id;
+	/**
+	 * 队伍名称
+	 */
+	@ExcelProperty("队伍名称")
+	@NotBlank(message = "队伍名称不能为空")
+	private String teamName;
+	/**
+	 * 职责描述
+	 */
+	private String dutyDesc;
+	/**
+	 * 队伍数量 单位:队
+	 */
+	@ExcelProperty("队伍数量")
+	@NotNull(message = "队伍数量不能为空")
+	private Integer teamNum;
+	/**
+	 * 队伍人数 单位:人
+	 */
+	@ExcelProperty("队伍人数")
+	@NotNull(message = "队伍人数不能为空")
+	private Integer teamNumOfPeople;
+
+}

+ 72 - 0
src/main/java/com/chuanghai/travelbigdata/disease/command/entity/EmergencyTeamMemberEntity.java

@@ -0,0 +1,72 @@
+package com.chuanghai.travelbigdata.disease.command.entity;
+
+import com.alibaba.excel.annotation.ExcelProperty;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+import org.springframework.util.StringUtils;
+
+import javax.validation.constraints.NotBlank;
+import javax.validation.constraints.NotNull;
+import java.io.Serializable;
+
+/**
+ * 应急队伍成员
+ * 
+ * @author codingliang
+ * @email codingliang@gmail.com
+ * @date 2022-01-12 19:08:03
+ */
+@Data
+@TableName("emergency_team_member")
+public class EmergencyTeamMemberEntity implements Serializable {
+	private static final long serialVersionUID = 1L;
+
+	/**
+	 * id
+	 */
+	@TableId
+	private Long id;
+	/**
+	 * 队伍id
+	 */
+	@NotNull(message = "队伍id")
+	private Long teamId;
+	/**
+	 * 小队名称
+	 */
+	@ExcelProperty("小队名称")
+	@NotBlank(message = "小队名称不能为空")
+	private String teamNickname;
+	/**
+     * 成员名称
+	 */
+	@ExcelProperty("队员姓名")
+	@NotBlank(message = "成员名称不能为空")
+	private String memberName;
+	/**
+	 * 负责区域
+	 */
+	@ExcelProperty("负责区域")
+	@NotBlank(message = "负责区域不能为空")
+	private String dutyArea;
+	/**
+	 * 职务
+	 */
+	@ExcelProperty("职务")
+	@NotBlank(message = "职务不能为空")
+	private String dutyName;
+	/**
+	 * 工作职责
+	 */
+	@ExcelProperty("工作职责")
+	@NotBlank(message = "工作职责不能为空")
+	private String dutyDesc;
+	/**
+	 * 成员电话
+	 */
+	@ExcelProperty("联系电话")
+	@NotBlank(message = "成员电话不能为空")
+	private String memberPhone;
+
+}

+ 58 - 0
src/main/java/com/chuanghai/travelbigdata/disease/command/entity/EventPlanningEntity.java

@@ -0,0 +1,58 @@
+package com.chuanghai.travelbigdata.disease.command.entity;
+
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import lombok.Data;
+import org.hibernate.validator.constraints.Length;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import javax.validation.constraints.NotBlank;
+import javax.validation.constraints.NotNull;
+import java.io.Serializable;
+import java.time.LocalDateTime;
+
+/**
+ * 活动策划 
+ * 
+ * @author codingliang
+ * @email codingliang@gmail.com
+ * @date 2022-03-22 16:10:11
+ */
+@Data
+@TableName("event_planning")
+public class EventPlanningEntity implements Serializable {
+	private static final long serialVersionUID = 1L;
+
+	/**
+	 * id,新增时不需要传
+	 */
+	@TableId
+	private Long id;
+	/**
+	 * 活动标题
+	 */
+	@NotBlank(message = "活动标题不能为空")
+	@Length(max = 64, message = "标题长度必须小于64")
+	private String title;
+	/**
+	 * 活动时间 yyyy-MM-dd HH:mm:ss
+	 */
+	@NotNull
+	@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+	@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+	private LocalDateTime startTime;
+	/**
+	 * 发布时间 yyyy-MM-dd HH:mm:ss
+	 */
+	@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+	@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+	private LocalDateTime publishTime;
+	/**
+	 * 活动内容,返回如果为null,请使用详情接口获取该字段数据
+	 */
+	@NotBlank(message = "活动内容不能为空")
+	private String content;
+
+}

+ 54 - 0
src/main/java/com/chuanghai/travelbigdata/disease/command/entity/EventPlanningMonthSummaryEntity.java

@@ -0,0 +1,54 @@
+package com.chuanghai.travelbigdata.disease.command.entity;
+
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.Data;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import javax.validation.constraints.NotBlank;
+import java.io.Serializable;
+import java.time.LocalDateTime;
+
+/**
+ * 活动策划月度总结 
+ * 
+ * @author codingliang
+ * @email codingliang@gmail.com
+ * @date 2022-05-18 17:12:11
+ */
+@Data
+@TableName("event_planning_month_summary")
+public class EventPlanningMonthSummaryEntity implements Serializable {
+	private static final long serialVersionUID = -7156541027290890751L;
+	/**
+	 * id
+	 */
+	@TableId
+	private Long id;
+	/**
+	 * 标题
+	 */
+	@NotBlank(message = "标题不能为空")
+	private String title;
+	/**
+	 * 内容
+	 */
+	@NotBlank(message = "内容不能为空")
+	private String content;
+	/**
+	 * 图片 图片名称,多个图片之间使用,分割
+	 */
+	private String images;
+	/**
+	 * 月份 yyyy-MM,不传默认当前月份
+	 */
+	private String month;
+	/**
+	 * 发布时间,不需要传
+	 */
+	@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+	@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+	private LocalDateTime publishTime;
+
+}

+ 61 - 0
src/main/java/com/chuanghai/travelbigdata/disease/command/entity/FeverClinicOfHospitalStatisticsEntity.java

@@ -0,0 +1,61 @@
+package com.chuanghai.travelbigdata.disease.command.entity;
+
+import com.alibaba.excel.annotation.ExcelProperty;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.chuanghai.travelbigdata.disease.command.converter.StringTOLocalDateConverter;
+import lombok.Data;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import javax.validation.constraints.NotBlank;
+import javax.validation.constraints.NotNull;
+import java.io.Serializable;
+import java.time.LocalDate;
+import java.time.LocalDateTime;
+
+/**
+ * 医院发热门诊统计 
+ * 
+ * @author codingliang
+ * @email codingliang@gmail.com
+ * @date 2022-01-12 19:08:03
+ */
+@Data
+@TableName("fever_clinic_of_hospital_statistics")
+public class FeverClinicOfHospitalStatisticsEntity implements Serializable {
+	private static final long serialVersionUID = 1L;
+
+	/**
+	 * id
+	 */
+	@TableId
+	private Long id;
+	/**
+	 * 统计日期
+	 */
+	@ExcelProperty(value = "统计日期", converter = StringTOLocalDateConverter.class)
+	@NotNull(message = "统计日期不能为空")
+	private LocalDate statisticsDate;
+	/**
+	 * 医院名称
+	 */
+	@ExcelProperty("医院名称")
+	@NotBlank(message = "医院名称不能为空")
+	private String hospitalName;
+	/**
+	 * 发热人数
+	 */
+	@ExcelProperty("发热人数")
+	@NotNull(message = "发热人数不能为空")
+	private Long feverClinicCount;
+	/**
+	 * 流病史人数
+	 */
+	@ExcelProperty("流病史人数")
+	@NotNull(message = "流病史人数不能为空")
+	private Long epidemicCount;
+	/**
+	 * 更新时间,不用传
+	 */
+	private LocalDateTime updateTime;
+}

+ 39 - 0
src/main/java/com/chuanghai/travelbigdata/disease/command/entity/FireRatingRecordEntity.java

@@ -0,0 +1,39 @@
+package com.chuanghai.travelbigdata.disease.command.entity;
+
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.Data;
+
+import javax.validation.constraints.NotEmpty;
+import javax.validation.constraints.Pattern;
+import java.time.LocalDateTime;
+
+/**
+ * 天气记录
+ *
+ * @author codingliang
+ * @email codingliang@gmail.com
+ * @date 2022-03-15 15:37:44
+ */
+@Data
+@TableName("fire_rating_record")
+public class FireRatingRecordEntity {
+
+    /**
+     * id
+     */
+    @TableId
+    private Long Id;
+    /**
+     * 等级 1-4分别代表预警Ⅰ到Ⅳ级
+     */
+    @NotEmpty(message = "等级不能为空")
+    @Pattern(regexp = "^[1-4]*$", message = "等级只能为1-4")
+    private String level;
+    /**
+     * 更新时间
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private LocalDateTime updateTime;
+}

+ 90 - 0
src/main/java/com/chuanghai/travelbigdata/disease/command/entity/IsolatedPlaceEntity.java

@@ -0,0 +1,90 @@
+package com.chuanghai.travelbigdata.disease.command.entity;
+
+import com.alibaba.excel.annotation.ExcelProperty;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+
+import javax.validation.constraints.NotBlank;
+import javax.validation.constraints.NotNull;
+import javax.validation.constraints.Pattern;
+import java.io.Serializable;
+
+/**
+ * 隔离场所 
+ * 
+ * @author codingliang
+ * @email codingliang@gmail.com
+ * @date 2022-01-13 14:32:52
+ */
+@Data
+@TableName("isolated_place")
+public class IsolatedPlaceEntity implements Serializable {
+	private static final long serialVersionUID = 1L;
+
+	/**
+	 * id
+	 */
+	@TableId
+	private Long id;
+	/**
+	 * 场所名称
+	 */
+	@ExcelProperty("场所名称")
+	@NotBlank(message = "场所名称不能为空")
+	private String placeName;
+	/**
+	 * 场所地点描述
+	 */
+	@ExcelProperty("场所地址")
+	@NotBlank(message = "场所地点描述不能为空")
+	private String placeAddrDesc;
+	/**
+	 * 是否正在使用 1是、2否
+	 */
+	@ExcelProperty("状态")
+	@NotBlank(message = "是否正在使用不能为空")
+	@Pattern(regexp = "^[1-2]*$", message = "是否正在使用只能为1或2")
+	private String inUse;
+	/**
+	 * 当前隔离人数
+	 */
+	@ExcelProperty("当前隔离人数")
+	@NotNull(message = "当前隔离人数不能为空")
+	private Integer currentIsolatedNums;
+	/**
+	 * 房间总数
+	 */
+	@ExcelProperty("房间总数")
+	@NotNull(message = "房间总数不能为空")
+	private Integer roomNums;
+	/**
+	 * 已使用房间数
+	 */
+	@ExcelProperty("已使用房间数")
+	@NotNull(message = "已使用房间数不能为空")
+	private Integer roomNumsOfUsed;
+	/**
+	 * 场所责任人名称
+	 */
+	@ExcelProperty("场所责任人名称")
+	@NotBlank(message = "场所责任人名称不能为空")
+	private String responsiblerName;
+	/**
+	 * 场所责任人电话
+	 */
+	@ExcelProperty("场所责任人电话")
+	@NotBlank(message = "场所责任人电话不能为空")
+	private String responsiblerPhone;
+	/**
+	 * 场所方案
+	 */
+	@ExcelProperty("场所方案")
+	@NotBlank(message = "参数方案不能为空")
+	private String placePlan;
+	/**
+	 * 场所图片 多张图片使用,分割
+	 */
+	private String placeImgName;
+
+}

+ 65 - 0
src/main/java/com/chuanghai/travelbigdata/disease/command/entity/NewsFocusEntity.java

@@ -0,0 +1,65 @@
+package com.chuanghai.travelbigdata.disease.command.entity;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.Data;
+import org.hibernate.validator.constraints.Length;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import javax.validation.constraints.NotEmpty;
+import java.io.Serializable;
+import java.time.LocalDateTime;
+
+/**
+ * 新闻聚焦 
+ * 
+ * @author codingliang
+ * @email codingliang@gmail.com
+ * @date 2022-03-22 16:10:11
+ */
+@Data
+@TableName("news_focus")
+public class NewsFocusEntity implements Serializable {
+	private static final long serialVersionUID = 1L;
+
+	/**
+	 * id,新增时不用传
+	 */
+	@TableId
+	private Long id;
+	/**
+	 * 标题
+	 */
+	@NotEmpty(message = "标题不能为空")
+	@Length(max = 64, message = "标题不能超过64个字符")
+	private String title;
+	/**
+	 * 发布时间 yyyy-MM-dd HH:mm:ss
+	 */
+	@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+	@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+	private LocalDateTime publishTime;
+	/**
+	 * 来源
+	 */
+	@NotEmpty(message = "来源不能为空")
+	private String source;
+	/**
+	 * 内容
+	 */
+	@NotEmpty(message = "内容不能为空")
+	private String content;
+	/**
+	 * 图片
+	 */
+	@NotEmpty(message = "图片不能为空")
+	private String image;
+
+	/**
+	 * 图片名称
+	 */
+	@TableField(exist = false)
+	private String imageName;
+}

+ 48 - 0
src/main/java/com/chuanghai/travelbigdata/disease/command/entity/ParkingDataForServer02Entity.java

@@ -0,0 +1,48 @@
+package com.chuanghai.travelbigdata.disease.command.entity;
+
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.time.LocalDateTime;
+
+/**
+ * 02号服务商停车场实时数据 
+ * 
+ * @author codingliang
+ * @email codingliang@gmail.com
+ * @date 2022-05-22 10:18:49
+ */
+@Data
+@TableName("parking_data_for_server02")
+public class ParkingDataForServer02Entity implements Serializable {
+	private static final long serialVersionUID = 1L;
+
+	/**
+	 * id
+	 */
+	@TableId
+	private Long id;
+	/**
+	 * 第三方平台id 服务商停车场id
+	 */
+	private String thirdOpenId;
+	/**
+	 * 总车位数量
+	 */
+	private Integer numOfTotal;
+	/**
+	 * 余位数量
+	 */
+	private Integer numberOfRemainder;
+	/**
+	 * 状态 1可用、2停用
+	 */
+	private String status;
+	/**
+	 * 更新时间
+	 */
+	private LocalDateTime updateTime;
+
+}

+ 73 - 0
src/main/java/com/chuanghai/travelbigdata/disease/command/entity/ParkingInfoEntity.java

@@ -0,0 +1,73 @@
+package com.chuanghai.travelbigdata.disease.command.entity;
+
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+
+import javax.validation.constraints.Min;
+import javax.validation.constraints.NotBlank;
+import javax.validation.constraints.NotNull;
+import javax.validation.constraints.Pattern;
+import java.io.Serializable;
+
+/**
+ * 停车场信息 
+ * 
+ * @author codingliang
+ * @email codingliang@gmail.com
+ * @date 2022-05-19 16:17:51
+ */
+@Data
+@TableName("parking_info")
+public class ParkingInfoEntity implements Serializable {
+	private static final long serialVersionUID = 2174237292805208363L;
+	/**
+	 * id
+	 */
+	@TableId
+	private Long id;
+	/**
+	 * 名称
+	 */
+	@NotBlank(message = "名称不能为空")
+	private String name;
+	/**
+	 * 地址
+	 */
+	@NotBlank(message = "地址不能为空")
+	private String addrDesc;
+	/**
+	 * 营业时间
+	 */
+	@NotBlank(message = "营业时间不能为空")
+	private String openTime;
+	/**
+	 * 容量
+	 */
+	@NotNull(message = "容量不能为空")
+	@Min(value = 0, message = "容量不能小于0")
+	private Integer capacity;
+	/**
+	 * 经纬度 经纬度之间使用,分割
+	 */
+	@NotBlank(message = "不能为空")
+	private String longitudeAndLatitude;
+	/**
+	 * 状态 1正常开放,2未开放
+	 */
+	@Pattern(regexp = "^[1-2]*$", message = "状态只能为1或2")
+	private String status = "1";
+	/**
+	 * 排序
+	 */
+	private Integer sort = 0;
+
+	/**
+	 * 第三方对接标识 程序内部使用,不需要在管理系统展示
+	 */
+	private String thirdOpenFlag;
+	/**
+	 * 第三方对接id 程序内部使用,不需要在管理系统展示
+	 */
+	private String thirdOpenId;
+}

+ 87 - 0
src/main/java/com/chuanghai/travelbigdata/disease/command/entity/PeopleAndGoodsDetectionStatisticsEntity.java

@@ -0,0 +1,87 @@
+package com.chuanghai.travelbigdata.disease.command.entity;
+
+import com.alibaba.excel.annotation.ExcelProperty;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.Data;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import javax.validation.constraints.NotBlank;
+import javax.validation.constraints.NotNull;
+import java.io.Serializable;
+import java.time.LocalDate;
+import java.time.LocalDateTime;
+
+/**
+ * 人和物检测统计 
+ * 
+ * @author codingliang
+ * @email codingliang@gmail.com
+ * @date 2022-01-12 19:08:03
+ */
+@Data
+@TableName("people_and_goods_detection_statistics")
+public class PeopleAndGoodsDetectionStatisticsEntity implements Serializable {
+	private static final long serialVersionUID = 1L;
+
+	/**
+	 * id
+	 */
+	@TableId
+	private Long id;
+	/**
+	 * 统计日期
+	 */
+	@DateTimeFormat(pattern = "yyyy-MM-dd")
+	@JsonFormat(pattern = "yyyy-MM-dd")
+	@NotNull(message = "统计日期不能为空")
+	private LocalDate statisticsDate;
+	/**
+	 * 种类名称
+	 */
+	@ExcelProperty("检测对象名称")
+	@NotBlank(message = "种类名称不能为空")
+	private String typeName;
+	/**
+	 * 屠宰数量
+	 */
+	@ExcelProperty("屠宰数量(件)")
+	@NotNull(message = "屠宰数量不能为空")
+	private Long slaughterCount;
+	/**
+	 * 生产加工数量
+	 */
+	@ExcelProperty("生产加工数量(件)")
+	@NotNull(message = "生产加工数量不能为空")
+	private Long productionProcessingCount;
+	/**
+	 * 储存运输数量
+	 */
+	@ExcelProperty("储存运输数量(件)")
+	@NotNull(message = "储存运输数量不能为空")
+	private Long storageTransportationCount;
+	/**
+	 * 经营营销数量
+	 */
+	@ExcelProperty("经营营销数量(件)")
+	@NotNull(message = "经营营销数量不能为空")
+	private Long businessMarketingCount;
+	/**
+	 * 检测总数量
+	 */
+	@ExcelProperty("检测数量合计(件)")
+	@NotNull(message = "检测数量不能为空")
+	private Long detectionCount;
+	/**
+	 * 异常总数量
+	 */
+	@ExcelProperty("阳性数量合计(件)")
+	@NotNull(message = "异常数量不能为空")
+	private Long abnormalCount;
+	/**
+	 * 更新时间,不需要传
+	 */
+	private LocalDateTime updateTime;
+
+}

+ 48 - 0
src/main/java/com/chuanghai/travelbigdata/disease/command/entity/ScenicSpotMaxCapacitySettingEntity.java

@@ -0,0 +1,48 @@
+package com.chuanghai.travelbigdata.disease.command.entity;
+
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+
+import javax.validation.constraints.NotEmpty;
+import javax.validation.constraints.NotNull;
+import java.io.Serializable;
+
+/**
+ * 景区最大容量设置 
+ * 
+ * @author codingliang
+ * @email codingliang@gmail.com
+ * @date 2022-03-22 16:10:10
+ */
+@Data
+@TableName("scenic_spot_max_capacity_setting")
+public class ScenicSpotMaxCapacitySettingEntity implements Serializable {
+	private static final long serialVersionUID = 1L;
+
+	/**
+	 * id,新增时不需要传
+	 */
+	@TableId
+	private Long id;
+	/**
+	 * 景点名称
+	 */
+	@NotEmpty(message = "景点名称不能为空")
+	private String scenicSpotName;
+	/**
+	 * 所属乡镇
+	 */
+	@NotEmpty(message = "所属乡镇不能为空")
+	private String township;
+	/**
+	 * 最大容量 单位:人
+	 */
+	@NotNull(message = "最大容量不能为空")
+	private Integer maxCapacity;
+	/**
+	 * 排序
+	 */
+	private Integer sort;
+
+}

+ 0 - 0
src/main/java/com/chuanghai/travelbigdata/disease/command/entity/ScenicSpotOverviewEntity.java


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