|
|
@@ -73,8 +73,18 @@ public class UnlockGateService {
|
|
|
new LambdaQueryWrapper<User>().eq(User::getFamilyId, familyId));
|
|
|
if (familyUsers.isEmpty()) return false;
|
|
|
List<Long> userIds = familyUsers.stream().map(User::getId).collect(Collectors.toList());
|
|
|
- long count = selfCheckMapper.selectCount(
|
|
|
+ long selfCheckCount = selfCheckMapper.selectCount(
|
|
|
new LambdaQueryWrapper<FiveDimensionSelfCheck>().in(FiveDimensionSelfCheck::getUserId, userIds));
|
|
|
+ // 家庭成员健康档案(health_status) 同样视为完成自检
|
|
|
+ long healthCount = 0L;
|
|
|
+ List<FamilyMember> familyMembers = familyMemberMapper.selectList(
|
|
|
+ new LambdaQueryWrapper<FamilyMember>().eq(FamilyMember::getFamilyId, familyId));
|
|
|
+ if (!familyMembers.isEmpty()) {
|
|
|
+ List<Long> memberIds = familyMembers.stream().map(FamilyMember::getId).collect(Collectors.toList());
|
|
|
+ healthCount = healthStatusMapper.selectCount(
|
|
|
+ new LambdaQueryWrapper<HealthStatus>().in(HealthStatus::getMemberId, memberIds));
|
|
|
+ }
|
|
|
+ long count = selfCheckCount + healthCount;
|
|
|
int minCount = 1;
|
|
|
if (gate.getConditionParams() != null && !gate.getConditionParams().isEmpty()) {
|
|
|
// parse JSON for minCount
|
|
|
@@ -150,13 +160,25 @@ public class UnlockGateService {
|
|
|
*/
|
|
|
public boolean hasFamilySelfCheck(Long familyId) {
|
|
|
if (familyId == null) return false;
|
|
|
+ // 原有:任一家庭成员有健康档案(health_status)
|
|
|
List<FamilyMember> familyMembers = familyMemberMapper.selectList(
|
|
|
new LambdaQueryWrapper<FamilyMember>().eq(FamilyMember::getFamilyId, familyId));
|
|
|
- if (familyMembers.isEmpty()) return false;
|
|
|
- List<Long> memberIds = familyMembers.stream().map(FamilyMember::getId).collect(Collectors.toList());
|
|
|
- long healthCount = healthStatusMapper.selectCount(
|
|
|
- new LambdaQueryWrapper<HealthStatus>().in(HealthStatus::getMemberId, memberIds));
|
|
|
- return healthCount >= 1;
|
|
|
+ if (!familyMembers.isEmpty()) {
|
|
|
+ List<Long> memberIds = familyMembers.stream().map(FamilyMember::getId).collect(Collectors.toList());
|
|
|
+ long healthCount = healthStatusMapper.selectCount(
|
|
|
+ new LambdaQueryWrapper<HealthStatus>().in(HealthStatus::getMemberId, memberIds));
|
|
|
+ if (healthCount >= 1) return true;
|
|
|
+ }
|
|
|
+ // 新增:任一家庭成员完成五维自检(five_dimension_self_check) 也视为通过(与 isGateUnlocked(SELF_CHECK) 保持一致)
|
|
|
+ List<User> familyUsers = userMapper.selectList(
|
|
|
+ new LambdaQueryWrapper<User>().eq(User::getFamilyId, familyId));
|
|
|
+ if (!familyUsers.isEmpty()) {
|
|
|
+ List<Long> userIds = familyUsers.stream().map(User::getId).collect(Collectors.toList());
|
|
|
+ long selfCheckCount = selfCheckMapper.selectCount(
|
|
|
+ new LambdaQueryWrapper<FiveDimensionSelfCheck>().in(FiveDimensionSelfCheck::getUserId, userIds));
|
|
|
+ return selfCheckCount >= 1;
|
|
|
+ }
|
|
|
+ return false;
|
|
|
}
|
|
|
|
|
|
// ========== 当前锁定关卡 ==========
|