Browse Source

Merge branch 'server-165' into usky-zyj

# Conflicts:
#	service-meeting/service-meeting-biz/src/main/java/com/usky/meeting/service/impl/MeetingRoomServiceImpl.java
#	service-meeting/service-meeting-biz/src/main/java/com/usky/meeting/service/vo/MeetingRoomReservationVO.java
james 1 year ago
parent
commit
a3aba87dad
63 changed files with 3106 additions and 83 deletions
  1. 3 1
      pom.xml
  2. 20 0
      service-agbox/pom.xml
  3. 27 0
      service-agbox/service-agbox-api/pom.xml
  4. 56 0
      service-agbox/service-agbox-api/src/main/java/com/usky/agbox/RemotePatrolAgBoxService.java
  5. 34 0
      service-agbox/service-agbox-api/src/main/java/com/usky/agbox/domain/EventVO.java
  6. 105 0
      service-agbox/service-agbox-api/src/main/java/com/usky/agbox/domain/SysUserVO.java
  7. 47 0
      service-agbox/service-agbox-api/src/main/java/com/usky/agbox/factory/RemotePatrolAgBoxFallbackFactory.java
  8. 95 0
      service-agbox/service-agbox-biz/pom.xml
  9. 45 0
      service-agbox/service-agbox-biz/src/main/java/com/usky/agbox/RuoYiSystemApplication.java
  10. 109 0
      service-agbox/service-agbox-biz/src/main/java/com/usky/agbox/controller/MybatisGeneratorUtils.java
  11. 44 0
      service-agbox/service-agbox-biz/src/main/java/com/usky/agbox/controller/api/patrolAgboxControllerApi.java
  12. 68 0
      service-agbox/service-agbox-biz/src/main/java/com/usky/agbox/controller/web/patrolAgboxController.java
  13. 87 0
      service-agbox/service-agbox-biz/src/main/java/com/usky/agbox/service/job/patrolAgbox.java
  14. 137 0
      service-agbox/service-agbox-biz/src/main/java/com/usky/agbox/service/util/HttpClientUtils.java
  15. 34 0
      service-agbox/service-agbox-biz/src/main/java/com/usky/agbox/service/vo/EventVO.java
  16. 25 0
      service-agbox/service-agbox-biz/src/main/resources/bootstrap.yml
  17. 108 0
      service-agbox/service-agbox-biz/src/main/resources/doc/index.adoc
  18. 94 0
      service-agbox/service-agbox-biz/src/main/resources/logback.xml
  19. 15 0
      service-agbox/service-agbox-biz/src/main/resources/smart-doc.json
  20. 6 0
      service-fire/service-fire-biz/pom.xml
  21. 59 0
      service-fire/service-fire-biz/src/main/java/com/usky/fire/controller/web/DataJinganAnalysisController.java
  22. 64 0
      service-fire/service-fire-biz/src/main/java/com/usky/fire/controller/web/DataJinganPersonController.java
  23. 58 0
      service-fire/service-fire-biz/src/main/java/com/usky/fire/controller/web/PatrolInspectionAttendanceController.java
  24. 8 0
      service-fire/service-fire-biz/src/main/java/com/usky/fire/controller/web/PatrolInspectionPersonnelController.java
  25. 59 0
      service-fire/service-fire-biz/src/main/java/com/usky/fire/controller/web/PatrolInspectionTypeController.java
  26. 163 0
      service-fire/service-fire-biz/src/main/java/com/usky/fire/domain/DataJinganAnalysis.java
  27. 131 0
      service-fire/service-fire-biz/src/main/java/com/usky/fire/domain/DataJinganPerson.java
  28. 100 0
      service-fire/service-fire-biz/src/main/java/com/usky/fire/domain/PatrolInspectionAttendance.java
  29. 75 0
      service-fire/service-fire-biz/src/main/java/com/usky/fire/domain/PatrolInspectionPersonnel.java
  30. 60 0
      service-fire/service-fire-biz/src/main/java/com/usky/fire/domain/PatrolInspectionType.java
  31. 16 0
      service-fire/service-fire-biz/src/main/java/com/usky/fire/mapper/DataJinganAnalysisMapper.java
  32. 16 0
      service-fire/service-fire-biz/src/main/java/com/usky/fire/mapper/DataJinganPersonMapper.java
  33. 16 0
      service-fire/service-fire-biz/src/main/java/com/usky/fire/mapper/PatrolInspectionAttendanceMapper.java
  34. 2 0
      service-fire/service-fire-biz/src/main/java/com/usky/fire/mapper/PatrolInspectionPersonnelMapper.java
  35. 16 0
      service-fire/service-fire-biz/src/main/java/com/usky/fire/mapper/PatrolInspectionTypeMapper.java
  36. 34 0
      service-fire/service-fire-biz/src/main/java/com/usky/fire/service/DataJinganAnalysisService.java
  37. 32 0
      service-fire/service-fire-biz/src/main/java/com/usky/fire/service/DataJinganPersonService.java
  38. 25 0
      service-fire/service-fire-biz/src/main/java/com/usky/fire/service/PatrolInspectionAttendanceService.java
  39. 4 0
      service-fire/service-fire-biz/src/main/java/com/usky/fire/service/PatrolInspectionPersonnelService.java
  40. 24 0
      service-fire/service-fire-biz/src/main/java/com/usky/fire/service/PatrolInspectionTypeService.java
  41. 55 0
      service-fire/service-fire-biz/src/main/java/com/usky/fire/service/impl/DataJinganAnalysisServiceImpl.java
  42. 51 0
      service-fire/service-fire-biz/src/main/java/com/usky/fire/service/impl/DataJinganPersonServiceImpl.java
  43. 177 0
      service-fire/service-fire-biz/src/main/java/com/usky/fire/service/impl/PatrolInspectionAttendanceServiceImpl.java
  44. 41 3
      service-fire/service-fire-biz/src/main/java/com/usky/fire/service/impl/PatrolInspectionPersonnelServiceImpl.java
  45. 85 0
      service-fire/service-fire-biz/src/main/java/com/usky/fire/service/impl/PatrolInspectionTypeServiceImpl.java
  46. 9 8
      service-fire/service-fire-biz/src/main/java/com/usky/fire/service/impl/ReportConfigServiceImpl.java
  47. 70 0
      service-fire/service-fire-biz/src/main/java/com/usky/fire/service/vo/PatrolInspectionPersonnelVo.java
  48. 37 0
      service-fire/service-fire-biz/src/main/resources/mapper/fire/DataJinganAnalysisMapper.xml
  49. 30 0
      service-fire/service-fire-biz/src/main/resources/mapper/fire/DataJinganPersonMapper.xml
  50. 23 0
      service-fire/service-fire-biz/src/main/resources/mapper/fire/PatrolInspectionAttendanceMapper.xml
  51. 15 0
      service-fire/service-fire-biz/src/main/resources/mapper/fire/PatrolInspectionPersonnelMapper.xml
  52. 16 0
      service-fire/service-fire-biz/src/main/resources/mapper/fire/PatrolInspectionTypeMapper.xml
  53. 6 0
      service-iot/service-iot-biz/pom.xml
  54. 43 0
      service-iot/service-iot-biz/src/main/java/com/usky/iot/controller/web/BaseAppInfoController.java
  55. 106 0
      service-iot/service-iot-biz/src/main/java/com/usky/iot/domain/BaseAppInfo.java
  56. 16 0
      service-iot/service-iot-biz/src/main/java/com/usky/iot/mapper/BaseAppInfoMapper.java
  57. 22 0
      service-iot/service-iot-biz/src/main/java/com/usky/iot/service/BaseAppInfoService.java
  58. 6 1
      service-iot/service-iot-biz/src/main/java/com/usky/iot/service/impl/BaseAlarmServiceImpl.java
  59. 76 0
      service-iot/service-iot-biz/src/main/java/com/usky/iot/service/impl/BaseAppInfoServiceImpl.java
  60. 25 0
      service-iot/service-iot-biz/src/main/resources/mapper/iot/BaseAppInfoMapper.xml
  61. 70 70
      service-meeting/service-meeting-biz/src/main/java/com/usky/meeting/service/impl/MeetingRoomServiceImpl.java
  62. 5 0
      service-website/service-website-biz/src/main/java/com/usky/website/domain/SiteCategory.java
  63. 1 0
      service-website/service-website-biz/src/main/resources/mapper/website/SiteCategoryMapper.xml

+ 3 - 1
pom.xml

@@ -76,9 +76,11 @@
     <module>service-issue</module>
 
 
-
     <module>service-meeting</module>
 
+
+    <module>service-agbox</module>
+
   </modules>
           
   

+ 20 - 0
service-agbox/pom.xml

@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <parent>
+        <artifactId>usky-modules</artifactId>
+        <groupId>com.usky</groupId>
+        <version>0.0.1</version>
+    </parent>
+    <modelVersion>4.0.0</modelVersion>
+
+    <artifactId>service-agbox</artifactId>
+
+    <packaging>pom</packaging>
+    <version>0.0.1</version>
+
+    <modules>
+        <module>service-agbox-biz</module>
+        <module>service-agbox-api</module>
+    </modules>
+</project>

+ 27 - 0
service-agbox/service-agbox-api/pom.xml

@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <parent>
+        <artifactId>service-agbox</artifactId>
+        <groupId>com.usky</groupId>
+        <version>0.0.1</version>
+    </parent>
+    <modelVersion>4.0.0</modelVersion>
+
+    <artifactId>service-agbox-api</artifactId>
+    <!-- SpringCloud Openfeign -->
+    <dependencies>
+        <dependency>
+            <groupId>org.springframework.cloud</groupId>
+            <artifactId>spring-cloud-starter-openfeign</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>com.usky</groupId>
+            <artifactId>usky-common-core</artifactId>
+        </dependency>
+    </dependencies>
+
+    <build>
+        <finalName>${project.artifactId}</finalName>
+    </build>
+
+</project>

+ 56 - 0
service-agbox/service-agbox-api/src/main/java/com/usky/agbox/RemotePatrolAgBoxService.java

@@ -0,0 +1,56 @@
+package com.usky.agbox;
+
+import com.alibaba.fastjson.JSONObject;
+import com.usky.agbox.factory.RemotePatrolAgBoxFallbackFactory;
+import org.springframework.cloud.openfeign.FeignClient;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+
+/**
+ * @author han
+ * @date 2024/04/02 15:07
+ */
+@FeignClient(contextId = "remotePatrolAgBoxService", value = "service-agbox", fallbackFactory =
+        RemotePatrolAgBoxFallbackFactory.class)
+public interface RemotePatrolAgBoxService {
+    /**
+     * 获得事件编码
+     *
+     * @return 事件编码数组
+     */
+    @GetMapping("/getEventCode")
+    JSONObject getEventCode();
+
+    /**
+     * 获取设备列表信息
+     *
+     * @return 设备列表数组
+     */
+    @GetMapping("/getDeviceList")
+    JSONObject getDeviceList();
+
+    /**
+     * 更新心跳信息
+     *
+     * @return 更新结果
+     */
+    @PostMapping("/updateHeart")
+    JSONObject updateHeart(@RequestBody String requestBody);
+
+    /**
+     * 添加事件信息
+     *
+     * @return 添加结果
+     */
+    @PostMapping("/addEvent")
+    JSONObject addEvent(@RequestBody String requestBody);
+
+    /**
+     * 获取事件信息
+     *
+     * @return 事件信息数组
+     */
+    @PostMapping("/getEvent")
+    JSONObject getEvent(@RequestBody String requestBody);
+}

+ 34 - 0
service-agbox/service-agbox-api/src/main/java/com/usky/agbox/domain/EventVO.java

@@ -0,0 +1,34 @@
+package com.usky.agbox.domain;
+
+import lombok.Data;
+
+import java.util.List;
+
+@Data
+public class EventVO {
+    /**
+     * 设备ID
+     */
+    private String deviceId;
+
+    /**
+     * 事件时间
+     */
+    private String triggerTime;
+
+    /**
+     * 事件编码
+     */
+    private Integer eventCode;
+
+    /**
+     * 人员姓名
+     */
+    private String name;
+
+    /**
+     * 证件编号
+     */
+    private String certifiedNo;
+
+}

+ 105 - 0
service-agbox/service-agbox-api/src/main/java/com/usky/agbox/domain/SysUserVO.java

@@ -0,0 +1,105 @@
+package com.usky.agbox.domain;
+
+
+import lombok.Data;
+
+import java.time.LocalDateTime;
+
+@Data
+public class SysUserVO {
+
+    /**
+     * 用户ID
+     */
+    private Long userId;
+
+    /**
+     * 部门ID
+     */
+    private Long deptId;
+
+    /**
+     * 用户账号
+     */
+    private String userName;
+
+    /**
+     * 用户昵称
+     */
+    private String nickName;
+
+    /**
+     * 用户类型(00系统用户)
+     */
+    private String userType;
+
+    /**
+     * 用户邮箱
+     */
+    private String email;
+
+    /**
+     * 手机号码
+     */
+    private String phonenumber;
+
+    /**
+     * 用户性别(0男 1女 2未知)
+     */
+    private String sex;
+
+    /**
+     * 头像地址
+     */
+    private String avatar;
+
+    /**
+     * 密码
+     */
+    private String password;
+
+    /**
+     * 帐号状态(0正常 1停用)
+     */
+    private String status;
+
+    /**
+     * 删除标志(0代表存在 2代表删除)
+     */
+    private String delFlag;
+
+    /**
+     * 最后登录IP
+     */
+    private String loginIp;
+
+    /**
+     * 最后登录时间
+     */
+    private LocalDateTime loginDate;
+
+    /**
+     * 创建者
+     */
+    private String createBy;
+
+    /**
+     * 创建时间
+     */
+    private LocalDateTime createTime;
+
+    /**
+     * 更新者
+     */
+    private String updateBy;
+
+    /**
+     * 更新时间
+     */
+    private LocalDateTime updateTime;
+
+    /**
+     * 备注
+     */
+    private String remark;
+}

+ 47 - 0
service-agbox/service-agbox-api/src/main/java/com/usky/agbox/factory/RemotePatrolAgBoxFallbackFactory.java

@@ -0,0 +1,47 @@
+package com.usky.agbox.factory;
+
+import com.alibaba.fastjson.JSONObject;
+import com.usky.agbox.RemotePatrolAgBoxService;
+import com.usky.common.core.exception.FeignBadRequestException;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.cloud.openfeign.FallbackFactory;
+import org.springframework.stereotype.Component;
+
+/**
+ * @author han
+ * @date 2024/04/02 15:07
+ */
+@Component
+public class RemotePatrolAgBoxFallbackFactory implements FallbackFactory<RemotePatrolAgBoxService> {
+    private static final Logger log = LoggerFactory.getLogger(RemotePatrolAgBoxFallbackFactory.class);
+
+    @Override
+    public RemotePatrolAgBoxService create(Throwable throwable)
+    {
+        log.error("agbox服务调用失败:{}", throwable.getMessage());
+        return new RemotePatrolAgBoxService()
+        {
+            @Override
+            public JSONObject getEventCode() {
+                throw new FeignBadRequestException(500,"获取事件编码异常"+throwable.getMessage());
+            }
+            @Override
+            public JSONObject getDeviceList() {
+                throw new FeignBadRequestException(500,"获取设备列表异常"+throwable.getMessage());
+            }
+            @Override
+            public JSONObject updateHeart(String requestBody) {
+                throw new FeignBadRequestException(500,"更新心跳异常"+throwable.getMessage());
+            }
+            @Override
+            public JSONObject addEvent(String requestBody) {
+                throw new FeignBadRequestException(500,"添加事件异常"+throwable.getMessage());
+            }
+            @Override
+            public JSONObject getEvent(String requestBody) {
+                throw new FeignBadRequestException(500,"获取事件异常"+throwable.getMessage());
+            }
+        };
+    }
+}

+ 95 - 0
service-agbox/service-agbox-biz/pom.xml

