9 Commits
1061 changed files with 33151 additions and 41552 deletions
-224
View File
@@ -1,224 +0,0 @@
# CLAUDE.md
This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
---
## 📌 重要提示
**在开始工作前,请务必先阅读 `skills.md` 文件,了解当前任务的具体约束和技术指南。**
- **CLAUDE.md** (本文件): 项目通用知识库,包含架构、技术栈、开发规范等基础信息
- **skills.md**: 当前任务技能包,定义特定任务的范围约束、禁止事项和专项技术指南
---
## 项目概述
新疆油田健康管理平台 - 基于 JeecgBoot 3.6.3.1-plus 框架的微服务架构后端系统。
## 技术栈
- **框架版本**: Spring Boot 2.7.18, Spring Cloud 2021.0.9, Spring Cloud Alibaba 2021.0.6.0
- **JDK**: Java 1.8
- **构建工具**: Maven 3.x
- **服务治理**: Nacos 2.3.2 (配置中心 + 服务发现)
- **持久层**: MyBatis-Plus 3.5.6, MyBatis-Plus Join 1.5.3
- **数据源**: 动态多数据源 (Dynamic Datasource 4.3.0), Druid 1.2.18
- **数据库支持**: 达梦DM8 (主要), MySQL, Oracle, PostgreSQL
- **认证授权**: Shiro 1.13.0, JWT
- **文档**: Knife4j 4.5.0
- **报表**: 积木报表 1.6.1
- **对象存储**: MinIO, 阿里云OSS, 七牛云
## 微服务模块
项目采用多模块微服务架构,各服务独立部署:
| 服务名称 | 模块路径 | 默认端口 | 说明 |
|---------|---------|---------|------|
| health-system | jeecg-system/jeecg-system-start | 7001 | 系统核心服务(用户、角色、权限、租户管理) |
| health-consultation | health-consultation/health-consultation-start | 7010 | 健康咨询服务 |
| health-emergency | health-emergency/health-emergency-start | - | 急救服务 |
| health-watch | health-watch/health-watch-start | - | 手表数据服务 |
| health-im | health-im/health-im-start | - | 即时通讯服务 |
| health-bank | health-bank/health-bank-start | - | 健康银行服务 |
## 核心架构特性
### 1. 多租户(SaaS)架构
- **实现方式**: MyBatis-Plus TenantLineInnerInterceptor 租户拦截器
- **配置位置**: `jeecg-boot-base-core/src/main/java/org/jeecg/config/mybatis/MybatisPlusSaasConfig.java`
- **租户字段**: 数据表通过 `tenant_id` 字段实现租户隔离
- **隔离范围**: 用户、角色、部门、字典、多数据源等系统模块
- **非隔离表**: 菜单表、租户表不做租户隔离
### 2. 动态多数据源
- **配置**: 支持运行时动态切换数据源
- **主要数据库**: 达梦数据库 DM8 (国产数据库)
- **注解切换**: 使用 `@DS("数据源名称")` 注解切换数据源
- **拦截器**: `DmKeywordInterceptor` 处理达梦数据库关键字转义
### 3. 安眼系统集成
- **模块位置**: `functional-modules/xj-anyan-api`
- **执行器**: `AnYanClientExecutor` 实现与安眼系统的API对接
- **功能**: 统一身份认证、用户数据同步、登录集成
### 4. 环境配置
每个微服务启动模块都包含独立的 `.env` 文件用于环境变量配置:
```
PROFILE_NAME=dev # 环境名称
SERVER_PORT=7001 # 服务端口
NACOS_SERVER_ADDR=192.168.1.80:8848 # Nacos地址
NACOS_USERNAME=xjuser # Nacos用户名
NACOS_PASSWORD=Aa135790!123 # Nacos密码
NACOS_NAMESPACE=xjxc-space-common # 配置命名空间
NACOS_NAMESPACE_DISCOVERY=workspace_lian # 服务发现命名空间
NACOS_GROUP=dev # 配置分组
```
**注意**: `.env` 文件包含敏感信息,不应提交到版本控制系统。
## 常用开发命令
### Maven 构建命令
```bash
# 全量编译打包(跳过测试)
mvn clean package -DskipTests
# 编译指定模块
mvn clean package -pl jeecg-system/jeecg-system-start -am -DskipTests
# 安装到本地仓库
mvn clean install -DskipTests
# 分包打包(依赖和应用分离,用于Docker部署)
mvn clean package -P divide-package -DskipTests
# 依赖漏洞分析
mvn clean package -P bom-analysis
```
### 启动服务
```bash
# 方式1: IDE直接运行启动类
# 例如: org.jeecg.JeecgSystemCloudApplication
# 方式2: 使用 spring-boot-maven-plugin 启动
cd jeecg-system/jeecg-system-start
mvn spring-boot:run
# 方式3: 打包后启动
java -jar jeecg-system/jeecg-system-start/target/jeecg-system-start.jar
```
### Docker 部署
```bash
# 构建 Docker 镜像(在各服务的 start 模块目录执行)
cd jeecg-system/jeecg-system-start
docker build -t health-system:latest .
# 运行容器
docker run -d \
-p 7001:7001 \
-e PROFILE_NAME=dev \
-e NACOS_SERVER_ADDR=nacos:8848 \
--name health-system \
health-system:latest
```
## 代码规范
### 包结构约定
```
com.renkang / org.jeecg
├── modules
│ └── [模块名]
│ ├── controller # 控制器层
│ ├── service # 服务层
│ │ └── impl # 服务实现
│ ├── mapper # 数据访问层
│ │ └── xml # MyBatis XML映射文件
│ ├── entity # 实体类
│ ├── vo # 视图对象
│ └── dto # 数据传输对象
```
### Mapper扫描路径
`MybatisPlusSaasConfig.java` 中配置了全局 Mapper 扫描:
```java
@MapperScan(value = {"org.jeecg.modules.**.mapper*", "com.renkang.**.mapper*", "com.jeecg.**.mapper*"})
```
### MyBatis XML 映射文件位置
- **方式1**: 放在 `src/main/resources/mapper``src/main/resources/mapper/xml`
- **方式2**: 与 Mapper 接口同目录,在 `src/main/java` 下 (已配置资源过滤)
### 多租户开发注意事项
1. 新增业务表时,需要添加 `tenant_id` 字段用于租户隔离
2. 如果某些表不需要租户隔离,需要在 `MybatisPlusSaasConfig``TenantLineHandler` 中排除
3. 租户ID由拦截器自动注入,业务代码无需手动设置
### 动态数据源使用
```java
@Service
public class UserService {
@DS("slave") // 切换到从库
public List<User> queryUsers() {
// ...
}
@DS("master") // 切换到主库
public void saveUser(User user) {
// ...
}
}
```
## 项目特定依赖
- **Aspose Words**: 文档处理库,用于生成Word报告
- **EasyExcel**: Excel导入导出
- **POI-TL**: Word模板引擎
- **极光推送**: 消息推送服务
- **微信小程序**: 小程序API集成
- **北郊工具**: 膳食摄入算法工具 (`yixiong-tools`)
- **重庆风险评估**: 健康风险评估工具 (`cqRisk`)
## 重要配置文件
- **根 pom.xml**: 定义所有依赖版本和Maven仓库配置
- **application.yml**: 各服务启动配置,从Nacos加载配置
- **.env**: 环境变量配置,控制Nacos连接和服务端口
- **Dockerfile**: 各服务的容器化配置
## 开发工具推荐
- **IDE**: IntelliJ IDEA
- **数据库工具**: DM数据库客户端 (达梦官方), Navicat (支持达梦插件)
- **API测试**: Knife4j Web UI (启动服务后访问 `/doc.html`)
- **服务监控**: Nacos 控制台
## 调试建议
1. 确保 Nacos 服务已启动并可访问
2. 检查 `.env` 文件中的 Nacos 配置是否正确
3. 在 Nacos 配置中心确认对应的配置文件存在 (`jeecg.yaml`, `health-system-dev.yaml` 等)
4. 查看日志目录 `logs/` 下的服务日志文件
5. 多租户问题排查: 检查请求Header中的 `tenant-id``X-Access-Token` (从Token解析租户ID)
+153
View File
@@ -0,0 +1,153 @@
/*
Navicat Premium Dump SQL
Source Server : 新疆内网测试环境
Source Server Type : MySQL
Source Server Version : 80300 (8.3.0)
Source Host : 192.168.1.210:3308
Source Schema : xj_batch
Target Server Type : MySQL
Target Server Version : 80300 (8.3.0)
File Encoding : 65001
Date: 11/07/2025 15:14:18
*/
SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;
-- ----------------------------
-- Table structure for BATCH_JOB_EXECUTION
-- ----------------------------
DROP TABLE IF EXISTS `BATCH_JOB_EXECUTION`;
CREATE TABLE `BATCH_JOB_EXECUTION` (
`JOB_EXECUTION_ID` bigint NOT NULL,
`VERSION` bigint NULL DEFAULT NULL,
`JOB_INSTANCE_ID` bigint NOT NULL,
`CREATE_TIME` datetime(6) NOT NULL,
`START_TIME` datetime(6) NULL DEFAULT NULL,
`END_TIME` datetime(6) NULL DEFAULT NULL,
`STATUS` varchar(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL,
`EXIT_CODE` varchar(2500) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL,
`EXIT_MESSAGE` varchar(2500) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL,
`LAST_UPDATED` datetime(6) NULL DEFAULT NULL,
`JOB_CONFIGURATION_LOCATION` varchar(2500) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL,
PRIMARY KEY (`JOB_EXECUTION_ID`) USING BTREE,
INDEX `JOB_INST_EXEC_FK`(`JOB_INSTANCE_ID` ASC) USING BTREE,
CONSTRAINT `JOB_INST_EXEC_FK` FOREIGN KEY (`JOB_INSTANCE_ID`) REFERENCES `BATCH_JOB_INSTANCE` (`JOB_INSTANCE_ID`) ON DELETE RESTRICT ON UPDATE RESTRICT
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = Dynamic;
-- ----------------------------
-- Table structure for BATCH_JOB_EXECUTION_CONTEXT
-- ----------------------------
DROP TABLE IF EXISTS `BATCH_JOB_EXECUTION_CONTEXT`;
CREATE TABLE `BATCH_JOB_EXECUTION_CONTEXT` (
`JOB_EXECUTION_ID` bigint NOT NULL,
`SHORT_CONTEXT` varchar(2500) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL,
`SERIALIZED_CONTEXT` text CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL,
PRIMARY KEY (`JOB_EXECUTION_ID`) USING BTREE,
CONSTRAINT `JOB_EXEC_CTX_FK` FOREIGN KEY (`JOB_EXECUTION_ID`) REFERENCES `BATCH_JOB_EXECUTION` (`JOB_EXECUTION_ID`) ON DELETE RESTRICT ON UPDATE RESTRICT
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = Dynamic;
-- ----------------------------
-- Table structure for BATCH_JOB_EXECUTION_PARAMS
-- ----------------------------
DROP TABLE IF EXISTS `BATCH_JOB_EXECUTION_PARAMS`;
CREATE TABLE `BATCH_JOB_EXECUTION_PARAMS` (
`JOB_EXECUTION_ID` bigint NOT NULL,
`TYPE_CD` varchar(6) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL,
`KEY_NAME` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL,
`STRING_VAL` varchar(250) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL,
`DATE_VAL` datetime(6) NULL DEFAULT NULL,
`LONG_VAL` bigint NULL DEFAULT NULL,
`DOUBLE_VAL` double NULL DEFAULT NULL,
`IDENTIFYING` char(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL,
INDEX `JOB_EXEC_PARAMS_FK`(`JOB_EXECUTION_ID` ASC) USING BTREE,
CONSTRAINT `JOB_EXEC_PARAMS_FK` FOREIGN KEY (`JOB_EXECUTION_ID`) REFERENCES `BATCH_JOB_EXECUTION` (`JOB_EXECUTION_ID`) ON DELETE RESTRICT ON UPDATE RESTRICT
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = Dynamic;
-- ----------------------------
-- Table structure for BATCH_JOB_EXECUTION_SEQ
-- ----------------------------
DROP TABLE IF EXISTS `BATCH_JOB_EXECUTION_SEQ`;
CREATE TABLE `BATCH_JOB_EXECUTION_SEQ` (
`ID` bigint NOT NULL,
`UNIQUE_KEY` char(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL,
UNIQUE INDEX `UNIQUE_KEY_UN`(`UNIQUE_KEY` ASC) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = Dynamic;
-- ----------------------------
-- Table structure for BATCH_JOB_INSTANCE
-- ----------------------------
DROP TABLE IF EXISTS `BATCH_JOB_INSTANCE`;
CREATE TABLE `BATCH_JOB_INSTANCE` (
`JOB_INSTANCE_ID` bigint NOT NULL,
`VERSION` bigint NULL DEFAULT NULL,
`JOB_NAME` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL,
`JOB_KEY` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL,
PRIMARY KEY (`JOB_INSTANCE_ID`) USING BTREE,
UNIQUE INDEX `JOB_INST_UN`(`JOB_NAME` ASC, `JOB_KEY` ASC) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = Dynamic;
-- ----------------------------
-- Table structure for BATCH_JOB_SEQ
-- ----------------------------
DROP TABLE IF EXISTS `BATCH_JOB_SEQ`;
CREATE TABLE `BATCH_JOB_SEQ` (
`ID` bigint NOT NULL,
`UNIQUE_KEY` char(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL,
UNIQUE INDEX `UNIQUE_KEY_UN`(`UNIQUE_KEY` ASC) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = Dynamic;
-- ----------------------------
-- Table structure for BATCH_STEP_EXECUTION
-- ----------------------------
DROP TABLE IF EXISTS `BATCH_STEP_EXECUTION`;
CREATE TABLE `BATCH_STEP_EXECUTION` (
`STEP_EXECUTION_ID` bigint NOT NULL,
`VERSION` bigint NOT NULL,
`STEP_NAME` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL,
`JOB_EXECUTION_ID` bigint NOT NULL,
`START_TIME` datetime(6) NOT NULL,
`END_TIME` datetime(6) NULL DEFAULT NULL,
`STATUS` varchar(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL,
`COMMIT_COUNT` bigint NULL DEFAULT NULL,
`READ_COUNT` bigint NULL DEFAULT NULL,
`FILTER_COUNT` bigint NULL DEFAULT NULL,
`WRITE_COUNT` bigint NULL DEFAULT NULL,
`READ_SKIP_COUNT` bigint NULL DEFAULT NULL,
`WRITE_SKIP_COUNT` bigint NULL DEFAULT NULL,
`PROCESS_SKIP_COUNT` bigint NULL DEFAULT NULL,
`ROLLBACK_COUNT` bigint NULL DEFAULT NULL,
`EXIT_CODE` varchar(2500) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL,
`EXIT_MESSAGE` varchar(2500) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL,
`LAST_UPDATED` datetime(6) NULL DEFAULT NULL,
PRIMARY KEY (`STEP_EXECUTION_ID`) USING BTREE,
INDEX `JOB_EXEC_STEP_FK`(`JOB_EXECUTION_ID` ASC) USING BTREE,
CONSTRAINT `JOB_EXEC_STEP_FK` FOREIGN KEY (`JOB_EXECUTION_ID`) REFERENCES `BATCH_JOB_EXECUTION` (`JOB_EXECUTION_ID`) ON DELETE RESTRICT ON UPDATE RESTRICT
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = Dynamic;
-- ----------------------------
-- Table structure for BATCH_STEP_EXECUTION_CONTEXT
-- ----------------------------
DROP TABLE IF EXISTS `BATCH_STEP_EXECUTION_CONTEXT`;
CREATE TABLE `BATCH_STEP_EXECUTION_CONTEXT` (
`STEP_EXECUTION_ID` bigint NOT NULL,
`SHORT_CONTEXT` varchar(2500) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL,
`SERIALIZED_CONTEXT` text CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL,
PRIMARY KEY (`STEP_EXECUTION_ID`) USING BTREE,
CONSTRAINT `STEP_EXEC_CTX_FK` FOREIGN KEY (`STEP_EXECUTION_ID`) REFERENCES `BATCH_STEP_EXECUTION` (`STEP_EXECUTION_ID`) ON DELETE RESTRICT ON UPDATE RESTRICT
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = Dynamic;
-- ----------------------------
-- Table structure for BATCH_STEP_EXECUTION_SEQ
-- ----------------------------
DROP TABLE IF EXISTS `BATCH_STEP_EXECUTION_SEQ`;
CREATE TABLE `BATCH_STEP_EXECUTION_SEQ` (
`ID` bigint NOT NULL,
`UNIQUE_KEY` char(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL,
UNIQUE INDEX `UNIQUE_KEY_UN`(`UNIQUE_KEY` ASC) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = Dynamic;
SET FOREIGN_KEY_CHECKS = 1;
File diff suppressed because it is too large Load Diff
+814
View File
@@ -0,0 +1,814 @@
/*
Navicat Premium Dump SQL
Source Server : 新疆大佬环境
Source Server Type : MySQL
Source Server Version : 80400 (8.4.0)
Source Host : home.mcrm.vip:13308
Source Schema : xj_emergency
Target Server Type : MySQL
Target Server Version : 80400 (8.4.0)
File Encoding : 65001
Date: 11/07/2025 15:15:56
*/
SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;
-- ----------------------------
-- Table structure for aed
-- ----------------------------
DROP TABLE IF EXISTS `aed`;
CREATE TABLE `aed` (
`id` int NOT NULL AUTO_INCREMENT COMMENT '主键',
`name` varchar(100) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NOT NULL COMMENT '名称',
`longitude` decimal(10, 6) NULL DEFAULT NULL COMMENT '经度',
`latitude` decimal(10, 6) NULL DEFAULT NULL COMMENT '纬度',
`depart_code` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '部门编码',
`host_model` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '主机型号',
`host_serial_num` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '主机序列号',
`electrode_sheet_valid_time` date NULL DEFAULT NULL COMMENT '电极片有效期',
`router_model` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '路由器型号',
`router_serial_num` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '路由器序列号',
`battery_model` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '电池型号',
`battery_voltage` double(5, 2) NULL DEFAULT NULL COMMENT '电池电压',
`warranty_start_date` date NULL DEFAULT NULL COMMENT '质保开始时间',
`warranty_end_date` date NULL DEFAULT NULL COMMENT '质保结束时间',
`aed_img` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '设备图片 多个\",\"分隔',
`mfrs_name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '制造商名称',
`mfrs_mobile` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '制造商联系电话',
`Install_address` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '安装位置',
`install_address_img` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '位置图片 多个\",\"分隔',
`manage_user_id` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '管理人员id',
`manage_user_name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '管理人员',
`manage_user_mobile` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '管理人员电话',
`check_status` tinyint(1) NULL DEFAULT -1 COMMENT '自检查状态',
`electrode_sheet_status` tinyint(1) NULL DEFAULT -1 COMMENT '电极片状态',
`battery_status` tinyint(1) NULL DEFAULT -1 COMMENT '电池状态',
`router_status` tinyint(1) NULL DEFAULT -1 COMMENT '路由状态',
`manage_depart_code` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '管理部门code',
`charge_first` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '负责人1',
`charge_first_mobile` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '负责人1电话',
`charge_second` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '负责人2',
`charge_second_mobile` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '负责人2电话',
`annex` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '附件',
`video_handle` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '视频操作',
`handle_explain` text CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL COMMENT '操作说明',
`aed_annex_status` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '设备附件状态',
`install_time` date NULL DEFAULT NULL COMMENT '安装时间',
`cover_user_num` int NULL DEFAULT NULL COMMENT '覆盖人数',
`del_flag` tinyint(1) NOT NULL DEFAULT 0 COMMENT '删除状态(0-正常,1-已删除)',
`create_by` varchar(32) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT NULL COMMENT '创建人',
`create_time` datetime NULL DEFAULT NULL COMMENT '创建时间',
`update_by` varchar(32) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT NULL COMMENT '更新人',
`update_time` datetime NULL DEFAULT NULL COMMENT '更新时间',
`memo` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '覆盖人数',
PRIMARY KEY (`id`) USING BTREE,
UNIQUE INDEX `idx_uni_model`(`host_model` ASC, `host_serial_num` ASC) USING BTREE COMMENT '编号加序列号唯一'
) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci COMMENT = '应急资源表' ROW_FORMAT = Dynamic;
-- ----------------------------
-- Table structure for aed_latest
-- ----------------------------
DROP TABLE IF EXISTS `aed_latest`;
CREATE TABLE `aed_latest` (
`id` int NOT NULL AUTO_INCREMENT COMMENT '主键',
`aed_id` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT 'AED型号+序列号',
`aed_status` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '状态码',
`aed_model` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT 'AED型号',
`aed_no` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT 'AED序列号',
`pad_expiration` date NULL DEFAULT NULL COMMENT '电极片有效期',
`battery_power` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT 'AED剩余电量',
`aed_self_report` text CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL COMMENT 'AED自检报告',
`router_model` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '专用路由器型号',
`router_serial_no` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '专用路由器序列号',
`router_iccid` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '物联卡号',
`router_voltage` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '电压',
`router_bt` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '蓝牙自检结果',
`router_self_model` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '专用路由器通讯自检结果',
`router_file_system` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '专用路由器文件系统自检结果',
`router_self_rtc` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '专用路由器RTC自检结果',
`del_flag` tinyint(1) NOT NULL DEFAULT 0 COMMENT '删除状态(0-正常,1-已删除)',
`create_by` varchar(32) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT NULL COMMENT '创建人',
`create_time` datetime NULL DEFAULT NULL COMMENT '创建时间',
`update_by` varchar(32) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT NULL COMMENT '更新人',
`update_time` datetime NULL DEFAULT NULL COMMENT '更新时间',
`memo` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '备注',
PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_bin ROW_FORMAT = Dynamic;
-- ----------------------------
-- Table structure for aed_warn_info
-- ----------------------------
DROP TABLE IF EXISTS `aed_warn_info`;
CREATE TABLE `aed_warn_info` (
`id` int NOT NULL AUTO_INCREMENT COMMENT '主键',
`latest_id` int NULL DEFAULT NULL COMMENT 'aed id',
`aed_model` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT 'aed型号',
`aed_no` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT 'aed序列号',
`module` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '报警模块',
`type` char(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '报警类型',
`value` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '报警值',
`warn_desc` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '报警描述',
`warn_status` char(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL DEFAULT '0' COMMENT '报警状态(0:待处理 1:已解除)',
`warn_handle_info` text CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL COMMENT '告警处理操作信息',
`del_flag` tinyint(1) NOT NULL DEFAULT 0 COMMENT '删除状态(0-正常,1-已删除)',
`create_by` varchar(32) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT NULL COMMENT '创建人',
`create_time` datetime NULL DEFAULT NULL COMMENT '创建时间',
`update_by` varchar(32) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT NULL COMMENT '更新人',
`update_time` datetime NULL DEFAULT NULL COMMENT '更新时间',
`memo` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '备注',
PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_bin ROW_FORMAT = Dynamic;
-- ----------------------------
-- Table structure for emergency_center
-- ----------------------------
DROP TABLE IF EXISTS `emergency_center`;
CREATE TABLE `emergency_center` (
`id` varchar(36) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL COMMENT '主键',
`center_name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL COMMENT '中心名称',
`simple_name` char(4) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL COMMENT '中心简称',
`is_default_center` tinyint(1) NOT NULL DEFAULT 0 COMMENT '是否默认中心 0:否 1:是',
`longitude` decimal(10, 6) NOT NULL COMMENT '经度',
`latitude` decimal(10, 6) NOT NULL COMMENT '纬度',
`org_code` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL COMMENT '管理单位',
`address` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL COMMENT '详细地址',
`center_tel` varchar(40) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '中心电话',
`center_head_name` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '负责人',
`center_head_tel` varchar(40) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '负责人电话',
`duty_phone` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '值班电话',
`completion_time` date NULL DEFAULT NULL COMMENT '建成时间',
`commissioning_time` date NULL DEFAULT NULL COMMENT '投用日期',
`equipment_amount` decimal(10, 2) NULL DEFAULT NULL COMMENT '配备金额',
`service_scope` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL COMMENT '服务范围',
`screen_path` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '大屏路由',
`screen_title` varchar(155) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '大屏标题',
`create_by` varchar(30) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '创建人',
`create_time` datetime NULL DEFAULT NULL COMMENT '创建时间',
`update_time` datetime NULL DEFAULT NULL COMMENT '更新时间',
`update_by` varchar(30) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '更新人',
`status` char(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT '0' COMMENT '状态 0:开启 1:关闭',
`del_flag` tinyint NOT NULL DEFAULT 0 COMMENT '软删除:0.未删除,1.已删除',
`memo` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '备注',
PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_bin COMMENT = '应急中心列表' ROW_FORMAT = Dynamic;
-- ----------------------------
-- Table structure for emergency_center_admin
-- ----------------------------
DROP TABLE IF EXISTS `emergency_center_admin`;
CREATE TABLE `emergency_center_admin` (
`id` varchar(36) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL COMMENT '主键',
`user_id` varchar(36) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL COMMENT '人员id',
`username` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL COMMENT '冗余字段 账号',
`realname` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL COMMENT '冗余字段 真实姓名',
`center_id` varchar(36) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL COMMENT '中心id',
`admin_type` tinyint(1) NULL DEFAULT NULL COMMENT '管理员类型,0:大屏管理员,1:大屏账号',
`create_time` datetime NULL DEFAULT NULL COMMENT '创建时间',
`create_by` varchar(30) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '创建人',
`update_time` datetime NULL DEFAULT NULL COMMENT '更新时间',
`update_by` varchar(30) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '更新人',
`del_flag` tinyint NOT NULL DEFAULT 0 COMMENT '软删除:0.未删除,1.已删除',
`memo` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '备注',
PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_bin COMMENT = '管理员/大屏管理员表' ROW_FORMAT = Dynamic;
-- ----------------------------
-- Table structure for emergency_center_open_time
-- ----------------------------
DROP TABLE IF EXISTS `emergency_center_open_time`;
CREATE TABLE `emergency_center_open_time` (
`id` int NOT NULL AUTO_INCREMENT COMMENT '主键',
`center_id` varchar(36) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '中心id',
`open_time_start` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '开启时间',
`open_time_end` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '关闭时间',
`create_by` varchar(30) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '创建人',
`create_time` datetime NULL DEFAULT NULL COMMENT '创建时间',
`update_time` datetime NULL DEFAULT NULL COMMENT '更新时间',
`update_by` varchar(30) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '更新人',
`del_flag` tinyint NOT NULL DEFAULT 0 COMMENT '软删除:0.未删除,1.已删除',
`memo` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '备注',
PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 7 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_bin ROW_FORMAT = Dynamic;
-- ----------------------------
-- Table structure for emergency_center_resource
-- ----------------------------
DROP TABLE IF EXISTS `emergency_center_resource`;
CREATE TABLE `emergency_center_resource` (
`id` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL,
`emergency_center_id` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '应急中心id',
`medical_resource_id` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '医疗点id',
`del_flag` tinyint(1) NOT NULL DEFAULT 0 COMMENT '删除状态(0-正常,1-已删除)',
`create_by` varchar(32) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT NULL COMMENT '创建人',
`create_time` datetime NULL DEFAULT NULL COMMENT '创建时间',
`update_by` varchar(32) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT NULL COMMENT '更新人',
`update_time` datetime NULL DEFAULT NULL COMMENT '更新时间',
`memo` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '备注',
PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_bin ROW_FORMAT = Dynamic;
-- ----------------------------
-- Table structure for emergency_grouped
-- ----------------------------
DROP TABLE IF EXISTS `emergency_grouped`;
CREATE TABLE `emergency_grouped` (
`id` varchar(36) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL COMMENT '主键',
`seat_id` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL COMMENT '坐席工号',
`center_id` varchar(36) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL COMMENT '中心id',
`center_name` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '中心名称',
`seat_status` tinyint NOT NULL DEFAULT 0 COMMENT '坐席状态:\n0:未知\n1:忙碌\n2:小休\n3:正在通话\n4:离线\n5:空闲',
`create_time` datetime NULL DEFAULT NULL COMMENT '创建时间',
`create_by` varchar(30) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '创建人',
`update_time` datetime NULL DEFAULT NULL COMMENT '更新时间',
`update_by` varchar(30) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '更新人',
`del_flag` tinyint NOT NULL DEFAULT 0 COMMENT '软删除:0.未删除,1.已删除',
PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_bin COMMENT = '分组管理表' ROW_FORMAT = Dynamic;
-- ----------------------------
-- Table structure for emergency_health_room
-- ----------------------------
DROP TABLE IF EXISTS `emergency_health_room`;
CREATE TABLE `emergency_health_room` (
`id` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_persian_ci NOT NULL COMMENT '主键',
`name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '建设地点名称',
`org_code` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '单位code',
`org_name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '单位名称(冗余字段更新orgCode记得同步更新)',
`job_num` int NULL DEFAULT NULL COMMENT '在岗人数',
`run_time` int NULL DEFAULT NULL COMMENT '运转时间(分钟)',
`longitude` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '经度',
`latitude` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '纬度',
`status` tinyint(1) NOT NULL DEFAULT 1 COMMENT '状态(1-正常,2-冻结)',
`del_flag` tinyint(1) NOT NULL DEFAULT 0 COMMENT '删除状态(0-正常,1-已删除)',
`create_by` varchar(32) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT NULL COMMENT '创建人',
`create_time` datetime NULL DEFAULT NULL COMMENT '创建时间',
`update_by` varchar(32) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT NULL COMMENT '更新人',
`update_time` datetime NULL DEFAULT NULL COMMENT '更新时间',
`memo` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '备注',
PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = Dynamic;
-- ----------------------------
-- Table structure for emergency_new_schedules
-- ----------------------------
DROP TABLE IF EXISTS `emergency_new_schedules`;
CREATE TABLE `emergency_new_schedules` (
`id` varchar(36) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL COMMENT '主键',
`center_id` varchar(36) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL COMMENT '中心id',
`schedules_time` date NOT NULL COMMENT '排班时间',
`create_by` varchar(30) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '创建人',
`create_time` datetime NULL DEFAULT NULL COMMENT '创建时间',
`update_by` varchar(30) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '更新人',
`update_time` datetime NULL DEFAULT NULL COMMENT '更新时间',
`del_flag` tinyint NOT NULL DEFAULT 0 COMMENT '软删除:0.未删除,1.已删除',
PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_bin COMMENT = '排班表' ROW_FORMAT = Dynamic;
-- ----------------------------
-- Table structure for emergency_order
-- ----------------------------
DROP TABLE IF EXISTS `emergency_order`;
CREATE TABLE `emergency_order` (
`id` varchar(36) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL COMMENT '主键(应急单号)',
`is_fill` tinyint(1) NULL DEFAULT NULL COMMENT '是否补单 (0:否 1:是)',
`Initiator_type` char(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '发起类型(0:120 1: 应急就医 2:急救联动)',
`resource_id` varchar(36) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '应急资源id(医院 aed 医疗点)',
`info_desc` varchar(1000) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '救助信息描述',
`session_id` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT 'im会话id',
`session_now` tinyint(1) NULL DEFAULT 0 COMMENT '是否正在会话(0:否 1:是)',
`session_over_time` datetime NULL DEFAULT NULL COMMENT '会话结束时间',
`initiator_user_id` varchar(36) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '发起人id',
`initiator_user_name` varchar(36) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '发起人姓名',
`initiator_user_sex` varchar(36) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '发起人性别',
`initiator_user_mobile` varchar(36) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '发起人电话',
`initiator_user_id_card` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '发起人身份证号',
`initiator_user_depart` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '发起人部门code',
`initiator_user_avatar` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '发起人头像',
`initiator_longitude` decimal(10, 6) NULL DEFAULT NULL COMMENT '发起人经度',
`initiator_latitude` decimal(10, 6) NULL DEFAULT NULL COMMENT '发起人纬度',
`salvage_user_id` varchar(36) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '被救助人id',
`salvage_user_name` varchar(36) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '被救助人姓名',
`salvage_user_sex` varchar(36) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '被救助人性别',
`salvage_user_mobile` varchar(36) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '被救助人电话',
`salvage_user_id_card` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT '' COMMENT '救助人身份证号',
`salvage_user_depart` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '发起人部门code',
`salvage_user_avatar` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '救助人头像',
`operation_user_id` varchar(36) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '操作人员id',
`operation_user_name` varchar(36) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '操作人员姓名',
`operation_user_sex` varchar(36) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '操作人员性别',
`operation_user_mobile` varchar(36) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '操作人员电话',
`operation_user_avatar` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '操作人头像',
`major_user_id` varchar(36) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '专业人员id',
`major_user_name` varchar(36) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '专业人员姓名',
`major_user_sex` varchar(36) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '专业人员性别',
`major_user_mobile` varchar(36) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '专业人员电话',
`major_user_avatar` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '专业人头像',
`station_user_id` varchar(36) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '驻场人员id',
`station_user_name` varchar(36) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '驻场人员姓名',
`station_user_sex` varchar(36) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '驻场人员性别',
`station_user_mobile` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '驻场人员电话',
`station_user_depart` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '发起人部门code',
`station_user_avatar` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '驻场人头像',
`station_business` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '驻场人员派单业务',
`operation_response_time` datetime NULL DEFAULT NULL COMMENT '操作人员响应时间',
`operation_send_order_time` datetime NULL DEFAULT NULL COMMENT '操作人员派单时间',
`major_response_time` datetime NULL DEFAULT NULL COMMENT '专业人员响应时间',
`station_response_time` datetime NULL DEFAULT NULL COMMENT '驻场人员响应时间',
`station_rejection_time` datetime NULL DEFAULT NULL COMMENT '驻场人员拒单时间',
`major_salvage_opinion` varchar(1000) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '专业人员救助意见',
`center_id` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '应急中心id',
`order_over_time` datetime NULL DEFAULT NULL COMMENT '订单结束时间',
`send_order_hospital` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '派单医院',
`order_status` char(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL DEFAULT '0' COMMENT '应急单状态 0: 待处理 1:咨询中 2:已派单 3:待审核 4: 待就医 5: 已完成',
`is_dispatch` char(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT '0' COMMENT '派单状态 0:待处理 1:咨询中 2:待接单 3:驻场驳回 4:已接单 5: 已完成',
`detail_title` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '应急小结 标题',
`status` tinyint(1) NOT NULL DEFAULT 1 COMMENT '状态(1-正常,2-冻结)',
`del_flag` tinyint(1) NOT NULL DEFAULT 0 COMMENT '删除状态(0-正常,1-已删除)',
`create_by` varchar(32) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT NULL COMMENT '创建人',
`create_time` datetime NULL DEFAULT NULL COMMENT '创建时间',
`update_by` varchar(32) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT NULL COMMENT '更新人',
`update_time` datetime NULL DEFAULT NULL COMMENT '更新时间',
`memo` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '备注',
PRIMARY KEY (`id`) USING BTREE,
UNIQUE INDEX `idx_session`(`session_id` ASC) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_bin COMMENT = '应急单基础表' ROW_FORMAT = Dynamic;
-- ----------------------------
-- Table structure for emergency_order_detail
-- ----------------------------
DROP TABLE IF EXISTS `emergency_order_detail`;
CREATE TABLE `emergency_order_detail` (
`id` varchar(36) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL COMMENT '主键(应急单号)',
`order_score` double(5, 2) NULL DEFAULT NULL COMMENT '评分',
`order_evaluation` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '评价',
`order_evaluation_time` datetime NULL DEFAULT NULL COMMENT '用户评价时间',
`order_through` text CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL COMMENT '事件经过',
`order_result` text CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL COMMENT '事件结果',
`order_record` text CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL COMMENT '病情记录',
`imgs` varchar(1000) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '现场照片(使用,分隔)',
`amb_car_num` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '救护车车牌号',
`amb_car_arrive_time` datetime NULL DEFAULT NULL COMMENT '救护车车辆到达现场时间',
`amb_car_serve_time` datetime NULL DEFAULT NULL COMMENT '救护车车辆送达时间',
`amb_contact_user_id` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '救护车联系人id',
`amb_contact_user_name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '救护车联系人姓名',
`amb_contact_user_phone` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '救护车联系人电话',
`amb_follow_user_id` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '救护车跟车人id',
`amb_follow_user_name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '救护车跟车人姓名',
`amb_follow_user_phone` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '救护车跟车人电话',
`com_car_num` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '单位车牌号',
`com_car_arrive_time` datetime NULL DEFAULT NULL COMMENT '单位车辆派出时间',
`com_car_serve_time` datetime NULL DEFAULT NULL COMMENT '单位车辆送达时间',
`com_contact_user_id` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '单位车联系人id',
`com_contact_user_name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '单位车联系人姓名',
`com_contact_user_phone` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '单位车联系人电话',
`salvage_time` datetime NULL DEFAULT NULL COMMENT '救助时间',
`salvage_hospital` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '救助医院',
`salvage_depart` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '救助科室',
`salvage_doctor` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '救助医生',
`salvage_register_time` datetime NULL DEFAULT NULL COMMENT '挂号时间',
`salvage_coordinate` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '住院协调',
`salvage_operation` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '手术时间(文字描述)',
`status` tinyint(1) NOT NULL DEFAULT 1 COMMENT '状态(1-正常,2-冻结)',
`del_flag` tinyint(1) NOT NULL DEFAULT 0 COMMENT '删除状态(0-正常,1-已删除)',
`create_by` varchar(32) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT NULL COMMENT '创建人',
`create_time` datetime NULL DEFAULT NULL COMMENT '创建时间',
`update_by` varchar(32) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT NULL COMMENT '更新人',
`update_time` datetime NULL DEFAULT NULL COMMENT '更新时间',
`memo` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '备注',
PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_bin COMMENT = '应急单详情表' ROW_FORMAT = Dynamic;
-- ----------------------------
-- Table structure for emergency_order_intervene
-- ----------------------------
DROP TABLE IF EXISTS `emergency_order_intervene`;
CREATE TABLE `emergency_order_intervene` (
`id` varchar(36) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL COMMENT '主键(应急单号)',
`type` char(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '类型(0:图文 1:视频) ',
`is_fill` tinyint(1) NULL DEFAULT NULL COMMENT '是否补单 (0:否 1:是)',
`Initiator_type` char(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '发起类型(0:120 1: 应急就医)',
`resource_id` varchar(36) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '应急资源id(医院 aed 医疗点)',
`info_desc` varchar(1000) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '救助信息描述',
`session_id` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT 'im会话id',
`session_now` tinyint(1) NULL DEFAULT 0 COMMENT '是否正在会话(0:否 1:是)',
`session_over_time` datetime NULL DEFAULT NULL COMMENT '会话结束时间',
`initiator_user_id` varchar(36) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '发起人id',
`initiator_user_name` varchar(36) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '发起人姓名',
`initiator_user_sex` varchar(36) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '发起人性别',
`initiator_user_mobile` varchar(36) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '发起人电话',
`initiator_user_id_card` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '发起人身份证号',
`initiator_user_depart` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '发起人部门code',
`initiator_user_avatar` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '发起人头像',
`initiator_longitude` decimal(10, 6) NULL DEFAULT NULL COMMENT '发起人经度',
`initiator_latitude` decimal(10, 6) NULL DEFAULT NULL COMMENT '发起人纬度',
`salvage_user_id` varchar(36) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '被救助人id',
`salvage_user_name` varchar(36) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '被救助人姓名',
`salvage_user_sex` varchar(36) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '被救助人性别',
`salvage_user_mobile` varchar(36) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '被救助人电话',
`salvage_user_id_card` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT '' COMMENT '救助人身份证号',
`salvage_user_depart` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '发起人部门code',
`salvage_user_avatar` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '救助人头像',
`operation_user_id` varchar(36) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '操作人员id',
`operation_user_name` varchar(36) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '操作人员姓名',
`operation_user_sex` varchar(36) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '操作人员性别',
`operation_user_mobile` varchar(36) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '操作人员电话',
`operation_user_avatar` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '操作人头像',
`major_user_id` varchar(36) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '专业人员id',
`major_user_name` varchar(36) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '专业人员姓名',
`major_user_sex` varchar(36) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '专业人员性别',
`major_user_mobile` varchar(36) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '专业人员电话',
`major_user_avatar` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '专业人头像',
`station_user_id` varchar(36) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '驻场人员id',
`station_user_name` varchar(36) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '驻场人员姓名',
`station_user_sex` varchar(36) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '驻场人员性别',
`station_user_mobile` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '驻场人员电话',
`station_user_depart` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '发起人部门code',
`station_user_avatar` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '驻场人头像',
`station_business` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '驻场人员派单业务',
`operation_response_time` datetime NULL DEFAULT NULL COMMENT '操作人员响应时间',
`operation_send_order_time` datetime NULL DEFAULT NULL COMMENT '操作人员派单时间',
`major_response_time` datetime NULL DEFAULT NULL COMMENT '专业人员响应时间',
`station_response_time` datetime NULL DEFAULT NULL COMMENT '驻场人员响应时间',
`station_rejection_time` datetime NULL DEFAULT NULL COMMENT '驻场人员拒单时间',
`major_salvage_opinion` varchar(1000) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '专业人员救助意见',
`center_id` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '应急中心id',
`order_over_time` datetime NULL DEFAULT NULL COMMENT '订单结束时间',
`send_order_hospital` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '派单医院',
`order_status` char(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL DEFAULT '0' COMMENT '应急单状态 0: 待处理 1:咨询中 2:已派单 3:待审核 4: 待就医 5: 已完成',
`is_dispatch` char(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT '0' COMMENT '派单状态 0:待处理 1:咨询中 2:待接单 3:驻场驳回 4:已接单 5: 已完成',
`detail_title` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '应急小结 标题',
`status` tinyint(1) NOT NULL DEFAULT 1 COMMENT '状态(1-正常,2-冻结)',
`del_flag` tinyint(1) NOT NULL DEFAULT 0 COMMENT '删除状态(0-正常,1-已删除)',
`create_by` varchar(32) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT NULL COMMENT '创建人',
`create_time` datetime NULL DEFAULT NULL COMMENT '创建时间',
`update_by` varchar(32) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT NULL COMMENT '更新人',
`update_time` datetime NULL DEFAULT NULL COMMENT '更新时间',
`memo` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '备注',
PRIMARY KEY (`id`) USING BTREE,
UNIQUE INDEX `idx_session`(`session_id` ASC) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_bin COMMENT = '应急单基础表' ROW_FORMAT = Dynamic;
-- ----------------------------
-- Table structure for emergency_order_send_record
-- ----------------------------
DROP TABLE IF EXISTS `emergency_order_send_record`;
CREATE TABLE `emergency_order_send_record` (
`id` varchar(36) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL COMMENT '主键',
`order_id` varchar(36) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL COMMENT '应急单id',
`station_user_id` varchar(36) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL COMMENT '驻场人员id',
`station_user_name` varchar(36) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '驻场人员姓名',
`station_user_sex` varchar(36) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '驻场人员性别',
`station_user_depart` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '驻场人员部门:二级-三级(使用\',\'隔开)',
`accept` char(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL DEFAULT '0' COMMENT '是否接单(0:待处理 1:已接单 2:已拒单 3:已完成)',
`send_order_hospital` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '派单医院',
`station_business` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '派单业务',
`transfer_order_time` datetime NULL DEFAULT NULL COMMENT '转单时间',
`refuse_cause` varchar(1000) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '拒绝原因',
`status` tinyint(1) NOT NULL DEFAULT 1 COMMENT '状态(1-正常,2-冻结)',
`del_flag` tinyint(1) NOT NULL DEFAULT 0 COMMENT '删除状态(0-正常,1-已删除)',
`create_by` varchar(32) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT NULL COMMENT '创建人',
`create_time` datetime NULL DEFAULT NULL COMMENT '创建时间',
`update_by` varchar(32) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT NULL COMMENT '更新人',
`update_time` datetime NULL DEFAULT NULL COMMENT '更新时间',
`memo` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '备注',
PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_bin COMMENT = '派单记录表' ROW_FORMAT = Dynamic;
-- ----------------------------
-- Table structure for emergency_profession_user
-- ----------------------------
DROP TABLE IF EXISTS `emergency_profession_user`;
CREATE TABLE `emergency_profession_user` (
`user_id` varchar(36) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL COMMENT '用户id',
`username` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL COMMENT '账号 冗余字段 不可修改',
`realname` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL COMMENT '姓名 冗余字段',
`avatar` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '头像',
`type` varchar(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL COMMENT '人员类型 5:操作人员 6:专业人员',
`center_id` varchar(36) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL COMMENT '中心id',
`post` varchar(36) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '职称',
`school` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '毕业院校',
`edu` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '学历',
`good_at` varchar(1000) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '擅长',
`create_time` datetime NULL DEFAULT NULL COMMENT '创建时间',
`create_by` varchar(30) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '创建人',
`update_time` datetime NULL DEFAULT NULL COMMENT '更新时间',
`update_by` varchar(30) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '更新人',
`del_flag` tinyint NOT NULL DEFAULT 0 COMMENT '删除标记:0:否,1: 是',
`memo` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '备注',
PRIMARY KEY (`user_id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_bin ROW_FORMAT = Dynamic;
-- ----------------------------
-- Table structure for emergency_resource
-- ----------------------------
DROP TABLE IF EXISTS `emergency_resource`;
CREATE TABLE `emergency_resource` (
`id` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '主键',
`name` varchar(100) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NOT NULL COMMENT '资源名称',
`address` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '详细地址',
`mobile` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '联系电话',
`longitude` decimal(10, 6) NOT NULL COMMENT '经度',
`latitude` decimal(10, 6) NOT NULL COMMENT '纬度',
`type` varchar(10) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NOT NULL COMMENT '(1:油田医院 2:合作医院 3:医疗点 4:aed 5:救护车 6:护理员)',
`aidrange` text CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL COMMENT '救治范围',
`gd_id` varchar(32) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT NULL COMMENT '高德地图数据id',
`url` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT NULL COMMENT '网址',
`province` varchar(32) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT NULL COMMENT '省',
`city` varchar(32) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT NULL COMMENT '市',
`area` varchar(32) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT NULL COMMENT '区',
`level` varchar(32) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT NULL COMMENT '医院等级',
`img` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT NULL COMMENT '图片',
`resource_desc` varchar(1023) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT NULL COMMENT '简介',
`status` tinyint(1) NOT NULL DEFAULT 1 COMMENT '状态(1-正常,2-冻结)',
`del_flag` tinyint(1) NOT NULL DEFAULT 0 COMMENT '删除状态(0-正常,1-已删除)',
`create_by` varchar(32) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT NULL COMMENT '创建人',
`create_time` datetime NULL DEFAULT NULL COMMENT '创建时间',
`update_by` varchar(32) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT NULL COMMENT '更新人',
`update_time` datetime NULL DEFAULT NULL COMMENT '更新时间',
`memo` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '备注',
PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci COMMENT = '应急资源表' ROW_FORMAT = Dynamic;
-- ----------------------------
-- Table structure for emergency_schedule_custom
-- ----------------------------
DROP TABLE IF EXISTS `emergency_schedule_custom`;
CREATE TABLE `emergency_schedule_custom` (
`id` varchar(36) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL COMMENT '主键',
`schedule_time` date NOT NULL COMMENT '排班时间',
`type` char(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL COMMENT '类型(0:上午 1:下午)',
`user_type` char(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '人员类型(0:操作人员 1: 专业人员)',
`user_id` varchar(36) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '人员id',
`user_name` varchar(36) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '人员姓名',
`user_sex` varchar(36) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '人员性别',
`status` tinyint(1) NOT NULL DEFAULT 1 COMMENT '状态(1-正常,2-冻结)',
`del_flag` tinyint(1) NOT NULL DEFAULT 0 COMMENT '删除状态(0-正常,1-已删除)',
`create_by` varchar(32) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT NULL COMMENT '创建人',
`create_time` datetime NULL DEFAULT NULL COMMENT '创建时间',
`update_by` varchar(32) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT NULL COMMENT '更新人',
`update_time` datetime NULL DEFAULT NULL COMMENT '更新时间',
`memo` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '备注',
PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_bin COMMENT = '自定义排班表' ROW_FORMAT = Dynamic;
-- ----------------------------
-- Table structure for emergency_schedule_default
-- ----------------------------
DROP TABLE IF EXISTS `emergency_schedule_default`;
CREATE TABLE `emergency_schedule_default` (
`id` varchar(36) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL COMMENT '主键(应急单号)',
`week` int NULL DEFAULT NULL COMMENT '周几',
`type` char(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '类型(0:上午 1:下午)',
`user_type` char(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '人员类型(0:操作人员 1: 专业人员)',
`user_id` varchar(36) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '人员id',
`user_name` varchar(36) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '人员姓名',
`user_sex` varchar(36) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '人员性别',
`status` tinyint(1) NOT NULL DEFAULT 1 COMMENT '状态(1-正常,2-冻结)',
`del_flag` tinyint(1) NOT NULL DEFAULT 0 COMMENT '删除状态(0-正常,1-已删除)',
`create_by` varchar(32) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT NULL COMMENT '创建人',
`create_time` datetime NULL DEFAULT NULL COMMENT '创建时间',
`update_by` varchar(32) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT NULL COMMENT '更新人',
`update_time` datetime NULL DEFAULT NULL COMMENT '更新时间',
`memo` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '备注',
PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_bin COMMENT = '默认排班表' ROW_FORMAT = Dynamic;
-- ----------------------------
-- Table structure for emergency_schedule_record
-- ----------------------------
DROP TABLE IF EXISTS `emergency_schedule_record`;
CREATE TABLE `emergency_schedule_record` (
`id` varchar(36) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL COMMENT '主键',
`schedule_time` date NOT NULL COMMENT '排班时间',
`type` char(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL COMMENT '类型(0:上午 1:下午)',
`user_type` char(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '人员类型(0:操作人员 1: 专业人员)',
`user_id` varchar(36) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '人员id',
`user_name` varchar(36) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '人员姓名',
`user_sex` varchar(36) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '人员性别',
`status` tinyint(1) NOT NULL DEFAULT 1 COMMENT '状态(1-正常,2-冻结)',
`del_flag` tinyint(1) NOT NULL DEFAULT 0 COMMENT '删除状态(0-正常,1-已删除)',
`create_by` varchar(32) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT NULL COMMENT '创建人',
`create_time` datetime NULL DEFAULT NULL COMMENT '创建时间',
`update_by` varchar(32) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT NULL COMMENT '更新人',
`update_time` datetime NULL DEFAULT NULL COMMENT '更新时间',
`memo` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '备注',
PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_bin COMMENT = '自定义排班表' ROW_FORMAT = Dynamic;
-- ----------------------------
-- Table structure for emergency_schedules_new_item
-- ----------------------------
DROP TABLE IF EXISTS `emergency_schedules_new_item`;
CREATE TABLE `emergency_schedules_new_item` (
`id` varchar(36) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL COMMENT '主键',
`schedules_id` varchar(36) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '排班计划id',
`user_type` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '人员类型(0:操作人员 1:专业人员)',
`user_id` varchar(36) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '人员Id',
`user_name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '人员姓名',
PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_bin COMMENT = '排班分表' ROW_FORMAT = Dynamic;
-- ----------------------------
-- Table structure for emergency_serious_disease
-- ----------------------------
DROP TABLE IF EXISTS `emergency_serious_disease`;
CREATE TABLE `emergency_serious_disease` (
`id` varchar(32) CHARACTER SET utf32 COLLATE utf32_general_ci NOT NULL COMMENT '大病就医录入',
`is_fill` tinyint(1) NULL DEFAULT NULL COMMENT '是否补单',
`user_id` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '就医人员',
`hospital_id` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '医院',
`medical_card_no` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '就诊卡号',
`register_category` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '挂号类别 ',
`reservation_time` datetime NULL DEFAULT NULL COMMENT '驻场人员预约到的时间',
`desire_time` datetime NULL DEFAULT NULL COMMENT '患者填写的期望预约到的时间',
`reservation_office` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '预约科室',
`reservation_doctor` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '患者预约医生',
`disease_describe` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '病情描述',
`special_requirements` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '特殊要求',
`sex` char(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '性别',
`realname` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '真实姓名',
`station_user_id` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '驻场人员',
`reservation_no` varchar(30) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '预约号',
`id_no` varchar(30) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '身份证号',
`tel_phone` varchar(11) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '手机号',
`age` int NULL DEFAULT NULL COMMENT '年龄',
`del_flag` tinyint(1) NOT NULL DEFAULT 0 COMMENT '删除状态(0-正常,1-已删除)',
`state` tinyint(1) NULL DEFAULT NULL COMMENT '状态 1未派单 2已派单 3已接单 4已预约 5已完成 6操作人员驳回 7驻场人员驳回 8 超时未接单',
`status` tinyint(1) NOT NULL DEFAULT 1 COMMENT '状态(1-正常,2-冻结)',
`operator_id` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '操作人员',
`center_id` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '应急中心id',
`create_by` varchar(32) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT NULL COMMENT '创建人',
`create_time` datetime NULL DEFAULT NULL COMMENT '创建时间',
`update_by` varchar(32) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT NULL COMMENT '更新人',
`update_time` datetime NULL DEFAULT NULL COMMENT '更新时间',
`memo` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '备注',
`rejection_reason` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '操作人员驳回原因',
`rejection_time` datetime NULL DEFAULT NULL COMMENT '操作人员驳回时间',
`send_order_time` datetime NULL DEFAULT NULL COMMENT '派单时间',
`user_depart` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '部门',
`station_rejection_reason` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '驻场人员驳回原因',
`station_rejection_time` datetime NULL DEFAULT NULL COMMENT '驻场人员驳回时间',
`accept_station_time` datetime NULL DEFAULT NULL COMMENT '驻场人员接单时间',
`desire_finish_time` datetime NULL DEFAULT NULL COMMENT '预约完成时间',
`hospital_name` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '医院名称',
`station_user_name` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '驻场人员姓名',
PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_bin COMMENT = '大病就医' ROW_FORMAT = Dynamic;
-- ----------------------------
-- Table structure for sys_notify_sms_phone
-- ----------------------------
DROP TABLE IF EXISTS `sys_notify_sms_phone`;
CREATE TABLE `sys_notify_sms_phone` (
`id` varchar(36) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '主键',
`phone_numbers` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '短信通知手机号',
`valid_status` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '有效标志',
`busi_type` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '业务类型',
`remark` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '备注',
`create_date` datetime NULL DEFAULT NULL COMMENT '创建日期',
`update_date` datetime NULL DEFAULT NULL COMMENT '更新日期',
PRIMARY KEY (`id`) USING BTREE,
INDEX `valid_status`(`valid_status` ASC) USING BTREE,
INDEX `busi_type`(`busi_type` ASC) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = Dynamic;
-- ----------------------------
-- Table structure for tbl_qimo_notice
-- ----------------------------
DROP TABLE IF EXISTS `tbl_qimo_notice`;
CREATE TABLE `tbl_qimo_notice` (
`id` varchar(200) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NOT NULL COMMENT '主键',
`call_no` varchar(200) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT NULL COMMENT '主叫号码',
`Called_No` varchar(200) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT NULL COMMENT '被叫号码',
`Call_Sheet_ID` varchar(200) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT NULL COMMENT '通话记录ID',
`ref_Call_SheetId` varchar(200) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT NULL COMMENT '转接前通话的CallSheetID',
`Call_ID` varchar(200) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT NULL COMMENT '通话ID',
`Call_Type` varchar(200) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT NULL COMMENT '通话类型',
`Ring` datetime NULL DEFAULT NULL COMMENT '通话振铃时间',
`Ringing_Date` datetime NULL DEFAULT NULL COMMENT '被叫振铃开始时间',
`Ringing_Timestamp` varchar(50) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT NULL,
`Begin` datetime NULL DEFAULT NULL COMMENT '通话接通时间',
`End` datetime NULL DEFAULT NULL COMMENT '通话结束时间',
`Queue_Time` datetime NULL DEFAULT NULL COMMENT '来电进入技能组时间',
`Agent` varchar(200) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT NULL COMMENT '处理坐席的工号',
`Exten` varchar(200) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT NULL COMMENT '处理坐席的工号',
`Agent_Name` varchar(200) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT NULL COMMENT '处理坐席的姓名',
`Queue` varchar(200) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT NULL COMMENT '通话进入的技能组名称',
`State` varchar(200) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT NULL COMMENT '接听状态',
`Call_State` varchar(200) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT NULL COMMENT '事件状态',
`Action_ID` varchar(200) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT NULL COMMENT '通过接口调用时',
`Webcall_Action_ID` varchar(200) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT NULL COMMENT '通过调用webcall接口',
`Record_File` varchar(200) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT NULL COMMENT '通话录音文件名',
`File_Server` varchar(200) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT NULL COMMENT '录音服务器',
`Province` varchar(200) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT NULL COMMENT '目标号码的省',
`District` varchar(200) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT NULL COMMENT '目标号码的市',
`IVRKEY` varchar(200) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT NULL COMMENT '通话在系统中选择的按键菜单',
`Account_Id` varchar(200) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT NULL COMMENT '账户编号字段',
`Account_Name` varchar(200) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT NULL COMMENT '账户名称字段',
`create_date` datetime NULL DEFAULT NULL COMMENT '创建时间',
`create_by` varchar(60) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT NULL COMMENT '创建人',
`receive_user_id` varchar(32) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT NULL COMMENT '操作人员ID',
`is_read` varchar(32) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT NULL COMMENT '是否已读',
PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb3 COLLATE = utf8mb3_general_ci COMMENT = '容联七陌通知信息' ROW_FORMAT = Dynamic;
-- ----------------------------
-- Table structure for tbl_user_help
-- ----------------------------
DROP TABLE IF EXISTS `tbl_user_help`;
CREATE TABLE `tbl_user_help` (
`id` varchar(60) CHARACTER SET utf8mb4 COLLATE utf8mb4_persian_ci NOT NULL COMMENT '主键',
`user_id` varchar(60) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT NULL COMMENT '用户ID',
`lat` decimal(20, 10) NULL DEFAULT NULL COMMENT '求助纬度',
`lon` decimal(20, 10) NULL DEFAULT NULL COMMENT '求助经度',
`type` varchar(10) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT NULL COMMENT '求助方式',
`status` varchar(10) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT NULL COMMENT '受理状态',
`help_time` datetime NULL DEFAULT NULL COMMENT '求助时间',
`voice_url` varchar(100) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT NULL COMMENT '求助录音',
`treat_type` varchar(10) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT NULL COMMENT '就医类型',
`start_time` datetime NULL DEFAULT NULL COMMENT '咨询开始时间',
`end_time` datetime NULL DEFAULT NULL COMMENT '咨询结束时间',
`score` int NULL DEFAULT NULL COMMENT '用户评分',
`score_time` datetime NULL DEFAULT NULL COMMENT '评分时间',
`receive_user_id` varchar(60) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT NULL COMMENT '受理人',
`score_status` varchar(20) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT NULL COMMENT '是否评分',
`evaluate` varchar(1000) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT NULL COMMENT '评价',
`update_date` datetime NULL DEFAULT NULL COMMENT '接受时间',
`out_mobile` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT NULL COMMENT '外部电话呼入',
`screen_status` varchar(1) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT '1' COMMENT '大屏弹出状态',
`screen_type` varchar(5) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT NULL COMMENT '大屏类型,1西安2银川',
`sex` varchar(1) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT NULL COMMENT '1:女 2:男',
`center_id` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '应急中心id',
PRIMARY KEY (`id`) USING BTREE,
INDEX `user_id`(`user_id` ASC) USING BTREE,
INDEX `receive_user_id`(`receive_user_id` ASC) USING BTREE,
INDEX `status`(`status` ASC) USING BTREE,
INDEX `help_time`(`help_time` ASC) USING BTREE,
INDEX `index_screen_type`(`screen_type` ASC) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb3 COLLATE = utf8mb3_general_ci COMMENT = '用户求助信息' ROW_FORMAT = Dynamic;
-- ----------------------------
-- Table structure for tbl_video_mac
-- ----------------------------
DROP TABLE IF EXISTS `tbl_video_mac`;
CREATE TABLE `tbl_video_mac` (
`id` varchar(60) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NOT NULL COMMENT '主键',
`video_name` varchar(60) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT NULL COMMENT '采集点名称',
`video_mac` varchar(60) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT NULL COMMENT '采集点MAC地址',
`order_no` varchar(60) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT NULL COMMENT '排序',
`create_date` datetime NULL DEFAULT NULL COMMENT '创建时间',
`create_by` varchar(60) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT NULL COMMENT '创建人',
`update_date` datetime NULL DEFAULT NULL COMMENT '修改时间',
`update_by` varchar(60) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT NULL COMMENT '修改人',
`video_des` text CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL COMMENT '采集点描述',
`is_default` varchar(32) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT NULL COMMENT '是否默认',
PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb3 COLLATE = utf8mb3_general_ci COMMENT = '摄像头及MAC地址映射信息' ROW_FORMAT = Dynamic;
-- ----------------------------
-- Table structure for zy_ambulance_data
-- ----------------------------
DROP TABLE IF EXISTS `zy_ambulance_data`;
CREATE TABLE `zy_ambulance_data` (
`id` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL COMMENT '主键ID',
`patient_id` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '患者ID',
`patient_name` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '患者姓名',
`gender` int NULL DEFAULT NULL COMMENT '性别 0-未知 1-男 2-女',
`id_card_type` int NULL DEFAULT NULL COMMENT '证件类型 1-身份证',
`id_card_number` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '证件号码',
`user_id` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '用户ID(如果可以匹配到)',
`org_code` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '部门Code(如果可以匹配到)',
`age_type` int NULL DEFAULT NULL COMMENT '年龄类型 1-年 2-月 3-天',
`age` int NULL DEFAULT NULL COMMENT '年龄',
`phone` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '联系电话',
`mpds_category_id` int NULL DEFAULT NULL COMMENT '病人MPDS类型 0-默认值 1-创伤',
`mpds_data` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '创伤类型病人MPDS症状小类 多个小类逗号隔开 1-交通、运输事故 3-高处坠落 4,-暴力袭击/性侵犯 6,-动物咬伤/攻击 7-烧伤(烫伤)/爆炸伤 8,-锐器刺伤/枪伤/贯通伤 9,-触电/雷击伤 10,-创伤(其他创伤) 35,-冬季运动损伤 36-机械损伤',
`attack_address` varchar(512) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '发病地点',
`injury_level` int NULL DEFAULT NULL COMMENT '病情判断 0-默认 1-濒危 2-危重 3-急症 4-非急症 5-死亡',
`start_time` datetime NULL DEFAULT NULL COMMENT '救护车出发时间',
`arrive_scene_time` datetime NULL DEFAULT NULL COMMENT '到达现场时间',
`leave_scene_time` datetime NULL DEFAULT NULL COMMENT '离开现场时间',
`arrive_hospital_time` datetime NULL DEFAULT NULL COMMENT '到达医院时间',
`early_warning_time` datetime NULL DEFAULT NULL COMMENT '院前预警时间',
`diastolic_pressure` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '舒张压',
`systolic_pressure` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '收缩压',
`heart_rate` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '心率',
`breathing_rate` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '呼吸率',
`temperature` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '体温',
`blood_sugar` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '血糖',
`blood_oxygen_saturation` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '血氧饱和度',
`pulse` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '脉搏',
`create_time` datetime NULL DEFAULT NULL COMMENT '创建时间',
`create_by` varchar(30) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '创建人',
`update_time` datetime NULL DEFAULT NULL COMMENT '更新时间',
`update_by` varchar(30) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '更新人',
`del_flag` tinyint NOT NULL DEFAULT 0 COMMENT '软删除:0.未删除,1.已删除',
`memo` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '备注',
PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_bin COMMENT = '紫云救护车数据表' ROW_FORMAT = Dynamic;
SET FOREIGN_KEY_CHECKS = 1;
+23964
View File
File diff suppressed because one or more lines are too long
+917
View File
@@ -0,0 +1,917 @@
/*
Navicat Premium Dump SQL
Source Server : 新疆大佬环境
Source Server Type : MySQL
Source Server Version : 80400 (8.4.0)
Source Host : home.mcrm.vip:13308
Source Schema : xj_watch
Target Server Type : MySQL
Target Server Version : 80400 (8.4.0)
File Encoding : 65001
Date: 11/07/2025 15:16:23
*/
SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;
-- ----------------------------
-- Table structure for archives_body_type
-- ----------------------------
DROP TABLE IF EXISTS `archives_body_type`;
CREATE TABLE `archives_body_type` (
`id` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '主键',
`user_id` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '用户id',
`type` int NOT NULL COMMENT '类型(1:心率 5:体温)',
`data_source` int NOT NULL COMMENT '来源(字典data_source_dict 1:体检报告 2:员工自行维护 3:管理员后台维护 4:体重秤测量结果 5:手表监测数据)',
`data_value` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '数据值',
`create_by` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '创建人登录名称',
`create_date` datetime NULL DEFAULT NULL COMMENT '创建日期',
PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci COMMENT = '档案-基本体格' ROW_FORMAT = Dynamic;
-- ----------------------------
-- Table structure for dept_statistic_data
-- ----------------------------
DROP TABLE IF EXISTS `dept_statistic_data`;
CREATE TABLE `dept_statistic_data` (
`id` bigint NOT NULL COMMENT '主键',
`org_code` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '二级部门',
`org_code_leaf` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '三级部门',
`user_count` int NULL DEFAULT NULL COMMENT '员工人数',
`device_num` int NULL DEFAULT NULL COMMENT '入库设备数',
`allot_device_num` int NULL DEFAULT NULL COMMENT '分配设备数',
`seven_day_num` int NULL DEFAULT NULL COMMENT '七日活跃次数',
`fourteen_day_num` int NULL DEFAULT NULL COMMENT '十四日活跃次数',
`heart_rate_error_num` int NULL DEFAULT NULL COMMENT '心率异常数',
`spo_error_num` int NULL DEFAULT NULL COMMENT '血氧异常数',
`stress_error_num` int NULL DEFAULT NULL COMMENT '压力异常数',
`temp_error_num` int NULL DEFAULT NULL COMMENT '睡眠异常数',
`data_date` date NULL DEFAULT NULL COMMENT '数据日期',
`thirty_day_num` int NULL DEFAULT NULL COMMENT '三十日活跃次数',
`year_day_num` int NULL DEFAULT NULL COMMENT '近一年活跃次数',
PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = Dynamic;
-- ----------------------------
-- Table structure for user_record_sports_day
-- ----------------------------
DROP TABLE IF EXISTS `user_record_sports_day`;
CREATE TABLE `user_record_sports_day` (
`id` bigint NOT NULL COMMENT '主键',
`user_id` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '用户ID',
`total_sports_time` double NULL DEFAULT 0 COMMENT '各项运动总时长(分钟)',
`total_consume_energy` double NULL DEFAULT 0 COMMENT '各项运动总消耗(千卡)',
`record_date` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '记录日期',
`walk_sum` int NULL DEFAULT NULL COMMENT '总步数',
`walk_time` double NULL DEFAULT NULL COMMENT '自记步行总时长',
`walk_energy` double NULL DEFAULT NULL COMMENT '步行总消耗',
PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci COMMENT = '用户自主记录运动数据日汇总表' ROW_FORMAT = Dynamic;
-- ----------------------------
-- Table structure for user_record_sports_info
-- ----------------------------
DROP TABLE IF EXISTS `user_record_sports_info`;
CREATE TABLE `user_record_sports_info` (
`id` bigint NOT NULL COMMENT 'ID',
`user_id` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '用户ID',
`sports_code` int NULL DEFAULT NULL COMMENT '运动类型编码',
`sports` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '运动类型',
`sports_time` double NULL DEFAULT 0 COMMENT '本次运动时长(分钟)',
`consume_energy` double NULL DEFAULT 0 COMMENT '本次运消耗(千卡)',
`record_date` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '记录日期',
`create_time` datetime NULL DEFAULT NULL COMMENT '添加时间',
PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci COMMENT = '用户自主记录运动数据明细表' ROW_FORMAT = Dynamic;
-- ----------------------------
-- Table structure for user_we_chat_sports_day
-- ----------------------------
DROP TABLE IF EXISTS `user_we_chat_sports_day`;
CREATE TABLE `user_we_chat_sports_day` (
`id` bigint NOT NULL COMMENT 'ID',
`user_id` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '用户ID',
`step` int NULL DEFAULT NULL COMMENT '步数',
`step_date` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '运动日期(yyyy-MM-dd)',
`step_time` int NULL DEFAULT NULL COMMENT '步行时长(单位:分钟)',
`energy` int NULL DEFAULT NULL COMMENT '步行消耗热量(千卡)',
`uni_id` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '用户小程序uniID',
`create_time` datetime NULL DEFAULT NULL COMMENT '创建时间',
PRIMARY KEY (`id`) USING BTREE,
UNIQUE INDEX `unique_user_date`(`user_id` ASC, `step_date` ASC) USING BTREE,
INDEX `index_user_id`(`user_id` ASC) USING BTREE,
INDEX `index_step_date`(`step_date` ASC) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = Dynamic;
-- ----------------------------
-- Table structure for watch_abnormal_record
-- ----------------------------
DROP TABLE IF EXISTS `watch_abnormal_record`;
CREATE TABLE `watch_abnormal_record` (
`id` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL,
`type` tinyint(1) NULL DEFAULT NULL COMMENT '心率1 血氧2 体温3 压力4 ',
`max_id` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL,
`user_id` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '用户id',
PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = Dynamic;
-- ----------------------------
-- Table structure for watch_bind_his
-- ----------------------------
DROP TABLE IF EXISTS `watch_bind_his`;
CREATE TABLE `watch_bind_his` (
`id` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '主键',
`create_by` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '创建人登录名称',
`create_date` datetime NULL DEFAULT NULL COMMENT '创建日期',
`update_by` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '更新人登录名称',
`update_date` datetime NULL DEFAULT NULL COMMENT '更新日期',
`watch_no` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '手表编码',
`bind_user_id` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '绑定用户',
`bind_date` date NULL DEFAULT NULL COMMENT '绑定日期',
`bind_end_date` date NULL DEFAULT NULL COMMENT '绑定结束日期',
`dept_id` varchar(60) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '当前归属部门',
`org_code` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '部门编码',
PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = Dynamic;
-- ----------------------------
-- Table structure for watch_bind_his_bak
-- ----------------------------
DROP TABLE IF EXISTS `watch_bind_his_bak`;
CREATE TABLE `watch_bind_his_bak` (
`id` varchar(36) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '主键',
`create_by` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '创建人登录名称',
`create_date` datetime NULL DEFAULT NULL COMMENT '创建日期',
`update_by` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '更新人登录名称',
`update_date` datetime NULL DEFAULT NULL COMMENT '更新日期',
`watch_no` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '手表编码',
`bind_user_id` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '绑定用户',
`bind_date` date NULL DEFAULT NULL COMMENT '绑定日期',
`bind_end_date` date NULL DEFAULT NULL COMMENT '绑定结束日期',
`dept_id` varchar(60) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '当前归属部门',
`org_code` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '部门编码',
PRIMARY KEY (`id`) USING BTREE,
INDEX `uni_org_code`(`org_code` ASC) USING BTREE COMMENT '部门编码'
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = Dynamic;
-- ----------------------------
-- Table structure for watch_bind_his_copy1
-- ----------------------------
DROP TABLE IF EXISTS `watch_bind_his_copy1`;
CREATE TABLE `watch_bind_his_copy1` (
`id` varchar(36) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '主键',
`create_by` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '创建人登录名称',
`create_date` datetime NULL DEFAULT NULL COMMENT '创建日期',
`update_by` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '更新人登录名称',
`update_date` datetime NULL DEFAULT NULL COMMENT '更新日期',
`watch_no` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '手表编码',
`bind_user_id` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '绑定用户',
`bind_date` date NULL DEFAULT NULL COMMENT '绑定日期',
`bind_end_date` date NULL DEFAULT NULL COMMENT '绑定结束日期',
`dept_id` varchar(60) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '当前归属部门',
PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = Dynamic;
-- ----------------------------
-- Table structure for watch_bind_his_copy2
-- ----------------------------
DROP TABLE IF EXISTS `watch_bind_his_copy2`;
CREATE TABLE `watch_bind_his_copy2` (
`id` varchar(36) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '主键',
`create_by` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '创建人登录名称',
`create_date` datetime NULL DEFAULT NULL COMMENT '创建日期',
`update_by` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '更新人登录名称',
`update_date` datetime NULL DEFAULT NULL COMMENT '更新日期',
`watch_no` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '手表编码',
`bind_user_id` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '绑定用户',
`bind_date` date NULL DEFAULT NULL COMMENT '绑定日期',
`bind_end_date` date NULL DEFAULT NULL COMMENT '绑定结束日期',
`dept_id` varchar(60) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '当前归属部门',
`org_code` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '部门编码',
PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = Dynamic;
-- ----------------------------
-- Table structure for watch_data
-- ----------------------------
DROP TABLE IF EXISTS `watch_data`;
CREATE TABLE `watch_data` (
`id` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '主键',
`userid` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '用户ID',
`username` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '用户名',
`orgcode` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '机构编码',
`unit` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '单位',
`department` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '部门',
`watch_no` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '手表编码',
`type` int NULL DEFAULT NULL COMMENT '监测类型 1:心率 2血氧 3压力 4睡眠 5 体温 6 锻炼 7 步数\'',
`data_value` double(10, 2) NULL DEFAULT NULL COMMENT '值',
`last_update_time` date NULL DEFAULT NULL COMMENT '最后更新时间',
PRIMARY KEY (`id`) USING BTREE,
INDEX `idx_user_id`(`userid` ASC) USING BTREE,
INDEX `idx_last_update_time`(`last_update_time` ASC) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = Dynamic;
-- ----------------------------
-- Table structure for watch_data_calorie
-- ----------------------------
DROP TABLE IF EXISTS `watch_data_calorie`;
CREATE TABLE `watch_data_calorie` (
`id` varchar(36) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '主键',
`watch_no` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '手表编码',
`data_value` bigint NULL DEFAULT NULL COMMENT '数据值',
`sdc_date` date NULL DEFAULT NULL COMMENT '产生日期',
`bind_user_id` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '绑定用户',
`data_date` date NULL DEFAULT NULL COMMENT '绑定日期',
`max_id` varchar(60) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '数据中心最大ID',
PRIMARY KEY (`id`) USING BTREE,
INDEX `watch_no`(`watch_no` ASC) USING BTREE,
INDEX `bind_user_id`(`bind_user_id` ASC) USING BTREE,
INDEX `data_date`(`data_date` ASC) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = Dynamic;
-- ----------------------------
-- Table structure for watch_data_day
-- ----------------------------
DROP TABLE IF EXISTS `watch_data_day`;
CREATE TABLE `watch_data_day` (
`id` bigint NOT NULL COMMENT '主键',
`user_id` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '用户id',
`watch_no` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '手表编号',
`data_date` datetime NULL DEFAULT NULL COMMENT '数据日期',
`max` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '最大值',
`min` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '最小值',
`avg` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '平均值',
PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = Dynamic;
-- ----------------------------
-- Table structure for watch_data_detail
-- ----------------------------
DROP TABLE IF EXISTS `watch_data_detail`;
CREATE TABLE `watch_data_detail` (
`id` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '主键',
`userid` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '用户ID',
`username` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '用户名',
`orgcode` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '机构编码',
`unit` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '单位',
`department` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '部门',
`watch_no` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '手表编码',
`type` int NULL DEFAULT NULL COMMENT '监测类型 1:心率 2血氧 3压力 4睡眠 5 体温 6 锻炼 7 步数',
`last_update_time` datetime NULL DEFAULT NULL COMMENT '最后更新时间',
PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = Dynamic;
-- ----------------------------
-- Table structure for watch_data_distance
-- ----------------------------
DROP TABLE IF EXISTS `watch_data_distance`;
CREATE TABLE `watch_data_distance` (
`id` varchar(36) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '主键',
`watch_no` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '手表编码',
`data_value` bigint NULL DEFAULT NULL COMMENT '数据值',
`sdc_date` date NULL DEFAULT NULL COMMENT '产生日期',
`bind_user_id` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '绑定用户',
`data_date` date NULL DEFAULT NULL COMMENT '绑定日期',
`max_id` varchar(60) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '数据中心最大ID',
PRIMARY KEY (`id`) USING BTREE,
INDEX `watch_no`(`watch_no` ASC) USING BTREE,
INDEX `bind_user_id`(`bind_user_id` ASC) USING BTREE,
INDEX `data_date`(`data_date` ASC) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = Dynamic;
-- ----------------------------
-- Table structure for watch_data_ecg
-- ----------------------------
DROP TABLE IF EXISTS `watch_data_ecg`;
CREATE TABLE `watch_data_ecg` (
`id` varchar(36) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL,
`watch_no` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '手表编码',
`data_date` date NULL DEFAULT NULL COMMENT '数据日期',
`ecg_start_time` bigint NULL DEFAULT NULL COMMENT '测量开始时间戳',
`ecg_end_time` bigint NULL DEFAULT NULL COMMENT '测量结束时间戳',
`ecg_arrhy_avg_rate` int NULL DEFAULT NULL COMMENT '平均心率',
`ecg_arrhy_type` int NULL DEFAULT NULL COMMENT '算法测量结果',
`ecg_user_symptom` int NULL DEFAULT NULL COMMENT '用户自己选择的症状',
`ecg_data_points` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '原始数据文件地址',
`ecg_data_points_count` int NULL DEFAULT NULL COMMENT '原始数据点数量',
`ecg_arrhy_type_dict` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '算法测量结果(字典)',
`ecg_user_symptom_dict` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '用户自己选择的症状(字典)',
`sync_time` datetime NULL DEFAULT NULL COMMENT '同步时间',
`bind_user_id` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '绑定用户',
`max_id` varchar(60) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '数据中心最大ID',
PRIMARY KEY (`id`) USING BTREE,
UNIQUE INDEX `watch_ecg_index`(`watch_no` ASC, `data_date` ASC, `ecg_start_time` ASC) USING BTREE,
INDEX `data_date`(`data_date` ASC) USING BTREE,
INDEX `watch_no_2`(`watch_no` ASC) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_bin COMMENT = '手表心电数据' ROW_FORMAT = Dynamic;
-- ----------------------------
-- Table structure for watch_data_exercise
-- ----------------------------
DROP TABLE IF EXISTS `watch_data_exercise`;
CREATE TABLE `watch_data_exercise` (
`id` varchar(36) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT 'id',
`watch_no` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '手表编码',
`strength_times` int NULL DEFAULT NULL COMMENT '中高强度运动时间分钟',
`total_time` int NULL DEFAULT NULL COMMENT '总活动时长小时',
`data_date` date NULL DEFAULT NULL COMMENT '数据日期',
`bind_user_id` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '绑定用户',
`max_id` varchar(60) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '数据中心最大ID',
PRIMARY KEY (`id`) USING BTREE,
UNIQUE INDEX `watch_no`(`watch_no` ASC, `data_date` ASC) USING BTREE,
INDEX `watch_no_2`(`watch_no` ASC) USING BTREE,
INDEX `data_date`(`data_date` ASC) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = Dynamic;
-- ----------------------------
-- Table structure for watch_data_gps
-- ----------------------------
DROP TABLE IF EXISTS `watch_data_gps`;
CREATE TABLE `watch_data_gps` (
`id` varchar(36) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '主键',
`watch_no` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '手表编码',
`lon` double(10, 4) NULL DEFAULT NULL COMMENT '经度',
`lat` double(10, 4) NULL DEFAULT NULL COMMENT '纬度',
`address` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '详细地址',
`time_stamp` datetime NULL DEFAULT NULL COMMENT '时间戳',
`bind_user_id` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '绑定用户',
`data_date` date NULL DEFAULT NULL COMMENT '绑定日期',
`max_id` varchar(60) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '数据中心最大ID',
PRIMARY KEY (`id`) USING BTREE,
INDEX `watch_no`(`watch_no` ASC) USING BTREE,
INDEX `bind_user_id`(`bind_user_id` ASC) USING BTREE,
INDEX `data_date`(`data_date` ASC) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = Dynamic;
-- ----------------------------
-- Table structure for watch_data_heart_rate
-- ----------------------------
DROP TABLE IF EXISTS `watch_data_heart_rate`;
CREATE TABLE `watch_data_heart_rate` (
`id` varchar(36) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '主键',
`watch_no` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '手表编码',
`data_value` double(10, 2) NULL DEFAULT NULL COMMENT '数据值',
`silence_value` double(10, 2) NULL DEFAULT NULL COMMENT '静息心率',
`time_stamp` datetime NULL DEFAULT NULL COMMENT '时间戳',
`bind_user_id` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '绑定用户',
`data_date` date NULL DEFAULT NULL COMMENT '绑定日期',
`max_id` varchar(60) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '数据中心最大ID',
PRIMARY KEY (`id`) USING BTREE,
INDEX `bind_user_id`(`bind_user_id` ASC) USING BTREE,
INDEX `data_date`(`data_date` ASC) USING BTREE,
INDEX `watch_no`(`watch_no` ASC) USING BTREE,
INDEX `time_stamp`(`time_stamp` ASC) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = Dynamic;
-- ----------------------------
-- Table structure for watch_data_sleep
-- ----------------------------
DROP TABLE IF EXISTS `watch_data_sleep`;
CREATE TABLE `watch_data_sleep` (
`id` varchar(36) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '主键',
`watch_no` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '手表编码',
`start_time_stamp` datetime NULL DEFAULT NULL COMMENT '开始时间',
`end_time_stamp` datetime NULL DEFAULT NULL COMMENT '结束时间',
`sleep_type` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '睡眠类型',
`bind_user_id` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '绑定用户',
`data_date` date NULL DEFAULT NULL COMMENT '绑定日期',
`max_id` varchar(60) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '数据中心最大ID',
PRIMARY KEY (`id`) USING BTREE,
INDEX `watch_no`(`watch_no` ASC) USING BTREE,
INDEX `bind_user_id`(`bind_user_id` ASC) USING BTREE,
INDEX `data_date`(`data_date` ASC) USING BTREE,
INDEX `sleep_type`(`sleep_type` ASC) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = Dynamic;
-- ----------------------------
-- Table structure for watch_data_sleep_new
-- ----------------------------
DROP TABLE IF EXISTS `watch_data_sleep_new`;
CREATE TABLE `watch_data_sleep_new` (
`id` varchar(60) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL,
`watch_no` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '手表编码',
`err_code` int NULL DEFAULT NULL COMMENT '错误码',
`sleep_flag` varchar(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '是否有睡眠数据',
`data_date` date NULL DEFAULT NULL COMMENT '数据日志',
`max_id` varchar(60) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '手表编码',
`bind_user_id` varchar(60) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '用户ID',
PRIMARY KEY (`id`) USING BTREE,
UNIQUE INDEX `watch_no`(`watch_no` ASC, `data_date` ASC) USING BTREE,
INDEX `watch_no_2`(`watch_no` ASC) USING BTREE,
INDEX `data_date`(`data_date` ASC) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = Dynamic;
-- ----------------------------
-- Table structure for watch_data_sleep_new_day
-- ----------------------------
DROP TABLE IF EXISTS `watch_data_sleep_new_day`;
CREATE TABLE `watch_data_sleep_new_day` (
`id` varchar(60) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL,
`sleep_id` varchar(60) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '主表ID',
`deep_sleep_part_cnt` int NULL DEFAULT NULL COMMENT '睡梦时长(分钟)',
`fall_asleep_time` datetime NULL DEFAULT NULL COMMENT '入睡时间点',
`go_bed_time` datetime NULL DEFAULT NULL COMMENT '上床时间',
`sleep_efficiency` int NULL DEFAULT NULL COMMENT '睡眠效率百分比',
`sleep_latency` bigint NULL DEFAULT NULL COMMENT '睡眠潜伏期',
`sleep_score` int NULL DEFAULT NULL COMMENT '睡眠得分',
`sleep_score_orign` int NULL DEFAULT NULL COMMENT '原始睡眠得分',
`snore_freq` int NULL DEFAULT NULL COMMENT '鼾声(每小时次数)',
`start_time` datetime NULL DEFAULT NULL COMMENT '当天的时间戳',
`valid_data` decimal(20, 15) NULL DEFAULT NULL COMMENT '数据有效性',
`wake_up_time` datetime NULL DEFAULT NULL COMMENT '醒来时间',
PRIMARY KEY (`id`) USING BTREE,
INDEX `sleep_id`(`sleep_id` ASC) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = Dynamic;
-- ----------------------------
-- Table structure for watch_data_sleep_new_err
-- ----------------------------
DROP TABLE IF EXISTS `watch_data_sleep_new_err`;
CREATE TABLE `watch_data_sleep_new_err` (
`id` varchar(60) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL,
`sleep_id` varchar(60) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '主表ID',
`err_code` int NULL DEFAULT NULL COMMENT '错误码',
`start_time` datetime NULL DEFAULT NULL COMMENT '开始时间戳',
`end_time` datetime NULL DEFAULT NULL COMMENT '结束时间戳',
PRIMARY KEY (`id`) USING BTREE,
INDEX `sleep_id`(`sleep_id` ASC) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = Dynamic;
-- ----------------------------
-- Table structure for watch_data_sleep_new_minute
-- ----------------------------
DROP TABLE IF EXISTS `watch_data_sleep_new_minute`;
CREATE TABLE `watch_data_sleep_new_minute` (
`id` varchar(60) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL,
`sleep_id` varchar(60) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '主表ID',
`start_time` datetime NULL DEFAULT NULL COMMENT '开始时间戳',
`end_time` datetime NULL DEFAULT NULL COMMENT '结束时间戳',
`status` varchar(1500) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '睡眠状态',
`sleep_type` varchar(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL,
PRIMARY KEY (`id`) USING BTREE,
INDEX `sleep_id`(`sleep_id` ASC) USING BTREE,
INDEX `index_sleep_type`(`sleep_type` ASC) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = Dynamic;
-- ----------------------------
-- Table structure for watch_data_spo2
-- ----------------------------
DROP TABLE IF EXISTS `watch_data_spo2`;
CREATE TABLE `watch_data_spo2` (
`id` varchar(36) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '主键',
`watch_no` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '手表编码',
`data_value` double(10, 2) NULL DEFAULT NULL COMMENT '数据值',
`time_stamp` datetime NULL DEFAULT NULL COMMENT '时间戳',
`bind_user_id` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '绑定用户',
`data_date` date NULL DEFAULT NULL COMMENT '绑定日期',
`max_id` varchar(60) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '数据中心最大ID',
PRIMARY KEY (`id`) USING BTREE,
INDEX `bind_user_id_index`(`bind_user_id` ASC) USING BTREE,
INDEX `watch_no`(`watch_no` ASC) USING BTREE,
INDEX `data_date`(`data_date` ASC) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = Dynamic;
-- ----------------------------
-- Table structure for watch_data_steps
-- ----------------------------
DROP TABLE IF EXISTS `watch_data_steps`;
CREATE TABLE `watch_data_steps` (
`id` varchar(36) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '主键',
`watch_no` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '手表编码',
`data_value` bigint NULL DEFAULT NULL COMMENT '数据值',
`sdc_date` date NULL DEFAULT NULL COMMENT '产生日期',
`bind_user_id` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '绑定用户',
`data_date` date NULL DEFAULT NULL COMMENT '绑定日期',
`max_id` varchar(60) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '数据中心最大ID',
PRIMARY KEY (`id`) USING BTREE,
INDEX `watch_no`(`watch_no` ASC) USING BTREE,
INDEX `bind_user_id`(`bind_user_id` ASC) USING BTREE,
INDEX `data_date`(`data_date` ASC) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = Dynamic;
-- ----------------------------
-- Table structure for watch_data_steps_hf
-- ----------------------------
DROP TABLE IF EXISTS `watch_data_steps_hf`;
CREATE TABLE `watch_data_steps_hf` (
`id` varchar(36) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '主键',
`watch_no` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '手表编码',
`step_count` int NULL DEFAULT NULL COMMENT '步数',
`step_date` date NULL DEFAULT NULL COMMENT '步数日期',
`bind_user_id` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '绑定用户',
`max_id` varchar(60) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '数据中心最大ID',
`create_time` datetime NULL DEFAULT NULL COMMENT '创建时间',
`update_time` datetime NULL DEFAULT NULL COMMENT '更新时间',
PRIMARY KEY (`id`) USING BTREE,
INDEX `bind_user_id`(`bind_user_id` ASC) USING BTREE,
INDEX `step_date`(`step_date` ASC) USING BTREE,
INDEX `watch_no`(`watch_no` ASC) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = Dynamic;
-- ----------------------------
-- Table structure for watch_data_stress
-- ----------------------------
DROP TABLE IF EXISTS `watch_data_stress`;
CREATE TABLE `watch_data_stress` (
`id` varchar(36) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '主键',
`watch_no` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '手表编码',
`start_time_stamp` datetime NULL DEFAULT NULL COMMENT '开始时间',
`end_time_stamp` datetime NULL DEFAULT NULL COMMENT '结束时间',
`data_value` double(10, 2) NULL DEFAULT NULL COMMENT '数据值',
`bind_user_id` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '绑定用户',
`data_date` date NULL DEFAULT NULL COMMENT '绑定日期',
`max_id` varchar(60) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '数据中心最大ID',
PRIMARY KEY (`id`) USING BTREE,
INDEX `watch_no`(`watch_no` ASC) USING BTREE,
INDEX `bind_user_id`(`bind_user_id` ASC) USING BTREE,
INDEX `data_date`(`data_date` ASC) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = Dynamic;
-- ----------------------------
-- Table structure for watch_data_temperature
-- ----------------------------
DROP TABLE IF EXISTS `watch_data_temperature`;
CREATE TABLE `watch_data_temperature` (
`id` varchar(36) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '主键',
`watch_no` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '手表编码',
`data_value` double(10, 2) NULL DEFAULT NULL COMMENT '数据值',
`skin_tempera` double NULL DEFAULT NULL COMMENT '体表温度',
`time_stamp` datetime NULL DEFAULT NULL COMMENT '时间戳',
`bind_user_id` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '绑定用户',
`data_date` date NULL DEFAULT NULL COMMENT '绑定日期',
`max_id` varchar(60) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '数据中心最大ID',
PRIMARY KEY (`id`) USING BTREE,
INDEX `watch_no`(`watch_no` ASC) USING BTREE,
INDEX `bind_user_id`(`bind_user_id` ASC) USING BTREE,
INDEX `data_date`(`data_date` ASC) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = Dynamic;
-- ----------------------------
-- Table structure for watch_data_workout
-- ----------------------------
DROP TABLE IF EXISTS `watch_data_workout`;
CREATE TABLE `watch_data_workout` (
`id` varchar(36) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '主键',
`watch_no` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '手表编码',
`start_time_stamp` datetime NULL DEFAULT NULL COMMENT '开始时间',
`end_time_stamp` datetime NULL DEFAULT NULL COMMENT '结束时间',
`calorie` bigint NULL DEFAULT NULL COMMENT '卡路里',
`distance` bigint NULL DEFAULT NULL COMMENT '距离',
`workout_type` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '锻炼类型',
`bind_user_id` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '绑定用户',
`data_date` date NULL DEFAULT NULL COMMENT '绑定日期',
`max_id` varchar(60) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '数据中心最大ID',
PRIMARY KEY (`id`) USING BTREE,
INDEX `watch_no`(`watch_no` ASC) USING BTREE,
INDEX `workout_type`(`workout_type` ASC) USING BTREE,
INDEX `bind_user_id`(`bind_user_id` ASC) USING BTREE,
INDEX `data_date`(`data_date` ASC) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = Dynamic;
-- ----------------------------
-- Table structure for watch_data_workout_trace
-- ----------------------------
DROP TABLE IF EXISTS `watch_data_workout_trace`;
CREATE TABLE `watch_data_workout_trace` (
`id` varchar(36) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL,
`watch_no` varchar(36) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '手表编码',
`record_id` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '记录ID',
`altitude` decimal(10, 2) NULL DEFAULT NULL COMMENT '海拔',
`latitude` decimal(20, 15) NULL DEFAULT NULL COMMENT '纬度',
`longitude` decimal(20, 15) NULL DEFAULT NULL COMMENT '经度',
`utc_time` datetime NULL DEFAULT NULL COMMENT '时间戳',
`valid` varchar(6) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '数据是否合法',
`max_id` varchar(60) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '数据中心最大ID',
PRIMARY KEY (`id`) USING BTREE,
UNIQUE INDEX `watch_no`(`watch_no` ASC, `record_id` ASC, `utc_time` ASC) USING BTREE,
INDEX `watch_no_2`(`watch_no` ASC) USING BTREE,
INDEX `watch_no_3`(`watch_no` ASC, `record_id` ASC) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = Dynamic;
-- ----------------------------
-- Table structure for watch_depart_report
-- ----------------------------
DROP TABLE IF EXISTS `watch_depart_report`;
CREATE TABLE `watch_depart_report` (
`id` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '主键',
`org_code` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '部门Code',
`report_year` int NOT NULL COMMENT '报告年份',
`report_month` int NOT NULL COMMENT '报告月份',
`report_url` varchar(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '报告地址',
`gen_flag` int NULL DEFAULT NULL COMMENT '生成状态 1-队列中 2-生成中 3-任务异常 4-生成完成',
`gen_time` datetime NULL DEFAULT NULL COMMENT '生成时间',
`del_flag` tinyint(1) NOT NULL DEFAULT 0 COMMENT '删除状态(0-正常,1-已删除)',
`create_by` varchar(32) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT NULL COMMENT '创建人',
`create_time` datetime NULL DEFAULT NULL COMMENT '创建时间',
`update_by` varchar(32) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT NULL COMMENT '更新人',
`update_time` datetime NULL DEFAULT NULL COMMENT '更新时间',
`memo` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '备注',
PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci COMMENT = '部门报告记录表' ROW_FORMAT = Dynamic;
-- ----------------------------
-- Table structure for watch_device
-- ----------------------------
DROP TABLE IF EXISTS `watch_device`;
CREATE TABLE `watch_device` (
`id` varchar(36) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '主键',
`watch_no` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '手表编码',
`watch_model` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '手表型号',
`wear_status` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '穿戴状态',
`watch_online` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '在线状态',
`bind_user_id` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '绑定用户',
`bind_date` date NULL DEFAULT NULL COMMENT '绑定日期',
`create_by` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '创建人登录名称',
`create_date` datetime NULL DEFAULT NULL COMMENT '创建日期',
`update_by` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '更新人登录名称',
`update_date` datetime NULL DEFAULT NULL COMMENT '更新日期',
`imei_no` varchar(60) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT 'IMEI编码',
`eid` varchar(60) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT 'EID编码',
`last_update_time` datetime NULL DEFAULT NULL COMMENT '最后一次数据更新时间',
`dept_id` varchar(60) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '归属部门',
`org_code` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '归属部门编码',
PRIMARY KEY (`id`) USING BTREE,
UNIQUE INDEX `watch_no`(`watch_no` ASC) USING BTREE,
INDEX `bind_user_id`(`bind_user_id` ASC) USING BTREE,
INDEX `bind_date`(`bind_date` ASC) USING BTREE,
INDEX `index_dept_id`(`dept_id` ASC) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = Dynamic;
-- ----------------------------
-- Table structure for watch_device_switch
-- ----------------------------
DROP TABLE IF EXISTS `watch_device_switch`;
CREATE TABLE `watch_device_switch` (
`id` varchar(36) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL,
`watch_no` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '手表编码',
`wd_type` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '数据类型',
`switch_flag` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '开关状态',
`update_date` datetime NULL DEFAULT NULL COMMENT '更新日期',
PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = Dynamic;
-- ----------------------------
-- Table structure for watch_key_user
-- ----------------------------
DROP TABLE IF EXISTS `watch_key_user`;
CREATE TABLE `watch_key_user` (
`id` varchar(36) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '主键',
`user_id` varchar(36) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '用户',
`error_type` tinyint(1) NULL DEFAULT NULL COMMENT '异常类型(watch_error_type 0:大病异常 1:慢病异常 2:指标异常)',
`del_flag` tinyint(1) NULL DEFAULT 0 COMMENT '删除标识0-正常,1已删除',
`disease_name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '病名',
PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = Dynamic;
-- ----------------------------
-- Table structure for watch_monitor_data
-- ----------------------------
DROP TABLE IF EXISTS `watch_monitor_data`;
CREATE TABLE `watch_monitor_data` (
`id` varchar(36) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '主键',
`watch_no` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '手表编码',
`event_type` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '事件类型',
`bind_user_id` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '绑定用户',
`create_by` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '创建人登录名称',
`create_date` datetime NULL DEFAULT NULL COMMENT '创建日期',
`data_value` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '数据值',
`address` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '详细地址',
`lon` double(15, 6) NULL DEFAULT NULL COMMENT '经度',
`lat` double(15, 6) NULL DEFAULT NULL COMMENT '纬度',
`data_date` date NULL DEFAULT NULL COMMENT '数据日期',
`warn_time` datetime NULL DEFAULT NULL COMMENT '报警时间',
`gps_error_msg` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT 'GPS错误信息',
`lon_gd` decimal(20, 15) NULL DEFAULT NULL COMMENT '高德经度',
`lat_gd` decimal(20, 15) NULL DEFAULT NULL COMMENT '高德纬度',
`address_gd` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '高德地址',
`send_flag` varchar(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '是否已短信通知',
`large_screen_flag` varchar(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '是否大屏通知',
`org_code` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '部门编码',
PRIMARY KEY (`id`) USING BTREE,
INDEX `watch_no`(`watch_no` ASC) USING BTREE,
INDEX `event_type`(`event_type` ASC) USING BTREE,
INDEX `bind_user_id`(`bind_user_id` ASC) USING BTREE,
INDEX `create_date`(`create_date` ASC) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = Dynamic;
-- ----------------------------
-- Table structure for watch_monitor_mobile
-- ----------------------------
DROP TABLE IF EXISTS `watch_monitor_mobile`;
CREATE TABLE `watch_monitor_mobile` (
`id` varchar(36) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL,
`mobile` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '手机号码',
`valid_status` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '有效标志',
`create_by` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '创建人登录名称',
`create_date` datetime NULL DEFAULT NULL COMMENT '创建日期',
`update_by` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '更新人登录名称',
`update_date` datetime NULL DEFAULT NULL COMMENT '更新日期',
PRIMARY KEY (`id`) USING BTREE,
INDEX `valid_status`(`valid_status` ASC) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = Dynamic;
-- ----------------------------
-- Table structure for watch_mqtt_notice
-- ----------------------------
DROP TABLE IF EXISTS `watch_mqtt_notice`;
CREATE TABLE `watch_mqtt_notice` (
`id` varchar(36) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '主键',
`mqtt_notice` text CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL COMMENT '通知内容',
`mqtt_notice_title` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '消息标题',
`watch_no` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '手表编码',
`create_by` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '创建人登录名称',
`create_date` datetime NULL DEFAULT NULL COMMENT '创建日期',
`send_time` datetime NULL DEFAULT NULL COMMENT '发送时间',
`notice_status` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '发送状态',
`error_msg` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '失败原因',
`notice_level` varchar(5) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '通知级别1指定用户 0发送全部 2发送部门',
`user_id` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '通知用户ID',
`org_code` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '指定的部门',
PRIMARY KEY (`id`) USING BTREE,
INDEX `watch_no`(`watch_no` ASC) USING BTREE,
INDEX `notice_status`(`notice_status` ASC) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = Dynamic;
-- ----------------------------
-- Table structure for watch_stat_user_info_day_heart_rate
-- ----------------------------
DROP TABLE IF EXISTS `watch_stat_user_info_day_heart_rate`;
CREATE TABLE `watch_stat_user_info_day_heart_rate` (
`id` varchar(60) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL,
`user_id` varchar(60) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '用户id',
`max_value` int NULL DEFAULT NULL COMMENT '最大值',
`min_value` int NULL DEFAULT NULL COMMENT '最小值',
`avg_value` int NULL DEFAULT NULL COMMENT '平均值',
`silence_max_value` int NULL DEFAULT NULL COMMENT '静息心率最大值',
`silence_min_value` int NULL DEFAULT NULL COMMENT '静息心率最小值',
`silence_avg_value` int NULL DEFAULT NULL COMMENT '静息心率平均值',
`data_date` date NOT NULL COMMENT '数据时间',
`org_code` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '部门编码',
`last_upload_time` datetime NULL DEFAULT NULL COMMENT '最后上传时间',
PRIMARY KEY (`id`) USING BTREE,
INDEX `user_id`(`user_id` ASC) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = Dynamic;
-- ----------------------------
-- Table structure for watch_stat_user_info_day_sdc
-- ----------------------------
DROP TABLE IF EXISTS `watch_stat_user_info_day_sdc`;
CREATE TABLE `watch_stat_user_info_day_sdc` (
`id` varchar(60) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL,
`user_id` varchar(60) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '用户ID',
`step_value` bigint NULL DEFAULT NULL COMMENT '步数',
`distance_value` bigint NULL DEFAULT NULL COMMENT '距离',
`calorie_value` bigint NULL DEFAULT NULL COMMENT '卡路里',
`data_date` date NULL DEFAULT NULL COMMENT '数据录入时间',
`org_code` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '部门编码',
`last_upload_time` datetime NULL DEFAULT NULL COMMENT '最后上传时间',
PRIMARY KEY (`id`) USING BTREE,
INDEX `user_id`(`user_id` ASC) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = Dynamic;
-- ----------------------------
-- Table structure for watch_stat_user_info_day_sleep
-- ----------------------------
DROP TABLE IF EXISTS `watch_stat_user_info_day_sleep`;
CREATE TABLE `watch_stat_user_info_day_sleep` (
`id` varchar(60) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL,
`user_id` varchar(60) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '用户id',
`sleep_avg` int NULL DEFAULT 0 COMMENT '平均睡眠时长',
`long_count` int NULL DEFAULT 0 COMMENT '长睡数量',
`long_duration_max` bigint NULL DEFAULT 0 COMMENT '长睡最长时长',
`long_duration_min` bigint NULL DEFAULT 0 COMMENT '长睡最短时长',
`long_duration_total` bigint NULL DEFAULT NULL COMMENT '长睡睡眠总时长',
`long_start_min` datetime NULL DEFAULT NULL COMMENT '长睡最早入睡时间',
`long_end_max` datetime NULL DEFAULT NULL COMMENT '长睡最晚醒来时间',
`short_count` int NULL DEFAULT 0 COMMENT '短睡数量',
`short_duration_max` bigint NULL DEFAULT 0 COMMENT '短睡最长时长',
`short_duration_min` bigint NULL DEFAULT 0 COMMENT '短睡最短时长',
`short_duration_total` bigint NULL DEFAULT 0 COMMENT '短睡睡眠总时长',
`short_start_min` datetime NULL DEFAULT NULL COMMENT '短睡最早入睡时间',
`short_end_max` datetime NULL DEFAULT NULL COMMENT '短睡最晚醒来时间',
`data_date` date NULL DEFAULT NULL COMMENT '更新时间',
`long_duration_avg` int NULL DEFAULT 0 COMMENT '长睡平均',
`short_duration_avg` int NULL DEFAULT 0 COMMENT '短睡平均',
`org_code` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '部门编码',
`deep_sleep_times` int NULL DEFAULT 0 COMMENT '深睡睡眠时长 ',
`light_sleep_times` int NULL DEFAULT 0 COMMENT '浅睡睡眠时长 ',
`deep_light_times` int NULL DEFAULT 0 COMMENT '睡眠总时长 light_sleep_times+deep_sleep_times',
`sleep_id` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '为了统计所对应的分钟睡眠 ',
`last_upload_time` datetime NULL DEFAULT NULL COMMENT '最后上传时间',
PRIMARY KEY (`id`) USING BTREE,
INDEX `user_id`(`user_id` ASC) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = Dynamic;
-- ----------------------------
-- Table structure for watch_stat_user_info_day_spo2
-- ----------------------------
DROP TABLE IF EXISTS `watch_stat_user_info_day_spo2`;
CREATE TABLE `watch_stat_user_info_day_spo2` (
`id` varchar(60) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL,
`user_id` varchar(60) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '用户id',
`max_value` decimal(4, 0) NULL DEFAULT NULL COMMENT '最大值',
`min_value` decimal(4, 0) NULL DEFAULT NULL COMMENT '最小值',
`avg_value` decimal(10, 4) NULL DEFAULT NULL COMMENT '平均值',
`data_date` date NULL DEFAULT NULL COMMENT '数据日期',
`org_code` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '部门编码',
`last_upload_time` datetime NULL DEFAULT NULL COMMENT '最后上传时间',
PRIMARY KEY (`id`) USING BTREE,
INDEX `user_id`(`user_id` ASC) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = Dynamic;
-- ----------------------------
-- Table structure for watch_stat_user_info_day_stress
-- ----------------------------
DROP TABLE IF EXISTS `watch_stat_user_info_day_stress`;
CREATE TABLE `watch_stat_user_info_day_stress` (
`id` varchar(60) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL,
`user_id` varchar(60) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '用户ID',
`max_value` decimal(4, 0) NULL DEFAULT NULL COMMENT '最大值',
`min_value` decimal(4, 0) NULL DEFAULT NULL COMMENT '最小值',
`avg_value` decimal(10, 4) NULL DEFAULT NULL COMMENT '平均值',
`data_date` date NULL DEFAULT NULL COMMENT '更新时间',
`org_code` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '部门编码',
`last_upload_time` datetime NULL DEFAULT NULL COMMENT '最后上传时间',
PRIMARY KEY (`id`) USING BTREE,
INDEX `user_id`(`user_id` ASC) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = Dynamic;
-- ----------------------------
-- Table structure for watch_stat_user_info_day_temp
-- ----------------------------
DROP TABLE IF EXISTS `watch_stat_user_info_day_temp`;
CREATE TABLE `watch_stat_user_info_day_temp` (
`id` varchar(60) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL,
`user_id` varchar(60) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '用户id',
`max_value` decimal(5, 2) NULL DEFAULT NULL COMMENT '最大值',
`min_value` decimal(5, 2) NULL DEFAULT NULL COMMENT '最小值',
`avg_value` decimal(10, 4) NULL DEFAULT NULL COMMENT '平均值',
`skin_max_value` decimal(5, 2) NULL DEFAULT NULL COMMENT '体表温度最大值',
`skin_min_value` decimal(5, 2) NULL DEFAULT NULL COMMENT '体表温度最小值',
`skin_avg_value` decimal(10, 4) NULL DEFAULT NULL COMMENT '体表温度平均值',
`data_date` date NULL DEFAULT NULL COMMENT '更新时间',
`org_code` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '部门编码',
`last_upload_time` datetime NULL DEFAULT NULL COMMENT '最后上传时间',
PRIMARY KEY (`id`) USING BTREE,
INDEX `user_id`(`user_id` ASC) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = Dynamic;
-- ----------------------------
-- Table structure for watch_stat_user_info_day_workout
-- ----------------------------
DROP TABLE IF EXISTS `watch_stat_user_info_day_workout`;
CREATE TABLE `watch_stat_user_info_day_workout` (
`id` varchar(60) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL,
`user_id` varchar(60) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '用户ID',
`distance_max_value` bigint NULL DEFAULT NULL COMMENT '距离最大值',
`distance_min_value` bigint NULL DEFAULT NULL COMMENT '距离最小值',
`distance_total_value` bigint NULL DEFAULT NULL COMMENT '距离总量',
`distance_count` bigint NULL DEFAULT NULL COMMENT '距离数据量',
`calorie_max_value` bigint NULL DEFAULT NULL COMMENT '卡路里最大值',
`calorie_min_value` bigint NULL DEFAULT NULL COMMENT '卡路里最小值',
`calorie_total_value` bigint NULL DEFAULT NULL COMMENT '卡路里总量',
`calorie_count` bigint NULL DEFAULT NULL COMMENT '卡路里数据量',
`duration_max_value` bigint NULL DEFAULT NULL COMMENT '锻炼时长最大值',
`duration_min_value` bigint NULL DEFAULT NULL COMMENT '锻炼时长最小值',
`duration_total_value` bigint NULL DEFAULT NULL COMMENT '锻炼时长总量',
`duration_count` bigint NULL DEFAULT NULL COMMENT '锻炼次数',
`data_date` date NULL DEFAULT NULL COMMENT '数据时间',
`org_code` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '部门编码',
`last_upload_time` datetime NULL DEFAULT NULL COMMENT '最后上传时间',
PRIMARY KEY (`id`) USING BTREE,
INDEX `user_id`(`user_id` ASC) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = Dynamic;
-- ----------------------------
-- Table structure for watch_syn_max_id
-- ----------------------------
DROP TABLE IF EXISTS `watch_syn_max_id`;
CREATE TABLE `watch_syn_max_id` (
`id` varchar(36) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL,
`wd_type` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '数据类型',
`max_id` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '最大ID',
`create_date` datetime NULL DEFAULT NULL COMMENT '创建日期',
`update_date` datetime NULL DEFAULT NULL COMMENT '更新日期',
PRIMARY KEY (`id`) USING BTREE,
UNIQUE INDEX `wd_type`(`wd_type` ASC) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = Dynamic;
-- ----------------------------
-- Table structure for watch_user_data
-- ----------------------------
DROP TABLE IF EXISTS `watch_user_data`;
CREATE TABLE `watch_user_data` (
`id` varchar(36) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL,
`watch_no` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '手表编码',
`bind_user_id` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '绑定用户',
`data_date` date NULL DEFAULT NULL COMMENT '绑定日期',
`create_by` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '创建人登录名称',
`create_date` datetime NULL DEFAULT NULL COMMENT '创建日期',
PRIMARY KEY (`id`) USING BTREE,
UNIQUE INDEX `watch_no`(`watch_no` ASC, `bind_user_id` ASC, `data_date` ASC) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = Dynamic;
SET FOREIGN_KEY_CHECKS = 1;
-2
View File
@@ -1,2 +0,0 @@
ALTER TABLE "QH_HLT_USER_EMPLOYEE_EX" ADD "NON_CARE_FLAG" INT DEFAULT null;
COMMENT ON COLUMN "QH_HLT_USER_EMPLOYEE_EX"."NON_CARE_FLAG" IS '非关爱人员标记0-1-';
-12
View File
@@ -1,12 +0,0 @@
-- 手表用户绑定数据视图
-- 关联 QH_WAT_DEVICE QH_SYS_USER查询已绑定用户的手表设备信息
CREATE OR REPLACE VIEW V_WATCH_USER_BIND AS
SELECT
u.WORK_NO AS employee_num,
d.WATCH_NO AS watch_no,
u.REALNAME AS real_name,
d.BIND_DATE AS bind_date
FROM QH_WAT_DEVICE d
INNER JOIN QH_SYS_USER u ON d.BIND_USER_ID = u.ID
WHERE d.BIND_USER_ID IS NOT NULL
AND d.BIND_USER_ID <> '';
-200
View File
@@ -1,200 +0,0 @@
-- =====================================================
-- 急救宣教资源管理 线上部署 SQL达梦 DM8
-- 包含分类/标签资源用户行为版本历史审核记录推送记录
-- 日期: 2026-06-25
-- =====================================================
-- 1. 资源分类/标签统一表
-- TYPE: 1=分类(树形), 2=标签(扁平)
CREATE TABLE "QH_EME_FIR_AID_RES_CATE" (
"ID" VARCHAR2(32) NOT NULL,
"NAME" VARCHAR2(100) NOT NULL,
"TYPE" NUMBER(1) DEFAULT 1 NOT NULL,
"PARENT_ID" VARCHAR2(32),
"DESCRIPTION" VARCHAR2(500),
"SORT_NO" NUMBER(10) DEFAULT 0,
"STATUS" NUMBER(1) DEFAULT 1,
"CREATE_BY" VARCHAR2(50),
"CREATE_TIME" TIMESTAMP,
"UPDATE_BY" VARCHAR2(50),
"UPDATE_TIME" TIMESTAMP,
"DEL_FLAG" NUMBER(1) DEFAULT 0,
"MEMO" VARCHAR2(500),
PRIMARY KEY ("ID")
);
COMMENT ON TABLE "QH_EME_FIR_AID_RES_CATE" IS '急救宣教资源分类/标签';
COMMENT ON COLUMN "QH_EME_FIR_AID_RES_CATE"."ID" IS '主键';
COMMENT ON COLUMN "QH_EME_FIR_AID_RES_CATE"."NAME" IS '名称';
COMMENT ON COLUMN "QH_EME_FIR_AID_RES_CATE"."TYPE" IS '类型:1=分类,2=标签';
COMMENT ON COLUMN "QH_EME_FIR_AID_RES_CATE"."PARENT_ID" IS '父分类ID(根分类为NULL标签指向所属分类ID)';
COMMENT ON COLUMN "QH_EME_FIR_AID_RES_CATE"."DESCRIPTION" IS '描述';
COMMENT ON COLUMN "QH_EME_FIR_AID_RES_CATE"."SORT_NO" IS '排序号';
COMMENT ON COLUMN "QH_EME_FIR_AID_RES_CATE"."STATUS" IS '状态(1=正常,2=冻结)';
COMMENT ON COLUMN "QH_EME_FIR_AID_RES_CATE"."DEL_FLAG" IS '删除标记(0=正常,1=已删除)';
COMMENT ON COLUMN "QH_EME_FIR_AID_RES_CATE"."MEMO" IS '备注';
CREATE INDEX "IDX_FA_CATEGORY_TYPE" ON "QH_EME_FIR_AID_RES_CATE"("TYPE");
CREATE INDEX "IDX_FA_CATEGORY_PARENT_ID" ON "QH_EME_FIR_AID_RES_CATE"("PARENT_ID");
-- 2. 资源表
CREATE TABLE "QH_EME_FIR_AID_RES" (
"ID" VARCHAR2(32) NOT NULL,
"TITLE" VARCHAR2(200) NOT NULL,
"SUMMARY" VARCHAR2(500),
"CONTENT_TYPE" VARCHAR2(32),
"CATEGORY_ID" VARCHAR2(32),
"APPLICABLE_SCENARIO" VARCHAR2(500),
"TAGS" VARCHAR2(2000),
"CONTENT" CLOB,
"COVER_IMAGE" VARCHAR2(500),
"FILE_URL" CLOB,
"EFFECTIVE_TIME" TIMESTAMP,
"EXPIRY_TIME" TIMESTAMP,
"AUDIT_STATUS" NUMBER(2),
"AUDIT_REJECT_REASON" VARCHAR2(500),
"AUDIT_BY" VARCHAR2(50),
"AUDIT_BY_ID" VARCHAR2(32),
"AUDIT_TIME" TIMESTAMP,
"VIEW_COUNT" NUMBER(10) DEFAULT 0,
"FAVORITE_COUNT" NUMBER(10) DEFAULT 0,
"STATUS" NUMBER(1) DEFAULT 0,
"CREATE_BY" VARCHAR2(50),
"CREATE_TIME" TIMESTAMP,
"UPDATE_BY" VARCHAR2(50),
"UPDATE_TIME" TIMESTAMP,
"DEL_FLAG" NUMBER(1) DEFAULT 0,
"MEMO" VARCHAR2(500),
PRIMARY KEY ("ID")
);
COMMENT ON TABLE "QH_EME_FIR_AID_RES" IS '急救宣教资源';
COMMENT ON COLUMN "QH_EME_FIR_AID_RES"."ID" IS '主键';
COMMENT ON COLUMN "QH_EME_FIR_AID_RES"."TITLE" IS '标题';
COMMENT ON COLUMN "QH_EME_FIR_AID_RES"."SUMMARY" IS '摘要/简介';
COMMENT ON COLUMN "QH_EME_FIR_AID_RES"."CONTENT_TYPE" IS '内容类型:IMAGE_TEXT=图文/VIDEO=视频/AUDIO=音频/PDF';
COMMENT ON COLUMN "QH_EME_FIR_AID_RES"."CATEGORY_ID" IS '所属分类ID';
COMMENT ON COLUMN "QH_EME_FIR_AID_RES"."APPLICABLE_SCENARIO" IS '适用场景';
COMMENT ON COLUMN "QH_EME_FIR_AID_RES"."TAGS" IS '标签ID列表(逗号分隔)';
COMMENT ON COLUMN "QH_EME_FIR_AID_RES"."CONTENT" IS '正文内容(富文本HTML)';
COMMENT ON COLUMN "QH_EME_FIR_AID_RES"."COVER_IMAGE" IS '封面图URL';
COMMENT ON COLUMN "QH_EME_FIR_AID_RES"."FILE_URL" IS '附件URL列表(JSON数组)';
COMMENT ON COLUMN "QH_EME_FIR_AID_RES"."EFFECTIVE_TIME" IS '生效时间';
COMMENT ON COLUMN "QH_EME_FIR_AID_RES"."EXPIRY_TIME" IS '失效时间';
COMMENT ON COLUMN "QH_EME_FIR_AID_RES"."AUDIT_STATUS" IS '审核状态(NULL=无审核/10=待审核/11=已通过/12=已驳回)';
COMMENT ON COLUMN "QH_EME_FIR_AID_RES"."AUDIT_REJECT_REASON" IS '驳回原因';
COMMENT ON COLUMN "QH_EME_FIR_AID_RES"."AUDIT_BY" IS '审核人';
COMMENT ON COLUMN "QH_EME_FIR_AID_RES"."AUDIT_BY_ID" IS '审核人ID';
COMMENT ON COLUMN "QH_EME_FIR_AID_RES"."AUDIT_TIME" IS '审核时间';
COMMENT ON COLUMN "QH_EME_FIR_AID_RES"."VIEW_COUNT" IS '浏览次数';
COMMENT ON COLUMN "QH_EME_FIR_AID_RES"."FAVORITE_COUNT" IS '收藏次数';
COMMENT ON COLUMN "QH_EME_FIR_AID_RES"."STATUS" IS '发布状态(0=草稿,1=已发布,2=已下架)';
COMMENT ON COLUMN "QH_EME_FIR_AID_RES"."DEL_FLAG" IS '删除标记(0=正常,1=已删除)';
COMMENT ON COLUMN "QH_EME_FIR_AID_RES"."MEMO" IS '备注';
CREATE INDEX "IDX_FA_RESOURCE_CATEGORY_ID" ON "QH_EME_FIR_AID_RES"("CATEGORY_ID");
CREATE INDEX "IDX_FA_RESOURCE_AUDIT_STATUS" ON "QH_EME_FIR_AID_RES"("AUDIT_STATUS");
CREATE INDEX "IDX_FA_RESOURCE_EFFECTIVE_TIME" ON "QH_EME_FIR_AID_RES"("EFFECTIVE_TIME");
-- 3. 用户行为记录表阅读+收藏
CREATE TABLE "QH_EME_FIR_AID_RES_UACT" (
"ID" VARCHAR2(32) NOT NULL,
"RESOURCE_ID" VARCHAR2(32) NOT NULL,
"USER_ID" VARCHAR2(50) NOT NULL,
"TYPE" NUMBER(1) NOT NULL,
"CREATE_TIME" TIMESTAMP,
PRIMARY KEY ("ID")
);
COMMENT ON TABLE "QH_EME_FIR_AID_RES_UACT" IS '用户行为记录(阅读/收藏)';
COMMENT ON COLUMN "QH_EME_FIR_AID_RES_UACT"."ID" IS '主键';
COMMENT ON COLUMN "QH_EME_FIR_AID_RES_UACT"."RESOURCE_ID" IS '资源ID';
COMMENT ON COLUMN "QH_EME_FIR_AID_RES_UACT"."USER_ID" IS '用户ID';
COMMENT ON COLUMN "QH_EME_FIR_AID_RES_UACT"."TYPE" IS '行为类型:1=阅读,2=收藏';
CREATE UNIQUE INDEX "UK_FA_USER_ACTION" ON "QH_EME_FIR_AID_RES_UACT"("RESOURCE_ID", "USER_ID", "TYPE");
CREATE INDEX "IDX_FA_USER_ACTION_USER_TYPE" ON "QH_EME_FIR_AID_RES_UACT"("USER_ID", "TYPE");
-- 4. 版本历史表
CREATE TABLE "QH_EME_FIR_AID_RES_VER" (
"ID" VARCHAR2(32) NOT NULL,
"RESOURCE_ID" VARCHAR2(32) NOT NULL,
"VERSION_NO" NUMBER(10) NOT NULL,
"TITLE" VARCHAR2(200),
"CONTENT" CLOB,
"CHANGE_DESCRIPTION" VARCHAR2(500),
"IS_CURRENT" NUMBER(1) DEFAULT 0,
"CREATE_BY" VARCHAR2(50),
"CREATE_TIME" TIMESTAMP,
PRIMARY KEY ("ID")
);
COMMENT ON TABLE "QH_EME_FIR_AID_RES_VER" IS '资源版本历史';
COMMENT ON COLUMN "QH_EME_FIR_AID_RES_VER"."ID" IS '主键';
COMMENT ON COLUMN "QH_EME_FIR_AID_RES_VER"."RESOURCE_ID" IS '资源ID';
COMMENT ON COLUMN "QH_EME_FIR_AID_RES_VER"."VERSION_NO" IS '版本号';
COMMENT ON COLUMN "QH_EME_FIR_AID_RES_VER"."TITLE" IS '版本时的标题';
COMMENT ON COLUMN "QH_EME_FIR_AID_RES_VER"."CONTENT" IS '版本时的正文内容';
COMMENT ON COLUMN "QH_EME_FIR_AID_RES_VER"."CHANGE_DESCRIPTION" IS '变更描述';
COMMENT ON COLUMN "QH_EME_FIR_AID_RES_VER"."IS_CURRENT" IS '是否当前版本(1=,0=)';
CREATE INDEX "IDX_FA_VERSION_RESOURCE_ID" ON "QH_EME_FIR_AID_RES_VER"("RESOURCE_ID");
-- 5. 审核记录表
CREATE TABLE "QH_EME_FIR_AID_RES_AUD" (
"ID" VARCHAR2(32) NOT NULL,
"RESOURCE_ID" VARCHAR2(32) NOT NULL,
"AUDIT_STATUS" NUMBER(2),
"AUDIT_REJECT_REASON" VARCHAR2(500),
"AUDIT_BY" VARCHAR2(50),
"AUDIT_BY_ID" VARCHAR2(32),
"AUDIT_TIME" TIMESTAMP,
"CREATE_TIME" TIMESTAMP DEFAULT SYSDATE,
PRIMARY KEY ("ID")
);
COMMENT ON TABLE "QH_EME_FIR_AID_RES_AUD" IS '急救宣教资源审核记录';
COMMENT ON COLUMN "QH_EME_FIR_AID_RES_AUD"."ID" IS '主键';
COMMENT ON COLUMN "QH_EME_FIR_AID_RES_AUD"."RESOURCE_ID" IS '关联资源ID';
COMMENT ON COLUMN "QH_EME_FIR_AID_RES_AUD"."AUDIT_STATUS" IS '审核状态:10=待审核,11=已通过,12=已驳回';
COMMENT ON COLUMN "QH_EME_FIR_AID_RES_AUD"."AUDIT_REJECT_REASON" IS '驳回原因';
COMMENT ON COLUMN "QH_EME_FIR_AID_RES_AUD"."AUDIT_BY" IS '审核人';
COMMENT ON COLUMN "QH_EME_FIR_AID_RES_AUD"."AUDIT_BY_ID" IS '审核人ID';
COMMENT ON COLUMN "QH_EME_FIR_AID_RES_AUD"."AUDIT_TIME" IS '审核时间';
COMMENT ON COLUMN "QH_EME_FIR_AID_RES_AUD"."CREATE_TIME" IS '创建时间';
CREATE INDEX "IDX_FA_AUDIT_RESOURCE_ID" ON "QH_EME_FIR_AID_RES_AUD"("RESOURCE_ID");
-- 6. 推送记录表
CREATE TABLE "QH_EME_FIR_AID_PUSH_RD" (
"ID" VARCHAR2(32) NOT NULL,
"RESOURCE_ID" VARCHAR2(32) NOT NULL,
"RESOURCE_TITLE" VARCHAR2(200) DEFAULT NULL,
"ORDER_ID" VARCHAR2(32) NOT NULL,
"TARGET_USER_ID" VARCHAR2(32) DEFAULT NULL,
"PUSH_BY" VARCHAR2(50) DEFAULT NULL,
"PUSH_BY_ID" VARCHAR2(32) DEFAULT NULL,
"PUSH_TIME" TIMESTAMP DEFAULT NULL,
"TENANT_ID" VARCHAR2(32) DEFAULT NULL,
PRIMARY KEY ("ID"),
CONSTRAINT "UK_ORDER_RESOURCE" UNIQUE ("ORDER_ID", "RESOURCE_ID")
);
COMMENT ON TABLE "QH_EME_FIR_AID_PUSH_RD" IS '急救宣教推送记录表';
COMMENT ON COLUMN "QH_EME_FIR_AID_PUSH_RD"."ID" IS '主键';
COMMENT ON COLUMN "QH_EME_FIR_AID_PUSH_RD"."RESOURCE_ID" IS '资源ID';
COMMENT ON COLUMN "QH_EME_FIR_AID_PUSH_RD"."RESOURCE_TITLE" IS '资源标题冗余';
COMMENT ON COLUMN "QH_EME_FIR_AID_PUSH_RD"."ORDER_ID" IS '关联应急工单ID';
COMMENT ON COLUMN "QH_EME_FIR_AID_PUSH_RD"."TARGET_USER_ID" IS '推送目标用户ID';
COMMENT ON COLUMN "QH_EME_FIR_AID_PUSH_RD"."PUSH_BY" IS '推送人';
COMMENT ON COLUMN "QH_EME_FIR_AID_PUSH_RD"."PUSH_BY_ID" IS '推送人ID';
COMMENT ON COLUMN "QH_EME_FIR_AID_PUSH_RD"."PUSH_TIME" IS '推送时间';
COMMENT ON COLUMN "QH_EME_FIR_AID_PUSH_RD"."TENANT_ID" IS '租户ID';
CREATE INDEX "IDX_FA_PUSH_RECORD_ORDER_ID" ON "QH_EME_FIR_AID_PUSH_RD"("ORDER_ID");
-- 7. 字典数据
-- 7.1 内容类型
INSERT INTO "QH_SYS_DICT" ("ID", "TYPE", "DICT_NAME", "DICT_CODE", "DESCRIPTION", "DEL_FLAG", "TENANT_ID", "LOW_APP_ID", "CREATE_BY", "CREATE_TIME", "UPDATE_BY", "UPDATE_TIME")
VALUES ('1589123456789100001', 0, '内容类型', 'first_aid_content_type', '急救宣教资源内容类型', 0, 0, NULL, 'admin', SYSDATE, 'admin', SYSDATE);
INSERT INTO "QH_SYS_DICT_ITEM" ("ID", "DICT_ID", "ITEM_TEXT", "ITEM_VALUE", "DESCRIPTION", "SORT_ORDER", "STATUS", "CREATE_BY", "CREATE_TIME", "UPDATE_BY", "UPDATE_TIME") VALUES
('1589123456789100011', '1589123456789100001', '图文', 'IMAGE_TEXT', '图文内容', 1, 1, 'admin', SYSDATE, 'admin', SYSDATE);
INSERT INTO "QH_SYS_DICT_ITEM" ("ID", "DICT_ID", "ITEM_TEXT", "ITEM_VALUE", "DESCRIPTION", "SORT_ORDER", "STATUS", "CREATE_BY", "CREATE_TIME", "UPDATE_BY", "UPDATE_TIME") VALUES
('1589123456789100012', '1589123456789100001', '视频', 'VIDEO', '视频内容', 2, 1, 'admin', SYSDATE, 'admin', SYSDATE);
INSERT INTO "QH_SYS_DICT_ITEM" ("ID", "DICT_ID", "ITEM_TEXT", "ITEM_VALUE", "DESCRIPTION", "SORT_ORDER", "STATUS", "CREATE_BY", "CREATE_TIME", "UPDATE_BY", "UPDATE_TIME") VALUES
('1589123456789100013', '1589123456789100001', '音频', 'AUDIO', '音频内容', 3, 1, 'admin', SYSDATE, 'admin', SYSDATE);
INSERT INTO "QH_SYS_DICT_ITEM" ("ID", "DICT_ID", "ITEM_TEXT", "ITEM_VALUE", "DESCRIPTION", "SORT_ORDER", "STATUS", "CREATE_BY", "CREATE_TIME", "UPDATE_BY", "UPDATE_TIME") VALUES
('1589123456789100014', '1589123456789100001', 'PDF', 'PDF', 'PDF文档', 4, 1, 'admin', SYSDATE, 'admin', SYSDATE);
@@ -1,28 +0,0 @@
-- =====================================================
-- 缩短急救宣教相关表名达梦数据库
-- 原因原表名超过数据库限制
-- 日期2026-08-10
-- =====================================================
-- 1. 急救资源分类表
ALTER TABLE QH_EME_FIRST_AID_RESOURCE_CATEGORY RENAME TO QH_EME_FIR_AID_RES_CATE;
-- 2. 用户操作记录表
ALTER TABLE QH_EME_FIRST_AID_RESOURCE_USER_ACTION RENAME TO QH_EME_FIR_AID_RES_UACT;
-- 3. 资源版本表
ALTER TABLE QH_EME_FIRST_AID_RESOURCE_VERSION RENAME TO QH_EME_FIR_AID_RES_VER;
-- 4. 资源审核表
ALTER TABLE QH_EME_FIRST_AID_RESOURCE_AUDIT RENAME TO QH_EME_FIR_AID_RES_AUD;
-- 5. 推送记录表
ALTER TABLE QH_EME_FIRST_AID_PUSH_RECORD RENAME TO QH_EME_FIR_AID_PUSH_RD;
-- 6. 急救资源主表最后执行避免外键依赖
ALTER TABLE QH_EME_FIRST_AID_RESOURCE RENAME TO QH_EME_FIR_AID_RES;
-- =====================================================
-- 验证确认新表名已生效
-- SELECT TABLE_NAME FROM USER_TABLES WHERE TABLE_NAME LIKE 'QH_EME_FIR_AID_%';
-- =====================================================
@@ -1,10 +0,0 @@
-- QH_WAT_MONITOR_DATA 新增 EVENT_ID事件ID LOCATE_TIME定位时间字段
-- 数据库118-DM 达梦数据库SQL 全大写规范
ALTER TABLE "QH_WAT_MONITOR_DATA" ADD "EVENT_ID" VARCHAR(64) DEFAULT NULL;
ALTER TABLE "QH_WAT_MONITOR_DATA" ADD "LOCATE_TIME" DATETIME DEFAULT NULL;
COMMENT ON COLUMN "QH_WAT_MONITOR_DATA"."EVENT_ID" IS '事件ID';
COMMENT ON COLUMN "QH_WAT_MONITOR_DATA"."LOCATE_TIME" IS '定位时间';
CREATE INDEX "IDX_EVENT_ID" ON "QH_WAT_MONITOR_DATA"("EVENT_ID");
CREATE INDEX "IDX_WATCH_NO_EVENT_ID" ON "QH_WAT_MONITOR_DATA"("WATCH_NO", "EVENT_ID");
+146
View File
@@ -0,0 +1,146 @@
spring:
datasource:
druid:
stat-view-servlet:
enabled: true
loginUsername: admin
loginPassword: 123456
allow:
web-stat-filter:
enabled: true
dynamic:
druid:
initial-size: 5
min-idle: 5
maxActive: 20
maxWait: 60000
timeBetweenEvictionRunsMillis: 60000
minEvictableIdleTimeMillis: 300000
validationQuery: SELECT 1 FROM DUAL
testWhileIdle: true
testOnBorrow: false
testOnReturn: false
poolPreparedStatements: true
maxPoolPreparedStatementPerConnectionSize: 20
filters: stat,wall,slf4j
connectionProperties: druid.stat.mergeSql\=true;druid.stat.slowSqlMillis\=5000
datasource:
master:
url: jdbc:mysql://jeecg-boot-mysql:3306/jeecg-boot?characterEncoding=UTF-8&useUnicode=true&useSSL=false&tinyInt1isBit=false&allowPublicKeyRetrieval=true&serverTimezone=Asia/Shanghai
username: root
password: root
driver-class-name: com.mysql.cj.jdbc.Driver
redis:
database: 0
host: jeecg-boot-redis
password:
port: 6379
rabbitmq:
host: jeecg-boot-rabbitmq
username: guest
password: guest
port: 5672
publisher-confirms: true
publisher-returns: true
virtual-host: /
listener:
simple:
acknowledge-mode: manual
concurrency: 1
max-concurrency: 1
retry:
enabled: true
minidao:
base-package: org.jeecg.modules.jmreport.*,org.jeecg.modules.drag.*
jeecg:
signatureSecret: dd05f1c54d63749eda95f9fa6d49v442a
signUrls: /sys/dict/getDictItems/*,/sys/dict/loadDict/*,/sys/dict/loadDictOrderByValue/*,/sys/dict/loadDictItem/*,/sys/dict/loadTreeData,/sys/api/queryTableDictItemsByCode,/sys/api/queryFilterTableDictInfo,/sys/api/queryTableDictByKeys,/sys/api/translateDictFromTable,/sys/api/translateDictFromTableByKeys
uploadType: local
domainUrl:
pc: http://localhost:3100
app: http://localhost:8051
path:
upload: /opt/upFiles
webapp: /opt/webapp
shiro:
excludeUrls: /test/jeecgDemo/demo3,/test/jeecgDemo/redisDemo/**,/category/**,/visual/**,/map/**,/jmreport/bigscreen2/**
oss:
endpoint: oss-cn-beijing.aliyuncs.com
accessKey: ??
secretKey: ??
bucketName: jeecgdev
staticDomain: ??
elasticsearch:
cluster-name: jeecg-ES
cluster-nodes: jeecg-boot-es:9200
check-enabled: false
file-view-domain: 127.0.0.1:8012
minio:
minio_url: http://minio.jeecg.com
minio_name: ??
minio_pass: ??
bucketName: otatest
jmreport:
mode: dev
is_verify_token: false
verify_methods: remove,delete,save,add,update
wps:
domain: https://wwo.wps.cn/office/
appid: ??
appsecret: ??
xxljob:
enabled: false
adminAddresses: http://jeecg-boot-xxljob:9080/xxl-job-admin
appname: ${spring.application.name}
accessToken: ''
logPath: logs/jeecg/job/jobhandler/
logRetentionDays: 30
redisson:
address: jeecg-boot-redis:6379
password:
type: STANDALONE
enabled: true
logging:
level:
org.jeecg.modules.system.mapper: info
cas:
prefixUrl: http://localhost:8888/cas
knife4j:
production: false
basic:
enable: false
username: jeecg
password: jeecg1314
justauth:
enabled: true
type:
GITHUB:
client-id: ??
client-secret: ??
redirect-uri: http://sso.test.com:8080/jeecg-boot/thirdLogin/github/callback
WECHAT_ENTERPRISE:
client-id: ??
client-secret: ??
redirect-uri: http://sso.test.com:8080/jeecg-boot/thirdLogin/wechat_enterprise/callback
agent-id: ??
DINGTALK:
client-id: ??
client-secret: ??
redirect-uri: http://sso.test.com:8080/jeecg-boot/thirdLogin/dingtalk/callback
cache:
type: default
prefix: 'demo::'
timeout: 1h
third-app:
enabled: false
type:
WECHAT_ENTERPRISE:
enabled: false
client-id: ??
client-secret: ??
agent-id: ??
DINGTALK:
enabled: false
client-id: ??
client-secret: ??
agent-id: ??
+13
View File
@@ -0,0 +1,13 @@
jeecg:
route:
config:
#type:database nacos yml
data-type: database
group: DEFAULT_GROUP
data-id: jeecg-gateway-router
spring:
redis:
database: 0
host: jeecg-boot-redis
port: 6379
password:
+65
View File
@@ -0,0 +1,65 @@
[
{
"id": "jeecg-system",
"order": 0,
"predicates": [
{
"name": "Path",
"args": {
"_genkey_0": "/sys/**",
"_genkey_1": "/jmreport/**",
"_genkey_3": "/online/**",
"_genkey_4": "/generic/**"
}
}
],
"filters": [],
"uri": "lb://jeecg-system"
},
{
"id": "jeecg-demo",
"order": 1,
"predicates": [
{
"name": "Path",
"args": {
"_genkey_0": "/mock/**",
"_genkey_1": "/test/**",
"_genkey_2": "/bigscreen/template1/**",
"_genkey_3": "/bigscreen/template2/**"
}
}
],
"filters": [],
"uri": "lb://jeecg-demo"
},
{
"id": "jeecg-system-websocket",
"order": 2,
"predicates": [
{
"name": "Path",
"args": {
"_genkey_0": "/websocket/**",
"_genkey_1": "/newsWebsocket/**"
}
}
],
"filters": [],
"uri": "lb:ws://jeecg-system"
},
{
"id": "jeecg-demo-websocket",
"order": 3,
"predicates": [
{
"name": "Path",
"args": {
"_genkey_0": "/vxeSocket/**"
}
}
],
"filters": [],
"uri": "lb:ws://jeecg-demo"
}
]
+100
View File
@@ -0,0 +1,100 @@
server:
tomcat:
max-swallow-size: -1
error:
include-exception: true
include-stacktrace: ALWAYS
include-message: ALWAYS
compression:
enabled: true
min-response-size: 1024
mime-types: application/javascript,application/json,application/xml,text/html,text/xml,text/plain,text/css,image/*
management:
health:
mail:
enabled: false
endpoints:
web:
exposure:
include: "*"
health:
sensitive: true
endpoint:
health:
show-details: ALWAYS
spring:
servlet:
multipart:
max-file-size: 10MB
max-request-size: 10MB
mail:
host: smtp.163.com
username: jeecgos@163.com
password: ??
properties:
mail:
smtp:
auth: true
starttls:
enable: true
required: true
quartz:
job-store-type: jdbc
initialize-schema: embedded
auto-startup: false
startup-delay: 1s
overwrite-existing-jobs: true
properties:
org:
quartz:
scheduler:
instanceName: MyScheduler
instanceId: AUTO
jobStore:
class: org.springframework.scheduling.quartz.LocalDataSourceJobStore
driverDelegateClass: org.quartz.impl.jdbcjobstore.StdJDBCDelegate
tablePrefix: QRTZ_
isClustered: true
misfireThreshold: 12000
clusterCheckinInterval: 15000
threadPool:
class: org.quartz.simpl.SimpleThreadPool
threadCount: 10
threadPriority: 5
threadsInheritContextClassLoaderOfInitializingThread: true
jackson:
date-format: yyyy-MM-dd HH:mm:ss
time-zone: GMT+8
aop:
proxy-target-class: true
activiti:
check-process-definitions: false
async-executor-activate: false
job-executor-activate: false
jpa:
open-in-view: false
freemarker:
suffix: .ftl
content-type: text/html
charset: UTF-8
cache: false
prefer-file-system-access: false
template-loader-path:
- classpath:/templates
mvc:
static-path-pattern: /**
pathmatch:
matching-strategy: ant_path_matcher
resource:
static-locations: classpath:/static/,classpath:/public/
autoconfigure:
exclude: com.alibaba.druid.spring.boot.autoconfigure.DruidDataSourceAutoConfigure
mybatis-plus:
mapper-locations: classpath*:org/jeecg/modules/**/xml/*Mapper.xml
global-config:
banner: false
db-config:
id-type: ASSIGN_ID
table-underline: true
configuration:
call-setters-on-nulls: true
@@ -0,0 +1,59 @@
spring:
shardingsphere:
datasource:
names: ds0,ds1
ds0:
driverClassName: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://jeecg-boot-mysql:3306/jeecg-boot?useSSL=false&useUnicode=true&characterEncoding=utf-8&serverTimezone=Asia/Shanghai
type: com.alibaba.druid.pool.DruidDataSource
username: root
password: root
ds1:
driverClassName: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://jeecg-boot-mysql:3306/jeecg-boot2?useSSL=false&useUnicode=true&characterEncoding=utf-8&serverTimezone=Asia/Shanghai
type: com.alibaba.druid.pool.DruidDataSource
username: root
password: root
props:
sql-show: true
rules:
replica-query:
load-balancers:
round-robin:
type: ROUND_ROBIN
props:
default: 0
data-sources:
prds:
primary-data-source-name: ds0
replica-data-source-names: ds1
load-balancer-name: round_robin
sharding:
binding-tables:
- sys_log
key-generators:
snowflake:
type: SNOWFLAKE
props:
worker-id: 123
sharding-algorithms:
table-classbased:
props:
strategy: standard
algorithmClassName: org.jeecg.modules.test.sharding.algorithm.StandardModTableShardAlgorithm
type: CLASS_BASED
database-inline:
type: INLINE
props:
algorithm-expression: ds$->{operate_type % 2}
tables:
sys_log:
actual-data-nodes: ds$->{0..1}.sys_log$->{0..1}
database-strategy:
standard:
sharding-column: operate_type
sharding-algorithm-name: database-inline
table-strategy:
standard:
sharding-algorithm-name: table-classbased
sharding-column: log_type
@@ -0,0 +1,33 @@
spring:
shardingsphere:
datasource:
names: ds0
ds0:
driverClassName: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://jeecg-boot-mysql:3306/jeecg-boot?useSSL=false&useUnicode=true&characterEncoding=utf-8&serverTimezone=Asia/Shanghai
username: root
password: root
type: com.alibaba.druid.pool.DruidDataSource
props:
sql-show: true
rules:
sharding:
binding-tables: sys_log
key-generators:
snowflake:
type: SNOWFLAKE
props:
worker-id: 123
sharding-algorithms:
table-classbased:
props:
strategy: standard
algorithmClassName: org.jeecg.modules.test.sharding.algorithm.StandardModTableShardAlgorithm
type: CLASS_BASED
tables:
sys_log:
actual-data-nodes: ds0.sys_log$->{0..1}
table-strategy:
standard:
sharding-algorithm-name: table-classbased
sharding-column: log_type
@@ -38,6 +38,7 @@
<dependency>
<groupId>org.jeecgframework.boot</groupId>
<artifactId>jeecg-boot-base-core</artifactId>
<classifier>xj</classifier>
<scope>provided</scope>
</dependency>
</dependencies>
@@ -30,6 +30,10 @@
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-validation</artifactId>
</dependency>
<dependency>
<groupId>com.mysql</groupId>
<artifactId>mysql-connector-j</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-configuration-processor</artifactId>
-1
View File
@@ -20,7 +20,6 @@
<module>font-resources</module>
<module>monitoring-sync</module>
<module>renkang-test</module>
<module>xj-anyan-api</module>
</modules>
<properties>
@@ -25,7 +25,6 @@ import org.springframework.core.task.TaskExecutor;
import org.springframework.jdbc.support.JdbcTransactionManager;
import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;
import org.springframework.transaction.PlatformTransactionManager;
import org.springframework.util.StringUtils;
import javax.sql.DataSource;
import java.util.List;
@@ -126,21 +125,8 @@ public class BatchAutoConfiguration {
@BatchDataSource ObjectProvider<DataSource> batchDataSource,
BatchProperties properties
) {
DataSource dataSourceToUse = batchDataSource.getIfAvailable(() -> dataSource);
BatchProperties.Jdbc jdbc = properties.getJdbc();
// 达梦数据库兼容处理:设置platform绕过构造器中的自动类型检测
if (!StringUtils.hasText(jdbc.getPlatform())) {
jdbc.setPlatform("dm");
}
// 重写afterPropertiesSet()跳过SQL脚本初始化:
// 父类会先断言SQL文件存在再检查initializeSchema mode,导致找不到schema-dm.sql时报错
// Batch元数据表已通过数据迁移创建,无需自动建表
return new BatchDataSourceScriptDatabaseInitializer(dataSourceToUse, jdbc) {
@Override
public void afterPropertiesSet() {
// 跳过Batch元数据表的自动建表,防止找不到schema-dm.sql文件报错
}
};
return new BatchDataSourceScriptDatabaseInitializer(batchDataSource.getIfAvailable(() -> dataSource),
properties.getJdbc());
}
}
@@ -34,12 +34,6 @@ public class CustomBatchConfigurer extends BasicBatchConfigurer {
this.taskExecutor = taskExecutor;
}
@Override
public void initialize() {
// 调用父类的 initialize() 方法来初始化 JobRepository 等
super.initialize();
}
@Override
protected JobLauncher createJobLauncher() throws Exception {
SimpleJobLauncher jobLauncher = new SimpleJobLauncher();
+1
View File
@@ -33,6 +33,7 @@
<dependency>
<groupId>org.jeecgframework.boot</groupId>
<artifactId>jeecg-boot-base-core</artifactId>
<classifier>xj</classifier>
<scope>provided</scope>
</dependency>
</dependencies>
-46
View File
@@ -1,46 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://maven.apache.org/POM/4.0.0"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>com.renkang</groupId>
<artifactId>functional-modules</artifactId>
<version>2.0.0</version>
</parent>
<artifactId>xj-anyan-api</artifactId>
<description>xj安眼系统API</description>
<version>2.0.0</version>
<properties>
<maven.compiler.source>8</maven.compiler.source>
<maven.compiler.target>8</maven.compiler.target>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot</artifactId>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-configuration-processor</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.retry</groupId>
<artifactId>spring-retry</artifactId>
</dependency>
<dependency>
<groupId>org.jeecgframework.boot</groupId>
<artifactId>jeecg-boot-base-core</artifactId>
<scope>provided</scope>
</dependency>
</dependencies>
</project>
@@ -1,213 +0,0 @@
package com.renkang.anyan.client;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.renkang.anyan.model.dto.*;
import com.renkang.anyan.model.vo.*;
import java.util.Date;
import java.util.List;
/**
* @Description: AnYanClient xj安眼系统接口调用客户端
* @Author: feng
* @Date: 2025-8-1
* @Version: V1.0
*/
public interface AnYanClient {
/**
* 获取服务访问令牌
*
* @return
*/
String getAuthToken();
/**
* 获取服务访问令牌(密码模式)
*
* @return
*/
AuthResult getAuthTokenByPassword(String username, String password);
/**
* 刷新口令
*/
void refreshToken();
/**
* 体检医院人数统计查询
*
* @param medicalYear 体检年份
* @return
*/
List<MedicalPeopleNumStatisticsVO> examinationStatistics(Integer medicalYear);
/**
* 健康打卡数据统计查询(血压,减重,血糖)
*
* @param beginDate
* @param endDate
* @return
*/
HealthSignStatVO healthCheckStatistics(Date beginDate, Date endDate);
/**
* 健康打卡异常数据详细查询(血压)
*
* @param healthSignListParam
* @return
*/
IPage<BloodPressureList> bloodPressureList(HealthSignListParam healthSignListParam);
/**
* 健康打卡异常数据详细查询(减重)
*
* @param healthSignListParam
* @return
*/
IPage<WeightPressureList> weightPressureList(HealthSignListParam healthSignListParam);
/**
* 健康打卡异常数据详细查询(血糖)
*
* @param healthSignListParam
* @return
*/
IPage<BloodSugarClockSList> bloodSugarClockSList(HealthSignListParam healthSignListParam);
/**
* 油田医院数据查询
*
* @return
*/
List<HospitalListVO> hospitalList();
/**
* 健康小屋基础数据查询
*
* @return
*/
List<HealthRoomBaseVO> healthPlaceHomList();
/**
* 健康小屋详细数据查询
*
* @param healthRoomDTO
* @return
*/
IPage<HealthPlaceHomeDetailsVO> healthPlaceHomDetailList(HealthRoomDTO healthRoomDTO);
/**
* 当年体检异常人数统计
*
* @param medicalYear 年份
* @return
*/
MedicalAbnormalStatisticsVO medicalAbnormalStatistics(Integer medicalYear);
/**
* 当年体检异常人员列表
*
* @param param
* @return
*/
IPage<MedicalAbnormalVO> medicalAbnormalList(MedicalAbnormalDTO param);
/**
* 公网环境获取服务访问token (目前仅用于访问安眼大屏)
*
* @return
*/
String publicNetworkToken();
/**
* 公网环境获取服务访问token (目前仅用于访问安眼大屏, 不走缓存, 每次用现取)
*
* @return
*/
AuthResult publicNetworkTokenNoCache();
/**
* 获取用户信息
*
* @param token
* @return
*/
AnYanUserInfoResult getAnYanUserInfo(String token, String username);
/**
* 批量拉取安眼平台AED信息 , 用于定时任务更新本地数据的AED数据
*
* @return
*/
List<AnYanAedInfo> queryAnYanAedInfo();
/**
* 最新检查员工信息查询接口 (大屏首页重点关爱趋势预警滚动列表,固定查100前项)
*
* @return 最新的100条数据
*/
List<CarePersonList> homeCarePersonList();
/**
* 一人一案信息详情接口 (用大屏首页重点关爱趋势预警滚动列表点击数据详情)
*
* @param employeeNum 工号
* @return
*/
CareUserListVo careUserDetails(String anYanUserId, String employeeNum);
/**
* 一人一案分页列表查询接口(用大屏首页重点关爱趋势预警弹窗列表)
*
* @param param 查询条件
* @return
*/
IPage<CareUserListVo> careUserDetailsPage(CareUserDetailsParam param);
/**
* 查询关爱联络员信息及急救人员查询接口
*
* @param param 查询条件
* @return
*/
IPage<EmergencyContactVO> queryEmergencyContact(EmergencyContactParam param);
/**
* 批量更新员工关键信息接口
*
* @param employeeNumList
* @return
*/
List<AnYanUpdateUserBatchInfo> updateUserBatch(List<String> employeeNumList);
/**
* 更新单个员工扩展信息
* 是否是借调人员 这个判断是依据 数据中是否存在currentOfficeId来决定的,存在说明是借调人员,不存在说明不是借调人员
*
* @param employeeNum
* @return
*/
AnYanUserEmployee updateEmployeeNum(String employeeNum);
/**
* 体检数据
*
* @param param
* @return
*/
IPage<AnYanHealthCheckNew> queryAnYanHealthCheckNew(AnYanHealthCheckNewParam param);
/**
* 根据id查询体检数据
*
* @param id
* @return
*/
AnYanEmpHealthCheckNew queryEmpHealthCheckNew(String id);
/**
* 根据检查id、科室编号、科室名称查询体检记录
*/
List<HealthCheckProject> queryHealthCheckProject(AnYanHealthCheckProjectParam param);
}
@@ -1,441 +0,0 @@
package com.renkang.anyan.client;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.StrUtil;
import cn.hutool.json.JSONUtil;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.renkang.anyan.config.AnYanProperties;
import com.renkang.anyan.config.RestTemplateUtil;
import com.renkang.anyan.constants.AnYanConstants;
import com.renkang.anyan.enums.AnYanApiEnum;
import com.renkang.anyan.model.dto.*;
import com.renkang.anyan.model.vo.*;
import com.renkang.anyan.utils.PageResultToBeanUtil;
import com.renkang.anyan.utils.SM4Utils;
import com.renkang.anyan.utils.StringUtils;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.ObjectUtils;
import org.jeecg.common.exception.ExceptionAssertsUtil;
import org.jeecg.util.RedisClientUtil;
import org.jeecg.util.RedisKeyPrefix;
import org.springframework.http.HttpHeaders;
import org.springframework.http.HttpStatus;
import org.springframework.http.MediaType;
import org.springframework.http.ResponseEntity;
import org.springframework.retry.annotation.EnableRetry;
import org.springframework.retry.annotation.Retryable;
import org.springframework.stereotype.Service;
import org.springframework.util.LinkedMultiValueMap;
import org.springframework.util.MultiValueMap;
import org.springframework.web.client.HttpClientErrorException;
import java.util.*;
import java.util.stream.Collectors;
/**
* @Description: AnYanClientExecutor xj安眼系统接口调用执行器
* @Author: feng
* @Date: 2025-8-1
* @Version: V1.0
*/
@Slf4j
@Service
@EnableRetry
@RequiredArgsConstructor
public class AnYanClientExecutor implements AnYanClient {
//安眼获取token访问公钥
private String publicKey = "MFwwDQYJKoZIhvcNAQEBBQADSwAwSAJBAJL0JkqsUoK6kt3JyogsgqNp9VDGDp+t3ZAGMbVoMPdHNT2nfiIVh9ZMNHF7g2XiAa8O8AQWyh2PjMR0NiUSVQMCAwEAAQ==";
private final RedisClientUtil redisClientUtil;
private final AnYanProperties anYanProperties;
@Override
public String getAuthToken() {
String token = redisClientUtil.get(new RedisKeyPrefix(AnYanConstants.AN_YAN_API_TOKEN_PREFIX), "token", String.class);
if (StrUtil.isEmpty(token)) {
AuthResult authResult = getAuthTokenExecutor();
if (ObjectUtil.isNotEmpty(authResult) && StrUtil.isNotEmpty(authResult.getAccess_token())) {
token = authResult.getAccess_token();
int expireSeconds = ObjectUtil.isNotEmpty(authResult.getExpires_in()) ? authResult.getExpires_in() : 7200;
redisClientUtil.set(new RedisKeyPrefix(expireSeconds, AnYanConstants.AN_YAN_API_TOKEN_PREFIX), "token", token);
}
}
return token;
}
private AuthResult getAuthTokenExecutor() {
AuthParam authParam = new AuthParam();
authParam.setClient_id(anYanProperties.getClientId());
authParam.setClient_secret(anYanProperties.getClientSecret());
HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.MULTIPART_FORM_DATA);
ResponseEntity<AuthResult> responseEntity = RestTemplateUtil.postExchange(AnYanApiEnum.QUERY_AUTH_TOKEN, headers, authParam, AuthResult.class);
if (HttpStatus.OK.equals(responseEntity.getStatusCode()) && ObjectUtils.isNotEmpty(responseEntity.getBody())) {
return responseEntity.getBody();
} else {
ExceptionAssertsUtil.fail("------安眼系统获取token失败------" + responseEntity.getBody());
}
return new AuthResult();
}
/**
* @description: 通过密码获取令牌
* @author PengJ
* @date 2025/10/24 11:15
*/
@Override
public AuthResult getAuthTokenByPassword(String username, String password) {
try {
String encryptPassword = StringUtils.encryptByPublicKey(publicKey, password);
HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.MULTIPART_FORM_DATA);
MultiValueMap<String, String> formData = new LinkedMultiValueMap<>();
formData.add("grant_type", "password");
formData.add("username", username);
formData.add("password", encryptPassword);
formData.add("client_id", anYanProperties.getClientId());
formData.add("client_secret", anYanProperties.getClientSecret());
ResponseEntity<AuthResult> authResult = RestTemplateUtil.postExchangeForGetTokenByPassword(AnYanApiEnum.QUERY_AUTH_TOKEN, formData, headers, AuthResult.class);
if (HttpStatus.OK.equals(authResult.getStatusCode())
&& ObjectUtils.isNotEmpty(authResult.getBody())) {
String token = authResult.getBody().getAccess_token();
int expireSeconds = ObjectUtil.isNotEmpty(authResult.getBody().getExpires_in()) ? authResult.getBody().getExpires_in() : 3600;
redisClientUtil.set(new RedisKeyPrefix(expireSeconds, AnYanConstants.AN_YAN_API_USER_TOKEN_PREFIX), username, token);
return authResult.getBody();
} else {
log.error("------安眼系统获取token失败(密码模式){}------", authResult.getBody());
ExceptionAssertsUtil.fail("------安眼系统获取token失败------" + authResult.getBody());
return null;
}
} catch (HttpClientErrorException e) {
log.error("------安眼系统获取token失败(密码模式){}------", e.getMessage());
String replace = Objects.requireNonNull(e.getMessage()).replace("401 Unauthorized: ", "");
replace = replace.replace("\"", "");
AuthResult bean = JSONUtil.toBean(replace, AuthResult.class);
ExceptionAssertsUtil.fail(bean.getMessage());
} catch (Exception e) {
ExceptionAssertsUtil.fail(e.getMessage());
}
return null;
}
/*调用安眼提供的支持公网访问的获取token接口也能通过接口的鉴权, 并且部分接口还需要传入鉴权用户的身份证号, 所以业务接口直接使用公网环境的鉴权接口
@Override
public void refreshToken() {
AuthResult authResult = getAuthTokenExecutor();
if (ObjectUtil.isNotEmpty(authResult) && StrUtil.isNotEmpty(authResult.getAccess_token())) {
int expireSeconds = ObjectUtil.isNotEmpty(authResult.getExpires_in()) ? authResult.getExpires_in() : 7200;
redisClientUtil.set(new RedisKeyPrefix(expireSeconds, AnYanConstants.AN_YAN_API_TOKEN_PREFIX), "token", authResult.getAccess_token());
}
}
private HttpHeaders buildTokenHeader() {
HttpHeaders headers = new HttpHeaders();
headers.add(AnYanConstants.AUTHORIZATION, AnYanConstants.TOKEN_TYPE + getAuthToken());
return headers;
}*/
@Override
public void refreshToken() {
AuthResult authResult = publicNetworkTokenNoCache();
if (ObjectUtil.isNotEmpty(authResult) && StrUtil.isNotEmpty(authResult.getAccess_token())) {
int expireSeconds = ObjectUtil.isNotEmpty(authResult.getExpires_in()) ? authResult.getExpires_in() : 7200;
redisClientUtil.set(new RedisKeyPrefix(expireSeconds, AnYanConstants.AN_YAN_API_TOKEN_PREFIX), "publicToken", authResult.getAccess_token());
log.info("---------刷新安眼token成功-------新的token{},剩余过期时间:{}", authResult.getAccess_token(), authResult.getExpires_in());
}
}
private HttpHeaders buildTokenHeader() {
HttpHeaders headers = new HttpHeaders();
headers.add(AnYanConstants.AUTHORIZATION, AnYanConstants.TOKEN_TYPE + publicNetworkToken());
headers.add(AnYanConstants.HEADER_PARAM_X_AUTH_ID, AnYanConstants.X_AUTH_ID_PREFIX + anYanProperties.getPublicUserCardNo());
headers.add(AnYanConstants.HEADER_PARAM_ROLES, AnYanConstants.HEADER_PARAM_ROLES_VALUES);
return headers;
}
@Override
@Retryable(maxAttempts = 2)
public List<MedicalPeopleNumStatisticsVO> examinationStatistics(Integer medicalYear) {
if (null == medicalYear) {
medicalYear = DateUtil.year(new Date());
}
JSONObject param = new JSONObject();
param.put("medicalYear", String.valueOf(medicalYear));
AnYanResult<Object> result = RestTemplateUtil.postExchange(AnYanApiEnum.HEALTH_EXAMINATION_STATISTICS, buildTokenHeader(), param);
List<Object> listMaps = (List<Object>) result.getData();
return listMaps.stream().map(lMap -> BeanUtil.toBean(lMap, MedicalPeopleNumStatisticsVO.class)).collect(Collectors.toList());
}
@Override
@Retryable(maxAttempts = 2)
public HealthSignStatVO healthCheckStatistics(Date beginDate, Date endDate) {
JSONObject param = new JSONObject();
param.put("inputDateBegin", ObjectUtil.isEmpty(beginDate) ? DateUtil.today() : DateUtil.formatDate(beginDate));
param.put("inputDateEnd", ObjectUtil.isEmpty(endDate) ? DateUtil.today() : DateUtil.formatDate(endDate));
AnYanResult<Object> result = RestTemplateUtil.postExchange(AnYanApiEnum.HEALTH_CHECK_STATISTICS, buildTokenHeader(), param);
return BeanUtil.toBean(result.getData(), HealthSignStatVO.class);
}
@Override
@Retryable(maxAttempts = 2)
public IPage<BloodPressureList> bloodPressureList(HealthSignListParam healthSignListParam) {
AnYanResult<Object> result = RestTemplateUtil.postExchange(AnYanApiEnum.BLOOD_PRESSURE_LIST, buildTokenHeader(), healthSignListParam);
return new PageResultToBeanUtil<BloodPressureList>().transform(result, BloodPressureList.class);
}
@Override
@Retryable(maxAttempts = 2)
public IPage<WeightPressureList> weightPressureList(HealthSignListParam healthSignListParam) {
AnYanResult<Object> result = RestTemplateUtil.postExchange(AnYanApiEnum.WEIGHT_PRESSURE_LIST, buildTokenHeader(), healthSignListParam);
return new PageResultToBeanUtil<WeightPressureList>().transform(result, WeightPressureList.class);
}
@Override
@Retryable(maxAttempts = 2)
public IPage<BloodSugarClockSList> bloodSugarClockSList(HealthSignListParam healthSignListParam) {
AnYanResult<Object> result = RestTemplateUtil.postExchange(AnYanApiEnum.BLOOD_SUGAR_CLOCKS_LIST, buildTokenHeader(), healthSignListParam);
return new PageResultToBeanUtil<BloodSugarClockSList>().transform(result, BloodSugarClockSList.class);
}
@Override
@Retryable(maxAttempts = 2)
public List<HospitalListVO> hospitalList() {
AnYanResult<Object> result = RestTemplateUtil.postExchange(AnYanApiEnum.HOSPITAL_LIST, buildTokenHeader(), null);
List<Object> listMaps = (List<Object>) result.getData();
return listMaps.stream().map(lMap -> BeanUtil.toBean(lMap, HospitalListVO.class)).collect(Collectors.toList());
}
@Override
@Retryable(maxAttempts = 2)
public List<HealthRoomBaseVO> healthPlaceHomList() {
AnYanResult<Object> result = RestTemplateUtil.postExchange(AnYanApiEnum.HEALTH_PLACE_ROOM_LIST, buildTokenHeader(), null);
List<Object> listMaps = (List<Object>) result.getData();
return listMaps.stream().map(lMap -> BeanUtil.toBean(lMap, HealthRoomBaseVO.class)).collect(Collectors.toList());
}
@Override
@Retryable(maxAttempts = 2)
public IPage<HealthPlaceHomeDetailsVO> healthPlaceHomDetailList(HealthRoomDTO healthRoomDTO) {
AnYanResult<Object> result = RestTemplateUtil.postExchange(AnYanApiEnum.HEALTH_PLACE_ROOM_INFO_LIST, buildTokenHeader(), healthRoomDTO);
return new PageResultToBeanUtil<HealthPlaceHomeDetailsVO>().transform(result, HealthPlaceHomeDetailsVO.class);
}
@Override
@Retryable(maxAttempts = 2)
public MedicalAbnormalStatisticsVO medicalAbnormalStatistics(Integer medicalYear) {
if (null == medicalYear) {
medicalYear = DateUtil.year(new Date());
}
JSONObject param = new JSONObject();
param.put("medicalYear", medicalYear);
AnYanResult<Object> result = RestTemplateUtil.postExchange(AnYanApiEnum.MEDICAL_ABNORMAL_STATISTICS, buildTokenHeader(), param);
return BeanUtil.toBean(result.getData(), MedicalAbnormalStatisticsVO.class);
}
@Override
@Retryable(maxAttempts = 2)
public IPage<MedicalAbnormalVO> medicalAbnormalList(MedicalAbnormalDTO param) {
AnYanResult<Object> result = RestTemplateUtil.postExchange(AnYanApiEnum.MEDICAL_ABNORMAL_LIST, buildTokenHeader(), param);
return new PageResultToBeanUtil<MedicalAbnormalVO>().transform(result, MedicalAbnormalVO.class);
}
@Override
public String publicNetworkToken() {
String token = redisClientUtil.get(new RedisKeyPrefix(AnYanConstants.AN_YAN_API_TOKEN_PREFIX), "publicToken", String.class);
if (StrUtil.isEmpty(token)) {
AuthResult authResult = publicNetworkTokenNoCache();
if (null != authResult) {
token = authResult.getAccess_token();
int expireSeconds = ObjectUtil.isNotEmpty(authResult.getExpires_in()) ? authResult.getExpires_in() : 7200;
redisClientUtil.set(new RedisKeyPrefix(expireSeconds, AnYanConstants.AN_YAN_API_TOKEN_PREFIX), "publicToken", token);
}
}
return token;
}
/**
* @description: 旧版公网获取token实现(SM4 + AnYanResult 包裹解密),保留备份
* @author PengJ
*/
public AuthResult publicNetworkTokenNoCacheBAK() {
JSONObject param = new JSONObject();
String password = anYanProperties.getPublicPassWrod();
String userName = anYanProperties.getPublicUserNmae();
try {
String sm4Password = SM4Utils.encryptSM4(password);
String encryptPassword = StringUtils.encryptByPublicKey(publicKey, password);
param.put("password", encryptPassword);
param.put("selfPassword", sm4Password);
param.put("loginName", userName);
param.put("timeStamp", UUID.randomUUID().toString());
ResponseEntity<AnYanResult> responseEntity = RestTemplateUtil.postExchangeForGetToken(AnYanApiEnum.PUBLIC_NETWORK_AUTH_TOKEN, param, AnYanResult.class);
//安眼提供的接口包过深 ,先从AnYanResult对象中取出加密的密文,后在解密密文拿出 AuthResult对象 , 再从AuthResult对象中拿出 access_token
AnYanResult anYanResult = responseEntity.getBody();
if (ObjectUtil.isNotEmpty(anYanResult) && ObjectUtil.isNotEmpty(anYanResult.getData())) {
String decryptAuthResult = SM4Utils.decryptSM4((String) anYanResult.getData());
AuthResult authResult = JSON.parseObject(decryptAuthResult).toJavaObject(AuthResult.class);
if (null != authResult && null != authResult.getAccess_token()) {
return authResult;
} else {
ExceptionAssertsUtil.fail("获取安眼系统token失败");
}
}
} catch (Exception e) {
e.printStackTrace();
ExceptionAssertsUtil.fail("获取安眼系统token失败");
}
return null;
}
/**
* @description: 公网获取token(密码模式,调用方式与 getAuthTokenByPassword 保持一致)
* 表单提交 + 公网 host + QUERY_AUTH_TOKEN,仅 RSA 加密密码,不写 Redis(缓存由调用方负责)
* @author PengJ
*/
@Override
public AuthResult publicNetworkTokenNoCache() {
String username = anYanProperties.getPublicUserNmae();
String password = anYanProperties.getPublicPassWrod();
try {
// 仅 RSA 加密密码,与 getAuthTokenByPassword 保持一致
String encryptPassword = StringUtils.encryptByPublicKey(publicKey, password);
HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.MULTIPART_FORM_DATA);
MultiValueMap<String, String> formData = new LinkedMultiValueMap<>();
formData.add("grant_type", "password");
formData.add("username", username);
formData.add("password", encryptPassword);
formData.add("client_id", anYanProperties.getClientId());
formData.add("client_secret", anYanProperties.getClientSecret());
ResponseEntity<AuthResult> authResult = RestTemplateUtil.postExchangeForGetTokenByPassword(AnYanApiEnum.QUERY_AUTH_TOKEN, formData, headers, AuthResult.class);
if (HttpStatus.OK.equals(authResult.getStatusCode())
&& ObjectUtils.isNotEmpty(authResult.getBody())) {
return authResult.getBody();
} else {
log.error("------安眼系统获取公网token失败{}------", authResult.getBody());
ExceptionAssertsUtil.fail("------安眼系统获取公网token失败------" + authResult.getBody());
return null;
}
} catch (HttpClientErrorException e) {
log.error("------安眼系统获取公网token失败{}------", e.getMessage());
String replace = Objects.requireNonNull(e.getMessage()).replace("401 Unauthorized: ", "");
replace = replace.replace("\"", "");
AuthResult bean = JSONUtil.toBean(replace, AuthResult.class);
ExceptionAssertsUtil.fail(bean.getMessage());
} catch (Exception e) {
ExceptionAssertsUtil.fail(e.getMessage());
}
return null;
}
/**
* @description: 根据token获取用户信息
* @author PengJ
* @date 2025/10/24 17:00
*/
@Override
@Retryable(maxAttempts = 2)
public AnYanUserInfoResult getAnYanUserInfo(String token, String username) {
HttpHeaders headers = new HttpHeaders();
headers.add(AnYanConstants.AUTHORIZATION, AnYanConstants.TOKEN_TYPE + token);
long time1 = System.currentTimeMillis();
ResponseEntity<AnYanUserInfoResult> exchange = RestTemplateUtil.getExchange(AnYanApiEnum.USER_INFO_UNIT_V2, headers, AnYanUserInfoResult.class);
long time2 = System.currentTimeMillis();
log.info("根据token获取用户信息耗时:" + (time2 - time1) + "ms");
redisClientUtil.set(new RedisKeyPrefix(-1, AnYanConstants.AN_YAN_API_USERINFO_PREFIX), username, exchange);
return BeanUtil.toBean(exchange.getBody(), AnYanUserInfoResult.class);
}
@Override
@Retryable(maxAttempts = 2)
public List<AnYanAedInfo> queryAnYanAedInfo() {
//安眼接口本身支持分页查询 , 因此方法用于定时任务批量查询更新 , 这里一次性查询所有
AnYanResult<Object> result = RestTemplateUtil.postExchange(AnYanApiEnum.QUERY_AN_YAN_AED, buildTokenHeader(), new AnYanAedParam());
IPage<AnYanAedInfo> aedPage = new PageResultToBeanUtil<AnYanAedInfo>().transform(result, AnYanAedInfo.class);
return aedPage.getRecords();
}
@Override
@Retryable(maxAttempts = 2)
public List<CarePersonList> homeCarePersonList() {
AnYanResult<Object> result = RestTemplateUtil.postExchange(AnYanApiEnum.CARE_PERSON_BY_TIME, buildTokenHeader(), null);
List<Object> listMaps = (List<Object>) result.getData();
return listMaps.stream().map(lMap -> BeanUtil.toBean(lMap, CarePersonList.class)).collect(Collectors.toList());
}
@Override
@Retryable(maxAttempts = 2)
public CareUserListVo careUserDetails(String anYanUserId, String employeeNum) {
JSONObject param = new JSONObject();
if (StrUtil.isNotEmpty(anYanUserId)) {
param.put("id", anYanUserId);
}
if (StrUtil.isNotEmpty(employeeNum)) {
param.put("employeeNum", employeeNum);
}
AnYanResult<Object> result = RestTemplateUtil.postExchange(AnYanApiEnum.CARE_PERSON_Details, buildTokenHeader(), param);
return BeanUtil.toBean(result.getData(), CareUserListVo.class);
}
@Override
@Retryable(maxAttempts = 2)
public IPage<CareUserListVo> careUserDetailsPage(CareUserDetailsParam param) {
AnYanResult<Object> result = RestTemplateUtil.postExchange(AnYanApiEnum.CARE_PERSON_PAGE_LIST, buildTokenHeader(), param);
return new PageResultToBeanUtil<CareUserListVo>().transform(result, CareUserListVo.class);
}
@Override
@Retryable(maxAttempts = 2)
public IPage<EmergencyContactVO> queryEmergencyContact(EmergencyContactParam param) {
AnYanResult<Object> result = RestTemplateUtil.postExchange(AnYanApiEnum.QUERY_EMPLOYEE_CARE_PERSON, buildTokenHeader(), param);
return new PageResultToBeanUtil<EmergencyContactVO>().transform(result, EmergencyContactVO.class);
}
@Override
@Retryable(maxAttempts = 2)
public List<AnYanUpdateUserBatchInfo> updateUserBatch(List<String> employeeNumList) {
Map<String, List<String>> map = new HashMap<>(1);
map.put("employeeNumList", employeeNumList);
AnYanResult<Object> result = RestTemplateUtil.postExchange(AnYanApiEnum.FIND_VITAL_INFO, buildTokenHeader(), map);
List<Object> listMaps = (List<Object>) result.getData();
return listMaps.stream().map(lMap -> BeanUtil.toBean(lMap, AnYanUpdateUserBatchInfo.class)).collect(Collectors.toList());
}
@Override
@Retryable(maxAttempts = 2)
public AnYanUserEmployee updateEmployeeNum(String employeeNum) {
Map<String, String> map = new HashMap<>(1);
map.put("employeeNum", employeeNum);
AnYanResult<Object> result = RestTemplateUtil.postExchange(AnYanApiEnum.FIND_BY_EMPLOYEENUM, buildTokenHeader(), map);
return BeanUtil.toBean(result.getData(), AnYanUserEmployee.class);
}
@Override
@Retryable(maxAttempts = 2)
public IPage<AnYanHealthCheckNew> queryAnYanHealthCheckNew(AnYanHealthCheckNewParam param) {
AnYanResult<Object> result = RestTemplateUtil.postExchange(AnYanApiEnum.HEALTH_CHECK_NEW, buildTokenHeader(), param);
return new PageResultToBeanUtil<AnYanHealthCheckNew>().transform(result, AnYanHealthCheckNew.class);
}
@Override
@Retryable(maxAttempts = 2)
public AnYanEmpHealthCheckNew queryEmpHealthCheckNew(String id) {
AnYanResult<Object> result = RestTemplateUtil.getExchange(AnYanApiEnum.CHECK_NEW_BY_ID, buildTokenHeader(), id);
return BeanUtil.toBean(result.getData(), AnYanEmpHealthCheckNew.class);
}
@Override
@Retryable(maxAttempts = 2)
public List<HealthCheckProject> queryHealthCheckProject(AnYanHealthCheckProjectParam param) {
AnYanResult<Object> result = RestTemplateUtil.postExchange(AnYanApiEnum.HEALTH_CHECK_PROJECT, buildTokenHeader(), param);
List<Object> listMaps = (List<Object>) result.getData();
return listMaps.stream().map(lMap -> BeanUtil.toBean(lMap, HealthCheckProject.class)).collect(Collectors.toList());
}
}
@@ -1,57 +0,0 @@
package com.renkang.anyan.config;
import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Configuration;
/**
* @Description: AnYanProperties
* @Author: feng
* @Date: 2025-8-1
* @Version: V1.0
*/
@Data
@Configuration
@ConfigurationProperties(prefix = "variable.anyan")
public class AnYanProperties {
/**
* 是否启用安眼的接口
*/
private boolean enable;
/**
*服务调用地址
*/
private String host = "";
/**
* clientId
*/
private String clientId = "";
/**
*clientSecret
*/
private String clientSecret = "";
/**
*公网可访问的接口地址 (目前或者大屏调转的toekn使用)
*/
private String publicHost = "";
/**
* 公网环境的鉴权账号 (目前或者大屏调转的toekn使用)
*/
private String publicUserNmae = "";
/**
*公网环境的鉴权密码 (目前或者大屏调转的toekn使用)
*/
private String publicPassWrod = "";
/**
*鉴权用户的身份证号,部分接口的请求头参数中需要传入
*/
private String publicUserCardNo = "737720666075238400";
/**
*链接超时时间
*/
private Long timeout = 3000L;
/**
*读取超时时间
*/
private Long readTimeout = 30000L;
}
@@ -1,79 +0,0 @@
package com.renkang.anyan.config;
import com.renkang.anyan.client.AnYanClient;
import com.renkang.anyan.config.AnYanProperties;
import com.renkang.anyan.enums.AnYanApiEnum;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.jeecg.common.exception.ExceptionAssertsUtil;
import org.jeecg.common.util.SpringContextUtils;
import org.springframework.boot.web.client.RestTemplateBuilder;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.http.HttpStatus;
import org.springframework.http.client.ClientHttpRequestInterceptor;
import org.springframework.http.client.ClientHttpResponse;
import org.springframework.http.converter.FormHttpMessageConverter;
import org.springframework.http.converter.StringHttpMessageConverter;
import org.springframework.http.converter.json.MappingJackson2HttpMessageConverter;
import org.springframework.web.client.RestTemplate;
import java.nio.charset.StandardCharsets;
import java.time.Duration;
import java.time.temporal.ChronoUnit;
import java.util.Arrays;
/**
* @Description: AnYanClient xj安眼系统接口调用客户端
* @Author: feng
* @Date: 2025-8-1
* @Version: V1.0
*/
@Slf4j
@Configuration
@RequiredArgsConstructor
public class AnYanRestTemplateConfig {
private final AnYanProperties properties;
@Bean
public RestTemplate anYanTemplate() {
ClientHttpRequestInterceptor authInterceptor = authInterceptor();
return new RestTemplateBuilder()
.setConnectTimeout(Duration.of(properties.getTimeout(), ChronoUnit.MILLIS))
.setReadTimeout(Duration.of(properties.getReadTimeout(), ChronoUnit.MILLIS))
.additionalMessageConverters(
new StringHttpMessageConverter(StandardCharsets.UTF_8),
new MappingJackson2HttpMessageConverter(),
new FormHttpMessageConverter()
)
.additionalInterceptors(authInterceptor)
.build();
}
/**
* 自定义拦截器处理接口鉴权失败, 配合spring retry使用从而避免因token失效导致的接口调用失败
*/
public ClientHttpRequestInterceptor authInterceptor() {
return (httpRequest, bytes, clientHttpRequestExecution) -> {
ClientHttpResponse execute;
try {
execute = clientHttpRequestExecution.execute(httpRequest, bytes);
HttpStatus httpStatus = execute.getStatusCode();
if (Arrays.asList(HttpStatus.UNAUTHORIZED, HttpStatus.FORBIDDEN).contains(httpStatus)) {
// 获取请求URL
String url = httpRequest.getURI().toString();
// 排除特定接口不执行刷新token逻辑(获取token接口,根据token获取个人信息接口)
if (!url.contains(AnYanApiEnum.QUERY_AUTH_TOKEN.getMethodPath()) && !url.contains(AnYanApiEnum.USER_INFO_UNIT_V2.getMethodPath())) {
log.info("---------安眼token过期,触发刷新token机制-------已过期的token{}", httpRequest.getHeaders().getFirst("authorization"));
SpringContextUtils.getBean("anYanClientExecutor", AnYanClient.class).refreshToken();
}
}
} catch (Exception e) {
log.error("---------安眼平台API调用异常-------e{},接口:{}", e.getMessage(), httpRequest.getURI(), e);
ExceptionAssertsUtil.fail("安眼平台API调用失败");
throw e;
}
return execute;
};
}
}
@@ -1,143 +0,0 @@
package com.renkang.anyan.config;
import com.alibaba.fastjson.JSON;
import com.renkang.anyan.enums.AnYanApiEnum;
import com.renkang.anyan.model.vo.AnYanResult;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.ObjectUtils;
import org.jeecg.common.util.SpringContextUtils;
import org.springframework.http.HttpEntity;
import org.springframework.http.HttpHeaders;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.util.MultiValueMap;
import org.springframework.web.client.RestTemplate;
import java.util.Objects;
/**
* @Description: RestTemplate 工具类 (更多请求方式自行封装)
* @Author: feng
* @Date: 2025-8-1
* @Version: V1.0
*/
@Slf4j
public class RestTemplateUtil {
private static RestTemplate restTemplate;
private static AnYanProperties properties;
public static RestTemplate getRestTemplate() {
if (Objects.isNull(restTemplate)) {
restTemplate = SpringContextUtils.getBean("anYanTemplate", RestTemplate.class);
}
return restTemplate;
}
public static AnYanProperties getProperties() {
if (Objects.isNull(properties)) {
properties = SpringContextUtils.getBean(AnYanProperties.class);
}
return properties;
}
/**
* 请求接口访问 token
*
* @param api 接口
* @param requestBody 参数
* @return ResponseEntity
*/
public static <T> ResponseEntity<T> postExchange(AnYanApiEnum api, HttpHeaders headers, Object requestBody, Class<T> responseType) {
String url = getProperties().getHost() + api.getMethodPath() + api.getMethodParam();
HttpEntity<Object> requestEntity = new HttpEntity<>(requestBody);
return getRestTemplate().exchange(url, api.getHttpMethod(), requestEntity, responseType);
}
/**
* 公网请求接口访问 token(密码模式)
*
* @param api 接口
* @param formData 参数
* @return ResponseEntity
*/
public static <T> ResponseEntity<T> postExchangeForGetTokenByPassword(AnYanApiEnum api, MultiValueMap<String, String> formData, HttpHeaders headers, Class<T> responseType) {
String url = getProperties().getPublicHost() + api.getMethodPath();
HttpEntity<MultiValueMap<String, String>> requestEntity = new HttpEntity<>(formData, headers);
log.info("开始发送请求到: {},入参:{}", url, formData);
long time1 = System.currentTimeMillis();
ResponseEntity<T> response = getRestTemplate().exchange(url, api.getHttpMethod(), requestEntity, responseType);
log.info("收到响应: {}", response);
long time2 = System.currentTimeMillis();
log.info("获取token(密码模式) 耗时:" + (time2 - time1) + "ms");
return response;
}
/**
* 公网请求接口访问 token
*
* @param api 接口
* @param requestBody 参数
* @return ResponseEntity
*/
public static <T> ResponseEntity<T> postExchangeForGetToken(AnYanApiEnum api, Object requestBody, Class<T> responseType) {
String url = getProperties().getPublicHost() + api.getMethodPath() + api.getMethodParam();
HttpEntity<Object> requestEntity = new HttpEntity<>(requestBody);
// 打印请求入参,便于排查
String bodyJson = JSON.toJSONString(requestBody);
log.info("安眼获取token请求入参: url={}, body={}", url, bodyJson);
// 打印等价 curlapplication/json),便于本地手动调试
log.info("安眼获取token等价curl: curl -X POST '{}' -H 'Content-Type: application/json' -d '{}'", url, bodyJson);
ResponseEntity<T> response = getRestTemplate().exchange(url, api.getHttpMethod(), requestEntity, responseType);
// 打印返回信息(状态码 + 响应体)
log.info("安眼获取token返回信息: statusCode={}, body={}", response.getStatusCode(), JSON.toJSONString(response.getBody()));
return response;
}
/**
* 通用调用方法
*
* @param api 请求接口
* @param headers 请求头
* @param requestBody body参数
* @return Result对象
*/
public static AnYanResult<Object> postExchange(AnYanApiEnum api, HttpHeaders headers, Object requestBody) {
String url = getProperties().getHost() + api.getMethodPath() + api.getMethodParam();
HttpEntity<Object> requestEntity = new HttpEntity<>(requestBody, headers);
return responseHandler(getRestTemplate().exchange(url, api.getHttpMethod(), requestEntity, AnYanResult.class));
}
/**
* 通用调用方法
*
* @param api 请求接口
* @param headers 请求头
* @return Result对象
*/
public static <T> ResponseEntity<T> getExchange(AnYanApiEnum api, HttpHeaders headers, Class<T> responseType) {
String url = getProperties().getHost() + api.getMethodPath() + api.getMethodParam();
HttpEntity<Object> requestEntity = new HttpEntity<>(headers);
return getRestTemplate().exchange(url, api.getHttpMethod(), requestEntity, responseType);
}
public static AnYanResult<Object> getExchange(AnYanApiEnum api, HttpHeaders headers, String id) {
String url = getProperties().getHost() + api.getMethodPath() + "/" + id;
HttpEntity<Object> requestEntity = new HttpEntity<>(headers);
return responseHandler(getRestTemplate().exchange(url, api.getHttpMethod(), requestEntity, AnYanResult.class));
}
/**
* ResponseEntity 转 Result
*
* @param entity
* @return
*/
private static <T extends AnYanResult<Object>> AnYanResult<Object> responseHandler(ResponseEntity<T> entity) {
if (HttpStatus.OK.equals(entity.getStatusCode()) && ObjectUtils.isNotEmpty(entity.getBody())) {
return entity.getBody();
} else {
return AnYanResult.error("外部平台API调用失败");
}
}
}
@@ -1,56 +0,0 @@
package com.renkang.anyan.constants;
import org.jeecg.util.RedisKeyPrefix;
/**
* @Description: AnYanConstants 常量
* @Author: feng
* @Date: 2025-8-01
* @Version: V1.0
*/
public interface AnYanConstants {
/**
* token传递请求头参数
*/
String AUTHORIZATION = "authorization";
/**
* token类型
*/
String TOKEN_TYPE = "bearer ";
/**
* 部分业务接口需要代入的请求头参数X-Auth-Id
*/
String HEADER_PARAM_X_AUTH_ID = "X-Auth-Id";
/**
* 请求头参数X-Auth-Id 固定前缀
*/
String X_AUTH_ID_PREFIX = "&id:";
/**
* 缓存调用安眼系统接口鉴权token缓存key
*/
String AN_YAN_API_TOKEN_PREFIX = "exterior:anyan:api:";
/**
* 缓存安眼用户登录token
*/
String AN_YAN_API_USER_TOKEN_PREFIX = "exterior:anyan:api:access_token";
/**
* 缓存安眼用户信息
*/
String AN_YAN_API_USERINFO_PREFIX = "exterior:anyan:api:userinfo";
/**
* 部分业务接口需要代入的请求头参数Roles
*/
String HEADER_PARAM_ROLES = "Roles";
/**
* 请求头Roles参数值
*/
String HEADER_PARAM_ROLES_VALUES = "company-health,aygc";
}
@@ -1,147 +0,0 @@
package com.renkang.anyan.enums;
import lombok.Getter;
import org.springframework.http.HttpMethod;
/**
* @Description: AnYanApiEnum xj安眼系统接口枚举类
* @Author: feng
* @Date: 2025-8-1
* @Version: V1.0
*/
@Getter
public enum AnYanApiEnum {
/**
* 1.获取token接口
*/
QUERY_AUTH_TOKEN("/oauth/oauth/token", "", HttpMethod.POST),
/**
* 2.体检人数统计查询
*/
HEALTH_EXAMINATION_STATISTICS("/aygc-znhpt-sys/0/aystatistics/peopleHealthExaminationStatistics", "", HttpMethod.POST),
/**
* 3.健康打卡数据统计查询(血压,减重,血糖)
*/
HEALTH_CHECK_STATISTICS("/aygc-znhpt-sys/0/aystatistics/healthCheckStatistics", "", HttpMethod.POST),
/**
* 4.健康打卡异常数据详细查询(血压)
*/
BLOOD_PRESSURE_LIST("/aygc-znhpt-sys/0/aystatistics/bloodPressureList", "", HttpMethod.POST),
/**
* 5.健康打卡异常数据详细查询(减重)
*/
WEIGHT_PRESSURE_LIST("/aygc-znhpt-sys/0/aystatistics/weightPressureList", "", HttpMethod.POST),
/**
* 6.健康打卡异常数据详细查询(血糖)
*/
BLOOD_SUGAR_CLOCKS_LIST("/aygc-znhpt-sys/0/aystatistics/bloodSugarClockSList", "", HttpMethod.POST),
/**
* 7.体检异常数据统计查询(暂定)
*/
MEDICAL_ABNORMAL_STATISTICS("/aygc-znhpt-sys/0/aystatistics/checkstatistics", "", HttpMethod.POST),
/**
* 8.体检异常数据清单(暂定)
*/
MEDICAL_ABNORMAL_LIST("/aygc-znhpt-sys/0/aystatistics/checkList", "", HttpMethod.POST),
/**
* 9.油田医院数据查询
*/
HOSPITAL_LIST("/aygc-znhpt-sys/0/aystatistics/HospitalList", "", HttpMethod.POST),
/**
* 10.健康小屋基础数据查询
*/
HEALTH_PLACE_ROOM_LIST("/aygc-znhpt-sys/0/aystatistics/HealthPlaceHomList", "", HttpMethod.POST),
/**
* 11.健康小屋详细数据查询
*/
HEALTH_PLACE_ROOM_INFO_LIST("/aygc-znhpt-sys/0/aystatistics/initEmpHealthRoomCheckinInfoPages", "", HttpMethod.POST),
/**
* 12.从外网地址获取安眼token接口
*/
PUBLIC_NETWORK_AUTH_TOKEN("/aygc-service-sys/0/api/xj/outside/getToken", "", HttpMethod.POST),
/**
* 13.获取员工信息及单位-V2
*/
USER_INFO_UNIT_V2("/iosp-iam/v2/users/self", "?containsUnit=true", HttpMethod.GET),
/**
* 14.查询AED信息
*/
QUERY_AN_YAN_AED("/aygc-znhpt-sys/0/api/aedEquipedInfo/findPage", "", HttpMethod.POST),
/**
* 15.一人一案最新检查员工列表查询接口 (大屏首页重点关爱趋势预警滚动列表,固定查100前项)
*/
CARE_PERSON_BY_TIME("/aygc-znhpt-sys/0/api/empPersonFile/listByCreateTime", "", HttpMethod.POST),
/**
* 16.一人一案信息详情接口 (用大屏首页重点关爱趋势预警滚动列表点击数据详情)
*/
CARE_PERSON_Details("/aygc-znhpt-sys/0/api/empPersonFile/fileDetails", "", HttpMethod.POST),
/**
* 17.一人一案分页列表接口 (用大屏首页重点关爱趋势二级弹窗列表)
*/
CARE_PERSON_PAGE_LIST("/aygc-znhpt-sys/0/api/empPersonFile/findPage", "", HttpMethod.POST),
/**
* 18.查询关爱联络员信息及急救人员查询接口
*/
QUERY_EMPLOYEE_CARE_PERSON("/aygc-znhpt-sys/0/api/empCareEmp/findPage", "", HttpMethod.POST),
/**
* 19.批量更新员工关键信息接口
*/
FIND_VITAL_INFO("/aygc-znhpt-sys/0/api/empBasicInfo/find-vital-info","", HttpMethod.POST),
/**
* 20.更新单个员工扩展信息
*/
FIND_BY_EMPLOYEENUM("/aygc-znhpt-sys/0/api/empBasicInfo/find-by-employeeNum","", HttpMethod.POST),
/**
* 22.体检数据
*/
HEALTH_CHECK_NEW("/aygc-znhpt-sys/0/api/empHealthCheckNew/findPage","",HttpMethod.POST),
/**
* 23.根据体检id查询体检数据
*/
CHECK_NEW_BY_ID("/aygc-znhpt-sys/0/api/empHealthCheckNew","",HttpMethod.GET),
/**
* 24.根据检查id、科室编号、科室名称查询体检记录
*/
HEALTH_CHECK_PROJECT("/aygc-znhpt-sys/0/api/empHealthCheckNew/getCheckProjects","",HttpMethod.POST);
/**
* 接口路径
*/
private String methodPath;
/**
* 接口的路径参数
*/
private String methodParam;
/**
* 接口请求方式
*/
private HttpMethod httpMethod;
AnYanApiEnum(String methodPath, String methodParam, HttpMethod httpMethod) {
this.methodPath = methodPath;
this.methodParam = methodParam;
this.httpMethod = httpMethod;
}
}
@@ -1,39 +0,0 @@
package com.renkang.anyan.model.dto;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
@Data
@Schema(title = "AED接口查询参数", description = "AED接口查询参数")
public class AnYanAedParam {
/**
* 二级单位名称
*/
@Schema(title = "二级单位名称")
private String secondOfficeName;
/**
* 三级单位名称
*/
@Schema(title = "三级单位名称")
private String thirdOfficeName;
/**
* 提供地点
*/
@Schema(title = "提供地点")
private String providePlace;
/**
* pageNo
*/
@Schema(title = "pageNo")
private Integer pageNo = 1;
/**
* pageSize
*/
@Schema(title = "pageSize")
private Integer pageSize = 9999;
/**
* pageType
*/
@Schema(title = "pageType")
private String pageType = "plus";
}
@@ -1,41 +0,0 @@
package com.renkang.anyan.model.dto;
import com.fasterxml.jackson.annotation.JsonProperty;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
@Data
@Schema(title = "安眼系统体检数据接口参数", description = "安眼系统体检数据接口参数")
public class AnYanHealthCheckNewParam {
@JsonProperty("name")
@Schema(name = "员工姓名")
private String name;
@JsonProperty("hospitalName")
@Schema(name = "医院名称")
private String hospitalName;
@JsonProperty("checkDateEnd")
@Schema(name = "结束检查日期")
private String checkDateEnd;
@JsonProperty("checkDateStart")
@Schema(name = "开始检查日期")
private String checkDateStart;
@JsonProperty("employeeNum")
@Schema(name = "统一认证编号")
private String employeeNum;
@JsonProperty("pageNo")
@Schema(name = "页码")
private Integer pageNo = 1;
@JsonProperty("pageSize")
@Schema(name = "页码")
private Integer pageSize = 10;
@Schema(title = "pageType")
private String pageType = "plus";
}
@@ -1,14 +0,0 @@
package com.renkang.anyan.model.dto;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
@Data
public class AnYanHealthCheckProjectParam {
@Schema(title = "检查id")
private String checkId;
@Schema(title = "科室编号")
private String departNo;
@Schema(title = "科室名称")
private String departName;
}
@@ -1,45 +0,0 @@
package com.renkang.anyan.model.dto;
import com.fasterxml.jackson.annotation.JsonProperty;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
@Data
@Schema(title = "安眼系统健康小屋接口参数", description = "安眼系统健康小屋接口参数")
public class AnYanHealthRoomParam {
@JsonProperty("checkInDateBegin")
@Schema(name = "检测开始时间")
private String checkInDateBegin;
@JsonProperty("checkInDateEnd")
@Schema(name = "检测结束时间")
private String checkInDateEnd;
@JsonProperty("checkType")
@Schema(name = "检测类型")
private String checkType;
@JsonProperty("healthRoomId")
@Schema(name = "小屋id")
private String healthRoomId;
@JsonProperty("name")
@Schema(name = "名称")
private String name;
@JsonProperty("pageNo")
@Schema(name = "页码")
private Integer pageNo = 1;
@JsonProperty("pageSize")
@Schema(name = "页码")
private Integer pageSize = 10;
@JsonProperty("successFlag")
@Schema(name = "是否成功空降 目前各个小屋没有这个值")
private String successFlag;
@Schema(title = "pageType")
private String pageType = "plus";
}
@@ -1,32 +0,0 @@
package com.renkang.anyan.model.dto;
import lombok.Data;
/**
* @author PengJ
* @description: 密码鉴权入参
* @date 2025/10/24 11:04
*/
@Data
public class AuthByPasswordParam {
/**
* grant_type
*/
private String grant_type = "password";
/**
* username
*/
private String username;
/**
* password
*/
private String password;
/**
* client_id
*/
private String client_id;
/**
* client_secret
*/
private String client_secret;
}
@@ -1,19 +0,0 @@
package com.renkang.anyan.model.dto;
import lombok.Data;
@Data
public class AuthParam {
/**
*grant_type
*/
private String grant_type = "client_credentials";
/**
* client_id
*/
private String client_id;
/**
* client_secret
*/
private String client_secret;
}
@@ -1,40 +0,0 @@
package com.renkang.anyan.model.dto;
import cn.hutool.core.date.DateUtil;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
@Data
@Schema(title = "AED接口查询参数", description = "AED接口查询参数")
public class CareUserDetailsParam {
/**
* 员工姓名
*/
@Schema(title = "员工姓名")
private String name;
/**
* 工作单位
*/
@Schema(title = "工作单位")
private String workUnit;
/**
* 数据级别
*/
@Schema(title = "数据级别")
private String dataLevel = "0";
/**
* pageNo
*/
@Schema(title = "pageNo")
private Integer pageNo = 1;
/**
* pageSize
*/
@Schema(title = "pageSize")
private Integer pageSize = 10;
@Schema(title = "pageType")
private String pageType = "plus";
private int year = DateUtil.thisYear();
}
@@ -1,42 +0,0 @@
package com.renkang.anyan.model.dto;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
@Data
@Schema(title = "应急联系人查询参数", description = "应急联系人查询参数")
public class EmergencyContactParam {
/**
* 员工ID
*/
@Schema(title = "员工ID")
private String emId;
/**
* 工号
*/
@Schema(title = "工号")
private String employeeNum;
/**
* 身份证号
*/
@Schema(title = "身份证号")
private String idNo;
/**
* 数据级别
*/
@Schema(title = "数据级别")
private String dataLevel = "0";
/**
* pageNo
*/
@Schema(title = "pageNo")
private Integer pageNo = 1;
/**
* pageSize
*/
@Schema(title = "pageSize")
private Integer pageSize = 10;
@Schema(title = "pageType")
private String pageType = "plus";
}
@@ -1,52 +0,0 @@
package com.renkang.anyan.model.dto;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;
import java.util.Date;
/**
* 健康打卡异常数据详情查询参数
*/
@Data
public class HealthSignListParam {
/**
*单位
*/
@Schema(title = "单位")
private String departName;
/**
* 员工姓名
*/
@Schema(title = "员工姓名")
private String name;
/**
* 开始时间
*/
@Schema(title = "开始时间")
@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd")
@DateTimeFormat(pattern = "yyyy-MM-dd")
private Date inputDateBegin;
/**
*结束时间
*/
@Schema(title = "结束时间")
@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd")
@DateTimeFormat(pattern = "yyyy-MM-dd")
private Date inputDateEnd;
/**
* pageNo
*/
@Schema(title = "pageNo")
private Integer pageNo = 1;
/**
* pageSize
*/
@Schema(title = "pageSize")
private Integer pageSize = 10;
@Schema(title = "pageType")
private String pageType = "plus";
}
@@ -1,78 +0,0 @@
package com.renkang.anyan.model.vo;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;
import java.util.Date;
@Data
@Schema(title = "安眼系统AED数据详情", description = "安眼系统AED数据详情")
public class AnYanAedInfo {
/**
* id
*/
private String id;
/**
* 二级单位名称
*/
@Schema(title = "二级单位名称")
private String secondOfficeName;
/**
* 三级单位名称
*/
@Schema(title = "三级单位名称")
private String thirdOfficeName;
/**
* 提供地点
*/
@Schema(title = "提供地点")
private String providePlace;
/**
* 电话
*/
@Schema(title = "电话")
private String tel;
/**
* 经度
*/
@Schema(title = "经度")
private String lon;
/**
* 纬度
*/
@Schema(title = "纬度")
private String lat;
/**
* 创建时间
*/
@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@Schema(title = "创建时间")
private Date createDate;
/**
* 更新时间
*/
@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@Schema(title = "更新时间")
private Date updateDate;
public String getSecondOfficeName() {
if(null != secondOfficeName){
// 处理返数据中的空格和换行符
return secondOfficeName.replaceAll(" ","").replaceAll("\r\n","");
}
return "";
}
public String getThirdOfficeName() {
if(null != thirdOfficeName){
// 处理返数据中的空格和换行符
return thirdOfficeName.replaceAll(" ","").replaceAll("\r\n","");
}
return "";
}
}
@@ -1,31 +0,0 @@
package com.renkang.anyan.model.vo;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
@Data
@Schema(title = "安眼系统体检数据接口返回", description = "安眼系统体检数据接口返回")
public class AnYanEmpHealthCheckNew {
@Schema(title = "姓名")
private String name;
@Schema(title = "性别编号")
private String sexCode;
@Schema(title = "性别")
private String sexCodeText;
@Schema(title = "出生日期")
private String birthday;
@Schema(title = "身份证号")
private String idNo;
@Schema(title = "单位全称")
private String workUnit;
@Schema(title = "民族编号")
private String nationalityValue;
@Schema(title = "民族")
private String nationalityValueText;
@Schema(title = "电话号码")
private String phone;
@Schema(title = "员工编号 非统一认证编号")
private String empId;
@Schema(title = "体检数据")
private AnYanMedicalNew empHealthCheckNew;
}
@@ -1,22 +0,0 @@
package com.renkang.anyan.model.vo;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
@Data
public class AnYanHealthCheckDepart {
@Schema(title = "科室记录编号")
private String id;
@Schema(title = "科室体检编号")
private String checkId;
@Schema(title = "科室编号")
private String departNo;
@Schema(title = "科室名称")
private String departName;
@Schema(title = "小结")
private String summary;
@Schema(title = "小结日期")
private String summaryDate;
@Schema(title = "小结医生(科室医生)")
private String summaryDoctor;
}
@@ -1,66 +0,0 @@
package com.renkang.anyan.model.vo;
import com.fasterxml.jackson.annotation.JsonProperty;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
@Data
@Schema(title = "安眼系统体检数据接口返回", description = "安眼系统体检数据接口返回")
public class AnYanHealthCheckNew {
@JsonProperty("id")
@Schema(name = "id")
private String id;
@JsonProperty("idCard")
@Schema(name = "身份证号")
private String idCard;
@JsonProperty("name")
@Schema(name = "员工姓名")
private String name;
@JsonProperty("hospitalName")
@Schema(name = "员工体检医院")
private String hospitalName;
@JsonProperty("checkDate")
@Schema(name = "员工体检日期")
private String checkDate;
@JsonProperty("checkDoctor")
@Schema(name = "员工体检医生")
private String checkDoctor;
@JsonProperty("checkId")
@Schema(name = "员工体检编号")
private String checkId;
@JsonProperty("workUnit")
@Schema(name = "员工单位名称")
private String workUnit;
@JsonProperty("sexCode")
@Schema(name = "员工性别编号")
private String sexCode;
@JsonProperty("sexCodeText")
@Schema(name = "员工性别")
private String sexCodeText;
@JsonProperty("nationalityValue")
@Schema(name = "员工民族编号")
private String nationalityValue;
@JsonProperty("nationalityValueText")
@Schema(name = "员工民族")
private String nationalityValueText;
@JsonProperty("phone")
@Schema(name = "员工电话号")
private String phone;
@JsonProperty("employeeNum")
@Schema(name = "员工统一认证编号")
private String employeeNum;
}
@@ -1,70 +0,0 @@
package com.renkang.anyan.model.vo;
import com.fasterxml.jackson.annotation.JsonProperty;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
@Data
@Schema(title = "安眼系统健康小屋接口返回", description = "安眼系统健康小屋接口返回")
public class AnYanHealthRoom {
@JsonProperty("id")
@Schema(name = "id")
private String id;
@JsonProperty("departId")
@Schema(name = "单位id")
private String departId;
@JsonProperty("departName")
@Schema(name = "单位名称")
private String departName;
@JsonProperty("roomId")
@Schema(name = "健康小屋id")
private String roomId;
@JsonProperty("name")
@Schema(name = "名称")
private String name;
@JsonProperty("idCard")
@Schema(name = "身份证号")
private String idCard;
@JsonProperty("checkInDate")
@Schema(name = "检查日期")
private String checkInDate;
@JsonProperty("checkType")
@Schema(name = "检查类型")
private String checkType;
@JsonProperty("checkTypeName")
@Schema(name = "检查类型名称")
private String checkTypeName;
@JsonProperty("lastVal")
@Schema(name = "去年体检值 目前各个小屋没有这个值")
private String lastVal;
@JsonProperty("goalVal")
@Schema(name = "标值 各个小屋的指标并不一致")
private String goalVal;
@JsonProperty("currentVal")
@Schema(name = "当前测量值")
private String currentVal;
@JsonProperty("compareVal")
@Schema(name = "控降差值 目前各个小屋没有这个值")
private String compareVal;
@JsonProperty("successFlag")
@Schema(name = "是否成功空降 目前各个小屋没有这个值")
private String successFlag;
@JsonProperty("employeeNum")
@Schema(name = "员工统一编号")
private String employeeNum;
}
@@ -1,41 +0,0 @@
package com.renkang.anyan.model.vo;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import java.util.List;
@Data
public class AnYanMedicalNew {
@Schema(title = "查询id")
private String id;
@Schema(title = "身份证号")
private String idCard;
@Schema(title = "名称")
private String name;
@Schema(title = "医院名称")
private String hospitalName;
@Schema(title = "检查日期")
private String checkDate;
@Schema(title = "检查医生名称")
private String checkDoctor;
@Schema(title = "医院检查编号")
private String checkNo;
@Schema(title = "检查编号")
private String checkId;
@Schema(title = "体检综述")
private String checkResult;
@Schema(title = "体检建议")
private String checkSuggestion;
@Schema(title = "科室体检数据")
private List<AnYanHealthCheckDepart> healthCheckDepartList;
@Schema(title = "二级单位id")
private String secondOfficeId;
@Schema(title = "二级单位名称")
private String secondOfficeName;
@Schema(title = "三级单位id")
private String thirdOfficeId;
@Schema(title = "三级单位名称")
private String thirdOfficeName;
}
@@ -1,170 +0,0 @@
package com.renkang.anyan.model.vo;
import com.fasterxml.jackson.annotation.JsonIgnore;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import org.jeecg.common.constant.CommonConstant;
import java.io.Serializable;
@Data
@Schema(title = "安眼系统接口返回对象", description = "安眼系统接口返回对象")
public class AnYanResult<T> implements Serializable {
private static final long serialVersionUID = 1L;
/**
* 成功标志
*/
@Schema(title = "成功标志")
private boolean success = true;
/**
* 返回处理消息
*/
@Schema(title = "返回处理消息")
private String message = "";
/**
* 返回代码
*/
@Schema(title = "返回代码")
private Integer code = 0;
/**
* 返回数据对象 data
*/
@Schema(title = "返回数据对象")
private T data;
/**
* 时间戳
*/
@Schema(title = "时间戳")
private long timestamp = System.currentTimeMillis();
@JsonIgnore
private String onlTable;
public AnYanResult() {
}
/**
* 兼容VUE3版token失效不跳转登录页面
*
* @param code
* @param message
*/
public AnYanResult(Integer code, String message) {
this.code = code;
this.message = message;
}
public static <T> AnYanResult<T> ok() {
AnYanResult<T> r = new AnYanResult<T>();
r.setSuccess(true);
r.setCode(CommonConstant.SC_OK_200);
return r;
}
public static <T> AnYanResult<T> ok(String msg) {
AnYanResult<T> r = new AnYanResult<T>();
r.setSuccess(true);
r.setCode(CommonConstant.SC_OK_200);
//Result OK(String msg)方法会造成兼容性问题 issues/I4IP3D
r.setData((T) msg);
r.setMessage(msg);
return r;
}
public static <T> AnYanResult<T> ok(T data) {
AnYanResult<T> r = new AnYanResult<T>();
r.setSuccess(true);
r.setCode(CommonConstant.SC_OK_200);
r.setData(data);
return r;
}
public static <T> AnYanResult<T> OK() {
AnYanResult<T> r = new AnYanResult<T>();
r.setSuccess(true);
r.setCode(CommonConstant.SC_OK_200);
return r;
}
/**
* 此方法是为了兼容升级所创建
*
* @param msg
* @param <T>
* @return
*/
public static <T> AnYanResult<T> OK(String msg) {
AnYanResult<T> r = new AnYanResult<T>();
r.setSuccess(true);
r.setCode(CommonConstant.SC_OK_200);
r.setMessage(msg);
//Result OK(String msg)方法会造成兼容性问题 issues/I4IP3D
r.setData((T) msg);
return r;
}
public static <T> AnYanResult<T> OK(T data) {
AnYanResult<T> r = new AnYanResult<T>();
r.setSuccess(true);
r.setCode(CommonConstant.SC_OK_200);
r.setData(data);
return r;
}
public static <T> AnYanResult<T> OK(String msg, T data) {
AnYanResult<T> r = new AnYanResult<T>();
r.setSuccess(true);
r.setCode(CommonConstant.SC_OK_200);
r.setMessage(msg);
r.setData(data);
return r;
}
public static <T> AnYanResult<T> error(String msg, T data) {
AnYanResult<T> r = new AnYanResult<T>();
r.setSuccess(false);
r.setCode(CommonConstant.SC_INTERNAL_SERVER_ERROR_500);
r.setMessage(msg);
r.setData(data);
return r;
}
public static <T> AnYanResult<T> error(String msg) {
return error(CommonConstant.SC_INTERNAL_SERVER_ERROR_500, msg);
}
public static <T> AnYanResult<T> error(int code, String msg) {
AnYanResult<T> r = new AnYanResult<T>();
r.setCode(code);
r.setMessage(msg);
r.setSuccess(false);
return r;
}
/**
* 无权限访问返回结果
*/
public static <T> AnYanResult<T> noauth(String msg) {
return error(CommonConstant.SC_JEECG_NO_AUTHZ, msg);
}
public AnYanResult<T> success(String message) {
this.message = message;
this.code = CommonConstant.SC_OK_200;
this.success = true;
return this;
}
public AnYanResult<T> error500(String message) {
this.message = message;
this.code = CommonConstant.SC_INTERNAL_SERVER_ERROR_500;
this.success = false;
return this;
}
}
@@ -1,23 +0,0 @@
package com.renkang.anyan.model.vo;
import com.fasterxml.jackson.annotation.JsonProperty;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
@Data
@Schema(title = "安眼系统批量更新员工关键信息接口返回对象", description = "安眼系统批量更新员工关键信息接口返回对象")
public class AnYanUpdateUserBatchInfo {
@JsonProperty("id")
private String id;
@JsonProperty("employeeNum")
private String employeeNum;
@JsonProperty("phone")
private String phone;
@JsonProperty("idNo")
private String idNo;
}
@@ -1,141 +0,0 @@
package com.renkang.anyan.model.vo;
import com.fasterxml.jackson.annotation.JsonProperty;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
@Data
@Schema(title = "安眼系统更新单个员工扩展信息接口返回对象", description = "安眼系统更新单个员工扩展信息接口返回对象")
public class AnYanUserEmployee {
@JsonProperty("id")
private String id;
@JsonProperty("employeeNum")
@Schema(name = "员工统一认证编号")
private String employeeNum;
@JsonProperty("name")
@Schema(name = "员工名称")
private String name;
@JsonProperty("sexCode")
@Schema(name = "员工性别编号")
private String sexCode;
@JsonProperty("sexCodeText")
@Schema(name = "员工性别")
private String sexCodeText;
@JsonProperty("nationalityValue")
@Schema(name = "员工民族编号")
private String nationalityValue;
@JsonProperty("nationalityValueText")
@Schema(name = "员工民族")
private String nationalityValueText;
@JsonProperty("phone")
@Schema(name = "员工手机号")
private String phone;
@JsonProperty("idNo")
@Schema(name = "员工身份证号")
private String idNo;
@JsonProperty("birthPlace")
@Schema(name = "出生地")
private String birthPlace;
@JsonProperty("educationCode")
@Schema(name = "文化程度编号")
private String educationCode;
@JsonProperty("educationCodeText")
@Schema(name = "文化程度")
private String educationCodeText;
@JsonProperty("marriageCode")
@Schema(name = "婚姻概况编号")
private String marriageCode;
@JsonProperty("marriageCodeText")
@Schema(name = "婚姻概况")
private String marriageCodeText;
@JsonProperty("householdTypeCode")
@Schema(name = "户籍性质")
private String householdTypeCode;
@JsonProperty("workUnitId")
@Schema(name = "单位id 原工作单位")
private String workUnitId;
@JsonProperty("parentWorkIds")
@Schema(name = "父单位id")
private String parentWorkIds;
@JsonProperty("currentOfficeId")
@Schema(name = "现工作单位id")
private String currentOfficeId;
@JsonProperty("currentOfficeIdText")
@Schema(name = "现工作单位")
private String currentOfficeIdText;
@JsonProperty("workUnit")
@Schema(name = "单位名称")
private String workUnit;
@JsonProperty("birthday")
@Schema(name = "出生日期")
private String birthday;
@JsonProperty("homeId")
@Schema(name = "健康小屋id")
private String homeId;
@JsonProperty("homePlace")
@Schema(name = "健康小屋地点")
private String homePlace;
@JsonProperty("posts")
@Schema(name = "职位编号")
private String posts;
@JsonProperty("postsText")
@Schema(name = "职位")
private String postsText;
@JsonProperty("heartBloodVesselCheck")
@Schema(name = "心血管检查 有/无")
private String heartBloodVesselCheck;
@JsonProperty("brainBloodVesselCheck")
@Schema(name = "脑血管检查 有/无")
private String brainBloodVesselCheck;
@JsonProperty("cancerCheck")
@Schema(name = "癌症筛查 有/无")
private String cancerCheck;
@JsonProperty("ctaResult")
@Schema(name = "冠状CTA检查结果 1: '无', 2: '轻度狭窄',3: '中度狭窄',4: '重度狭窄'")
private Integer ctaResult;
@JsonProperty("age")
@Schema(name = "年龄")
private Integer age;
@JsonProperty("isHealthAdmin")
@Schema(name = "是否为健康管理员 1-是 2-否")
private Integer isHealthAdmin;
@JsonProperty("inFormedBookAttached")
@Schema(name = "是否上传知情同意书 有值-是 null-否")
private String inFormedBookAttached;
@JsonProperty("existHealthAdmCommit")
@Schema(name = "是否上传保密承诺书 true-是 false-否")
private Boolean existHealthAdmCommit;
}
@@ -1,149 +0,0 @@
package com.renkang.anyan.model.vo;
import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.Data;
import lombok.NoArgsConstructor;
/**
* @author Huawei
* @version 1.0
* @description: TODO
* @date 2025/10/24 16:59
*/
@NoArgsConstructor
@Data
public class AnYanUserInfoResult {
@JsonProperty("id")
private String id;
@JsonProperty("loginName")
private String loginName;
@JsonProperty("email")
private String email;
@JsonProperty("organizationId")
private Integer organizationId;
@JsonProperty("realName")
private String realName;
@JsonProperty("phone")
private String phone;
@JsonProperty("gender")
private Integer gender;
@JsonProperty("tenantName")
private String tenantName;
@JsonProperty("tenantNum")
private String tenantNum;
@JsonProperty("roleMergeFlag")
private Integer roleMergeFlag;
@JsonProperty("tenantId")
private Integer tenantId;
@JsonProperty("currentRoleId")
private String currentRoleId;
@JsonProperty("currentRoleCode")
private String currentRoleCode;
@JsonProperty("currentRoleName")
private String currentRoleName;
@JsonProperty("currentRoleLevel")
private String currentRoleLevel;
@JsonProperty("employeeUnitDTO")
private EmployeeUnitDTO employeeUnitDTO;
@NoArgsConstructor
@Data
public static class EmployeeUnitDTO {
/**
* 职工编号
*/
@JsonProperty("employeeNum")
private String employeeNum;
/**
* 姓名
*/
@JsonProperty("name")
private String name;
/**
* 邮箱
*/
@JsonProperty("email")
private String email;
/**
* 手机
*/
@JsonProperty("mobile")
private String mobile;
/**
* 性别,0男,1女
*/
@JsonProperty("gender")
private Integer gender;
@JsonProperty("status")
private Object status;
/**
* 启用状态
*/
@JsonProperty("enabledFlag")
private String enabledFlag;
@JsonProperty("unitName")
private String unitName;
/**
* 所属二级单位unitCode
*/
@JsonProperty("unitCode")
private String unitCode;
/**
* 科级单位名称
*/
@JsonProperty("sectionUnitName")
private String sectionUnitName;
/**
* 科级单位unitCode
*/
@JsonProperty("sectionUnitCode")
private String sectionUnitCode;
@JsonProperty("directDepartmentName")
private String directDepartmentName;
/**
* 直属部门unitCode
*/
@JsonProperty("directDepartmentCode")
private String directDepartmentCode;
/**
* 层级路径(unitCode拼接)
*/
@JsonProperty("levelPath")
private String levelPath;
/**
* 完整组织机构路径(unitName拼接)
*/
@JsonProperty("unitNamePath")
private String unitNamePath;
/**
* 固定电话
*/
@JsonProperty("attribute1")
private String attribute1;
/**
* 职务
*/
@JsonProperty("attribute2")
private String attribute2;
/**
* 生日或年龄
*/
@JsonProperty("attribute3")
private Object attribute3;
}
}
@@ -1,39 +0,0 @@
package com.renkang.anyan.model.vo;
import lombok.Data;
@Data
public class AuthResult {
/**
*范围
*/
private String scope;
/**
*有效期
*/
private Integer expires_in;
/**
* token_type
*/
private String token_type;
/**
* token
*/
private String access_token;
/**
* refresh_token
*/
private String refresh_token;
/**
* satoken
*/
private String satoken;
/**
* message
*/
private String message;
/**
* success
*/
private boolean success;
}
@@ -1,36 +0,0 @@
package com.renkang.anyan.model.vo;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import lombok.EqualsAndHashCode;
@EqualsAndHashCode(callSuper = true)
@Data
@Schema(title="健康打卡血压异常数据详细", description="健康打卡血压异常数据详细")
public class BloodPressureList extends XjUserBaseInfo {
/**
*收缩压
*/
@Schema(title = "收缩压")
private String sbp;
/**
*收缩压是否异常
*/
@Schema(title = "收缩压是否异常")
private String sbpFlag;
/**
*舒张压
*/
@Schema(title = "舒张压")
private String dbp;
/**
*舒张压是否异常
*/
@Schema(title = "舒张压是否异常")
private String dbpFlag;
/**
*填报时间 YYYY-MM-DD
*/
@Schema(title = "填报时间")
private String inputDate;
}
@@ -1,26 +0,0 @@
package com.renkang.anyan.model.vo;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import lombok.EqualsAndHashCode;
@EqualsAndHashCode(callSuper = true)
@Data
@Schema(title="健康打卡血糖异常数据详细", description="健康打卡血糖异常数据详细")
public class BloodSugarClockSList extends XjUserBaseInfo {
/**
*血糖值
*/
@Schema(title = "血糖值")
private String bsVal;
/**
*血糖是否异常
*/
@Schema(title = "血糖是否异常")
private String bsFlag;
/**
*填报时间 YYYY-MM-DD
*/
@Schema(title = "填报时间")
private String inputDate;
}
@@ -1,48 +0,0 @@
package com.renkang.anyan.model.vo;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import org.jeecg.common.aspect.annotation.Dict;
import org.springframework.format.annotation.DateTimeFormat;
import java.util.Date;
@Data
public class CarePersonList {
/**
* 姓名
*/
@Schema(title = "姓名")
private String name;
/**
* 员工ID
*/
@Schema(title = "员工ID")
private String empId;
/**
* 性别 (返回的是'男''女',汉字)
*/
@Schema(title = "性别")
private String sex;
/**
* 年龄
*/
@Schema(title = "年龄")
private Integer age;
/**
* 身份证号
*/
@Schema(title = "身份证号")
private String idNo;
/**
* 检查年份
*/
@Schema(title = "检查年份")
private String checkYear;
@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@Schema(title = "最新检查时间")
private Date createDate;
}
@@ -1,191 +0,0 @@
package com.renkang.anyan.model.vo;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import java.time.LocalDate;
import java.time.Period;
import java.time.format.DateTimeFormatter;
@Data
@Schema(title="重点关爱趋势预警信息",description="重点关爱趋势预警信息")
public class CareUserListVo {
@Schema(title = "ID")
private String id;
@Schema(title = "员工ID")
private String empId;
@Schema(title = "员工姓名")
private String name;
@Schema(title = "年龄")
private Integer age;
@Schema(title = "性别")
private String sexCode;
@Schema(title = "身份证号")
private String idNo;
@Schema(title = "工作单位")
private String workUnit ;
@Schema(title = "单位ID")
private String workUnitId;
@Schema(title = "创建时间")
private String createDate;
@Schema(title = "修改时间")
private String updateDate;
@Schema(title = "数据级别")
private Integer dataLevel;
@Schema(title = "负面清单")
private String negativeList;
@Schema(title = "一人一案")
private String caseInfo;
@Schema(title = "肥胖人员标识(1,是,2-否)")
private Integer flagFat;
@Schema(title = "BMI")
private Double bmi;
@Schema(title = "身高")
private Double height;
@Schema(title = "体重")
private Double weight;
@Schema(title = "体重管理目标")
private Double targetWeight;
@Schema(title = "目前BMI监测值")
private String bmiCurrent;
@Schema(title = "高血压(0-否,1-是)")
private Integer hypertension;
@Schema(title = "收缩压均值")
private String systolicPressureAvg;
@Schema(title = "收缩压控制目标")
private String systolicPressureTarget;
@Schema(title = "目前收缩压检测值")
private String systolicPressureCurrent;
@Schema(title = "舒张压平均值")
private String diastolicPressureAvg;
@Schema(title = "舒张压控制目标值")
private String diastolicPressureTarget;
@Schema(title = "舒张压当前检测值")
private String diastolicPressureCurrent;
@Schema(title = "糖尿病标识(0-否,1-是)")
private Integer diabetes;
@Schema(title = "空腹葡萄糖(GLU)")
private String glu;
@Schema(title = "血糖控制目标值")
private String bloodSugarTarget;
@Schema(title = "目前血糖监测值:")
private String bloodSugarCurrent;
@Schema(title = "低密度脂蛋白")
private String ldl;
@Schema(title = "低密度脂蛋白目标控制值")
private String ldlTarget;
@Schema(title = "低密度脂蛋白当前检测值")
private String ldlCurrent;
@Schema(title = "总胆固醇")
private String tc;
@Schema(title = "总胆固醇目标控制值")
private String tcTarget;
@Schema(title = "总胆固醇目前监测值")
private String tcCurrent;
@Schema(title = "甘油三酯")
private String tg;
@Schema(title = "甘油三酯目标控制值")
private String tgTarget;
@Schema(title = "甘油三酯当前监测值")
private String tgCurrent;
@Schema(title = "尿酸")
private String uricAcid;
@Schema(title = "尿酸目标控制值")
private String uricAcidTarget;
@Schema(title = "尿酸当前监测值")
private String uricAcidCurrent;
@Schema(title = "同型半胱氨酸")
private String homocysteine;
@Schema(title = "同型半胱氨酸目标控制值")
private String homocysteineTarget;
@Schema(title = "同型半胱氨酸当前监测值")
private String homocysteineCurrent;
@Schema(title = "关爱联络员姓名")
private String careLiaisonName;
@Schema(title = "治疗方案反馈")
private String treatPlanResponse;
@Schema(title = "饮食建议反馈")
private String dietSuggestionResponse;
@Schema(title = "运动指导反馈")
private String sportGuideResponse;
@Schema(title = "日常生活管理反馈")
private String lifeManageResponse;
public Double getBmi() {
if (bmi == null) {
return null;
}
return Math.round(bmi * 10) / 10.0;
}
public Integer getAge() {
if (age != null) {
return age;
}
if (idNo == null || idNo.length() != 18) {
return null; // 身份证号无效时返回null
}
try {
// 截取出生日期字符串
String birthDateStr = idNo.substring(6, 14);
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyyMMdd");
LocalDate birthDate = LocalDate.parse(birthDateStr, formatter);
LocalDate now = LocalDate.now();
if (birthDate.isAfter(now)) {
return null; // 出生日期在未来,返回null
}
return Period.between(birthDate, now).getYears();
} catch (Exception e) {
return null; // 解析异常返回null
}
}
}
@@ -1,24 +0,0 @@
package com.renkang.anyan.model.vo;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
@Data
public class CareUserVO {
private String userId;
@Schema(title = "关爱联络员姓名")
private String careLiaisonName;
@Schema(title = "关爱联络员电话")
private String careLiaisonPhone;
@Schema(title = "关爱联络员职务")
private String careLiaisonJob;
@Schema(title = "急救人员姓名")
private String lifeguardName;
@Schema(title = "急救人员电话")
private String lifeguardPhone;
//20251223 改为两个急救人员 ,为改动最小化 没有改数据结构
@Schema(title = "急救人员2姓名")
private String lifeguardName2;
@Schema(title = "急救人员2电话")
private String lifeguardPhone2;
}
@@ -1,99 +0,0 @@
package com.renkang.anyan.model.vo;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
@Data
@Schema(title="安眼员工关爱联络员信息及急救人员信息",description="安眼员工关爱联络员信息及急救人员信息")
public class EmergencyContactVO {
@Schema(title = "记录编号")
private String id;
@Schema(title = "关爱员工编号")
private String empId;
@Schema(title = "单位名称")
private String workUnit;
@Schema(title = "关爱身份证号")
private String idNo;
@Schema(title = "联系电话")
private String phone;
@Schema(title = "员工姓名")
private String name;
@Schema(title = "单位id")
private String workUnitId;
@Schema(title = "性别标识(1-男,2-女)")
private String sexCode;
@Schema(title = "性别翻译")
private String sexCodeText;
@Schema(title = "办公场所周边4分钟内是否配备AED(1是 2否)")
private Integer officeAedAvailable;
@Schema(title = "办公场所AED是否能有专人管理(1是 2否)")
private Integer officeAedManaged;
@Schema(title = "办公场所AED管理人员姓名")
private String officeAedManagerName;
@Schema(title = "办公场所AED管理人员电话")
private String officeAedManagerPhone;
@Schema(title = "当班班组是否配备取证急救人员(1是 2否)")
private Integer teamHasFirstaider;
@Schema(title = "急救人员姓名")
private String firstAiderName;
@Schema(title = "急救人员电话")
private String firstAiderPhone;
@Schema(title = "急救人2员姓名")
private String firstAiderName2;
@Schema(title = "急救人2员电话")
private String firstAiderPhone2;
@Schema(title = "重点关爱人员是否倒班(1是 2否)")
private Integer keycareShiftWork;
@Schema(title = "夜晚是否在单位公寓住宿(1是 2否)")
private Integer keycareNightStay;
@Schema(title = "是否有陪同住宿人员(1是 2否)")
private Integer hasCompanion;
@Schema(title = "陪同住宿人员是否取得急救证(1是 2否)")
private Integer companionCertified;
@Schema(title = "宿舍是否安装一键报警(1是 2否)")
private Integer dormAlarmAvailable;
@Schema(title = "公寓周边4分钟内是否配备AED(1是 2否)")
private Integer dormAedAvailable;
@Schema(title = "公寓AED是否能有专人管理(1是 2否)")
private Integer dormAedManaged;
@Schema(title = "关爱联络员id")
private String relationEmpId;
@Schema(title = "关爱联络员名称")
private String relationEmpName;
@Schema(title = "关爱联络员职务编码")
private String relationEmpPosts;
@Schema(title = "关爱联络员职务翻译")
private String relationEmpPostsText;
@Schema(title = "关爱联络员手机号")
private String relationEmpPhone;
}
@@ -1,32 +0,0 @@
package com.renkang.anyan.model.vo;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
@Data
public class HealthCheckProject {
@Schema(title = "项目记录编号")
private String id;
@Schema(title = "项目体检编号")
private String checkId;
@Schema(title = "科室编号")
private String departNo;
@Schema(title = "科室名称")
private String departName;
@Schema(title = "项目编号")
private String projectNo;
@Schema(title = "项目名称")
private String projectName;
@Schema(title = "项目体检值")
private String resultValue;
@Schema(title = "是否异常")
private String abnormal;
@Schema(title = "异常结果")
private String abnormalResult;
@Schema(title = "单位")
private String unit;
@Schema(title = "参考值")
private String referenceValue;
@Schema(title = "是否心脑血管项目0否 1是")
private String bloodBrain;
}
@@ -1,39 +0,0 @@
package com.renkang.anyan.model.vo;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
@Data
@Schema(title="健康小屋数据VO", description="健康小屋数据VO")
public class HealthPlaceHomListVO {
/**
* id
*/
private String id;
/**
* 单位
*/
@Schema(title = "单位")
private String departName;
/**
* 地点
*/
@Schema(title = "地点")
private String address;
/**
* 经度
*/
@Schema(title = "经度")
private String lon;
/**
* 纬度
*/
@Schema(title = "纬度")
private String lat;
/**
* 建设时间 YYYY-MM-DD
*/
@Schema(title = "建设时间(YYYY-MM-DD)")
private String buildDate;
}
@@ -1,83 +0,0 @@
package com.renkang.anyan.model.vo;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
@Data
@Schema(title="健康小屋数据详情列表", description="健康小屋数据详情列表")
public class HealthPlaceHomeDetailsVO {
/**
* id
*/
@Schema(title = "id")
private String id;
/**
* 单位id
*/
@Schema(title = "单位id")
private String departId;
/**
* 单位
*/
@Schema(title = "单位")
private String departName;
/**
* 健康小屋id
*/
@Schema(title = "健康小屋id")
private String roomId;
@Schema(title = "健康小屋名称")
private String roomName;
@Schema(title = "地址")
private String address;
/**
* 姓名
*/
@Schema(title = "姓名")
private String name;
/**
* 身份证号
*/
@Schema(title = "身份证号")
private String idCard;
/**
* 检查日期
*/
@Schema(title = "检查日期")
private String checkInDate;
/**
* 检查类型 11:BMI/21:收缩压/22:舒张压/31:血糖/41:低密度脂蛋白/42:总胆固醇/43:甘油三酯/51:尿酸/61:同型半胱氨酸 等等,缺失的可以继续加
* 字典废弃 新接口返回了name
*/
@Schema(title = "检查类型")
private String checkType;
@Schema(title = "检查类型名称")
private String checkTypeName;
/**
* 去年体检值 前一年的体检值(初始值)
*/
@Schema(title = "去年体检值 前一年的体检值(初始值)")
private String lastVal;
/**
* 控降目标 一人一档(控降目标值)
*/
@Schema(title = "控降目标 一人一档(控降目标值")
private String goalVal;
/**
* 目前测量值 目前控降数值(可和健康打卡最新值一致)
*/
@Schema(title = "目前测量值 目前控降数值(可和健康打卡最新值一致)")
private String currentVal;
/**
* 控降差值 和控降目标对比
*/
@Schema(title = "控降差值 和控降目标对比")
private String compareVal;
/**
* 是否成功空降,1:是/0.否
*/
@Schema(title = "是否成功空降,1:是/0.否")
private String successFlag;
@Schema(title = "员工统一编号")
private String employeeNum;
}
@@ -1,62 +0,0 @@
package com.renkang.anyan.model.vo;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
@Data
@Schema(title="新疆健康小屋对象", description="新疆健康小屋对象")
public class HealthRoomBaseVO {
/**
* id
*/
private String id;
/**
* 地址
*/
@Schema(title = "地址")
private String address;
/**
* 单位
*/
@Schema(title = "单位")
private String departName;
/**
* 经度
*/
@Schema(title = "经度")
private String lon;
/**
* 纬度
*/
@Schema(title = "纬度")
private String lat;
/**
* 建设时间 yyyy-MM-dd
*/
@Schema(title = "建设时间")
private String buildDate;
/**
* 在岗人数
*/
@Schema(title = "在岗人数")
private Integer jobNum;
/**
* 运转时间(分钟)
*/
@Schema(title = "运转时间(分钟)")
private Integer runTime;
/**
* 管理人员
*/
@Schema(title = "管理人员")
private String manager;
/**
* 联系电话
*/
@Schema(title = "联系电话")
private String phone;
}
@@ -1,40 +0,0 @@
package com.renkang.anyan.model.vo;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
@Data
@Schema(title="打卡人数统计", description="打卡人数统计")
public class HealthSignStatVO {
/**
* 减重打卡总人数
*/
@Schema(title = "减重打卡总人数")
private String weigtTotalCount;
/**
* 减重异常人数
*/
@Schema(title = "减重异常人数")
private String weigtAbCount;
/**
* 血压打卡总人数
*/
@Schema(title = "血压打卡总人数")
private String bpTotalCount;
/**
* 血压异常人数
*/
@Schema(title = "血压异常人数")
private String bpAbCount;
/**
* 血糖打卡总人数
*/
@Schema(title = "血糖打卡总人数")
private String bsTotalCount;
/**
* 血糖异常人数
*/
@Schema(title = "血糖异常人数")
private String bsAbCount;
}
@@ -1,50 +0,0 @@
package com.renkang.anyan.model.vo;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
@Data
@Schema(title="油田医院VO", description="油田医院VO")
public class HospitalListVO {
/**
* id
*/
@Schema(title = "id")
private String id;
/**
* 医院名称
*/
@Schema(title = "医院名称")
private String hospitalName;
/**
* 别名
*/
@Schema(title = "别名")
private String alias;
/**
* 地点
*/
@Schema(title = "地点")
private String address;
/**
* 电话
*/
@Schema(title = "电话")
private String phone;
/**
* 经度
*/
@Schema(title = "经度")
private String lon;
/**
* 纬度
*/
@Schema(title = "纬度")
private String lat;
/**
* 签约时间 YYYY-MM-DD
*/
@Schema(title = "签约时间(YYYY-MM-DD)")
private String contractDate;
}
@@ -1,14 +0,0 @@
package com.renkang.anyan.model.vo;
import lombok.Data;
@Data
public class MedicalAbnormalStatisticsVO {
private Integer totalCount;
// 冠脉CTA异常人数
private Integer cardiovaAbCount;
// 头颅CTA异常人数
private Integer cerebrovAbCount;
// 冠脉ct异常人数 (未返回)
private Integer cctaAbCount;
}
@@ -1,41 +0,0 @@
package com.renkang.anyan.model.vo;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import lombok.EqualsAndHashCode;
@EqualsAndHashCode(callSuper = true)
@Data
@Schema(title="健康打卡体重异常数据详细", description="健康打卡体重异常数据详细")
public class WeightPressureList extends XjUserBaseInfo {
/**
*腰围(CM
*/
@Schema(title = "腰围(CM")
private String waist;
/**
*身高(M
*/
@Schema(title = "身高(M")
private String height;
/**
*体重(KG
*/
@Schema(title = "体重(KG")
private String weight;
/**
*BMI
*/
@Schema(title = "BMI")
private String bmi;
/**
*BMI是否异常(1:是/0:否)
*/
@Schema(title = "BMI是否异常(1:是/0:否)")
private String bmiFlag;
/**
*填报时间 YYYY-MM-DD
*/
@Schema(title = "填报时间")
private String inputDate;
}
@@ -1,36 +0,0 @@
package com.renkang.anyan.model.vo;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
/**
* 员工基本信息
*/
@Data
public class XjUserBaseInfo {
/**
*单位
*/
@Schema(title = "单位")
private String departName;
/**
*姓名
*/
@Schema(title = "姓名")
private String name;
/**
*身份证号
*/
@Schema(title = "身份证号")
private String idCard;
/**
*年龄
*/
@Schema(title = "年龄")
private String age;
/**
*性别
*/
@Schema(title = "性别")
private String sex;
}
@@ -1,25 +0,0 @@
package com.renkang.anyan.utils;
import cn.hutool.core.bean.BeanUtil;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.renkang.anyan.model.vo.AnYanResult;
import java.util.stream.Collectors;
/**
* IPage 类型装换
* @param <T>
*/
public class PageResultToBeanUtil<T> {
public IPage<T> transform(AnYanResult<Object> result, Class<T> tClass) {
IPage<?> page = BeanUtil.toBean(result.getData(), Page.class);
IPage<T> iPage = new Page<>();
BeanUtil.copyProperties(page,iPage,"records");
if(page.getTotal() > 0){
iPage.setRecords(page.getRecords().stream().map(o ->BeanUtil.toBean(o, tClass)).collect(Collectors.toList()));
}
return iPage;
}
}
@@ -1,47 +0,0 @@
package com.renkang.anyan.utils;
import cn.hutool.crypto.Mode;
import cn.hutool.crypto.Padding;
import cn.hutool.crypto.symmetric.SM4;
/**
* XJ安眼平台提供的数据加密工具类 仅用于安眼系统外部登录接口的对接
*/
public class SM4Utils {
private static final String privateKey = "5tgb6yhn7ujm8ik,";
// private static final String privateKey = "123456789qwertyu";
private static final String iv = "5tgb6yhn7ujm8ik,";
// private static final String iv = "abcdefghi1234567";
private static SM4 sm4 = null;
private static SM4 getInstance() {
if (sm4 == null) {
sm4 = new SM4(Mode.CBC, Padding.PKCS5Padding, privateKey.getBytes(), iv.getBytes());
}
return sm4;
}
/**
* @description 加密
* @author xj
* @time 2023/8/17
*/
public static String encryptSM4(String needEncryptText) {
return getInstance().encryptBase64(needEncryptText);
}
/**
* @description 解密
* @author xj
* @time 2023/8/17
*/
public static String decryptSM4(String encryptText) {
if (encryptText == null || encryptText.isEmpty()) return "";
return getInstance().decryptStr(encryptText);
}
}
@@ -1,242 +0,0 @@
package com.renkang.anyan.utils;
import cn.hutool.core.util.StrUtil;
import javax.crypto.Cipher;
import javax.crypto.SecretKey;
import javax.crypto.SecretKeyFactory;
import javax.crypto.spec.IvParameterSpec;
import javax.crypto.spec.PBEKeySpec;
import javax.crypto.spec.SecretKeySpec;
import java.net.URI;
import java.net.URISyntaxException;
import java.nio.charset.StandardCharsets;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.security.KeyFactory;
import java.security.PublicKey;
import java.security.SecureRandom;
import java.security.spec.KeySpec;
import java.security.spec.X509EncodedKeySpec;
import java.util.Base64;
/**
* 安眼平台提供的数据加密工具类 仅用于安眼系统外部登录接口的对接
*/
public class StringUtils {
/**
* 公钥加密方法
*
* @param publicKeyText 公钥
* @param text 将要加密的信息
* @return Base64编码的字符串
* @throws Exception
*/
public static String encryptByPublicKey(String publicKeyText, String text) throws Exception {
// 返回按照 X.509 标准进行编码的密钥的字节
// x509EncodedKeySpec2 是一种规范、规格
X509EncodedKeySpec x509EncodedKeySpec2 = new X509EncodedKeySpec(Base64.getDecoder().decode(publicKeyText));
KeyFactory keyFactory = KeyFactory.getInstance("RSA");
// 让密钥工厂按照指定的 规范 生成公钥
PublicKey publicKey = keyFactory.generatePublic(x509EncodedKeySpec2);
Cipher cipher = Cipher.getInstance("RSA");
// 对加密初始化,使用加密模式,公钥加密
// Cipher.ENCRYPT_MODE 可以用 1 代替
cipher.init(Cipher.ENCRYPT_MODE, publicKey);
byte[] result = cipher.doFinal(text.getBytes());
// 返回 Base64编码的字符串
return Base64.getEncoder().encodeToString(result);
// return org.apache.commons.codec.binary.Base64.encodeBase64String(result);
}
public static String base64Encode(String input) {
return Base64.getEncoder().encodeToString(input.getBytes());
}
public static String base64Decode(String encodedInput) {
byte[] decodedBytes = Base64.getDecoder().decode(encodedInput);
return new String(decodedBytes);
}
public static String preprocessJsonString(String jsonStr) {
String a = StrUtil.removeAll(jsonStr, ' ', '\t', '\r', '\n');
String[] searchList = {"\":\"", "\",\"", "{\"", "\"}", "\":"};
String[] replacementList = {"$is$", "$center$", "$left$", "$right$", "$start$"};
String b = org.apache.commons.lang3.StringUtils.replaceEach(a, searchList, replacementList);
String c = b.replace("\"", "\\\"");
return org.apache.commons.lang3.StringUtils.replaceEach(c, replacementList, searchList);
}
/**
* 提取文件名中的扩展名
*
* @param fileName 文件名
* @param needDot 需要点
* @return 文件扩展名,如果文件名中没有扩展名则返回 null
*/
public static String getFileExtension(String fileName, boolean needDot) {
// 检查文件名是否为 null 或空字符串
if (fileName == null || fileName.isEmpty()) {
return null;
}
// 找到最后一个点的位置
int lastDotIndex = fileName.lastIndexOf('.');
// 如果找不到点,或者点在字符串的第一个位置,返回 null
if (lastDotIndex == -1 || lastDotIndex == 0) {
return null;
}
return fileName.substring(needDot ? lastDotIndex : (lastDotIndex + 1));
}
/**
* 获取路径的最后一个元素(文件名或目录名)
*
* @param pathOrUrl 文件路径或 URL
* @return 路径的最后一个元素
*/
public static String baseName(String pathOrUrl) {
if (pathOrUrl == null || pathOrUrl.isEmpty()) {
return "";
}
try {
// 尝试将字符串解析为 URI
URI uri = new URI(pathOrUrl);
// 获取 URI 的路径部分
String path = uri.getPath();
// 使用 Path 类获取路径的最后一个元素
Path filePath = Paths.get(path);
return filePath.getFileName().toString();
} catch (URISyntaxException e) {
// 如果解析 URI 失败,则直接将字符串作为路径处理
Path filePath = Paths.get(pathOrUrl);
return filePath.getFileName().toString();
}
}
// ------------------- AES 加解密(带盐值处理)-------------------
/** 内部密钥,仅用于日志脱敏,非高强度安全场景 */
private static final String AES_PASSWORD = "XJPlatform@2024#Secure";
/** 盐值长度(字节) */
private static final int SALT_LENGTH = 8;
/** 初始化向量长度(字节) */
private static final int IV_LENGTH = 16;
/** AES 密钥长度 */
private static final int KEY_LENGTH = 128;
/** PBKDF2 迭代次数 */
private static final int PBKDF2_ITERATIONS = 1000;
/** AES 加密算法 */
private static final String AES_CIPHER = "AES/CBC/PKCS5Padding";
/**
* AES 加密(带随机盐值和 IV,每次加密结果不同)
*
* @param plainText 明文
* @return Base64 密文(格式:盐值 + IV + 加密数据)
*/
public static String aesEncrypt(String plainText) {
if (plainText == null || plainText.isEmpty()) {
return plainText;
}
try {
SecureRandom random = new SecureRandom();
byte[] salt = new byte[SALT_LENGTH];
byte[] iv = new byte[IV_LENGTH];
random.nextBytes(salt);
random.nextBytes(iv);
SecretKeySpec keySpec = deriveKey(salt);
Cipher cipher = Cipher.getInstance(AES_CIPHER);
cipher.init(Cipher.ENCRYPT_MODE, keySpec, new IvParameterSpec(iv));
byte[] encrypted = cipher.doFinal(plainText.getBytes(StandardCharsets.UTF_8));
byte[] combined = new byte[SALT_LENGTH + IV_LENGTH + encrypted.length];
System.arraycopy(salt, 0, combined, 0, SALT_LENGTH);
System.arraycopy(iv, 0, combined, SALT_LENGTH, IV_LENGTH);
System.arraycopy(encrypted, 0, combined, SALT_LENGTH + IV_LENGTH, encrypted.length);
return Base64.getEncoder().encodeToString(combined);
} catch (Exception e) {
System.err.println("AES加密失败: " + e.getMessage());
e.printStackTrace();
return plainText;
}
}
/**
* AES 解密(解析盐值 + IV + 加密数据)
*
* @param cipherText Base64 密文
* @return 明文
*/
public static String aesDecrypt(String cipherText) {
if (cipherText == null || cipherText.isEmpty()) {
return cipherText;
}
try {
byte[] combined = Base64.getDecoder().decode(cipherText);
byte[] salt = new byte[SALT_LENGTH];
byte[] iv = new byte[IV_LENGTH];
byte[] encrypted = new byte[combined.length - SALT_LENGTH - IV_LENGTH];
System.arraycopy(combined, 0, salt, 0, SALT_LENGTH);
System.arraycopy(combined, SALT_LENGTH, iv, 0, IV_LENGTH);
System.arraycopy(combined, SALT_LENGTH + IV_LENGTH, encrypted, 0, encrypted.length);
SecretKeySpec keySpec = deriveKey(salt);
Cipher cipher = Cipher.getInstance(AES_CIPHER);
cipher.init(Cipher.DECRYPT_MODE, keySpec, new IvParameterSpec(iv));
byte[] decrypted = cipher.doFinal(encrypted);
return new String(decrypted, StandardCharsets.UTF_8);
} catch (Exception e) {
System.err.println("AES解密失败: " + e.getMessage());
e.printStackTrace();
return cipherText;
}
}
/**
* 通过 PBKDF2 从盐值和内部密钥派生 AES 密钥
*/
private static SecretKeySpec deriveKey(byte[] salt) {
try {
SecretKeyFactory factory = SecretKeyFactory.getInstance("PBKDF2WithHmacSHA256");
KeySpec spec = new PBEKeySpec(AES_PASSWORD.toCharArray(), salt, PBKDF2_ITERATIONS, KEY_LENGTH);
SecretKey tmp = factory.generateSecret(spec);
return new SecretKeySpec(tmp.getEncoded(), "AES");
} catch (Exception e) {
throw new RuntimeException("派生AES密钥失败", e);
}
}
public static void main(String[] args) throws Exception {
// --- RSA 公钥加密测试(安眼平台)---
// String publicKey = "MFwwDQYJKoZIhvcNAQEBBQADSwAwSAJBAJL0JkqsUoK6kt3JyogsgqNp9VDGDp+t3ZAGMbVoMPdHNT2nfiIVh9ZMNHF7g2XiAa8O8AQWyh2PjMR0NiUSVQMCAwEAAQ==";
// String password = "Aa%13999527523";
// String rsaEncrypted = encryptByPublicKey(publicKey, password);
// System.out.println("RSA加密: " + rsaEncrypted);
//
// // --- AES 加解密测试(日志脱敏)---
// String originalText = "Aa%13999527523";
// String aesEncrypted = aesEncrypt(originalText);
String aesDecrypted = aesDecrypt("RuKy7jFDJR0rEJiwxgcyX6RFq8qP5FEgWZuMNxuVkKlbHhjJ2SzLOA==");
// System.out.println("AES加密: " + aesEncrypted);
System.out.println("AES解密: " + aesDecrypted);
// System.out.println("匹配: " + originalText.equals(aesDecrypted));
// 验证每次加密结果不同(盐值和IV随机)
// String aesEncrypted2 = aesEncrypt(originalText);
// System.out.println("再次加密: " + aesEncrypted2);
// System.out.println("两次密文不同: " + !aesEncrypted.equals(aesEncrypted2));
}
}
-61
View File
@@ -1,61 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<artifactId>health-bank</artifactId>
<groupId>com.renkang</groupId>
<version>2.0.0</version>
</parent>
<artifactId>health-bank-api</artifactId>
<properties>
<maven.compiler.source>8</maven.compiler.source>
<maven.compiler.target>8</maven.compiler.target>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<dependencies>
<!-- feign -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>
<!-- 控制openfeign中bcpkix依赖的版本 -->
<dependency>
<groupId>org.bouncycastle</groupId>
<artifactId>bcpkix-jdk18on</artifactId>
</dependency>
<!-- sentinel限流熔断降级-->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-sentinel</artifactId>
</dependency>
<dependency>
<groupId>org.jeecgframework.boot</groupId>
<artifactId>jeecg-boot-base-core</artifactId>
</dependency>
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper</artifactId>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-source-plugin</artifactId>
<version>${maven-source-plugin.version}</version>
<executions>
<execution>
<id>attach-sources</id>
<goals>
<goal>jar</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
</project>
@@ -1,16 +0,0 @@
package com.renkang.bank.constant;
/**
* @author feng
* @date 2026-02-05
*/
public interface HealthBankConstants {
/**
* 积分变化-增加积分
*/
Integer CHANGE_TYPE_ADD = 1;
/**
*积分变化-扣减积分
*/
Integer CHANGE_TYPE_DEDUCT = 2;
}
@@ -1,44 +0,0 @@
package com.renkang.bank.enums;
import lombok.Getter;
/**
* @author: feng
* @description: 积分来源枚举类
* @date 2026/02/05 09:38
*/
@Getter
public enum PointsSourceEnum {
// 积分变更类型
TYPE_1_SURVEY(1, "survey", "积分打卡"),
TYPE_2_USE(2, "use", "礼品兑换"),
TYPE_2_VIOLATION(2, "violation", "违规扣除"),
TYPE_2_EXPIRED(2, "expired", "过期清除");
/**
* 类型1-获得积分,2-扣减积分
*/
public final Integer changeType;
/**
* source 标识
*/
public final String source;
/**
* 来源描述
*/
public final String desc;
PointsSourceEnum(Integer changeType, String source, String desc) {
this.changeType = changeType;
this.source = source;
this.desc = desc;
}
public static PointsSourceEnum getBySource(String source) {
for (PointsSourceEnum value : PointsSourceEnum.values()) {
if (value.source.equals(source)) {
return value;
}
}
return null;
}
}
@@ -1,25 +0,0 @@
package com.renkang.bank.model.dto;
import com.renkang.bank.model.po.PointsRule;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import org.jeecg.base.PageInfo;
/**
* @author pj
* @version 1.0
* @description: 积分规则分页dto
* @date 2026/2/5 18:11
*/
@Data
public class PointsRulePageDTO extends PageInfo<PointsRule> {
@Schema(title = "健康分类")
private Integer ruleCategory;
@Schema(title = "健康行为")
private String ruleDesc;
@Schema(title = "状态1-启用,2停用")
private Integer status;
}
@@ -1,40 +0,0 @@
package com.renkang.bank.model.dto;
import lombok.Data;
import java.math.BigDecimal;
/**
* @author pj
* @version 1.0
* @description: 更新用户积分DTO
* @date 2026/2/6 9:00
*/
@Data
public class UpdUserPointsDTO {
/**
* 积分标识(积分打卡:survey,礼品兑换:use,违规扣除:violation,过期清除:expired)
*/
private String sourceType;
/**
* 业务ID(积分任务id,兑换商品id等)
*/
private Long businessId;
/**
* 操作积分(扣减)
*/
private BigDecimal points;
/**
* 操作备注(扣减积分的说明等)
*/
private String remark;
/**
* 用户id(扣减的目标用户id)
*/
private String userId;
}
@@ -1,42 +0,0 @@
package com.renkang.bank.model.dto;
import com.renkang.bank.model.po.PointsRule;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import org.jeecg.base.PageInfo;
/**
* @author pj
* @version 1.0
* @description: 积分规则分页dto
* @date 2026/2/5 18:11
*/
@Data
public class UserPointsPageDTO extends PageInfo<PointsRule> {
@Schema(title = "姓名")
private String realName;
@Schema(title = "员工编号")
private String workNo;
@Schema(title = "所属单位")
private String orgCode;
@Schema(title = "所属部门")
private String deptCode;
@Schema(title = "1收入,2支出")
private Integer changeType;
@Schema(title = "健康行为")
private String ruleDesc;
@Schema(title = "打卡日期(开始)")
private String startDate;
@Schema(title = "打卡日期(结束)")
private String endDate;
private String userId;
}
@@ -1,45 +0,0 @@
package com.renkang.bank.model.dto;
import com.renkang.bank.model.po.PointsRule;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.jeecg.base.PageInfo;
import java.util.Date;
import java.util.List;
/**
* @author pj
* @version 1.0
* @description: 积分规则分页dto
* @date 2026/2/5 18:11
*/
@EqualsAndHashCode(callSuper = true)
@Data
public class UserPointsRankingDTO extends PageInfo<PointsRule> {
@Schema(title = "榜单类型,0日榜,1周榜,2月榜,3季榜,4年榜,5选时排名,10总榜")
private String rankType;
@Schema(title = "开始时间")
private Date startTime;
@Schema(title = "截止时间")
private Date endTime;
@Schema(title = "所属单位")
private String orgCode;
@Schema(title = "所属部门")
private String deptCode;
@Schema(title = "姓名")
private String realName;
@Schema(title = "员工编号")
private String workNo;
private List<String> userIds;
}
@@ -1,74 +0,0 @@
package com.renkang.bank.model.po;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableLogic;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.springframework.format.annotation.DateTimeFormat;
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;
/**
* 礼品表 -礼品基本信息
*
* @author feng
* @date 2026-02-05
*/
@Data
@NoArgsConstructor
@AllArgsConstructor
@TableName("bank_gift_info")
@Schema(title = "礼品基本信息", description = "礼品基本信息")
public class GiftInfo implements Serializable {
private static final long serialVersionUID = 1L;
@TableId(type = IdType.ASSIGN_ID)
@Schema(title = "id")
@JsonFormat(shape = JsonFormat.Shape.STRING)
private Long id;
@Schema(title = "礼品名称")
private String giftName;
@Schema(title = "礼品主图(多个使用逗号分隔)")
private String giftImage;
@Schema(title = "礼品库存")
private Integer inventory;
@Schema(title = "礼品分类(1-实物礼品,2-虚拟礼品)")
private Integer type;
@Schema(title = "礼品价格")
private BigDecimal price;
@Schema(title = "用户限购数量")
private Integer purchaseLimit;
@Schema(title = "礼品详情(富文本内容描述)")
private String giftInfo;
@Schema(title = "状态(0-启用,1-停用)")
private Integer status = 0;
@Schema(title = "删除标记")
@TableLogic
private Integer delFlag;
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
@Schema(title = "创建时间")
private Date createTime;
@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@Schema(title = "修改时间")
private Date lastModifyDate;
}
@@ -1,58 +0,0 @@
package com.renkang.bank.model.po;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.springframework.format.annotation.DateTimeFormat;
import java.io.Serializable;
import java.util.Date;
/**
* 礼品库存变更记录表 -礼品库存变更记录表
*
* @author feng
* @date 2026-02-05
*/
@Data
@NoArgsConstructor
@AllArgsConstructor
@TableName("bank_gift_inventory_log")
@Schema(title = "礼品库存变更记录表", description = "礼品库存变更记录表")
public class GiftInventoryLog implements Serializable {
private static final long serialVersionUID = 1L;
@TableId(type = IdType.ASSIGN_ID)
@Schema(title = "id")
@JsonFormat(shape = JsonFormat.Shape.STRING)
private Long id;
@Schema(title = "礼品ID")
@JsonFormat(shape = JsonFormat.Shape.STRING)
private Long giftId;
@Schema(title = "本次库存变化")
private Integer inventory;
@Schema(title = "1-加库存,2-减库存")
private Integer changeType;
@Schema(title = "本次变动前库存")
private Integer beforeInventory;
@Schema(title = "本次变动后库存")
private Integer afterInventory;
@Schema(title = "操作人ID")
private String operatorId;
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
@Schema(title = "创建时间")
private Date createTime;
}
@@ -1,56 +0,0 @@
package com.renkang.bank.model.po;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.springframework.format.annotation.DateTimeFormat;
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;
/**
* 礼品价格变更记录表 -礼品价格变更记录表
*
* @author feng
* @date 2026-02-05
*/
@Data
@NoArgsConstructor
@AllArgsConstructor
@TableName("bank_gift_price_log")
@Schema(title = "礼品价格变更记录表", description = "礼品价格变更记录表")
public class GiftPriceLog implements Serializable {
private static final long serialVersionUID = 1L;
@TableId(type = IdType.ASSIGN_ID)
@Schema(title = "id")
@JsonFormat(shape = JsonFormat.Shape.STRING)
private Long id;
@Schema(title = "礼品ID")
@JsonFormat(shape = JsonFormat.Shape.STRING)
private Long giftId;
@Schema(title = "本次设定的价格")
private BigDecimal price;
@Schema(title = "本次变动前价格")
private BigDecimal beforePrice;
@Schema(title = "本次变动后价格")
private BigDecimal afterPrice;
@Schema(title = "操作人ID")
private String operatorId;
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
@Schema(title = "创建时间")
private Date createTime;
}
@@ -1,57 +0,0 @@
package com.renkang.bank.model.po;
import com.baomidou.mybatisplus.annotation.*;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.github.yulichang.annotation.EntityMapping;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.FieldNameConstants;
import org.springframework.format.annotation.DateTimeFormat;
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;
import java.util.List;
/**
* 订单表 -积分兑换记录表
*
* @author feng
* @date 2026-02-05
*/
@Data
@NoArgsConstructor
@AllArgsConstructor
@FieldNameConstants
@TableName("bank_order_form")
@Schema(title = "订单表(积分兑换记录表)", description = "订单表(积分兑换记录表)")
public class OrderForm implements Serializable {
private static final long serialVersionUID = 1L;
@TableId(type = IdType.ASSIGN_ID)
@Schema(title = "id")
@JsonFormat(shape = JsonFormat.Shape.STRING)
private Long id;
@Schema(title = "用户ID")
private String userId;
@Schema(title = "订单总额")
private BigDecimal orderPrice;
@Schema(title = "订单商品集合")
@TableField(exist = false)
@EntityMapping(thisField = OrderForm.Fields.id, joinField = OrderFormItem.Fields.orderId)
private List<OrderFormItem> orderFormItems;
@Schema(title = "删除标记")
@TableLogic
private Integer delFlag;
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
@Schema(title = "下单时间")
private Date createTime;
}
@@ -1,38 +0,0 @@
package com.renkang.bank.model.po;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.FieldNameConstants;
import java.io.Serializable;
/**
* 订单子表 -订单明细表
*
* @author feng
* @date 2026-02-05
*/
@Data
@NoArgsConstructor
@AllArgsConstructor
@FieldNameConstants
@TableName("bank_order_form_item")
@Schema(title = "订单明细表", description = "订单明细表")
public class OrderFormItem implements Serializable {
private static final long serialVersionUID = 1L;
@TableId(type = IdType.ASSIGN_ID)
@Schema(title = "id")
@JsonFormat(shape = JsonFormat.Shape.STRING)
private Long id;
@Schema(title = "订单ID")
@JsonFormat(shape = JsonFormat.Shape.STRING)
private Long orderId;
}
@@ -1,96 +0,0 @@
package com.renkang.bank.model.po;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableLogic;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.FieldNameConstants;
import org.jeecg.common.aspect.annotation.Dict;
import org.jeecgframework.poi.excel.annotation.Excel;
import org.springframework.format.annotation.DateTimeFormat;
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;
/**
* @Description: 积分规则表
* @Author: feng
* @Date: 2026-02-05
* @Version: V1.0
*/
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
@FieldNameConstants
@TableName("bank_points_rule")
@Schema(title = "积分规则表", description = "积分规则表")
public class PointsRule implements Serializable {
private static final long serialVersionUID = 1L;
@TableId(type = IdType.ASSIGN_ID)
@Schema(title = "ID")
@JsonFormat(shape = JsonFormat.Shape.STRING)
private Long id;
@Excel(name = "行为周期", width = 15, replace = {"次_1", "日_2", "周_3", "月_4", "季度_5", "年_6"}, orderNum = "3")
@Schema(title = "问答频次(1-单次,2-日/次,3-周/次,4-月/次,5-季度/次,6-年/次)")
private Integer frequency;
@Excel(name = "健康分类", width = 15, dicCode = "points_rule_category", orderNum = "1")
@Dict(dicCode = "points_rule_category")
@Schema(title = "规则类别")
private Integer ruleCategory;
@Excel(name = "健康行为", width = 15, orderNum = "2")
@Schema(title = "规则描述")
private String ruleDesc;
@Schema(title = "图标")
private String icon;
@Excel(name = "奖励积分", width = 15, orderNum = "4")
@Schema(title = "奖励积分")
private BigDecimal points;
@Schema(title = "状态1-启用,2停用")
private Integer status = 1;
@Schema(title = "删除标识0-正常,1已删除")
@TableLogic
private Integer delFlag;
@Schema(title = "创建人ID")
private String createUser;
@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@Schema(title = "创建时间")
private Date createTime;
@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@Schema(title = "最后修改时间")
private Date lastModifyDate;
@Schema(title = "周期内打卡次数上限")
private Integer checkInUpper;
@Schema(title = "年额外积分上限")
private BigDecimal yearExtraPointUpper;
@Schema(title = "是否支持打卡叠加得分,0不支持,1支持")
private Integer supportCum;
@Schema(title = "是否需要填写补充信息,0不需要,1需要")
private Integer needRemark;
}
@@ -1,102 +0,0 @@
package com.renkang.bank.model.po;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableLogic;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.jeecgframework.poi.excel.annotation.Excel;
import org.springframework.format.annotation.DateTimeFormat;
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;
/**
* 用户积分汇总表 -产生过积分的用户每人一条数据
*
* @author feng
* @date 2026-02-05
*/
@Data
@NoArgsConstructor
@AllArgsConstructor
@TableName("bank_user_points")
@Schema(title = "用户积分汇总表", description = "用户积分汇总表")
public class UserPoints implements Serializable {
private static final long serialVersionUID = 1L;
@TableId(type = IdType.ASSIGN_ID)
@Schema(title = "id")
@JsonFormat(shape = JsonFormat.Shape.STRING)
private Long id;
@Schema(title = "用户ID")
private String userId;
@Schema(title = "用户部门")
private String orgCode;
@Excel(name = "当前可用积分", width = 15, orderNum = "7")
@Schema(title = "当前可用积分")
private BigDecimal points;
@Excel(name = "累计获得积分", width = 15, orderNum = "8")
@Schema(title = "历史获得的积分总和")
private BigDecimal addPointsSum;
/**
* 记录所有扣除积分的总和,包含兑换消耗、手动扣除的积分
*/
@Schema(title = "历史扣除积分总和")
private BigDecimal deductPointsSum;
/**
* 积分兑换记录总和,只记录积分兑换
*/
@Excel(name = "累计兑换积分", width = 15, orderNum = "9")
@Schema(title = "历史兑换积分总和")
private BigDecimal exchangePointsSum;
@Schema(title = "状态(1-正常,2-冻结)")
private Integer status = 1;
/**
* 注意:该字段记录最后一次获得积分当天收获的积分总和,该归档字段的更新会减少后期对积分明细表的查询次数
*/
@Schema(title = "最新一天获取积分的总和")
private BigDecimal latestAddDaySum;
/**
* 注意:该字段记录最后一次消费积分当天收获的积分总和,该归档字段的更新会减少后期对积分明细表的查询次数
*/
@Schema(title = "最新一天消耗积分的总和")
private BigDecimal latestDeductDaySum;
@Excel(name = "最近一次打卡时间", width = 25, format = "yyyy-MM-dd HH:mm:ss", orderNum = "10")
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
@Schema(title = "最新获得积分的日期")
private Date lastAddDate;
@DateTimeFormat(pattern = "yyyy-MM-dd")
@JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
@Schema(title = "最新消费积分的日期")
private Date lastDeductDate;
@Schema(title = "删除标记")
@TableLogic
private Integer delFlag;
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
@Schema(title = "首次获得积分时间")
private Date createTime;
@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@Schema(title = "积分最后变更时间")
private Date lastVaryDate;
}
@@ -1,80 +0,0 @@
package com.renkang.bank.model.po;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableLogic;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.renkang.bank.enums.PointsSourceEnum;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.springframework.format.annotation.DateTimeFormat;
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;
/**
* 用户积分详情表 -记录每次的积分变更
*
* @author feng
* @date 2026-02-05
*/
@Data
@NoArgsConstructor
@AllArgsConstructor
@TableName("bank_user_points_details")
@Schema(title = "用户积分详情表", description = "用户积分详情表")
public class UserPointsDetails implements Serializable {
private static final long serialVersionUID = 1L;
@TableId(type = IdType.ASSIGN_ID)
@Schema(title = "id")
@JsonFormat(shape = JsonFormat.Shape.STRING)
private Long id;
@Schema(title = "用户ID")
private String userId;
@Schema(title = "本次积分变化")
private BigDecimal points;
@Schema(title = "本次变动前积分")
private BigDecimal beforePoints;
@Schema(title = "本次变动后积分")
private BigDecimal afterPoints;
@Schema(title = "1-获得积分,2-扣减积分")
private Integer changeType;
@Schema(title = "补充信息")
private String remark;
/**
* @see PointsSourceEnum 来源详见枚举类
*/
@Schema(title = "来源(survey-积分打卡,use-礼品兑换,violation-违规扣除,expired-过期清除)")
private String source;
@Schema(title = "关联业务ID(规则ID,礼品兑换订单Id等)")
@JsonFormat(shape = JsonFormat.Shape.STRING)
private Long businessId;
@Schema(title = "关联业务详情(可选择性的冗余业务详情:待定)")
private String businessInfo;
@Schema(title = "操作人ID")
private String operatorId;
@Schema(title = "删除标记")
@TableLogic
private Integer delFlag;
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
@Schema(title = "创建时间")
private Date createTime;
}
@@ -1,58 +0,0 @@
package com.renkang.bank.model.vo;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import org.jeecgframework.poi.excel.annotation.Excel;
import java.math.BigDecimal;
/**
* @author pj
* @version 1.0
* @description: 用户积分榜单VO
* @date 2026/2/6 10:41
*/
@Data
public class UserPointRankingVO {
@Excel(name = "排名", width = 15, orderNum = "8")
@Schema(title = "排名")
private Integer ranking;
@Schema(title = "用户id")
private String userId;
@Excel(name = "姓名", width = 15, orderNum = "3")
@Schema(title = "姓名")
private String realName;
@Excel(name = "员工编号", width = 15, orderNum = "4")
@Schema(title = "员工编号")
private String workNo;
@Excel(name = "年龄", width = 15, orderNum = "6")
@Schema(title = "年龄")
private Integer age;
@Schema(title = "头像")
private String avatar;
@Excel(name = "所属单位", width = 15, orderNum = "1")
@Schema(title = "单位名称")
private String orgName;
@Excel(name = "所属部门", width = 15, orderNum = "2")
@Schema(title = "部门名称")
private String deptName;
@Schema(title = "性别")
private Integer sex;
@Excel(name = "性别", width = 15, orderNum = "5")
@Schema(title = "性别")
private String sexName;
@Excel(name = "日累计积分", width = 15, orderNum = "7")
@Schema(title = "积分")
private BigDecimal pointSum;
}
@@ -1,44 +0,0 @@
package com.renkang.bank.model.vo;
import cn.hutool.core.date.DateUtil;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;
import java.math.BigDecimal;
import java.util.Date;
/**
* @author pj
* @version 1.0
* @description: 用户积分明细VO
* @date 2026/2/6 10:41
*/
@Data
public class UserPointRecordVO {
@Schema(title = "记录id")
private Long id;
@Schema(title = "得分说明")
private String businessInfo;
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
@Schema(title = "创建时间")
private Date createTime;
@Schema(title = "本次积分变化")
private BigDecimal points;
@Schema(title = "补充信息")
private String remark;
public String getCreateMonthStr() {
if (createTime != null) {
return DateUtil.format(createTime, "yyyy年-MM月");
}
return null;
}
}
@@ -1,48 +0,0 @@
package com.renkang.bank.model.vo;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.jeecgframework.poi.excel.annotation.Excel;
import org.springframework.format.annotation.DateTimeFormat;
import java.math.BigDecimal;
import java.util.Date;
/**
* 用户积分详情VO
*
* @author feng
* @date 2026-02-05
*/
@Data
@NoArgsConstructor
@AllArgsConstructor
@Schema(title = "用户积分详情VO", description = "用户积分详情VO")
public class UserPointsDeductDetailsVO {
@Schema(title = "id")
private Long id;
@Schema(title = "用户ID")
private String userId;
@Excel(name = "积分变化", width = 15, orderNum = "2")
@Schema(title = "本次积分变化")
private BigDecimal points;
@Excel(name = "支出信息", width = 25, orderNum = "1")
@Schema(title = "补充信息")
private String remark;
@Schema(title = "关联业务ID(规则ID,礼品兑换订单Id等)")
private Long businessId;
@Excel(name = "支出时间", width = 25, format = "yyyy-MM-dd HH:mm:ss", orderNum = "3")
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
@Schema(title = "创建时间")
private Date createTime;
}
@@ -1,56 +0,0 @@
package com.renkang.bank.model.vo;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.jeecgframework.poi.excel.annotation.Excel;
import org.springframework.format.annotation.DateTimeFormat;
import java.math.BigDecimal;
import java.util.Date;
/**
* 用户积分详情VO
*
* @author feng
* @date 2026-02-05
*/
@Data
@NoArgsConstructor
@AllArgsConstructor
@Schema(title = "用户积分详情VO", description = "用户积分详情VO")
public class UserPointsDetailsVO {
@Schema(title = "id")
private Long id;
@Schema(title = "用户ID")
private String userId;
@Excel(name = "积分变化", width = 15, orderNum = "4")
@Schema(title = "本次积分变化")
private BigDecimal points;
@Excel(name = "补充信息", width = 15, orderNum = "2")
@Schema(title = "补充信息")
private String remark;
@Schema(title = "关联业务ID(规则ID,礼品兑换订单Id等)")
private Long businessId;
@Excel(name = "健康行为", width = 25, orderNum = "1")
@Schema(title = "关联业务详情(可选择性的冗余业务详情:待定)")
private String businessInfo;
@Excel(name = "打卡时间", width = 25, format = "yyyy-MM-dd HH:mm:ss", orderNum = "5")
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
@Schema(title = "创建时间")
private Date createTime;
@Excel(name = "行为周期", width = 15, replace = {"次_1", "日_2", "周_3", "月_4", "季度_5", "年_6"}, orderNum = "3")
@Schema(title = "问答频次(1-单次,2-日/次,3-周/次,4-月/次,5-季度/次,6-年/次)")
private Integer frequency;
}
@@ -1,42 +0,0 @@
package com.renkang.bank.model.vo;
import com.fasterxml.jackson.annotation.JsonSetter;
import com.fasterxml.jackson.annotation.Nulls;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import java.math.BigDecimal;
/**
* @author pj
* @version 1.0
* @description: 用户积分信息vo
* @date 2026/2/6 9:31
*/
@Data
public class UserPointsInfoVO {
@Schema(title = "可用积分")
@JsonSetter(nulls = Nulls.SKIP)
private BigDecimal points = BigDecimal.ZERO;
@Schema(title = "累计积分")
@JsonSetter(nulls = Nulls.SKIP)
private BigDecimal addPointsSum = BigDecimal.ZERO;
@Schema(title = "累计兑换")
@JsonSetter(nulls = Nulls.SKIP)
private BigDecimal exchangePointsSum = BigDecimal.ZERO;
public BigDecimal getPoints() {
return points == null ? BigDecimal.ZERO : points;
}
public BigDecimal getAddPointsSum() {
return addPointsSum == null ? BigDecimal.ZERO : addPointsSum;
}
public BigDecimal getExchangePointsSum() {
return exchangePointsSum == null ? BigDecimal.ZERO : exchangePointsSum;
}
}
@@ -1,42 +0,0 @@
package com.renkang.bank.model.vo;
import com.renkang.bank.model.po.UserPoints;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.jeecgframework.poi.excel.annotation.Excel;
/**
* @author pj
* @version 1.0
* @description: 用户积分信息列表VO
* @date 2026/2/5 18:51
*/
@EqualsAndHashCode(callSuper = true)
@Data
public class UserPointsListVO extends UserPoints {
@Excel(name = "姓名", width = 15, orderNum = "3")
@Schema(title = "姓名")
private String realName;
@Excel(name = "员工编号", width = 15, orderNum = "4")
@Schema(title = "员工编号")
private String workNo;
@Excel(name = "所属单位", width = 15, orderNum = "1")
@Schema(title = "所属单位名称")
private String orgName;
@Excel(name = "所属部门", width = 15, orderNum = "2")
@Schema(title = "所属部门名称")
private String deptName;
@Excel(name = "性别", width = 15, orderNum = "5")
@Schema(title = "性别")
private String sexName;
@Excel(name = "年龄", width = 15, orderNum = "6")
@Schema(title = "年龄")
private Integer age;
}
@@ -1,53 +0,0 @@
package com.renkang.bank.model.vo;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import java.math.BigDecimal;
import java.util.Date;
/**
* @author pj
* @version 1.0
* @description: 员工打卡监测VO
* @date 2026/2/5 18:51
*/
@Data
public class UserPointsMonitorVO {
@Schema(title = "用户id")
private String userId;
@Schema(title = "姓名")
private String realName;
@Schema(title = "员工编号")
private String workNo;
@Schema(title = "所属单位名称")
private String orgName;
@Schema(title = "所属部门名称")
private String deptName;
@Schema(title = "性别")
private String sexName;
@Schema(title = "年龄")
private Integer age;
@Schema(title = "健康行为")
private String businessInfo;
@Schema(title = "补充信息")
private String remark;
@Schema(title = "周期")
private Integer frequency;
@Schema(title = "获取积分")
private BigDecimal points;
@Schema(title = "打卡时间")
private Date createTime;
}
@@ -1,39 +0,0 @@
package com.renkang.bank.model.vo;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import org.jeecg.common.aspect.annotation.Dict;
import java.math.BigDecimal;
/**
* @author pj
* @version 1.0
* @description: 用户积分任务VO
* @date 2026/2/6 9:54
*/
@Data
public class UserPointsTaskVO {
@Schema(title = "规则id")
private Long ruleId;
@Schema(title = "问答频次(1-单次,2-日/次,3-周/次,4-月/次,5-季度/次,6-年/次)")
private Integer frequency;
@Dict(dicCode = "points_rule_category")
@Schema(title = "规则类别")
private Integer ruleCategory;
@Schema(title = "规则描述")
private String ruleDesc;
@Schema(title = "图标")
private String icon;
@Schema(title = "奖励积分")
private BigDecimal points;
@Schema(title = "打卡状态,0未打卡,1已打卡")
private Integer clockInStatus;
}
-65
View File
@@ -1,65 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<artifactId>health-bank</artifactId>
<groupId>com.renkang</groupId>
<version>2.0.0</version>
</parent>
<artifactId>health-bank-biz</artifactId>
<dependencies>
<dependency>
<groupId>com.renkang</groupId>
<artifactId>health-bank-api</artifactId>
</dependency>
<!-- 引入分布式锁依赖 -->
<dependency>
<groupId>org.jeecgframework.boot</groupId>
<artifactId>jeecg-boot-starter-lock</artifactId>
</dependency>
<!-- 中文拼音转换依赖 -->
<dependency>
<groupId>com.belerweb</groupId>
<artifactId>pinyin4j</artifactId>
<version>2.5.1</version>
</dependency>
<dependency>
<groupId>org.jeecgframework.boot</groupId>
<artifactId>jeecg-boot-starter-job</artifactId>
</dependency>
<dependency>
<groupId>com.renkang</groupId>
<artifactId>renkang-starter-aspose-word</artifactId>
</dependency>
<dependency>
<groupId>com.renkang</groupId>
<artifactId>font-resources</artifactId>
</dependency>
<dependency>
<groupId>org.jeecgframework.boot</groupId>
<artifactId>jeecg-system-cloud-api</artifactId>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-source-plugin</artifactId>
<version>${maven-source-plugin.version}</version>
<executions>
<execution>
<id>attach-sources</id>
<goals>
<goal>jar</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
</project>
@@ -1,97 +0,0 @@
package com.renkang.bank.controller;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.renkang.bank.model.dto.PointsRulePageDTO;
import com.renkang.bank.model.po.PointsRule;
import com.renkang.bank.service.IPointsRuleService;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag;
import org.apache.commons.lang.StringUtils;
import org.jeecg.common.api.vo.Result;
import org.jeecg.common.system.base.controller.JeecgController;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.servlet.ModelAndView;
import javax.servlet.http.HttpServletRequest;
/**
* @author pj
* @version 1.0
* @description: 积分规则
* @date 2026/2/5 17:53
*/
@Tag(name = "积分规则")
@RestController
@RequestMapping("/bank/pointsRule")
public class PointsRuleController extends JeecgController<PointsRule, IPointsRuleService> {
@Autowired
private IPointsRuleService iPointsRuleService;
@Operation(summary = "积分规则-分页列表", description = "积分规则-分页列表")
// @RequiresPermissions("bank:points_rule:add")
@PostMapping(value = "/pageList")
public Result<IPage<PointsRule>> pageList(@RequestBody PointsRulePageDTO dto) {
return Result.OK(iPointsRuleService.pageList(dto));
}
@Operation(summary = "积分规则-添加", description = "积分规则-添加")
// @RequiresPermissions("bank:points_rule:add")
@PostMapping(value = "/add")
public Result<Integer> add(@RequestBody PointsRule pointsRule) {
return Result.OK("添加成功", iPointsRuleService.add(pointsRule));
}
@Operation(summary = "积分规则-修改", description = "积分规则-修改")
// @RequiresPermissions("bank:points_rule:edit")
@PostMapping(value = "/edit")
public Result<Integer> edit(@RequestBody PointsRule pointsRule) {
return Result.OK("修改成功", iPointsRuleService.edit(pointsRule));
}
@Operation(summary = "积分规则-修改状态", description = "积分规则-修改状态")
// @RequiresPermissions("bank:points_rule:edit")
@GetMapping(value = "/editStatus")
public Result<Integer> editStatus(@RequestParam(name = "id") Long id, @RequestParam(name = "status") Integer status) {
return Result.OK("修改成功", iPointsRuleService.editStatus(id, status));
}
@Operation(summary = "积分规则-详情", description = "积分规则-详情")
// @RequiresPermissions("bank:points_rule:byId")
@GetMapping(value = "/byId")
public Result<PointsRule> byId(@RequestParam(name = "id") String id) {
return Result.OK(iPointsRuleService.byId(id));
}
@Operation(summary = "积分规则-删除", description = "积分规则-删除")
// @RequiresPermissions("bank:points_rule:del")
@GetMapping(value = "/delete")
public Result<Integer> delete(@RequestParam(name = "id") String id) {
return Result.OK("删除成功", iPointsRuleService.delete(id));
}
@Operation(summary = "积分规则-批量删除", description = "积分规则-批量删除")
// @RequiresPermissions("bank:points_rule:del")
@GetMapping(value = "/deleteBatch")
public Result<Integer> deleteBatch(@RequestParam(name = "ids") String ids) {
if (StringUtils.isBlank(ids)) {
return Result.error("请选择需要删除的积分规则");
}
return Result.OK("删除成功", iPointsRuleService.deleteBatch(ids));
}
/**
* 导出excel
*
* @param request
* @param conHealthInfo
*/
@Operation(summary = "积分规则-导出", description = "积分规则-导出")
// @RequiresPermissions("bank:points_rule:exportXls")
@RequestMapping(value = "/exportXls")
public ModelAndView exportXls(HttpServletRequest request, PointsRule conHealthInfo) {
return super.exportXls(request, conHealthInfo, PointsRule.class, "积分规则");
}
}
@@ -1,124 +0,0 @@
package com.renkang.bank.controller;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.renkang.bank.model.dto.UpdUserPointsDTO;
import com.renkang.bank.model.dto.UserPointsPageDTO;
import com.renkang.bank.model.dto.UserPointsRankingDTO;
import com.renkang.bank.model.vo.*;
import com.renkang.bank.service.IUserPointsService;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag;
import org.jeecg.common.api.vo.Result;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.util.List;
/**
* @author pj
* @version 1.0
* @description: 用户积分汇总表
* @date 2026/2/5 16:42
*/
@Tag(name = "用户积分信息")
@RestController
@RequestMapping("/bank/userPoints")
public class UserPointsController {
@Autowired
private IUserPointsService iUserPointsService;
@Operation(summary = "测试积分变更", description = "测试积分变更")
@PostMapping(value = "/testUpdateUserPoints")
public Result<Boolean> testUpdateUserPoints(@RequestBody UpdUserPointsDTO dto) {
return Result.OK(iUserPointsService.testUpdateUserPoints(dto));
}
@Operation(summary = "用户积分信息-分页列表", description = "用户积分信息-分页列表")
@PostMapping(value = "/pageList")
public Result<IPage<UserPointsListVO>> pageList(@RequestBody UserPointsPageDTO dto) {
return Result.OK(iUserPointsService.pageList(dto));
}
@Operation(summary = "用户积分信息-分页列表(导出)", description = "用户积分信息-分页列表(导出)")
@PostMapping(value = "/exportUserPoints")
public Result<String> exportUserPoints(@RequestBody UserPointsPageDTO dto) {
iUserPointsService.exportUserPoints(dto);
return Result.OK("导出成功,请在导出记录查看");
}
@Operation(summary = "用户积分信息-积分明细", description = "用户积分信息-积分明细")
@PostMapping(value = "/detailPageList")
public Result<IPage<UserPointsDetailsVO>> detailPageList(@RequestBody UserPointsPageDTO dto) {
return Result.OK(iUserPointsService.detailPageList(dto));
}
@Operation(summary = "用户积分信息-积分明细(导出)", description = "用户积分信息-积分明细(导出)")
@PostMapping(value = "/exportPointsDetail")
public Result<String> exportPointsDetail(@RequestBody UserPointsPageDTO dto) {
iUserPointsService.exportPointsDetail(dto);
return Result.OK("导出成功,请在导出记录查看");
}
@Operation(summary = "用户积分信息-扣除积分", description = "用户积分信息-扣除积分")
@PostMapping(value = "/deductPoint")
public Result<Boolean> deductPoint(@RequestBody UpdUserPointsDTO dto) {
return Result.OK(iUserPointsService.deductPoint(dto));
}
@Operation(summary = "用户积分信息-员工打卡监测", description = "用户积分信息-员工打卡监测")
@PostMapping(value = "/clockInMonitor")
public Result<IPage<UserPointsMonitorVO>> clockInMonitor(@RequestBody UserPointsPageDTO dto) {
return Result.OK(iUserPointsService.clockInMonitor(dto));
}
@Operation(summary = "用户积分信息-员工打卡监测(导出)", description = "用户积分信息-员工打卡监测(导出)")
@PostMapping(value = "/exportClockInMonitor")
public Result<String> exportClockInMonitor(@RequestBody UserPointsPageDTO dto) {
iUserPointsService.exportClockInMonitor(dto);
return Result.OK("导出成功,请在导出记录查看");
}
@Operation(summary = "用户积分信息-员工积分排名", description = "用户积分信息-员工积分排名")
@PostMapping(value = "/userRanking")
public Result<IPage<UserPointRankingVO>> userRanking(@RequestBody UserPointsRankingDTO dto) {
return Result.OK(iUserPointsService.userRanking(dto));
}
@Operation(summary = "用户积分信息-员工积分排名(导出)", description = "用户积分信息-员工积分排名(导出)")
@PostMapping(value = "/exportUserRanking")
public Result<String> exportUserRanking(@RequestBody UserPointsRankingDTO dto) {
iUserPointsService.exportUserRanking(dto);
return Result.OK("导出成功,请在导出记录查看");
}
@Operation(summary = "用户积分信息-app我的积分", description = "用户积分信息-app我的积分")
@GetMapping(value = "/app/myPoints")
public Result<UserPointsInfoVO> myPoints() {
return Result.OK(iUserPointsService.myPoints());
}
@Operation(summary = "用户积分信息-app积分任务", description = "用户积分信息-app积分任务")
@GetMapping(value = "/app/pointsTaskList")
public Result<List<UserPointsTaskVO>> pointsTaskList() {
return Result.OK(iUserPointsService.pointsTaskList());
}
@Operation(summary = "用户积分信息-app积分打卡", description = "用户积分信息-app积分打卡")
@PostMapping(value = "/app/pointCheckIn")
public Result<Boolean> pointCheckIn(@RequestBody UpdUserPointsDTO dto) {
return Result.OK(iUserPointsService.pointCheckIn(dto));
}
@Operation(summary = "用户积分信息-app积分明细", description = "用户积分信息-app积分明细")
@PostMapping(value = "/app/pointRecord")
public Result<IPage<UserPointRecordVO>> pointRecord(@RequestBody UserPointsPageDTO dto) {
return Result.OK(iUserPointsService.pointRecord(dto));
}
@Operation(summary = "用户积分信息-app积分榜单", description = "用户积分信息-app积分榜单")
@PostMapping(value = "/app/pointRanking")
public Result<IPage<UserPointRankingVO>> pointRanking(@RequestBody UserPointsRankingDTO dto) {
return Result.OK(iUserPointsService.pointRanking(dto));
}
}
@@ -1,16 +0,0 @@
package com.renkang.bank.mapper;
import com.github.yulichang.base.MPJBaseMapper;
import com.renkang.bank.model.po.PointsRule;
import com.renkang.bank.model.vo.UserPointsTaskVO;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import java.util.List;
@Mapper
public interface PointsRuleMapper extends MPJBaseMapper<PointsRule> {
List<UserPointsTaskVO> pointsTaskList(@Param("userId") String userId);
}
@@ -1,19 +0,0 @@
package com.renkang.bank.mapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.github.yulichang.base.MPJBaseMapper;
import com.renkang.bank.model.dto.UserPointsRankingDTO;
import com.renkang.bank.model.po.UserPointsDetails;
import com.renkang.bank.model.vo.UserPointRankingVO;
import org.apache.ibatis.annotations.Mapper;
import java.util.Date;
@Mapper
public interface UserPointsDetailsMapper extends MPJBaseMapper<UserPointsDetails> {
IPage<UserPointRankingVO> userRanking(IPage<UserPointRankingVO> page, Date startTime, Date endTime, UserPointsRankingDTO dto);
IPage<UserPointRankingVO> pointRanking(IPage<UserPointRankingVO> page, Date startTime, Date endTime, String secondOrgCode);
}
@@ -1,14 +0,0 @@
package com.renkang.bank.mapper;
import com.github.yulichang.base.MPJBaseMapper;
import com.renkang.bank.model.po.UserPoints;
import org.apache.ibatis.annotations.Mapper;
/**
* @author: pj
* @description: 用户积分
* @date 2026/2/5 16:47
*/
@Mapper
public interface UserPointsMapper extends MPJBaseMapper<UserPoints> {
}
@@ -1,38 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.renkang.bank.mapper.PointsRuleMapper">
<select id="pointsTaskList" resultType="com.renkang.bank.model.vo.UserPointsTaskVO">
SELECT
a.id as ruleId,
a.frequency,
a.rule_category,
a.rule_desc,
a.icon,
a.points,
CASE
WHEN a.frequency = 1 THEN
CASE WHEN COUNT(b.id) > 0 THEN 1 ELSE 0 END
WHEN a.frequency = 2 THEN
CASE WHEN COUNT(CASE WHEN TRUNC(b.create_time) = TRUNC(SYSDATE) THEN 1 END) > 0 THEN 1 ELSE 0 END
WHEN a.frequency = 3 THEN
CASE WHEN COUNT(CASE WHEN TO_CHAR(b.create_time, 'IYYY-IW') = TO_CHAR(SYSDATE, 'IYYY-IW') THEN 1 END) > 0 THEN 1 ELSE 0 END
WHEN a.frequency = 4 THEN
CASE WHEN COUNT(CASE WHEN TO_CHAR(b.create_time, 'YYYY-MM') = TO_CHAR(SYSDATE, 'YYYY-MM') THEN 1 END) > 0 THEN 1 ELSE 0 END
WHEN a.frequency = 5 THEN
CASE WHEN COUNT(CASE WHEN TO_CHAR(b.create_time, 'Q') = TO_CHAR(SYSDATE, 'Q') AND EXTRACT(YEAR FROM b.create_time) = EXTRACT(YEAR FROM SYSDATE) THEN 1 END) > 0 THEN 1 ELSE 0 END
WHEN a.frequency = 6 THEN
CASE WHEN COUNT(CASE WHEN EXTRACT(YEAR FROM b.create_time) = EXTRACT(YEAR FROM SYSDATE) THEN 1 END) > 0 THEN 1 ELSE 0 END
ELSE 0
END AS clockInStatus
FROM
bank_points_rule a
LEFT JOIN bank_user_points_details b ON b.user_id = #{userId}
AND b.change_type = 1
AND b.business_id = a.id
GROUP BY
a.id,a.frequency
order by a.frequency
</select>
</mapper>
@@ -1,82 +0,0 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.renkang.bank.mapper.UserPointsDetailsMapper">
<select id="userRanking" resultType="com.renkang.bank.model.vo.UserPointRankingVO">
<!--定义公共表表达式用于计算每个用户的总积分-->
WITH UserPointsSummary AS (
SELECT
a.user_id,
SUM(CASE WHEN a.change_type = 1 THEN a.points ELSE 0 END) -
SUM(CASE WHEN a.change_type = 2 THEN a.points ELSE 0 END) AS pointSum
FROM
bank_user_points_details a
INNER JOIN bank_user_points b ON a.user_id = b.user_id
<if test="null != dto.orgCode and '' != dto.orgCode">
AND b.org_code like concat(#{dto.orgCode},'%')
</if>
<if test="null != dto.deptCode and '' != dto.deptCode">
AND b.org_code like concat(#{dto.deptCode},'%')
</if>
GROUP BY
a.user_id
),
<!--计算所有用户的排名-->
RankedUsers AS (
SELECT
user_id,
pointSum,
ROW_NUMBER() OVER (ORDER BY pointSum DESC, user_id ASC) AS ranking
FROM
UserPointsSummary
)
<!--主查询:根据是否传入用户 ID 返回结果-->
SELECT
ranking,
user_id,
pointSum
FROM
RankedUsers
<where>
<if test="dto.userIds != null and dto.userIds.size() > 0">
AND user_id in
<foreach collection="dto.userIds" item="userId" open="(" separator="," close=")">
#{userId}
</foreach>
</if>
</where>
ORDER BY
pointSum DESC, user_id ASC
</select>
<select id="pointRanking" resultType="com.renkang.bank.model.vo.UserPointRankingVO">
WITH UserPointsSummary AS (
SELECT
a.user_id,
SUM( CASE WHEN a.change_type = 1 THEN a.points ELSE 0 END ) - SUM( CASE WHEN a.change_type = 2 THEN a.points
ELSE 0 END ) AS pointSum
FROM
bank_user_points_details a
INNER JOIN bank_user_points b ON a.user_id = b.user_id
<if test="null != secondOrgCode and '' != secondOrgCode">
AND b.org_code like concat(#{secondOrgCode},'%')
</if>
<where>
<if test="startTime != null and endTime != null">
AND a.create_time BETWEEN #{startTime} AND #{endTime}
</if>
</where>
GROUP BY
a.user_id
) SELECT
ROW_NUMBER() OVER ( ORDER BY pointSum DESC ) AS ranking,
user_id,
pointSum
FROM
UserPointsSummary
ORDER BY
pointSum DESC
</select>
</mapper>

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