183 Commits
Author SHA1 Message Date
lianlonggang 177e0e4d97 feat(watch): listCustom 接口与导出增加 eventId、locateTime 字段
1. AbnormalEvent 新增 eventId、locateTime 字段
2. listCustom/largeScreenListCustom/listCustomForMap 三个接口返回新字段
3. 导出 Excel 通过 @Excel 注解自动支持新字段(顺序 12、13)
4. locateTime 时间格式化为 yyyy-MM-dd HH:mm:ss
5. 修正 createMonitorData 中遗漏的 eventId 与 locateTime 字段赋值
6. DDL 表名修正为 QH_WAT_MONITOR_DATA(项目实际表名)
2026-09-03 13:43:26 +08:00
lianlonggang f74a2322e4 chore(db): 将已执行完成的 SQL 脚本从 updatesql 迁移至 done 目录
将历史已执行完毕的 SQL 更新脚本统一归档至 db/done/ 目录,
便于区分待执行脚本与已完成脚本。
2026-09-03 10:43:23 +08:00
lianlonggang 822cdbf539 feat(watch): notice 入参新增 eventId、locateTime;新增 updateMonitorGps 接口
1. WatchNotifyVo、WatchMonitorData 新增 eventId 与 locateTime 字段
2. 新增 POST /watchApi/updateMonitorGps 接口
3. watchNo + eventId 联合定位告警数据,任一缺失则忽略
4. 已存在 lon/lat 数据则忽略本次更新,避免覆盖
5. GPS84 → GCJ02 坐标转换 + 高德地址反查(参考 createMonitorData 逻辑)
6. 仅更新 GPS 相关字段,不推送大屏与短信
2026-09-03 10:40:14 +08:00
lianlonggang d75f21c17e feat(db): watch_monitor_data 表新增 EVENT_ID 与 LOCATE_TIME 字段
为支持手表告警事件与定时GPS位置上报的关联,新增两个字段:
- EVENT_ID(事件ID,用于告警事件与GPS位置更新关联)
- LOCATE_TIME(定位时间,手表定时上报的GPS定位时间)

同时新增 IDX_EVENT_ID 单列索引与 IDX_WATCH_NO_EVENT_ID 联合索引,
优化 watchNo + eventId 联合定位查询性能。