@@ -0,0 +1,95 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <parent>
+        <artifactId>service-agbox</artifactId>
+        <groupId>com.usky</groupId>
+        <version>0.0.1</version>
+    </parent>
+    <modelVersion>4.0.0</modelVersion>
+
+    <artifactId>service-agbox-biz</artifactId>
+    <dependencies>
+        <dependency>
+            <groupId>com.usky</groupId>
+            <artifactId>common-cloud-starter</artifactId>
+        </dependency>
+
+        <dependency>
+            <groupId>cn.afterturn</groupId>
+            <artifactId>easypoi-spring-boot-starter</artifactId>
+            <version>4.1.0</version>
+        </dependency>
+
+        <dependency>
+            <groupId>com.aliyun</groupId>
+            <artifactId>aliyun-java-sdk-core</artifactId>
+            <version>4.5.16</version>
+        </dependency>
+
+        <!--语音依赖-->
+        <dependency>
+            <groupId>com.aliyun</groupId>
+            <artifactId>aliyun-java-sdk-dyvmsapi</artifactId>
+            <version>1.2.2</version>
+        </dependency>
+
+        <!--短信依赖-->
+        <dependency>
+            <groupId>com.aliyun</groupId>
+            <artifactId>aliyun-java-sdk-dysmsapi</artifactId>
+            <version>1.1.0</version>
+        </dependency>
+
+        <!--MQTT依赖-->
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-integration</artifactId>
+        </dependency>
+
+        <dependency>
+            <groupId>org.springframework.integration</groupId>
+            <artifactId>spring-integration-mqtt</artifactId>
+        </dependency>
+        <!--websocket依赖-->
+        <dependency>
+            <groupId>org.springframework</groupId>
+            <artifactId>spring-websocket</artifactId>
+            <version>5.2.8.RELEASE</version>
+        </dependency>
+        <dependency>
+            <groupId>com.usky</groupId>
+            <artifactId>service-agbox-api</artifactId>
+            <version>0.0.1</version>
+            <scope>compile</scope>
+        </dependency>
+    </dependencies>
+
+    <build>
+        <finalName>${project.artifactId}</finalName>
+        <plugins>
+            <plugin>
+                <groupId>org.springframework.boot</groupId>
+                <artifactId>spring-boot-maven-plugin</artifactId>
+                <executions>
+                    <execution>
+                        <goals>
+                            <goal>repackage</goal>
+                        </goals>
+                    </execution>
+                </executions>
+            </plugin>
+            <plugin>
+                <groupId>com.github.shalousun</groupId>
+                <artifactId>smart-doc-maven-plugin</artifactId>
+                <version>2.1.1</version>
+                <configuration>
+                    <!--指定生成文档的使用的配置文件,配置文件放在自己的项目中-->
+                    <configFile>./src/main/resources/smart-doc.json</configFile>
+                    <!--指定项目名称-->
+                    <projectName>test</projectName>
+                </configuration>
+            </plugin>
+        </plugins>
+    </build>
+
+</project>

+ 45 - 0
service-agbox/service-agbox-biz/src/main/java/com/usky/agbox/RuoYiSystemApplication.java

@@ -0,0 +1,45 @@
+package com.usky.agbox;
+
+
+import org.mybatis.spring.annotation.MapperScan;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.boot.SpringApplication;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+import org.springframework.cloud.openfeign.EnableFeignClients;
+import org.springframework.context.ConfigurableApplicationContext;
+import org.springframework.context.annotation.ComponentScan;
+import org.springframework.core.env.Environment;
+
+import java.net.InetAddress;
+import java.net.UnknownHostException;
+
+/**
+ * 系统模块
+ * 
+ * @author ruoyi
+ */
+
+
+@EnableFeignClients(basePackages = "com.usky")
+@MapperScan(value = "com.usky.agbox.mapper")
+@ComponentScan("com.usky")
+@SpringBootApplication
+public class RuoYiSystemApplication
+{
+    private static final Logger LOGGER = LoggerFactory.getLogger(RuoYiSystemApplication.class);
+
+    public static void main(String[] args) throws UnknownHostException {
+        ConfigurableApplicationContext application = SpringApplication.run(RuoYiSystemApplication.class, args);
+        Environment env = application.getEnvironment();
+        String ip = InetAddress.getLocalHost().getHostAddress();
+        String port = env.getProperty("server.port");
+        String path = env.getProperty("server.servlet.context-path");
+        LOGGER.info("\n----------------------------------------------------------\n\t" +
+                "Application is running! Access URLs:\n\t" +
+                "Local: \t\thttp://localhost:" + port + (null==path?"":path) + "/\n\t" +
+                "External: \thttp://" + ip + ":" + port + (null==path?"":path) + "/\n\t" +
+                "Api: \t\thttp://" + ip + ":" + port + (null==path?"":path) + "/swagger-ui/index.html\n\t" +
+                "----------------------------------------------------------");
+    }
+}

+ 109 - 0
service-agbox/service-agbox-biz/src/main/java/com/usky/agbox/controller/MybatisGeneratorUtils.java

@@ -0,0 +1,109 @@
+package com.usky.agbox.controller;//package com.usky.iot.controller;//package com.usky.dm.controller.web.business;
+// package com.usky.dm.controller.web;
+
+
+import com.baomidou.mybatisplus.core.toolkit.StringPool;
+import com.baomidou.mybatisplus.generator.AutoGenerator;
+import com.baomidou.mybatisplus.generator.InjectionConfig;
+import com.baomidou.mybatisplus.generator.config.*;
+import com.baomidou.mybatisplus.generator.config.po.TableInfo;
+import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * @author yq
+ * @date 2021/7/6 11:42
+ */
+public class MybatisGeneratorUtils {
+    public static void main(String[] args) {
+
+            shell("service-agbox","service-agbox-biz");
+    }
+
+    private static void shell(String parentName,String model) {
+
+        AutoGenerator mpg = new AutoGenerator();
+        //1、全局配置
+        GlobalConfig gc = new GlobalConfig();
+//        File file = new File(model);
+//        String path = file.getAbsolutePath();
+        String projectPath = System.getProperty("user.dir");
+        projectPath+="/"+parentName;
+        projectPath+="/"+model;
+        gc.setOutputDir(projectPath+ "/src/main/java");  //生成路径(一般都是生成在此项目的src/main/java下面)
+        //修改为自己的名字
+        gc.setAuthor("han"); //设置作者
+        gc.setOpen(false);
+        gc.setFileOverride(true); //第二次生成会把第一次生成的覆盖掉
+        gc.setServiceName("%sService"); //生成的service接口名字首字母是否为I,这样设置就没有
+        gc.setBaseResultMap(true); //生成resultMap
+        mpg.setGlobalConfig(gc);
+
+        //2、数据源配置
+        //修改数据源
+        DataSourceConfig dsc = new DataSourceConfig();
+        dsc.setUrl("jdbc:mysql://172.16.120.165:3306/usky-cloud?useUnicode=true&serverTimezone=GMT&useSSL=false&characterEncoding=utf8");
+        dsc.setDriverName("com.mysql.jdbc.Driver");
+        dsc.setUsername("usky");
+        dsc.setPassword("Yt#75Usky");
+        mpg.setDataSource(dsc);
+
+        // 3、包配置
+        PackageConfig pc = new PackageConfig();
+        pc.setParent("com.usky.agbox");
+        pc.setController("controller.web");
+        pc.setEntity("domain");
+        pc.setMapper("mapper");
+        pc.setService("service");
+        pc.setServiceImpl("service.impl");
+//        pc.setXml("mapper.demo");
+        //pc.setModuleName("test");
+        mpg.setPackageInfo(pc);
+
+        // 4、策略配置
+        StrategyConfig strategy = new StrategyConfig();
+        strategy.setNaming(NamingStrategy.underline_to_camel);
+        strategy.setColumnNaming(NamingStrategy.underline_to_camel);
+        strategy.setSuperMapperClass("com.usky.common.mybatis.core.CrudMapper");
+        strategy.setSuperServiceClass("com.usky.common.mybatis.core.CrudService");
+        strategy.setSuperServiceImplClass("com.usky.common.mybatis.core.AbstractCrudService");
+        // strategy.setTablePrefix("t_"); // 表名前缀
+        strategy.setEntityLombokModel(true); //使用lombok
+        //修改自己想要生成的表
+        strategy.setInclude("sys_user");  // 逆向工程使用的表   如果要生成多个,这里可以传入String[]
+        mpg.setStrategy(strategy);
+
+        // 关闭默认 xml 生成,调整生成 至 根目录
+        //修改对应的模块名称
+        TemplateConfig tc = new TemplateConfig();
+        // 自定义配置
+        InjectionConfig cfg = new InjectionConfig() {
+            @Override
+            public void initMap() {
+                // to do nothing
+            }
+        };
+        //如果模板引擎是 velocity
+        String templatePath = "/templates/mapper.xml.vm";
+        // 自定义输出配置
+        List<FileOutConfig> focList = new ArrayList<>();
+        // 自定义配置会被优先输出
+        String finalProjectPath = projectPath;
+        focList.add(new FileOutConfig(templatePath) {
+            @Override
+            public String outputFile(TableInfo tableInfo) {
+                // 自定义输出文件名 , 如果你 Entity 设置了前后缀、此处注意 xml 的名称会跟着发生变化!!
+                return finalProjectPath + "/src/main/resources/mapper/agbox" + "/"
+                        + tableInfo.getEntityName() + "Mapper" + StringPool.DOT_XML;
+            }
+        });
+        cfg.setFileOutConfigList(focList);
+        mpg.setCfg(cfg);
+        tc.setXml(null);
+        mpg.setTemplate(tc);
+        //5、执行
+        mpg.execute();
+    }
+}

+ 44 - 0
service-agbox/service-agbox-biz/src/main/java/com/usky/agbox/controller/api/patrolAgboxControllerApi.java

@@ -0,0 +1,44 @@
+package com.usky.agbox.controller.api;
+
+import com.alibaba.fastjson.JSONObject;
+import com.usky.agbox.RemotePatrolAgBoxService;
+import com.usky.agbox.service.job.patrolAgbox;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ * @author han
+ * @date 2024/04/02 11:21
+ */
+@RestController
+public class patrolAgboxControllerApi implements RemotePatrolAgBoxService {
+
+    @Autowired
+    private patrolAgbox agBox;
+
+    @Override
+    public JSONObject getEventCode() {
+        return agBox.getEventCode();
+    }
+
+    @Override
+    public JSONObject getDeviceList() {
+        return agBox.getDeviceList();
+    }
+
+    @Override
+    public JSONObject updateHeart(@RequestBody String requestBody){
+        return agBox.updateHeart(requestBody);
+    }
+
+    @Override
+    public JSONObject addEvent(@RequestBody String requestBody){
+        return agBox.addEvent(requestBody);
+    }
+
+    @Override
+    public JSONObject getEvent(@RequestBody String requestBody){
+        return agBox.getEvent(requestBody);
+    }
+}

+ 68 - 0
service-agbox/service-agbox-biz/src/main/java/com/usky/agbox/controller/web/patrolAgboxController.java

@@ -0,0 +1,68 @@
+package com.usky.agbox.controller.web;
+
+
+import com.alibaba.fastjson.JSONObject;
+import com.usky.agbox.service.job.patrolAgbox;
+import com.usky.common.core.bean.ApiResult;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ * @author han
+ * @date 2024/03/22 16:20
+ */
+@RestController
+@RequestMapping("/patrolAgbox")
+public class patrolAgboxController {
+
+    @Autowired
+    private patrolAgbox agBox;
+
+    /**
+     * 获取事件编码信息
+     * @return
+     */
+    @PostMapping("/getEventCode")
+    public ApiResult<JSONObject> getEventCode(){
+        return ApiResult.success(agBox.getEventCode());
+    }
+
+    /**
+     * 获取设备列表信息
+     * @return
+     */
+    @PostMapping("/getDeviceList")
+    public ApiResult<JSONObject> getDeviceList(){
+        return ApiResult.success(agBox.getDeviceList());
+    }
+
+    /**
+     * 添加事件信息
+     * @return
+     */
+    @PostMapping("/addEvent")
+    public ApiResult<JSONObject> addEvent(@RequestBody String requestBody){
+        return ApiResult.success(agBox.addEvent(requestBody));
+    }
+
+    /**
+     * 更新心跳信息
+     * @return
+     */
+    @PostMapping("/updateHeart")
+    public ApiResult<JSONObject> updateHeart(@RequestBody String requestBody){
+        return ApiResult.success(agBox.updateHeart(requestBody));
+    }
+
+    /**
+     * 获取事件信息
+     * @return
+     */
+    @PostMapping("/getEvent")
+    public ApiResult<JSONObject> getEvent(@RequestBody String requestBody){
+        return ApiResult.success(agBox.getEvent(requestBody));
+    }
+}

+ 87 - 0
service-agbox/service-agbox-biz/src/main/java/com/usky/agbox/service/job/patrolAgbox.java

@@ -0,0 +1,87 @@
+package com.usky.agbox.service.job;
+
+import com.alibaba.fastjson.JSONObject;
+import com.usky.agbox.service.util.HttpClientUtils;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.stereotype.Component;
+import java.util.HashMap;
+
+@Component
+public class patrolAgbox {
+
+    @Value("${agBox.key}")
+    private String KEY;
+    @Value("${agBox.url}")
+    private String URL;
+
+    /**
+     * 获取事件编码信息
+     * @return
+     */
+    public JSONObject getEventCode() {
+        HashMap map = new HashMap();
+        map.put("key", KEY);
+        map.put("json", "{\"jsonrpc\":\"2.0\",\"method\":\"getPatrolEventCode\"}");
+        String resultString = HttpClientUtils.doPost(URL,map);
+        JSONObject resultVO = JSONObject.parseObject(resultString);
+        return resultVO;
+    }
+
+    /**
+     * 获取设备列表信息
+     * @return
+     */
+    public JSONObject getDeviceList() {
+        HashMap map = new HashMap();
+        map.put("key", KEY);
+        map.put("json", "{\"jsonrpc\":\"2.0\",\"method\":\"getDeviceList\"}");
+        String resultString = HttpClientUtils.doPost(URL,map);
+        JSONObject resultVO = JSONObject.parseObject(resultString);
+        return resultVO;
+    }
+
+    /**
+     * 添加事件信息
+     * @return
+     */
+    public JSONObject addEvent(String requestBody) {
+        JSONObject eventVO = JSONObject.parseObject(requestBody);
+        HashMap map = new HashMap();
+        map.put("key", KEY);
+        map.put("json", "{\"jsonrpc\":\"2.0\",\"method\":\"addEvent\",\"params\":{\"deviceId\":\""+eventVO.get("deviceId").toString()+"\"," +
+                "\"triggerTime\":\""+eventVO.get("triggerTime").toString()+"\",\"eventCode\":"+eventVO.get("eventCode")+",\"name" +
+                "\":\""+eventVO.get("name").toString()+"\",\"certifiedNo\":\""+eventVO.get("certifiedNo").toString()+"\"}}");
+        String resultString = HttpClientUtils.doPost(URL,map);
+        JSONObject resultVO = JSONObject.parseObject(resultString);
+        return resultVO;
+    }
+
+    /**
+     * 更新心跳信息
+     * @return
+     */
+    public JSONObject updateHeart(String requestBody) {
+        JSONObject eventVO = JSONObject.parseObject(requestBody);
+        HashMap map = new HashMap();
+        map.put("key", KEY);
+        map.put("json",
+                "{\"jsonrpc\":\"2.0\",\"method\":\"updateHeart\",\"params\":{\"deviceId\":\""+eventVO.get("deviceId").toString()+"\"}}");
+        String resultString = HttpClientUtils.doPost(URL,map);
+        JSONObject resultVO = JSONObject.parseObject(resultString);
+        return resultVO;
+    }
+
+    /**
+     * 获取事件信息
+     * @return
+     */
+    public JSONObject getEvent(String requestBody) {
+        JSONObject eventVO = JSONObject.parseObject(requestBody);
+        HashMap map = new HashMap();
+        map.put("key", KEY);
+        map.put("json", "{\"jsonrpc\":\"2.0\",\"method\":\"getEvent\",\"params\":{\"eventId\":\""+eventVO.get("eventId").toString()+"\"}}");
+        String resultString = HttpClientUtils.doPost(URL,map);
+        JSONObject resultVO = JSONObject.parseObject(resultString);
+        return resultVO;
+    }
+}

+ 137 - 0
service-agbox/service-agbox-biz/src/main/java/com/usky/agbox/service/util/HttpClientUtils.java

@@ -0,0 +1,137 @@
+package com.usky.agbox.service.util;
+
+import org.apache.http.NameValuePair;
+import org.apache.http.client.entity.UrlEncodedFormEntity;
+import org.apache.http.client.methods.CloseableHttpResponse;
+import org.apache.http.client.methods.HttpGet;
+import org.apache.http.client.methods.HttpPost;
+import org.apache.http.client.utils.URIBuilder;
+import org.apache.http.entity.ContentType;
+import org.apache.http.entity.StringEntity;
+import org.apache.http.impl.client.CloseableHttpClient;
+import org.apache.http.impl.client.HttpClients;
+import org.apache.http.message.BasicNameValuePair;
+import org.apache.http.util.EntityUtils;
+
+import java.io.IOException;
+import java.net.URI;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+
+/**
+ 1. 跨域请求工具类
+ */
+public class HttpClientUtils {
+
+    public static String doGet(String url, Map<String, String> param) {
+
+        // 创建Httpclient对象
+        CloseableHttpClient httpclient = HttpClients.createDefault();
+
+        String resultString = "";
+        CloseableHttpResponse response = null;
+        try {
+            // 创建uri
+            URIBuilder builder = new URIBuilder(url);
+            if (param != null) {
+                for (String key : param.keySet()) {
+                    builder.addParameter(key, param.get(key));
+                }
+            }
+            URI uri = builder.build();
+
+            // 创建http GET请求
+            HttpGet httpGet = new HttpGet(uri);
+
+            // 执行请求
+            response = httpclient.execute(httpGet);
+            // 判断返回状态是否为200
+            if (response.getStatusLine().getStatusCode() == 200) {
+                resultString = EntityUtils.toString(response.getEntity(), "UTF-8");
+            }
+        } catch (Exception e) {
+            e.printStackTrace();
+        } finally {
+            try {
+                if (response != null) {
+                    response.close();
+                }
+                httpclient.close();
+            } catch (IOException e) {
+                e.printStackTrace();
+            }
+        }
+        return resultString;
+    }
+
+    public static String doGet(String url) {
+        return doGet(url, null);
+    }
+
+    public static String doPost(String url, Map<String, String> param) {
+        // 创建Httpclient对象
+        CloseableHttpClient httpClient = HttpClients.createDefault();
+        CloseableHttpResponse response = null;
+        String resultString = "";
+        try {
+            // 创建Http Post请求
+            HttpPost httpPost = new HttpPost(url);
+            httpPost.setHeader("Content-Type", "charset=utf-8");
+            // 创建参数列表
+            if (param != null) {
+                List<NameValuePair> paramList = new ArrayList<>();
+                for (String key : param.keySet()) {
+                    paramList.add(new BasicNameValuePair(key, param.get(key)));
+                }
+                // 模拟表单
+                UrlEncodedFormEntity entity = new UrlEncodedFormEntity(paramList);
+                httpPost.setEntity(entity);
+            }
+            // 执行http请求
+            response = httpClient.execute(httpPost);
+            resultString = EntityUtils.toString(response.getEntity(), "utf-8");
+        } catch (Exception e) {
+            e.printStackTrace();
+        } finally {
+            try {
+                response.close();
+            } catch (IOException e) {
+                e.printStackTrace();
+            }
+        }
+
+        return resultString;
+    }
+
+    public static String doPost(String url) {
+        return doPost(url, null);
+    }
+
+    public static String doPostJson(String url, String json) {
+        // 创建Httpclient对象
+        CloseableHttpClient httpClient = HttpClients.createDefault();
+        CloseableHttpResponse response = null;
+        String resultString = "";
+        try {
+            // 创建Http Post请求
+            HttpPost httpPost = new HttpPost(url);
+            // 创建请求内容
+            StringEntity entity = new StringEntity(json, ContentType.APPLICATION_JSON);
+            httpPost.setEntity(entity);
+            // 执行http请求
+            response = httpClient.execute(httpPost);
+            resultString = EntityUtils.toString(response.getEntity(), "utf-8");
+        } catch (Exception e) {
+            e.printStackTrace();
+        } finally {
+            try {
+                response.close();
+            } catch (IOException e) {
+                e.printStackTrace();
+            }
+        }
+
+        return resultString;
+    }
+}

+ 34 - 0
service-agbox/service-agbox-biz/src/main/java/com/usky/agbox/service/vo/EventVO.java

@@ -0,0 +1,34 @@
+package com.usky.agbox.service.vo;
+
+import lombok.Data;
+
+import java.util.List;
+
+@Data
+public class EventVO {
+    /**
+     * 设备ID
+     */
+    private String deviceId;
+
+    /**
+     * 事件时间
+     */
+    private String triggerTime;
+
+    /**
+     * 事件编码
+     */
+    private Integer eventCode;
+
+    /**
+     * 人员姓名
+     */
+    private String name;
+
+    /**
+     * 证件编号
+     */
+    private String certifiedNo;
+
+}

+ 25 - 0
service-agbox/service-agbox-biz/src/main/resources/bootstrap.yml

@@ -0,0 +1,25 @@
+# Tomcat
+server:
+  port: 9893
+
+# Spring
+spring: 
+  application:
+    # 应用名称
+    name: service-agbox
+  profiles:
+    # 环境配置
+    active: dev
+  cloud:
+    nacos:
+      discovery:
+        # 服务注册地址
+        server-addr: 172.16.120.165:8848
+      config:
+        # 配置中心地址
+        server-addr: 172.16.120.165:8848
+        # 配置文件格式
+        file-extension: yml
+        # 共享配置
+        shared-configs:
+          - application-${spring.profiles.active}.${spring.cloud.nacos.config.file-extension}

+ 108 - 0
service-agbox/service-agbox-biz/src/main/resources/doc/index.adoc

@@ -0,0 +1,108 @@
+= 安防项目
+
+[width="100%",options="header"]
+[stripes=even]
+|====================
+|Version |  Update Time  | Status | Author |  Description
+|v2022-04-21 16:57:08|2022-04-21 16:57:08|auto|@yq|Created by smart-doc
+|====================
+
+
+== &lt;p&gt;参数配置表 前端控制器&lt;/p&gt;
+== &lt;p&gt;部门信息&lt;/p&gt;
+=== 查看部门信息
+*URL:* http:10.23.39.1:8082/sysDept/list
+
+*Type:* POST
+
+*Author:* ya
+
+*Content-Type:* application/json; charset=utf-8
+
+
+
+
+*Body-parameters:*
+
+[width="100%",options="header"]
+[stripes=even]
+|====================
+|Parameter | Type|Description|Required|Since
+|deptId|int64|部门id|false|-
+|parentId|int64|父部门id|false|-
+|ancestors|string|祖级列表|false|-
+|deptName|string|部门名称|false|-
+|orderNum|int32|显示顺序|false|-
+|leader|string|负责人|false|-
+|phone|string|联系电话|false|-
+|email|string|邮箱|false|-
+|status|string|部门状态(0正常 1停用)|false|-
+|delFlag|string|删除标志(0代表存在 2代表删除)|false|-
+|createBy|string|创建者|false|-
+|createTime|string|创建时间|false|-
+|updateBy|string|更新者|false|-
+|updateTime|string|更新时间|false|-
+|bId|int64|建筑id|false|-
+|====================
+
+*Response-fields:*
+
+[width="100%",options="header"]
+[stripes=even]
+|====================
+|Field | Type|Description|Since
+|status|object|No comments found.|-
+|code|string|No comments found.|-
+|msg|string|No comments found.|-
+|data|object|No comments found.|-
+|└─deptId|int64|部门id|-
+|└─parentId|int64|父部门id|-
+|└─ancestors|string|祖级列表|-
+|└─deptName|string|部门名称|-
+|└─orderNum|int32|显示顺序|-
+|└─leader|string|负责人|-
+|└─phone|string|联系电话|-
+|└─email|string|邮箱|-
+|└─status|string|部门状态(0正常 1停用)|-
+|└─delFlag|string|删除标志(0代表存在 2代表删除)|-
+|└─createBy|string|创建者|-
+|└─createTime|string|创建时间|-
+|└─updateBy|string|更新者|-
+|└─updateTime|string|更新时间|-
+|└─bId|int64|建筑id|-
+|exception|string|No comments found.|-
+|====================
+
+*Response-example:*
+----
+{
+	"status": {
+		
+	},
+	"code": "97564",
+	"msg": "wnr5qt",
+	"data": [
+		{
+			"deptId": 540,
+			"parentId": 858,
+			"ancestors": "o5lg60",
+			"deptName": "文.沈",
+			"orderNum": 260,
+			"leader": "ufz93p",
+			"phone": "17852835049",
+			"email": "智渊.徐@yahoo.com",
+			"status": "nu6cnp",
+			"delFlag": "72oiji",
+			"createBy": "5fxr6j",
+			"createTime": "2022-04-21 16:57:10",
+			"updateBy": "4kcs4e",
+			"updateTime": "2022-04-21 16:57:10",
+			"bId": 977
+		}
+	],
+	"exception": "53u6bg"
+}
+----
+
+== &lt;p&gt;用户信息表 前端控制器&lt;/p&gt;
+

+ 94 - 0
service-agbox/service-agbox-biz/src/main/resources/logback.xml

@@ -0,0 +1,94 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<configuration scan="true" scanPeriod="60 seconds" debug="false">
+    <!-- 日志存放路径 -->
+    <property name="log.path" value="/var/log/uskycloud/service-alarm" />
+    <!-- 日志输出格式 -->
+    <property name="log.pattern" value="%d{MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{26}:%line: %msg%n" />
+    <!--    	<property name="log.pattern" value="%gray(%d{MM-dd HH:mm:ss.SSS}) %highlight(%-5level) &#45;&#45; [%gray(%thread)] %cyan(%logger{26}:%line): %msg%n" />-->
+
+
+    <property name="SQL_PACKAGE" value="com.usky.alarm.mapper"/>
+
+    <!-- 控制台输出 -->
+    <appender name="console" class="ch.qos.logback.core.ConsoleAppender">
+        <encoder>
+            <pattern>${log.pattern}</pattern>
+        </encoder>
+    </appender>
+
+    <appender name="file_sql" class="ch.qos.logback.core.rolling.RollingFileAppender">
+        <file>${log.path}/sql.log</file>
+        <!-- 循环政策:基于时间创建日志文件 -->
+        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
+            <!-- 日志文件名格式 -->
+            <fileNamePattern>${log.path}/sql.%d{yyyy-MM-dd}.log</fileNamePattern>
+            <!-- 日志最大的历史 60天 -->
+            <maxHistory>3</maxHistory>
+        </rollingPolicy>
+        <encoder>
+            <pattern>${log.pattern}</pattern>
+        </encoder>
+    </appender>
+
+    <!-- 系统日志输出 -->
+    <appender name="file_info" class="ch.qos.logback.core.rolling.RollingFileAppender">
+        <file>${log.path}/info.log</file>
+        <!-- 循环政策:基于时间创建日志文件 -->
+        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
+            <!-- 日志文件名格式 -->
+            <fileNamePattern>${log.path}/info.%d{yyyy-MM-dd}.log</fileNamePattern>
+            <!-- 日志最大的历史 60天 -->
+            <maxHistory>3</maxHistory>
+        </rollingPolicy>
+        <encoder>
+            <pattern>${log.pattern}</pattern>
+        </encoder>
+        <filter class="ch.qos.logback.classic.filter.LevelFilter">
+            <!-- 过滤的级别 -->
+            <level>INFO</level>
+            <!-- 匹配时的操作:接收(记录) -->
+            <onMatch>ACCEPT</onMatch>
+            <!-- 不匹配时的操作:拒绝(不记录) -->
+            <onMismatch>DENY</onMismatch>
+        </filter>
+    </appender>
+
+    <appender name="file_error" class="ch.qos.logback.core.rolling.RollingFileAppender">
+        <file>${log.path}/error.log</file>
+        <!-- 循环政策:基于时间创建日志文件 -->
+        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
+            <!-- 日志文件名格式 -->
+            <fileNamePattern>${log.path}/error.%d{yyyy-MM-dd}.log</fileNamePattern>
+            <!-- 日志最大的历史 60天 -->
+            <maxHistory>60</maxHistory>
+        </rollingPolicy>
+        <encoder>
+            <pattern>${log.pattern}</pattern>
+        </encoder>
+        <filter class="ch.qos.logback.classic.filter.LevelFilter">
+            <!-- 过滤的级别 -->
+            <level>ERROR</level>
+            <!-- 匹配时的操作:接收(记录) -->
+            <onMatch>ACCEPT</onMatch>
+            <!-- 不匹配时的操作:拒绝(不记录) -->
+            <onMismatch>DENY</onMismatch>
+        </filter>
+    </appender>
+
+    <!-- 系统模块日志级别控制  -->
+    <!--	<logger name="com.usky" level="info" />-->
+    <!-- Spring日志级别控制  -->
+    <!--	<logger name="org.springframework" level="warn" />-->
+
+    <logger name="${SQL_PACKAGE}" additivity="false" level="debug">
+        <appender-ref ref="console"/>
+        <appender-ref ref="file_sql"/>
+    </logger>
+
+    <!--系统操作日志-->
+    <root level="info">
+        <appender-ref ref="file_info" />
+        <appender-ref ref="file_error" />
+        <appender-ref ref="console" />
+    </root>
+</configuration>

+ 15 - 0
service-agbox/service-agbox-biz/src/main/resources/smart-doc.json

@@ -0,0 +1,15 @@
+{
+  "outPath":"./src/main/resources/doc",
+  "serverUrl": "http:10.23.39.1:9887/",
+  "isStrict": false,
+  "coverOld": true,
+  "allInOne": true,
+  "packageFilters": "com.usky.iot.controller.web",
+  "requestExample":"false",
+  "responseExample":"true",
+  "projectName": "iot项目",
+  "appKey": "20211216921084883495813120",
+  "appToken":"967031b0cc6f474aaf73616cbf2b25c2",
+  "secret": "N@Pd,KXAHki*BW3=zK.XPNykf!=CM79J",
+  "openUrl": "http://101.133.214.75:7700/api"
+}

+ 6 - 0
service-fire/service-fire-biz/pom.xml

@@ -88,6 +88,12 @@
             <artifactId>itextpdf</artifactId>
             <version>5.4.3</version>
         </dependency>
+        <dependency>
+            <groupId>com.usky</groupId>
+            <artifactId>service-agbox-api</artifactId>
+            <version>0.0.1</version>
+            <scope>compile</scope>
+        </dependency>
     </dependencies>
 
     <build>

+ 59 - 0
service-fire/service-fire-biz/src/main/java/com/usky/fire/controller/web/DataJinganAnalysisController.java

@@ -0,0 +1,59 @@
+package com.usky.fire.controller.web;
+
+
+import com.usky.common.core.bean.ApiResult;
+import com.usky.common.core.bean.CommonPage;
+import com.usky.fire.domain.DataJinganAnalysis;
+import com.usky.fire.service.DataJinganAnalysisService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+/**
+ * <p>
+ * 静安电子督察单数据 前端控制器
+ * </p>
+ *
+ * @author han
+ * @since 2024-03-07
+ */
+@RestController
+@RequestMapping("/dataJinganAnalysis")
+public class DataJinganAnalysisController {
+    @Autowired
+    private DataJinganAnalysisService dataJinganAnalysisService;
+
+    /**
+     * 电子督察单管理-电子督察单列表查询
+     *
+     * @param startTime  开始时间
+     * @param endTime  结束时间
+     * @param superviseCode  督察单编号
+     * @param id  主键ID
+     * @param handleStatus  处理状态
+     * @param pageNum      当前页
+     * @param pageSize     每页条数
+     * @return
+     */
+    @GetMapping("analysisList")
+    public ApiResult<CommonPage<DataJinganAnalysis>> analysisList(@RequestParam(value = "startTime", required = false) String startTime,
+                                                                  @RequestParam(value = "endTime", required = false) String endTime,
+                                                                  @RequestParam(value = "superviseCode", required = false) String superviseCode,
+                                                                  @RequestParam(value = "id", required = false) Integer id,
+                                                                  @RequestParam(value = "handleStatus", required = false) Integer handleStatus,
+                                                                  @RequestParam(value = "pageNum", required = false, defaultValue = "1") Integer pageNum,
+                                                                  @RequestParam(value = "pageSize", required = false, defaultValue = "10") Integer pageSize) {
+        return ApiResult.success(dataJinganAnalysisService.analysisList(startTime,endTime,superviseCode,id, handleStatus,pageNum, pageSize));
+    }
+
+    /**
+     * 修改
+     * @param dataJinganAnalysis
+     * @return
+     */
+    @PutMapping
+    public ApiResult<Void> update(@RequestBody DataJinganAnalysis dataJinganAnalysis){
+        dataJinganAnalysisService.update(dataJinganAnalysis);
+        return ApiResult.success();
+    }
+}
+

+ 64 - 0
service-fire/service-fire-biz/src/main/java/com/usky/fire/controller/web/DataJinganPersonController.java

@@ -0,0 +1,64 @@
+package com.usky.fire.controller.web;
+
+
+import com.usky.common.core.bean.ApiResult;
+import com.usky.common.core.bean.CommonPage;
+import com.usky.fire.domain.DataJinganAnalysis;
+import com.usky.fire.domain.DataJinganPerson;
+import com.usky.fire.service.DataJinganAnalysisService;
+import com.usky.fire.service.DataJinganPersonService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+import org.springframework.stereotype.Controller;
+
+/**
+ * <p>
+ *  前端控制器
+ * </p>
+ *
+ * @author han
+ * @since 2024-03-07
+ */
+@RestController
+@RequestMapping("/dataJinganPerson")
+public class DataJinganPersonController {
+    @Autowired
+    private DataJinganPersonService dataJinganPersonService;
+
+    /**
+     * 人工督察单管理-人工督察单列表查询
+     *
+     * @param startTime  开始时间
+     * @param endTime  结束时间
+     * @param artificialCode  督察单编号
+     * @param id  主键ID
+     * @param handleStatus  处理状态
+     * @param pageNum      当前页
+     * @param pageSize     每页条数
+     * @return
+     */
+    @GetMapping("personList")
+    public ApiResult<CommonPage<DataJinganPerson>> personList(@RequestParam(value = "startTime", required = false) String startTime,
+                                                              @RequestParam(value = "endTime", required = false) String endTime,
+                                                              @RequestParam(value = "artificialCode", required = false) String artificialCode,
+                                                              @RequestParam(value = "id", required = false) Integer id,
+                                                              @RequestParam(value = "handleStatus", required = false) Integer handleStatus,
+                                                              @RequestParam(value = "pageNum", required = false, defaultValue = "1") Integer pageNum,
+                                                              @RequestParam(value = "pageSize", required = false, defaultValue = "10") Integer pageSize) {
+        return ApiResult.success(dataJinganPersonService.personList(startTime,endTime,artificialCode,id,handleStatus,
+                pageNum, pageSize));
+    }
+
+    /**
+     * 修改
+     * @param dataJinganPerson
+     * @return
+     */
+    @PutMapping
+    public ApiResult<Void> update(@RequestBody DataJinganPerson dataJinganPerson){
+        dataJinganPersonService.update(dataJinganPerson);
+        return ApiResult.success();
+    }
+}
+

