Commit eac35281 by lzy

Merge branch 'dev' of git.xmmakeit.com:huangjiay/iot-platform-server into dev

parents 81c4bf51 de040ee3
Showing with 517 additions and 56 deletions
...@@ -416,21 +416,23 @@ CREATE TABLE `alarm_config` ( ...@@ -416,21 +416,23 @@ CREATE TABLE `alarm_config` (
) ENGINE = INNODB DEFAULT CHARSET = utf8mb4 COMMENT = '告警配置'; ) ENGINE = INNODB DEFAULT CHARSET = utf8mb4 COMMENT = '告警配置';
CREATE TABLE `alarm_record` ( CREATE TABLE `plat_alarm_record` (
`id` VARCHAR ( 64 ) NOT NULL COMMENT 'id', `id` VARCHAR ( 64 ) NOT NULL COMMENT 'id',
`alarm_id` VARCHAR ( 64 ) DEFAULT NULL COMMENT '关联告警配置', `alarm_id` VARCHAR ( 64 ) DEFAULT NULL COMMENT '关联告警配置',
`alarm_date` datetime DEFAULT NULL COMMENT '告警时间', `alarm_date` datetime DEFAULT NULL COMMENT '告警时间',
`status` TINYINT ( 1 ) DEFAULT NULL COMMENT '状态 1 待处理 2 已处理', `status` char ( 1 ) DEFAULT NULL COMMENT '状态 0 待处理 1 已处理',
`notice_status` char ( 1 ) DEFAULT NULL COMMENT '通知家属状态 0 未通知 1 已通知',
`content` varchar(128) NOT NULL COMMENT '告警内容',
`deal_user` VARCHAR ( 64 ) DEFAULT NULL COMMENT '处理人', `deal_user` VARCHAR ( 64 ) DEFAULT NULL COMMENT '处理人',
`deal_time` VARCHAR ( 64 ) DEFAULT NULL COMMENT '处理时间', `deal_date` datetime DEFAULT NULL COMMENT '处理时间',
`create_by` VARCHAR ( 64 ) DEFAULT NULL COMMENT '创建者', `create_by` VARCHAR ( 64 ) DEFAULT NULL COMMENT '创建者',
`create_date` datetime DEFAULT NULL COMMENT '创建时间', `create_date` datetime DEFAULT NULL COMMENT '创建时间',
`update_by` VARCHAR ( 64 ) DEFAULT NULL COMMENT '更新者', `update_by` VARCHAR ( 64 ) DEFAULT NULL COMMENT '更新者',
`update_date` datetime DEFAULT NULL COMMENT '更新时间', `update_date` datetime DEFAULT NULL COMMENT '更新时间',
`del_flag` INT ( 1 ) DEFAULT '0' COMMENT '删除标记', `del_flag` char ( 1 ) DEFAULT '0' COMMENT '删除标记',
`tenant_id` varchar(64) COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT ' 租户id ', `tenant_id` varchar(64) COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT ' 租户id ',
PRIMARY KEY ( `id` ) USING BTREE PRIMARY KEY ( `id` ) USING BTREE
) ENGINE = INNODB DEFAULT CHARSET = utf8mb4 COMMENT = '告警配置'; ) ENGINE = INNODB DEFAULT CHARSET = utf8mb4 COMMENT = '告警记录';
CREATE TABLE `plafform_setting` ( CREATE TABLE `plafform_setting` (
......
CREATE TABLE `saas_model_manage` (
`id` varchar(64) NOT NULL COMMENT 'id',
`name` varchar(64) DEFAULT NULL COMMENT '模型名称',
`remark` varchar(128) DEFAULT NULL COMMENT '说明',
`model_id` varchar(64) DEFAULT NULL COMMENT '模型id',
`model_type` 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` char(1) NOT NULL COMMENT ' 删除标志 0否 1是 ',
`tenant_id` varchar(64) DEFAULT NULL COMMENT ' 租户id ',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='模型管理';
CREATE TABLE `saas_report_manage` (
`id` varchar(64) NOT NULL COMMENT 'id',
`name` varchar(64) DEFAULT NULL COMMENT '报告名称',
`remark` varchar(128) DEFAULT NULL COMMENT '说明',
`report_id` varchar(64) DEFAULT NULL COMMENT '报告id',
`report_type` 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` char(1) NOT NULL COMMENT ' 删除标志 0否 1是 ',
`tenant_id` varchar(64) DEFAULT NULL COMMENT ' 租户id ',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='报告管理';
CREATE TABLE `saas_sleep_analysis_model` (
`id` varchar(64) NOT NULL COMMENT 'id',
`action_comparison` varchar(256) DEFAULT NULL COMMENT '体动次数',
`action_threshold` varchar(32) DEFAULT '1' COMMENT '体动阈值记录 默认 1',
`turned_comparison` varchar(256) DEFAULT NULL COMMENT '翻身次数',
`turned_threshold` varchar(32) DEFAULT '1' COMMENT '翻身次数阈值 默认1',
`breathe_threshold_min` varchar(32) DEFAULT NULL COMMENT '呼吸率阈值 起始',
`breathe_threshold_max` varchar(32) DEFAULT NULL COMMENT '呼吸率阈值 结束',
`breathe_duration` varchar(32) DEFAULT NULL COMMENT '呼吸持续时间',
`heart_threshold_min` varchar(32) DEFAULT NULL COMMENT '心率阈值 起始',
`heart_threshold_max` varchar(32) DEFAULT NULL COMMENT '心率阈值 结束',
`heart_duration` varchar(32) DEFAULT NULL COMMENT '心率阈值持续时间',
`riseLeave_comparison` varchar(64) DEFAULT NULL COMMENT '起床时间:人离床条件',
`rise_leave_threshold` varchar(32) DEFAULT NULL COMMENT '起床时间 人离床(小时)',
`riseAction_comparison` varchar(64) DEFAULT NULL COMMENT '起床时间 每分钟大于30秒体动值条件',
`rise_action_threshold` varchar(32) DEFAULT NULL COMMENT '起床时间 每分钟大于30秒体动值',
`rise_action_duration` varchar(32) DEFAULT NULL COMMENT '起床时间 每分钟大于30秒体动值 持续时间',
`rise_repeat_threshold` varchar(32) DEFAULT NULL COMMENT '起床时间 多久(小时)内无再次入睡',
`sleep_time_action_comparison` varchar(64) DEFAULT NULL COMMENT '入睡时间:体动值条件',
`sleep_time_action_threshold` varchar(32) DEFAULT NULL COMMENT '入睡时间:体动值',
`sleep_time_action_duration` varchar(32) DEFAULT NULL COMMENT '入睡时间:体动值 持续时间',
`awake_comparison` varchar(64) DEFAULT NULL COMMENT '每分钟体动值条件',
`awake_threshold` varchar(32) DEFAULT NULL COMMENT '每分钟体动值',
`nap_comparison` varchar(32) DEFAULT NULL COMMENT '深度睡眠和浅度睡眠条件',
`nap_threshold` varchar(32) DEFAULT NULL COMMENT '深度睡眠和浅度睡眠(小时)',
`nap_duration` varchar(32) DEFAULT NULL COMMENT '深度睡眠和浅度睡眠 持续时间',
`sleep_comparison` varchar(64) DEFAULT NULL COMMENT '深度睡眠和浅度睡眠条件',
`sleep_threshold` varchar(32) DEFAULT NULL COMMENT '深度睡眠和浅度睡眠 (小时)',
`sleep_deep_action_time_begin` varchar(32) DEFAULT NULL COMMENT '深度睡眠:体动和翻身次数每X(分钟)',
`sleep_deep_action_comparison` varchar(64) DEFAULT NULL COMMENT '深度睡眠:体动和翻身次数每X(分钟)条件',
`sleep_deep_action_threshold` varchar(32) DEFAULT NULL COMMENT '深度睡眠:在(分钟内)体动和翻身次数',
`sleep_deep_breathe_min` varchar(32) DEFAULT NULL COMMENT '深度睡眠:呼吸率 起始值',
`sleep_deep_breathe_max` varchar(32) DEFAULT NULL COMMENT '深度睡眠:呼吸率 最大值',
`sleep_moderate_action_time_begin` varchar(32) DEFAULT NULL COMMENT '中度睡眠: 体动和翻身次数每X(分钟)',
`sleep_moderate_action_comparison` varchar(64) DEFAULT NULL COMMENT '中度睡眠: 体动和翻身次数每X(分钟)条件',
`sleep_moderate_action_threshold` varchar(32) DEFAULT NULL COMMENT '中度睡眠: 体动和翻身次数每X(分钟)次数',
`create_date` datetime DEFAULT NULL COMMENT '创建时间',
`update_date` datetime DEFAULT 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='睡眠质量分析模型';
CREATE TABLE `saas_disease_model` (
`id` varchar(64) NOT NULL COMMENT 'id',
`apnea_time` varchar(32) DEFAULT NULL COMMENT '呼吸暂停 X(小时)呼吸暂停',
`apnea_comparison` varchar(64) DEFAULT NULL COMMENT '呼吸暂停 X(小时)呼吸暂停条件',
`apnea_threshold` varchar(32) DEFAULT NULL COMMENT '呼吸暂停 X(小时)呼吸暂停多少X(次数)',
`tachypnea_time` varchar(32) DEFAULT NULL COMMENT '呼吸过速 X(小时)呼吸过速',
`tachypnea_comparison` varchar(64) DEFAULT NULL COMMENT '呼吸过速 X(小时)呼吸过速条件',
`tachypnea_threshold` varchar(32) DEFAULT NULL COMMENT '呼吸过速 X(小时)呼吸过速X(次数)',
`bradypnea_time` varchar(32) DEFAULT NULL COMMENT '呼吸过缓 X(小时)呼吸过缓',
`bradypnea_comparison` varchar(64) DEFAULT NULL COMMENT '呼吸过缓 X(小时)呼吸过缓条件',
`bradypnea_threshold` varchar(32) DEFAULT NULL COMMENT '呼吸过缓 X(小时)呼吸过缓X(次数)',
`bradycardia_time` varchar(32) DEFAULT NULL COMMENT '心率过缓 X(小时)心率过缓',
`bradycardia_comparison` varchar(32) DEFAULT NULL COMMENT '心率过缓 X(小时)心率过缓条件',
`bradycardia_threshold` varchar(32) DEFAULT NULL COMMENT '心率过缓 X(小时)心率过缓X(次数)',
`tachycardia_time` varchar(32) DEFAULT NULL COMMENT '心率过速 X(小时)心率过速',
`tachycardia_comparison` varchar(32) DEFAULT NULL COMMENT '心率过速 X(小时)心率过速条件',
`tachycardia_threshold` varchar(32) DEFAULT NULL COMMENT '心率过速 X(小时)心率过速X(次数)',
`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 ',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='呼吸心率慢性病模型';
CREATE TABLE `saas_sleep_evaluate_report` (
`id` varchar(64) NOT NULL COMMENT 'id',
`result_content` text COMMENT '评估结果 json字符串 {"number:"1",socreRange:"","result":"",evaluate:"""}',
`create_date` datetime DEFAULT NULL COMMENT '创建时间',
`update_date` datetime DEFAULT 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='睡眠质量分析模型评估结果';
CREATE TABLE `saas_sleep_evaluate_standard_report` (
`id` varchar(64) NOT NULL COMMENT 'id',
`sleep_deep_config` varchar(1024) DEFAULT NULL COMMENT '深度睡眠评估标准 json数组 [{hour:"",score:""},{}]',
`sleep_lightness_config` varchar(1024) DEFAULT NULL COMMENT '浅度睡眠评估标准 json字符串',
`sober_config` varchar(1024) DEFAULT NULL COMMENT '清醒评估标准 json字符串',
`sleep_time` varchar(1024) DEFAULT NULL COMMENT '睡眠时长 json字符串',
`create_date` datetime DEFAULT NULL COMMENT '创建时间',
`update_date` datetime DEFAULT 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='睡眠质量分析模型评估标准';
CREATE TABLE `saas_disease_evaluate_report` (
`id` varchar(64) NOT NULL COMMENT 'id',
`result_content` text COMMENT '评估内容 json字符串 {"number:"1",condtion:"","score":"",evaluate:"""}',
`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 ',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='呼吸心率慢性病模型评估结果';
\ No newline at end of file
...@@ -133,20 +133,21 @@ CREATE TABLE `saas_operation_log` ( ...@@ -133,20 +133,21 @@ CREATE TABLE `saas_operation_log` (
CREATE TABLE `plat_tenant` ( CREATE TABLE `plat_tenant` (
`id` varchar(64) NOT NULL COLLATE utf8mb4_general_ci COMMENT 'id', `id` varchar(64) NOT NULL COMMENT 'id',
`name` varchar(128) DEFAULT NULL COMMENT '名称', `name` varchar(128) DEFAULT NULL COMMENT '名称',
`status` varchar(10) NOT NULL COMMENT '状态 0停用 1启用', `status` varchar(10) NOT NULL COMMENT '状态 0停用 1启用',
`start_time` datetime NOT NULL COMMENT '租户有效期-开始时间', `start_time` datetime NOT NULL COMMENT '租户有效期-开始时间',
`end_time` datetime NOT NULL COMMENT '租户有效期-结束时间', `end_time` datetime NOT NULL COMMENT '租户有效期-结束时间',
`plat_user_id` varchar(64) NOT NULL COMMENT '租户管理员id', `plat_user_id` varchar(64) NOT NULL COMMENT '租户管理员id',
`menu_list` varchar(600) DEFAULT NULL COMMENT '菜单id列表 以逗号分隔', `menu_list` varchar(600) DEFAULT NULL COMMENT '菜单id列表 以逗号分隔',
`alert_channel` varchar(32) DEFAULT NULL COMMENT '告警渠道 1-短信 2-邮件 3-语音短信 4-云龄工单 5-晶奇工单', `alert_channel` varchar(32) DEFAULT NULL COMMENT '告警渠道 1-短信 2-邮件 3-语音短信 4-云龄工单 5-晶奇工单',
`create_date` datetime NOT NULL COMMENT '创建时间', `create_date` datetime NOT NULL COMMENT '创建时间',
`update_date` datetime NOT NULL COMMENT '更新时间', `update_date` datetime NOT NULL COMMENT '更新时间',
`del_flag` CHAR(1) DEFAULT NULL COMMENT '删除标识', `del_flag` char(1) DEFAULT NULL COMMENT '删除标识',
`create_by` varchar(64) NOT NULL COMMENT '创建人', `create_by` varchar(64) NOT NULL COMMENT '创建人',
`update_by` varchar(64) NOT NULL COMMENT '更新人', `update_by` varchar(64) NOT NULL COMMENT '更新人',
PRIMARY KEY (`id`) `iot_org_id` varchar(64) DEFAULT NULL COMMENT 'iot组织id',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 STATS_AUTO_RECALC=0 ROW_FORMAT=COMPACT COMMENT='租户管理'; ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 STATS_AUTO_RECALC=0 ROW_FORMAT=COMPACT COMMENT='租户管理';
CREATE TABLE `plat_tenant_menu` ( CREATE TABLE `plat_tenant_menu` (
......
package com.makeit.controller.saas;
import com.makeit.common.dto.BaseIdDTO;
import com.makeit.common.response.ApiResponseEntity;
import com.makeit.common.response.ApiResponseUtils;
import com.makeit.global.annotation.Action;
import com.makeit.module.admin.dto.saas.SaasMenuDTOVO;
import com.makeit.module.admin.dto.saas.SaasMenuQueryDTO;
import com.makeit.service.saas.SaasMenuService;
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;
import java.util.List;
/**
* <p>
* 平台端菜单 前端控制器
* </p>
*
* @author eugene young
* @since 2022-05-10
*/
@Api(tags = "saas端-菜单")
@RestController
@RequestMapping("/saas/menu")
public class SaasMenuController {
@Autowired
private SaasMenuService platMenuService;
@Action(module = "saas端-菜单", name = "列表", code = "plat:menu:list")
@ApiOperation("列表")
@PostMapping("list")
public ApiResponseEntity<List<SaasMenuDTOVO>> list(@RequestBody SaasMenuQueryDTO dto) {
return ApiResponseUtils.success(platMenuService.list(dto));
}
@Action(module = "saas端-菜单", name = "树形列表", code = "plat:menu:tree")
@ApiOperation("树形列表")
@PostMapping("tree")
public ApiResponseEntity<List<SaasMenuDTOVO>> tree(@RequestBody SaasMenuQueryDTO dto) {
return ApiResponseUtils.success(platMenuService.tree(dto));
}
@ApiOperation("列表(AuthIgnore)")
@PostMapping("listAuthIgnore")
public ApiResponseEntity<List<SaasMenuDTOVO>> listAuthIgnore(@RequestBody SaasMenuQueryDTO dto) {
return ApiResponseUtils.success(platMenuService.list(dto));
}
@ApiOperation("树形列表(AuthIgnore)")
@PostMapping("treeAuthIgnore")
public ApiResponseEntity<List<SaasMenuDTOVO>> treeAuthIgnore(@RequestBody SaasMenuQueryDTO dto) {
return ApiResponseUtils.success(platMenuService.tree(dto));
}
@Action(module = "saas端-菜单", name = "新增", code = "plat:menu:add")
@ApiOperation("新增")
@PostMapping("add")
public ApiResponseEntity<?> add(@Validated @RequestBody SaasMenuDTOVO dto) {
platMenuService.add(dto);
return ApiResponseUtils.success();
}
@Action(module = "saas端-菜单", name = "编辑", code = "plat:menu:edit")
@ApiOperation("编辑")
@PostMapping("edit")
public ApiResponseEntity<?> edit(@Validated @RequestBody SaasMenuDTOVO dto) {
platMenuService.edit(dto);
return ApiResponseUtils.success();
}
//@Action(module = "saas端-菜单", name = "详情", code = "plat:menu:view")
@ApiOperation("详情")
@PostMapping("view")
public ApiResponseEntity<SaasMenuDTOVO> view(@RequestBody BaseIdDTO dto) {
return ApiResponseUtils.success(platMenuService.view(dto.getId()));
}
@Action(module = "saas端-菜单", name = "删除", code = "plat:menu:del")
@ApiOperation("删除")
@PostMapping("del")
public ApiResponseEntity<?> del(@RequestBody BaseIdDTO dto) {
platMenuService.del(dto.getId());
return ApiResponseUtils.success();
}
@ApiOperation("同步")
@PostMapping("sync")
public ApiResponseEntity<?> sync() {
platMenuService.sync();
return ApiResponseUtils.success();
}
}
...@@ -53,4 +53,6 @@ public class PlatUserLoginVO implements Serializable { ...@@ -53,4 +53,6 @@ public class PlatUserLoginVO implements Serializable {
@ApiModelProperty("企微菜单列表") @ApiModelProperty("企微菜单列表")
private List<String> wechatMenuCodeList; private List<String> wechatMenuCodeList;
private String userType = "plat";
} }
...@@ -36,4 +36,6 @@ public class SaasUserLoginVO implements Serializable { ...@@ -36,4 +36,6 @@ public class SaasUserLoginVO implements Serializable {
@ApiModelProperty("按钮列表") @ApiModelProperty("按钮列表")
private List<SaasMenuDTOVO> buttonList; private List<SaasMenuDTOVO> buttonList;
private String userType = "saas";
} }
...@@ -37,7 +37,9 @@ public class DeviceInstanceEntity { ...@@ -37,7 +37,9 @@ public class DeviceInstanceEntity {
@Schema( @Schema(
description = "状态(只读)" description = "状态(只读) notActive(\"禁用\"),\n" +
" offline(\"离线\"),\n" +
" online(\"在线\"); "
, accessMode = Schema.AccessMode.READ_ONLY , accessMode = Schema.AccessMode.READ_ONLY
, defaultValue = "notActive" , defaultValue = "notActive"
) )
......
package com.makeit.task;
import com.makeit.module.iot.service.IotOrgService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
@Component
@Slf4j
public class IotSyncTask {
@Autowired
private IotOrgService iotOrgService;
@Scheduled(cron = "0 */1 * * * ?")
public void syncEquipmentInfo() {
log.info("开始执行同步设备信息接口");
log.info("结束执行同步设备信息接口");
}
@Scheduled(cron = "0 0/1 * * * ?")
public void syncDeviceLog() {
log.info("开始同步设备日志");
log.info("同步设备日志结束");
}
}
...@@ -7,7 +7,7 @@ import com.makeit.common.response.ApiResponseEntity; ...@@ -7,7 +7,7 @@ import com.makeit.common.response.ApiResponseEntity;
import com.makeit.common.response.ApiResponseUtils; import com.makeit.common.response.ApiResponseUtils;
import com.makeit.dto.platform.alarm.PlatAlarmConfigDTOVO; import com.makeit.dto.platform.alarm.PlatAlarmConfigDTOVO;
import com.makeit.dto.platform.alarm.PlatAlarmConfigQueryDTO; import com.makeit.dto.platform.alarm.PlatAlarmConfigQueryDTO;
import com.makeit.server.platform.alarm.PlatAlarmConfigService; import com.makeit.service.platform.alarm.PlatAlarmConfigService;
import com.makeit.vo.platform.alarm.PlatAlarmConfigListVO; import com.makeit.vo.platform.alarm.PlatAlarmConfigListVO;
import io.swagger.annotations.Api; import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiOperation;
......
package com.makeit.entity.platform.alarm;
import com.baomidou.mybatisplus.annotation.TableName;
import com.makeit.common.entity.BaseBusEntity;
import lombok.Data;
import java.util.Date;
/**
* 告警记录
* @TableName plat_alarm_record
*/
@TableName(value ="plat_alarm_record")
@Data
public class PlatAlarmRecord extends BaseBusEntity {
/**
* 关联告警配置
*/
private String alarmId;
/**
* 告警时间
*/
private Date alarmDate;
/**
* 状态 0 待处理 1 已处理
*/
private String status;
/**
* 通知家属状态 0 未通知 1 已通知
*/
private String noticeStatus;
/**
* 告警内容
*/
private String content;
/**
* 处理人
*/
private String dealUser;
/**
* 处理时间
*/
private Date dealDate;
}
...@@ -49,5 +49,10 @@ public class PlatTenant extends BaseEntity { ...@@ -49,5 +49,10 @@ public class PlatTenant extends BaseEntity {
*/ */
private String alertChannel; private String alertChannel;
/**
* 新增租户时,会在iot创建一个组织
*/
private String iotOrgId;
} }
\ No newline at end of file
package com.makeit.mapper.platform.alarm;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.makeit.entity.platform.alarm.PlatAlarmRecord;
/**
* @author lixl
* @description 针对表【plat_alarm_record(告警记录)】的数据库操作Mapper
* @createDate 2023-09-06 14:26:05
* @Entity com.makeit.entity.platform.alarm.PlatAlarmRecord
*/
public interface PlatAlarmRecordMapper extends BaseMapper<PlatAlarmRecord> {
}
package com.makeit.server.platform.alarm; package com.makeit.service.platform.alarm;
import com.baomidou.mybatisplus.extension.service.IService; import com.baomidou.mybatisplus.extension.service.IService;
import com.makeit.common.dto.StatusDTO; import com.makeit.common.dto.StatusDTO;
......
package com.makeit.service.platform.alarm;
import com.baomidou.mybatisplus.extension.service.IService;
import com.makeit.entity.platform.alarm.PlatAlarmRecord;
/**
* @author lixl
* @description 针对表【plat_alarm_record(告警记录)】的数据库操作Service
* @createDate 2023-09-06 14:26:05
*/
public interface PlatAlarmRecordService extends IService<PlatAlarmRecord> {
}
package com.makeit.server.platform.alarm.impl; package com.makeit.service.platform.alarm.impl;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
...@@ -11,7 +11,7 @@ import com.makeit.enums.CodeMessageEnum; ...@@ -11,7 +11,7 @@ import com.makeit.enums.CodeMessageEnum;
import com.makeit.enums.CommonEnum; import com.makeit.enums.CommonEnum;
import com.makeit.exception.BusinessException; import com.makeit.exception.BusinessException;
import com.makeit.mapper.platform.alarm.PlatAlarmConfigMapper; import com.makeit.mapper.platform.alarm.PlatAlarmConfigMapper;
import com.makeit.server.platform.alarm.PlatAlarmConfigService; import com.makeit.service.platform.alarm.PlatAlarmConfigService;
import com.makeit.service.platform.auth.PlatUserService; import com.makeit.service.platform.auth.PlatUserService;
import com.makeit.utils.data.convert.BeanDtoVoUtils; import com.makeit.utils.data.convert.BeanDtoVoUtils;
import com.makeit.utils.data.convert.StreamUtil; import com.makeit.utils.data.convert.StreamUtil;
......
package com.makeit.service.platform.alarm.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.makeit.entity.platform.alarm.PlatAlarmRecord;
import com.makeit.mapper.platform.alarm.PlatAlarmRecordMapper;
import com.makeit.service.platform.alarm.PlatAlarmRecordService;
import org.springframework.stereotype.Service;
/**
* @author lixl
* @description 针对表【plat_alarm_record(告警记录)】的数据库操作Service实现
* @createDate 2023-09-06 14:26:05
*/
@Service
public class PlatAlarmRecordServiceImpl extends ServiceImpl<PlatAlarmRecordMapper, PlatAlarmRecord>
implements PlatAlarmRecordService{
}
...@@ -22,6 +22,8 @@ import com.makeit.module.admin.dto.plat.PlatTenantDTOVO; ...@@ -22,6 +22,8 @@ import com.makeit.module.admin.dto.plat.PlatTenantDTOVO;
import com.makeit.module.admin.dto.plat.PlatTenantMenuDTO; import com.makeit.module.admin.dto.plat.PlatTenantMenuDTO;
import com.makeit.module.admin.dto.plat.PlatTenantStatusDTO; import com.makeit.module.admin.dto.plat.PlatTenantStatusDTO;
import com.makeit.module.admin.vo.plat.PlatTenantVO; import com.makeit.module.admin.vo.plat.PlatTenantVO;
import com.makeit.module.iot.service.IotOrgService;
import com.makeit.module.iot.vo.OrganizationEntity;
import com.makeit.module.system.service.SysConfigService; import com.makeit.module.system.service.SysConfigService;
import com.makeit.service.platform.auth.PlatOrgService; import com.makeit.service.platform.auth.PlatOrgService;
import com.makeit.service.platform.auth.PlatUserService; import com.makeit.service.platform.auth.PlatUserService;
...@@ -75,6 +77,9 @@ implements PlatTenantService { ...@@ -75,6 +77,9 @@ implements PlatTenantService {
@Autowired @Autowired
private PlatOrgService platOrgService; private PlatOrgService platOrgService;
@Autowired
private IotOrgService iotOrgService;
private LambdaQueryWrapper<PlatTenant> listLambdaQueryWrapper(PlatTenantVO dto, boolean userAccountLike) { private LambdaQueryWrapper<PlatTenant> listLambdaQueryWrapper(PlatTenantVO dto, boolean userAccountLike) {
List<String> tenantUserIdList = new ArrayList<>(10); List<String> tenantUserIdList = new ArrayList<>(10);
...@@ -192,6 +197,13 @@ implements PlatTenantService { ...@@ -192,6 +197,13 @@ implements PlatTenantService {
checkName(dto); checkName(dto);
checkDate(dto); checkDate(dto);
PlatTenant tntTenant = BeanDtoVoUtils.convert(dto, PlatTenant.class); PlatTenant tntTenant = BeanDtoVoUtils.convert(dto, PlatTenant.class);
//新租户同步到iot
PlatTenantVO platTenantVO = new PlatTenantVO();
platTenantVO.setName(dto.getName());
OrganizationEntity organizationEntity = iotOrgService.syncTenantInfoToIot(platTenantVO);
tntTenant.setIotOrgId(organizationEntity.getId());
save(tntTenant); save(tntTenant);
dto.setId(tntTenant.getId()); dto.setId(tntTenant.getId());
......
package com.makeit.task;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.makeit.common.entity.BaseBusEntity;
import com.makeit.common.entity.BaseEntity;
import com.makeit.entity.platform.device.PlatDevice;
import com.makeit.entity.saas.PlatTenant;
import com.makeit.enums.CommonEnum;
import com.makeit.global.aspect.tenant.TenantIdIgnore;
import com.makeit.module.iot.service.IotOrgService;
import com.makeit.module.iot.vo.DeviceInstanceEntity;
import com.makeit.service.platform.device.PlatDeviceService;
import com.makeit.service.saas.PlatTenantService;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
import java.time.LocalDateTime;
import java.time.ZoneOffset;
import java.util.Collection;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.stream.Collectors;
@Component
@Slf4j
public class IotSyncTask {
@Autowired
private IotOrgService iotOrgService;
@Autowired
private PlatTenantService platTenantService;
@Autowired
private PlatDeviceService platDeviceService;
/**
* 一小时同步一次
* 启用状态的租户才同步
* 新增和更新平台端设备表
*/
@Scheduled(cron = "0 0 */1 * * ?")
// @Scheduled(cron = "0 */1 * * * ?")
@TenantIdIgnore
public void syncEquipmentInfo() {
log.info("开始执行同步设备信息接口");
LambdaQueryWrapper<PlatTenant> tenantLambdaQueryWrapper = new LambdaQueryWrapper<PlatTenant>().eq(PlatTenant::getStatus, CommonEnum.YES.getValue());
List<PlatTenant> platTenants = platTenantService.list(tenantLambdaQueryWrapper);
for (PlatTenant platTenant : platTenants) {
String iotOrgId = platTenant.getIotOrgId();
if(StringUtils.isBlank(iotOrgId)){
continue;
}
//查询iot设备
List<DeviceInstanceEntity> iotDeviceList = iotOrgService.getOrgDevice(iotOrgId);
if(CollectionUtils.isEmpty(iotDeviceList)){
continue;
}
//查询平台设备
Set<String> iotDeviceIdSet = iotDeviceList.stream().map(DeviceInstanceEntity::getId).collect(Collectors.toSet());
LambdaQueryWrapper<PlatDevice> deviceLambdaQueryWrapper = new LambdaQueryWrapper<PlatDevice>().eq(BaseBusEntity::getTenantId, platTenant.getId())
.in(BaseEntity::getId, iotDeviceIdSet);
List<PlatDevice> deviceList = platDeviceService.list(deviceLambdaQueryWrapper);
//更新平台设备
Collection<PlatDevice> platDevices = convertToPlatDevice(iotDeviceList, deviceList,platTenant.getId());
platDeviceService.saveOrUpdateBatch(platDevices);
}
log.info("结束执行同步设备信息接口");
}
@Scheduled(cron = "0 0/1 * * * ?")
public void syncDeviceLog() {
log.info("开始同步设备日志");
log.info("同步设备日志结束");
}
private Collection<PlatDevice> convertToPlatDevice(List<DeviceInstanceEntity> iotDeviceList, List<PlatDevice> deviceList,String tenantId){
Map<String, PlatDevice> deviceMap = deviceList.stream().collect(Collectors.toMap(PlatDevice::getOriDeviceId, v -> v, (a, b) -> a));
iotDeviceList.forEach(iotDevice->{
PlatDevice platDevice = deviceMap.get(iotDevice.getId());
if(platDevice==null){
platDevice=new PlatDevice();
platDevice.setTenantId(tenantId);
}
platDevice.setOriDeviceId(iotDevice.getId());
platDevice.setName(iotDevice.getName());
platDevice.setProductName(iotDevice.getProductName());
platDevice.setProductId(iotDevice.getProductId());
LocalDateTime registryTime = LocalDateTime.ofEpochSecond(iotDevice.getRegistryTime()/1000, 0, ZoneOffset.ofHours(8));
platDevice.setRegistrationDate(registryTime);
platDevice.setDescription(iotDevice.getDescribe());
String state = iotDevice.getState();
platDevice.setStatus(StringUtils.equals("online",state)?CommonEnum.YES.getValue() : CommonEnum.NO.getValue());
// platDevice.setFirmwareVersion();
// platDevice.setLastOnlineData();
// platDevice.setOrgId();
// platDevice.setCityOrgId();
// platDevice.setDistrictOrgId();
// platDevice.setStreetOrgId();
// platDevice.setOrgPath();
// platDevice.setId();
// platDevice.setCreateDate();
// platDevice.setUpdateDate();
// platDevice.setDelFlag();
// platDevice.setCreateBy();
// platDevice.setUpdateBy();
deviceMap.put(iotDevice.getId(),platDevice);
});
return deviceMap.values();
}
}
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