Commit 1795325c by 朱淼
parents f218126d bb0a7541
Showing with 1275 additions and 139 deletions
......@@ -45,6 +45,8 @@ CREATE TABLE `plat_elder`
org_path varchar(64) NULL COMMENT '组织路径',
`remark` varchar(1024) DEFAULT NULL COMMENT '备注',
avatar varchar(64) NULL COMMENT '头像文件id',
check_in_time datetime DEFAULT NULL COMMENT '入住时间',
check_out_time datetime DEFAULT NULL COMMENT '退住时间',
`create_by` varchar(64) DEFAULT NULL COMMENT '创建者',
`create_date` datetime DEFAULT NULL COMMENT '创建时间',
`update_by` varchar(64) DEFAULT NULL COMMENT '更新者',
......@@ -244,7 +246,7 @@ CREATE TABLE `plat_device`
registration_date datetime NOT NULL COMMENT '注册时间',
last_online_data datetime NOT NULL COMMENT '最后上线时间',
description VARCHAR(1024) DEFAULT NULL COMMENT '说明',
status varchar(36) DEFAULT NULL COMMENT '状态 DeviceState',
status varchar(36) DEFAULT NULL COMMENT '状态 DeviceState',
org_id varchar(64) NULL COMMENT '组织id',
city_org_id varchar(64) NULL COMMENT '城市组织id',
district_org_id varchar(64) NULL COMMENT '区组织id',
......@@ -285,3 +287,39 @@ CREATE TABLE `plat_device_other`
DEFAULT CHARSET = utf8mb4 COMMENT ='设备其他信息';
CREATE TABLE `plat_elder_sleep` (
`id` VARCHAR ( 64 ) NOT NULL COMMENT 'id',
`elder_id` VARCHAR ( 64 ) NOT NULL COMMENT '长者id',
`start_sleep` datetime DEFAULT NULL COMMENT '入睡时间',
`end_sleep` datetime DEFAULT NULL COMMENT '起床时间',
`current_date` VARCHAR ( 64 ) DEFAULT NULL COMMENT '当前日期 yyyy-mm-dd',
`sleep_record` text DEFAULT NULL COMMENT '睡眠记录 区分时间段记录 [{"sleepType":"","startTime":"","endTime":""},{}]',
`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 '更新人',
`tenant_id` VARCHAR ( 64 ) DEFAULT NULL COMMENT '租户id',
PRIMARY KEY ( `id` ),
KEY `index_elder_id` (`elder_id`) USING BTREE
) ENGINE = INNODB DEFAULT CHARSET = utf8mb4 ROW_FORMAT = COMPACT COMMENT = '长者每天睡觉记录';
CREATE TABLE `plat_elder_sleep_analysis` (
`id` VARCHAR ( 64 ) NOT NULL COMMENT 'id',
`elder_id` VARCHAR ( 64 ) NOT NULL COMMENT '长者id',
`sleep_score` VARCHAR ( 64 ) DEFAULT NULL COMMENT '睡眠评分',
`sleep_result` VARCHAR ( 64 ) DEFAULT NULL COMMENT '睡眠结果',
`sleep_time` VARCHAR ( 64 ) DEFAULT NULL COMMENT '睡眠时长',
`rest_time` VARCHAR ( 64 ) DEFAULT NULL COMMENT '休息时长',
`sleep_evaluate` VARCHAR ( 64 ) DEFAULT NULL COMMENT '评价',
`current_date` VARCHAR ( 64 ) DEFAULT NULL COMMENT '当前日期 yyyy-mm-dd',
`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 '更新人',
`tenant_id` VARCHAR ( 64 ) DEFAULT NULL COMMENT '租户id',
PRIMARY KEY ( `id` ),
KEY `index_elder_id` (`elder_id`) USING BTREE
) ENGINE = INNODB DEFAULT CHARSET = utf8mb4 ROW_FORMAT = COMPACT COMMENT = '长者每天睡觉分析';
......@@ -26,17 +26,19 @@ CREATE TABLE `plat_user` (
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=COMPACT COMMENT='租户账号管理';
CREATE TABLE `plat_role` (
`id` varchar(64) NOT NULL COLLATE utf8mb4_general_ci COMMENT 'id',
`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 '更新人',
`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='租户端角色';
......
......@@ -29,6 +29,9 @@ VALUES ('203', 'alarm.notifyWay', '告警配置通知对象', '2022-05-16 17:08:
INSERT INTO sys_dictionary_category (id, code, name, create_date, update_date, del_flag)
VALUES ('300', 'device.status', '设备状态', '2022-05-16 17:08:33', '2022-05-16 17:08:37', '0');
INSERT INTO sys_dictionary_category (id, code, name, create_date, update_date, del_flag)
VALUES ('1000', 'device.breathe.personState', '呼吸心率运动状态', '2022-05-16 17:08:33', '2022-05-16 17:08:37', '0');
INSERT INTO sys_dictionary (id, code, name, value, sort, description, category_id, create_date, update_date, del_flag)
VALUES ('1', 'common.status.yes', '是', '1', 1, '', '2', '2022-05-16 17:13:23', '2022-05-16 17:13:27', '0');
......@@ -109,6 +112,18 @@ VALUES ('300', 'device.status.online', '在线', '1', 1, '', '300', '2022-05-16
INSERT INTO sys_dictionary (id, code, name, value, sort, description, category_id, create_date, update_date, del_flag)
VALUES ('400', 'device.status.offline', '离线', '0', 0, '', '300', '2022-05-16 17:13:23', '2022-05-16 17:13:27', '0');
INSERT INTO sys_dictionary (id, code, name, value, sort, description, category_id, create_date, update_date, del_flag)
VALUES ('1000', 'device.breathe.personState.nobody', '无人', '0', 0, '', '1000', '2022-05-16 17:13:23', '2022-05-16 17:13:27', '0');
INSERT INTO sys_dictionary (id, code, name, value, sort, description, category_id, create_date, update_date, del_flag)
VALUES ('1001', 'device.breathe.personState.exercise', '运动', '1', 1, '', '1000', '2022-05-16 17:13:23', '2022-05-16 17:13:27', '0');
INSERT INTO sys_dictionary (id, code, name, value, sort, description, category_id, create_date, update_date, del_flag)
VALUES ('1002', 'device.breathe.personState.breathe', '呼吸', '2', 2, '', '1000', '2022-05-16 17:13:23', '2022-05-16 17:13:27', '0');
INSERT INTO sys_dictionary (id, code, name, value, sort, description, category_id, create_date, update_date, del_flag)
VALUES ('1003', 'device.breathe.personState.enter', '进入呼吸', '3', 3, '', '1000', '2022-05-16 17:13:23', '2022-05-16 17:13:27', '0');
INSERT INTO sys_config_category (id, tenant_id, code, name, create_date, update_date, del_flag, create_by, update_by, eng_name) VALUES ('1', '0', 'elder.certificateType', '长者证件类型', '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 ('2', '0', 'elder.blood', '长者血型', '2023-07-11 10:55:06', '2023-07-11 10:55:08', '0', null, null, null);
......
......@@ -29,7 +29,7 @@ import org.springframework.web.bind.annotation.RestController;
*/
@RestController
@RequestMapping("/saas/diseaseEvaluateReport")
@Api(tags = "saas端-报告管理")
@Api(tags = "saas端-报告管理-呼吸心率慢性病模型评估结果")
public class SaasDiseaseEvaluateReportController {
......
......@@ -27,7 +27,7 @@ import org.springframework.web.bind.annotation.RestController;
*/
@RestController
@RequestMapping("/saas/diseaseModel")
@Api(tags = "saas端-模型管理")
@Api(tags = "saas端-模型管理-呼吸心率慢性病模型")
public class SaasDiseaseModelController {
......
......@@ -27,7 +27,7 @@ import org.springframework.web.bind.annotation.RestController;
*/
@RestController
@RequestMapping("/saas/elderReportConfig")
@Api(tags = "saas端-报告管理")
@Api(tags = "saas端-报告管理-长者报告配置")
public class SaasElderReportConfigController {
@Autowired
private SaasElderReportConfigService saasElderReportConfigService;
......
package com.makeit.controller.analysis;
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.entity.saas.analysis.SaasModelManage;
import com.makeit.global.annotation.Action;
import com.makeit.module.admin.vo.plat.PlatTenantVO;
import com.makeit.service.saas.SaasModelManageService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
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;
......@@ -29,7 +25,7 @@ import java.util.List;
*/
@RestController
@RequestMapping("/saas/modelManage")
@Api(tags = "saas端-报告管理")
@Api(tags = "saas端-模型管理")
public class SaasModelManageController {
@Autowired
......@@ -39,7 +35,7 @@ public class SaasModelManageController {
@Action(module = "数据分析-模型管理", name = "分页列表", code = "saas:modelManage:page")
@ApiOperation("分页列表")
@PostMapping("list")
public ApiResponseEntity<List<SaasModelManage>> list(){
public ApiResponseEntity<List<SaasModelManage>> list() {
return ApiResponseUtils.success(saasModelManageService.list());
}
}
......
......@@ -28,7 +28,7 @@ import org.springframework.web.bind.annotation.RestController;
*/
@RestController
@RequestMapping("/saas/sleepAnalysisModel")
@Api(tags = "saas端-模型管理")
@Api(tags = "saas端-模型管理-睡眠质量分析模型")
public class SaasSleepAnalysisModelController {
@Autowired
......
......@@ -27,7 +27,7 @@ import org.springframework.web.bind.annotation.RestController;
*/
@RestController
@RequestMapping("/saas/sleepEvaluateReport")
@Api(tags = "saas端-报告管理")
@Api(tags = "saas端-报告管理-睡眠质量分析模型评估结果")
public class SaasSleepEvaluateReportController {
......
package com.makeit.controller.analysis;
import com.alibaba.fastjson.JSON;
import com.makeit.common.dto.BaseIdDTO;
import com.makeit.common.response.ApiResponseEntity;
import com.makeit.common.response.ApiResponseUtils;
......@@ -17,6 +18,9 @@ import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.HashMap;
import java.util.Map;
/**
* <p>
* 睡眠质量分析模型评估标准 前端控制器
......@@ -27,7 +31,7 @@ import org.springframework.web.bind.annotation.RestController;
*/
@RestController
@RequestMapping("/saas/sleepEvaluateStandardReport")
@Api(tags = "saas端-报告管理")
@Api(tags = "saas端-报告管理-睡眠质量分析模型评估标准")
public class SaasSleepEvaluateStandardReportController {
......@@ -50,6 +54,15 @@ public class SaasSleepEvaluateStandardReportController {
return ApiResponseUtils.success();
}
public static void main(String[] args) {
Map<String,Object> map = new HashMap<>();
map.put("sleepDeepConfig","[{\"number\":\"1\",\"socreRange\":\"10-20\",\"result\":\"一般\",\"evaluate\":\"一般\"},{\"number\":\"2\",\"socreRange\":\"20-100\",\"result\":\"优秀\",\"evaluate\":\"优秀\"}]");
String s = JSON.toJSONString(map);
System.out.println(s);
}
@Action(module = "报告管理-睡眠质量分析模型评估标准", name = "编辑", code = "saas:sleepEvaluateStandardReport:edit")
@ApiOperation("编辑")
@PostMapping("edit")
......
......@@ -8,6 +8,7 @@ import com.makeit.common.response.ApiResponseUtils;
import com.makeit.dto.platform.device.PlatDeviceDetailDTO;
import com.makeit.dto.platform.device.PlatDeviceEditDTO;
import com.makeit.entity.platform.device.PlatDevice;
import com.makeit.global.aspect.tenant.TenantIdIgnore;
import com.makeit.service.platform.device.PlatDeviceService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
......@@ -26,18 +27,21 @@ public class SaasDeviceController {
@ApiOperation("列表")
@PostMapping("page")
@TenantIdIgnore
public ApiResponseEntity<PageVO<PlatDevice>> page(@RequestBody PageReqDTO<PlatDevice> pageReqDTO) {
return ApiResponseUtils.success(platDeviceService.pageSaas(pageReqDTO));
}
@ApiOperation("设备信息")
@PostMapping("detail")
@TenantIdIgnore
public ApiResponseEntity<PlatDeviceDetailDTO> detail(@RequestBody BaseIdDTO baseIdDTO) {
return ApiResponseUtils.success(platDeviceService.getDetailDTO(baseIdDTO.getId()));
}
@ApiOperation("设备编辑")
@PostMapping("edit")
@TenantIdIgnore
public ApiResponseEntity<Void> edit(@RequestBody PlatDeviceEditDTO dto) {
platDeviceService.edit(dto);
return ApiResponseUtils.success();
......@@ -45,6 +49,7 @@ public class SaasDeviceController {
@ApiOperation("实时数据")
@PostMapping("realTimeDate")
@TenantIdIgnore
public ApiResponseEntity<PlatDevice> realTimeDate(@RequestBody PlatDevice platDevice) {
//todo
return null;
......@@ -52,6 +57,7 @@ public class SaasDeviceController {
@ApiOperation("数据分析")
@PostMapping("dataAnalysis")
@TenantIdIgnore
public ApiResponseEntity<PlatDevice> dataAnalysis(@RequestBody PlatDevice platDevice) {
//todo
return null;
......
package com.makeit.common.dto;
import lombok.Data;
@Data
public class BaseReportDTO {
private String hour;
private String score;
}
/*
* Copyright (c) 2011-2021, baomidou (jobob@qq.com).
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.makeit.common.typehandler;
import com.baomidou.mybatisplus.core.toolkit.Assert;
import com.baomidou.mybatisplus.extension.handlers.AbstractJsonTypeHandler;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.core.type.TypeReference;
import com.fasterxml.jackson.databind.ObjectMapper;
import lombok.extern.slf4j.Slf4j;
import org.apache.ibatis.type.JdbcType;
import org.apache.ibatis.type.MappedJdbcTypes;
import org.apache.ibatis.type.MappedTypes;
import java.io.IOException;
import java.util.List;
/**
* Jackson 实现 JSON 字段类型处理器
*
* @author hubin
* @since 2019-08-25
*/
@Slf4j
@MappedTypes({List.class})
@MappedJdbcTypes(JdbcType.VARCHAR)
public class ListStringJsonTypeHandler extends AbstractJsonTypeHandler<List> {
private static ObjectMapper OBJECT_MAPPER;
@Override
protected List parse(String json) {
try {
return getObjectMapper().readValue(json, new TypeReference<List>() {
});
} catch (IOException e) {
throw new RuntimeException(e);
}
}
@Override
protected String toJson(List obj) {
try {
return getObjectMapper().writeValueAsString(obj);
} catch (JsonProcessingException e) {
throw new RuntimeException(e);
}
}
public static ObjectMapper getObjectMapper() {
if (null == OBJECT_MAPPER) {
OBJECT_MAPPER = new ObjectMapper();
}
return OBJECT_MAPPER;
}
public static void setObjectMapper(ObjectMapper objectMapper) {
Assert.notNull(objectMapper, "ObjectMapper should not be null");
ListStringJsonTypeHandler.OBJECT_MAPPER = objectMapper;
}
}
......@@ -110,7 +110,7 @@ public class ModuleSwaggerApiListingReader implements ApiListingBuilderPlugin {
private Function<Api, Set<String>> tags(Class<?> clazz, List<SwaggerModuleConfig> configList) {
String moduleName = configList.stream().filter(e -> e.getPackageList().stream().anyMatch(ee -> clazz.getName().contains(ee))).map(SwaggerModuleConfig::getModuleName).findFirst().orElse("");
String moduleName = configList.stream().filter(e -> e.getPackageList().stream().anyMatch(ee -> clazz.getName().equals(ee))).map(SwaggerModuleConfig::getModuleName).findFirst().orElse("");
return input -> {
......
......@@ -75,7 +75,7 @@ public class ModuleSwaggerOperationTagsReader implements OperationBuilderPlugin
private Function<Api, Set<String>> tagsFromController(Class<?> clazz, List<SwaggerModuleConfig> configList) {
String moduleName = configList.stream().filter(e -> e.getPackageList().stream().anyMatch(ee -> clazz.getName().contains(ee))).map(SwaggerModuleConfig::getModuleName).findFirst().orElse("");
String moduleName = configList.stream().filter(e -> e.getPackageList().stream().anyMatch(ee -> clazz.getName().equals(ee))).map(SwaggerModuleConfig::getModuleName).findFirst().orElse("");
return input -> {
......
......@@ -94,7 +94,7 @@ public class RedisConst {
public static final String ALARM_DEVICE_ID = "alarm:device:id:";
public static final String ALARM_CONFIG_ORG_ID = "alarm:config:org:id";
public static final String ALARM_CONFIG_ORG_ID = "alarm:config:org:id:";
public static final String PLAT_IOT_DEVICE_PREFIX = "plat:iot:device:";
......
......@@ -38,4 +38,10 @@ public class PlatRoleDTOVO extends BaseOrgDTO implements Serializable {
@ApiModelProperty(value = "菜单集合")
private List<PlatMenuDTOVO> menuList;
private String code;
private String remark;
private String status;
}
package com.makeit.module.iot.enums;
import com.makeit.enums.BaseEnum;
import com.makeit.utils.sys.SysDictUtil;
public class DeviceInfoContentBreatheEnum {
public enum PersonStateEnum implements BaseEnum {
NOBODY("device.breathe.personState.nobody"),//0
EXERCISE("device.breathe.personState.exercise"),//1
BREATHE("device.breathe.personState.breathe"),//2
ENTER("device.breathe.personState.enter");//3
private String code;
PersonStateEnum(String code) {
this.code = code;
}
public String getValue() {
return SysDictUtil.getValue(code);
}
}
}
......@@ -10,6 +10,8 @@ import com.makeit.module.iot.vo.DeviceInstanceEntity;
import com.makeit.module.iot.vo.DeviceOperationLogEntity;
import com.makeit.module.iot.vo.IotPagerResult;
import com.makeit.module.iot.vo.ResponseMessage;
import com.makeit.module.iot.vo.breathe.DeviceInfoContentBreathe;
import com.makeit.module.iot.vo.breathe.DeviceInfoContentSpace;
import com.makeit.utils.data.convert.JsonUtil;
import com.makeit.utils.old.StringUtils;
import lombok.extern.slf4j.Slf4j;
......@@ -17,6 +19,10 @@ import org.apache.commons.collections4.CollectionUtils;
import org.springframework.stereotype.Component;
import java.io.IOException;
import java.time.Duration;
import java.time.Instant;
import java.time.LocalDateTime;
import java.time.ZoneId;
import java.util.List;
/**
......@@ -57,6 +63,7 @@ public class IotProductDeviceService extends IotCommonService {
/**
* 获取最新一条设备日志
*
* @param deviceId
* @return
*/
......@@ -67,21 +74,56 @@ public class IotProductDeviceService extends IotCommonService {
/**
* 获取最新的一条设备属性上报的数据
* @param deviceId
* @param typeValue 类型
* 获取最新的一条设备属性上报的数据
*
* 可以传 :reportProperty
* @param deviceId
* @param typeValue 类型
* <p>
* 可以传 :reportProperty
* @return
*/
public DeviceOperationLogEntity getLastDeviceLogByType(String deviceId,String typeValue) {
public DeviceOperationLogEntity getLastDeviceLogByType(String deviceId, String typeValue) {
List<DeviceOperationLogEntity> deviceOperationLogEntities = getDeviceLog(deviceId, 1, typeValue);
return CollectionUtils.isNotEmpty(deviceOperationLogEntities) ? deviceOperationLogEntities.get(0) : null;
}
public DeviceInfoContentBreathe getLastDeviceLogBreathe(String deviceId, Integer ignoreDuration) {//秒
DeviceOperationLogEntity deviceOperationLogEntity = getLastDeviceLogByType(deviceId, "reportProperty");
if (deviceOperationLogEntity == null) {
return null;
}
DeviceInfoContentBreathe breathe = JsonUtil.toObj((String) deviceOperationLogEntity.getContent(), DeviceInfoContentBreathe.class);
LocalDateTime time = LocalDateTime.ofInstant(Instant.ofEpochMilli(breathe.getTimestamp()), ZoneId.systemDefault());
if (ignoreDuration != null && Duration.between(time, LocalDateTime.now()).getSeconds() > ignoreDuration) {
return null;
}
return breathe;
}
public DeviceInfoContentSpace getLastDeviceLogSpace(String deviceId, Integer ignoreDuration) {//秒
DeviceOperationLogEntity deviceOperationLogEntity = getLastDeviceLogByType(deviceId, "reportProperty");
if (deviceOperationLogEntity == null) {
return null;
}
DeviceInfoContentSpace space = JsonUtil.toObj((String) deviceOperationLogEntity.getContent(), DeviceInfoContentSpace.class);
LocalDateTime time = LocalDateTime.ofInstant(Instant.ofEpochMilli(space.getTimestamp()), ZoneId.systemDefault());
if (ignoreDuration != null && Duration.between(time, LocalDateTime.now()).getSeconds() > ignoreDuration) {
return null;
}
return space;
}
/**
*
* 根据类型查询设备日志
* 根据类型查询设备日志
* text: "事件上报", value: "event"}
* {text: "读取属性", value: "readProperty"}
* {text: "修改属性", value: "writeProperty"}
......@@ -124,8 +166,8 @@ public class IotProductDeviceService extends IotCommonService {
* @param typeValue
* @return
*/
public List<DeviceOperationLogEntity> getDeviceLogByType(String deviceId,String typeValue) {
return getDeviceLog(deviceId, 10,typeValue);
public List<DeviceOperationLogEntity> getDeviceLogByType(String deviceId, String typeValue) {
return getDeviceLog(deviceId, 10, typeValue);
}
......@@ -212,7 +254,4 @@ public class IotProductDeviceService extends IotCommonService {
}
}
package com.makeit.module.iot.vo.breathe;
import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.List;
@NoArgsConstructor
@Data
public class DeviceInfoContentBreathe {
@JsonProperty("headers")
private Headers headers;
@JsonProperty("messageType")
private String messageType;
@JsonProperty("deviceId")
private String deviceId;
@JsonProperty("properties")
private Properties properties;
@JsonProperty("timestamp")
private Long timestamp;
@NoArgsConstructor
@Data
public static class Headers {
@JsonProperty("bindings")
private List<Bindings> bindings;
@JsonProperty("deviceName")
private String deviceName;
@JsonProperty("productName")
private String productName;
@JsonProperty("productId")
private String productId;
@JsonProperty("_uid")
private String uid;
@JsonProperty("creatorId")
private String creatorId;
@JsonProperty("traceparent")
private String traceparent;
@NoArgsConstructor
@Data
public static class Bindings {
@JsonProperty("id")
private String id;
@JsonProperty("type")
private String type;
}
}
@NoArgsConstructor
@Data
public static class Properties {
@JsonProperty("br")
private Integer br;
@JsonProperty("distance")
private Integer distance;
@JsonProperty("bodymove")
private Integer bodymove;
@JsonProperty("personState")
private Integer personState;
@JsonProperty("person")
private Integer person;
@JsonProperty("hr")
private Integer hr;
@JsonProperty("point")
private List<Integer> point;
}
}
package com.makeit.module.iot.vo.breathe;
import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.Data;
import lombok.NoArgsConstructor;
@NoArgsConstructor
@Data
public class DeviceInfoContentSpace {
@JsonProperty("headers")
private DeviceInfoContentBreathe.Headers headers;
@JsonProperty("messageType")
private String messageType;
@JsonProperty("deviceId")
private String deviceId;
@JsonProperty("properties")
private Properties properties;
@JsonProperty("timestamp")
private Long timestamp;
@NoArgsConstructor
@Data
public static class Properties {
@JsonProperty("mode")
private Integer mode;
@JsonProperty("distance")
private Integer distance;
@JsonProperty("personState")
private Integer personState;
@JsonProperty("angle")
private Integer angle;
@JsonProperty("mount")
private Integer mount;
}
}
package com.makeit.module.iot.vo.breathe;
import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.Data;
import lombok.NoArgsConstructor;
@NoArgsConstructor
@Data
public class Test1 {
@JsonProperty("id")
private String id;
@JsonProperty("deviceId")
private String deviceId;
@JsonProperty("productId")
private Object productId;
@JsonProperty("type")
private String type;
@JsonProperty("createTime")
private Long createTime;
@JsonProperty("content")
private String content;
@JsonProperty("messageId")
private Object messageId;
@JsonProperty("orgId")
private Object orgId;
@JsonProperty("timestamp")
private Long timestamp;
}
//TODO ywc
//DeviceOperationLogEntity ==> DeviceInfo
\ No newline at end of file
......@@ -34,16 +34,16 @@ public class PlatUserUtil {
public static PlatUserVO getUserVO() {
PlatUserVO userVO = THREAD_LOCAL_USER.get();
if (userVO != null) {
return userVO;
}
//或者这里用策略模式
WechatUserInfo wechatUserInfo = WechatUserUtil.getUserVOCanNull();
if (wechatUserInfo != null) {
return BeanDtoVoUtils.convert(wechatUserInfo, PlatUserVO.class);
}
// PlatUserVO userVO = THREAD_LOCAL_USER.get();
// if (userVO != null) {
// return userVO;
// }
// //或者这里用策略模式
// WechatUserInfo wechatUserInfo = WechatUserUtil.getUserVOCanNull();
// if (wechatUserInfo != null) {
// return BeanDtoVoUtils.convert(wechatUserInfo, PlatUserVO.class);
// }
PlatUserLoginVO tntUserLoginVO = TokenUtil.getTntUserDetail();
if (tntUserLoginVO != null) {
......
......@@ -106,7 +106,7 @@ public class CodeGenerator {
// 使用重点 下列字段填写表名 运行方法
// strategy.setInclude("edu_teacher","..."); // 多表-逆向工程
strategy.setInclude("saas_model_manage","saas_report_manage");
strategy.setInclude("plat_elder_sleep","plat_elder_sleep_analysis");
strategy.setNaming(NamingStrategy.underline_to_camel);//数据库表映射到实体的命名策略
strategy.setTablePrefix(pc.getModuleName() + "_"); //生成实体属性时去掉表"_"前缀并且第一个字母大写 如:gmt_create -> gmtCreate
......
......@@ -41,7 +41,16 @@ public class SwaggerPlatformConfig {
SwaggerModuleConfig config = new SwaggerModuleConfig();
config.setPackageList(Arrays.asList("com.makeit.module.controller.wechat"));
config.setModuleName("微信端");
config.setModuleName("平台端小程序");
return config;
}
@Bean
public SwaggerModuleConfig childrenModule() {
SwaggerModuleConfig config = new SwaggerModuleConfig();
config.setPackageList(Arrays.asList("com.makeit.module.controller.children"));
config.setModuleName("子女端小程序");
return config;
}
......@@ -54,7 +63,7 @@ public class SwaggerPlatformConfig {
ApiSelectorBuilder builder = docket.select();
//api过滤
builder = builder.apis(
RequestHandlerSelectors.basePackage("com.makeit.module.controller")
RequestHandlerSelectors.basePackage("com.makeit.module.controller.wechat")
);
return builder.build();
}
......@@ -64,7 +73,7 @@ public class SwaggerPlatformConfig {
Docket docket = new Docket(DocumentationType.SWAGGER_2)
.apiInfo(apiInfo())
.groupName("04-微信端");
.groupName("04-平台端小程序");
ApiSelectorBuilder builder = docket.select();
//api过滤
builder = builder.apis(
......@@ -73,6 +82,20 @@ public class SwaggerPlatformConfig {
return builder.build();
}
@Bean
public Docket childrenApi() {
Docket docket = new Docket(DocumentationType.SWAGGER_2)
.apiInfo(apiInfo())
.groupName("04-子女端小程序");
ApiSelectorBuilder builder = docket.select();
//api过滤
builder = builder.apis(
RequestHandlerSelectors.basePackage("com.makeit.module.controller.children")
);
return builder.build();
}
private ApiInfo apiInfo() {
return new ApiInfoBuilder().title("IOT文档")
......
package com.makeit.module.controller.wechat.elder;
package com.makeit.module.controller.children.elder;
import com.makeit.common.dto.BaseIdDTO;
......@@ -25,10 +25,10 @@ import java.util.List;
* @author eugene young
* @since 2023-08-29
*/
@Api(tags = "长者基本信息-子女端小程序")
@Api(tags = "子女端小程序-长者基本信息")
@RestController
@RequestMapping("/children/elder")
public class PlatElderWechatController {
public class PlatElderChildrenController {
@Autowired
private PlatElderService platElderService;
......
package com.makeit.module.controller.wechat.elder;
package com.makeit.module.controller.children.elder;
import com.makeit.common.response.ApiResponseEntity;
......@@ -21,10 +21,10 @@ import org.springframework.web.bind.annotation.RestController;
* @author eugene young
* @since 2023-08-29
*/
@Api(tags = "长者子女账号-子女端小程序")
@Api(tags = "子女端小程序-长者子女账号")
@RestController
@RequestMapping("/children/elder/children-info")
public class PlatElderChildrenInfoWechatController {
public class PlatElderChildrenInfoChildrenController {
@Autowired
private PlatElderChildrenInfoService platElderChildrenInfoService;
......
package com.makeit.module.controller.wechat.elder;
package com.makeit.module.controller.children.elder;
import com.makeit.common.response.ApiResponseEntity;
import com.makeit.common.response.ApiResponseUtils;
......@@ -13,10 +13,10 @@ import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@Api(tags = "企微端-登录")
@Api(tags = "子女端小程序-登录")
@RestController
@RequestMapping("/children/login")
public class PlatElderChildrenInfoUserLoginWechatController {
public class PlatElderChildrenInfoUserLoginChildrenController {
@Autowired
private PlatElderChildrenInfoUserLoginWechatService platElderChildrenInfoUserLoginWechatService;
......
package com.makeit.module.controller.children.elder;
import com.makeit.common.response.ApiResponseEntity;
import com.makeit.common.response.ApiResponseUtils;
import com.makeit.dto.platform.elder.PlatElderIdDTO;
import com.makeit.service.platform.elder.PlatElderRealTimeService;
import com.makeit.vo.platform.elder.realtime.PlatElderCoordinateVO;
import com.makeit.vo.platform.elder.realtime.PlatElderRealTimeBodyVO;
import com.makeit.vo.platform.elder.realtime.PlatElderRealTimeHeartRespiratoryVO;
import com.makeit.vo.platform.elder.realtime.PlatElderRealTimeNowVO;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
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 2023-08-29
*/
@Api(tags = "子女端小程序-长者实时监测")
@RestController
@RequestMapping("/children/elder/realTime")
public class PlatElderRealTimeChildrenController {
@Autowired
private PlatElderRealTimeService platElderRealTimeService;
@ApiOperation("现在状态")
@PostMapping("nowStatus")
public ApiResponseEntity<PlatElderRealTimeNowVO> nowStatus(@RequestBody PlatElderIdDTO platElderIdDTO) {
return ApiResponseUtils.success(platElderRealTimeService.nowStatus(platElderIdDTO));
}
@ApiOperation("心率呼吸率")
@PostMapping("heartRespiratory")
public ApiResponseEntity<PlatElderRealTimeHeartRespiratoryVO> heartRespiratory(@RequestBody PlatElderIdDTO platElderIdDTO) {
return ApiResponseUtils.success(platElderRealTimeService.heartRespiratory(platElderIdDTO));
}
@ApiOperation("体动")
@PostMapping("body")
public ApiResponseEntity<PlatElderRealTimeBodyVO> body(@RequestBody PlatElderIdDTO platElderIdDTO) {
return ApiResponseUtils.success(platElderRealTimeService.body(platElderIdDTO));
}
@ApiOperation("坐标")
@PostMapping("coordinate")
public ApiResponseEntity<List<PlatElderCoordinateVO>> coordinate(@RequestBody PlatElderIdDTO platElderIdDTO) {
return ApiResponseUtils.success(platElderRealTimeService.coordinate(platElderIdDTO));
}
//TODO ywc 少一个坐标
}
package com.makeit.module.controller.children.org;
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.entity.platform.auth.PlatOrg;
import com.makeit.global.annotation.Action;
import com.makeit.service.platform.auth.PlatOrgService;
import com.makeit.vo.platform.auth.PlatOrgQueryDTO;
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;
@Api(tags = "子女端-组织")
@RestController
@RequestMapping("/children/plat/org")
public class PlatOrgChildrenController {
@Autowired
private PlatOrgService platOrgService;
@Action(module = "平台端-组织", name = "分页列表", code = "plat:org:page")
@ApiOperation("树形列表")
@PostMapping("page")
public ApiResponseEntity<PageVO<PlatOrg>> page(@RequestBody PageReqDTO<PlatOrgQueryDTO> pageReqDTO){
return ApiResponseUtils.success(platOrgService.page(pageReqDTO));
}
@Action(module = "平台端-组织", name = "不分页列表", code = "plat:org:list")
@ApiOperation("树形列表")
@PostMapping("list")
public ApiResponseEntity<List<PlatOrg>> list(@RequestBody PlatOrgQueryDTO platOrgQueryDTO){
return ApiResponseUtils.success(platOrgService.subOrgList(platOrgQueryDTO));
}
@Action(module = "平台端-组织", name = "新增", code = "plat:org:add")
@ApiOperation("新增")
@PostMapping("add")
public ApiResponseEntity<String> add(@Validated @RequestBody PlatOrg tntDept){
return ApiResponseUtils.success(platOrgService.add(tntDept));
}
@Action(module = "平台端-组织", name = "编辑", code = "plat:org:edit")
@ApiOperation("编辑")
@PostMapping("edit")
public ApiResponseEntity<Void> edit(@Validated @RequestBody PlatOrg tntDept){
platOrgService.edit(tntDept);
return ApiResponseUtils.success();
}
@Action(module = "平台端-组织", name = "详情", code = "plat:org:view")
@ApiOperation("详情")
@PostMapping("view")
public ApiResponseEntity<PlatOrg> view(@RequestBody BaseIdDTO baseIdDTO){
return ApiResponseUtils.success(platOrgService.view(baseIdDTO.getId()));
}
@Action(module = "平台端-组织", name = "删除", code = "plat:org:del")
@ApiOperation("删除")
@PostMapping("del")
public ApiResponseEntity<PlatOrg> del(@RequestBody BaseIdDTO baseIdDTO){
platOrgService.del(baseIdDTO.getId());
return ApiResponseUtils.success();
}
@ApiOperation("当前账号的权限级别树")
@PostMapping("belongToScopeTree")
public ApiResponseEntity<List<PlatOrg>> belongToScopeTree(@RequestBody PlatOrg param){
return ApiResponseUtils.success(platOrgService.belongToOrgTree(param));
}
@ApiOperation("启用|禁用")
@PostMapping("enable")
public ApiResponseEntity<Void> enable(@RequestBody PlatOrg param){
platOrgService.enable(param);
return ApiResponseUtils.success();
}
}
......@@ -2,17 +2,23 @@ package com.makeit.module.controller.elder;
import com.makeit.common.response.ApiResponseEntity;
import com.makeit.common.response.ApiResponseUtils;
import com.makeit.dto.platform.elder.PlatElderIdDTO;
import com.makeit.service.platform.elder.PlatElderRealTimeService;
import com.makeit.vo.platform.elder.realtime.PlatElderCoordinateVO;
import com.makeit.vo.platform.elder.realtime.PlatElderRealTimeBodyVO;
import com.makeit.vo.platform.elder.realtime.PlatElderRealTimeHeartRespiratoryVO;
import com.makeit.vo.platform.elder.realtime.PlatElderRealTimeNowVO;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
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>
* 长者基本信息 前端控制器
......@@ -26,24 +32,34 @@ import org.springframework.web.bind.annotation.RestController;
@RequestMapping("/plat/elder/realTime")
public class PlatElderRealTimeController {
@Autowired
private PlatElderRealTimeService platElderRealTimeService;
@ApiOperation("现在状态")
@PostMapping("nowStatus")
public ApiResponseEntity<PlatElderRealTimeNowVO> nowStatus(@RequestBody PlatElderIdDTO platElderIdDTO) {
return null;
return ApiResponseUtils.success(platElderRealTimeService.nowStatus(platElderIdDTO));
}
@ApiOperation("心率呼吸率")
@PostMapping("heartRespiratory")
public ApiResponseEntity<PlatElderRealTimeHeartRespiratoryVO> heartRespiratory(@RequestBody PlatElderIdDTO platElderIdDTO) {
return null;
return ApiResponseUtils.success(platElderRealTimeService.heartRespiratory(platElderIdDTO));
}
@ApiOperation("体动")
@PostMapping("body")
public ApiResponseEntity<PlatElderRealTimeBodyVO> body(@RequestBody PlatElderIdDTO platElderIdDTO) {
return null;
return ApiResponseUtils.success(platElderRealTimeService.body(platElderIdDTO));
}
@ApiOperation("坐标")
@PostMapping("coordinate")
public ApiResponseEntity<List<PlatElderCoordinateVO>> coordinate(@RequestBody PlatElderIdDTO platElderIdDTO) {
return ApiResponseUtils.success(platElderRealTimeService.coordinate(platElderIdDTO));
}
//TODO ywc 少一个坐标
}
......
......@@ -3,6 +3,7 @@ package com.makeit.module.controller.elder;
import com.makeit.common.response.ApiResponseEntity;
import com.makeit.dto.platform.elder.PlatElderIdDTO;
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 io.swagger.annotations.Api;
......@@ -59,7 +60,7 @@ public class PlatElderReportDayController {
@ApiOperation("心率呼吸率")
@PostMapping("heartRespiratory")
public ApiResponseEntity<PlatElderRealTimeHeartRespiratoryVO> heartRespiratory(@RequestBody PlatElderIdDTO platElderIdDTO) {
public ApiResponseEntity<List<PlatElderRealTimeHeartRespiratoryVO>> heartRespiratory(@RequestBody PlatElderIdDTO platElderIdDTO) {
return null;
}
......
......@@ -3,7 +3,7 @@ package com.makeit.module.controller.elder;
import com.makeit.common.response.ApiResponseEntity;
import com.makeit.dto.platform.elder.PlatElderIdDTO;
import com.makeit.vo.platform.elder.realtime.PlatElderRealTimeHeartRespiratoryVO;
import com.makeit.vo.platform.elder.realtime.PlatElderCoordinateVO;
import com.makeit.vo.platform.elder.report.week.PlatElderComprehensiveEvaluationVO;
import com.makeit.vo.platform.elder.report.day.*;
import com.makeit.vo.platform.elder.report.week.PlatElderRealTimeHeartRespiratoryWeekVO;
......
......@@ -8,7 +8,7 @@ import com.makeit.common.response.ApiResponseEntity;
import com.makeit.common.response.ApiResponseUtils;
import com.makeit.dto.platform.alarm.PlatAlarmRecordQueryDTO;
import com.makeit.service.platform.alarm.PlatAlarmRecordService;
import com.makeit.utils.user.wechat.WechatUserUtil;
import com.makeit.utils.user.common.CommonUserUtil;
import com.makeit.vo.platform.alarm.PlatAlarmRecordVO;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
......@@ -18,7 +18,7 @@ import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@Api(tags = "小程序-告警记录")
@Api(tags = "平台端小程序-告警记录")
@RestController
@RequestMapping("/wechat/plat/alarm-record")
public class PlatAlarmRecordWechatController {
......@@ -30,7 +30,7 @@ public class PlatAlarmRecordWechatController {
@PostMapping("page")
public ApiResponseEntity<PageVO<PlatAlarmRecordVO>> page(@RequestBody PageReqDTO<PlatAlarmRecordQueryDTO> dto) {
//小程序告警记录只看到发给自己的告警
String userId = WechatUserUtil.getUserId();
String userId = CommonUserUtil.getUserId();
PlatAlarmRecordQueryDTO data = dto.getData();
data.setNotifyUser(userId);
return ApiResponseUtils.success(platAlarmRecordService.page(dto));
......
......@@ -29,7 +29,7 @@ import org.springframework.web.bind.annotation.RestController;
* @author eugene young
* @since 2023-09-05
*/
@Api(tags = "设备-小程序")
@Api(tags = "平台端小程序-设备")
@RestController
@RequestMapping("/wechat/plat/device")
public class PlatDeviceWechatController {
......
......@@ -33,4 +33,8 @@ public class PlatDeviceDTO {
@ApiModelProperty(value = "床位名称")
private String bedName;
@ApiModelProperty(value = "床位Id")
private String bedId;
}
package com.makeit.dto.saas.analysis;
import com.makeit.common.dto.BaseReportDTO;
import com.makeit.common.entity.BaseBusEntity;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.util.List;
/**
* <p>
* 睡眠质量分析模型评估标准
......
......@@ -33,4 +33,8 @@ public class PlatRole extends BaseBusEntity {
private String dataScope;
private String orgId;
private String code;
private String status;
}
\ No newline at end of file
......@@ -72,5 +72,8 @@ public class PlatDevice extends BaseBusEntity {
@ApiModelProperty(value = "设备类型 0-呼吸心率雷达 1-空间人体雷达 2-跌倒检测雷达")
private String category;
private LocalDateTime startDate;
private LocalDateTime endDate;
}
......@@ -8,6 +8,8 @@ import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.time.LocalDateTime;
/**
* <p>
* 长者基本信息
......@@ -186,5 +188,11 @@ public class PlatElder extends BaseBusEntity {
@ApiModelProperty(value = "组织路径")
private String orgPath;
@ApiModelProperty(value = "入住时间")
private LocalDateTime checkInTime;
@ApiModelProperty(value = "退住时间")
private LocalDateTime checkOutTime;
}
package com.makeit.entity.platform.elder;
import com.baomidou.mybatisplus.annotation.TableField;
import com.makeit.common.entity.BaseBusEntity;
import com.makeit.common.typehandler.ListStringJsonTypeHandler;
import com.makeit.vo.platform.elder.report.day.PlatSleepRangeVO;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.time.LocalDateTime;
import java.util.List;
/**
* <p>
* 长者每天睡觉记录
* </p>
*
* @author eugene young
* @since 2023-09-13
*/
@Data
@EqualsAndHashCode(callSuper = true)
@ApiModel(value="PlatElderSleep对象", description="长者每天睡觉记录")
public class PlatElderSleep extends BaseBusEntity {
private static final long serialVersionUID = 1L;
@ApiModelProperty(value = "长者id")
private String elderId;
@ApiModelProperty(value = "入睡时间")
private LocalDateTime startSleep;
@ApiModelProperty(value = "起床时间")
private LocalDateTime endSleep;
@ApiModelProperty(value = "当前日期 yyyy-mm-dd")
private String currentDate;
@ApiModelProperty(value = "睡眠记录 区分时间段记录 [{\"sleepType\":\"\",\"startTime\":\"\",\"endTime\":\"\"},{}]")
@TableField(typeHandler = ListStringJsonTypeHandler.class)
private List<PlatSleepRangeVO> sleepRecord;
}
package com.makeit.entity.platform.elder;
import com.makeit.common.entity.BaseBusEntity;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
/**
* <p>
* 长者每天睡觉分析
* </p>
*
* @author eugene young
* @since 2023-09-13
*/
@Data
@EqualsAndHashCode(callSuper = true)
@ApiModel(value="PlatElderSleepAnalysis对象", description="长者每天睡觉分析")
public class PlatElderSleepAnalysis extends BaseBusEntity {
private static final long serialVersionUID = 1L;
@ApiModelProperty(value = "长者id")
private String elderId;
@ApiModelProperty(value = "睡眠评分")
private String sleepScore;
@ApiModelProperty(value = "睡眠结果")
private String sleepResult;
@ApiModelProperty(value = "睡眠时长")
private String sleepTime;
@ApiModelProperty(value = "休息时长")
private String restTime;
@ApiModelProperty(value = "评价")
private String sleepEvaluate;
@ApiModelProperty(value = "当前日期 yyyy-mm-dd")
private String currentDate;
}
package com.makeit.mapper.platform.elder;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.makeit.entity.platform.elder.PlatElderSleepAnalysis;
/**
* <p>
* 长者每天睡觉分析 Mapper 接口
* </p>
*
* @author eugene young
* @since 2023-09-13
*/
public interface PlatElderSleepAnalysisMapper extends BaseMapper<PlatElderSleepAnalysis> {
}
package com.makeit.mapper.platform.elder;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.makeit.entity.platform.elder.PlatElderSleep;
/**
* <p>
* 长者每天睡觉记录 Mapper 接口
* </p>
*
* @author eugene young
* @since 2023-09-13
*/
public interface PlatElderSleepMapper extends BaseMapper<PlatElderSleep> {
}
......@@ -56,5 +56,5 @@ public interface PlatAlarmRecordService extends IService<PlatAlarmRecord> {
PlatAlarmRecord createPlatAlarmRecord(PlatAlarmCheckDTO platAlarmCheckDTO);
PlatAlarmCheckDTO getElderListByDeviceId(PlatAlarmCheckDTO platAlarmCheckDTO);
void getElderListByDeviceId(PlatAlarmCheckDTO platAlarmCheckDTO);
}
package com.makeit.service.platform.alarm.alarmStrategy;
import cn.hutool.core.convert.Convert;
import com.alibaba.fastjson.JSONObject;
import com.makeit.dto.platform.alarm.PlatAlarmCheckDTO;
import com.makeit.dto.platform.alarm.PlatAlarmConfigBehaviorDTOVO;
......@@ -46,7 +47,7 @@ public class BehaviorAlarm implements IAlarm{
if (StringUtils.isBlank(ruleConfigStr)) {
return;
}
String personState = (String) properties.get("personState");
String personState = Convert.toStr(properties.get("personState"));
PlatAlarmConfigBehaviorDTOVO ruleConfig = JsonUtil.toObj(ruleConfigStr, PlatAlarmConfigBehaviorDTOVO.class);
Integer duration = ruleConfig.getDuration();
duration = duration*60;
......
package com.makeit.service.platform.alarm.alarmStrategy;
import cn.hutool.core.convert.Convert;
import com.alibaba.fastjson.JSONObject;
import com.makeit.dto.platform.alarm.PlatAlarmCheckDTO;
import com.makeit.dto.platform.alarm.PlatAlarmConfigRespiratoryDTOVO;
......@@ -48,7 +49,7 @@ public class BreathAlarm implements IAlarm{
if (StringUtils.isBlank(ruleConfigStr)) {
return;
}
String personState = (String) properties.get("personState");
String personState = Convert.toStr(properties.get("personState"));
//呼吸率
int br = (int) properties.get("br");
......
package com.makeit.service.platform.alarm.alarmStrategy;
import cn.hutool.core.convert.Convert;
import com.alibaba.fastjson.JSONObject;
import com.makeit.dto.platform.alarm.PlatAlarmCheckDTO;
import com.makeit.entity.platform.alarm.PlatAlarmRecord;
import com.makeit.entity.platform.elder.PlatElder;
import com.makeit.entity.platform.space.PlatRoom;
import com.makeit.enums.platform.alarm.PlatAlarmConfigEnum;
import com.makeit.service.platform.alarm.PlatAlarmRecordService;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.scheduling.annotation.Async;
import org.springframework.stereotype.Component;
import java.util.ArrayList;
import java.util.List;
@Component
public class FallAlarm implements IAlarm{
@Autowired
......@@ -29,18 +35,27 @@ public class FallAlarm implements IAlarm{
@Override
public void checkConfig(PlatAlarmCheckDTO platAlarmCheckDTO) {
JSONObject properties = platAlarmCheckDTO.getProperties();
String personState = (String) properties.get("personState");
String personState = Convert.toStr(properties.get("personState"));
if (StringUtils.equals(personState, "1")) {
notice(platAlarmCheckDTO);
}
}
@Override
@Async
public void notice(PlatAlarmCheckDTO platAlarmCheckDTO) {
platAlarmRecordService.getElderListByDeviceId(platAlarmCheckDTO);
platAlarmCheckDTO.getParam().add("房间名111");
PlatAlarmRecord platAlarmRecord = platAlarmRecordService.createPlatAlarmRecord(platAlarmCheckDTO);
platAlarmRecordService.noticeDeviceAlarm(platAlarmCheckDTO.getPlatAlarmConfig(),platAlarmRecord);
List<PlatElder> platElderList = platAlarmCheckDTO.getPlatElderList();
if(CollectionUtils.isEmpty(platElderList)){
return;
}
PlatRoom platRoom = platAlarmCheckDTO.getPlatRoom();
for (PlatElder platElder : platElderList) {
List<String> param = new ArrayList<>();
param.add(platElder.getName());
param.add(platRoom.getName());
platAlarmCheckDTO.setParam(param);
PlatAlarmRecord platAlarmRecord = platAlarmRecordService.createPlatAlarmRecord(platAlarmCheckDTO);
platAlarmRecordService.noticeDeviceAlarm(platAlarmCheckDTO.getPlatAlarmConfig(),platAlarmRecord);
}
}
}
package com.makeit.service.platform.alarm.alarmStrategy;
import cn.hutool.core.convert.Convert;
import com.alibaba.fastjson.JSONObject;
import com.makeit.dto.platform.alarm.PlatAlarmCheckDTO;
import com.makeit.dto.platform.alarm.PlatAlarmConfigHeartDTOVO;
......@@ -40,7 +41,7 @@ public class HeartAlarm implements IAlarm {
if (StringUtils.isBlank(ruleConfigStr)) {
return;
}
String personState = (String) properties.get("personState");
String personState = Convert.toStr(properties.get("personState"));
//心率
int hr = (int) properties.get("hr");
PlatAlarmConfigHeartDTOVO ruleConfig = JsonUtil.toObj(ruleConfigStr, PlatAlarmConfigHeartDTOVO.class);
......
......@@ -255,6 +255,9 @@ public class PlatAlarmRecordServiceImpl extends ServiceImpl<PlatAlarmRecordMappe
platUserList.addAll(platUsers);
} else {
String notifyUser = alarmConfig.getNotifyUser();
if(StringUtils.isBlank(notifyUser)){
throw new BusinessException("告警内部人员未配置,告警配置id:"+alarmConfig.getId());
}
String[] userArray = notifyUser.split(",");
List<PlatUser> platUsers = platUserService.listByIds(Arrays.asList(userArray));
platUserList.addAll(platUsers);
......@@ -322,23 +325,25 @@ public class PlatAlarmRecordServiceImpl extends ServiceImpl<PlatAlarmRecordMappe
@Override
public PlatAlarmCheckDTO getElderListByDeviceId(PlatAlarmCheckDTO platAlarmCheckDTO) {
public void getElderListByDeviceId(PlatAlarmCheckDTO platAlarmCheckDTO) {
PlatDevice platDevice = platAlarmCheckDTO.getPlatDevice();
LambdaQueryWrapper<PlatRoomBedDevice> roomBedDeviceLambdaQueryWrapper = new LambdaQueryWrapper<>();
roomBedDeviceLambdaQueryWrapper.eq(PlatRoomBedDevice::getDeviceId, platDevice.getId());
PlatRoomBedDevice platRoomBedDevice = platRoomBedDeviceService.getOne(roomBedDeviceLambdaQueryWrapper, false);
if(platRoomBedDevice==null){
throw new BusinessException("设备没绑定房间:"+platDevice.getId());
}
PlatRoom platRoom = platRoomService.getById(platRoomBedDevice.getRoomId());
platAlarmCheckDTO.setPlatRoom(platRoom);
if (platRoomBedDevice == null) {
return platAlarmCheckDTO;
}
String bedId = platRoomBedDevice.getBedId();
if (StringUtils.isNotBlank(bedId)) {
LambdaQueryWrapper<PlatElder> elderLambdaQueryWrapper = new LambdaQueryWrapper<>();
elderLambdaQueryWrapper.eq(PlatElder::getBedId, bedId);
List<PlatElder> list = platElderService.list(elderLambdaQueryWrapper);
platAlarmCheckDTO.setPlatElderList(list);
return platAlarmCheckDTO;
if(CollectionUtils.isEmpty(list)){
throw new BusinessException("床位没人");
}
}
String roomId = platRoomBedDevice.getRoomId();
......@@ -347,9 +352,10 @@ public class PlatAlarmRecordServiceImpl extends ServiceImpl<PlatAlarmRecordMappe
elderLambdaQueryWrapper.eq(PlatElder::getRoomId, roomId);
List<PlatElder> list = platElderService.list(elderLambdaQueryWrapper);
platAlarmCheckDTO.setPlatElderList(list);
return platAlarmCheckDTO;
if(CollectionUtils.isEmpty(list)) {
throw new BusinessException("房间没人");
}
}
return platAlarmCheckDTO;
}
private String replaceParam(String oriContent,List<String> param) {
......
......@@ -229,7 +229,7 @@ implements PlatRoleService {
throw new BusinessException(CodeMessageEnum.SYSTEM_ERROR);
}
PlatRole role = getById(dto.getId());
role.setStatus(dto.getStatus());
updateById(role);
}
......
......@@ -466,7 +466,7 @@ public class PlatUserServiceImpl extends ServiceImpl<PlatUserMapper, PlatUser>
private void setRoleMenuToRedis(PlatUserLoginVO userLoginVO) {
PlatUserRoleMenuRedisVO tntUserRoleMenuRedisVO = new PlatUserRoleMenuRedisVO();
tntUserRoleMenuRedisVO.setId(userLoginVO.getId());
tntUserRoleMenuRedisVO.setIsTenant(tntUserRoleMenuRedisVO.getIsTenant());
tntUserRoleMenuRedisVO.setIsTenant(userLoginVO.getIsTenant());
if (userLoginVO.getRoleList() != null) {
tntUserRoleMenuRedisVO.setRoleCodeList(StreamUtil.map(userLoginVO.getRoleList(), PlatRoleDTOVO::getId));
}
......
......@@ -18,7 +18,6 @@ import com.makeit.entity.platform.device.PlatDevice;
import com.makeit.entity.platform.device.PlatDeviceOther;
import com.makeit.enums.CodeMessageEnum;
import com.makeit.exception.BusinessException;
import com.makeit.global.aspect.tenant.TenantIdIgnore;
import com.makeit.mapper.platform.device.PlatDeviceMapper;
import com.makeit.service.platform.auth.PlatOrgService;
import com.makeit.service.platform.device.PlatDeviceOtherService;
......@@ -180,7 +179,6 @@ public class PlatDeviceServiceImpl extends ServiceImpl<PlatDeviceMapper, PlatDev
}
@Override
@TenantIdIgnore
public PageVO<PlatDevice> pageSaas(PageReqDTO<PlatDevice> pageReqDTO) {
PlatDevice param = pageReqDTO.getData();
Page<PlatDevice> page = PageUtil.toMpPage(pageReqDTO);
......
package com.makeit.service.platform.elder;
import com.makeit.dto.platform.elder.PlatElderIdDTO;
import com.makeit.vo.platform.elder.realtime.PlatElderCoordinateVO;
import com.makeit.vo.platform.elder.realtime.PlatElderRealTimeBodyVO;
import com.makeit.vo.platform.elder.realtime.PlatElderRealTimeHeartRespiratoryVO;
import com.makeit.vo.platform.elder.realtime.PlatElderRealTimeNowVO;
import java.util.List;
/**
* <p>
* 长者健康状态 服务类
* </p>
*
* @author eugene young
* @since 2023-08-29
*/
public interface PlatElderDayReportDayService {
}
package com.makeit.service.platform.elder;
import com.makeit.dto.platform.elder.PlatElderIdDTO;
import com.makeit.vo.platform.elder.realtime.PlatElderCoordinateVO;
import com.makeit.vo.platform.elder.realtime.PlatElderRealTimeBodyVO;
import com.makeit.vo.platform.elder.realtime.PlatElderRealTimeHeartRespiratoryVO;
import com.makeit.vo.platform.elder.realtime.PlatElderRealTimeNowVO;
import java.util.List;
/**
* <p>
* 长者健康状态 服务类
* </p>
*
* @author eugene young
* @since 2023-08-29
*/
public interface PlatElderRealTimeService {
PlatElderRealTimeNowVO nowStatus(PlatElderIdDTO platElderIdDTO);
PlatElderRealTimeHeartRespiratoryVO heartRespiratory(PlatElderIdDTO platElderIdDTO);
PlatElderRealTimeBodyVO body(PlatElderIdDTO platElderIdDTO);
List<PlatElderCoordinateVO> coordinate(PlatElderIdDTO platElderIdDTO);
}
......@@ -7,6 +7,7 @@ import com.makeit.common.vo.ExcelImportVo;
import com.makeit.dto.platform.elder.*;
import com.makeit.dto.platform.elder.add.PlatElderAddDTO;
import com.makeit.dto.platform.elder.add.PlatElderDTOVO;
import com.makeit.entity.platform.device.PlatDevice;
import com.makeit.entity.platform.elder.PlatElder;
import com.makeit.vo.platform.elder.PlatElderListVO;
import com.makeit.vo.wechat.elder.PlatElderWechatSimpleVO;
......@@ -49,6 +50,10 @@ public interface PlatElderService extends IService<PlatElder> {
void delBatch(List<String> idList);
PlatDevice getBreathDevice(String id);
List<PlatDevice> getSpaceDevice(String id);
/*小程序*/
List<PlatElderWechatSimpleVO> listMy();
/*小程序*/
......
package com.makeit.service.platform.elder;
import com.baomidou.mybatisplus.extension.service.IService;
import com.makeit.entity.platform.elder.PlatElderSleepAnalysis;
/**
* <p>
* 长者每天睡觉分析 服务类
* </p>
*
* @author eugene young
* @since 2023-09-13
*/
public interface PlatElderSleepAnalysisService extends IService<PlatElderSleepAnalysis> {
}
package com.makeit.service.platform.elder;
import com.baomidou.mybatisplus.extension.service.IService;
import com.makeit.entity.platform.elder.PlatElderSleep;
/**
* <p>
* 长者每天睡觉记录 服务类
* </p>
*
* @author eugene young
* @since 2023-09-13
*/
public interface PlatElderSleepService extends IService<PlatElderSleep> {
}
package com.makeit.service.platform.elder.impl;
import com.makeit.service.platform.elder.PlatElderDayReportDayService;
public class PlatElderDayReportDayServiceImpl implements PlatElderDayReportDayService {
}
......@@ -44,7 +44,7 @@ public class PlatElderPhysicalReportServiceImpl extends ServiceImpl<PlatElderPhy
List<PlatElderPhysicalReportDTOVO> voList = BeanDtoVoUtils.listVo(voPage.getRecords(), PlatElderPhysicalReportDTOVO.class);
FileUtil.convert(voList, PlatElderPhysicalReportDTOVO::getElderId, PlatElderPhysicalReportDTOVO::setReportFile);
FileUtil.convert(voList, PlatElderPhysicalReportDTOVO::getReportId, PlatElderPhysicalReportDTOVO::setReportFile);
return PageUtil.toPageVO(voList, voPage);
}
......@@ -56,7 +56,7 @@ public class PlatElderPhysicalReportServiceImpl extends ServiceImpl<PlatElderPhy
List<PlatElderPhysicalReportDTOVO> voList = BeanDtoVoUtils.listVo(list, PlatElderPhysicalReportDTOVO.class);
FileUtil.convert(voList, PlatElderPhysicalReportDTOVO::getElderId, PlatElderPhysicalReportDTOVO::setReportFile);
FileUtil.convert(voList, PlatElderPhysicalReportDTOVO::getReportId, PlatElderPhysicalReportDTOVO::setReportFile);
return voList;
}
......@@ -74,7 +74,7 @@ public class PlatElderPhysicalReportServiceImpl extends ServiceImpl<PlatElderPhy
public PlatElderPhysicalReportDTOVO view(String id) {
PlatElderPhysicalReportDTOVO vo = BeanDtoVoUtils.convert(getById(id), PlatElderPhysicalReportDTOVO.class);
FileUtil.convert(Arrays.asList(vo), PlatElderPhysicalReportDTOVO::getElderId, PlatElderPhysicalReportDTOVO::setReportFile);
FileUtil.convert(Arrays.asList(vo), PlatElderPhysicalReportDTOVO::getReportId, PlatElderPhysicalReportDTOVO::setReportFile);
return vo;
}
......
package com.makeit.service.platform.elder.impl;
import com.makeit.dto.platform.elder.PlatElderIdDTO;
import com.makeit.entity.platform.device.PlatDevice;
import com.makeit.module.iot.service.IotProductDeviceService;
import com.makeit.module.iot.vo.breathe.DeviceInfoContentBreathe;
import com.makeit.module.iot.vo.breathe.DeviceInfoContentSpace;
import com.makeit.service.platform.elder.PlatElderRealTimeService;
import com.makeit.service.platform.elder.PlatElderService;
import com.makeit.utils.data.convert.StreamUtil;
import com.makeit.utils.data.validate.CollectionUtils;
import com.makeit.vo.platform.elder.realtime.PlatElderCoordinateVO;
import com.makeit.vo.platform.elder.realtime.PlatElderRealTimeBodyVO;
import com.makeit.vo.platform.elder.realtime.PlatElderRealTimeHeartRespiratoryVO;
import com.makeit.vo.platform.elder.realtime.PlatElderRealTimeNowVO;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.time.LocalDateTime;
import java.util.ArrayList;
import java.util.List;
import java.util.Objects;
import java.util.stream.Collectors;
/**
* <p>
* 长者健康状态 服务类
* </p>
*
* @author eugene young
* @since 2023-08-29
*/
@Service
public class PlatElderRealTimeServiceImpl implements PlatElderRealTimeService {
@Autowired
private PlatElderService platElderService;
@Autowired
private IotProductDeviceService iotProductDeviceService;
private DeviceInfoContentBreathe getNowDataBreathe(String elderId) {
PlatDevice platDevice = platElderService.getBreathDevice(elderId);
if (platDevice == null) {
return null;
}
DeviceInfoContentBreathe deviceInfoContentBreathe = iotProductDeviceService.getLastDeviceLogBreathe(platDevice.getOriDeviceId(), 10);
return deviceInfoContentBreathe;
}
private List<DeviceInfoContentSpace> getNowDataSpace(String elderId) {
List<PlatDevice> deviceList = platElderService.getSpaceDevice(elderId);
if (CollectionUtils.isNotEmpty(deviceList)) {
return null;
}
return deviceList.stream().map(e -> iotProductDeviceService.getLastDeviceLogSpace(e.getOriDeviceId(), 10)).filter(Objects::nonNull)
.collect(Collectors.toList());
}
@Override
public PlatElderRealTimeNowVO nowStatus(PlatElderIdDTO platElderIdDTO) {
DeviceInfoContentBreathe deviceInfoContentBreathe = getNowDataBreathe(platElderIdDTO.getElderId());
PlatElderRealTimeNowVO platElderRealTimeNowVO = new PlatElderRealTimeNowVO();
if (deviceInfoContentBreathe == null) {
return platElderRealTimeNowVO;
}
platElderRealTimeNowVO.setStatus(deviceInfoContentBreathe.getProperties().getPersonState() + "");
platElderRealTimeNowVO.setHeartRate(deviceInfoContentBreathe.getProperties().getHr());
platElderRealTimeNowVO.setRespiratoryRate(deviceInfoContentBreathe.getProperties().getBr());
platElderRealTimeNowVO.setBodyMove(deviceInfoContentBreathe.getProperties().getBodymove());
return platElderRealTimeNowVO;
}
@Override
public PlatElderRealTimeHeartRespiratoryVO heartRespiratory(PlatElderIdDTO platElderIdDTO) {
DeviceInfoContentBreathe deviceInfoContentBreathe = getNowDataBreathe(platElderIdDTO.getElderId());
PlatElderRealTimeHeartRespiratoryVO platElderRealTimeHeartRespiratoryVO = new PlatElderRealTimeHeartRespiratoryVO();
platElderRealTimeHeartRespiratoryVO.setTime(LocalDateTime.now());
if (deviceInfoContentBreathe == null) {
return platElderRealTimeHeartRespiratoryVO;
}
platElderRealTimeHeartRespiratoryVO.setHeartRate(deviceInfoContentBreathe.getProperties().getHr());
platElderRealTimeHeartRespiratoryVO.setRespiratoryRate(deviceInfoContentBreathe.getProperties().getBr());
return platElderRealTimeHeartRespiratoryVO;
}
@Override
public PlatElderRealTimeBodyVO body(PlatElderIdDTO platElderIdDTO) {
DeviceInfoContentBreathe deviceInfoContentBreathe = getNowDataBreathe(platElderIdDTO.getElderId());
PlatElderRealTimeBodyVO platElderRealTimeBodyVO = new PlatElderRealTimeBodyVO();
platElderRealTimeBodyVO.setTime(LocalDateTime.now());
if (deviceInfoContentBreathe == null) {
return platElderRealTimeBodyVO;
}
platElderRealTimeBodyVO.setBodyMovementIndex(deviceInfoContentBreathe.getProperties().getBodymove());
return platElderRealTimeBodyVO;
}
@Override
public List<PlatElderCoordinateVO> coordinate(PlatElderIdDTO platElderIdDTO) {
List<DeviceInfoContentSpace> deviceInfoContentSpaceList = getNowDataSpace(platElderIdDTO.getElderId());
List<PlatElderCoordinateVO> voList = new ArrayList<>(10);
if (CollectionUtils.isEmpty(deviceInfoContentSpaceList)) {
return voList;
}
voList = StreamUtil.map(deviceInfoContentSpaceList, e -> {
PlatElderCoordinateVO vo = new PlatElderCoordinateVO();
vo.setX(new BigDecimal(e.getProperties().getDistance()).multiply(new BigDecimal(Math.cos(e.getProperties().getAngle()) + "")).setScale(2, RoundingMode.HALF_UP));
vo.setY(new BigDecimal(e.getProperties().getDistance()).multiply(new BigDecimal(Math.sin(e.getProperties().getAngle()) + "")).setScale(2, RoundingMode.HALF_UP));
return vo;
});
return voList;
}
}
......@@ -16,6 +16,7 @@ import com.makeit.dto.platform.elder.PlatElderQueryDTO;
import com.makeit.dto.platform.elder.add.*;
import com.makeit.dto.platform.space.TreeDTOVO;
import com.makeit.entity.platform.auth.PlatOrg;
import com.makeit.entity.platform.device.PlatDevice;
import com.makeit.entity.platform.elder.PlatElder;
import com.makeit.entity.platform.elder.PlatElderHealthInfo;
import com.makeit.entity.platform.elder.PlatElderOtherInfo;
......@@ -32,6 +33,7 @@ import com.makeit.mapper.platform.elder.PlatElderMapper;
import com.makeit.service.platform.auth.PlatOrgService;
import com.makeit.service.platform.elder.*;
import com.makeit.service.platform.space.PlatBedService;
import com.makeit.service.platform.space.PlatRoomBedDeviceService;
import com.makeit.service.platform.space.PlatRoomService;
import com.makeit.service.platform.space.PlatSpaceService;
import com.makeit.utils.data.convert.BeanDtoVoUtils;
......@@ -55,6 +57,7 @@ import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.multipart.MultipartFile;
import javax.servlet.http.HttpServletResponse;
import java.time.LocalDateTime;
import java.util.*;
import java.util.function.BiConsumer;
import java.util.function.Function;
......@@ -96,6 +99,9 @@ public class PlatElderServiceImpl extends ServiceImpl<PlatElderMapper, PlatElder
@Autowired
private PlatBedService platBedService;
@Autowired
private PlatRoomBedDeviceService platRoomBedDeviceService;
private LambdaQueryWrapper<PlatElder> lambdaQueryWrapper(PlatElderQueryDTO dto) {
return new QueryWrapper<PlatElder>().lambda()
.like(StringUtils.isNotBlank(dto.getName()), PlatElder::getName, dto.getName())
......@@ -492,6 +498,14 @@ public class PlatElderServiceImpl extends ServiceImpl<PlatElderMapper, PlatElder
PlatElder platElder = BeanDtoVoUtils.convert(dto, PlatElder.class);
PlatUserVO userVO = PlatUserUtil.getUserVO();
platElder.setOrgId(userVO.getOrgId());
platElder.setCityOrgId(userVO.getCityOrgId());
platElder.setDistrictOrgId(userVO.getDistrictOrgId());
platElder.setStreetOrgId(userVO.getStreetOrgId());
platElder.setOrgPath(userVO.getOrgPath());
save(platElder);
}
......@@ -603,6 +617,8 @@ public class PlatElderServiceImpl extends ServiceImpl<PlatElderMapper, PlatElder
PlatElder db = getById(dto.getId());
BeanUtils.copyProperties(dto, db);
db.setCheckInTime(LocalDateTime.now());
updateById(db);
StatusDTO statusDTO = new StatusDTO();
......@@ -636,6 +652,8 @@ public class PlatElderServiceImpl extends ServiceImpl<PlatElderMapper, PlatElder
db.setBedId(null);
db.setSpacePath(null);
db.setCheckOutTime(LocalDateTime.now());
updateById(db);
//TODO ywc 是否删除房间 及其校验没做
......@@ -681,6 +699,29 @@ public class PlatElderServiceImpl extends ServiceImpl<PlatElderMapper, PlatElder
}
@Override
public PlatDevice getBreathDevice(String id) {
PlatElder platElder = getById(id);
if (StringUtils.isBlank(platElder.getBedId())) {
return null;
}
return platRoomBedDeviceService.getBreathDevice(platElder.getBedId());
}
@Override
public List<PlatDevice> getSpaceDevice(String id) {
PlatElder platElder = getById(id);
if (StringUtils.isBlank(platElder.getBedId())) {
return null;
}
return platRoomBedDeviceService.getSpaceDevice(platElder.getBedId());
}
@Override
public List<PlatElderWechatSimpleVO> listMy() {
PlatElderChildrenInfoWechatVO childrenInfo = platElderChildrenInfoService.view();
......
package com.makeit.service.platform.elder.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.makeit.entity.platform.elder.PlatElderSleepAnalysis;
import com.makeit.mapper.platform.elder.PlatElderSleepAnalysisMapper;
import com.makeit.service.platform.elder.PlatElderSleepAnalysisService;
import org.springframework.stereotype.Service;
/**
* <p>
* 长者每天睡觉分析 服务实现类
* </p>
*
* @author eugene young
* @since 2023-09-13
*/
@Service
public class PlatElderSleepAnalysisServiceImpl extends ServiceImpl<PlatElderSleepAnalysisMapper, PlatElderSleepAnalysis> implements PlatElderSleepAnalysisService {
}
package com.makeit.service.platform.elder.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.makeit.entity.platform.elder.PlatElderSleep;
import com.makeit.mapper.platform.elder.PlatElderSleepMapper;
import com.makeit.service.platform.elder.PlatElderSleepService;
import org.springframework.stereotype.Service;
/**
* <p>
* 长者每天睡觉记录 服务实现类
* </p>
*
* @author eugene young
* @since 2023-09-13
*/
@Service
public class PlatElderSleepServiceImpl extends ServiceImpl<PlatElderSleepMapper, PlatElderSleep> implements PlatElderSleepService {
}
......@@ -8,6 +8,7 @@ import com.makeit.dto.platform.space.PlatBedDeviceQueryDTO;
import com.makeit.dto.platform.space.PlatRoomBindDeviceDTO;
import com.makeit.dto.platform.space.PlatSpaceDeviceQueryDTO;
import com.makeit.dto.platform.space.PlatUnbindingDeviceDTO;
import com.makeit.entity.platform.device.PlatDevice;
import com.makeit.entity.platform.space.PlatRoomBedDevice;
import java.util.List;
......@@ -21,12 +22,14 @@ public interface PlatRoomBedDeviceService extends IService<PlatRoomBedDevice> {
/**
* 绑定设备
*
* @param dto
*/
void bindingDevice(PlatRoomBindDeviceDTO dto);
/**
* 未绑定设备列表
*
* @param pageReqDTO
* @return
*/
......@@ -34,6 +37,7 @@ public interface PlatRoomBedDeviceService extends IService<PlatRoomBedDevice> {
/**
* 已绑定设备
*
* @param dto
* @return
*/
......@@ -41,7 +45,12 @@ public interface PlatRoomBedDeviceService extends IService<PlatRoomBedDevice> {
/**
* 解绑设备
*
* @param dto
*/
void unbindingDevice(PlatUnbindingDeviceDTO dto);
PlatDevice getBreathDevice(String bedId);
List<PlatDevice> getSpaceDevice(String bedId);
}
package com.makeit.service.platform.space.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;
......@@ -22,6 +23,7 @@ import com.makeit.service.platform.space.PlatRegionSettingService;
import com.makeit.service.platform.space.PlatRoomBedDeviceService;
import com.makeit.utils.data.convert.BeanDtoVoUtils;
import com.makeit.utils.data.convert.PageUtil;
import com.makeit.utils.data.convert.StreamUtil;
import jodd.util.StringUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
......@@ -56,7 +58,7 @@ public class PlatRoomBedDeviceServiceImpl extends ServiceImpl<PlatRoomBedDeviceM
List<String> listEquipmentIds = dto.getListDeviceId();
List<PlatRoomBedDevice> list = new ArrayList<>();
listEquipmentIds.forEach(item->{
listEquipmentIds.forEach(item -> {
PlatRoomBedDevice data = new PlatRoomBedDevice();
data.setDeviceId(item);
......@@ -64,11 +66,11 @@ public class PlatRoomBedDeviceServiceImpl extends ServiceImpl<PlatRoomBedDeviceM
data.setBedId(dto.getBedId());
list.add(data);
});
if(!list.isEmpty()){
if (!list.isEmpty()) {
saveBatch(list);
//区域设备
platRegionSettingService.add(dto.getRoomId(),dto.getListDeviceId());
platRegionSettingService.add(dto.getRoomId(), dto.getListDeviceId());
}
}
......@@ -79,20 +81,20 @@ public class PlatRoomBedDeviceServiceImpl extends ServiceImpl<PlatRoomBedDeviceM
LambdaQueryWrapper<PlatRoomBedDevice> queryWrapper1 = new LambdaQueryWrapper<>();
queryWrapper1.select(PlatRoomBedDevice::getDeviceId);
if(StringUtil.isNotEmpty(dto.getRoomId())){
queryWrapper1.ne(PlatRoomBedDevice::getRoomId,dto.getRoomId());
if (StringUtil.isNotEmpty(dto.getRoomId())) {
queryWrapper1.ne(PlatRoomBedDevice::getRoomId, dto.getRoomId());
}
if(CommonEnum.NO.getValue().equals(dto.getIsRoom())){
if (CommonEnum.NO.getValue().equals(dto.getIsRoom())) {
queryWrapper1.isNull(PlatRoomBedDevice::getBedId);
}
List<PlatRoomBedDevice> list = list(queryWrapper1);
List<String> listEquipmentIds = list.stream().map(item->item.getDeviceId()).collect(Collectors.toList());
List<String> listEquipmentIds = list.stream().map(item -> item.getDeviceId()).collect(Collectors.toList());
Page<PlatDevice> p = PageUtil.toMpPage(pageReqDTO);
LambdaQueryWrapper<PlatDevice> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.notIn(!listEquipmentIds.isEmpty(),PlatDevice::getId, listEquipmentIds);
queryWrapper.eq(StringUtil.isNotEmpty(dto.getCategory()), PlatDevice::getCategory,dto.getCategory());
queryWrapper.notIn(!listEquipmentIds.isEmpty(), PlatDevice::getId, listEquipmentIds);
queryWrapper.eq(StringUtil.isNotEmpty(dto.getCategory()), PlatDevice::getCategory, dto.getCategory());
queryWrapper.like(StringUtil.isNotEmpty(dto.getOriDeviceId()), PlatDevice::getOriDeviceId, dto.getOriDeviceId());
queryWrapper.like(StringUtil.isNotEmpty(dto.getName()), PlatDevice::getName, dto.getName());
queryWrapper.like(StringUtil.isNotEmpty(dto.getProductName()), PlatDevice::getProductName, dto.getProductName());
......@@ -117,10 +119,12 @@ public class PlatRoomBedDeviceServiceImpl extends ServiceImpl<PlatRoomBedDeviceM
queryWrapper2.in(PlatBed::getId,listBedIds);
List<PlatBed> listBeds = platBedService.list(queryWrapper2);
Map<String,String> map = listBeds.stream().collect(Collectors.toMap(PlatBed::getId,PlatBed::getName,(k1, k2)->k1));
Map<String,String> mapName = new HashMap<>();
Map<String,String> mapName = new HashMap<>(20);
Map<String,String> mapBedId = new HashMap<>(20);
list.forEach(item->{
if(map.containsKey(item.getBedId())){
mapName.put(item.getDeviceId(),map.get(item.getBedId()));
mapBedId.put(item.getDeviceId(),item.getBedId());
}
});
......@@ -134,6 +138,7 @@ public class PlatRoomBedDeviceServiceImpl extends ServiceImpl<PlatRoomBedDeviceM
data.forEach(item->{
item.setBedName(mapName.get(item.getId()));
item.setBedId(mapBedId.get(item.getId()));
});
}
return data;
......@@ -144,23 +149,53 @@ public class PlatRoomBedDeviceServiceImpl extends ServiceImpl<PlatRoomBedDeviceM
public void unbindingDevice(PlatUnbindingDeviceDTO dto) {
LambdaQueryWrapper<PlatRoomBedDevice> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(PlatRoomBedDevice::getDeviceId,dto.getEquipmentId());
queryWrapper.eq(PlatRoomBedDevice::getRoomId,dto.getRoomId());
queryWrapper.eq(StringUtil.isNotEmpty(dto.getBedId()),PlatRoomBedDevice::getBedId,dto.getBedId());
queryWrapper.eq(PlatRoomBedDevice::getDeviceId, dto.getEquipmentId());
queryWrapper.eq(PlatRoomBedDevice::getRoomId, dto.getRoomId());
queryWrapper.eq(StringUtil.isNotEmpty(dto.getBedId()), PlatRoomBedDevice::getBedId, dto.getBedId());
List<PlatRoomBedDevice> list = list(queryWrapper);
if(StringUtil.isNotEmpty(dto.getBedId())){
if (StringUtil.isNotEmpty(dto.getBedId())) {
list.forEach(item->{
list.forEach(item -> {
item.setBedId(null);
});
updateBatchById(list);
}else{
} else {
List<String> ids = list.stream().map(item->item.getId()).collect(Collectors.toList());
List<String> ids = list.stream().map(item -> item.getId()).collect(Collectors.toList());
removeByIds(ids);
platRegionSettingService.del(dto.getRoomId(),dto.getEquipmentId());
platRegionSettingService.del(dto.getRoomId(), dto.getEquipmentId());
}
}
@Override
public PlatDevice getBreathDevice(String bedId) {
PlatRoomBedDevice device = getOne(new QueryWrapper<PlatRoomBedDevice>().lambda()
.eq(PlatRoomBedDevice::getBedId, bedId));
if (device == null) {
return null;
}
return platDeviceService.getById(device.getDeviceId());
}
@Override
public List<PlatDevice> getSpaceDevice(String bedId) {
PlatBed bed = platBedService.getById(bedId);
List<PlatRoomBedDevice> deviceList = list(new QueryWrapper<PlatRoomBedDevice>().lambda()
.eq(PlatRoomBedDevice::getRoomId, bed.getRoomId()));
return platDeviceService.list(new QueryWrapper<PlatDevice>().lambda()
.in(PlatDevice::getId, StreamUtil.mapId(deviceList, PlatRoomBedDevice::getDeviceId))
.eq(PlatDevice::getCategory, PlatDeviceEnum.CategoryEnum.SPACE.getValue())
);
}
}
......@@ -51,8 +51,8 @@ public class AlarmConfigCacheUtil implements ApplicationRunner {
});
}
public PlatAlarmConfig get(String orgIdType) {
return RedisUtil.get(RedisConst.ALARM_CONFIG_ORG_ID+orgIdType);
public PlatAlarmConfig get(String orgId,String alarmType) {
return RedisUtil.get(RedisConst.ALARM_CONFIG_ORG_ID+orgId+":"+alarmType);
}
......@@ -70,19 +70,17 @@ public class AlarmConfigCacheUtil implements ApplicationRunner {
}
public List<PlatAlarmConfig> getDeviceAlarmConfigMap(PlatDevice platDevice) {
List<PlatAlarmConfig> set = new ArrayList<>();
if (StringUtils.equals(platDevice.getCategory(), PlatDeviceEnum.CategoryEnum.HEART.getValue())) {
List<PlatAlarmConfig> set = new ArrayList<>();
set.add(this.get(platDevice.getOrgId() + PlatAlarmConfigEnum.AlarmTypeEnum.BREATHE.getValue()));
set.add(this.get(platDevice.getOrgId() + PlatAlarmConfigEnum.AlarmTypeEnum.HEART.getValue()));
set.add(this.get(platDevice.getOrgId() ,PlatAlarmConfigEnum.AlarmTypeEnum.BREATHE.getValue()));
set.add(this.get(platDevice.getOrgId() , PlatAlarmConfigEnum.AlarmTypeEnum.HEART.getValue()));
}
if (StringUtils.equals(platDevice.getCategory(), PlatDeviceEnum.CategoryEnum.FALL.getValue())) {
List<PlatAlarmConfig> set = new ArrayList<>();
set.add(this.get(platDevice.getOrgId() + PlatAlarmConfigEnum.AlarmTypeEnum.FALL.getValue()));
set.add(this.get(platDevice.getOrgId() , PlatAlarmConfigEnum.AlarmTypeEnum.FALL.getValue()));
}
if (StringUtils.equals(platDevice.getCategory(), PlatDeviceEnum.CategoryEnum.SPACE.getValue())) {
List<PlatAlarmConfig> set = new ArrayList<>();
set.add(this.get(platDevice.getOrgId() + PlatAlarmConfigEnum.AlarmTypeEnum.BEHAVIOR.getValue()));
set.add(this.get(platDevice.getOrgId() , PlatAlarmConfigEnum.AlarmTypeEnum.BEHAVIOR.getValue()));
}
return new ArrayList<>();
return set ;
}
}
......@@ -83,4 +83,10 @@ public class PlatPersonDTOVO extends BaseIdDTO {
@ApiModelProperty(value = "角色Id集合")
private List<String> roleIdList;
@ApiModelProperty(value = "创建人名称")
private String createBy;
@ApiModelProperty(value = "更新人名称")
private String updateBy;
}
......@@ -70,5 +70,8 @@ public class PlatDeviceListVO extends BaseTenantDTO {
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private LocalDateTime createDate;
private LocalDateTime startDate;
private LocalDateTime endDate;
}
......@@ -2,7 +2,6 @@ package com.makeit.vo.platform.device;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.makeit.common.dto.BaseTenantDTO;
import com.makeit.common.entity.BaseBusEntity;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
......@@ -101,5 +100,8 @@ public class PlatDeviceViewVO extends BaseTenantDTO {
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private LocalDateTime createDate;
private LocalDateTime startDate;
private LocalDateTime endDate;
}
package com.makeit.vo.platform.elder.realtime;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.math.BigDecimal;
@Data
public class PlatElderCoordinateVO {
@ApiModelProperty("x")
private BigDecimal x;
@ApiModelProperty("y")
private BigDecimal y;
}
......@@ -4,7 +4,6 @@ import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.math.BigDecimal;
import java.time.LocalDateTime;
@Data
......@@ -15,6 +14,6 @@ public class PlatElderRealTimeBodyVO {
private LocalDateTime time;
@ApiModelProperty("体动指数")
private BigDecimal bodyMovementIndex;
private Integer bodyMovementIndex;
}
......@@ -3,8 +3,6 @@ package com.makeit.vo.platform.elder.realtime;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.math.BigDecimal;
@Data
public class PlatElderRealTimeNowVO {
......@@ -18,6 +16,6 @@ public class PlatElderRealTimeNowVO {
private Integer respiratoryRate;
@ApiModelProperty("体动")
private BigDecimal body;
private Integer bodyMove;
}
package com.makeit.vo.platform.elder.report.day;
import io.swagger.annotations.ApiModelProperty;
import java.math.BigDecimal;
public class PlatElderCoordinateVO {
@ApiModelProperty("经度")
private BigDecimal longitude;
@ApiModelProperty("纬度")
private BigDecimal latitude;
}
package com.makeit.vo.platform.elder.report.day;
import lombok.Data;
@Data
public class PlatSleepRangeVO {
private String sleepType;
private String startTime;
private String endTime;
}
package com.makeit;
import com.makeit.module.iot.service.IotProductDeviceService;
import com.makeit.utils.data.convert.JsonUtil;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.ApplicationArguments;
import org.springframework.boot.ApplicationRunner;
import org.springframework.stereotype.Component;
@Component
public class IotRunner implements ApplicationRunner {
@Autowired
private IotProductDeviceService iotProductDeviceService;
private static final Logger logger = LoggerFactory.getLogger(IotRunner.class);
@Override
public void run(ApplicationArguments args) throws Exception {
logger.info("111111111111111111\n"+ JsonUtil.toJson(iotProductDeviceService.getLastDeviceLogByType("1701127702523473920","reportProperty")) + "");
}
}
......@@ -67,7 +67,7 @@ file:
storage:
location: ${file.file}
type: local
url: http://localhost:10005/${file.filePath}
url: http://iot-kuangshi-admin.meiqicloud.com/api/${file.filePath}
# aliBaseDir: point
# aliEndpoint: obs.cn-south-1.myhuaweicloud.com
......
......@@ -64,7 +64,7 @@ public class IotTest {
@Test
void getDeviceLogByTimeRange() {
iotProductDeviceService.getDeviceLogByTimeRange("1701127702523473920",100,"2023-09-12 00:00:00","2023-09-12 23:59:00");
iotProductDeviceService.getDeviceLogByTimeRange("1701127702523473920",100,"2023-09-11 00:00:00","2023-09-11 23:59:00");
}
@Test
......
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