+ 58 - 0
service-fire/service-fire-biz/src/main/java/com/usky/fire/controller/web/PatrolInspectionAttendanceController.java

@@ -0,0 +1,58 @@
+package com.usky.fire.controller.web;
+
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.usky.common.core.bean.ApiResult;
+import com.usky.common.core.util.StringUtils;
+import com.usky.fire.domain.PatrolInspectionAttendance;
+import com.usky.fire.service.PatrolInspectionAttendanceService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+import java.time.LocalDateTime;
+import java.time.format.DateTimeFormatter;
+import java.util.Map;
+
+
+/**
+ * <p>
+ * 签到、签退信息记录表 前端控制器
+ * </p>
+ *
+ * @author fu
+ * @since 2024-02-05
+ */
+@RestController
+@RequestMapping("/patrolInspectionAttendance")
+public class PatrolInspectionAttendanceController {
+    @Autowired
+    private PatrolInspectionAttendanceService patrolInspectionAttendanceService;
+    /**
+     * 分页查询签到记录
+     * @param
+     * @param
+     * @return
+     */
+    @GetMapping("/pageQuery")
+    public ApiResult<IPage<Map<String, Object>>> pageQuery(@RequestParam(value = "pageNum", required = false, defaultValue = "1") Integer pageNum,
+                                                           @RequestParam(value = "pageSize", required = false, defaultValue = "10") Integer pageSize,
+                                                           @RequestParam(value = "operateCode", required = false, defaultValue = "") String operateCode,
+                                                           @RequestParam(value = "operator", required = false, defaultValue = "") String operator,
+                                                           @RequestParam(value = "startTime", required = false ) LocalDateTime startTime,
+                                                           @RequestParam(value = "endTime", required = false, defaultValue = "#{T(java.time.LocalDateTime).now()}") LocalDateTime endTime) {
+        return ApiResult.success(patrolInspectionAttendanceService.pageList(pageNum, pageSize, operateCode, operator, startTime, endTime));
+    }
+
+    /**
+     * 新增
+     * @param patrolInspectionAttendance
+     * @return
+     */
+    @PostMapping("/add")
+    public ApiResult<Void> add(@RequestBody PatrolInspectionAttendance patrolInspectionAttendance){
+        patrolInspectionAttendanceService.add(patrolInspectionAttendance);
+        return ApiResult.success();
+    }
+}
+
+

+ 8 - 0
service-fire/service-fire-biz/src/main/java/com/usky/fire/controller/web/PatrolInspectionPersonnelController.java

@@ -102,5 +102,13 @@ public class PatrolInspectionPersonnelController {
     public ApiResult<List<PatrolInspectionPersonnelVo>> patrolInspectionPersonnelSelect(@RequestParam(value = "areaId", required = false) Integer areaId) {
         return ApiResult.success(patrolInspectionPersonnelService.patrolInspectionPersonnelSelect(areaId));
     }
+
+    /**
+     * 人员状态查询(0:签到,1:签退)
+     */
+    @GetMapping("getStatus")
+    public ApiResult<PatrolInspectionPersonnel> getStatus(){
+        return ApiResult.success(patrolInspectionPersonnelService.getStatus());
+    }
 }
 

+ 59 - 0
service-fire/service-fire-biz/src/main/java/com/usky/fire/controller/web/PatrolInspectionTypeController.java

@@ -0,0 +1,59 @@
+package com.usky.fire.controller.web;
+
+
+import com.usky.common.core.bean.ApiResult;
+import com.usky.common.core.bean.CommonPage;
+import com.usky.fire.domain.PatrolInspectionType;
+import com.usky.fire.service.PatrolInspectionTypeService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+/**
+ * <p>
+ * 类型表 前端控制器
+ * </p>
+ *
+ * @author fu
+ * @since 2024-02-05
+ */
+@RestController
+@RequestMapping("/patrolInspectionType")
+public class PatrolInspectionTypeController {
+    @Autowired
+    private PatrolInspectionTypeService patrolInspectionTypeService;
+    /**
+     * 操作类型分页查询
+     * @param pageNum
+     * @param pageSize
+     * @return
+     */
+    @GetMapping("/pageQuery")
+    public ApiResult<CommonPage<PatrolInspectionType>> pageQuery(
+            @RequestParam(value = "pageNum", required = false, defaultValue = "1") Integer pageNum,
+            @RequestParam(value = "pageSize", required = false, defaultValue = "10") Integer pageSize) {
+        return ApiResult.success(patrolInspectionTypeService.pageList( pageNum, pageSize));
+    }
+
+    /**
+     * 新增
+     * @param patrolInspectionType
+     * @return
+     */
+    @PostMapping("/add")
+    public ApiResult<Void> add(@RequestBody PatrolInspectionType patrolInspectionType){
+        patrolInspectionTypeService.add(patrolInspectionType);
+        return ApiResult.success();
+    }
+
+    /**
+     * 删除
+     * @param deleteType
+     * @return
+     */
+    @GetMapping("/delete")
+    public ApiResult<Void> delete(@RequestBody PatrolInspectionType deleteType){
+        patrolInspectionTypeService.softDelete(deleteType);
+        return ApiResult.success();
+    }
+}
+

+ 163 - 0
service-fire/service-fire-biz/src/main/java/com/usky/fire/domain/DataJinganAnalysis.java

@@ -0,0 +1,163 @@
+package com.usky.fire.domain;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import java.time.LocalDateTime;
+import java.io.Serializable;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+/**
+ * <p>
+ * 静安电子督察单数据
+ * </p>
+ *
+ * @author han
+ * @since 2024-03-07
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+public class DataJinganAnalysis implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    @TableId(value = "id", type = IdType.AUTO)
+    private Integer id;
+
+    /**
+     * 一级平台密钥
+     */
+    private String appKey;
+
+    /**
+     * 时间
+     */
+    private LocalDateTime timestamp;
+
+    /**
+     * 数据格式
+     */
+    private String format;
+
+    /**
+     * 版本号
+     */
+    private String v;
+
+    /**
+     * 签名加密方式
+     */
+    private String signMethod;
+
+    /**
+     * 建筑物群id
+     */
+    private String pid;
+
+    /**
+     * 建筑物ID
+     */
+    private String bid;
+
+    /**
+     * 楼层ID
+     */
+    private String fid;
+
+    /**
+     * 督察单id
+     */
+    private String superviseId;
+
+    /**
+     * 督查单编号
+     */
+    private String superviseCode;
+
+    /**
+     * 处理状态(0未处理,1处理成功)
+     */
+    private Integer status;
+
+    /**
+     * 督察单内容
+     */
+    private String content;
+
+    /**
+     * 类型(1火警,2故障,3屏蔽,4隐患 (当type的值是隐患4时只有device_id,aid, 当type的值是1,2,3时只有mainframe_id, loop_number, position_number))
+     */
+    private Integer type;
+
+    /**
+     * 二级平台设备id
+     */
+    private String deviceId;
+
+    /**
+     * 一级平台属性id
+     */
+    private String aid;
+
+    /**
+     * 二级平台回路编号(部件区号)
+     */
+    private String loopNumber;
+
+    /**
+     * 二级平台点位编号(部件位号)
+     */
+    private String positionNumber;
+
+    /**
+     * 二级平台主机id
+     */
+    private String mainframeId;
+
+    /**
+     * 签名
+     */
+    private String sign;
+
+    /**
+     * 单位编号
+     */
+    private String companyCode;
+
+    /**
+     * 处理人
+     */
+    private String handleBy;
+
+    /**
+     * 处理时间
+     */
+    private LocalDateTime handleTime;
+
+    /**
+     * 处理内容
+     */
+    private String handleContent;
+
+    /**
+     * 处理人电话
+     */
+    private String handlePhone;
+
+    /**
+     * 处理状态;0 未处理,1 已处理
+     */
+    private Integer handleStatus;
+
+    /**
+     * 组织结构ID
+     */
+    private Integer deptId;
+
+    /**
+     * 租户ID
+     */
+    private Integer tenantId;
+
+
+}

+ 131 - 0
service-fire/service-fire-biz/src/main/java/com/usky/fire/domain/DataJinganPerson.java

@@ -0,0 +1,131 @@
+package com.usky.fire.domain;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import java.time.LocalDateTime;
+import java.io.Serializable;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+/**
+ * <p>
+ * 
+ * </p>
+ *
+ * @author han
+ * @since 2024-03-07
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+public class DataJinganPerson implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 人工督查单解析后ID
+     */
+    @TableId(value = "id", type = IdType.AUTO)
+    private Integer id;
+
+    /**
+     * 物联网服务商接入平台给服务商分配的app_key
+     */
+    private String appKey;
+
+    /**
+     * 时间
+     */
+    private LocalDateTime timestamp;
+
+    /**
+     * 响应格式 : json
+     */
+    private String format;
+
+    /**
+     * API协议版本: 1.0
+     */
+    private String version;
+
+    /**
+     * 签名的摘要算法: md5
+     */
+    private String signMethod;
+
+    /**
+     * 一级平台的人工督察单id
+     */
+    private String artificialId;
+
+    /**
+     * 一级平台的建筑群id
+     */
+    private String pid;
+
+    /**
+     * 人工督察单编号
+     */
+    private String artificialCode;
+
+    /**
+     * 一级平台单位id
+     */
+    private String companyId;
+
+    /**
+     * 督察单内容
+     */
+    private String content;
+
+    /**
+     * 告警处理状态:0未处理,1处理成功
+     */
+    private Integer status;
+
+    /**
+     * 签名值,二级平台根据这个签名值判断数据来源
+     */
+    private String sign;
+
+    /**
+     * 二级平台单位编号
+     */
+    private String companyCode;
+
+    /**
+     * 处理人
+     */
+    private String handleBy;
+
+    /**
+     * 处理时间
+     */
+    private LocalDateTime handleTime;
+
+    /**
+     * 处理内容
+     */
+    private String handleContent;
+
+    /**
+     * 处理人电话
+     */
+    private String handlePhone;
+
+    /**
+     * 处理状态;0 未处理,1 已处理
+     */
+    private Integer handleStatus;
+
+    /**
+     * 组织结构ID
+     */
+    private Integer deptId;
+
+    /**
+     * 租户ID
+     */
+    private Integer tenantId;
+
+
+}

+ 100 - 0
service-fire/service-fire-biz/src/main/java/com/usky/fire/domain/PatrolInspectionAttendance.java

@@ -0,0 +1,100 @@
+package com.usky.fire.domain;
+
+import java.math.BigDecimal;
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import java.time.LocalDateTime;
+import java.io.Serializable;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+/**
+ * <p>
+ * 签到、签退信息记录表
+ * </p>
+ *
+ * @author fu
+ * @since 2024-02-05
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+public class PatrolInspectionAttendance implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 签到、签退信息记录表主键ID
+     */
+    @TableId(value = "id", type = IdType.AUTO)
+    private Integer id;
+
+    /**
+     * 组织机构ID
+     */
+    private Long deptId;
+
+    /**
+     * 租户ID
+     */
+    private Integer tenantId;
+
+    /**
+     * 签到人
+     */
+    private String operator;
+
+    /**
+     * 签到人id
+     */
+    private Long operatorId;
+
+    /**
+     * 操作时间
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private LocalDateTime operateDate;
+
+    /**
+     * 签到类型(0 签到,1 签退)
+     */
+    private Integer signInType;
+
+    /**
+     *
+     * 操作类型编码
+     */
+    private String operateCode;
+
+    /**
+     * 设备编号
+     */
+    private String deviceCode;
+
+    /**
+     * 图片路径
+     */
+    private String imagePath;
+
+    /**
+     * 经度
+     */
+    private BigDecimal longitude;
+
+    /**
+     * 维度
+     */
+    private BigDecimal latitude;
+
+    /**
+     * 备注
+     */
+    private String remarks;
+
+    /**
+     * 身份编号
+     */
+    private String identificationNumber;
+
+}

+ 75 - 0
service-fire/service-fire-biz/src/main/java/com/usky/fire/domain/PatrolInspectionPersonnel.java

@@ -2,6 +2,8 @@ package com.usky.fire.domain;
 
 import com.baomidou.mybatisplus.annotation.IdType;
 import com.baomidou.mybatisplus.annotation.TableId;
+
+import java.time.LocalDate;
 import java.time.LocalDateTime;
 import java.io.Serializable;
 import lombok.Data;
@@ -64,5 +66,78 @@ public class PatrolInspectionPersonnel implements Serializable {
      */
     private Integer companyId;
 
+    /**
+     * 签到状态(0,签到;1,签退)
+     */
+    private Integer operateType;
+
+    /**
+     * 证件信息
+     */
+    private String documentInfo;
+
+    /**
+     * 民族
+     */
+    private String nation;
+
+    /**
+     * 文化程序(1、小学 2、初中 3、高中 4、大学 5、其他 )
+     */
+    private Integer eduLevel;
+
+    /**
+     * 户籍地址
+     */
+    private String registerResidence;
+
+    /**
+     * 居住地址
+     */
+    private String residence;
+
+    /**
+     * 物理卡号
+     */
+    private String physicsCard;
+
+    /**
+     * 身份证号
+     */
+    private String idCard;
+
+    /**
+     * 姓名
+     */
+    private String fullName;
+
+    /**
+     * 是否在职(0、不在职 1、在职)
+     */
+    private Integer whetherEmploy;
+
+    /**
+     * 出生日期
+     */
+    private LocalDate birthDate;
 
+    /**
+     * 用户性别(0男 1女 2未知)
+     */
+    private Integer sex;
+
+    /**
+     * 联系电话
+     */
+    private String phoneNumber;
+
+    /**
+     * 主要职务
+     */
+    private Integer mainPosition;
+
+    /**
+     * 服务内容
+     */
+    private String serviceContent;
 }

+ 60 - 0
service-fire/service-fire-biz/src/main/java/com/usky/fire/domain/PatrolInspectionType.java

@@ -0,0 +1,60 @@
+package com.usky.fire.domain;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import java.io.Serializable;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+/**
+ * <p>
+ * 类型表
+ * </p>
+ *
+ * @author fu
+ * @since 2024-02-05
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+public class PatrolInspectionType implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 类型表主键id
+     */
+    @TableId(value = "id", type = IdType.AUTO)
+    private Integer id;
+
+    /**
+     * 类型编号
+     */
+    private String operateCode;
+
+    /**
+     * 类型名称
+     */
+    private String typeName;
+
+    /**
+     * 租户ID
+     */
+    private Integer tenantId;
+
+    /**
+     * 组织机构ID
+     */
+    private Integer deptId;
+
+    /**
+     * 备注
+     */
+    private String remarks;
+
+    /**
+     * 删除标识
+     */
+    private Integer deleteFlag;
+
+
+}

+ 16 - 0
service-fire/service-fire-biz/src/main/java/com/usky/fire/mapper/DataJinganAnalysisMapper.java

@@ -0,0 +1,16 @@
+package com.usky.fire.mapper;
+
+import com.usky.fire.domain.DataJinganAnalysis;
+import com.usky.common.mybatis.core.CrudMapper;
+
+/**
+ * <p>
+ * 静安电子督察单数据 Mapper 接口
+ * </p>
+ *
+ * @author han
+ * @since 2024-03-07
+ */
+public interface DataJinganAnalysisMapper extends CrudMapper<DataJinganAnalysis> {
+
+}

+ 16 - 0
service-fire/service-fire-biz/src/main/java/com/usky/fire/mapper/DataJinganPersonMapper.java

@@ -0,0 +1,16 @@
+package com.usky.fire.mapper;
+
+import com.usky.fire.domain.DataJinganPerson;
+import com.usky.common.mybatis.core.CrudMapper;
+
+/**
+ * <p>
+ *  Mapper 接口
+ * </p>
+ *
+ * @author han
+ * @since 2024-03-07
+ */
+public interface DataJinganPersonMapper extends CrudMapper<DataJinganPerson> {
+
+}

+ 16 - 0
service-fire/service-fire-biz/src/main/java/com/usky/fire/mapper/PatrolInspectionAttendanceMapper.java

@@ -0,0 +1,16 @@
+package com.usky.fire.mapper;
+
+import com.usky.fire.domain.PatrolInspectionAttendance;
+import com.usky.common.mybatis.core.CrudMapper;
+
+/**
+ * <p>
+ * 签到、签退信息记录表 Mapper 接口
+ * </p>
+ *
+ * @author fu
+ * @since 2024-02-05
+ */
+public interface PatrolInspectionAttendanceMapper extends CrudMapper<PatrolInspectionAttendance> {
+
+}

