Commit 8e1d0ca8 by 罗志长

Merge branch 'dev'

parents a0748c04 d281e007
Showing with 610 additions and 558 deletions
CREATE TABLE `sys_file` (
`id` varchar(64) COLLATE utf8mb4_general_ci NOT NULL COMMENT ' id ',
`file_name` varchar(255) COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT ' 文件名称 ',
`url` varchar(255) COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT ' 文件地址 ',
`mime` varchar(255) COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT ' 文件格式 ',
`create_date` datetime NOT NULL COMMENT ' 创建时间 ',
`update_date` datetime NOT NULL COMMENT ' 更新时间 ',
`del_flag` char(1) COLLATE utf8mb4_general_ci NOT NULL COMMENT ' 删除标志 0否 1是 ',
`create_by` varchar(128) COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '创建人名称',
`update_by` varchar(128) COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '更新人名称',
`pdf_url` varchar(255) COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT 'pdf格式地址',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT=' 系统文件表 ';
CREATE TABLE `sys_config` (
`id` varchar(64) COLLATE utf8mb4_general_ci NOT NULL COMMENT ' id ',
`tenant_id` varchar(64) COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT ' 租户id ',
`code` varchar(100) COLLATE utf8mb4_general_ci NULL COMMENT ' 编码 例如 user.type.personal 类名.字段.业务 ',
`name` varchar(50) COLLATE utf8mb4_general_ci NOT NULL COMMENT ' 名称 例如 冻结 ',
`value` varchar(50) COLLATE utf8mb4_general_ci NOT NULL COMMENT ' 值 例如 1 2 3',
`sort` int DEFAULT '0' COMMENT '排序 ',
`description` varchar(255) COLLATE utf8mb4_general_ci DEFAULT '' COMMENT ' 描述 ',
`category_id` varchar(64) COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT ' 分类FK ',
`create_date` datetime NOT NULL COMMENT ' 创建时间 ',
`update_date` datetime NOT NULL COMMENT ' 更新时间 ',
`del_flag` char(1) COLLATE utf8mb4_general_ci NOT NULL COMMENT ' 删除标志 0否 1是 ',
`create_by` varchar(128) COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '创建人名称',
`update_by` varchar(128) COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '更新人名称',
`eng_name` varchar(200) COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '英文名称',
PRIMARY KEY (`id`),
KEY `sys_config_category_id_index` (`category_id`),
KEY `sys_config_code_index` (`code`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT=' 配置 ';
CREATE TABLE `sys_config_category` (
`id` varchar(64) COLLATE utf8mb4_general_ci NOT NULL COMMENT ' PK ',
`tenant_id` varchar(64) COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT ' 租户id ',
`code` varchar(50) COLLATE utf8mb4_general_ci NOT NULL COMMENT ' 编码 例如 user.type,类名.字段名 ',
`name` varchar(50) COLLATE utf8mb4_general_ci NOT NULL COMMENT ' 类型名称 ',
`create_date` datetime NOT NULL COMMENT ' 创建时间 ',
`update_date` datetime NOT NULL COMMENT ' 更新时间 ',
`del_flag` char(1) COLLATE utf8mb4_general_ci NOT NULL COMMENT ' 删除标志 0否 1是 ',
`create_by` varchar(128) COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '创建人名称',
`update_by` varchar(128) COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '更新人名称',
`eng_name` varchar(200) COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '类型英文名称',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT=' 配置类型 ';
CREATE TABLE `sys_dictionary` (
`id` varchar(64) COLLATE utf8mb4_general_ci NOT NULL COMMENT 'id',
`code` varchar(100) COLLATE utf8mb4_general_ci NOT NULL COMMENT '数据字典编码 例如 user.type.personal 类名.字段.业务',
`name` varchar(200) COLLATE utf8mb4_general_ci NOT NULL COMMENT '数据字典名称 例如 冻结',
`value` varchar(50) COLLATE utf8mb4_general_ci NOT NULL COMMENT '数据字典值 例如 1 2 3',
`sort` int NOT NULL DEFAULT '0' COMMENT '排序',
`description` varchar(255) COLLATE utf8mb4_general_ci DEFAULT '' COMMENT '数据字典值描述',
`category_id` varchar(64) COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '数据字典分类FK',
`create_date` datetime DEFAULT NULL COMMENT '创建时间',
`update_date` datetime DEFAULT NULL COMMENT '更新时间',
`del_flag` char(1) COLLATE utf8mb4_general_ci NOT NULL COMMENT ' 删除标志 0否 1是 ',
`create_by` varchar(128) COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '创建人名称',
`update_by` varchar(128) COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '更新人名称',
`eng_name` varchar(500) COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '数据字典英文名称',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='数据字典';
CREATE TABLE `sys_dictionary_category` (
`id` varchar(64) COLLATE utf8mb4_general_ci NOT NULL COMMENT 'PK',
`code` varchar(50) COLLATE utf8mb4_general_ci NOT NULL COMMENT '数据字典编码 例如 user.type,类名.字段名',
`name` varchar(50) COLLATE utf8mb4_general_ci NOT NULL COMMENT '数据字典类型名称',
`create_date` datetime NOT NULL COMMENT '创建时间',
`update_date` datetime NOT NULL COMMENT '更新时间',
`del_flag` char(1) COLLATE utf8mb4_general_ci NOT NULL COMMENT ' 删除标志 0否 1是 ',
`create_by` varchar(128) COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '创建人名称',
`update_by` varchar(128) COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '更新人名称',
`eng_name` varchar(200) COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '数据字典类型名称',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='数据字典类型';
{
"radarMount": {
"name": "雷达安装方式",
"type": "select",
"option": [{
"value": "0",
"name": "侧装"
},
{
"value": "1",
"name": "顶装"
}
]
},
"radarHight": {
"name": "雷达安装方式",
"type": "input",
"desc": "\"最小值\":200,\"最大值\":380,\"步进\":1,\"单位\":\"cm\""
}
}
\ No newline at end of file
This diff could not be displayed because it is too large.
INSERT INTO `saas_user`(`id`, `username`, `account`, `password`, `mobile`, `status`, `remark`, `create_date`, `update_date`, `del_flag`, `create_by`, `update_by`) VALUES ('1', 'root', 'root', 'c7f8527fa84730686fa82f861ac389d705d1018c7dc4e5721b5b7655', '1', '1', NULL, '2022-05-17 14:50:24', '2022-05-17 14:50:28', '0', '', '');
INSERT INTO `plat_alarm_config`(`id`, `alarm_type`, `status`, `org_id`, `city_org_id`, `district_org_id`, `street_org_id`, `org_path`, `rule_config`, `content`, `notify_channel`, `notify_relation`, `notify_way`, `notify_user`, `description`, `create_by`, `create_date`, `update_by`, `update_date`, `del_flag`, `tenant_id`, `content_audit`) VALUES ('1699667670087065604', '1', '1', '1701542574740770817', NULL, NULL, NULL, NULL, '{}', '[#长者姓名]在[#房间名]跌倒,请及时处理!', '', '1', '1', NULL, NULL, 'platAdmin02', '2023-09-07 14:15:26', '测试clt', '2023-09-12 17:09:17', '0', '0', NULL);
INSERT INTO `plat_alarm_config`(`id`, `alarm_type`, `status`, `org_id`, `city_org_id`, `district_org_id`, `street_org_id`, `org_path`, `rule_config`, `content`, `notify_channel`, `notify_relation`, `notify_way`, `notify_user`, `description`, `create_by`, `create_date`, `update_by`, `update_date`, `del_flag`, `tenant_id`, `content_audit`) VALUES ('16996678722776842251', '2', '1', '1701542574740770817', NULL, NULL, NULL, NULL, '{\"respiratoryRateStart\":\"10\",\"respiratoryRateEnd\":\"120\",\"duration\":\"5\"}', '[#长者姓名][#呼吸状态],请及时处理!', '', '1', '1', NULL, NULL, 'platAdmin02', '2023-09-07 14:16:14', 'platAdmin02', '2023-09-07 14:16:14', '0', '0', NULL);
INSERT INTO `plat_alarm_config`(`id`, `alarm_type`, `status`, `org_id`, `city_org_id`, `district_org_id`, `street_org_id`, `org_path`, `rule_config`, `content`, `notify_channel`, `notify_relation`, `notify_way`, `notify_user`, `description`, `create_by`, `create_date`, `update_by`, `update_date`, `del_flag`, `tenant_id`, `content_audit`) VALUES ('16996680489417687051', '3', '1', '1701542574740770817', NULL, NULL, NULL, NULL, '{\"heartRateStart\":\"60\",\"heartRateEnd\":\"90\",\"duration\":\"5\"}', '[#长者姓名][#心率状态],请及时处理!', '', '1', '1', NULL, NULL, 'platAdmin02', '2023-09-07 14:16:56', 'platAdmin02', '2023-09-07 14:16:56', '0', '0', NULL);
INSERT INTO `plat_alarm_config`(`id`, `alarm_type`, `status`, `org_id`, `city_org_id`, `district_org_id`, `street_org_id`, `org_path`, `rule_config`, `content`, `notify_channel`, `notify_relation`, `notify_way`, `notify_user`, `description`, `create_by`, `create_date`, `update_by`, `update_date`, `del_flag`, `tenant_id`, `content_audit`) VALUES ('16996682046846648331', '4', '1', '1701542574740770817', NULL, NULL, NULL, NULL, '{\"averageDuration\":\"5\"}', '[#长者姓名]在[#上级空间名-房间名]内存在行为异常,请及时处理!', '', '1', '1', NULL, NULL, 'platAdmin02', '2023-09-07 14:17:33', 'platAdmin02', '2023-09-07 14:17:33', '0', '0', NULL);
INSERT INTO `sys_config_category`(`id`, `tenant_id`, `code`, `name`, `create_date`, `update_date`, `del_flag`, `create_by`, `update_by`, `eng_name`) VALUES ('2', '0', 'elder.blood', '长者血型', '2023-07-11 10:55:06', '2023-07-11 10:55:08', '0', NULL, NULL, NULL);
INSERT INTO `sys_config_category`(`id`, `tenant_id`, `code`, `name`, `create_date`, `update_date`, `del_flag`, `create_by`, `update_by`, `eng_name`) VALUES ('3', '0', 'elder.socialRelation', '长者社会关系', '2023-07-11 10:55:06', '2023-07-11 10:55:08', '0', NULL, NULL, NULL);
INSERT INTO `sys_config_category`(`id`, `tenant_id`, `code`, `name`, `create_date`, `update_date`, `del_flag`, `create_by`, `update_by`, `eng_name`) VALUES ('4', '0', 'elder.elderType', '长者老人类型', '2023-07-11 10:55:06', '2023-07-11 10:55:08', '0', NULL, NULL, NULL);
INSERT INTO `sys_config_category`(`id`, `tenant_id`, `code`, `name`, `create_date`, `update_date`, `del_flag`, `create_by`, `update_by`, `eng_name`) VALUES ('5', '0', 'elder.illness', '长者疾病状况', '2023-07-11 10:55:06', '2023-07-11 10:55:08', '0', NULL, NULL, NULL);
INSERT INTO `sys_config_category`(`id`, `tenant_id`, `code`, `name`, `create_date`, `update_date`, `del_flag`, `create_by`, `update_by`, `eng_name`) VALUES ('6', '0', 'elder.foodProhibition', '长者饮食禁忌', '2023-07-11 10:55:06', '2023-07-11 10:55:08', '0', NULL, NULL, NULL);
INSERT INTO `sys_config_category`(`id`, `tenant_id`, `code`, `name`, `create_date`, `update_date`, `del_flag`, `create_by`, `update_by`, `eng_name`) VALUES ('7', '0', 'elder.hobbies', '长者兴趣爱好', '2023-07-11 10:55:06', '2023-07-11 10:55:08', '0', NULL, NULL, NULL);
INSERT INTO `sys_config_category`(`id`, `tenant_id`, `code`, `name`, `create_date`, `update_date`, `del_flag`, `create_by`, `update_by`, `eng_name`) VALUES ('8', '0', 'elder.education', '长者文化程度', '2023-07-11 10:55:06', '2023-07-11 10:55:08', '0', NULL, NULL, NULL);
INSERT INTO `sys_config_category`(`id`, `tenant_id`, `code`, `name`, `create_date`, `update_date`, `del_flag`, `create_by`, `update_by`, `eng_name`) VALUES ('9', '0', 'elder.belief', '长者宗教信仰', '2023-07-11 10:55:06', '2023-07-11 10:55:08', '0', NULL, NULL, NULL);
INSERT INTO `sys_config`(`id`, `tenant_id`, `code`, `name`, `value`, `sort`, `description`, `category_id`, `create_date`, `update_date`, `del_flag`, `create_by`, `update_by`, `eng_name`) VALUES ('1', '0', 'elder.certificateType.idCard', '身份证', '1', 0, '', '1', '2023-07-11 10:57:57', '2023-07-11 10:58:02', '0', NULL, NULL, NULL);
INSERT INTO `sys_config`(`id`, `tenant_id`, `code`, `name`, `value`, `sort`, `description`, `category_id`, `create_date`, `update_date`, `del_flag`, `create_by`, `update_by`, `eng_name`) VALUES ('10', '0', 'elder.income.low', '低收入', '1', 0, '', '10', '2023-07-11 10:57:57', '2023-07-11 10:58:02', '0', NULL, NULL, NULL);
INSERT INTO `sys_config`(`id`, `tenant_id`, `code`, `name`, `value`, `sort`, `description`, `category_id`, `create_date`, `update_date`, `del_flag`, `create_by`, `update_by`, `eng_name`) VALUES ('2', '0', 'elder.blood.a', 'A', '1', 0, '', '2', '2023-07-11 10:57:57', '2023-07-11 10:58:02', '0', NULL, NULL, NULL);
INSERT INTO `sys_config`(`id`, `tenant_id`, `code`, `name`, `value`, `sort`, `description`, `category_id`, `create_date`, `update_date`, `del_flag`, `create_by`, `update_by`, `eng_name`) VALUES ('20', '0', 'elder.marriage.no', '未婚', '0', 0, '', '11', '2023-07-11 10:57:57', '2023-07-11 10:58:02', '0', NULL, NULL, NULL);
INSERT INTO `sys_config`(`id`, `tenant_id`, `code`, `name`, `value`, `sort`, `description`, `category_id`, `create_date`, `update_date`, `del_flag`, `create_by`, `update_by`, `eng_name`) VALUES ('21', '0', 'elder.marriage.yes', '已婚', '1', 0, '', '11', '2023-07-11 10:57:57', '2023-07-11 10:58:02', '0', NULL, NULL, NULL);
INSERT INTO `sys_config`(`id`, `tenant_id`, `code`, `name`, `value`, `sort`, `description`, `category_id`, `create_date`, `update_date`, `del_flag`, `create_by`, `update_by`, `eng_name`) VALUES ('3', '0', 'elder.socialRelation.children', '子女', '1', 0, '', '3', '2023-07-11 10:57:57', '2023-07-11 10:58:02', '0', NULL, NULL, NULL);
INSERT INTO `sys_config`(`id`, `tenant_id`, `code`, `name`, `value`, `sort`, `description`, `category_id`, `create_date`, `update_date`, `del_flag`, `create_by`, `update_by`, `eng_name`) VALUES ('4', '0', 'elder.elderType.single', '失独老人', '1', 0, '', '4', '2023-07-11 10:57:57', '2023-07-11 10:58:02', '0', NULL, NULL, NULL);
INSERT INTO `sys_config`(`id`, `tenant_id`, `code`, `name`, `value`, `sort`, `description`, `category_id`, `create_date`, `update_date`, `del_flag`, `create_by`, `update_by`, `eng_name`) VALUES ('5', '0', 'elder.illness.heartDisease', '心脏病', '1', 0, '', '5', '2023-07-11 10:57:57', '2023-07-11 10:58:02', '0', NULL, NULL, NULL);
INSERT INTO `sys_config`(`id`, `tenant_id`, `code`, `name`, `value`, `sort`, `description`, `category_id`, `create_date`, `update_date`, `del_flag`, `create_by`, `update_by`, `eng_name`) VALUES ('6', '0', 'elder.foodProhibition.avoidSpiciness', '忌辛辣', '1', 0, '', '6', '2023-07-11 10:57:57', '2023-07-11 10:58:02', '0', NULL, NULL, NULL);
INSERT INTO `sys_config`(`id`, `tenant_id`, `code`, `name`, `value`, `sort`, `description`, `category_id`, `create_date`, `update_date`, `del_flag`, `create_by`, `update_by`, `eng_name`) VALUES ('7', '0', 'elder.hobbies.growFlowers', '养花', '1', 0, '', '7', '2023-07-11 10:57:57', '2023-07-11 10:58:02', '0', NULL, NULL, NULL);
INSERT INTO `sys_config`(`id`, `tenant_id`, `code`, `name`, `value`, `sort`, `description`, `category_id`, `create_date`, `update_date`, `del_flag`, `create_by`, `update_by`, `eng_name`) VALUES ('8', '0', 'elder.education.seniorMiddleSchool', '高中', '1', 0, '', '8', '2023-07-11 10:57:57', '2023-07-11 10:58:02', '0', NULL, NULL, NULL);
INSERT INTO `sys_config`(`id`, `tenant_id`, `code`, `name`, `value`, `sort`, `description`, `category_id`, `create_date`, `update_date`, `del_flag`, `create_by`, `update_by`, `eng_name`) VALUES ('9', '0', 'elder.belief.none', '无', '1', 0, '', '9', '2023-07-11 10:57:57', '2023-07-11 10:58:02', '0', NULL, NULL, NULL);
This diff could not be displayed because it is too large.
-- 租户端表
CREATE TABLE `plat_user` (
`id` varchar(64) NOT NULL COMMENT 'id',
`tenant_id` varchar(64) DEFAULT NULL COMMENT '租户id',
`username` varchar(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL COMMENT '用户名',
`account` varchar(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL COMMENT '账户',
`password` varchar(64) NOT NULL COMMENT '密码',
`mobile` varchar(11) NOT NULL COMMENT '手机号',
`email` varchar(64) DEFAULT NULL COMMENT '邮箱',
`status` char(1) NOT NULL COMMENT '状态 0禁用 1启用',
`avatar` varchar(256) DEFAULT NULL COMMENT '头像',
`is_tenant` char(1) DEFAULT NULL COMMENT '是否租户账户/租户管理员 0否 1是',
`create_date` datetime NOT NULL COMMENT '创建时间',
`update_date` datetime NOT NULL COMMENT '更新时间',
`del_flag` CHAR(1) DEFAULT NULL COMMENT '删除标识',
`create_by` varchar(64) NOT NULL COMMENT '创建人',
`update_by` varchar(64) NOT NULL COMMENT '更新人',
`org_id` varchar(64) DEFAULT NULL COMMENT '部门树id',
`org_path` varchar(512) DEFAULT NULL COMMENT '部门树冗余id',
`remark` varchar(255) DEFAULT NULL COMMENT '备注',
PRIMARY KEY (`id`),
KEY `plat_user_account_index` (`account`),
KEY `plat_user_org_id_index` (`org_id`),
KEY `plat_user_mobile_index` (`mobile`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=COMPACT COMMENT='租户账号管理';
CREATE TABLE `plat_role` (
`id` varchar(64) NOT NULL COMMENT 'id',
`tenant_id` varchar(64) NOT NULL COMMENT '租户id',
`name` varchar(100) NOT NULL COMMENT '名称',
`remark` varchar(255) DEFAULT NULL COMMENT '备注',
`data_scope` varchar(600) DEFAULT NULL COMMENT '数据权限 子公司id 上级可看到下级',
`create_date` datetime NOT NULL COMMENT '创建时间',
`update_date` datetime NOT NULL COMMENT '更新时间',
`del_flag` char(1) DEFAULT NULL COMMENT '删除标识',
`update_by` varchar(64) DEFAULT NULL COMMENT '更新人',
`create_by` varchar(64) DEFAULT NULL COMMENT '创建人',
`org_id` varchar(64) DEFAULT NULL COMMENT '所属组织',
`code` varchar(64) DEFAULT NULL COMMENT 'code',
`status` char(1) DEFAULT NULL COMMENT '状态',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=COMPACT COMMENT='租户端角色';
CREATE TABLE `plat_user_role` (
`id` varchar(64) COLLATE utf8mb4_general_ci NOT NULL COMMENT 'id',
`tenant_id` varchar(64) COLLATE utf8mb4_general_ci NOT NULL COMMENT '租户id',
`user_id` varchar(64) COLLATE utf8mb4_general_ci NOT NULL COMMENT '用户id',
`role_id` varchar(64) COLLATE utf8mb4_general_ci NOT NULL COMMENT '角色id',
`create_date` datetime NOT NULL COMMENT '创建时间',
`update_date` datetime NOT NULL COMMENT '更新时间',
`del_flag` CHAR(1) DEFAULT NULL COMMENT '删除标识',
`create_by` varchar(64) NOT NULL COMMENT '创建人',
`update_by` varchar(64) NOT NULL COMMENT '更新人',
PRIMARY KEY (`id`),
KEY `plat_user_role_role_id_index` (`role_id`),
KEY `plat_user_role_user_id_index` (`user_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci ROW_FORMAT=COMPACT COMMENT='租户端用户角色关联表';
CREATE TABLE `plat_role_menu` (
`id` varchar(64) COLLATE utf8mb4_general_ci NOT NULL COMMENT 'id',
`tenant_id` varchar(64) COLLATE utf8mb4_general_ci NOT NULL COMMENT '租户id',
`role_id` varchar(64) COLLATE utf8mb4_general_ci NOT NULL COMMENT '角色id',
`menu_id` varchar(64) COLLATE utf8mb4_general_ci NOT NULL COMMENT '菜单id',
`create_date` datetime NOT NULL COMMENT '创建时间',
`update_date` datetime NOT NULL COMMENT '更新时间',
`del_flag` CHAR(1) DEFAULT NULL COMMENT '删除标识',
`create_by` varchar(64) NOT NULL COMMENT '创建人',
`update_by` varchar(64) NOT NULL COMMENT '更新人',
PRIMARY KEY (`id`),
KEY `plat_role_menu_menu_id_index` (`menu_id`),
KEY `plat_role_menu_role_id_index` (`role_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci ROW_FORMAT=COMPACT COMMENT='租户端角色菜单关联表';
CREATE TABLE `plat_org` (
`id` varchar(64) COLLATE utf8mb4_general_ci NOT NULL COMMENT 'id',
`tenant_id` varchar(64) COLLATE utf8mb4_general_ci NOT NULL COMMENT '租户id',
`parent_id` varchar(64) COLLATE utf8mb4_general_ci NOT NULL COMMENT '父级id',
`name` varchar(100) COLLATE utf8mb4_general_ci NOT NULL COMMENT '组织名称',
`sort` int DEFAULT NULL COMMENT '排序',
`status` char(1) COLLATE utf8mb4_general_ci NOT NULL COMMENT '状态 0禁用 1启用',
`type` char(1) COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '类型 1-居家 2-机构',
`region` varchar(64) COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '管辖区域id',
`create_date` datetime NOT NULL COMMENT '创建时间',
`update_date` datetime NOT NULL COMMENT '更新时间',
`del_flag` CHAR(1) DEFAULT NULL COMMENT '删除标识',
`create_by` varchar(64) NOT NULL COMMENT '创建人',
`update_by` varchar(64) NOT NULL COMMENT '更新人',
PRIMARY KEY (`id`),
KEY `plat_org_parent_id_index` (`parent_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci ROW_FORMAT=COMPACT COMMENT='租户端部门';
CREATE TABLE `plat_role_org` (
`id` varchar(64) COLLATE utf8mb4_general_ci NOT NULL COMMENT 'id',
`tenant_id` varchar(64) COLLATE utf8mb4_general_ci NOT NULL COMMENT '租户id',
`role_id` varchar(64) COLLATE utf8mb4_general_ci NOT NULL COMMENT '角色id',
`org_id` varchar(64) COLLATE utf8mb4_general_ci NOT NULL COMMENT '部门树id',
`create_date` datetime NOT NULL COMMENT '创建时间',
`update_date` datetime NOT NULL COMMENT '更新时间',
`del_flag` CHAR(1) DEFAULT NULL COMMENT '删除标识',
`create_by` varchar(64) NOT NULL COMMENT '创建人',
`update_by` varchar(64) NOT NULL COMMENT '更新人',
PRIMARY KEY (`id`),
KEY `plat_role_iorg_id_index` (`org_id`),
KEY `plat_role_role_id_index` (`role_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci ROW_FORMAT=COMPACT COMMENT='租户端角色部门关联表';
CREATE TABLE `plat_logo_config` (
`id` VARCHAR ( 64 ) COLLATE utf8mb4_general_ci NOT NULL COMMENT 'id',
`tenant_id` VARCHAR ( 64 ) COLLATE utf8mb4_general_ci NOT NULL COMMENT '租户id',
`name` varchar(100) COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '名称',
`code` varchar(100) COLLATE utf8mb4_general_ci NOT NULL COMMENT '编码',
`logo_file_id` VARCHAR ( 64 ) COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT 'logo文件ID',
`browser_file_id` VARCHAR ( 64 ) COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '浏览器页签文件Id',
`background_file_id` VARCHAR ( 64 ) COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '登录背景图片',
`create_date` datetime NOT NULL COMMENT '创建时间',
`update_date` datetime NOT NULL COMMENT '更新时间',
`del_flag` CHAR ( 1 ) DEFAULT NULL COMMENT '删除标识',
`create_by` VARCHAR ( 64 ) NOT NULL COMMENT '创建人',
`update_by` VARCHAR ( 64 ) NOT NULL COMMENT '更新人',
PRIMARY KEY ( `id` )
) ENGINE = INNODB DEFAULT CHARSET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = COMPACT COMMENT = '系统配置表';
\ No newline at end of file
INSERT INTO `sys_dictionary_category` ( `id`, `code`, `name`, `create_date`, `update_date`, `del_flag` )
VALUES
( '10000', 'menu.type', '菜单类型', '2022-05-16 16:33:28', '2022-05-16 16:33:33', 0 );
INSERT INTO `sys_dictionary` ( `id`, `code`, `name`, `value`, `sort`, `description`, `category_id`, `create_date`, `update_date`, `del_flag` )
VALUES
( '10001', 'menu.type.catalogue', '目录', '1', 1, '', '10000', '2022-05-16 16:34:57', '2022-05-16 16:35:10', 0 );
INSERT INTO `sys_dictionary` ( `id`, `code`, `name`, `value`, `sort`, `description`, `category_id`, `create_date`, `update_date`, `del_flag` )
VALUES
( '10002', 'menu.type.menu', '菜单', '2', 2, '', '10000', '2022-05-16 16:35:44', '2022-05-16 16:35:50', 0 );
INSERT INTO `sys_dictionary` ( `id`, `code`, `name`, `value`, `sort`, `description`, `category_id`, `create_date`, `update_date`, `del_flag` )
VALUES
( '10003', 'menu.type.button', '按钮', '3', 3, '', '10000', '2022-05-16 16:36:28', '2022-05-16 16:36:33', 0 );
select * from sys_dictionary_category t order by t.id asc;
select * from sys_dictionary t order by t.id asc;
\ No newline at end of file
CREATE TABLE `plat_space`
(
`id` VARCHAR(64) NOT NULL COMMENT 'id',
`name` VARCHAR(128) NOT NULL COMMENT '名称',
`parent_id` VARCHAR(64) DEFAULT NULL COMMENT '上级空间',
`type` VARCHAR(4) NOT NULL COMMENT '空间类型 1:小区/社区/街道 2:楼栋 3:单元 4 楼层',
`address` VARCHAR(256) DEFAULT NULL COMMENT '地址',
`longitude` VARCHAR(64) DEFAULT NULL COMMENT '经度',
`latitude` VARCHAR(64) DEFAULT NULL COMMENT '纬度',
`province` VARCHAR(64) DEFAULT NULL COMMENT '省(预留字段)',
`city` VARCHAR(64) DEFAULT NULL COMMENT '市(预留字段)',
`district` VARCHAR(64) DEFAULT NULL COMMENT '区(预留字段)',
`parent_path` VARCHAR(64) DEFAULT NULL COMMENT '父级全路径',
`create_by` VARCHAR(64) DEFAULT NULL COMMENT '创建者',
`create_date` datetime DEFAULT NULL COMMENT '创建时间',
`update_by` VARCHAR(64) DEFAULT NULL COMMENT '更新者',
`update_date` datetime DEFAULT NULL COMMENT '更新时间',
`del_flag` INT(1) DEFAULT '0' COMMENT '删除标记',
`tenant_id` varchar(64) COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT ' 租户id ',
`org_id` varchar(64) DEFAULT NULL COMMENT '组织id',
`attribute` char(1) DEFAULT NULL COMMENT '属性 1-居家 2-机构',
PRIMARY KEY (`id`) USING BTREE
) ENGINE = INNODB
DEFAULT CHARSET = utf8mb4 COMMENT = '空间管理';
CREATE TABLE `plat_room`
(
`id` VARCHAR(64) NOT NULL COMMENT 'id',
`name` VARCHAR(128) NOT NULL COMMENT '名称',
`space_id` VARCHAR(64) NOT NULL COMMENT '空间id',
`space_path` VARCHAR(512) NOT NULL COMMENT '空间全路径',
`bed_number` INT(4) NOT NULL COMMENT '床位数量',
`description` VARCHAR(1024) DEFAULT NULL COMMENT '床位描述',
`create_by` VARCHAR(64) DEFAULT NULL COMMENT '创建者',
`create_date` datetime DEFAULT NULL COMMENT '创建时间',
`update_by` VARCHAR(64) DEFAULT NULL COMMENT '更新者',
`update_date` datetime DEFAULT NULL COMMENT '更新时间',
`del_flag` INT(1) DEFAULT '0' COMMENT '删除标记',
`tenant_id` varchar(64) COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT ' 租户id ',
PRIMARY KEY (`id`) USING BTREE
) ENGINE = INNODB
DEFAULT CHARSET = utf8mb4 COMMENT = '房间管理';
CREATE TABLE `plat_bed`
(
`id` varchar(64) NOT NULL COMMENT 'id',
`name` varchar(128) NOT NULL COMMENT '床位名称 床位1,床位2',
`room_id` varchar(64) NOT NULL COMMENT '房间id',
`space_id` varchar(64) NOT NULL COMMENT '空间id',
`sort` INT(4) NOT NULL COMMENT '序号',
`status` char(1) DEFAULT 1 COMMENT '是否空闲 1 是 0 否 ',
`create_by` varchar(64) DEFAULT NULL COMMENT '创建者',
`create_date` datetime DEFAULT NULL COMMENT '创建时间',
`update_by` varchar(64) DEFAULT NULL COMMENT '更新者',
`update_date` datetime DEFAULT NULL COMMENT '更新时间',
`del_flag` int(1) DEFAULT '0' COMMENT '删除标记',
`tenant_id` varchar(64) COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT ' 租户id ',
PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB
DEFAULT CHARSET = utf8mb4 COMMENT ='床位管理';
CREATE TABLE `plat_room_bed_device`
(
`id` varchar(64) NOT NULL COMMENT 'id',
`name` varchar(128) NOT NULL COMMENT '床位名称 床位1,床位2',
`room_id` varchar(64) NOT NULL COMMENT '房间id',
`bed_id` varchar(64) NOT NULL COMMENT '空间id',
`device_id` varchar(64) DEFAULT NULL COMMENT '设备id',
`create_by` varchar(64) DEFAULT NULL COMMENT '创建者',
`create_date` datetime DEFAULT NULL COMMENT '创建时间',
`update_by` varchar(64) DEFAULT NULL COMMENT '更新者',
`update_date` datetime DEFAULT NULL COMMENT '更新时间',
`del_flag` int(1) DEFAULT '0' COMMENT '删除标记',
`tenant_id` varchar(64) COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT ' 租户id ',
PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB
DEFAULT CHARSET = utf8mb4 COMMENT ='设备房间床位关联表';
-- 待完善 区域设置表
CREATE TABLE `plat_region_setting`
(
`id` varchar(64) NOT NULL COMMENT 'id',
`install_type` char(1) DEFAULT NULL COMMENT '安装方式 0-顶装 1-侧装',
`toward` char(1) DEFAULT NULL COMMENT '设备朝向 0-上 1-下 2-左 3-右',
`region_name` varchar(64) DEFAULT NULL COMMENT '区域名称',
`region_range` varchar(500) DEFAULT NULL COMMENT '区域定位',
`room_range` varchar(500) DEFAULT NULL COMMENT '房间门定位',
`equipment_range` varchar(128) DEFAULT NULL COMMENT '设备定位',
`device_id` varchar(64) DEFAULT NULL COMMENT '设备Id',
`create_by` varchar(64) DEFAULT NULL COMMENT '创建者',
`create_date` datetime DEFAULT NULL COMMENT '创建时间',
`update_by` varchar(64) DEFAULT NULL COMMENT '更新者',
`update_date` datetime DEFAULT NULL COMMENT '更新时间',
`del_flag` int(1) DEFAULT '0' COMMENT '删除标记',
`tenant_id` varchar(64) COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT ' 租户id ',
`background` varchar(64) DEFAULT NULL COMMENT '背景色',
PRIMARY KEY (`id`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='区域设置';
ALTER TABLE `plat_device_other`
++ "b/db/\344\270\212\347\272\277\345\220\216sql/update.sql"
ALTER TABLE `plat_device_other`
ADD COLUMN `secure_id` varchar(255) COMMENT '密钥id' AFTER `protocol_password`,
ADD COLUMN `secure_key` varchar(255) COMMENT '密钥key' AFTER `secure_id`;
ALTER TABLE `plat_alarm_record`
ADD COLUMN `misinformation_flag` char(1) DEFAULT 0 COMMENT '是否误报 1 误报 0 没有误报' AFTER `read_flag`;
ALTER TABLE `plat_elder_report_month`
MODIFY COLUMN `sleep_result` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci COMMENT '睡眠结果' AFTER `day`,
MODIFY COLUMN `heart_rate` int(11) COMMENT '心率' AFTER `sleep_result`,
MODIFY COLUMN `respiratory_rate` int(11) COMMENT '呼吸率' AFTER `heart_rate`,
MODIFY COLUMN `fail_count` int(11) COMMENT '跌倒次数' AFTER `respiratory_rate`,
MODIFY COLUMN `heart_exception_count` int(11) COMMENT '心率异常次数' AFTER `fail_count`,
MODIFY COLUMN `respiratory_exception_count` int(11) COMMENT '呼吸异常次数' AFTER `heart_exception_count`,
MODIFY COLUMN `behavior_exception_count` int(11) COMMENT '行为异常次数' AFTER `respiratory_exception_count`;
ALTER TABLE `sys_api_secret`
CHANGE COLUMN `publicKey` `public_key` varchar(1024) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '公钥' AFTER `platform`,
CHANGE COLUMN `privateKey` `private_key` varchar(2048) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '私钥' AFTER `public_key`,
CHANGE COLUMN `orgId` `org_id` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '机构id' AFTER `private_key`;
ALTER TABLE `dev_iot_yanglao_platform`.`plat_device_other`
ADD COLUMN `uuid` varchar(255) COMMENT '设备uuid' AFTER `secure_key`;
ALTER TABLE `plat_device`
ADD COLUMN `device_license` varchar(64) COMMENT '许可证' AFTER `end_date`,
ADD COLUMN `license_info` varchar(255) COMMENT '许可证信息' AFTER `license`;
ALTER TABLE `plat_device`
ADD COLUMN `expire_time` int8 COMMENT '过期时间' AFTER `license_info`,
ADD COLUMN `activation_time` int8 COMMENT '激活时间' AFTER `expire_time`;
ALTER TABLE `plat_tenant`
ADD COLUMN `appid` varchar(64) COMMENT 'appid' AFTER `url`,
ADD COLUMN `secret` varchar(64) COMMENT 'secret' AFTER `appid`;
CREATE TABLE `plat_device_log` (
`id` VARCHAR ( 64 ) NOT NULL COMMENT 'id',
`device_id` VARCHAR ( 64 ) DEFAULT NULL COMMENT 'iot设备sn',
`type` VARCHAR ( 1 ) DEFAULT NULL COMMENT '类型 1 误报',
`product_name` VARCHAR ( 64 ) DEFAULT NULL COMMENT '产品名称',
`url` VARCHAR ( 256 ) DEFAULT NULL COMMENT '日志url',
`file_name` VARCHAR ( 256 ) DEFAULT NULL COMMENT '文件名称',
`create_date` datetime NOT NULL COMMENT '创建时间',
`update_date` datetime NOT NULL COMMENT '更新时间',
`del_flag` CHAR ( 1 ) DEFAULT NULL COMMENT '删除标识',
`create_by` VARCHAR ( 64 ) DEFAULT NULL COMMENT '创建人',
`update_by` VARCHAR ( 64 ) DEFAULT NULL COMMENT '更新人',
`tenant_id` varchar(64) DEFAULT NULL COMMENT ' 租户id',
PRIMARY KEY ( `id` )
) ENGINE = INNODB DEFAULT CHARSET = utf8mb4 ROW_FORMAT = COMPACT COMMENT = '设备日志';
-- 12.15 迭代执行sql
## 告警中心新增离床异常 初始化
ALTER TABLE `plat_alarm_config` modify column alarm_type char(1) comment '告警类型 数据字典 1 长者跌倒 2 呼吸异常 3 心率异常 4 行为异常 5 离床异常';
INSERT INTO `plat_alarm_config`(`id`, `alarm_type`, `status`, `org_id`, `city_org_id`, `district_org_id`, `street_org_id`, `org_path`, `rule_config`, `content`, `notify_channel`, `notify_relation`, `notify_way`, `notify_user`, `description`, `create_by`, `create_date`, `update_by`, `update_date`, `del_flag`, `tenant_id`, `content_audit`)
VALUES ('16996678722776842252', '5', '1', '1701542574740770817', NULL, NULL, NULL, NULL, '{"offBedStart":"00:00:00","offBedEnd":"05:00:00","duration":"60"}', '[#长者姓名]离床时间过长,请及时处理!', '', '1', '1', NULL, NULL, 'platAdmin02', NOW(), 'platAdmin02', NOW(), '0', '0', NULL);
## 离床异常字典
INSERT INTO `sys_dictionary` VALUES ('204', 'alarm.alarmType.offBed', '离床异常', '5', 5, '', '200', NOW(), NOW(), '0', NULL, NULL, NULL);
## 离床次数月统计
ALTER TABLE `plat_elder_report_month` add column off_bed_exception_count int(11) default 0 COMMENT '离床异常次数' after behavior_exception_count;
CREATE TABLE `saas_pid_manage` (
`id` varchar(64) NOT NULL COMMENT 'id',
`pid` varchar(100) NOT NULL COMMENT 'pid',
`status` char(1) DEFAULT NULL COMMENT '状态 0禁用 1启用',
`available_credit` int4 DEFAULT NULL COMMENT '可用额度',
`used_credit` int4 DEFAULT NULL COMMENT '已用额度',
`total_credit` int4 DEFAULT NULL COMMENT '总额度',
`create_date` datetime NOT NULL COMMENT '创建时间',
`update_date` datetime NOT NULL COMMENT '更新时间',
`del_flag` char(1) DEFAULT NULL COMMENT '删除标识',
`create_by` varchar(64) NOT NULL COMMENT '创建人',
`update_by` varchar(64) NOT NULL COMMENT '更新人',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=COMPACT COMMENT='声网pid管理';
ALTER TABLE `plat_alarm_record`
ADD COLUMN `wechat_read_flag` char(1) DEFAULT 0 COMMENT '小程序端是否读取 0未读 1已读' AFTER `misinformation_flag`;
-- 12.15 end
ALTER TABLE `plat_tenant`
ADD COLUMN `open_api_url` varchar(128) COMMENT '第三方接口url' AFTER `secret`;
CREATE TABLE `plat_elder_breathe_heart_rate_record` (
`id` varchar(64) NOT NULL COMMENT 'id',
`create_by` varchar(64) DEFAULT NULL COMMENT '创建者',
`create_date` datetime DEFAULT NULL COMMENT '创建时间',
`update_by` varchar(64) DEFAULT NULL COMMENT '更新者',
`update_date` datetime DEFAULT NULL COMMENT '更新时间',
`del_flag` char(1) NOT NULL COMMENT ' 删除标志 0否 1是 ',
`tenant_id` varchar(64) DEFAULT NULL COMMENT ' 租户id ',
`elder_id` varchar(64) DEFAULT NULL COMMENT '长者id',
`report_time` bigint(20) DEFAULT NULL COMMENT '上报时间',
`heart_rate` int(11) DEFAULT NULL COMMENT '心率',
`respiratory_rate` int(11) DEFAULT NULL COMMENT '呼吸率',
`body_move` int(11) DEFAULT NULL COMMENT '体动值',
`device_id` varchar(255) DEFAULT NULL COMMENT '设备id',
`iot_device_id` varchar(64) DEFAULT NULL COMMENT 'iot设备id',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=COMPACT COMMENT='长者呼吸心率记录';
-- end
ALTER TABLE `plat_alarm_record`
ADD COLUMN `device_time` varchar(64) COMMENT '当前上报时间' AFTER `wechat_read_flag`;
alter table plat_elder_sleep_analysis add column `ori_device_id` varchar(64) default NULL COMMENT 'iot设备id';
alter table plat_elder_breathe_analysis add column `ori_device_id` varchar(64) default NULL COMMENT 'iot设备id';
alter table plat_elder_children_info add column weChat_openid varchar(64) default null comment '公众号openid';
alter table plat_tenant add column report_org_ids varchar(255) default null comment '主动上报机构ids';
\ No newline at end of file
# 平台端
## 服务器环境准备
- JDK 1.8.0_2xx (需要小版本号大于200)
- Redis 5.x
- MySql 5.7+ (初始化脚本db/init/init.sql)
- ElasticSearch 6.8.11
- Kibana 6.8.11 (可选)
## 项目打包
- 拉取源码http://git.xmmakeit.com/huangjiay/iot-platform-server.git
- 切换分支(master生产环境,dev测试环境)
- 在项目根目录下执行mvn clean package进行打包
## 部署
- 在服务器上创建目录/opt/iot-platform-server
- 将jar包上传至服务器/opt/iot-platform-server目录下
- 正式环境在/opt/iot-platform-server/config目录下新建application.yaml文件,请注意修改对应配置信息!!!
- application.yaml
```yaml
server:
port: 10005
servlet:
encoding:
charset: UTF-8
force: true
enabled: true
shutdown: graceful
spring:
application:
name: iot-server
datasource:
url: jdbc:mysql://127.0.0.1:3306/kanyang_app?allowMultiQueries=true&useUnicode=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=GMT%2B8&autoReconnect=true
username: kuangshi
password: ks@kjb#Ds@1010&
driver-class-name: com.mysql.cj.jdbc.Driver
#type: com.alibaba.druid.pool.DruidDataSource
redis:
address: redis://localhost:6379
password: iot@2023
#超时时间
timeout: 10000
#连接等待超时
connectTimeout: 10000
#redis库
database: 1
mail:
host: smtp.qq.com
username: 994997968@qq.com
password: jctyarhjddstbfef
protocol: smtps
default-encoding: UTF-8
properties:
default-encoding: utf-8
mail:
smtp:
port: 587
auth: true
starttls:
enable: true
required: true
sign:
flag: false
mybatis-plus:
configuration:
log-impl: org.apache.ibatis.logging.nologging.NoLoggingImpl
file:
filePath: file
file: /opt/iot-platform-server/file/${file.filePath}
log: logs
storage:
location: ${file.file}
type: local
url: https://saas.quanthium.com.cn/api/${file.filePath}
logging:
level:
root: info
config: classpath:logback-spring-prod.xml
swagger:
prefix:
maven:
profile:
redis:
prefix:
libreOffice: /home/group1_lzy/iot-server/LibreOffice/program/soffice
iot:
url: https://iot.quanthium.com.cn/api/
uploadUrl: https://saas.qa.quanthium.com.cn/api/saas/device/devicePushLog
clientId: SGtXMT3nXNjDrexH
secureKey: SK48ztMZDMEs8FmaPHjGQGmQBA4CjrPt
sync:
enable: true
mqtt:
username: kuangshi-tumble|1704772011077
password: 9918b498632f64d7de9537c663a50427
hostUrl: tcp://47.106.157.175:11883
clientId:
defaultTopic: /device/*/*/**
timeout: 10
keepalive: 60
msgSwitch: true
wx:
miniapp:
config:
appid: wx454f0dbc28a6529a #微信小程序的appid
secret: fb20da3064d6b7ac90d5c15cf407df46 #微信小程序的Secret
token: #微信小程序消息服务器配置的token
aesKey: #微信小程序消息服务器配置的EncodingAESKey
msgDataFormat: JSON
sms:
send:
url: http://www.aozoneyun.com/message/message/send
uid: 357
pwd: xmks123456
voice-sms:
send:
url: http://www.aozoneyun.com/Message/Message/video_send
uid: 362
pwd: xmksyy123456
shengwang:
appId: 883078934ecd4193aa7a62a3cdacd810
appCertificate: b29be69c9c034120a68f1d5c199d2e74
channelName: 1
uid: 0
tokenExpirationInSeconds: 3600
privilegeExpirationInSeconds: 3600
customerKey: b3b5f44e536a4fc191358926c6716b7b
customerSecret: bd81828a133140a58dfb04e9d80eba43
pid: C567D6F40C6E48E293AA4F9B7AE9BA30
aliyun:
oss:
accessKey: LTAI5tMjaFCiaYYLmtCLiuMj
secretKey: Oq1925mQ8663nxaf83MyoOGAbVM71H
endpoint: oss-cn-shenzhen.aliyuncs.com
bucket: kangyang-oss
baseDir: kangyang
elasticsearch:
host: 47.106.229.44
port: 9200
user:
password:
scheme: http
```
- 启动项目
- 测试环境
```sh
nohup java -jar server-web.jar --spring.profiles.active=test &
```
- 正式环境
```sh
nohup java -jar server-web.jar &
```
This diff could not be displayed because it is too large.
package com.makeit.controller.sys;
import com.makeit.common.dto.BaseIdDTO;
import com.makeit.common.page.PageReqDTO;
import com.makeit.common.page.PageVO;
import com.makeit.common.response.ApiResponseEntity;
import com.makeit.common.response.ApiResponseUtils;
import com.makeit.module.system.dto.SysApiSecretAddDTO;
import com.makeit.module.system.dto.SysApiSecretEditDTO;
import com.makeit.module.system.entity.SysApiSecret;
import com.makeit.module.system.service.SysApiSecretService;
import com.makeit.module.system.vo.SysApiSecretVO;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@Api(tags = "saas-第三方平台信息配置")
@RestController
@RequestMapping("/saas/sys/apiSecret")
public class SysApiSecretController {
@Autowired
private SysApiSecretService SysApiSecretService;
@ApiOperation(value = "分页列表", notes = "")
@PostMapping("/page")
public ApiResponseEntity<PageVO<SysApiSecretVO>> page(@RequestBody PageReqDTO<SysApiSecret> page) {
return ApiResponseUtils.success(SysApiSecretService.page(page));
}
@ApiOperation(value = "新增", notes = "")
@PostMapping("/add")
public ApiResponseEntity<?> add(@Validated @RequestBody SysApiSecretAddDTO SysApiSecret) {
SysApiSecretService.add(SysApiSecret);
return ApiResponseUtils.success();
}
@ApiOperation(value = "编辑", notes = "")
@PostMapping("/edit")
public ApiResponseEntity<?> edit(@Validated @RequestBody SysApiSecretEditDTO SysApiSecret) {
SysApiSecretService.edit(SysApiSecret);
return ApiResponseUtils.success();
}
@ApiOperation(value = "详情", notes = "")
@PostMapping("/view")
public ApiResponseEntity<SysApiSecretVO> view(@RequestBody BaseIdDTO baseIdDTO) {
return ApiResponseUtils.success(SysApiSecretService.view(baseIdDTO.getId()));
}
@ApiOperation(value = "删除", notes = "")
@PostMapping("/del")
public ApiResponseEntity<?> del(@RequestBody BaseIdDTO baseIdDTO) {
SysApiSecretService.removeById(baseIdDTO.getId());
return ApiResponseUtils.success();
}
}
package com.makeit.module.system.dto;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import javax.validation.constraints.NotBlank;
@ApiModel("第三方平台api信息新增")
@Data
public class SysApiSecretAddDTO {
@NotBlank
@ApiModelProperty(value = "平台编码", required = true)
private String platform;
@NotBlank
@ApiModelProperty(value = "机构id", required = true)
private String orgId;
@ApiModelProperty("描述")
private String description;
}
package com.makeit.module.system.dto;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import javax.validation.constraints.NotBlank;
@ApiModel("第三方平台api信息编辑")
@Data
public class SysApiSecretEditDTO {
@NotBlank
@ApiModelProperty(value = "id", required = true)
private String id;
@NotBlank
@ApiModelProperty(value = "平台编码", required = true)
private String platform;
@NotBlank
@ApiModelProperty(value = "机构id", required = true)
private String orgId;
@ApiModelProperty("描述")
private String description;
}
......@@ -20,7 +20,7 @@ import lombok.Data;
@TableName(value = "sys_api_secret")
public class SysApiSecret extends BaseEntity {
@ApiModelProperty("平台")
@ApiModelProperty("平台编码")
private String platform;
@ApiModelProperty("公钥")
private String publicKey;
......
package com.makeit.module.system.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.makeit.common.page.PageReqDTO;
import com.makeit.common.page.PageVO;
import com.makeit.module.system.dto.SysApiSecretAddDTO;
import com.makeit.module.system.dto.SysApiSecretEditDTO;
import com.makeit.module.system.entity.SysApiSecret;
import com.makeit.module.system.vo.SysApiSecretVO;
public interface SysApiSecretService extends IService<SysApiSecret> {
public interface SysApiSecretService extends IService<SysApiSecret> {
PageVO<SysApiSecretVO> page(PageReqDTO<SysApiSecret> page);
void add(SysApiSecretAddDTO sysApiSecret);
void edit(SysApiSecretEditDTO sysApiSecret);
SysApiSecretVO view(String id);
}
package com.makeit.module.system.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.makeit.common.page.PageReqDTO;
import com.makeit.common.page.PageVO;
import com.makeit.enums.CodeMessageEnum;
import com.makeit.exception.BusinessException;
import com.makeit.module.system.dto.SysApiSecretAddDTO;
import com.makeit.module.system.dto.SysApiSecretEditDTO;
import com.makeit.module.system.entity.SysApiSecret;
import com.makeit.module.system.mapper.SysApiSecretMapper;
import com.makeit.module.system.service.SysApiSecretService;
import com.makeit.module.system.vo.SysApiSecretVO;
import com.makeit.utils.data.convert.BeanDtoVoUtils;
import com.makeit.utils.data.convert.PageUtil;
import lombok.SneakyThrows;
import org.apache.commons.codec.binary.Base64;
import org.apache.commons.lang3.StringUtils;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.security.KeyPair;
import java.security.KeyPairGenerator;
import java.util.List;
@Service
public class SysApiSecretServiceImpl extends ServiceImpl<SysApiSecretMapper, SysApiSecret> implements SysApiSecretService {
@Override
public PageVO<SysApiSecretVO> page(PageReqDTO<SysApiSecret> page) {
SysApiSecret sysApiSecret = page.getData();
Page<SysApiSecret> p = PageUtil.toMpPage(page);
Page<SysApiSecret> voPage = page(p, listLambdaQueryWrapper(sysApiSecret));
List<SysApiSecret> voList = voPage.getRecords();
List<SysApiSecretVO> list = BeanDtoVoUtils.listVo(voList, SysApiSecretVO.class);
return PageUtil.toPageVO(list, voPage);
}
private LambdaQueryWrapper<SysApiSecret> listLambdaQueryWrapper(SysApiSecret sysApiSecret) {
return new LambdaQueryWrapper<SysApiSecret>()
.like(StringUtils.isNotBlank(sysApiSecret.getPlatform()), SysApiSecret::getPlatform, sysApiSecret.getPlatform())
.like(StringUtils.isNotBlank(sysApiSecret.getOrgId()), SysApiSecret::getOrgId, sysApiSecret.getOrgId())
.like(StringUtils.isNotBlank(sysApiSecret.getDescription()), SysApiSecret::getDescription, sysApiSecret.getDescription());
}
@SneakyThrows
@Transactional
@Override
public void add(SysApiSecretAddDTO sysApiSecretAddDTO) {
checkCode(null, sysApiSecretAddDTO.getPlatform());
SysApiSecret sysApiSecret = BeanDtoVoUtils.convert(sysApiSecretAddDTO, SysApiSecret.class);
KeyPairGenerator keyPairGenerator = KeyPairGenerator.getInstance("RSA");
keyPairGenerator.initialize(2048);
KeyPair keyPair = keyPairGenerator.generateKeyPair();
String publicKey = Base64.encodeBase64URLSafeString(keyPair.getPublic().getEncoded());
String privateKey = Base64.encodeBase64URLSafeString(keyPair.getPrivate().getEncoded());
sysApiSecret.setPublicKey(publicKey);
sysApiSecret.setPrivateKey(privateKey);
save(sysApiSecret);
}
private void checkCode(String id, String code) {
SysApiSecret exist = getOne(new QueryWrapper<SysApiSecret>().lambda()
.eq(SysApiSecret::getPlatform, code).last("limit 1"));
if (exist == null) {
return;
}
if (!exist.getId().equals(id)) {
throw new BusinessException(CodeMessageEnum.SYSTEM_ERROR_CODE_DUPLICATE);
}
}
@Transactional
@Override
public void edit(SysApiSecretEditDTO sysApiSecretEditDTO) {
checkCode(sysApiSecretEditDTO.getId(), sysApiSecretEditDTO.getPlatform());
SysApiSecret sysApiSecret = BeanDtoVoUtils.convert(sysApiSecretEditDTO, SysApiSecret.class);
updateById(sysApiSecret);
}
@Override
public SysApiSecretVO view(String id) {
SysApiSecret sysApiSecret = getById(id);
return BeanDtoVoUtils.convert(sysApiSecret, SysApiSecretVO.class);
}
}
package com.makeit.module.system.vo;
import com.makeit.common.dto.BaseIdDTO;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@ApiModel("第三方平台api信息VO")
@Data
public class SysApiSecretVO extends BaseIdDTO {
@ApiModelProperty("平台编码")
private String platform;
@ApiModelProperty("公钥")
private String publicKey;
@ApiModelProperty("机构id")
private String orgId;
@ApiModelProperty("描述")
private String description;
}
package com.makeit.dto.platform.elder.es;
import lombok.Data;
import java.time.LocalDateTime;
/**
* 长者每日呼吸数据
*/
@Data
public class PlatElderBreatheHeartRateDTO {
/**
* 主键ID
*/
private String id;
/**
* 租户ID
*/
private String tenantId;
/**
* 创建时间
*/
private LocalDateTime createDate;
/**
* 长者id
*/
private String elderId;
/**
* 上报时间
*/
private Long reportTime;
/**
* 心率
*/
private Integer heartRate;
/**
* 呼吸率
*/
private Integer respiratoryRate;
/**
* 体动值
*/
private Integer bodyMove;
/**
* 设备Id
*/
private String deviceId;
/**
* iot设备Id
*/
private String iotDeviceId;
}
......@@ -101,7 +101,7 @@ public class FallAlarm implements IAlarm {
// 跌倒了设备需要发送告警到第三方平台
PlatTenant platTenant = platTenantService.getById(platDevice.getTenantId());
if (platTenant != null) {
if (platTenant != null && StringUtils.isNotBlank(platTenant.getCode())) {
if (isSupportAlarm(platTenant, platDevice)) {
OpenApiBaseStrategy strategyFactoryHandler = openApiBaseStrategyFactory.getHandler(platTenant.getCode());
if (strategyFactoryHandler != null) {
......
package com.makeit.service.platform.elder.impl;
import cn.hutool.core.util.IdUtil;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.google.common.collect.Lists;
import com.makeit.dto.platform.elder.es.PlatElderBreatheHeartRateDTO;
import com.makeit.entity.platform.device.PlatDevice;
import com.makeit.entity.platform.elder.PlatElder;
import com.makeit.entity.platform.elder.PlatElderBreatheHeartRateRecord;
......@@ -17,9 +20,16 @@ import com.makeit.utils.data.convert.StreamUtil;
import com.makeit.utils.time.LocalDateTimeUtils;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
import org.elasticsearch.action.bulk.BulkRequest;
import org.elasticsearch.action.bulk.BulkResponse;
import org.elasticsearch.action.index.IndexRequest;
import org.elasticsearch.client.RequestOptions;
import org.elasticsearch.client.RestHighLevelClient;
import org.elasticsearch.common.xcontent.XContentType;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.io.IOException;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.util.List;
......@@ -33,6 +43,8 @@ public class PlatElderBreatheHeartRateRecordServiceImpl extends ServiceImpl<Plat
private PlatElderRealTimeService platElderRealTimeService;
@Autowired
private IotProductDeviceService iotProductDeviceService;
@Autowired
private RestHighLevelClient restHighLevelClient;
@Override
public void breatheHeartRateRecordTask() {
......@@ -46,28 +58,38 @@ public class PlatElderBreatheHeartRateRecordServiceImpl extends ServiceImpl<Plat
if (CollectionUtils.isEmpty(elderList)) {
return;
}
List<PlatElderBreatheHeartRateRecord> list = Lists.newArrayList();
for (PlatElder e : elderList) {
PlatDevice platDevice = platElderRealTimeService.getBreathDevice(e.getId(), null);
if (platDevice == null) {
continue;
}
BulkRequest request = new BulkRequest();
request.timeout("600s");
List<DeviceInfoContentBreathe> breatheList = iotProductDeviceService.getDeviceLogByTimeRangeBreathe(platDevice.getOriDeviceId(), 2 * 24 * 3600, start, end);
List<PlatElderBreatheHeartRateRecord> data = StreamUtil.map(breatheList, b -> {
PlatElderBreatheHeartRateRecord record = new PlatElderBreatheHeartRateRecord();
for (DeviceInfoContentBreathe breathe : breatheList) {
PlatElderBreatheHeartRateDTO record = new PlatElderBreatheHeartRateDTO();
record.setElderId(e.getId());
record.setReportTime(b.getTimestamp());
record.setHeartRate(b.getProperties().getHr());
record.setRespiratoryRate(b.getProperties().getBr());
record.setBodyMove(b.getProperties().getBodymove());
record.setReportTime(breathe.getTimestamp());
record.setHeartRate(breathe.getProperties().getHr());
record.setRespiratoryRate(breathe.getProperties().getBr());
record.setBodyMove(breathe.getProperties().getBodymove());
record.setDeviceId(platDevice.getId());
record.setIotDeviceId(platDevice.getOriDeviceId());
record.setTenantId(e.getTenantId());
return record;
});
list.addAll(data);
record.setCreateDate(LocalDateTime.now());
request.add(new IndexRequest("plat_elder_breathe_heart_rate").id(IdUtil.fastUUID()).type("_doc").source(JSONObject.toJSONString(record), XContentType.JSON));
}
if (CollectionUtils.isNotEmpty(breatheList)) {
try {
BulkResponse response = restHighLevelClient.bulk(request, RequestOptions.DEFAULT);
if (response.hasFailures()) {
log.error("es保存长者每日呼吸数据失败");
}
} catch (IOException exception) {
log.error("es保存长者每日呼吸数据失败:{}", exception);
}
}
}
saveBatch(list);
}
@Override
......
......@@ -2,9 +2,7 @@ package com.makeit.service.platform.elder.impl;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.util.StrUtil;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.google.common.collect.Lists;
......@@ -36,10 +34,22 @@ import com.makeit.utils.time.LocalDateTimeUtils;
import com.makeit.vo.platform.elder.realtime.PlatElderCoordinateVO;
import com.makeit.vo.platform.elder.realtime.PlatElderRealTimeHeartRespiratoryVO;
import com.makeit.vo.platform.elder.report.day.*;
import org.springframework.beans.BeanUtils;
import org.apache.commons.collections4.MapUtils;
import org.elasticsearch.action.search.ClearScrollRequest;
import org.elasticsearch.action.search.SearchRequest;
import org.elasticsearch.action.search.SearchResponse;
import org.elasticsearch.action.search.SearchScrollRequest;
import org.elasticsearch.client.RequestOptions;
import org.elasticsearch.client.RestHighLevelClient;
import org.elasticsearch.common.unit.TimeValue;
import org.elasticsearch.index.query.BoolQueryBuilder;
import org.elasticsearch.index.query.QueryBuilders;
import org.elasticsearch.search.SearchHit;
import org.elasticsearch.search.builder.SearchSourceBuilder;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.io.IOException;
import java.math.BigDecimal;
import java.time.Duration;
import java.time.LocalDate;
......@@ -47,10 +57,7 @@ import java.time.LocalDateTime;
import java.time.ZoneOffset;
import java.time.format.DateTimeFormatter;
import java.util.*;
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.atomic.AtomicReference;
import java.util.function.Function;
import java.util.function.Predicate;
import java.util.stream.Collectors;
@Service
......@@ -86,6 +93,8 @@ public class PlatElderDayReportDayServiceImpl implements PlatElderDayReportDaySe
private PlatElderBreatheHeartRateRecordService platElderBreatheHeartRateRecordService;
@Autowired
private SaasSleepEvaluateStandardReportService saasSleepEvaluateStandardReportService;
@Autowired
private RestHighLevelClient restHighLevelClient;
private static LocalDateTime dayStartNow(LocalDate now) {
return LocalDateTimeUtils.getDayStart(now);
......@@ -359,18 +368,62 @@ public class PlatElderDayReportDayServiceImpl implements PlatElderDayReportDaySe
long reportTimeStart = LocalDateTimeUtils.getMilliSecond(start);
long reportTimeEnd = LocalDateTimeUtils.getMilliSecond(end);
List<PlatElderBreatheHeartRateRecord> list = platElderBreatheHeartRateRecordService
.list(platElderIdDTO.getElderId(), platElderIdDTO.getDeviceId(), platElderIdDTO.getTenantId(), reportTimeStart, reportTimeEnd);
return StreamUtil.map(list, e -> {
PlatElderRealTimeHeartRespiratoryVO vo = new PlatElderRealTimeHeartRespiratoryVO();
vo.setTime(LongTimestampUtil.toLocalDateTime(e.getReportTime()));
vo.setHeartRate(e.getHeartRate());
vo.setRespiratoryRate(e.getRespiratoryRate());
int size = 1000;
long scrollTime = 1L;
SearchRequest request = new SearchRequest();
request.indices("plat_elder_breathe_heart_rate");
request.types("_doc");
SearchSourceBuilder builder = new SearchSourceBuilder();
builder.size(size);
BoolQueryBuilder boolQueryBuilder = QueryBuilders.boolQuery();
if (StringUtils.isNotBlank(platElderIdDTO.getElderId())) {
boolQueryBuilder.must(QueryBuilders.matchQuery("elderId", platElderIdDTO.getElderId()));
}
if (StringUtils.isNotBlank(platElderIdDTO.getTenantId())) {
boolQueryBuilder.must(QueryBuilders.matchQuery("tenantId", platElderIdDTO.getTenantId()));
}
if (StringUtils.isNotBlank(platElderIdDTO.getDeviceId())) {
boolQueryBuilder.must(QueryBuilders.matchQuery("iotDeviceId", platElderIdDTO.getDeviceId()));
}
boolQueryBuilder.must(QueryBuilders.rangeQuery("reportTime").gte(reportTimeStart).lte(reportTimeEnd));
builder.query(boolQueryBuilder);
builder.sort("reportTime");
request.scroll(TimeValue.timeValueMinutes(scrollTime));
request.source(builder);
SearchResponse response;
List<PlatElderRealTimeHeartRespiratoryVO> list = Lists.newArrayList();
try {
response = restHighLevelClient.search(request, RequestOptions.DEFAULT);
SearchHit[] results = response.getHits().getHits();
String scrollId = response.getScrollId();
add(list, results);
while (results != null && results.length > 0) {
SearchScrollRequest scrollRequest = new SearchScrollRequest(scrollId);
scrollRequest.scroll(TimeValue.timeValueMinutes(scrollTime));
response = restHighLevelClient.scroll(scrollRequest, RequestOptions.DEFAULT);
scrollId = response.getScrollId();
results = response.getHits().getHits();
add(list, results);
}
ClearScrollRequest clearScrollRequest = new ClearScrollRequest();
clearScrollRequest.addScrollId(scrollId);
return vo;
});
restHighLevelClient.clearScroll(clearScrollRequest, RequestOptions.DEFAULT);
} catch (IOException e) {
e.printStackTrace();
}
return list;
}
private void add(List<PlatElderRealTimeHeartRespiratoryVO> list, SearchHit[] results) {
for (SearchHit result : results) {
Map<String, Object> sourceAsMap = result.getSourceAsMap();
PlatElderRealTimeHeartRespiratoryVO heartRespiratoryVO = new PlatElderRealTimeHeartRespiratoryVO();
heartRespiratoryVO.setTime(LongTimestampUtil.toLocalDateTime(MapUtils.getLong(sourceAsMap, "reportTime")));
heartRespiratoryVO.setHeartRate(MapUtils.getInteger(sourceAsMap, "heartRate"));
heartRespiratoryVO.setRespiratoryRate(MapUtils.getInteger(sourceAsMap, "respiratoryRate"));
list.add(heartRespiratoryVO);
}
}
@Override
......
......@@ -57,18 +57,18 @@ public class DeviceCacheUtil implements ApplicationRunner {
}
public PlatDevice get(String oriDeviceIdAndIotOrgId) {
PlatDevice platDevice = RedisUtil.get(RedisConst.PLAT_IOT_DEVICE_PREFIX + oriDeviceIdAndIotOrgId);
if(platDevice==null){
getAll();
}
// PlatDevice platDevice = RedisUtil.get(RedisConst.PLAT_IOT_DEVICE_PREFIX + oriDeviceIdAndIotOrgId);
// if(platDevice==null){
// getAll();
// }
return RedisUtil.get(RedisConst.PLAT_IOT_DEVICE_PREFIX + oriDeviceIdAndIotOrgId);
}
public List<PlatDevice> getByDeviceId(String oriDeviceId) {
List<PlatDevice> platDevice = RedisUtil.getLike(RedisConst.PLAT_IOT_DEVICE_PREFIX + oriDeviceId);
if (CollUtil.isEmpty(platDevice)) {
getAll();
}
// List<PlatDevice> platDevice = RedisUtil.getLike(RedisConst.PLAT_IOT_DEVICE_PREFIX + oriDeviceId);
// if (CollUtil.isEmpty(platDevice)) {
// getAll();
// }
return RedisUtil.getLike(RedisConst.PLAT_IOT_DEVICE_PREFIX + oriDeviceId);
}
......
package com.makeit.mqtt;
import com.makeit.module.iot.service.IotTokenService;
import cn.hutool.core.util.IdUtil;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.context.properties.ConfigurationProperties;
......@@ -18,8 +18,6 @@ public class MqttConfig {
@Autowired
private MqttPushClient mqttPushClient;
@Autowired
private IotTokenService iotTokenService;
@Autowired
private StringRedisTemplate redisTemplate;
public static final String DEVICE_BR_ANALYSIS = "device:brhr:analysis:";
......@@ -56,7 +54,7 @@ public class MqttConfig {
if (!msgSwitch) {
return null;
}
clientId = StringUtils.isNotEmpty(clientId) ? clientId : iotTokenService.getIotToken();
clientId = StringUtils.isNotEmpty(clientId) ? clientId : IdUtil.fastUUID();
mqttPushClient.connect(hostUrl, clientId, username, password, timeout, keepalive);
// 订阅主题
mqttPushClient.subscribe(defaultTopic, 0);
......
......@@ -36,13 +36,14 @@ import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.StringRedisTemplate;
import org.springframework.scheduling.annotation.Async;
import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;
import org.springframework.stereotype.Component;
import javax.annotation.Resource;
import java.math.BigDecimal;
import java.util.List;
import java.util.Objects;
import java.util.concurrent.CompletableFuture;
import java.util.concurrent.TimeUnit;
......@@ -96,6 +97,8 @@ public class PushCallback implements MqttCallbackExtended {
private OpenApiBaseStrategyFactory openApiBaseStrategyFactory;
@Autowired
private PlatTenantService platTenantService;
@Autowired
private ThreadPoolTaskExecutor taskExecutor;
@Override
public void connectionLost(Throwable cause) {
......@@ -103,7 +106,6 @@ public class PushCallback implements MqttCallbackExtended {
}
@Override
@Async
public void messageArrived(String topic, MqttMessage message) {
try {
// 收到消息并设置返回字符串格式
......@@ -120,9 +122,11 @@ public class PushCallback implements MqttCallbackExtended {
return;
}
syncProperties(device);
CompletableFuture.runAsync(() -> {
checkAlarm(device);
}, taskExecutor);
checkAlarm(device);
syncProperties(device);
} catch (Exception e) {
logger.error("消息接收处理异常", e);
}
......@@ -167,8 +171,10 @@ public class PushCallback implements MqttCallbackExtended {
if (!"0".equals(success)) {
return;
}
platDeviceService.syncIotProperties(device.getDeviceId(), properties);
RedisUtil.delete(redisKey);
CompletableFuture.runAsync(() -> {
platDeviceService.syncIotProperties(device.getDeviceId(), properties);
RedisUtil.delete(redisKey);
}, taskExecutor);
}
}
......@@ -323,7 +329,7 @@ public class PushCallback implements MqttCallbackExtended {
redisTemplate.delete(OPEN_API_KEY_COUNT + deviceId + ":" + iot_tenantId);
PlatTenant platTenant = platTenantService.getOne(new QueryWrapper<PlatTenant>()
.lambda().eq(PlatTenant::getIotOrgId,iot_tenantId));
if (platTenant != null) {
if (platTenant != null && StringUtils.isNotBlank(platTenant.getCode())) {
OpenApiBaseStrategy strategyFactoryHandler = openApiBaseStrategyFactory.getHandler(platTenant.getCode());
if (strategyFactoryHandler != null) {
try {
......
......@@ -5,6 +5,7 @@ server:
charset: UTF-8
force: true
enabled: true
shutdown: graceful
spring:
application:
......@@ -60,7 +61,7 @@ sign:
# - auth/checkCode
mybatis-plus:
configuration:
log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
log-impl: org.apache.ibatis.logging.nologging.NoLoggingImpl
file:
......@@ -119,9 +120,9 @@ iot:
mqtt:
username: admin|1693982115969
password: 8e3795ef7b5e95869fa8c323b865b3a9
hostUrl: tcp://124.71.33.17:11883
hostUrl: tcp://124.71.33.17:3883
clientId:
defaultTopic: /device/*/*/**
defaultTopic: $share/ks//push_data
timeout: 10
keepalive: 60
msgSwitch: false
......
......@@ -5,6 +5,7 @@ server:
charset: UTF-8
force: true
enabled: true
shutdown: graceful
spring:
application:
......@@ -117,9 +118,9 @@ iot:
mqtt:
username: admin|1693982115969
password: 8e3795ef7b5e95869fa8c323b865b3a9
hostUrl: tcp://124.71.33.17:11883
hostUrl: tcp://124.71.33.17:3883
clientId:
defaultTopic: /device/*/*/**
defaultTopic: $share/ks//push_data
timeout: 10
keepalive: 60
msgSwitch: true
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or sign in to comment