56 Commits
Author SHA1 Message Date
wanghao 8ee7c1f9d1 新疆新需求 2025-10-31 15:14:20 +08:00
wanghao 36c67c6c2a 新疆新需求 2025-10-31 10:53:57 +08:00
wanghao 15cbd2f085 新疆新需求 2025-10-31 10:35:54 +08:00
pengjie a18166d6a8 【登录】安眼统一认证 2025-10-30 15:14:59 +08:00
pengjie 0810aa1370 【登录】安眼统一认证 2025-10-30 13:34:26 +08:00
pengjie 137b4efa38 【登录】安眼统一认证 2025-10-30 10:57:18 +08:00
pengjie 051905a6f2 【登录】安眼统一认证 2025-10-30 10:14:51 +08:00
lianlonggang 4356433ee0 健康咨询大屏接口 2025-10-28 10:47:23 +08:00
lianlonggang e9774bc270 健康咨询大屏接口 2025-10-28 10:47:04 +08:00
feng 9f7882497b 应急工单新建表 2025-10-24 16:34:39 +08:00
feng 2a67051beb 修改跳转至安眼大屏鉴权参数 2025-10-14 13:38:15 +08:00
feng c808470275 去掉拿接口的缓存逻辑 2025-09-29 10:18:14 +08:00
feng 2b6e5d2736 安眼大屏公网访问获取token接口对接 2025-09-28 17:25:07 +08:00
lianlonggang 19e46db6a1 健康咨询大屏接口 2025-09-26 18:06:15 +08:00
feng b678b33734 咨询大屏医院过滤删除状态 2025-09-26 17:28:57 +08:00
feng 6d498f3b74 应急支持第二个专业人员加入的四方通话 2025-09-26 15:51:34 +08:00
wanghao f2503fdd52 修正移动端应急地图数据 2025-09-26 13:07:58 +08:00
wanghao eba9ee928f 修正今日应急的单位部门数据 2025-09-25 17:32:24 +08:00
wanghao 9d68bcd2ff 修正今日应急的应急数据 2025-09-25 16:27:43 +08:00
wanghao ff6e83f1c8 0919新需求开发 2025-09-25 13:58:00 +08:00
lianlonggang 273d1377b9 健康咨询大屏接口 2025-09-25 11:33:30 +08:00
lianlonggang 106863d986 健康咨询大屏接口 2025-09-25 11:21:40 +08:00
lianlonggang 688abc5703 健康咨询大屏接口 2025-09-24 17:40:11 +08:00
wanghao e9fada7bbd 新需求开发 2025-09-19 16:26:25 +08:00
wanghao 853eefb48c 新需求开发 2025-09-17 15:33:44 +08:00
wanghao 34c4e9accc 新需求开发 2025-09-17 15:16:37 +08:00
wanghao 8f73f46fcf 新需求开发 2025-09-17 14:37:07 +08:00
wanghao cd6b8e49e5 新需求开发 2025-09-17 14:30:53 +08:00
feng 3e4f5ebe3e 新加员工扩展信息 2025-09-17 14:16:18 +08:00
feng 2a7dde25ea 关爱人员预警 2025-09-17 10:42:25 +08:00
wanghao 59ade8db2b 修复大屏体检异常统计bug 2025-08-20 13:33:06 +08:00
stan a035d3f47e update:应急小组数量修改 2025-08-15 14:07:15 +08:00
wanghao 4e4cce85e8 配置安眼定时任务 2025-08-13 13:26:31 +08:00
wanghao 3a45a45f99 小屋数据迁移sql 2025-08-13 13:19:18 +08:00
wanghao 747c881b74 大屏改动 2025-08-13 11:20:53 +08:00
wanghao 23c53a782c 大屏改动 2025-08-13 10:34:55 +08:00
feng b327524823 Merge branch 'develop' of https://gitea.rk-health.com/renkang/xj-platform into develop 2025-08-08 11:05:39 +08:00
feng 63ce497551 同步油田医院数据 2025-08-08 11:05:36 +08:00
wanghao 49dd2287ad 大屏处理冲突 2025-08-08 10:41:01 +08:00
feng eeeaf9166b 替换部分vo的引用 2025-08-08 10:35:48 +08:00
feng 64b6c78b92 新增变量 2025-08-08 10:01:47 +08:00
feng a68409917e 冲突合并 2025-08-08 09:46:33 +08:00
feng 17a693f768 安眼接口对接 2025-08-08 09:45:42 +08:00
wanghao 2b2b070979 大屏修改 2025-08-08 09:34:18 +08:00
feng afa6942d77 安眼平台接口对接 2025-08-06 17:10:30 +08:00
lianlonggang e4d815ae54 应急数据调整 2025-08-03 23:16:24 +08:00
lianlonggang 476b3a00d5 应急数据调整 2025-08-03 23:10:38 +08:00
lianlonggang 7ea6dd3411 应急数据调整 2025-08-03 23:02:36 +08:00
wanghao dce89d699a 去除只接受新疆工号限制 2025-08-01 17:11:10 +08:00
wanghao 84e9334a20 修改qimo推送只接受新疆工号 2025-08-01 13:30:42 +08:00
wanghao 73aeba99b3 修改新疆大屏 2025-07-28 18:03:04 +08:00
wanghao 6372acdf2d 修改大屏异常信息经纬度 2025-07-28 17:09:03 +08:00
wanghao 180734119a 修改大屏异常信息经纬度 2025-07-28 17:04:03 +08:00
wanghao 6139c70e97 修改首页压力不显示bug 2025-07-28 15:22:41 +08:00
wanghao b182e6e59e 大屏假数据修改开发 2025-07-28 15:03:14 +08:00
wanghao 76cba3c817 大屏假数据修改开发 2025-07-25 17:18:25 +08:00
127 changed files with 7661 additions and 1138 deletions
@@ -0,0 +1,2 @@
ALTER TABLE `emergency_schedules_new_item`
ADD COLUMN `sort` tinyint NULL DEFAULT 0 COMMENT '排序' AFTER `user_name`;
@@ -0,0 +1,6 @@
INSERT INTO emergency_resource
(id,`name`, address, longitude, latitude, type, `status`, del_flag, create_by, create_time, update_by, update_time, memo)
SELECT
id,`name`, org_name, longitude, latitude, 3 as type, `status`, del_flag, create_by, create_time, update_by, update_time, memo
FROM
`emergency_health_room`;
+18
View File
@@ -0,0 +1,18 @@
-------------------------
------------ xj_emergency
-------------------------
CREATE TABLE `large_screen_data`
(
`id` varchar(60) CHARACTER SET utf8mb4 COLLATE utf8mb4_persian_ci NOT NULL COMMENT '主键',
`type` varchar(60) COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '开关类型(参考entity)',
`center_id` varchar(255) COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '应急中心id',
`status` char(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '0' COMMENT '开启状态(0:未开启 1:开启)',
`name` varchar(255) COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '名称(体检机构才有值)',
`value` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '0' COMMENT '值',
`create_time` datetime DEFAULT NULL COMMENT '创建时间',
`create_by` varchar(30) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL COMMENT '创建人',
`update_time` datetime DEFAULT NULL COMMENT '更新时间',
`update_by` varchar(30) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL COMMENT '更新人',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
+263
View File
@@ -0,0 +1,263 @@
ALTER TABLE `emergency_resource`
ADD COLUMN `job_num` int NULL DEFAULT NULL COMMENT '在岗人数' AFTER `memo`,
ADD COLUMN `run_time` int NULL DEFAULT NULL COMMENT '运转时间(分钟)' AFTER `job_num`;
-- 创建aed表
CREATE TABLE `xj_aed`
(
`id` varchar(60) CHARACTER SET utf8mb4 COLLATE utf8mb4_persian_ci NOT NULL COMMENT '主键',
`name` varchar(255) COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT 'aed名称',
`address` varchar(255) COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '设置地点',
`longitude` decimal(10, 6) DEFAULT NULL COMMENT '经度(火星坐标系)',
`latitude` decimal(10, 6) DEFAULT NULL COMMENT '纬度(火星坐标系)',
`manage_name` varchar(255) COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '管理员姓名',
`manage_phone` varchar(255) COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '管理员电话',
`org_code` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT 'orgCode',
`del_flag` tinyint(1) NOT NULL DEFAULT '0' COMMENT '删除状态(0-正常,1-已删除)',
`create_time` datetime DEFAULT NULL COMMENT '创建时间',
`create_by` varchar(30) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL COMMENT '创建人',
`update_time` datetime DEFAULT NULL COMMENT '更新时间',
`update_by` varchar(30) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL COMMENT '更新人',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
-- 写入aed表数据 -- 数据来源于excel表 各二级单位坐标位置更正统计9.15(2) 经纬度已通过度分秒转换为84坐标系又通过GPS84ToGCJ02方法转换为火星坐标系
INSERT INTO `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, NULL, 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `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, NULL, 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `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, NULL, 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `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, NULL, 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `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, NULL, 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `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, NULL, 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `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, NULL, 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `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, NULL, 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `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, NULL, 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `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, NULL, 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `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, NULL, 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `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, NULL, 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `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, NULL, 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `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, NULL, 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `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, NULL, 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `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, NULL, 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `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, NULL, 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `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, NULL, 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `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, NULL, 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `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, NULL, 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `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, NULL, 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `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, NULL, 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `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, NULL, 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `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, NULL, 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `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, NULL, 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `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, NULL, 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `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, NULL, 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `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, NULL, 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `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, NULL, 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `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, NULL, 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `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, NULL, 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `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, NULL, 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `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, NULL, 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `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, NULL, 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `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, NULL, 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `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, NULL, 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `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, NULL, 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `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, NULL, 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `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, NULL, 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `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, NULL, 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `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, NULL, 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `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, NULL, 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `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, NULL, 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `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, NULL, 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `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, NULL, 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `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, NULL, 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `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, NULL, 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `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, NULL, 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `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, NULL, 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `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, NULL, 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `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, NULL, 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `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, NULL, 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `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, NULL, 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `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, NULL, 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `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, NULL, 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `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, NULL, 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `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, NULL, 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `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, NULL, 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `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, NULL, 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `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, NULL, 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `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, NULL, 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `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, NULL, 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `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, NULL, 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `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, NULL, 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `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, NULL, 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `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, NULL, 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `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, NULL, 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `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, NULL, 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `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, NULL, 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `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, NULL, 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `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, NULL, 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `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, NULL, 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `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, NULL, 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `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, NULL, 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `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, NULL, 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `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, NULL, 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `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', '自动体外除颤仪', '电力公司机关机关楼一楼大厅', NULL, NULL, NULL, NULL, NULL, 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `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', '自动体外除颤仪', '电力公司发电机关楼一楼大厅', NULL, NULL, NULL, NULL, NULL, 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `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, NULL, 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `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, NULL, 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `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, NULL, 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `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, NULL, 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `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, NULL, 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `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, NULL, 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `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, NULL, 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `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, NULL, 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `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, NULL, 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `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, NULL, 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `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, NULL, 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `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楼健康小屋', NULL, NULL, NULL, NULL, NULL, 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `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楼健康小屋', NULL, NULL, NULL, NULL, NULL, 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `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, NULL, 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `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, NULL, 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `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, NULL, 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `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, NULL, 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `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, NULL, 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `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, NULL, 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `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, NULL, 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `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生活点会议室', NULL, NULL, NULL, NULL, NULL, 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `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, NULL, 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `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, NULL, 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `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', '自动体外除颤仪', '准东采油厂工程技术服务公司工程技术服务公司沙南驻地走廊西侧', NULL, NULL, NULL, NULL, NULL, 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `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, NULL, 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `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, NULL, 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `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, NULL, 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `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, NULL, 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `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, NULL, 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `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, NULL, 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `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', '自动体外除颤仪', '重油开发公司采油作业二区采油二区大班房', NULL, NULL, NULL, NULL, NULL, 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `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', '自动体外除颤仪', '重油开发公司采油作业三区采油三区大班房', NULL, NULL, NULL, NULL, NULL, 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `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, NULL, 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `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, NULL, 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `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', '自动体外除颤仪', '重油开发公司采油作业六区五区南班组基地', NULL, NULL, NULL, NULL, NULL, 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `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, NULL, 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `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, NULL, 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `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, NULL, 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `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, NULL, 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `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, NULL, 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `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, NULL, 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `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, NULL, 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `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, NULL, 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `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', '自动体外除颤仪', '应急抢险救援中心酸压作业分公司酸压作业分公司机关楼二楼', NULL, NULL, NULL, NULL, NULL, 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `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', '自动体外除颤仪', '应急抢险救援中心零散气作业分公司零散气作业分公司机关楼二楼', NULL, NULL, NULL, NULL, NULL, 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `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, NULL, 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `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, NULL, 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `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, NULL, 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `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, NULL, 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `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, NULL, 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `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, NULL, 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `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', '自动体外除颤仪', '应急抢险救援中心特车分公司特车分公司机关楼', NULL, NULL, NULL, NULL, NULL, 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `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, NULL, 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `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, NULL, 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `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, NULL, 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `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, NULL, 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `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, NULL, 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `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, NULL, 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `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, NULL, 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `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, NULL, 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `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, NULL, 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `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_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_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_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_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, NULL, 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `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, NULL, 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `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, NULL, 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `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, NULL, 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `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, NULL, 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `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, NULL, 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `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, NULL, 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `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, NULL, 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `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, NULL, 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `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, NULL, 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `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, NULL, 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `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, NULL, 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `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, NULL, 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `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, NULL, 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `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, NULL, 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `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, NULL, 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `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, NULL, 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `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, NULL, 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `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, NULL, 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `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, NULL, 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `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, NULL, 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `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, NULL, 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `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, NULL, 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `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, NULL, 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `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, NULL, 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `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, NULL, 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `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, NULL, 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `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, NULL, 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `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, NULL, 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `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, NULL, 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `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, NULL, 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `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, NULL, 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `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, NULL, 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `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, NULL, 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `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, NULL, 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `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, NULL, 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `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, NULL, 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `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, NULL, 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `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, NULL, 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `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, NULL, 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `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, NULL, 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `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, NULL, 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `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, NULL, 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `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, NULL, 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `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, NULL, 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `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, NULL, 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `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, NULL, 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `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, NULL, 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `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, NULL, 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `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, NULL, 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `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, NULL, 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `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, NULL, 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `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, NULL, 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `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, NULL, 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `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, NULL, 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `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, NULL, 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `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, NULL, 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `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, NULL, 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `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, NULL, 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `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, NULL, 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `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, NULL, 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `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, NULL, 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `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, NULL, 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `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, NULL, 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `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, NULL, 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `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, NULL, 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `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, NULL, 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `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, NULL, 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `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, NULL, 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `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, NULL, 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `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, NULL, 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `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, NULL, 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `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, NULL, 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `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, NULL, 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `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, NULL, 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `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, NULL, 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `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, NULL, 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `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, NULL, 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `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, NULL, 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `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, NULL, 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `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, NULL, 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `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, NULL, 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `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, NULL, 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `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, NULL, 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `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, NULL, 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `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, NULL, 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `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, NULL, 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `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, NULL, 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `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, NULL, 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `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, NULL, 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `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, NULL, 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `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, NULL, 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `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, NULL, 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `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, NULL, 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
INSERT INTO `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, NULL, 0, '2025-09-17 15:10:02', 'admin', NULL, NULL);
@@ -0,0 +1,10 @@
-- ----------------------------
-- Table structure for health_user_employee_ex
-- ----------------------------
ALTER TABLE `health_user_employee_ex`
ADD COLUMN `care_liaison_name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '关爱联络员姓名',
ADD COLUMN `care_liaison_job` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '关爱联络员职务',
ADD COLUMN `care_liaison_phone` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '关爱联络员电话',
ADD COLUMN `lifeguard_name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '急救人员姓名',
ADD COLUMN `lifeguard_phone` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '急救人员电话';
@@ -0,0 +1,10 @@
-- ----------------------------
-- Table structure for emergency_order
-- ----------------------------
ALTER TABLE `emergency_order`
ADD COLUMN `major_user_two_id` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '第二位参与的专业人员id',
ADD COLUMN `major_user_two_name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '第二位参与的专业人员姓名',
ADD COLUMN `major_user_two_sex` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '第二位参与的专业人员性别',
ADD COLUMN `major_user_two_mobile` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '第二位参与的专业人员电话',
ADD COLUMN `major_user_two_avatar` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '第二位参与的专业人头像';
@@ -0,0 +1,14 @@
-- ----------------------------
-- Table structure for emergency_order_operator
-- ----------------------------
CREATE TABLE `emergency_order_operator` (
`id` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL COMMENT 'id',
`order_id` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL COMMENT '应急工单ID',
`operator_type` int(11) NOT NULL COMMENT '人员类型(人员类型0:操作人员 1:专业人员)',
`user_id` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL COMMENT '人员ID',
`join_type` int(11) NOT NULL COMMENT '参与类型(0:处理应急,1:协助应急)',
`join_date` datetime NOT NULL COMMENT '参与应急时间',
PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_bin ROW_FORMAT = Dynamic;
SET FOREIGN_KEY_CHECKS = 1;
+1
View File
@@ -20,6 +20,7 @@
<module>font-resources</module> <module>font-resources</module>
<module>monitoring-sync</module> <module>monitoring-sync</module>
<module>renkang-test</module> <module>renkang-test</module>
<module>xj-anyan-api</module>
</modules> </modules>
<properties> <properties>
+46
View File
@@ -0,0 +1,46 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://maven.apache.org/POM/4.0.0"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>com.renkang</groupId>
<artifactId>functional-modules</artifactId>
<version>2.0.0</version>
</parent>
<artifactId>xj-anyan-api</artifactId>
<description>xj安眼系统API</description>
<version>2.0.0</version>
<properties>
<maven.compiler.source>8</maven.compiler.source>
<maven.compiler.target>8</maven.compiler.target>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot</artifactId>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-configuration-processor</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.retry</groupId>
<artifactId>spring-retry</artifactId>
</dependency>
<dependency>
<groupId>org.jeecgframework.boot</groupId>
<artifactId>jeecg-boot-base-core</artifactId>
<scope>provided</scope>
</dependency>
</dependencies>
</project>
@@ -0,0 +1,138 @@
package com.renkang.anyan.client;
import com.baomidou.mybatisplus.core.metadata.IPage;
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 java.util.Date;
import java.util.List;
/**
* @Description: AnYanClient xj安眼系统接口调用客户端
* @Author: feng
* @Date: 2025-8-1
* @Version: V1.0
*/
public interface AnYanClient {
/**
* 获取服务访问令牌
*
* @return
*/
String getAuthToken();
/**
* 获取服务访问令牌(密码模式)
*
* @return
*/
AuthResult getAuthTokenByPassword(String username, String password);
/**
* 刷新口令
*/
void refreshToken();
/**
* 体检医院人数统计查询
*
* @param medicalYear 体检年份
* @return
*/
List<MedicalPeopleNumStatisticsVO> examinationStatistics(Integer medicalYear);
/**
* 健康打卡数据统计查询(血压,减重,血糖)
*
* @param beginDate
* @param endDate
* @return
*/
HealthSignStatVO healthCheckStatistics(Date beginDate, Date endDate);
/**
* 健康打卡异常数据详细查询(血压)
*
* @param healthSignListParam
* @return
*/
IPage<BloodPressureList> bloodPressureList(HealthSignListParam healthSignListParam);
/**
* 健康打卡异常数据详细查询(减重)
*
* @param healthSignListParam
* @return
*/
IPage<WeightPressureList> weightPressureList(HealthSignListParam healthSignListParam);
/**
* 健康打卡异常数据详细查询(血糖)
*
* @param healthSignListParam
* @return
*/
IPage<BloodSugarClockSList> bloodSugarClockSList(HealthSignListParam healthSignListParam);
/**
* 油田医院数据查询
*
* @return
*/
List<HospitalListVO> hospitalList();
/**
* 健康小屋基础数据查询
*
* @return
*/
List<HealthRoomBaseVO> healthPlaceHomList();
/**
* 健康小屋详细数据查询
*
* @param healthRoomDTO
* @return
*/
IPage<HealthPlaceHomDetailsVO> healthPlaceHomDetailList(HealthRoomDTO healthRoomDTO);
/**
* 当年体检异常人数统计
*
* @param medicalYear 年份
* @return
*/
MedicalAbnormalStatisticsVO medicalAbnormalStatistics(Integer medicalYear);
/**
* 当年体检异常人员列表
*
* @param param
* @return
*/
IPage<MedicalAbnormalVO> medicalAbnormalList(MedicalAbnormalDTO param);
/**
* 公网环境获取服务访问token (目前仅用于访问安眼大屏)
*
* @return
*/
String publicNetworkToken();
/**
* 公网环境获取服务访问token (目前仅用于访问安眼大屏, 不走缓存, 每次用现取)
*
* @return
*/
AuthResult publicNetworkTokenNoCache();
/**
* 获取用户信息
*
* @param token
* @return
*/
AnYanUserInfoResult getAnYanUserInfo(String token);
}
@@ -0,0 +1,289 @@
package com.renkang.anyan.client;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.StrUtil;
import cn.hutool.json.JSONUtil;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.renkang.anyan.config.AnYanProperties;
import com.renkang.anyan.config.RestTemplateUtil;
import com.renkang.anyan.constants.AnYanConstants;
import com.renkang.anyan.enums.AnYanApiEnum;
import com.renkang.anyan.model.dto.AuthParam;
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.utils.PageResultToBeanUtil;
import com.renkang.anyan.utils.SM4Utils;
import com.renkang.anyan.utils.StringUtils;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.ObjectUtils;
import org.jeecg.common.exception.ExceptionAssertsUtil;
import org.jeecg.util.RedisClientUtil;
import org.jeecg.util.RedisKeyPrefix;
import org.springframework.http.HttpHeaders;
import org.springframework.http.HttpStatus;
import org.springframework.http.MediaType;
import org.springframework.http.ResponseEntity;
import org.springframework.retry.annotation.EnableRetry;
import org.springframework.retry.annotation.Retryable;
import org.springframework.stereotype.Service;
import org.springframework.util.LinkedMultiValueMap;
import org.springframework.util.MultiValueMap;
import org.springframework.web.client.HttpClientErrorException;
import java.util.Date;
import java.util.List;
import java.util.Objects;
import java.util.UUID;
import java.util.stream.Collectors;
/**
* @Description: AnYanClientExecutor xj安眼系统接口调用执行器
* @Author: feng
* @Date: 2025-8-1
* @Version: V1.0
*/
@Slf4j
@Service
@EnableRetry
@RequiredArgsConstructor
public class AnYanClientExecutor implements AnYanClient {
//安眼获取token访问公钥
private String publicKey = "MFwwDQYJKoZIhvcNAQEBBQADSwAwSAJBAJL0JkqsUoK6kt3JyogsgqNp9VDGDp+t3ZAGMbVoMPdHNT2nfiIVh9ZMNHF7g2XiAa8O8AQWyh2PjMR0NiUSVQMCAwEAAQ==";
private final RedisClientUtil redisClientUtil;
private final AnYanProperties anYanProperties;
@Override
public String getAuthToken() {
String token = redisClientUtil.get(new RedisKeyPrefix(AnYanConstants.AN_YAN_API_TOKEN_PREFIX), "token", String.class);
if (StrUtil.isEmpty(token)) {
AuthResult authResult = getAuthTokenExecutor();
if (ObjectUtil.isNotEmpty(authResult) && StrUtil.isNotEmpty(authResult.getAccess_token())) {
token = authResult.getAccess_token();
int expireSeconds = ObjectUtil.isNotEmpty(authResult.getExpires_in()) ? authResult.getExpires_in() : 7200;
redisClientUtil.set(new RedisKeyPrefix(expireSeconds, AnYanConstants.AN_YAN_API_TOKEN_PREFIX), "token", token);
}
}
return token;
}
private AuthResult getAuthTokenExecutor() {
AuthParam authParam = new AuthParam();
authParam.setClient_id(anYanProperties.getClientId());
authParam.setClient_secret(anYanProperties.getClientSecret());
HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.MULTIPART_FORM_DATA);
ResponseEntity<AuthResult> responseEntity = RestTemplateUtil.postExchange(AnYanApiEnum.QUERY_AUTH_TOKEN, headers, authParam, AuthResult.class);
if (HttpStatus.OK.equals(responseEntity.getStatusCode()) && ObjectUtils.isNotEmpty(responseEntity.getBody())) {
return responseEntity.getBody();
} else {
ExceptionAssertsUtil.fail("------安眼系统获取token失败------" + responseEntity.getBody());
}
return new AuthResult();
}
/**
* @description: 通过密码获取令牌
* @author PengJ
* @date 2025/10/24 11:15
*/
@Override
public AuthResult getAuthTokenByPassword(String username, String password) {
try {
String encryptPassword = StringUtils.encryptByPublicKey(publicKey, password);
HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.MULTIPART_FORM_DATA);
MultiValueMap<String, String> formData = new LinkedMultiValueMap<>();
formData.add("grant_type", "password");
formData.add("username", username);
formData.add("password", encryptPassword);
formData.add("client_id", anYanProperties.getClientId());
formData.add("client_secret", anYanProperties.getClientSecret());
ResponseEntity<AuthResult> authResult = RestTemplateUtil.postExchangeForGetTokenByPassword(AnYanApiEnum.QUERY_AUTH_TOKEN, formData, headers, AuthResult.class);
if (HttpStatus.OK.equals(authResult.getStatusCode())
&& ObjectUtils.isNotEmpty(authResult.getBody())) {
return authResult.getBody();
} else {
log.error("------安眼系统获取token失败(密码模式){}------", authResult.getBody());
ExceptionAssertsUtil.fail("------安眼系统获取token失败------" + authResult.getBody());
return null;
}
} catch (HttpClientErrorException e) {
log.error("------安眼系统获取token失败(密码模式){}------", e.getMessage());
String replace = Objects.requireNonNull(e.getMessage()).replace("401 Unauthorized: ", "");
replace = replace.replace("\"", "");
AuthResult bean = JSONUtil.toBean(replace, AuthResult.class);
ExceptionAssertsUtil.fail(bean.getMessage());
} catch (Exception e) {
ExceptionAssertsUtil.fail(e.getMessage());
}
return null;
}
@Override
public void refreshToken() {
AuthResult authResult = getAuthTokenExecutor();
if (ObjectUtil.isNotEmpty(authResult) && StrUtil.isNotEmpty(authResult.getAccess_token())) {
int expireSeconds = ObjectUtil.isNotEmpty(authResult.getExpires_in()) ? authResult.getExpires_in() : 7200;
redisClientUtil.set(new RedisKeyPrefix(expireSeconds, AnYanConstants.AN_YAN_API_TOKEN_PREFIX), "token", authResult.getAccess_token());
}
}
private HttpHeaders buildTokenHeader() {
HttpHeaders headers = new HttpHeaders();
headers.add(AnYanConstants.AUTHORIZATION, AnYanConstants.TOKEN_TYPE + getAuthToken());
return headers;
}
@Override
@Retryable(maxAttempts = 2)
public List<MedicalPeopleNumStatisticsVO> examinationStatistics(Integer medicalYear) {
if (null == medicalYear) {
medicalYear = DateUtil.year(new Date());
}
JSONObject param = new JSONObject();
param.put("medicalYear", String.valueOf(medicalYear));
AnYanResult<Object> result = RestTemplateUtil.postExchange(AnYanApiEnum.HEALTH_EXAMINATION_STATISTICS, buildTokenHeader(), param);
List<Object> listMaps = (List<Object>) result.getData();
return listMaps.stream().map(lMap -> BeanUtil.toBean(lMap, MedicalPeopleNumStatisticsVO.class)).collect(Collectors.toList());
}
@Override
@Retryable(maxAttempts = 2)
public HealthSignStatVO healthCheckStatistics(Date beginDate, Date endDate) {
JSONObject param = new JSONObject();
param.put("inputDateBegin", ObjectUtil.isEmpty(beginDate) ? DateUtil.today() : DateUtil.formatDate(beginDate));
param.put("inputDateEnd", ObjectUtil.isEmpty(endDate) ? DateUtil.today() : DateUtil.formatDate(endDate));
AnYanResult<Object> result = RestTemplateUtil.postExchange(AnYanApiEnum.HEALTH_CHECK_STATISTICS, buildTokenHeader(), param);
return BeanUtil.toBean(result.getData(), HealthSignStatVO.class);
}
@Override
@Retryable(maxAttempts = 2)
public IPage<BloodPressureList> bloodPressureList(HealthSignListParam healthSignListParam) {
AnYanResult<Object> result = RestTemplateUtil.postExchange(AnYanApiEnum.BLOOD_PRESSURE_LIST, buildTokenHeader(), healthSignListParam);
return new PageResultToBeanUtil<BloodPressureList>().transform(result, BloodPressureList.class);
}
@Override
@Retryable(maxAttempts = 2)
public IPage<WeightPressureList> weightPressureList(HealthSignListParam healthSignListParam) {
AnYanResult<Object> result = RestTemplateUtil.postExchange(AnYanApiEnum.WEIGHT_PRESSURE_LIST, buildTokenHeader(), healthSignListParam);
return new PageResultToBeanUtil<WeightPressureList>().transform(result, WeightPressureList.class);
}
@Override
@Retryable(maxAttempts = 2)
public IPage<BloodSugarClockSList> bloodSugarClockSList(HealthSignListParam healthSignListParam) {
AnYanResult<Object> result = RestTemplateUtil.postExchange(AnYanApiEnum.BLOOD_SUGAR_CLOCKS_LIST, buildTokenHeader(), healthSignListParam);
return new PageResultToBeanUtil<BloodSugarClockSList>().transform(result, BloodSugarClockSList.class);
}
@Override
@Retryable(maxAttempts = 2)
public List<HospitalListVO> hospitalList() {
AnYanResult<Object> result = RestTemplateUtil.postExchange(AnYanApiEnum.HOSPITAL_LIST, buildTokenHeader(), null);
List<Object> listMaps = (List<Object>) result.getData();
return listMaps.stream().map(lMap -> BeanUtil.toBean(lMap, HospitalListVO.class)).collect(Collectors.toList());
}
@Override
@Retryable(maxAttempts = 2)
public List<HealthRoomBaseVO> healthPlaceHomList() {
AnYanResult<Object> result = RestTemplateUtil.postExchange(AnYanApiEnum.HEALTH_PLACE_ROOM_LIST, buildTokenHeader(), null);
List<Object> listMaps = (List<Object>) result.getData();
return listMaps.stream().map(lMap -> BeanUtil.toBean(lMap, HealthRoomBaseVO.class)).collect(Collectors.toList());
}
@Override
@Retryable(maxAttempts = 2)
public IPage<HealthPlaceHomDetailsVO> healthPlaceHomDetailList(HealthRoomDTO healthRoomDTO) {
AnYanResult<Object> result = RestTemplateUtil.postExchange(AnYanApiEnum.HEALTH_PLACE_ROOM_INFO_LIST, buildTokenHeader(), healthRoomDTO);
return new PageResultToBeanUtil<HealthPlaceHomDetailsVO>().transform(result, HealthPlaceHomDetailsVO.class);
}
@Override
@Retryable(maxAttempts = 2)
public MedicalAbnormalStatisticsVO medicalAbnormalStatistics(Integer medicalYear) {
if (null == medicalYear) {
medicalYear = DateUtil.year(new Date());
}
JSONObject param = new JSONObject();
param.put("medicalYear", medicalYear);
AnYanResult<Object> result = RestTemplateUtil.postExchange(AnYanApiEnum.MEDICAL_ABNORMAL_STATISTICS, buildTokenHeader(), param);
return BeanUtil.toBean(result.getData(), MedicalAbnormalStatisticsVO.class);
}
@Override
@Retryable(maxAttempts = 2)
public IPage<MedicalAbnormalVO> medicalAbnormalList(MedicalAbnormalDTO param) {
AnYanResult<Object> result = RestTemplateUtil.postExchange(AnYanApiEnum.MEDICAL_ABNORMAL_LIST, buildTokenHeader(), param);
return new PageResultToBeanUtil<MedicalAbnormalVO>().transform(result, MedicalAbnormalVO.class);
}
@Override
public String publicNetworkToken() {
String token = redisClientUtil.get(new RedisKeyPrefix(AnYanConstants.AN_YAN_API_TOKEN_PREFIX), "publicToken", String.class);
if (StrUtil.isEmpty(token)) {
AuthResult authResult = publicNetworkTokenNoCache();
if (null != authResult) {
token = authResult.getAccess_token();
int expireSeconds = ObjectUtil.isNotEmpty(authResult.getExpires_in()) ? authResult.getExpires_in() : 7200;
redisClientUtil.set(new RedisKeyPrefix(expireSeconds, AnYanConstants.AN_YAN_API_TOKEN_PREFIX), "publicToken", token);
}
}
return token;
}
@Override
public AuthResult publicNetworkTokenNoCache() {
JSONObject param = new JSONObject();
String password = anYanProperties.getPublicPassWrod();
String userName = anYanProperties.getPublicUserNmae();
try {
String sm4Password = SM4Utils.encryptSM4(password);
String encryptPassword = StringUtils.encryptByPublicKey(publicKey, password);
param.put("password", encryptPassword);
param.put("selfPassword", sm4Password);
param.put("loginName", userName);
param.put("timeStamp", UUID.randomUUID().toString());
ResponseEntity<AnYanResult> responseEntity = RestTemplateUtil.postExchangeForGetToken(AnYanApiEnum.PUBLIC_NETWORK_AUTH_TOKEN, param, AnYanResult.class);
//安眼提供的接口包过深 ,先从AnYanResult对象中取出加密的密文,后在解密密文拿出 AuthResult对象 , 再从AuthResult对象中拿出 access_token
AnYanResult anYanResult = responseEntity.getBody();
if (ObjectUtil.isNotEmpty(anYanResult) && ObjectUtil.isNotEmpty(anYanResult.getData())) {
String decryptAuthResult = SM4Utils.decryptSM4((String) anYanResult.getData());
AuthResult authResult = JSON.parseObject(decryptAuthResult).toJavaObject(AuthResult.class);
if (null != authResult && null != authResult.getAccess_token()) {
return authResult;
} else {
ExceptionAssertsUtil.fail("获取安眼系统token失败");
}
}
} catch (Exception e) {
e.printStackTrace();
ExceptionAssertsUtil.fail("获取安眼系统token失败");
}
return null;
}
/**
* @description: 根据token获取用户信息
* @author PengJ
* @date 2025/10/24 17:00
*/
@Override
public AnYanUserInfoResult getAnYanUserInfo(String token) {
HttpHeaders headers = new HttpHeaders();
headers.add(AnYanConstants.AUTHORIZATION, AnYanConstants.TOKEN_TYPE + token);
ResponseEntity<AnYanUserInfoResult> exchange = RestTemplateUtil.getExchange(AnYanApiEnum.USER_INFO_UNIT_V2, headers, AnYanUserInfoResult.class);
return BeanUtil.toBean(exchange.getBody(), AnYanUserInfoResult.class);
}
}
@@ -0,0 +1,53 @@
package com.renkang.anyan.config;
import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Configuration;
/**
* @Description: AnYanProperties
* @Author: feng
* @Date: 2025-8-1
* @Version: V1.0
*/
@Data
@Configuration
@ConfigurationProperties(prefix = "variable.anyan")
public class AnYanProperties {
/**
* 是否启用安眼的接口
*/
private boolean enable;
/**
*服务调用地址
*/
private String host = "";
/**
* clientId
*/
private String clientId = "";
/**
*clientSecret
*/
private String clientSecret = "";
/**
*公网可访问的接口地址 (目前或者大屏调转的toekn使用)
*/
private String publicHost = "";
/**
* 公网环境的鉴权账号 (目前或者大屏调转的toekn使用)
*/
private String publicUserNmae = "";
/**
*公网环境的鉴权密码 (目前或者大屏调转的toekn使用)
*/
private String publicPassWrod = "";
/**
*链接超时时间
*/
private Long timeout = 3000L;
/**
*读取超时时间
*/
private Long readTimeout = 30000L;
}
@@ -0,0 +1,85 @@
package com.renkang.restaurant.config;
import com.renkang.anyan.client.AnYanClient;
import com.renkang.anyan.config.AnYanProperties;
import com.renkang.anyan.enums.AnYanApiEnum;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.jeecg.common.exception.ExceptionAssertsUtil;
import org.jeecg.common.util.SpringContextUtils;
import org.springframework.boot.web.client.RestTemplateBuilder;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.http.HttpStatus;
import org.springframework.http.client.ClientHttpRequestInterceptor;
import org.springframework.http.client.ClientHttpResponse;
import org.springframework.http.converter.FormHttpMessageConverter;
import org.springframework.http.converter.StringHttpMessageConverter;
import org.springframework.http.converter.json.MappingJackson2HttpMessageConverter;
import org.springframework.web.client.RestTemplate;
import java.nio.charset.StandardCharsets;
import java.time.Duration;
import java.time.temporal.ChronoUnit;
import java.util.Arrays;
import java.util.concurrent.atomic.AtomicInteger;
/**
* @Description: AnYanClient xj安眼系统接口调用客户端
* @Author: feng
* @Date: 2025-8-1
* @Version: V1.0
*/
@Slf4j
@Configuration
@RequiredArgsConstructor
public class AnYanRestTemplateConfig {
private final AnYanProperties properties;
@Bean
public RestTemplate anYanTemplate() {
ClientHttpRequestInterceptor authInterceptor = authInterceptor();
return new RestTemplateBuilder()
.setConnectTimeout(Duration.of(properties.getTimeout(), ChronoUnit.MILLIS))
.setReadTimeout(Duration.of(properties.getReadTimeout(), ChronoUnit.MILLIS))
.additionalMessageConverters(
new StringHttpMessageConverter(StandardCharsets.UTF_8),
new MappingJackson2HttpMessageConverter(),
new FormHttpMessageConverter()
)
.additionalInterceptors(authInterceptor)
.build();
}
/**
* 自定义拦截器处理接口鉴权失败, 配合spring retry使用从而避免因token失效导致的接口调用失败
*/
public ClientHttpRequestInterceptor authInterceptor() {
// 添加重试次数限制
AtomicInteger retryCount = new AtomicInteger(0);
int maxRetries = 5;
return (httpRequest, bytes, clientHttpRequestExecution) -> {
ClientHttpResponse execute;
try {
// 获取请求URL
String url = httpRequest.getURI().toString();
// 排除特定接口不执行拦截逻辑
boolean shouldSkip = url.contains(AnYanApiEnum.QUERY_AUTH_TOKEN.getMethodPath());
execute = clientHttpRequestExecution.execute(httpRequest, bytes);
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();
}
} catch (Exception e) {
log.error("---------安眼平台API调用异常-------e{}", e.getMessage(), e);
ExceptionAssertsUtil.fail("安眼平台API调用失败");
throw e;
}
return execute;
};
}
}
@@ -0,0 +1,125 @@
package com.renkang.anyan.config;
import com.renkang.anyan.enums.AnYanApiEnum;
import com.renkang.anyan.model.vo.AnYanResult;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.ObjectUtils;
import org.jeecg.common.util.SpringContextUtils;
import org.springframework.http.HttpEntity;
import org.springframework.http.HttpHeaders;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.util.MultiValueMap;
import org.springframework.web.client.RestTemplate;
import java.util.Objects;
/**
* @Description: RestTemplate 工具类 (更多请求方式自行封装)
* @Author: feng
* @Date: 2025-8-1
* @Version: V1.0
*/
@Slf4j
public class RestTemplateUtil {
private static RestTemplate restTemplate;
private static AnYanProperties properties;
public static RestTemplate getRestTemplate() {
if (Objects.isNull(restTemplate)) {
restTemplate = SpringContextUtils.getBean("anYanTemplate", RestTemplate.class);
}
return restTemplate;
}
public static AnYanProperties getProperties() {
if (Objects.isNull(properties)) {
properties = SpringContextUtils.getBean(AnYanProperties.class);
}
return properties;
}
/**
* 请求接口访问 token
*
* @param api 接口
* @param requestBody 参数
* @return ResponseEntity
*/
public static <T> ResponseEntity<T> postExchange(AnYanApiEnum api, HttpHeaders headers, Object requestBody, Class<T> responseType) {
String url = getProperties().getHost() + api.getMethodPath() + api.getMethodParam();
HttpEntity<Object> requestEntity = new HttpEntity<>(requestBody);
return getRestTemplate().exchange(url, api.getHttpMethod(), requestEntity, responseType);
}
/**
* 公网请求接口访问 token(密码模式)
*
* @param api 接口
* @param formData 参数
* @return ResponseEntity
*/
public static <T> ResponseEntity<T> postExchangeForGetTokenByPassword(AnYanApiEnum api, MultiValueMap<String, String> formData, HttpHeaders headers, Class<T> responseType) {
String url = getProperties().getPublicHost() + api.getMethodPath();
HttpEntity<MultiValueMap<String, String>> requestEntity = new HttpEntity<>(formData, headers);
log.info("开始发送请求到: {},入参:{}", url, formData);
ResponseEntity<T> response = getRestTemplate().exchange(url, api.getHttpMethod(), requestEntity, responseType);
log.info("收到响应: {}", response);
return response;
}
/**
* 公网请求接口访问 token
*
* @param api 接口
* @param requestBody 参数
* @return ResponseEntity
*/
public static <T> ResponseEntity<T> postExchangeForGetToken(AnYanApiEnum api, Object requestBody, Class<T> responseType) {
String url = getProperties().getPublicHost() + api.getMethodPath() + api.getMethodParam();
HttpEntity<Object> requestEntity = new HttpEntity<>(requestBody);
return getRestTemplate().exchange(url, api.getHttpMethod(), requestEntity, responseType);
}
/**
* 通用调用方法
*
* @param api 请求接口
* @param headers 请求头
* @param requestBody body参数
* @return Result对象
*/
public static AnYanResult<Object> postExchange(AnYanApiEnum api, HttpHeaders headers, Object requestBody) {
String url = getProperties().getHost() + api.getMethodPath() + api.getMethodParam();
HttpEntity<Object> requestEntity = new HttpEntity<>(requestBody, headers);
return responseHandler(getRestTemplate().exchange(url, api.getHttpMethod(), requestEntity, AnYanResult.class));
}
/**
* 通用调用方法
*
* @param api 请求接口
* @param headers 请求头
* @return Result对象
*/
public static <T> ResponseEntity<T> getExchange(AnYanApiEnum api, HttpHeaders headers, Class<T> responseType) {
String url = getProperties().getHost() + api.getMethodPath() + api.getMethodParam();
HttpEntity<Object> requestEntity = new HttpEntity<>(headers);
return getRestTemplate().exchange(url, api.getHttpMethod(), requestEntity, responseType);
}
/**
* ResponseEntity 转 Result
*
* @param entity
* @return
*/
private static <T extends AnYanResult<Object>> AnYanResult<Object> responseHandler(ResponseEntity<T> entity) {
if (HttpStatus.OK.equals(entity.getStatusCode()) && ObjectUtils.isNotEmpty(entity.getBody())) {
return entity.getBody();
} else {
return AnYanResult.error("天眼系统API调用失败");
}
}
}
@@ -0,0 +1,24 @@
package com.renkang.anyan.constants;
import org.jeecg.util.RedisKeyPrefix;
/**
* @Description: AnYanConstants 常量
* @Author: feng
* @Date: 2025-8-01
* @Version: V1.0
*/
public interface AnYanConstants {
/**
* token传递请求头参数
*/
String AUTHORIZATION = "authorization";
/**
* token类型
*/
String TOKEN_TYPE = "bearer ";
/**
* 缓存调用安眼系统接口鉴权token缓存key
*/
String AN_YAN_API_TOKEN_PREFIX = "exterior:anyan:api:";
}
@@ -0,0 +1,98 @@
package com.renkang.anyan.enums;
import lombok.Getter;
import org.springframework.http.HttpMethod;
/**
* @Description: AnYanApiEnum xj安眼系统接口枚举类
* @Author: feng
* @Date: 2025-8-1
* @Version: V1.0
*/
@Getter
public enum AnYanApiEnum {
/**
* 1.获取token接口
*/
QUERY_AUTH_TOKEN("/oauth/oauth/token", "", HttpMethod.POST),
/**
* 2.体检人数统计查询
*/
HEALTH_EXAMINATION_STATISTICS("/aygc-znhpt-sys/0/aystatistics/peopleHealthExaminationStatistics", "", HttpMethod.POST),
/**
* 3.健康打卡数据统计查询(血压,减重,血糖)
*/
HEALTH_CHECK_STATISTICS("/aygc-znhpt-sys/0/aystatistics/healthCheckStatistics", "", HttpMethod.POST),
/**
* 4.健康打卡异常数据详细查询(血压)
*/
BLOOD_PRESSURE_LIST("/aygc-znhpt-sys/0/aystatistics/bloodPressureList", "", HttpMethod.POST),
/**
* 5.健康打卡异常数据详细查询(减重)
*/
WEIGHT_PRESSURE_LIST("/aygc-znhpt-sys/0/aystatistics/weightPressureList", "", HttpMethod.POST),
/**
* 6.健康打卡异常数据详细查询(血糖)
*/
BLOOD_SUGAR_CLOCKS_LIST("/aygc-znhpt-sys/0/aystatistics/bloodSugarClockSList", "", HttpMethod.POST),
/**
* 7.体检异常数据统计查询(暂定)
*/
MEDICAL_ABNORMAL_STATISTICS("/aygc-znhpt-sys/0/aystatistics/checkstatistics", "", HttpMethod.POST),
/**
* 8.体检异常数据清单(暂定)
*/
MEDICAL_ABNORMAL_LIST("/aygc-znhpt-sys/0/aystatistics/checkList", "", HttpMethod.POST),
/**
* 9.油田医院数据查询
*/
HOSPITAL_LIST("/aygc-znhpt-sys/0/aystatistics/HospitalList", "", HttpMethod.POST),
/**
* 10.健康小屋基础数据查询
*/
HEALTH_PLACE_ROOM_LIST("/aygc-znhpt-sys/0/aystatistics/HealthPlaceHomList", "", HttpMethod.POST),
/**
* 11.健康小屋详细数据查询
*/
HEALTH_PLACE_ROOM_INFO_LIST("/aygc-znhpt-sys/0/aystatistics/initEmpHealthRoomCheckinInfoPages", "", HttpMethod.POST),
/**
* 12.从外网地址获取安眼token接口
*/
PUBLIC_NETWORK_AUTH_TOKEN("/aygc-service-sys/0/api/xj/outside/getToken", "", HttpMethod.POST),
/**
* 13.获取员工信息及单位-V2
*/
USER_INFO_UNIT_V2("/iosp-iam/v2/users/self", "?containsUnit=true", HttpMethod.GET),
;
/**
* 接口路径
*/
private String methodPath;
/**
* 接口的路径参数
*/
private String methodParam;
/**
* 接口请求方式
*/
private HttpMethod httpMethod;
AnYanApiEnum(String methodPath, String methodParam, HttpMethod httpMethod) {
this.methodPath = methodPath;
this.methodParam = methodParam;
this.httpMethod = httpMethod;
}
}
@@ -0,0 +1,32 @@
package com.renkang.anyan.model.dto;
import lombok.Data;
/**
* @author PengJ
* @description: 密码鉴权入参
* @date 2025/10/24 11:04
*/
@Data
public class AuthByPasswordParam {
/**
* grant_type
*/
private String grant_type = "password";
/**
* username
*/
private String username;
/**
* password
*/
private String password;
/**
* client_id
*/
private String client_id;
/**
* client_secret
*/
private String client_secret;
}
@@ -0,0 +1,19 @@
package com.renkang.anyan.model.dto;
import lombok.Data;
@Data
public class AuthParam {
/**
*grant_type
*/
private String grant_type = "client_credentials";
/**
* client_id
*/
private String client_id;
/**
* client_secret
*/
private String client_secret;
}
@@ -1,4 +1,4 @@
package com.renkang.emergency.largeScreen.entity.dto; package com.renkang.anyan.model.dto;
import cn.hutool.core.date.DateUtil; import cn.hutool.core.date.DateUtil;
import com.fasterxml.jackson.annotation.JsonFormat; import com.fasterxml.jackson.annotation.JsonFormat;
@@ -0,0 +1,49 @@
package com.renkang.anyan.model.dto;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;
import java.util.Date;
/**
* 健康打卡异常数据详情查询参数
*/
@Data
public class HealthSignListParam {
/**
*单位
*/
@Schema(title = "单位")
private String departName;
/**
* 员工姓名
*/
@Schema(title = "员工姓名")
private String name;
/**
* 开始时间
*/
@Schema(title = "开始时间")
@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd")
@DateTimeFormat(pattern = "yyyy-MM-dd")
private Date inputDateBegin;
/**
*结束时间
*/
@Schema(title = "结束时间")
@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd")
@DateTimeFormat(pattern = "yyyy-MM-dd")
private Date inputDateEnd;
/**
* pageNo
*/
@Schema(title = "pageNo")
private Integer pageNo = 1;
/**
* pageSize
*/
@Schema(title = "pageSize")
private Integer pageSize = 10;
}
@@ -1,4 +1,4 @@
package com.renkang.emergency.largeScreen.entity.dto; package com.renkang.anyan.model.dto;
import cn.hutool.core.date.DateUtil; import cn.hutool.core.date.DateUtil;
import com.fasterxml.jackson.annotation.JsonFormat; import com.fasterxml.jackson.annotation.JsonFormat;
@@ -19,6 +19,14 @@ public class MedicalAbnormalDTO {
* 员工姓名 * 员工姓名
*/ */
private String name; private String name;
/**
* 体检年份
*/
private String medicalYear;
/**
* 体检医院
*/
private String hospitalName;
/** /**
* 检查日期起期 参数为空时默认为今年第一天2025-01-01 * 检查日期起期 参数为空时默认为今年第一天2025-01-01
*/ */
@@ -0,0 +1,170 @@
package com.renkang.anyan.model.vo;
import com.fasterxml.jackson.annotation.JsonIgnore;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import org.jeecg.common.constant.CommonConstant;
import java.io.Serializable;
@Data
@Schema(title = "安眼系统接口返回对象", description = "安眼系统接口返回对象")
public class AnYanResult<T> implements Serializable {
private static final long serialVersionUID = 1L;
/**
* 成功标志
*/
@Schema(title = "成功标志")
private boolean success = true;
/**
* 返回处理消息
*/
@Schema(title = "返回处理消息")
private String message = "";
/**
* 返回代码
*/
@Schema(title = "返回代码")
private Integer code = 0;
/**
* 返回数据对象 data
*/
@Schema(title = "返回数据对象")
private T data;
/**
* 时间戳
*/
@Schema(title = "时间戳")
private long timestamp = System.currentTimeMillis();
@JsonIgnore
private String onlTable;
public AnYanResult() {
}
/**
* 兼容VUE3版token失效不跳转登录页面
*
* @param code
* @param message
*/
public AnYanResult(Integer code, String message) {
this.code = code;
this.message = message;
}
public static <T> AnYanResult<T> ok() {
AnYanResult<T> r = new AnYanResult<T>();
r.setSuccess(true);
r.setCode(CommonConstant.SC_OK_200);
return r;
}
public static <T> AnYanResult<T> ok(String msg) {
AnYanResult<T> r = new AnYanResult<T>();
r.setSuccess(true);
r.setCode(CommonConstant.SC_OK_200);
//Result OK(String msg)方法会造成兼容性问题 issues/I4IP3D
r.setData((T) msg);
r.setMessage(msg);
return r;
}
public static <T> AnYanResult<T> ok(T data) {
AnYanResult<T> r = new AnYanResult<T>();
r.setSuccess(true);
r.setCode(CommonConstant.SC_OK_200);
r.setData(data);
return r;
}
public static <T> AnYanResult<T> OK() {
AnYanResult<T> r = new AnYanResult<T>();
r.setSuccess(true);
r.setCode(CommonConstant.SC_OK_200);
return r;
}
/**
* 此方法是为了兼容升级所创建
*
* @param msg
* @param <T>
* @return
*/
public static <T> AnYanResult<T> OK(String msg) {
AnYanResult<T> r = new AnYanResult<T>();
r.setSuccess(true);
r.setCode(CommonConstant.SC_OK_200);
r.setMessage(msg);
//Result OK(String msg)方法会造成兼容性问题 issues/I4IP3D
r.setData((T) msg);
return r;
}
public static <T> AnYanResult<T> OK(T data) {
AnYanResult<T> r = new AnYanResult<T>();
r.setSuccess(true);
r.setCode(CommonConstant.SC_OK_200);
r.setData(data);
return r;
}
public static <T> AnYanResult<T> OK(String msg, T data) {
AnYanResult<T> r = new AnYanResult<T>();
r.setSuccess(true);
r.setCode(CommonConstant.SC_OK_200);
r.setMessage(msg);
r.setData(data);
return r;
}
public static <T> AnYanResult<T> error(String msg, T data) {
AnYanResult<T> r = new AnYanResult<T>();
r.setSuccess(false);
r.setCode(CommonConstant.SC_INTERNAL_SERVER_ERROR_500);
r.setMessage(msg);
r.setData(data);
return r;
}
public static <T> AnYanResult<T> error(String msg) {
return error(CommonConstant.SC_INTERNAL_SERVER_ERROR_500, msg);
}
public static <T> AnYanResult<T> error(int code, String msg) {
AnYanResult<T> r = new AnYanResult<T>();
r.setCode(code);
r.setMessage(msg);
r.setSuccess(false);
return r;
}
/**
* 无权限访问返回结果
*/
public static <T> AnYanResult<T> noauth(String msg) {
return error(CommonConstant.SC_JEECG_NO_AUTHZ, msg);
}
public AnYanResult<T> success(String message) {
this.message = message;
this.code = CommonConstant.SC_OK_200;
this.success = true;
return this;
}
public AnYanResult<T> error500(String message) {
this.message = message;
this.code = CommonConstant.SC_INTERNAL_SERVER_ERROR_500;
this.success = false;
return this;
}
}
@@ -0,0 +1,149 @@
package com.renkang.anyan.model.vo;
import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.Data;
import lombok.NoArgsConstructor;
/**
* @author Huawei
* @version 1.0
* @description: TODO
* @date 2025/10/24 16:59
*/
@NoArgsConstructor
@Data
public class AnYanUserInfoResult {
@JsonProperty("id")
private String id;
@JsonProperty("loginName")
private String loginName;
@JsonProperty("email")
private String email;
@JsonProperty("organizationId")
private Integer organizationId;
@JsonProperty("realName")
private String realName;
@JsonProperty("phone")
private String phone;
@JsonProperty("gender")
private Integer gender;
@JsonProperty("tenantName")
private String tenantName;
@JsonProperty("tenantNum")
private String tenantNum;
@JsonProperty("roleMergeFlag")
private Integer roleMergeFlag;
@JsonProperty("tenantId")
private Integer tenantId;
@JsonProperty("currentRoleId")
private String currentRoleId;
@JsonProperty("currentRoleCode")
private String currentRoleCode;
@JsonProperty("currentRoleName")
private String currentRoleName;
@JsonProperty("currentRoleLevel")
private String currentRoleLevel;
@JsonProperty("employeeUnitDTO")
private EmployeeUnitDTO employeeUnitDTO;
@NoArgsConstructor
@Data
public static class EmployeeUnitDTO {
/**
* 职工编号
*/
@JsonProperty("employeeNum")
private String employeeNum;
/**
* 姓名
*/
@JsonProperty("name")
private String name;
/**
* 邮箱
*/
@JsonProperty("email")
private String email;
/**
* 手机
*/
@JsonProperty("mobile")
private String mobile;
/**
* 性别
*/
@JsonProperty("gender")
private Integer gender;
@JsonProperty("status")
private Object status;
/**
* 启用状态
*/
@JsonProperty("enabledFlag")
private String enabledFlag;
@JsonProperty("unitName")
private String unitName;
/**
* 所属二级单位unitCode
*/
@JsonProperty("unitCode")
private String unitCode;
/**
* 科级单位名称
*/
@JsonProperty("sectionUnitName")
private String sectionUnitName;
/**
* 科级单位unitCode
*/
@JsonProperty("sectionUnitCode")
private String sectionUnitCode;
@JsonProperty("directDepartmentName")
private String directDepartmentName;
/**
* 直属部门unitCode
*/
@JsonProperty("directDepartmentCode")
private String directDepartmentCode;
/**
* 层级路径(unitCode拼接)
*/
@JsonProperty("levelPath")
private String levelPath;
/**
* 完整组织机构路径(unitName拼接)
*/
@JsonProperty("unitNamePath")
private String unitNamePath;
/**
* 固定电话
*/
@JsonProperty("attribute1")
private String attribute1;
/**
* 职务
*/
@JsonProperty("attribute2")
private String attribute2;
/**
* 生日或年龄
*/
@JsonProperty("attribute3")
private Object attribute3;
}
}
@@ -0,0 +1,39 @@
package com.renkang.anyan.model.vo;
import lombok.Data;
@Data
public class AuthResult {
/**
*范围
*/
private String scope;
/**
*有效期
*/
private Integer expires_in;
/**
* token_type
*/
private String token_type;
/**
* token
*/
private String access_token;
/**
* refresh_token
*/
private String refresh_token;
/**
* satoken
*/
private String satoken;
/**
* message
*/
private String message;
/**
* success
*/
private boolean success;
}
@@ -0,0 +1,36 @@
package com.renkang.anyan.model.vo;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import lombok.EqualsAndHashCode;
@EqualsAndHashCode(callSuper = true)
@Data
@Schema(title="健康打卡血压异常数据详细", description="健康打卡血压异常数据详细")
public class BloodPressureList extends XjUserBaseInfo {
/**
*收缩压
*/
@Schema(title = "收缩压")
private String sbp;
/**
*收缩压是否异常
*/
@Schema(title = "收缩压是否异常")
private String sbpFlag;
/**
*舒张压
*/
@Schema(title = "舒张压")
private String dbp;
/**
*舒张压是否异常
*/
@Schema(title = "舒张压是否异常")
private String dbpFlag;
/**
*填报时间 YYYY-MM-DD
*/
@Schema(title = "填报时间")
private String inputDate;
}
@@ -0,0 +1,26 @@
package com.renkang.anyan.model.vo;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import lombok.EqualsAndHashCode;
@EqualsAndHashCode(callSuper = true)
@Data
@Schema(title="健康打卡血糖异常数据详细", description="健康打卡血糖异常数据详细")
public class BloodSugarClockSList extends XjUserBaseInfo {
/**
*血糖值
*/
@Schema(title = "血糖值")
private String bsVal;
/**
*血糖是否异常
*/
@Schema(title = "血糖是否异常")
private String bsFlag;
/**
*填报时间 YYYY-MM-DD
*/
@Schema(title = "填报时间")
private String inputDate;
}
@@ -0,0 +1,143 @@
package com.renkang.anyan.model.vo;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
@Data
@Schema(title="重点关爱趋势预警信息",description="重点关爱趋势预警信息")
public class CareUserListVo {
@Schema(title = "ID")
private String id;
@Schema(title = "员工ID")
private String empId;
@Schema(title = "员工姓名")
private String name;
@Schema(title = "年龄")
private Integer age;
@Schema(title = "性别")
private String sex;
@Schema(title = "工作单位")
private String workUnit ;
@Schema(title = "单位ID")
private String workUnitId;
@Schema(title = "创建时间")
private String createDate;
@Schema(title = "修改时间")
private String updateDate;
@Schema(title = "关爱状态(0-已完成,1-未完成)")
private Integer dataLevel;
@Schema(title = "负面清单")
private String negativeList;
@Schema(title = "一人一案")
private String caseInfo;
@Schema(title = "肥胖人员标识(1,是,2-否)")
private Integer flagFat;
@Schema(title = "BMI")
private Double bmi;
@Schema(title = "身高")
private Double height;
@Schema(title = "体重")
private Double weight;
@Schema(title = "体重管理目标")
private Double targetWeight;
@Schema(title = "目前BMI监测值")
private String bmiCurrent;
@Schema(title = "高血压(0-否,1-是)")
private Integer hypertension;
@Schema(title = "收缩压均值")
private String systolicPressureAvg;
@Schema(title = "收缩压控制目标")
private String systolicPressureTarget;
@Schema(title = "目前收缩压检测值")
private String systolicPressureCurrent;
@Schema(title = "舒张压平均值")
private String diastolicPressureAvg;
@Schema(title = "舒张压控制目标值")
private String diastolicPressureTarget;
@Schema(title = "舒张压当前检测值")
private String diastolicPressureCurrent;
@Schema(title = "糖尿病标识(0-否,1-是)")
private Integer diabetes;
@Schema(title = "空腹葡萄糖(GLU)")
private String glu;
@Schema(title = "血糖控制目标值")
private String bloodSugarTarget;
@Schema(title = "目前血糖监测值:")
private String bloodSugarCurrent;
@Schema(title = "低密度脂蛋白")
private String ldl;
@Schema(title = "低密度脂蛋白目标控制值")
private String ldlTarget;
@Schema(title = "低密度脂蛋白当前检测值")
private String ldlCurrent;
@Schema(title = "总胆固醇")
private String tc;
@Schema(title = "总胆固醇目标控制值")
private String tcTarget;
@Schema(title = "总胆固醇目前监测值")
private String tcCurrent;
@Schema(title = "甘油三酯")
private String tg;
@Schema(title = "甘油三酯目标控制值")
private String tgTarget;
@Schema(title = "甘油三酯当前监测值")
private String tgCurrent;
@Schema(title = "尿酸")
private String uricAcid;
@Schema(title = "尿酸目标控制值")
private String uricAcidTarget;
@Schema(title = "尿酸当前监测值")
private String uricAcidCurrent;
@Schema(title = "同型半胱氨酸")
private String homocysteine;
@Schema(title = "同型半胱氨酸目标控制值")
private String homocysteineTarget;
@Schema(title = "同型半胱氨酸当前监测值")
private String homocysteineCurrent;
@Schema(title = "关爱联络员姓名")
private String careLiaisonName;
}
@@ -0,0 +1,20 @@
package com.renkang.anyan.model.vo;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
@Data
public class CareUserVO {
private String userId;
@Schema(title = "关爱联络员姓名")
private String careLiaisonName;
@Schema(title = "关爱联络员电话")
private String careLiaisonPhone;
@Schema(title = "关爱联络员职务")
private String careLiaisonJob;
@Schema(title = "急救人员姓名")
private String lifeguardName;
@Schema(title = "急救人员电话")
private String lifeguardPhone;
}
@@ -0,0 +1,56 @@
package com.renkang.anyan.model.vo;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import org.jeecg.common.aspect.annotation.Dict;
@Data
@Schema(title="健康小屋数据详情列表", description="健康小屋数据详情列表")
public class HealthPlaceHomDetailsVO {
/**
* 单位
*/
@Schema(title = "单位")
private String departName;
/**
* 姓名
*/
@Schema(title = "姓名")
private String name;
/**
* 检查日期
*/
@Schema(title = "检查日期")
private String checkInDate;
/**
* 检查类型 11:BMI/21:收缩压/22:舒张压/31:血糖/41:低密度脂蛋白/42:总胆固醇/43:甘油三酯/51:尿酸/61:同型半胱氨酸 等等,缺失的可以继续加
*/
@Schema(title = "检查类型 11:BMI/21:收缩压/22:舒张压/31:血糖/41:低密度脂蛋白/42:总胆固醇/43:甘油三酯/51:尿酸/61:同型半胱氨酸 等等,缺失的可以继续加")
@Dict(dicCode = "xj_check_type")
private String checkType;
/**
* 去年体检值 前一年的体检值(初始值)
*/
@Schema(title = "去年体检值 前一年的体检值(初始值)")
private String lastVal;
/**
* 控降目标 一人一档(控降目标值)
*/
@Schema(title = "控降目标 一人一档(控降目标值")
private String goalVal;
/**
* 目前测量值 目前控降数值(可和健康打卡最新值一致)
*/
@Schema(title = "目前测量值 目前控降数值(可和健康打卡最新值一致)")
private String currentVal;
/**
* 控降差值 和控降目标对比
*/
@Schema(title = "控降差值 和控降目标对比")
private String compareVal;
/**
* 是否成功空降,1:是/0.否
*/
@Schema(title = "是否成功空降,1:是/0.否")
private String successFlag;
}
@@ -0,0 +1,39 @@
package com.renkang.anyan.model.vo;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
@Data
@Schema(title="健康小屋数据VO", description="健康小屋数据VO")
public class HealthPlaceHomListVO {
/**
* id
*/
private String id;
/**
* 单位
*/
@Schema(title = "单位")
private String departName;
/**
* 地点
*/
@Schema(title = "地点")
private String address;
/**
* 经度
*/
@Schema(title = "经度")
private String lon;
/**
* 纬度
*/
@Schema(title = "纬度")
private String lat;
/**
* 建设时间 YYYY-MM-DD
*/
@Schema(title = "建设时间(YYYY-MM-DD)")
private String buildDate;
}
@@ -0,0 +1,50 @@
package com.renkang.anyan.model.vo;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
@Data
@Schema(title="新疆健康小屋对象", description="新疆健康小屋对象")
public class HealthRoomBaseVO {
/**
* id
*/
private String id;
/**
* 地址
*/
@Schema(title = "地址")
private String address;
/**
* 单位
*/
@Schema(title = "单位")
private String departName;
/**
* 经度
*/
@Schema(title = "经度")
private String lon;
/**
* 纬度
*/
@Schema(title = "纬度")
private String lat;
/**
* 建设时间 yyyy-MM-dd
*/
@Schema(title = "建设时间")
private String buildDate;
/**
* 在岗人数
*/
@Schema(title = "在岗人数")
private Integer jobNum;
/**
* 运转时间(分钟)
*/
@Schema(title = "运转时间(分钟)")
private Integer runTime;
}
@@ -0,0 +1,40 @@
package com.renkang.anyan.model.vo;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
@Data
@Schema(title="打卡人数统计", description="打卡人数统计")
public class HealthSignStatVO {
/**
* 减重打卡总人数
*/
@Schema(title = "减重打卡总人数")
private String weigtTotalCount;
/**
* 减重异常人数
*/
@Schema(title = "减重异常人数")
private String weigtAbCount;
/**
* 血压打卡总人数
*/
@Schema(title = "血压打卡总人数")
private String bpTotalCount;
/**
* 血压异常人数
*/
@Schema(title = "血压异常人数")
private String bpAbCount;
/**
* 血糖打卡总人数
*/
@Schema(title = "血糖打卡总人数")
private String bsTotalCount;
/**
* 血糖异常人数
*/
@Schema(title = "血糖异常人数")
private String bsAbCount;
}
@@ -0,0 +1,45 @@
package com.renkang.anyan.model.vo;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
@Data
@Schema(title="油田医院VO", description="油田医院VO")
public class HospitalListVO {
/**
* id
*/
@Schema(title = "id")
private String id;
/**
* 医院名称
*/
@Schema(title = "医院名称")
private String hospitalName;
/**
* 别名
*/
@Schema(title = "别名")
private String alias;
/**
* 地点
*/
@Schema(title = "地点")
private String address;
/**
* 经度
*/
@Schema(title = "经度")
private String lon;
/**
* 纬度
*/
@Schema(title = "纬度")
private String lat;
/**
* 签约时间 YYYY-MM-DD
*/
@Schema(title = "签约时间(YYYY-MM-DD)")
private String contractDate;
}
@@ -0,0 +1,14 @@
package com.renkang.anyan.model.vo;
import lombok.Data;
@Data
public class MedicalAbnormalStatisticsVO {
private Integer totalCount;
// 冠脉CTA异常人数
private Integer cardiovaAbCount;
// 头颅CTA异常人数
private Integer cerebrovAbCount;
// 冠脉ct异常人数 (未返回)
private Integer cctaAbCount;
}
@@ -1,4 +1,4 @@
package com.renkang.emergency.largeScreen.entity.vo; 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;
@@ -16,6 +16,11 @@ public class MedicalAbnormalVO {
*/ */
@Schema(title = "姓名") @Schema(title = "姓名")
private String name; private String name;
/**
* 身份证号
*/
@Schema(title = "身份证号")
private String idCard;
/** /**
* 性别 * 性别
*/ */
@@ -1,4 +1,4 @@
package com.renkang.emergency.largeScreen.entity.vo; 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;
@@ -10,14 +10,14 @@ public class MedicalPeopleNumStatisticsVO {
*/ */
@Schema(title = "医院名称") @Schema(title = "医院名称")
private String hospitalName; private String hospitalName;
/**
* 别名 为了显示或别的目的医院名称过长导致不好显示最好增加短的别名如果没有则和hospitalName保持一致
*/
@Schema(title = "别名")
private String alias;
/** /**
* 已参检人数 * 已参检人数
*/ */
@Schema(title = "已参检人数") @Schema(title = "已参检人数")
private Integer checkedCount; private Integer checkedCount;
/**
* 应检人数 (可能无法提供 先冗余)
*/
@Schema(title = "应检人数 (可能无法提供 先冗余)")
private Integer totalCount;
} }
@@ -0,0 +1,41 @@
package com.renkang.anyan.model.vo;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import lombok.EqualsAndHashCode;
@EqualsAndHashCode(callSuper = true)
@Data
@Schema(title="健康打卡体重异常数据详细", description="健康打卡体重异常数据详细")
public class WeightPressureList extends XjUserBaseInfo {
/**
*腰围(CM
*/
@Schema(title = "腰围(CM")
private String waist;
/**
*身高(M
*/
@Schema(title = "身高(M")
private String height;
/**
*体重(KG
*/
@Schema(title = "体重(KG")
private String weight;
/**
*BMI
*/
@Schema(title = "BMI")
private String bmi;
/**
*BMI是否异常(1:是/0:否)
*/
@Schema(title = "BMI是否异常(1:是/0:否)")
private String bmiFlag;
/**
*填报时间 YYYY-MM-DD
*/
@Schema(title = "填报时间")
private String inputDate;
}
@@ -0,0 +1,36 @@
package com.renkang.anyan.model.vo;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
/**
* 员工基本信息
*/
@Data
public class XjUserBaseInfo {
/**
*单位
*/
@Schema(title = "单位")
private String departName;
/**
*姓名
*/
@Schema(title = "姓名")
private String name;
/**
*身份证号
*/
@Schema(title = "身份证号")
private String idCard;
/**
*年龄
*/
@Schema(title = "年龄")
private String age;
/**
*性别
*/
@Schema(title = "性别")
private String sex;
}
@@ -0,0 +1,25 @@
package com.renkang.anyan.utils;
import cn.hutool.core.bean.BeanUtil;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.renkang.anyan.model.vo.AnYanResult;
import java.util.stream.Collectors;
/**
* IPage 类型装换
* @param <T>
*/
public class PageResultToBeanUtil<T> {
public IPage<T> transform(AnYanResult<Object> result, Class<T> tClass) {
IPage<?> page = BeanUtil.toBean(result.getData(), Page.class);
IPage<T> iPage = new Page<>();
BeanUtil.copyProperties(page,iPage,"records");
if(page.getTotal() > 0){
iPage.setRecords(page.getRecords().stream().map(o ->BeanUtil.toBean(o, tClass)).collect(Collectors.toList()));
}
return iPage;
}
}
@@ -0,0 +1,47 @@
package com.renkang.anyan.utils;
import cn.hutool.crypto.Mode;
import cn.hutool.crypto.Padding;
import cn.hutool.crypto.symmetric.SM4;
/**
* XJ安眼平台提供的数据加密工具类 仅用于安眼系统外部登录接口的对接
*/
public class SM4Utils {
private static final String privateKey = "5tgb6yhn7ujm8ik,";
// private static final String privateKey = "123456789qwertyu";
private static final String iv = "5tgb6yhn7ujm8ik,";
// private static final String iv = "abcdefghi1234567";
private static SM4 sm4 = null;
private static SM4 getInstance() {
if (sm4 == null) {
sm4 = new SM4(Mode.CBC, Padding.PKCS5Padding, privateKey.getBytes(), iv.getBytes());
}
return sm4;
}
/**
* @description 加密
* @author xj
* @time 2023/8/17
*/
public static String encryptSM4(String needEncryptText) {
return getInstance().encryptBase64(needEncryptText);
}
/**
* @description 解密
* @author xj
* @time 2023/8/17
*/
public static String decryptSM4(String encryptText) {
if (encryptText == null || encryptText.isEmpty()) return "";
return getInstance().decryptStr(encryptText);
}
}
@@ -0,0 +1,115 @@
package com.renkang.anyan.utils;
import cn.hutool.core.util.StrUtil;
import javax.crypto.Cipher;
import java.net.URI;
import java.net.URISyntaxException;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.security.KeyFactory;
import java.security.PublicKey;
import java.security.spec.X509EncodedKeySpec;
import java.util.Base64;
/**
* 安眼平台提供的数据加密工具类 仅用于安眼系统外部登录接口的对接
*/
public class StringUtils {
/**
* 公钥加密方法
*
* @param publicKeyText 公钥
* @param text 将要加密的信息
* @return Base64编码的字符串
* @throws Exception
*/
public static String encryptByPublicKey(String publicKeyText, String text) throws Exception {
// 返回按照 X.509 标准进行编码的密钥的字节
// x509EncodedKeySpec2 是一种规范、规格
X509EncodedKeySpec x509EncodedKeySpec2 = new X509EncodedKeySpec(org.apache.commons.codec.binary.Base64.decodeBase64(publicKeyText));
KeyFactory keyFactory = KeyFactory.getInstance("RSA");
// 让密钥工厂按照指定的 规范 生成公钥
PublicKey publicKey = keyFactory.generatePublic(x509EncodedKeySpec2);
Cipher cipher = Cipher.getInstance("RSA");
// 对加密初始化,使用加密模式,公钥加密
// Cipher.ENCRYPT_MODE 可以用 1 代替
cipher.init(Cipher.ENCRYPT_MODE, publicKey);
byte[] result = cipher.doFinal(text.getBytes());
// 返回 Base64编码的字符串
return org.apache.commons.codec.binary.Base64.encodeBase64String(result);
}
public static String base64Encode(String input) {
return Base64.getEncoder().encodeToString(input.getBytes());
}
public static String base64Decode(String encodedInput) {
byte[] decodedBytes = Base64.getDecoder().decode(encodedInput);
return new String(decodedBytes);
}
public static String preprocessJsonString(String jsonStr) {
String a = StrUtil.removeAll(jsonStr, ' ', '\t', '\r', '\n');
String[] searchList = {"\":\"", "\",\"", "{\"", "\"}", "\":"};
String[] replacementList = {"$is$", "$center$", "$left$", "$right$", "$start$"};
String b = org.apache.commons.lang3.StringUtils.replaceEach(a, searchList, replacementList);
String c = b.replace("\"", "\\\"");
return org.apache.commons.lang3.StringUtils.replaceEach(c, replacementList, searchList);
}
/**
* 提取文件名中的扩展名
*
* @param fileName 文件名
* @param needDot 需要点
* @return 文件扩展名,如果文件名中没有扩展名则返回 null
*/
public static String getFileExtension(String fileName, boolean needDot) {
// 检查文件名是否为 null 或空字符串
if (fileName == null || fileName.isEmpty()) {
return null;
}
// 找到最后一个点的位置
int lastDotIndex = fileName.lastIndexOf('.');
// 如果找不到点,或者点在字符串的第一个位置,返回 null
if (lastDotIndex == -1 || lastDotIndex == 0) {
return null;
}
return fileName.substring(needDot ? lastDotIndex : (lastDotIndex + 1));
}
/**
* 获取路径的最后一个元素(文件名或目录名)
*
* @param pathOrUrl 文件路径或 URL
* @return 路径的最后一个元素
*/
public static String baseName(String pathOrUrl) {
if (pathOrUrl == null || pathOrUrl.isEmpty()) {
return "";
}
try {
// 尝试将字符串解析为 URI
URI uri = new URI(pathOrUrl);
// 获取 URI 的路径部分
String path = uri.getPath();
// 使用 Path 类获取路径的最后一个元素
Path filePath = Paths.get(path);
return filePath.getFileName().toString();
} catch (URISyntaxException e) {
// 如果解析 URI 失败,则直接将字符串作为路径处理
Path filePath = Paths.get(pathOrUrl);
return filePath.getFileName().toString();
}
}
}
@@ -76,6 +76,9 @@ public class ConDoctorVO {
@Schema(title = "执业经历") @Schema(title = "执业经历")
private String experience; private String experience;
@Schema(title = "擅长")
private String goodAt;
@Schema(title = "排序") @Schema(title = "排序")
private Integer sort; private Integer sort;
@@ -58,5 +58,7 @@ public interface RequestPrefix {
String sessionReservationDate = BASE + "/sessionReservationDate"; String sessionReservationDate = BASE + "/sessionReservationDate";
String screen = BASE + "/screen";
} }
@@ -0,0 +1,133 @@
package com.renkang.consultation.api.controller;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.metadata.OrderItem;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.renkang.consultation.api.RequestPrefix;
import com.renkang.consultation.api.service.ConHelperApiService;
import com.renkang.consultation.dto.ConDoctorDTO;
import com.renkang.consultation.entity.ConDoctor;
import com.renkang.consultation.entity.ConSession;
import com.renkang.consultation.service.IConDoctorService;
import com.renkang.consultation.service.IConSessionService;
import com.renkang.consultation.vo.ConDoctorVO;
import com.renkang.consultation.vo.ConHelperCustomUserVO;
import com.renkang.emergency.entity.EmergencyCenterResource;
import io.swagger.v3.oas.annotations.Operation;
import org.apache.commons.collections4.CollectionUtils;
import org.jeecg.common.api.vo.Result;
import org.jeecg.common.constant.CommonConstant;
import org.jeecg.modules.manager.SysCacheImpl;
import org.jeecg.modules.system.entity.SysDepart;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@RestController
@RequestMapping(RequestPrefix.screen)
public class ConScreenApiController {
@Autowired
private IConDoctorService conDoctorService;
@Autowired
private IConSessionService conSessionService;
@Autowired
private SysCacheImpl sysCache;
@Operation(summary = "查询统计数", description = "查询统计数")
@GetMapping("/queryStaticCount")
public Result<?> queryStaticCount() {
Map<String,Long> map = new HashMap<>();
//入驻医生数
LambdaQueryWrapper<ConDoctor> dockerWrapper = new LambdaQueryWrapper<>();
dockerWrapper.eq(ConDoctor::getDoctorStatus, "1");//只查有效的
Long docCount = conDoctorService.count(dockerWrapper);
map.put("docCount",docCount);
//累计咨询
Long consultCount = conSessionService.count();
map.put("consultCount",consultCount);
//累计咨询人数
LambdaQueryWrapper<ConSession> sessionWrapper = new LambdaQueryWrapper<>();
sessionWrapper.in(ConSession::getSessionType, "1", "2");
sessionWrapper.groupBy(ConSession::getFromAccount);
sessionWrapper.select(ConSession::getFromAccount);
List<ConSession> fromAccountList = conSessionService.list(sessionWrapper);
map.put("consultPersonCount", (long) fromAccountList.size());
return Result.OK(map);
}
@Operation(summary = "分页查询入驻专家", description = "分页查询入驻专家")
@GetMapping("/queryPageList")
public Result<IPage<ConDoctorVO>> queryPageList(ConDoctorDTO dto) {
Page<ConDoctor> page = new Page<>(dto.getPageNo(), dto.getPageSize());
// dto.setDoctorTitle("2");//主任医师
dto.setDoctorStatus("1");//有效
List<OrderItem> orders = new ArrayList<>();
orders.add(OrderItem.asc("sort"));
page.setOrders( orders);
IPage<ConDoctorVO> pageList = conDoctorService.queryPageList(page, dto);
return Result.OK(pageList);
}
@Operation(summary = "查询全部入驻专家", description = "查询全部入驻专家")
@GetMapping("/queryDocList")
public Result<List<ConDoctorVO>> queryAllDocList() {
ConDoctorDTO dto = new ConDoctorDTO();
dto.setPageNo(1);
dto.setPageSize(1000);//懒得重写了,这里复用分页查询,专家数应该不会超过1000
Page<ConDoctor> page = new Page<>(dto.getPageNo(), dto.getPageSize());
// dto.setDoctorTitle("2");//主任医师
dto.setDoctorStatus("1");//有效
List<OrderItem> orders = new ArrayList<>();
orders.add(OrderItem.asc("sort"));
page.setOrders( orders);
IPage<ConDoctorVO> pageList = conDoctorService.queryPageList(page, dto);
if(!CollectionUtils.isEmpty(pageList.getRecords())){
return Result.OK(pageList.getRecords());
}
return Result.OK();
}
@Operation(summary = "医院专家数量统计", description = "医院专家数量统计")
@GetMapping("/queryDocCountStat")
public Result<?> queryDocCountStat() {
List<Map<String, Object>> mapList = conDoctorService.getDocCountStatList();
return Result.OK(mapList);
}
@Operation(summary = "单位咨询数量统计", description = "单位咨询数量统计")
@GetMapping("/queryDeptCountStat")
public Result<?> queryDeptCountStat() {
List<Map<String, Object>> mapList = conDoctorService.getDeptCountStatList();
if(!CollectionUtils.isEmpty(mapList)){
for (Map<String, Object> map : mapList) {
SysDepart depart = sysCache.getDepartByOrgCode(map.get("orgCode").toString());
if(depart != null){
map.put("departName", depart.getDepartName());
}
}
}
return Result.OK(mapList);
}
@Operation(summary = "科室咨询数量统计", description = "科室咨询数量统计")
@GetMapping("/queryDepartmentCountStat")
public Result<?> queryDepartmentCountStat() {
List<Map<String, Object>> mapList = conDoctorService.getDepartmentCountStatList();
return Result.OK(mapList);
}
@Operation(summary = "医院咨询数量统计", description = "医院咨询数量统计")
@GetMapping("/queryHospitalCountStat")
public Result<?> queryHospitalCountStat() {
List<Map<String, Object>> mapList = conDoctorService.getHospitalCountStatList();
return Result.OK(mapList);
}
}
@@ -214,4 +214,89 @@ public interface ConDoctorMapper extends BaseMapper<ConDoctor> , MPJBaseMapper<C
String selectDoctorNoExist(@Param("doctorNo") String doctorNo,@Param("doctorId") String doctorId); String selectDoctorNoExist(@Param("doctorNo") String doctorNo,@Param("doctorId") String doctorId);
@Select("SELECT\n" +
" * \n" +
"FROM\n" +
" (\n" +
" SELECT\n" +
" conr.resource_name hospitalName,\n" +
" count(doct.resource_id) docCount \n" +
" FROM\n" +
" con_resource conr\n" +
" LEFT JOIN con_doctor doct ON conr.id = doct.resource_id \n" +
" WHERE conr.del_flag = 0 and doct.del_flag = 0 and doct.status = '1' \n" +
" GROUP BY conr.id) a\n" +
"ORDER BY\n" +
" docCount DESC")
List<Map<String, Object>> getDocCountStatList();
@Select("SELECT\n" +
" * \n" +
"FROM\n" +
" (\n" +
" SELECT\n" +
" LEFT(org_code, 6) orgCode,\n" +
" SUM(CASE WHEN c.session_type = '2' THEN 1 ELSE 0 END) AS consultHelperCount,\n" +
" SUM(CASE WHEN c.session_type = '1' THEN 1 ELSE 0 END) AS consultDocCount\n" +
" FROM\n" +
" con_session c \n" +
" WHERE\n" +
" c.del_flag = 0 \n" +
" AND c.STATUS = '1' \n" +
" AND (c.tf_reply = 1 OR c.user_tf_reply = 1) \n" +
" AND c.session_type IN ('1', '2') \n" +
" AND length(c.org_code) >= 6 \n" +
" GROUP BY\n" +
" LEFT(org_code, 6)) a \n" +
"ORDER BY\n" +
" consultHelperCount DESC")
List<Map<String, Object>> getDeptCountStatList();
@Select("SELECT\n" +
" * \n" +
"FROM\n" +
" (\n" +
" SELECT\n" +
" cre.department_name departmentName,\n" +
" SUM(CASE WHEN c.content_type = '1' THEN 1 ELSE 0 END) AS consultImCount,\n" +
" SUM(CASE WHEN c.content_type = '2' THEN 1 ELSE 0 END) AS consultVedioCount\n" +
" FROM\n" +
" con_session c\n" +
" LEFT JOIN con_doctor d ON c.to_account = d.id\n" +
" LEFT JOIN con_department cre ON d.department_id = cre.id \n" +
" WHERE\n" +
" c.del_flag = 0 \n" +
" AND c.STATUS = '1' \n" +
" AND (c.tf_reply = 1 OR c.user_tf_reply = 1) \n" +
" AND c.session_type = '1' \n" +
" AND cre.id IS NOT NULL \n" +
" GROUP BY\n" +
" cre.id) a \n" +
"ORDER BY\n" +
" consultImCount DESC")
List<Map<String, Object>> getDepartmentCountStatList();
@Select("SELECT\n" +
" * \n" +
"FROM\n" +
" (\n" +
" SELECT\n" +
" cre.resource_name hospitalName,\n" +
" SUM(CASE WHEN c.content_type = '1' THEN 1 ELSE 0 END) AS consultImCount,\n" +
" SUM(CASE WHEN c.content_type = '2' THEN 1 ELSE 0 END) AS consultVedioCount\n" +
" FROM\n" +
" con_session c\n" +
" LEFT JOIN con_doctor d ON c.to_account = d.id\n" +
" LEFT JOIN con_resource cre ON d.resource_id = cre.id \n" +
" WHERE\n" +
" c.del_flag = 0 \n" +
" AND c.STATUS = '1' \n" +
" AND (c.tf_reply = 1 OR c.user_tf_reply = 1) \n" +
" AND c.session_type = '1' \n" +
" AND cre.id IS NOT NULL \n" +
" GROUP BY\n" +
" cre.id) a \n" +
"ORDER BY\n" +
" consultImCount DESC")
List<Map<String, Object>> getHospitalCountStatList();
} }
@@ -16,6 +16,7 @@ import org.springframework.web.multipart.MultipartFile;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.util.List; import java.util.List;
import java.util.Map;
/** /**
* @Description: con_doctor * @Description: con_doctor
@@ -154,4 +155,12 @@ public interface IConDoctorService extends IService<ConDoctor> {
void updateDoctorByLog(ConDoctorChangeLog changeLog); void updateDoctorByLog(ConDoctorChangeLog changeLog);
void recommendDoctor(String id, Integer type); void recommendDoctor(String id, Integer type);
List<Map<String, Object>> getDocCountStatList();
List<Map<String, Object>> getDeptCountStatList();
List<Map<String, Object>> getDepartmentCountStatList();
List<Map<String, Object>> getHospitalCountStatList();
} }
@@ -1089,4 +1089,24 @@ public class ConDoctorServiceImpl extends ServiceImpl<ConDoctorMapper, ConDoctor
doctor.setTfRecommend(String.valueOf(type)); doctor.setTfRecommend(String.valueOf(type));
this.updateDoctor(doctor); this.updateDoctor(doctor);
} }
@Override
public List<Map<String, Object>> getDocCountStatList() {
return conDoctorMapper.getDocCountStatList();
}
@Override
public List<Map<String, Object>> getDeptCountStatList() {
return conDoctorMapper.getDeptCountStatList();
}
@Override
public List<Map<String, Object>> getDepartmentCountStatList() {
return conDoctorMapper.getDepartmentCountStatList();
}
@Override
public List<Map<String, Object>> getHospitalCountStatList() {
return conDoctorMapper.getHospitalCountStatList();
}
} }
@@ -28,9 +28,18 @@ public class EmergencySocket {
private List<TblBaseHospitalVo> hospitalList; private List<TblBaseHospitalVo> hospitalList;
private String type; private String type;
private String centerId; private String centerId;
@Schema(title = "1:紧急求助 2:云坐席 3:终端报警") @Schema(title = "0:120 1:紧急求助 2:云坐席 3:终端报警")
private Integer popType; private Integer popType;
private String queue; private String queue;
private String noticeId; private String noticeId;
@Schema(title = "关爱联络员姓名")
private String careLiaisonName;
@Schema(title = "关爱联络员电话")
private String careLiaisonPhone;
@Schema(title = "急救人员姓名")
private String lifeguardName;
@Schema(title = "急救人员电话")
private String lifeguardPhone;
} }
@@ -3,15 +3,20 @@ package com.renkang.emergency.entity;
import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableLogic; import com.baomidou.mybatisplus.annotation.TableLogic;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat; import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.v3.oas.annotations.media.Schema; import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data; import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import org.jeecgframework.poi.excel.annotation.Excel; import org.jeecgframework.poi.excel.annotation.Excel;
import org.springframework.format.annotation.DateTimeFormat; import org.springframework.format.annotation.DateTimeFormat;
import java.util.Date; import java.util.Date;
@Data @Data
@TableName("emergency_health_room")
@Schema(title="新疆健康小屋", description="新疆健康小屋表")
public class EmergencyHealthRoom { public class EmergencyHealthRoom {
/** /**
@@ -31,4 +31,7 @@ public class EmergencySchedulesItem {
@Schema(title = "人员姓名") @Schema(title = "人员姓名")
private String userName; private String userName;
@Schema(title = "排序")
private Integer sort;
} }
@@ -0,0 +1,99 @@
package com.renkang.emergency.entity;
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 com.renkang.emergency.entity.dto.LargeScreenDataValueDTO;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import org.springframework.format.annotation.DateTimeFormat;
import java.io.Serializable;
import java.util.Date;
@Data
@TableName("large_screen_data")
@Accessors(chain = true)
@EqualsAndHashCode(callSuper = false)
@Schema(title = "large_screen_data对象", description = "large_screen_data")
public class LargeScreenData implements Serializable {
/**
* 主键
*/
@TableId(type = IdType.ASSIGN_ID)
@Schema(title = "主键")
private String id;
private String centerId;
/**
* 开关类型
* 最新呼入电话gross 最新受理电话alerdyreceive 突发重大伤病应急jqqz 重大伤病应急就医dbjy 累计受理totaldeal 累计处置totalacceptance
*
* 120oneTwenty 应急就医hospital
*
* 体检人数medical
*
* 减重今日打卡weightLossCountDay 减重本月打卡weightLossCountMonth 减重今日异常weightLossAbnormalCountDay 减重本月异常weightLossAbnormalCountMonth
* 血糖今日打卡bloodSugarCountDay 血糖本月打卡bloodSugarCountMonth 血糖今日异常bloodSugarAbnormalCountDay 血糖本月异常bloodSugarAbnormalCountMonth
* 血压今日打卡bloodPressureCountDay 血压本月打卡bloodPressureCountMonth 血压今日异常bloodPressureAbnormalCountDay 血压本月异常bloodPressureAbnormalCountMonth
*
* 体检总totalCount 心血管异常cardiovaAbCount 脑血管异常cerebrovAbCount 冠状CT异常cctaAbCount
*/
@Schema(title = "开关类型")
private String type;
/**
* 开启状态(0:未开启 1:开启)
*/
@Schema(title = "开启状态(0:未开启 1:开启)")
private String status;
@Schema(title = "名称(体检机构才有值)")
private String name;
@Schema(title = "")
private String value;
/**
* 创建人
*/
@Schema(title = "创建人")
private String createBy;
/**
* 创建时间
*/
@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
@DateTimeFormat(pattern = "yyyy-MM-dd")
@Schema(title = "创建时间")
private Date createTime;
/**
* 更新人
*/
@Schema(title = "更新人")
private String updateBy;
/**
* 更新时间
*/
@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd")
@DateTimeFormat(pattern = "yyyy-MM-dd")
@Schema(title = "更新时间")
private Date updateTime;
public LargeScreenData() {}
public LargeScreenData(LargeScreenDataValueDTO dto){
this.id = dto.getId();
this.centerId = dto.getCenterId();
this.type = dto.getType();
this.status = dto.getStatus();
this.name = dto.getName();
this.value = dto.getValue();
}
}
@@ -246,6 +246,34 @@ public class Order implements Serializable {
@Excel(name = "专业人头像", width = 15) @Excel(name = "专业人头像", width = 15)
@Schema(title = "专业人头像") @Schema(title = "专业人头像")
private java.lang.String majorUserAvatar; private java.lang.String majorUserAvatar;
/**
* 第二位参与的专业人员id
* PS: 新疆项目的临时解决方案 ,为满足四方通话的需求 ,可能会在发起应急的时候拉第二位专业人员加入对话
*/
@Schema(title = "第二位参与的专业人员id")
private java.lang.String majorUserTwoId;
/**
* 第二位参与的专业人员姓名
*/
@Schema(title = "第二位参与的专业人员姓名")
private java.lang.String majorUserTwoName;
/**
* 第二位参与的专业人员性别
*/
@Schema(title = "第二位参与的专业人员性别")
private java.lang.String majorUserTwoSex;
/**
* 第二位参与的专业人员电话
*/
@Schema(title = "第二位参与的专业人员电话")
private java.lang.String majorUserTwoMobile;
/**
* 第二位参与的专业人头像
*/
@Schema(title = "第二位参与的专业人头像")
private java.lang.String majorUserTwoAvatar;
/** /**
* 驻场人员id * 驻场人员id
*/ */
@@ -0,0 +1,63 @@
package com.renkang.emergency.entity;
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.Data;
import org.springframework.format.annotation.DateTimeFormat;
import java.io.Serializable;
import java.util.Date;
/**
* @Description: emergency_order_operator 应急工单操作人员表,记录工单所有参与或协助应急的人员信息
* @Author: feng
* @Date: 2025-10-24
* @Version: V1.0
*/
@Data
@TableName("emergency_order_operator")
@Schema(title = "应急工单操作人员表", description = "应急工单操作人员表")
public class OrderOperator implements Serializable {
/**
* id
*/
@TableId(type = IdType.ASSIGN_ID)
@Schema(title = "id")
private String id;
/**
* 应急工单ID
*/
@Schema(title = "应急工单ID")
private String orderId;
/**
* 人员类型(人员类型0:操作人员 1:专业人员)
*/
@Schema(title = "人员类型(人员类型0:操作人员 1:专业人员)")
private Integer operatorType;
/**
* 人员ID
*/
@Schema(title = "人员ID")
private String userId;
/**
* 参与类型(0:处理应急,1:协助应急)
*/
@Schema(title = "参与类型(0:处理应急,1:协助应急)")
private Integer joinType;
/**
* 参与应急时间
*/
@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@Schema(title = "参与应急时间")
private Date joinDate;
}
@@ -68,11 +68,24 @@ public class Resource implements Serializable {
@Schema(title = "纬度") @Schema(title = "纬度")
private BigDecimal latitude; private BigDecimal latitude;
/** /**
* 资源类型(1:油田医院 2:合作医院 3:医疗点 4: ) * 资源类型(1:油田医院 3:健康小屋 5:救护车) 202508xj 项目字典发生变化 , 使用字典resource_type ,
*/ */
@Excel(name = "资源类型(1:油田医院 2:合作医院 3:医疗点 4: )", width = 15) @Excel(name = "资源类型(1:油田医院 3:健康小屋 4:AED 5:救护车)", width = 15)
@Schema(title = "资源类型(1:油田医院 2:合作医院 3:医疗点 4: )") @Schema(title = "资源类型(1:油田医院 3:健康小屋 4:AED 5:救护车 )")
private String type; private String type;
/**
* 在岗人数
*/
@Schema(title = "在岗人数")
private Integer jobNum;
/**
* 运转时间(分钟)
*/
@Schema(title = "运转时间(分钟)")
private Integer runTime;
/** /**
* 救治范围 * 救治范围
*/ */
@@ -23,10 +23,36 @@ public class TblBaseHospitalVo {
private String type; private String type;
@Schema(title = "中心医疗点标识") @Schema(title = "中心医疗点标识")
private boolean centerResource=false; private boolean centerResource=false;
@Schema(title = "管理员/联系人姓名")
private String manageName;
@Schema(title = "管理员/联系人电话")
private String managePhone;
@Schema(title = "地址")
private String address;
private String ambulance; private String ambulance;
private String docNum; private String docNum;
private String nurseNum; private String nurseNum;
private String expertNum; private String expertNum;
private String distance; private String distance;
public TblBaseHospitalVo() {}
public TblBaseHospitalVo(Resource resource){
this.id = resource.getId();
this.name = resource.getName();
this.lat = resource.getLatitude();
this.lon = resource.getLongitude();
this.type = resource.getType();
this.address = resource.getAddress();
}
public TblBaseHospitalVo(XjAed xjAed){
this.id = xjAed.getId();
this.name = xjAed.getName();
this.lat = xjAed.getLatitude();
this.lon = xjAed.getLongitude();
this.type = "4";
this.address = xjAed.getAddress();
}
} }
@@ -0,0 +1,71 @@
package com.renkang.emergency.entity;
import com.baomidou.mybatisplus.annotation.*;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
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;
@Data
@TableName("xj_aed")
@Accessors(chain = true)
@EqualsAndHashCode(callSuper = false)
public class XjAed implements Serializable {
private static final long serialVersionUID = 1L;
@TableId(type = IdType.ASSIGN_ID)
@Schema(title = "主键")
private String id;
@Excel(name = "aed名称", width = 15)
@Schema(title = "aed名称")
private String name;
@Excel(name = "设置地点", width = 15)
@Schema(title = "设置地点")
private String address;
@Excel(name = "经度", width = 15)
@Schema(title = "经度(火星坐标系)")
private BigDecimal longitude;
@Excel(name = "纬度", width = 15)
@Schema(title = "纬度(火星坐标系)")
private BigDecimal latitude;
@Excel(name = "管理员姓名", width = 15)
@Schema(title = "管理员姓名")
private String manageName;
@Excel(name = "管理员电话", width = 15)
@Schema(title = "管理员电话")
private String managePhone;
@Schema(title = "orgCode")
private String orgCode;
@Schema(title = "orgName")
@TableField(exist = false)
private String orgName;
private Integer delFlag;
private String createBy;
@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private Date createTime;
private String updateBy;
@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private Date updateTime;
}
@@ -0,0 +1,13 @@
package com.renkang.emergency.entity.dto;
import lombok.Data;
@Data
public class LargeScreenDataValueDTO {
private String id;
private String centerId;
private String value;
private String name;
private String type;
private String status;
}
@@ -0,0 +1,157 @@
package com.renkang.emergency.entity.vo;
import lombok.Data;
@Data
public class DataDetailVO {
private String centerId;
private String module;
/**
* 服务详情
*/
/**
* 应急就医
*/
private String emergencyNum;
private String emergencyNumStatus;
/**
* 重大伤病
*/
private String illNum;
private String illNumStatus;
/**
* 受理电话
*/
private String latestAcceptCall;
private String latestAcceptCallStatus;
/**
* 呼入电话
*/
private String latestCall;
private String latestCallStatus;
/**
* 累计受理
*/
private String totalAccept;
private String totalAcceptStatus;
/**
* 累计处置
*/
private String totalDisposal;
private String totalDisposalStatus;
/**
* 主诉分类
*/
/**
* 应急就医
*/
private String emergencyCount;
private String emergencyCountStatus;
/**
* 120
*/
private String hospitalCount;
private String hospitalCountStatus;
/**
* 健康打卡人数
*/
/**
* 减重今日打卡人数
*/
private String weightLossCountDay;
private String weightLossCountDayStatus;
/**
* 减重本月打卡人数
*/
private String weightLossCountMonth;
private String weightLossCountMonthStatus;
/**
* 减重今日异常人数
*/
private String weightLossAbnormalCountDay;
private String weightLossAbnormalCountDayStatus;
/**
* 减重本月异常人数
*/
private String weightLossAbnormalCountMonth;
private String weightLossAbnormalCountMonthStatus;
/**
* 血糖今日打卡人数
*/
private String bloodSugarCountDay;
private String bloodSugarCountDayStatus;
/**
* 血糖本月打卡人数
*/
private String bloodSugarCountMonth;
private String bloodSugarCountMonthStatus;
/**
* 血糖今日异常人数
*/
private String bloodSugarAbnormalCountDay;
private String bloodSugarAbnormalCountDayStatus;
/**
* 血糖本月异常人数
*/
private String bloodSugarAbnormalCountMonth;
private String bloodSugarAbnormalCountMonthStatus;
/**
* 血压今日打卡人数
*/
private String bloodPressureCountDay;
private String bloodPressureCountDayStatus;
/**
* 血压本月打卡人数
*/
private String bloodPressureCountMonth;
private String bloodPressureCountMonthStatus;
/**
* 血压今日异常人数
*/
private String bloodPressureAbnormalCountDay;
private String bloodPressureAbnormalCountDayStatus;
/**
* 血压本月异常人数
*/
private String bloodPressureAbnormalCountMonth;
private String bloodPressureAbnormalCountMonthStatus;
/**
* 体检数据
*/
/**
* 体检总人数
*/
private String totalCount;
private String totalCountStatus;
/**
* 心血管异常人数
*/
private String cardiovaAbCount;
private String cardiovaAbCountStatus;
/**
* 脑血管异常人数
*/
private String cerebrovAbCount;
private String cerebrovAbCountStatus;
/**
* 冠状ct异常人数
*/
private String cctaAbCount;
private String cctaAbCountStatus;
}
@@ -0,0 +1,22 @@
package com.renkang.emergency.entity.vo;
import com.renkang.emergency.entity.LargeScreenData;
import lombok.Data;
@Data
public class MedicalDataVO {
private String id;
private String centerId;
private String name;
private String status;
private String count;
public MedicalDataVO() {}
public MedicalDataVO(LargeScreenData data) {
id = data.getId();
centerId = data.getCenterId();
name = data.getName();
count = data.getValue();
status = data.getStatus();
}
}
@@ -7,6 +7,7 @@ import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data; import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat; import org.springframework.format.annotation.DateTimeFormat;
import java.util.Comparator;
import java.util.Date; import java.util.Date;
import java.util.List; import java.util.List;
import java.util.stream.Collectors; import java.util.stream.Collectors;
@@ -29,10 +30,16 @@ public class WeekDataVO {
private List<EmergencySchedulesItem> professionalUserList; private List<EmergencySchedulesItem> professionalUserList;
public List<EmergencySchedulesItem> getOperationUserList(List<EmergencySchedulesItem> itemList) { public List<EmergencySchedulesItem> getOperationUserList(List<EmergencySchedulesItem> itemList) {
return itemList.stream().filter(item -> "0".equals(item.getUserType())).collect(Collectors.toList()); return itemList.stream()
.filter(item -> "0".equals(item.getUserType()))
.sorted(Comparator.comparing(EmergencySchedulesItem::getSort)) // 根据 sort 字段升序排序
.collect(Collectors.toList());
} }
public List<EmergencySchedulesItem> getProfessionalUserList(List<EmergencySchedulesItem> itemList) { public List<EmergencySchedulesItem> getProfessionalUserList(List<EmergencySchedulesItem> itemList) {
return itemList.stream().filter(item -> "1".equals(item.getUserType())).collect(Collectors.toList()); return itemList.stream()
.filter(item -> "1".equals(item.getUserType()))
.sorted(Comparator.comparing(EmergencySchedulesItem::getSort)) // 根据 sort 字段升序排序
.collect(Collectors.toList());
} }
} }
@@ -28,7 +28,14 @@
<groupId>com.renkang</groupId> <groupId>com.renkang</groupId>
<artifactId>health-im-api</artifactId> <artifactId>health-im-api</artifactId>
</dependency> </dependency>
<dependency>
<groupId>com.renkang</groupId>
<artifactId>xj-anyan-api</artifactId>
</dependency>
<dependency>
<groupId>com.renkang</groupId>
<artifactId>health-watch-api</artifactId>
</dependency>
</dependencies> </dependencies>
<build> <build>
<plugins> <plugins>
@@ -4,6 +4,7 @@ import com.renkang.emergency.api.RequestPrefix;
import com.renkang.emergency.api.service.EmergencyResourceApiService; import com.renkang.emergency.api.service.EmergencyResourceApiService;
import com.renkang.emergency.bean.response.ResourceHome; import com.renkang.emergency.bean.response.ResourceHome;
import com.renkang.emergency.entity.EmergencyResourceDO; import com.renkang.emergency.entity.EmergencyResourceDO;
import com.renkang.emergency.largeScreen.entity.vo.LargeScreenMap;
import org.jeecg.common.api.vo.Result; import org.jeecg.common.api.vo.Result;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.GetMapping;
@@ -33,9 +34,9 @@ public class EmergencyResourceApiController {
* @return result * @return result
*/ */
@GetMapping("/home") @GetMapping("/home")
public Result<ResourceHome> home(@RequestParam(required = false) String type, public Result<List<LargeScreenMap>> home(@RequestParam(required = false) String type,
@RequestParam(required = false) Double longitude, @RequestParam(required = false) Double longitude,
@RequestParam(required = false) Double latitude) { @RequestParam(required = false) Double latitude) {
return Result.ok(emergencyResourceApiService.listResourceByType(type, longitude, latitude)); return Result.ok(emergencyResourceApiService.listResourceByType(type, longitude, latitude));
} }
@@ -2,6 +2,7 @@ package com.renkang.emergency.api.service;
import com.renkang.emergency.bean.response.ResourceHome; import com.renkang.emergency.bean.response.ResourceHome;
import com.renkang.emergency.entity.EmergencyResourceDO; import com.renkang.emergency.entity.EmergencyResourceDO;
import com.renkang.emergency.largeScreen.entity.vo.LargeScreenMap;
import org.jeecg.common.api.vo.Result; import org.jeecg.common.api.vo.Result;
import java.util.List; import java.util.List;
@@ -11,7 +12,7 @@ import java.util.List;
* @date 2023-04-25 13:07 * @date 2023-04-25 13:07
*/ */
public interface EmergencyResourceApiService { public interface EmergencyResourceApiService {
ResourceHome listResourceByType(String type, Double longitude, Double latitude); List<LargeScreenMap> listResourceByType(String type, Double longitude, Double latitude);
String sessionNow(String userId); String sessionNow(String userId);
@@ -21,7 +21,6 @@ import com.renkang.emergency.mapper.*;
import com.renkang.emergency.service.IEmergencyCenterService; import com.renkang.emergency.service.IEmergencyCenterService;
import com.renkang.emergency.service.ISysNotifySmsPhoneService; import com.renkang.emergency.service.ISysNotifySmsPhoneService;
import com.renkang.emergency.service.ITblAmbulanceGpsService; import com.renkang.emergency.service.ITblAmbulanceGpsService;
import com.renkang.emergency.util.CodeConstant;
import com.renkang.emergency.util.DateUtils; import com.renkang.emergency.util.DateUtils;
import com.renkang.emergency.websocket.WebSocket; import com.renkang.emergency.websocket.WebSocket;
import com.renkang.im.api.IMHelloApi; import com.renkang.im.api.IMHelloApi;
@@ -31,17 +30,13 @@ import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.collections4.CollectionUtils;
import org.apache.shiro.SecurityUtils; import org.apache.shiro.SecurityUtils;
import org.jeecg.bean.request.ListUser; import org.jeecg.bean.request.ListUser;
import org.jeecg.common.api.dto.message.BusTemplateMessageDTO;
import org.jeecg.common.api.vo.Result; import org.jeecg.common.api.vo.Result;
import org.jeecg.common.constant.CommonConstant; import org.jeecg.common.constant.CommonConstant;
import org.jeecg.common.system.api.ISysBaseAPI; import org.jeecg.common.system.api.ISysBaseAPI;
import org.jeecg.common.system.vo.LoginUser; import org.jeecg.common.system.vo.LoginUser;
import org.jeecg.common.system.vo.LoginUserNew; import org.jeecg.common.system.vo.LoginUserNew;
import org.jeecg.common.system.vo.SysDepartModel;
import org.jeecg.global.GlobalUtils; import org.jeecg.global.GlobalUtils;
import org.jeecg.modules.manager.ISysCache; import org.jeecg.modules.manager.ISysCache;
import org.jeecg.modules.system.entity.SysDepart;
import org.jeecg.modules.system.entity.SysUser;
import org.parboiled.common.StringUtils; import org.parboiled.common.StringUtils;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
@@ -214,7 +209,8 @@ public class EmergencyApiServiceImpl implements EmergencyApiService {
Stat stat = new Stat(); Stat stat = new Stat();
stat.setCompletionRate(getCompletionRate(userId, personType)); stat.setCompletionRate(getCompletionRate(userId, personType));
stat.setTotalNum(getTotalNum(userId, personType)); stat.setTotalNum(getTotalNum(userId, personType));
stat.setDutyTeamNum(getDutyTeamNum()); // stat.setDutyTeamNum(getDutyTeamNum());
stat.setDutyTeamNum(getDutyTeamNumV2(userId));
stat.setTimelinessRate(getTimelinessRate(userId)); stat.setTimelinessRate(getTimelinessRate(userId));
return stat; return stat;
} }
@@ -232,6 +228,11 @@ public class EmergencyApiServiceImpl implements EmergencyApiService {
return onDutyPerson; return onDutyPerson;
} }
private Integer getDutyTeamNumV2(String userId) {
Integer num = emergencySeriousDiseaseMapper.dutyTeam(userId);
return num == null ? 0 : num;
}
private CenterUser findOnDutyUser(boolean isDefaultCenter) { private CenterUser findOnDutyUser(boolean isDefaultCenter) {
EmergencyCenter emergencyCenter = getEmergencyCenter(isDefaultCenter); EmergencyCenter emergencyCenter = getEmergencyCenter(isDefaultCenter);
CenterUser centerUser = new CenterUser(); CenterUser centerUser = new CenterUser();
@@ -687,14 +688,17 @@ public class EmergencyApiServiceImpl implements EmergencyApiService {
order.setSalvageUserIdCard(loginUser.getIdCard()); order.setSalvageUserIdCard(loginUser.getIdCard());
order.setSalvageUserDepart(loginUser.getOrgCode()); order.setSalvageUserDepart(loginUser.getOrgCode());
order.setSalvageUserAvatar(loginUser.getAvatar()); order.setSalvageUserAvatar(loginUser.getAvatar());
// 大屏推送及发送短信
EmergencySocket socket = new EmergencySocket();
// 如果是120 插入应急中心 // 如果是120 插入应急中心
if (StrUtil.isBlank(emergencyCall.getCenterId()) && EmergencyConstants.CALL_TYPE_0.equals(emergencyCall.getCallType())) { if (StrUtil.isBlank(emergencyCall.getCenterId()) && EmergencyConstants.CALL_TYPE_0.equals(emergencyCall.getCallType())) {
Call call = officerOnDuty(); Call call = officerOnDuty();
order.setCenterId(call.getCenterId()); order.setCenterId(call.getCenterId());
socket.setPopType(0);
}else {
socket.setPopType(1);
} }
orderMapper.insert(order); orderMapper.insert(order);
// 大屏推送及发送短信
EmergencySocket socket = new EmergencySocket();
socket.setType(emergencyCall.getCallType()); socket.setType(emergencyCall.getCallType());
socket.setCenterId(emergencyCall.getCenterId()); socket.setCenterId(emergencyCall.getCenterId());
socket.setOrgCode(loginUser.getOrgCode()); socket.setOrgCode(loginUser.getOrgCode());
@@ -740,12 +744,10 @@ public class EmergencyApiServiceImpl implements EmergencyApiService {
@Override @Override
public Result<Map<String, Object>> createGroupMag(String name, String longitude, String latitude, String type) { public Result<Map<String, Object>> createGroupMag(String name, String longitude, String latitude, String type) {
LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal(); LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
//查是否有已经存在的应急工单,有则直接返回相关信息
Order order = emergencyResourceApiServiceImpl.sessionNowSession(sysUser.getId()); Order order = emergencyResourceApiServiceImpl.sessionNowSession(sysUser.getId());
List<String> userList = new ArrayList<>();
List<String> userList = new ArrayList<>(2);
if (order != null) { if (order != null) {
Map res = new HashMap<>(); Map res = new HashMap<>();
res.put("userId", sysUser.getId()); res.put("userId", sysUser.getId());
@@ -753,30 +755,38 @@ public class EmergencyApiServiceImpl implements EmergencyApiService {
res.put("tfNew", "0"); res.put("tfNew", "0");
userList.add(order.getOperationUserId()); userList.add(order.getOperationUserId());
userList.add(order.getMajorUserId()); userList.add(order.getMajorUserId());
if(null != order.getMajorUserTwoId()){
userList.add(order.getMajorUserTwoId());
}
res.put("member", userList); res.put("member", userList);
res.put("id", order.getId()); res.put("id", order.getId());
return Result.OK(res); return Result.OK(res);
} }
// 当前值班人员 // 查询当前应急中心值班人员
Call rs = this.officerOnDuty(); Call rs = this.officerOnDuty();
if (rs == null || CollectionUtils.isEmpty(rs.getMajors()) || CollectionUtils.isEmpty(rs.getOperators())) { if (rs == null || CollectionUtils.isEmpty(rs.getMajors()) || CollectionUtils.isEmpty(rs.getOperators())) {
return Result.error("没有接受方人员!"); return Result.error("没有接受方人员!");
} }
List<String> yesIds = new ArrayList<>();
String majorsId = rs.getMajors().get(0).getUserId(); String majorsId = rs.getMajors().get(0).getUserId();
String operatorsId = rs.getOperators().get(0).getUserId(); String operatorsId = rs.getOperators().get(0).getUserId();
String majorsTwoId = null;
List<String> yesIds = new ArrayList<>(); if(rs.getMajors().size() > 1){
//20250926前是 多个值班人员随机取第一个 , 后改成取两个专业人员 , 将两个专业人员都拉入群聊
majorsTwoId = rs.getMajors().get(1).getUserId();
yesIds.add(majorsTwoId);
userList.add(majorsTwoId);
}
userList.add(operatorsId);
userList.add(majorsId);
yesIds.add(sysUser.getId()); yesIds.add(sysUser.getId());
yesIds.add(majorsId); yesIds.add(majorsId);
yesIds.add(operatorsId); yesIds.add(operatorsId);
//获取参与应急的人员信息
ConSessionRequestDO conSessionRequestDO = selectConSessionRequestDO(yesIds, "", name); ConSessionRequestDO conSessionRequestDO = selectConSessionRequestDO(yesIds, "", name);
conSessionRequestDO.setUserId(sysUser.getId()); conSessionRequestDO.setUserId(sysUser.getId());
//调用IM创建群组
Result<Map<String, Object>> imrs = iMHelloApi.creatGroupMagNew(conSessionRequestDO); Result<Map<String, Object>> imrs = iMHelloApi.creatGroupMagNew(conSessionRequestDO);
boolean isSuccess = imrs.isSuccess(); boolean isSuccess = imrs.isSuccess();
if (!isSuccess) { if (!isSuccess) {
@@ -784,28 +794,63 @@ public class EmergencyApiServiceImpl implements EmergencyApiService {
} }
String sessionId = (String) imrs.getResult().get("groupId"); String sessionId = (String) imrs.getResult().get("groupId");
String callType = StrUtil.isNotBlank(type) ? "2" : "1"; String callType = StrUtil.isNotBlank(type) ? "2" : "1";
//发送IM 提醒消息
sendInitMsg(sessionId, callType, sysUser.getId()); sendInitMsg(sessionId, callType, sysUser.getId());
EmergencyCall emergencyCall = new EmergencyCall(); EmergencyCall emergencyCall = new EmergencyCall();
emergencyCall.setCallType(callType); emergencyCall.setCallType(callType);
emergencyCall.setLongitude(Double.valueOf(longitude)); emergencyCall.setLongitude(Double.valueOf(longitude));
emergencyCall.setLatitude(Double.valueOf(latitude)); emergencyCall.setLatitude(Double.valueOf(latitude));
emergencyCall.setCenterId(rs.getCenterId()); emergencyCall.setCenterId(rs.getCenterId());
//保存应急工单
String orderId = this.call(emergencyCall); String orderId = this.call(emergencyCall);
CallBack callBack = new CallBack(); //保存参与应急的人员信息 PS: 不想大改之前的代码逻辑此处 没有将同一条记录的赋值逻辑合并
callBack.setOrderId(orderId); saveOderOperationInfo(orderId,sessionId,majorsId,operatorsId,majorsTwoId,rs.getCenterId(),conSessionRequestDO.getAccountList());
callBack.setMajorUserId(majorsId);
callBack.setOperationUserId(operatorsId);
callBack.setSessionId(sessionId);
callBack.setCenterId(rs.getCenterId());
this.callBack(callBack);
userList.add(operatorsId);
userList.add(majorsId);
imrs.getResult().put("member", userList); imrs.getResult().put("member", userList);
imrs.getResult().put("tfNew", "1"); imrs.getResult().put("tfNew", "1");
imrs.getResult().put("id", orderId); imrs.getResult().put("id", orderId);
return imrs; return imrs;
} }
public void saveOderOperationInfo(String orderId, String sessionId, String majorsId, String operatorsId, String majorsTwoId,
String centerId ,List<LoginUserNew> accountList) {
Map<String,LoginUserNew> userMap = accountList.stream().collect(Collectors.toMap(LoginUserNew::getId, user -> user));
Date now = new Date();
Order order = new Order();
order.setId(orderId);
order.setSessionId(sessionId);
order.setSessionNow(true);
order.setOrderStatus(EmergencyConstants.ORDER_STATUS_1_NEW);
order.setIsDispatch(EmergencyConstants.ORDER_SEND_STATUS_1);
order.setCenterId(centerId);
if(null != operatorsId && null != userMap.get(operatorsId)){
LoginUserNew operationUser = userMap.get(operatorsId);
order.setOperationUserId(operatorsId);
order.setOperationUserName(handleNull(operationUser).getRealname());
order.setOperationUserSex(ifNullReturnEmpty(handleNull(operationUser).getSex()));
order.setOperationUserMobile(handleNull(operationUser).getPhone());
order.setOperationUserAvatar(handleNull(operationUser).getAvatar());
order.setOperationResponseTime(now);
}
if(null != majorsId && null != userMap.get(majorsId)){
LoginUserNew majorUser = userMap.get(majorsId);
order.setMajorUserId(majorsId);
order.setMajorUserName(handleNull(majorUser).getRealname());
order.setMajorUserSex(ifNullReturnEmpty(handleNull(majorUser).getSex()));
order.setMajorUserMobile(handleNull(majorUser).getPhone());
order.setMajorUserAvatar(handleNull(majorUser).getAvatar());
order.setMajorResponseTime(now);
}
if(null != majorsTwoId && null != userMap.get(majorsTwoId)){
LoginUserNew majorUserTwo = userMap.get(majorsTwoId);
order.setMajorUserTwoId(majorsTwoId);
order.setMajorUserTwoName(handleNull(majorUserTwo).getRealname());
order.setMajorUserTwoSex(ifNullReturnEmpty(handleNull(majorUserTwo).getSex()));
order.setMajorUserTwoMobile(handleNull(majorUserTwo).getPhone());
order.setMajorUserTwoAvatar(handleNull(majorUserTwo).getAvatar());
}
orderMapper.updateById(order);
}
@Override @Override
public Result<Map<String, Object>> createGroupMagIntervene(String name, String longitude, String latitude, String type) { public Result<Map<String, Object>> createGroupMagIntervene(String name, String longitude, String latitude, String type) {
// 干预每次发起都是创建新的应急单 // 干预每次发起都是创建新的应急单
@@ -625,7 +625,7 @@ public class EmergencyOrderApiServiceImpl implements EmergencyOrderApiService {
String userId = GlobalUtils.getLoginUser().getId(); String userId = GlobalUtils.getLoginUser().getId();
LambdaQueryWrapper<Order> queryWrapper = GlobalUtils.getLambdaQueryWrapper(); LambdaQueryWrapper<Order> queryWrapper = GlobalUtils.getLambdaQueryWrapper();
if (EmergencyConstants.MAJOR.equals(type)) { if (EmergencyConstants.MAJOR.equals(type)) {
queryWrapper.eq(Order::getMajorUserId, userId); queryWrapper.and(orWrapper -> orWrapper.eq(Order::getMajorUserId, userId).or().eq(Order::getMajorUserTwoId, userId));
} }
if (EmergencyConstants.OPERATION.equals(type)) { if (EmergencyConstants.OPERATION.equals(type)) {
queryWrapper.eq(Order::getOperationUserId, userId); queryWrapper.eq(Order::getOperationUserId, userId);
@@ -1,21 +1,21 @@
package com.renkang.emergency.api.service.impl; package com.renkang.emergency.api.service.impl;
import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.util.ObjUtil;
import cn.hutool.core.util.StrUtil; import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.renkang.emergency.api.service.EmergencyResourceApiService; import com.renkang.emergency.api.service.EmergencyResourceApiService;
import com.renkang.emergency.bean.common.ResourceExt; import com.renkang.emergency.bean.common.ResourceExt;
import com.renkang.emergency.bean.response.ResourceHome; import com.renkang.emergency.bean.response.ResourceHome;
import com.renkang.emergency.constant.EmergencyConstants; import com.renkang.emergency.constant.EmergencyConstants;
import com.renkang.emergency.entity.EmergencyHealthRoom; import com.renkang.emergency.entity.*;
import com.renkang.emergency.entity.EmergencyResourceDO; import com.renkang.emergency.largeScreen.entity.vo.LargeScreenMap;
import com.renkang.emergency.entity.Order;
import com.renkang.emergency.entity.Resource;
import com.renkang.emergency.manager.EmergencyCloudManager; import com.renkang.emergency.manager.EmergencyCloudManager;
import com.renkang.emergency.manager.ResourceManager; import com.renkang.emergency.manager.ResourceManager;
import com.renkang.emergency.mapper.OrderMapper; import com.renkang.emergency.mapper.OrderMapper;
import com.renkang.emergency.mapper.ResourceMapper; import com.renkang.emergency.mapper.ResourceMapper;
import com.renkang.emergency.service.IEmergencyHealthRoomService; import com.renkang.emergency.service.IEmergencyHealthRoomService;
import com.renkang.emergency.service.IXjAedService;
import com.renkang.emergency.util.ResourceUtils;; import com.renkang.emergency.util.ResourceUtils;;
import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang3.ObjectUtils; import org.apache.commons.lang3.ObjectUtils;
@@ -23,6 +23,7 @@ import org.jeecg.common.api.vo.Result;
import org.jeecg.common.system.api.ISysBaseAPI; import org.jeecg.common.system.api.ISysBaseAPI;
import org.jeecg.common.system.vo.DictModel; import org.jeecg.common.system.vo.DictModel;
import org.jeecg.global.GlobalUtils; import org.jeecg.global.GlobalUtils;
import org.jeecg.util.TypeConversionUtil;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.geo.Point; import org.springframework.data.geo.Point;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
@@ -40,83 +41,52 @@ import java.util.stream.Collectors;
*/ */
@Service("emergencyResourceApiService") @Service("emergencyResourceApiService")
public class EmergencyResourceApiServiceImpl implements EmergencyResourceApiService { public class EmergencyResourceApiServiceImpl implements EmergencyResourceApiService {
@Autowired
private EmergencyCloudManager emergencyCloudManager;
@Autowired
private ResourceManager resourceManager;
@Autowired @Autowired
private OrderMapper orderMapper; private OrderMapper orderMapper;
@Autowired @Autowired
private ResourceMapper resourceMapper; private ResourceMapper resourceMapper;
@Autowired @Autowired
private IEmergencyHealthRoomService roomService; private IXjAedService xjAedService;
@Autowired @Autowired
private ISysBaseAPI sysBaseAPI; private ISysBaseAPI sysBaseAPI;
@Override @Override
public ResourceHome listResourceByType(String type, Double longitude, Double latitude) { public List<LargeScreenMap> listResourceByType(String type, Double longitude, Double latitude) {
if (StrUtil.isBlank(type)) {
type = EmergencyConstants.RESOURCE_ALL; List<LargeScreenMap> maps = new ArrayList<>();
if (StrUtil.isEmpty(type) || type.equals("1")) {
List<Resource> list = resourceMapper.selectList(new LambdaQueryWrapper<Resource>()
.eq(StrUtil.isNotEmpty(type), Resource::getType, type)
.eq(StrUtil.isEmpty(type), Resource::getType, "1"));
maps.addAll(list.stream().map(LargeScreenMap::new).collect(Collectors.toList()));
} }
if (StrUtil.isEmpty(type) || type.equals("3")) {
ResourceHome home = new ResourceHome(); List<Resource> list = resourceMapper.selectList(new LambdaQueryWrapper<Resource>()
// 是否有正在进行的会话 .eq(StrUtil.isNotEmpty(type), Resource::getType, type)
String sessionId = sessionNow(null); .eq(StrUtil.isEmpty(type), Resource::getType, "3"));
if (StrUtil.isNotBlank(sessionId)) { maps.addAll(list.stream().map(LargeScreenMap::new).collect(Collectors.toList()));
home.setSessionId(sessionId);
// 前端页面返回需要数据 继续查数据
//return home;
} }
if (StrUtil.isEmpty(type) || type.equals("4")){
// 字典数据 List<XjAed> list = xjAedService.list(new LambdaQueryWrapper<XjAed>().isNotNull(XjAed::getLatitude));
List<DictModel> dictItems = emergencyCloudManager.getDictItems(EmergencyConstants.EMERGENCY_RESOURCE_TYPE_DICT); maps.addAll(list.stream().map(LargeScreenMap::new).collect(Collectors.toList()));
}
if (ObjectUtils.isEmpty(longitude) || ObjectUtils.isEmpty(latitude)) { if (StrUtil.isEmpty(type) || type.equals("5")) {
if (!"3".equals(type)) { List<Resource> list = resourceMapper.selectList(new LambdaQueryWrapper<Resource>()
home.setDicts(dictItems); .eq(StrUtil.isNotEmpty(type), Resource::getType, type)
.eq(StrUtil.isEmpty(type), Resource::getType, "5"));
List<ResourceExt> list = this.listResource(type); maps.addAll(list.stream().map(LargeScreenMap::new).collect(Collectors.toList()));
}
List<ResourceExt> resources = new ArrayList<>(); for (LargeScreenMap map : maps) {
if ("0".equals(type)) { if (StrUtil.isNotEmpty(map.getLongitude()) && StrUtil.isNotEmpty(map.getLatitude())) {
resources = this.selectResourceByLongitudeLatitude(null, null, null);
}
list.addAll(resources);
home.setResources(list);
return home;
}
}else {
if (!"3".equals(type)) {
// 资源数据
Point point = new Point(longitude, latitude); Point point = new Point(longitude, latitude);
List<ResourceExt> resources = resourceManager.geoSearch(point, 100000, type); Point geoPoint = new Point(TypeConversionUtil.toDoubleOfNull(
List<ResourceExt> resourcesLL = new ArrayList<>(); map.getLongitude()), TypeConversionUtil.toDoubleOfNull(map.getLatitude()));
if ("0".equals(type)) { map.setDistance(ResourceUtils.geoDistance(point, geoPoint));
resourcesLL = this.selectResourceByLongitudeLatitude(100000D, longitude, latitude);
}
resources.addAll(resourcesLL);
home.setDicts(dictItems);
home.setResources(resources);
return home;
} }
}
List<EmergencyHealthRoom> list = roomService.list();
List<ResourceExt> resources = new ArrayList<>();
for (EmergencyHealthRoom emergencyHealthRoom : list) {
ResourceExt ext = new ResourceExt();
ext.setId(emergencyHealthRoom.getId());
ext.setName(emergencyHealthRoom.getName());
ext.setAddress(emergencyHealthRoom.getOrgName());
ext.setLatitude(new BigDecimal(emergencyHealthRoom.getLatitude()));
ext.setLongitude(new BigDecimal(emergencyHealthRoom.getLongitude()));
ext.setType("3");
resources.add(ext);
} }
home.setDicts(dictItems); return maps;
home.setResources(resources);
return home;
} }
@Override @Override
@@ -167,60 +137,4 @@ public class EmergencyResourceApiServiceImpl implements EmergencyResourceApiServ
} }
return orders.get(0); return orders.get(0);
} }
private List<ResourceExt> listResource(String type) {
if ("3".equals(type)) {
return Collections.emptyList();
}
LambdaQueryWrapper<Resource> queryWrapper = GlobalUtils.getLambdaQueryWrapper();
if (!EmergencyConstants.RESOURCE_ALL.equals(type)) {
queryWrapper.eq(Resource::getType, type);
queryWrapper.ne(Resource::getType, "3");
}
List<Resource> resources = resourceMapper.selectList(queryWrapper);
List<ResourceExt> result = new ArrayList<>();
if (CollectionUtils.isNotEmpty(resources)) {
for (Resource resource : resources) {
ResourceExt resourceExt = new ResourceExt();
BeanUtil.copyProperties(resource, resourceExt);
result.add(resourceExt);
}
}
return result;
}
public List<ResourceExt> selectResourceByLongitudeLatitude(Double distance, Double longitude, Double latitude) {
List<ResourceExt> resourceExtList = new ArrayList<>();
/* Point point = new Point(longitude, latitude);
List<MedicalResource> list = medicalCenterApi.selectResourceByLongitudeLatitude(distance, longitude, latitude).getResult();
for (MedicalResource medicalResource : list) {
ResourceExt resourceExt = convertToResourcesExt(medicalResource);
Point geoPoint = new Point(medicalResource.getLongitude().doubleValue(), medicalResource.getLatitude().doubleValue());
resourceExt.setType("3");
resourceExt.setDistance(ResourceUtils.geoDistance(point, geoPoint));
resourceExtList.add(resourceExt);
}*/
return resourceExtList;
}
/* private static ResourceExt convertToResourcesExt(MedicalResource resource) {
if (Objects.isNull(resource)) {
return null;
}
ResourceExt resourceExt = new ResourceExt();
BeanUtil.copyProperties(resource, resourceExt);
return resourceExt;
}*/
} }
@@ -29,6 +29,7 @@ import org.jeecg.common.system.vo.LoginUser;
import org.jeecg.common.system.vo.LoginUserNew; import org.jeecg.common.system.vo.LoginUserNew;
import org.jeecg.global.GlobalUtils; import org.jeecg.global.GlobalUtils;
import org.jeecg.modules.manager.ISysCache; import org.jeecg.modules.manager.ISysCache;
import org.jeecg.modules.system.entity.HealthUserEmployeeEx;
import org.jeecg.modules.system.entity.SysDepart; import org.jeecg.modules.system.entity.SysDepart;
import org.jeecg.modules.system.entity.SysUser; import org.jeecg.modules.system.entity.SysUser;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
@@ -226,12 +227,21 @@ public class LargeScreenImpl {
*/ */
private void setPushMsg(EmergencySocket socket, EmergencyCenter center, Double longitude, Double latitude) { private void setPushMsg(EmergencySocket socket, EmergencyCenter center, Double longitude, Double latitude) {
LoginUser sysUser = GlobalUtils.getLoginUser(); LoginUser sysUser = GlobalUtils.getLoginUser();
socket.setPopType(1); ListUser listUser = new ListUser();
listUser.setUserIds(Collections.singletonList(sysUser.getId()));
List<HealthUserEmployeeEx> exList = sysBaseAPI.listEmployeeUserByIds(listUser);
socket.setUserId(sysUser.getId()); socket.setUserId(sysUser.getId());
socket.setRealName(sysUser.getRealname()); socket.setRealName(sysUser.getRealname());
socket.setAge(sysUser.getAge()); socket.setAge(sysUser.getAge());
socket.setSex(sysUser.getSex()); socket.setSex(sysUser.getSex());
socket.setPhone(sysUser.getPhone()); socket.setPhone(sysUser.getPhone());
if (CollUtil.isNotEmpty(exList) && !exList.isEmpty()) {
HealthUserEmployeeEx ex = exList.get(0);
socket.setCareLiaisonName(ex.getCareLiaisonName());
socket.setCareLiaisonPhone(ex.getCareLiaisonPhone());
socket.setLifeguardName(ex.getLifeguardName());
socket.setLifeguardPhone(ex.getLifeguardPhone());
}
this.setDepartmentInfo(socket, sysUser.getOrgCode()); this.setDepartmentInfo(socket, sysUser.getOrgCode());
// 获取所有资源 // 获取所有资源
List<TblBaseHospitalVo> allList = tblAmbulanceGpsService.getAllList(String.valueOf(center.getLatitude()), String.valueOf(center.getLongitude()), null, null); List<TblBaseHospitalVo> allList = tblAmbulanceGpsService.getAllList(String.valueOf(center.getLatitude()), String.valueOf(center.getLongitude()), null, null);
@@ -3,6 +3,7 @@ package com.renkang.emergency.controller;
import cn.hutool.core.date.DateUtil; import cn.hutool.core.date.DateUtil;
import cn.hutool.core.lang.Validator; import cn.hutool.core.lang.Validator;
import cn.hutool.core.util.ObjUtil; import cn.hutool.core.util.ObjUtil;
import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.renkang.emergency.api.service.impl.LargeScreenImpl; import com.renkang.emergency.api.service.impl.LargeScreenImpl;
import com.renkang.emergency.async.AsyncImportService; import com.renkang.emergency.async.AsyncImportService;
@@ -93,6 +94,9 @@ public class TblQimoNoticeController {
if (!checkCallBackType(qimoVo)) { if (!checkCallBackType(qimoVo)) {
return "200"; return "200";
} }
// if(!"8027,8028,8029,8030".contains(qimoVo.getAgentName()) || !"8027,8028,8029,8030".contains(qimoVo.getExten()) ){//新疆使用的工号排除
// return "200";
// }
GlobalUtils.setHttpFeignToken(); GlobalUtils.setHttpFeignToken();
// 七陌重复推送处理,3分钟内同ID去重 // 七陌重复推送处理,3分钟内同ID去重
if (redisUtil.get(qimoVo.getCallSheetID()) != null) { if (redisUtil.get(qimoVo.getCallSheetID()) != null) {
@@ -100,6 +104,9 @@ public class TblQimoNoticeController {
} }
redisUtil.set(qimoVo.getCallSheetID(), qimoVo.getCalledNo(), 60 * 3); redisUtil.set(qimoVo.getCallSheetID(), qimoVo.getCalledNo(), 60 * 3);
if(StrUtil.isNotBlank(qimoVo.getCallNo()) && qimoVo.getCallNo().startsWith("0086")){
qimoVo.setCallNo(qimoVo.getCallNo().substring(4));
}
TblQimoNotice notice = QimoVoUtil.copyToEntity(qimoVo); TblQimoNotice notice = QimoVoUtil.copyToEntity(qimoVo);
if (!"1".equals(qimoNotice)) { if (!"1".equals(qimoNotice)) {
return "200"; // 不推送 return "200"; // 不推送
@@ -0,0 +1,25 @@
package com.renkang.emergency.controller;
import com.renkang.emergency.entity.XjAed;
import com.renkang.emergency.service.IXjAedService;
import lombok.RequiredArgsConstructor;
import org.jeecg.common.system.base.controller.JeecgController;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
@RequiredArgsConstructor
@RequestMapping("/emergency/xjAed")
public class XjAedController extends JeecgController<XjAed, IXjAedService> {
private final IXjAedService xjAedService;
/**
* 初始化新疆aed数据
*/
@GetMapping("dataInit")
public void aedDataInit() {
xjAedService.aedDataUtil();
}
}
@@ -1,9 +1,18 @@
package com.renkang.emergency.largeScreen.controller; package com.renkang.emergency.largeScreen.controller;
import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
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.emergency.entity.TblBaseHospitalVo;
import com.renkang.emergency.entity.dto.*; import com.renkang.emergency.entity.dto.*;
import com.renkang.emergency.entity.vo.DataDetailVO;
import com.renkang.emergency.entity.vo.MedicalDataVO;
import com.renkang.emergency.largeScreen.entity.dto.*; import com.renkang.emergency.largeScreen.entity.dto.*;
import com.renkang.emergency.largeScreen.entity.vo.*; import com.renkang.emergency.largeScreen.entity.vo.*;
import com.renkang.emergency.largeScreen.service.ILargeScreenDataService;
import com.renkang.emergency.largeScreen.service.ILargeScreenService; import com.renkang.emergency.largeScreen.service.ILargeScreenService;
import com.renkang.emergency.service.ITbUserHelpMacService; import com.renkang.emergency.service.ITbUserHelpMacService;
import com.renkang.emergency.service.ITblAmbulanceGpsService; import com.renkang.emergency.service.ITblAmbulanceGpsService;
@@ -25,24 +34,25 @@ import java.util.List;
@RequiredArgsConstructor @RequiredArgsConstructor
@Slf4j @Slf4j
public class LargeScreenNewController { public class LargeScreenNewController {
private final ITbUserHelpMacService tbUserHelpMacService; private final ITbUserHelpMacService tbUserHelpMacService;
private final YcLargeScreenService ycLargeScreenService; private final YcLargeScreenService ycLargeScreenService;
private final ITblAmbulanceGpsService tblAmbulanceGpsService; private final ITblAmbulanceGpsService tblAmbulanceGpsService;
private final ILargeScreenService largeScreenService; private final ILargeScreenService largeScreenService;
private final ILargeScreenDataService largeScreenDataService;
/** /**
* 获取地图 * 获取地图
* @param type 1:油田医院 2:健康小屋 5:救护车 不传则全部 *
* @param type 1:油田医院 3:健康小屋 4:aed 5:救护车 不传则全部
* @return * @return
*/ */
@GetMapping("/map") @GetMapping("/map")
public Result<List<LargeScreenMap>> map(@RequestParam(name = "type",required = false) String type) { public Result<List<LargeScreenMap>> map(@RequestParam(name = "type", required = false) String type) {
return Result.ok(largeScreenService.map(type)); return Result.ok(largeScreenService.map(type));
} }
/** /**
* 服务详情数据-24.09.19 新版大屏接口 * 服务详情数据-24.09.19 新版大屏接口 25-07-28 修改假数据逻辑
*/ */
@PostMapping("/statisticsNew") @PostMapping("/statisticsNew")
@Operation(summary = "服务详情数据", description = "服务详情数据") @Operation(summary = "服务详情数据", description = "服务详情数据")
@@ -88,68 +98,192 @@ public class LargeScreenNewController {
@PostMapping("/healthRoomBase") @PostMapping("/healthRoomBase")
@Operation(summary = "健康小屋基础数据", description = "健康小屋基础数据") @Operation(summary = "健康小屋基础数据", description = "健康小屋基础数据")
public Result<List<HealthRoomBaseVO>> healthRoomBase(@RequestBody HealthRoomBaseDTO dto){ public Result<List<HealthRoomBaseVO>> healthRoomBase(@RequestBody HealthRoomBaseDTO dto) {
return Result.ok(largeScreenService.healthRoomBase(dto)); return Result.ok(largeScreenService.healthRoomBase(dto));
} }
@PostMapping("/healthRoomDetail") @PostMapping("/healthRoomDetail")
@Operation(summary = "健康小屋详情", description = "健康小屋详情") @Operation(summary = "健康小屋详情", description = "健康小屋详情")
public Result<IPage<HealthRoomVO>> healthRoomDetail(@RequestBody HealthRoomDTO dto){ public Result<IPage<HealthRoomVO>> healthRoomDetail(@RequestBody HealthRoomDTO dto) {
return Result.ok(largeScreenService.healthRoomDetail(dto)); return Result.ok(largeScreenService.healthRoomDetail(dto));
} }
@PostMapping("/medicalAbnormal") @PostMapping("/medicalAbnormal")
@Operation(summary = "体检异常数据详情列表", description = "体检异常数据详情列表") @Operation(summary = "体检异常数据详情列表", description = "体检异常数据详情列表")
public Result<IPage<MedicalAbnormalVO>> medicalAbnormal(@RequestBody MedicalAbnormalDTO dto){ public Result<IPage<MedicalAbnormalVO>> medicalAbnormal(@RequestBody MedicalAbnormalDTO dto) {
return Result.ok(largeScreenService.medicalAbnormal(dto)); return Result.ok(largeScreenService.medicalAbnormal(dto));
} }
@PostMapping("/healthWeightLoss") @PostMapping("/healthWeightLoss")
@Operation(summary = "健康打卡减重详情列表", description = "健康打卡减重详情列表") @Operation(summary = "健康打卡减重详情列表", description = "健康打卡减重详情列表")
public Result<IPage<HealthWeightLossVO>> healthWeightLoss(@RequestBody HealthWeightLossDTO dto){ public Result<IPage<WeightPressureList>> healthWeightLoss(@RequestBody HealthSignListParam dto) {
return Result.ok(largeScreenService.healthWeightLoss(dto)); return Result.ok(largeScreenService.healthWeightLoss(dto));
} }
@PostMapping("/healthBloodSugar") @PostMapping("/healthBloodSugar")
@Operation(summary = "健康打卡血糖详情列表", description = "健康打卡血糖详情列表") @Operation(summary = "健康打卡血糖详情列表", description = "健康打卡血糖详情列表")
public Result<IPage<HealthBloodSugarVO>> healthBloodSugar(@RequestBody HealthBloodSugarDTO dto){ public Result<IPage<BloodSugarClockSList>> healthBloodSugar(@RequestBody HealthSignListParam dto) {
return Result.ok(largeScreenService.healthBloodSugar(dto)); return Result.ok(largeScreenService.healthBloodSugar(dto));
} }
@PostMapping("/healthBloodPressure") @PostMapping("/healthBloodPressure")
@Operation(summary = "健康打卡血压详情列表", description = "健康打卡血压详情列表") @Operation(summary = "健康打卡血压详情列表", description = "健康打卡血压详情列表")
public Result<IPage<HealthBloodPressureVO>> healthBloodPressure(@RequestBody HealthBloodPressureDTO dto){ public Result<IPage<BloodPressureList>> healthBloodPressure(@RequestBody HealthSignListParam dto) {
return Result.ok(largeScreenService.healthBloodPressure(dto)); return Result.ok(largeScreenService.healthBloodPressure(dto));
} }
@PostMapping("/medicalPeopleNumStatistics") @PostMapping("/medicalPeopleNumStatistics")
@Operation(summary = "体检人数统计", description = "体检人数统计") @Operation(summary = "体检人数统计", description = "体检人数统计")
public Result<List<MedicalPeopleNumStatisticsVO>> medicalPeopleNumStatistics(@RequestBody MedicalPeopleNumStatisticsDTO dto){ public Result<List<MedicalPeopleNumStatisticsVO>> medicalPeopleNumStatistics(@RequestBody MedicalPeopleNumStatisticsDTO dto) {
return Result.ok(largeScreenService.medicalPeopleNumStatistics(dto)); return Result.ok(largeScreenService.medicalPeopleNumStatistics(dto));
} }
@PostMapping("/medicalAbnormalStatistics") @PostMapping("/medicalAbnormalStatistics")
@Operation(summary = "体检异常数据统计", description = "体检异常数据统计") @Operation(summary = "体检异常数据统计", description = "体检异常数据统计")
public Result<MedicalAbnormalStatisticsVO> medicalAbnormalStatistics(@RequestBody MedicalAbnormalStatisticsDTO dto){ public Result<MedicalAbnormalStatisticsVO> medicalAbnormalStatistics(@RequestBody MedicalAbnormalStatisticsDTO dto) {
return Result.ok(largeScreenService.medicalAbnormalStatistics(dto)); return Result.ok(largeScreenService.medicalAbnormalStatistics(dto));
} }
@PostMapping("/healthSign") @PostMapping("/healthSign")
@Operation(summary = "健康打卡数据", description = "健康打卡数据") @Operation(summary = "健康打卡数据", description = "健康打卡数据")
public Result<HealthSignVO> healthSign(@RequestBody HealthSignDTO dto){ public Result<HealthSignVO> healthSign(@RequestBody HealthSignDTO dto) {
return Result.ok(largeScreenService.healthSign(dto)); return Result.ok(largeScreenService.healthSign(dto));
} }
@GetMapping("/hospital") @GetMapping("/hospital")
@Operation(summary = "医院数据", description = "医院数据") @Operation(summary = "医院数据", description = "医院数据")
public Result<List<HospitalVO>> hospital(){ public Result<List<HospitalVO>> hospital() {
return Result.ok(largeScreenService.hospital()); return Result.ok(largeScreenService.hospital());
} }
@GetMapping("runTest") @GetMapping("runTest")
@Operation(summary = "假数据", description = "假数据") @Operation(summary = "初始化假数据", description = "初始化假数据")
public void runTest(){ public void runTest() {
largeScreenService.runTest(); largeScreenService.runJob();
} }
/**
* 编辑或新增
*
* @param dto
* @return
*/
@PostMapping("editValue")
public Result<Boolean> editValue(@RequestBody LargeScreenDataValueDTO dto) {
return Result.ok(largeScreenDataService.editValue(dto));
}
/**
* 编辑整个tab
*
* @param dto
* @return
*/
@PostMapping("editData")
public Result<Boolean> editData(@RequestBody DataDetailVO dto) {
return Result.ok(largeScreenDataService.editData(dto));
}
/**
* 删除
*
* @param dto
* @return
*/
@DeleteMapping("deleteValue")
public Result<Boolean> deleteValue(@RequestBody LargeScreenDataValueDTO dto) {
return Result.ok(largeScreenDataService.deleteValue(dto));
}
/**
* 体检医院编辑新增删除
*
* @param dtoList
* @return
*/
@PostMapping("editMedicalValue")
public Result<Boolean> editMedicalValue(@RequestBody List<LargeScreenDataValueDTO> dtoList) {
return Result.ok(largeScreenDataService.editMedicalValue(dtoList));
}
/**
* 假数据查询
*/
@GetMapping("dataDetail")
public Result<DataDetailVO> dataDetail(@RequestParam(name = "centerId") String centerId, @RequestParam(name = "module") String module) {
return Result.ok(largeScreenDataService.dataDetail(centerId, module));
}
/**
* 假数据查询(体检人数)
*/
@GetMapping("medicalDataDetail")
public Result<List<MedicalDataVO>> medicalDataDetail(@RequestParam(name = "centerId") String centerId) {
return Result.ok(largeScreenDataService.medicalDataDetail(centerId));
}
/**
* 假数据查询(关爱趋势)
*/
@GetMapping("loveTrend")
public Result<IPage<CareUserListVo>> loveTrend(@RequestParam(name = "centerId") String centerId,
@RequestParam(name = "name", required = false) String name,
@RequestParam(name = "orgName", required = false) String orgName,
@RequestParam(name = "pageNo", defaultValue = "1") Integer pageNo,
@RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize) {
return Result.ok(largeScreenDataService.loveTrend(centerId, name,orgName,pageNo,pageSize));
}
/**
* 获取最近的6个资源
* @param longitude
* @param latitude
* @return
*/
@GetMapping("nearResources")
public Result<List<TblBaseHospitalVo>> nearResources(@RequestParam(name = "longitude") String longitude,
@RequestParam(name = "latitude") String latitude){
return Result.ok(largeScreenDataService.nearResources(longitude,latitude));
}
/**
* 今日应急
* @param dto 参数
* @return vo
*/
@PostMapping("todayEmergencyList")
public Result<IPage<TodayEmergencyVO>> todayEmergencyList(@RequestBody TodayEmergencyDTO dto){
return Result.ok(largeScreenDataService.todayEmergencyList(dto));
}
/**
* 健康档案
* @param userId 用户id
* @return vo
*/
@GetMapping("healthArchives")
public Result<HealthArchivesVO> healthArchives(@RequestParam(name = "userId") String userId){
return Result.ok(largeScreenDataService.healthArchives(userId));
}
/**
* 获取应急及关爱人员
* @param userId
* @return
*/
@GetMapping("careUser")
public Result<CareUserVO> careUser(@RequestParam(name = "userId") String userId){
return Result.ok(largeScreenDataService.careUser(userId));
}
/**
* 或者安眼平台访问token
* @return
*/
@GetMapping("queryAnYanToken")
public Result<AuthResult> queryAnYanToken(){
return Result.ok(largeScreenService.queryAnYanToken());
}
} }
@@ -1,58 +0,0 @@
package com.renkang.emergency.largeScreen.entity.dto;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;
import java.util.Date;
@Data
public class HealthBloodPressureDTO {
/**
* 单位名称
*/
@Schema(title = "单位名称")
private String departName;
/**
* 员工姓名
*/
@Schema(title = "员工姓名")
private String name;
/**
* 填报开始时间起
*/
@JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
@DateTimeFormat(pattern = "yyyy-MM-dd")
@Schema(title = "填报开始时间起")
private Date inputDateBegin;
/**
* 填报开始时间止
*/
@JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
@DateTimeFormat(pattern = "yyyy-MM-dd")
@Schema(title = "填报开始时间止")
private Date inputDateEnd;
/**
* 异常标记 0:正常/1:异常/2:全部
*/
@Schema(title = "异常标记 0:正常/1:异常/2:全部")
private String abFlag;
/**
* 页码 从1开始
*/
@Schema(title = "页码 从1开始")
private Integer pageNo;
/**
* 每页数量
*/
@Schema(title = "每页数量")
private Integer pageSize;
public HealthBloodPressureDTO() {
this.pageNo = 1;
this.pageSize = 10;
}
}
@@ -1,58 +0,0 @@
package com.renkang.emergency.largeScreen.entity.dto;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;
import java.util.Date;
@Data
public class HealthBloodSugarDTO {
/**
* 单位名称
*/
@Schema(title = "单位名称")
private String departName;
/**
* 员工姓名
*/
@Schema(title = "员工姓名")
private String name;
/**
* 填报开始时间起
*/
@JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
@DateTimeFormat(pattern = "yyyy-MM-dd")
@Schema(title = "填报开始时间起")
private Date inputDateBegin;
/**
* 填报开始时间止
*/
@JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
@DateTimeFormat(pattern = "yyyy-MM-dd")
@Schema(title = "填报开始时间止")
private Date inputDateEnd;
/**
* 异常标记 0:正常/1:异常/2:全部
*/
@Schema(title = "异常标记 0:正常/1:异常/2:全部")
private String abFlag;
/**
* 页码 从1开始
*/
@Schema(title = "页码 从1开始")
private Integer pageNo;
/**
* 每页数量
*/
@Schema(title = "每页数量")
private Integer pageSize;
public HealthBloodSugarDTO() {
this.pageNo = 1;
this.pageSize = 10;
}
}
@@ -11,6 +11,10 @@ import java.util.Date;
@Data @Data
public class MedicalAbnormalStatisticsDTO { public class MedicalAbnormalStatisticsDTO {
private String centerId; private String centerId;
/**
* 体检年份
*/
private String medicalYear;
/** /**
* 检查日期起期 参数为空时,默认为今年第一天 * 检查日期起期 参数为空时,默认为今年第一天
*/ */
@@ -0,0 +1,36 @@
package com.renkang.emergency.largeScreen.entity.dto;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;
import java.util.Date;
@Data
public class TodayEmergencyDTO {
/**
* 开始时间
*/
@Schema(title = "开始时间")
@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd")
@DateTimeFormat(pattern = "yyyy-MM-dd")
private Date startDate;
/**
*结束时间
*/
@Schema(title = "结束时间")
@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd")
@DateTimeFormat(pattern = "yyyy-MM-dd")
private Date endDate;
/**
* pageNo
*/
@Schema(title = "pageNo")
private Integer pageNo = 1;
/**
* pageSize
*/
@Schema(title = "pageSize")
private Integer pageSize = 10;
}
@@ -0,0 +1,32 @@
package com.renkang.emergency.largeScreen.entity.vo;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
@Data
public class HealthArchivesVO {
@Schema(title = "BMI")
private String bmi;
@Schema(title = "尿酸")
private String ua;
@Schema(title = "血同型半胱氨酸")
private String hcy;
@Schema(title = "空腹葡萄糖")
private String glu;
@Schema(title = "目测收缩压监测值")
private String sbp;
@Schema(title = "目测舒张压监测值")
private String dbp;
@Schema(title = "总胆固醇")
private String tc;
@Schema(title = "甘油三酯")
private String tg;
@Schema(title = "低密度脂蛋白")
private String ldl;
@Schema(title = "既往史")
private String pastHistory;
@Schema(title = "手术史")
private String surgicalHistory;
@Schema(title = "用药史")
private String medicationHistory;
}
@@ -1,24 +0,0 @@
package com.renkang.emergency.largeScreen.entity.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
public class HealthRoomBaseVO {
private String id;
private String departName;
private String address;
private String lon;
private String lat;
/**
* 建设时间
*/
@JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
@DateTimeFormat(pattern = "yyyy-MM-dd")
@Schema(title = "建设时间")
private Date buildDate;
}
@@ -1,5 +1,6 @@
package com.renkang.emergency.largeScreen.entity.vo; package com.renkang.emergency.largeScreen.entity.vo;
import com.renkang.anyan.model.vo.HealthPlaceHomDetailsVO;
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; import org.jeecg.common.aspect.annotation.Dict;
@@ -52,4 +53,19 @@ public class HealthRoomVO {
*/ */
@Schema(title = "是否成功空降,1:是/0.否") @Schema(title = "是否成功空降,1:是/0.否")
private String successFlag; private String successFlag;
public HealthRoomVO() {}
public HealthRoomVO(HealthPlaceHomDetailsVO detailsVO){
departName = detailsVO.getDepartName();
name = detailsVO.getName();
checkInDate = detailsVO.getCheckInDate();
checkType = detailsVO.getCheckType();
lastVal = detailsVO.getLastVal();
goalVal = detailsVO.getGoalVal();
currentVal = detailsVO.getCurrentVal();
compareVal = detailsVO.getCompareVal();
successFlag = detailsVO.getSuccessFlag();
}
} }
@@ -1,6 +1,7 @@
package com.renkang.emergency.largeScreen.entity.vo; package com.renkang.emergency.largeScreen.entity.vo;
import com.fasterxml.jackson.annotation.JsonFormat; import com.fasterxml.jackson.annotation.JsonFormat;
import com.renkang.emergency.entity.Resource;
import io.swagger.v3.oas.annotations.media.Schema; import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data; import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat; import org.springframework.format.annotation.DateTimeFormat;
@@ -9,6 +10,10 @@ import java.util.Date;
@Data @Data
public class HospitalVO { public class HospitalVO {
/**
* id
*/
private String id;
/** /**
* 医院名字 * 医院名字
*/ */
@@ -41,4 +46,16 @@ public class HospitalVO {
@DateTimeFormat(pattern = "yyyy-MM-dd") @DateTimeFormat(pattern = "yyyy-MM-dd")
@Schema(title = "签约时间") @Schema(title = "签约时间")
private Date contractDate; private Date contractDate;
public HospitalVO() {}
public HospitalVO(Resource resource){
id = resource.getId();
hospitalName = resource.getName();
alias = resource.getName();
address = resource.getAddress();
lon = resource.getLongitude().toString();
lat = resource.getLatitude().toString();
contractDate = resource.getCreateTime();
}
} }
@@ -2,6 +2,7 @@ package com.renkang.emergency.largeScreen.entity.vo;
import com.renkang.emergency.entity.EmergencyHealthRoom; import com.renkang.emergency.entity.EmergencyHealthRoom;
import com.renkang.emergency.entity.Resource; import com.renkang.emergency.entity.Resource;
import com.renkang.emergency.entity.XjAed;
import lombok.Data; import lombok.Data;
@Data @Data
@@ -10,8 +11,12 @@ public class LargeScreenMap {
private String name; private String name;
private String mobile;
private String orgName; private String orgName;
private String address;
private String type; private String type;
private String loveNum; private String loveNum;
@@ -20,15 +25,29 @@ public class LargeScreenMap {
private String latitude; private String latitude;
private Integer jobNum;
private Integer runTime;
private String manageName;
private String managePhone;
private double distance;
public LargeScreenMap() {} public LargeScreenMap() {}
public LargeScreenMap(Resource resource) { public LargeScreenMap(Resource resource) {
this.id = resource.getId(); this.id = resource.getId();
this.name = resource.getName(); this.name = resource.getName();
this.mobile = resource.getMobile();
this.orgName = resource.getAddress(); this.orgName = resource.getAddress();
this.type = resource.getType(); this.type = resource.getType();
this.latitude = String.valueOf(resource.getLatitude()); this.latitude = String.valueOf(resource.getLatitude());
this.longitude = String.valueOf(resource.getLongitude()); this.longitude = String.valueOf(resource.getLongitude());
this.jobNum = resource.getJobNum();
this.runTime = resource.getRunTime();
this.address = resource.getAddress();
} }
public LargeScreenMap(EmergencyHealthRoom room) { public LargeScreenMap(EmergencyHealthRoom room) {
@@ -39,4 +58,16 @@ public class LargeScreenMap {
this.latitude = room.getLatitude(); this.latitude = room.getLatitude();
this.longitude = room.getLongitude(); this.longitude = room.getLongitude();
} }
public LargeScreenMap(XjAed xjAed) {
this.id = xjAed.getId();
this.name = xjAed.getName();
this.orgName = xjAed.getOrgCode();
this.type = "4";
this.address = xjAed.getAddress();
this.latitude = String.valueOf(xjAed.getLatitude());
this.longitude = String.valueOf(xjAed.getLongitude());
this.manageName = xjAed.getManageName();
this.managePhone = xjAed.getManagePhone();
}
} }
@@ -1,20 +0,0 @@
package com.renkang.emergency.largeScreen.entity.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.util.Date;
@Data
public class MedicalAbnormalStatisticsVO {
private Integer totalCount;
// 心血管异常人数
private Integer cardiovaAbCount;
// 脑血管异常人数
private Integer cerebrovAbCount;
// 冠脉ct异常人数
private Integer cctaAbCount;
}
@@ -0,0 +1,52 @@
package com.renkang.emergency.largeScreen.entity.vo;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.renkang.emergency.entity.TblQimoNotice;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import org.jeecg.common.aspect.annotation.Dict;
import org.jeecgframework.poi.excel.annotation.Excel;
import org.springframework.format.annotation.DateTimeFormat;
import java.math.BigDecimal;
import java.util.Date;
@Data
public class TodayEmergencyVO {
@Schema(title = "userId")
private String userId;
@Schema(title = "姓名")
private String realName;
@Schema(title = "0:120 1:紧急求助 2:云坐席 3:终端报警")
private String emergencyType;
@Schema(title = "事件类型(emergencyType=3 才有值)")
@Dict(dicCode = "watch_event_type")
private String eventType;
@Schema(title = "性别")
@Dict(dicCode = "sex2")
private Integer sex;
@Schema(title = "年龄")
private Integer age;
@Schema(title = "手机号码")
private String phone;
@Schema(title = "二级单位code")
private String departCode;
@Schema(title = "二级单位名称")
private String departName;
@Schema(title = "三级部门code")
private String orgCode;
@Schema(title = "三级部门名称")
private String orgName;
@Schema(title = "位置")
private String address;
@Schema(title = "经度")
private BigDecimal longitude;
@Schema(title = "纬度")
private BigDecimal latitude;
@Schema(title = "描述")
private String memo;
@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@Schema(title = "时间")
private Date time;
}
@@ -0,0 +1,14 @@
package com.renkang.emergency.largeScreen.mapper;
import com.github.yulichang.base.MPJBaseMapper;
import com.renkang.emergency.entity.LargeScreenData;
/**
* @Description: large_screen
* @Author: wang hao
* @Date: 2025-07-04
* @Version: V1.0
*/
public interface LargeScreenDataMapper extends MPJBaseMapper<LargeScreenData> {
}
@@ -0,0 +1,47 @@
package com.renkang.emergency.largeScreen.service;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;
import com.renkang.anyan.model.vo.CareUserListVo;
import com.renkang.anyan.model.vo.CareUserVO;
import com.renkang.emergency.entity.LargeScreenData;
import com.renkang.emergency.entity.TblBaseHospitalVo;
import com.renkang.emergency.entity.dto.LargeScreenDataValueDTO;
import com.renkang.emergency.entity.vo.DataDetailVO;
import com.renkang.emergency.entity.vo.MedicalDataVO;
import com.renkang.emergency.largeScreen.entity.dto.TodayEmergencyDTO;
import com.renkang.emergency.largeScreen.entity.vo.HealthArchivesVO;
import com.renkang.emergency.largeScreen.entity.vo.TodayEmergencyVO;
import java.util.List;
/**
* @Description: LargeScreenData
* @Author: wang hao
* @Date: 2025-07-25
* @Version: V1.0
*/
public interface ILargeScreenDataService extends IService<LargeScreenData> {
Boolean editValue(LargeScreenDataValueDTO dto);
Boolean editData(DataDetailVO dto);
Boolean deleteValue(LargeScreenDataValueDTO dto);
Boolean editMedicalValue(List<LargeScreenDataValueDTO> dtoList);
DataDetailVO dataDetail(String centerId, String module);
List<MedicalDataVO> medicalDataDetail(String centerId);
IPage<CareUserListVo> loveTrend(String centerId, String name, String orgName, Integer pageNo, Integer pageSize);
List<TblBaseHospitalVo> nearResources(String longitude, String latitude);
IPage<TodayEmergencyVO> todayEmergencyList(TodayEmergencyDTO dto);
HealthArchivesVO healthArchives(String userId);
CareUserVO careUser(String userId);
}
@@ -2,8 +2,19 @@ package com.renkang.emergency.largeScreen.service;
import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService; import com.baomidou.mybatisplus.extension.service.IService;
import com.renkang.emergency.largeScreen.entity.dto.*; import com.renkang.anyan.model.dto.HealthRoomDTO;
import com.renkang.emergency.largeScreen.entity.vo.*; 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.MedicalAbnormalVO;
import com.renkang.emergency.largeScreen.entity.dto.HealthRoomBaseDTO;
import com.renkang.emergency.largeScreen.entity.dto.HealthSignDTO;
import com.renkang.emergency.largeScreen.entity.dto.MedicalAbnormalStatisticsDTO;
import com.renkang.emergency.largeScreen.entity.dto.MedicalPeopleNumStatisticsDTO;
import com.renkang.emergency.largeScreen.entity.vo.HealthRoomVO;
import com.renkang.emergency.largeScreen.entity.vo.HealthSignVO;
import com.renkang.emergency.largeScreen.entity.vo.HospitalVO;
import com.renkang.emergency.largeScreen.entity.vo.LargeScreenMap;
import java.util.List; import java.util.List;
@@ -23,11 +34,11 @@ public interface ILargeScreenService extends IService<LargeScreenMap> {
IPage<MedicalAbnormalVO> medicalAbnormal(MedicalAbnormalDTO dto); IPage<MedicalAbnormalVO> medicalAbnormal(MedicalAbnormalDTO dto);
IPage<HealthWeightLossVO> healthWeightLoss(HealthWeightLossDTO dto); IPage<WeightPressureList> healthWeightLoss(HealthSignListParam dto);
IPage<HealthBloodSugarVO> healthBloodSugar(HealthBloodSugarDTO dto); IPage<BloodSugarClockSList> healthBloodSugar(HealthSignListParam dto);
IPage<HealthBloodPressureVO> healthBloodPressure(HealthBloodPressureDTO dto); IPage<BloodPressureList> healthBloodPressure(HealthSignListParam dto);
List<MedicalPeopleNumStatisticsVO> medicalPeopleNumStatistics(MedicalPeopleNumStatisticsDTO dto); List<MedicalPeopleNumStatisticsVO> medicalPeopleNumStatistics(MedicalPeopleNumStatisticsDTO dto);
@@ -39,5 +50,10 @@ public interface ILargeScreenService extends IService<LargeScreenMap> {
void runJob(); void runJob();
void runTest(); /**
* 同步安眼系统中的油田医院数据和监控小屋数据定时任务
*/
void syncAnYanHospital();
AuthResult queryAnYanToken();
} }
@@ -0,0 +1,865 @@
package com.renkang.emergency.largeScreen.service.impl;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.collection.ListUtil;
import cn.hutool.core.date.DateField;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.ObjUtil;
import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.PageUtil;
import cn.hutool.core.util.StrUtil;
import cn.hutool.json.JSONUtil;
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.anyan.model.vo.CareUserListVo;
import com.renkang.anyan.model.vo.CareUserVO;
import com.renkang.emergency.entity.*;
import com.renkang.emergency.entity.dto.LargeScreenDataValueDTO;
import com.renkang.emergency.entity.vo.DataDetailVO;
import com.renkang.emergency.entity.vo.MedicalDataVO;
import com.renkang.emergency.largeScreen.entity.dto.TodayEmergencyDTO;
import com.renkang.emergency.largeScreen.entity.vo.HealthArchivesVO;
import com.renkang.emergency.largeScreen.entity.vo.TodayEmergencyVO;
import com.renkang.emergency.largeScreen.mapper.LargeScreenDataMapper;
import com.renkang.emergency.largeScreen.service.ILargeScreenDataService;
import com.renkang.emergency.mapper.OrderMapper;
import com.renkang.emergency.mapper.TblUserHelpMapper;
import com.renkang.emergency.service.IResourceService;
import com.renkang.emergency.service.ITbQimoNoticeService;
import com.renkang.emergency.service.ITbUserHelpMacService;
import com.renkang.emergency.service.IXjAedService;
import com.renkang.emergency.util.HealthArchivesGenerator;
import com.renkang.watch.api.WatchApi;
import com.renkang.watch.vo.WatchMonitorDataVo;
import lombok.RequiredArgsConstructor;
import org.jeecg.bean.request.ListUser;
import org.jeecg.common.system.api.ISysBaseAPI;
import org.jeecg.common.system.vo.LoginUser;
import org.jeecg.global.GlobalUtils;
import org.jeecg.modules.manager.ISysCache;
import org.jeecg.modules.system.entity.HealthUserEmployeeEx;
import org.jeecg.modules.system.entity.SysDepart;
import org.jeecg.modules.system.entity.SysUser;
import org.jeecg.util.TypeConversionUtil;
import org.springframework.core.io.ClassPathResource;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.StreamUtils;
import java.nio.charset.StandardCharsets;
import java.util.*;
import java.util.stream.Collectors;
/**
* @Description: large_screen_data
* @Author: wang hao
* @Date: 2025-07-25
* @Version: V1.0
*/
@Service
@RequiredArgsConstructor
public class LargeScreenDataServiceImpl extends ServiceImpl<LargeScreenDataMapper, LargeScreenData> implements ILargeScreenDataService {
private final IResourceService resourceService;
private final IXjAedService xjAedService;
private final ITbQimoNoticeService noticeService;
private final TblUserHelpMapper userHelpMapper;
private final OrderMapper orderMapper;
private final WatchApi watchApi;
private final ISysBaseAPI sysBaseAPI;
private final ISysCache sysCache;
public Boolean editValue(LargeScreenDataValueDTO dto) {
if (StrUtil.isEmpty(dto.getCenterId())) {
return false;
}
LambdaQueryWrapper<LargeScreenData> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(LargeScreenData::getType, dto.getType());
queryWrapper.eq(LargeScreenData::getCenterId, dto.getCenterId());
queryWrapper.eq(ObjUtil.isNotEmpty(dto.getId()), LargeScreenData::getId, dto.getId());
if (CollUtil.isNotEmpty(list())) {
LambdaUpdateWrapper<LargeScreenData> updateWrapper = new LambdaUpdateWrapper<>();
updateWrapper.eq(LargeScreenData::getType, dto.getType());
updateWrapper.eq(ObjUtil.isNotEmpty(dto.getId()), LargeScreenData::getId, dto.getId());
updateWrapper.set(LargeScreenData::getValue, dto.getValue());
updateWrapper.set(LargeScreenData::getStatus, dto.getStatus());
return update(updateWrapper);
}
return save(new LargeScreenData(dto));
}
@Transactional()
public Boolean editData(DataDetailVO dto) {
List<LargeScreenData> list = new ArrayList<>();
switch (dto.getModule()) {
case "9":
// 服务详情
remove(new LambdaQueryWrapper<LargeScreenData>().eq(LargeScreenData::getCenterId, dto.getCenterId()).in(LargeScreenData::getType,
Arrays.asList("gross", "alerdyreceive", "jqqz", "dbjy", "totaldeal", "totalacceptance")));
LargeScreenData service1 = new LargeScreenData();
service1.setType("gross");
service1.setStatus(dto.getLatestCallStatus());
service1.setValue(dto.getLatestCall());
service1.setCenterId(dto.getCenterId());
list.add(service1);
LargeScreenData service2 = new LargeScreenData();
service2.setType("alerdyreceive");
service2.setStatus(dto.getLatestAcceptCallStatus());
service2.setValue(dto.getLatestAcceptCall());
service2.setCenterId(dto.getCenterId());
list.add(service2);
LargeScreenData service3 = new LargeScreenData();
service3.setType("jqqz");
service3.setStatus(dto.getIllNumStatus());
service3.setValue(dto.getIllNum());
service3.setCenterId(dto.getCenterId());
list.add(service3);
LargeScreenData service4 = new LargeScreenData();
service4.setType("dbjy");
service4.setStatus(dto.getEmergencyNumStatus());
service4.setValue(dto.getEmergencyNum());
service4.setCenterId(dto.getCenterId());
list.add(service4);
LargeScreenData service5 = new LargeScreenData();
service5.setType("totaldeal");
service5.setStatus(dto.getTotalAcceptStatus());
service5.setValue(dto.getTotalAccept());
service5.setCenterId(dto.getCenterId());
list.add(service5);
LargeScreenData service6 = new LargeScreenData();
service6.setType("totalacceptance");
service6.setStatus(dto.getTotalDisposalStatus());
service6.setValue(dto.getTotalDisposal());
service6.setCenterId(dto.getCenterId());
list.add(service6);
break;
case "31":
// 主诉分类
remove(new LambdaQueryWrapper<LargeScreenData>().eq(LargeScreenData::getCenterId, dto.getCenterId()).in(LargeScreenData::getType,
Arrays.asList("oneTwenty", "hospital")));
LargeScreenData type1 = new LargeScreenData();
type1.setType("oneTwenty");
type1.setStatus(dto.getHospitalCountStatus());
type1.setValue(dto.getHospitalCount());
type1.setCenterId(dto.getCenterId());
list.add(type1);
LargeScreenData type2 = new LargeScreenData();
type2.setType("hospital");
type2.setStatus(dto.getEmergencyCountStatus());
type2.setValue(dto.getEmergencyCount());
type2.setCenterId(dto.getCenterId());
list.add(type2);
break;
case "33":
// 健康打卡
remove(new LambdaQueryWrapper<LargeScreenData>().eq(LargeScreenData::getCenterId, dto.getCenterId()).in(LargeScreenData::getType,
Arrays.asList("weightLossCountDay", "weightLossCountMonth", "weightLossAbnormalCountDay", "weightLossAbnormalCountMonth",
"bloodSugarCountDay", "bloodSugarCountMonth", "bloodSugarAbnormalCountDay", "bloodSugarAbnormalCountMonth",
"bloodPressureCountDay", "bloodPressureCountMonth", "bloodPressureAbnormalCountDay", "bloodPressureAbnormalCountMonth",
"totalCount", "cardiovaAbCount", "cerebrovAbCount", "cctaAbCount")));
LargeScreenData sign1 = new LargeScreenData();
sign1.setType("weightLossCountDay");
sign1.setStatus(dto.getWeightLossCountDayStatus());
sign1.setValue(dto.getWeightLossCountDay());
sign1.setCenterId(dto.getCenterId());
list.add(sign1);
LargeScreenData sign2 = new LargeScreenData();
sign2.setType("weightLossCountMonth");
sign2.setStatus(dto.getWeightLossCountMonthStatus());
sign2.setValue(dto.getWeightLossCountMonth());
sign2.setCenterId(dto.getCenterId());
list.add(sign2);
LargeScreenData sign3 = new LargeScreenData();
sign3.setType("weightLossAbnormalCountDay");
sign3.setStatus(dto.getWeightLossAbnormalCountDayStatus());
sign3.setValue(dto.getWeightLossAbnormalCountDay());
sign3.setCenterId(dto.getCenterId());
list.add(sign3);
LargeScreenData sign4 = new LargeScreenData();
sign4.setType("weightLossAbnormalCountMonth");
sign4.setStatus(dto.getWeightLossAbnormalCountMonthStatus());
sign4.setValue(dto.getWeightLossAbnormalCountMonth());
sign4.setCenterId(dto.getCenterId());
list.add(sign4);
LargeScreenData sign5 = new LargeScreenData();
sign5.setType("bloodSugarCountDay");
sign5.setStatus(dto.getBloodSugarCountDayStatus());
sign5.setValue(dto.getBloodSugarCountDay());
sign5.setCenterId(dto.getCenterId());
list.add(sign5);
LargeScreenData sign6 = new LargeScreenData();
sign6.setType("bloodSugarCountMonth");
sign6.setStatus(dto.getBloodSugarCountMonthStatus());
sign6.setValue(dto.getBloodSugarCountMonth());
sign6.setCenterId(dto.getCenterId());
list.add(sign6);
LargeScreenData sign7 = new LargeScreenData();
sign7.setType("bloodSugarAbnormalCountDay");
sign7.setStatus(dto.getBloodSugarAbnormalCountDayStatus());
sign7.setValue(dto.getBloodSugarAbnormalCountDay());
sign7.setCenterId(dto.getCenterId());
list.add(sign7);
LargeScreenData sign8 = new LargeScreenData();
sign8.setType("bloodSugarAbnormalCountMonth");
sign8.setStatus(dto.getBloodSugarAbnormalCountMonthStatus());
sign8.setValue(dto.getBloodSugarAbnormalCountMonth());
sign8.setCenterId(dto.getCenterId());
list.add(sign8);
LargeScreenData sign9 = new LargeScreenData();
sign9.setType("bloodPressureCountDay");
sign9.setStatus(dto.getBloodPressureCountDayStatus());
sign9.setValue(dto.getBloodPressureCountDay());
sign9.setCenterId(dto.getCenterId());
list.add(sign9);
LargeScreenData sign10 = new LargeScreenData();
sign10.setType("bloodPressureCountMonth");
sign10.setStatus(dto.getBloodPressureCountMonthStatus());
sign10.setValue(dto.getBloodPressureCountMonth());
sign10.setCenterId(dto.getCenterId());
list.add(sign10);
LargeScreenData sign11 = new LargeScreenData();
sign11.setType("bloodPressureAbnormalCountDay");
sign11.setStatus(dto.getBloodPressureAbnormalCountDayStatus());
sign11.setValue(dto.getBloodPressureAbnormalCountDay());
sign11.setCenterId(dto.getCenterId());
list.add(sign11);
LargeScreenData sign12 = new LargeScreenData();
sign12.setType("bloodPressureAbnormalCountMonth");
sign12.setStatus(dto.getBloodPressureAbnormalCountMonthStatus());
sign12.setValue(dto.getBloodPressureAbnormalCountMonth());
sign12.setCenterId(dto.getCenterId());
list.add(sign12);
break;
case "34":
// 体检数据
remove(new LambdaQueryWrapper<LargeScreenData>().eq(LargeScreenData::getCenterId, dto.getCenterId()).in(LargeScreenData::getType,
Arrays.asList("totalCount", "cardiovaAbCount", "cerebrovAbCount", "cctaAbCount")));
LargeScreenData medicalData1 = new LargeScreenData();
medicalData1.setType("totalCount");
medicalData1.setStatus(dto.getTotalCountStatus());
medicalData1.setValue(dto.getTotalCount());
medicalData1.setCenterId(dto.getCenterId());
list.add(medicalData1);
LargeScreenData medicalData2 = new LargeScreenData();
medicalData2.setType("cardiovaAbCount");
medicalData2.setStatus(dto.getCardiovaAbCountStatus());
medicalData2.setValue(dto.getCardiovaAbCount());
medicalData2.setCenterId(dto.getCenterId());
list.add(medicalData2);
LargeScreenData medicalData3 = new LargeScreenData();
medicalData3.setType("cerebrovAbCount");
medicalData3.setStatus(dto.getCerebrovAbCountStatus());
medicalData3.setValue(dto.getCerebrovAbCount());
medicalData3.setCenterId(dto.getCenterId());
list.add(medicalData3);
LargeScreenData medicalData4 = new LargeScreenData();
medicalData4.setType("cctaAbCount");
medicalData4.setStatus(dto.getCctaAbCountStatus());
medicalData4.setValue(dto.getCctaAbCount());
medicalData4.setCenterId(dto.getCenterId());
list.add(medicalData4);
break;
default:
break;
}
return saveBatch(list);
}
public Boolean deleteValue(LargeScreenDataValueDTO dto) {
return remove(new LambdaQueryWrapper<LargeScreenData>().eq(LargeScreenData::getId, dto.getId()));
}
@Transactional(rollbackFor = Exception.class)
public Boolean editMedicalValue(List<LargeScreenDataValueDTO> dtoList) {
remove(new LambdaQueryWrapper<LargeScreenData>().in(LargeScreenData::getType, "medical", "32"));
if (CollUtil.isNotEmpty(dtoList)) {
saveBatch(dtoList.stream().map(LargeScreenData::new).collect(Collectors.toList()));
}
return true;
}
public DataDetailVO dataDetail(String centerId, String module) {
DataDetailVO vo = new DataDetailVO();
List<LargeScreenData> list = new ArrayList<>();
switch (module) {
case "9":
// 查询服务详情相关数据
list = list(new LambdaQueryWrapper<LargeScreenData>().eq(LargeScreenData::getCenterId, centerId).in(LargeScreenData::getType,
Arrays.asList("gross", "alerdyreceive", "jqqz", "dbjy", "totaldeal", "totalacceptance")));
break;
case "31":
// 查询主诉分类相关数据
list = list(new LambdaQueryWrapper<LargeScreenData>().eq(LargeScreenData::getCenterId, centerId).in(LargeScreenData::getType,
Arrays.asList("oneTwenty", "hospital")));
break;
case "33":
// 查询健康打卡相关数据
list = list(new LambdaQueryWrapper<LargeScreenData>().eq(LargeScreenData::getCenterId, centerId).in(LargeScreenData::getType,
Arrays.asList("weightLossCountDay", "weightLossCountMonth", "weightLossAbnormalCountDay", "weightLossAbnormalCountMonth",
"bloodSugarCountDay", "bloodSugarCountMonth", "bloodSugarAbnormalCountDay", "bloodSugarAbnormalCountMonth",
"bloodPressureCountDay", "bloodPressureCountMonth", "bloodPressureAbnormalCountDay", "bloodPressureAbnormalCountMonth",
"totalCount", "cardiovaAbCount", "cerebrovAbCount", "cctaAbCount")));
break;
case "34":
// 查询体检数据相关
list = list(new LambdaQueryWrapper<LargeScreenData>().eq(LargeScreenData::getCenterId, centerId).in(LargeScreenData::getType,
Arrays.asList("totalCount", "cardiovaAbCount", "cerebrovAbCount", "cctaAbCount")));
break;
default:
break;
}
if (CollUtil.isEmpty(list)) {
return vo;
}
for (LargeScreenData largeScreenData : list) {
switch (largeScreenData.getType()) {
case "gross":
vo.setLatestCall(String.valueOf(largeScreenData.getValue()));
vo.setLatestCallStatus(largeScreenData.getStatus());
break;
case "alerdyreceive":
vo.setLatestAcceptCall(String.valueOf(largeScreenData.getValue()));
vo.setLatestAcceptCallStatus(largeScreenData.getStatus());
break;
case "jqqz":
vo.setIllNum(String.valueOf(largeScreenData.getValue()));
vo.setIllNumStatus(largeScreenData.getStatus());
break;
case "dbjy":
vo.setEmergencyNum(String.valueOf(largeScreenData.getValue()));
vo.setEmergencyNumStatus(largeScreenData.getStatus());
break;
case "totaldeal":
vo.setTotalAccept(String.valueOf(largeScreenData.getValue()));
vo.setTotalAcceptStatus(largeScreenData.getStatus());
break;
case "totalacceptance":
vo.setTotalDisposal(String.valueOf(largeScreenData.getValue()));
vo.setTotalDisposalStatus(largeScreenData.getStatus());
break;
case "oneTwenty":
vo.setHospitalCount(String.valueOf(largeScreenData.getValue()));
vo.setHospitalCountStatus(largeScreenData.getStatus());
break;
case "hospital":
vo.setEmergencyCount(String.valueOf(largeScreenData.getValue()));
vo.setEmergencyCountStatus(largeScreenData.getStatus());
break;
case "weightLossCountDay":
vo.setWeightLossCountDay(String.valueOf(largeScreenData.getValue()));
vo.setWeightLossCountDayStatus(largeScreenData.getStatus());
break;
case "weightLossCountMonth":
vo.setWeightLossCountMonth(String.valueOf(largeScreenData.getValue()));
vo.setWeightLossCountMonthStatus(largeScreenData.getStatus());
break;
case "weightLossAbnormalCountDay":
vo.setWeightLossAbnormalCountDay(String.valueOf(largeScreenData.getValue()));
vo.setWeightLossAbnormalCountDayStatus(largeScreenData.getStatus());
break;
case "weightLossAbnormalCountMonth":
vo.setWeightLossAbnormalCountMonth(String.valueOf(largeScreenData.getValue()));
vo.setWeightLossAbnormalCountMonthStatus(largeScreenData.getStatus());
break;
case "bloodSugarCountDay":
vo.setBloodSugarCountDay(String.valueOf(largeScreenData.getValue()));
vo.setBloodSugarCountDayStatus(largeScreenData.getStatus());
break;
case "bloodSugarCountMonth":
vo.setBloodSugarCountMonth(String.valueOf(largeScreenData.getValue()));
vo.setBloodSugarCountMonthStatus(largeScreenData.getStatus());
break;
case "bloodSugarAbnormalCountDay":
vo.setBloodSugarAbnormalCountDay(String.valueOf(largeScreenData.getValue()));
vo.setBloodSugarAbnormalCountDayStatus(largeScreenData.getStatus());
break;
case "bloodSugarAbnormalCountMonth":
vo.setBloodSugarAbnormalCountMonth(String.valueOf(largeScreenData.getValue()));
vo.setBloodSugarAbnormalCountMonthStatus(largeScreenData.getStatus());
break;
case "bloodPressureCountDay":
vo.setBloodPressureCountDay(String.valueOf(largeScreenData.getValue()));
vo.setBloodPressureCountDayStatus(largeScreenData.getStatus());
break;
case "bloodPressureCountMonth":
vo.setBloodPressureCountMonth(String.valueOf(largeScreenData.getValue()));
vo.setBloodPressureCountMonthStatus(largeScreenData.getStatus());
break;
case "bloodPressureAbnormalCountDay":
vo.setBloodPressureAbnormalCountDay(String.valueOf(largeScreenData.getValue()));
vo.setBloodPressureAbnormalCountDayStatus(largeScreenData.getStatus());
break;
case "bloodPressureAbnormalCountMonth":
vo.setBloodPressureAbnormalCountMonth(String.valueOf(largeScreenData.getValue()));
vo.setBloodPressureAbnormalCountMonthStatus(largeScreenData.getStatus());
break;
case "totalCount":
vo.setTotalCount(String.valueOf(largeScreenData.getValue()));
vo.setTotalCountStatus(largeScreenData.getStatus());
break;
case "cardiovaAbCount":
vo.setCardiovaAbCount(String.valueOf(largeScreenData.getValue()));
vo.setCardiovaAbCountStatus(largeScreenData.getStatus());
break;
case "cerebrovAbCount":
vo.setCerebrovAbCount(String.valueOf(largeScreenData.getValue()));
vo.setCerebrovAbCountStatus(largeScreenData.getStatus());
break;
case "cctaAbCount":
vo.setCctaAbCount(String.valueOf(largeScreenData.getValue()));
vo.setCctaAbCountStatus(largeScreenData.getStatus());
break;
default:
break;
}
}
return vo;
}
public List<MedicalDataVO> medicalDataDetail(String centerId) {
List<LargeScreenData> list = list(new LambdaQueryWrapper<LargeScreenData>()
.in(LargeScreenData::getType, "medical", "32").eq(LargeScreenData::getCenterId, centerId));
if (CollUtil.isEmpty(list)) {
return new ArrayList<>();
}
return list.stream().map(MedicalDataVO::new).collect(Collectors.toList());
}
@Override
public IPage<CareUserListVo> loveTrend(String centerId, String name, String orgName, Integer pageNo, Integer pageSize) {
try {
ClassPathResource resource = new ClassPathResource("tempData/guanaiList.json");
String jsonContent = StreamUtils.copyToString(resource.getInputStream(), StandardCharsets.UTF_8);
List<CareUserListVo> careUserListVoList = JSONUtil.toList(jsonContent, CareUserListVo.class);
if (CollUtil.isEmpty(careUserListVoList)) {
return new Page<>();
}
// 根据 name 过滤
if (StrUtil.isNotBlank(name)) {
careUserListVoList = careUserListVoList.stream()
.filter(vo -> vo.getName() != null && vo.getName().contains(name))
.collect(Collectors.toList());
}
// 根据 name 过滤
if (StrUtil.isNotBlank(orgName)) {
careUserListVoList = careUserListVoList.stream()
.filter(vo -> vo.getWorkUnit() != null && vo.getWorkUnit().contains(orgName))
.collect(Collectors.toList());
}
int total = careUserListVoList.size();
int[] startEnd = PageUtil.transToStartEnd(pageNo - 1, pageSize);
// 确保不越界
int start = Math.min(startEnd[0], total);
int end = Math.min(startEnd[1], total);
List<CareUserListVo> pageList = careUserListVoList.subList(start, end);
Page<CareUserListVo> page = new Page<>(pageNo, pageSize, total);
page.setRecords(pageList);
return page;
} catch (Exception e) {
e.printStackTrace();
return new Page<>();
}
}
@Override
public List<TblBaseHospitalVo> nearResources(String longitude, String latitude) {
// 总资源 (6个最近点 2个医院 2个小屋 2个AED)
List<TblBaseHospitalVo> list = new ArrayList<>();
// 医院
List<TblBaseHospitalVo> hospitalList = new ArrayList<>();
// 小屋
List<TblBaseHospitalVo> roomList = new ArrayList<>();
// AED
List<TblBaseHospitalVo> xjAedList = new ArrayList<>();
List<Resource> resourceList = resourceService.list(new LambdaQueryWrapper<Resource>()
.in(Resource::getType, Arrays.asList("1", "3"))
.isNotNull(Resource::getLongitude)
.isNotNull(Resource::getLatitude));
if (CollUtil.isNotEmpty(resourceList)) {
// 分组
Map<String, List<Resource>> groupedResources = resourceList.stream()
.collect(Collectors.groupingBy(Resource::getType));
List<Resource> type1Resources = groupedResources.getOrDefault("1", new ArrayList<>());
hospitalList = type1Resources.stream()
.map(TblBaseHospitalVo::new)
.collect(Collectors.toList());
List<Resource> type3Resources = groupedResources.getOrDefault("3", new ArrayList<>());
roomList = type3Resources.stream()
.map(TblBaseHospitalVo::new)
.collect(Collectors.toList());
}
List<XjAed> aedList = xjAedService.list(new LambdaQueryWrapper<XjAed>()
.isNotNull(XjAed::getLatitude)
.isNotNull(XjAed::getLongitude));
if (CollUtil.isNotEmpty(aedList)) {
xjAedList = aedList.stream().map(TblBaseHospitalVo::new).collect(Collectors.toList());
}
// 找出最近的两个点
hospitalList = findThreeNearestHospitals(2, hospitalList, TypeConversionUtil.toDoubleOfNull(longitude), TypeConversionUtil.toDoubleOfNull(latitude));
roomList = findThreeNearestHospitals(2, roomList, TypeConversionUtil.toDoubleOfNull(longitude), TypeConversionUtil.toDoubleOfNull(latitude));
xjAedList = findThreeNearestHospitals(2, xjAedList, TypeConversionUtil.toDoubleOfNull(longitude), TypeConversionUtil.toDoubleOfNull(latitude));
list.addAll(hospitalList);
list.addAll(roomList);
list.addAll(xjAedList);
// 赋值距离
for (TblBaseHospitalVo vo : list) {
if (vo.getLat() != null && Double.parseDouble(vo.getLat().toString()) != 0.0 && vo.getLon() != null && Double.parseDouble(vo.getLon().toString()) != 0.0) {
double lat2 = Double.parseDouble(vo.getLat().toString());
double lng2 = Double.parseDouble(vo.getLon().toString());
double distance = getDistance(TypeConversionUtil.toDoubleOfNull(latitude), TypeConversionUtil.toDoubleOfNull(longitude), lat2, lng2);
if (distance > 1000d) {
vo.setDistance(Math.round((distance / 1000d) * 100) / 100 + "km");
} else {
vo.setDistance(Math.round(distance * 100) / 100 + "m");
}
}
}
return list;
}
/**
* 获取最近的点
*
* @param allList 所有资源
* @param lon 经纬度
* @param lat 经纬度
* @return 最近的医院列表
*/
public List<TblBaseHospitalVo> findThreeNearestHospitals(int num, List<TblBaseHospitalVo> allList, final Double lon, final Double lat) {
if (allList == null || allList.size() < num) {
return allList; // 如果列表中没有足够的点,则返回全部点
}
// 先对整个列表进行排序
allList.sort(new Comparator<TblBaseHospitalVo>() {
@Override
public int compare(TblBaseHospitalVo h1, TblBaseHospitalVo h2) {
double dist1 = distance(lat, lon, h1.getLat().doubleValue(), h1.getLon().doubleValue());
double dist2 = distance(lat, lon, h2.getLat().doubleValue(), h2.getLon().doubleValue());
return Double.compare(dist1, dist2);
}
});
// 选择最近的点
return new ArrayList<>(allList.subList(0, num));
}
/**
* 计算两点之间的距离
*
* @param lat1 经纬度1
* @param lon1 经纬度1
* @param lat2 经纬度2
* @param lon2 经纬度2
* @return 距离
*/
private static double distance(double lat1, double lon1, double lat2, double lon2) {
// 地球半径(单位:千米)
final int R = 6371;
double latDistance = Math.toRadians(lat2 - lat1);
double lonDistance = Math.toRadians(lon2 - lon1);
double a = Math.sin(latDistance / 2) * Math.sin(latDistance / 2)
+ Math.cos(Math.toRadians(lat1)) * Math.cos(Math.toRadians(lat2))
* Math.sin(lonDistance / 2) * Math.sin(lonDistance / 2);
double c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a));
// 将距离转化为米
return R * c * 1000;
}
private static double EARTH_RADIUS = 6378.137;
/**
* 根据经纬度计算两点之间的距离 GetDistance:(). <br/>
*
* @param lat1 1点的纬度
* @param lng1 1点的经度
* @param lat2 2点的纬度
* @param lng2 2点的经度
* @return 距离 单位 米
* @author chiwei
*/
public static double getDistance(double lat1, double lng1, double lat2, double lng2) {
double radLat1 = getRadian(lat1);
double radLat2 = getRadian(lat2);
double a = radLat1 - radLat2;// 两点纬度差
double b = getRadian(lng1) - getRadian(lng2);// 两点的经度差
double s = 2 * Math.asin(Math.sqrt(
Math.pow(Math.sin(a / 2), 2) + Math.cos(radLat1) * Math.cos(radLat2) * Math.pow(Math.sin(b / 2), 2)));
s = s * EARTH_RADIUS;
return s * 1000;
}
/**
* 角度弧度计算公式 rad:(). <br/>
* <p>
* 360度=2π π=Math.PI
* <p>
* x度 = x*π/360 弧度
*
* @param degree
* @return
* @author chiwei
* @since JDK 1.6
*/
private static double getRadian(double degree) {
return degree * Math.PI / 180.0;
}
@Override
public IPage<TodayEmergencyVO> todayEmergencyList(TodayEmergencyDTO dto) {
List<TodayEmergencyVO> list = new ArrayList<>();
Date date = new Date();
Date startDate = ObjUtil.isNotEmpty(dto.getStartDate()) ?
DateUtil.beginOfDay(dto.getStartDate()) : DateUtil.beginOfDay(date);
Date endDate = ObjUtil.isNotEmpty(dto.getEndDate()) ?
DateUtil.endOfDay(dto.getEndDate()).offset(DateField.MILLISECOND, -999) :
DateUtil.endOfDay(date).offset(DateField.MILLISECOND, -999);
// 获取数据
emergencyData(startDate, endDate, list);
noticeData(startDate, endDate, list);
watchData(startDate, endDate, list);
if (CollUtil.isEmpty(list)) {
return new Page<>();
}
// 使用HuTool工具类排序和分页
return processWithHuTool(list, dto);
}
/**
* 使用HuTool工具类处理排序和分页
*/
private IPage<TodayEmergencyVO> processWithHuTool(List<TodayEmergencyVO> list, TodayEmergencyDTO dto) {
// 按时间字段倒序排序
ListUtil.sort(list, (o1, o2) -> {
Date time1 = o1.getTime();
Date time2 = o2.getTime();
if (time1 == null && time2 == null) return 0;
if (time1 == null) return 1;
if (time2 == null) return -1;
return time2.compareTo(time1);
});
// 分页参数处理
int pageNo = ObjectUtil.defaultIfNull(dto.getPageNo(), 1);
int pageSize = ObjectUtil.defaultIfNull(dto.getPageSize(), 10);
int total = list.size();
// 计算分页范围
int startIndex = (pageNo - 1) * pageSize;
if (startIndex > total) {
startIndex = total;
}
int endIndex = Math.min(startIndex + pageSize, total);
List<TodayEmergencyVO> pageList = ListUtil.sub(list, startIndex, endIndex);
// 创建分页结果
IPage<TodayEmergencyVO> page = new Page<>(pageNo, pageSize, total);
page.setRecords(pageList);
return page;
}
/**
* 获取云坐席数据
*
* @param startDate 开始时间
* @param endDate 结束时间
* @param list 列表
*/
private void noticeData(Date startDate, Date endDate, List<TodayEmergencyVO> list) {
List<TblQimoNotice> noticeList = noticeService.list(
new LambdaQueryWrapper<TblQimoNotice>().between(TblQimoNotice::getCreateDate, startDate, endDate));
if (noticeList != null && !noticeList.isEmpty()) {
List<String> phoneList = noticeList.stream().map(TblQimoNotice::getCallNo).distinct().collect(Collectors.toList());
List<SysUser> userList = sysBaseAPI.getUserByPhoneList(phoneList).getResult();
// 根据手机号分组
Map<String, List<SysUser>> userMap = userList.stream().collect(Collectors.groupingBy(SysUser::getPhone));
for (TblQimoNotice notice : noticeList) {
TodayEmergencyVO vo = new TodayEmergencyVO();
vo.setEmergencyType("2");
vo.setPhone(notice.getCallNo());
List<SysUser> users = userMap.get(notice.getCallNo());
if (users != null) {
SysUser sysUser = users.get(0);
vo.setUserId(sysUser.getId());
vo.setRealName(sysUser.getRealname());
vo.setSex(sysUser.getSex());
vo.setAge(sysUser.getAge());
if (ObjUtil.isNotEmpty(sysUser.getOrgCode())) {
SysDepart secondDepart = sysCache.getDepartByOrgCode(GlobalUtils.getSecondDepartOrgCode(sysUser.getOrgCode()));
if (secondDepart != null) {
vo.setDepartCode(secondDepart.getOrgCode());
vo.setDepartName(secondDepart.getDepartName());
}
SysDepart thirdDepart = sysCache.getDepartByOrgCode(GlobalUtils.getThirdDepartOrgCode(sysUser.getOrgCode()));
if (thirdDepart != null) {
vo.setOrgCode(thirdDepart.getOrgCode());
vo.setOrgName(thirdDepart.getDepartName());
}
}
} else {
vo.setRealName("未知");
vo.setDepartName("未知");
vo.setOrgName("未知");
}
vo.setTime(notice.getCreateDate());
list.add(vo);
}
}
}
/**
* 获取应急数据
* @param startDate 开始时间
* @param endDate 结束时间
* @param list 列表
*/
private void emergencyData(Date startDate, Date endDate, List<TodayEmergencyVO> list){
List<Order> orderList = orderMapper.selectList(
new LambdaQueryWrapper<Order>().between(Order::getCreateTime, startDate, endDate).in(Order::getInitiatorType,Arrays.asList("0","1")));
if (orderList != null && !orderList.isEmpty()) {
List<String> userIdList = orderList.stream().map(Order::getInitiatorUserId).distinct().collect(Collectors.toList());
List<LoginUser> userList = sysBaseAPI.listUserByIdsNew(userIdList);
// 根据用户id分组
Map<String, LoginUser> userMap = userList.stream()
.collect(Collectors.toMap(LoginUser::getId, a -> a, (k1, k2) -> k1));
for (Order order : orderList) {
TodayEmergencyVO vo = new TodayEmergencyVO();
vo.setUserId(order.getInitiatorUserId());
if (order.getInitiatorType().equals("0")){
vo.setEmergencyType("0");
}
if (order.getInitiatorType().equals("1")){
vo.setEmergencyType("1");
}
vo.setPhone(order.getInitiatorUserMobile());
LoginUser user = userMap.get(order.getInitiatorUserId());
if (user != null) {
vo.setRealName(user.getRealname());
vo.setSex(user.getSex());
vo.setAge(user.getAge());
if (ObjUtil.isNotEmpty(user.getOrgCode())) {
SysDepart secondDepart = sysCache.getDepartByOrgCode(GlobalUtils.getSecondDepartOrgCode(user.getOrgCode()));
if (secondDepart != null) {
vo.setDepartCode(secondDepart.getOrgCode());
vo.setDepartName(secondDepart.getDepartName());
}
SysDepart thirdDepart = sysCache.getDepartByOrgCode(GlobalUtils.getThirdDepartOrgCode(user.getOrgCode()));
if (thirdDepart != null) {
vo.setOrgCode(thirdDepart.getOrgCode());
vo.setOrgName(thirdDepart.getDepartName());
}
}
vo.setLongitude(order.getInitiatorLongitude());
vo.setLatitude(order.getInitiatorLatitude());
} else {
vo.setRealName("未知");
vo.setDepartName("未知");
vo.setOrgName("未知");
}
vo.setTime(order.getCreateTime());
list.add(vo);
}
}
}
/**
* 获取预警数据
* @param startDate 开始时间
* @param endDate 结束时间
* @param list 列表
*/
private void watchData(Date startDate, Date endDate, List<TodayEmergencyVO> list){
IPage<WatchMonitorDataVo> watchListResult = GlobalUtils.getCloudResultData(
watchApi.getMonitorList(null, null, DateUtil.formatDate(startDate), DateUtil.formatDate(endDate),
1, -1));
if (watchListResult != null) {
List<WatchMonitorDataVo> watchList = watchListResult.getRecords();
if (watchList != null && !watchList.isEmpty()) {
List<String> userIdList = watchList.stream().map(WatchMonitorDataVo::getUserId).distinct().collect(Collectors.toList());
List<LoginUser> loginUsers = sysBaseAPI.listUserByIdsNew(userIdList);
for (WatchMonitorDataVo watch : watchList) {
TodayEmergencyVO vo = new TodayEmergencyVO();
loginUsers.stream().filter(item->item.getId().equals(watch.getUserId())).findFirst().ifPresent(item->{
if (ObjUtil.isNotEmpty(item.getOrgCode())) {
SysDepart secondDepart = sysCache.getDepartByOrgCode(GlobalUtils.getSecondDepartOrgCode(item.getOrgCode()));
if (secondDepart != null) {
vo.setDepartCode(secondDepart.getOrgCode());
vo.setDepartName(secondDepart.getDepartName());
}
SysDepart thirdDepart = sysCache.getDepartByOrgCode(GlobalUtils.getThirdDepartOrgCode(item.getOrgCode()));
if (thirdDepart != null) {
vo.setOrgCode(thirdDepart.getOrgCode());
vo.setOrgName(thirdDepart.getDepartName());
}
}
});
vo.setUserId(watch.getUserId());
vo.setRealName(watch.getRealName());
vo.setEmergencyType("3");
vo.setSex(watch.getSex());
vo.setAge(watch.getAge());
vo.setPhone(watch.getPhone());
vo.setAddress(watch.getAddress());
vo.setLongitude(watch.getLon());
vo.setLatitude(watch.getLat());
vo.setEventType(watch.getEventType());
vo.setTime(watch.getWarnTime());
list.add(vo);
}
}
}
}
@Override
public HealthArchivesVO healthArchives(String userId) {
return HealthArchivesGenerator.generateRandomHealthArchives();
}
@Override
public CareUserVO careUser(String userId) {
ListUser user = new ListUser();
user.setUserIds(Collections.singletonList(userId));
List<HealthUserEmployeeEx> healthUserEmployeeExes = sysBaseAPI.listEmployeeUserByIds(user);
CareUserVO careUserVO = new CareUserVO();
careUserVO.setUserId(userId);
if (healthUserEmployeeExes != null && !healthUserEmployeeExes.isEmpty()) {
careUserVO.setCareLiaisonName(healthUserEmployeeExes.get(0).getCareLiaisonName());
careUserVO.setCareLiaisonPhone(healthUserEmployeeExes.get(0).getCareLiaisonPhone());
careUserVO.setCareLiaisonJob(healthUserEmployeeExes.get(0).getCareLiaisonJob());
careUserVO.setLifeguardName(healthUserEmployeeExes.get(0).getLifeguardName());
careUserVO.setLifeguardPhone(healthUserEmployeeExes.get(0).getLifeguardPhone());
}
return careUserVO;
}
}
@@ -1,38 +1,55 @@
package com.renkang.emergency.largeScreen.service.impl; package com.renkang.emergency.largeScreen.service.impl;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.collection.CollUtil; import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.date.DateUtil; import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.ObjUtil; import cn.hutool.core.util.ObjUtil;
import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.StrUtil; import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.renkang.emergency.bean.response.XjDemandTypeFakerData; import com.renkang.anyan.client.AnYanClient;
import com.renkang.emergency.bean.response.XjHealthSignFakerData; import com.renkang.anyan.config.AnYanProperties;
import com.renkang.emergency.bean.response.XjMedicalCountFakerData; import com.renkang.anyan.model.dto.HealthRoomDTO;
import com.renkang.emergency.bean.response.XjMedicalDataFakerData; import com.renkang.anyan.model.dto.HealthSignListParam;
import com.renkang.anyan.model.dto.MedicalAbnormalDTO;
import com.renkang.anyan.model.vo.*;
import com.renkang.emergency.entity.EmergencyCenter;
import com.renkang.emergency.entity.EmergencyHealthRoom; import com.renkang.emergency.entity.EmergencyHealthRoom;
import com.renkang.emergency.entity.Resource; import com.renkang.emergency.entity.Resource;
import com.renkang.emergency.entity.TblHelpCentorVo; import com.renkang.emergency.entity.XjAed;
import com.renkang.emergency.entity.TblUserHelpVo; import com.renkang.emergency.entity.vo.DataDetailVO;
import com.renkang.emergency.largeScreen.entity.dto.*; import com.renkang.emergency.entity.vo.MedicalDataVO;
import com.renkang.emergency.largeScreen.entity.vo.*; import com.renkang.emergency.largeScreen.entity.dto.HealthRoomBaseDTO;
import com.renkang.emergency.largeScreen.entity.dto.HealthSignDTO;
import com.renkang.emergency.largeScreen.entity.dto.MedicalAbnormalStatisticsDTO;
import com.renkang.emergency.largeScreen.entity.dto.MedicalPeopleNumStatisticsDTO;
import com.renkang.emergency.largeScreen.entity.vo.HealthRoomVO;
import com.renkang.emergency.largeScreen.entity.vo.HealthSignVO;
import com.renkang.emergency.largeScreen.entity.vo.HospitalVO;
import com.renkang.emergency.largeScreen.entity.vo.LargeScreenMap;
import com.renkang.emergency.largeScreen.mapper.LargeScreenMapper; import com.renkang.emergency.largeScreen.mapper.LargeScreenMapper;
import com.renkang.emergency.service.IEmergencyHealthRoomService; import com.renkang.emergency.largeScreen.service.ILargeScreenDataService;
import com.renkang.emergency.largeScreen.service.ILargeScreenService; import com.renkang.emergency.largeScreen.service.ILargeScreenService;
import com.renkang.emergency.service.IEmergencyCenterService;
import com.renkang.emergency.service.IEmergencyHealthRoomService;
import com.renkang.emergency.service.IResourceService; import com.renkang.emergency.service.IResourceService;
import com.renkang.emergency.service.IXjAedService;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import org.jeecg.common.api.dto.ServiceFakerData;
import org.jeecg.common.api.dto.YcMedicalCenterFakerData;
import org.jeecg.common.constant.FakerDataConstant;
import org.jeecg.common.util.RedisUtil;
import org.jeecg.util.RedisClientUtil; import org.jeecg.util.RedisClientUtil;
import org.jeecg.util.RedisKeyPrefix; import org.jeecg.util.RedisKeyPrefix;
import org.springframework.beans.BeanUtils; import org.jeecg.util.TypeConversionUtil;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.*; import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Random;
import java.util.function.Consumer;
import java.util.function.Supplier;
import java.util.stream.Collectors; import java.util.stream.Collectors;
/** /**
@@ -48,440 +65,477 @@ public class LargeScreenServiceImpl extends ServiceImpl<LargeScreenMapper, Large
private final String MEDICAL_PEOPLE_NUM_STATISTICS = "medicalPeopleNumStatistics"; private final String MEDICAL_PEOPLE_NUM_STATISTICS = "medicalPeopleNumStatistics";
private final String MEDICAL_ABNORMAL_STATISTICS = "medicalAbnormalStatistics"; private final String MEDICAL_ABNORMAL_STATISTICS = "medicalAbnormalStatistics";
private final String HEALTH_SIGN = "healthSign"; private final String HEALTH_SIGN = "healthSign";
private final IEmergencyCenterService centerService;
private final IXjAedService xjAedService;
private final IResourceService resourceService; private final IResourceService resourceService;
private final IEmergencyHealthRoomService roomService; private final IEmergencyHealthRoomService roomService;
private final RedisClientUtil redisClientUtil; private final RedisClientUtil redisClientUtil;
private final RedisUtil redisUtil; private final ILargeScreenDataService screenDataService;
private final AnYanClient anYanClient;
private final AnYanProperties anYanProperties;
private static final double MIN_LONGITUDE = 80.0;
private static final double MAX_LONGITUDE = 100.0;
private static final double MIN_LATITUDE = 35.0;
private static final double MAX_LATITUDE = 50.0;
private static final String[] CITIES = {
"乌鲁木齐", "喀什", "克拉玛依", "吐鲁番", "哈密",
"阿克苏", "巴音郭楞", "昌吉", "石河子", "博乐"
};
private static final String[] SURNAMES = {
"", "", "", "", "",
"", "", "", "", "",
"", "", "", "", "",
"", "", "", "", ""
};
private static final String[] FIRST_NAMES = {
"", "", "", "", "",
"", "", "", "", "",
"", "", "", "", "",
"", "", "", "", ""
};
@Override @Override
public List<LargeScreenMap> map(String type) { public List<LargeScreenMap> map(String type) {
List<LargeScreenMap> maps = new ArrayList<>(); List<LargeScreenMap> maps = new ArrayList<>();
if (StrUtil.isEmpty(type) || type.equals("1")) { if (StrUtil.isEmpty(type) || type.equals("1")) {
List<Resource> list = resourceService.list(new LambdaQueryWrapper<Resource>() List<Resource> list = resourceService.list(new LambdaQueryWrapper<Resource>()
.eq(StrUtil.isNotEmpty(type),Resource::getType, type) .eq(StrUtil.isNotEmpty(type), Resource::getType, type)
.eq(StrUtil.isEmpty(type),Resource::getType, "1")); .eq(StrUtil.isEmpty(type), Resource::getType, "1"));
maps.addAll(list.stream().map(LargeScreenMap::new).collect(Collectors.toList())); maps.addAll(list.stream().map(LargeScreenMap::new).collect(Collectors.toList()));
} }
if (StrUtil.isEmpty(type) || type.equals("2")) { if (StrUtil.isEmpty(type) || type.equals("3")) {
List<EmergencyHealthRoom> list = roomService.list(); List<Resource> list = resourceService.list(new LambdaQueryWrapper<Resource>()
.eq(StrUtil.isNotEmpty(type), Resource::getType, type)
.eq(StrUtil.isEmpty(type), Resource::getType, "3"));
maps.addAll(list.stream().map(LargeScreenMap::new).collect(Collectors.toList()));
}
if (StrUtil.isEmpty(type) || type.equals("4")){
List<XjAed> list = xjAedService.list(new LambdaQueryWrapper<XjAed>().isNotNull(XjAed::getLatitude));
maps.addAll(list.stream().map(LargeScreenMap::new).collect(Collectors.toList())); maps.addAll(list.stream().map(LargeScreenMap::new).collect(Collectors.toList()));
} }
if (StrUtil.isEmpty(type) || type.equals("5")) { if (StrUtil.isEmpty(type) || type.equals("5")) {
List<Resource> list = resourceService.list(new LambdaQueryWrapper<Resource>() List<Resource> list = resourceService.list(new LambdaQueryWrapper<Resource>()
.eq(StrUtil.isNotEmpty(type),Resource::getType, type) .eq(StrUtil.isNotEmpty(type), Resource::getType, type)
.eq(StrUtil.isEmpty(type),Resource::getType, "5")); .eq(StrUtil.isEmpty(type), Resource::getType, "5"));
maps.addAll(list.stream().map(LargeScreenMap::new).collect(Collectors.toList())); maps.addAll(list.stream().map(LargeScreenMap::new).collect(Collectors.toList()));
} }
return maps; return maps;
} }
@Override @Override
public List<HealthRoomBaseVO> healthRoomBase(HealthRoomBaseDTO dto){ public List<HealthRoomBaseVO> healthRoomBase(HealthRoomBaseDTO dto) {
List<HealthRoomBaseVO> list = new ArrayList<>(); List<HealthRoomBaseVO> list = new ArrayList<>();
for (int i = 0; i < 10; i++) { List<Resource> resources = resourceService.list(new LambdaQueryWrapper<Resource>().eq(Resource::getType, 3)
.between(ObjUtil.isNotEmpty(dto.getCheckInDateBegin()), Resource::getCreateTime, dto.getCheckInDateBegin(), dto.getCheckInDateEnd()));
for (Resource resource : resources) {
HealthRoomBaseVO baseVO = new HealthRoomBaseVO(); HealthRoomBaseVO baseVO = new HealthRoomBaseVO();
baseVO.setId(UUID.randomUUID().toString()); baseVO.setId(resource.getId());
String[] data = generateRandomLocation(); baseVO.setAddress(resource.getAddress());
baseVO.setAddress(data[0]); baseVO.setLon(String.valueOf(resource.getLongitude()));
baseVO.setLon(data[1]); baseVO.setLat(String.valueOf(resource.getLatitude()));
baseVO.setLat(data[2]); baseVO.setDepartName(resource.getName());
baseVO.setDepartName("新疆大厂的单位"); baseVO.setBuildDate(String.valueOf(resource.getCreateTime()));
baseVO.setBuildDate(new Date());
list.add(baseVO); list.add(baseVO);
} }
// 查询第三方接口返回 此接口返回对象跟原有可能不太一样 要注意
return list; return list;
} }
@Override @Override
public IPage<HealthRoomVO> healthRoomDetail(HealthRoomDTO dto){ public IPage<HealthRoomVO> healthRoomDetail(HealthRoomDTO dto) {
IPage<HealthRoomVO> page = new Page<>(dto.getPageNo(), dto.getPageSize()); IPage<HealthPlaceHomDetailsVO> detailsIPage;
page.setTotal(20); try {
List<HealthRoomVO> list = new ArrayList<>(); detailsIPage = anYanClient.healthPlaceHomDetailList(dto);
Map<String, String> CHECK_TYPES = new HashMap<>(); if (ObjUtil.isEmpty(detailsIPage.getRecords())) {
CHECK_TYPES.put("11", "BMI"); return new Page<>();
CHECK_TYPES.put("21", "收缩压"); }
CHECK_TYPES.put("22", "舒张压"); } catch (Exception e) {
CHECK_TYPES.put("31", "血糖"); log.error("调用安眼API失败", e);
CHECK_TYPES.put("41", "低密度脂蛋白"); throw new RuntimeException("调用安眼API失败");
CHECK_TYPES.put("42", "总胆固醇");
CHECK_TYPES.put("43", "甘油三酯");
CHECK_TYPES.put("51", "尿酸");
CHECK_TYPES.put("61", "同型半胱氨酸");
List<String> keys = new ArrayList<>(CHECK_TYPES.keySet());
for (int i = 0; i < 10; i++) {
HealthRoomVO roomVO = new HealthRoomVO();
roomVO.setName("小屋");
roomVO.setDepartName("新疆大厂");
roomVO.setCheckInDate(DateUtil.today());
Random random = new Random();
String randomKey = keys.get(random.nextInt(keys.size()));
roomVO.setCheckType(randomKey);
roomVO.setLastVal("111");
roomVO.setGoalVal("100");
roomVO.setCurrentVal("105");
roomVO.setCompareVal("5");
roomVO.setSuccessFlag("0");
list.add(roomVO);
} }
page.setRecords(list); IPage<HealthRoomVO> page = new Page<>();
// 查询第三方接口返回 BeanUtil.copyProperties(detailsIPage, page);
List<HealthPlaceHomDetailsVO> records = detailsIPage.getRecords();
page.setRecords(records.stream().map(HealthRoomVO::new).collect(Collectors.toList()));
return page; return page;
} }
@Override @Override
public IPage<MedicalAbnormalVO> medicalAbnormal (MedicalAbnormalDTO dto){ public IPage<MedicalAbnormalVO> medicalAbnormal(MedicalAbnormalDTO dto) {
IPage<MedicalAbnormalVO> page = new Page<>(dto.getPageNo(), dto.getPageSize()); IPage<MedicalAbnormalVO> page;
page.setTotal(20); try {
List<MedicalAbnormalVO> list = new ArrayList<>(); page = anYanClient.medicalAbnormalList(dto);
for (int i = 0; i < 20; i++) { if (ObjUtil.isEmpty(page.getRecords())) {
MedicalAbnormalVO abnormalVO = new MedicalAbnormalVO(); return new Page<>();
abnormalVO.setCheckInDate(DateUtil.today()); }
abnormalVO.setHospitalName("新疆医院"); } catch (Exception e) {
abnormalVO.setDepartName("新疆大厂"); log.error("调用安眼API失败", e);
Random random = new Random(); throw new RuntimeException("调用安眼API失败");
abnormalVO.setSex(random.nextInt(2) + 1);
abnormalVO.setAge(random.nextInt(65 - 18 + 1) + 18);
abnormalVO.setName(generateRandomName());
list.add(abnormalVO);
} }
page.setRecords(list);
// 查询第三方接口返回
return page; return page;
} }
@Override @Override
public IPage<HealthWeightLossVO> healthWeightLoss (HealthWeightLossDTO dto){ public IPage<WeightPressureList> healthWeightLoss(HealthSignListParam dto) {
IPage<HealthWeightLossVO> page = new Page<>(dto.getPageNo(), dto.getPageSize()); IPage<WeightPressureList> page;
page.setTotal(20); try {
List<HealthWeightLossVO> list = new ArrayList<>(); page = anYanClient.weightPressureList(dto);
for (int i = 0; i < 20; i++) { if (ObjUtil.isEmpty(page.getRecords())) {
HealthWeightLossVO weightLossVO = new HealthWeightLossVO(); return new Page<>();
weightLossVO.setName(generateRandomName()); }
weightLossVO.setWeight("80"); } catch (Exception e) {
weightLossVO.setDepartName("新疆大厂"); log.error("调用安眼API失败", e);
weightLossVO.setBmi("26.8"); throw new RuntimeException("调用安眼API失败");
weightLossVO.setWaist("80");
weightLossVO.setHeight("180");
weightLossVO.setBmiFlag("0");
weightLossVO.setInputDate(new Date());
Random random = new Random();
weightLossVO.setSex(random.nextInt(2) + 1);
weightLossVO.setAge(random.nextInt(65 - 18 + 1) + 18);
list.add(weightLossVO);
} }
page.setRecords(list);
// 查询第三方接口返回
return page; return page;
} }
@Override @Override
public IPage<HealthBloodSugarVO> healthBloodSugar (HealthBloodSugarDTO dto){ public IPage<BloodSugarClockSList> healthBloodSugar(HealthSignListParam dto) {
IPage<HealthBloodSugarVO> page = new Page<>(dto.getPageNo(), dto.getPageSize()); IPage<BloodSugarClockSList> page;
page.setTotal(20); try {
List<HealthBloodSugarVO> list = new ArrayList<>(); page = anYanClient.bloodSugarClockSList(dto);
for (int i = 0; i < 20; i++) { if (ObjUtil.isEmpty(page.getRecords())) {
HealthBloodSugarVO bloodSugarVO = new HealthBloodSugarVO(); return new Page<>();
bloodSugarVO.setName(generateRandomName()); }
bloodSugarVO.setDepartName("新疆大厂"); } catch (Exception e) {
bloodSugarVO.setBmiFlag("0"); log.error("调用安眼API失败", e);
bloodSugarVO.setInputDate(new Date()); throw new RuntimeException("调用安眼API失败");
bloodSugarVO.setBsVal("100");
bloodSugarVO.setWaist("88");
Random random = new Random();
bloodSugarVO.setSex(random.nextInt(2) + 1);
bloodSugarVO.setAge(random.nextInt(65 - 18 + 1) + 18);
list.add(bloodSugarVO);
} }
page.setRecords(list);
// 查询第三方接口返回
return page; return page;
} }
@Override @Override
public IPage<HealthBloodPressureVO> healthBloodPressure (HealthBloodPressureDTO dto){ public IPage<BloodPressureList> healthBloodPressure(HealthSignListParam dto) {
IPage<HealthBloodPressureVO> page = new Page<>(dto.getPageNo(), dto.getPageSize()); IPage<BloodPressureList> page;
page.setTotal(20); try {
List<HealthBloodPressureVO> list = new ArrayList<>(); page = anYanClient.bloodPressureList(dto);
for (int i = 0; i < 20; i++) { if (ObjUtil.isEmpty(page.getRecords())) {
HealthBloodPressureVO bloodPressureVO = new HealthBloodPressureVO(); return new Page<>();
bloodPressureVO.setName(generateRandomName()); }
bloodPressureVO.setDepartName("新疆大厂"); } catch (Exception e) {
bloodPressureVO.setInputDate(new Date()); log.error("调用安眼API失败", e);
bloodPressureVO.setDbp("25"); throw new RuntimeException("调用安眼API失败");
bloodPressureVO.setDbpFlag("0");
bloodPressureVO.setSbp("15");
bloodPressureVO.setSbpFlag("0");
Random random = new Random();
bloodPressureVO.setSex(random.nextInt(2) + 1);
bloodPressureVO.setAge(random.nextInt(65 - 18 + 1) + 18);
list.add(bloodPressureVO);
} }
page.setRecords(list);
// 查询第三方接口返回
return page; return page;
} }
@Override @Override
public List<HospitalVO> hospital(){ public List<HospitalVO> hospital() {
List<HospitalVO> list = new ArrayList<>(); List<HospitalVO> list = new ArrayList<>();
for (int i = 0; i < 20; i++) { List<Resource> resources = resourceService.list(new LambdaQueryWrapper<Resource>().eq(Resource::getType, 1));
HospitalVO hospitalVO = new HospitalVO(); if (CollUtil.isEmpty(resources)) {
hospitalVO.setHospitalName("新疆医院"); return list;
String[] data = generateRandomLocation(); }
hospitalVO.setAddress(data[0]); return resources.stream().map(HospitalVO::new).collect(Collectors.toList());
hospitalVO.setAlias(""+i); }
hospitalVO.setContractDate(new Date());
hospitalVO.setLon(data[1]); @Override
hospitalVO.setLat(data[2]); public List<MedicalPeopleNumStatisticsVO> medicalPeopleNumStatistics(MedicalPeopleNumStatisticsDTO dto) {
list.add(hospitalVO); List<MedicalPeopleNumStatisticsVO> list = redisClientUtil.getList(MEDICAL,
MEDICAL_PEOPLE_NUM_STATISTICS + ":" + dto.getMedicalYear() + ":" + dto.getCenterId(), MedicalPeopleNumStatisticsVO.class);
// 获取假数据
List<MedicalDataVO> medicalDataList = screenDataService.medicalDataDetail(dto.getCenterId());
if (CollUtil.isEmpty(list)) {
list = new ArrayList<>();
for (MedicalDataVO medicalData : medicalDataList) {
if ("1".equals(medicalData.getStatus())) {
MedicalPeopleNumStatisticsVO vo = new MedicalPeopleNumStatisticsVO();
vo.setHospitalName(medicalData.getName());
vo.setCheckedCount(Integer.valueOf(medicalData.getCount()));
list.add(vo);
}
}
} else {
for (MedicalPeopleNumStatisticsVO statistics : list) {
MedicalDataVO medicalData = medicalDataList.stream().filter(item -> item.getName().equals(statistics.getHospitalName())).findFirst().orElse(null);
if (null != medicalData) {
if ("1".equals(medicalData.getStatus())) {
if (medicalData.getCount().contains("+")) {
statistics.setCheckedCount(statistics.getCheckedCount() + Integer.parseInt(medicalData.getCount().replace("+", "").trim()));
} else {
statistics.setCheckedCount(Integer.parseInt(medicalData.getCount().replace("+", "").trim()));
}
}
}
}
} }
return list; return list;
} }
@Override @Override
public List<MedicalPeopleNumStatisticsVO> medicalPeopleNumStatistics (MedicalPeopleNumStatisticsDTO dto){ public MedicalAbnormalStatisticsVO medicalAbnormalStatistics(MedicalAbnormalStatisticsDTO dto) {
Boolean enable = (Boolean) redisUtil.get(StrUtil.isNotEmpty(dto.getCenterId()) ? if (StrUtil.isEmpty(dto.getMedicalYear())) {
FakerDataConstant.XJ_MEDICAL_COUNT_ENABLE + ":" + dto.getCenterId() : FakerDataConstant.XJ_MEDICAL_COUNT_ENABLE); dto.setMedicalYear(String.valueOf(DateUtil.thisYear()));
if (enable != null && enable) { }
List<MedicalPeopleNumStatisticsVO> vo = XjMedicalCountFakerData(dto.getCenterId()); MedicalAbnormalStatisticsVO statisticsVO = redisClientUtil.get(MEDICAL,
if (vo != null) { MEDICAL_ABNORMAL_STATISTICS + ":" + dto.getMedicalYear() + ":" + dto.getCenterId(), MedicalAbnormalStatisticsVO.class);
return vo; // 获取假数据
DataDetailVO dataDetailVO = screenDataService.dataDetail(dto.getCenterId(), "34");
if (ObjUtil.isEmpty(statisticsVO)) {
statisticsVO = new MedicalAbnormalStatisticsVO();
if (null != dataDetailVO) {
if ("1".equals(dataDetailVO.getTotalCountStatus())) {
statisticsVO.setTotalCount(Integer.valueOf(dataDetailVO.getTotalCount().replace("+", "").trim()));
}
if ("1".equals(dataDetailVO.getCardiovaAbCountStatus())) {
statisticsVO.setCardiovaAbCount(Integer.valueOf(dataDetailVO.getCardiovaAbCount().replace("+", "").trim()));
}
if ("1".equals(dataDetailVO.getCerebrovAbCountStatus())) {
statisticsVO.setCerebrovAbCount(Integer.valueOf(dataDetailVO.getCerebrovAbCount().replace("+", "").trim()));
}
if ("1".equals(dataDetailVO.getCctaAbCountStatus())) {
statisticsVO.setCctaAbCount(Integer.valueOf(dataDetailVO.getCctaAbCount().replace("+", "").trim()));
}
} }
} } else {
List<MedicalPeopleNumStatisticsVO> list = redisClientUtil.getList(MEDICAL,MEDICAL_PEOPLE_NUM_STATISTICS,MedicalPeopleNumStatisticsVO.class); if (null != dataDetailVO) {
if (CollUtil.isEmpty(list)){ if ("1".equals(dataDetailVO.getTotalCountStatus())) {
return new ArrayList<>(); if (dataDetailVO.getTotalCount().contains("+")) {
} statisticsVO.setTotalCount(statisticsVO.getTotalCount() + Integer.parseInt(dataDetailVO.getTotalCount().replace("+", "").trim()));
return list; } else {
} statisticsVO.setTotalCount(Integer.valueOf(dataDetailVO.getTotalCount().replace("+", "").trim()));
}
@Override }
public MedicalAbnormalStatisticsVO medicalAbnormalStatistics (MedicalAbnormalStatisticsDTO dto){ if ("1".equals(dataDetailVO.getCardiovaAbCountStatus())) {
Boolean enable = (Boolean) redisUtil.get(StrUtil.isNotEmpty(dto.getCenterId()) if (dataDetailVO.getCardiovaAbCount().contains("+")) {
? FakerDataConstant.XJ_MEDICAL_DATA_ENABLE + ":" + dto.getCenterId() : FakerDataConstant.XJ_MEDICAL_DATA_ENABLE); statisticsVO.setCardiovaAbCount(statisticsVO.getCardiovaAbCount() + Integer.parseInt(dataDetailVO.getCardiovaAbCount().replace("+", "").trim()));
if (enable != null && enable) { } else {
MedicalAbnormalStatisticsVO vo = XjMedicalDataFakerDataNew(dto.getCenterId()); statisticsVO.setCardiovaAbCount(Integer.valueOf(dataDetailVO.getCardiovaAbCount().replace("+", "").trim()));
if (vo != null) { }
return vo; }
if ("1".equals(dataDetailVO.getCerebrovAbCountStatus())) {
if (dataDetailVO.getCerebrovAbCount().contains("+")) {
statisticsVO.setCerebrovAbCount(statisticsVO.getCerebrovAbCount() + Integer.parseInt(dataDetailVO.getCerebrovAbCount().replace("+", "").trim()));
} else {
statisticsVO.setCerebrovAbCount(Integer.valueOf(dataDetailVO.getCerebrovAbCount().replace("+", "").trim()));
}
}
if ("1".equals(dataDetailVO.getCctaAbCountStatus())) {
if (dataDetailVO.getCctaAbCount().contains("+")) {
statisticsVO.setCctaAbCount(statisticsVO.getCctaAbCount() + Integer.parseInt(dataDetailVO.getCctaAbCount().replace("+", "").trim()));
} else {
statisticsVO.setCctaAbCount(Integer.valueOf(dataDetailVO.getCctaAbCount().replace("+", "").trim()));
}
}
} }
} }
MedicalAbnormalStatisticsVO statisticsVO = redisClientUtil.get(MEDICAL,MEDICAL_ABNORMAL_STATISTICS,MedicalAbnormalStatisticsVO.class);
if (ObjUtil.isEmpty(statisticsVO)){
return new MedicalAbnormalStatisticsVO();
}
return statisticsVO; return statisticsVO;
} }
@Override @Override
public HealthSignVO healthSign (HealthSignDTO dto){ public HealthSignVO healthSign(HealthSignDTO dto) {
Boolean enable = (Boolean) redisUtil.get(StrUtil.isNotEmpty(dto.getCenterId()) // 健康打卡数据
? FakerDataConstant.XJ_HEALTH_SIGN_COUNT_ENABLE + ":" + dto.getCenterId() : FakerDataConstant.XJ_HEALTH_SIGN_COUNT_ENABLE); HealthSignVO vo = redisClientUtil.get(MEDICAL,
if (enable != null && enable) { HEALTH_SIGN + ":" + dto.getCenterId(), HealthSignVO.class);
HealthSignVO vo = XjHealthSignFakerDataNew(dto.getCenterId()); // 获取数据
if (vo != null) { DataDetailVO dataDetailVO = screenDataService.dataDetail(dto.getCenterId(), "33");
return vo;
} if (dataDetailVO == null) {
return vo != null ? vo : new HealthSignVO();
} }
HealthSignVO vo = redisClientUtil.get(MEDICAL,HEALTH_SIGN,HealthSignVO.class);
if (null == vo){ if (vo == null) {
return new HealthSignVO(); vo = newHealthSignVO(dataDetailVO);
} else {
updateHealthSignVO(vo, dataDetailVO);
} }
return vo; return vo;
} }
private HealthSignVO newHealthSignVO(DataDetailVO dataDetailVO) {
HealthSignVO vo = new HealthSignVO();
// 减重
setIfActive(vo::setWeightLossCountDay, dataDetailVO.getWeightLossCountDayStatus(), dataDetailVO.getWeightLossCountDay());
setIfActive(vo::setWeightLossCountMonth, dataDetailVO.getWeightLossCountMonthStatus(), dataDetailVO.getWeightLossCountMonth());
setIfActive(vo::setWeightLossAbnormalCountDay, dataDetailVO.getWeightLossAbnormalCountDayStatus(), dataDetailVO.getWeightLossAbnormalCountDay());
setIfActive(vo::setWeightLossAbnormalCountMonth, dataDetailVO.getWeightLossAbnormalCountMonthStatus(), dataDetailVO.getWeightLossAbnormalCountMonth());
// 血糖
setIfActive(vo::setBloodSugarCountDay, dataDetailVO.getBloodSugarCountDayStatus(), dataDetailVO.getBloodSugarCountDay());
setIfActive(vo::setBloodSugarCountMonth, dataDetailVO.getBloodSugarCountMonthStatus(), dataDetailVO.getBloodSugarCountMonth());
setIfActive(vo::setBloodSugarAbnormalCountDay, dataDetailVO.getBloodSugarAbnormalCountDayStatus(), dataDetailVO.getBloodSugarAbnormalCountDay());
setIfActive(vo::setBloodSugarAbnormalCountMonth, dataDetailVO.getBloodSugarAbnormalCountMonthStatus(), dataDetailVO.getBloodSugarAbnormalCountMonth());
// 血压
setIfActive(vo::setBloodPressureCountDay, dataDetailVO.getBloodPressureCountDayStatus(), dataDetailVO.getBloodPressureCountDay());
setIfActive(vo::setBloodPressureCountMonth, dataDetailVO.getBloodPressureCountMonthStatus(), dataDetailVO.getBloodPressureCountMonth());
setIfActive(vo::setBloodPressureAbnormalCountDay, dataDetailVO.getBloodPressureAbnormalCountDayStatus(), dataDetailVO.getBloodPressureAbnormalCountDay());
setIfActive(vo::setBloodPressureAbnormalCountMonth, dataDetailVO.getBloodPressureAbnormalCountMonthStatus(), dataDetailVO.getBloodPressureAbnormalCountMonth());
return vo;
}
private void updateHealthSignVO(HealthSignVO vo, DataDetailVO dataDetailVO) {
// 减重
updateIfActive(vo::getWeightLossCountDay, vo::setWeightLossCountDay,
dataDetailVO.getWeightLossCountDayStatus(), dataDetailVO.getWeightLossCountDay());
updateIfActive(vo::getWeightLossCountMonth, vo::setWeightLossCountMonth,
dataDetailVO.getWeightLossCountMonthStatus(), dataDetailVO.getWeightLossCountMonth());
updateIfActive(vo::getWeightLossAbnormalCountDay, vo::setWeightLossAbnormalCountDay,
dataDetailVO.getWeightLossAbnormalCountDayStatus(), dataDetailVO.getWeightLossAbnormalCountDay());
updateIfActive(vo::getWeightLossAbnormalCountMonth, vo::setWeightLossAbnormalCountMonth,
dataDetailVO.getWeightLossAbnormalCountMonthStatus(), dataDetailVO.getWeightLossAbnormalCountMonth());
// 血糖
updateIfActive(vo::getBloodSugarCountDay, vo::setBloodSugarCountDay,
dataDetailVO.getBloodSugarCountDayStatus(), dataDetailVO.getBloodSugarCountDay());
updateIfActive(vo::getBloodSugarCountMonth, vo::setBloodSugarCountMonth,
dataDetailVO.getBloodSugarCountMonthStatus(), dataDetailVO.getBloodSugarCountMonth());
updateIfActive(vo::getBloodSugarAbnormalCountDay, vo::setBloodSugarAbnormalCountDay,
dataDetailVO.getBloodSugarAbnormalCountDayStatus(), dataDetailVO.getBloodSugarAbnormalCountDay());
updateIfActive(vo::getBloodSugarAbnormalCountMonth, vo::setBloodSugarAbnormalCountMonth,
dataDetailVO.getBloodSugarAbnormalCountMonthStatus(), dataDetailVO.getBloodSugarAbnormalCountMonth());
// 血压
updateIfActive(vo::getBloodPressureCountDay, vo::setBloodPressureCountDay,
dataDetailVO.getBloodPressureCountDayStatus(), dataDetailVO.getBloodPressureCountDay());
updateIfActive(vo::getBloodPressureCountMonth, vo::setBloodPressureCountMonth,
dataDetailVO.getBloodPressureCountMonthStatus(), dataDetailVO.getBloodPressureCountMonth());
updateIfActive(vo::getBloodPressureAbnormalCountDay, vo::setBloodPressureAbnormalCountDay,
dataDetailVO.getBloodPressureAbnormalCountDayStatus(), dataDetailVO.getBloodPressureAbnormalCountDay());
updateIfActive(vo::getBloodPressureAbnormalCountMonth, vo::setBloodPressureAbnormalCountMonth,
dataDetailVO.getBloodPressureAbnormalCountMonthStatus(), dataDetailVO.getBloodPressureAbnormalCountMonth());
}
private void setIfActive(Consumer<Integer> setter, String status, String value) {
if ("1".equals(status) && value != null) {
setter.accept(Integer.valueOf(value.replace("+", "").trim()));
}
}
private void updateIfActive(Supplier<Integer> getter, Consumer<Integer> setter,
String status, String value) {
if ("1".equals(status) && value != null) {
int current = getter.get() != null ? getter.get() : 0;
if (value.contains("+")) {
setter.accept(current + Integer.parseInt(value.replace("+", "")));
} else {
setter.accept(Integer.parseInt(value));
}
}
}
@Override @Override
public void runJob(){ public void runJob() {
// 体检人数统计查询 // 查询默认应急中心
List<MedicalPeopleNumStatisticsVO> medicalPeopleNumStatisticsList = new ArrayList<>(); EmergencyCenter defaultCenter = centerService.getOne(new LambdaQueryWrapper<EmergencyCenter>().eq(EmergencyCenter::getDefaultCenter, true), false);
redisClientUtil.set(MEDICAL,MEDICAL_PEOPLE_NUM_STATISTICS,medicalPeopleNumStatisticsList); if (ObjUtil.isEmpty(defaultCenter)) {
return;
}
Date today = new Date();
if (anYanProperties.isEnable()) {
// 体检人数统计查询
List<MedicalPeopleNumStatisticsVO> medicalPeopleNumStatisticsVOS = anYanClient.examinationStatistics(DateUtil.thisYear());
redisClientUtil.set(MEDICAL, MEDICAL_PEOPLE_NUM_STATISTICS + ":" + DateUtil.thisYear() + ":" + defaultCenter.getId(), medicalPeopleNumStatisticsVOS);
// 体检异常数据查询
MedicalAbnormalStatisticsVO medicalAbnormalStatisticsVO = anYanClient.medicalAbnormalStatistics(DateUtil.thisYear());
redisClientUtil.set(MEDICAL, MEDICAL_ABNORMAL_STATISTICS + ":" + DateUtil.thisYear() + ":" + defaultCenter.getId(), medicalAbnormalStatisticsVO);
// 健康打卡今日数据查询
HealthSignStatVO healthSignToday = anYanClient.healthCheckStatistics(DateUtil.beginOfDay(today), DateUtil.endOfDay(today));
// 健康打卡本月数据查询
HealthSignStatVO healthSignMonth = anYanClient.healthCheckStatistics(DateUtil.beginOfMonth(today), DateUtil.endOfMonth(today));
// 减重 血压 血糖 三种数据整合存
HealthSignVO healthSign = new HealthSignVO();
healthSign.setWeightLossCountDay(Integer.valueOf(healthSignToday.getWeigtTotalCount()));
healthSign.setWeightLossAbnormalCountDay(Integer.valueOf(healthSignToday.getWeigtAbCount()));
healthSign.setBloodPressureCountDay(Integer.valueOf(healthSignToday.getBpTotalCount()));
healthSign.setBloodPressureAbnormalCountDay(Integer.valueOf(healthSignToday.getBpAbCount()));
healthSign.setBloodSugarCountDay(Integer.valueOf(healthSignToday.getBsTotalCount()));
healthSign.setBloodSugarAbnormalCountDay(Integer.valueOf(healthSignToday.getBsAbCount()));
healthSign.setWeightLossCountMonth(Integer.valueOf(healthSignMonth.getWeigtTotalCount()));
healthSign.setWeightLossAbnormalCountMonth(Integer.valueOf(healthSignMonth.getWeigtAbCount()));
healthSign.setBloodPressureCountMonth(Integer.valueOf(healthSignMonth.getBpTotalCount()));
healthSign.setBloodPressureAbnormalCountMonth(Integer.valueOf(healthSignMonth.getBpAbCount()));
healthSign.setBloodSugarCountMonth(Integer.valueOf(healthSignMonth.getBpTotalCount()));
healthSign.setBloodSugarAbnormalCountMonth(Integer.valueOf(healthSignMonth.getBpAbCount()));
redisClientUtil.set(MEDICAL, HEALTH_SIGN + defaultCenter.getId(), healthSign);
} else {
randomData(defaultCenter);
}
}
private void randomData(EmergencyCenter defaultCenter) {
List<MedicalPeopleNumStatisticsVO> medicalPeopleNumStatisticsVOS = new ArrayList<>();
Random random = new Random();
for (int i = 0; i < 10; i++) {
MedicalPeopleNumStatisticsVO vo = new MedicalPeopleNumStatisticsVO();
vo.setHospitalName("新疆医院");
vo.setAlias("新疆医院");
int randomCount = random.nextInt(100) + 1;
vo.setCheckedCount(randomCount);
medicalPeopleNumStatisticsVOS.add(vo);
}
redisClientUtil.set(MEDICAL, MEDICAL_PEOPLE_NUM_STATISTICS + ":" + DateUtil.thisYear() + ":" + defaultCenter.getId(), medicalPeopleNumStatisticsVOS);
// 体检异常数据查询 // 体检异常数据查询
List<MedicalAbnormalStatisticsVO> medicalAbnormalStatisticsList = new ArrayList<>(); MedicalAbnormalStatisticsVO medicalAbnormalStatisticsVO = new MedicalAbnormalStatisticsVO();
redisClientUtil.set(MEDICAL,MEDICAL_ABNORMAL_STATISTICS,medicalAbnormalStatisticsList); medicalAbnormalStatisticsVO.setTotalCount(100);
medicalAbnormalStatisticsVO.setCardiovaAbCount(50);
// 减重 健康打卡数据今日查询 medicalAbnormalStatisticsVO.setCerebrovAbCount(50);
HealthSignDataVO weightLossDay = new HealthSignDataVO(); redisClientUtil.set(MEDICAL, MEDICAL_ABNORMAL_STATISTICS + ":" + DateUtil.thisYear() + ":" + defaultCenter.getId(), medicalAbnormalStatisticsVO);
// 减重 健康打卡数据本月查询
HealthSignDataVO weightLossMonth = new HealthSignDataVO();
// 血压 健康打卡数据今日查询
HealthSignDataVO bloodPressureDay = new HealthSignDataVO();
// 血压 健康打卡数据本月查询
HealthSignDataVO bloodPressureMonth = new HealthSignDataVO();
// 血糖 健康打卡数据今日查询
HealthSignDataVO bloodSugarDay = new HealthSignDataVO();
// 血糖 健康打卡数据本月查询
HealthSignDataVO bloodSugarMonth = new HealthSignDataVO();
// 减重 血压 血糖 三种数据整合存 // 减重 血压 血糖 三种数据整合存
HealthSignVO healthSign = new HealthSignVO(); HealthSignVO healthSign = new HealthSignVO();
redisClientUtil.set(MEDICAL,HEALTH_SIGN,healthSign); healthSign.setWeightLossCountDay(random.nextInt(100) + 1);
healthSign.setWeightLossAbnormalCountDay(random.nextInt(100) + 1);
healthSign.setBloodPressureCountDay(random.nextInt(100) + 1);
healthSign.setBloodPressureAbnormalCountDay(random.nextInt(100) + 1);
healthSign.setBloodSugarCountDay(random.nextInt(100) + 1);
healthSign.setBloodSugarAbnormalCountDay(random.nextInt(100) + 1);
healthSign.setWeightLossCountMonth(random.nextInt(100) + 1);
healthSign.setWeightLossAbnormalCountMonth(random.nextInt(100) + 1);
healthSign.setBloodPressureCountMonth(random.nextInt(100) + 1);
healthSign.setBloodPressureAbnormalCountMonth(random.nextInt(100) + 1);
healthSign.setBloodSugarCountMonth(random.nextInt(100) + 1);
healthSign.setBloodSugarAbnormalCountMonth(random.nextInt(100) + 1);
redisClientUtil.set(MEDICAL, HEALTH_SIGN + defaultCenter.getId(), healthSign);
} }
@Override
public void runTest(){ @Transactional(rollbackFor = Exception.class)
// 体检人数统计 public void syncAnYanHospital() {
List<MedicalPeopleNumStatisticsVO> medicalPeopleNumStatisticsList = new ArrayList<>(); //PS: 重要说明, 目前该同步逻辑只会向emergency_resource表中新增数据或者编辑已经存在的数据, 不会将历史存在且本次同步不存在的数据删除,若需要删除在此处理
MedicalPeopleNumStatisticsVO statistics1 = new MedicalPeopleNumStatisticsVO(); if (anYanProperties.isEnable()) {
statistics1.setHospitalName("克拉玛依市诚裕慈惠综合门诊部门有限公司"); //更新医院信息
statistics1.setCheckedCount(220); List<HospitalListVO> hospitalListVOList = anYanClient.hospitalList();
statistics1.setTotalCount(550); if (ObjectUtil.isEmpty(hospitalListVOList)) {
medicalPeopleNumStatisticsList.add(statistics1); LambdaQueryWrapper<Resource> wrapper = new LambdaQueryWrapper<>();
MedicalPeopleNumStatisticsVO statistics2 = new MedicalPeopleNumStatisticsVO(); wrapper.eq(Resource::getType, "1");
statistics2.setHospitalName("昌吉州宝石花医院"); wrapper.in(Resource::getId, hospitalListVOList.stream().map(HospitalListVO::getId).collect(Collectors.toList()));
statistics2.setCheckedCount(156); List<Resource> hospitalList = resourceService.list(wrapper);
statistics2.setTotalCount(200); List<Resource> saveOrUpdateBatchList = new ArrayList<>();
medicalPeopleNumStatisticsList.add(statistics2); for (HospitalListVO hospital : hospitalListVOList) {
MedicalPeopleNumStatisticsVO statistics3 = new MedicalPeopleNumStatisticsVO(); Resource resource = hospitalList.stream().filter(re -> hospital.getId().equals(re.getId())).findFirst().orElse(new Resource());
statistics3.setHospitalName("中心医院"); resource.setAddress(hospital.getAddress());
statistics3.setCheckedCount(86); resource.setMemo(hospital.getAlias()); //医院别名使用备注字段
statistics3.setTotalCount(100); resource.setCreateTime(DateUtil.parseDate(hospital.getContractDate()));
medicalPeopleNumStatisticsList.add(statistics3); resource.setName(hospital.getHospitalName());
MedicalPeopleNumStatisticsVO statistics4 = new MedicalPeopleNumStatisticsVO(); resource.setId(hospital.getId());
statistics4.setHospitalName("克拉玛依市中西医结合医院(市人民医院)"); resource.setLatitude(TypeConversionUtil.toBigDecimalOfNull(hospital.getLat()));
statistics4.setCheckedCount(23); resource.setLongitude(TypeConversionUtil.toBigDecimalOfNull(hospital.getLon()));
statistics4.setTotalCount(30); resource.setType("1");
medicalPeopleNumStatisticsList.add(statistics4); saveOrUpdateBatchList.add(resource);
MedicalPeopleNumStatisticsVO statistics5 = new MedicalPeopleNumStatisticsVO();
statistics5.setHospitalName("新疆医院");
statistics5.setCheckedCount(15);
statistics5.setTotalCount(20);
medicalPeopleNumStatisticsList.add(statistics5);
redisClientUtil.set(MEDICAL,MEDICAL_PEOPLE_NUM_STATISTICS,medicalPeopleNumStatisticsList);
// 体检异常数据查询
MedicalAbnormalStatisticsVO abnormalStatistics = new MedicalAbnormalStatisticsVO();
abnormalStatistics.setTotalCount(18000);
abnormalStatistics.setCardiovaAbCount(2000);
abnormalStatistics.setCerebrovAbCount(1500);
abnormalStatistics.setCctaAbCount(200);
redisClientUtil.set(MEDICAL,MEDICAL_ABNORMAL_STATISTICS,abnormalStatistics);
// 减重 血压 血糖 三种数据整合存
HealthSignVO healthSign = new HealthSignVO();
healthSign.setWeightLossCountDay(86);
healthSign.setWeightLossAbnormalCountDay(6);
healthSign.setWeightLossCountMonth(956);
healthSign.setWeightLossAbnormalCountMonth(56);
healthSign.setBloodSugarCountDay(8);
healthSign.setBloodSugarAbnormalCountDay(5);
healthSign.setBloodSugarCountMonth(156);
healthSign.setBloodSugarAbnormalCountMonth(56);
healthSign.setBloodPressureCountDay(18);
healthSign.setBloodPressureAbnormalCountDay(3);
healthSign.setBloodPressureCountMonth(350);
healthSign.setBloodPressureAbnormalCountMonth(30);
redisClientUtil.set(MEDICAL,HEALTH_SIGN,healthSign);
}
public static String[] generateRandomLocation() {
Random random = new Random();
// 生成随机经纬度
double longitude = MIN_LONGITUDE + (MAX_LONGITUDE - MIN_LONGITUDE) * random.nextDouble();
double latitude = MIN_LATITUDE + (MAX_LATITUDE - MIN_LATITUDE) * random.nextDouble();
// 随机选择一个城市作为地址
String city = CITIES[random.nextInt(CITIES.length)];
String[] data = new String[3];
data[0] = city;
data[1] = String.valueOf(longitude);
data[2] = String.valueOf(latitude);
return data;
}
public static String generateRandomName() {
Random random = new Random();
// 随机选择一个姓
String surname = SURNAMES[random.nextInt(SURNAMES.length)];
// 随机选择一个名
String firstName = FIRST_NAMES[random.nextInt(FIRST_NAMES.length)];
// 组合成完整姓名
return surname + firstName;
}
private List<MedicalPeopleNumStatisticsVO> XjMedicalCountFakerData(String centerId) {
try {
Object data = redisUtil.get(StrUtil.isNotEmpty(centerId) ?
FakerDataConstant.XJ_MEDICAL_COUNT + ":" + centerId : FakerDataConstant.XJ_MEDICAL_COUNT);
if (data == null) {
return Collections.emptyList();
}
try {
List<MedicalPeopleNumStatisticsVO> voList = new ArrayList<>();
List<XjMedicalCountFakerData> returnDataList = (List<XjMedicalCountFakerData>) data;
for (XjMedicalCountFakerData fakerData : returnDataList) {
MedicalPeopleNumStatisticsVO vo = new MedicalPeopleNumStatisticsVO();
vo.setHospitalName(fakerData.getName());
vo.setCheckedCount(Integer.valueOf(fakerData.getCount()));
voList.add(vo);
} }
return voList; resourceService.saveOrUpdateBatch(saveOrUpdateBatchList);
} catch (Exception e) { }
log.error("新疆大屏体检人数统计数据转化异常", e); //更新健康小屋信息
return Collections.emptyList(); List<HealthRoomBaseVO> healthRoomVOList = anYanClient.healthPlaceHomList();
if (ObjectUtil.isEmpty(healthRoomVOList)) {
List<Resource> saveOrUpdateBatchList = new ArrayList<>();
LambdaQueryWrapper<Resource> wrapper = new LambdaQueryWrapper<>();
wrapper.eq(Resource::getType, "2");
wrapper.in(Resource::getId, healthRoomVOList.stream().map(HealthRoomBaseVO::getId).collect(Collectors.toList()));
List<Resource> roomList = resourceService.list(wrapper);
for (HealthRoomBaseVO room : healthRoomVOList) {
Resource resource = roomList.stream().filter(re -> room.getId().equals(re.getId())).findFirst().orElse(new Resource());
resource.setAddress(room.getAddress());
resource.setCreateTime(DateUtil.parseDate(room.getBuildDate()));
resource.setName(room.getDepartName());
resource.setId(room.getId());
resource.setLatitude(TypeConversionUtil.toBigDecimalOfNull(room.getLat()));
resource.setLongitude(TypeConversionUtil.toBigDecimalOfNull(room.getLon()));
resource.setJobNum(room.getJobNum());
resource.setRunTime(room.getRunTime());
resource.setType("2");
saveOrUpdateBatchList.add(resource);
}
resourceService.saveOrUpdateBatch(saveOrUpdateBatchList);
} }
} catch (Exception e) {
return null;
} }
} }
private HealthSignVO XjHealthSignFakerDataNew(String centerId) { @Override
try { public AuthResult queryAnYanToken(){
HealthSignVO vo = new HealthSignVO(); return anYanClient.publicNetworkTokenNoCache();
XjHealthSignFakerData data = (XjHealthSignFakerData) redisUtil.get(StrUtil.isNotEmpty(centerId)
? FakerDataConstant.XJ_HEALTH_SIGN_COUNT + ":" + centerId : FakerDataConstant.XJ_HEALTH_SIGN_COUNT);
BeanUtils.copyProperties(data,vo);
return vo;
} catch (Exception e) {
return null;
}
}
private MedicalAbnormalStatisticsVO XjMedicalDataFakerDataNew(String centerId) {
try {
MedicalAbnormalStatisticsVO vo = new MedicalAbnormalStatisticsVO();
XjMedicalDataFakerData data = (XjMedicalDataFakerData) redisUtil.get(StrUtil.isNotEmpty(centerId)
? FakerDataConstant.XJ_MEDICAL_DATA + ":" + centerId : FakerDataConstant.XJ_MEDICAL_DATA);
BeanUtils.copyProperties(data,vo);
return vo;
} catch (Exception e) {
return null;
}
} }
} }
@@ -1,6 +1,8 @@
package com.renkang.emergency.largeScreen.task; package com.renkang.emergency.largeScreen.task;
import com.renkang.emergency.largeScreen.service.ILargeScreenService; import com.renkang.emergency.largeScreen.service.ILargeScreenService;
import com.xxl.job.core.biz.model.ReturnT;
import com.xxl.job.core.handler.annotation.XxlJob;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
@@ -11,9 +13,32 @@ import org.springframework.stereotype.Component;
public class LargeScreenJob { public class LargeScreenJob {
private final ILargeScreenService largeScreenService; private final ILargeScreenService largeScreenService;
public void largeScreen() { /**
log.info("========开始缓存大屏数据========"); * 同步安眼系统数据,缓存redis
largeScreenService.runJob(); */
log.info("========结束缓存大屏数据========"); @XxlJob(value = "syncAnYanData")
public ReturnT<String> largeScreen() {
try {
log.info("========开始缓存大屏数据========");
largeScreenService.runJob();
log.info("========结束缓存大屏数据========");
return ReturnT.SUCCESS;
}catch (Exception e){
return ReturnT.FAIL;
}
}
/**
* 同步安眼系统中的油田医院数据和监控小屋数据定时任务 ,回写至emergency_resource表
* @return 执行状态
*/
@XxlJob(value = "syncAnYanHospital")
public ReturnT<String> syncAnYanHospital() {
try {
largeScreenService.syncAnYanHospital();
return ReturnT.SUCCESS;
} catch (Exception e) {
return ReturnT.FAIL;
}
} }
} }
@@ -35,4 +35,6 @@ public interface EmergencySeriousDiseaseMapper extends BaseMapper<EmergencySerio
@Select("select count(1) from emergency_serious_disease where user_id = #{userId} and state < 5") @Select("select count(1) from emergency_serious_disease where user_id = #{userId} and state < 5")
int selectEmergencyExist(String userId); int selectEmergencyExist(String userId);
Integer dutyTeam(String userId);
} }
@@ -6,6 +6,7 @@ import com.renkang.emergency.archives.model.vo.EmergencyNum;
import com.renkang.emergency.bean.response.EmergencyUser; import com.renkang.emergency.bean.response.EmergencyUser;
import com.renkang.emergency.entity.Order; import com.renkang.emergency.entity.Order;
import com.renkang.emergency.entity.TblHelpCentorVo; import com.renkang.emergency.entity.TblHelpCentorVo;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Param;
import java.util.List; import java.util.List;
@@ -16,6 +17,7 @@ import java.util.List;
* @Date: 2023-04-26 * @Date: 2023-04-26
* @Version: V1.0 * @Version: V1.0
*/ */
@Mapper
public interface OrderMapper extends BaseMapper<Order> , MPJBaseMapper<Order> { public interface OrderMapper extends BaseMapper<Order> , MPJBaseMapper<Order> {
/** /**
* 操作人员当天值班记录 * 操作人员当天值班记录
@@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.renkang.emergency.archives.model.vo.YearsStatistic; import com.renkang.emergency.archives.model.vo.YearsStatistic;
import com.renkang.emergency.entity.EmergencyResourceDO; import com.renkang.emergency.entity.EmergencyResourceDO;
import com.renkang.emergency.entity.Resource; import com.renkang.emergency.entity.Resource;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select; import org.apache.ibatis.annotations.Select;
@@ -15,6 +16,7 @@ import java.util.List;
* @Date: 2023-04-24 * @Date: 2023-04-24
* @Version: V1.0 * @Version: V1.0
*/ */
@Mapper
public interface ResourceMapper extends BaseMapper<Resource> { public interface ResourceMapper extends BaseMapper<Resource> {
List<String> selectHospitalList(); List<String> selectHospitalList();
@@ -0,0 +1,7 @@
package com.renkang.emergency.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.renkang.emergency.entity.XjAed;
public interface XjAedMapper extends BaseMapper<XjAed> {
}
@@ -96,4 +96,20 @@
</where> </where>
order by a.create_time desc order by a.create_time desc
</select> </select>
<select id="dutyTeam" resultType="java.lang.Integer">
SELECT t8.num
from (SELECT t1.user_type AS type,
count(1) AS num
FROM emergency_schedules_new_item t1
LEFT JOIN emergency_new_schedules t2 ON t1.schedules_id = t2.id
LEFT JOIN emergency_profession_user t3 ON t3.center_id = t2.center_id
WHERE t3.user_id = #{userId}
AND DATE ( t2.schedules_time) = CURRENT_DATE
GROUP BY
t1.user_type
) t8
ORDER BY
t8.num
LIMIT 1
</select>
</mapper> </mapper>
@@ -0,0 +1,11 @@
package com.renkang.emergency.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.renkang.emergency.entity.XjAed;
public interface IXjAedService extends IService<XjAed> {
void aedDataInit();
void aedDataUtil();
}
@@ -160,7 +160,7 @@ public class EmergencySchedulesNewServiceImpl extends MPJBaseServiceImpl<Emergen
private void processDay(EmergencySchedulesDTO dto, DayOfWeek day, List<EmergencySchedulesItem> itemList) { private void processDay(EmergencySchedulesDTO dto, DayOfWeek day, List<EmergencySchedulesItem> itemList) {
WeekDataVO daySchedules = getDaySchedules(dto, day); WeekDataVO daySchedules = getDaySchedules(dto, day);
if (ObjectUtil.isNotEmpty(daySchedules)) { if (null != daySchedules) {
EmergencySchedules emergencySchedules = new EmergencySchedules(); EmergencySchedules emergencySchedules = new EmergencySchedules();
emergencySchedules.setSchedulesTime(daySchedules.getTime()); emergencySchedules.setSchedulesTime(daySchedules.getTime());
emergencySchedules.setId(StrUtil.isNotEmpty(daySchedules.getSchedulesId()) ? daySchedules.getSchedulesId() : null); emergencySchedules.setId(StrUtil.isNotEmpty(daySchedules.getSchedulesId()) ? daySchedules.getSchedulesId() : null);
@@ -194,16 +194,19 @@ public class EmergencySchedulesNewServiceImpl extends MPJBaseServiceImpl<Emergen
// userList去重 // userList去重
if (CollUtil.isNotEmpty(userList)) { if (CollUtil.isNotEmpty(userList)) {
Set<String> userIdSet = new HashSet<>(); Set<String> userIdSet = new HashSet<>();
userList.forEach(item -> { int sortIndex = 0; // 添加计数器
for (EmergencySchedulesItem item : userList) {
String userId = item.getUserId(); String userId = item.getUserId();
if (!userIdSet.contains(userId)) { if (!userIdSet.contains(userId)) {
// 如果不包含,则进行设置并添加 // 如果不包含,则进行设置并添加
item.setSchedulesId(emergencySchedules.getId()); item.setSchedulesId(emergencySchedules.getId());
item.setUserType(userType); item.setUserType(userType);
item.setSort(sortIndex);
itemList.add(item); itemList.add(item);
userIdSet.add(userId); userIdSet.add(userId);
sortIndex++;
} }
}); }
} }
// 写入数据库 // 写入数据库
itemService.saveOrUpdateBatch(itemList); itemService.saveOrUpdateBatch(itemList);
@@ -169,7 +169,9 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
QueryWrapper<Order> queryWrapper = new QueryWrapper<>(); QueryWrapper<Order> queryWrapper = new QueryWrapper<>();
handleQueryWrapper(order, order.getSalvageUserName(), queryWrapper); handleQueryWrapper(order, order.getSalvageUserName(), queryWrapper);
queryWrapper.lambda().eq(Order::getMajorUserId, loginUser.getId()); //queryWrapper.lambda().eq(Order::getMajorUserId, loginUser.getId());
queryWrapper.lambda().and(orWrapper -> orWrapper.eq(Order::getMajorUserId, loginUser.getId()).or().eq(Order::getMajorUserTwoId, loginUser.getId()));
if (StrUtil.isBlank(order.getOrderStatus())) { if (StrUtil.isBlank(order.getOrderStatus())) {
queryWrapper.lambda().in(Order::getOrderStatus, Arrays.asList(EmergencyConstants.ORDER_STATUS_5_NEW, EmergencyConstants.ORDER_STATUS_1_NEW)); queryWrapper.lambda().in(Order::getOrderStatus, Arrays.asList(EmergencyConstants.ORDER_STATUS_5_NEW, EmergencyConstants.ORDER_STATUS_1_NEW));
} }
@@ -2,30 +2,21 @@ package com.renkang.emergency.service.impl;
import cn.hutool.core.collection.CollUtil; import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.util.StrUtil; import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.github.yulichang.wrapper.MPJLambdaWrapper; import com.github.yulichang.wrapper.MPJLambdaWrapper;
import com.renkang.emergency.entity.*; import com.renkang.emergency.entity.*;
import com.renkang.emergency.entity.dto.ResourcesAllDTO; import com.renkang.emergency.entity.dto.ResourcesAllDTO;
import com.renkang.emergency.largeScreen.entity.dto.HealthRoomDTO;
import com.renkang.emergency.mapper.EmergencyHealthRoomMapper; import com.renkang.emergency.mapper.EmergencyHealthRoomMapper;
import com.renkang.emergency.mapper.TblAmbulanceGpsMapper; import com.renkang.emergency.mapper.TblAmbulanceGpsMapper;
import com.renkang.emergency.mapper.TblBaseHospitalMapper; import com.renkang.emergency.mapper.TblBaseHospitalMapper;
import com.renkang.emergency.service.IEmergencyCenterResourceService;
import com.renkang.emergency.service.IEmergencyHealthRoomService;
import com.renkang.emergency.service.ITblAmbulanceGpsService; import com.renkang.emergency.service.ITblAmbulanceGpsService;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.jeecg.common.api.vo.Result;
import org.springframework.beans.BeanUtils; import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import javax.annotation.Resource; import javax.annotation.Resource;
import java.text.DecimalFormat;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
/** /**
* @author TianZi * @author TianZi
@@ -40,8 +31,6 @@ public class TblAmbulanceGpsServiceImpl extends ServiceImpl<TblAmbulanceGpsMappe
@Resource @Resource
private TblBaseHospitalMapper tblBaseHospitalMapper; private TblBaseHospitalMapper tblBaseHospitalMapper;
@Resource @Resource
private IEmergencyCenterResourceService resourceService;
@Resource
private EmergencyHealthRoomMapper roomMapper; private EmergencyHealthRoomMapper roomMapper;
@Override @Override
@@ -175,7 +164,7 @@ public class TblAmbulanceGpsServiceImpl extends ServiceImpl<TblAmbulanceGpsMappe
Math.pow(Math.sin(a / 2), 2) + Math.cos(radLat1) * Math.cos(radLat2) * Math.pow(Math.sin(b / 2), 2))); Math.pow(Math.sin(a / 2), 2) + Math.cos(radLat1) * Math.cos(radLat2) * Math.pow(Math.sin(b / 2), 2)));
s = s * EARTH_RADIUS; s = s * EARTH_RADIUS;
return s * 1000; return s * 1000;
} }
/** /**
* 角度弧度计算公式 rad:(). <br/> * 角度弧度计算公式 rad:(). <br/>
@@ -7,6 +7,8 @@ import com.renkang.emergency.bean.response.XjDemandTypeFakerData;
import com.renkang.emergency.entity.TblHelpCenter; import com.renkang.emergency.entity.TblHelpCenter;
import com.renkang.emergency.entity.TblHelpCentorVo; import com.renkang.emergency.entity.TblHelpCentorVo;
import com.renkang.emergency.entity.TblUserHelpVo; import com.renkang.emergency.entity.TblUserHelpVo;
import com.renkang.emergency.entity.vo.DataDetailVO;
import com.renkang.emergency.largeScreen.service.ILargeScreenDataService;
import com.renkang.emergency.mapper.TblHelpCenterMapper; import com.renkang.emergency.mapper.TblHelpCenterMapper;
import com.renkang.emergency.service.ITbHelpCenterService; import com.renkang.emergency.service.ITbHelpCenterService;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
@@ -31,6 +33,8 @@ public class TblHelpCenterServiceImpl extends ServiceImpl<TblHelpCenterMapper, T
private EmergencyOrderApiService emergencyOrderApiService; private EmergencyOrderApiService emergencyOrderApiService;
@Resource @Resource
private RedisUtil redisUtil; private RedisUtil redisUtil;
@Resource
private ILargeScreenDataService screenDataService;
/** /**
* 主诉分类统计 * 主诉分类统计
@@ -40,25 +44,38 @@ public class TblHelpCenterServiceImpl extends ServiceImpl<TblHelpCenterMapper, T
*/ */
@Override @Override
public List<TblHelpCentorVo> sicknessTypeStatistic(String sex, String depart,String centerId) { public List<TblHelpCentorVo> sicknessTypeStatistic(String sex, String depart,String centerId) {
Boolean enable = (Boolean) redisUtil.get(StrUtil.isNotEmpty(centerId) ? FakerDataConstant.XJ_DEMAND_TYPE_ENABLE + ":" + centerId : FakerDataConstant.XJ_DEMAND_TYPE_ENABLE);
if (enable != null && enable) {
List<TblHelpCentorVo> vo = XjDemandTypeFakerData(centerId);
if (vo != null) {
return vo;
}
}
List<TblHelpCentorVo> statistic = emergencyOrderApiService.getSicknessTypeStatistic(sex, depart); List<TblHelpCentorVo> statistic = emergencyOrderApiService.getSicknessTypeStatistic(sex, depart);
for (TblHelpCentorVo tblHelpCentorVo : statistic) { for (TblHelpCentorVo tblHelpCentorVo : statistic) {
if (tblHelpCentorVo.getType().equals("0")) { if (tblHelpCentorVo.getType().equals("0")) {
tblHelpCentorVo.setName("120"); tblHelpCentorVo.setName("120");
} else if(tblHelpCentorVo.getType().equals("1")){ } else if(tblHelpCentorVo.getType().equals("1")){
tblHelpCentorVo.setName("应急就医"); tblHelpCentorVo.setName("应急就医");
}else if (tblHelpCentorVo.getType().equals("2")){
tblHelpCentorVo.setName("急救联动");
}else { }else {
tblHelpCentorVo.setName("其他"); tblHelpCentorVo.setName("其他");
} }
} }
// 获取假数据
DataDetailVO dataDetailVO = screenDataService.dataDetail(centerId, "31");
statistic.forEach(item->{
if (item.getType().equals("0")) {
if ("1".equals(dataDetailVO.getHospitalCountStatus())){
if (dataDetailVO.getHospitalCount().contains("+")){
item.setCount(item.getCount()+Integer.parseInt(dataDetailVO.getHospitalCount().replace("+", "").trim()));
}else {
item.setCount(Integer.parseInt(dataDetailVO.getHospitalCount().replace("+", "").trim()));
}
}
}
if (item.getType().equals("1")) {
if ("1".equals(dataDetailVO.getEmergencyCountStatus())){
if (dataDetailVO.getEmergencyCount().contains("+")){
item.setCount(item.getCount()+Integer.parseInt(dataDetailVO.getEmergencyCount().replace("+", "").trim()));
}else {
item.setCount(Integer.parseInt(dataDetailVO.getEmergencyCount().replace("+", "").trim()));
}
}
}
});
return statistic; return statistic;
} }
@@ -14,6 +14,8 @@ import com.renkang.emergency.entity.TblUserHelp;
import com.renkang.emergency.entity.TblUserHelpVo; import com.renkang.emergency.entity.TblUserHelpVo;
import com.renkang.emergency.entity.dto.PhoneListDTO; import com.renkang.emergency.entity.dto.PhoneListDTO;
import com.renkang.emergency.entity.dto.StatisticsDTO; import com.renkang.emergency.entity.dto.StatisticsDTO;
import com.renkang.emergency.entity.vo.DataDetailVO;
import com.renkang.emergency.largeScreen.service.ILargeScreenDataService;
import com.renkang.emergency.mapper.TblUserHelpMapper; import com.renkang.emergency.mapper.TblUserHelpMapper;
import com.renkang.emergency.service.ISysNotifySmsPhoneService; import com.renkang.emergency.service.ISysNotifySmsPhoneService;
import com.renkang.emergency.service.ITbUserHelpMacService; import com.renkang.emergency.service.ITbUserHelpMacService;
@@ -70,6 +72,8 @@ public class TblUserHelpServiceImpl extends ServiceImpl<TblUserHelpMapper, TblUs
private ISysCache sysCache; private ISysCache sysCache;
@Resource @Resource
private Validator validator; private Validator validator;
@Resource
private ILargeScreenDataService screenDataService;
/** /**
* 服务详情数据 * 服务详情数据
@@ -97,13 +101,6 @@ public class TblUserHelpServiceImpl extends ServiceImpl<TblUserHelpMapper, TblUs
*/ */
@Override @Override
public TblUserHelpVo statisticsNew(StatisticsDTO dto) { public TblUserHelpVo statisticsNew(StatisticsDTO dto) {
Boolean enable = (Boolean) redisUtil.get(StrUtil.isNotEmpty(dto.getCenterId()) ? FakerDataConstant.YC_SERVICE_ENABLE + ":" + dto.getCenterId() : FakerDataConstant.YC_SERVICE_ENABLE);
if (enable != null && enable) {
TblUserHelpVo vo = xianFakerDataNew(dto.getCenterId());
if (vo != null) {
return vo;
}
}
LambdaQueryWrapper<TblUserHelp> queryWrapper = new LambdaQueryWrapper<>(); LambdaQueryWrapper<TblUserHelp> queryWrapper = new LambdaQueryWrapper<>();
if (StrUtil.isNotBlank(dto.getCondition()) && !"1".equals(dto.getCondition())) { if (StrUtil.isNotBlank(dto.getCondition()) && !"1".equals(dto.getCondition())) {
// 1:全部,2:年,3:月,4:周 // 1:全部,2:年,3:月,4:周
@@ -122,19 +119,70 @@ public class TblUserHelpServiceImpl extends ServiceImpl<TblUserHelpMapper, TblUs
if (StrUtil.isNotBlank(dto.getCenterId())) { if (StrUtil.isNotBlank(dto.getCenterId())) {
queryWrapper.eq(TblUserHelp::getCenterId, dto.getCenterId()); queryWrapper.eq(TblUserHelp::getCenterId, dto.getCenterId());
} }
TblUserHelpVo vo = new TblUserHelpVo(); TblUserHelpVo vo = new TblUserHelpVo();
// 获取云坐席数据 // 获取云坐席数据
List<TblUserHelp> list = this.list(queryWrapper); List<TblUserHelp> list = this.list(queryWrapper);
// 呼入电话数量
vo.setGross(list.size()); // 获取假数据
// 受理电话数量 DataDetailVO dataDetailVO = screenDataService.dataDetail(dto.getCenterId(), "9");
vo.setAlerdyreceive((int) list.stream().filter(a -> "1".equals(a.getStatus()) || "2".equals(a.getStatus())).count()); // 呼入电话
// 突发重大伤病应急数量 if ("1".equals(dataDetailVO.getLatestCallStatus())) {
vo.setJqqz((int) list.stream().filter(a -> "2".equals(a.getType())).count()); if (dataDetailVO.getLatestCall().contains("+")) {
// 重大伤病应急就医数量 vo.setGross(list.size() + Integer.parseInt(dataDetailVO.getLatestCall().replace("+", "").trim()));
vo.setDbjy((int) list.stream().filter(a -> "1".equals(a.getType())).count()); } else {
vo.setGross(Integer.valueOf(dataDetailVO.getLatestCall().replace("+", "").trim()));
}
} else {
vo.setGross(list.size());
}
// 受理电话
if ("1".equals(dataDetailVO.getLatestAcceptCallStatus())) {
if (dataDetailVO.getLatestAcceptCall().contains("+")) {
int count = Math.toIntExact(list.stream().filter(a -> "1".equals(a.getStatus()) || "2".equals(a.getStatus())).count());
vo.setAlerdyreceive(count + Integer.parseInt(dataDetailVO.getLatestAcceptCall().replace("+", "").trim()));
} else {
vo.setAlerdyreceive(Integer.parseInt(dataDetailVO.getLatestAcceptCall().replace("+", "").trim()));
}
} else {
int count = Math.toIntExact(list.stream().filter(a -> "1".equals(a.getStatus()) || "2".equals(a.getStatus())).count());
vo.setAlerdyreceive(count);
}
// 突发重大伤病应急
if ("1".equals(dataDetailVO.getIllNumStatus())) {
if (dataDetailVO.getIllNum().contains("+")) {
int count = Math.toIntExact(list.stream().filter(a -> "2".equals(a.getType())).count());
vo.setJqqz(count + Integer.parseInt(dataDetailVO.getIllNum().replace("+", "").trim()));
} else {
vo.setJqqz(Integer.parseInt(dataDetailVO.getIllNum().replace("+", "").trim()));
}
} else {
int count = Math.toIntExact(list.stream().filter(a -> "2".equals(a.getType())).count());
vo.setJqqz(count);
}
// 重大伤病应急就医
if ("1".equals(dataDetailVO.getEmergencyNumStatus())) {
if (dataDetailVO.getEmergencyNum().contains("+")) {
int count = Math.toIntExact(list.stream().filter(a -> "1".equals(a.getType())).count());
vo.setDbjy(count + Integer.parseInt(dataDetailVO.getEmergencyNum().replace("+", "").trim()));
}else {
vo.setDbjy(Integer.parseInt(dataDetailVO.getEmergencyNum().replace("+", "").trim()));
}
}else {
int count = Math.toIntExact(list.stream().filter(a -> "1".equals(a.getType())).count());
vo.setDbjy(count);
}
// 累计处置 // 累计处置
vo.setTotalacceptance(tblUserHelpMapper.getTotalAcceptance()); Integer totalAcceptance = tblUserHelpMapper.getTotalAcceptance();
if ("1".equals(dataDetailVO.getTotalDisposalStatus())) {
if (dataDetailVO.getTotalDisposal().contains("+")) {
vo.setTotalacceptance(totalAcceptance + Integer.parseInt(dataDetailVO.getTotalDisposal().replace("+", "").trim()));
}else {
vo.setTotalacceptance(Integer.parseInt(dataDetailVO.getTotalDisposal().replace("+", "").trim()));
}
}else {
vo.setTotalacceptance(totalAcceptance);
}
return vo; return vo;
} }
@@ -292,7 +340,11 @@ public class TblUserHelpServiceImpl extends ServiceImpl<TblUserHelpMapper, TblUs
vo.setDepartName("未知"); vo.setDepartName("未知");
vo.setOrgName("未知"); vo.setOrgName("未知");
vo.setTime(record.getHelpTime()); vo.setTime(record.getHelpTime());
vo.setPhone(record.getOutMobile()); String phone = record.getOutMobile();
if (StrUtil.isNotBlank(phone) && phone.startsWith("0086")) { //新版网关去掉中国区号
phone = phone.substring(4);
}
vo.setPhone(phone);
LoginUserNew loginUserNew = userMap.get(record.getUserId()); LoginUserNew loginUserNew = userMap.get(record.getUserId());
if (loginUserNew != null) { if (loginUserNew != null) {
SysDepart thirdDepart = sysCache.getDepartByOrgCode(GlobalUtils.getThirdDepartOrgCode(loginUserNew.getOrgCode())); SysDepart thirdDepart = sysCache.getDepartByOrgCode(GlobalUtils.getThirdDepartOrgCode(loginUserNew.getOrgCode()));
@@ -0,0 +1,148 @@
package com.renkang.emergency.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.renkang.emergency.entity.XjAed;
import com.renkang.emergency.mapper.XjAedMapper;
import com.renkang.emergency.service.IXjAedService;
import lombok.RequiredArgsConstructor;
import org.apache.poi.ss.usermodel.DateUtil;
import org.apache.poi.xssf.usermodel.XSSFCell;
import org.apache.poi.xssf.usermodel.XSSFRow;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import org.jeecg.untils.CoordinateConverter;
import org.jeecg.util.TypeConversionUtil;
import org.springframework.stereotype.Service;
import java.io.FileInputStream;
import java.io.IOException;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;
@Service
@RequiredArgsConstructor
public class XjAedServiceImpl extends ServiceImpl<XjAedMapper, XjAed> implements IXjAedService {
private final CoordinateConverter converter;
@Override
public void aedDataInit() {
String filePath = "D:\\Project\\Java\\rk\\文档\\新疆油田-24\\各二级单位坐标位置更正统计9.15.xlsx";
try (FileInputStream file = new FileInputStream(filePath);
XSSFWorkbook workbook = new XSSFWorkbook(file)) {
// 获取第一个工作表
XSSFSheet sheet = workbook.getSheetAt(0);
List<XjAed> xjAedList = new ArrayList<>();
// 从第二行开始(索引为1
for (int i = 2; i <= sheet.getLastRowNum(); i++) {
XSSFRow row = sheet.getRow(i);
if (row != null) {
// 获取第一个单元格(索引0)的数据 二级单位名称
XSSFCell firstCell = row.getCell(0);
String firstCellValue = firstCell != null ? getCellValue(firstCell) : "[空]";
// 获取第二个单元格(索引1)的数据 三级单位名称
XSSFCell secondCell = row.getCell(1);
String secondCellValue = secondCell != null ? getCellValue(secondCell) : "[空]";
// 获取第七个单元格(索引6)的数据 设置地点
XSSFCell sevenCell = row.getCell(6);
String sevenCellValue = secondCell != null ? getCellValue(sevenCell) : "[空]";
// 获取第八个单元格(索引7)的数据 精度
XSSFCell eightCell = row.getCell(7);
String eightCellValue = secondCell != null ? getCellValue(eightCell) : "[空]";
// 获取第九个单元格(索引8)的数据 纬度
XSSFCell nineCell = row.getCell(8);
String nineCellValue = secondCell != null ? getCellValue(nineCell) : "[空]";
XjAed xjAed = new XjAed();
xjAed.setName("自动体外除颤仪");
xjAed.setAddress(firstCellValue+secondCellValue+sevenCellValue);
try {
String[] split = converter.run(eightCellValue + "-" + nineCellValue).split("-");
CoordinateConverter.Gps gps = CoordinateConverter.GPS84ToGCJ02(
TypeConversionUtil.toDoubleOfNull(split[0]), TypeConversionUtil.toDoubleOfNull(split[1]));
if (gps != null) {
xjAed.setLongitude(BigDecimal.valueOf(gps.getLongitude()));
xjAed.setLatitude(BigDecimal.valueOf(gps.getLatitude()));
}
}catch (Exception e){
e.printStackTrace();
}
xjAedList.add(xjAed);
}
}
// 过滤掉地点为空的数据
xjAedList.removeIf(item -> {
String address = item.getAddress();
return address == null || address.isEmpty() || "/".equals(address) || "".equals(address);});
this.saveBatch(xjAedList);
} catch (IOException e) {
e.printStackTrace();
System.out.println("读取Excel文件失败: " + e.getMessage());
}
}
/**
* 获取单元格的值
*/
private String getCellValue(XSSFCell cell) {
if (cell == null) {
return "";
}
switch (cell.getCellType()) {
case STRING:
return cell.getStringCellValue().trim();
case NUMERIC:
if (DateUtil.isCellDateFormatted(cell)) {
return cell.getDateCellValue().toString();
} else {
// 处理数字格式,避免科学计数法
double numericValue = cell.getNumericCellValue();
if (numericValue == Math.floor(numericValue)) {
// 如果是整数
return String.valueOf((long) numericValue);
} else {
// 如果是小数
return String.valueOf(numericValue);
}
}
case BOOLEAN:
return String.valueOf(cell.getBooleanCellValue());
case FORMULA:
try {
return String.valueOf(cell.getNumericCellValue());
} catch (Exception e) {
return cell.getStringCellValue().trim();
}
case BLANK:
return "";
default:
return "";
}
}
@Override
public void aedDataUtil() {
StringBuilder sb = new StringBuilder();
String[] split = converter.run("东经E85°058″" + "-" + "北纬N45°3250″").split("-");
CoordinateConverter.Gps gps = CoordinateConverter.GPS84ToGCJ02(
TypeConversionUtil.toDoubleOfNull(split[0]), TypeConversionUtil.toDoubleOfNull(split[1]));
if (gps != null) {
System.out.println(gps.getLongitude());
System.out.println(gps.getLatitude());
}
}
}
@@ -0,0 +1,206 @@
package com.renkang.emergency.util;
import com.renkang.emergency.largeScreen.entity.vo.HealthArchivesVO;
import java.util.Random;
public class HealthArchivesGenerator {
private static final Random random = new Random();
// 常见疾病列表
private static final String[] COMMON_DISEASES = {
"高血压", "糖尿病", "冠心病", "高血脂", "哮喘", "慢性支气管炎",
"胃炎", "胃溃疡", "关节炎", "骨质疏松", "甲状腺功能异常"
};
// 常见手术列表
private static final String[] COMMON_SURGERIES = {
"阑尾切除术", "胆囊切除术", "甲状腺切除术", "疝气修补术", "骨折内固定术",
"白内障手术", "冠状动脉搭桥术", "子宫肌瘤切除术", "前列腺切除术"
};
// 常见药物列表
private static final String[] COMMON_MEDICATIONS = {
"阿司匹林", "二甲双胍", "硝苯地平", "阿托伐他汀", "美托洛尔",
"氯沙坦", "胰岛素", "布洛芬", "奥美拉唑", "氨氯地平"
};
// 药物剂量单位
private static final String[] DOSAGE_UNITS = {"mg", "g", "ml", "", ""};
public static HealthArchivesVO generateRandomHealthArchives() {
HealthArchivesVO vo = new HealthArchivesVO();
// 生成BMI (正常范围18.5-24,可适当超出)
vo.setBmi(generateBMI());
// 生成尿酸 (正常范围150-420μmol/L)
vo.setUa(generateUA());
// 生成血同型半胱氨酸 (正常范围5-15μmol/L)
vo.setHcy(generateHCY());
// 生成空腹葡萄糖 (正常范围3.9-6.1mmol/L)
vo.setGlu(generateGLU());
// 生成收缩压 (正常范围90-140mmHg)
vo.setSbp(generateSBP());
// 生成舒张压 (正常范围60-90mmHg)
vo.setDbp(generateDBP());
// 生成总胆固醇 (正常范围2.8-5.7mmol/L)
vo.setTc(generateTC());
// 生成甘油三酯 (正常范围0.45-1.7mmol/L)
vo.setTg(generateTG());
// 生成低密度脂蛋白 (正常范围1.5-3.1mmol/L)
vo.setLdl(generateLDL());
// 生成既往史
vo.setPastHistory(generatePastHistory());
// 生成手术史
vo.setSurgicalHistory(generateSurgicalHistory());
// 生成用药史
vo.setMedicationHistory(generateMedicationHistory());
return vo;
}
private static String generateBMI() {
// BMI正常范围18.5-24,生成范围15-35
double bmi = 15 + random.nextDouble() * 20;
return String.format("%.1f", bmi);
}
private static String generateUA() {
// 尿酸正常150-420,生成范围100-600
int ua = 100 + random.nextInt(500);
return String.valueOf(ua);
}
private static String generateHCY() {
// 血同型半胱氨酸正常5-15,生成范围3-25
double hcy = 3 + random.nextDouble() * 22;
return String.format("%.1f", hcy);
}
private static String generateGLU() {
// 空腹葡萄糖正常3.9-6.1,生成范围2.5-12
double glu = 2.5 + random.nextDouble() * 9.5;
return String.format("%.1f", glu);
}
private static String generateSBP() {
// 收缩压正常90-140,生成范围70-180
int sbp = 70 + random.nextInt(110);
return String.valueOf(sbp);
}
private static String generateDBP() {
// 舒张压正常60-90,生成范围50-110
int dbp = 50 + random.nextInt(60);
return String.valueOf(dbp);
}
private static String generateTC() {
// 总胆固醇正常2.8-5.7,生成范围2.0-8.0
double tc = 2.0 + random.nextDouble() * 6.0;
return String.format("%.1f", tc);
}
private static String generateTG() {
// 甘油三酯正常0.45-1.7,生成范围0.3-5.0
double tg = 0.3 + random.nextDouble() * 4.7;
return String.format("%.1f", tg);
}
private static String generateLDL() {
// 低密度脂蛋白正常1.5-3.1,生成范围1.0-5.0
double ldl = 1.0 + random.nextDouble() * 4.0;
return String.format("%.1f", ldl);
}
private static String generatePastHistory() {
int diseaseCount = random.nextInt(3); // 0-2种疾病
if (diseaseCount == 0) {
return "无重大既往病史";
}
StringBuilder history = new StringBuilder();
for (int i = 0; i < diseaseCount; i++) {
String disease = COMMON_DISEASES[random.nextInt(COMMON_DISEASES.length)];
int years = 1 + random.nextInt(20); // 患病年限1-20年
history.append(String.format("%d年前诊断患有%s", years, disease));
}
return history.toString();
}
private static String generateSurgicalHistory() {
boolean hasSurgery = random.nextDouble() < 0.3; // 30%概率有手术史
if (!hasSurgery) {
return "无手术史";
}
String surgery = COMMON_SURGERIES[random.nextInt(COMMON_SURGERIES.length)];
int yearsAgo = 2 + random.nextInt(30); // 2-30年前的手术
String hospital = getRandomHospital();
return String.format("%d年在%s医院接受%s,术后恢复良好。", yearsAgo, hospital, surgery);
}
private static String generateMedicationHistory() {
boolean hasMedication = random.nextDouble() < 0.5; // 50%概率有用药史
if (!hasMedication) {
return "无长期用药史";
}
int medCount = 1 + random.nextInt(2); // 1-2种药物
StringBuilder medication = new StringBuilder();
for (int i = 0; i < medCount; i++) {
String drug = COMMON_MEDICATIONS[random.nextInt(COMMON_MEDICATIONS.length)];
int dosage = 5 + random.nextInt(45); // 剂量5-50
String unit = DOSAGE_UNITS[random.nextInt(DOSAGE_UNITS.length)];
int timesPerDay = 1 + random.nextInt(3); // 每日1-3次
boolean stillTaking = random.nextBoolean();
medication.append(String.format("%s %d%s/次,每日%d次,%s",
drug, dosage, unit, timesPerDay, stillTaking ? "目前仍在服用" : "已停药"));
}
return medication.toString();
}
private static String getRandomHospital() {
String[] hospitals = {"市人民医院", "省立医院", "协和医院", "华西医院", "中山医院", "瑞金医院"};
return hospitals[random.nextInt(hospitals.length)];
}
// 重载方法,支持传入现有的VO对象进行赋值
public static void populateRandomData(HealthArchivesVO vo) {
if (vo == null) {
return;
}
HealthArchivesVO randomData = generateRandomHealthArchives();
// 使用反射或者直接setter赋值,这里使用直接赋值
vo.setBmi(randomData.getBmi());
vo.setUa(randomData.getUa());
vo.setHcy(randomData.getHcy());
vo.setGlu(randomData.getGlu());
vo.setSbp(randomData.getSbp());
vo.setDbp(randomData.getDbp());
vo.setTc(randomData.getTc());
vo.setTg(randomData.getTg());
vo.setLdl(randomData.getLdl());
vo.setPastHistory(randomData.getPastHistory());
vo.setSurgicalHistory(randomData.getSurgicalHistory());
vo.setMedicationHistory(randomData.getMedicationHistory());
}
}

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