+ 2 - 0
service-fire/service-fire-biz/src/main/java/com/usky/fire/mapper/PatrolInspectionPersonnelMapper.java

@@ -2,6 +2,7 @@ package com.usky.fire.mapper;
 
 import com.usky.fire.domain.PatrolInspectionPersonnel;
 import com.usky.common.mybatis.core.CrudMapper;
+import org.springframework.stereotype.Repository;
 
 /**
  * <p>
@@ -11,6 +12,7 @@ import com.usky.common.mybatis.core.CrudMapper;
  * @author JCB
  * @since 2022-07-26
  */
+@Repository
 public interface PatrolInspectionPersonnelMapper extends CrudMapper<PatrolInspectionPersonnel> {
 
 }

+ 16 - 0
service-fire/service-fire-biz/src/main/java/com/usky/fire/mapper/PatrolInspectionTypeMapper.java

@@ -0,0 +1,16 @@
+package com.usky.fire.mapper;
+
+import com.usky.fire.domain.PatrolInspectionType;
+import com.usky.common.mybatis.core.CrudMapper;
+
+/**
+ * <p>
+ * 类型表 Mapper 接口
+ * </p>
+ *
+ * @author fu
+ * @since 2024-02-05
+ */
+public interface PatrolInspectionTypeMapper extends CrudMapper<PatrolInspectionType> {
+
+}

+ 34 - 0
service-fire/service-fire-biz/src/main/java/com/usky/fire/service/DataJinganAnalysisService.java

@@ -0,0 +1,34 @@
+package com.usky.fire.service;
+
+import com.usky.common.core.bean.CommonPage;
+import com.usky.fire.domain.DataJinganAnalysis;
+import com.usky.common.mybatis.core.CrudService;
+
+/**
+ * <p>
+ * 静安电子督察单数据 服务类
+ * </p>
+ *
+ * @author han
+ * @since 2024-03-07
+ */
+public interface DataJinganAnalysisService extends CrudService<DataJinganAnalysis> {
+
+    /**
+     * 电子督察单管理-电子督察单列表查询
+     *
+     * @param startTime  开始时间
+     * @param endTime  结束时间
+     * @param superviseCode  督察单编号
+     * @param id  主键ID
+     * @param handleStatus  处理状态
+     * @param pageNum      当前页
+     * @param pageSize     每页条数
+     * @return
+     */
+    CommonPage<DataJinganAnalysis> analysisList(String startTime, String endTime,String superviseCode,Integer id,
+                                                Integer handleStatus, Integer pageNum, Integer pageSize);
+
+    void update(DataJinganAnalysis dataJinganAnalysis);
+
+}

+ 32 - 0
service-fire/service-fire-biz/src/main/java/com/usky/fire/service/DataJinganPersonService.java

@@ -0,0 +1,32 @@
+package com.usky.fire.service;
+
+import com.usky.common.core.bean.CommonPage;
+import com.usky.fire.domain.DataJinganAnalysis;
+import com.usky.fire.domain.DataJinganPerson;
+import com.usky.common.mybatis.core.CrudService;
+
+/**
+ * <p>
+ *  服务类
+ * </p>
+ *
+ * @author han
+ * @since 2024-03-07
+ */
+public interface DataJinganPersonService extends CrudService<DataJinganPerson> {
+    /**
+     * 人工督察单管理-人工督察单列表查询
+     *
+     * @param startTime  开始时间
+     * @param endTime  结束时间
+     * @param artificialCode  督察单编号
+     * @param id  主键ID
+     * @param handleStatus  处理状态
+     * @param pageNum      当前页
+     * @param pageSize     每页条数
+     * @return
+     */
+    CommonPage<DataJinganPerson> personList(String startTime, String endTime,String artificialCode,Integer id, Integer handleStatus, Integer pageNum, Integer pageSize);
+
+    void update(DataJinganPerson dataJinganPerson);
+}

+ 25 - 0
service-fire/service-fire-biz/src/main/java/com/usky/fire/service/PatrolInspectionAttendanceService.java

@@ -0,0 +1,25 @@
+package com.usky.fire.service;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.usky.fire.domain.PatrolInspectionAttendance;
+import com.usky.common.mybatis.core.CrudService;
+
+import java.time.LocalDateTime;
+import java.util.Map;
+
+/**
+ * <p>
+ * 签到、签退信息记录表 服务类
+ * </p>
+ *
+ * @author fu
+ * @since 2024-02-05
+ */
+public interface PatrolInspectionAttendanceService extends CrudService<PatrolInspectionAttendance> {
+
+    IPage<Map<String, Object>> pageList(Integer pageNum, Integer pageSize, String operateCode, String operator, LocalDateTime startTime, LocalDateTime endTime);
+
+    void add(PatrolInspectionAttendance patrolInspectionAttendance);
+
+    String getDeptName(Integer id);
+}

+ 4 - 0
service-fire/service-fire-biz/src/main/java/com/usky/fire/service/PatrolInspectionPersonnelService.java

@@ -30,4 +30,8 @@ public interface PatrolInspectionPersonnelService extends CrudService<PatrolInsp
 
     List<PatrolInspectionAreaVo> personnelLeftList();
 
+    void updateSignStatus(Integer status);
+
+    PatrolInspectionPersonnel getStatus();
+
 }

+ 24 - 0
service-fire/service-fire-biz/src/main/java/com/usky/fire/service/PatrolInspectionTypeService.java

@@ -0,0 +1,24 @@
+package com.usky.fire.service;
+
+import com.usky.common.core.bean.CommonPage;
+import com.usky.fire.domain.PatrolInspectionType;
+import com.usky.common.mybatis.core.CrudService;
+
+/**
+ * <p>
+ * 类型表 服务类
+ * </p>
+ *
+ * @author fu
+ * @since 2024-02-05
+ */
+public interface PatrolInspectionTypeService extends CrudService<PatrolInspectionType> {
+
+    CommonPage<PatrolInspectionType> pageList(Integer pageNum, Integer pageSize);
+
+    void add(PatrolInspectionType patrolInspectionType);
+
+    void softDelete(PatrolInspectionType deleteType);
+
+    String getName(String code);
+}

+ 55 - 0
service-fire/service-fire-biz/src/main/java/com/usky/fire/service/impl/DataJinganAnalysisServiceImpl.java

@@ -0,0 +1,55 @@
+package com.usky.fire.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.core.toolkit.StringUtils;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.usky.common.core.bean.CommonPage;
+import com.usky.common.security.utils.SecurityUtils;
+import com.usky.fire.domain.AlarmFire;
+import com.usky.fire.domain.DataJinganAnalysis;
+import com.usky.fire.mapper.DataJinganAnalysisMapper;
+import com.usky.fire.service.DataJinganAnalysisService;
+import com.usky.common.mybatis.core.AbstractCrudService;
+import org.springframework.stereotype.Service;
+
+import java.time.LocalDateTime;
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * <p>
+ * 静安电子督察单数据 服务实现类
+ * </p>
+ *
+ * @author han
+ * @since 2024-03-07
+ */
+@Service
+public class DataJinganAnalysisServiceImpl extends AbstractCrudService<DataJinganAnalysisMapper, DataJinganAnalysis> implements DataJinganAnalysisService {
+
+    @Override
+    public CommonPage<DataJinganAnalysis> analysisList(String startTime, String endTime, String superviseCode,Integer id,
+                                                       Integer handleStatus, Integer pageNum, Integer pageSize) {
+        IPage<DataJinganAnalysis> page = new Page<>(pageNum, pageSize);
+        LambdaQueryWrapper<DataJinganAnalysis> queryWrapper = Wrappers.lambdaQuery();
+        queryWrapper.eq(DataJinganAnalysis::getTenantId, SecurityUtils.getTenantId())
+                .eq(null != handleStatus,DataJinganAnalysis::getHandleStatus, handleStatus)
+                .eq(null != id,DataJinganAnalysis::getId, id)
+                .like(StringUtils.isNotBlank(superviseCode),DataJinganAnalysis::getSuperviseCode,superviseCode)
+                .between(StringUtils.isNotBlank(startTime) && StringUtils.isNotBlank(endTime),
+                        DataJinganAnalysis::getTimestamp, startTime, endTime)
+                .orderByDesc(DataJinganAnalysis::getId);
+        page = this.page(page,queryWrapper);
+        return new CommonPage<>(page.getRecords(),page.getTotal(),page.getCurrent(),page.getSize());
+    }
+
+    public void update(DataJinganAnalysis dataJinganAnalysis){
+        dataJinganAnalysis.setHandleStatus(1);
+        dataJinganAnalysis.setHandleBy(SecurityUtils.getUsername());
+        dataJinganAnalysis.setHandleTime(LocalDateTime.now());
+        dataJinganAnalysis.setHandlePhone(SecurityUtils.getLoginUser().getSysUser().getPhonenumber());
+        this.updateById(dataJinganAnalysis);
+    }
+}

+ 51 - 0
service-fire/service-fire-biz/src/main/java/com/usky/fire/service/impl/DataJinganPersonServiceImpl.java

@@ -0,0 +1,51 @@
+package com.usky.fire.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.core.toolkit.StringUtils;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.usky.common.core.bean.CommonPage;
+import com.usky.common.security.utils.SecurityUtils;
+import com.usky.fire.domain.DataJinganAnalysis;
+import com.usky.fire.domain.DataJinganPerson;
+import com.usky.fire.mapper.DataJinganPersonMapper;
+import com.usky.fire.service.DataJinganPersonService;
+import com.usky.common.mybatis.core.AbstractCrudService;
+import org.springframework.stereotype.Service;
+
+import java.time.LocalDateTime;
+
+/**
+ * <p>
+ *  服务实现类
+ * </p>
+ *
+ * @author han
+ * @since 2024-03-07
+ */
+@Service
+public class DataJinganPersonServiceImpl extends AbstractCrudService<DataJinganPersonMapper, DataJinganPerson> implements DataJinganPersonService {
+    @Override
+    public CommonPage<DataJinganPerson> personList(String startTime, String endTime,String artificialCode,Integer id, Integer handleStatus, Integer pageNum, Integer pageSize) {
+        IPage<DataJinganPerson> page = new Page<>(pageNum, pageSize);
+        LambdaQueryWrapper<DataJinganPerson> queryWrapper = Wrappers.lambdaQuery();
+        queryWrapper.eq(DataJinganPerson::getTenantId, SecurityUtils.getTenantId())
+                .eq(null != handleStatus,DataJinganPerson::getHandleStatus, handleStatus)
+                .eq(null != id,DataJinganPerson::getId, id)
+                .like(StringUtils.isNotBlank(artificialCode),DataJinganPerson::getArtificialCode,artificialCode)
+                .between(StringUtils.isNotBlank(startTime) && StringUtils.isNotBlank(endTime),
+                        DataJinganPerson::getTimestamp, startTime, endTime)
+                .orderByDesc(DataJinganPerson::getId);
+        page = this.page(page,queryWrapper);
+        return new CommonPage<>(page.getRecords(),page.getTotal(),page.getCurrent(),page.getSize());
+    }
+
+    public void update(DataJinganPerson dataJinganPerson){
+        dataJinganPerson.setHandleStatus(1);
+        dataJinganPerson.setHandleBy(SecurityUtils.getUsername());
+        dataJinganPerson.setHandleTime(LocalDateTime.now());
+        dataJinganPerson.setHandlePhone(SecurityUtils.getLoginUser().getSysUser().getPhonenumber());
+        this.updateById(dataJinganPerson);
+    }
+}

+ 177 - 0
service-fire/service-fire-biz/src/main/java/com/usky/fire/service/impl/PatrolInspectionAttendanceServiceImpl.java

@@ -0,0 +1,177 @@
+package com.usky.fire.service.impl;
+
+import com.alibaba.fastjson.JSONObject;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.usky.agbox.RemotePatrolAgBoxService;
+import com.usky.common.core.exception.BusinessException;
+import com.usky.common.core.util.StringUtils;
+import com.usky.common.security.utils.SecurityUtils;
+import com.usky.fire.domain.PatrolInspectionAttendance;
+import com.usky.fire.domain.PatrolInspectionPersonnel;
+import com.usky.fire.mapper.PatrolInspectionAttendanceMapper;
+import com.usky.fire.mapper.PatrolInspectionPersonnelMapper;
+import com.usky.fire.service.PatrolInspectionAttendanceService;
+import com.usky.common.mybatis.core.AbstractCrudService;
+import com.usky.fire.service.PatrolInspectionPersonnelService;
+import com.usky.fire.service.PatrolInspectionTypeService;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.stereotype.Service;
+import com.usky.system.RemoteDeptService;
+
+import java.time.LocalDateTime;
+import java.time.format.DateTimeFormatter;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+
+/**
+ * <p>
+ * 签到、签退信息记录表 服务实现类
+ * </p>
+ *
+ * @author fu
+ * @since 2024-02-05
+ */
+@Service
+public class PatrolInspectionAttendanceServiceImpl extends AbstractCrudService<PatrolInspectionAttendanceMapper, PatrolInspectionAttendance> implements PatrolInspectionAttendanceService {
+    @Autowired
+    private PatrolInspectionTypeService patrolInspectionTypeService;
+
+    @Autowired
+    private RemoteDeptService remoteDeptService;
+
+    @Autowired
+    private PatrolInspectionPersonnelService patrolInspectionPersonnelService;
+
+    @Autowired
+    private PatrolInspectionPersonnelMapper patrolInspectionPersonnelMapper;
+
+    @Autowired
+    private RemotePatrolAgBoxService remotePatrolAgboxService;
+
+    @Value("${agBox.push}")
+    private Integer pushFlag;
+
+    @Override
+    public IPage<Map<String, Object>> pageList(Integer pageNum, Integer pageSize, String operateCode, String operator, LocalDateTime startTime, LocalDateTime endTime) {
+        IPage<PatrolInspectionAttendance> page = new Page<>(pageNum, pageSize);
+        LambdaQueryWrapper<PatrolInspectionAttendance> queryWrapper = Wrappers.lambdaQuery();
+        queryWrapper.eq(PatrolInspectionAttendance::getTenantId, SecurityUtils.getTenantId());
+
+        if (StringUtils.isNotBlank(operateCode)) {
+            queryWrapper.eq(PatrolInspectionAttendance::getOperateCode, operateCode);
+        }
+
+        if (StringUtils.isNotBlank(operator)) {
+            queryWrapper.eq(PatrolInspectionAttendance::getOperator, operator);
+        }
+
+        if (startTime != null) {
+            queryWrapper.between(endTime!=null,PatrolInspectionAttendance::getOperateDate, startTime, endTime);
+        }else {
+            queryWrapper.le(endTime!=null,PatrolInspectionAttendance::getOperateDate, endTime);
+        }
+
+        queryWrapper.orderByDesc(PatrolInspectionAttendance::getId);
+
+        IPage<PatrolInspectionAttendance> attendancePage = baseMapper.selectPage(page, queryWrapper);
+
+        List<Map<String, Object>> resultList = new ArrayList<>();
+
+        for (PatrolInspectionAttendance attendance : attendancePage.getRecords()) {
+            Map<String, Object> map = new HashMap<>();
+            map.put("id", attendance.getId());
+            Long deptId = attendance.getDeptId();
+            String deptName = deptId != null ? getDeptName(Math.toIntExact(deptId)) : "";
+            map.put("deptName", deptName);
+            map.put("tenantId", attendance.getTenantId());
+            map.put("operator", attendance.getOperator());
+            map.put("operatorId", attendance.getOperatorId());
+            map.put("operateDate", attendance.getOperateDate());
+            map.put("signInType", attendance.getSignInType());
+            map.put("operateName", patrolInspectionTypeService.getName(attendance.getOperateCode()));
+            map.put("deviceCode", attendance.getDeviceCode());
+            map.put("imagePath", attendance.getImagePath());
+            map.put("longitude", attendance.getLongitude());
+            map.put("latitude", attendance.getLatitude());
+            map.put("remarks", attendance.getRemarks());
+            map.put("identificationNumber", attendance.getIdentificationNumber());
+            resultList.add(map);
+        }
+        IPage<Map<String, Object>> resultPage = new Page<>();
+        resultPage.setRecords(resultList);
+        resultPage.setTotal(attendancePage.getTotal());
+        resultPage.setCurrent(attendancePage.getCurrent());
+        resultPage.setSize(attendancePage.getSize());
+        return resultPage;
+    }
+
+    @Override
+    public void add(PatrolInspectionAttendance patrolInspectionAttendance) {
+        LambdaQueryWrapper<PatrolInspectionPersonnel> wrapper = Wrappers.lambdaQuery();
+        wrapper.eq(PatrolInspectionPersonnel::getUserId,SecurityUtils.getUserId());
+        List<PatrolInspectionPersonnel> personnelList = patrolInspectionPersonnelMapper.selectList(wrapper);
+        if (personnelList.isEmpty()) {
+            throw new BusinessException("您不是巡检人员,不可进行此操作");
+        }
+        patrolInspectionAttendance.setTenantId(SecurityUtils.getTenantId());
+        patrolInspectionAttendance.setOperator(SecurityUtils.getUsername());
+        patrolInspectionAttendance.setOperatorId(SecurityUtils.getUserId());
+        patrolInspectionAttendance.setDeptId(SecurityUtils.getLoginUser().getSysUser().getDeptId());
+        patrolInspectionAttendance.setOperateDate(LocalDateTime.now());
+        patrolInspectionAttendance.setRemarks(patrolInspectionAttendance.getRemarks());
+        patrolInspectionAttendance.setSignInType(patrolInspectionAttendance.getSignInType());
+        patrolInspectionAttendance.setOperateCode(patrolInspectionAttendance.getOperateCode());
+        patrolInspectionAttendance.setImagePath(patrolInspectionAttendance.getImagePath());
+        patrolInspectionAttendance.setLatitude(patrolInspectionAttendance.getLatitude());
+        patrolInspectionAttendance.setLongitude(patrolInspectionAttendance.getLongitude());
+        patrolInspectionAttendance.setIdentificationNumber(SecurityUtils.getLoginUser().getSysUser().getPhonenumber());
+        patrolInspectionAttendance.setDeviceCode(patrolInspectionAttendance.getDeviceCode());
+        baseMapper.insert(patrolInspectionAttendance);
+        patrolInspectionPersonnelService.updateSignStatus(patrolInspectionAttendance.getSignInType());
+        JSONObject jsonObj = new JSONObject();
+        jsonObj.put("deviceId", patrolInspectionAttendance.getDeviceCode());
+        LocalDateTime now = LocalDateTime.now();
+        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
+        String formattedTime = now.format(formatter);
+        jsonObj.put("triggerTime", formattedTime);
+        Integer eventCode = 17;
+        if(patrolInspectionAttendance.getSignInType().equals(0)){
+            eventCode=1;
+        }else {
+            eventCode=2;
+        }
+        jsonObj.put("eventCode", eventCode);
+        jsonObj.put("name", SecurityUtils.getUsername());
+        jsonObj.put("certifiedNo", patrolInspectionAttendance.getIdentificationNumber());
+        if (pushFlag.equals(1)){
+            JSONObject a = remotePatrolAgboxService.addEvent(jsonObj.toJSONString());
+        }
+    }
+
+    /**
+     * 获取部门名
+     * @param id
+     * @return
+     */
+    @Override
+        public String getDeptName(Integer id) {
+            String name = "";
+            List<Map<String, Object>> deptList = remoteDeptService.getDeptList(SecurityUtils.getTenantId());
+            for (int i = 0; i < deptList.size(); i++) {
+                if (id.equals(deptList.get(i).get("dept_id"))){
+                    name = deptList.get(i).get("dept_name").toString();
+                }
+            }
+            return name;
+        }
+
+}
+

