init
This commit is contained in:
commit
47fd938102
33
.gitignore
vendored
Normal file
33
.gitignore
vendored
Normal file
@ -0,0 +1,33 @@
|
|||||||
|
HELP.md
|
||||||
|
target/
|
||||||
|
!.mvn/wrapper/maven-wrapper.jar
|
||||||
|
!**/src/main/**/target/
|
||||||
|
!**/src/test/**/target/
|
||||||
|
|
||||||
|
### STS ###
|
||||||
|
.apt_generated
|
||||||
|
.classpath
|
||||||
|
.factorypath
|
||||||
|
.project
|
||||||
|
.settings
|
||||||
|
.springBeans
|
||||||
|
.sts4-cache
|
||||||
|
|
||||||
|
### IntelliJ IDEA ###
|
||||||
|
.idea
|
||||||
|
*.iws
|
||||||
|
*.iml
|
||||||
|
*.ipr
|
||||||
|
|
||||||
|
### NetBeans ###
|
||||||
|
/nbproject/private/
|
||||||
|
/nbbuild/
|
||||||
|
/dist/
|
||||||
|
/nbdist/
|
||||||
|
/.nb-gradle/
|
||||||
|
build/
|
||||||
|
!**/src/main/**/build/
|
||||||
|
!**/src/test/**/build/
|
||||||
|
|
||||||
|
### VS Code ###
|
||||||
|
.vscode/
|
||||||
138
pom.xml
Normal file
138
pom.xml
Normal file
@ -0,0 +1,138 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||||
|
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
|
||||||
|
<parent>
|
||||||
|
<groupId>org.springframework.boot</groupId>
|
||||||
|
<artifactId>spring-boot-starter-parent</artifactId>
|
||||||
|
<version>2.5.12</version>
|
||||||
|
<relativePath />
|
||||||
|
</parent>
|
||||||
|
<modelVersion>4.0.0</modelVersion>
|
||||||
|
<groupId>com.hxl</groupId>
|
||||||
|
<artifactId>dataToPuyang</artifactId>
|
||||||
|
<version>1.0</version>
|
||||||
|
<name>dataToPuyang</name>
|
||||||
|
<description>龙德阳</description>
|
||||||
|
<packaging>jar</packaging>
|
||||||
|
<properties>
|
||||||
|
<java.version>1.8</java.version>
|
||||||
|
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
|
||||||
|
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
|
||||||
|
<spring-boot.version>2.5.12</spring-boot.version>
|
||||||
|
<skipTests>true</skipTests>
|
||||||
|
</properties>
|
||||||
|
|
||||||
|
<dependencies>
|
||||||
|
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.springframework.boot</groupId>
|
||||||
|
<artifactId>spring-boot-starter</artifactId>
|
||||||
|
<version>${spring-boot.version}</version>
|
||||||
|
</dependency>
|
||||||
|
|
||||||
|
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.springframework.boot</groupId>
|
||||||
|
<artifactId>spring-boot-starter-web</artifactId>
|
||||||
|
<version>${spring-boot.version}</version>
|
||||||
|
</dependency>
|
||||||
|
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.springframework.boot</groupId>
|
||||||
|
<artifactId>spring-boot-starter-thymeleaf</artifactId>
|
||||||
|
<version>${spring-boot.version}</version>
|
||||||
|
</dependency>
|
||||||
|
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.springframework.boot</groupId>
|
||||||
|
<artifactId>spring-boot-starter-test</artifactId>
|
||||||
|
<scope>test</scope>
|
||||||
|
</dependency>
|
||||||
|
|
||||||
|
<!--引入AOP依赖-->
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.springframework.boot</groupId>
|
||||||
|
<artifactId>spring-boot-starter-aop</artifactId>
|
||||||
|
</dependency>
|
||||||
|
|
||||||
|
<!--引入Lombok依赖-->
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.projectlombok</groupId>
|
||||||
|
<artifactId>lombok</artifactId>
|
||||||
|
<version>1.16.18</version>
|
||||||
|
<optional>true</optional>
|
||||||
|
</dependency>
|
||||||
|
|
||||||
|
<dependency>
|
||||||
|
<groupId>cn.hutool</groupId>
|
||||||
|
<artifactId>hutool-all</artifactId>
|
||||||
|
<version>5.7.20</version>
|
||||||
|
</dependency>
|
||||||
|
|
||||||
|
<!--引入MySql依赖-->
|
||||||
|
<dependency>
|
||||||
|
<groupId>mysql</groupId>
|
||||||
|
<artifactId>mysql-connector-java</artifactId>
|
||||||
|
<version>8.0.17</version>
|
||||||
|
</dependency>
|
||||||
|
|
||||||
|
|
||||||
|
<!--引入MyBatisPlus依赖-->
|
||||||
|
<dependency>
|
||||||
|
<groupId>com.baomidou</groupId>
|
||||||
|
<artifactId>mybatis-plus-boot-starter</artifactId>
|
||||||
|
<version>3.4.0</version>
|
||||||
|
</dependency>
|
||||||
|
|
||||||
|
<!-- 动态数据源 -->
|
||||||
|
<dependency>
|
||||||
|
<groupId>com.baomidou</groupId>
|
||||||
|
<artifactId>dynamic-datasource-spring-boot-starter</artifactId>
|
||||||
|
<version>3.4.0</version>
|
||||||
|
</dependency>
|
||||||
|
|
||||||
|
<!-- xxl-job-core -->
|
||||||
|
<dependency>
|
||||||
|
<groupId>com.xuxueli</groupId>
|
||||||
|
<artifactId>xxl-job-core</artifactId>
|
||||||
|
<version>2.4.0</version>
|
||||||
|
</dependency>
|
||||||
|
|
||||||
|
<dependency>
|
||||||
|
<groupId>io.netty</groupId>
|
||||||
|
<artifactId>netty-all</artifactId>
|
||||||
|
</dependency>
|
||||||
|
</dependencies>
|
||||||
|
|
||||||
|
|
||||||
|
<build>
|
||||||
|
<plugins>
|
||||||
|
<plugin>
|
||||||
|
<groupId>org.apache.maven.plugins</groupId>
|
||||||
|
<artifactId>maven-compiler-plugin</artifactId>
|
||||||
|
<version>3.8.1</version>
|
||||||
|
<configuration>
|
||||||
|
<source>1.8</source>
|
||||||
|
<target>1.8</target>
|
||||||
|
<encoding>UTF-8</encoding>
|
||||||
|
</configuration>
|
||||||
|
</plugin>
|
||||||
|
<plugin>
|
||||||
|
<groupId>org.springframework.boot</groupId>
|
||||||
|
<artifactId>spring-boot-maven-plugin</artifactId>
|
||||||
|
<version>${spring-boot.version}</version>
|
||||||
|
<configuration>
|
||||||
|
<mainClass>com.hxl.puyang.DataToPuyangApplication</mainClass>
|
||||||
|
</configuration>
|
||||||
|
<executions>
|
||||||
|
<execution>
|
||||||
|
<id>repackage</id>
|
||||||
|
<goals>
|
||||||
|
<goal>repackage</goal>
|
||||||
|
</goals>
|
||||||
|
</execution>
|
||||||
|
</executions>
|
||||||
|
</plugin>
|
||||||
|
</plugins>
|
||||||
|
</build>
|
||||||
|
</project>
|
||||||
17
src/main/java/com/hxl/puyang/DataToPuyangApplication.java
Normal file
17
src/main/java/com/hxl/puyang/DataToPuyangApplication.java
Normal file
@ -0,0 +1,17 @@
|
|||||||
|
package com.hxl.puyang;
|
||||||
|
|
||||||
|
import org.springframework.boot.SpringApplication;
|
||||||
|
import org.springframework.boot.autoconfigure.SpringBootApplication;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author lzl
|
||||||
|
* @date 2024-10-15
|
||||||
|
*/
|
||||||
|
@SpringBootApplication
|
||||||
|
public class DataToPuyangApplication {
|
||||||
|
|
||||||
|
public static void main(String[] args) {
|
||||||
|
SpringApplication.run(DataToPuyangApplication.class, args);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
79
src/main/java/com/hxl/puyang/actuator/ActuatorFactory.java
Normal file
79
src/main/java/com/hxl/puyang/actuator/ActuatorFactory.java
Normal file
@ -0,0 +1,79 @@
|
|||||||
|
package com.hxl.puyang.actuator;
|
||||||
|
|
||||||
|
import cn.hutool.core.date.DatePattern;
|
||||||
|
import cn.hutool.core.date.DateUtil;
|
||||||
|
import cn.hutool.core.exceptions.ExceptionUtil;
|
||||||
|
import com.hxl.puyang.config.netty.BootNettyClient;
|
||||||
|
import com.hxl.puyang.location.service.LocationAlarmHistoryService;
|
||||||
|
import com.hxl.puyang.location.service.LocationRealdataService;
|
||||||
|
import com.hxl.puyang.location.service.LocationUserService;
|
||||||
|
import com.xxl.job.core.handler.annotation.XxlJob;
|
||||||
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
import org.springframework.stereotype.Component;
|
||||||
|
|
||||||
|
import javax.annotation.Resource;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* xxl-job执行器类
|
||||||
|
*
|
||||||
|
* @author 刘振雷
|
||||||
|
*/
|
||||||
|
@Component
|
||||||
|
@Slf4j
|
||||||
|
public class ActuatorFactory {
|
||||||
|
|
||||||
|
@Resource
|
||||||
|
private BootNettyClient bootNettyClient;
|
||||||
|
|
||||||
|
@Resource
|
||||||
|
private LocationUserService locationUserService;
|
||||||
|
|
||||||
|
@Resource
|
||||||
|
private LocationRealdataService locationRealdataService;
|
||||||
|
|
||||||
|
@Resource
|
||||||
|
private LocationAlarmHistoryService locationAlarmHistoryService;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 上报人员基础信息
|
||||||
|
*/
|
||||||
|
@XxlJob("demo")
|
||||||
|
public void demo() {
|
||||||
|
try {
|
||||||
|
bootNettyClient.sendData(DateUtil.format(DateUtil.date(), DatePattern.NORM_DATETIME_PATTERN), null, null);
|
||||||
|
} catch (Exception e) {
|
||||||
|
log.error("数据发送失败");
|
||||||
|
log.error(ExceptionUtil.stacktraceToString(e));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 心跳
|
||||||
|
*/
|
||||||
|
@XxlJob("heart")
|
||||||
|
public void heart() {
|
||||||
|
log.info("发送心跳开始");
|
||||||
|
try {
|
||||||
|
bootNettyClient.sendData("@@", null, null);
|
||||||
|
} catch (Exception e) {
|
||||||
|
log.error("数据发送失败");
|
||||||
|
log.error(ExceptionUtil.stacktraceToString(e));
|
||||||
|
}
|
||||||
|
log.info("发送心跳结束");
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 人员基础信息
|
||||||
|
*/
|
||||||
|
@XxlJob("reportPersonnel")
|
||||||
|
public void reportPersonnel() {
|
||||||
|
log.info("发送人员基础信息开始");
|
||||||
|
try {
|
||||||
|
locationUserService.reportPersonnel();
|
||||||
|
} catch (Exception e) {
|
||||||
|
log.error("数据发送失败");
|
||||||
|
log.error(ExceptionUtil.stacktraceToString(e));
|
||||||
|
}
|
||||||
|
log.info("发送人员基础信息结束");
|
||||||
|
}
|
||||||
|
}
|
||||||
12
src/main/java/com/hxl/puyang/common/Response.java
Normal file
12
src/main/java/com/hxl/puyang/common/Response.java
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
package com.hxl.puyang.common;
|
||||||
|
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author lzl
|
||||||
|
* @date 2024-10-15
|
||||||
|
*/
|
||||||
|
@Data
|
||||||
|
public class Response {
|
||||||
|
private int code;
|
||||||
|
}
|
||||||
25
src/main/java/com/hxl/puyang/config/NettyConfig.java
Normal file
25
src/main/java/com/hxl/puyang/config/NettyConfig.java
Normal file
@ -0,0 +1,25 @@
|
|||||||
|
package com.hxl.puyang.config;
|
||||||
|
|
||||||
|
import lombok.Data;
|
||||||
|
import org.springframework.boot.context.properties.ConfigurationProperties;
|
||||||
|
import org.springframework.stereotype.Component;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* netty服务器信息
|
||||||
|
*
|
||||||
|
* @author lzl
|
||||||
|
* @date 2024-10-15
|
||||||
|
*/
|
||||||
|
@Component
|
||||||
|
@ConfigurationProperties(prefix = "netty-config")
|
||||||
|
@Data
|
||||||
|
public class NettyConfig {
|
||||||
|
/**
|
||||||
|
* 企业编码
|
||||||
|
*/
|
||||||
|
private String ip;
|
||||||
|
/**
|
||||||
|
* 请求接口前置地址
|
||||||
|
*/
|
||||||
|
private Integer port;
|
||||||
|
}
|
||||||
42
src/main/java/com/hxl/puyang/config/ReportConfig.java
Normal file
42
src/main/java/com/hxl/puyang/config/ReportConfig.java
Normal file
@ -0,0 +1,42 @@
|
|||||||
|
package com.hxl.puyang.config;
|
||||||
|
|
||||||
|
import cn.hutool.core.text.CharSequenceUtil;
|
||||||
|
import lombok.Data;
|
||||||
|
import org.springframework.boot.context.properties.ConfigurationProperties;
|
||||||
|
import org.springframework.stereotype.Component;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 上报相关参数配置数据
|
||||||
|
*
|
||||||
|
* @author lzl
|
||||||
|
* @date 2024-10-15
|
||||||
|
*/
|
||||||
|
@Component
|
||||||
|
@ConfigurationProperties(prefix = "report-config")
|
||||||
|
@Data
|
||||||
|
public class ReportConfig {
|
||||||
|
/**
|
||||||
|
* 企业编码
|
||||||
|
*/
|
||||||
|
private String companyCode;
|
||||||
|
/**
|
||||||
|
* 请求接口前置地址
|
||||||
|
*/
|
||||||
|
private String companyName;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 自定义验证数据完整性
|
||||||
|
*
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
public boolean checkParam() throws Exception {
|
||||||
|
boolean b = true;
|
||||||
|
if (CharSequenceUtil.isEmpty(companyName)) {
|
||||||
|
throw new Exception("上报参数:companyName不合法");
|
||||||
|
}
|
||||||
|
if (CharSequenceUtil.isEmpty(companyCode)) {
|
||||||
|
throw new Exception("上报参数:companyCode不合法");
|
||||||
|
}
|
||||||
|
return b;
|
||||||
|
}
|
||||||
|
}
|
||||||
78
src/main/java/com/hxl/puyang/config/XxlJobConfig.java
Normal file
78
src/main/java/com/hxl/puyang/config/XxlJobConfig.java
Normal file
@ -0,0 +1,78 @@
|
|||||||
|
package com.hxl.puyang.config;
|
||||||
|
|
||||||
|
import com.xxl.job.core.executor.impl.XxlJobSpringExecutor;
|
||||||
|
import org.slf4j.Logger;
|
||||||
|
import org.slf4j.LoggerFactory;
|
||||||
|
import org.springframework.beans.factory.annotation.Value;
|
||||||
|
import org.springframework.context.annotation.Bean;
|
||||||
|
import org.springframework.context.annotation.Configuration;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* xxl-job config
|
||||||
|
*
|
||||||
|
* @author xuxueli 2017-04-28
|
||||||
|
*/
|
||||||
|
@Configuration
|
||||||
|
public class XxlJobConfig {
|
||||||
|
private Logger logger = LoggerFactory.getLogger(XxlJobConfig.class);
|
||||||
|
|
||||||
|
@Value("${xxl.job.admin.addresses}")
|
||||||
|
private String adminAddresses;
|
||||||
|
|
||||||
|
@Value("${xxl.job.accessToken}")
|
||||||
|
private String accessToken;
|
||||||
|
|
||||||
|
@Value("${xxl.job.executor.appname}")
|
||||||
|
private String appname;
|
||||||
|
|
||||||
|
@Value("${xxl.job.executor.address}")
|
||||||
|
private String address;
|
||||||
|
|
||||||
|
@Value("${xxl.job.executor.ip}")
|
||||||
|
private String ip;
|
||||||
|
|
||||||
|
@Value("${xxl.job.executor.port}")
|
||||||
|
private int port;
|
||||||
|
|
||||||
|
@Value("${xxl.job.executor.logpath}")
|
||||||
|
private String logPath;
|
||||||
|
|
||||||
|
@Value("${xxl.job.executor.logretentiondays}")
|
||||||
|
private int logRetentionDays;
|
||||||
|
|
||||||
|
|
||||||
|
@Bean
|
||||||
|
public XxlJobSpringExecutor xxlJobExecutor() {
|
||||||
|
logger.info(">>>>>>>>>>> xxl-job config init.");
|
||||||
|
XxlJobSpringExecutor xxlJobSpringExecutor = new XxlJobSpringExecutor();
|
||||||
|
xxlJobSpringExecutor.setAdminAddresses(adminAddresses);
|
||||||
|
xxlJobSpringExecutor.setAppname(appname);
|
||||||
|
xxlJobSpringExecutor.setAddress(address);
|
||||||
|
xxlJobSpringExecutor.setIp(ip);
|
||||||
|
xxlJobSpringExecutor.setPort(port);
|
||||||
|
xxlJobSpringExecutor.setAccessToken(accessToken);
|
||||||
|
xxlJobSpringExecutor.setLogPath(logPath);
|
||||||
|
xxlJobSpringExecutor.setLogRetentionDays(logRetentionDays);
|
||||||
|
|
||||||
|
return xxlJobSpringExecutor;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 针对多网卡、容器内部署等情况,可借助 "spring-cloud-commons" 提供的 "InetUtils" 组件灵活定制注册IP;
|
||||||
|
*
|
||||||
|
* 1、引入依赖:
|
||||||
|
* <dependency>
|
||||||
|
* <groupId>org.springframework.cloud</groupId>
|
||||||
|
* <artifactId>spring-cloud-commons</artifactId>
|
||||||
|
* <version>${version}</version>
|
||||||
|
* </dependency>
|
||||||
|
*
|
||||||
|
* 2、配置文件,或者容器启动变量
|
||||||
|
* spring.cloud.inetutils.preferred-networks: 'xxx.xxx.xxx.'
|
||||||
|
*
|
||||||
|
* 3、获取IP
|
||||||
|
* String ip_ = inetUtils.findFirstNonLoopbackHostInfo().getIpAddress();
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
16
src/main/java/com/hxl/puyang/config/annotation/MyLog.java
Normal file
16
src/main/java/com/hxl/puyang/config/annotation/MyLog.java
Normal file
@ -0,0 +1,16 @@
|
|||||||
|
package com.hxl.puyang.config.annotation;
|
||||||
|
|
||||||
|
import java.lang.annotation.ElementType;
|
||||||
|
import java.lang.annotation.Retention;
|
||||||
|
import java.lang.annotation.RetentionPolicy;
|
||||||
|
import java.lang.annotation.Target;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author lzl
|
||||||
|
* @date 2024-10-15
|
||||||
|
*/
|
||||||
|
@Target({ElementType.METHOD, ElementType.TYPE})
|
||||||
|
@Retention(RetentionPolicy.RUNTIME)
|
||||||
|
public @interface MyLog {
|
||||||
|
String value() default "";
|
||||||
|
}
|
||||||
47
src/main/java/com/hxl/puyang/config/aop/LogAspect.java
Normal file
47
src/main/java/com/hxl/puyang/config/aop/LogAspect.java
Normal file
@ -0,0 +1,47 @@
|
|||||||
|
package com.hxl.puyang.config.aop;
|
||||||
|
|
||||||
|
import cn.hutool.core.date.DateUtil;
|
||||||
|
import cn.hutool.core.exceptions.ExceptionUtil;
|
||||||
|
import com.hxl.puyang.config.annotation.MyLog;
|
||||||
|
import com.hxl.puyang.config.exception.MyException;
|
||||||
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
import org.aspectj.lang.ProceedingJoinPoint;
|
||||||
|
import org.aspectj.lang.annotation.Around;
|
||||||
|
import org.aspectj.lang.annotation.Aspect;
|
||||||
|
import org.aspectj.lang.annotation.Pointcut;
|
||||||
|
import org.aspectj.lang.reflect.MethodSignature;
|
||||||
|
import org.springframework.stereotype.Component;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @Author lzl
|
||||||
|
* @Date 2024-3-21 14:03:20
|
||||||
|
*/
|
||||||
|
@Component
|
||||||
|
@Slf4j
|
||||||
|
@Aspect
|
||||||
|
public class LogAspect {
|
||||||
|
@Pointcut("@annotation(com.hxl.puyang.config.annotation.MyLog)")
|
||||||
|
public void logPoint() {
|
||||||
|
}
|
||||||
|
|
||||||
|
@Around("logPoint()")
|
||||||
|
public Object around(ProceedingJoinPoint point) throws Exception {
|
||||||
|
MethodSignature signature = (MethodSignature) point.getSignature();
|
||||||
|
MyLog annotation = signature.getMethod().getAnnotation(MyLog.class);
|
||||||
|
String methodName = annotation.value();
|
||||||
|
log.info("执行[方法]:{}开始", methodName);
|
||||||
|
// 发送异步日志事件
|
||||||
|
long startTime = DateUtil.current();
|
||||||
|
Object obj;
|
||||||
|
try {
|
||||||
|
obj = point.proceed();
|
||||||
|
} catch (Throwable e) {
|
||||||
|
log.error("执行[方法]:{}时异常", methodName);
|
||||||
|
log.error("错误详情:{}", ExceptionUtil.stacktraceToString(e));
|
||||||
|
throw new MyException(e);
|
||||||
|
} finally {
|
||||||
|
log.info("执行[方法]:{}结束,用时:{}ms", methodName, DateUtil.current() - startTime);
|
||||||
|
}
|
||||||
|
return obj;
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -0,0 +1,22 @@
|
|||||||
|
package com.hxl.puyang.config.exception;
|
||||||
|
/**
|
||||||
|
* @author lzl
|
||||||
|
* @date 2024-10-15
|
||||||
|
*/
|
||||||
|
public class MyException extends RuntimeException {
|
||||||
|
public MyException() {
|
||||||
|
super();
|
||||||
|
}
|
||||||
|
|
||||||
|
public MyException(String message, Throwable cause) {
|
||||||
|
super(message, cause);
|
||||||
|
}
|
||||||
|
|
||||||
|
public MyException(String message) {
|
||||||
|
super(message);
|
||||||
|
}
|
||||||
|
|
||||||
|
public MyException(Throwable cause) {
|
||||||
|
super(cause);
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -0,0 +1,55 @@
|
|||||||
|
package com.hxl.puyang.config.netty;
|
||||||
|
|
||||||
|
import cn.hutool.extra.spring.SpringUtil;
|
||||||
|
import io.netty.channel.ChannelHandlerContext;
|
||||||
|
import io.netty.channel.ChannelInboundHandlerAdapter;
|
||||||
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author: 刘振雷
|
||||||
|
* @time: 2024/10/15
|
||||||
|
*/
|
||||||
|
@Slf4j
|
||||||
|
public class BootNettyChannelInboundHandlerAdapter extends ChannelInboundHandlerAdapter {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 户端与服务端 断连时 执行
|
||||||
|
*
|
||||||
|
* @param ctx
|
||||||
|
* @throws Exception
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public void channelInactive(ChannelHandlerContext ctx) throws Exception {
|
||||||
|
log.info("与netty服务器断开连接,尝试重新连接。。。");
|
||||||
|
super.channelInactive(ctx);
|
||||||
|
ctx.close();
|
||||||
|
BootNettyClient bootNettyClient = SpringUtil.getBean(BootNettyClient.class);
|
||||||
|
bootNettyClient.connect();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 客户端与服务端第一次建立连接时 执行
|
||||||
|
*
|
||||||
|
* @param ctx
|
||||||
|
* @throws Exception
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public void channelActive(ChannelHandlerContext ctx) throws Exception {
|
||||||
|
super.channelActive(ctx);
|
||||||
|
log.info("netty服务器连接成功");
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 当出现 Throwable 对象才会被调用,即当 Netty 由于 IO 错误或者处理器在处理事件时抛出的异常时
|
||||||
|
*
|
||||||
|
* @param ctx
|
||||||
|
* @param cause
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public void exceptionCaught(ChannelHandlerContext ctx, Throwable cause) throws Exception {
|
||||||
|
log.info("netty服务异常");
|
||||||
|
super.exceptionCaught(ctx, cause);
|
||||||
|
cause.printStackTrace();
|
||||||
|
ctx.close();
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -0,0 +1,30 @@
|
|||||||
|
package com.hxl.puyang.config.netty;
|
||||||
|
|
||||||
|
import io.netty.channel.Channel;
|
||||||
|
import io.netty.channel.ChannelInitializer;
|
||||||
|
import io.netty.handler.codec.string.StringDecoder;
|
||||||
|
import io.netty.handler.codec.string.StringEncoder;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author: 刘振雷
|
||||||
|
* @time: 2024/10/15
|
||||||
|
*/
|
||||||
|
public class BootNettyChannelInitializer<SocketChannel> extends ChannelInitializer<Channel> {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void initChannel(Channel ch) throws Exception {
|
||||||
|
// ChannelOutboundHandler,依照逆序执行
|
||||||
|
ch.pipeline().addLast("encoder", new StringEncoder());
|
||||||
|
|
||||||
|
// 属于ChannelInboundHandler,依照顺序执行
|
||||||
|
ch.pipeline().addLast("decoder", new StringDecoder());
|
||||||
|
/*
|
||||||
|
*
|
||||||
|
* 自定义ChannelInboundHandlerAdapter
|
||||||
|
* 该项在源码中放在了上面两项上面,实际上需要调整到后面
|
||||||
|
*/
|
||||||
|
ch.pipeline().addLast(new BootNettyChannelInboundHandlerAdapter());
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
123
src/main/java/com/hxl/puyang/config/netty/BootNettyClient.java
Normal file
123
src/main/java/com/hxl/puyang/config/netty/BootNettyClient.java
Normal file
@ -0,0 +1,123 @@
|
|||||||
|
package com.hxl.puyang.config.netty;
|
||||||
|
|
||||||
|
import cn.hutool.core.exceptions.ExceptionUtil;
|
||||||
|
import cn.hutool.core.util.ObjectUtil;
|
||||||
|
import cn.hutool.extra.spring.SpringUtil;
|
||||||
|
import cn.hutool.json.JSONUtil;
|
||||||
|
import com.hxl.puyang.config.NettyConfig;
|
||||||
|
import com.hxl.puyang.enums.DataTypeEnum;
|
||||||
|
import com.hxl.puyang.location.entity.LocationAlarmHistory;
|
||||||
|
import com.hxl.puyang.location.entity.LocationUser;
|
||||||
|
import com.hxl.puyang.location.service.LocationAlarmHistoryService;
|
||||||
|
import com.hxl.puyang.location.service.LocationUserService;
|
||||||
|
import io.netty.bootstrap.Bootstrap;
|
||||||
|
import io.netty.channel.*;
|
||||||
|
import io.netty.channel.nio.NioEventLoopGroup;
|
||||||
|
import io.netty.channel.socket.SocketChannel;
|
||||||
|
import io.netty.channel.socket.nio.NioSocketChannel;
|
||||||
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
import org.springframework.stereotype.Component;
|
||||||
|
|
||||||
|
import javax.annotation.PreDestroy;
|
||||||
|
import javax.annotation.Resource;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author: 刘振雷
|
||||||
|
* @time: 2024/10/15
|
||||||
|
*/
|
||||||
|
@Component
|
||||||
|
@Slf4j
|
||||||
|
public class BootNettyClient {
|
||||||
|
|
||||||
|
@Resource
|
||||||
|
private NettyConfig nettyConfig;
|
||||||
|
|
||||||
|
private Channel channel;
|
||||||
|
|
||||||
|
private EventLoopGroup group;
|
||||||
|
|
||||||
|
public void connect() {
|
||||||
|
log.info("连接");
|
||||||
|
//客户端的NIO线程组
|
||||||
|
group = new NioEventLoopGroup();
|
||||||
|
|
||||||
|
try {
|
||||||
|
//Bootstrap 是一个启动NIO服务的辅助启动类 客户端的
|
||||||
|
Bootstrap bootstrap = new Bootstrap();
|
||||||
|
//设置group
|
||||||
|
bootstrap = bootstrap.group(group);
|
||||||
|
//关联客户端通道
|
||||||
|
bootstrap = bootstrap.channel(NioSocketChannel.class).option(ChannelOption.SO_KEEPALIVE, true);
|
||||||
|
//设置 I/O处理类,主要用于网络I/O事件,记录日志,编码、解码消息
|
||||||
|
bootstrap = bootstrap.handler(new BootNettyChannelInitializer<SocketChannel>());
|
||||||
|
log.info("netty client start success!");
|
||||||
|
//连接服务端
|
||||||
|
ChannelFuture f = bootstrap.connect(nettyConfig.getIp(), nettyConfig.getPort()).sync();
|
||||||
|
channel = f.channel();
|
||||||
|
} catch (Exception e) {
|
||||||
|
log.error("连接netty服务器异常");
|
||||||
|
log.error(ExceptionUtil.stacktraceToString(e));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 通道可用检查,不可用则重连
|
||||||
|
*/
|
||||||
|
public void checkChannel() throws Exception {
|
||||||
|
if (ObjectUtil.isNull(channel) || !channel.isRegistered() || !channel.isActive()) {
|
||||||
|
connect();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 发送数据
|
||||||
|
*
|
||||||
|
* @param data
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
public <T> void sendData(String data, List<T> list, DataTypeEnum dataTypeEnum) throws Exception {
|
||||||
|
checkChannel();
|
||||||
|
ChannelFuture channelFuture = channel.writeAndFlush(data);
|
||||||
|
channelFuture.addListener((ChannelFutureListener) future1 -> {
|
||||||
|
if (future1.isSuccess()) {
|
||||||
|
log.info("数据发送成功!");
|
||||||
|
if(null!= dataTypeEnum){
|
||||||
|
switch (dataTypeEnum) {
|
||||||
|
case PERSONNEL_INFO:
|
||||||
|
LocationUserService locationUserService = SpringUtil.getBean(LocationUserService.class);
|
||||||
|
List<LocationUser> locationUsers = list.stream()
|
||||||
|
.filter(element -> element instanceof LocationUser)
|
||||||
|
.map(element -> (LocationUser) element).collect(Collectors.toList());
|
||||||
|
locationUserService.updateBatchById(locationUsers);
|
||||||
|
break;
|
||||||
|
case PERSONNEL_WARN:
|
||||||
|
LocationAlarmHistoryService locationAlarmHistoryService = SpringUtil.getBean(LocationAlarmHistoryService.class);
|
||||||
|
List<LocationAlarmHistory> locationAlarmHistories = list.stream()
|
||||||
|
.filter(element -> element instanceof LocationAlarmHistory)
|
||||||
|
.map(element -> (LocationAlarmHistory) element).collect(Collectors.toList());
|
||||||
|
locationAlarmHistoryService.updateBatchById(locationAlarmHistories);
|
||||||
|
break;
|
||||||
|
case HEART:
|
||||||
|
log.info("心跳数据发送成功!");
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
log.info("数据发送失败: " + future1.cause());
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
@PreDestroy
|
||||||
|
public void stopClient() throws Exception {
|
||||||
|
if (channel != null) {
|
||||||
|
channel.close().sync();
|
||||||
|
}
|
||||||
|
if (group != null) {
|
||||||
|
group.shutdownGracefully().sync();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -0,0 +1,23 @@
|
|||||||
|
package com.hxl.puyang.config.netty;
|
||||||
|
|
||||||
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
import org.springframework.beans.factory.annotation.Value;
|
||||||
|
import org.springframework.stereotype.Component;
|
||||||
|
|
||||||
|
import javax.annotation.PostConstruct;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author: 刘振雷
|
||||||
|
* @time: 2024/10/15
|
||||||
|
*/
|
||||||
|
@Component
|
||||||
|
public class NettyClientStarter {
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private BootNettyClient bootNettyClient;
|
||||||
|
|
||||||
|
@PostConstruct
|
||||||
|
public void start() throws Exception {
|
||||||
|
bootNettyClient.connect();
|
||||||
|
}
|
||||||
|
}
|
||||||
35
src/main/java/com/hxl/puyang/enums/DataTypeEnum.java
Normal file
35
src/main/java/com/hxl/puyang/enums/DataTypeEnum.java
Normal file
@ -0,0 +1,35 @@
|
|||||||
|
package com.hxl.puyang.enums;
|
||||||
|
|
||||||
|
import lombok.AllArgsConstructor;
|
||||||
|
import lombok.Getter;
|
||||||
|
import lombok.ToString;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 服务类型
|
||||||
|
*
|
||||||
|
* @author lzl
|
||||||
|
* @date 2024-9-5
|
||||||
|
*/
|
||||||
|
@Getter
|
||||||
|
@ToString
|
||||||
|
@AllArgsConstructor
|
||||||
|
public enum DataTypeEnum {
|
||||||
|
/**
|
||||||
|
* 人员数据
|
||||||
|
*/
|
||||||
|
PERSONNEL_INFO("PERSONNEL_INFO"),
|
||||||
|
/**
|
||||||
|
* 人员定位
|
||||||
|
*/
|
||||||
|
PERSONNEL_REAL("PERSONNEL_REAL"),
|
||||||
|
/**
|
||||||
|
* 人员报警
|
||||||
|
*/
|
||||||
|
PERSONNEL_WARN("PERSONNEL_WARN"),
|
||||||
|
/**
|
||||||
|
* 人员报警
|
||||||
|
*/
|
||||||
|
HEART("HEART");
|
||||||
|
|
||||||
|
private final String serviceId;
|
||||||
|
}
|
||||||
@ -0,0 +1,155 @@
|
|||||||
|
package com.hxl.puyang.location.entity;
|
||||||
|
|
||||||
|
import com.baomidou.mybatisplus.annotation.IdType;
|
||||||
|
import com.baomidou.mybatisplus.annotation.TableField;
|
||||||
|
import com.baomidou.mybatisplus.annotation.TableId;
|
||||||
|
import com.baomidou.mybatisplus.annotation.TableName;
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
|
import java.io.Serializable;
|
||||||
|
import java.util.Date;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 历史求救记录表
|
||||||
|
*
|
||||||
|
* @author lzl
|
||||||
|
* @TableName hxl_location_alarm_history
|
||||||
|
*/
|
||||||
|
@TableName(value = "hxl_location_alarm_history")
|
||||||
|
@Data
|
||||||
|
public class LocationAlarmHistory implements Serializable {
|
||||||
|
/**
|
||||||
|
* id
|
||||||
|
*/
|
||||||
|
@TableId(value = "id", type = IdType.AUTO)
|
||||||
|
private Long id;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 卡ID
|
||||||
|
*/
|
||||||
|
@TableField(value = "card_id")
|
||||||
|
private String cardId;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 信标ID
|
||||||
|
*/
|
||||||
|
@TableField(value = "beacon_id")
|
||||||
|
private String beaconId;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 求救时间
|
||||||
|
*/
|
||||||
|
@TableField(value = "alarm_time")
|
||||||
|
private Date alarmTime;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 报警类型
|
||||||
|
*/
|
||||||
|
@TableField(value = "police_type")
|
||||||
|
private Integer policeType;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 处理状态
|
||||||
|
*/
|
||||||
|
@TableField(value = "handle_status")
|
||||||
|
private Integer handleStatus;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 处理信息
|
||||||
|
*/
|
||||||
|
@TableField(value = "handle_measures")
|
||||||
|
private String handleMeasures;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 是否忽略提醒
|
||||||
|
*/
|
||||||
|
@TableField(value = "is_ignore")
|
||||||
|
private Integer isIgnore;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 备注
|
||||||
|
*/
|
||||||
|
@TableField(value = "remark")
|
||||||
|
private String remark;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 是否误报(0不是 1是)
|
||||||
|
*/
|
||||||
|
@TableField(value = "false_positives")
|
||||||
|
private Integer falsePositives;
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
@TableField(value = "dealing_with_people")
|
||||||
|
private String dealingWithPeople;
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
@TableField(value = "processing_time")
|
||||||
|
private Date processingTime;
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
@TableField(value = "grid_id")
|
||||||
|
private Integer gridId;
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
@TableField(value = "end_time")
|
||||||
|
private Date endTime;
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
@TableField(value = "build_id")
|
||||||
|
private Long buildId;
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
@TableField(value = "floor_id")
|
||||||
|
private Long floorId;
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
@TableField(value = "coor_info_sat_lon")
|
||||||
|
private Double coorInfoSatLon;
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
@TableField(value = "coor_info_sat_lat")
|
||||||
|
private Double coorInfoSatLat;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 是否上报:1.已上报0.未上报
|
||||||
|
*/
|
||||||
|
@TableField(value = "is_report")
|
||||||
|
private String isReport;
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
@TableField(value = "dealing_with_people_id")
|
||||||
|
private Long dealingWithPeopleId;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 园区上报状态:0.待上报/1.已上报/2.已删除/3.待更新
|
||||||
|
*/
|
||||||
|
@TableField(value = "is_report_yq")
|
||||||
|
private Integer isReportYq;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 上报ID
|
||||||
|
*/
|
||||||
|
@TableField(value = "rid")
|
||||||
|
private String rid;
|
||||||
|
|
||||||
|
@TableField(exist = false)
|
||||||
|
private static final long serialVersionUID = 1L;
|
||||||
|
}
|
||||||
@ -0,0 +1,96 @@
|
|||||||
|
package com.hxl.puyang.location.entity;
|
||||||
|
|
||||||
|
import com.baomidou.mybatisplus.annotation.IdType;
|
||||||
|
import com.baomidou.mybatisplus.annotation.TableField;
|
||||||
|
import com.baomidou.mybatisplus.annotation.TableId;
|
||||||
|
import com.baomidou.mybatisplus.annotation.TableName;
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
|
import java.io.Serializable;
|
||||||
|
import java.math.BigDecimal;
|
||||||
|
import java.util.Date;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 实时定位表
|
||||||
|
*
|
||||||
|
* @author lzl
|
||||||
|
* @TableName hxl_location_realdata
|
||||||
|
*/
|
||||||
|
@TableName(value = "hxl_location_realdata")
|
||||||
|
@Data
|
||||||
|
public class LocationRealdata implements Serializable {
|
||||||
|
/**
|
||||||
|
* id
|
||||||
|
*/
|
||||||
|
@TableId(value = "id", type = IdType.AUTO)
|
||||||
|
private Integer id;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 卡ID
|
||||||
|
*/
|
||||||
|
@TableField(value = "card_id")
|
||||||
|
private String cardId;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 卡是否报警(0:否;1:是)
|
||||||
|
*/
|
||||||
|
@TableField(value = "is_alarm")
|
||||||
|
private Integer isAlarm;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 卡是否低电量(0:否;1:是)
|
||||||
|
*/
|
||||||
|
@TableField(value = "is_low_power")
|
||||||
|
private Integer isLowPower;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 卡是否静止(0:否;1:是)
|
||||||
|
*/
|
||||||
|
@TableField(value = "is_still")
|
||||||
|
private Integer isStill;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 当前信标ID
|
||||||
|
*/
|
||||||
|
@TableField(value = "beacon_id")
|
||||||
|
private String beaconId;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 距离信标距离
|
||||||
|
*/
|
||||||
|
@TableField(value = "distance")
|
||||||
|
private BigDecimal distance;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取信号时间
|
||||||
|
*/
|
||||||
|
@TableField(value = "signal_time")
|
||||||
|
private Date signalTime;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 上一信标ID
|
||||||
|
*/
|
||||||
|
@TableField(value = "pre_beacon_id")
|
||||||
|
private String preBeaconId;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 上一信标信号获取时间
|
||||||
|
*/
|
||||||
|
@TableField(value = "pre_signal_time")
|
||||||
|
private Date preSignalTime;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 数据创建时间
|
||||||
|
*/
|
||||||
|
@TableField(value = "create_time")
|
||||||
|
private Date createTime;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 数据更新时间
|
||||||
|
*/
|
||||||
|
@TableField(value = "update_time")
|
||||||
|
private Date updateTime;
|
||||||
|
|
||||||
|
@TableField(exist = false)
|
||||||
|
private static final long serialVersionUID = 1L;
|
||||||
|
}
|
||||||
239
src/main/java/com/hxl/puyang/location/entity/LocationUser.java
Normal file
239
src/main/java/com/hxl/puyang/location/entity/LocationUser.java
Normal file
@ -0,0 +1,239 @@
|
|||||||
|
package com.hxl.puyang.location.entity;
|
||||||
|
|
||||||
|
import com.baomidou.mybatisplus.annotation.IdType;
|
||||||
|
import com.baomidou.mybatisplus.annotation.TableField;
|
||||||
|
import com.baomidou.mybatisplus.annotation.TableId;
|
||||||
|
import com.baomidou.mybatisplus.annotation.TableName;
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
|
import java.io.Serializable;
|
||||||
|
import java.util.Date;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 定位人员信息表
|
||||||
|
*
|
||||||
|
* @author lzl
|
||||||
|
* @TableName hxl_location_user
|
||||||
|
*/
|
||||||
|
@TableName(value = "hxl_location_user")
|
||||||
|
@Data
|
||||||
|
public class LocationUser implements Serializable {
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
@TableId(value = "ID", type = IdType.AUTO)
|
||||||
|
private Long id;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 卡号
|
||||||
|
*/
|
||||||
|
@TableField(value = "CARD_NO")
|
||||||
|
private String cardNo;
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
@TableField(value = "CARD_NO_TYPE")
|
||||||
|
private String cardNoType;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 姓名
|
||||||
|
*/
|
||||||
|
@TableField(value = "USER_NAME")
|
||||||
|
private String userName;
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
@TableField(value = "WORK_NUMBER")
|
||||||
|
private String workNumber;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 身份证号
|
||||||
|
*/
|
||||||
|
@TableField(value = "USER_CARD_NO")
|
||||||
|
private String userCardNo;
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
@TableField(value = "IMG_NAME")
|
||||||
|
private String imgName;
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
@TableField(value = "IMG_ID")
|
||||||
|
private String imgId;
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
@TableField(value = "IMG_PATH")
|
||||||
|
private String imgPath;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 手机号
|
||||||
|
*/
|
||||||
|
@TableField(value = "USER_PHONE")
|
||||||
|
private String userPhone;
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
@TableField(value = "USER_EMAIL")
|
||||||
|
private String userEmail;
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
@TableField(value = "USER_DEPT")
|
||||||
|
private Long userDept;
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
@TableField(value = "USER_POSITION")
|
||||||
|
private String userPosition;
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
@TableField(value = "ROOM_NUMBER")
|
||||||
|
private String roomNumber;
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
@TableField(value = "ROOM_NAME")
|
||||||
|
private String roomName;
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
@TableField(value = "GEO_X")
|
||||||
|
private String geoX;
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
@TableField(value = "GEO_Y")
|
||||||
|
private String geoY;
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
@TableField(value = "POLICE_TYPE")
|
||||||
|
private String policeType;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 人员类型,1:员工
|
||||||
|
*/
|
||||||
|
@TableField(value = "USER_TYPE")
|
||||||
|
private String userType;
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
@TableField(value = "IC_NUMBER")
|
||||||
|
private String icNumber;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 性别 1男 2女
|
||||||
|
*/
|
||||||
|
@TableField(value = "USER_SEX")
|
||||||
|
private String userSex;
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
@TableField(value = "BIRTH_DATA")
|
||||||
|
private Date birthData;
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
@TableField(value = "ENTRY_DATA")
|
||||||
|
private Date entryData;
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
@TableField(value = "IS_TRAINING")
|
||||||
|
private String isTraining;
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
@TableField(value = "IS_CERTIFICATE")
|
||||||
|
private String isCertificate;
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
@TableField(value = "REMARKS")
|
||||||
|
private String remarks;
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
@TableField(value = "ELECTRICITY_TYPE")
|
||||||
|
private String electricityType;
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
@TableField(value = "USER_CARDNO_TYPE")
|
||||||
|
private String userCardnoType;
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
@TableField(value = "CREATE_DATA")
|
||||||
|
private Date createData;
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
@TableField(value = "COMPANY_AFFILIATION_ID")
|
||||||
|
private Long companyAffiliationId;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 安全帽
|
||||||
|
*/
|
||||||
|
@TableField(value = "safety_hat")
|
||||||
|
private String safetyHat;
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
@TableField(value = "is_delete")
|
||||||
|
private String isDelete;
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
@TableField(value = "origin_id")
|
||||||
|
private String originId;
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
@TableField(value = "origin_dept")
|
||||||
|
private String originDept;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 园区上报状态:0.待上报/1.已上报/2.已删除/3.待更新
|
||||||
|
*/
|
||||||
|
@TableField(value = "is_report_yq")
|
||||||
|
private Integer isReportYq;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 上报ID
|
||||||
|
*/
|
||||||
|
@TableField(value = "rid")
|
||||||
|
private String rid;
|
||||||
|
|
||||||
|
@TableField(exist = false)
|
||||||
|
private static final long serialVersionUID = 1L;
|
||||||
|
}
|
||||||
@ -0,0 +1,20 @@
|
|||||||
|
package com.hxl.puyang.location.mapper;
|
||||||
|
|
||||||
|
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||||
|
import com.hxl.puyang.location.entity.LocationAlarmHistory;
|
||||||
|
import org.apache.ibatis.annotations.Mapper;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author lzl
|
||||||
|
* @description 针对表【hxl_location_alarm_history(历史求救记录表)】的数据库操作Mapper
|
||||||
|
* @createDate 2024-10-15 14:00:33
|
||||||
|
* @Entity com.hxl.puyang.location.entity.LocationAlarmHistory
|
||||||
|
*/
|
||||||
|
@Mapper
|
||||||
|
public interface LocationAlarmHistoryMapper extends BaseMapper<LocationAlarmHistory> {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@ -0,0 +1,20 @@
|
|||||||
|
package com.hxl.puyang.location.mapper;
|
||||||
|
|
||||||
|
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||||
|
import com.hxl.puyang.location.entity.LocationRealdata;
|
||||||
|
import org.apache.ibatis.annotations.Mapper;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author lzl
|
||||||
|
* @description 针对表【hxl_location_realdata(实时定位表)】的数据库操作Mapper
|
||||||
|
* @createDate 2024-10-15 11:04:40
|
||||||
|
* @Entity com.hxl.puyang.location.entity.LocationRealdata
|
||||||
|
*/
|
||||||
|
@Mapper
|
||||||
|
public interface LocationRealdataMapper extends BaseMapper<LocationRealdata> {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@ -0,0 +1,30 @@
|
|||||||
|
package com.hxl.puyang.location.mapper;
|
||||||
|
|
||||||
|
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||||
|
import com.hxl.puyang.location.entity.LocationUser;
|
||||||
|
import com.hxl.puyang.location.model.PersonnelModel;
|
||||||
|
import org.apache.ibatis.annotations.Mapper;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author lzl
|
||||||
|
* @description 针对表【hxl_location_user】的数据库操作Mapper
|
||||||
|
* @createDate 2024-10-15 14:01:40
|
||||||
|
* @Entity com.hxl.puyang.location.entity.LocationUser
|
||||||
|
*/
|
||||||
|
@Mapper
|
||||||
|
public interface LocationUserMapper extends BaseMapper<LocationUser> {
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取需要上报的人员信息
|
||||||
|
*
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
List<PersonnelModel> getPersonnel();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@ -0,0 +1,76 @@
|
|||||||
|
package com.hxl.puyang.location.model;
|
||||||
|
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author: 刘振雷
|
||||||
|
* @time: 2024/10/15
|
||||||
|
*/
|
||||||
|
@Data
|
||||||
|
public class AlarmDataModel {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 主键ID,必须
|
||||||
|
*/
|
||||||
|
private String id;
|
||||||
|
/**
|
||||||
|
* 报警设备编码,必须
|
||||||
|
*/
|
||||||
|
private String deviceCode;
|
||||||
|
/**
|
||||||
|
* 报警设备类型1:定位终端;2、 电子围栏; 3:其他,必须
|
||||||
|
*/
|
||||||
|
private String deviceType;
|
||||||
|
/**
|
||||||
|
* 报警时间,格式 yyyyMMddHHmmss,必须
|
||||||
|
*/
|
||||||
|
private String alarmStartTime;
|
||||||
|
/**
|
||||||
|
* 报警类型1、入侵;2、超速;3、 求救;4、滞留,必须
|
||||||
|
*/
|
||||||
|
private String alarmType;
|
||||||
|
/**
|
||||||
|
* 经度(WGS84,9位,最大六位小 数),必须
|
||||||
|
*/
|
||||||
|
private String longitude;
|
||||||
|
/**
|
||||||
|
* 纬度(WGS84,9位,最大六位小 数),必须
|
||||||
|
*/
|
||||||
|
private String latitude;
|
||||||
|
/**
|
||||||
|
* 处置状态 1:已处置 2:未处置,必须
|
||||||
|
*/
|
||||||
|
private String alarmStatus;
|
||||||
|
/**
|
||||||
|
* 处置时间,格式 yyyyMMddHHmmss,必须
|
||||||
|
*/
|
||||||
|
private String alarmEndTime;
|
||||||
|
/**
|
||||||
|
* 删除标志:正常:0;已删除: 1,必须
|
||||||
|
*/
|
||||||
|
private String deleted;
|
||||||
|
/**
|
||||||
|
* 创建时间 格式yyyyMMddHHmmss,必须
|
||||||
|
*/
|
||||||
|
private String createDate;
|
||||||
|
/**
|
||||||
|
* 创建人,必须
|
||||||
|
*/
|
||||||
|
private String createBy;
|
||||||
|
/**
|
||||||
|
* 最后修改时间(新创建的数据和创 建时间相同) 格式yyyyMMddHHmmss,必须
|
||||||
|
*/
|
||||||
|
private String updateDate;
|
||||||
|
/**
|
||||||
|
* 最后修改人,必须
|
||||||
|
*/
|
||||||
|
private String updateBy;
|
||||||
|
/**
|
||||||
|
* 报警编码,必须
|
||||||
|
*/
|
||||||
|
private String alarmCode;
|
||||||
|
/**
|
||||||
|
* 数据的源ID
|
||||||
|
*/
|
||||||
|
private long oid;
|
||||||
|
}
|
||||||
30
src/main/java/com/hxl/puyang/location/model/DataModel.java
Normal file
30
src/main/java/com/hxl/puyang/location/model/DataModel.java
Normal file
@ -0,0 +1,30 @@
|
|||||||
|
package com.hxl.puyang.location.model;
|
||||||
|
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 上报数据的最终模型
|
||||||
|
*
|
||||||
|
* @author: 刘振雷
|
||||||
|
* @time: 2024/10/15
|
||||||
|
*/
|
||||||
|
@Data
|
||||||
|
public class DataModel {
|
||||||
|
/**
|
||||||
|
* 企业编码,园区提供
|
||||||
|
*/
|
||||||
|
private String companyCode;
|
||||||
|
/**
|
||||||
|
* 服务信息
|
||||||
|
* 序号 数据内容 serviceId
|
||||||
|
* 1 人员数据 PERSONNEL_INFO
|
||||||
|
* 2 人员定位 PERSONNEL_REAL
|
||||||
|
* 3 人员报警 PERSONNEL_WARN
|
||||||
|
*/
|
||||||
|
private String serviceId;
|
||||||
|
/**
|
||||||
|
* 加密数据字符串
|
||||||
|
*/
|
||||||
|
private String data;
|
||||||
|
|
||||||
|
}
|
||||||
@ -0,0 +1,21 @@
|
|||||||
|
package com.hxl.puyang.location.model;
|
||||||
|
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author: 刘振雷
|
||||||
|
* @time: 2024/10/15
|
||||||
|
*/
|
||||||
|
@Data
|
||||||
|
public class DataSecureModel<T> {
|
||||||
|
/**
|
||||||
|
* 采集时间戳,格式 yyyyMMddHHmmss
|
||||||
|
*/
|
||||||
|
private String collectTime;
|
||||||
|
/**
|
||||||
|
* 数据包
|
||||||
|
*/
|
||||||
|
private List<T> datas;
|
||||||
|
}
|
||||||
@ -0,0 +1,81 @@
|
|||||||
|
package com.hxl.puyang.location.model;
|
||||||
|
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 上报人员信息模型
|
||||||
|
*
|
||||||
|
* @author: 刘振雷
|
||||||
|
* @time: 2024/10/15
|
||||||
|
*/
|
||||||
|
@Data
|
||||||
|
public class PersonnelModel {
|
||||||
|
/**
|
||||||
|
* 主键,36位UUID,必须
|
||||||
|
*/
|
||||||
|
private String id;
|
||||||
|
/**
|
||||||
|
* 人员编码36位,必须
|
||||||
|
*/
|
||||||
|
private String staffCode;
|
||||||
|
/**
|
||||||
|
* 人员姓名,必须
|
||||||
|
*/
|
||||||
|
private String staffName;
|
||||||
|
/**
|
||||||
|
* 人员姓名,人员类型1:企业内部人员 ,2: 园 区工作人员 ,3:承包商人员 ,4: 临时访客 ,5:应急救援人员 ,6: 上级部门检查人员 ,7:驾驶员,8:押运员 ,9:其他;必须
|
||||||
|
*/
|
||||||
|
private String staffType;
|
||||||
|
/**
|
||||||
|
* 所属单位,必须
|
||||||
|
*/
|
||||||
|
private String affiliation;
|
||||||
|
/**
|
||||||
|
* 删除标志:正常:0;已删除: 1,必须
|
||||||
|
*/
|
||||||
|
private String deleted;
|
||||||
|
/**
|
||||||
|
* 创建时间 格式yyyyMMddHHmmss,必须
|
||||||
|
*/
|
||||||
|
private String createDate;
|
||||||
|
/**
|
||||||
|
* 创建人,必须
|
||||||
|
*/
|
||||||
|
private String createBy;
|
||||||
|
/**
|
||||||
|
* 最后修改时间(新创建的数据和创 建时间相同) 格式yyyyMMddHHmmss,必须
|
||||||
|
*/
|
||||||
|
private String updateDate;
|
||||||
|
/**
|
||||||
|
* 最后修改人,必须
|
||||||
|
*/
|
||||||
|
private String updateBy;
|
||||||
|
/**
|
||||||
|
* 职位名称,非必须
|
||||||
|
*/
|
||||||
|
private String staffPosition;
|
||||||
|
/**
|
||||||
|
* 性别: 0:男性 ,1:女性,必须
|
||||||
|
*/
|
||||||
|
private String staffGender;
|
||||||
|
/**
|
||||||
|
* 专业,非必须
|
||||||
|
*/
|
||||||
|
private String staffMajor;
|
||||||
|
/**
|
||||||
|
* 证件号码,必须
|
||||||
|
*/
|
||||||
|
private String idCard;
|
||||||
|
/**
|
||||||
|
* 其他证件,非必须
|
||||||
|
*/
|
||||||
|
private String papers;
|
||||||
|
/**
|
||||||
|
* 联系方式,必须
|
||||||
|
*/
|
||||||
|
private String telephone;
|
||||||
|
/**
|
||||||
|
* 数据的源ID
|
||||||
|
*/
|
||||||
|
private long oid;
|
||||||
|
}
|
||||||
@ -0,0 +1,55 @@
|
|||||||
|
package com.hxl.puyang.location.model;
|
||||||
|
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author: 刘振雷
|
||||||
|
* @time: 2024/10/15
|
||||||
|
*/
|
||||||
|
@Data
|
||||||
|
public class RealDataModel {
|
||||||
|
/**
|
||||||
|
* 主键,必须
|
||||||
|
*/
|
||||||
|
private String id;
|
||||||
|
/**
|
||||||
|
* 经度(WGS84,9位,最大六位小 数),必须
|
||||||
|
*/
|
||||||
|
private String longitude;
|
||||||
|
/**
|
||||||
|
* 纬度(WGS84,9位,最大六位小 数),必须
|
||||||
|
*/
|
||||||
|
private String latitude;
|
||||||
|
/**
|
||||||
|
* 定位终端编码,必须
|
||||||
|
*/
|
||||||
|
private String locaterCode;
|
||||||
|
/**
|
||||||
|
* 人员编码,必须
|
||||||
|
*/
|
||||||
|
private String staffCode;
|
||||||
|
/**
|
||||||
|
* 位置描述,非必须
|
||||||
|
*/
|
||||||
|
private String address;
|
||||||
|
/**
|
||||||
|
* 删除标志:正常:0;已删除: 1,必须
|
||||||
|
*/
|
||||||
|
private String deleted;
|
||||||
|
/**
|
||||||
|
* 创建时间 格式yyyyMMddHHmmss,必须
|
||||||
|
*/
|
||||||
|
private String createDate;
|
||||||
|
/**
|
||||||
|
* 创建人,必须
|
||||||
|
*/
|
||||||
|
private String createBy;
|
||||||
|
/**
|
||||||
|
* 最后修改时间(新创建的数据和创 建时间相同) 格式yyyyMMddHHmmss,必须
|
||||||
|
*/
|
||||||
|
private String updateDate;
|
||||||
|
/**
|
||||||
|
* 最后修改人,必须
|
||||||
|
*/
|
||||||
|
private String updateBy;
|
||||||
|
}
|
||||||
@ -0,0 +1,13 @@
|
|||||||
|
package com.hxl.puyang.location.service;
|
||||||
|
|
||||||
|
import com.hxl.puyang.location.entity.LocationAlarmHistory;
|
||||||
|
import com.baomidou.mybatisplus.extension.service.IService;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author lzl
|
||||||
|
* @description 针对表【hxl_location_alarm_history(历史求救记录表)】的数据库操作Service
|
||||||
|
* @createDate 2024-10-15 14:00:33
|
||||||
|
*/
|
||||||
|
public interface LocationAlarmHistoryService extends IService<LocationAlarmHistory> {
|
||||||
|
|
||||||
|
}
|
||||||
@ -0,0 +1,13 @@
|
|||||||
|
package com.hxl.puyang.location.service;
|
||||||
|
|
||||||
|
import com.hxl.puyang.location.entity.LocationRealdata;
|
||||||
|
import com.baomidou.mybatisplus.extension.service.IService;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author lzl
|
||||||
|
* @description 针对表【hxl_location_realdata(实时定位表)】的数据库操作Service
|
||||||
|
* @createDate 2024-10-15 11:04:40
|
||||||
|
*/
|
||||||
|
public interface LocationRealdataService extends IService<LocationRealdata> {
|
||||||
|
|
||||||
|
}
|
||||||
@ -0,0 +1,18 @@
|
|||||||
|
package com.hxl.puyang.location.service;
|
||||||
|
|
||||||
|
import com.baomidou.mybatisplus.extension.service.IService;
|
||||||
|
import com.hxl.puyang.location.entity.LocationUser;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author lzl
|
||||||
|
* @description 针对表【hxl_location_user】的数据库操作Service
|
||||||
|
* @createDate 2024-10-15 14:01:40
|
||||||
|
*/
|
||||||
|
public interface LocationUserService extends IService<LocationUser> {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 上报人员基础信息
|
||||||
|
*/
|
||||||
|
void reportPersonnel();
|
||||||
|
|
||||||
|
}
|
||||||
@ -0,0 +1,22 @@
|
|||||||
|
package com.hxl.puyang.location.service.impl;
|
||||||
|
|
||||||
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||||
|
import com.hxl.puyang.location.entity.LocationAlarmHistory;
|
||||||
|
import com.hxl.puyang.location.service.LocationAlarmHistoryService;
|
||||||
|
import com.hxl.puyang.location.mapper.LocationAlarmHistoryMapper;
|
||||||
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author lzl
|
||||||
|
* @description 针对表【hxl_location_alarm_history(历史求救记录表)】的数据库操作Service实现
|
||||||
|
* @createDate 2024-10-15 14:00:33
|
||||||
|
*/
|
||||||
|
@Service
|
||||||
|
public class LocationAlarmHistoryServiceImpl extends ServiceImpl<LocationAlarmHistoryMapper, LocationAlarmHistory>
|
||||||
|
implements LocationAlarmHistoryService {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@ -0,0 +1,22 @@
|
|||||||
|
package com.hxl.puyang.location.service.impl;
|
||||||
|
|
||||||
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||||
|
import com.hxl.puyang.location.entity.LocationRealdata;
|
||||||
|
import com.hxl.puyang.location.service.LocationRealdataService;
|
||||||
|
import com.hxl.puyang.location.mapper.LocationRealdataMapper;
|
||||||
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author lzl
|
||||||
|
* @description 针对表【hxl_location_realdata(实时定位表)】的数据库操作Service实现
|
||||||
|
* @createDate 2024-10-15 11:04:40
|
||||||
|
*/
|
||||||
|
@Service
|
||||||
|
public class LocationRealdataServiceImpl extends ServiceImpl<LocationRealdataMapper, LocationRealdata>
|
||||||
|
implements LocationRealdataService {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@ -0,0 +1,105 @@
|
|||||||
|
package com.hxl.puyang.location.service.impl;
|
||||||
|
|
||||||
|
import cn.hutool.core.collection.CollectionUtil;
|
||||||
|
import cn.hutool.core.date.DatePattern;
|
||||||
|
import cn.hutool.core.date.DateUtil;
|
||||||
|
import cn.hutool.core.exceptions.ExceptionUtil;
|
||||||
|
import cn.hutool.core.util.ObjectUtil;
|
||||||
|
import cn.hutool.core.util.StrUtil;
|
||||||
|
import cn.hutool.json.JSONUtil;
|
||||||
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||||
|
import com.hxl.puyang.common.Response;
|
||||||
|
import com.hxl.puyang.config.ReportConfig;
|
||||||
|
import com.hxl.puyang.config.netty.BootNettyClient;
|
||||||
|
import com.hxl.puyang.enums.DataTypeEnum;
|
||||||
|
import com.hxl.puyang.location.entity.LocationUser;
|
||||||
|
import com.hxl.puyang.location.mapper.LocationUserMapper;
|
||||||
|
import com.hxl.puyang.location.model.DataModel;
|
||||||
|
import com.hxl.puyang.location.model.DataSecureModel;
|
||||||
|
import com.hxl.puyang.location.model.PersonnelModel;
|
||||||
|
import com.hxl.puyang.location.service.LocationUserService;
|
||||||
|
import com.hxl.puyang.utils.DataSecureUtil;
|
||||||
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
import org.springframework.stereotype.Service;
|
||||||
|
import org.springframework.transaction.annotation.Transactional;
|
||||||
|
|
||||||
|
import javax.annotation.Resource;
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author lzl
|
||||||
|
* @description 针对表【hxl_location_user】的数据库操作Service实现
|
||||||
|
* @createDate 2024-10-15 14:01:40
|
||||||
|
*/
|
||||||
|
@Service
|
||||||
|
@Slf4j
|
||||||
|
public class LocationUserServiceImpl extends ServiceImpl<LocationUserMapper, LocationUser>
|
||||||
|
implements LocationUserService {
|
||||||
|
|
||||||
|
@Resource
|
||||||
|
private LocationUserMapper locationUserMapper;
|
||||||
|
|
||||||
|
@Resource
|
||||||
|
private ReportConfig reportConfig;
|
||||||
|
|
||||||
|
@Resource
|
||||||
|
private BootNettyClient bootNettyClient;
|
||||||
|
|
||||||
|
private final static String END_STR = "@@";
|
||||||
|
private final static int CODE = 200;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 上报人员基础信息
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
@Transactional(rollbackFor = Exception.class)
|
||||||
|
public void reportPersonnel() {
|
||||||
|
log.info("开始上报——上报人员基础信息");
|
||||||
|
try {
|
||||||
|
//验证ReportConfig数据完整性
|
||||||
|
if (reportConfig.checkParam()) {
|
||||||
|
//1收集信息
|
||||||
|
List<PersonnelModel> personnelModels = locationUserMapper.getPersonnel();
|
||||||
|
//用于成功后改变状态
|
||||||
|
List<LocationUser> locationUsers = new ArrayList<>();
|
||||||
|
if (CollectionUtil.isNotEmpty(personnelModels)) {
|
||||||
|
for (PersonnelModel p : personnelModels) {
|
||||||
|
p.setAffiliation(reportConfig.getCompanyName());
|
||||||
|
if (ObjectUtil.isNull(p.getId())) {
|
||||||
|
String uuid = StrUtil.uuid();
|
||||||
|
p.setId(uuid);
|
||||||
|
p.setStaffCode(uuid);
|
||||||
|
}
|
||||||
|
LocationUser locationUser = new LocationUser();
|
||||||
|
locationUser.setId(p.getOid());
|
||||||
|
locationUser.setIsReportYq(1);
|
||||||
|
locationUser.setRid(p.getId());
|
||||||
|
locationUsers.add(locationUser);
|
||||||
|
}
|
||||||
|
//包装数据
|
||||||
|
DataSecureModel<PersonnelModel> dataSecureModel = new DataSecureModel<>();
|
||||||
|
dataSecureModel.setCollectTime(DateUtil.format(DateUtil.date(), DatePattern.PURE_DATETIME_PATTERN));
|
||||||
|
dataSecureModel.setDatas(personnelModels);
|
||||||
|
//加密数据
|
||||||
|
String secureStr = DataSecureUtil.encryptBase64(JSONUtil.toJsonStr(dataSecureModel));
|
||||||
|
DataModel dataModel = new DataModel();
|
||||||
|
dataModel.setCompanyCode(reportConfig.getCompanyCode());
|
||||||
|
dataModel.setServiceId(DataTypeEnum.PERSONNEL_INFO.getServiceId());
|
||||||
|
dataModel.setData(secureStr);
|
||||||
|
bootNettyClient.sendData(JSONUtil.toJsonStr(dataModel) + END_STR,locationUsers,DataTypeEnum.PERSONNEL_INFO);
|
||||||
|
} else {
|
||||||
|
log.info("上报人员基础信息,未收集到可上报的数据");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} catch (Exception e) {
|
||||||
|
log.error("上报定位卡信息数据出错");
|
||||||
|
log.error(ExceptionUtil.stacktraceToString(e));
|
||||||
|
}
|
||||||
|
log.info("结束上报——上报定位卡信息数据");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
37
src/main/java/com/hxl/puyang/utils/DataSecureUtil.java
Normal file
37
src/main/java/com/hxl/puyang/utils/DataSecureUtil.java
Normal file
@ -0,0 +1,37 @@
|
|||||||
|
package com.hxl.puyang.utils;
|
||||||
|
|
||||||
|
import cn.hutool.crypto.SecureUtil;
|
||||||
|
|
||||||
|
import java.nio.charset.StandardCharsets;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author: 刘振雷
|
||||||
|
* @time: 2024/10/15
|
||||||
|
*/
|
||||||
|
public class DataSecureUtil {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 秘钥
|
||||||
|
*/
|
||||||
|
private final static String KEY = "f271379419e349ba";
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 加密数据
|
||||||
|
*
|
||||||
|
* @param dataStr
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
public static String encryptBase64(String dataStr) {
|
||||||
|
return SecureUtil.aes(KEY.getBytes()).encryptBase64(dataStr, StandardCharsets.UTF_8);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 加密数据
|
||||||
|
*
|
||||||
|
* @param encryptBase64Str
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
public static String decryptBase64(String encryptBase64Str) {
|
||||||
|
return SecureUtil.aes(KEY.getBytes()).decryptStr(encryptBase64Str, StandardCharsets.UTF_8);
|
||||||
|
}
|
||||||
|
}
|
||||||
41
src/main/resources/application-dev.yml
Normal file
41
src/main/resources/application-dev.yml
Normal file
@ -0,0 +1,41 @@
|
|||||||
|
spring:
|
||||||
|
datasource:
|
||||||
|
dynamic:
|
||||||
|
primary: master #设置默认的数据源或者数据源组,默认值即为master
|
||||||
|
strict: false #严格匹配数据源,默认false. true未匹配到指定数据源时抛异常,false使用默认数据源
|
||||||
|
datasource:
|
||||||
|
master:
|
||||||
|
url: jdbc:mysql://127.0.0.1:3306/safety_chemistry_all?useSSL=false&useUnicode=true&characterEncoding=utf-8&zeroDateTimeBehavior=convertToNull&transformedBitIsBoolean=true&serverTimezone=Asia/Shanghai&nullCatalogMeansCurrent=true&rewriteBatchedStatements=true
|
||||||
|
username: root
|
||||||
|
password: root
|
||||||
|
driver-class-name: com.mysql.cj.jdbc.Driver
|
||||||
|
|
||||||
|
mybatis-plus:
|
||||||
|
configuration:
|
||||||
|
map-underscore-to-camel-case: true
|
||||||
|
auto-mapping-behavior: full
|
||||||
|
#log-impl: org.apache.ibatis.logging.nologging.NoLoggingImpl
|
||||||
|
log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
|
||||||
|
mapper-locations: classpath*:mybatis/**/*Mapper.xml
|
||||||
|
|
||||||
|
xxl:
|
||||||
|
job:
|
||||||
|
admin:
|
||||||
|
addresses: http://127.0.0.1:10489/xxl-job-admin
|
||||||
|
executor:
|
||||||
|
appname: longdeyang
|
||||||
|
address:
|
||||||
|
ip: 10.8.33.15
|
||||||
|
port: 8901
|
||||||
|
logpath: /data/applogs/xxl-job/jobhandler
|
||||||
|
logretentiondays: 30
|
||||||
|
accessToken: default_token
|
||||||
|
|
||||||
|
report-config:
|
||||||
|
company-name: 濮阳龙德洋新材料有限公司 #企业名称
|
||||||
|
company-code: 123456789 #企业编码
|
||||||
|
|
||||||
|
# netty 连接信息
|
||||||
|
netty-config:
|
||||||
|
ip: 10.8.33.15
|
||||||
|
port: 8866
|
||||||
41
src/main/resources/application-pro.yml
Normal file
41
src/main/resources/application-pro.yml
Normal file
@ -0,0 +1,41 @@
|
|||||||
|
spring:
|
||||||
|
datasource:
|
||||||
|
dynamic:
|
||||||
|
primary: master #设置默认的数据源或者数据源组,默认值即为master
|
||||||
|
strict: false #严格匹配数据源,默认false. true未匹配到指定数据源时抛异常,false使用默认数据源
|
||||||
|
datasource:
|
||||||
|
master:
|
||||||
|
url: jdbc:mysql://127.0.0.1:3307/safety_chemistry_all?useSSL=false&useUnicode=true&characterEncoding=utf-8&zeroDateTimeBehavior=convertToNull&transformedBitIsBoolean=true&serverTimezone=Asia/Shanghai&nullCatalogMeansCurrent=true&rewriteBatchedStatements=true
|
||||||
|
username: root
|
||||||
|
password: x5
|
||||||
|
driver-class-name: com.mysql.cj.jdbc.Driver
|
||||||
|
|
||||||
|
mybatis-plus:
|
||||||
|
configuration:
|
||||||
|
map-underscore-to-camel-case: true
|
||||||
|
auto-mapping-behavior: full
|
||||||
|
#log-impl: org.apache.ibatis.logging.nologging.NoLoggingImpl
|
||||||
|
log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
|
||||||
|
mapper-locations: classpath*:mybatis/**/*Mapper.xml
|
||||||
|
|
||||||
|
xxl:
|
||||||
|
job:
|
||||||
|
admin:
|
||||||
|
addresses: http://127.0.0.1:10489/xxl-job-admin
|
||||||
|
executor:
|
||||||
|
appname: longdeyang
|
||||||
|
address:
|
||||||
|
ip: 127.0.0.1
|
||||||
|
port: 8901
|
||||||
|
logpath: /data/applogs/xxl-job/jobhandler
|
||||||
|
logretentiondays: 30
|
||||||
|
accessToken: default_token
|
||||||
|
|
||||||
|
report-config:
|
||||||
|
company-name: 濮阳龙德洋新材料有限公司 #企业名称
|
||||||
|
company-code: 123456789 #企业编码
|
||||||
|
|
||||||
|
# netty 连接信息
|
||||||
|
netty-config:
|
||||||
|
ip: 10.8.33.15
|
||||||
|
port: 8866
|
||||||
7
src/main/resources/application.yml
Normal file
7
src/main/resources/application.yml
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
# 应用服务 WEB 访问端口
|
||||||
|
server:
|
||||||
|
port: 8900
|
||||||
|
|
||||||
|
spring:
|
||||||
|
profiles:
|
||||||
|
active: dev
|
||||||
93
src/main/resources/logback.xml
Normal file
93
src/main/resources/logback.xml
Normal file
@ -0,0 +1,93 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<configuration>
|
||||||
|
<!-- 日志存放路径 -->
|
||||||
|
<property name="log.path" value="./logs" />
|
||||||
|
<!-- 日志输出格式 -->
|
||||||
|
<property name="log.pattern" value="%d{HH:mm:ss.SSS} [%thread] %-5level %logger{20} - [%method,%line] - %msg%n" />
|
||||||
|
|
||||||
|
<!-- 控制台输出 -->
|
||||||
|
<appender name="console" class="ch.qos.logback.core.ConsoleAppender">
|
||||||
|
<encoder>
|
||||||
|
<pattern>${log.pattern}</pattern>
|
||||||
|
</encoder>
|
||||||
|
</appender>
|
||||||
|
|
||||||
|
<!-- 系统日志输出 -->
|
||||||
|
<appender name="file_info" class="ch.qos.logback.core.rolling.RollingFileAppender">
|
||||||
|
<file>${log.path}/sys-info.txt</file>
|
||||||
|
<!-- 循环政策:基于时间创建日志文件 -->
|
||||||
|
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
|
||||||
|
<!-- 日志文件名格式 -->
|
||||||
|
<fileNamePattern>${log.path}/sys-info.%d{yyyy-MM-dd}.txt</fileNamePattern>
|
||||||
|
<!-- 日志最大的历史 60天 -->
|
||||||
|
<maxHistory>60</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}/sys-error.txt</file>
|
||||||
|
<!-- 循环政策:基于时间创建日志文件 -->
|
||||||
|
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
|
||||||
|
<!-- 日志文件名格式 -->
|
||||||
|
<fileNamePattern>${log.path}/sys-error.%d{yyyy-MM-dd}.txt</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>
|
||||||
|
|
||||||
|
<!-- 用户访问日志输出 -->
|
||||||
|
<appender name="sys-user" class="ch.qos.logback.core.rolling.RollingFileAppender">
|
||||||
|
<file>${log.path}/sys-user.txt</file>
|
||||||
|
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
|
||||||
|
<!-- 按天回滚 daily -->
|
||||||
|
<fileNamePattern>${log.path}/sys-user.%d{yyyy-MM-dd}.txt</fileNamePattern>
|
||||||
|
<!-- 日志最大的历史 60天 -->
|
||||||
|
<maxHistory>60</maxHistory>
|
||||||
|
</rollingPolicy>
|
||||||
|
<encoder>
|
||||||
|
<pattern>${log.pattern}</pattern>
|
||||||
|
</encoder>
|
||||||
|
</appender>
|
||||||
|
|
||||||
|
<!-- 系统模块日志级别控制 -->
|
||||||
|
<logger name="com.xjrsoft" level="info" />
|
||||||
|
<!-- Spring日志级别控制 -->
|
||||||
|
<logger name="org.springframework" level="info" />
|
||||||
|
|
||||||
|
<root level="info">
|
||||||
|
<appender-ref ref="console" />
|
||||||
|
</root>
|
||||||
|
|
||||||
|
<!--系统操作日志-->
|
||||||
|
<root level="info">
|
||||||
|
<appender-ref ref="file_info" />
|
||||||
|
<appender-ref ref="file_error" />
|
||||||
|
</root>
|
||||||
|
|
||||||
|
<!--系统用户操作日志-->
|
||||||
|
<logger name="sys-user" level="info">
|
||||||
|
<appender-ref ref="sys-user"/>
|
||||||
|
</logger>
|
||||||
|
</configuration>
|
||||||
@ -0,0 +1,42 @@
|
|||||||
|
<?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.hxl.puyang.location.mapper.LocationAlarmHistoryMapper">
|
||||||
|
|
||||||
|
<resultMap id="BaseResultMap" type="com.hxl.puyang.location.entity.LocationAlarmHistory">
|
||||||
|
<id property="id" column="id" jdbcType="BIGINT"/>
|
||||||
|
<result property="cardId" column="card_id" jdbcType="VARCHAR"/>
|
||||||
|
<result property="beaconId" column="beacon_id" jdbcType="VARCHAR"/>
|
||||||
|
<result property="alarmTime" column="alarm_time" jdbcType="TIMESTAMP"/>
|
||||||
|
<result property="policeType" column="police_type" jdbcType="INTEGER"/>
|
||||||
|
<result property="handleStatus" column="handle_status" jdbcType="INTEGER"/>
|
||||||
|
<result property="handleMeasures" column="handle_measures" jdbcType="VARCHAR"/>
|
||||||
|
<result property="isIgnore" column="is_ignore" jdbcType="INTEGER"/>
|
||||||
|
<result property="remark" column="remark" jdbcType="VARCHAR"/>
|
||||||
|
<result property="falsePositives" column="false_positives" jdbcType="INTEGER"/>
|
||||||
|
<result property="dealingWithPeople" column="dealing_with_people" jdbcType="VARCHAR"/>
|
||||||
|
<result property="processingTime" column="processing_time" jdbcType="TIMESTAMP"/>
|
||||||
|
<result property="gridId" column="grid_id" jdbcType="INTEGER"/>
|
||||||
|
<result property="endTime" column="end_time" jdbcType="TIMESTAMP"/>
|
||||||
|
<result property="buildId" column="build_id" jdbcType="BIGINT"/>
|
||||||
|
<result property="floorId" column="floor_id" jdbcType="BIGINT"/>
|
||||||
|
<result property="coorInfoSatLon" column="coor_info_sat_lon" jdbcType="DOUBLE"/>
|
||||||
|
<result property="coorInfoSatLat" column="coor_info_sat_lat" jdbcType="DOUBLE"/>
|
||||||
|
<result property="isReport" column="is_report" jdbcType="VARCHAR"/>
|
||||||
|
<result property="dealingWithPeopleId" column="dealing_with_people_id" jdbcType="BIGINT"/>
|
||||||
|
<result property="isReportYq" column="is_report_yq" jdbcType="INTEGER"/>
|
||||||
|
<result property="rid" column="rid" jdbcType="VARCHAR"/>
|
||||||
|
</resultMap>
|
||||||
|
|
||||||
|
<sql id="Base_Column_List">
|
||||||
|
id,card_id,beacon_id,
|
||||||
|
alarm_time,police_type,handle_status,
|
||||||
|
handle_measures,is_ignore,remark,
|
||||||
|
false_positives,dealing_with_people,processing_time,
|
||||||
|
grid_id,end_time,build_id,
|
||||||
|
floor_id,coor_info_sat_lon,coor_info_sat_lat,
|
||||||
|
is_report,dealing_with_people_id,is_report_yq,
|
||||||
|
rid
|
||||||
|
</sql>
|
||||||
|
</mapper>
|
||||||
@ -0,0 +1,28 @@
|
|||||||
|
<?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.hxl.puyang.location.mapper.LocationRealdataMapper">
|
||||||
|
|
||||||
|
<resultMap id="BaseResultMap" type="com.hxl.puyang.location.entity.LocationRealdata">
|
||||||
|
<id property="id" column="id" jdbcType="INTEGER"/>
|
||||||
|
<result property="cardId" column="card_id" jdbcType="VARCHAR"/>
|
||||||
|
<result property="isAlarm" column="is_alarm" jdbcType="INTEGER"/>
|
||||||
|
<result property="isLowPower" column="is_low_power" jdbcType="INTEGER"/>
|
||||||
|
<result property="isStill" column="is_still" jdbcType="INTEGER"/>
|
||||||
|
<result property="beaconId" column="beacon_id" jdbcType="VARCHAR"/>
|
||||||
|
<result property="distance" column="distance" jdbcType="DECIMAL"/>
|
||||||
|
<result property="signalTime" column="signal_time" jdbcType="TIMESTAMP"/>
|
||||||
|
<result property="preBeaconId" column="pre_beacon_id" jdbcType="VARCHAR"/>
|
||||||
|
<result property="preSignalTime" column="pre_signal_time" jdbcType="TIMESTAMP"/>
|
||||||
|
<result property="createTime" column="create_time" jdbcType="TIMESTAMP"/>
|
||||||
|
<result property="updateTime" column="update_time" jdbcType="TIMESTAMP"/>
|
||||||
|
</resultMap>
|
||||||
|
|
||||||
|
<sql id="Base_Column_List">
|
||||||
|
id,card_id,is_alarm,
|
||||||
|
is_low_power,is_still,beacon_id,
|
||||||
|
distance,signal_time,pre_beacon_id,
|
||||||
|
pre_signal_time,create_time,update_time
|
||||||
|
</sql>
|
||||||
|
</mapper>
|
||||||
83
src/main/resources/mybatis/location/LocationUserMapper.xml
Normal file
83
src/main/resources/mybatis/location/LocationUserMapper.xml
Normal file
@ -0,0 +1,83 @@
|
|||||||
|
<?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.hxl.puyang.location.mapper.LocationUserMapper">
|
||||||
|
|
||||||
|
<resultMap id="BaseResultMap" type="com.hxl.puyang.location.entity.LocationUser">
|
||||||
|
<id property="id" column="ID" jdbcType="BIGINT"/>
|
||||||
|
<result property="cardNo" column="CARD_NO" jdbcType="VARCHAR"/>
|
||||||
|
<result property="cardNoType" column="CARD_NO_TYPE" jdbcType="VARCHAR"/>
|
||||||
|
<result property="userName" column="USER_NAME" jdbcType="VARCHAR"/>
|
||||||
|
<result property="workNumber" column="WORK_NUMBER" jdbcType="VARCHAR"/>
|
||||||
|
<result property="userCardNo" column="USER_CARD_NO" jdbcType="VARCHAR"/>
|
||||||
|
<result property="imgName" column="IMG_NAME" jdbcType="VARCHAR"/>
|
||||||
|
<result property="imgId" column="IMG_ID" jdbcType="VARCHAR"/>
|
||||||
|
<result property="imgPath" column="IMG_PATH" jdbcType="VARCHAR"/>
|
||||||
|
<result property="userPhone" column="USER_PHONE" jdbcType="VARCHAR"/>
|
||||||
|
<result property="userEmail" column="USER_EMAIL" jdbcType="VARCHAR"/>
|
||||||
|
<result property="userDept" column="USER_DEPT" jdbcType="BIGINT"/>
|
||||||
|
<result property="userPosition" column="USER_POSITION" jdbcType="VARCHAR"/>
|
||||||
|
<result property="roomNumber" column="ROOM_NUMBER" jdbcType="VARCHAR"/>
|
||||||
|
<result property="roomName" column="ROOM_NAME" jdbcType="VARCHAR"/>
|
||||||
|
<result property="geoX" column="GEO_X" jdbcType="VARCHAR"/>
|
||||||
|
<result property="geoY" column="GEO_Y" jdbcType="VARCHAR"/>
|
||||||
|
<result property="policeType" column="POLICE_TYPE" jdbcType="VARCHAR"/>
|
||||||
|
<result property="userType" column="USER_TYPE" jdbcType="VARCHAR"/>
|
||||||
|
<result property="icNumber" column="IC_NUMBER" jdbcType="VARCHAR"/>
|
||||||
|
<result property="userSex" column="USER_SEX" jdbcType="VARCHAR"/>
|
||||||
|
<result property="birthData" column="BIRTH_DATA" jdbcType="DATE"/>
|
||||||
|
<result property="entryData" column="ENTRY_DATA" jdbcType="DATE"/>
|
||||||
|
<result property="isTraining" column="IS_TRAINING" jdbcType="VARCHAR"/>
|
||||||
|
<result property="isCertificate" column="IS_CERTIFICATE" jdbcType="VARCHAR"/>
|
||||||
|
<result property="remarks" column="REMARKS" jdbcType="VARCHAR"/>
|
||||||
|
<result property="electricityType" column="ELECTRICITY_TYPE" jdbcType="VARCHAR"/>
|
||||||
|
<result property="userCardnoType" column="USER_CARDNO_TYPE" jdbcType="VARCHAR"/>
|
||||||
|
<result property="createData" column="CREATE_DATA" jdbcType="DATE"/>
|
||||||
|
<result property="companyAffiliationId" column="COMPANY_AFFILIATION_ID" jdbcType="BIGINT"/>
|
||||||
|
<result property="safetyHat" column="safety_hat" jdbcType="VARCHAR"/>
|
||||||
|
<result property="isDelete" column="is_delete" jdbcType="VARCHAR"/>
|
||||||
|
<result property="originId" column="origin_id" jdbcType="VARCHAR"/>
|
||||||
|
<result property="originDept" column="origin_dept" jdbcType="VARCHAR"/>
|
||||||
|
<result property="isReportYq" column="is_report_yq" jdbcType="INTEGER"/>
|
||||||
|
<result property="rid" column="rid" jdbcType="VARCHAR"/>
|
||||||
|
</resultMap>
|
||||||
|
|
||||||
|
<sql id="Base_Column_List">
|
||||||
|
ID,CARD_NO,CARD_NO_TYPE,
|
||||||
|
USER_NAME,WORK_NUMBER,USER_CARD_NO,
|
||||||
|
IMG_NAME,IMG_ID,IMG_PATH,
|
||||||
|
USER_PHONE,USER_EMAIL,USER_DEPT,
|
||||||
|
USER_POSITION,ROOM_NUMBER,ROOM_NAME,
|
||||||
|
GEO_X,GEO_Y,POLICE_TYPE,
|
||||||
|
USER_TYPE,IC_NUMBER,USER_SEX,
|
||||||
|
BIRTH_DATA,ENTRY_DATA,IS_TRAINING,
|
||||||
|
IS_CERTIFICATE,REMARKS,ELECTRICITY_TYPE,
|
||||||
|
USER_CARDNO_TYPE,CREATE_DATA,COMPANY_AFFILIATION_ID,
|
||||||
|
safety_hat,is_delete,origin_id,
|
||||||
|
origin_dept,is_report_yq,rid
|
||||||
|
</sql>
|
||||||
|
<!--获取需要上报的人员信息-->
|
||||||
|
<select id="getPersonnel" resultType="com.hxl.puyang.location.model.PersonnelModel">
|
||||||
|
select rid AS id,
|
||||||
|
rid AS staffCode,
|
||||||
|
USER_NAME AS staffName,
|
||||||
|
'1' AS staffType,
|
||||||
|
IF(is_delete = 0, 0, 1) AS deleted,
|
||||||
|
DATE_FORMAT(CREATE_DATA, '%Y%m%d%H%i%s') AS createDate,
|
||||||
|
USER_NAME AS createBy,
|
||||||
|
DATE_FORMAT(CREATE_DATA, '%Y%m%d%H%i%s') AS updateDate,
|
||||||
|
USER_NAME AS updateBy,
|
||||||
|
CASE USER_SEX WHEN '1' THEN '0' ELSE '1' END AS staffGender,
|
||||||
|
USER_CARD_NO AS idCard,
|
||||||
|
USER_PHONE AS telephone,
|
||||||
|
ID AS oid
|
||||||
|
FROM
|
||||||
|
hxl_location_user
|
||||||
|
WHERE
|
||||||
|
CHAR_LENGTH( USER_CARD_NO ) = 18
|
||||||
|
AND USER_PHONE IS NOT NULL
|
||||||
|
AND !(is_delete = 0 AND is_report_yq = 1)
|
||||||
|
AND !(is_delete = 1 AND (is_report_yq IN ( 0, 2 )))
|
||||||
|
</select>
|
||||||
|
</mapper>
|
||||||
Loading…
x
Reference in New Issue
Block a user