Commit df2b25d9 by 朱淼

更新

parent 5f2cda52
Showing with 806 additions and 34 deletions
package com.makeit.module.demo.dto;
import lombok.Data;
/**
* Controller
*
* @author zm
* @version 2023/9/25
*/
@Data
public class DemoDeviceDTO {
private String entityCode;
private Boolean queryShadow;
}
package com.makeit.module.demo.service;
import com.alibaba.fastjson.JSON;
import com.google.common.collect.Lists;
import com.makeit.module.demo.dto.DemoDeviceDTO;
import com.makeit.module.demo.vo.DemoResponseMessage;
import com.makeit.module.iot.dto.Condition;
import com.makeit.module.iot.dto.IotQueryParam;
import com.makeit.module.iot.dto.IotSort;
import com.makeit.module.iot.dto.Term;
import com.makeit.module.iot.util.HeaderUtils;
import com.makeit.module.iot.util.HttpRequest;
import com.makeit.module.iot.util.Response;
import com.makeit.module.iot.util.SimpleHttpRequest;
import com.makeit.module.iot.vo.ResponseMessage;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.apache.http.client.HttpClient;
import org.apache.http.impl.client.HttpClientBuilder;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import java.io.IOException;
import java.util.HashMap;
import java.util.List;
@Slf4j
public class DemoCommonService {
@Autowired
public HeaderUtils headerUtils;
@Value("${demo.url:}")
public String demoUrl;
protected static HttpClient httpClient = HttpClientBuilder.create().build();
public HttpRequest buildRequest(String url,String body) {
log.info("接口:{},请求参数:{}",url,body);
HttpRequest request = new SimpleHttpRequest(url, httpClient);
HashMap hashMap = JSON.parseObject(body, HashMap.class);
request.headers(headerUtils.createDemoHeadersOfParams(hashMap));
request.requestBody(body);
return request;
}
public DemoResponseMessage sendPut(String url, HttpRequest request) throws IOException {
Response response = request.put();
DemoResponseMessage responseMessage = getResponseMessage(url, response);
return responseMessage;
}
public DemoResponseMessage sendGet(String url, HttpRequest request) throws IOException {
Response response = request.get();
DemoResponseMessage responseMessage = getResponseMessage(url, response);
return responseMessage;
}
public DemoResponseMessage sendPost(String url, HttpRequest request) throws IOException {
Response response = request.post();
DemoResponseMessage responseMessage = getResponseMessage(url, response);
return responseMessage;
}
private static DemoResponseMessage getResponseMessage(String url, Response response) throws IOException {
Object result = JSON.parse(response.asBytes());
DemoResponseMessage responseMessage = JSON.parseObject(result.toString(), DemoResponseMessage.class);
log.info("接口:{},返回信息:{}", url,JSON.toJSONString(responseMessage));
return responseMessage;
}
/**
* 默认按照时间倒叙
* 可以根据terms进行条件查询 格式
* [
* {
* "terms": [
* {
* "type": "or",
* "value": "%123%",
* "termType": "like",
* "column": "name"
* }
* ]
* }
* ]
* @return
*/
public static DemoDeviceDTO buildQueryParam(String entityCode, boolean queryShadow) {
DemoDeviceDTO dto = new DemoDeviceDTO();
dto.setQueryShadow(queryShadow);
dto.setEntityCode(entityCode);
return dto;
}
/**
*
* @param pageSize 页大小
* @param column 查询列
* @param termType 动态条件类型
* @param assetType
* @param pkId
* @param type
* @return
*/
public static IotQueryParam buildQueryParam(int pageSize,String column,String termType,String assetType,String pkId,String type,String sortColumn) {
IotQueryParam iotQueryParam = new IotQueryParam();
iotQueryParam.setPageIndex(0);
iotQueryParam.setPageSize(pageSize);
List<Term> terms = getTerms(column, termType, assetType, pkId, type);
iotQueryParam.setTerms(terms);
List<IotSort> iotSortList = buildSort(sortColumn);
iotQueryParam.setSorts(iotSortList);
return iotQueryParam;
}
private static List<IotSort> buildSort(String createTime) {
List<IotSort> iotSortList = Lists.newArrayList();
IotSort iotSort = new IotSort();
iotSort.setOrder("desc");
iotSort.setName(createTime);
iotSortList.add(iotSort);
return iotSortList;
}
private static List<Term> getTerms(String column, String termType, String assetType, String pkId, String type) {
List<Term> terms = Lists.newArrayList();
if (StringUtils.isEmpty(column)) {
return terms;
}
List<Condition.Targets> targets = Lists.newArrayList();
Condition.Targets target = Condition.Targets.builder()
.id(pkId)
.type(type).build();
targets.add(target);
Condition condition = Condition.builder()
.assetType(assetType)
.targets(targets)
.build();
Term term = Term.builder()
.column(column)
.termType(termType)
.value(condition)
.terms(Lists.newArrayList())
.options(Lists.newArrayList())
.build();
terms.add(term);
return terms;
}
}
package com.makeit.module.demo.service;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.google.common.collect.Lists;
import com.makeit.module.demo.dto.DemoDeviceDTO;
import com.makeit.module.demo.vo.DemoDeviceEntity;
import com.makeit.module.demo.vo.DemoResponseMessage;
import com.makeit.module.demo.vo.DemoResult;
import com.makeit.module.iot.dto.IotQueryParam;
import com.makeit.module.iot.dto.IotSort;
import com.makeit.module.iot.dto.Term;
import com.makeit.module.iot.util.HttpRequest;
import com.makeit.module.iot.vo.DeviceInstanceEntity;
import com.makeit.module.iot.vo.DeviceOperationLogEntity;
import com.makeit.module.iot.vo.IotPagerResult;
import com.makeit.module.iot.vo.ResponseMessage;
import com.makeit.module.iot.vo.breathe.DeviceInfoContentBreathe;
import com.makeit.module.iot.vo.fall.DeviceInfoContentFall;
import com.makeit.module.iot.vo.space.DeviceInfoContentSpace;
import com.makeit.utils.LongTimestampUtil;
import com.makeit.utils.data.convert.JsonUtil;
import com.makeit.utils.data.convert.StreamUtil;
import com.makeit.utils.old.StringUtils;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections4.CollectionUtils;
import org.springframework.stereotype.Component;
import java.io.IOException;
import java.time.Duration;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.List;
/**
* iot产品设备相关接口
*/
@Component
@Slf4j
public class DemoProductDeviceService extends DemoCommonService {
public static final String DEVICE_PREFIX_URL = "ym-open-api/s/api/v2/common/device/";
/**
* 获取设备信息
*/
public DemoDeviceEntity queryDeviceDetail(String entityCode, boolean queryShadow) {
String url = demoUrl + DEVICE_PREFIX_URL + "query-device-detail";
// 条件可以自己改
DemoDeviceDTO dto = buildQueryParam(entityCode, queryShadow);
String body = JsonUtil.toJson(dto);
HttpRequest request = buildRequest(url, body);
try {
DemoResponseMessage responseMessage = sendPost(url, request);
if (responseMessage.getRetcode() == 0) {
DemoDeviceEntity demoDeviceEntities = JSON.parseObject(responseMessage.getData().toString(),DemoDeviceEntity.class);
return demoDeviceEntities;
}
log.error("获取设备接口失败:{}", responseMessage.getMsg());
} catch (IOException e) {
log.error("调用:{}接口异常:{}", url, e.getMessage());
}
return new DemoDeviceEntity();
}
}
package com.makeit.module.demo.vo;
import io.swagger.models.auth.In;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import java.util.List;
import java.util.Map;
@Data
public class DemoDeviceEntity {
@Schema(description = "设备编码")
private String entityCode;
private String entityName;
private String status;
private List<DeviceShadowDTO> deviceShadowDTOList;
@Data
public static class DeviceShadowDTO{
private String id;
private Attribute attribute;
private String value;
private Long valueTime;
}
@Data
public static class Attribute{
private String attributeCode;
private String attributeName;
}
}
package com.makeit.module.demo.vo;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
@Data
public class DemoResponseMessage<T> {
@Schema(
description = "消息提示"
)
private String msg;
@Schema(
description = "数据内容"
)
private T data;
@Schema(
description = "状态码"
)
private int retcode;
}
package com.makeit.module.demo.vo;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import java.util.List;
@Data
public class DemoResult<E> {
private E data;
}
...@@ -27,6 +27,13 @@ public class HeaderUtils { ...@@ -27,6 +27,13 @@ public class HeaderUtils {
@Value("${iot.secureKey}") @Value("${iot.secureKey}")
private String secureKey; private String secureKey;
@Value("${demo.brand}")
private String brand;
@Value("${demo.accessKey}")
private String accessKey;
@Value("${demo.secretKey}")
private String secretKey;
public Map<String, String> createHeadersOfParams(Map<String, Object> params) { public Map<String, String> createHeadersOfParams(Map<String, Object> params) {
//时间戳 //时间戳
String xTimestamp = String.valueOf(new Date().getTime()); String xTimestamp = String.valueOf(new Date().getTime());
...@@ -74,4 +81,30 @@ public class HeaderUtils { ...@@ -74,4 +81,30 @@ public class HeaderUtils {
return headers; return headers;
} }
public Map<String, String> createDemoHeadersOfParams(Map<String, Object> params) {
//时间戳
String xTimestamp = String.valueOf(new Date().getTime());
params.put("AccessKey",accessKey);
params.put("Timestamp",xTimestamp);
//将参数按ASCII排序后拼接为k1=v1&k2=v2的格式
String paramString = new TreeMap<>(params).entrySet()
.stream()
.map(e -> e.getKey().concat("=").concat(String.valueOf(e.getValue())))
.collect(Collectors.joining("&"));
System.out.println(paramString);
paramString = paramString + "&SecretKey=" + secretKey;
MessageDigest digest = DigestUtils.getMd5Digest();
digest.update(paramString.getBytes());
Map<String, String> headers = new HashMap<>();
headers.put("signature", Hex.encodeHexString(digest.digest()).toUpperCase());
headers.put("brand", brand);
headers.put("timestamp", xTimestamp);
return headers;
}
} }
package com.makeit.module.controller.demo;
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.dto.platform.alarm.PlatAlarmRecordQueryDTO;
import com.makeit.dto.platform.device.PlatDeviceEditDTO;
import com.makeit.dto.platform.device.PlatDeviceQueryDTO;
import com.makeit.dto.platform.elder.PlatElderIdDTO;
import com.makeit.entity.platform.device.PlatDevice;
import com.makeit.global.annotation.AuthIgnore;
import com.makeit.global.aspect.tenant.TenantIdIgnore;
import com.makeit.module.demo.dto.DemoDeviceDTO;
import com.makeit.module.demo.vo.DemoDeviceEntity;
import com.makeit.service.demo.DemoDeviceService;
import com.makeit.service.platform.alarm.PlatAlarmRecordService;
import com.makeit.service.platform.device.PlatDeviceService;
import com.makeit.task.IotSyncTask;
import com.makeit.vo.platform.alarm.PlatAlarmRecordVO;
import com.makeit.vo.platform.demo.DemoHeartRespiratoryVO;
import com.makeit.vo.platform.device.PlatDeviceListVO;
import com.makeit.vo.platform.device.PlatDeviceViewVO;
import com.makeit.vo.platform.elder.realtime.PlatElderRealTimeHeartRespiratoryVO;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.List;
/**
* <p>
* 设备 前端控制器
* </p>
*
* @author eugene young
* @since 2023-09-05
*/
@Api(tags = "demo设备")
@RestController
@RequestMapping("/plat/demo/device")
public class DemoDeviceController {
@Autowired
private DemoDeviceService demoDeviceService;
@Autowired
private PlatAlarmRecordService platAlarmRecordService;
// @ApiOperation("分页列表")
// @PostMapping("page")
// public ApiResponseEntity<PageVO<PlatDeviceListVO>> page(@RequestBody PageReqDTO<PlatDeviceQueryDTO> pageReqDTO) {
// return ApiResponseUtils.success(platDeviceService.page(pageReqDTO));
// }
//
// @ApiOperation("编辑")
// @PostMapping("edit")
// public ApiResponseEntity<?> edit(@Validated @RequestBody PlatDeviceEditDTO dto) {
// platDeviceService.edit(dto);
// return ApiResponseUtils.success();
// }
//
// @ApiOperation("详情")
// @PostMapping("view")
// public ApiResponseEntity<PlatDeviceViewVO> view(@RequestBody BaseIdDTO baseIdDTO) {
// return ApiResponseUtils.success(platDeviceService.view(baseIdDTO.getId()));
// }
//
// @Autowired
// private IotSyncTask iotSyncTask;
//
// @ApiOperation("手动同步")
// @PostMapping("iotSyncTask")
// @AuthIgnore
// @TenantIdIgnore
// public ApiResponseEntity<Void> iotSyncTask(@RequestBody BaseIdDTO baseIdDTO) {
// iotSyncTask.syncEquipmentInfo();
// return ApiResponseUtils.success();
// }
//
// @ApiOperation("列表")
// @PostMapping("list")
// public ApiResponseEntity<PageVO<PlatDeviceListVO>> list(@RequestBody PageReqDTO<PlatDeviceQueryDTO> pageReqDTO) {
// return ApiResponseUtils.success(platDeviceService.page(pageReqDTO));
// }
@ApiOperation("详情")
@PostMapping("queryDeviceDetail")
public ApiResponseEntity<DemoDeviceEntity> queryDeviceDetail(@RequestBody DemoDeviceDTO dto) {
return ApiResponseUtils.success(demoDeviceService.queryDeviceDetail(dto));
}
@ApiOperation("设备列表")
@PostMapping("list")
public ApiResponseEntity<List<PlatDevice>> list() {
return ApiResponseUtils.success(demoDeviceService.getList());
}
@ApiOperation("报警列表")
@PostMapping("alarmPage")
public ApiResponseEntity<PageVO<PlatAlarmRecordVO>> page(@RequestBody PageReqDTO<PlatAlarmRecordQueryDTO> dto) {
return ApiResponseUtils.success(platAlarmRecordService.page(dto));
}
@ApiOperation("心率")
@PostMapping("heartRate")
public ApiResponseEntity<DemoHeartRespiratoryVO> heartRate(@RequestBody DemoDeviceDTO dto) {
return ApiResponseUtils.success(demoDeviceService.heartRate(dto));
}
@ApiOperation("呼吸率")
@PostMapping("breathRate")
public ApiResponseEntity<DemoHeartRespiratoryVO> breathRate(@RequestBody DemoDeviceDTO dto) {
return ApiResponseUtils.success(demoDeviceService.breathRate(dto));
}
@ApiOperation("处理")
@PostMapping("deal")
public ApiResponseEntity<Void> deal(@RequestBody BaseIdDTO dto) {
platAlarmRecordService.deal(dto.getId());
return ApiResponseUtils.success();
}
@ApiOperation("通知家属")
@PostMapping("notice")
public ApiResponseEntity<Void> notice(@RequestBody BaseIdDTO dto) {
demoDeviceService.noticeRelation(dto.getId());
return ApiResponseUtils.success();
}
}
...@@ -67,4 +67,6 @@ public class PlatRegionSettingController { ...@@ -67,4 +67,6 @@ public class PlatRegionSettingController {
return ApiResponseUtils.success(vo); return ApiResponseUtils.success(vo);
} }
} }
...@@ -86,6 +86,8 @@ public class PlatAlarmRecord extends BaseBusEntity { ...@@ -86,6 +86,8 @@ public class PlatAlarmRecord extends BaseBusEntity {
@ApiModelProperty("区域名称") @ApiModelProperty("区域名称")
private String regionName; private String regionName;
private Long valueTime;
} }
......
package com.makeit.service.demo;
import com.baomidou.mybatisplus.extension.service.IService;
import com.makeit.common.page.PageReqDTO;
import com.makeit.common.page.PageVO;
import com.makeit.dto.platform.device.PlatDeviceDetailDTO;
import com.makeit.dto.platform.device.PlatDeviceEditDTO;
import com.makeit.dto.platform.device.PlatDeviceQueryDTO;
import com.makeit.dto.saas.device.PlatDeviceEditSaasDTO;
import com.makeit.dto.wechat.device.PlatDeviceAttrWechatDTO;
import com.makeit.dto.wechat.device.PlatDeviceEditWechatDTO;
import com.makeit.dto.wechat.device.PlatDeviceSetupDTO;
import com.makeit.entity.platform.device.PlatDevice;
import com.makeit.module.demo.dto.DemoDeviceDTO;
import com.makeit.module.demo.vo.DemoDeviceEntity;
import com.makeit.vo.platform.demo.DemoHeartRespiratoryVO;
import com.makeit.vo.platform.device.PlatDeviceListVO;
import com.makeit.vo.platform.device.PlatDeviceViewVO;
import com.makeit.vo.platform.elder.realtime.PlatElderRealTimeHeartRespiratoryVO;
import java.util.List;
/**
* <p>
* 设备 服务类
* </p>
*
* @author eugene young
* @since 2023-09-05
*/
public interface DemoDeviceService extends IService<PlatDevice> {
DemoDeviceEntity queryDeviceDetail(DemoDeviceDTO dto);
List<PlatDevice> getList();
DemoHeartRespiratoryVO heartRate(DemoDeviceDTO dto);
DemoHeartRespiratoryVO breathRate(DemoDeviceDTO dto);
void noticeRelation(String id);
}
package com.makeit.service.demo.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.makeit.entity.platform.alarm.PlatAlarmRecord;
import com.makeit.entity.platform.device.PlatDevice;
import com.makeit.enums.CommonEnum;
import com.makeit.enums.platform.alarm.PlatAlarmConfigEnum;
import com.makeit.mapper.platform.device.PlatDeviceMapper;
import com.makeit.module.demo.dto.DemoDeviceDTO;
import com.makeit.module.demo.service.DemoProductDeviceService;
import com.makeit.module.demo.vo.DemoDeviceEntity;
import com.makeit.service.demo.DemoDeviceService;
import com.makeit.service.platform.alarm.PlatAlarmRecordService;
import com.makeit.utils.user.common.CommonUserUtil;
import com.makeit.utils.user.common.CommonUserVO;
import com.makeit.vo.platform.demo.DemoHeartRespiratoryVO;
import com.makeit.vo.platform.elder.realtime.PlatElderRealTimeHeartRespiratoryVO;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.time.Instant;
import java.time.LocalDateTime;
import java.time.ZoneId;
import java.util.List;
/**
* <p>
* 设备 服务实现类
* </p>
*
* @author eugene young
* @since 2023-09-05
*/
@Service
public class DemoDeviceServiceImpl extends ServiceImpl<PlatDeviceMapper, PlatDevice> implements DemoDeviceService {
@Autowired
private DemoProductDeviceService demoProductDeviceService;
@Autowired
private PlatAlarmRecordService platAlarmRecordService;
@Override
public DemoDeviceEntity queryDeviceDetail(DemoDeviceDTO dto) {
DemoDeviceEntity demoDeviceEntity = demoProductDeviceService.queryDeviceDetail(dto.getEntityCode(),true);
return demoDeviceEntity;
}
@Override
public List<PlatDevice> getList() {
List<PlatDevice> platDevices = list();
for(PlatDevice device : platDevices){
DemoDeviceEntity demoDeviceEntity = demoProductDeviceService.queryDeviceDetail(device.getOriDeviceId(),true);
device.setStatus(demoDeviceEntity.getStatus());
}
return platDevices;
}
@Override
public DemoHeartRespiratoryVO heartRate(DemoDeviceDTO dto) {
DemoHeartRespiratoryVO vo = new DemoHeartRespiratoryVO();
DemoDeviceEntity demoDeviceEntity = demoProductDeviceService.queryDeviceDetail(dto.getEntityCode(),true);
if("3".equals(demoDeviceEntity.getStatus())){
for(DemoDeviceEntity.DeviceShadowDTO deviceShadowDTO : demoDeviceEntity.getDeviceShadowDTOList()){
if(deviceShadowDTO.getAttribute()!=null && "heartRate".equals(deviceShadowDTO.getAttribute().getAttributeCode())){
vo.setHeartRate(deviceShadowDTO.getValue());
Instant instant = Instant.ofEpochMilli(deviceShadowDTO.getValueTime());
ZoneId zone = ZoneId.systemDefault();
vo.setTime(LocalDateTime.ofInstant(instant, zone));
}
}
}else {
vo.setTime(LocalDateTime.now());
}
return vo;
}
@Override
public DemoHeartRespiratoryVO breathRate(DemoDeviceDTO dto) {
DemoHeartRespiratoryVO vo = new DemoHeartRespiratoryVO();
DemoDeviceEntity demoDeviceEntity = demoProductDeviceService.queryDeviceDetail(dto.getEntityCode(),true);
if("3".equals(demoDeviceEntity.getStatus())){
for(DemoDeviceEntity.DeviceShadowDTO deviceShadowDTO : demoDeviceEntity.getDeviceShadowDTOList()){
if(deviceShadowDTO.getAttribute()!=null && "breathRate".equals(deviceShadowDTO.getAttribute().getAttributeCode())){
vo.setRespiratoryRate(deviceShadowDTO.getValue());
Instant instant = Instant.ofEpochMilli(deviceShadowDTO.getValueTime());
ZoneId zone = ZoneId.systemDefault();
vo.setTime(LocalDateTime.ofInstant(instant, zone));
}
}
}else {
vo.setTime(LocalDateTime.now());
}
return vo;
}
@Override
public void noticeRelation(String id) {
PlatAlarmRecord platAlarmRecord = platAlarmRecordService.getById(id);
platAlarmRecord.setNoticeStatus(CommonEnum.YES.getValue());
platAlarmRecordService.updateById(platAlarmRecord);
}
}
...@@ -99,7 +99,7 @@ public class PlatAlarmRecordServiceImpl extends ServiceImpl<PlatAlarmRecordMappe ...@@ -99,7 +99,7 @@ public class PlatAlarmRecordServiceImpl extends ServiceImpl<PlatAlarmRecordMappe
List<PlatAlarmRecord> records = page.getRecords(); List<PlatAlarmRecord> records = page.getRecords();
List<PlatAlarmRecordVO> dtos = BeanDtoVoUtils.listVo(records, PlatAlarmRecordVO.class); List<PlatAlarmRecordVO> dtos = BeanDtoVoUtils.listVo(records, PlatAlarmRecordVO.class);
JoinUtil.join(dtos, platAlarmConfigService, PlatAlarmRecordVO::getAlarmId, BaseEntity::getId, (t, m) -> t.setNotifyRelation(m.getNotifyRelation())); // JoinUtil.join(dtos, platAlarmConfigService, PlatAlarmRecordVO::getAlarmId, BaseEntity::getId, (t, m) -> t.setNotifyRelation(m.getNotifyRelation()));
return PageUtil.toPageVO(dtos, page); return PageUtil.toPageVO(dtos, page);
} }
......
...@@ -13,7 +13,7 @@ public class DayDurationTask { ...@@ -13,7 +13,7 @@ public class DayDurationTask {
@Autowired @Autowired
private DayDurationUtil dayDurationUtil; private DayDurationUtil dayDurationUtil;
@Scheduled(cron = "0 10 * * * ?") // @Scheduled(cron = "0 10 * * * ?")
public void updateDayDuration() { public void updateDayDuration() {
dayDurationUtil.getAll(); dayDurationUtil.getAll();
} }
......
package com.makeit.task;
import com.alibaba.fastjson.JSON;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.makeit.common.entity.BaseBusEntity;
import com.makeit.entity.platform.alarm.PlatAlarmRecord;
import com.makeit.entity.platform.device.PlatDevice;
import com.makeit.entity.saas.PlatTenant;
import com.makeit.enums.CommonEnum;
import com.makeit.enums.platform.alarm.PlatAlarmConfigEnum;
import com.makeit.enums.platform.alarm.PlatAlarmRecordEnum;
import com.makeit.global.aspect.tenant.TenantIdIgnore;
import com.makeit.module.demo.service.DemoProductDeviceService;
import com.makeit.module.demo.vo.DemoDeviceEntity;
import com.makeit.module.iot.service.IotOrgService;
import com.makeit.module.iot.vo.DeviceInstanceEntity;
import com.makeit.module.iot.vo.DeviceState;
import com.makeit.module.system.service.SysDictionaryCategoryService;
import com.makeit.module.system.vo.DictionaryVo;
import com.makeit.service.platform.alarm.PlatAlarmRecordService;
import com.makeit.service.platform.device.PlatDeviceService;
import com.makeit.service.saas.PlatTenantService;
import com.makeit.utils.DeviceCacheUtil;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
import java.time.Instant;
import java.time.LocalDateTime;
import java.time.ZoneId;
import java.time.ZoneOffset;
import java.util.Collection;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.stream.Collectors;
@Component
@Slf4j
public class DemoDeviceTask {
@Autowired
private PlatAlarmRecordService platAlarmRecordService;
@Autowired
private DemoProductDeviceService demoProductDeviceService;
@Scheduled(cron = "0/1 * * * * ?")
public void syncDemoAlarm() {
System.err.println("开始执行");
List<PlatAlarmRecord> records = platAlarmRecordService.list(
new QueryWrapper<PlatAlarmRecord>().lambda().orderByDesc(PlatAlarmRecord::getAlarmDate)
);
DemoDeviceEntity demoDeviceEntity = demoProductDeviceService.queryDeviceDetail("219A02233700000",true);
if(demoDeviceEntity!=null && !demoDeviceEntity.getDeviceShadowDTOList().isEmpty()){
if(records.isEmpty()){
for(DemoDeviceEntity.DeviceShadowDTO dto : demoDeviceEntity.getDeviceShadowDTOList()){
if(dto.getAttribute()!=null && "personState".equals(dto.getAttribute().getAttributeCode())){
if("1".equals(dto.getValue())){
PlatAlarmRecord alarmRecord = new PlatAlarmRecord();
alarmRecord.setAlarmType(PlatAlarmConfigEnum.AlarmTypeEnum.FALL.getValue());
alarmRecord.setContent("张三在房间内跌倒,请及时处理");
alarmRecord.setStatus(PlatAlarmRecordEnum.AlarmRecordStatusEnum.UNHANDLED.getValue());
Instant instant = Instant.ofEpochMilli(dto.getValueTime());
ZoneId zone = ZoneId.systemDefault();
alarmRecord.setAlarmDate(LocalDateTime.ofInstant(instant, zone));
alarmRecord.setAlarmId(dto.getId());
alarmRecord.setValueTime(dto.getValueTime());
alarmRecord.setTenantId("1705124341248724993");
platAlarmRecordService.save(alarmRecord);
break;
}
}
}
}else {
PlatAlarmRecord record = records.get(0);
for(DemoDeviceEntity.DeviceShadowDTO dto : demoDeviceEntity.getDeviceShadowDTOList()){
if(dto.getAttribute()!=null && "personState".equals(dto.getAttribute().getAttributeCode())){
if("1".equals(dto.getValue()) && !record.getValueTime().equals(dto.getValueTime())){
PlatAlarmRecord alarmRecord = new PlatAlarmRecord();
alarmRecord.setAlarmType(PlatAlarmConfigEnum.AlarmTypeEnum.FALL.getValue());
alarmRecord.setContent("张三在房间内跌倒,请及时处理");
alarmRecord.setStatus(PlatAlarmRecordEnum.AlarmRecordStatusEnum.UNHANDLED.getValue());
Instant instant = Instant.ofEpochMilli(dto.getValueTime());
ZoneId zone = ZoneId.systemDefault();
alarmRecord.setAlarmDate(LocalDateTime.ofInstant(instant, zone));
// alarmRecord.setAlarmId(dto.getId());
alarmRecord.setValueTime(dto.getValueTime());
alarmRecord.setTenantId("1705124341248724993");
platAlarmRecordService.save(alarmRecord);
break;
}
}
}
}
}
}
}
...@@ -11,7 +11,7 @@ public class HeartRespiratoryTask { ...@@ -11,7 +11,7 @@ public class HeartRespiratoryTask {
@Autowired @Autowired
private PlatElderDayReportWeekService platElderDayReportWeekService; private PlatElderDayReportWeekService platElderDayReportWeekService;
@Scheduled(cron = "0 0 2 * * ? ") // @Scheduled(cron = "0 0 2 * * ? ")
public void job(){ public void job(){
platElderDayReportWeekService.heartRespiratoryJob(); platElderDayReportWeekService.heartRespiratoryJob();
} }
......
...@@ -87,7 +87,7 @@ public class IotSyncTask { ...@@ -87,7 +87,7 @@ public class IotSyncTask {
} }
@Scheduled(cron = "0 0 */1 * * ?") // @Scheduled(cron = "0 0 */1 * * ?")
public void syncDeviceLog() { public void syncDeviceLog() {
log.info("开始同步设备日志"); log.info("开始同步设备日志");
......
...@@ -11,7 +11,7 @@ public class ReportMonthTask { ...@@ -11,7 +11,7 @@ public class ReportMonthTask {
@Autowired @Autowired
private PlatElderReportMonthService platElderReportMonthService; private PlatElderReportMonthService platElderReportMonthService;
@Scheduled(cron = "0 0 1 * * ? ") // @Scheduled(cron = "0 0 1 * * ? ")
public void job(){ public void job(){
platElderReportMonthService.reportMonthJob(); platElderReportMonthService.reportMonthJob();
} }
......
package com.makeit.vo.platform.demo;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.time.LocalDateTime;
@Data
public class DemoHeartRespiratoryVO {
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@ApiModelProperty("时间")
private LocalDateTime time;
@ApiModelProperty("心率")
private String heartRate;
@ApiModelProperty("呼吸率")
private String respiratoryRate;
}
...@@ -76,7 +76,7 @@ ...@@ -76,7 +76,7 @@
<where> <where>
pb.del_flag = 0 and pb.status = 0 pb.del_flag = 0 and pb.status = 0
<if test="dto.elderName != null and dto.elderName != ''"> <if test="dto.elderName != null and dto.elderName != ''">
AND pe.naem LIKE CONCAT('%',#{dto.elderName},'%') AND pe.name LIKE CONCAT('%',#{dto.elderName},'%')
</if> </if>
<if test="dto.spaceIds != null and dto.spaceIds.size()>0 "> <if test="dto.spaceIds != null and dto.spaceIds.size()>0 ">
AND pm.space_id IN AND pm.space_id IN
...@@ -133,7 +133,7 @@ ...@@ -133,7 +133,7 @@
<where> <where>
pb.del_flag = 0 and pb.status = 0 pb.del_flag = 0 and pb.status = 0
<if test="dto.elderName != null and dto.elderName != ''"> <if test="dto.elderName != null and dto.elderName != ''">
AND pe.naem LIKE CONCAT('%',#{dto.elderName},'%') AND pe.name LIKE CONCAT('%',#{dto.elderName},'%')
</if> </if>
<if test="dto.spaceIds != null and dto.spaceIds.size()>0 "> <if test="dto.spaceIds != null and dto.spaceIds.size()>0 ">
AND pm.space_id IN AND pm.space_id IN
......
...@@ -37,7 +37,7 @@ ...@@ -37,7 +37,7 @@
<where> <where>
pm.del_flag = 0 pm.del_flag = 0
<if test="dto.elderName != null and dto.elderName != ''"> <if test="dto.elderName != null and dto.elderName != ''">
AND pe.naem LIKE CONCAT('%',#{dto.elderName},'%') AND pe.name LIKE CONCAT('%',#{dto.elderName},'%')
</if> </if>
<if test="dto.spaceIds != null and dto.spaceIds.size()>0 "> <if test="dto.spaceIds != null and dto.spaceIds.size()>0 ">
AND pm.space_id IN AND pm.space_id IN
...@@ -63,7 +63,7 @@ ...@@ -63,7 +63,7 @@
<where> <where>
pm.del_flag = 0 pm.del_flag = 0
<if test="dto.elderName != null and dto.elderName != ''"> <if test="dto.elderName != null and dto.elderName != ''">
AND pe.naem LIKE CONCAT('%',#{dto.elderName},'%') AND pe.name LIKE CONCAT('%',#{dto.elderName},'%')
</if> </if>
<if test="dto.spaceIds != null and dto.spaceIds.size()>0 "> <if test="dto.spaceIds != null and dto.spaceIds.size()>0 ">
AND pm.space_id IN AND pm.space_id IN
......
<?xml version="1.0" encoding="UTF-8"?>
<module version="4">
<component name="FacetManager">
<facet type="web" name="Web">
<configuration>
<webroots />
<sourceRoots>
<root url="file://$MODULE_DIR$/../server-start/src/main/java" />
<root url="file://$MODULE_DIR$/../server-start/src/main/resources" />
</sourceRoots>
</configuration>
</facet>
<facet type="Spring" name="Spring">
<configuration />
</facet>
</component>
</module>
\ No newline at end of file
...@@ -8,8 +8,8 @@ import org.springframework.context.annotation.Bean; ...@@ -8,8 +8,8 @@ import org.springframework.context.annotation.Bean;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
@Component //@Component
@ConfigurationProperties("mqtt") //@ConfigurationProperties("mqtt")
public class MqttConfig { public class MqttConfig {
@Autowired @Autowired
......
...@@ -30,7 +30,7 @@ import java.util.Objects; ...@@ -30,7 +30,7 @@ import java.util.Objects;
public class PushCallback implements MqttCallback { public class PushCallback implements MqttCallback {
private static final Logger logger = LoggerFactory.getLogger(MqttPushClient.class); private static final Logger logger = LoggerFactory.getLogger(MqttPushClient.class);
@Autowired // @Autowired
private MqttConfig mqttConfig; private MqttConfig mqttConfig;
private static MqttClient client; private static MqttClient client;
......
server: server:
port: 10005 port: 10006
servlet: servlet:
encoding: encoding:
charset: UTF-8 charset: UTF-8
...@@ -11,9 +11,9 @@ spring: ...@@ -11,9 +11,9 @@ spring:
name: iot-server name: iot-server
datasource: datasource:
url: jdbc:mysql://124.71.100.177:3306/dev_iot_yanglao_platform?allowMultiQueries=true&useUnicode=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=GMT%2B8&autoReconnect=true url: jdbc:mysql://124.71.100.177:3306/retired_cadres_demo?allowMultiQueries=true&useUnicode=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=GMT%2B8&autoReconnect=true
username: jenlinks-iot username: retired_cadres_demo
password: jenlinks-iot@123Frrd password: retired_cadres_demo@123
driver-class-name: com.mysql.cj.jdbc.Driver driver-class-name: com.mysql.cj.jdbc.Driver
#type: com.alibaba.druid.pool.DruidDataSource #type: com.alibaba.druid.pool.DruidDataSource
...@@ -144,6 +144,12 @@ voice-sms: ...@@ -144,6 +144,12 @@ voice-sms:
uid: 362 uid: 362
pwd: xmksyy123456 pwd: xmksyy123456
demo:
url: https://dev-api.yunmaolink.com/
brand: kuangshi
accessKey: 0db02e998b2f422dad2a30e40efd9a0c
secretKey: 4978bee40e5245338c9df0fe7dac5a68
......
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