+ 41 - 3
service-fire/service-fire-biz/src/main/java/com/usky/fire/service/impl/PatrolInspectionPersonnelServiceImpl.java

@@ -1,6 +1,7 @@
 package com.usky.fire.service.impl;
 
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.usky.common.core.bean.ApiResult;
 import com.usky.common.core.bean.CommonPage;
@@ -54,11 +55,11 @@ public class PatrolInspectionPersonnelServiceImpl extends AbstractCrudService<Pa
     public void addPatrolInspectionPersonnel(PatrolInspectionPersonnel patrolInspectionPersonnel) {
         LambdaQueryWrapper<PatrolInspectionPersonnel> queryWrapper = Wrappers.lambdaQuery();
         queryWrapper.eq(PatrolInspectionPersonnel::getTenantId, SecurityUtils.getTenantId())
-                .eq(PatrolInspectionPersonnel::getAreaId, patrolInspectionPersonnel.getAreaId())
+//                .eq(PatrolInspectionPersonnel::getAreaId, patrolInspectionPersonnel.getAreaId())
                 .eq(PatrolInspectionPersonnel::getUserId, patrolInspectionPersonnel.getUserId());
         int count = this.count(queryWrapper);
         if (count>0){
-            throw new BusinessException("同区域人员不可重复添加");
+            throw new BusinessException("巡检人员只能绑定一个巡检区域");
         }
         patrolInspectionPersonnel.setCompanyId(0);
         patrolInspectionPersonnel.setTenantId(SecurityUtils.getTenantId());
@@ -78,7 +79,8 @@ public class PatrolInspectionPersonnelServiceImpl extends AbstractCrudService<Pa
         LambdaQueryWrapper<PatrolInspectionPersonnel> queryWrapper = Wrappers.lambdaQuery();
         queryWrapper.eq(PatrolInspectionPersonnel::getEnable, 1)
                 .eq(PatrolInspectionPersonnel::getUserId, patrolInspectionPersonnel.getUserId())
-                .eq(PatrolInspectionPersonnel::getAreaId, patrolInspectionPersonnel.getAreaId())
+//                .eq(PatrolInspectionPersonnel::getAreaId, patrolInspectionPersonnel.getAreaId())
+                .ne(PatrolInspectionPersonnel::getId,patrolInspectionPersonnel.getId())
                 .eq(PatrolInspectionPersonnel::getTenantId, SecurityUtils.getTenantId());
         if ("00".equals(userType)) {
             queryWrapper.eq(PatrolInspectionPersonnel::getCreator, SecurityUtils.getUsername());
@@ -142,6 +144,20 @@ public class PatrolInspectionPersonnelServiceImpl extends AbstractCrudService<Pa
                 patrolInspectionPersonnelVo.setTenantId(list.get(i).getTenantId());
                 patrolInspectionPersonnelVo.setAreaId(list.get(i).getAreaId());
                 patrolInspectionPersonnelVo.setUserId(list.get(i).getUserId());
+                patrolInspectionPersonnelVo.setDocumentInfo(list.get(i).getDocumentInfo());
+                patrolInspectionPersonnelVo.setNation(list.get(i).getNation());
+                patrolInspectionPersonnelVo.setEduLevel(list.get(i).getEduLevel());
+                patrolInspectionPersonnelVo.setRegisterResidence(list.get(i).getRegisterResidence());
+                patrolInspectionPersonnelVo.setResidence(list.get(i).getResidence());
+                patrolInspectionPersonnelVo.setPhysicsCard(list.get(i).getPhysicsCard());
+                patrolInspectionPersonnelVo.setIdCard(list.get(i).getIdCard());
+                patrolInspectionPersonnelVo.setFullName(list.get(i).getFullName());
+                patrolInspectionPersonnelVo.setWhetherEmploy(list.get(i).getWhetherEmploy());
+                patrolInspectionPersonnelVo.setBirthDate(list.get(i).getBirthDate());
+                patrolInspectionPersonnelVo.setSex(list.get(i).getSex());
+                patrolInspectionPersonnelVo.setPhoneNumber(list.get(i).getPhoneNumber());
+                patrolInspectionPersonnelVo.setMainPosition(list.get(i).getMainPosition());
+                patrolInspectionPersonnelVo.setServiceContent(list.get(i).getServiceContent());
                 for (int j = 0; j < userList.size(); j++) {
                     if (list.get(i).getUserId().longValue() == userList.get(j).getUserId()) {
                         patrolInspectionPersonnelVo.setName(userList.get(j).getNickName());
@@ -215,6 +231,28 @@ public class PatrolInspectionPersonnelServiceImpl extends AbstractCrudService<Pa
         return patrolInspectionAreaVoListOne;
     }
 
+    /**
+     * 签到状态更新
+     */
+    public void updateSignStatus(Integer status) {
+        LambdaUpdateWrapper<PatrolInspectionPersonnel> updateWrapper = Wrappers.lambdaUpdate();
+        updateWrapper.eq(PatrolInspectionPersonnel::getUserId, SecurityUtils.getUserId())
+                .set(PatrolInspectionPersonnel::getOperateType, status);
+
+        baseMapper.update(null, updateWrapper);
+    }
+
+    /**
+     * 签到状态查询
+     */
+    public PatrolInspectionPersonnel getStatus(){
+        LambdaQueryWrapper<PatrolInspectionPersonnel> wrapper = Wrappers.lambdaQuery();
+        wrapper.eq(PatrolInspectionPersonnel::getUserId,SecurityUtils.getUserId())
+                .last("LIMIT 1");
+        return baseMapper.selectOne(wrapper);
+    }
+
+
     @Override
     public List<PatrolInspectionPersonnelVo> patrolInspectionPersonnelSelect(Integer areaId) {
         LoginUser loginUser = SecurityUtils.getLoginUser();

+ 85 - 0
service-fire/service-fire-biz/src/main/java/com/usky/fire/service/impl/PatrolInspectionTypeServiceImpl.java

@@ -0,0 +1,85 @@
+package com.usky.fire.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.usky.common.core.bean.CommonPage;
+
+import com.usky.common.security.utils.SecurityUtils;
+import com.usky.fire.domain.PatrolInspectionType;
+import com.usky.fire.mapper.PatrolInspectionTypeMapper;
+import com.usky.fire.service.PatrolInspectionTypeService;
+import com.usky.common.mybatis.core.AbstractCrudService;
+import org.springframework.stereotype.Service;
+
+import java.text.DateFormat;
+import java.text.SimpleDateFormat;
+import java.util.Date;
+
+/**
+ * <p>
+ * 类型表 服务实现类
+ * </p>
+ *
+ * @author fu
+ * @since 2024-02-05
+ */
+@Service
+public class PatrolInspectionTypeServiceImpl extends AbstractCrudService<PatrolInspectionTypeMapper, PatrolInspectionType> implements PatrolInspectionTypeService {
+
+    /**
+     * 分页查询
+     * @param pageNum
+     * @param pageSize
+     * @return
+     */
+    @Override
+    public CommonPage<PatrolInspectionType> pageList(Integer pageNum, Integer pageSize) {
+        IPage<PatrolInspectionType> page = new Page<>(pageNum,pageSize);
+        LambdaQueryWrapper<PatrolInspectionType> queryWrapper = Wrappers.lambdaQuery();
+        queryWrapper.eq(PatrolInspectionType::getTenantId,SecurityUtils.getTenantId())
+                .eq(PatrolInspectionType::getDeleteFlag,0)
+                .orderByDesc(PatrolInspectionType::getId);
+        page = this.page(page,queryWrapper);
+        return new CommonPage<>(page.getRecords(),page.getTotal(),pageNum,pageSize);
+    }
+
+    /**
+     * 添加操作类型
+     * @param patrolInspectionType
+     */
+    @Override
+    public void add(PatrolInspectionType patrolInspectionType) {
+        DateFormat dateFormat = new SimpleDateFormat("yyyyMMddHHmmssSSS");
+        Date date = new Date();
+        String timestamp = dateFormat.format(date);
+        patrolInspectionType.setOperateCode(patrolInspectionType.getOperateCode()+"-"+timestamp);
+        baseMapper.insert(patrolInspectionType);
+    }
+
+    /**
+     * 软删除
+     * @param deleteType
+     */
+    @Override
+    public void softDelete(PatrolInspectionType deleteType) {
+        deleteType.setDeleteFlag(1);
+        baseMapper.updateById(deleteType);
+    }
+
+    /**
+     * 查类型名字
+     */
+    @Override
+    public String getName(String code){
+        LambdaQueryWrapper<PatrolInspectionType> queryWrapper = Wrappers.lambdaQuery();
+        queryWrapper.select(PatrolInspectionType::getTypeName)
+                .eq(PatrolInspectionType::getOperateCode,code);
+        PatrolInspectionType patrolInspectionType = baseMapper.selectOne(queryWrapper);
+        if (patrolInspectionType == null) {
+            return "";
+        }
+            return patrolInspectionType.getTypeName();
+    }
+}

+ 9 - 8
service-fire/service-fire-biz/src/main/java/com/usky/fire/service/impl/ReportConfigServiceImpl.java

@@ -95,6 +95,14 @@ public class ReportConfigServiceImpl extends AbstractCrudService<ReportConfigMap
                 queryWrapper2
                         .in(ReportIndexConfig::getSeniorIndex,indexIdList1);
                 List<ReportIndexConfig> list4 = reportIndexConfigService.list(queryWrapper2);
+                for (int k = 0; k < list3.size(); k++) {
+                    ReportIndex1Vo reportIndex1Vo = new ReportIndex1Vo();
+                    reportIndex1Vo.setId(list3.get(k).getId());
+                    reportIndex1Vo.setIndexCode(list3.get(k).getIndexCode());
+                    reportIndex1Vo.setIndexGrade(list3.get(k).getIndexGrade());
+                    reportIndex1Vo.setIndexName(list3.get(k).getIndexName());
+                    reportIndex1Vo.setIndexWeight(list3.get(k).getIndexWeight());
+                    reportIndex1Vo.setIndexDesc(list3.get(k).getIndexDesc());
                 if (CollectionUtils.isNotEmpty(list4)) {
                     List<Integer> indexIdList2 = new ArrayList<>();
                     for (int j = 0; j < list4.size(); j++) {
@@ -104,14 +112,7 @@ public class ReportConfigServiceImpl extends AbstractCrudService<ReportConfigMap
                     queryWrapper3
                             .in(ReportIndexConfig::getSeniorIndex,indexIdList2);
                     List<ReportIndexConfig> list5 = reportIndexConfigService.list(queryWrapper3);
-                    for (int k = 0; k < list3.size(); k++) {
-                        ReportIndex1Vo reportIndex1Vo = new ReportIndex1Vo();
-                        reportIndex1Vo.setId(list3.get(k).getId());
-                        reportIndex1Vo.setIndexCode(list3.get(k).getIndexCode());
-                        reportIndex1Vo.setIndexGrade(list3.get(k).getIndexGrade());
-                        reportIndex1Vo.setIndexName(list3.get(k).getIndexName());
-                        reportIndex1Vo.setIndexWeight(list3.get(k).getIndexWeight());
-                        reportIndex1Vo.setIndexDesc(list3.get(k).getIndexDesc());
+
                         List<ReportIndex2Vo> list6 = new ArrayList<>();
                         for (int l = 0; l < list4.size(); l++) {
                             List<ReportIndex3Vo> list7 = new ArrayList<>();

+ 70 - 0
service-fire/service-fire-biz/src/main/java/com/usky/fire/service/vo/PatrolInspectionPersonnelVo.java

@@ -7,6 +7,7 @@ import lombok.EqualsAndHashCode;
 import lombok.experimental.Accessors;
 
 import java.io.Serializable;
+import java.time.LocalDate;
 import java.time.LocalDateTime;
 
 /**
@@ -70,5 +71,74 @@ public class PatrolInspectionPersonnelVo implements Serializable {
      */
     private String name;
 
+    /**
+     * 证件信息
+     */
+    private String documentInfo;
+
+    /**
+     * 民族
+     */
+    private String nation;
+
+    /**
+     * 文化程序(1、小学 2、初中 3、高中 4、大学 5、其他 )
+     */
+    private Integer eduLevel;
+
+    /**
+     * 户籍地址
+     */
+    private String registerResidence;
+
+    /**
+     * 居住地址
+     */
+    private String residence;
+
+    /**
+     * 物理卡号
+     */
+    private String physicsCard;
+
+    /**
+     * 身份证号
+     */
+    private String idCard;
+
+    /**
+     * 姓名
+     */
+    private String fullName;
+
+    /**
+     * 是否在职(0、不在职 1、在职)
+     */
+    private Integer whetherEmploy;
+
+    /**
+     * 出生日期
+     */
+    private LocalDate birthDate;
+
+    /**
+     * 用户性别(0男 1女 2未知)
+     */
+    private Integer sex;
+
+    /**
+     * 联系电话
+     */
+    private String phoneNumber;
+
+    /**
+     * 主要职务
+     */
+    private Integer mainPosition;
+
+    /**
+     * 服务内容
+     */
+    private String serviceContent;
 
 }

+ 37 - 0
service-fire/service-fire-biz/src/main/resources/mapper/fire/DataJinganAnalysisMapper.xml

@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.usky.fire.mapper.DataJinganAnalysisMapper">
+
+    <!-- 通用查询映射结果 -->
+    <resultMap id="BaseResultMap" type="com.usky.fire.domain.DataJinganAnalysis">
+        <id column="id" property="id" />
+        <result column="app_key" property="appKey" />
+        <result column="timestamp" property="timestamp" />
+        <result column="format" property="format" />
+        <result column="v" property="v" />
+        <result column="sign_method" property="signMethod" />
+        <result column="pid" property="pid" />
+        <result column="bid" property="bid" />
+        <result column="fid" property="fid" />
+        <result column="supervise_id" property="superviseId" />
+        <result column="supervise_code" property="superviseCode" />
+        <result column="status" property="status" />
+        <result column="content" property="content" />
+        <result column="type" property="type" />
+        <result column="device_id" property="deviceId" />
+        <result column="aid" property="aid" />
+        <result column="loop_number" property="loopNumber" />
+        <result column="position_number" property="positionNumber" />
+        <result column="mainframe_id" property="mainframeId" />
+        <result column="sign" property="sign" />
+        <result column="company_code" property="companyCode" />
+        <result column="handle_by" property="handleBy" />
+        <result column="handle_time" property="handleTime" />
+        <result column="handle_content" property="handleContent" />
+        <result column="handle_phone" property="handlePhone" />
+        <result column="handle_status" property="handleStatus" />
+        <result column="dept_id" property="deptId" />
+        <result column="tenant_id" property="tenantId" />
+    </resultMap>
+
+</mapper>

+ 30 - 0
service-fire/service-fire-biz/src/main/resources/mapper/fire/DataJinganPersonMapper.xml

@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.usky.fire.mapper.DataJinganPersonMapper">
+
+    <!-- 通用查询映射结果 -->
+    <resultMap id="BaseResultMap" type="com.usky.fire.domain.DataJinganPerson">
+        <id column="id" property="id" />
+        <result column="app_key" property="appKey" />
+        <result column="timestamp" property="timestamp" />
+        <result column="format" property="format" />
+        <result column="version" property="version" />
+        <result column="sign_method" property="signMethod" />
+        <result column="artificial_id" property="artificialId" />
+        <result column="pid" property="pid" />
+        <result column="artificial_code" property="artificialCode" />
+        <result column="company_id" property="companyId" />
+        <result column="content" property="content" />
+        <result column="status" property="status" />
+        <result column="sign" property="sign" />
+        <result column="company_code" property="companyCode" />
+        <result column="handle_by" property="handleBy" />
+        <result column="handle_time" property="handleTime" />
+        <result column="handle_content" property="handleContent" />
+        <result column="handle_phone" property="handlePhone" />
+        <result column="handle_status" property="handleStatus" />
+        <result column="dept_id" property="deptId" />
+        <result column="tenant_id" property="tenantId" />
+    </resultMap>
+
+</mapper>

+ 23 - 0
service-fire/service-fire-biz/src/main/resources/mapper/fire/PatrolInspectionAttendanceMapper.xml

@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.usky.fire.mapper.PatrolInspectionAttendanceMapper">
+
+    <!-- 通用查询映射结果 -->
+    <resultMap id="BaseResultMap" type="com.usky.fire.domain.PatrolInspectionAttendance">
+        <id column="id" property="id" />
+        <result column="dept_id" property="deptId" />
+        <result column="tenant_id" property="tenantId" />
+        <result column="operator" property="operator" />
+        <result column="operator_id" property="operatorId" />
+        <result column="operate_date" property="operateDate" />
+        <result column="operate_type" property="operateType" />
+        <result column="type_id" property="typeId" />
+        <result column="device_code" property="deviceCode" />
+        <result column="image_path" property="imagePath" />
+        <result column="longitude" property="longitude" />
+        <result column="latitude" property="latitude" />
+        <result column="remarks" property="remarks" />
+        <result column="identification_number" property="identificationNumber" />
+    </resultMap>
+
+</mapper>

+ 15 - 0
service-fire/service-fire-biz/src/main/resources/mapper/fire/PatrolInspectionPersonnelMapper.xml

@@ -12,6 +12,21 @@
         <result column="creator" property="creator" />
         <result column="enable" property="enable" />
         <result column="company_id" property="companyId" />
+        <result column="operate_type" property="operateType" />
+        <result column="document_info" property="documentInfo" />
+        <result column="nation" property="nation" />
+        <result column="edu_level" property="eduLevel" />
+        <result column="register_residence" property="registerResidence" />
+        <result column="residence" property="residence" />
+        <result column="physics_card" property="physicsCard" />
+        <result column="id_card" property="idCard" />
+        <result column="full_name" property="fullName" />
+        <result column="whether_employ" property="whetherEmploy" />
+        <result column="birth_date" property="birthDate" />
+        <result column="sex" property="sex" />
+        <result column="phone_number" property="phoneNumber" />
+        <result column="main_position" property="mainPosition" />
+        <result column="service_content" property="serviceContent" />
     </resultMap>
 
 </mapper>

+ 16 - 0
service-fire/service-fire-biz/src/main/resources/mapper/fire/PatrolInspectionTypeMapper.xml

@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.usky.fire.mapper.PatrolInspectionTypeMapper">
+
+    <!-- 通用查询映射结果 -->
+    <resultMap id="BaseResultMap" type="com.usky.fire.domain.PatrolInspectionType">
+        <id column="id" property="id" />
+        <result column="type_code" property="typeCode" />
+        <result column="type_name" property="typeName" />
+        <result column="tenant_id" property="tenantId" />
+        <result column="dept_id" property="deptId" />
+        <result column="remarks" property="remarks" />
+        <result column="delete_flag" property="deleteFlag" />
+    </resultMap>
+
+</mapper>

+ 6 - 0
service-iot/service-iot-biz/pom.xml

@@ -60,6 +60,12 @@
             <artifactId>spring-websocket</artifactId>
             <version>5.2.8.RELEASE</version>
         </dependency>
+        <dependency>
+            <groupId>com.usky</groupId>
+            <artifactId>service-agbox-api</artifactId>
+            <version>0.0.1</version>
+            <scope>compile</scope>
+        </dependency>
     </dependencies>
 
     <build>

+ 43 - 0
service-iot/service-iot-biz/src/main/java/com/usky/iot/controller/web/BaseAppInfoController.java

@@ -0,0 +1,43 @@
+package com.usky.iot.controller.web;
+
+
+import com.usky.common.core.bean.ApiResult;
+import com.usky.iot.domain.BaseAlarmType;
+import com.usky.iot.domain.BaseAppInfo;
+import com.usky.iot.service.BaseAlarmTypeService;
+import com.usky.iot.service.BaseAppInfoService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ * <p>
+ * APP用户心跳信息 前端控制器
+ * </p>
+ *
+ * @author han
+ * @since 2024-03-29
+ */
+@RestController
+@RequestMapping("/baseAppInfo")
+public class BaseAppInfoController {
+    @Autowired
+    private BaseAppInfoService baseAppInfoService;
+
+    /**
+     * 新增
+     * @param baseAppInfo
+     * @return
+     */
+    @PostMapping("add")
+    public ApiResult<Void> add(@RequestBody BaseAppInfo baseAppInfo){
+        baseAppInfoService.add(baseAppInfo);
+        return ApiResult.success();
+    }
+
+}
+

+ 106 - 0
service-iot/service-iot-biz/src/main/java/com/usky/iot/domain/BaseAppInfo.java

@@ -0,0 +1,106 @@
+package com.usky.iot.domain;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import java.time.LocalDateTime;
+import java.io.Serializable;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+/**
+ * <p>
+ * APP用户心跳信息
+ * </p>
+ *
+ * @author han
+ * @since 2024-03-29
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+public class BaseAppInfo implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 主键
+     */
+    @TableId(value = "id", type = IdType.AUTO)
+    private Integer id;
+
+    /**
+     * 设备ID
+     */
+    private String deviceId;
+
+    /**
+     * 用户账号
+     */
+    private String userName;
+
+    /**
+     * 设备型号
+     */
+    private String deviceModel;
+
+    /**
+     * 访问IP
+     */
+    private String accessIp;
+
+    /**
+     * 网络类型
+     */
+    private String networkType;
+
+    /**
+     * 网络服务商
+     */
+    private String networkService;
+
+    /**
+     * 操作系统
+     */
+    private String operateSystem;
+
+    /**
+     * 经度
+     */
+    private String longitude;
+
+    /**
+     * 纬度
+     */
+    private String latitude;
+
+    /**
+     * 创建时间
+     */
+    private LocalDateTime createTime;
+
+    /**
+     * 更新时间
+     */
+    private LocalDateTime updateTime;
+
+    /**
+     * 更新人
+     */
+    private String updateBy;
+
+    /**
+     * 创建人
+     */
+    private String createBy;
+
+    /**
+     * 组织机构ID
+     */
+    private Integer deptId;
+
+    /**
+     * 租户ID
+     */
+    private Integer tenantId;
+
+
+}

+ 16 - 0
service-iot/service-iot-biz/src/main/java/com/usky/iot/mapper/BaseAppInfoMapper.java

@@ -0,0 +1,16 @@
+package com.usky.iot.mapper;
+
+import com.usky.iot.domain.BaseAppInfo;
+import com.usky.common.mybatis.core.CrudMapper;
+
+/**
+ * <p>
+ * APP用户心跳信息 Mapper 接口
+ * </p>
+ *
+ * @author han
+ * @since 2024-03-29
+ */
+public interface BaseAppInfoMapper extends CrudMapper<BaseAppInfo> {
+
+}

+ 22 - 0
service-iot/service-iot-biz/src/main/java/com/usky/iot/service/BaseAppInfoService.java

@@ -0,0 +1,22 @@
+package com.usky.iot.service;
+
+import com.usky.iot.domain.BaseAlarmType;
+import com.usky.iot.domain.BaseAppInfo;
+import com.usky.common.mybatis.core.CrudService;
+
+/**
+ * <p>
+ * APP用户心跳信息 服务类
+ * </p>
+ *
+ * @author han
+ * @since 2024-03-29
+ */
+public interface BaseAppInfoService extends CrudService<BaseAppInfo> {
+    /**
+     * 新增
+     * @param baseAppInfo
+     * @return
+     */
+    void add(BaseAppInfo baseAppInfo);
+}

+ 6 - 1
service-iot/service-iot-biz/src/main/java/com/usky/iot/service/impl/BaseAlarmServiceImpl.java

@@ -21,6 +21,8 @@ import com.usky.iot.service.config.websocket.WebSocket;
 import com.usky.iot.service.vo.BaseAlarmListVO;
 import com.usky.iot.service.vo.BaseAlarmRequestVO;
 import com.usky.iot.service.vo.BaseAlarmResponeVO;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
@@ -46,6 +48,8 @@ import java.util.stream.Collectors;
 @Service
 public class BaseAlarmServiceImpl extends AbstractCrudService<BaseAlarmMapper, BaseAlarm> implements BaseAlarmService {
 
+    private static final Logger LOGGER = LoggerFactory.getLogger(BaseAlarmServiceImpl.class);
+
     @Autowired
     private DmpProductInfoService dmpProductInfoService;
 
@@ -551,10 +555,11 @@ public class BaseAlarmServiceImpl extends AbstractCrudService<BaseAlarmMapper, B
             this.updateBatchById(list);
 
         }else {  // 单一
+//            LOGGER.info("alarmceshi+++++++++"+SecurityUtils.getLoginUser().getSysUser());
             baseAlarm.setHandleStatus(1);
             baseAlarm.setHandleBy(SecurityUtils.getUsername());
             baseAlarm.setHandleTime(LocalDateTime.now());
-            baseAlarm.setHandlePhone(SecurityUtils.getLoginUser().getSysUser().getPhonenumber());
+//            baseAlarm.setHandlePhone(SecurityUtils.getLoginUser().getSysUser().getPhonenumber());
             this.updateById(baseAlarm);
         }
     }

+ 76 - 0
service-iot/service-iot-biz/src/main/java/com/usky/iot/service/impl/BaseAppInfoServiceImpl.java

@@ -0,0 +1,76 @@
+package com.usky.iot.service.impl;
+
+import com.alibaba.fastjson.JSONObject;
+import com.usky.agbox.RemotePatrolAgBoxService;
+import com.usky.common.security.utils.SecurityUtils;
+import com.usky.iot.domain.BaseAppInfo;
+import com.usky.iot.mapper.BaseAppInfoMapper;
+import com.usky.iot.service.BaseAppInfoService;
+import com.usky.common.mybatis.core.AbstractCrudService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.stereotype.Service;
+import org.springframework.web.context.request.RequestAttributes;
+import org.springframework.web.context.request.RequestContextHolder;
+import org.springframework.web.context.request.ServletRequestAttributes;
+
+import javax.servlet.http.HttpServletRequest;
+import java.time.LocalDateTime;
+
+/**
+ * <p>
+ * APP用户心跳信息 服务实现类
+ * </p>
+ *
+ * @author han
+ * @since 2024-03-29
+ */
+@Service
+public class BaseAppInfoServiceImpl extends AbstractCrudService<BaseAppInfoMapper, BaseAppInfo> implements BaseAppInfoService {
+
+    @Autowired
+    private RemotePatrolAgBoxService remotePatrolAgboxService;
+
+    @Value("${agBox.push}")
+    private Integer pushFlag;
+
+    public String getIpAddress(HttpServletRequest request) {
+        String ip = request.getHeader("X-Forwarded-For");
+        if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
+            ip = request.getHeader("Proxy-Client-IP");
+        }
+        if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
+            ip = request.getHeader("WL-Proxy-Client-IP");
+        }
+        if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
+            ip = request.getRemoteAddr();
+        }
+        return ip;
+    }
+
+    public static HttpServletRequest getHttpServletRequest() {
+        RequestAttributes requestAttributes = RequestContextHolder.getRequestAttributes();
+        if(requestAttributes == null){
+            return null;
+        }
+
+        return ((ServletRequestAttributes) requestAttributes).getRequest();
+    }
+
+    @Override
+    public void add(BaseAppInfo baseAppInfo){
+        JSONObject jsonObj = new JSONObject();
+        jsonObj.put("deviceId", baseAppInfo.getDeviceId());
+//        baseAppInfo.setNetworkService(a.toJSONString());
+        HttpServletRequest request = getHttpServletRequest();
+        String accessIp = getIpAddress(request);
+        baseAppInfo.setAccessIp(accessIp);
+        baseAppInfo.setCreateBy(SecurityUtils.getUsername());
+        baseAppInfo.setCreateTime(LocalDateTime.now());
+        baseAppInfo.setTenantId(SecurityUtils.getTenantId());
+        this.save(baseAppInfo);
+        if (pushFlag.equals(1)){
+            JSONObject a = remotePatrolAgboxService.updateHeart(jsonObj.toJSONString());
+        }
+    }
+}

+ 25 - 0
service-iot/service-iot-biz/src/main/resources/mapper/iot/BaseAppInfoMapper.xml

@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.usky.iot.mapper.BaseAppInfoMapper">
+
+    <!-- 通用查询映射结果 -->
+    <resultMap id="BaseResultMap" type="com.usky.iot.domain.BaseAppInfo">
+        <id column="id" property="id" />
+        <result column="device_id" property="deviceId" />
+        <result column="user_name" property="userName" />
+        <result column="device_model" property="deviceModel" />
+        <result column="access_ip" property="accessIp" />
+        <result column="network_type" property="networkType" />
+        <result column="network_service" property="networkService" />
+        <result column="operate_system" property="operateSystem" />
+        <result column="longitude" property="longitude" />
+        <result column="latitude" property="latitude" />
+        <result column="create_time" property="createTime" />
+        <result column="update_time" property="updateTime" />
+        <result column="update_by" property="updateBy" />
+        <result column="create_by" property="createBy" />
+        <result column="dept_id" property="deptId" />
+        <result column="tenant_id" property="tenantId" />
+    </resultMap>
+
+</mapper>

+ 70 - 70
service-meeting/service-meeting-biz/src/main/java/com/usky/meeting/service/impl/MeetingRoomServiceImpl.java

@@ -66,62 +66,62 @@ public class MeetingRoomServiceImpl extends AbstractCrudService<MeetingRoomMappe
     private SysUserService sysUserService;
 
     @Override
-    public Map<String,Object> FirstPageStatistic(String year){
-        Map<String,Object> map = new HashMap<>();
+    public Map<String, Object> FirstPageStatistic(String year) {
+        Map<String, Object> map = new HashMap<>();
         Integer tenantId = SecurityUtils.getTenantId();
-        Map<String,Object> roomSummary = dmMeetingRoomRepository.roomSummary(tenantId);
-        map.put("roomSummary",roomSummary);
-        Map<String,Object> meetingSummary = dmMeetingService.meetingSummary(tenantId);
-        map.put("meetingSummary",meetingSummary);
-        Map<String,Object> meetingSummaryByYear = dmMeetingService.meetingSummaryByYear(year,tenantId);
-        map.put("meetingSummaryByYear",meetingSummaryByYear);
+        Map<String, Object> roomSummary = dmMeetingRoomRepository.roomSummary(tenantId);
+        map.put("roomSummary", roomSummary);
+        Map<String, Object> meetingSummary = dmMeetingService.meetingSummary(tenantId);
+        map.put("meetingSummary", meetingSummary);
+        Map<String, Object> meetingSummaryByYear = dmMeetingService.meetingSummaryByYear(year, tenantId);
+        map.put("meetingSummaryByYear", meetingSummaryByYear);
 
         return map;
     }
 
     @Override
-    public CommonPage<MeetingRoom> dmMeetingRoomList(MeetingRoomRequestVO requestVO){
-        IPage<MeetingRoom> page = new Page<>(requestVO.getCurrent(),requestVO.getSize());
+    public CommonPage<MeetingRoom> dmMeetingRoomList(MeetingRoomRequestVO requestVO) {
+        IPage<MeetingRoom> page = new Page<>(requestVO.getCurrent(), requestVO.getSize());
 
-        String floorId = null ;
-        if(StringUtils.isNotBlank(requestVO.getFloorName())){
+        String floorId = null;
+        if (StringUtils.isNotBlank(requestVO.getFloorName())) {
             QueryWrapper<MeetingFloor> query = Wrappers.query();
-            query.select("floor_id").eq("floor_name",requestVO.getFloorName())
-                    .eq("tenant_id",SecurityUtils.getTenantId());
-            List<Map<String,Object>> map = dmFloorService.listMaps(query);
-            if(CollectionUtils.isNotEmpty(map)){
+            query.select("floor_id").eq("floor_name", requestVO.getFloorName())
+                    .eq("tenant_id", SecurityUtils.getTenantId());
+            List<Map<String, Object>> map = dmFloorService.listMaps(query);
+            if (CollectionUtils.isNotEmpty(map)) {
                 floorId = map.get(0).get("floor_id").toString();
             }
         }
 
         LambdaQueryWrapper<MeetingRoom> queryWrapper = Wrappers.lambdaQuery();
-        queryWrapper.like(StringUtils.isNotBlank(requestVO.getRoomName()),MeetingRoom::getRoomName,requestVO.getRoomName())
-                .eq(StringUtils.isNotBlank(floorId),MeetingRoom::getFloorId,floorId)
-                .eq(null != requestVO.getStatus(),MeetingRoom::getStatus,requestVO.getStatus())
-                .eq(null != requestVO.getRoomStatus(),MeetingRoom::getRoomStatus,requestVO.getRoomStatus())
+        queryWrapper.like(StringUtils.isNotBlank(requestVO.getRoomName()), MeetingRoom::getRoomName, requestVO.getRoomName())
+                .eq(StringUtils.isNotBlank(floorId), MeetingRoom::getFloorId, floorId)
+                .eq(null != requestVO.getStatus(), MeetingRoom::getStatus, requestVO.getStatus())
+                .eq(null != requestVO.getRoomStatus(), MeetingRoom::getRoomStatus, requestVO.getRoomStatus())
                 .eq(MeetingRoom::getTenantId, SecurityUtils.getTenantId())
                 .orderByDesc(MeetingRoom::getRoomId);
-        page = this.page(page,queryWrapper);
-        if(CollectionUtils.isNotEmpty(page.getRecords())){
+        page = this.page(page, queryWrapper);
+        if (CollectionUtils.isNotEmpty(page.getRecords())) {
             //查询楼层信息和本地存储信息
             List<Long> floorIdList = new ArrayList<>();
             for (int i = 0; i < page.getRecords().size(); i++) {
                 Long floorId1 = page.getRecords().get(i).getFloorId();
-                if(!floorIdList.contains(floorId1)){
+                if (!floorIdList.contains(floorId1)) {
                     floorIdList.add(floorId1);
                 }
             }
             LambdaQueryWrapper<MeetingFloor> floorQuery = Wrappers.lambdaQuery();
-            floorQuery.in(CollectionUtils.isNotEmpty(floorIdList), MeetingFloor::getFloorId,floorIdList)
-                    .eq(MeetingFloor::getTenantId,SecurityUtils.getTenantId());
+            floorQuery.in(CollectionUtils.isNotEmpty(floorIdList), MeetingFloor::getFloorId, floorIdList)
+                    .eq(MeetingFloor::getTenantId, SecurityUtils.getTenantId());
             List<MeetingFloor> floorList = dmFloorService.list(floorQuery);
 
             //会议室匹配对应楼层信息和本地存储信息
             for (int i = 0; i < page.getRecords().size(); i++) {
-                if(CollectionUtils.isNotEmpty(floorList)){
+                if (CollectionUtils.isNotEmpty(floorList)) {
                     Long frId = Long.valueOf(page.getRecords().get(i).getFloorId());
                     for (int j = 0; j < floorList.size(); j++) {
-                        if(frId.equals(floorList.get(j).getFloorId())){
+                        if (frId.equals(floorList.get(j).getFloorId())) {
                             page.getRecords().get(i).setMeetingFloor(floorList.get(j));
                             break;
                         }
@@ -131,11 +131,11 @@ public class MeetingRoomServiceImpl extends AbstractCrudService<MeetingRoomMappe
         }
 
 
-        return new CommonPage<>(page.getRecords(),page.getTotal(),requestVO.getSize(),requestVO.getCurrent());
+        return new CommonPage<>(page.getRecords(), page.getTotal(), requestVO.getSize(), requestVO.getCurrent());
     }
 
     @Override
-    public List<MeetingRoom> MeetingRoomList(){
+    public List<MeetingRoom> MeetingRoomList() {
         LambdaQueryWrapper<MeetingRoom> queryWrapper = Wrappers.lambdaQuery();
         queryWrapper.eq(MeetingRoom::getTenantId, SecurityUtils.getTenantId());
         List<MeetingRoom> list = this.list(queryWrapper);
@@ -144,9 +144,9 @@ public class MeetingRoomServiceImpl extends AbstractCrudService<MeetingRoomMappe
     }
 
     @Override
-    public void add(MeetingRoom meetingRoom){
-        if(checkNameUnique(meetingRoom)){
-            throw new BusinessException("新增会议室房间失败,"+meetingRoom.getRoomName()+"已经存在");
+    public void add(MeetingRoom meetingRoom) {
+        if (checkNameUnique(meetingRoom)) {
+            throw new BusinessException("新增会议室房间失败," + meetingRoom.getRoomName() + "已经存在");
         }
         meetingRoom.setRoomStatus(0);
         meetingRoom.setReserveStatus(0);
@@ -158,9 +158,9 @@ public class MeetingRoomServiceImpl extends AbstractCrudService<MeetingRoomMappe
     }
 
     @Override
-    public void edit(MeetingRoom meetingRoom){
-        if(checkNameUnique(meetingRoom)){
-            throw new BusinessException("修改会议室房间失败,"+meetingRoom.getRoomName()+"已经存在");
+    public void edit(MeetingRoom meetingRoom) {
+        if (checkNameUnique(meetingRoom)) {
+            throw new BusinessException("修改会议室房间失败," + meetingRoom.getRoomName() + "已经存在");
         }
         meetingRoom.setUpdateBy(SecurityUtils.getUsername());
         meetingRoom.setUpdateTime(LocalDateTime.now());
@@ -169,13 +169,13 @@ public class MeetingRoomServiceImpl extends AbstractCrudService<MeetingRoomMappe
     }
 
     @Override
-    public void remove(Long roomId){
+    public void remove(Long roomId) {
         List<MeetingDevice> deviceList = meetingDeviceRepository.getDeviceListByRoomId(roomId);
-        if(deviceList.size() > 0){
+        if (deviceList.size() > 0) {
             throw new BusinessException("会议室有绑定设备,不可删除");
         }
         List<MeetingInfo> meetingList = meetingInfoRepository.queryAllMeetingByRoomId(roomId);
-        if(meetingList.size() > 0){
+        if (meetingList.size() > 0) {
             throw new BusinessException("有会议记录不可删除");
         }
 
@@ -186,47 +186,47 @@ public class MeetingRoomServiceImpl extends AbstractCrudService<MeetingRoomMappe
     }
 
     @Override
-    public Map<String,Object> attendee(Long meetingId, Long userId, String userName){
+    public Map<String, Object> attendee(Long meetingId, Long userId, String userName) {
         Map<String, Object> map = new HashMap<>();
         Integer tenantId = SecurityUtils.getTenantId();
-        map.put("userName",userName);
-        List<MeetingAttendee> list = meetingAttendeeRepository.findMeetingAttendeeList(meetingId,userId,tenantId);
-        if(org.springframework.util.CollectionUtils.isEmpty(list)){
-            map.put("msg","您当前没有需要参加的会议");
-        }else{
-            map.put("msg","验证成功");
+        map.put("userName", userName);
+        List<MeetingAttendee> list = meetingAttendeeRepository.findMeetingAttendeeList(meetingId, userId, tenantId);
+        if (org.springframework.util.CollectionUtils.isEmpty(list)) {
+            map.put("msg", "您当前没有需要参加的会议");
+        } else {
+            map.put("msg", "验证成功");
         }
         return map;
     }
 
     @Override
-    public List<DmMeetingRoomDto> getMeetingRoomReservationList(MeetingRoomReservationVO reservationVO)  throws ParseException {
+    public List<DmMeetingRoomDto> getMeetingRoomReservationList(MeetingRoomReservationVO reservationVO) throws ParseException {
         List<DmMeetingRoomDto> list = new ArrayList<>();
         List<DmMeetingRoomDto> newDmMeetingRoomDtoList = new ArrayList<>();
-        String meetingRoomName = reservationVO.getMeetingRoomName();
+        Long meetingRoomId = reservationVO.getMeetingRoomId();
         LambdaQueryWrapper<MeetingRoom> queryWrapper = Wrappers.lambdaQuery();
         queryWrapper.eq(StringUtils.isNotBlank(reservationVO.getMeetingRoomId()),MeetingRoom::getRoomId,reservationVO.getMeetingRoomId())
                 .like(StringUtils.isNotBlank(meetingRoomName),MeetingRoom::getRoomName,meetingRoomName)
                 .eq(MeetingRoom::getTenantId,SecurityUtils.getTenantId());
         List<MeetingRoom> list1 = this.list(queryWrapper);
         List<Long> floorIdList = new ArrayList<>();
-        if(CollectionUtils.isNotEmpty(list1)){
+        if (CollectionUtils.isNotEmpty(list1)) {
             for (int i = 0; i < list1.size(); i++) {
-                if(!floorIdList.contains(list1.get(i).getFloorId())){
+                if (!floorIdList.contains(list1.get(i).getFloorId())) {
                     floorIdList.add(list1.get(i).getFloorId());
                 }
             }
             LambdaQueryWrapper<MeetingFloor> floorWrapper = Wrappers.lambdaQuery();
-            floorWrapper.in(MeetingFloor::getFloorId,floorIdList)
-                    .eq(MeetingFloor::getTenantId,SecurityUtils.getTenantId());
+            floorWrapper.in(MeetingFloor::getFloorId, floorIdList)
+                    .eq(MeetingFloor::getTenantId, SecurityUtils.getTenantId());
             List<MeetingFloor> meetingFloorList = dmFloorService.list(floorWrapper);
-            if(CollectionUtils.isNotEmpty(meetingFloorList)){
+            if (CollectionUtils.isNotEmpty(meetingFloorList)) {
                 for (int i = 0; i < list1.size(); i++) {
                     DmMeetingRoomDto dmMeetingRoomDto = new DmMeetingRoomDto();
                     dmMeetingRoomDto.setRoomId(list1.get(i).getRoomId());
                     dmMeetingRoomDto.setRoomName(list1.get(i).getRoomName());
                     for (int j = 0; j < meetingFloorList.size(); j++) {
-                        if(list1.get(i).getFloorId().equals(meetingFloorList.get(j).getFloorId())){
+                        if (list1.get(i).getFloorId().equals(meetingFloorList.get(j).getFloorId())) {
                             dmMeetingRoomDto.setDmFloor(meetingFloorList.get(j));
                             break;
                         }
@@ -248,9 +248,9 @@ public class MeetingRoomServiceImpl extends AbstractCrudService<MeetingRoomMappe
                 }
             }
         }
-        if(list.size() > 0){
-            for(DmMeetingRoomDto dmMeetingRoomDto : list){
-                if(ObjectUtils.isEmpty(reservationVO.getDate())){
+        if (list.size() > 0) {
+            for (DmMeetingRoomDto dmMeetingRoomDto : list) {
+                if (ObjectUtils.isEmpty(reservationVO.getDate())) {
                     reservationVO.setDate(LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));
                 }
                 JSONObject meetingRoomUsageByDayV2 = dmMeetingService.getMeetingRoomUsageByDayV2(dmMeetingRoomDto.getRoomId(), reservationVO.getDate());
@@ -259,7 +259,7 @@ public class MeetingRoomServiceImpl extends AbstractCrudService<MeetingRoomMappe
                 dmMeetingRoomDto.setDmMeetingList(dmMeeting);
 
                 dmMeetingRoomDto.setMeetingRoomUsage(meetingRoomUsageByDayV2.getJSONArray("timeRange"));
-                List<Integer> monthList = dmMeetingService.getMeetingRoomUsageByMonth(dmMeetingRoomDto.getRoomId(),reservationVO.getDate());
+                List<Integer> monthList = dmMeetingService.getMeetingRoomUsageByMonth(dmMeetingRoomDto.getRoomId(), reservationVO.getDate());
                 dmMeetingRoomDto.setMeetingRoomUsageMonth(monthList);
 
                 newDmMeetingRoomDtoList.add(dmMeetingRoomDto);
@@ -270,7 +270,7 @@ public class MeetingRoomServiceImpl extends AbstractCrudService<MeetingRoomMappe
     }
 
     @Override
-    public MeetingRoom meetingRoomDetails(Long roomId){
+    public MeetingRoom meetingRoomDetails(Long roomId) {
         //查询会议室基础信息
         MeetingRoom meetingRoom = this.getById(roomId);
 
@@ -284,21 +284,21 @@ public class MeetingRoomServiceImpl extends AbstractCrudService<MeetingRoomMappe
         List<MeetingInfo> meetingList = meetingInfoRepository.queryTodayMeetingByRoomId(roomId);
 
         LambdaQueryWrapper<SysUser> sysUserQuery = Wrappers.lambdaQuery();
-        sysUserQuery.eq(SysUser::getTenantId,SecurityUtils.getTenantId());
+        sysUserQuery.eq(SysUser::getTenantId, SecurityUtils.getTenantId());
         List<SysUser> userList = sysUserService.list(sysUserQuery);
-        if(userList.size() <= 0){
+        if (userList.size() <= 0) {
             throw new BusinessException("用户信息不能为空");
         }
-        if(!ObjectUtil.isEmpty(meetingList)){
-            for(MeetingInfo dmMeeting : meetingList){
+        if (!ObjectUtil.isEmpty(meetingList)) {
+            for (MeetingInfo dmMeeting : meetingList) {
                 //参会人员信息
                 List<SysUser> attendeeUserList = new ArrayList<>();
-                List<MeetingAttendee> attendeeList = meetingAttendeeRepository.findMeetingAttendeeList(dmMeeting.getMeetingId(),null, SecurityUtils.getTenantId());
-                if(attendeeList.size() > 0){
+                List<MeetingAttendee> attendeeList = meetingAttendeeRepository.findMeetingAttendeeList(dmMeeting.getMeetingId(), null, SecurityUtils.getTenantId());
+                if (attendeeList.size() > 0) {
                     for (int i = 0; i < attendeeList.size(); i++) {
                         Long uid = attendeeList.get(i).getUserId();
                         for (int j = 0; j < userList.size(); j++) {
-                            if(uid.equals(userList.get(j).getUserId())){
+                            if (uid.equals(userList.get(j).getUserId())) {
                                 attendeeUserList.add(userList.get(j));
                                 break;
                             }
@@ -308,7 +308,7 @@ public class MeetingRoomServiceImpl extends AbstractCrudService<MeetingRoomMappe
                 dmMeeting.setUsers(attendeeUserList);
                 //发起人信息
                 for (int i = 0; i < userList.size(); i++) {
-                    if(userList.get(i).getUserId().equals(Long.valueOf(dmMeeting.getInitiatorId()))){
+                    if (userList.get(i).getUserId().equals(Long.valueOf(dmMeeting.getInitiatorId()))) {
                         dmMeeting.setInitiatorUser(userList.get(i));
                         break;
                     }
@@ -324,13 +324,13 @@ public class MeetingRoomServiceImpl extends AbstractCrudService<MeetingRoomMappe
         return meetingRoom;
     }
 
-    public boolean checkNameUnique(MeetingRoom meetingRoom){
-        Long id = null == meetingRoom.getRoomId()?-1:meetingRoom.getRoomId();
+    public boolean checkNameUnique(MeetingRoom meetingRoom) {
+        Long id = null == meetingRoom.getRoomId() ? -1 : meetingRoom.getRoomId();
         LambdaQueryWrapper<MeetingRoom> queryWrapper = Wrappers.lambdaQuery();
-        queryWrapper.eq(MeetingRoom::getRoomName,meetingRoom.getRoomName())
+        queryWrapper.eq(MeetingRoom::getRoomName, meetingRoom.getRoomName())
                 .eq(MeetingRoom::getTenantId, SecurityUtils.getTenantId());
         MeetingRoom one = this.getOne(queryWrapper);
-        return null != one && !Objects.equals(one.getRoomId(),id);
+        return null != one && !Objects.equals(one.getRoomId(), id);
 
     }
 }

+ 5 - 0
service-website/service-website-biz/src/main/java/com/usky/website/domain/SiteCategory.java

@@ -105,6 +105,11 @@ public class SiteCategory implements Serializable {
      */
     private Integer categoryStyle;
 
+    /**
+     * 标题
+     */
+    private String title;
+
     /**
      * 子级
      */

+ 1 - 0
service-website/service-website-biz/src/main/resources/mapper/website/SiteCategoryMapper.xml

@@ -19,6 +19,7 @@
         <result column="status" property="status" />
         <result column="model_type" property="modelType" />
         <result column="category_style" property="categoryStyle" />
+        <result column="title" property="title" />
     </resultMap>
 
 </mapper>