数据库:118-DM 达梦数据库,SQL 全大写规范。
2026-09-03 10:40:02 +08:00
lianlonggangandClaude Opus 4.7 ffee8611fe fix(watch): 恢复设备导入校验和手表绑定单位限制,新增未分配设备数统计
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-06-03 11:05:33 +08:00
lianlonggang 0e8f5e7b14 feat(watch): 导入设备绑定时,手表所属单位以员工信息为准 2026-05-06 14:47:33 +08:00
lianlonggang 115407026f fix(device): 解决设备导入和绑定功能的部门权限问题
- 移除设备导入时的部门必填验证,允许为空时默认归入新疆油田公司(A01)
- 移除设备绑定时的跨单位限制检查
- 在设备绑定时根据员工信息更新手表的单位信息
- 修复部门统计数据查询中的层级展示逻辑
- 优化部门统计服务中的注释文档和代码结构
- 添加设备表更新操作中单位编码和部门ID的条件设置
2026-04-30 14:13:26 +08:00
lianlonggang 9f545952e4 fix(upload): 修复文件上传和权限配置问题
- 修正 MyUploadUtil 中 tar/apk 文件上传调用参数,添加必需的布尔参数
- 注释掉 Shiro 配置中 /sys/upload/down/** 和 /sys/upload/show/** 的匿名访问权限
- 解决文件上传功能与安全配置的兼容性问题
2026-04-30 08:49:19 +08:00
lianlonggang 1988e031e5 feat(file-upload): 集成新疆OSS文件上传功能并优化设备删除逻辑
- 实现新疆油田平台OSS文件上传工具类XjOssUtil,支持OAuth2鉴权和文件操作
- 在MyUploadUtil中集成OSS上传逻辑,通过oss_flag配置动态选择上传方式
- 为.tar和.apk文件强制使用MyUploadUtil上传,其他文件根据oss_flag配置决定上传方式
- 在手表设备删除接口中增加绑定用户检查,已绑定用户的手表不允许删除
- 添加GlobalManager依赖注入以支持动态配置读取
- 实现文件上传流程的日志记录和错误处理机制
2026-04-21 17:22:09 +08:00
lianlonggang 44b0f6ca2b feat(care-user): 添加年度参数并导入日期工具类
- 导入 cn.hutool.core.date.DateUtil 工具类
- 新增 year 字段用于存储当前年份
- 使用 DateUtil.thisYear() 设置默认值为当前年份
2026-04-14 10:34:10 +08:00
lianlonggang ae866f0791 fix(controller): 禁止移动端解绑手表设备并优化异步处理
- 移动端解绑设备接口返回错误提示,需联系健康管理员解绑
- 设备绑定流程中的警告开关设置改为异步执行
- 防止外部系统异常影响主业务流程
- 解绑操作中移除对数据中心的通知调用
2026-04-10 10:28:06 +08:00
wanghaoandClaude Sonnet 4.6 4610ac4737 fix(健康监测): 禁用移动端手表解绑功能,改为提示联系管理员操作
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-09 17:19:35 +08:00
wanghaoandClaude Opus 4.6 6d6920a2b3 fix(健康监测): 修复手表绑定单位校验使用前端传入orgCode导致的校验失效问题
将绑定校验的orgCode来源从dto改为watchDevice实体,
避免前端未传orgCode时校验必定失败,同时消除伪造绕过风险

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-07 14:41:42 +08:00
hejiayang c7041fa69e fix: 解决用户搜索中HTML转义字符显示问题(漏) 2026-03-31 14:12:18 +08:00
wanghao 370f5e0089 Merge remote-tracking branch 'origin/develop' into develop 2026-03-30 18:29:06 +08:00
hejiayang a47f27967e fix: 防止HTML注入(用户姓名中的 · ),对用户输入姓名进行转义处理
- 在AccountDTO中对doctorName字段进行HTML转义处理
- 在ConDoctorDTO中对doctorName字段进行HTML转义处理
- 在ConEvaluateDTO中对userName和expertName字段进行HTML转义处理
- 在ConHealthInfoAnswerDTO中对fromName字段进行HTML转义处理
- 在ConHelperDTO中对userName字段进行HTML转义处理
- 在ConSessionDTO中对fromName和doctorName字段进行HTML转义处理
- 在CallLogDTO中对realName字段进行HTML转义处理
- 在PhoneListDTO中对realName字段进行HTML转义处理
- 在TblQimoNoticeDTO中对realName字段进行HTML转义处理
- 在EmergencyProfessionUserController中对name参数进行HTML转义处理
- 在OrderServiceImpl中对salvageUserName字段进行HTML转义处理
- 在AbnormalEventFilter中对userName字段进行HTML转义处理
- 在CalorieDataByUserDTO中对realName字段进行HTML转义处理
- 在WatchBindHisServiceImpl中对bindRealName字段进行HTML转义处理
- 在WatchDataServiceImpl中对username字段进行HTML转义处理
- 在WatchDeviceServiceImpl中对bindRealName字段进行HTML转义处理
- 在HealthUserEmployeeExController中对realname字段进行HTML转义处理
- 在SysUserController中对realname字段进行HTML转义处理
- 在SysUserDepartChangeApplyController中对userName参数进行HTML转义处理
- 在SelectWrapperDTO中对realName字段进行HTML转义处理
- 在SysBaseApiImpl中对username参数进行HTML转义处理
- 在SysUserServiceImpl中对name参数进行HTML转义处理
2026-03-30 17:54:36 +08:00
wanghaoandClaude Sonnet 4.6 6c08f5f141 fix(用户管理): 修复不传 realname 时查询用户列表抛 NPE 的问题
对 realname 参数增加非空判断,避免 null 值时调用 replaceAll 抛出 NullPointerException

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-30 17:22:05 +08:00
lianlonggang 690f688c6a 屏蔽pom文件不需要的配置 2026-03-30 16:07:27 +08:00
wanghaoandClaude Sonnet 4.6 63cc815022 fix(用户管理): 修复用户查询时名字中间隔号被 HTML 实体转义的问题
将查询参数中的 &middot; 转义回 · 后再执行查询

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-30 14:54:56 +08:00
wanghaoandClaude Sonnet 4.6 8f00d07377 feat(健康咨询): 新增音视频咨询超时关闭功能及定时任务
- 新增 endVideoSession 接口,供手动触发和定时任务调用
- Mapper 层添加 UPDATE SQL:预约日期已过的视频咨询,有通话记录改为待评价(4),无记录改为取消(6)
- SyncScheduleJob 新增 XXL-Job 任务 endVideoSession,每日自动处理过期视频咨询

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-30 14:54:33 +08:00
wanghaoandClaude Sonnet 4.6 2e90ec71cc fix(手表设备): 手表绑定时校验只能绑定本单位人员
新增单位编码前6位匹配校验,禁止跨单位绑定手表;
同时将"该设备已绑定该员工"改为"该设备已被绑定"

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-27 15:48:55 +08:00
wanghao a43806c4e9 fix(手表设备): 优化错误提示信息,将"该工具不存在"改为"该监测工具不存在" 2026-03-18 14:47:39 +08:00
wanghao 237df3ef38 修改移动端手表绑定接口 2026-03-12 17:28:52 +08:00
wanghao bd9fece99c 新增移动端手表绑定解绑接口 2026-03-12 16:16:58 +08:00
pengjie 47cebd3392 【用户信息】增加返回字段,加密接口 2026-03-06 17:01:49 +08:00
wanghao 61e049cc47 手表数据修改 2026-03-05 17:05:31 +08:00
wanghao ad03177e50 手表数据修改 2026-03-05 17:00:18 +08:00
wanghao 3db3301fe3 手表数据修改 2026-03-05 16:10:31 +08:00
wanghao fa9a186a5e 手表数据修改 2026-03-05 15:53:40 +08:00
wanghao 3cea926a1e 手表接口修改 2026-03-04 17:23:32 +08:00
wanghao fe82afd934 手表接口修改 2026-03-04 15:30:07 +08:00
wanghao 96242b5c00 手表数据返回处理 2026-03-03 17:22:20 +08:00
wanghao 291f6a4eaa 移动端首页手表数据修改 2026-03-03 10:13:15 +08:00
wanghao 98dc17552d 异常事件导出增加回传时间 2026-02-27 11:14:42 +08:00
lianlonggang e9784f7957 资源情况监测方法 2026-02-12 11:29:36 +08:00
wanghao 175238e291 调整移动端消息通知倒序 2026-02-11 16:42:30 +08:00
wanghao 3c822d581c 调整消息通知sql 2026-02-11 16:40:47 +08:00
wanghao 77d72d1d78 移动端通知接口优化 2026-02-11 15:33:14 +08:00
pengjie 9dbdd911d9 appbanner图 2026-02-11 11:03:33 +08:00
pengjie 0022497f64 appbanner图 2026-02-11 10:50:05 +08:00
pengjie 9714e97a71 appbanner图 2026-02-11 10:45:31 +08:00
wanghao 65f5755422 移动端首页通知 2026-02-11 10:07:27 +08:00
feng 677b4d5080 fix 2026-02-11 09:55:11 +08:00
wanghao 49f316dd82 移动端首页获取图片接口排除 2026-02-10 17:58:05 +08:00
pengjie b6aecf4e64 用户信息查询 2026-02-10 15:45:36 +08:00
pengjie cd7f5661de 【积分银行】积分 2026-02-09 17:03:19 +08:00
pengjie 6e005f2f4e 【积分银行】积分 2026-02-09 16:30:50 +08:00
wanghao 03f8be4c98 获取指定图片url 2026-02-09 16:23:33 +08:00
pengjie b2b96290bf Merge remote-tracking branch 'origin/develop' into develop 2026-02-06 17:49:52 +08:00
pengjie 80d1cebc0f 【积分银行】积分 2026-02-06 17:49:43 +08:00
wanghao e064e312da 消息通知的指定人员 2026-02-06 17:47:09 +08:00
pengjie 173eaa1b60 Merge remote-tracking branch 'origin/develop' into develop 2026-02-05 19:18:23 +08:00
pengjie ff4de69409 【轮播图】app轮播图 2026-02-05 19:18:15 +08:00
wanghao 6b13ab307a 消息通知 2026-02-05 19:18:12 +08:00
feng b57482b0be 健康银行表设计 2026-02-05 15:59:38 +08:00
feng 41ab299602 新微服务健康银行 2026-02-04 17:14:34 +08:00
wanghao e1eeafa13b 优化小助手端咨询列表接口 2026-02-03 10:46:46 +08:00
lianlonggang e535308048 修改包名,屏蔽短信日志 2026-02-02 19:50:20 +08:00
stan b03c4db189 update:es日志暂时去除 2026-02-02 19:14:35 +08:00
pengjie a6aebf34b4 【安眼】添加日志 2026-02-02 19:01:56 +08:00
pengjie 46c0c15bf2 【安眼】添加日志 2026-02-02 19:00:01 +08:00
pengjie e47a02f4cd 【安眼】缓存用户部门信息及登录逻辑 2026-02-02 16:14:42 +08:00
pengjie 6f404e466c Merge remote-tracking branch 'origin/develop' into develop 2026-02-02 16:10:39 +08:00
pengjie 40506c561c 【安眼】缓存用户部门信息及登录逻辑 2026-02-02 16:10:30 +08:00
pengjie c73c1089ee 【安眼】缓存用户部门信息及登录逻辑 2026-02-02 16:08:05 +08:00
lianlonggang fe014a56c8 屏蔽发短信日志 2026-02-02 12:44:46 +08:00
lianlonggang 24b1967ba9 日志文件下载功能,支持多实例日志 2026-01-29 19:36:12 +08:00
pengjie c9020ee8d3 【安眼】缓存用户token及用户登录信息 2026-01-27 10:23:34 +08:00
wanghao 1a9c557899 健康监测权限处理 2026-01-26 18:29:35 +08:00
feng 8eca7a0232 手表监测首页默认值 2026-01-26 09:08:00 +08:00
feng b580502f48 fix 2026-01-23 17:14:36 +08:00
feng 654a842ed9 fix 2026-01-23 16:57:32 +08:00
lianlonggang a58a007809 新疆短信内容中手机号码处理,避免含正常手机号的短信发不出去 2026-01-22 18:52:30 +08:00
feng fdd6fce15c 空对象处理 2026-01-22 14:47:05 +08:00
feng 3a8252e81d 安眼平台获取用户信息失败提示 2026-01-22 13:35:02 +08:00
feng 4f8ca1b97b 重构监测首页接口 2026-01-21 13:40:01 +08:00
feng 4ba67b70c5 暂时解决报错问题 2026-01-15 14:07:05 +08:00
wanghao 58acc58338 部门统计bug修复 2026-01-09 16:06:36 +08:00
pengjie 410bd6efa6 【应急单】定时解散群聊 2026-01-08 16:59:39 +08:00
pengjie a00d361f6b 【应急单】定时解散群聊 2026-01-08 16:59:01 +08:00
wanghao 464abc6521 部门统计bug修复 2026-01-08 15:19:46 +08:00
wanghao 7362ca6b8a 大屏医院咨询数量统计增加医院 2026-01-08 14:34:13 +08:00
lianlonggang 309bdc467e 短信发送任务log屏蔽 2026-01-08 13:48:01 +08:00
feng 33470b1a04 修改首页睡眠数据查询逻辑 2026-01-07 14:50:32 +08:00
wanghao 66b90d1c14 修改员工导出bug 2026-01-05 16:38:25 +08:00
wanghao de888296d9 修改员工导出bug及大屏睡眠人数 2026-01-05 15:22:16 +08:00
feng fb699c5227 睡眠接口修改 2026-01-05 13:46:38 +08:00
lianlonggang 60edd2726d 新疆短信内容中手机号码处理,避免含正常手机号的短信发不出去 2025-12-30 15:09:23 +08:00
feng 10c2b4737f fix 2025-12-29 15:56:59 +08:00
feng a6935d9f42 大屏 fix 2025-12-29 14:37:11 +08:00
feng ab7fe2a199 应急大屏开屏动画接口 2025-12-29 13:46:04 +08:00
feng 1495841ad2 加开屏动画表 2025-12-29 10:46:07 +08:00
wanghao 9f583d8850 大屏修改推送 2025-12-25 14:16:45 +08:00
feng 6381d7ab9c AED资源单位和部门分开显示 2025-12-25 13:57:16 +08:00
feng 34c3c59c0c 新疆需求整改 2025-12-25 11:16:29 +08:00
lianlonggang 7b473e5e36 AED导入功能调整,指定sheet数量,支持纯小数的高德坐标 2025-12-24 16:51:58 +08:00
pengjie f5247cc21f 【安眼】拦截器 2025-12-24 14:35:38 +08:00
feng 1c7ba176f6 新疆项目需求整改 2025-12-23 18:10:05 +08:00
feng e45f571cd2 重构手表绑定导入接口 2025-12-23 16:10:50 +08:00
feng 492e44bb80 手表日汇总数据bug修复 2025-12-19 19:33:13 +08:00
wanghao 66bb39bc18 设备导入修改及最新值 2025-12-18 17:25:00 +08:00
feng 5d66a58af9 fix 2025-12-18 14:28:49 +08:00
feng 9686399c80 修改监测数据时间统计维度 2025-12-17 17:49:36 +08:00
feng 19f6973a1f 数据查询过滤用户id为空的数据 2025-12-17 15:37:07 +08:00
feng bffd4fa7df fix 2025-12-17 14:14:26 +08:00
feng 86862ea0a7 心率异常数据去掉时间的默认值 2025-12-17 13:36:07 +08:00
wanghao da9169f774 设备导入修改及最新值 2025-12-17 13:21:42 +08:00
feng a972e556d9 静息心率数据修复 2025-12-16 17:45:13 +08:00
feng b093d95463 代码逻辑补全 2025-12-16 16:47:19 +08:00
feng a7bad9d444 异常心率列表 2025-12-16 15:42:23 +08:00
feng 9533c976f2 大屏手表监测数据统计逻辑修改 2025-12-16 10:11:41 +08:00
wanghao 79c8bd0da1 增加筛选 2025-12-15 18:03:46 +08:00
lianlonggang 7c337a40a7 高德地址转换 2025-12-15 16:18:28 +08:00
wanghao 3b25a26540 修改一键告警构建socket坐标 2025-12-15 15:59:17 +08:00
lianlonggang 428992ca6d 高德地址转换 2025-12-15 13:40:30 +08:00
wanghao a59914b95c 修改一键告警构建socket 2025-12-15 13:30:33 +08:00
wanghao 5c9cfbb7c3 短信bug修复 2025-12-15 11:11:15 +08:00
wanghao 9d157d17d5 大屏今日应急bug修复 2025-12-15 11:00:52 +08:00
lianlonggang f88bb0af52 高德地址转换 2025-12-15 08:55:43 +08:00
lianlonggang 117d9185f4 高德地址转换 2025-12-14 18:30:35 +08:00
wanghao 4d9051d5f9 大屏服务详情列表 2025-12-13 18:49:18 +08:00
feng 6c3047abf2 fix 2025-12-13 18:39:54 +08:00
wanghao 9b15cb694d 大屏websocket修改 2025-12-13 18:36:12 +08:00
wanghao 08b487accf 大屏websocket修改 2025-12-13 18:31:40 +08:00
wanghao 3bc6566f2d 大屏服务详情修改 2025-12-13 17:32:11 +08:00
wanghao fbf8b11d4f 大屏服务详情修改 2025-12-13 16:47:12 +08:00
feng f2d63353b0 sql文件更换目录 2025-12-13 16:10:40 +08:00
wanghao 707e41025c 大屏修改 2025-12-13 16:08:04 +08:00
feng 8f1d3fdf2a 大屏呼入电话数据调整 2025-12-13 15:15:55 +08:00
feng 24cd7cfdca 大屏关爱联络员暂时改为接口现查 2025-12-13 14:24:55 +08:00
wanghao 2ca6c5f1cd Merge remote-tracking branch 'origin/develop' into develop 2025-12-12 17:27:55 +08:00
wanghao 5e4f95c10d push 2025-12-12 17:27:43 +08:00
feng de69956a71 接口计算静息心率过滤空值 2025-12-12 10:57:32 +08:00
feng 7d316cdf47 修改提示 2025-12-10 16:13:02 +08:00
feng 9d6c2f2a14 全局替换小助手字样 2025-12-10 15:55:53 +08:00
feng 569e23322f 咨询服务名片消息已读接口 2025-12-10 15:02:14 +08:00
wanghao fe5ca6619c 新疆修改发送短信逻辑 2025-12-10 13:56:11 +08:00
feng f73a09e91c 临时修复首页睡眠数据bug 2025-12-09 09:56:28 +08:00
feng 9916e792db 去掉注册腾讯IM账号拼接小助手字样 2025-12-08 15:22:59 +08:00
wanghao 36bbbbf180 新疆体检相关 2025-12-05 15:06:21 +08:00
wanghao b8108c4908 新疆体检相关 2025-12-05 13:50:45 +08:00
feng 06236177a3 安眼接口加spring retry重试注解 2025-12-04 16:52:33 +08:00
pengjie 930b806a25 【安眼】信息同步修改 2025-12-04 15:05:50 +08:00
pengjie 0f6fc575d5 Merge remote-tracking branch 'origin/develop' into develop 2025-12-04 15:03:02 +08:00
pengjie 4446515656 【安眼】信息同步修改 2025-12-04 15:02:54 +08:00
feng 3c7bda80bb 修复bug , 新增aed导入的临时方法 2025-12-04 11:29:43 +08:00
pengjie f37963f141 【安眼】用户生日修复 2025-12-04 09:56:11 +08:00
wanghao 5d0dc81279 新疆大屏 2025-12-03 18:21:46 +08:00
pengjie 22626eb9d5 【安眼】用户信息同步 2025-12-03 18:20:26 +08:00
feng 0b5ec13aab 同步AED数据 2025-12-03 16:21:22 +08:00
wanghao 595d702e9e 新疆大屏 2025-12-03 15:53:18 +08:00
pengjie a4a0265a82 【安眼】用户信息同步 2025-12-02 18:09:07 +08:00
wanghao 430817655a 新疆大屏 2025-12-02 17:59:26 +08:00
feng 536ca94d8b Merge branch 'develop' of https://gitea.rk-health.com/renkang/xj-platform into develop 2025-12-02 17:54:35 +08:00
feng cb0d45c81b 通过安眼接口更新基础数据 2025-12-02 17:54:32 +08:00
pengjie a20771f420 【安眼】用户信息同步 2025-12-02 17:39:04 +08:00
pengjie 23b560ca01 【安眼】用户信息同步 2025-12-02 17:11:00 +08:00
feng cd6d48c22e 删除安眼重复接口 2025-12-02 13:35:59 +08:00
wanghao 5d6ab34fd2 Resource添加安眼id 2025-12-02 13:34:01 +08:00
feng ae4c5e7ee6 AED布点支持手动位置位置信息 2025-12-02 11:21:50 +08:00
feng e7669dc8bc 部分接口参数调整 2025-12-02 11:02:51 +08:00
wanghao 560fe0dc19 安眼接口api开发 2025-11-28 17:19:23 +08:00
wanghao 9086453544 新疆aed迁移修补sql 2025-11-28 14:37:52 +08:00
pengjie 8adaff4445 【应急就医】详情报错修复 2025-11-28 10:01:15 +08:00
wanghao 9942105af9 新疆aed迁移 2025-11-28 09:35:59 +08:00
wanghao 714bba6733 Merge remote-tracking branch 'origin/develop' into develop 2025-11-27 17:36:15 +08:00
wanghao f09b695903 新疆aed迁移 2025-11-27 17:36:05 +08:00
pengjie 019c7d600a 【im消息】下载地址替换,数据修复方法 2025-11-27 16:58:23 +08:00
pengjie 56697c1a78 【im消息】下载地址替换,数据修复方法 2025-11-27 16:30:31 +08:00
feng fe0e075220 暂未提交 2025-11-27 14:14:41 +08:00
wanghao ee7ff671b5 新疆aed迁移 2025-11-27 13:29:08 +08:00
lianlonggang d7d69755a7 咨询统计查询调整 2025-11-27 10:21:46 +08:00
lianlonggang 5f612993c6 短信发送调整 2025-11-27 10:21:16 +08:00
lianlonggang 105bf98d25 docker配置调整 2025-11-27 10:19:37 +08:00
wanghao 354d3c82a2 新疆aed迁移 2025-11-26 17:44:17 +08:00
SkyJourney 3d5f72a26b 添加Google Jib插件构建docker镜像 2025-11-26 17:21:52 +08:00
wanghao 551eaf50fb 手表部门周报默认值处理 2025-11-21 17:00:57 +08:00
feng 5aacb190ef 新增请求头 2025-11-20 15:22:19 +08:00
feng e975d62c17 安眼平台接口对接 2025-11-20 15:15:34 +08:00
pengjie ec67a5e064 Merge remote-tracking branch 'origin/develop' into develop 2025-11-12 09:58:23 +08:00
pengjie a1a9360d97 【应急单】参与人员子表数据修复sql 2025-11-12 09:58:16 +08:00
wanghao fba5870c50 专家处理 2025-11-12 09:48:11 +08:00
pengjie 7e310ba037 【统一认证】密码校验注释 2025-11-12 09:32:33 +08:00
422 changed files with 21979 additions and 1311 deletions
@@ -0,0 +1,8 @@
-- aed表加字段
ALTER TABLE `aed_equipment_manger`
ADD COLUMN `geo_collect_type` tinyint NULL DEFAULT 0 COMMENT '位置数据维护方式(0-地图选点,1-手动维护)' AFTER `latitude`;
ADD COLUMN `ay_id` varchar(255) NULL COMMENT '安眼平台系统id' AFTER `name`;
-- 应急资源表加字段
ALTER TABLE `emergency_resource`
ADD COLUMN `ay_id` varchar(255) NULL COMMENT '安眼平台系统id' AFTER `run_time`;
@@ -0,0 +1,202 @@
-------------------------
-------------------------
-------------------------
CREATE TABLE `aed_equipment_certificate` (
`id` bigint NOT NULL COMMENT '主键',
`name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '姓名',
`sex` int DEFAULT NULL COMMENT '性别',
`birthday` datetime DEFAULT NULL COMMENT '出生年月',
`unit` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '单位',
`dept` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '部门',
`certificate_no` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci 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 DEFAULT NULL COMMENT '创建人',
`create_time` datetime DEFAULT NULL COMMENT '创建时间',
`update_by` varchar(32) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci DEFAULT NULL COMMENT '更新人',
`update_time` datetime DEFAULT NULL COMMENT '更新时间',
PRIMARY KEY (`id`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci ROW_FORMAT=DYNAMIC COMMENT='aed取证人员列表';
-------------------------
-------------------------
-------------------------
CREATE TABLE `aed_equipment_maintain` (
`id` bigint NOT NULL COMMENT '主键',
`equipment_id` bigint DEFAULT NULL COMMENT '设备id',
`maintain_date` date DEFAULT NULL COMMENT '维护日期',
`maintain_user` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '维护人',
`maintain_user_tel` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '维护人电话',
`maintain_unit` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '维护方',
`appearance` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '外观是否完好',
`switch_flag` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '按钮开关是否正常工作',
`battery` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '电池电量情况',
`battery_flag` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '电池是否完好',
`electrode_validity` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '电极片是否在有效期内',
`consumable` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '耗材是否无损',
`siren` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '警报器是否完好',
`battery_validity` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '电池是否再有效期内',
`electrode` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '电极片是否完好',
`identification` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci 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 DEFAULT NULL COMMENT '创建人',
`create_time` datetime DEFAULT NULL COMMENT '创建时间',
`update_by` varchar(32) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci DEFAULT NULL COMMENT '更新人',
`update_time` datetime DEFAULT NULL COMMENT '更新时间',
PRIMARY KEY (`id`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci ROW_FORMAT=DYNAMIC COMMENT='aed设备维护表';
-------------------------
-------------------------
-------------------------
CREATE TABLE `aed_equipment_manger` (
`id` bigint NOT NULL COMMENT '主键',
`name` varchar(100) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NOT NULL COMMENT '名称',
`longitude` decimal(10,6) DEFAULT NULL COMMENT '经度',
`latitude` decimal(10,6) DEFAULT NULL COMMENT '纬度',
`depart_code` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '部门编码',
`host_model` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '主机型号',
`host_serial_num` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '主机序列号编号',
`electrode_sheet_valid_time` date DEFAULT NULL COMMENT '电极片有效期',
`router_model` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '路由器型号',
`router_serial_num` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '路由器序列号',
`battery_model` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '电池型号',
`battery_voltage` double(5,2) DEFAULT NULL COMMENT '电池电压',
`warranty_start_date` date DEFAULT NULL COMMENT '质保开始时间',
`warranty_end_date` date DEFAULT NULL COMMENT '质保结束时间',
`aed_img` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '设备图片 多个","分隔',
`mfrs_name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '制造商名称',
`mfrs_mobile` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '制造商联系电话',
`install_address` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '安装位置',
`install_address_img` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '位置图片 多个","分隔',
`manage_user_id` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '管理人员id',
`manage_user_name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '管理人员',
`manage_user_mobile` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '管理人员电话',
`check_status` tinyint(1) DEFAULT '-1' COMMENT '自检查状态',
`electrode_sheet_status` tinyint(1) DEFAULT '-1' COMMENT '电极片状态',
`battery_status` tinyint(1) DEFAULT '-1' COMMENT '电池状态',
`router_status` tinyint(1) DEFAULT '-1' COMMENT '路由状态',
`electrode_is_ok` char(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '电极片是否完好(0: 1:)',
`manage_depart_code` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '管理部门code',
`manage_depart_name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '管理部门名',
`charge_first` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '负责人1',
`charge_first_mobile` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '负责人1电话',
`charge_second` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '负责人2',
`charge_second_mobile` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '负责人2电话',
`annex` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '附件',
`video_handle` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '视频操作',
`handle_explain` text CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci COMMENT '操作说明',
`aed_annex_status` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '设备附件状态',
`install_time` date DEFAULT NULL COMMENT '安装时间',
`cover_user_num` int 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 DEFAULT NULL COMMENT '创建人',
`create_time` datetime DEFAULT NULL COMMENT '创建时间',
`update_by` varchar(32) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci DEFAULT NULL COMMENT '更新人',
`update_time` datetime DEFAULT NULL COMMENT '更新时间',
`memo` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '覆盖人数',
`operate_instruction` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '操作图片文件路径此处向下为新增的字段',
`operate_video` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '操作视频文件路径',
`disclaimer` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '免责说明文件路径',
`brand` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '品牌',
`type` int DEFAULT NULL COMMENT '来源字典 设备类型 1立式 2挂式3车载',
`in_storage_date` date DEFAULT NULL COMMENT '入库日期',
`out_factory_date` datetime DEFAULT NULL COMMENT '出厂日期',
`battery_life` datetime DEFAULT NULL COMMENT '电池有效期',
`model` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '型号',
`control_org_name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '管理部门名称',
`publish_flag` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '是否已布点10',
`code` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '编号',
`electric_quantity` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '电量',
`status` int DEFAULT NULL COMMENT '设备状态 1正常中2维护中',
`self_check_update_time` datetime DEFAULT NULL COMMENT '自检信息更新时间',
`camera_num` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '摄像头序列号',
`camera_code` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '摄像头验证码',
PRIMARY KEY (`id`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci ROW_FORMAT=DYNAMIC COMMENT='应急资源表';
-------------------------
-------------------------
-------------------------
CREATE TABLE `aed_equipment_retrain` (
`id` bigint NOT NULL COMMENT '主键',
`train_id` bigint DEFAULT NULL COMMENT '培训id',
`train_date` datetime DEFAULT NULL COMMENT '培训日期',
`address` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '培训地点',
`user_nums` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '参训人数',
`re_train_status` tinyint(1) DEFAULT NULL COMMENT '复训效果(1:234)',
`site_pic` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '现场图片',
`site_video` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci 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 DEFAULT NULL COMMENT '创建人',
`create_time` datetime DEFAULT NULL COMMENT '创建时间',
`update_by` varchar(32) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci DEFAULT NULL COMMENT '更新人',
`update_time` datetime DEFAULT NULL COMMENT '更新时间',
PRIMARY KEY (`id`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci ROW_FORMAT=DYNAMIC COMMENT='aed复训记录表';
-------------------------
-------------------------
-------------------------
CREATE TABLE `aed_equipment_train` (
`id` bigint NOT NULL COMMENT '主键',
`flag` int DEFAULT NULL COMMENT '类型 1现场培训 2现场演练',
`equipment_id` bigint NOT NULL COMMENT '设备id',
`train_date` date DEFAULT NULL COMMENT '培训日期/演练日期',
`join_nums` int DEFAULT NULL COMMENT '参加人数',
`qualified_nums` int DEFAULT NULL COMMENT '合格人数',
`charge_user1` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '负责人1',
`charge_user2` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '负责人1',
`site_sign_sheet` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '现场签到表文件路径',
`site_pic` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '现场图片文件路径',
`site_video` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '现场视频文件路径',
`site_profile` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '培演资料文件路径',
`effect` int DEFAULT NULL COMMENT '培演效果 1234',
`del_flag` tinyint(1) NOT NULL DEFAULT '0' COMMENT '删除状态(0-正常,1-已删除)',
`create_by` varchar(32) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci DEFAULT NULL COMMENT '创建人',
`create_time` datetime DEFAULT NULL COMMENT '创建时间',
`update_by` varchar(32) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci DEFAULT NULL COMMENT '更新人',
`update_time` datetime DEFAULT NULL COMMENT '更新时间',
PRIMARY KEY (`id`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci ROW_FORMAT=DYNAMIC COMMENT='aed设备现场培训演练表';
-------------------------
-------------------------
-------------------------
CREATE TABLE `aed_location_equipment` (
`id` bigint NOT NULL COMMENT '主键',
`equipment_id` bigint DEFAULT NULL COMMENT '设备id',
`pick_date` date DEFAULT NULL COMMENT '布点日期',
`address` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '布点位置',
`longitude` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '经度',
`latitude` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '纬度',
`cover_nums` int DEFAULT NULL COMMENT '覆盖人数',
`first_charge` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '责任人1',
`first_charge_tel` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '责任人1电话',
`second_charge` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '责任人2',
`second_charge_tel` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '责任人2电话',
`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 DEFAULT NULL COMMENT '创建人',
`create_time` datetime DEFAULT NULL COMMENT '创建时间',
`update_by` varchar(32) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci DEFAULT NULL COMMENT '更新人',
`update_time` datetime DEFAULT NULL COMMENT '更新时间',
PRIMARY KEY (`id`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci ROW_FORMAT=DYNAMIC COMMENT='aed设备布点位置表';
-------------------------
-------------------------
-------------------------
CREATE TABLE `aed_use_record` (
`id` bigint NOT NULL COMMENT '主键',
`equipment_id` bigint DEFAULT NULL COMMENT '设备id',
`used_time` datetime DEFAULT NULL COMMENT '使用时间',
`salved_person` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '被救助人',
`heart_flag` int DEFAULT NULL COMMENT '症状1 来源字典1有呼吸2无呼吸',
`consciousness_flag` int DEFAULT NULL COMMENT '症状2来源字典1有意识2无意识',
`use_user` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '使用人',
`use_instruction` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '使用过程说明',
`start_nums` int DEFAULT NULL COMMENT '启动次数',
`success_rate` double(10,2) DEFAULT NULL COMMENT '成功除颤率',
`fail_rate` double(10,2) DEFAULT NULL COMMENT '故障率',
`use_result` int DEFAULT NULL 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 DEFAULT NULL COMMENT '创建人',
`create_time` datetime DEFAULT NULL COMMENT '创建时间',
`update_by` varchar(32) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci DEFAULT NULL COMMENT '更新人',
`update_time` datetime DEFAULT NULL COMMENT '更新时间',
PRIMARY KEY (`id`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci ROW_FORMAT=DYNAMIC COMMENT='aed应用记录表';
@@ -0,0 +1,244 @@
---------------------------xj_aed表 先删除后插入
DELETE FROM xj_aed;
---------------------------
INSERT INTO `xj_emergency`.`xj_aed` (`id`, `name`, `address`, `longitude`, `latitude`, `manage_name`, `manage_phone`, `org_code`, `del_flag`, `create_time`, `create_by`, `update_time`, `update_by`) VALUES ('1968210819723214849', '自动体外除颤仪', '公司机关机关机关楼一楼524房间', 84.892962, 45.571915, NULL, NULL, 'A01A18', 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `xj_emergency`.`xj_aed` (`id`, `name`, `address`, `longitude`, `latitude`, `manage_name`, `manage_phone`, `org_code`, `del_flag`, `create_time`, `create_by`, `update_time`, `update_by`) VALUES ('1968210819723214850', '自动体外除颤仪', '乌鲁木齐明园服务中心无明园服务中心综合办公楼四层会议室门口', 87.597842, 43.818145, NULL, NULL, 'A01A38', 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `xj_emergency`.`xj_aed` (`id`, `name`, `address`, `longitude`, `latitude`, `manage_name`, `manage_phone`, `org_code`, `del_flag`, `create_time`, `create_by`, `update_time`, `update_by`) VALUES ('1968210819723214851', '自动体外除颤仪', '西部原油销售中心无明园服务中心综合办公楼四层会议室门口', 87.597842, 43.818145, NULL, NULL, 'A01A19', 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `xj_emergency`.`xj_aed` (`id`, `name`, `address`, `longitude`, `latitude`, `manage_name`, `manage_phone`, `org_code`, `del_flag`, `create_time`, `create_by`, `update_time`, `update_by`) VALUES ('1968210819723214852', '自动体外除颤仪', '玛湖勘探开发项目部项目部机关油田公司机关2#楼7楼8楼油田公司机关2#楼1楼大厅', 84.886853, 45.578863, NULL, NULL, 'A01A26', 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `xj_emergency`.`xj_aed` (`id`, `name`, `address`, `longitude`, `latitude`, `manage_name`, `manage_phone`, `org_code`, `del_flag`, `create_time`, `create_by`, `update_time`, `update_by`) VALUES ('1968210819723214853', '自动体外除颤仪', '玛湖勘探开发项目部项目部基地项目部基地2#办公楼1楼墙面', 85.413101, 45.911086, NULL, NULL, 'A01A26', 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `xj_emergency`.`xj_aed` (`id`, `name`, `address`, `longitude`, `latitude`, `manage_name`, `manage_phone`, `org_code`, `del_flag`, `create_time`, `create_by`, `update_time`, `update_by`) VALUES ('1968210819723214854', '自动体外除颤仪', '监督中心机关各监督站油田公司机关2#楼1楼大厅', 84.886853, 45.578863, NULL, NULL, 'A01A16', 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `xj_emergency`.`xj_aed` (`id`, `name`, `address`, `longitude`, `latitude`, `manage_name`, `manage_phone`, `org_code`, `del_flag`, `create_time`, `create_by`, `update_time`, `update_by`) VALUES ('1968210819723214855', '自动体外除颤仪', '监督中心计量监督检测中心质量安全环保研究所公共事务中心大院5号楼1楼', 84.873536, 45.599149, NULL, NULL, 'A01A16', 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `xj_emergency`.`xj_aed` (`id`, `name`, `address`, `longitude`, `latitude`, `manage_name`, `manage_phone`, `org_code`, `del_flag`, `create_time`, `create_by`, `update_time`, `update_by`) VALUES ('1968210819723214856', '自动体外除颤仪', '监督中心油田化学剂产品质量监督检验站勘探开发研究院大院6号楼一楼', 84.901295, 45.604129, NULL, NULL, 'A01A16', 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `xj_emergency`.`xj_aed` (`id`, `name`, `address`, `longitude`, `latitude`, `manage_name`, `manage_phone`, `org_code`, `del_flag`, `create_time`, `create_by`, `update_time`, `update_by`) VALUES ('1968210819723214857', '自动体外除颤仪', '监督中心环境监测站勘探开发研究院大院2号楼一楼', 84.899350, 45.604129, NULL, NULL, 'A01A16', 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `xj_emergency`.`xj_aed` (`id`, `name`, `address`, `longitude`, `latitude`, `manage_name`, `manage_phone`, `org_code`, `del_flag`, `create_time`, `create_by`, `update_time`, `update_by`) VALUES ('1968210819723214858', '自动体外除颤仪', '新疆油田储气库有限公司机关机关二楼健康小屋内', 86.888887, 44.174855, NULL, NULL, 'A01A32', 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `xj_emergency`.`xj_aed` (`id`, `name`, `address`, `longitude`, `latitude`, `manage_name`, `manage_phone`, `org_code`, `del_flag`, `create_time`, `create_by`, `update_time`, `update_by`) VALUES ('1968210819723214859', '自动体外除颤仪', '新疆油田储气库有限公司集注站集注站中控', 87.029069, 44.129586, NULL, NULL, 'A01A32', 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `xj_emergency`.`xj_aed` (`id`, `name`, `address`, `longitude`, `latitude`, `manage_name`, `manage_phone`, `org_code`, `del_flag`, `create_time`, `create_by`, `update_time`, `update_by`) VALUES ('1968210819723214860', '自动体外除颤仪', '风城油田作业区乌尔禾机关机关楼一楼大厅', 85.679373, 46.090483, NULL, NULL, 'A01A08', 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `xj_emergency`.`xj_aed` (`id`, `name`, `address`, `longitude`, `latitude`, `manage_name`, `manage_phone`, `org_code`, `del_flag`, `create_time`, `create_by`, `update_time`, `update_by`) VALUES ('1968210819723214861', '自动体外除颤仪', '风城油田作业区乌尔禾A栋办公楼B栋房务中心', 85.676867, 46.089368, NULL, NULL, 'A01A08', 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `xj_emergency`.`xj_aed` (`id`, `name`, `address`, `longitude`, `latitude`, `manage_name`, `manage_phone`, `org_code`, `del_flag`, `create_time`, `create_by`, `update_time`, `update_by`) VALUES ('1968210819723214862', '自动体外除颤仪', '风城油田作业区乌尔禾B栋宿舍B栋房务中心', 85.676867, 46.089368, NULL, NULL, 'A01A08', 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `xj_emergency`.`xj_aed` (`id`, `name`, `address`, `longitude`, `latitude`, `manage_name`, `manage_phone`, `org_code`, `del_flag`, `create_time`, `create_by`, `update_time`, `update_by`) VALUES ('1968210819723214863', '自动体外除颤仪', '风城油田作业区乌尔禾C栋宿舍C栋房务中心', 85.681600, 46.089099, NULL, NULL, 'A01A08', 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `xj_emergency`.`xj_aed` (`id`, `name`, `address`, `longitude`, `latitude`, `manage_name`, `manage_phone`, `org_code`, `del_flag`, `create_time`, `create_by`, `update_time`, `update_by`) VALUES ('1968210819723214864', '自动体外除颤仪', '风城油田作业区乌尔禾D栋宿舍D栋房务中心', 85.683271, 46.089658, NULL, NULL, 'A01A08', 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `xj_emergency`.`xj_aed` (`id`, `name`, `address`, `longitude`, `latitude`, `manage_name`, `manage_phone`, `org_code`, `del_flag`, `create_time`, `create_by`, `update_time`, `update_by`) VALUES ('1968210819723214865', '自动体外除颤仪', '风城油田作业区乌尔禾E栋宿舍E栋房务中心', 85.684106, 46.089659, NULL, NULL, 'A01A08', 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `xj_emergency`.`xj_aed` (`id`, `name`, `address`, `longitude`, `latitude`, `manage_name`, `manage_phone`, `org_code`, `del_flag`, `create_time`, `create_by`, `update_time`, `update_by`) VALUES ('1968210819723214866', '自动体外除颤仪', '开发公司机关石油大厦B座23楼电梯前室', 84.903242, 45.673281, NULL, NULL, 'A01A25', 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `xj_emergency`.`xj_aed` (`id`, `name`, `address`, `longitude`, `latitude`, `manage_name`, `manage_phone`, `org_code`, `del_flag`, `create_time`, `create_by`, `update_time`, `update_by`) VALUES ('1968210819723214867', '自动体外除颤仪', '开发公司第一项目经理部第一项目部基地112房间', 85.067125, 45.673073, NULL, NULL, 'A01A25', 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `xj_emergency`.`xj_aed` (`id`, `name`, `address`, `longitude`, `latitude`, `manage_name`, `manage_phone`, `org_code`, `del_flag`, `create_time`, `create_by`, `update_time`, `update_by`) VALUES ('1968210819723214868', '自动体外除颤仪', '开发公司第二项目经理部第二项目部基地安全办', 86.853424, 45.429250, NULL, NULL, 'A01A25', 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `xj_emergency`.`xj_aed` (`id`, `name`, `address`, `longitude`, `latitude`, `manage_name`, `manage_phone`, `org_code`, `del_flag`, `create_time`, `create_by`, `update_time`, `update_by`) VALUES ('1968210819723214869', '自动体外除颤仪', '采气一厂机关机关楼一楼大厅', 84.869098, 45.599154, NULL, NULL, 'A01A06', 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `xj_emergency`.`xj_aed` (`id`, `name`, `address`, `longitude`, `latitude`, `manage_name`, `manage_phone`, `org_code`, `del_flag`, `create_time`, `create_by`, `update_time`, `update_by`) VALUES ('1968210819723214870', '自动体外除颤仪', '采气一厂机关机关楼一楼大厅', 84.869098, 45.599154, NULL, NULL, 'A01A06', 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `xj_emergency`.`xj_aed` (`id`, `name`, `address`, `longitude`, `latitude`, `manage_name`, `manage_phone`, `org_code`, `del_flag`, `create_time`, `create_by`, `update_time`, `update_by`) VALUES ('1968210819723214871', '自动体外除颤仪', '采气一厂呼图壁采气作业区石油公寓2楼218', 86.901390, 44.191784, NULL, NULL, 'A01A06', 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `xj_emergency`.`xj_aed` (`id`, `name`, `address`, `longitude`, `latitude`, `manage_name`, `manage_phone`, `org_code`, `del_flag`, `create_time`, `create_by`, `update_time`, `update_by`) VALUES ('1968210819723214872', '自动体外除颤仪', '采气一厂克75采气作业区中控室', 85.193392, 45.182159, NULL, NULL, 'A01A06', 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `xj_emergency`.`xj_aed` (`id`, `name`, `address`, `longitude`, `latitude`, `manage_name`, `manage_phone`, `org_code`, `del_flag`, `create_time`, `create_by`, `update_time`, `update_by`) VALUES ('1968210819723214873', '自动体外除颤仪', '采气一厂克75采气作业区中控室', 85.193392, 45.182159, NULL, NULL, 'A01A06', 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `xj_emergency`.`xj_aed` (`id`, `name`, `address`, `longitude`, `latitude`, `manage_name`, `manage_phone`, `org_code`, `del_flag`, `create_time`, `create_by`, `update_time`, `update_by`) VALUES ('1968210819723214874', '自动体外除颤仪', '采气一厂试采维修抢险中心前院办公室中控室', 85.055415, 45.480862, NULL, NULL, 'A01A06', 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `xj_emergency`.`xj_aed` (`id`, `name`, `address`, `longitude`, `latitude`, `manage_name`, `manage_phone`, `org_code`, `del_flag`, `create_time`, `create_by`, `update_time`, `update_by`) VALUES ('1968210819723214875', '自动体外除颤仪', '采气一厂试采维修抢险中心前院办公室中控室', 85.055415, 45.480862, NULL, NULL, 'A01A06', 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `xj_emergency`.`xj_aed` (`id`, `name`, `address`, `longitude`, `latitude`, `manage_name`, `manage_phone`, `org_code`, `del_flag`, `create_time`, `create_by`, `update_time`, `update_by`) VALUES ('1968210819723214876', '自动体外除颤仪', '采气一厂克拉美丽采气作业区健康小屋', 87.613755, 45.243382, NULL, NULL, 'A01A06', 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `xj_emergency`.`xj_aed` (`id`, `name`, `address`, `longitude`, `latitude`, `manage_name`, `manage_phone`, `org_code`, `del_flag`, `create_time`, `create_by`, `update_time`, `update_by`) VALUES ('1968210819723214877', '自动体外除颤仪', '采气一厂盆5采气作业区公寓医护值班室', 86.203756, 44.950184, NULL, NULL, 'A01A06', 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `xj_emergency`.`xj_aed` (`id`, `name`, `address`, `longitude`, `latitude`, `manage_name`, `manage_phone`, `org_code`, `del_flag`, `create_time`, `create_by`, `update_time`, `update_by`) VALUES ('1968210819723214878', '自动体外除颤仪', '采气一厂玛河作业区公寓一楼南103医护值班室', 86.056411, 44.283982, NULL, NULL, 'A01A06', 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `xj_emergency`.`xj_aed` (`id`, `name`, `address`, `longitude`, `latitude`, `manage_name`, `manage_phone`, `org_code`, `del_flag`, `create_time`, `create_by`, `update_time`, `update_by`) VALUES ('1968210819723214879', '自动体外除颤仪', '采气一厂玛河作业区公寓一楼南103医护值班室', 86.056411, 44.283982, NULL, NULL, 'A01A06', 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `xj_emergency`.`xj_aed` (`id`, `name`, `address`, `longitude`, `latitude`, `manage_name`, `manage_phone`, `org_code`, `del_flag`, `create_time`, `create_by`, `update_time`, `update_by`) VALUES ('1968210819723214880', '自动体外除颤仪', '采油二厂机关机关楼一楼大厅', NULL, NULL, NULL, NULL, 'A01A05', 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `xj_emergency`.`xj_aed` (`id`, `name`, `address`, `longitude`, `latitude`, `manage_name`, `manage_phone`, `org_code`, `del_flag`, `create_time`, `create_by`, `update_time`, `update_by`) VALUES ('1968210819723214881', '自动体外除颤仪', '采油二厂第一采油作业区7821中心站', NULL, NULL, NULL, NULL, 'A01A05', 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `xj_emergency`.`xj_aed` (`id`, `name`, `address`, `longitude`, `latitude`, `manage_name`, `manage_phone`, `org_code`, `del_flag`, `create_time`, `create_by`, `update_time`, `update_by`) VALUES ('1968210819723214882', '自动体外除颤仪', '采油二厂第二采油作业区7109中心站', NULL, NULL, NULL, NULL, 'A01A05', 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `xj_emergency`.`xj_aed` (`id`, `name`, `address`, `longitude`, `latitude`, `manage_name`, `manage_phone`, `org_code`, `del_flag`, `create_time`, `create_by`, `update_time`, `update_by`) VALUES ('1968210819723214883', '自动体外除颤仪', '采油二厂第三采油作业区7830中心站', NULL, NULL, NULL, NULL, 'A01A05', 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `xj_emergency`.`xj_aed` (`id`, `name`, `address`, `longitude`, `latitude`, `manage_name`, `manage_phone`, `org_code`, `del_flag`, `create_time`, `create_by`, `update_time`, `update_by`) VALUES ('1968210819723214884', '自动体外除颤仪', '采油二厂第五采油作业区5320中心站', NULL, NULL, NULL, NULL, 'A01A05', 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `xj_emergency`.`xj_aed` (`id`, `name`, `address`, `longitude`, `latitude`, `manage_name`, `manage_phone`, `org_code`, `del_flag`, `create_time`, `create_by`, `update_time`, `update_by`) VALUES ('1968210819723214885', '自动体外除颤仪', '采油二厂运行维护一中心8562中心站', NULL, NULL, NULL, NULL, 'A01A05', 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `xj_emergency`.`xj_aed` (`id`, `name`, `address`, `longitude`, `latitude`, `manage_name`, `manage_phone`, `org_code`, `del_flag`, `create_time`, `create_by`, `update_time`, `update_by`) VALUES ('1968210819723214886', '自动体外除颤仪', '采油二厂运行维护一中心8513中心站', NULL, NULL, NULL, NULL, 'A01A05', 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `xj_emergency`.`xj_aed` (`id`, `name`, `address`, `longitude`, `latitude`, `manage_name`, `manage_phone`, `org_code`, `del_flag`, `create_time`, `create_by`, `update_time`, `update_by`) VALUES ('1968210819723214887', '自动体外除颤仪', '采油二厂第七采油作业区5203中心站', NULL, NULL, NULL, NULL, 'A01A05', 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `xj_emergency`.`xj_aed` (`id`, `name`, `address`, `longitude`, `latitude`, `manage_name`, `manage_phone`, `org_code`, `del_flag`, `create_time`, `create_by`, `update_time`, `update_by`) VALUES ('1968210819723214888', '自动体外除颤仪', '采油二厂第八采油作业区5115中心站', NULL, NULL, NULL, NULL, 'A01A05', 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `xj_emergency`.`xj_aed` (`id`, `name`, `address`, `longitude`, `latitude`, `manage_name`, `manage_phone`, `org_code`, `del_flag`, `create_time`, `create_by`, `update_time`, `update_by`) VALUES ('1968210819723214889', '自动体外除颤仪', '采油二厂第九采油作业区玛湖生活基地', NULL, NULL, NULL, NULL, 'A01A05', 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `xj_emergency`.`xj_aed` (`id`, `name`, `address`, `longitude`, `latitude`, `manage_name`, `manage_phone`, `org_code`, `del_flag`, `create_time`, `create_by`, `update_time`, `update_by`) VALUES ('1968210819723214890', '自动体外除颤仪', '采油二厂联合注入站七东1号注聚站', NULL, NULL, NULL, NULL, 'A01A05', 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `xj_emergency`.`xj_aed` (`id`, `name`, `address`, `longitude`, `latitude`, `manage_name`, `manage_phone`, `org_code`, `del_flag`, `create_time`, `create_by`, `update_time`, `update_by`) VALUES ('1968210819723214891', '自动体外除颤仪', '采油二厂联合处理一站81#联合处理站应急材料室', NULL, NULL, NULL, NULL, 'A01A05', 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `xj_emergency`.`xj_aed` (`id`, `name`, `address`, `longitude`, `latitude`, `manage_name`, `manage_phone`, `org_code`, `del_flag`, `create_time`, `create_by`, `update_time`, `update_by`) VALUES ('1968210819769352193', '自动体外除颤仪', '采油二厂联合处理二站51#联合处理站', NULL, NULL, NULL, NULL, 'A01A05', 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `xj_emergency`.`xj_aed` (`id`, `name`, `address`, `longitude`, `latitude`, `manage_name`, `manage_phone`, `org_code`, `del_flag`, `create_time`, `create_by`, `update_time`, `update_by`) VALUES ('1968210819769352194', '自动体外除颤仪', '采油二厂天然气处理站深冷中控室', NULL, NULL, NULL, NULL, 'A01A05', 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `xj_emergency`.`xj_aed` (`id`, `name`, `address`, `longitude`, `latitude`, `manage_name`, `manage_phone`, `org_code`, `del_flag`, `create_time`, `create_by`, `update_time`, `update_by`) VALUES ('1968210819769352195', '自动体外除颤仪', '采油二厂联合办公楼克拉玛依市6+1大楼B座2楼212室', NULL, NULL, NULL, NULL, 'A01A05', 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `xj_emergency`.`xj_aed` (`id`, `name`, `address`, `longitude`, `latitude`, `manage_name`, `manage_phone`, `org_code`, `del_flag`, `create_time`, `create_by`, `update_time`, `update_by`) VALUES ('1968210819769352196', '自动体外除颤仪', '采油二厂综合体育馆白碱滩区综合体育馆大厅', NULL, NULL, NULL, NULL, 'A01A05', 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `xj_emergency`.`xj_aed` (`id`, `name`, `address`, `longitude`, `latitude`, `manage_name`, `manage_phone`, `org_code`, `del_flag`, `create_time`, `create_by`, `update_time`, `update_by`) VALUES ('1968210819769352197', '自动体外除颤仪', '石西油田作业区石西公寓石西公寓大食堂门口', 86.857307, 45.428411, NULL, NULL, 'A01A12', 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `xj_emergency`.`xj_aed` (`id`, `name`, `address`, `longitude`, `latitude`, `manage_name`, `manage_phone`, `org_code`, `del_flag`, `create_time`, `create_by`, `update_time`, `update_by`) VALUES ('1968210819769352198', '自动体外除颤仪', '石西油田作业区石西公寓石西公寓大食堂门口', 86.857307, 45.428411, NULL, NULL, 'A01A12', 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `xj_emergency`.`xj_aed` (`id`, `name`, `address`, `longitude`, `latitude`, `manage_name`, `manage_phone`, `org_code`, `del_flag`, `create_time`, `create_by`, `update_time`, `update_by`) VALUES ('1968210819769352199', '自动体外除颤仪', '石西油田作业区石南4联合站石南4联合站办公区中控室内', 86.737987, 45.623245, NULL, NULL, 'A01A12', 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `xj_emergency`.`xj_aed` (`id`, `name`, `address`, `longitude`, `latitude`, `manage_name`, `manage_phone`, `org_code`, `del_flag`, `create_time`, `create_by`, `update_time`, `update_by`) VALUES ('1968210819769352200', '自动体外除颤仪', '石西油田作业区石南4联合站石南4联合站办公区中控室内', 86.737987, 45.623245, NULL, NULL, 'A01A12', 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `xj_emergency`.`xj_aed` (`id`, `name`, `address`, `longitude`, `latitude`, `manage_name`, `manage_phone`, `org_code`, `del_flag`, `create_time`, `create_by`, `update_time`, `update_by`) VALUES ('1968210819769352201', '自动体外除颤仪', '石西油田作业区莫北转油站莫北转油站办公区大门进门左手墙上', 86.769374, 45.223810, NULL, NULL, 'A01A12', 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `xj_emergency`.`xj_aed` (`id`, `name`, `address`, `longitude`, `latitude`, `manage_name`, `manage_phone`, `org_code`, `del_flag`, `create_time`, `create_by`, `update_time`, `update_by`) VALUES ('1968210819769352202', '自动体外除颤仪', '石西油田作业区莫北转油站莫北转油站办公区大门进门左手墙上', 86.769374, 45.223810, NULL, NULL, 'A01A12', 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `xj_emergency`.`xj_aed` (`id`, `name`, `address`, `longitude`, `latitude`, `manage_name`, `manage_phone`, `org_code`, `del_flag`, `create_time`, `create_by`, `update_time`, `update_by`) VALUES ('1968210819769352203', '自动体外除颤仪', '石西油田作业区莫109转输处理站莫109转输站办公区中控室内', 86.606250, 45.114165, NULL, NULL, 'A01A12', 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `xj_emergency`.`xj_aed` (`id`, `name`, `address`, `longitude`, `latitude`, `manage_name`, `manage_phone`, `org_code`, `del_flag`, `create_time`, `create_by`, `update_time`, `update_by`) VALUES ('1968210819769352204', '自动体外除颤仪', '石西油田作业区莫109转输处理站莫109转输站办公区中控室内', 86.606250, 45.114165, NULL, NULL, 'A01A12', 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `xj_emergency`.`xj_aed` (`id`, `name`, `address`, `longitude`, `latitude`, `manage_name`, `manage_phone`, `org_code`, `del_flag`, `create_time`, `create_by`, `update_time`, `update_by`) VALUES ('1968210819769352205', '自动体外除颤仪', '石西油田作业区石204混输泵站石204混输泵站采油食堂进门左手处', 86.838465, 45.701458, NULL, NULL, 'A01A12', 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `xj_emergency`.`xj_aed` (`id`, `name`, `address`, `longitude`, `latitude`, `manage_name`, `manage_phone`, `org_code`, `del_flag`, `create_time`, `create_by`, `update_time`, `update_by`) VALUES ('1968210819769352206', '自动体外除颤仪', '石西油田作业区石204混输泵站石204混输泵站采油食堂进门左手处', 86.838465, 45.701458, NULL, NULL, 'A01A12', 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `xj_emergency`.`xj_aed` (`id`, `name`, `address`, `longitude`, `latitude`, `manage_name`, `manage_phone`, `org_code`, `del_flag`, `create_time`, `create_by`, `update_time`, `update_by`) VALUES ('1968210819769352207', '自动体外除颤仪', '石西油田作业区石南31联合站采油休息办公室石南31联合站采油办公室车库进门右手处', 86.950727, 45.614508, NULL, NULL, 'A01A12', 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `xj_emergency`.`xj_aed` (`id`, `name`, `address`, `longitude`, `latitude`, `manage_name`, `manage_phone`, `org_code`, `del_flag`, `create_time`, `create_by`, `update_time`, `update_by`) VALUES ('1968210819769352208', '自动体外除颤仪', '石西油田作业区石南31联合站采油休息办公室石南31联合站采油办公室车库进门右手处', 86.950727, 45.614508, NULL, NULL, 'A01A12', 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `xj_emergency`.`xj_aed` (`id`, `name`, `address`, `longitude`, `latitude`, `manage_name`, `manage_phone`, `org_code`, `del_flag`, `create_time`, `create_by`, `update_time`, `update_by`) VALUES ('1968210819769352209', '自动体外除颤仪', '吉庆油田作业区机关综合楼一楼大厅', 89.220063, 44.003277, NULL, NULL, 'A01A29', 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `xj_emergency`.`xj_aed` (`id`, `name`, `address`, `longitude`, `latitude`, `manage_name`, `manage_phone`, `org_code`, `del_flag`, `create_time`, `create_by`, `update_time`, `update_by`) VALUES ('1968210819769352210', '自动体外除颤仪', '吉庆油田作业区吉7运行维护中心公寓A座2楼222室', 89.277552, 44.105983, NULL, NULL, 'A01A29', 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `xj_emergency`.`xj_aed` (`id`, `name`, `address`, `longitude`, `latitude`, `manage_name`, `manage_phone`, `org_code`, `del_flag`, `create_time`, `create_by`, `update_time`, `update_by`) VALUES ('1968210819769352211', '自动体外除颤仪', '吉庆油田作业区页岩油运行维护中心红旗大饭店4楼412室', 89.111967, 44.236072, NULL, NULL, 'A01A29', 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `xj_emergency`.`xj_aed` (`id`, `name`, `address`, `longitude`, `latitude`, `manage_name`, `manage_phone`, `org_code`, `del_flag`, `create_time`, `create_by`, `update_time`, `update_by`) VALUES ('1968210819769352212', '自动体外除颤仪', '油田技术服务分公司机关科研生产办公楼A座机关楼五楼茶水间503-2对面', 84.900460, 45.571913, NULL, NULL, 'A01A36', 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `xj_emergency`.`xj_aed` (`id`, `name`, `address`, `longitude`, `latitude`, `manage_name`, `manage_phone`, `org_code`, `del_flag`, `create_time`, `create_by`, `update_time`, `update_by`) VALUES ('1968210819769352213', '自动体外除颤仪', '油田技术服务分公司机关科研生产办公楼A座机关楼五楼茶水间503-2对面', 84.900460, 45.571913, NULL, NULL, 'A01A36', 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `xj_emergency`.`xj_aed` (`id`, `name`, `address`, `longitude`, `latitude`, `manage_name`, `manage_phone`, `org_code`, `del_flag`, `create_time`, `create_by`, `update_time`, `update_by`) VALUES ('1968210819769352214', '自动体外除颤仪', '百口泉采油厂市区机关3楼羽毛球场', 84.896294, 45.576635, NULL, NULL, 'A01A03', 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `xj_emergency`.`xj_aed` (`id`, `name`, `address`, `longitude`, `latitude`, `manage_name`, `manage_phone`, `org_code`, `del_flag`, `create_time`, `create_by`, `update_time`, `update_by`) VALUES ('1968210819769352215', '自动体外除颤仪', '百口泉采油厂百口泉基地体育馆', 85.415878, 45.912751, NULL, NULL, 'A01A03', 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `xj_emergency`.`xj_aed` (`id`, `name`, `address`, `longitude`, `latitude`, `manage_name`, `manage_phone`, `org_code`, `del_flag`, `create_time`, `create_by`, `update_time`, `update_by`) VALUES ('1968210819769352216', '自动体外除颤仪', '百口泉采油厂百21采油作业区百21作业区113室', 85.414490, 45.913029, NULL, NULL, 'A01A03', 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `xj_emergency`.`xj_aed` (`id`, `name`, `address`, `longitude`, `latitude`, `manage_name`, `manage_phone`, `org_code`, `del_flag`, `create_time`, `create_by`, `update_time`, `update_by`) VALUES ('1968210819769352217', '自动体外除颤仪', '百口泉采油厂检188采油作业区检188作业区调度室', 85.414490, 45.913029, NULL, NULL, 'A01A03', 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `xj_emergency`.`xj_aed` (`id`, `name`, `address`, `longitude`, `latitude`, `manage_name`, `manage_phone`, `org_code`, `del_flag`, `create_time`, `create_by`, `update_time`, `update_by`) VALUES ('1968210819769352218', '自动体外除颤仪', '百口泉采油厂玛湖第一采油作业区玛一作业区调度室', 85.937222, 45.964626, NULL, NULL, 'A01A03', 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `xj_emergency`.`xj_aed` (`id`, `name`, `address`, `longitude`, `latitude`, `manage_name`, `manage_phone`, `org_code`, `del_flag`, `create_time`, `create_by`, `update_time`, `update_by`) VALUES ('1968210819769352219', '自动体外除颤仪', '百口泉采油厂玛湖第二采油作业区玛二作业区资料组办公室', 86.006614, 46.073928, NULL, NULL, 'A01A03', 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `xj_emergency`.`xj_aed` (`id`, `name`, `address`, `longitude`, `latitude`, `manage_name`, `manage_phone`, `org_code`, `del_flag`, `create_time`, `create_by`, `update_time`, `update_by`) VALUES ('1968210819769352220', '自动体外除颤仪', '百口泉采油厂玛湖第三采油作业区基地会议室', 85.765285, 45.814277, NULL, NULL, 'A01A03', 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `xj_emergency`.`xj_aed` (`id`, `name`, `address`, `longitude`, `latitude`, `manage_name`, `manage_phone`, `org_code`, `del_flag`, `create_time`, `create_by`, `update_time`, `update_by`) VALUES ('1968210819769352221', '自动体外除颤仪', '百口泉采油厂玛湖第三采油作业区玛中4基地会议室', 85.761668, 45.642106, NULL, NULL, 'A01A03', 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `xj_emergency`.`xj_aed` (`id`, `name`, `address`, `longitude`, `latitude`, `manage_name`, `manage_phone`, `org_code`, `del_flag`, `create_time`, `create_by`, `update_time`, `update_by`) VALUES ('1968210819769352222', '自动体外除颤仪', '百口泉采油厂注输联合站玛18转油站会议室', 85.765285, 45.814277, NULL, NULL, 'A01A03', 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `xj_emergency`.`xj_aed` (`id`, `name`, `address`, `longitude`, `latitude`, `manage_name`, `manage_phone`, `org_code`, `del_flag`, `create_time`, `create_by`, `update_time`, `update_by`) VALUES ('1968210819769352223', '自动体外除颤仪', '百口泉采油厂注输联合站玛131转油站会议室', 86.006614, 46.073928, NULL, NULL, 'A01A03', 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `xj_emergency`.`xj_aed` (`id`, `name`, `address`, `longitude`, `latitude`, `manage_name`, `manage_phone`, `org_code`, `del_flag`, `create_time`, `create_by`, `update_time`, `update_by`) VALUES ('1968210819769352224', '自动体外除颤仪', '百口泉采油厂注输联合站注输联合站小会议室', 85.478225, 45.921806, NULL, NULL, 'A01A03', 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `xj_emergency`.`xj_aed` (`id`, `name`, `address`, `longitude`, `latitude`, `manage_name`, `manage_phone`, `org_code`, `del_flag`, `create_time`, `create_by`, `update_time`, `update_by`) VALUES ('1968210819769352225', '自动体外除颤仪', '百口泉采油厂员工培训站员工培训中心会议室', 85.414212, 45.905810, NULL, NULL, 'A01A03', 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `xj_emergency`.`xj_aed` (`id`, `name`, `address`, `longitude`, `latitude`, `manage_name`, `manage_phone`, `org_code`, `del_flag`, `create_time`, `create_by`, `update_time`, `update_by`) VALUES ('1968210819769352226', '自动体外除颤仪', '电力公司机关机关楼一楼大厅', 85.124667, 45.692528, NULL, NULL, 'A01A07', 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `xj_emergency`.`xj_aed` (`id`, `name`, `address`, `longitude`, `latitude`, `manage_name`, `manage_phone`, `org_code`, `del_flag`, `create_time`, `create_by`, `update_time`, `update_by`) VALUES ('1968210819769352227', '自动体外除颤仪', '电力公司发电机关楼一楼大厅', 85.124667, 45.692528, NULL, NULL, 'A01A07', 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `xj_emergency`.`xj_aed` (`id`, `name`, `address`, `longitude`, `latitude`, `manage_name`, `manage_phone`, `org_code`, `del_flag`, `create_time`, `create_by`, `update_time`, `update_by`) VALUES ('1968210819769352228', '自动体外除颤仪', '咨询中心机关各业务部室油田公司机关2#楼1楼大厅', 84.886974, 45.578946, NULL, NULL, 'A01A27', 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `xj_emergency`.`xj_aed` (`id`, `name`, `address`, `longitude`, `latitude`, `manage_name`, `manage_phone`, `org_code`, `del_flag`, `create_time`, `create_by`, `update_time`, `update_by`) VALUES ('1968210819769352229', '自动体外除颤仪', '咨询中心机关各业务部室油田公司机关2#楼1楼大厅', 84.886974, 45.578946, NULL, NULL, 'A01A27', 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `xj_emergency`.`xj_aed` (`id`, `name`, `address`, `longitude`, `latitude`, `manage_name`, `manage_phone`, `org_code`, `del_flag`, `create_time`, `create_by`, `update_time`, `update_by`) VALUES ('1968210819769352230', '自动体外除颤仪', '准东采油厂机关机关楼一楼大厅', 87.886688, 44.143790, NULL, NULL, 'A01A17', 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `xj_emergency`.`xj_aed` (`id`, `name`, `address`, `longitude`, `latitude`, `manage_name`, `manage_phone`, `org_code`, `del_flag`, `create_time`, `create_by`, `update_time`, `update_by`) VALUES ('1968210819769352231', '自动体外除颤仪', '准东采油厂机关机关食堂', 87.884192, 44.147956, NULL, NULL, 'A01A17', 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `xj_emergency`.`xj_aed` (`id`, `name`, `address`, `longitude`, `latitude`, `manage_name`, `manage_phone`, `org_code`, `del_flag`, `create_time`, `create_by`, `update_time`, `update_by`) VALUES ('1968210819769352232', '自动体外除颤仪', '准东采油厂甘泉河作业区甘泉河健康小屋内', 88.744436, 44.104291, NULL, NULL, 'A01A17', 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `xj_emergency`.`xj_aed` (`id`, `name`, `address`, `longitude`, `latitude`, `manage_name`, `manage_phone`, `org_code`, `del_flag`, `create_time`, `create_by`, `update_time`, `update_by`) VALUES ('1968210819769352233', '自动体外除颤仪', '准东采油厂甘泉河作业区甘泉河员工餐厅', 88.742768, 44.102903, NULL, NULL, 'A01A17', 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `xj_emergency`.`xj_aed` (`id`, `name`, `address`, `longitude`, `latitude`, `manage_name`, `manage_phone`, `org_code`, `del_flag`, `create_time`, `create_by`, `update_time`, `update_by`) VALUES ('1968210819769352234', '自动体外除颤仪', '准东采油厂甘泉河作业区甘泉河办公楼一楼', 88.746102, 44.103181, NULL, NULL, 'A01A17', 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `xj_emergency`.`xj_aed` (`id`, `name`, `address`, `longitude`, `latitude`, `manage_name`, `manage_phone`, `org_code`, `del_flag`, `create_time`, `create_by`, `update_time`, `update_by`) VALUES ('1968210819769352235', '自动体外除颤仪', '准东采油厂沙南作业区沙南健康小屋内', 88.716637, 44.349966, NULL, NULL, 'A01A17', 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `xj_emergency`.`xj_aed` (`id`, `name`, `address`, `longitude`, `latitude`, `manage_name`, `manage_phone`, `org_code`, `del_flag`, `create_time`, `create_by`, `update_time`, `update_by`) VALUES ('1968210819769352236', '自动体外除颤仪', '准东采油厂沙南作业区沙南北联站', 88.719143, 44.367462, NULL, NULL, 'A01A17', 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `xj_emergency`.`xj_aed` (`id`, `name`, `address`, `longitude`, `latitude`, `manage_name`, `manage_phone`, `org_code`, `del_flag`, `create_time`, `create_by`, `update_time`, `update_by`) VALUES ('1968210819769352237', '自动体外除颤仪', '准东采油厂沙南作业区沙南西泉1区', 88.606412, 44.323148, NULL, NULL, 'A01A17', 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `xj_emergency`.`xj_aed` (`id`, `name`, `address`, `longitude`, `latitude`, `manage_name`, `manage_phone`, `org_code`, `del_flag`, `create_time`, `create_by`, `update_time`, `update_by`) VALUES ('1968210819769352238', '自动体外除颤仪', '准东采油厂沙南作业区沙南沙联站', 88.700499, 44.479339, NULL, NULL, 'A01A17', 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `xj_emergency`.`xj_aed` (`id`, `name`, `address`, `longitude`, `latitude`, `manage_name`, `manage_phone`, `org_code`, `del_flag`, `create_time`, `create_by`, `update_time`, `update_by`) VALUES ('1968210819769352239', '自动体外除颤仪', '准东采油厂吉庆运维项目部红旗大酒店4楼健康小屋', 89.108922, 44.398218, NULL, NULL, 'A01A17', 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `xj_emergency`.`xj_aed` (`id`, `name`, `address`, `longitude`, `latitude`, `manage_name`, `manage_phone`, `org_code`, `del_flag`, `create_time`, `create_by`, `update_time`, `update_by`) VALUES ('1968210819769352240', '自动体外除颤仪', '准东采油厂吉庆运维项目部红旗大酒店4楼健康小屋', 89.108922, 44.398218, NULL, NULL, 'A01A17', 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `xj_emergency`.`xj_aed` (`id`, `name`, `address`, `longitude`, `latitude`, `manage_name`, `manage_phone`, `org_code`, `del_flag`, `create_time`, `create_by`, `update_time`, `update_by`) VALUES ('1968210819769352241', '自动体外除颤仪', '准东采油厂南疆哈得项目部跃满公寓一楼西头', 82.995713, 40.787383, NULL, NULL, 'A01A17', 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `xj_emergency`.`xj_aed` (`id`, `name`, `address`, `longitude`, `latitude`, `manage_name`, `manage_phone`, `org_code`, `del_flag`, `create_time`, `create_by`, `update_time`, `update_by`) VALUES ('1968210819769352242', '自动体外除颤仪', '准东采油厂水务公司水务公司水二泵站', 88.974941, 44.691779, NULL, NULL, 'A01A17', 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `xj_emergency`.`xj_aed` (`id`, `name`, `address`, `longitude`, `latitude`, `manage_name`, `manage_phone`, `org_code`, `del_flag`, `create_time`, `create_by`, `update_time`, `update_by`) VALUES ('1968210819769352243', '自动体外除颤仪', '准东采油厂勘探开发研究所基地勘探开发研究所基地办公楼', 87.093713, 44.151348, NULL, NULL, 'A01A17', 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `xj_emergency`.`xj_aed` (`id`, `name`, `address`, `longitude`, `latitude`, `manage_name`, `manage_phone`, `org_code`, `del_flag`, `create_time`, `create_by`, `update_time`, `update_by`) VALUES ('1968210819769352244', '自动体外除颤仪', '准东采油厂勘探开发研究所明园勘探开发研究所明园办公楼', 87.595343, 43.817591, NULL, NULL, 'A01A17', 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `xj_emergency`.`xj_aed` (`id`, `name`, `address`, `longitude`, `latitude`, `manage_name`, `manage_phone`, `org_code`, `del_flag`, `create_time`, `create_by`, `update_time`, `update_by`) VALUES ('1968210819769352245', '自动体外除颤仪', '准东采油厂火烧山作业区火烧山公寓健康小屋', 89.002570, 44.920211, NULL, NULL, 'A01A17', 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `xj_emergency`.`xj_aed` (`id`, `name`, `address`, `longitude`, `latitude`, `manage_name`, `manage_phone`, `org_code`, `del_flag`, `create_time`, `create_by`, `update_time`, `update_by`) VALUES ('1968210819769352246', '自动体外除颤仪', '准东采油厂火烧山作业区火烧山新公寓一楼', 89.002012, 44.919654, NULL, NULL, 'A01A17', 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `xj_emergency`.`xj_aed` (`id`, `name`, `address`, `longitude`, `latitude`, `manage_name`, `manage_phone`, `org_code`, `del_flag`, `create_time`, `create_by`, `update_time`, `update_by`) VALUES ('1968210819769352247', '自动体外除颤仪', '准东采油厂彩南作业区1号公寓健康小屋', 88.367529, 44.987863, NULL, NULL, 'A01A17', 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `xj_emergency`.`xj_aed` (`id`, `name`, `address`, `longitude`, `latitude`, `manage_name`, `manage_phone`, `org_code`, `del_flag`, `create_time`, `create_by`, `update_time`, `update_by`) VALUES ('1968210819769352248', '自动体外除颤仪', '准东采油厂彩南作业区滴12生活点会议室', 88.820803, 45.508526, NULL, NULL, 'A01A17', 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `xj_emergency`.`xj_aed` (`id`, `name`, `address`, `longitude`, `latitude`, `manage_name`, `manage_phone`, `org_code`, `del_flag`, `create_time`, `create_by`, `update_time`, `update_by`) VALUES ('1968210819832266753', '自动体外除颤仪', '准东采油厂彩南作业区集中处理站党员服务室', 88.362798, 44.978688, NULL, NULL, 'A01A17', 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `xj_emergency`.`xj_aed` (`id`, `name`, `address`, `longitude`, `latitude`, `manage_name`, `manage_phone`, `org_code`, `del_flag`, `create_time`, `create_by`, `update_time`, `update_by`) VALUES ('1968210819832266754', '自动体外除颤仪', '准东采油厂彩南作业区彩参二班组', 88.405333, 44.975112, NULL, NULL, 'A01A17', 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `xj_emergency`.`xj_aed` (`id`, `name`, `address`, `longitude`, `latitude`, `manage_name`, `manage_phone`, `org_code`, `del_flag`, `create_time`, `create_by`, `update_time`, `update_by`) VALUES ('1968210819832266755', '自动体外除颤仪', '准东采油厂工程技术服务公司工程技术服务公司沙南驻地走廊西侧', 88.726932, 44.351088, NULL, NULL, 'A01A17', 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `xj_emergency`.`xj_aed` (`id`, `name`, `address`, `longitude`, `latitude`, `manage_name`, `manage_phone`, `org_code`, `del_flag`, `create_time`, `create_by`, `update_time`, `update_by`) VALUES ('1968210819832266756', '自动体外除颤仪', '准东采油厂工程技术服务公司工程技术服务公司吉7驻地餐厅', 89.277552, 44.102652, NULL, NULL, 'A01A17', 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `xj_emergency`.`xj_aed` (`id`, `name`, `address`, `longitude`, `latitude`, `manage_name`, `manage_phone`, `org_code`, `del_flag`, `create_time`, `create_by`, `update_time`, `update_by`) VALUES ('1968210819832266757', '自动体外除颤仪', '准东采油厂供电新能源公司火烧山110kV变电所', 89.030746, 44.948075, NULL, NULL, 'A01A17', 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `xj_emergency`.`xj_aed` (`id`, `name`, `address`, `longitude`, `latitude`, `manage_name`, `manage_phone`, `org_code`, `del_flag`, `create_time`, `create_by`, `update_time`, `update_by`) VALUES ('1968210819832266758', '自动体外除颤仪', '准东采油厂油田保障中心体育馆一楼大厅', 87.893901, 44.145174, NULL, NULL, 'A01A17', 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `xj_emergency`.`xj_aed` (`id`, `name`, `address`, `longitude`, `latitude`, `manage_name`, `manage_phone`, `org_code`, `del_flag`, `create_time`, `create_by`, `update_time`, `update_by`) VALUES ('1968210819832266759', '自动体外除颤仪', '准东采油厂油田公寓服务中心准东宾馆总台', 87.886966, 44.149065, NULL, NULL, 'A01A17', 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `xj_emergency`.`xj_aed` (`id`, `name`, `address`, `longitude`, `latitude`, `manage_name`, `manage_phone`, `org_code`, `del_flag`, `create_time`, `create_by`, `update_time`, `update_by`) VALUES ('1968210819832266760', '自动体外除颤仪', '重油开发公司机关机关楼一楼大厅', 84.860503, 45.618329, NULL, NULL, 'A01A15', 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `xj_emergency`.`xj_aed` (`id`, `name`, `address`, `longitude`, `latitude`, `manage_name`, `manage_phone`, `org_code`, `del_flag`, `create_time`, `create_by`, `update_time`, `update_by`) VALUES ('1968210819832266761', '自动体外除颤仪', '重油开发公司采油作业一区采油一区三班', 84.864939, 45.618601, NULL, NULL, 'A01A15', 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `xj_emergency`.`xj_aed` (`id`, `name`, `address`, `longitude`, `latitude`, `manage_name`, `manage_phone`, `org_code`, `del_flag`, `create_time`, `create_by`, `update_time`, `update_by`) VALUES ('1968210819832266762', '自动体外除颤仪', '重油开发公司采油作业二区采油二区大班房', 85.251688, 45.775667, NULL, NULL, 'A01A15', 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `xj_emergency`.`xj_aed` (`id`, `name`, `address`, `longitude`, `latitude`, `manage_name`, `manage_phone`, `org_code`, `del_flag`, `create_time`, `create_by`, `update_time`, `update_by`) VALUES ('1968210819832266763', '自动体外除颤仪', '重油开发公司采油作业三区采油三区大班房', 85.463515, 45.120264, NULL, NULL, 'A01A15', 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `xj_emergency`.`xj_aed` (`id`, `name`, `address`, `longitude`, `latitude`, `manage_name`, `manage_phone`, `org_code`, `del_flag`, `create_time`, `create_by`, `update_time`, `update_by`) VALUES ('1968210819832266764', '自动体外除颤仪', '重油开发公司采油作业四区采油三班基地会议室', 85.200055, 45.392445, NULL, NULL, 'A01A15', 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `xj_emergency`.`xj_aed` (`id`, `name`, `address`, `longitude`, `latitude`, `manage_name`, `manage_phone`, `org_code`, `del_flag`, `create_time`, `create_by`, `update_time`, `update_by`) VALUES ('1968210819832266765', '自动体外除颤仪', '重油开发公司采油作业五区采油五区大班房', 85.181779, 45.714932, NULL, NULL, 'A01A15', 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `xj_emergency`.`xj_aed` (`id`, `name`, `address`, `longitude`, `latitude`, `manage_name`, `manage_phone`, `org_code`, `del_flag`, `create_time`, `create_by`, `update_time`, `update_by`) VALUES ('1968210819832266766', '自动体外除颤仪', '重油开发公司采油作业六区五区南班组基地', 85.214494, 45.793743, NULL, NULL, 'A01A15', 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `xj_emergency`.`xj_aed` (`id`, `name`, `address`, `longitude`, `latitude`, `manage_name`, `manage_phone`, `org_code`, `del_flag`, `create_time`, `create_by`, `update_time`, `update_by`) VALUES ('1968210819832266767', '自动体外除颤仪', '重油开发公司集输污水联合站金龙2转油站', 85.241668, 45.357122, NULL, NULL, 'A01A15', 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `xj_emergency`.`xj_aed` (`id`, `name`, `address`, `longitude`, `latitude`, `manage_name`, `manage_phone`, `org_code`, `del_flag`, `create_time`, `create_by`, `update_time`, `update_by`) VALUES ('1968210819832266768', '自动体外除颤仪', '应急抢险救援中心中心机关中心机关楼四楼公共展厅', 84.835834, 45.573936, NULL, NULL, 'A01A13', 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `xj_emergency`.`xj_aed` (`id`, `name`, `address`, `longitude`, `latitude`, `manage_name`, `manage_phone`, `org_code`, `del_flag`, `create_time`, `create_by`, `update_time`, `update_by`) VALUES ('1968210819832266769', '自动体外除颤仪', '应急抢险救援中心中心机关中心机关楼四楼公共展厅', 84.835834, 45.573936, NULL, NULL, 'A01A13', 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `xj_emergency`.`xj_aed` (`id`, `name`, `address`, `longitude`, `latitude`, `manage_name`, `manage_phone`, `org_code`, `del_flag`, `create_time`, `create_by`, `update_time`, `update_by`) VALUES ('1968210819832266770', '自动体外除颤仪', '应急抢险救援中心研究所中心机关楼四楼公共展厅', 84.835834, 45.573936, NULL, NULL, 'A01A13', 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `xj_emergency`.`xj_aed` (`id`, `name`, `address`, `longitude`, `latitude`, `manage_name`, `manage_phone`, `org_code`, `del_flag`, `create_time`, `create_by`, `update_time`, `update_by`) VALUES ('1968210819832266771', '自动体外除颤仪', '应急抢险救援中心技术监督中心中心机关楼四楼公共展厅', 84.835834, 45.573936, NULL, NULL, 'A01A13', 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `xj_emergency`.`xj_aed` (`id`, `name`, `address`, `longitude`, `latitude`, `manage_name`, `manage_phone`, `org_code`, `del_flag`, `create_time`, `create_by`, `update_time`, `update_by`) VALUES ('1968210819832266772', '自动体外除颤仪', '应急抢险救援中心技术监督中心井控技术分公司一楼过道', 84.875754, 45.591647, NULL, NULL, 'A01A13', 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `xj_emergency`.`xj_aed` (`id`, `name`, `address`, `longitude`, `latitude`, `manage_name`, `manage_phone`, `org_code`, `del_flag`, `create_time`, `create_by`, `update_time`, `update_by`) VALUES ('1968210819832266773', '自动体外除颤仪', '应急抢险救援中心井控培训中心教学楼A-B区走廊', 84.873814, 45.606370, NULL, NULL, 'A01A13', 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `xj_emergency`.`xj_aed` (`id`, `name`, `address`, `longitude`, `latitude`, `manage_name`, `manage_phone`, `org_code`, `del_flag`, `create_time`, `create_by`, `update_time`, `update_by`) VALUES ('1968210819832266774', '自动体外除颤仪', '应急抢险救援中心储层作业分公司分公司机关二楼大厅', 85.111481, 45.678892, NULL, NULL, 'A01A13', 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `xj_emergency`.`xj_aed` (`id`, `name`, `address`, `longitude`, `latitude`, `manage_name`, `manage_phone`, `org_code`, `del_flag`, `create_time`, `create_by`, `update_time`, `update_by`) VALUES ('1968210819832266775', '自动体外除颤仪', '应急抢险救援中心酸压作业分公司酸压作业分公司机关楼二楼', 85.052636, 45.627502, NULL, NULL, 'A01A13', 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `xj_emergency`.`xj_aed` (`id`, `name`, `address`, `longitude`, `latitude`, `manage_name`, `manage_phone`, `org_code`, `del_flag`, `create_time`, `create_by`, `update_time`, `update_by`) VALUES ('1968210819832266776', '自动体外除颤仪', '应急抢险救援中心零散气作业分公司零散气作业分公司机关楼二楼', 85.052636, 45.627502, NULL, NULL, 'A01A13', 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `xj_emergency`.`xj_aed` (`id`, `name`, `address`, `longitude`, `latitude`, `manage_name`, `manage_phone`, `org_code`, `del_flag`, `create_time`, `create_by`, `update_time`, `update_by`) VALUES ('1968210819832266777', '自动体外除颤仪', '应急抢险救援中心井筒作业分公司共用井控技术分公司一楼过道', 84.875754, 45.591647, NULL, NULL, 'A01A13', 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `xj_emergency`.`xj_aed` (`id`, `name`, `address`, `longitude`, `latitude`, `manage_name`, `manage_phone`, `org_code`, `del_flag`, `create_time`, `create_by`, `update_time`, `update_by`) VALUES ('1968210819832266778', '自动体外除颤仪', '应急抢险救援中心井筒作业分公司陆梁基地会议室', 86.896466, 45.860501, NULL, NULL, 'A01A13', 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `xj_emergency`.`xj_aed` (`id`, `name`, `address`, `longitude`, `latitude`, `manage_name`, `manage_phone`, `org_code`, `del_flag`, `create_time`, `create_by`, `update_time`, `update_by`) VALUES ('1968210819832266779', '自动体外除颤仪', '应急抢险救援中心机械设备制造分公司机关大厅', 85.084933, 45.599498, NULL, NULL, 'A01A13', 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `xj_emergency`.`xj_aed` (`id`, `name`, `address`, `longitude`, `latitude`, `manage_name`, `manage_phone`, `org_code`, `del_flag`, `create_time`, `create_by`, `update_time`, `update_by`) VALUES ('1968210819832266780', '自动体外除颤仪', '应急抢险救援中心井控技术分公司井控技术分公司一楼过道', 84.875754, 45.591647, NULL, NULL, 'A01A13', 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `xj_emergency`.`xj_aed` (`id`, `name`, `address`, `longitude`, `latitude`, `manage_name`, `manage_phone`, `org_code`, `del_flag`, `create_time`, `create_by`, `update_time`, `update_by`) VALUES ('1968210819832266781', '自动体外除颤仪', '应急抢险救援中心带压作业分公司带压作业分公司一楼过道', 85.116617, 45.680038, NULL, NULL, 'A01A13', 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `xj_emergency`.`xj_aed` (`id`, `name`, `address`, `longitude`, `latitude`, `manage_name`, `manage_phone`, `org_code`, `del_flag`, `create_time`, `create_by`, `update_time`, `update_by`) VALUES ('1968210819832266782', '自动体外除颤仪', '应急抢险救援中心连管作业分公司带压作业分公司一楼过道', 85.116617, 45.680038, NULL, NULL, 'A01A13', 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `xj_emergency`.`xj_aed` (`id`, `name`, `address`, `longitude`, `latitude`, `manage_name`, `manage_phone`, `org_code`, `del_flag`, `create_time`, `create_by`, `update_time`, `update_by`) VALUES ('1968210819832266783', '自动体外除颤仪', '应急抢险救援中心特车分公司特车分公司机关楼', 85.050406, 45.627220, NULL, NULL, 'A01A13', 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `xj_emergency`.`xj_aed` (`id`, `name`, `address`, `longitude`, `latitude`, `manage_name`, `manage_phone`, `org_code`, `del_flag`, `create_time`, `create_by`, `update_time`, `update_by`) VALUES ('1968210819832266784', '自动体外除颤仪', '应急抢险救援中心综合服务站共用井控技术分公司一楼过道', 84.875754, 45.591647, NULL, NULL, 'A01A13', 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `xj_emergency`.`xj_aed` (`id`, `name`, `address`, `longitude`, `latitude`, `manage_name`, `manage_phone`, `org_code`, `del_flag`, `create_time`, `create_by`, `update_time`, `update_by`) VALUES ('1968210819899375617', '自动体外除颤仪', '应急抢险救援中心准东消防大队准东消防大队一楼大厅', 87.881141, 44.152678, NULL, NULL, 'A01A13', 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `xj_emergency`.`xj_aed` (`id`, `name`, `address`, `longitude`, `latitude`, `manage_name`, `manage_phone`, `org_code`, `del_flag`, `create_time`, `create_by`, `update_time`, `update_by`) VALUES ('1968210819899375618', '自动体外除颤仪', '应急抢险救援中心白碱滩消防大队健身房', 85.122446, 45.685865, NULL, NULL, 'A01A13', 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `xj_emergency`.`xj_aed` (`id`, `name`, `address`, `longitude`, `latitude`, `manage_name`, `manage_phone`, `org_code`, `del_flag`, `create_time`, `create_by`, `update_time`, `update_by`) VALUES ('1968210819899375619', '自动体外除颤仪', '应急抢险救援中心沙漠腹部消防大队石西作业区公寓1#食堂门口', 86.857307, 45.428689, NULL, NULL, 'A01A13', 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `xj_emergency`.`xj_aed` (`id`, `name`, `address`, `longitude`, `latitude`, `manage_name`, `manage_phone`, `org_code`, `del_flag`, `create_time`, `create_by`, `update_time`, `update_by`) VALUES ('1968210819899375620', '自动体外除颤仪', '应急抢险救援中心陆梁作业区公寓2#食堂门口', 86.891187, 45.858004, NULL, NULL, 'A01A13', 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `xj_emergency`.`xj_aed` (`id`, `name`, `address`, `longitude`, `latitude`, `manage_name`, `manage_phone`, `org_code`, `del_flag`, `create_time`, `create_by`, `update_time`, `update_by`) VALUES ('1968210819899375621', '自动体外除颤仪', '应急抢险救援中心百口泉消防大队百口泉消防大队一楼大厅', 84.886854, 45.603024, NULL, NULL, 'A01A13', 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `xj_emergency`.`xj_aed` (`id`, `name`, `address`, `longitude`, `latitude`, `manage_name`, `manage_phone`, `org_code`, `del_flag`, `create_time`, `create_by`, `update_time`, `update_by`) VALUES ('1968210819899375622', '自动体外除颤仪', '应急抢险救援中心风城油田消防中队风城油田消防中队执勤楼一楼大厅', 85.675196, 46.092419, NULL, NULL, 'A01A13', 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `xj_emergency`.`xj_aed` (`id`, `name`, `address`, `longitude`, `latitude`, `manage_name`, `manage_phone`, `org_code`, `del_flag`, `create_time`, `create_by`, `update_time`, `update_by`) VALUES ('1968210819899375623', '自动体外除颤仪', '新能源事业部机关机关2号楼656办公室', 84.883523, 45.577753, NULL, NULL, 'A01A24', 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `xj_emergency`.`xj_aed` (`id`, `name`, `address`, `longitude`, `latitude`, `manage_name`, `manage_phone`, `org_code`, `del_flag`, `create_time`, `create_by`, `update_time`, `update_by`) VALUES ('1968210819899375624', '自动体外除颤仪', '新能源事业部煤电项目部煤电项目部一楼大厅', 85.016096, 45.547144, NULL, NULL, 'A01A24', 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `xj_emergency`.`xj_aed` (`id`, `name`, `address`, `longitude`, `latitude`, `manage_name`, `manage_phone`, `org_code`, `del_flag`, `create_time`, `create_by`, `update_time`, `update_by`) VALUES ('1968210819899375625', '自动体外除颤仪', '红山公司机关科研生产办公楼A座机关楼七楼茶水间', 84.896905, 45.570603, NULL, NULL, NULL, 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `xj_emergency`.`xj_aed` (`id`, `name`, `address`, `longitude`, `latitude`, `manage_name`, `manage_phone`, `org_code`, `del_flag`, `create_time`, `create_by`, `update_time`, `update_by`) VALUES ('1968210819899375626', '自动体外除颤仪', '红山公司运行维护二中心办公室运行维护二中心坡下基地调度值班室', 84.816239, 45.367030, NULL, NULL, NULL, 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `xj_emergency`.`xj_aed` (`id`, `name`, `address`, `longitude`, `latitude`, `manage_name`, `manage_phone`, `org_code`, `del_flag`, `create_time`, `create_by`, `update_time`, `update_by`) VALUES ('1968210819899375627', '自动体外除颤仪', '红山公司运行维护二中心办公室运行维护二中心7号中心站对面值班室', 84.817236, 45.353428, NULL, NULL, NULL, 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `xj_emergency`.`xj_aed` (`id`, `name`, `address`, `longitude`, `latitude`, `manage_name`, `manage_phone`, `org_code`, `del_flag`, `create_time`, `create_by`, `update_time`, `update_by`) VALUES ('1968210819899375628', '自动体外除颤仪', '红山公司运行维护三中心办公室运行维护三中心处理站仪控室', 84.823821, 45.368316, NULL, NULL, NULL, 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `xj_emergency`.`xj_aed` (`id`, `name`, `address`, `longitude`, `latitude`, `manage_name`, `manage_phone`, `org_code`, `del_flag`, `create_time`, `create_by`, `update_time`, `update_by`) VALUES ('1968210819899375629', '自动体外除颤仪', '油气储运公司克区机关楼209室', 84.981774, 45.574815, NULL, NULL, 'A01A14', 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `xj_emergency`.`xj_aed` (`id`, `name`, `address`, `longitude`, `latitude`, `manage_name`, `manage_phone`, `org_code`, `del_flag`, `create_time`, `create_by`, `update_time`, `update_by`) VALUES ('1968210819899375630', '自动体外除颤仪', '油气储运公司昌吉机关楼421室', 87.302532, 43.991870, NULL, NULL, 'A01A14', 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `xj_emergency`.`xj_aed` (`id`, `name`, `address`, `longitude`, `latitude`, `manage_name`, `manage_phone`, `org_code`, `del_flag`, `create_time`, `create_by`, `update_time`, `update_by`) VALUES ('1968210819899375631', '自动体外除颤仪', '油气储运公司石西站石西站公寓大门口', 86.869512, 45.428671, NULL, NULL, 'A01A14', 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `xj_emergency`.`xj_aed` (`id`, `name`, `address`, `longitude`, `latitude`, `manage_name`, `manage_phone`, `org_code`, `del_flag`, `create_time`, `create_by`, `update_time`, `update_by`) VALUES ('1968210819899375632', '自动体外除颤仪', '油气储运公司北三台站油库北三台站油库', 88.710788, 44.243344, NULL, NULL, 'A01A14', 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `xj_emergency`.`xj_aed` (`id`, `name`, `address`, `longitude`, `latitude`, `manage_name`, `manage_phone`, `org_code`, `del_flag`, `create_time`, `create_by`, `update_time`, `update_by`) VALUES ('1968210819899375633', '自动体外除颤仪', '油气储运公司北三台站彩南交接点北三台站彩南交接点', 88.363077, 44.976466, NULL, NULL, 'A01A14', 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `xj_emergency`.`xj_aed` (`id`, `name`, `address`, `longitude`, `latitude`, `manage_name`, `manage_phone`, `org_code`, `del_flag`, `create_time`, `create_by`, `update_time`, `update_by`) VALUES ('1968210819899375634', '自动体外除颤仪', '油气储运公司北三台站火烧山交油点北三台站火烧山交油点', 89.028515, 44.948347, NULL, NULL, 'A01A14', 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `xj_emergency`.`xj_aed` (`id`, `name`, `address`, `longitude`, `latitude`, `manage_name`, `manage_phone`, `org_code`, `del_flag`, `create_time`, `create_by`, `update_time`, `update_by`) VALUES ('1968210819899375635', '自动体外除颤仪', '油气储运公司706站706站经济员办公室', 86.966269, 44.077771, NULL, NULL, 'A01A14', 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `xj_emergency`.`xj_aed` (`id`, `name`, `address`, `longitude`, `latitude`, `manage_name`, `manage_phone`, `org_code`, `del_flag`, `create_time`, `create_by`, `update_time`, `update_by`) VALUES ('1968210819899375636', '自动体外除颤仪', '油气储运公司706站705站点705站点技术员办公室', 86.527177, 44.300162, NULL, NULL, 'A01A14', 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `xj_emergency`.`xj_aed` (`id`, `name`, `address`, `longitude`, `latitude`, `manage_name`, `manage_phone`, `org_code`, `del_flag`, `create_time`, `create_by`, `update_time`, `update_by`) VALUES ('1968210819899375637', '自动体外除颤仪', '油气储运公司四泵站办公楼二楼党员之家办公室', 84.768154, 44.916483, NULL, NULL, 'A01A14', 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `xj_emergency`.`xj_aed` (`id`, `name`, `address`, `longitude`, `latitude`, `manage_name`, `manage_phone`, `org_code`, `del_flag`, `create_time`, `create_by`, `update_time`, `update_by`) VALUES ('1968210819899375638', '自动体外除颤仪', '油气储运公司六泵站六泵站会议室', 84.859622, 44.442485, NULL, NULL, 'A01A14', 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `xj_emergency`.`xj_aed` (`id`, `name`, `address`, `longitude`, `latitude`, `manage_name`, `manage_phone`, `org_code`, `del_flag`, `create_time`, `create_by`, `update_time`, `update_by`) VALUES ('1968210819899375639', '自动体外除颤仪', '油气储运公司704站704站技术员办公室', 85.498086, 44.830121, NULL, NULL, 'A01A14', 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `xj_emergency`.`xj_aed` (`id`, `name`, `address`, `longitude`, `latitude`, `manage_name`, `manage_phone`, `org_code`, `del_flag`, `create_time`, `create_by`, `update_time`, `update_by`) VALUES ('1968210819899375640', '自动体外除颤仪', '油气储运公司704站703站703站点经济员办公室', 85.498086, 44.830121, NULL, NULL, 'A01A14', 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `xj_emergency`.`xj_aed` (`id`, `name`, `address`, `longitude`, `latitude`, `manage_name`, `manage_phone`, `org_code`, `del_flag`, `create_time`, `create_by`, `update_time`, `update_by`) VALUES ('1968210819899375641', '自动体外除颤仪', '油气储运公司风城中心站夏子街增压站夏子街增压站', 86.084328, 46.150461, NULL, NULL, 'A01A14', 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `xj_emergency`.`xj_aed` (`id`, `name`, `address`, `longitude`, `latitude`, `manage_name`, `manage_phone`, `org_code`, `del_flag`, `create_time`, `create_by`, `update_time`, `update_by`) VALUES ('1968210819899375642', '自动体外除颤仪', '油气储运公司交油队百克站百克站生产值班室', 85.433080, 45.913570, NULL, NULL, 'A01A14', 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `xj_emergency`.`xj_aed` (`id`, `name`, `address`, `longitude`, `latitude`, `manage_name`, `manage_phone`, `org_code`, `del_flag`, `create_time`, `create_by`, `update_time`, `update_by`) VALUES ('1968210819899375643', '自动体外除颤仪', '油气储运公司王家沟油气储运中心站王家沟油气储运中心武警楼健康小屋', 87.366044, 43.880664, NULL, NULL, 'A01A14', 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `xj_emergency`.`xj_aed` (`id`, `name`, `address`, `longitude`, `latitude`, `manage_name`, `manage_phone`, `org_code`, `del_flag`, `create_time`, `create_by`, `update_time`, `update_by`) VALUES ('1968210819899375644', '自动体外除颤仪', '新疆培训中心克拉玛依校区新疆培训中心C1教学楼1楼大厅', 84.928628, 45.548118, NULL, NULL, 'A01A37', 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `xj_emergency`.`xj_aed` (`id`, `name`, `address`, `longitude`, `latitude`, `manage_name`, `manage_phone`, `org_code`, `del_flag`, `create_time`, `create_by`, `update_time`, `update_by`) VALUES ('1968210819899375645', '自动体外除颤仪', '新疆培训中心克拉玛依校区新疆培训中心K2公寓1楼大厅', 84.929947, 45.545808, NULL, NULL, 'A01A37', 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `xj_emergency`.`xj_aed` (`id`, `name`, `address`, `longitude`, `latitude`, `manage_name`, `manage_phone`, `org_code`, `del_flag`, `create_time`, `create_by`, `update_time`, `update_by`) VALUES ('1968210819899375646', '自动体外除颤仪', '数智技术公司全体部门技术信息楼一楼大厅', 83.897238, 45.576331, NULL, NULL, 'A01A20', 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `xj_emergency`.`xj_aed` (`id`, `name`, `address`, `longitude`, `latitude`, `manage_name`, `manage_phone`, `org_code`, `del_flag`, `create_time`, `create_by`, `update_time`, `update_by`) VALUES ('1968210819899375647', '自动体外除颤仪', '数智技术公司全体部门雅典娜办公楼一楼大厅', 84.878820, 45.904886, NULL, NULL, 'A01A20', 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `xj_emergency`.`xj_aed` (`id`, `name`, `address`, `longitude`, `latitude`, `manage_name`, `manage_phone`, `org_code`, `del_flag`, `create_time`, `create_by`, `update_time`, `update_by`) VALUES ('1968210819899375648', '自动体外除颤仪', '数智技术公司全体部门数据中心二楼东面大厅', 84.880193, 45.576369, NULL, NULL, 'A01A20', 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `xj_emergency`.`xj_aed` (`id`, `name`, `address`, `longitude`, `latitude`, `manage_name`, `manage_phone`, `org_code`, `del_flag`, `create_time`, `create_by`, `update_time`, `update_by`) VALUES ('1968210819899375649', '自动体外除颤仪', '数智技术公司全体部门乌鲁木齐明园办公大楼一楼大厅', 87.599231, 43.814259, NULL, NULL, 'A01A20', 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `xj_emergency`.`xj_aed` (`id`, `name`, `address`, `longitude`, `latitude`, `manage_name`, `manage_phone`, `org_code`, `del_flag`, `create_time`, `create_by`, `update_time`, `update_by`) VALUES ('1968210819899375650', '自动体外除颤仪', '采油一厂机关机关楼一楼大厅', 84.882969, 45.596639, NULL, NULL, 'A01A06', 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `xj_emergency`.`xj_aed` (`id`, `name`, `address`, `longitude`, `latitude`, `manage_name`, `manage_phone`, `org_code`, `del_flag`, `create_time`, `create_by`, `update_time`, `update_by`) VALUES ('1968210819983261697', '自动体外除颤仪', '采油一厂机关体育馆西北角', 84.880194, 45.594698, NULL, NULL, 'A01A06', 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `xj_emergency`.`xj_aed` (`id`, `name`, `address`, `longitude`, `latitude`, `manage_name`, `manage_phone`, `org_code`, `del_flag`, `create_time`, `create_by`, `update_time`, `update_by`) VALUES ('1968210819983261698', '自动体外除颤仪', '采油一厂黑油山综合管理部黑油山综合管理部一楼大厅', 84.900184, 45.604407, NULL, NULL, 'A01A06', 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `xj_emergency`.`xj_aed` (`id`, `name`, `address`, `longitude`, `latitude`, `manage_name`, `manage_phone`, `org_code`, `del_flag`, `create_time`, `create_by`, `update_time`, `update_by`) VALUES ('1968210819983261699', '自动体外除颤仪', '采油一厂黑油山综合管理部黑油山综合管理部一楼大厅', 84.900184, 45.604407, NULL, NULL, 'A01A06', 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `xj_emergency`.`xj_aed` (`id`, `name`, `address`, `longitude`, `latitude`, `manage_name`, `manage_phone`, `org_code`, `del_flag`, `create_time`, `create_by`, `update_time`, `update_by`) VALUES ('1968210819983261700', '自动体外除颤仪', '采油一厂第三采油作业区车89处理站中控室', 84.827494, 44.958074, NULL, NULL, 'A01A06', 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `xj_emergency`.`xj_aed` (`id`, `name`, `address`, `longitude`, `latitude`, `manage_name`, `manage_phone`, `org_code`, `del_flag`, `create_time`, `create_by`, `update_time`, `update_by`) VALUES ('1968210819983261701', '自动体外除颤仪', '采油一厂第三采油作业区车89处理站中控室', 84.827494, 44.958074, NULL, NULL, 'A01A06', 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `xj_emergency`.`xj_aed` (`id`, `name`, `address`, `longitude`, `latitude`, `manage_name`, `manage_phone`, `org_code`, `del_flag`, `create_time`, `create_by`, `update_time`, `update_by`) VALUES ('1968210819983261702', '自动体外除颤仪', '物资供应公司机关体育馆门口右侧', 85.879435, 45.588894, NULL, NULL, 'A01A35', 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `xj_emergency`.`xj_aed` (`id`, `name`, `address`, `longitude`, `latitude`, `manage_name`, `manage_phone`, `org_code`, `del_flag`, `create_time`, `create_by`, `update_time`, `update_by`) VALUES ('1968210819983261703', '自动体外除颤仪', '陆梁油田作业区综合管理办公室机关楼1039房间\n体育馆休息室门口\n食堂门口', 86.889520, 45.856062, NULL, NULL, 'A01A11', 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `xj_emergency`.`xj_aed` (`id`, `name`, `address`, `longitude`, `latitude`, `manage_name`, `manage_phone`, `org_code`, `del_flag`, `create_time`, `create_by`, `update_time`, `update_by`) VALUES ('1968210819983261704', '自动体外除颤仪', '陆梁油田作业区综合管理办公室机关楼1039房间\n体育馆休息室门口\n食堂门口', 86.889520, 45.856062, NULL, NULL, 'A01A11', 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `xj_emergency`.`xj_aed` (`id`, `name`, `address`, `longitude`, `latitude`, `manage_name`, `manage_phone`, `org_code`, `del_flag`, `create_time`, `create_by`, `update_time`, `update_by`) VALUES ('1968210819983261705', '自动体外除颤仪', '陆梁油田作业区经营管理办公室机关楼1039房间\n体育馆休息室门口\n食堂门口', 86.889520, 45.856062, NULL, NULL, 'A01A11', 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `xj_emergency`.`xj_aed` (`id`, `name`, `address`, `longitude`, `latitude`, `manage_name`, `manage_phone`, `org_code`, `del_flag`, `create_time`, `create_by`, `update_time`, `update_by`) VALUES ('1968210819983261706', '自动体外除颤仪', '陆梁油田作业区质量健康安全环保办公室机关楼1039房间\n体育馆休息室门口\n食堂门口', 86.889520, 45.856062, NULL, NULL, 'A01A11', 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `xj_emergency`.`xj_aed` (`id`, `name`, `address`, `longitude`, `latitude`, `manage_name`, `manage_phone`, `org_code`, `del_flag`, `create_time`, `create_by`, `update_time`, `update_by`) VALUES ('1968210819983261707', '自动体外除颤仪', '陆梁油田作业区党群维稳办公室机关楼1039房间\n体育馆休息室门口\n食堂门口', 86.889520, 45.856062, NULL, NULL, 'A01A11', 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `xj_emergency`.`xj_aed` (`id`, `name`, `address`, `longitude`, `latitude`, `manage_name`, `manage_phone`, `org_code`, `del_flag`, `create_time`, `create_by`, `update_time`, `update_by`) VALUES ('1968210819983261708', '自动体外除颤仪', '陆梁油田作业区地质研究中心机关楼1039房间\n体育馆休息室门口\n食堂门口', 86.889520, 45.856062, NULL, NULL, 'A01A11', 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `xj_emergency`.`xj_aed` (`id`, `name`, `address`, `longitude`, `latitude`, `manage_name`, `manage_phone`, `org_code`, `del_flag`, `create_time`, `create_by`, `update_time`, `update_by`) VALUES ('1968210819983261709', '自动体外除颤仪', '陆梁油田作业区生产指挥中心机关楼1039房间\n体育馆休息室门口\n食堂门口', 86.889520, 45.856062, NULL, NULL, 'A01A11', 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `xj_emergency`.`xj_aed` (`id`, `name`, `address`, `longitude`, `latitude`, `manage_name`, `manage_phone`, `org_code`, `del_flag`, `create_time`, `create_by`, `update_time`, `update_by`) VALUES ('1968210819983261710', '自动体外除颤仪', '陆梁油田作业区工程技术中心机关楼1039房间\n体育馆休息室门口\n食堂门口', 86.889520, 45.856062, NULL, NULL, 'A01A11', 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `xj_emergency`.`xj_aed` (`id`, `name`, `address`, `longitude`, `latitude`, `manage_name`, `manage_phone`, `org_code`, `del_flag`, `create_time`, `create_by`, `update_time`, `update_by`) VALUES ('1968210819983261711', '自动体外除颤仪', '陆梁油田作业区陆梁运行维护中心办公区机关楼1039房间\n体育馆休息室门口\n食堂门口', 86.889520, 45.856062, NULL, NULL, 'A01A11', 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `xj_emergency`.`xj_aed` (`id`, `name`, `address`, `longitude`, `latitude`, `manage_name`, `manage_phone`, `org_code`, `del_flag`, `create_time`, `create_by`, `update_time`, `update_by`) VALUES ('1968210819983261712', '自动体外除颤仪', '陆梁油田作业区石南运行维护中心办公区机关楼1039房间\n体育馆休息室门口\n食堂门口', 86.889520, 45.856062, NULL, NULL, 'A01A11', 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `xj_emergency`.`xj_aed` (`id`, `name`, `address`, `longitude`, `latitude`, `manage_name`, `manage_phone`, `org_code`, `del_flag`, `create_time`, `create_by`, `update_time`, `update_by`) VALUES ('1968210819983261713', '自动体外除颤仪', '陆梁油田作业区玛东运行维护中心办公区机关楼1039房间\n体育馆休息室门口\n食堂门口', 86.889520, 45.856062, NULL, NULL, 'A01A11', 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `xj_emergency`.`xj_aed` (`id`, `name`, `address`, `longitude`, `latitude`, `manage_name`, `manage_phone`, `org_code`, `del_flag`, `create_time`, `create_by`, `update_time`, `update_by`) VALUES ('1968210819983261714', '自动体外除颤仪', '陆梁油田作业区陆梁运行维护中心现场陆梁集中处理站值班室', 86.941263, 45.858865, NULL, NULL, 'A01A11', 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `xj_emergency`.`xj_aed` (`id`, `name`, `address`, `longitude`, `latitude`, `manage_name`, `manage_phone`, `org_code`, `del_flag`, `create_time`, `create_by`, `update_time`, `update_by`) VALUES ('1968210819983261715', '自动体外除颤仪', '陆梁油田作业区石南运行维护中心现场石南集中处理站值班室', 86.894790, 45.693332, NULL, NULL, 'A01A11', 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `xj_emergency`.`xj_aed` (`id`, `name`, `address`, `longitude`, `latitude`, `manage_name`, `manage_phone`, `org_code`, `del_flag`, `create_time`, `create_by`, `update_time`, `update_by`) VALUES ('1968210819983261716', '自动体外除颤仪', '陆梁油田作业区玛东运行维护中心现场玛东集中处理站值班室', 86.549398, 45.862491, NULL, NULL, 'A01A11', 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `xj_emergency`.`xj_aed` (`id`, `name`, `address`, `longitude`, `latitude`, `manage_name`, `manage_phone`, `org_code`, `del_flag`, `create_time`, `create_by`, `update_time`, `update_by`) VALUES ('1968210819983261717', '自动体外除颤仪', '新港公司机关公司七楼健康自助服务站', 84.897960, 45.570525, NULL, NULL, 'A01A31', 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `xj_emergency`.`xj_aed` (`id`, `name`, `address`, `longitude`, `latitude`, `manage_name`, `manage_phone`, `org_code`, `del_flag`, `create_time`, `create_by`, `update_time`, `update_by`) VALUES ('1968210819983261718', '自动体外除颤仪', '新港公司采油作业一区采油作业一区值班室', 85.237800, 45.744015, NULL, NULL, 'A01A31', 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `xj_emergency`.`xj_aed` (`id`, `name`, `address`, `longitude`, `latitude`, `manage_name`, `manage_phone`, `org_code`, `del_flag`, `create_time`, `create_by`, `update_time`, `update_by`) VALUES ('1968210819983261719', '自动体外除颤仪', '新港公司采油作业二区采油作业二区一班值班室', 85.258357, 45.762062, NULL, NULL, 'A01A31', 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `xj_emergency`.`xj_aed` (`id`, `name`, `address`, `longitude`, `latitude`, `manage_name`, `manage_phone`, `org_code`, `del_flag`, `create_time`, `create_by`, `update_time`, `update_by`) VALUES ('1968210820029399041', '自动体外除颤仪', '新港公司采油作业三区采油作业三区值班室', 85.273371, 45.749851, NULL, NULL, 'A01A31', 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `xj_emergency`.`xj_aed` (`id`, `name`, `address`, `longitude`, `latitude`, `manage_name`, `manage_phone`, `org_code`, `del_flag`, `create_time`, `create_by`, `update_time`, `update_by`) VALUES ('1968210820029399042', '自动体外除颤仪', '新港公司供汽作业区供汽作业区软化水站值班室', 85.246686, 45.744012, NULL, NULL, 'A01A31', 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `xj_emergency`.`xj_aed` (`id`, `name`, `address`, `longitude`, `latitude`, `manage_name`, `manage_phone`, `org_code`, `del_flag`, `create_time`, `create_by`, `update_time`, `update_by`) VALUES ('1968210820029399043', '自动体外除颤仪', '新港公司供汽作业区供汽作业区2#站值班室', 85.232247, 45.745684, NULL, NULL, 'A01A31', 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `xj_emergency`.`xj_aed` (`id`, `name`, `address`, `longitude`, `latitude`, `manage_name`, `manage_phone`, `org_code`, `del_flag`, `create_time`, `create_by`, `update_time`, `update_by`) VALUES ('1968210820029399044', '自动体外除颤仪', '新港公司集输作业区集输作业区91处理站值班室', 85.233358, 45.739574, NULL, NULL, 'A01A31', 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `xj_emergency`.`xj_aed` (`id`, `name`, `address`, `longitude`, `latitude`, `manage_name`, `manage_phone`, `org_code`, `del_flag`, `create_time`, `create_by`, `update_time`, `update_by`) VALUES ('1968210820029399045', '自动体外除颤仪', '新港公司运行保障中心运行保障中心值班室', 85.253632, 45.759840, NULL, NULL, 'A01A31', 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `xj_emergency`.`xj_aed` (`id`, `name`, `address`, `longitude`, `latitude`, `manage_name`, `manage_phone`, `org_code`, `del_flag`, `create_time`, `create_by`, `update_time`, `update_by`) VALUES ('1968210820029399046', '自动体外除颤仪', '公共事务中心离退休人员管理中心机关行政事务管理部机关楼一楼303房间', 84.892962, 45.571915, NULL, NULL, 'A01A09', 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `xj_emergency`.`xj_aed` (`id`, `name`, `address`, `longitude`, `latitude`, `manage_name`, `manage_phone`, `org_code`, `del_flag`, `create_time`, `create_by`, `update_time`, `update_by`) VALUES ('1968210820029399047', '自动体外除颤仪', '公共事务中心离退休人员管理中心造林减排作业区作业区办公楼一楼大厅', 85.008600, 45.274316, NULL, NULL, 'A01A09', 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `xj_emergency`.`xj_aed` (`id`, `name`, `address`, `longitude`, `latitude`, `manage_name`, `manage_phone`, `org_code`, `del_flag`, `create_time`, `create_by`, `update_time`, `update_by`) VALUES ('1968210820029399048', '自动体外除颤仪', '公共事务中心离退休人员管理中心离退休管理部原退管办公楼一楼门岗', 84.864609, 45.596429, NULL, NULL, 'A01A09', 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `xj_emergency`.`xj_aed` (`id`, `name`, `address`, `longitude`, `latitude`, `manage_name`, `manage_phone`, `org_code`, `del_flag`, `create_time`, `create_by`, `update_time`, `update_by`) VALUES ('1968210820029399049', '自动体外除颤仪', '公共事务中心离退休人员管理中心克拉玛依离退休服务东站东站一楼大厅', 84.882587, 45.593484, NULL, NULL, 'A01A09', 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `xj_emergency`.`xj_aed` (`id`, `name`, `address`, `longitude`, `latitude`, `manage_name`, `manage_phone`, `org_code`, `del_flag`, `create_time`, `create_by`, `update_time`, `update_by`) VALUES ('1968210820029399050', '自动体外除颤仪', '公共事务中心离退休人员管理中心白碱滩离退休服务站二楼202房间', NULL, NULL, NULL, NULL, 'A01A09', 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `xj_emergency`.`xj_aed` (`id`, `name`, `address`, `longitude`, `latitude`, `manage_name`, `manage_phone`, `org_code`, `del_flag`, `create_time`, `create_by`, `update_time`, `update_by`) VALUES ('1968210820029399051', '自动体外除颤仪', '社会保险管理中心综合管理部6+1联合办公楼A座1楼大厅', 84.870207, 45.588322, NULL, NULL, 'A01A39', 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `xj_emergency`.`xj_aed` (`id`, `name`, `address`, `longitude`, `latitude`, `manage_name`, `manage_phone`, `org_code`, `del_flag`, `create_time`, `create_by`, `update_time`, `update_by`) VALUES ('1968210820029399052', '自动体外除颤仪', '社会保险管理中心综合管理部6+1联合办公楼A座1楼大厅', 84.870207, 45.588322, NULL, NULL, 'A01A39', 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `xj_emergency`.`xj_aed` (`id`, `name`, `address`, `longitude`, `latitude`, `manage_name`, `manage_phone`, `org_code`, `del_flag`, `create_time`, `create_by`, `update_time`, `update_by`) VALUES ('1968210820029399053', '自动体外除颤仪', '社会保险管理中心财务管理部6+1联合办公楼A座1楼大厅', 84.870207, 45.588322, NULL, NULL, 'A01A39', 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `xj_emergency`.`xj_aed` (`id`, `name`, `address`, `longitude`, `latitude`, `manage_name`, `manage_phone`, `org_code`, `del_flag`, `create_time`, `create_by`, `update_time`, `update_by`) VALUES ('1968210820029399054', '自动体外除颤仪', '社会保险管理中心财务管理部6+1联合办公楼A座1楼大厅', 84.870207, 45.588322, NULL, NULL, 'A01A39', 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `xj_emergency`.`xj_aed` (`id`, `name`, `address`, `longitude`, `latitude`, `manage_name`, `manage_phone`, `org_code`, `del_flag`, `create_time`, `create_by`, `update_time`, `update_by`) VALUES ('1968210820029399055', '自动体外除颤仪', '社会保险管理中心基金管理部6+1联合办公楼A座1楼大厅', 84.870207, 45.588322, NULL, NULL, 'A01A39', 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `xj_emergency`.`xj_aed` (`id`, `name`, `address`, `longitude`, `latitude`, `manage_name`, `manage_phone`, `org_code`, `del_flag`, `create_time`, `create_by`, `update_time`, `update_by`) VALUES ('1968210820029399056', '自动体外除颤仪', '社会保险管理中心基金管理部6+1联合办公楼A座1楼大厅', 84.870207, 45.588322, NULL, NULL, 'A01A39', 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `xj_emergency`.`xj_aed` (`id`, `name`, `address`, `longitude`, `latitude`, `manage_name`, `manage_phone`, `org_code`, `del_flag`, `create_time`, `create_by`, `update_time`, `update_by`) VALUES ('1968210820029399057', '自动体外除颤仪', '社会保险管理中心内控稽核管理部6+1联合办公楼A座1楼大厅', 84.870207, 45.588322, NULL, NULL, 'A01A39', 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `xj_emergency`.`xj_aed` (`id`, `name`, `address`, `longitude`, `latitude`, `manage_name`, `manage_phone`, `org_code`, `del_flag`, `create_time`, `create_by`, `update_time`, `update_by`) VALUES ('1968210820029399058', '自动体外除颤仪', '社会保险管理中心内控稽核管理部6+1联合办公楼A座1楼大厅', 84.870207, 45.588322, NULL, NULL, 'A01A39', 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `xj_emergency`.`xj_aed` (`id`, `name`, `address`, `longitude`, `latitude`, `manage_name`, `manage_phone`, `org_code`, `del_flag`, `create_time`, `create_by`, `update_time`, `update_by`) VALUES ('1968210820029399059', '自动体外除颤仪', '社会保险管理中心社保管理部6+1联合办公楼A座1楼大厅', 84.870207, 45.588322, NULL, NULL, 'A01A39', 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `xj_emergency`.`xj_aed` (`id`, `name`, `address`, `longitude`, `latitude`, `manage_name`, `manage_phone`, `org_code`, `del_flag`, `create_time`, `create_by`, `update_time`, `update_by`) VALUES ('1968210820029399060', '自动体外除颤仪', '社会保险管理中心社保管理部6+1联合办公楼A座1楼大厅', 84.870207, 45.588322, NULL, NULL, 'A01A39', 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `xj_emergency`.`xj_aed` (`id`, `name`, `address`, `longitude`, `latitude`, `manage_name`, `manage_phone`, `org_code`, `del_flag`, `create_time`, `create_by`, `update_time`, `update_by`) VALUES ('1968210820029399061', '自动体外除颤仪', '社会保险管理中心企业医保管理部6+1联合办公楼A座1楼大厅', 84.870207, 45.588322, NULL, NULL, 'A01A39', 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `xj_emergency`.`xj_aed` (`id`, `name`, `address`, `longitude`, `latitude`, `manage_name`, `manage_phone`, `org_code`, `del_flag`, `create_time`, `create_by`, `update_time`, `update_by`) VALUES ('1968210820029399062', '自动体外除颤仪', '社会保险管理中心企业医保管理部6+1联合办公楼A座1楼大厅', 84.870207, 45.588322, NULL, NULL, 'A01A39', 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `xj_emergency`.`xj_aed` (`id`, `name`, `address`, `longitude`, `latitude`, `manage_name`, `manage_phone`, `org_code`, `del_flag`, `create_time`, `create_by`, `update_time`, `update_by`) VALUES ('1968210820029399063', '自动体外除颤仪', '社会保险管理中心信息档案管理站6+1联合办公楼A座1楼大厅', 84.870207, 45.588322, NULL, NULL, 'A01A39', 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `xj_emergency`.`xj_aed` (`id`, `name`, `address`, `longitude`, `latitude`, `manage_name`, `manage_phone`, `org_code`, `del_flag`, `create_time`, `create_by`, `update_time`, `update_by`) VALUES ('1968210820029399064', '自动体外除颤仪', '社会保险管理中心信息档案管理站6+1联合办公楼A座1楼大厅', 84.870207, 45.588322, NULL, NULL, 'A01A39', 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `xj_emergency`.`xj_aed` (`id`, `name`, `address`, `longitude`, `latitude`, `manage_name`, `manage_phone`, `org_code`, `del_flag`, `create_time`, `create_by`, `update_time`, `update_by`) VALUES ('1968210820029399065', '自动体外除颤仪', '社会保险管理中心社保事务所6+1联合办公楼A座1楼大厅', 84.870207, 45.588322, NULL, NULL, 'A01A39', 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `xj_emergency`.`xj_aed` (`id`, `name`, `address`, `longitude`, `latitude`, `manage_name`, `manage_phone`, `org_code`, `del_flag`, `create_time`, `create_by`, `update_time`, `update_by`) VALUES ('1968210820029399066', '自动体外除颤仪', '社会保险管理中心社保事务所6+1联合办公楼A座1楼大厅', 84.870207, 45.588322, NULL, NULL, 'A01A39', 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `xj_emergency`.`xj_aed` (`id`, `name`, `address`, `longitude`, `latitude`, `manage_name`, `manage_phone`, `org_code`, `del_flag`, `create_time`, `create_by`, `update_time`, `update_by`) VALUES ('1968210820029399067', '自动体外除颤仪', '社会保险管理中心企业医保事务所6+1联合办公楼A座1楼大厅', 84.870207, 45.588322, NULL, NULL, 'A01A39', 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `xj_emergency`.`xj_aed` (`id`, `name`, `address`, `longitude`, `latitude`, `manage_name`, `manage_phone`, `org_code`, `del_flag`, `create_time`, `create_by`, `update_time`, `update_by`) VALUES ('1968210820029399068', '自动体外除颤仪', '社会保险管理中心企业医保事务所6+1联合办公楼A座1楼大厅', 84.870207, 45.588322, NULL, NULL, 'A01A39', 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `xj_emergency`.`xj_aed` (`id`, `name`, `address`, `longitude`, `latitude`, `manage_name`, `manage_phone`, `org_code`, `del_flag`, `create_time`, `create_by`, `update_time`, `update_by`) VALUES ('1968210820029399069', '自动体外除颤仪', '勘探开发研究院机关机关一楼大厅', 84.895462, 45.604686, NULL, NULL, 'A01A10', 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `xj_emergency`.`xj_aed` (`id`, `name`, `address`, `longitude`, `latitude`, `manage_name`, `manage_phone`, `org_code`, `del_flag`, `create_time`, `create_by`, `update_time`, `update_by`) VALUES ('1968210820029399070', '自动体外除颤仪', '勘探开发研究院技术服务中心计信楼二楼215房间', 84.895462, 45.604686, NULL, NULL, 'A01A10', 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `xj_emergency`.`xj_aed` (`id`, `name`, `address`, `longitude`, `latitude`, `manage_name`, `manage_phone`, `org_code`, `del_flag`, `create_time`, `create_by`, `update_time`, `update_by`) VALUES ('1968210820029399071', '自动体外除颤仪', '勘探开发研究院技术服务中心体育馆大厅', 84.895462, 45.604686, NULL, NULL, 'A01A10', 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `xj_emergency`.`xj_aed` (`id`, `name`, `address`, `longitude`, `latitude`, `manage_name`, `manage_phone`, `org_code`, `del_flag`, `create_time`, `create_by`, `update_time`, `update_by`) VALUES ('1968210820029399072', '自动体外除颤仪', '勘探开发研究院油气战略规划研究所规划楼一楼中间楼梯边过道', 84.895462, 45.604686, NULL, NULL, 'A01A10', 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `xj_emergency`.`xj_aed` (`id`, `name`, `address`, `longitude`, `latitude`, `manage_name`, `manage_phone`, `org_code`, `del_flag`, `create_time`, `create_by`, `update_time`, `update_by`) VALUES ('1968210820029399073', '自动体外除颤仪', '勘探开发研究院开发实验中心地质岩心库大厅', 84.895462, 45.604686, NULL, NULL, 'A01A10', 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `xj_emergency`.`xj_aed` (`id`, `name`, `address`, `longitude`, `latitude`, `manage_name`, `manage_phone`, `org_code`, `del_flag`, `create_time`, `create_by`, `update_time`, `update_by`) VALUES ('1968210820029399074', '自动体外除颤仪', '勘探开发研究院开发实验中心提采楼西段1楼正门处', 84.895462, 45.604686, NULL, NULL, 'A01A10', 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `xj_emergency`.`xj_aed` (`id`, `name`, `address`, `longitude`, `latitude`, `manage_name`, `manage_phone`, `org_code`, `del_flag`, `create_time`, `create_by`, `update_time`, `update_by`) VALUES ('1968210820029399075', '自动体外除颤仪', '勘探开发研究院稀油开发研究所开发楼一楼大厅', 84.895462, 45.604686, NULL, NULL, 'A01A10', 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `xj_emergency`.`xj_aed` (`id`, `name`, `address`, `longitude`, `latitude`, `manage_name`, `manage_phone`, `org_code`, `del_flag`, `create_time`, `create_by`, `update_time`, `update_by`) VALUES ('1968210820029399076', '自动体外除颤仪', '勘探开发研究院非常规研究所科研楼1楼咖啡间', 84.895462, 45.604686, NULL, NULL, 'A01A10', 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `xj_emergency`.`xj_aed` (`id`, `name`, `address`, `longitude`, `latitude`, `manage_name`, `manage_phone`, `org_code`, `del_flag`, `create_time`, `create_by`, `update_time`, `update_by`) VALUES ('1968210820029399077', '自动体外除颤仪', '勘探开发研究院档案中心档案中心一楼圆厅', 84.895462, 45.604686, NULL, NULL, 'A01A10', 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `xj_emergency`.`xj_aed` (`id`, `name`, `address`, `longitude`, `latitude`, `manage_name`, `manage_phone`, `org_code`, `del_flag`, `create_time`, `create_by`, `update_time`, `update_by`) VALUES ('1968210820029399078', '自动体外除颤仪', '勘探开发研究院中亚油气研究所数据公司信息楼五楼大厅512门口', 84.899349, 45.577190, NULL, NULL, 'A01A10', 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `xj_emergency`.`xj_aed` (`id`, `name`, `address`, `longitude`, `latitude`, `manage_name`, `manage_phone`, `org_code`, `del_flag`, `create_time`, `create_by`, `update_time`, `update_by`) VALUES ('1968210820029399079', '自动体外除颤仪', '勘探开发研究院地球物理研究所3号楼3楼西侧走廊', 87.545160, 43.899830, NULL, NULL, 'A01A10', 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `xj_emergency`.`xj_aed` (`id`, `name`, `address`, `longitude`, `latitude`, `manage_name`, `manage_phone`, `org_code`, `del_flag`, `create_time`, `create_by`, `update_time`, `update_by`) VALUES ('1968210820029399080', '自动体外除颤仪', '勘探开发研究院地球物理研究所2号楼2楼西侧', 87.545160, 43.899830, NULL, NULL, 'A01A10', 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `xj_emergency`.`xj_aed` (`id`, `name`, `address`, `longitude`, `latitude`, `manage_name`, `manage_phone`, `org_code`, `del_flag`, `create_time`, `create_by`, `update_time`, `update_by`) VALUES ('1968210820029399081', '自动体外除颤仪', '宇澄热力股份有限公司机关机关楼一楼健身房间', 84.894073, 45.592467, NULL, NULL, 'A01A47', 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `xj_emergency`.`xj_aed` (`id`, `name`, `address`, `longitude`, `latitude`, `manage_name`, `manage_phone`, `org_code`, `del_flag`, `create_time`, `create_by`, `update_time`, `update_by`) VALUES ('1968210820029399082', '自动体外除颤仪', '宇澄热力股份有限公司机关机关楼一楼健身房间', 84.894073, 45.592467, NULL, NULL, 'A01A47', 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `xj_emergency`.`xj_aed` (`id`, `name`, `address`, `longitude`, `latitude`, `manage_name`, `manage_phone`, `org_code`, `del_flag`, `create_time`, `create_by`, `update_time`, `update_by`) VALUES ('1968210820029399083', '自动体外除颤仪', '宇澄热力股份有限公司风城供汽中心1#站风城供汽中心1#站中控室', 85.774179, 46.133604, NULL, NULL, 'A01A47', 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `xj_emergency`.`xj_aed` (`id`, `name`, `address`, `longitude`, `latitude`, `manage_name`, `manage_phone`, `org_code`, `del_flag`, `create_time`, `create_by`, `update_time`, `update_by`) VALUES ('1968210820029399084', '自动体外除颤仪', '宇澄热力股份有限公司风城供汽中心2#站风城供汽中心2#站中控室', 85.806331, 46.129121, NULL, NULL, 'A01A47', 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `xj_emergency`.`xj_aed` (`id`, `name`, `address`, `longitude`, `latitude`, `manage_name`, `manage_phone`, `org_code`, `del_flag`, `create_time`, `create_by`, `update_time`, `update_by`) VALUES ('1968210820029399085', '自动体外除颤仪', '宇澄热力股份有限公司红山供汽中心红山供汽中心中控室', 84.797023, 45.329293, NULL, NULL, 'A01A47', 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `xj_emergency`.`xj_aed` (`id`, `name`, `address`, `longitude`, `latitude`, `manage_name`, `manage_phone`, `org_code`, `del_flag`, `create_time`, `create_by`, `update_time`, `update_by`) VALUES ('1968210820029399086', '自动体外除颤仪', '采油工艺研究院监理公司采油工艺研究所老机关楼1楼大厅', 84.888243, 45.612189, NULL, NULL, 'A01A33', 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `xj_emergency`.`xj_aed` (`id`, `name`, `address`, `longitude`, `latitude`, `manage_name`, `manage_phone`, `org_code`, `del_flag`, `create_time`, `create_by`, `update_time`, `update_by`) VALUES ('1968210820029399087', '自动体外除颤仪', '采油工艺研究院监理公司采油工艺实验中心物业楼二楼楼道内东头', 84.884635, 45.614135, NULL, NULL, 'A01A33', 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `xj_emergency`.`xj_aed` (`id`, `name`, `address`, `longitude`, `latitude`, `manage_name`, `manage_phone`, `org_code`, `del_flag`, `create_time`, `create_by`, `update_time`, `update_by`) VALUES ('1968210820029399088', '自动体外除颤仪', '采油工艺研究院监理公司设备设施完整性检验检测中心管柱楼办公楼1楼道内', 84.887966, 45.612744, NULL, NULL, 'A01A33', 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `xj_emergency`.`xj_aed` (`id`, `name`, `address`, `longitude`, `latitude`, `manage_name`, `manage_phone`, `org_code`, `del_flag`, `create_time`, `create_by`, `update_time`, `update_by`) VALUES ('1968210820029399089', '自动体外除颤仪', '采油工艺研究院监理公司节能监测中心勘探院南院6号楼1楼大厅', 84.907686, 45.610239, NULL, NULL, 'A01A33', 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `xj_emergency`.`xj_aed` (`id`, `name`, `address`, `longitude`, `latitude`, `manage_name`, `manage_phone`, `org_code`, `del_flag`, `create_time`, `create_by`, `update_time`, `update_by`) VALUES ('1968210820029399090', '自动体外除颤仪', '采油工艺研究院监理公司体育馆院体育馆大厅内', 84.885468, 45.613301, NULL, NULL, 'A01A33', 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
@@ -0,0 +1,50 @@
INSERT INTO aed_equipment_manger (
id,
name,
longitude,
latitude,
depart_code,
del_flag,
create_by,
create_time,
update_by,
update_time,
charge_first,
charge_first_mobile,
manage_depart_code,
manage_user_name,
manage_user_mobile,
publish_flag
)
SELECT
id,
name,
CAST(longitude AS DECIMAL(10,6)),
CAST(latitude AS DECIMAL(10,6)),
org_code,
del_flag,
create_by,
create_time,
update_by,
update_time,
manage_name,
manage_phone,
org_code,
manage_name,
manage_phone,
1
FROM xj_aed
WHERE del_flag = 0;
INSERT INTO aed_location_equipment (id, equipment_id, address, longitude, latitude)
SELECT
UUID_SHORT(),
aem.id,
xa.address,
CAST(xa.longitude AS DECIMAL(10,6)),
CAST(xa.latitude AS DECIMAL(10,6))
FROM xj_aed xa
JOIN aed_equipment_manger aem
ON xa.id = aem.id
WHERE xa.address IS NOT NULL AND xa.address <> '';
@@ -0,0 +1,3 @@
UPDATE aed_equipment_manger m
JOIN aed_location_equipment l ON m.id = l.equipment_id
SET m.install_address = l.address;
@@ -0,0 +1,6 @@
--修复生日数据
UPDATE sys_user
SET birthday = DATE_FORMAT(SUBSTRING(id_card, 7, 8), '%Y-%m-%d')
WHERE
id_card IS NOT NULL
AND birthday IS NULL;
@@ -0,0 +1,36 @@
/*
Navicat Premium Data Transfer
Source Server : 蚁熊-阿里云
Source Server Type : MySQL
Source Server Version : 80404
Source Host : localhost:3306
Source Schema : health_consult
Target Server Type : MySQL
Target Server Version : 80404
File Encoding : 65001
Date: 10/12/2025 15:53:17
*/
SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;
-- ----------------------------
-- Table structure for im_msg_read_log
-- ----------------------------
DROP TABLE IF EXISTS `im_msg_read_log`;
CREATE TABLE `im_msg_read_log` (
`id` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT 'id',
`group_id` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '群组ID',
`from_account` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '发送者账号',
`to_account` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '接受者账号',
`msg_id` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '消息ID(腾讯IM平台生成的消息ID)',
`read_count` int NOT NULL COMMENT '读取次数(点击次数)',
`read_time` datetime NOT NULL COMMENT '读取时间',
PRIMARY KEY (`id`) USING BTREE,
UNIQUE INDEX `group_id`(`group_id` ASC, `msg_id` ASC) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = Dynamic;
SET FOREIGN_KEY_CHECKS = 1;
@@ -0,0 +1,2 @@
ALTER TABLE `emergency_resource`
ADD COLUMN `geo_collect_type` tinyint NULL DEFAULT 0 COMMENT '位置数据维护方式(0-地图选点,1-手动维护)' AFTER `ay_id`;
+17
View File
@@ -0,0 +1,17 @@
--心率
ALTER TABLE `watch_stat_user_info_day_heart_rate`
ADD COLUMN `new_value` int NULL DEFAULT NULL COMMENT '最新值' AFTER `last_upload_time`,
ADD COLUMN `silence_new_value` int NULL COMMENT '静息心率最新值' AFTER `new_value`;
-- 血氧
ALTER TABLE `watch_stat_user_info_day_spo2`
ADD COLUMN `new_value` decimal(4, 0) NULL COMMENT '最新值' AFTER `last_upload_time`;
-- 压力
ALTER TABLE `watch_stat_user_info_day_stress`
ADD COLUMN `new_value` decimal(4, 0) NULL COMMENT '最新值' AFTER `last_upload_time`;
-- 体温
ALTER TABLE `watch_stat_user_info_day_temp`
ADD COLUMN `new_value` decimal(5, 2) NULL COMMENT '最新值' AFTER `last_upload_time`,
ADD COLUMN `skin_new_value` decimal(5, 2) NULL COMMENT '体表温度最新值' AFTER `new_value`;
@@ -0,0 +1,22 @@
### 心率原始数据修正
update watch_data_heart_rate set silence_value = null where silence_value = 0.00;
### 心率日汇总表数据修正
UPDATE watch_stat_user_info_day_heart_rate stat
LEFT JOIN (
SELECT
bind_user_id,
ifnull( max( silence_value ), 0 ) AS silence_max_value,
ifnull( min( silence_value ), 0 ) AS silence_min_value,
ifnull( avg( silence_value ), 0 ) AS silence_avg_value,
data_date
FROM
watch_data_heart_rate
GROUP BY
bind_user_id,
data_date
) DATA ON stat.user_id = DATA.bind_user_id
SET stat.silence_max_value = DATA.silence_max_value,
stat.silence_min_value = DATA.silence_min_value,
stat.silence_avg_value = DATA.silence_avg_value;
@@ -0,0 +1,6 @@
-- ----------------------------
-- Table structure for health_user_employee_ex
-- ----------------------------
ALTER TABLE `emergency_resource`
ADD COLUMN `manager` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '负责人';
@@ -0,0 +1,7 @@
-- ----------------------------
-- Table structure for health_user_employee_ex
-- ----------------------------
ALTER TABLE `health_user_employee_ex`
ADD COLUMN `lifeguard_name2` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '急救人员2姓名',
ADD COLUMN `lifeguard_phone2` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '急救人员2电话';
@@ -0,0 +1,2 @@
--重置专家排序
update `con_doctor` set sort = 9999;
@@ -0,0 +1,17 @@
-- ----------------------------
-- Table structure for emergency_screen_animation 应急大屏开屏动画表
-- ----------------------------
CREATE TABLE `emergency_screen_animation` (
`id` bigint NOT NULL COMMENT 'ID',
`title` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '标题',
`video_url` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '动画地址',
`description` varchar(1000) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '简介',
`create_by` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '创建人',
`create_time` datetime NULL DEFAULT NULL COMMENT '创建时间',
`update_by` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci 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_general_ci ROW_FORMAT = Dynamic;
SET FOREIGN_KEY_CHECKS = 1;
@@ -0,0 +1,2 @@
ALTER TABLE `emergency_order`
ADD COLUMN `destroy_group` tinyint(1) NULL DEFAULT 0 COMMENT '是否解散群聊(0: 1:)' AFTER `major_user_two_avatar`;
+35
View File
@@ -0,0 +1,35 @@
-- 消息通知表
CREATE TABLE `sys_message_notice` (
`id` varchar(32) NOT NULL COMMENT 'id',
`title` varchar(255) DEFAULT NULL COMMENT '标题',
`content` text COMMENT '内容',
`scope_type` int(2) DEFAULT NULL COMMENT '范围(1-指定部门,2-指定人群,3-既指定部门又指定人群)',
`org_code` varchar(100) DEFAULT NULL COMMENT '创建机构',
`notice_status` int(2) DEFAULT '1' COMMENT '通知状态(0 1)',
`start_time` datetime DEFAULT NULL COMMENT '通知开始时间',
`end_time` datetime DEFAULT NULL COMMENT '通知结束时间',
`del_flag` varchar(1) DEFAULT '0' COMMENT '删除状态(0-正常,1-已删除)',
`create_by` varchar(50) DEFAULT NULL COMMENT '创建人',
`create_time` datetime DEFAULT NULL COMMENT '创建时间',
`update_by` varchar(50) DEFAULT NULL COMMENT '更新人',
`update_time` datetime DEFAULT NULL COMMENT '更新时间',
PRIMARY KEY (`id`),
KEY `idx_org_code` (`org_code`),
KEY `idx_notice_status` (`notice_status`),
KEY `idx_start_time` (`start_time`),
KEY `idx_end_time` (`end_time`),
KEY `idx_del_flag` (`del_flag`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='消息通知表';
-- 消息通知范围表
CREATE TABLE `sys_message_notice_scope` (
`id` varchar(32) NOT NULL COMMENT 'id',
`notice_id` varchar(32) NOT NULL COMMENT '消息id',
`type` int(2) DEFAULT NULL COMMENT '类别(1-指定部门,2-指定人群)',
`scope_id` varchar(100) DEFAULT NULL COMMENT '限制范围标识(:部门Code,人员ID)',
`record` varchar(255) DEFAULT NULL COMMENT '记录值(:部门名称,人员名称)',
PRIMARY KEY (`id`),
KEY `idx_notice_id` (`notice_id`),
KEY `idx_type` (`type`),
KEY `idx_scope_notice` (`scope_id`, `notice_id`) COMMENT '联表查询复合索引支持WHERE scope_id + JOIN notice_id'
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='消息通知范围表';
@@ -609,7 +609,7 @@ CREATE TABLE `con_helper` (
`graduation_time` date NULL DEFAULT NULL COMMENT '毕业时间', `graduation_time` date NULL DEFAULT NULL COMMENT '毕业时间',
`registration_time` datetime NULL DEFAULT NULL COMMENT '注册时间', `registration_time` datetime NULL DEFAULT NULL COMMENT '注册时间',
`address` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '联系地址', `address` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '联系地址',
`helper_id` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '小助手编号', `helper_id` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '全科医生编号',
`flag` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '是否接受咨询1接受咨询2拒绝咨询', `flag` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '是否接受咨询1接受咨询2拒绝咨询',
`work_time` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '参加工作时间', `work_time` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '参加工作时间',
`practicing_experience` varchar(1000) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '执业经历', `practicing_experience` varchar(1000) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '执业经历',
@@ -626,7 +626,7 @@ CREATE TABLE `con_helper` (
`memo` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '备注', `memo` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '备注',
`org_code` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '所属部门', `org_code` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '所属部门',
PRIMARY KEY (`id`) USING BTREE PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_bin COMMENT = '小助手' ROW_FORMAT = Dynamic; ) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_bin COMMENT = '全科医生' ROW_FORMAT = Dynamic;
-- ---------------------------- -- ----------------------------
-- Table structure for con_helper_online -- Table structure for con_helper_online
@@ -0,0 +1,42 @@
-- 修复应急单参与人员子表数据
INSERT INTO emergency_order_operator (id, order_id, operator_type, user_id, join_type, join_date) SELECT
CONCAT(2,LPAD(FLOOR(RAND() * POWER(10, 10)), 10, '0'), LPAD(FLOOR(RAND() * POWER(10, 7)), 7, '0')) AS id,
t.*
FROM
(
SELECT
id AS order_id,
0 AS operator_type,
operation_user_id AS user_id,
0 AS join_type,
operation_response_time AS join_date
FROM
emergency_order
WHERE
operation_user_id IS NOT NULL UNION ALL
SELECT
id AS order_id,
1 AS operator_type,
major_user_id AS user_id,
0 AS join_type,
major_response_time AS join_date
FROM
emergency_order
WHERE
major_user_id IS NOT NULL UNION ALL
SELECT
id AS order_id,
1 AS operator_type,
major_user_two_id AS user_id,
0 AS join_type,
major_response_time AS join_date
FROM
emergency_order
WHERE
major_user_two_id IS NOT NULL
) t
LEFT JOIN emergency_order_operator t1 ON t1.order_id = t.order_id
AND t1.user_id = t.user_id
AND t1.operator_type = t.operator_type
WHERE
t1.id IS NULL;
@@ -0,0 +1,10 @@
-- 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");
@@ -1,9 +1,7 @@
package com.renkang.anyan.client; package com.renkang.anyan.client;
import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.IPage;
import com.renkang.anyan.model.dto.HealthRoomDTO; import com.renkang.anyan.model.dto.*;
import com.renkang.anyan.model.dto.HealthSignListParam;
import com.renkang.anyan.model.dto.MedicalAbnormalDTO;
import com.renkang.anyan.model.vo.*; import com.renkang.anyan.model.vo.*;
import java.util.Date; import java.util.Date;
@@ -96,7 +94,7 @@ public interface AnYanClient {
* @param healthRoomDTO * @param healthRoomDTO
* @return * @return
*/ */
IPage<HealthPlaceHomDetailsVO> healthPlaceHomDetailList(HealthRoomDTO healthRoomDTO); IPage<HealthPlaceHomeDetailsVO> healthPlaceHomDetailList(HealthRoomDTO healthRoomDTO);
/** /**
* 当年体检异常人数统计 * 当年体检异常人数统计
@@ -134,5 +132,82 @@ public interface AnYanClient {
* @param token * @param token
* @return * @return
*/ */
AnYanUserInfoResult getAnYanUserInfo(String token); 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);
} }
@@ -12,10 +12,7 @@ import com.renkang.anyan.config.AnYanProperties;
import com.renkang.anyan.config.RestTemplateUtil; import com.renkang.anyan.config.RestTemplateUtil;
import com.renkang.anyan.constants.AnYanConstants; import com.renkang.anyan.constants.AnYanConstants;
import com.renkang.anyan.enums.AnYanApiEnum; import com.renkang.anyan.enums.AnYanApiEnum;
import com.renkang.anyan.model.dto.AuthParam; import com.renkang.anyan.model.dto.*;
import com.renkang.anyan.model.dto.HealthRoomDTO;
import com.renkang.anyan.model.dto.HealthSignListParam;
import com.renkang.anyan.model.dto.MedicalAbnormalDTO;
import com.renkang.anyan.model.vo.*; import com.renkang.anyan.model.vo.*;
import com.renkang.anyan.utils.PageResultToBeanUtil; import com.renkang.anyan.utils.PageResultToBeanUtil;
import com.renkang.anyan.utils.SM4Utils; import com.renkang.anyan.utils.SM4Utils;
@@ -37,10 +34,7 @@ import org.springframework.util.LinkedMultiValueMap;
import org.springframework.util.MultiValueMap; import org.springframework.util.MultiValueMap;
import org.springframework.web.client.HttpClientErrorException; import org.springframework.web.client.HttpClientErrorException;
import java.util.Date; import java.util.*;
import java.util.List;
import java.util.Objects;
import java.util.UUID;
import java.util.stream.Collectors; import java.util.stream.Collectors;
/** /**
@@ -109,6 +103,9 @@ public class AnYanClientExecutor implements AnYanClient {
ResponseEntity<AuthResult> authResult = RestTemplateUtil.postExchangeForGetTokenByPassword(AnYanApiEnum.QUERY_AUTH_TOKEN, formData, headers, AuthResult.class); ResponseEntity<AuthResult> authResult = RestTemplateUtil.postExchangeForGetTokenByPassword(AnYanApiEnum.QUERY_AUTH_TOKEN, formData, headers, AuthResult.class);
if (HttpStatus.OK.equals(authResult.getStatusCode()) if (HttpStatus.OK.equals(authResult.getStatusCode())
&& ObjectUtils.isNotEmpty(authResult.getBody())) { && 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(); return authResult.getBody();
} else { } else {
log.error("------安眼系统获取token失败(密码模式){}------", authResult.getBody()); log.error("------安眼系统获取token失败(密码模式){}------", authResult.getBody());
@@ -127,6 +124,7 @@ public class AnYanClientExecutor implements AnYanClient {
return null; return null;
} }
/*调用安眼提供的支持公网访问的获取token接口也能通过接口的鉴权, 并且部分接口还需要传入鉴权用户的身份证号, 所以业务接口直接使用公网环境的鉴权接口
@Override @Override
public void refreshToken() { public void refreshToken() {
AuthResult authResult = getAuthTokenExecutor(); AuthResult authResult = getAuthTokenExecutor();
@@ -140,6 +138,24 @@ public class AnYanClientExecutor implements AnYanClient {
HttpHeaders headers = new HttpHeaders(); HttpHeaders headers = new HttpHeaders();
headers.add(AnYanConstants.AUTHORIZATION, AnYanConstants.TOKEN_TYPE + getAuthToken()); headers.add(AnYanConstants.AUTHORIZATION, AnYanConstants.TOKEN_TYPE + getAuthToken());
return headers; 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 @Override
@@ -204,9 +220,9 @@ public class AnYanClientExecutor implements AnYanClient {
@Override @Override
@Retryable(maxAttempts = 2) @Retryable(maxAttempts = 2)
public IPage<HealthPlaceHomDetailsVO> healthPlaceHomDetailList(HealthRoomDTO healthRoomDTO) { public IPage<HealthPlaceHomeDetailsVO> healthPlaceHomDetailList(HealthRoomDTO healthRoomDTO) {
AnYanResult<Object> result = RestTemplateUtil.postExchange(AnYanApiEnum.HEALTH_PLACE_ROOM_INFO_LIST, buildTokenHeader(), healthRoomDTO); AnYanResult<Object> result = RestTemplateUtil.postExchange(AnYanApiEnum.HEALTH_PLACE_ROOM_INFO_LIST, buildTokenHeader(), healthRoomDTO);
return new PageResultToBeanUtil<HealthPlaceHomDetailsVO>().transform(result, HealthPlaceHomDetailsVO.class); return new PageResultToBeanUtil<HealthPlaceHomeDetailsVO>().transform(result, HealthPlaceHomeDetailsVO.class);
} }
@Override @Override
@@ -279,11 +295,103 @@ public class AnYanClientExecutor implements AnYanClient {
* @date 2025/10/24 17:00 * @date 2025/10/24 17:00
*/ */
@Override @Override
public AnYanUserInfoResult getAnYanUserInfo(String token) { @Retryable(maxAttempts = 2)
public AnYanUserInfoResult getAnYanUserInfo(String token, String username) {
HttpHeaders headers = new HttpHeaders(); HttpHeaders headers = new HttpHeaders();
headers.add(AnYanConstants.AUTHORIZATION, AnYanConstants.TOKEN_TYPE + token); 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); 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); 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());
}
} }
@@ -42,6 +42,10 @@ public class AnYanProperties {
*公网环境的鉴权密码 (目前或者大屏调转的toekn使用) *公网环境的鉴权密码 (目前或者大屏调转的toekn使用)
*/ */
private String publicPassWrod = ""; private String publicPassWrod = "";
/**
*鉴权用户的身份证号,部分接口的请求头参数中需要传入
*/
private String publicUserCardNo = "737720666075238400";
/** /**
*链接超时时间 *链接超时时间
*/ */
@@ -1,4 +1,4 @@
package com.renkang.restaurant.config; package com.renkang.anyan.config;
import com.renkang.anyan.client.AnYanClient; import com.renkang.anyan.client.AnYanClient;
import com.renkang.anyan.config.AnYanProperties; import com.renkang.anyan.config.AnYanProperties;
@@ -22,7 +22,6 @@ import java.nio.charset.StandardCharsets;
import java.time.Duration; import java.time.Duration;
import java.time.temporal.ChronoUnit; import java.time.temporal.ChronoUnit;
import java.util.Arrays; import java.util.Arrays;
import java.util.concurrent.atomic.AtomicInteger;
/** /**
* @Description: AnYanClient xj安眼系统接口调用客户端 * @Description: AnYanClient xj安眼系统接口调用客户端
@@ -55,27 +54,22 @@ public class AnYanRestTemplateConfig {
* 自定义拦截器处理接口鉴权失败, 配合spring retry使用从而避免因token失效导致的接口调用失败 * 自定义拦截器处理接口鉴权失败, 配合spring retry使用从而避免因token失效导致的接口调用失败
*/ */
public ClientHttpRequestInterceptor authInterceptor() { public ClientHttpRequestInterceptor authInterceptor() {
// 添加重试次数限制
AtomicInteger retryCount = new AtomicInteger(0);
int maxRetries = 5;
return (httpRequest, bytes, clientHttpRequestExecution) -> { return (httpRequest, bytes, clientHttpRequestExecution) -> {
ClientHttpResponse execute; ClientHttpResponse execute;
try { try {
execute = clientHttpRequestExecution.execute(httpRequest, bytes);
HttpStatus httpStatus = execute.getStatusCode();
if (Arrays.asList(HttpStatus.UNAUTHORIZED, HttpStatus.FORBIDDEN).contains(httpStatus)) {
// 获取请求URL // 获取请求URL
String url = httpRequest.getURI().toString(); String url = httpRequest.getURI().toString();
// 排除特定接口不执行拦截逻辑 // 排除特定接口不执行刷新token逻辑(获取token接口,根据token获取个人信息接口)
boolean shouldSkip = url.contains(AnYanApiEnum.QUERY_AUTH_TOKEN.getMethodPath()); if (!url.contains(AnYanApiEnum.QUERY_AUTH_TOKEN.getMethodPath()) && !url.contains(AnYanApiEnum.USER_INFO_UNIT_V2.getMethodPath())) {
execute = clientHttpRequestExecution.execute(httpRequest, bytes); log.info("---------安眼token过期,触发刷新token机制-------已过期的token{}", httpRequest.getHeaders().getFirst("authorization"));
if (shouldSkip) {
return execute;
}
HttpStatus httpStatus = execute.getStatusCode();
if (Arrays.asList(HttpStatus.UNAUTHORIZED, HttpStatus.FORBIDDEN).contains(httpStatus)
&& retryCount.getAndIncrement() < maxRetries) {
SpringContextUtils.getBean("anYanClientExecutor", AnYanClient.class).refreshToken(); SpringContextUtils.getBean("anYanClientExecutor", AnYanClient.class).refreshToken();
} }
}
} catch (Exception e) { } catch (Exception e) {
log.error("---------安眼平台API调用异常-------e{}", e.getMessage(), e); log.error("---------安眼平台API调用异常-------e{},接口:{}", e.getMessage(), httpRequest.getURI(), e);
ExceptionAssertsUtil.fail("安眼平台API调用失败"); ExceptionAssertsUtil.fail("安眼平台API调用失败");
throw e; throw e;
} }
@@ -63,8 +63,11 @@ public class RestTemplateUtil {
String url = getProperties().getPublicHost() + api.getMethodPath(); String url = getProperties().getPublicHost() + api.getMethodPath();
HttpEntity<MultiValueMap<String, String>> requestEntity = new HttpEntity<>(formData, headers); HttpEntity<MultiValueMap<String, String>> requestEntity = new HttpEntity<>(formData, headers);
log.info("开始发送请求到: {},入参:{}", url, formData); log.info("开始发送请求到: {},入参:{}", url, formData);
long time1 = System.currentTimeMillis();
ResponseEntity<T> response = getRestTemplate().exchange(url, api.getHttpMethod(), requestEntity, responseType); ResponseEntity<T> response = getRestTemplate().exchange(url, api.getHttpMethod(), requestEntity, responseType);
log.info("收到响应: {}", response); log.info("收到响应: {}", response);
long time2 = System.currentTimeMillis();
log.info("获取token(密码模式) 耗时:" + (time2 - time1) + "ms");
return response; return response;
} }
@@ -108,6 +111,12 @@ public class RestTemplateUtil {
return getRestTemplate().exchange(url, api.getHttpMethod(), requestEntity, responseType); 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 * ResponseEntity 转 Result
* *
@@ -118,7 +127,7 @@ public class RestTemplateUtil {
if (HttpStatus.OK.equals(entity.getStatusCode()) && ObjectUtils.isNotEmpty(entity.getBody())) { if (HttpStatus.OK.equals(entity.getStatusCode()) && ObjectUtils.isNotEmpty(entity.getBody())) {
return entity.getBody(); return entity.getBody();
} else { } else {
return AnYanResult.error("天眼系统API调用失败"); return AnYanResult.error("外部平台API调用失败");
} }
} }
@@ -13,12 +13,44 @@ public interface AnYanConstants {
* token传递请求头参数 * token传递请求头参数
*/ */
String AUTHORIZATION = "authorization"; String AUTHORIZATION = "authorization";
/** /**
* token类型 * token类型
*/ */
String TOKEN_TYPE = "bearer "; 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 * 缓存调用安眼系统接口鉴权token缓存key
*/ */
String AN_YAN_API_TOKEN_PREFIX = "exterior:anyan:api:"; 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";
} }
@@ -75,7 +75,56 @@ public enum AnYanApiEnum {
* 13.获取员工信息及单位-V2 * 13.获取员工信息及单位-V2
*/ */
USER_INFO_UNIT_V2("/iosp-iam/v2/users/self", "?containsUnit=true", HttpMethod.GET), 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);
/** /**
* 接口路径 * 接口路径
@@ -0,0 +1,39 @@
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";
}
@@ -0,0 +1,41 @@
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";
}
@@ -0,0 +1,14 @@
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;
}
@@ -0,0 +1,45 @@
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";
}
@@ -0,0 +1,40 @@
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();
}
@@ -0,0 +1,42 @@
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";
}
@@ -64,6 +64,9 @@ public class HealthRoomDTO {
@Schema(title = "每页数量") @Schema(title = "每页数量")
private Integer pageSize; private Integer pageSize;
@Schema(title = "pageType")
private String pageType = "plus";
public HealthRoomDTO() { public HealthRoomDTO() {
Date date = new Date(); Date date = new Date();
this.checkInDateBegin = DateUtil.beginOfYear(date); this.checkInDateBegin = DateUtil.beginOfYear(date);
@@ -46,4 +46,7 @@ public class HealthSignListParam {
*/ */
@Schema(title = "pageSize") @Schema(title = "pageSize")
private Integer pageSize = 10; private Integer pageSize = 10;
@Schema(title = "pageType")
private String pageType = "plus";
} }
@@ -58,6 +58,9 @@ public class MedicalAbnormalDTO {
@Schema(title = "每页数量") @Schema(title = "每页数量")
private Integer pageSize; private Integer pageSize;
@Schema(title = "pageType")
private String pageType = "plus";
public MedicalAbnormalDTO() { public MedicalAbnormalDTO() {
Date date = new Date(); Date date = new Date();
this.checkInDateBegin = DateUtil.beginOfYear(date); this.checkInDateBegin = DateUtil.beginOfYear(date);
@@ -0,0 +1,78 @@
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 "";
}
}
@@ -0,0 +1,31 @@
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;
}
@@ -0,0 +1,22 @@
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;
}
@@ -0,0 +1,66 @@
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;
}
@@ -0,0 +1,70 @@
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;
}
@@ -0,0 +1,41 @@
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;
}
@@ -0,0 +1,23 @@
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;
}
@@ -0,0 +1,141 @@
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;
}
@@ -0,0 +1,48 @@
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;
}
@@ -3,6 +3,10 @@ package com.renkang.anyan.model.vo;
import io.swagger.v3.oas.annotations.media.Schema; import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data; import lombok.Data;
import java.time.LocalDate;
import java.time.Period;
import java.time.format.DateTimeFormatter;
@Data @Data
@Schema(title="重点关爱趋势预警信息",description="重点关爱趋势预警信息") @Schema(title="重点关爱趋势预警信息",description="重点关爱趋势预警信息")
public class CareUserListVo { public class CareUserListVo {
@@ -19,7 +23,10 @@ public class CareUserListVo {
private Integer age; private Integer age;
@Schema(title = "性别") @Schema(title = "性别")
private String sex; private String sexCode;
@Schema(title = "身份证号")
private String idNo;
@Schema(title = "工作单位") @Schema(title = "工作单位")
private String workUnit ; private String workUnit ;
@@ -33,7 +40,7 @@ public class CareUserListVo {
@Schema(title = "修改时间") @Schema(title = "修改时间")
private String updateDate; private String updateDate;
@Schema(title = "关爱状态(0-已完成,1-未完成)") @Schema(title = "数据级别")
private Integer dataLevel; private Integer dataLevel;
@Schema(title = "负面清单") @Schema(title = "负面清单")
@@ -140,4 +147,45 @@ public class CareUserListVo {
@Schema(title = "关爱联络员姓名") @Schema(title = "关爱联络员姓名")
private String careLiaisonName; 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
}
}
} }
@@ -16,5 +16,9 @@ public class CareUserVO {
private String lifeguardName; private String lifeguardName;
@Schema(title = "急救人员电话") @Schema(title = "急救人员电话")
private String lifeguardPhone; private String lifeguardPhone;
//20251223 改为两个急救人员 ,为改动最小化 没有改数据结构
@Schema(title = "急救人员2姓名")
private String lifeguardName2;
@Schema(title = "急救人员2电话")
private String lifeguardPhone2;
} }
@@ -0,0 +1,99 @@
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;
}
@@ -0,0 +1,32 @@
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;
}
@@ -2,21 +2,44 @@ package com.renkang.anyan.model.vo;
import io.swagger.v3.oas.annotations.media.Schema; import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data; import lombok.Data;
import org.jeecg.common.aspect.annotation.Dict;
@Data @Data
@Schema(title="健康小屋数据详情列表", description="健康小屋数据详情列表") @Schema(title="健康小屋数据详情列表", description="健康小屋数据详情列表")
public class HealthPlaceHomDetailsVO { public class HealthPlaceHomeDetailsVO {
/**
* id
*/
@Schema(title = "id")
private String id;
/**
* 单位id
*/
@Schema(title = "单位id")
private String departId;
/** /**
* 单位 * 单位
*/ */
@Schema(title = "单位") @Schema(title = "单位")
private String departName; private String departName;
/**
* 健康小屋id
*/
@Schema(title = "健康小屋id")
private String roomId;
@Schema(title = "健康小屋名称")
private String roomName;
@Schema(title = "地址")
private String address;
/** /**
* 姓名 * 姓名
*/ */
@Schema(title = "姓名") @Schema(title = "姓名")
private String name; private String name;
/**
* 身份证号
*/
@Schema(title = "身份证号")
private String idCard;
/** /**
* 检查日期 * 检查日期
*/ */
@@ -24,10 +47,12 @@ public class HealthPlaceHomDetailsVO {
private String checkInDate; private String checkInDate;
/** /**
* 检查类型 11:BMI/21:收缩压/22:舒张压/31:血糖/41:低密度脂蛋白/42:总胆固醇/43:甘油三酯/51:尿酸/61:同型半胱氨酸 等等缺失的可以继续加 * 检查类型 11:BMI/21:收缩压/22:舒张压/31:血糖/41:低密度脂蛋白/42:总胆固醇/43:甘油三酯/51:尿酸/61:同型半胱氨酸 等等缺失的可以继续加
* 字典废弃 新接口返回了name
*/ */
@Schema(title = "检查类型 11:BMI/21:收缩压/22:舒张压/31:血糖/41:低密度脂蛋白/42:总胆固醇/43:甘油三酯/51:尿酸/61:同型半胱氨酸 等等,缺失的可以继续加") @Schema(title = "检查类型")
@Dict(dicCode = "xj_check_type")
private String checkType; private String checkType;
@Schema(title = "检查类型名称")
private String checkTypeName;
/** /**
* 去年体检值 前一年的体检值初始值 * 去年体检值 前一年的体检值初始值
*/ */
@@ -53,4 +78,6 @@ public class HealthPlaceHomDetailsVO {
*/ */
@Schema(title = "是否成功空降,1:是/0.否") @Schema(title = "是否成功空降,1:是/0.否")
private String successFlag; private String successFlag;
@Schema(title = "员工统一编号")
private String employeeNum;
} }
@@ -47,4 +47,16 @@ public class HealthRoomBaseVO {
*/ */
@Schema(title = "运转时间(分钟)") @Schema(title = "运转时间(分钟)")
private Integer runTime; private Integer runTime;
/**
* 管理人员
*/
@Schema(title = "管理人员")
private String manager;
/**
* 联系电话
*/
@Schema(title = "联系电话")
private String phone;
} }
@@ -26,6 +26,11 @@ public class HospitalListVO {
*/ */
@Schema(title = "地点") @Schema(title = "地点")
private String address; private String address;
/**
* 电话
*/
@Schema(title = "电话")
private String phone;
/** /**
* 经度 * 经度
*/ */
+61
View File
@@ -0,0 +1,61 @@
<?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>
@@ -0,0 +1,16 @@
package com.renkang.bank.constant;
/**
* @author feng
* @date 2026-02-05
*/
public interface HealthBankConstants {
/**
* 积分变化-增加积分
*/
Integer CHANGE_TYPE_ADD = 1;
/**
*积分变化-扣减积分
*/
Integer CHANGE_TYPE_DEDUCT = 2;
}
@@ -0,0 +1,44 @@
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;
}
}
@@ -0,0 +1,25 @@
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;
}
@@ -0,0 +1,40 @@
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;
}
@@ -0,0 +1,42 @@
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;
}
@@ -0,0 +1,45 @@
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;
}
@@ -0,0 +1,74 @@
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;
}
@@ -0,0 +1,58 @@
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;
}
@@ -0,0 +1,56 @@
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;
}
@@ -0,0 +1,57 @@
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;
}
@@ -0,0 +1,38 @@
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;
}
@@ -0,0 +1,96 @@
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;
}
@@ -0,0 +1,102 @@
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;
}
@@ -0,0 +1,80 @@
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;
}
@@ -0,0 +1,58 @@
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;
}
@@ -0,0 +1,44 @@
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;
}
}
@@ -0,0 +1,48 @@
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;
}
@@ -0,0 +1,56 @@
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;
}
@@ -0,0 +1,42 @@
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;
}
}
@@ -0,0 +1,42 @@
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;
}
@@ -0,0 +1,53 @@
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;
}
@@ -0,0 +1,39 @@
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
@@ -0,0 +1,65 @@
<?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>
@@ -0,0 +1,97 @@
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, "积分规则");
}
}
@@ -0,0 +1,124 @@
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));
}
}
@@ -0,0 +1,16 @@
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);
}
@@ -0,0 +1,19 @@
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);
}
@@ -0,0 +1,14 @@
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> {
}
@@ -0,0 +1,39 @@
<?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 -- 单次
IF(COUNT(b.id) > 0, 1, 0)
WHEN a.frequency = 2 THEN -- 日/次
IF(COUNT(CASE WHEN DATE(b.create_time) = CURDATE() THEN 1 END) > 0, 1, 0)
WHEN a.frequency = 3 THEN -- 周/次
IF(COUNT(CASE WHEN YEARWEEK(b.create_time, 1) = YEARWEEK(CURDATE(), 1) THEN 1 END) > 0, 1, 0)
WHEN a.frequency = 4 THEN -- 月/次
IF(COUNT(CASE WHEN DATE_FORMAT(b.create_time, '%Y-%m') = DATE_FORMAT(CURDATE(), '%Y-%m') THEN 1 END) > 0, 1, 0)
WHEN a.frequency = 5 THEN -- 季度/次
IF(COUNT(CASE WHEN QUARTER(b.create_time) = QUARTER(CURDATE()) AND YEAR(b.create_time) = YEAR(CURDATE()) THEN 1
END) > 0, 1, 0)
WHEN a.frequency = 6 THEN -- 年/次
IF(COUNT(CASE WHEN YEAR(b.create_time) = YEAR(CURDATE()) THEN 1 END) > 0, 1, 0)
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>
@@ -0,0 +1,82 @@
<?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>
@@ -0,0 +1,90 @@
package com.renkang.bank.redis.config;
import com.renkang.bank.redis.listener.BankAsyncListener;
import lombok.extern.slf4j.Slf4j;
import org.jeecg.common.system.vo.SysUserModel;
import org.jeecg.enums.ServerEnum;
import org.jeecg.redis.RedisStreamKeyEnum;
import org.jeecg.util.IPUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.task.TaskExecutor;
import org.springframework.data.redis.connection.RedisConnectionFactory;
import org.springframework.data.redis.connection.stream.Consumer;
import org.springframework.data.redis.connection.stream.ObjectRecord;
import org.springframework.data.redis.connection.stream.ReadOffset;
import org.springframework.data.redis.connection.stream.StreamOffset;
import org.springframework.data.redis.hash.Jackson2HashMapper;
import org.springframework.data.redis.serializer.GenericJackson2JsonRedisSerializer;
import org.springframework.data.redis.serializer.StringRedisSerializer;
import org.springframework.data.redis.stream.StreamMessageListenerContainer;
/**
* @author Shunzhi Jiang
* @since 2023/6/13
*/
@Configuration
@Slf4j
public class BankRedisStreamConfig {
private final Consumer consumer = Consumer.from(ServerEnum.BANK.getCustomGroup(), IPUtil.getCurrentServiceIp());
private final ReadOffset readOffset = ReadOffset.lastConsumed();
private BankAsyncListener bankAsyncListener;
@Autowired
public void setDepartAsyncListener(BankAsyncListener bankAsyncListener) {
this.bankAsyncListener = bankAsyncListener;
}
@Bean
public StreamMessageListenerContainer.StreamMessageListenerContainerOptions<String, ObjectRecord<String, SysUserModel>> sysUserModelInterveneStreamOptions(
@Qualifier("asyncTaskExecutor") TaskExecutor taskExecutor,
StringRedisSerializer stringSerializer,
GenericJackson2JsonRedisSerializer jsonSerializer
) {
return StreamMessageListenerContainer.StreamMessageListenerContainerOptions
.builder()
// 一次最多获取多少条消息
.batchSize(10)
// 运行 Stream 的 poll task
.executor(taskExecutor)
// 可以理解为 Stream Key 的序列化方式
.keySerializer(stringSerializer)
// 可以理解为 Stream 后方的字段的 key 的序列化方式
.hashKeySerializer(stringSerializer)
// 可以理解为 Stream 后方的字段的 value 的序列化方式
.hashValueSerializer(jsonSerializer)
// ObjectRecord 时,将 对象的 filed 和 value 转换成一个 Map 比如:将Book对象转换成map
.objectMapper(new Jackson2HashMapper(true))
// 将发送到Stream中的Record转换成ObjectRecord,转换成具体的类型是这个地方指定的类型
.targetType(SysUserModel.class)
.build();
}
@Bean(initMethod = "start", destroyMethod = "stop")
public StreamMessageListenerContainer<String, ObjectRecord<String, SysUserModel>> sysUserModelInterveneStreamMessageListenerContainer(
RedisConnectionFactory redisConnectionFactory,
StreamMessageListenerContainer.StreamMessageListenerContainerOptions<String, ObjectRecord<String, SysUserModel>> options
) {
StreamMessageListenerContainer<String, ObjectRecord<String, SysUserModel>> container =
StreamMessageListenerContainer.create(redisConnectionFactory, options);
// 修改用户
container.receive(
consumer,
createStreamOffset(RedisStreamKeyEnum.CHANGE_USER_DEPART),
bankAsyncListener
);
log.info("redisStream配置完成");
return container;
}
private StreamOffset<String> createStreamOffset(RedisStreamKeyEnum streamKeyEnum) {
return StreamOffset.create(streamKeyEnum.getKey(), readOffset);
}
}
@@ -0,0 +1,63 @@
package com.renkang.bank.redis.listener;
import cn.hutool.core.util.StrUtil;
import com.alibaba.fastjson.JSON;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.renkang.bank.mapper.UserPointsMapper;
import com.renkang.bank.model.po.UserPoints;
import lombok.extern.slf4j.Slf4j;
import org.jeecg.common.system.vo.SysUserModel;
import org.jeecg.enums.ServerEnum;
import org.jeecg.redis.RedisStreamKeyEnum;
import org.jeecg.redis.RedisStreamUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.connection.stream.ObjectRecord;
import org.springframework.data.redis.connection.stream.RecordId;
import org.springframework.data.redis.stream.StreamListener;
import org.springframework.stereotype.Component;
/**
* @author Shunzhi Jiang
* @since 2023/6/13
*/
@Component
@Slf4j
public class BankAsyncListener implements StreamListener<String, ObjectRecord<String, SysUserModel>> {
@Autowired
private RedisStreamUtil redisStreamUtil;
@Autowired
private UserPointsMapper userPointsMapper;
@Override
public void onMessage(ObjectRecord<String, SysUserModel> message) {
String streamKey = message.getStream();
SysUserModel model = message.getValue();
log.info("收到Redis Stream Key{}", streamKey);
RecordId recordId = message.getId();
log.info("ID{}, DATA: {}", recordId, JSON.toJSONString(model));
try {
if (RedisStreamKeyEnum.CHANGE_USER_DEPART.getKey().equals(streamKey)) {
if (StrUtil.isBlank(model.getId()) || StrUtil.isBlank(model.getOrgCode())) {
return;
}
// 修改用户积分主表单位信息
updateUserPointsInfo(model);
}
ack(message);
log.info("Redis Stream消费成功:Key: {}, ID: {}", streamKey, recordId);
} catch (Exception e) {
log.error("Redis Stream消费异常:Key: {}, ID: {}", streamKey, recordId, e);
}
}
private void updateUserPointsInfo(SysUserModel model) {
userPointsMapper.update(new LambdaUpdateWrapper<UserPoints>()
.eq(UserPoints::getUserId, model.getId())
.set(UserPoints::getOrgCode, model.getOrgCode())
);
}
private void ack(ObjectRecord<String, SysUserModel> message) {
redisStreamUtil.ack(ServerEnum.BANK.getCustomGroup(), message);
}
}
@@ -0,0 +1,23 @@
package com.renkang.bank.service;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;
import com.renkang.bank.model.dto.PointsRulePageDTO;
import com.renkang.bank.model.po.PointsRule;
public interface IPointsRuleService extends IService<PointsRule> {
IPage<PointsRule> pageList(PointsRulePageDTO dto);
int add(PointsRule pointsRule);
int edit(PointsRule pointsRule);
PointsRule byId(String id);
int delete(String id);
int editStatus(Long id, Integer status);
int deleteBatch(String ids);
}
@@ -0,0 +1,42 @@
package com.renkang.bank.service;
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 java.util.List;
public interface IUserPointsService {
boolean testUpdateUserPoints(UpdUserPointsDTO dto);
IPage<UserPointsListVO> pageList(UserPointsPageDTO dto);
void exportUserPoints(UserPointsPageDTO dto);
IPage<UserPointsDetailsVO> detailPageList(UserPointsPageDTO dto);
void exportPointsDetail(UserPointsPageDTO dto);
boolean deductPoint(UpdUserPointsDTO dto);
IPage<UserPointsMonitorVO> clockInMonitor(UserPointsPageDTO dto);
void exportClockInMonitor(UserPointsPageDTO dto);
IPage<UserPointRankingVO> userRanking(UserPointsRankingDTO dto);
void exportUserRanking(UserPointsRankingDTO dto);
UserPointsInfoVO myPoints();
List<UserPointsTaskVO> pointsTaskList();
boolean pointCheckIn(UpdUserPointsDTO dto);
IPage<UserPointRecordVO> pointRecord(UserPointsPageDTO dto);
IPage<UserPointRankingVO> pointRanking(UserPointsRankingDTO dto);
}
@@ -0,0 +1,80 @@
package com.renkang.bank.service.impl;
import cn.hutool.core.util.ObjectUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.renkang.bank.mapper.PointsRuleMapper;
import com.renkang.bank.model.dto.PointsRulePageDTO;
import com.renkang.bank.model.po.PointsRule;
import com.renkang.bank.service.IPointsRuleService;
import lombok.RequiredArgsConstructor;
import org.apache.commons.lang.StringUtils;
import org.jeecg.global.GlobalUtils;
import org.springframework.stereotype.Service;
import java.util.Arrays;
import java.util.Date;
/**
* @author pj
* @version 1.0
* @description: 积分规则
* @date 2026/2/5 18:01
*/
@Service
@RequiredArgsConstructor
public class PointsRuleServiceImpl extends ServiceImpl<PointsRuleMapper, PointsRule> implements IPointsRuleService {
@Override
public IPage<PointsRule> pageList(PointsRulePageDTO dto) {
Page<PointsRule> page = new Page<>(dto.getPageNo(), dto.getPageSize());
LambdaQueryWrapper<PointsRule> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.like(StringUtils.isNotBlank(dto.getRuleDesc()), PointsRule::getRuleDesc, dto.getRuleDesc());
queryWrapper.eq(ObjectUtil.isNotNull(dto.getRuleCategory()), PointsRule::getRuleDesc, dto.getRuleCategory());
queryWrapper.eq(ObjectUtil.isNotNull(dto.getStatus()), PointsRule::getRuleDesc, dto.getStatus());
queryWrapper.orderByDesc(PointsRule::getCreateTime);
return baseMapper.selectPage(page, queryWrapper);
}
@Override
public int add(PointsRule pointsRule) {
String userId = GlobalUtils.getLoginUser().getId();
Date date = new Date();
pointsRule.setCreateUser(userId);
pointsRule.setLastModifyDate(date);
pointsRule.setCreateTime(date);
return baseMapper.insert(pointsRule);
}
@Override
public int edit(PointsRule pointsRule) {
pointsRule.setLastModifyDate(new Date());
return baseMapper.updateById(pointsRule);
}
@Override
public PointsRule byId(String id) {
return baseMapper.selectById(id);
}
@Override
public int delete(String id) {
return baseMapper.deleteById(id);
}
@Override
public int editStatus(Long id, Integer status) {
return baseMapper.update(new LambdaUpdateWrapper<PointsRule>()
.eq(PointsRule::getId, id)
.set(PointsRule::getStatus, status)
);
}
@Override
public int deleteBatch(String ids) {
return baseMapper.deleteBatchIds(Arrays.asList(ids.split(",")));
}
}
@@ -0,0 +1,688 @@
package com.renkang.bank.service.impl;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.date.DateTime;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.text.CharSequenceUtil;
import cn.hutool.core.util.ObjectUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.github.yulichang.wrapper.MPJLambdaWrapper;
import com.renkang.bank.constant.HealthBankConstants;
import com.renkang.bank.enums.PointsSourceEnum;
import com.renkang.bank.mapper.PointsRuleMapper;
import com.renkang.bank.mapper.UserPointsDetailsMapper;
import com.renkang.bank.mapper.UserPointsMapper;
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.po.PointsRule;
import com.renkang.bank.model.po.UserPoints;
import com.renkang.bank.model.po.UserPointsDetails;
import com.renkang.bank.model.vo.*;
import com.renkang.bank.service.IUserPointsService;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.jeecg.common.exception.ExceptionAssertsUtil;
import org.jeecg.common.export.GenericExportHandler;
import org.jeecg.common.system.api.ISysBaseAPI;
import org.jeecg.common.system.vo.LoginUser;
import org.jeecg.enums.ExportExcelEnum;
import org.jeecg.global.GlobalUtils;
import org.jeecg.modules.manager.ISysCache;
import org.jeecg.modules.system.entity.SysDepart;
import org.jeecg.modules.system.entity.SysUser;
import org.springframework.core.task.AsyncTaskExecutor;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.math.BigDecimal;
import java.util.Date;
import java.util.List;
import java.util.stream.Collectors;
/**
* @author pj
* @version 1.0
* @description: 用户积分
* @date 2026/2/5 16:49
*/
@Slf4j
@Service
@RequiredArgsConstructor
public class UserPointsServiceImpl extends ServiceImpl<UserPointsMapper, UserPoints> implements IUserPointsService {
private final PointsRuleMapper pointsRuleMapper;
private final UserPointsDetailsMapper userPointsDetailsMapper;
private final ISysBaseAPI iSysBaseAPI;
private final ISysCache sysCache;
@Override
public IPage<UserPointsListVO> pageList(UserPointsPageDTO dto) {
Page<UserPointsListVO> page = new Page<>(dto.getPageNo(), dto.getPageSize());
MPJLambdaWrapper<UserPoints> queryWrapper = new MPJLambdaWrapper<>();
if (StringUtils.isNotBlank(dto.getRealName()) || StringUtils.isNotBlank(dto.getWorkNo())) {
//根据姓名和工号查询用户
List<String> userIdList = iSysBaseAPI.getUserIdsByDepartAndUsername(null, dto.getRealName(), null, dto.getWorkNo());
queryWrapper.in(!userIdList.isEmpty(), UserPoints::getUserId, userIdList);
}
// 动态排序
if (StringUtils.isNotBlank(dto.getColumn())) {
// 驼峰转下划线
String column = CharSequenceUtil.toUnderlineCase(dto.getColumn());
if ("asc".equalsIgnoreCase(dto.getOrder())) {
queryWrapper.orderByAsc(column);
} else {
queryWrapper.orderByDesc(column);
}
} else {
// 默认排序
queryWrapper.orderByDesc(UserPoints::getLastAddDate);
}
if (StringUtils.isNotBlank(dto.getOrgCode())) {
queryWrapper.likeRight(UserPoints::getOrgCode, dto.getOrgCode());
}
if (StringUtils.isNotBlank(dto.getDeptCode())) {
queryWrapper.likeRight(UserPoints::getOrgCode, dto.getDeptCode());
}
Page<UserPointsListVO> voPage = baseMapper.selectJoinPage(page, UserPointsListVO.class, queryWrapper);
List<String> userIds = voPage.getRecords().stream().map(UserPoints::getUserId).collect(Collectors.toList());
if (!userIds.isEmpty()) {
List<LoginUser> loginUsers = iSysBaseAPI.listUserByIdsNew(userIds);
voPage.getRecords().forEach(vo -> {
LoginUser loginUser = loginUsers.stream().filter(user -> user.getId().equals(vo.getUserId())).findFirst().orElse(null);
if (loginUser != null) {
vo.setRealName(loginUser.getRealname());
vo.setWorkNo(loginUser.getWorkNo());
vo.setSexName(ObjectUtil.isNotNull(loginUser.getSex()) && loginUser.getSex().equals(1) ? "" : "");
vo.setAge(ObjectUtil.isNotNull(loginUser.getAge()) && loginUser.getAge() > 0 ? loginUser.getAge() : null);
SysDepart secondDepart = sysCache.getDepartByOrgCode(GlobalUtils.getSecondDepartOrgCode(vo.getOrgCode()));
if (ObjectUtil.isNotEmpty(secondDepart)) {
vo.setDeptName(secondDepart.getDepartName());
}
SysDepart thirdDepart = sysCache.getDepartByOrgCode(GlobalUtils.getThirdDepartOrgCode(vo.getOrgCode()));
if (ObjectUtil.isNotEmpty(thirdDepart)) {
vo.setOrgName(thirdDepart.getDepartName());
}
}
});
}
return voPage;
}
@Resource
private AsyncTaskExecutor asyncTaskExecutor;
/**
* @description: 导出数据(设备数据)
* @author PengJ
* @date 2025/11/18 14:57
*/
@Override
public void exportUserPoints(UserPointsPageDTO dto) {
GenericExportHandler<UserPointsListVO, UserPointsPageDTO> handler =
new GenericExportHandler<>(
UserPointsListVO.class,
ExportExcelEnum.BANK_USER_POINTS,
asyncTaskExecutor,
log,
filter -> {
filter.setPageNo(1);
filter.setPageSize(-1);
List<UserPointsListVO> records = pageList(filter).getRecords();
return GenericExportHandler.handleData(records, UserPointsListVO.class);
}
);
handler.exportAsync(dto);
}
@Override
public IPage<UserPointsDetailsVO> detailPageList(UserPointsPageDTO dto) {
if (StringUtils.isBlank(dto.getUserId())) {
ExceptionAssertsUtil.fail("用户id不能为空");
}
if (ObjectUtil.isNull(dto.getChangeType())) {
ExceptionAssertsUtil.fail("收支类型不能为空");
}
Page<UserPointsDetailsVO> page = new Page<>(dto.getPageNo(), dto.getPageSize());
MPJLambdaWrapper<UserPointsDetails> queryWrapper = new MPJLambdaWrapper<>();
queryWrapper.select(UserPointsDetails::getId, UserPointsDetails::getBusinessInfo,
UserPointsDetails::getPoints, UserPointsDetails::getCreateTime, UserPointsDetails::getChangeType,
UserPointsDetails::getRemark, UserPointsDetails::getBusinessId, UserPointsDetails::getUserId);
queryWrapper.select(PointsRule::getFrequency);
queryWrapper.leftJoin(PointsRule.class, PointsRule::getId, UserPointsDetails::getBusinessId);
queryWrapper.eq(UserPointsDetails::getUserId, dto.getUserId());
queryWrapper.eq(UserPointsDetails::getChangeType, dto.getChangeType());
queryWrapper.orderByDesc(UserPointsDetails::getCreateTime);
Page<UserPointsDetailsVO> voPage = userPointsDetailsMapper.selectJoinPage(page, UserPointsDetailsVO.class, queryWrapper);
if (dto.getChangeType().equals(HealthBankConstants.CHANGE_TYPE_DEDUCT)) {
voPage.getRecords().forEach(vo -> {
vo.setPoints(vo.getPoints().multiply(new BigDecimal(-1)));
});
}
return voPage;
}
@Override
public void exportPointsDetail(UserPointsPageDTO dto) {
if (StringUtils.isBlank(dto.getUserId())) {
ExceptionAssertsUtil.fail("用户id不能为空");
}
if (ObjectUtil.isNull(dto.getChangeType())) {
ExceptionAssertsUtil.fail("收支类型不能为空");
}
if (dto.getChangeType().equals(HealthBankConstants.CHANGE_TYPE_ADD)) {
GenericExportHandler<UserPointsDetailsVO, UserPointsPageDTO> handler =
new GenericExportHandler<>(
UserPointsDetailsVO.class,
ExportExcelEnum.BANK_POINTS_DETAIL,
asyncTaskExecutor,
log,
filter -> {
filter.setPageNo(1);
filter.setPageSize(-1);
List<UserPointsDetailsVO> records = detailPageList(filter).getRecords();
return GenericExportHandler.handleData(records, UserPointsDetailsVO.class);
}
);
handler.exportAsync(dto);
} else if (dto.getChangeType().equals(HealthBankConstants.CHANGE_TYPE_DEDUCT)) {
GenericExportHandler<UserPointsDeductDetailsVO, UserPointsPageDTO> handler =
new GenericExportHandler<>(
UserPointsDeductDetailsVO.class,
ExportExcelEnum.BANK_POINTS_DETAIL,
asyncTaskExecutor,
log,
filter -> {
filter.setPageNo(1);
filter.setPageSize(-1);
List<UserPointsDetailsVO> records = detailPageList(filter).getRecords();
List<UserPointsDeductDetailsVO> voList = BeanUtil.copyToList(records, UserPointsDeductDetailsVO.class);
return GenericExportHandler.handleData(voList, UserPointsDeductDetailsVO.class);
}
);
handler.exportAsync(dto);
}
}
@Override
public boolean deductPoint(UpdUserPointsDTO dto) {
dto.setSourceType(PointsSourceEnum.TYPE_2_VIOLATION.getSource());
LoginUser loginUser = GlobalUtils.getLoginUser();
return updateUserPoints(dto, loginUser);
}
@Override
public IPage<UserPointsMonitorVO> clockInMonitor(UserPointsPageDTO dto) {
Page<UserPointsMonitorVO> page = new Page<>(dto.getPageNo(), dto.getPageSize());
MPJLambdaWrapper<UserPointsDetails> queryWrapper = new MPJLambdaWrapper<>();
queryWrapper.selectAll(UserPointsDetails.class);
queryWrapper.select(PointsRule::getFrequency);
queryWrapper.eq(UserPointsDetails::getSource, PointsSourceEnum.TYPE_1_SURVEY.getSource());
if (StringUtils.isNotBlank(dto.getRealName()) || StringUtils.isNotBlank(dto.getWorkNo())) {
//根据姓名和工号查询用户
List<String> userIdList = iSysBaseAPI.getUserIdsByDepartAndUsername(null, dto.getRealName(), null, dto.getWorkNo());
queryWrapper.in(!userIdList.isEmpty(), UserPoints::getUserId, userIdList);
}
queryWrapper.orderByDesc(UserPointsDetails::getCreateTime);
if (StringUtils.isNotBlank(dto.getOrgCode())) {
queryWrapper.likeRight(UserPoints::getOrgCode, dto.getOrgCode());
}
if (StringUtils.isNotBlank(dto.getDeptCode())) {
queryWrapper.likeRight(UserPoints::getOrgCode, dto.getDeptCode());
}
queryWrapper.leftJoin(PointsRule.class, PointsRule::getId, UserPointsDetails::getBusinessId);
queryWrapper.orderByDesc(UserPointsDetails::getCreateTime);
Page<UserPointsMonitorVO> voPage = userPointsDetailsMapper.selectJoinPage(page, UserPointsMonitorVO.class, queryWrapper);
List<String> userIds = voPage.getRecords().stream().map(UserPointsMonitorVO::getUserId).collect(Collectors.toList());
if (!userIds.isEmpty()) {
List<LoginUser> loginUsers = iSysBaseAPI.listUserByIdsNew(userIds);
voPage.getRecords().forEach(vo -> {
LoginUser loginUser = loginUsers.stream().filter(user -> user.getId().equals(vo.getUserId())).findFirst().orElse(null);
if (loginUser != null) {
vo.setRealName(loginUser.getRealname());
vo.setWorkNo(loginUser.getWorkNo());
vo.setSexName(ObjectUtil.isNotNull(loginUser.getSex()) && loginUser.getSex().equals(1) ? "" : "");
vo.setAge(ObjectUtil.isNotNull(loginUser.getAge()) && loginUser.getAge() > 0 ? loginUser.getAge() : null);
SysDepart secondDepart = sysCache.getDepartByOrgCode(GlobalUtils.getSecondDepartOrgCode(loginUser.getOrgCode()));
if (ObjectUtil.isNotEmpty(secondDepart)) {
vo.setDeptName(secondDepart.getDepartName());
}
SysDepart thirdDepart = sysCache.getDepartByOrgCode(GlobalUtils.getThirdDepartOrgCode(loginUser.getOrgCode()));
if (ObjectUtil.isNotEmpty(thirdDepart)) {
vo.setOrgName(thirdDepart.getDepartName());
}
}
});
}
return voPage;
}
@Override
public void exportClockInMonitor(UserPointsPageDTO dto) {
GenericExportHandler<UserPointsMonitorVO, UserPointsPageDTO> handler =
new GenericExportHandler<>(
UserPointsMonitorVO.class,
ExportExcelEnum.BANK_CLOCK_IN_RECORD,
asyncTaskExecutor,
log,
filter -> {
filter.setPageNo(1);
filter.setPageSize(-1);
List<UserPointsMonitorVO> records = clockInMonitor(filter).getRecords();
return GenericExportHandler.handleData(records, UserPointsMonitorVO.class);
}
);
handler.exportAsync(dto);
}
@Override
public IPage<UserPointRankingVO> userRanking(UserPointsRankingDTO dto) {
Page<UserPointRankingVO> page = new Page<>(dto.getPageNo(), dto.getPageSize());
Date startTime = null;
Date endTime = null;
Date now = new Date();
if (StringUtils.isNotBlank(dto.getRankType())) {
if ("0".equals(dto.getRankType())) {
// 获取当天的开始时间
startTime = DateUtil.beginOfDay(now);
// 获取当天的结束时间
endTime = DateUtil.endOfDay(now);
} else if ("1".equals(dto.getRankType())) {
// 获取本周的开始时间(周一)
startTime = DateUtil.beginOfWeek(now, true);
// 获取本周的结束时间(周日)
endTime = DateUtil.endOfWeek(now, true);
} else if ("2".equals(dto.getRankType())) {
// 获取本月的开始时间
startTime = DateUtil.beginOfMonth(now);
// 获取本月的结束时间
endTime = DateUtil.endOfMonth(now);
} else if ("3".equals(dto.getRankType())) {
// 获取本季度的开始时间
startTime = DateUtil.beginOfQuarter(now);
// 获取本季度的结束时间
endTime = DateUtil.endOfQuarter(now);
} else if ("4".equals(dto.getRankType())) {
// 获取本年度的开始时间
startTime = DateUtil.beginOfYear(now);
// 获取本年度的结束时间
endTime = DateUtil.endOfYear(now);
} else if ("5".equals(dto.getRankType())) {
// 获取指定时间的开始时间
startTime = DateUtil.beginOfDay(dto.getStartTime());
// 获取指定时间的结束时间
endTime = DateUtil.endOfDay(dto.getEndTime());
}
}
if (StringUtils.isNotBlank(dto.getRealName()) || StringUtils.isNotBlank(dto.getWorkNo())) {
List<String> sysUserIds = iSysBaseAPI.getUserIdsByDepartAndUsername(
StringUtils.isNotBlank(dto.getDeptCode()) ? dto.getDeptCode() : dto.getOrgCode(),
dto.getRealName(),
null,
dto.getWorkNo()
);
if (!sysUserIds.isEmpty()) {
dto.setUserIds(sysUserIds);
}
}
IPage<UserPointRankingVO> voiPage = userPointsDetailsMapper.userRanking(page, startTime, endTime, dto);
List<String> userIds = voiPage.getRecords().stream().map(UserPointRankingVO::getUserId).collect(Collectors.toList());
List<LoginUser> loginUsers = iSysBaseAPI.listUserByIdsNew(userIds);
voiPage.getRecords().forEach(vo -> {
loginUsers.forEach(loginUser -> {
if (vo.getUserId().equals(loginUser.getId())) {
vo.setRealName(loginUser.getRealname());
vo.setAvatar(loginUser.getAvatar());
vo.setSex(loginUser.getSex());
vo.setSexName(ObjectUtil.isNotNull(loginUser.getSex()) && loginUser.getSex().equals(1) ? "" : "");
vo.setWorkNo(loginUser.getWorkNo());
vo.setAge(ObjectUtil.isNotNull(loginUser.getAge()) && loginUser.getAge() > 0 ? loginUser.getAge() : null);
SysDepart secondDepart = sysCache.getDepartByOrgCode(GlobalUtils.getSecondDepartOrgCode(loginUser.getOrgCode()));
if (ObjectUtil.isNotEmpty(secondDepart)) {
vo.setDeptName(secondDepart.getDepartName());
}
SysDepart thirdDepart = sysCache.getDepartByOrgCode(GlobalUtils.getThirdDepartOrgCode(loginUser.getOrgCode()));
if (ObjectUtil.isNotEmpty(thirdDepart)) {
vo.setOrgName(thirdDepart.getDepartName());
}
}
});
});
return voiPage;
}
@Override
public void exportUserRanking(UserPointsRankingDTO dto) {
GenericExportHandler<UserPointRankingVO, UserPointsRankingDTO> handler =
new GenericExportHandler<>(
UserPointRankingVO.class,
ExportExcelEnum.BANK_USER_RANKING,
asyncTaskExecutor,
log,
filter -> {
filter.setPageNo(1);
filter.setPageSize(-1);
List<UserPointRankingVO> records = userRanking(filter).getRecords();
return GenericExportHandler.handleData(records, UserPointRankingVO.class);
}
);
handler.exportAsync(dto);
}
@Override
public boolean testUpdateUserPoints(UpdUserPointsDTO dto) {
List<String> sysUserIds = iSysBaseAPI.findSysUserIds(new SysUser());
List<LoginUser> loginUsers = iSysBaseAPI.listUserByIdsNew(sysUserIds);
loginUsers.forEach(user -> {
try {
updateUserPoints(dto, user);
} catch (Exception e) {
log.error("用户:{}({})更新积分异常,入参:{}", user.getRealname(), user.getUsername(), dto, e);
}
});
return true;
}
/**
* 更新用户积分
*
* @param dto
* @return
*/
public boolean updateUserPoints(UpdUserPointsDTO dto, LoginUser loginUser) {
log.info("------用户:{}({})开始更新积分,入参:{}------", loginUser.getRealname(), loginUser.getUsername(), dto);
PointsSourceEnum sourceEnum = PointsSourceEnum.getBySource(dto.getSourceType());
if (sourceEnum == null) {
log.error("积分类型不存在");
ExceptionAssertsUtil.fail("积分类型不存在");
}
String userId;
if (dto.getSourceType().equals(PointsSourceEnum.TYPE_2_VIOLATION.getSource())) {
if (StringUtils.isBlank(dto.getUserId())) {
log.error("扣减用户id不能为空");
ExceptionAssertsUtil.fail("扣减用户id不能为空");
}
//违规扣除
userId = dto.getUserId();
} else {
userId = loginUser.getId();
}
UserPoints userPoints = baseMapper.selectOne(new LambdaQueryWrapper<UserPoints>()
.eq(UserPoints::getUserId, userId)
);
boolean isAdd = false;
Date date = new Date();
UserPointsDetails userPointsDetails = new UserPointsDetails();
if (userPoints == null) {
isAdd = true;
userPoints = new UserPoints();
userPoints.setUserId(userId);
userPoints.setOrgCode(loginUser.getOrgCode());
userPoints.setCreateTime(date);
userPointsDetails.setBeforePoints(new BigDecimal(0));
} else {
userPointsDetails.setBeforePoints(userPoints.getPoints());
}
userPointsDetails.setUserId(userId);
switch (sourceEnum) {
case TYPE_1_SURVEY:
// 积分打卡
PointsRule pointsRule = pointsRuleMapper.selectById(dto.getBusinessId());
if (pointsRule == null) {
log.error("积分规则不存在");
ExceptionAssertsUtil.fail("积分规则不存在");
}
checkUserPoints(pointsRule, userId);
userPointsDetails.setPoints(pointsRule.getPoints());
userPointsDetails.setChangeType(HealthBankConstants.CHANGE_TYPE_ADD);
userPointsDetails.setSource(sourceEnum.getSource());
userPointsDetails.setBusinessId(dto.getBusinessId());
userPointsDetails.setBusinessInfo(pointsRule.getRuleDesc());
userPointsDetails.setOperatorId(userId);
if (StringUtils.isNotBlank(dto.getRemark())) {
userPointsDetails.setRemark(dto.getRemark());
}
if (isAdd) {
userPoints.setPoints(pointsRule.getPoints());
userPoints.setAddPointsSum(userPoints.getPoints());
userPoints.setDeductPointsSum(BigDecimal.valueOf(0));
userPoints.setLatestAddDaySum(userPoints.getPoints());
userPoints.setLatestDeductDaySum(BigDecimal.valueOf(0));
userPoints.setLastAddDate(date);
} else {
userPoints.setPoints(userPoints.getPoints().add(pointsRule.getPoints()));
userPoints.setAddPointsSum(userPoints.getAddPointsSum().add(pointsRule.getPoints()));
List<UserPointsDetails> details = userPointsDetailsMapper.selectList(new LambdaQueryWrapper<UserPointsDetails>()
.eq(UserPointsDetails::getUserId, userId)
.eq(UserPointsDetails::getChangeType, HealthBankConstants.CHANGE_TYPE_ADD)
.apply("DATE_FORMAT(create_time, '%Y-%m-%d') = {0}", DateUtil.today())
);
double sum = details.stream().map(UserPointsDetails::getPoints).mapToDouble(BigDecimal::doubleValue).sum();
userPoints.setLatestAddDaySum(BigDecimal.valueOf(sum).add(pointsRule.getPoints()));
}
break;
case TYPE_2_USE:
// 礼品兑换
userPoints.setLastDeductDate(date);
break;
case TYPE_2_VIOLATION:
// 违规扣除
if (isAdd) {
ExceptionAssertsUtil.fail("用户积分不存在");
}
userPoints.setDeductPointsSum(userPoints.getDeductPointsSum().add(dto.getPoints()));
BigDecimal subtract = userPoints.getPoints().subtract(dto.getPoints());
userPoints.setPoints(subtract.compareTo(BigDecimal.valueOf(0)) < 0 ? BigDecimal.valueOf(0) : subtract);
userPointsDetails.setPoints(dto.getPoints());
userPointsDetails.setRemark(dto.getRemark());
userPointsDetails.setSource(sourceEnum.getSource());
userPointsDetails.setChangeType(HealthBankConstants.CHANGE_TYPE_DEDUCT);
userPointsDetails.setOperatorId(GlobalUtils.getLoginUser().getId());
break;
case TYPE_2_EXPIRED:
// 过期清除
break;
default:
break;
}
userPointsDetails.setCreateTime(date);
userPointsDetails.setAfterPoints(userPoints.getPoints());
userPoints.setLastVaryDate(date);
boolean b = this.saveOrUpdate(userPoints);
if (b) {
b = userPointsDetailsMapper.insert(userPointsDetails) > 0;
}
log.info("======用户:{}({})更新积分结果:{}======", loginUser.getRealname(), loginUser.getUsername(), b);
return b;
}
/**
* 检查用户积分
*
* @param pointsRule 积分规则
* @param userId 用户ID
*/
public void checkUserPoints(PointsRule pointsRule, String userId) {
LambdaQueryWrapper<UserPointsDetails> wrapper = new LambdaQueryWrapper<>();
wrapper.eq(UserPointsDetails::getUserId, userId);
wrapper.eq(UserPointsDetails::getBusinessId, pointsRule.getId());
Long c;
Date date = new Date();
switch (pointsRule.getFrequency()) {
// 单次:检查用户是否已经获得过该积分
case 1:
break;
// 日/次:检查用户当天是否已经获得过该积分
case 2:
DateTime startOfDay = DateUtil.beginOfDay(date);
DateTime endOfDay = DateUtil.endOfDay(date);
wrapper.between(UserPointsDetails::getCreateTime, startOfDay, endOfDay);
c = userPointsDetailsMapper.selectCount(wrapper);
if (c > 0) {
ExceptionAssertsUtil.fail("今日已获得该积分");
}
break;
// 周/次:检查用户本周是否已经获得过该积分
case 3:
DateTime startOfWeek = DateUtil.beginOfWeek(date);
DateTime endOfWeek = DateUtil.endOfWeek(date);
wrapper.between(UserPointsDetails::getCreateTime, startOfWeek, endOfWeek);
c = userPointsDetailsMapper.selectCount(wrapper);
if (c > 0) {
ExceptionAssertsUtil.fail("本周已获得该积分");
}
break;
// 月/次:检查用户本月是否已经获得过该积分
case 4:
DateTime startOfMonth = DateUtil.beginOfMonth(date);
DateTime endOfMonth = DateUtil.endOfMonth(date);
wrapper.between(UserPointsDetails::getCreateTime, startOfMonth, endOfMonth);
c = userPointsDetailsMapper.selectCount(wrapper);
if (c > 0) {
ExceptionAssertsUtil.fail("本月已获得该积分");
}
break;
// 季度/次:检查用户本季度是否已经获得过该积分
case 5:
DateTime startOfQuarter = DateUtil.beginOfQuarter(date);
DateTime endOfQuarter = DateUtil.endOfQuarter(date);
wrapper.between(UserPointsDetails::getCreateTime, startOfQuarter, endOfQuarter);
c = userPointsDetailsMapper.selectCount(wrapper);
if (c > 0) {
ExceptionAssertsUtil.fail("本季度已获得该积分");
}
break;
// 年/次:检查用户本年度是否已经获得过该积分
case 6:
DateTime startOfYear = DateUtil.beginOfYear(date);
DateTime endOfYear = DateUtil.endOfYear(date);
wrapper.between(UserPointsDetails::getCreateTime, startOfYear, endOfYear);
c = userPointsDetailsMapper.selectCount(wrapper);
if (c > 0) {
ExceptionAssertsUtil.fail("本年已获得该积分");
}
break;
default:
// 未知规则类型,默认不处理
break;
}
}
/**
* app我的积分
*
* @return 积分信息
*/
@Override
public UserPointsInfoVO myPoints() {
String userId = GlobalUtils.getLoginUser().getId();
UserPoints userPoints = baseMapper.selectOne(new LambdaQueryWrapper<UserPoints>()
.eq(UserPoints::getUserId, userId)
);
UserPointsInfoVO vo = new UserPointsInfoVO();
if (userPoints != null) {
vo.setPoints(userPoints.getPoints());
vo.setAddPointsSum(userPoints.getAddPointsSum());
vo.setExchangePointsSum(userPoints.getExchangePointsSum());
}
return vo;
}
/**
* app积分任务
*
* @return 列表
*/
@Override
public List<UserPointsTaskVO> pointsTaskList() {
String userId = GlobalUtils.getLoginUser().getId();
return pointsRuleMapper.pointsTaskList(userId);
}
/**
* app积分打卡
*
* @param dto 参数
* @return 结果
*/
@Override
public boolean pointCheckIn(UpdUserPointsDTO dto) {
dto.setSourceType(PointsSourceEnum.TYPE_1_SURVEY.getSource());
LoginUser loginUser = GlobalUtils.getLoginUser();
return updateUserPoints(dto, loginUser);
}
/**
* app积分明细
*
* @param dto 参数
* @return 结果
*/
@Override
public IPage<UserPointRecordVO> pointRecord(UserPointsPageDTO dto) {
if (ObjectUtil.isNull(dto.getChangeType())) {
ExceptionAssertsUtil.fail("收支类型不能为空");
}
String userId = GlobalUtils.getLoginUser().getId();
Page<UserPointRecordVO> page = new Page<>(dto.getPageNo(), dto.getPageSize());
MPJLambdaWrapper<UserPointsDetails> wrapper = new MPJLambdaWrapper<>();
wrapper.eq(UserPointsDetails::getUserId, userId);
wrapper.eq(UserPointsDetails::getChangeType, dto.getChangeType());
wrapper.orderByDesc(UserPointsDetails::getCreateTime);
return userPointsDetailsMapper.selectJoinPage(page, UserPointRecordVO.class, wrapper);
}
/**
* app积分榜单
*
* @param dto 参数
* @return 结果
*/
@Override
public IPage<UserPointRankingVO> pointRanking(UserPointsRankingDTO dto) {
String orgCode = GlobalUtils.getLoginUser().getOrgCode();
String secondOrgCode = GlobalUtils.getSecondDepartOrgCode(orgCode);
Page<UserPointRankingVO> page = new Page<>(dto.getPageNo(), dto.getPageSize());
Date startTime = null;
Date endTime = null;
Date now = new Date();
if (StringUtils.isNotBlank(dto.getRankType())) {
if ("1".equals(dto.getRankType())) {
// 获取本周的开始时间(周一)
startTime = DateUtil.beginOfWeek(now, true);
// 获取本周的结束时间(周日)
endTime = DateUtil.endOfWeek(now, true);
} else if ("2".equals(dto.getRankType())) {
// 获取本月的开始时间
startTime = DateUtil.beginOfMonth(now);
// 获取本月的结束时间
endTime = DateUtil.endOfMonth(now);
}
}
IPage<UserPointRankingVO> voiPage = userPointsDetailsMapper.pointRanking(page, startTime, endTime, secondOrgCode);
List<String> userIds = voiPage.getRecords().stream().map(UserPointRankingVO::getUserId).collect(Collectors.toList());
List<LoginUser> loginUsers = iSysBaseAPI.listUserByIdsNew(userIds);
voiPage.getRecords().forEach(vo -> {
loginUsers.forEach(loginUser -> {
if (vo.getUserId().equals(loginUser.getId())) {
vo.setRealName(loginUser.getRealname());
vo.setAvatar(loginUser.getAvatar());
vo.setSex(loginUser.getSex());
SysDepart secondDepart = sysCache.getDepartByOrgCode(GlobalUtils.getSecondDepartOrgCode(loginUser.getOrgCode()));
if (ObjectUtil.isNotEmpty(secondDepart)) {
vo.setDeptName(secondDepart.getDepartName());
}
SysDepart thirdDepart = sysCache.getDepartByOrgCode(GlobalUtils.getThirdDepartOrgCode(loginUser.getOrgCode()));
if (ObjectUtil.isNotEmpty(thirdDepart)) {
vo.setOrgName(thirdDepart.getDepartName());
}
}
});
});
return voiPage;
}
}
+77
View File
@@ -0,0 +1,77 @@
<?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-start</artifactId>
<dependencies>
<!--微服务启动 starter-->
<dependency>
<groupId>org.jeecgframework.boot</groupId>
<artifactId>jeecg-boot-starter-cloud</artifactId>
</dependency>
<dependency>
<groupId>com.renkang</groupId>
<artifactId>health-bank-biz</artifactId>
</dependency>
</dependencies>
<build>
<!-- 打包名称 -->
<finalName>${project.artifactId}</finalName>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-deploy-plugin</artifactId>
<configuration>
<skip>true</skip>
</configuration>
</plugin>
</plugins>
</build>
<profiles>
<profile>
<id>default</id>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</profile>
<profile>
<id>divide-package</id>
<activation>
<activeByDefault>false</activeByDefault>
</activation>
<properties>
<start-class>org.jeecg.JeecgHealthBankApplication</start-class>
</properties>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
</plugin>
</plugins>
</build>
</profile>
</profiles>
</project>

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