Skip to content
Toggle navigation
P
Projects
G
Groups
S
Snippets
Help
黄嘉阳
/
iot-platform-server
This project
Loading...
Sign in
Toggle navigation
Go to a project
Project
Repository
Issues
0
Merge Requests
0
Pipelines
Wiki
Snippets
Settings
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Commit
c670f26e
authored
Feb 06, 2024
by
汪志阳
Browse files
Options
_('Browse Files')
Download
Email Patches
Plain Diff
modify:微信推送公众号
parent
b4067fd8
Hide whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
122 additions
and
79 deletions
server-common/src/main/java/com/makeit/utils/msg/dto/MsgSendDTO.java
server-common/src/main/java/com/makeit/utils/msg/sender/WxSpSender.java
server-service/src/main/java/com/makeit/service/platform/alarm/alarmStrategy/OffBedAlarm.java
server-service/src/main/java/com/makeit/service/platform/alarm/impl/PlatAlarmRecordServiceImpl.java
server-service/src/main/java/com/makeit/service/platform/elder/impl/PlatElderDayReportDayServiceImpl.java
server-service/src/main/java/com/makeit/service/platform/elder/impl/PlatElderSleepServiceImpl.java
server-common/src/main/java/com/makeit/utils/msg/dto/MsgSendDTO.java
View file @
c670f26e
...
@@ -7,6 +7,7 @@ import lombok.Builder;
...
@@ -7,6 +7,7 @@ import lombok.Builder;
import
lombok.Data
;
import
lombok.Data
;
import
lombok.NoArgsConstructor
;
import
lombok.NoArgsConstructor
;
import
java.time.LocalDateTime
;
import
java.util.Collection
;
import
java.util.Collection
;
import
java.util.List
;
import
java.util.List
;
...
@@ -54,6 +55,12 @@ public class MsgSendDTO {
...
@@ -54,6 +55,12 @@ public class MsgSendDTO {
@ApiModelProperty
(
"区域名称"
)
@ApiModelProperty
(
"区域名称"
)
private
String
regionName
;
private
String
regionName
;
@ApiModelProperty
(
"预警时间"
)
private
LocalDateTime
alarmDate
;
@ApiModelProperty
(
value
=
"告警类型"
)
private
String
alarmType
;
}
}
...
...
server-common/src/main/java/com/makeit/utils/msg/sender/WxSpSender.java
View file @
c670f26e
...
@@ -4,6 +4,7 @@ import cn.binarywang.wx.miniapp.api.WxMaService;
...
@@ -4,6 +4,7 @@ import cn.binarywang.wx.miniapp.api.WxMaService;
import
cn.hutool.core.collection.CollUtil
;
import
cn.hutool.core.collection.CollUtil
;
import
cn.hutool.core.date.DateUtil
;
import
cn.hutool.core.date.DateUtil
;
import
cn.hutool.core.util.StrUtil
;
import
cn.hutool.core.util.StrUtil
;
import
com.makeit.utils.data.convert.JsonUtil
;
import
com.makeit.utils.msg.SendTypeEnum
;
import
com.makeit.utils.msg.SendTypeEnum
;
import
com.makeit.utils.msg.dto.MsgSendDTO
;
import
com.makeit.utils.msg.dto.MsgSendDTO
;
import
lombok.extern.slf4j.Slf4j
;
import
lombok.extern.slf4j.Slf4j
;
...
@@ -15,14 +16,13 @@ import org.springframework.beans.factory.annotation.Autowired;
...
@@ -15,14 +16,13 @@ import org.springframework.beans.factory.annotation.Autowired;
import
org.springframework.stereotype.Component
;
import
org.springframework.stereotype.Component
;
import
java.util.Arrays
;
import
java.util.Arrays
;
import
java.util.Date
;
import
java.util.List
;
import
java.util.List
;
@Component
@Component
@Slf4j
@Slf4j
public
class
WxSpSender
implements
IMsgSender
{
public
class
WxSpSender
implements
IMsgSender
{
@Autowired
@Autowired
private
WxMaService
wxMaService
;
private
WxMaService
wxMaService
;
@Autowired
@Autowired
private
WxMpService
wxMpService
;
private
WxMpService
wxMpService
;
...
@@ -31,49 +31,53 @@ public class WxSpSender implements IMsgSender{
...
@@ -31,49 +31,53 @@ public class WxSpSender implements IMsgSender{
/**
/**
* 小程序公众号消息
* 小程序公众号消息
* zn5fBS9cqjnN5UB78tAbm53M3dXufR2b5K1a8mkhXCY
* zn5fBS9cqjnN5UB78tAbm53M3dXufR2b5K1a8mkhXCY
*
* 告警对象 {{thing2.DATA}}
* 告警对象{{thing2.DATA}}
* 告警时间 {{time3.DATA}}
* 告警时间{{time3.DATA}}
* 告警地点 {{thing4.DATA}}
* 告警地点{{thing4.DATA}}
* 事件类型 {{thing8.DATA}}
* 事件类型{{thing8.DATA}}
* 跳转文案点击查看详情
* 跳转文案点击查看详情
*
*
* @param msgDTO
* @param msgDTO
*/
*/
@Override
@Override
public
void
send
(
MsgSendDTO
msgDTO
)
{
public
void
send
(
MsgSendDTO
msgDTO
)
{
log
.
info
(
"开始执行微信公众通知!!"
);
List
<
MsgSendDTO
.
ReceiverInfo
>
receiverInfos
=
msgDTO
.
getReceiverInfos
();
List
<
MsgSendDTO
.
ReceiverInfo
>
receiverInfos
=
msgDTO
.
getReceiverInfos
();
if
(
CollUtil
.
isEmpty
(
receiverInfos
))
{
if
(
CollUtil
.
isEmpty
(
receiverInfos
))
{
return
;
return
;
}
}
String
content
=
msgDTO
.
getOriContent
();
String
content
=
msgDTO
.
getOriContent
();
receiverInfos
.
forEach
(
r
->
{
receiverInfos
.
forEach
(
r
->
{
if
(
StrUtil
.
isBlank
(
r
.
getWeChatOpenid
()))
{
if
(
StrUtil
.
isBlank
(
r
.
getWeChatOpenid
()))
{
return
;
return
;
}
}
sentMsg
(
content
,
r
.
getRegionName
(),
r
.
getName
(),
r
.
getWeChatOpenid
()
);
sentMsg
(
r
);
});
});
}
}
/**
/**
* 告警对象{{thing2.DATA}}——长者姓名
* 告警时间{{time3.DATA}}
* 异常原因{{thing25.DATA}}——告警类型
* 设备位置{{thing22.DATA}}——绑定上级空间名+房间和床位信息,没有床位就到房间
*
*
* @param content 报警内容
* @param place 地点
* @param name 长者姓名
* @param openId 接收人openId
*/
*/
private
void
sentMsg
(
String
content
,
String
place
,
String
name
,
String
openId
)
{
private
void
sentMsg
(
MsgSendDTO
.
ReceiverInfo
info
)
{
if
(
StrUtil
.
isBlank
(
info
.
getWeChatOpenid
()))
{
return
;
}
log
.
info
(
"微信公众通知:content:{}"
,
JsonUtil
.
toJson
(
info
));
List
<
WxMpTemplateData
>
mpData
=
Arrays
.
asList
(
List
<
WxMpTemplateData
>
mpData
=
Arrays
.
asList
(
new
WxMpTemplateData
(
"thing
8"
,
content
),
new
WxMpTemplateData
(
"thing
25"
,
info
.
getAlarmType
()
),
new
WxMpTemplateData
(
"thing
4"
,
place
),
new
WxMpTemplateData
(
"thing
22"
,
info
.
getRegionName
()
),
new
WxMpTemplateData
(
"thing2"
,
name
),
new
WxMpTemplateData
(
"thing2"
,
info
.
getName
()
),
new
WxMpTemplateData
(
"time3"
,
DateUtil
.
format
(
new
Date
(),
"yyyy-MM-dd HH:mm:ss"
))
new
WxMpTemplateData
(
"time3"
,
DateUtil
.
format
(
info
.
getAlarm
Date
(),
"yyyy-MM-dd HH:mm:ss"
))
);
);
try
{
try
{
// String testOpenId = "oM2OI67H11zTZL88X99PxL6rAS3Y";
WxMpTemplateMessage
wxMpTemplateMessage
=
WxMpTemplateMessage
.
builder
().
toUser
(
info
.
getWeChatOpenid
())
WxMpTemplateMessage
wxMpTemplateMessage
=
WxMpTemplateMessage
.
builder
().
toUser
(
openId
)
.
templateId
(
"T8KWZtTBqQjL0H4BPQ4lMEuj4WwTS7lWegt6ys5VXmE"
)
.
templateId
(
"zn5fBS9cqjnN5UB78tAbm53M3dXufR2b5K1a8mkhXCY"
)
.
data
(
mpData
)
.
data
(
mpData
)
.
build
();
.
build
();
wxMpService
.
getTemplateMsgService
().
sendTemplateMsg
(
wxMpTemplateMessage
);
wxMpService
.
getTemplateMsgService
().
sendTemplateMsg
(
wxMpTemplateMessage
);
...
...
server-service/src/main/java/com/makeit/service/platform/alarm/alarmStrategy/OffBedAlarm.java
View file @
c670f26e
...
@@ -127,9 +127,12 @@ public class OffBedAlarm implements IAlarm {
...
@@ -127,9 +127,12 @@ public class OffBedAlarm implements IAlarm {
}
}
alarmRedisDTO
=
RedisUtil
.
get
(
RedisConst
.
ALARM_DEVICE_OFF_BED_ID
+
deviceId
);
alarmRedisDTO
=
RedisUtil
.
get
(
RedisConst
.
ALARM_DEVICE_OFF_BED_ID
+
deviceId
);
if
(
alarmRedisDTO
==
null
)
{
return
;
}
if
(
"1"
.
equals
(
alarmRedisDTO
.
getAlarm
()))
{
if
(
"1"
.
equals
(
alarmRedisDTO
.
getAlarm
()))
{
log
.
info
(
"deviceId:{},离床告警已发送预警过,第一次离床时间:{}"
,
deviceId
,
longToTime
(
alarmRedisDTO
.
getStartLong
()));
//
log.info("deviceId:{},离床告警已发送预警过,第一次离床时间:{}", deviceId, longToTime(alarmRedisDTO.getStartLong()));
return
;
return
;
}
}
// 是否跨天 xxx-0:00,未跨天
// 是否跨天 xxx-0:00,未跨天
...
@@ -155,7 +158,7 @@ public class OffBedAlarm implements IAlarm {
...
@@ -155,7 +158,7 @@ public class OffBedAlarm implements IAlarm {
PlatAlarmCheckDTO
platAlarmCheckDTO
,
PlatAlarmCheckDTO
platAlarmCheckDTO
,
PlatAlarmConfig
config
,
PlatAlarmConfig
config
,
String
deviceId
)
{
String
deviceId
)
{
log
.
info
(
"deviceId:{},cross_config:{},第一次离床时间:{}"
,
deviceId
,
config
.
getRuleConfig
(),
longToTime
(
alarmRedisDTO
.
getStartLong
()));
//
log.info("deviceId:{},cross_config:{},第一次离床时间:{}", deviceId, config.getRuleConfig(), longToTime(alarmRedisDTO.getStartLong()));
Integer
duration
=
ruleConfig
.
getDuration
();
Integer
duration
=
ruleConfig
.
getDuration
();
LocalTime
startTime
=
ruleConfig
.
getOffBedStart
();
LocalTime
startTime
=
ruleConfig
.
getOffBedStart
();
LocalTime
endTime
=
ruleConfig
.
getOffBedEnd
();
LocalTime
endTime
=
ruleConfig
.
getOffBedEnd
();
...
@@ -214,7 +217,7 @@ public class OffBedAlarm implements IAlarm {
...
@@ -214,7 +217,7 @@ public class OffBedAlarm implements IAlarm {
PlatAlarmCheckDTO
platAlarmCheckDTO
,
PlatAlarmCheckDTO
platAlarmCheckDTO
,
PlatAlarmConfig
config
,
PlatAlarmConfig
config
,
String
deviceId
)
{
String
deviceId
)
{
log
.
info
(
"deviceId:{},uncross_config:{},第一次离床时间:{}"
,
deviceId
,
config
.
getRuleConfig
(),
longToTime
(
alarmRedisDTO
.
getStartLong
()));
//
log.info("deviceId:{},uncross_config:{},第一次离床时间:{}", deviceId, config.getRuleConfig(), longToTime(alarmRedisDTO.getStartLong()));
Integer
duration
=
ruleConfig
.
getDuration
();
Integer
duration
=
ruleConfig
.
getDuration
();
LocalTime
startTime
=
ruleConfig
.
getOffBedStart
();
LocalTime
startTime
=
ruleConfig
.
getOffBedStart
();
LocalTime
endTime
=
ruleConfig
.
getOffBedEnd
();
LocalTime
endTime
=
ruleConfig
.
getOffBedEnd
();
...
...
server-service/src/main/java/com/makeit/service/platform/alarm/impl/PlatAlarmRecordServiceImpl.java
View file @
c670f26e
...
@@ -17,6 +17,7 @@ import com.makeit.common.page.PageReqDTO;
...
@@ -17,6 +17,7 @@ import com.makeit.common.page.PageReqDTO;
import
com.makeit.common.page.PageVO
;
import
com.makeit.common.page.PageVO
;
import
com.makeit.dto.platform.alarm.PlatAlarmCheckDTO
;
import
com.makeit.dto.platform.alarm.PlatAlarmCheckDTO
;
import
com.makeit.dto.platform.alarm.PlatAlarmRecordQueryDTO
;
import
com.makeit.dto.platform.alarm.PlatAlarmRecordQueryDTO
;
import
com.makeit.dto.platform.device.PlatDeviceQueryDTO
;
import
com.makeit.entity.platform.alarm.PlatAlarmConfig
;
import
com.makeit.entity.platform.alarm.PlatAlarmConfig
;
import
com.makeit.entity.platform.alarm.PlatAlarmRecord
;
import
com.makeit.entity.platform.alarm.PlatAlarmRecord
;
import
com.makeit.entity.platform.auth.PlatOrg
;
import
com.makeit.entity.platform.auth.PlatOrg
;
...
@@ -35,6 +36,8 @@ import com.makeit.global.aspect.tenant.TenantIdIgnore;
...
@@ -35,6 +36,8 @@ import com.makeit.global.aspect.tenant.TenantIdIgnore;
import
com.makeit.mapper.platform.alarm.PlatAlarmRecordMapper
;
import
com.makeit.mapper.platform.alarm.PlatAlarmRecordMapper
;
import
com.makeit.mapper.platform.elder.PlatElderChildrenInfoMapper
;
import
com.makeit.mapper.platform.elder.PlatElderChildrenInfoMapper
;
import
com.makeit.module.iot.service.IotDevicePropertiesOperateService
;
import
com.makeit.module.iot.service.IotDevicePropertiesOperateService
;
import
com.makeit.module.system.entity.SysDictionary
;
import
com.makeit.module.system.service.SysDictionaryService
;
import
com.makeit.service.platform.alarm.PlatAlarmConfigService
;
import
com.makeit.service.platform.alarm.PlatAlarmConfigService
;
import
com.makeit.service.platform.alarm.PlatAlarmRecordService
;
import
com.makeit.service.platform.alarm.PlatAlarmRecordService
;
import
com.makeit.service.platform.auth.PlatOrgService
;
import
com.makeit.service.platform.auth.PlatOrgService
;
...
@@ -61,6 +64,7 @@ import com.makeit.utils.user.common.CommonUserVO;
...
@@ -61,6 +64,7 @@ import com.makeit.utils.user.common.CommonUserVO;
import
com.makeit.utils.user.wechat.WechatUserUtil
;
import
com.makeit.utils.user.wechat.WechatUserUtil
;
import
com.makeit.vo.platform.alarm.PlatAlarmExternalRecordVO
;
import
com.makeit.vo.platform.alarm.PlatAlarmExternalRecordVO
;
import
com.makeit.vo.platform.alarm.PlatAlarmRecordVO
;
import
com.makeit.vo.platform.alarm.PlatAlarmRecordVO
;
import
com.makeit.vo.platform.device.PlatDeviceListVO
;
import
lombok.extern.slf4j.Slf4j
;
import
lombok.extern.slf4j.Slf4j
;
import
org.apache.commons.collections4.CollectionUtils
;
import
org.apache.commons.collections4.CollectionUtils
;
import
org.apache.commons.lang3.StringUtils
;
import
org.apache.commons.lang3.StringUtils
;
...
@@ -117,6 +121,8 @@ public class PlatAlarmRecordServiceImpl extends ServiceImpl<PlatAlarmRecordMappe
...
@@ -117,6 +121,8 @@ public class PlatAlarmRecordServiceImpl extends ServiceImpl<PlatAlarmRecordMappe
private
IotDevicePropertiesOperateService
iotDevicePropertiesOperateService
;
private
IotDevicePropertiesOperateService
iotDevicePropertiesOperateService
;
@Resource
@Resource
private
PlatElderChildrenInfoMapper
platElderChildrenInfoMapper
;
private
PlatElderChildrenInfoMapper
platElderChildrenInfoMapper
;
@Resource
private
SysDictionaryService
sysDictionaryService
;
@Override
@Override
...
@@ -329,8 +335,8 @@ public class PlatAlarmRecordServiceImpl extends ServiceImpl<PlatAlarmRecordMappe
...
@@ -329,8 +335,8 @@ public class PlatAlarmRecordServiceImpl extends ServiceImpl<PlatAlarmRecordMappe
}
}
allChildInfoList
.
addAll
(
childrenInfoList
);
allChildInfoList
.
addAll
(
childrenInfoList
);
Set
<
String
>
phoneSet
=
childrenInfoList
.
stream
().
map
(
PlatElderChildrenInfo:
:
getPhone
).
collect
(
Collectors
.
toSet
());
Set
<
String
>
phoneSet
=
childrenInfoList
.
stream
().
map
(
PlatElderChildrenInfo:
:
getPhone
).
collect
(
Collectors
.
toSet
());
//告警配置和租户告警 字典一致
todo SendTypeEnum.CHILD_WECHAT 公众号模板未好
//告警配置和租户告警 字典一致
List
<
SendTypeEnum
>
notifyChannelList
=
Arrays
.
asList
(
SendTypeEnum
.
SMS
,
SendTypeEnum
.
VOICE_SMS
);
List
<
SendTypeEnum
>
notifyChannelList
=
Arrays
.
asList
(
SendTypeEnum
.
SMS
,
SendTypeEnum
.
VOICE_SMS
,
SendTypeEnum
.
CHILD_WECHAT
);
List
<
MsgSendDTO
.
ReceiverInfo
>
receiverInfos
=
buildReceiverInfo
(
allChildInfoList
,
alarmRecord
);
List
<
MsgSendDTO
.
ReceiverInfo
>
receiverInfos
=
buildReceiverInfo
(
allChildInfoList
,
alarmRecord
);
//发送消息
//发送消息
noticeByChannel
(
alarmConfig
,
alarmRecord
,
phoneSet
,
null
,
notifyChannelList
,
receiverInfos
);
noticeByChannel
(
alarmConfig
,
alarmRecord
,
phoneSet
,
null
,
notifyChannelList
,
receiverInfos
);
...
@@ -350,14 +356,32 @@ public class PlatAlarmRecordServiceImpl extends ServiceImpl<PlatAlarmRecordMappe
...
@@ -350,14 +356,32 @@ public class PlatAlarmRecordServiceImpl extends ServiceImpl<PlatAlarmRecordMappe
if
(
CollUtil
.
isEmpty
(
childInfoList
))
{
if
(
CollUtil
.
isEmpty
(
childInfoList
))
{
return
list
;
return
list
;
}
}
PageReqDTO
<
PlatDeviceQueryDTO
>
pageReqDTO
=
new
PageReqDTO
<>();
pageReqDTO
.
setPage
(
1
);
pageReqDTO
.
setLimit
(
1
);
PlatDeviceQueryDTO
queryDTO
=
new
PlatDeviceQueryDTO
();
queryDTO
.
setId
(
alarmRecord
.
getDeviceId
());
pageReqDTO
.
setData
(
queryDTO
);
PageVO
<
PlatDeviceListVO
>
platPage
=
platDeviceService
.
platPage
(
pageReqDTO
);
String
regionName
=
alarmRecord
.
getRegionName
();
if
(
platPage
!=
null
&&
CollUtil
.
isNotEmpty
(
platPage
.
getList
()))
{
regionName
=
platPage
.
getList
().
get
(
0
).
getSpaceName
();
}
List
<
SysDictionary
>
dictList
=
sysDictionaryService
.
list
(
Wrappers
.<
SysDictionary
>
lambdaQuery
().
like
(
SysDictionary:
:
getCode
,
"alarm.alarmType"
));
Map
<
String
,
SysDictionary
>
dictMap
=
StreamUtil
.
toMapDep
(
dictList
,
SysDictionary:
:
getValue
);
SysDictionary
dictionary
=
dictMap
.
get
(
alarmRecord
.
getAlarmType
());
String
finalRegionName
=
regionName
;
childInfoList
.
forEach
(
c
->
{
childInfoList
.
forEach
(
c
->
{
if
(
StrUtil
.
isBlank
(
c
.
getWeChatOpenid
()))
{
if
(
StrUtil
.
isBlank
(
c
.
getWeChatOpenid
()))
{
return
;
return
;
}
}
MsgSendDTO
.
ReceiverInfo
receiverInfo
=
new
MsgSendDTO
.
ReceiverInfo
();
MsgSendDTO
.
ReceiverInfo
receiverInfo
=
new
MsgSendDTO
.
ReceiverInfo
();
receiverInfo
.
setRegionName
(
alarmRecord
.
getRegionName
()
);
receiverInfo
.
setRegionName
(
finalRegionName
);
receiverInfo
.
setName
(
c
.
get
Name
());
receiverInfo
.
setName
(
alarmRecord
.
getElder
Name
());
receiverInfo
.
setWeChatOpenid
(
c
.
getWeChatOpenid
());
receiverInfo
.
setWeChatOpenid
(
c
.
getWeChatOpenid
());
receiverInfo
.
setAlarmDate
(
alarmRecord
.
getAlarmDate
());
receiverInfo
.
setAlarmType
(
dictionary
!=
null
?
dictionary
.
getName
()
:
alarmRecord
.
getAlarmType
());
list
.
add
(
receiverInfo
);
list
.
add
(
receiverInfo
);
});
});
return
list
;
return
list
;
...
@@ -423,11 +447,9 @@ public class PlatAlarmRecordServiceImpl extends ServiceImpl<PlatAlarmRecordMappe
...
@@ -423,11 +447,9 @@ public class PlatAlarmRecordServiceImpl extends ServiceImpl<PlatAlarmRecordMappe
private
void
noticeByChannel
(
PlatAlarmConfig
alarmConfig
,
PlatAlarmRecord
alarmRecord
,
Set
<
String
>
phoneSet
,
Set
<
String
>
emailSet
,
private
void
noticeByChannel
(
PlatAlarmConfig
alarmConfig
,
PlatAlarmRecord
alarmRecord
,
Set
<
String
>
phoneSet
,
Set
<
String
>
emailSet
,
List
<
SendTypeEnum
>
notifyChannelList
,
List
<
MsgSendDTO
.
ReceiverInfo
>
receiverInfos
)
{
List
<
SendTypeEnum
>
notifyChannelList
,
List
<
MsgSendDTO
.
ReceiverInfo
>
receiverInfos
)
{
String
elderName
=
alarmRecord
.
getElderName
();
String
elderName
=
alarmRecord
.
getElderName
();
log
.
info
(
"开始短信通知:{},老人:{}"
,
JSON
.
toJSONString
(
alarmConfig
),
elderName
);
if
(
StrUtil
.
isNotBlank
(
alarmRecord
.
getElderIds
())
&&
StrUtil
.
isBlank
(
elderName
))
{
if
(
StrUtil
.
isNotBlank
(
alarmRecord
.
getElderIds
())
&&
StrUtil
.
isBlank
(
elderName
))
{
List
<
PlatElder
>
platElders
=
platElderService
.
listByIds
(
Arrays
.
asList
(
alarmRecord
.
getElderIds
().
split
(
","
)));
List
<
PlatElder
>
platElders
=
platElderService
.
listByIds
(
Arrays
.
asList
(
alarmRecord
.
getElderIds
().
split
(
","
)));
elderName
=
platElders
.
stream
().
map
(
PlatElder:
:
getName
).
collect
(
Collectors
.
joining
(
","
));
elderName
=
platElders
.
stream
().
map
(
PlatElder:
:
getName
).
collect
(
Collectors
.
joining
(
","
));
log
.
info
(
"开始短信通知--通知老人:{}"
,
elderName
);
}
}
String
notifyChannel
=
alarmConfig
.
getNotifyChannel
();
String
notifyChannel
=
alarmConfig
.
getNotifyChannel
();
if
(
StringUtils
.
isEmpty
(
notifyChannel
))
{
if
(
StringUtils
.
isEmpty
(
notifyChannel
))
{
...
...
server-service/src/main/java/com/makeit/service/platform/elder/impl/PlatElderDayReportDayServiceImpl.java
View file @
c670f26e
...
@@ -152,53 +152,6 @@ public class PlatElderDayReportDayServiceImpl implements PlatElderDayReportDaySe
...
@@ -152,53 +152,6 @@ public class PlatElderDayReportDayServiceImpl implements PlatElderDayReportDaySe
}
}
private
Long
getSleepScore
(
PlatElderSleepAnalysis
platElderSleepAnalysis
)
{
SaasSleepEvaluateStandardReport
evaluateStandardReport
=
saasSleepEvaluateStandardReportService
.
getOne
(
new
QueryWrapper
<
SaasSleepEvaluateStandardReport
>().
lambda
().
orderByDesc
(
BaseEntity:
:
getCreateDate
)
.
last
(
"limit 1"
));
List
<
PlatElderSleep
>
sleepList
=
platElderSleepService
.
list
(
Wrappers
.<
PlatElderSleep
>
lambdaQuery
()
.
eq
(
PlatElderSleep:
:
getHappenDate
,
platElderSleepAnalysis
.
getHappenDate
())
.
eq
(
PlatElderSleep:
:
getElderId
,
platElderSleepAnalysis
.
getElderId
()));
String
baseScore
=
platElderSleepService
.
calculateScores
(
Long
.
parseLong
(
platElderSleepAnalysis
.
getSleepTime
()),
Long
.
parseLong
(
platElderSleepAnalysis
.
getRestTime
()),
0
,
0
,
0
,
evaluateStandardReport
);
if
(
CollUtil
.
isEmpty
(
sleepList
)){
return
Long
.
parseLong
(
baseScore
);
}
AtomicReference
<
Long
>
score
=
new
AtomicReference
<>(
0L
);
sleepList
.
forEach
(
s
->
{
List
<
PlatSleepRangeVO
>
sleepRecord
=
s
.
getSleepRecord
();
sleepRecord
.
forEach
(
l
->
{
LocalDateTime
start
=
LocalDateTime
.
parse
(
l
.
getStartTime
(),
DateTimeFormatter
.
ofPattern
(
"yyyy-MM-dd HH:mm"
));
LocalDateTime
end
=
LocalDateTime
.
parse
(
l
.
getEndTime
(),
DateTimeFormatter
.
ofPattern
(
"yyyy-MM-dd HH:mm"
));
long
minutes
=
Duration
.
between
(
start
,
end
).
toMinutes
();
SleepTypeEnum
sleepType
=
SleepTypeEnum
.
getSleepType
(
l
.
getSleepType
());
if
(
sleepType
==
null
)
{
return
;
}
String
sleepScore
=
"0"
;
switch
(
sleepType
)
{
case
SLEEP_LIGHTNESS:
sleepScore
=
platElderSleepService
.
calculateScores
(
0
,
0
,
0
,
0
,
minutes
,
evaluateStandardReport
);
break
;
case
SLEEP_DEEP:
sleepScore
=
platElderSleepService
.
calculateScores
(
0
,
0
,
minutes
,
0
,
0
,
evaluateStandardReport
);
break
;
default
:
}
String
finalSleepScore
=
sleepScore
;
score
.
updateAndGet
(
v
->
v
+
Long
.
parseLong
(
finalSleepScore
));
});
});
Long
result
=
Long
.
parseLong
(
baseScore
)
+
score
.
get
();
return
result
.
compareTo
(
100L
)
>
0
?
100L
:
result
;
}
@Override
@Override
public
List
<
PlatElderSleepDiagramVO
>
sleepDiagram
(
PlatElderReportDTO
platElderIdDTO
)
{
public
List
<
PlatElderSleepDiagramVO
>
sleepDiagram
(
PlatElderReportDTO
platElderIdDTO
)
{
LocalDate
now
=
Optional
.
ofNullable
(
platElderIdDTO
.
getNow
()).
orElse
(
LocalDate
.
now
());
LocalDate
now
=
Optional
.
ofNullable
(
platElderIdDTO
.
getNow
()).
orElse
(
LocalDate
.
now
());
...
...
server-service/src/main/java/com/makeit/service/platform/elder/impl/PlatElderSleepServiceImpl.java
View file @
c670f26e
...
@@ -51,6 +51,7 @@ import java.util.ArrayList;
...
@@ -51,6 +51,7 @@ import java.util.ArrayList;
import
java.util.List
;
import
java.util.List
;
import
java.util.Map
;
import
java.util.Map
;
import
java.util.TreeMap
;
import
java.util.TreeMap
;
import
java.util.concurrent.atomic.AtomicInteger
;
import
java.util.concurrent.atomic.AtomicReference
;
import
java.util.concurrent.atomic.AtomicReference
;
import
java.util.stream.Collectors
;
import
java.util.stream.Collectors
;
...
@@ -966,8 +967,28 @@ public class PlatElderSleepServiceImpl extends ServiceImpl<PlatElderSleepMapper,
...
@@ -966,8 +967,28 @@ public class PlatElderSleepServiceImpl extends ServiceImpl<PlatElderSleepMapper,
return
result
;
return
result
;
}
}
/**
* 深度睡眠 : 每1小时加10分
* 持续3小时加60分
* 持续4小时加80分
* 浅度睡眠:每持续1小时加5分
* 清醒:每1次扣5分,超过10次扣10分
*
* 睡眠时长(扣除清醒):持续6小时加60分
* @param daySleepTime 睡眠时长
* @param dayRestTime 小憩时长
* @param deepTime 深度睡眠时长
* @param soberTime 中度睡眠时长
* @param lightTime 浅度睡眠时长
* @param evaluateStandardReport
* @return
*/
@Override
@Override
public
String
calculateScores
(
long
daySleepTime
,
long
dayRestTime
,
long
deepTime
,
long
soberTime
,
long
lightTime
,
public
String
calculateScores
(
long
daySleepTime
,
long
dayRestTime
,
long
deepTime
,
long
soberTime
,
long
lightTime
,
SaasSleepEvaluateStandardReport
evaluateStandardReport
)
{
SaasSleepEvaluateStandardReport
evaluateStandardReport
)
{
List
<
SleepConfigVO
>
sleepDeepConfigList
=
JSON
.
parseArray
(
evaluateStandardReport
.
getSleepDeepConfig
(),
SleepConfigVO
.
class
);
List
<
SleepConfigVO
>
sleepDeepConfigList
=
JSON
.
parseArray
(
evaluateStandardReport
.
getSleepDeepConfig
(),
SleepConfigVO
.
class
);
List
<
SleepConfigVO
>
soberConfigList
=
JSON
.
parseArray
(
evaluateStandardReport
.
getSoberConfig
(),
SleepConfigVO
.
class
);
List
<
SleepConfigVO
>
soberConfigList
=
JSON
.
parseArray
(
evaluateStandardReport
.
getSoberConfig
(),
SleepConfigVO
.
class
);
...
@@ -1010,6 +1031,39 @@ public class PlatElderSleepServiceImpl extends ServiceImpl<PlatElderSleepMapper,
...
@@ -1010,6 +1031,39 @@ public class PlatElderSleepServiceImpl extends ServiceImpl<PlatElderSleepMapper,
return
String
.
valueOf
(
totalScore
);
return
String
.
valueOf
(
totalScore
);
}
}
/**
* 深度睡眠 : 每1小时加10分
* 持续3小时加60分
* 持续4小时加80分
* 浅度睡眠:每持续1小时加5分
* 清醒:每1次扣5分,超过10次扣10分
*
* 睡眠时长(扣除清醒):持续6小时加60分
*/
public
String
calculateScores2
(
SleepTimeDTO
sleepTimeDTO
,
SleepTimeMinuteDTO
sleepTimeMinute
,
SaasSleepEvaluateStandardReport
evaluateStandardReport
)
{
AtomicInteger
score
=
new
AtomicInteger
();
List
<
SleepTimeAnalysisVO
>
deepList
=
sleepTimeDTO
.
getDeepList
();
List
<
SleepTimeAnalysisVO
>
lightList
=
sleepTimeDTO
.
getLightList
();
List
<
SleepTimeAnalysisVO
>
soberList
=
sleepTimeDTO
.
getSoberList
();
List
<
SleepConfigVO
>
sleepDeepConfigList
=
JSON
.
parseArray
(
evaluateStandardReport
.
getSleepDeepConfig
(),
SleepConfigVO
.
class
);
List
<
SleepConfigVO
>
soberConfigList
=
JSON
.
parseArray
(
evaluateStandardReport
.
getSoberConfig
(),
SleepConfigVO
.
class
);
SleepConfigVO
lightnessConfig
=
JSON
.
parseObject
(
evaluateStandardReport
.
getSleepLightnessConfig
(),
SleepConfigVO
.
class
);
List
<
SleepConfigVO
>
sleepTimeConfigList
=
JSON
.
parseArray
(
evaluateStandardReport
.
getSleepTime
(),
SleepConfigVO
.
class
);
if
(
CollUtil
.
isNotEmpty
(
deepList
)
&&
CollUtil
.
isNotEmpty
(
sleepDeepConfigList
))
{
deepList
.
forEach
(
d
->
{
long
interval
=
d
.
getInterval
()
==
null
?
0
:
d
.
getInterval
()
/
60
;
SleepConfigVO
configVO
=
sleepDeepConfigList
.
stream
().
filter
(
f
->
f
.
getHour
().
equals
(
Long
.
toString
(
interval
))).
findFirst
().
orElse
(
null
);
if
(
configVO
==
null
)
{
return
;
}
score
.
addAndGet
(
Integer
.
parseInt
(
configVO
.
getScore
()));
});
}
return
Integer
.
toString
(
score
.
get
());
}
public
Long
getDurationRange
(
String
startTime
,
String
endTime
)
{
public
Long
getDurationRange
(
String
startTime
,
String
endTime
)
{
LocalDateTime
target
=
LocalDateTime
.
parse
(
startTime
,
DEFAULT_FORMATTER
);
LocalDateTime
target
=
LocalDateTime
.
parse
(
startTime
,
DEFAULT_FORMATTER
);
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment