Commit dbe536d3 by huangjy

Merge remote-tracking branch 'origin/dev' into dev

parents 3685298a 9aec1949
Showing with 1206 additions and 161 deletions
...@@ -45,6 +45,8 @@ CREATE TABLE `plat_elder` ...@@ -45,6 +45,8 @@ CREATE TABLE `plat_elder`
org_path varchar(64) NULL COMMENT '组织路径', org_path varchar(64) NULL COMMENT '组织路径',
`remark` varchar(1024) DEFAULT NULL COMMENT '备注', `remark` varchar(1024) DEFAULT NULL COMMENT '备注',
avatar varchar(64) NULL COMMENT '头像文件id', 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_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 '更新者',
......
...@@ -26,17 +26,19 @@ CREATE TABLE `plat_user` ( ...@@ -26,17 +26,19 @@ CREATE TABLE `plat_user` (
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=COMPACT COMMENT='租户账号管理'; ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=COMPACT COMMENT='租户账号管理';
CREATE TABLE `plat_role` ( 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', `tenant_id` varchar(64) NOT NULL COMMENT '租户id',
`name` varchar(100) NOT NULL COMMENT '名称', `name` varchar(100) NOT NULL COMMENT '名称',
`remark` varchar(255) DEFAULT NULL COMMENT '备注', `remark` varchar(255) DEFAULT NULL COMMENT '备注',
`data_scope` varchar(600) DEFAULT NULL COMMENT '数据权限 子公司id 上级可看到下级', `data_scope` varchar(600) DEFAULT NULL COMMENT '数据权限 子公司id 上级可看到下级',
`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 '删除标识',
`update_by` varchar(64) DEFAULT NULL COMMENT '更新人', `update_by` varchar(64) DEFAULT NULL COMMENT '更新人',
`create_by` varchar(64) DEFAULT NULL COMMENT '创建人', `create_by` varchar(64) DEFAULT NULL COMMENT '创建人',
`org_id` 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`) PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=COMPACT COMMENT='租户端角色'; ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=COMPACT COMMENT='租户端角色';
......
...@@ -29,6 +29,9 @@ VALUES ('203', 'alarm.notifyWay', '告警配置通知对象', '2022-05-16 17:08: ...@@ -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) 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'); 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) 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'); 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 ...@@ -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) 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'); 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 ('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); 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);
......
...@@ -8,6 +8,7 @@ import com.makeit.common.response.ApiResponseUtils; ...@@ -8,6 +8,7 @@ import com.makeit.common.response.ApiResponseUtils;
import com.makeit.dto.platform.device.PlatDeviceDetailDTO; import com.makeit.dto.platform.device.PlatDeviceDetailDTO;
import com.makeit.dto.platform.device.PlatDeviceEditDTO; import com.makeit.dto.platform.device.PlatDeviceEditDTO;
import com.makeit.entity.platform.device.PlatDevice; import com.makeit.entity.platform.device.PlatDevice;
import com.makeit.global.aspect.tenant.TenantIdIgnore;
import com.makeit.service.platform.device.PlatDeviceService; import com.makeit.service.platform.device.PlatDeviceService;
import io.swagger.annotations.Api; import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiOperation;
...@@ -26,18 +27,21 @@ public class SaasDeviceController { ...@@ -26,18 +27,21 @@ public class SaasDeviceController {
@ApiOperation("列表") @ApiOperation("列表")
@PostMapping("page") @PostMapping("page")
@TenantIdIgnore
public ApiResponseEntity<PageVO<PlatDevice>> page(@RequestBody PageReqDTO<PlatDevice> pageReqDTO) { public ApiResponseEntity<PageVO<PlatDevice>> page(@RequestBody PageReqDTO<PlatDevice> pageReqDTO) {
return ApiResponseUtils.success(platDeviceService.pageSaas(pageReqDTO)); return ApiResponseUtils.success(platDeviceService.pageSaas(pageReqDTO));
} }
@ApiOperation("设备信息") @ApiOperation("设备信息")
@PostMapping("detail") @PostMapping("detail")
@TenantIdIgnore
public ApiResponseEntity<PlatDeviceDetailDTO> detail(@RequestBody BaseIdDTO baseIdDTO) { public ApiResponseEntity<PlatDeviceDetailDTO> detail(@RequestBody BaseIdDTO baseIdDTO) {
return ApiResponseUtils.success(platDeviceService.getDetailDTO(baseIdDTO.getId())); return ApiResponseUtils.success(platDeviceService.getDetailDTO(baseIdDTO.getId()));
} }
@ApiOperation("设备编辑") @ApiOperation("设备编辑")
@PostMapping("edit") @PostMapping("edit")
@TenantIdIgnore
public ApiResponseEntity<Void> edit(@RequestBody PlatDeviceEditDTO dto) { public ApiResponseEntity<Void> edit(@RequestBody PlatDeviceEditDTO dto) {
platDeviceService.edit(dto); platDeviceService.edit(dto);
return ApiResponseUtils.success(); return ApiResponseUtils.success();
...@@ -45,6 +49,7 @@ public class SaasDeviceController { ...@@ -45,6 +49,7 @@ public class SaasDeviceController {
@ApiOperation("实时数据") @ApiOperation("实时数据")
@PostMapping("realTimeDate") @PostMapping("realTimeDate")
@TenantIdIgnore
public ApiResponseEntity<PlatDevice> realTimeDate(@RequestBody PlatDevice platDevice) { public ApiResponseEntity<PlatDevice> realTimeDate(@RequestBody PlatDevice platDevice) {
//todo //todo
return null; return null;
...@@ -52,6 +57,7 @@ public class SaasDeviceController { ...@@ -52,6 +57,7 @@ public class SaasDeviceController {
@ApiOperation("数据分析") @ApiOperation("数据分析")
@PostMapping("dataAnalysis") @PostMapping("dataAnalysis")
@TenantIdIgnore
public ApiResponseEntity<PlatDevice> dataAnalysis(@RequestBody PlatDevice platDevice) { public ApiResponseEntity<PlatDevice> dataAnalysis(@RequestBody PlatDevice platDevice) {
//todo //todo
return null; return null;
......
...@@ -157,7 +157,6 @@ ...@@ -157,7 +157,6 @@
<orderEntry type="library" name="Maven: org.springframework.integration:spring-integration-core:5.5.5" level="project" /> <orderEntry type="library" name="Maven: org.springframework.integration:spring-integration-core:5.5.5" level="project" />
<orderEntry type="library" name="Maven: org.springframework:spring-messaging:5.3.12" level="project" /> <orderEntry type="library" name="Maven: org.springframework:spring-messaging:5.3.12" level="project" />
<orderEntry type="library" name="Maven: org.springframework.retry:spring-retry:1.3.1" level="project" /> <orderEntry type="library" name="Maven: org.springframework.retry:spring-retry:1.3.1" level="project" />
<orderEntry type="library" name="Maven: javax.annotation:javax.annotation-api:1.3.2" level="project" />
<orderEntry type="library" name="Maven: org.springframework.integration:spring-integration-mqtt:5.5.5" level="project" /> <orderEntry type="library" name="Maven: org.springframework.integration:spring-integration-mqtt:5.5.5" level="project" />
<orderEntry type="library" name="Maven: org.eclipse.paho:org.eclipse.paho.client.mqttv3:1.2.5" level="project" /> <orderEntry type="library" name="Maven: org.eclipse.paho:org.eclipse.paho.client.mqttv3:1.2.5" level="project" />
<orderEntry type="library" name="Maven: com.aliyun:dysmsapi20170525:2.0.9" level="project" /> <orderEntry type="library" name="Maven: com.aliyun:dysmsapi20170525:2.0.9" level="project" />
...@@ -184,6 +183,7 @@ ...@@ -184,6 +183,7 @@
<orderEntry type="library" name="Maven: org.apache.poi:poi-ooxml:5.2.2" level="project" /> <orderEntry type="library" name="Maven: org.apache.poi:poi-ooxml:5.2.2" level="project" />
<orderEntry type="library" name="Maven: org.apache.poi:poi-ooxml-lite:5.2.2" level="project" /> <orderEntry type="library" name="Maven: org.apache.poi:poi-ooxml-lite:5.2.2" level="project" />
<orderEntry type="library" name="Maven: org.apache.xmlbeans:xmlbeans:5.0.3" level="project" /> <orderEntry type="library" name="Maven: org.apache.xmlbeans:xmlbeans:5.0.3" level="project" />
<orderEntry type="library" name="Maven: xml-apis:xml-apis:1.4.01" level="project" />
<orderEntry type="library" name="Maven: org.apache.commons:commons-compress:1.21" level="project" /> <orderEntry type="library" name="Maven: org.apache.commons:commons-compress:1.21" level="project" />
<orderEntry type="library" name="Maven: com.github.virtuald:curvesapi:1.07" level="project" /> <orderEntry type="library" name="Maven: com.github.virtuald:curvesapi:1.07" level="project" />
<orderEntry type="library" name="Maven: cn.hutool:hutool-all:5.3.5" level="project" /> <orderEntry type="library" name="Maven: cn.hutool:hutool-all:5.3.5" level="project" />
...@@ -205,7 +205,6 @@ ...@@ -205,7 +205,6 @@
<orderEntry type="library" name="Maven: org.apache.xmlgraphics:batik-bridge:1.14" level="project" /> <orderEntry type="library" name="Maven: org.apache.xmlgraphics:batik-bridge:1.14" level="project" />
<orderEntry type="library" name="Maven: org.apache.xmlgraphics:batik-script:1.14" level="project" /> <orderEntry type="library" name="Maven: org.apache.xmlgraphics:batik-script:1.14" level="project" />
<orderEntry type="library" name="Maven: org.apache.xmlgraphics:batik-dom:1.14" level="project" /> <orderEntry type="library" name="Maven: org.apache.xmlgraphics:batik-dom:1.14" level="project" />
<orderEntry type="library" name="Maven: xml-apis:xml-apis:1.4.01" level="project" />
<orderEntry type="library" name="Maven: org.apache.xmlgraphics:batik-gvt:1.14" level="project" /> <orderEntry type="library" name="Maven: org.apache.xmlgraphics:batik-gvt:1.14" level="project" />
<orderEntry type="library" name="Maven: org.apache.xmlgraphics:batik-shared-resources:1.14" level="project" /> <orderEntry type="library" name="Maven: org.apache.xmlgraphics:batik-shared-resources:1.14" level="project" />
<orderEntry type="library" name="Maven: org.apache.xmlgraphics:batik-svggen:1.14" level="project" /> <orderEntry type="library" name="Maven: org.apache.xmlgraphics:batik-svggen:1.14" level="project" />
......
...@@ -110,7 +110,7 @@ public class ModuleSwaggerApiListingReader implements ApiListingBuilderPlugin { ...@@ -110,7 +110,7 @@ public class ModuleSwaggerApiListingReader implements ApiListingBuilderPlugin {
private Function<Api, Set<String>> tags(Class<?> clazz, List<SwaggerModuleConfig> configList) { 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 -> { return input -> {
......
...@@ -75,7 +75,7 @@ public class ModuleSwaggerOperationTagsReader implements OperationBuilderPlugin ...@@ -75,7 +75,7 @@ public class ModuleSwaggerOperationTagsReader implements OperationBuilderPlugin
private Function<Api, Set<String>> tagsFromController(Class<?> clazz, List<SwaggerModuleConfig> configList) { 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 -> { return input -> {
......
...@@ -8,7 +8,7 @@ public class HeaderConst { ...@@ -8,7 +8,7 @@ public class HeaderConst {
// public static final String PLATFORM_TOKEN = "platformToken"; // public static final String PLATFORM_TOKEN = "platformToken";
public static final String PLATFORM_TOKEN = "token"; public static final String PLATFORM_TOKEN = "token";
public static final String TOKEN = "token"; public static final String TOKEN = "token";
public static final String WECHAT_TOKEN = "wechatToken"; public static final String WECHAT_TOKEN = "token";
// public static final String CUSTOMER_TOKEN = "customerToken"; // public static final String CUSTOMER_TOKEN = "customerToken";
......
...@@ -94,7 +94,7 @@ public class RedisConst { ...@@ -94,7 +94,7 @@ public class RedisConst {
public static final String ALARM_DEVICE_ID = "alarm:device:id:"; 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:"; public static final String PLAT_IOT_DEVICE_PREFIX = "plat:iot:device:";
......
...@@ -38,4 +38,10 @@ public class PlatRoleDTOVO extends BaseOrgDTO implements Serializable { ...@@ -38,4 +38,10 @@ public class PlatRoleDTOVO extends BaseOrgDTO implements Serializable {
@ApiModelProperty(value = "菜单集合") @ApiModelProperty(value = "菜单集合")
private List<PlatMenuDTOVO> menuList; 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; ...@@ -10,6 +10,8 @@ import com.makeit.module.iot.vo.DeviceInstanceEntity;
import com.makeit.module.iot.vo.DeviceOperationLogEntity; import com.makeit.module.iot.vo.DeviceOperationLogEntity;
import com.makeit.module.iot.vo.IotPagerResult; import com.makeit.module.iot.vo.IotPagerResult;
import com.makeit.module.iot.vo.ResponseMessage; 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.data.convert.JsonUtil;
import com.makeit.utils.old.StringUtils; import com.makeit.utils.old.StringUtils;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
...@@ -17,6 +19,10 @@ import org.apache.commons.collections4.CollectionUtils; ...@@ -17,6 +19,10 @@ import org.apache.commons.collections4.CollectionUtils;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import java.io.IOException; import java.io.IOException;
import java.time.Duration;
import java.time.Instant;
import java.time.LocalDateTime;
import java.time.ZoneId;
import java.util.List; import java.util.List;
/** /**
...@@ -57,6 +63,7 @@ public class IotProductDeviceService extends IotCommonService { ...@@ -57,6 +63,7 @@ public class IotProductDeviceService extends IotCommonService {
/** /**
* 获取最新一条设备日志 * 获取最新一条设备日志
*
* @param deviceId * @param deviceId
* @return * @return
*/ */
...@@ -68,19 +75,54 @@ public class IotProductDeviceService extends IotCommonService { ...@@ -68,19 +75,54 @@ public class IotProductDeviceService extends IotCommonService {
/** /**
* 获取最新的一条设备属性上报的数据 * 获取最新的一条设备属性上报的数据
*
* @param deviceId * @param deviceId
* @param typeValue 类型 * @param typeValue 类型
* * <p>
* 可以传 :reportProperty * 可以传 :reportProperty
* @return * @return
*/ */
public DeviceOperationLogEntity getLastDeviceLogByType(String deviceId,String typeValue) { public DeviceOperationLogEntity getLastDeviceLogByType(String deviceId, String typeValue) {
List<DeviceOperationLogEntity> deviceOperationLogEntities = getDeviceLog(deviceId, 1, typeValue); List<DeviceOperationLogEntity> deviceOperationLogEntities = getDeviceLog(deviceId, 1, typeValue);
return CollectionUtils.isNotEmpty(deviceOperationLogEntities) ? deviceOperationLogEntities.get(0) : null; 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: "event"}
* {text: "读取属性", value: "readProperty"} * {text: "读取属性", value: "readProperty"}
...@@ -124,8 +166,8 @@ public class IotProductDeviceService extends IotCommonService { ...@@ -124,8 +166,8 @@ public class IotProductDeviceService extends IotCommonService {
* @param typeValue * @param typeValue
* @return * @return
*/ */
public List<DeviceOperationLogEntity> getDeviceLogByType(String deviceId,String typeValue) { public List<DeviceOperationLogEntity> getDeviceLogByType(String deviceId, String typeValue) {
return getDeviceLog(deviceId, 10,typeValue); return getDeviceLog(deviceId, 10, typeValue);
} }
...@@ -212,7 +254,4 @@ public class IotProductDeviceService extends IotCommonService { ...@@ -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
...@@ -41,7 +41,16 @@ public class SwaggerPlatformConfig { ...@@ -41,7 +41,16 @@ public class SwaggerPlatformConfig {
SwaggerModuleConfig config = new SwaggerModuleConfig(); SwaggerModuleConfig config = new SwaggerModuleConfig();
config.setPackageList(Arrays.asList("com.makeit.module.controller.wechat")); 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; return config;
} }
...@@ -54,7 +63,7 @@ public class SwaggerPlatformConfig { ...@@ -54,7 +63,7 @@ public class SwaggerPlatformConfig {
ApiSelectorBuilder builder = docket.select(); ApiSelectorBuilder builder = docket.select();
//api过滤 //api过滤
builder = builder.apis( builder = builder.apis(
RequestHandlerSelectors.basePackage("com.makeit.module.controller") RequestHandlerSelectors.basePackage("com.makeit.module.controller.wechat")
); );
return builder.build(); return builder.build();
} }
...@@ -64,7 +73,7 @@ public class SwaggerPlatformConfig { ...@@ -64,7 +73,7 @@ public class SwaggerPlatformConfig {
Docket docket = new Docket(DocumentationType.SWAGGER_2) Docket docket = new Docket(DocumentationType.SWAGGER_2)
.apiInfo(apiInfo()) .apiInfo(apiInfo())
.groupName("04-微信端"); .groupName("04-平台端小程序");
ApiSelectorBuilder builder = docket.select(); ApiSelectorBuilder builder = docket.select();
//api过滤 //api过滤
builder = builder.apis( builder = builder.apis(
...@@ -73,6 +82,20 @@ public class SwaggerPlatformConfig { ...@@ -73,6 +82,20 @@ public class SwaggerPlatformConfig {
return builder.build(); 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() { private ApiInfo apiInfo() {
return new ApiInfoBuilder().title("IOT文档") return new ApiInfoBuilder().title("IOT文档")
......
package com.makeit.module.controller.wechat.alarm; package com.makeit.module.controller.children.alarm;
import com.makeit.common.dto.BaseIdDTO; import com.makeit.common.dto.BaseIdDTO;
......
package com.makeit.module.controller.wechat.elder; package com.makeit.module.controller.children.elder;
import com.makeit.common.dto.BaseIdDTO; import com.makeit.common.dto.BaseIdDTO;
...@@ -25,10 +25,10 @@ import java.util.List; ...@@ -25,10 +25,10 @@ import java.util.List;
* @author eugene young * @author eugene young
* @since 2023-08-29 * @since 2023-08-29
*/ */
@Api(tags = "长者基本信息-子女端小程序") @Api(tags = "子女端小程序-长者基本信息")
@RestController @RestController
@RequestMapping("/children/elder") @RequestMapping("/children/elder")
public class PlatElderWechatController { public class PlatElderChildrenController {
@Autowired @Autowired
private PlatElderService platElderService; private PlatElderService platElderService;
......
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.ApiResponseEntity;
...@@ -21,10 +21,10 @@ import org.springframework.web.bind.annotation.RestController; ...@@ -21,10 +21,10 @@ import org.springframework.web.bind.annotation.RestController;
* @author eugene young * @author eugene young
* @since 2023-08-29 * @since 2023-08-29
*/ */
@Api(tags = "长者子女账号-子女端小程序") @Api(tags = "子女端小程序-长者子女账号")
@RestController @RestController
@RequestMapping("/children/elder/children-info") @RequestMapping("/children/elder/children-info")
public class PlatElderChildrenInfoWechatController { public class PlatElderChildrenInfoChildrenController {
@Autowired @Autowired
private PlatElderChildrenInfoService platElderChildrenInfoService; 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.ApiResponseEntity;
import com.makeit.common.response.ApiResponseUtils; import com.makeit.common.response.ApiResponseUtils;
...@@ -13,10 +13,10 @@ import org.springframework.web.bind.annotation.RequestBody; ...@@ -13,10 +13,10 @@ import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController; import org.springframework.web.bind.annotation.RestController;
@Api(tags = "企微端-登录") @Api(tags = "子女端小程序-登录")
@RestController @RestController
@RequestMapping("/children/login") @RequestMapping("/children/login")
public class PlatElderChildrenInfoUserLoginWechatController { public class PlatElderChildrenInfoUserLoginChildrenController {
@Autowired @Autowired
private PlatElderChildrenInfoUserLoginWechatService platElderChildrenInfoUserLoginWechatService; 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();
}
}
...@@ -61,7 +61,7 @@ public class DataScreenController { ...@@ -61,7 +61,7 @@ public class DataScreenController {
@ApiOperation("地图统计") @ApiOperation("地图统计")
@PostMapping("mapStatistics") @PostMapping("mapStatistics")
public ApiResponseEntity<PlatMapStatisticsVO> mapStatistics(@RequestBody PlatDataScreenQueryDTO dto) { public ApiResponseEntity<List<PlatMapStatisticsVO>> mapStatistics(@RequestBody PlatDataScreenQueryDTO dto) {
return ApiResponseUtils.success(dataScreenService.mapStatistics(dto)); return ApiResponseUtils.success(dataScreenService.mapStatistics(dto));
} }
} }
...@@ -2,17 +2,23 @@ package com.makeit.module.controller.elder; ...@@ -2,17 +2,23 @@ package com.makeit.module.controller.elder;
import com.makeit.common.response.ApiResponseEntity; import com.makeit.common.response.ApiResponseEntity;
import com.makeit.common.response.ApiResponseUtils;
import com.makeit.dto.platform.elder.PlatElderIdDTO; 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.PlatElderRealTimeBodyVO;
import com.makeit.vo.platform.elder.realtime.PlatElderRealTimeHeartRespiratoryVO; import com.makeit.vo.platform.elder.realtime.PlatElderRealTimeHeartRespiratoryVO;
import com.makeit.vo.platform.elder.realtime.PlatElderRealTimeNowVO; import com.makeit.vo.platform.elder.realtime.PlatElderRealTimeNowVO;
import io.swagger.annotations.Api; import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation; 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.PostMapping;
import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController; import org.springframework.web.bind.annotation.RestController;
import java.util.List;
/** /**
* <p> * <p>
* 长者基本信息 前端控制器 * 长者基本信息 前端控制器
...@@ -26,24 +32,34 @@ import org.springframework.web.bind.annotation.RestController; ...@@ -26,24 +32,34 @@ import org.springframework.web.bind.annotation.RestController;
@RequestMapping("/plat/elder/realTime") @RequestMapping("/plat/elder/realTime")
public class PlatElderRealTimeController { public class PlatElderRealTimeController {
@Autowired
private PlatElderRealTimeService platElderRealTimeService;
@ApiOperation("现在状态") @ApiOperation("现在状态")
@PostMapping("nowStatus") @PostMapping("nowStatus")
public ApiResponseEntity<PlatElderRealTimeNowVO> nowStatus(@RequestBody PlatElderIdDTO platElderIdDTO) { public ApiResponseEntity<PlatElderRealTimeNowVO> nowStatus(@RequestBody PlatElderIdDTO platElderIdDTO) {
return null; return ApiResponseUtils.success(platElderRealTimeService.nowStatus(platElderIdDTO));
} }
@ApiOperation("心率呼吸率") @ApiOperation("心率呼吸率")
@PostMapping("heartRespiratory") @PostMapping("heartRespiratory")
public ApiResponseEntity<PlatElderRealTimeHeartRespiratoryVO> heartRespiratory(@RequestBody PlatElderIdDTO platElderIdDTO) { public ApiResponseEntity<PlatElderRealTimeHeartRespiratoryVO> heartRespiratory(@RequestBody PlatElderIdDTO platElderIdDTO) {
return null; return ApiResponseUtils.success(platElderRealTimeService.heartRespiratory(platElderIdDTO));
} }
@ApiOperation("体动") @ApiOperation("体动")
@PostMapping("body") @PostMapping("body")
public ApiResponseEntity<PlatElderRealTimeBodyVO> body(@RequestBody PlatElderIdDTO platElderIdDTO) { 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 少一个坐标 //TODO ywc 少一个坐标
} }
......
...@@ -3,6 +3,7 @@ package com.makeit.module.controller.elder; ...@@ -3,6 +3,7 @@ package com.makeit.module.controller.elder;
import com.makeit.common.response.ApiResponseEntity; import com.makeit.common.response.ApiResponseEntity;
import com.makeit.dto.platform.elder.PlatElderIdDTO; 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.realtime.PlatElderRealTimeHeartRespiratoryVO;
import com.makeit.vo.platform.elder.report.day.*; import com.makeit.vo.platform.elder.report.day.*;
import io.swagger.annotations.Api; import io.swagger.annotations.Api;
...@@ -59,7 +60,7 @@ public class PlatElderReportDayController { ...@@ -59,7 +60,7 @@ public class PlatElderReportDayController {
@ApiOperation("心率呼吸率") @ApiOperation("心率呼吸率")
@PostMapping("heartRespiratory") @PostMapping("heartRespiratory")
public ApiResponseEntity<PlatElderRealTimeHeartRespiratoryVO> heartRespiratory(@RequestBody PlatElderIdDTO platElderIdDTO) { public ApiResponseEntity<List<PlatElderRealTimeHeartRespiratoryVO>> heartRespiratory(@RequestBody PlatElderIdDTO platElderIdDTO) {
return null; return null;
} }
......
...@@ -3,7 +3,7 @@ package com.makeit.module.controller.elder; ...@@ -3,7 +3,7 @@ package com.makeit.module.controller.elder;
import com.makeit.common.response.ApiResponseEntity; import com.makeit.common.response.ApiResponseEntity;
import com.makeit.dto.platform.elder.PlatElderIdDTO; 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.week.PlatElderComprehensiveEvaluationVO;
import com.makeit.vo.platform.elder.report.day.*; import com.makeit.vo.platform.elder.report.day.*;
import com.makeit.vo.platform.elder.report.week.PlatElderRealTimeHeartRespiratoryWeekVO; import com.makeit.vo.platform.elder.report.week.PlatElderRealTimeHeartRespiratoryWeekVO;
......
...@@ -8,7 +8,7 @@ import com.makeit.common.response.ApiResponseEntity; ...@@ -8,7 +8,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.PlatAlarmRecordQueryDTO; import com.makeit.dto.platform.alarm.PlatAlarmRecordQueryDTO;
import com.makeit.service.platform.alarm.PlatAlarmRecordService; 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 com.makeit.vo.platform.alarm.PlatAlarmRecordVO;
import io.swagger.annotations.Api; import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiOperation;
...@@ -18,7 +18,7 @@ import org.springframework.web.bind.annotation.RequestBody; ...@@ -18,7 +18,7 @@ import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController; import org.springframework.web.bind.annotation.RestController;
@Api(tags = "小程序-告警记录") @Api(tags = "平台端小程序-告警记录")
@RestController @RestController
@RequestMapping("/wechat/plat/alarm-record") @RequestMapping("/wechat/plat/alarm-record")
public class PlatAlarmRecordWechatController { public class PlatAlarmRecordWechatController {
...@@ -30,7 +30,7 @@ public class PlatAlarmRecordWechatController { ...@@ -30,7 +30,7 @@ public class PlatAlarmRecordWechatController {
@PostMapping("page") @PostMapping("page")
public ApiResponseEntity<PageVO<PlatAlarmRecordVO>> page(@RequestBody PageReqDTO<PlatAlarmRecordQueryDTO> dto) { public ApiResponseEntity<PageVO<PlatAlarmRecordVO>> page(@RequestBody PageReqDTO<PlatAlarmRecordQueryDTO> dto) {
//小程序告警记录只看到发给自己的告警 //小程序告警记录只看到发给自己的告警
String userId = WechatUserUtil.getUserId(); String userId = CommonUserUtil.getUserId();
PlatAlarmRecordQueryDTO data = dto.getData(); PlatAlarmRecordQueryDTO data = dto.getData();
data.setNotifyUser(userId); data.setNotifyUser(userId);
return ApiResponseUtils.success(platAlarmRecordService.page(dto)); return ApiResponseUtils.success(platAlarmRecordService.page(dto));
......
...@@ -29,7 +29,7 @@ import org.springframework.web.bind.annotation.RestController; ...@@ -29,7 +29,7 @@ import org.springframework.web.bind.annotation.RestController;
* @author eugene young * @author eugene young
* @since 2023-09-05 * @since 2023-09-05
*/ */
@Api(tags = "设备-小程序") @Api(tags = "平台端小程序-设备")
@RestController @RestController
@RequestMapping("/wechat/plat/device") @RequestMapping("/wechat/plat/device")
public class PlatDeviceWechatController { public class PlatDeviceWechatController {
......
package com.makeit.module.controller.workstation; package com.makeit.module.controller.workstation;
import com.makeit.common.response.ApiResponseEntity;
import com.makeit.common.response.ApiResponseUtils;
import com.makeit.dto.platform.dataScreen.PlatDataScreenQueryDTO;
import com.makeit.dto.platform.workstation.WorkStationQueryDTO;
import com.makeit.service.platform.workstation.WorkStationService;
import com.makeit.vo.platform.dataScreen.PlatAgeStatisticsVO;
import com.makeit.vo.platform.workstation.WorkStationStatisticsVO;
import io.swagger.annotations.Api; 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.RequestMapping;
import org.springframework.web.bind.annotation.RestController; import org.springframework.web.bind.annotation.RestController;
...@@ -9,5 +20,13 @@ import org.springframework.web.bind.annotation.RestController; ...@@ -9,5 +20,13 @@ import org.springframework.web.bind.annotation.RestController;
@RequestMapping("/plat/workstation") @RequestMapping("/plat/workstation")
public class WorkStationController { public class WorkStationController {
@Autowired
private WorkStationService workStationService;
@ApiOperation("统计")
@PostMapping("statistics")
public ApiResponseEntity<WorkStationStatisticsVO> statistics(@RequestBody WorkStationQueryDTO dto) {
return ApiResponseUtils.success(workStationService.statistics(dto));
}
} }
...@@ -28,4 +28,5 @@ public class PlatDataScreenQueryDTO { ...@@ -28,4 +28,5 @@ public class PlatDataScreenQueryDTO {
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@ApiModelProperty("结束时间") @ApiModelProperty("结束时间")
private LocalDateTime endTime; private LocalDateTime endTime;
} }
package com.makeit.dto.platform.workstation;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.time.LocalDateTime;
import java.util.List;
/**
* Controller
*
* @author zm
* @version 2023/9/11
*/
@Data
@ApiModel("PlatDataScreenQueryDto参数")
public class WorkStationQueryDTO {
@ApiModelProperty("组织ids")
private List<String> orgIds;
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@ApiModelProperty("开始时间")
private LocalDateTime startTime;
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@ApiModelProperty("结束时间")
private LocalDateTime endTime;
@ApiModelProperty("长者姓名")
private String elderName;
@ApiModelProperty("空间ids")
private List<String> spaceIds;
@ApiModelProperty("告警类型")
private String type;
}
...@@ -33,4 +33,8 @@ public class PlatRole extends BaseBusEntity { ...@@ -33,4 +33,8 @@ public class PlatRole extends BaseBusEntity {
private String dataScope; private String dataScope;
private String orgId; private String orgId;
private String code;
private String status;
} }
\ No newline at end of file
...@@ -72,5 +72,8 @@ public class PlatDevice extends BaseBusEntity { ...@@ -72,5 +72,8 @@ public class PlatDevice extends BaseBusEntity {
@ApiModelProperty(value = "设备类型 0-呼吸心率雷达 1-空间人体雷达 2-跌倒检测雷达") @ApiModelProperty(value = "设备类型 0-呼吸心率雷达 1-空间人体雷达 2-跌倒检测雷达")
private String category; private String category;
private LocalDateTime startDate;
private LocalDateTime endDate;
} }
...@@ -8,6 +8,8 @@ import io.swagger.annotations.ApiModelProperty; ...@@ -8,6 +8,8 @@ import io.swagger.annotations.ApiModelProperty;
import lombok.Data; import lombok.Data;
import lombok.EqualsAndHashCode; import lombok.EqualsAndHashCode;
import java.time.LocalDateTime;
/** /**
* <p> * <p>
* 长者基本信息 * 长者基本信息
...@@ -186,5 +188,11 @@ public class PlatElder extends BaseBusEntity { ...@@ -186,5 +188,11 @@ public class PlatElder extends BaseBusEntity {
@ApiModelProperty(value = "组织路径") @ApiModelProperty(value = "组织路径")
private String orgPath; private String orgPath;
@ApiModelProperty(value = "入住时间")
private LocalDateTime checkInTime;
@ApiModelProperty(value = "退住时间")
private LocalDateTime checkOutTime;
} }
...@@ -56,5 +56,5 @@ public interface PlatAlarmRecordService extends IService<PlatAlarmRecord> { ...@@ -56,5 +56,5 @@ public interface PlatAlarmRecordService extends IService<PlatAlarmRecord> {
PlatAlarmRecord createPlatAlarmRecord(PlatAlarmCheckDTO platAlarmCheckDTO); PlatAlarmRecord createPlatAlarmRecord(PlatAlarmCheckDTO platAlarmCheckDTO);
PlatAlarmCheckDTO getElderListByDeviceId(PlatAlarmCheckDTO platAlarmCheckDTO); void getElderListByDeviceId(PlatAlarmCheckDTO platAlarmCheckDTO);
} }
package com.makeit.service.platform.alarm.alarmStrategy; package com.makeit.service.platform.alarm.alarmStrategy;
import cn.hutool.core.convert.Convert;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import com.makeit.dto.platform.alarm.PlatAlarmCheckDTO; import com.makeit.dto.platform.alarm.PlatAlarmCheckDTO;
import com.makeit.dto.platform.alarm.PlatAlarmConfigBehaviorDTOVO; import com.makeit.dto.platform.alarm.PlatAlarmConfigBehaviorDTOVO;
...@@ -46,7 +47,7 @@ public class BehaviorAlarm implements IAlarm{ ...@@ -46,7 +47,7 @@ public class BehaviorAlarm implements IAlarm{
if (StringUtils.isBlank(ruleConfigStr)) { if (StringUtils.isBlank(ruleConfigStr)) {
return; return;
} }
String personState = (String) properties.get("personState"); String personState = Convert.toStr(properties.get("personState"));
PlatAlarmConfigBehaviorDTOVO ruleConfig = JsonUtil.toObj(ruleConfigStr, PlatAlarmConfigBehaviorDTOVO.class); PlatAlarmConfigBehaviorDTOVO ruleConfig = JsonUtil.toObj(ruleConfigStr, PlatAlarmConfigBehaviorDTOVO.class);
Integer duration = ruleConfig.getDuration(); Integer duration = ruleConfig.getDuration();
duration = duration*60; duration = duration*60;
......
package com.makeit.service.platform.alarm.alarmStrategy; package com.makeit.service.platform.alarm.alarmStrategy;
import cn.hutool.core.convert.Convert;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import com.makeit.dto.platform.alarm.PlatAlarmCheckDTO; import com.makeit.dto.platform.alarm.PlatAlarmCheckDTO;
import com.makeit.dto.platform.alarm.PlatAlarmConfigRespiratoryDTOVO; import com.makeit.dto.platform.alarm.PlatAlarmConfigRespiratoryDTOVO;
...@@ -48,7 +49,7 @@ public class BreathAlarm implements IAlarm{ ...@@ -48,7 +49,7 @@ public class BreathAlarm implements IAlarm{
if (StringUtils.isBlank(ruleConfigStr)) { if (StringUtils.isBlank(ruleConfigStr)) {
return; return;
} }
String personState = (String) properties.get("personState"); String personState = Convert.toStr(properties.get("personState"));
//呼吸率 //呼吸率
int br = (int) properties.get("br"); int br = (int) properties.get("br");
......
package com.makeit.service.platform.alarm.alarmStrategy; package com.makeit.service.platform.alarm.alarmStrategy;
import cn.hutool.core.convert.Convert;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import com.makeit.dto.platform.alarm.PlatAlarmCheckDTO; import com.makeit.dto.platform.alarm.PlatAlarmCheckDTO;
import com.makeit.entity.platform.alarm.PlatAlarmRecord; 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.enums.platform.alarm.PlatAlarmConfigEnum;
import com.makeit.service.platform.alarm.PlatAlarmRecordService; import com.makeit.service.platform.alarm.PlatAlarmRecordService;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.scheduling.annotation.Async;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import java.util.ArrayList;
import java.util.List;
@Component @Component
public class FallAlarm implements IAlarm{ public class FallAlarm implements IAlarm{
@Autowired @Autowired
...@@ -29,18 +35,27 @@ public class FallAlarm implements IAlarm{ ...@@ -29,18 +35,27 @@ public class FallAlarm implements IAlarm{
@Override @Override
public void checkConfig(PlatAlarmCheckDTO platAlarmCheckDTO) { public void checkConfig(PlatAlarmCheckDTO platAlarmCheckDTO) {
JSONObject properties = platAlarmCheckDTO.getProperties(); JSONObject properties = platAlarmCheckDTO.getProperties();
String personState = (String) properties.get("personState"); String personState = Convert.toStr(properties.get("personState"));
if (StringUtils.equals(personState, "1")) { if (StringUtils.equals(personState, "1")) {
notice(platAlarmCheckDTO); notice(platAlarmCheckDTO);
} }
} }
@Override @Override
@Async
public void notice(PlatAlarmCheckDTO platAlarmCheckDTO) { public void notice(PlatAlarmCheckDTO platAlarmCheckDTO) {
platAlarmRecordService.getElderListByDeviceId(platAlarmCheckDTO); platAlarmRecordService.getElderListByDeviceId(platAlarmCheckDTO);
platAlarmCheckDTO.getParam().add("房间名111"); 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); PlatAlarmRecord platAlarmRecord = platAlarmRecordService.createPlatAlarmRecord(platAlarmCheckDTO);
platAlarmRecordService.noticeDeviceAlarm(platAlarmCheckDTO.getPlatAlarmConfig(),platAlarmRecord); platAlarmRecordService.noticeDeviceAlarm(platAlarmCheckDTO.getPlatAlarmConfig(),platAlarmRecord);
} }
}
} }
package com.makeit.service.platform.alarm.alarmStrategy; package com.makeit.service.platform.alarm.alarmStrategy;
import cn.hutool.core.convert.Convert;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import com.makeit.dto.platform.alarm.PlatAlarmCheckDTO; import com.makeit.dto.platform.alarm.PlatAlarmCheckDTO;
import com.makeit.dto.platform.alarm.PlatAlarmConfigHeartDTOVO; import com.makeit.dto.platform.alarm.PlatAlarmConfigHeartDTOVO;
...@@ -40,7 +41,7 @@ public class HeartAlarm implements IAlarm { ...@@ -40,7 +41,7 @@ public class HeartAlarm implements IAlarm {
if (StringUtils.isBlank(ruleConfigStr)) { if (StringUtils.isBlank(ruleConfigStr)) {
return; return;
} }
String personState = (String) properties.get("personState"); String personState = Convert.toStr(properties.get("personState"));
//心率 //心率
int hr = (int) properties.get("hr"); int hr = (int) properties.get("hr");
PlatAlarmConfigHeartDTOVO ruleConfig = JsonUtil.toObj(ruleConfigStr, PlatAlarmConfigHeartDTOVO.class); PlatAlarmConfigHeartDTOVO ruleConfig = JsonUtil.toObj(ruleConfigStr, PlatAlarmConfigHeartDTOVO.class);
......
...@@ -255,6 +255,9 @@ public class PlatAlarmRecordServiceImpl extends ServiceImpl<PlatAlarmRecordMappe ...@@ -255,6 +255,9 @@ public class PlatAlarmRecordServiceImpl extends ServiceImpl<PlatAlarmRecordMappe
platUserList.addAll(platUsers); platUserList.addAll(platUsers);
} else { } else {
String notifyUser = alarmConfig.getNotifyUser(); String notifyUser = alarmConfig.getNotifyUser();
if(StringUtils.isBlank(notifyUser)){
throw new BusinessException("告警内部人员未配置,告警配置id:"+alarmConfig.getId());
}
String[] userArray = notifyUser.split(","); String[] userArray = notifyUser.split(",");
List<PlatUser> platUsers = platUserService.listByIds(Arrays.asList(userArray)); List<PlatUser> platUsers = platUserService.listByIds(Arrays.asList(userArray));
platUserList.addAll(platUsers); platUserList.addAll(platUsers);
...@@ -322,23 +325,25 @@ public class PlatAlarmRecordServiceImpl extends ServiceImpl<PlatAlarmRecordMappe ...@@ -322,23 +325,25 @@ public class PlatAlarmRecordServiceImpl extends ServiceImpl<PlatAlarmRecordMappe
@Override @Override
public PlatAlarmCheckDTO getElderListByDeviceId(PlatAlarmCheckDTO platAlarmCheckDTO) { public void getElderListByDeviceId(PlatAlarmCheckDTO platAlarmCheckDTO) {
PlatDevice platDevice = platAlarmCheckDTO.getPlatDevice(); PlatDevice platDevice = platAlarmCheckDTO.getPlatDevice();
LambdaQueryWrapper<PlatRoomBedDevice> roomBedDeviceLambdaQueryWrapper = new LambdaQueryWrapper<>(); LambdaQueryWrapper<PlatRoomBedDevice> roomBedDeviceLambdaQueryWrapper = new LambdaQueryWrapper<>();
roomBedDeviceLambdaQueryWrapper.eq(PlatRoomBedDevice::getDeviceId, platDevice.getId()); roomBedDeviceLambdaQueryWrapper.eq(PlatRoomBedDevice::getDeviceId, platDevice.getId());
PlatRoomBedDevice platRoomBedDevice = platRoomBedDeviceService.getOne(roomBedDeviceLambdaQueryWrapper, false); PlatRoomBedDevice platRoomBedDevice = platRoomBedDeviceService.getOne(roomBedDeviceLambdaQueryWrapper, false);
if(platRoomBedDevice==null){
throw new BusinessException("设备没绑定房间:"+platDevice.getId());
}
PlatRoom platRoom = platRoomService.getById(platRoomBedDevice.getRoomId()); PlatRoom platRoom = platRoomService.getById(platRoomBedDevice.getRoomId());
platAlarmCheckDTO.setPlatRoom(platRoom); platAlarmCheckDTO.setPlatRoom(platRoom);
if (platRoomBedDevice == null) {
return platAlarmCheckDTO;
}
String bedId = platRoomBedDevice.getBedId(); String bedId = platRoomBedDevice.getBedId();
if (StringUtils.isNotBlank(bedId)) { if (StringUtils.isNotBlank(bedId)) {
LambdaQueryWrapper<PlatElder> elderLambdaQueryWrapper = new LambdaQueryWrapper<>(); LambdaQueryWrapper<PlatElder> elderLambdaQueryWrapper = new LambdaQueryWrapper<>();
elderLambdaQueryWrapper.eq(PlatElder::getBedId, bedId); elderLambdaQueryWrapper.eq(PlatElder::getBedId, bedId);
List<PlatElder> list = platElderService.list(elderLambdaQueryWrapper); List<PlatElder> list = platElderService.list(elderLambdaQueryWrapper);
platAlarmCheckDTO.setPlatElderList(list); platAlarmCheckDTO.setPlatElderList(list);
return platAlarmCheckDTO; if(CollectionUtils.isEmpty(list)){
throw new BusinessException("床位没人");
}
} }
String roomId = platRoomBedDevice.getRoomId(); String roomId = platRoomBedDevice.getRoomId();
...@@ -347,9 +352,10 @@ public class PlatAlarmRecordServiceImpl extends ServiceImpl<PlatAlarmRecordMappe ...@@ -347,9 +352,10 @@ public class PlatAlarmRecordServiceImpl extends ServiceImpl<PlatAlarmRecordMappe
elderLambdaQueryWrapper.eq(PlatElder::getRoomId, roomId); elderLambdaQueryWrapper.eq(PlatElder::getRoomId, roomId);
List<PlatElder> list = platElderService.list(elderLambdaQueryWrapper); List<PlatElder> list = platElderService.list(elderLambdaQueryWrapper);
platAlarmCheckDTO.setPlatElderList(list); platAlarmCheckDTO.setPlatElderList(list);
return platAlarmCheckDTO; if(CollectionUtils.isEmpty(list)) {
throw new BusinessException("房间没人");
}
} }
return platAlarmCheckDTO;
} }
private String replaceParam(String oriContent,List<String> param) { private String replaceParam(String oriContent,List<String> param) {
......
...@@ -276,9 +276,6 @@ public class PlatOrgServiceImpl extends ServiceImpl<PlatOrgMapper, PlatOrg> ...@@ -276,9 +276,6 @@ public class PlatOrgServiceImpl extends ServiceImpl<PlatOrgMapper, PlatOrg>
check(dto); check(dto);
dto.setTenantId(TenantIdUtil.getTenantId()); dto.setTenantId(TenantIdUtil.getTenantId());
if (StringUtils.isBlank(dto.getParentId())) { if (StringUtils.isBlank(dto.getParentId())) {
String tenantId = TenantIdUtil.getTenantId();
dto.setParentId(tenantId);
dto.setPath(tenantId);
} else { } else {
PlatOrg parent = getById(dto.getParentId()); PlatOrg parent = getById(dto.getParentId());
dto.setPath(parent.getPath() + "," + parent.getId()); dto.setPath(parent.getPath() + "," + parent.getId());
...@@ -302,9 +299,6 @@ public class PlatOrgServiceImpl extends ServiceImpl<PlatOrgMapper, PlatOrg> ...@@ -302,9 +299,6 @@ public class PlatOrgServiceImpl extends ServiceImpl<PlatOrgMapper, PlatOrg>
public void edit(PlatOrg dto) { public void edit(PlatOrg dto) {
check(dto); check(dto);
if (StringUtils.isBlank(dto.getParentId())||StringUtils.equals(dto.getParentId(),"1")) { if (StringUtils.isBlank(dto.getParentId())||StringUtils.equals(dto.getParentId(),"1")) {
String tenantId = TenantIdUtil.getTenantId();
dto.setParentId(tenantId);
dto.setPath(tenantId);
} else { } else {
PlatOrg parent = getById(dto.getParentId()); PlatOrg parent = getById(dto.getParentId());
dto.setPath(parent.getPath() + "," + parent.getId()); dto.setPath(parent.getPath() + "," + parent.getId());
...@@ -521,6 +515,7 @@ public class PlatOrgServiceImpl extends ServiceImpl<PlatOrgMapper, PlatOrg> ...@@ -521,6 +515,7 @@ public class PlatOrgServiceImpl extends ServiceImpl<PlatOrgMapper, PlatOrg>
queryWrapper.eq(StringUtils.isNotBlank(dto.getParentId()), PlatOrg::getParentId, dto.getParentId()) queryWrapper.eq(StringUtils.isNotBlank(dto.getParentId()), PlatOrg::getParentId, dto.getParentId())
.like(StringUtils.isNotBlank(dto.getName()),PlatOrg::getName,dto.getName()) .like(StringUtils.isNotBlank(dto.getName()),PlatOrg::getName,dto.getName())
.eq(StringUtils.isNotBlank(dto.getType()),PlatOrg::getType,dto.getType()) .eq(StringUtils.isNotBlank(dto.getType()),PlatOrg::getType,dto.getType())
.eq(StringUtils.isNotBlank(dto.getStatus()),PlatOrg::getStatus,dto.getStatus())
.orderByDesc(BaseEntity::getUpdateDate); .orderByDesc(BaseEntity::getUpdateDate);
return queryWrapper; return queryWrapper;
} }
......
...@@ -229,7 +229,7 @@ implements PlatRoleService { ...@@ -229,7 +229,7 @@ implements PlatRoleService {
throw new BusinessException(CodeMessageEnum.SYSTEM_ERROR); throw new BusinessException(CodeMessageEnum.SYSTEM_ERROR);
} }
PlatRole role = getById(dto.getId()); PlatRole role = getById(dto.getId());
role.setStatus(dto.getStatus());
updateById(role); updateById(role);
} }
......
...@@ -466,7 +466,7 @@ public class PlatUserServiceImpl extends ServiceImpl<PlatUserMapper, PlatUser> ...@@ -466,7 +466,7 @@ public class PlatUserServiceImpl extends ServiceImpl<PlatUserMapper, PlatUser>
private void setRoleMenuToRedis(PlatUserLoginVO userLoginVO) { private void setRoleMenuToRedis(PlatUserLoginVO userLoginVO) {
PlatUserRoleMenuRedisVO tntUserRoleMenuRedisVO = new PlatUserRoleMenuRedisVO(); PlatUserRoleMenuRedisVO tntUserRoleMenuRedisVO = new PlatUserRoleMenuRedisVO();
tntUserRoleMenuRedisVO.setId(userLoginVO.getId()); tntUserRoleMenuRedisVO.setId(userLoginVO.getId());
tntUserRoleMenuRedisVO.setIsTenant(tntUserRoleMenuRedisVO.getIsTenant()); tntUserRoleMenuRedisVO.setIsTenant(userLoginVO.getIsTenant());
if (userLoginVO.getRoleList() != null) { if (userLoginVO.getRoleList() != null) {
tntUserRoleMenuRedisVO.setRoleCodeList(StreamUtil.map(userLoginVO.getRoleList(), PlatRoleDTOVO::getId)); tntUserRoleMenuRedisVO.setRoleCodeList(StreamUtil.map(userLoginVO.getRoleList(), PlatRoleDTOVO::getId));
} }
......
...@@ -22,5 +22,5 @@ public interface DataScreenService { ...@@ -22,5 +22,5 @@ public interface DataScreenService {
PlatBaseInfoStatisticsVO baseInfoStatistics(PlatDataScreenQueryDTO dto); PlatBaseInfoStatisticsVO baseInfoStatistics(PlatDataScreenQueryDTO dto);
PlatMapStatisticsVO mapStatistics(PlatDataScreenQueryDTO dto); List<PlatMapStatisticsVO> mapStatistics(PlatDataScreenQueryDTO dto);
} }
...@@ -36,6 +36,7 @@ import org.springframework.stereotype.Service; ...@@ -36,6 +36,7 @@ import org.springframework.stereotype.Service;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.util.*; import java.util.*;
import java.util.function.Function;
import java.util.stream.Collectors; import java.util.stream.Collectors;
/** /**
...@@ -136,14 +137,18 @@ public class DataScreenServiceImpl implements DataScreenService { ...@@ -136,14 +137,18 @@ public class DataScreenServiceImpl implements DataScreenService {
if(StringUtil.isNotEmpty(record.getElderIds())){ if(StringUtil.isNotEmpty(record.getElderIds())){
List<String> elderIds = Arrays.asList(record.getElderIds().split(",")); List<String> elderIds = Arrays.asList(record.getElderIds().split(","));
PlatAlarmStatisticsListVo listVo = new PlatAlarmStatisticsListVo(); PlatAlarmStatisticsListVo listVo = new PlatAlarmStatisticsListVo();
String elderName = "";
for (String elderId : elderIds){ for (String elderId : elderIds){
if(elderNameMap.get(elderId)!=null){ if(elderNameMap.get(elderId)!=null){
listVo.setElderName(elderNameMap.get(elderId)); elderName = "".equals(elderName) ? elderNameMap.get(elderId) : elderName + "," + elderNameMap.get(elderId);
}
} }
listVo.setType(record.getAlarmType());
if(PlatAlarmConfigEnum.AlarmTypeEnum.HEART.getValue().equals(record.getAlarmType()) || if(PlatAlarmConfigEnum.AlarmTypeEnum.HEART.getValue().equals(record.getAlarmType()) ||
PlatAlarmConfigEnum.AlarmTypeEnum.BREATHE.getValue().equals(record.getAlarmType()) ){ PlatAlarmConfigEnum.AlarmTypeEnum.BREATHE.getValue().equals(record.getAlarmType()) ){
} }
listVo.setElderName(elderName);
listVo.setType(record.getAlarmType());
totla ++; totla ++;
if(PlatAlarmRecordEnum.AlarmRecordStatusEnum.HANDLED.getValue().equals(record.getStatus())){ if(PlatAlarmRecordEnum.AlarmRecordStatusEnum.HANDLED.getValue().equals(record.getStatus())){
handledNumber ++; handledNumber ++;
...@@ -152,8 +157,6 @@ public class DataScreenServiceImpl implements DataScreenService { ...@@ -152,8 +157,6 @@ public class DataScreenServiceImpl implements DataScreenService {
} }
list.add(listVo); list.add(listVo);
} }
}
} }
PlatAlarmStatisticsVO vo = new PlatAlarmStatisticsVO(); PlatAlarmStatisticsVO vo = new PlatAlarmStatisticsVO();
vo.setTotla(totla); vo.setTotla(totla);
...@@ -183,36 +186,82 @@ public class DataScreenServiceImpl implements DataScreenService { ...@@ -183,36 +186,82 @@ public class DataScreenServiceImpl implements DataScreenService {
} }
@Override @Override
public PlatMapStatisticsVO mapStatistics(PlatDataScreenQueryDTO dto) { public List<PlatMapStatisticsVO> mapStatistics(PlatDataScreenQueryDTO dto) {
PlatMapStatisticsVO vo = new PlatMapStatisticsVO(); List<PlatMapStatisticsVO> list = new ArrayList<>();
List<PlatOrg> orgs = platOrgService.list(new QueryWrapper<PlatOrg>().lambda()
.in(PlatOrg::getId, dto.getOrgIds()));
//取范围最大的管辖区域
List<PlatOrg> tree = platOrgService.createOrgTree(orgs);
List<String> region = tree.stream().filter(t->StringUtil.isNotEmpty(t.getRegion())).map(PlatOrg::getRegion).collect(Collectors.toList());
List<ChinaAreaVO> areas = AreaUtil.getByCodeList(region);
List<PlatSpace> spaces = platSpaceService.list(new QueryWrapper<PlatSpace>().lambda() List<PlatSpace> spaces = platSpaceService.list(new QueryWrapper<PlatSpace>().lambda()
.isNull(PlatSpace::getParentId) .isNull(PlatSpace::getParentId)
.in(PlatSpace::getOrgId, dto.getOrgIds())); .in(PlatSpace::getOrgId, dto.getOrgIds()));
List<PlatElder> elders = platElderService.list(new QueryWrapper<PlatElder>().lambda() List<PlatElder> elders = platElderService.list(new QueryWrapper<PlatElder>().lambda()
.isNotNull(PlatElder::getBedId) .isNotNull(PlatElder::getBedId)
.in(PlatElder::getOrgId, dto.getOrgIds())); .in(PlatElder::getOrgId, dto.getOrgIds()));
for(PlatElder elder : elders){
if(StringUtil.isNotEmpty(elder.getStreetSpaceId())){
elder.setSpaceId(elder.getStreetSpaceId());
}else {
if(StringUtil.isNotEmpty(elder.getBuildingSpaceId())) {
elder.setSpaceId(elder.getBuildingSpaceId());
}else {
if(StringUtil.isNotEmpty(elder.getUnitSpaceId())){
elder.setSpaceId(elder.getUnitSpaceId());
}else {
if(StringUtil.isNotEmpty(elder.getFloorSpaceId())){
elder.setSpaceId(elder.getFloorSpaceId());
}
}
}
}
}
Map<String,List<PlatElder>> elderMap = elders.stream().collect(Collectors.groupingBy(PlatElder::getSpaceId)); Map<String,List<PlatElder>> elderMap = elders.stream().collect(Collectors.groupingBy(PlatElder::getSpaceId));
List<PlatMapStatisticsSpaceVO> list = new ArrayList<>(); Map<String,PlatElder> platElderMap = elders.stream().collect(Collectors.toMap(PlatElder::getId, Function.identity()));
//今日告警
List<PlatAlarmRecord> alarmRecords = platAlarmRecordService.list(new QueryWrapper<PlatAlarmRecord>().lambda()
.between(PlatAlarmRecord::getAlarmDate,dto.getStartTime(),dto.getEndTime())
.in(PlatAlarmRecord::getOrgId, dto.getOrgIds()));
List<PlatAlarmRecordStatisticsVo> statisticsVos = coverToVoList(alarmRecords, platElderMap);
Map<String, List<PlatAlarmRecordStatisticsVo>> staticsMap = statisticsVos.stream().collect(Collectors.groupingBy(PlatAlarmRecordStatisticsVo::getSpaceId));
//待处理告警
List<PlatAlarmRecord> unHandledAlarmRecords = platAlarmRecordService.list(new QueryWrapper<PlatAlarmRecord>().lambda()
.eq(PlatAlarmRecord::getStatus, PlatAlarmRecordEnum.AlarmRecordStatusEnum.UNHANDLED.getValue())
.in(PlatAlarmRecord::getOrgId, dto.getOrgIds()));
List<PlatAlarmRecordStatisticsVo> unHandledStatisticsVos = coverToVoList(unHandledAlarmRecords, platElderMap);
Map<String, List<PlatAlarmRecordStatisticsVo>> unHandledStaticsMap = unHandledStatisticsVos.stream().collect(Collectors.groupingBy(PlatAlarmRecordStatisticsVo::getSpaceId));
for(PlatSpace space : spaces){ for(PlatSpace space : spaces){
PlatMapStatisticsSpaceVO spaceVo = new PlatMapStatisticsSpaceVO(); PlatMapStatisticsVO vo = new PlatMapStatisticsVO();
spaceVo.setSpaceId(space.getId()); vo.setSpaceId(space.getId());
spaceVo.setSpaceName(space.getName()); vo.setSpaceName(space.getName());
spaceVo.setLatitude(space.getLatitude()); vo.setLatitude(space.getLatitude());
spaceVo.setLongitude(space.getLongitude()); vo.setLongitude(space.getLongitude());
if(elderMap.get(space.getId())!=null){ if(elderMap.get(space.getId())!=null){
spaceVo.setElderNumber(Long.valueOf(elderMap.get(space.getId()).size())); vo.setElderNumber(Long.valueOf(elderMap.get(space.getId()).size()));
}
if(staticsMap.get(space.getId())!=null){
vo.setAlarmNumber(Long.valueOf(staticsMap.get(space.getId()).size()));
}
if(unHandledStaticsMap.get(space.getId())!=null){
vo.setUnHandledNumber(Long.valueOf(unHandledStaticsMap.get(space.getId()).size()));
}
list.add(vo);
} }
return list;
} }
vo.setAreas(areas);
return vo; private List<PlatAlarmRecordStatisticsVo> coverToVoList(List<PlatAlarmRecord> alarmRecords, Map<String,PlatElder> platElderMap) {
List<PlatAlarmRecordStatisticsVo> statisticsVos = new ArrayList<>();
alarmRecords.forEach(record->{
List<String> elderIds = Arrays.asList(record.getElderIds().split(","));
if(StringUtil.isNotEmpty(record.getElderIds())
&& elderIds.size()>0){
if(platElderMap.get(elderIds.get(0))!=null){
PlatAlarmRecordStatisticsVo statisticsVo = BeanDtoVoUtils.convert(record, PlatAlarmRecordStatisticsVo.class);
statisticsVo.setSpaceId(platElderMap.get(elderIds.get(0)).getSpaceId());
statisticsVos.add(statisticsVo);
}
}
});
return statisticsVos;
} }
......
...@@ -18,7 +18,6 @@ import com.makeit.entity.platform.device.PlatDevice; ...@@ -18,7 +18,6 @@ import com.makeit.entity.platform.device.PlatDevice;
import com.makeit.entity.platform.device.PlatDeviceOther; import com.makeit.entity.platform.device.PlatDeviceOther;
import com.makeit.enums.CodeMessageEnum; import com.makeit.enums.CodeMessageEnum;
import com.makeit.exception.BusinessException; import com.makeit.exception.BusinessException;
import com.makeit.global.aspect.tenant.TenantIdIgnore;
import com.makeit.mapper.platform.device.PlatDeviceMapper; import com.makeit.mapper.platform.device.PlatDeviceMapper;
import com.makeit.service.platform.auth.PlatOrgService; import com.makeit.service.platform.auth.PlatOrgService;
import com.makeit.service.platform.device.PlatDeviceOtherService; import com.makeit.service.platform.device.PlatDeviceOtherService;
...@@ -180,7 +179,6 @@ public class PlatDeviceServiceImpl extends ServiceImpl<PlatDeviceMapper, PlatDev ...@@ -180,7 +179,6 @@ public class PlatDeviceServiceImpl extends ServiceImpl<PlatDeviceMapper, PlatDev
} }
@Override @Override
@TenantIdIgnore
public PageVO<PlatDevice> pageSaas(PageReqDTO<PlatDevice> pageReqDTO) { public PageVO<PlatDevice> pageSaas(PageReqDTO<PlatDevice> pageReqDTO) {
PlatDevice param = pageReqDTO.getData(); PlatDevice param = pageReqDTO.getData();
Page<PlatDevice> page = PageUtil.toMpPage(pageReqDTO); 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; ...@@ -7,6 +7,7 @@ import com.makeit.common.vo.ExcelImportVo;
import com.makeit.dto.platform.elder.*; import com.makeit.dto.platform.elder.*;
import com.makeit.dto.platform.elder.add.PlatElderAddDTO; import com.makeit.dto.platform.elder.add.PlatElderAddDTO;
import com.makeit.dto.platform.elder.add.PlatElderDTOVO; 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.entity.platform.elder.PlatElder;
import com.makeit.vo.platform.elder.PlatElderListVO; import com.makeit.vo.platform.elder.PlatElderListVO;
import com.makeit.vo.wechat.elder.PlatElderWechatSimpleVO; import com.makeit.vo.wechat.elder.PlatElderWechatSimpleVO;
...@@ -49,6 +50,10 @@ public interface PlatElderService extends IService<PlatElder> { ...@@ -49,6 +50,10 @@ public interface PlatElderService extends IService<PlatElder> {
void delBatch(List<String> idList); void delBatch(List<String> idList);
PlatDevice getBreathDevice(String id);
List<PlatDevice> getSpaceDevice(String id);
/*小程序*/ /*小程序*/
List<PlatElderWechatSimpleVO> listMy(); List<PlatElderWechatSimpleVO> listMy();
/*小程序*/ /*小程序*/
......
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 ...@@ -44,7 +44,7 @@ public class PlatElderPhysicalReportServiceImpl extends ServiceImpl<PlatElderPhy
List<PlatElderPhysicalReportDTOVO> voList = BeanDtoVoUtils.listVo(voPage.getRecords(), PlatElderPhysicalReportDTOVO.class); 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); return PageUtil.toPageVO(voList, voPage);
} }
...@@ -56,7 +56,7 @@ public class PlatElderPhysicalReportServiceImpl extends ServiceImpl<PlatElderPhy ...@@ -56,7 +56,7 @@ public class PlatElderPhysicalReportServiceImpl extends ServiceImpl<PlatElderPhy
List<PlatElderPhysicalReportDTOVO> voList = BeanDtoVoUtils.listVo(list, PlatElderPhysicalReportDTOVO.class); List<PlatElderPhysicalReportDTOVO> voList = BeanDtoVoUtils.listVo(list, PlatElderPhysicalReportDTOVO.class);
FileUtil.convert(voList, PlatElderPhysicalReportDTOVO::getElderId, PlatElderPhysicalReportDTOVO::setReportFile); FileUtil.convert(voList, PlatElderPhysicalReportDTOVO::getReportId, PlatElderPhysicalReportDTOVO::setReportFile);
return voList; return voList;
} }
...@@ -74,7 +74,7 @@ public class PlatElderPhysicalReportServiceImpl extends ServiceImpl<PlatElderPhy ...@@ -74,7 +74,7 @@ public class PlatElderPhysicalReportServiceImpl extends ServiceImpl<PlatElderPhy
public PlatElderPhysicalReportDTOVO view(String id) { public PlatElderPhysicalReportDTOVO view(String id) {
PlatElderPhysicalReportDTOVO vo = BeanDtoVoUtils.convert(getById(id), PlatElderPhysicalReportDTOVO.class); 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; 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; ...@@ -16,6 +16,7 @@ import com.makeit.dto.platform.elder.PlatElderQueryDTO;
import com.makeit.dto.platform.elder.add.*; import com.makeit.dto.platform.elder.add.*;
import com.makeit.dto.platform.space.TreeDTOVO; import com.makeit.dto.platform.space.TreeDTOVO;
import com.makeit.entity.platform.auth.PlatOrg; 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.PlatElder;
import com.makeit.entity.platform.elder.PlatElderHealthInfo; import com.makeit.entity.platform.elder.PlatElderHealthInfo;
import com.makeit.entity.platform.elder.PlatElderOtherInfo; import com.makeit.entity.platform.elder.PlatElderOtherInfo;
...@@ -32,6 +33,7 @@ import com.makeit.mapper.platform.elder.PlatElderMapper; ...@@ -32,6 +33,7 @@ import com.makeit.mapper.platform.elder.PlatElderMapper;
import com.makeit.service.platform.auth.PlatOrgService; import com.makeit.service.platform.auth.PlatOrgService;
import com.makeit.service.platform.elder.*; import com.makeit.service.platform.elder.*;
import com.makeit.service.platform.space.PlatBedService; 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.PlatRoomService;
import com.makeit.service.platform.space.PlatSpaceService; import com.makeit.service.platform.space.PlatSpaceService;
import com.makeit.utils.data.convert.BeanDtoVoUtils; import com.makeit.utils.data.convert.BeanDtoVoUtils;
...@@ -55,6 +57,7 @@ import org.springframework.transaction.annotation.Transactional; ...@@ -55,6 +57,7 @@ import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.multipart.MultipartFile; import org.springframework.web.multipart.MultipartFile;
import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpServletResponse;
import java.time.LocalDateTime;
import java.util.*; import java.util.*;
import java.util.function.BiConsumer; import java.util.function.BiConsumer;
import java.util.function.Function; import java.util.function.Function;
...@@ -96,6 +99,9 @@ public class PlatElderServiceImpl extends ServiceImpl<PlatElderMapper, PlatElder ...@@ -96,6 +99,9 @@ public class PlatElderServiceImpl extends ServiceImpl<PlatElderMapper, PlatElder
@Autowired @Autowired
private PlatBedService platBedService; private PlatBedService platBedService;
@Autowired
private PlatRoomBedDeviceService platRoomBedDeviceService;
private LambdaQueryWrapper<PlatElder> lambdaQueryWrapper(PlatElderQueryDTO dto) { private LambdaQueryWrapper<PlatElder> lambdaQueryWrapper(PlatElderQueryDTO dto) {
return new QueryWrapper<PlatElder>().lambda() return new QueryWrapper<PlatElder>().lambda()
.like(StringUtils.isNotBlank(dto.getName()), PlatElder::getName, dto.getName()) .like(StringUtils.isNotBlank(dto.getName()), PlatElder::getName, dto.getName())
...@@ -492,6 +498,14 @@ public class PlatElderServiceImpl extends ServiceImpl<PlatElderMapper, PlatElder ...@@ -492,6 +498,14 @@ public class PlatElderServiceImpl extends ServiceImpl<PlatElderMapper, PlatElder
PlatElder platElder = BeanDtoVoUtils.convert(dto, PlatElder.class); 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); save(platElder);
} }
...@@ -603,6 +617,8 @@ public class PlatElderServiceImpl extends ServiceImpl<PlatElderMapper, PlatElder ...@@ -603,6 +617,8 @@ public class PlatElderServiceImpl extends ServiceImpl<PlatElderMapper, PlatElder
PlatElder db = getById(dto.getId()); PlatElder db = getById(dto.getId());
BeanUtils.copyProperties(dto, db); BeanUtils.copyProperties(dto, db);
db.setCheckInTime(LocalDateTime.now());
updateById(db); updateById(db);
StatusDTO statusDTO = new StatusDTO(); StatusDTO statusDTO = new StatusDTO();
...@@ -636,6 +652,8 @@ public class PlatElderServiceImpl extends ServiceImpl<PlatElderMapper, PlatElder ...@@ -636,6 +652,8 @@ public class PlatElderServiceImpl extends ServiceImpl<PlatElderMapper, PlatElder
db.setBedId(null); db.setBedId(null);
db.setSpacePath(null); db.setSpacePath(null);
db.setCheckOutTime(LocalDateTime.now());
updateById(db); updateById(db);
//TODO ywc 是否删除房间 及其校验没做 //TODO ywc 是否删除房间 及其校验没做
...@@ -681,6 +699,29 @@ public class PlatElderServiceImpl extends ServiceImpl<PlatElderMapper, PlatElder ...@@ -681,6 +699,29 @@ public class PlatElderServiceImpl extends ServiceImpl<PlatElderMapper, PlatElder
} }
@Override @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() { public List<PlatElderWechatSimpleVO> listMy() {
PlatElderChildrenInfoWechatVO childrenInfo = platElderChildrenInfoService.view(); PlatElderChildrenInfoWechatVO childrenInfo = platElderChildrenInfoService.view();
......
...@@ -8,6 +8,7 @@ import com.makeit.dto.platform.space.PlatBedDeviceQueryDTO; ...@@ -8,6 +8,7 @@ import com.makeit.dto.platform.space.PlatBedDeviceQueryDTO;
import com.makeit.dto.platform.space.PlatRoomBindDeviceDTO; import com.makeit.dto.platform.space.PlatRoomBindDeviceDTO;
import com.makeit.dto.platform.space.PlatSpaceDeviceQueryDTO; import com.makeit.dto.platform.space.PlatSpaceDeviceQueryDTO;
import com.makeit.dto.platform.space.PlatUnbindingDeviceDTO; import com.makeit.dto.platform.space.PlatUnbindingDeviceDTO;
import com.makeit.entity.platform.device.PlatDevice;
import com.makeit.entity.platform.space.PlatRoomBedDevice; import com.makeit.entity.platform.space.PlatRoomBedDevice;
import java.util.List; import java.util.List;
...@@ -21,12 +22,14 @@ public interface PlatRoomBedDeviceService extends IService<PlatRoomBedDevice> { ...@@ -21,12 +22,14 @@ public interface PlatRoomBedDeviceService extends IService<PlatRoomBedDevice> {
/** /**
* 绑定设备 * 绑定设备
*
* @param dto * @param dto
*/ */
void bindingDevice(PlatRoomBindDeviceDTO dto); void bindingDevice(PlatRoomBindDeviceDTO dto);
/** /**
* 未绑定设备列表 * 未绑定设备列表
*
* @param pageReqDTO * @param pageReqDTO
* @return * @return
*/ */
...@@ -34,6 +37,7 @@ public interface PlatRoomBedDeviceService extends IService<PlatRoomBedDevice> { ...@@ -34,6 +37,7 @@ public interface PlatRoomBedDeviceService extends IService<PlatRoomBedDevice> {
/** /**
* 已绑定设备 * 已绑定设备
*
* @param dto * @param dto
* @return * @return
*/ */
...@@ -41,7 +45,12 @@ public interface PlatRoomBedDeviceService extends IService<PlatRoomBedDevice> { ...@@ -41,7 +45,12 @@ public interface PlatRoomBedDeviceService extends IService<PlatRoomBedDevice> {
/** /**
* 解绑设备 * 解绑设备
*
* @param dto * @param dto
*/ */
void unbindingDevice(PlatUnbindingDeviceDTO dto); void unbindingDevice(PlatUnbindingDeviceDTO dto);
PlatDevice getBreathDevice(String bedId);
List<PlatDevice> getSpaceDevice(String bedId);
} }
package com.makeit.service.platform.space.impl; package com.makeit.service.platform.space.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; 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.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.makeit.common.page.PageReqDTO; import com.makeit.common.page.PageReqDTO;
...@@ -22,6 +23,7 @@ import com.makeit.service.platform.space.PlatRegionSettingService; ...@@ -22,6 +23,7 @@ import com.makeit.service.platform.space.PlatRegionSettingService;
import com.makeit.service.platform.space.PlatRoomBedDeviceService; import com.makeit.service.platform.space.PlatRoomBedDeviceService;
import com.makeit.utils.data.convert.BeanDtoVoUtils; import com.makeit.utils.data.convert.BeanDtoVoUtils;
import com.makeit.utils.data.convert.PageUtil; import com.makeit.utils.data.convert.PageUtil;
import com.makeit.utils.data.convert.StreamUtil;
import jodd.util.StringUtil; import jodd.util.StringUtil;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
...@@ -56,7 +58,7 @@ public class PlatRoomBedDeviceServiceImpl extends ServiceImpl<PlatRoomBedDeviceM ...@@ -56,7 +58,7 @@ public class PlatRoomBedDeviceServiceImpl extends ServiceImpl<PlatRoomBedDeviceM
List<String> listEquipmentIds = dto.getListDeviceId(); List<String> listEquipmentIds = dto.getListDeviceId();
List<PlatRoomBedDevice> list = new ArrayList<>(); List<PlatRoomBedDevice> list = new ArrayList<>();
listEquipmentIds.forEach(item->{ listEquipmentIds.forEach(item -> {
PlatRoomBedDevice data = new PlatRoomBedDevice(); PlatRoomBedDevice data = new PlatRoomBedDevice();
data.setDeviceId(item); data.setDeviceId(item);
...@@ -64,11 +66,11 @@ public class PlatRoomBedDeviceServiceImpl extends ServiceImpl<PlatRoomBedDeviceM ...@@ -64,11 +66,11 @@ public class PlatRoomBedDeviceServiceImpl extends ServiceImpl<PlatRoomBedDeviceM
data.setBedId(dto.getBedId()); data.setBedId(dto.getBedId());
list.add(data); list.add(data);
}); });
if(!list.isEmpty()){ if (!list.isEmpty()) {
saveBatch(list); saveBatch(list);
//区域设备 //区域设备
platRegionSettingService.add(dto.getRoomId(),dto.getListDeviceId()); platRegionSettingService.add(dto.getRoomId(), dto.getListDeviceId());
} }
} }
...@@ -79,20 +81,20 @@ public class PlatRoomBedDeviceServiceImpl extends ServiceImpl<PlatRoomBedDeviceM ...@@ -79,20 +81,20 @@ public class PlatRoomBedDeviceServiceImpl extends ServiceImpl<PlatRoomBedDeviceM
LambdaQueryWrapper<PlatRoomBedDevice> queryWrapper1 = new LambdaQueryWrapper<>(); LambdaQueryWrapper<PlatRoomBedDevice> queryWrapper1 = new LambdaQueryWrapper<>();
queryWrapper1.select(PlatRoomBedDevice::getDeviceId); queryWrapper1.select(PlatRoomBedDevice::getDeviceId);
if(StringUtil.isNotEmpty(dto.getRoomId())){ if (StringUtil.isNotEmpty(dto.getRoomId())) {
queryWrapper1.ne(PlatRoomBedDevice::getRoomId,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); queryWrapper1.isNull(PlatRoomBedDevice::getBedId);
} }
List<PlatRoomBedDevice> list = list(queryWrapper1); 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); Page<PlatDevice> p = PageUtil.toMpPage(pageReqDTO);
LambdaQueryWrapper<PlatDevice> queryWrapper = new LambdaQueryWrapper<>(); LambdaQueryWrapper<PlatDevice> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.notIn(!listEquipmentIds.isEmpty(),PlatDevice::getId, listEquipmentIds); queryWrapper.notIn(!listEquipmentIds.isEmpty(), PlatDevice::getId, listEquipmentIds);
queryWrapper.eq(StringUtil.isNotEmpty(dto.getCategory()), PlatDevice::getCategory,dto.getCategory()); 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.getOriDeviceId()), PlatDevice::getOriDeviceId, dto.getOriDeviceId());
queryWrapper.like(StringUtil.isNotEmpty(dto.getName()), PlatDevice::getName, dto.getName()); queryWrapper.like(StringUtil.isNotEmpty(dto.getName()), PlatDevice::getName, dto.getName());
queryWrapper.like(StringUtil.isNotEmpty(dto.getProductName()), PlatDevice::getProductName, dto.getProductName()); queryWrapper.like(StringUtil.isNotEmpty(dto.getProductName()), PlatDevice::getProductName, dto.getProductName());
...@@ -127,7 +129,7 @@ public class PlatRoomBedDeviceServiceImpl extends ServiceImpl<PlatRoomBedDeviceM ...@@ -127,7 +129,7 @@ public class PlatRoomBedDeviceServiceImpl extends ServiceImpl<PlatRoomBedDeviceM
List<PlatDeviceDTO> data = new ArrayList<>(); List<PlatDeviceDTO> data = new ArrayList<>();
if(!listEquipmentIds.isEmpty()){ if(!listEquipmentIds.isEmpty()){
LambdaQueryWrapper<PlatDevice> queryWrapper = new LambdaQueryWrapper<>(); LambdaQueryWrapper<PlatDevice> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(PlatDevice::getCategory, PlatDeviceEnum.CategoryEnum.HEART); //queryWrapper.eq(PlatDevice::getCategory, PlatDeviceEnum.CategoryEnum.HEART);
queryWrapper.in(PlatDevice::getId,listEquipmentIds); queryWrapper.in(PlatDevice::getId,listEquipmentIds);
List<PlatDevice> listDevices = platDeviceService.list(queryWrapper); List<PlatDevice> listDevices = platDeviceService.list(queryWrapper);
data = BeanDtoVoUtils.listVo(listDevices,PlatDeviceDTO.class); data = BeanDtoVoUtils.listVo(listDevices,PlatDeviceDTO.class);
...@@ -144,23 +146,53 @@ public class PlatRoomBedDeviceServiceImpl extends ServiceImpl<PlatRoomBedDeviceM ...@@ -144,23 +146,53 @@ public class PlatRoomBedDeviceServiceImpl extends ServiceImpl<PlatRoomBedDeviceM
public void unbindingDevice(PlatUnbindingDeviceDTO dto) { public void unbindingDevice(PlatUnbindingDeviceDTO dto) {
LambdaQueryWrapper<PlatRoomBedDevice> queryWrapper = new LambdaQueryWrapper<>(); LambdaQueryWrapper<PlatRoomBedDevice> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(PlatRoomBedDevice::getDeviceId,dto.getEquipmentId()); queryWrapper.eq(PlatRoomBedDevice::getDeviceId, dto.getEquipmentId());
queryWrapper.eq(PlatRoomBedDevice::getRoomId,dto.getRoomId()); queryWrapper.eq(PlatRoomBedDevice::getRoomId, dto.getRoomId());
queryWrapper.eq(StringUtil.isNotEmpty(dto.getBedId()),PlatRoomBedDevice::getBedId,dto.getBedId()); queryWrapper.eq(StringUtil.isNotEmpty(dto.getBedId()), PlatRoomBedDevice::getBedId, dto.getBedId());
List<PlatRoomBedDevice> list = list(queryWrapper); List<PlatRoomBedDevice> list = list(queryWrapper);
if(StringUtil.isNotEmpty(dto.getBedId())){ if (StringUtil.isNotEmpty(dto.getBedId())) {
list.forEach(item->{ list.forEach(item -> {
item.setBedId(null); item.setBedId(null);
}); });
updateBatchById(list); 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); 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())
);
} }
} }
...@@ -5,14 +5,18 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; ...@@ -5,14 +5,18 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.makeit.dto.platform.space.PlatSpaceAddDTO; import com.makeit.dto.platform.space.PlatSpaceAddDTO;
import com.makeit.dto.platform.space.PlatSpaceQueryDTO; import com.makeit.dto.platform.space.PlatSpaceQueryDTO;
import com.makeit.dto.platform.space.PlatSpaceVO; import com.makeit.dto.platform.space.PlatSpaceVO;
import com.makeit.entity.platform.auth.PlatOrg;
import com.makeit.entity.platform.space.PlatRoom; import com.makeit.entity.platform.space.PlatRoom;
import com.makeit.entity.platform.space.PlatSpace; import com.makeit.entity.platform.space.PlatSpace;
import com.makeit.enums.CodeMessageEnum; import com.makeit.enums.CodeMessageEnum;
import com.makeit.exception.BusinessException; import com.makeit.exception.BusinessException;
import com.makeit.mapper.platform.space.PlatSpaceMapper; import com.makeit.mapper.platform.space.PlatSpaceMapper;
import com.makeit.service.platform.auth.PlatOrgService;
import com.makeit.service.platform.space.PlatRoomService; import com.makeit.service.platform.space.PlatRoomService;
import com.makeit.service.platform.space.PlatSpaceService; import com.makeit.service.platform.space.PlatSpaceService;
import com.makeit.utils.data.convert.BeanDtoVoUtils; import com.makeit.utils.data.convert.BeanDtoVoUtils;
import com.makeit.utils.user.plat.PlatUserUtil;
import com.makeit.utils.user.plat.PlatUserVO;
import com.makeit.vo.platform.space.PlatSpaceAndRoomVO; import com.makeit.vo.platform.space.PlatSpaceAndRoomVO;
import jodd.util.StringUtil; import jodd.util.StringUtil;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
...@@ -34,6 +38,8 @@ public class PlatSpaceServiceImpl extends ServiceImpl<PlatSpaceMapper, PlatSpace ...@@ -34,6 +38,8 @@ public class PlatSpaceServiceImpl extends ServiceImpl<PlatSpaceMapper, PlatSpace
@Autowired @Autowired
private PlatRoomService platRoomService; private PlatRoomService platRoomService;
@Autowired
private PlatOrgService platOrgService;
private void check(PlatSpaceAddDTO dto){ private void check(PlatSpaceAddDTO dto){
LambdaQueryWrapper<PlatSpace> queryWrapper = new LambdaQueryWrapper<>(); LambdaQueryWrapper<PlatSpace> queryWrapper = new LambdaQueryWrapper<>();
...@@ -57,6 +63,12 @@ public class PlatSpaceServiceImpl extends ServiceImpl<PlatSpaceMapper, PlatSpace ...@@ -57,6 +63,12 @@ public class PlatSpaceServiceImpl extends ServiceImpl<PlatSpaceMapper, PlatSpace
public void add(PlatSpaceAddDTO dto) { public void add(PlatSpaceAddDTO dto) {
check(dto); check(dto);
PlatSpace space = BeanDtoVoUtils.convert(dto, PlatSpace.class); PlatSpace space = BeanDtoVoUtils.convert(dto, PlatSpace.class);
PlatUserVO userVO = PlatUserUtil.getUserVO();
space.setOrgId(userVO.getOrgId());
PlatOrg org = platOrgService.getById(userVO.getOrgId());
if(org!=null){
space.setAttribute(org.getType());
}
save(space); save(space);
} }
......
package com.makeit.service.platform.workstation;
import com.makeit.dto.platform.workstation.WorkStationQueryDTO;
import com.makeit.vo.platform.workstation.WorkStationStatisticsVO;
/**
* Controller
*
* @author zm
* @version 2023/9/11
*/
public interface WorkStationService {
WorkStationStatisticsVO statistics(WorkStationQueryDTO dto);
}
package com.makeit.service.platform.workstation.impl;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.makeit.dto.platform.dataScreen.PlatDataScreenQueryDTO;
import com.makeit.dto.platform.workstation.WorkStationQueryDTO;
import com.makeit.entity.platform.alarm.PlatAlarmRecord;
import com.makeit.entity.platform.auth.PlatUser;
import com.makeit.entity.platform.device.PlatDevice;
import com.makeit.entity.platform.elder.PlatElder;
import com.makeit.entity.platform.space.PlatSpace;
import com.makeit.enums.CommonEnum;
import com.makeit.enums.platform.alarm.PlatAlarmConfigEnum;
import com.makeit.enums.platform.alarm.PlatAlarmRecordEnum;
import com.makeit.enums.platform.device.PlatDeviceEnum;
import com.makeit.enums.platform.elder.PlatElderEnum;
import com.makeit.module.iot.enums.DeviceState;
import com.makeit.service.platform.alarm.PlatAlarmRecordService;
import com.makeit.service.platform.auth.PlatOrgService;
import com.makeit.service.platform.auth.PlatUserService;
import com.makeit.service.platform.dataScreen.DataScreenService;
import com.makeit.service.platform.device.PlatDeviceService;
import com.makeit.service.platform.elder.PlatElderService;
import com.makeit.service.platform.space.PlatBedService;
import com.makeit.service.platform.space.PlatSpaceService;
import com.makeit.service.platform.workstation.WorkStationService;
import com.makeit.utils.data.convert.BeanDtoVoUtils;
import com.makeit.vo.platform.dataScreen.*;
import com.makeit.vo.platform.workstation.WorkStationStatisticsVO;
import jodd.util.StringUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Map;
import java.util.function.Function;
import java.util.stream.Collectors;
/**
* Controller
*
* @author zm
* @version 2023/9/11
*/
@Service
public class WorkStationServiceImpl implements WorkStationService {
@Autowired
private PlatElderService platElderService;
@Autowired
private PlatDeviceService platDeviceService;
@Autowired
private PlatBedService platBedService;
@Autowired
private PlatUserService platUserService;
@Autowired
private PlatAlarmRecordService platAlarmRecordService;
@Autowired
private PlatSpaceService platSpaceService;
@Autowired
private PlatOrgService platOrgService;
@Override
public WorkStationStatisticsVO statistics(WorkStationQueryDTO dto) {
WorkStationStatisticsVO vo = new WorkStationStatisticsVO();
//代处理告警
long unHandledNumber = platAlarmRecordService.count(new QueryWrapper<PlatAlarmRecord>().lambda()
.eq(PlatAlarmRecord::getStatus, PlatAlarmRecordEnum.AlarmRecordStatusEnum.UNHANDLED.getValue())
.in(PlatAlarmRecord::getOrgId, dto.getOrgIds()));
vo.setUnHandledNumber(unHandledNumber);
return null;
}
}
...@@ -51,8 +51,8 @@ public class AlarmConfigCacheUtil implements ApplicationRunner { ...@@ -51,8 +51,8 @@ public class AlarmConfigCacheUtil implements ApplicationRunner {
}); });
} }
public PlatAlarmConfig get(String orgIdType) { public PlatAlarmConfig get(String orgId,String alarmType) {
return RedisUtil.get(RedisConst.ALARM_CONFIG_ORG_ID+orgIdType); return RedisUtil.get(RedisConst.ALARM_CONFIG_ORG_ID+orgId+":"+alarmType);
} }
...@@ -70,19 +70,17 @@ public class AlarmConfigCacheUtil implements ApplicationRunner { ...@@ -70,19 +70,17 @@ public class AlarmConfigCacheUtil implements ApplicationRunner {
} }
public List<PlatAlarmConfig> getDeviceAlarmConfigMap(PlatDevice platDevice) { public List<PlatAlarmConfig> getDeviceAlarmConfigMap(PlatDevice platDevice) {
if (StringUtils.equals(platDevice.getCategory(), PlatDeviceEnum.CategoryEnum.HEART.getValue())) {
List<PlatAlarmConfig> set = new ArrayList<>(); List<PlatAlarmConfig> set = new ArrayList<>();
set.add(this.get(platDevice.getOrgId() + PlatAlarmConfigEnum.AlarmTypeEnum.BREATHE.getValue())); if (StringUtils.equals(platDevice.getCategory(), PlatDeviceEnum.CategoryEnum.HEART.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())) { 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())) { 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 { ...@@ -83,4 +83,10 @@ public class PlatPersonDTOVO extends BaseIdDTO {
@ApiModelProperty(value = "角色Id集合") @ApiModelProperty(value = "角色Id集合")
private List<String> roleIdList; private List<String> roleIdList;
@ApiModelProperty(value = "创建人名称")
private String createBy;
@ApiModelProperty(value = "更新人名称")
private String updateBy;
} }
package com.makeit.vo.platform.dataScreen;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.time.LocalDateTime;
import java.util.Date;
/**
* Controller
*
* @author zm
* @version 2023/9/13
*/
@Data
@ApiModel("PlatAlarmRecordStatisticsVo对象")
public class PlatAlarmRecordStatisticsVo {
/**
* 告警时间
*/
private Date alarmDate;
/**
* 状态 0 待处理 1 已处理
*/
private String status;
/**
* 组织id
*/
private String orgId;
/**
* 老人id,逗号拼接
*/
private String elderIds;
/**
* 空间id
*/
private String spaceId;
}
...@@ -2,6 +2,7 @@ package com.makeit.vo.platform.dataScreen; ...@@ -2,6 +2,7 @@ package com.makeit.vo.platform.dataScreen;
import com.makeit.utils.area.ChinaAreaVO; import com.makeit.utils.area.ChinaAreaVO;
import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data; import lombok.Data;
import java.util.List; import java.util.List;
...@@ -16,8 +17,22 @@ import java.util.List; ...@@ -16,8 +17,22 @@ import java.util.List;
@ApiModel("PlatMapStatisticsVO对象") @ApiModel("PlatMapStatisticsVO对象")
public class PlatMapStatisticsVO { public class PlatMapStatisticsVO {
private List<ChinaAreaVO> areas; @ApiModelProperty(value = "空间id")
private List<PlatMapStatisticsSpaceVO> spaceList; private String spaceId;
@ApiModelProperty(value = "空间名称")
private String spaceName;
@ApiModelProperty(value = "空间地址")
private String address;
@ApiModelProperty(value = "经度")
private String longitude;
@ApiModelProperty(value = "纬度")
private String latitude;
@ApiModelProperty(value = "长者数量")
private Long elderNumber;
@ApiModelProperty(value = "今日告警数")
private Long alarmNumber;
@ApiModelProperty(value = "待处理告警")
private Long unHandledNumber;
} }
...@@ -70,5 +70,8 @@ public class PlatDeviceListVO extends BaseTenantDTO { ...@@ -70,5 +70,8 @@ public class PlatDeviceListVO extends BaseTenantDTO {
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private LocalDateTime createDate; private LocalDateTime createDate;
private LocalDateTime startDate;
private LocalDateTime endDate;
} }
...@@ -2,7 +2,6 @@ package com.makeit.vo.platform.device; ...@@ -2,7 +2,6 @@ package com.makeit.vo.platform.device;
import com.fasterxml.jackson.annotation.JsonFormat; import com.fasterxml.jackson.annotation.JsonFormat;
import com.makeit.common.dto.BaseTenantDTO; import com.makeit.common.dto.BaseTenantDTO;
import com.makeit.common.entity.BaseBusEntity;
import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty; import io.swagger.annotations.ApiModelProperty;
import lombok.Data; import lombok.Data;
...@@ -101,5 +100,8 @@ public class PlatDeviceViewVO extends BaseTenantDTO { ...@@ -101,5 +100,8 @@ public class PlatDeviceViewVO extends BaseTenantDTO {
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private LocalDateTime createDate; 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; ...@@ -4,7 +4,6 @@ import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModelProperty; import io.swagger.annotations.ApiModelProperty;
import lombok.Data; import lombok.Data;
import java.math.BigDecimal;
import java.time.LocalDateTime; import java.time.LocalDateTime;
@Data @Data
...@@ -15,6 +14,6 @@ public class PlatElderRealTimeBodyVO { ...@@ -15,6 +14,6 @@ public class PlatElderRealTimeBodyVO {
private LocalDateTime time; private LocalDateTime time;
@ApiModelProperty("体动指数") @ApiModelProperty("体动指数")
private BigDecimal bodyMovementIndex; private Integer bodyMovementIndex;
} }
...@@ -3,8 +3,6 @@ package com.makeit.vo.platform.elder.realtime; ...@@ -3,8 +3,6 @@ package com.makeit.vo.platform.elder.realtime;
import io.swagger.annotations.ApiModelProperty; import io.swagger.annotations.ApiModelProperty;
import lombok.Data; import lombok.Data;
import java.math.BigDecimal;
@Data @Data
public class PlatElderRealTimeNowVO { public class PlatElderRealTimeNowVO {
...@@ -18,6 +16,6 @@ public class PlatElderRealTimeNowVO { ...@@ -18,6 +16,6 @@ public class PlatElderRealTimeNowVO {
private Integer respiratoryRate; private Integer respiratoryRate;
@ApiModelProperty("体动") @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.dataScreen; package com.makeit.vo.platform.workstation;
import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty; import io.swagger.annotations.ApiModelProperty;
...@@ -8,27 +8,12 @@ import lombok.Data; ...@@ -8,27 +8,12 @@ import lombok.Data;
* Controller * Controller
* *
* @author zm * @author zm
* @version 2023/9/11 * @version 2023/9/13
*/ */
@Data @Data
@ApiModel("PlatMapStatisticsSpaceVO对象") @ApiModel("WorkStationStatisticsVO对象")
public class PlatMapStatisticsSpaceVO { public class WorkStationStatisticsVO {
@ApiModelProperty(value = "空间id")
private String spaceId;
@ApiModelProperty(value = "空间名称")
private String spaceName;
@ApiModelProperty(value = "空间地址")
private String address;
@ApiModelProperty(value = "经度")
private String longitude;
@ApiModelProperty(value = "纬度")
private String latitude;
@ApiModelProperty(value = "长者数量")
private Long elderNumber;
@ApiModelProperty(value = "今日告警数")
private Long alarmNumber;
@ApiModelProperty(value = "待处理告警") @ApiModelProperty(value = "待处理告警")
private Long unHandledNumber; private Long unHandledNumber;
} }
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")) + "");
}
}
...@@ -87,9 +87,13 @@ public class PushCallback implements MqttCallback { ...@@ -87,9 +87,13 @@ public class PushCallback implements MqttCallback {
} }
for (PlatAlarmConfig config : deviceAlarmConfigList) { for (PlatAlarmConfig config : deviceAlarmConfigList) {
String alarmType = config.getAlarmType(); String alarmType = config.getAlarmType();
PlatAlarmCheckDTO platAlarmCheckDTO = new PlatAlarmCheckDTO(); PlatAlarmCheckDTO platAlarmCheckDTO = new PlatAlarmCheckDTO();
//告警配置
platAlarmCheckDTO.setPlatAlarmConfig(config); platAlarmCheckDTO.setPlatAlarmConfig(config);
//设备信息
platAlarmCheckDTO.setPlatDevice(platDevice); platAlarmCheckDTO.setPlatDevice(platDevice);
//iot上报数据
platAlarmCheckDTO.setProperties(properties); platAlarmCheckDTO.setProperties(properties);
for (IAlarm alarm : alarmList) { for (IAlarm alarm : alarmList) {
......
...@@ -67,7 +67,7 @@ file: ...@@ -67,7 +67,7 @@ file:
storage: storage:
location: ${file.file} location: ${file.file}
type: local type: local
url: http://localhost:10005/${file.filePath} url: http://iot-kuangshi-admin.meiqicloud.com/api/${file.filePath}
# aliBaseDir: point # aliBaseDir: point
# aliEndpoint: obs.cn-south-1.myhuaweicloud.com # aliEndpoint: obs.cn-south-1.myhuaweicloud.com
......
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