package com.rf.psychological.scale.resultBusiness.scaleResult;

import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.rf.psychological.dao.dto.scale.NewResultDto;
import com.rf.psychological.dao.model.AnswerEntity;
import com.rf.psychological.dao.model.DimensionEntity;
import com.rf.psychological.scale.dao.model.ScaleMarksEntity;
import com.rf.psychological.scale.scaleresult.ScaleConstant;
import com.rf.psychological.utils.RandomSuggestionUtil;

import java.time.Duration;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.*;
/**
 * @author zsy
 * @description:匹兹堡睡眠质量指数
 * 备注：2022年7月21日Gaoyixuan已改正，数据格式由version1转换为version2，但是仍有问题
 * @date 2021/7/20 15:55
 */
public class PSQIScale extends BaseScale{

    //睡眠等级
    private static final String excellentSleep = "甜美如梦";
    private static final String goodSleep = "宁静臻享";
    private static final String fairSleep = "梦想普通";
    private static final String poorSleep = "梦境紊乱";
    //睡眠等级评论
    private static final String excellentComment = "1. 优质睡眠是每个人追求的目标之一，它不仅仅是在夜间眼睛闭合、身体放松的简单状态。在优质睡眠中，一个人能够迅速进入深度睡眠阶段，整夜保持较低的醒来次数，即使偶尔醒来也能迅速入睡。通常，这种睡眠状态下，个体的睡眠时间符合理想范围，一般为7至9小时，这有助于身体各系统的修复和恢复功能。睡眠期间，大脑通过整理和储存白天的信息，促进记忆和学习能力的提升。而身体的免疫系统也在这段时间内变得更加有效。最重要的是，优质睡眠能显著改善个体的情绪和心理健康状态，降低焦虑和抑郁的风险。清晨醒来时，感觉精力充沛、头脑清晰，白天能够更加高效地完成工作和学习任务。因此，良好的睡眠质量不仅仅是个人健康和幸福的保障，更是全面提升生活质量的重要因素。#;\n" +
            "2. 优质睡眠对于人体健康至关重要。一段良好的睡眠可以帮助身体恢复，促进新陈代谢，增强免疫力，提高注意力和专注力。良好的睡眠还有助于调节情绪，减轻压力，改善心理健康。为了获得优质睡眠，我们可以采取一些有效的方法，比如保持规律的作息时间，营造舒适的睡眠环境，避免过度使用电子设备，规律锻炼身体等。此外，饮食习惯也会影响睡眠质量，适当控制摄入咖啡因和糖分，晚餐不宜过饱或过饿，有助于改善睡眠质量。最后，建立放松的睡前习惯，比如泡热水澡、阅读、冥想等，有助于缓解白天的压力，为一个美好的夜晚铺就道路。优质睡眠是健康生活的基石，让我们重视并培养良好的睡眠习惯，从而拥有更加充实、健康的生活。#;\n" +
            "3. 优质睡眠是指在适宜的时间内，身体和心灵都能得到充分的休息与恢复的睡眠状态。它不仅仅是简单的入睡和醒来，更涉及到深度睡眠和快速眼动睡眠（REM）的平衡。优质睡眠能够促进身体的修复与再生，强化免疫系统，提升记忆力和学习能力，同时调节情绪，减少焦虑和抑郁的风险。为了获得优质睡眠，我们应当保持规律的作息时间，每天尽量在同一时间上床和起床，即使在周末也不例外。创造一个舒适的睡眠环境也非常重要：确保卧室安静、黑暗且温度适宜，选择舒适的床垫和枕头。避免在晚上摄入咖啡因、酒精和重食，也要尽量减少睡前使用电子设备的时间，因为蓝光会干扰身体的自然睡眠节律。睡前可以进行一些放松活动，如泡热水澡、阅读轻松的书籍或者进行深呼吸练习，这些都有助于缓解一天的紧张和压力，帮助我们更快地进入深度睡眠。总之，优质睡眠是身心健康的基石，每个人都应高度重视并为之努力。#;\n" +
            "4. 优质睡眠是保持身体和心理健康不可或缺的重要因素。它不仅仅意味着每晚都能入眠，更重要的是在整个睡眠周期中能够经历深度睡眠和REM睡眠，这两种睡眠阶段对身体各系统的恢复和修复至关重要。优质睡眠有助于增强免疫力，促进新陈代谢，提升记忆力和学习能力，同时有助于调节情绪、缓解压力和焦虑。为了实现优质睡眠，良好的睡眠习惯是关键。保持规律的作息时间，避免在睡前摄入刺激性食物和饮料，创造安静、舒适的睡眠环境，都是必要的步骤。此外，放松身心也是促进良好睡眠的重要方法，可以尝试进行深呼吸、冥想或温水浸泡等活动来放松神经系统。通过这些努力，我们可以更好地享受每一个新的一天，拥有充沛的精力和积极的心态。优质睡眠不仅是健康生活的基础，更是提升生活质量的重要保障。#;\n" +
            "5. 优质睡眠是每个人健康生活的重要组成部分。它不仅仅是一种休息，更是身心恢复与调节的关键时刻。通过深度睡眠和REM睡眠阶段，身体能够有效修复组织、巩固记忆，并且提升免疫系统功能。一个良好的睡眠周期还有助于调节体内的代谢过程，保持情绪稳定，减少焦虑和抑郁的风险。为了实现优质睡眠，维持规律的作息时间和舒适的睡眠环境至关重要。这包括保持卧室安静、黑暗和凉爽，选择适合个人偏好的床垫和枕头。此外，避免在睡前摄入咖啡因和大量液体，以及限制使用电子设备的时间，也是提升睡眠质量的有效方法。通过培养健康的睡眠习惯和放松技巧，我们能够更好地调整生物钟，保持身心健康的平衡状态。因此，优质睡眠不仅是生理健康的保证，更是提升生活质量和工作效率的重要保障。";
    private static final String goodComment = "1. 良好的睡眠是维持身心健康的基石。它不仅是一种休息，更是身体各系统恢复和重建的重要时段。在深度睡眠和REM睡眠中，身体进行细胞修复和新陈代谢调节，有助于增强免疫力，促进心血管健康，以及提升认知功能和情绪稳定。为了获得良好的睡眠，建立健康的睡眠习惯至关重要，如保持规律的作息时间，创造安静舒适的睡眠环境，选择适合个人需求的床垫和枕头。此外，避免在睡前过度使用电子设备和摄入咖啡因等刺激物质也是提升睡眠质量的关键步骤。通过这些努力，我们能够改善睡眠模式，确保每晚充足而恢复性的休息，从而在白天拥有更高效的工作和更积极的生活状态。良好的睡眠不仅使我们身体得到充分的修复，还有助于提升整体生活质量，确保每一天都能迎接最佳状态。#;\n" +
            "2. 良好的睡眠对身体和心理健康至关重要。在深度睡眠阶段，身体修复受损的组织，加强免疫系统功能，并清除代谢废物，有助于维持身体的整体健康。同时，REM睡眠阶段则促进学习和记忆的巩固，提升情绪调节能力。为了实现良好的睡眠质量，建议保持规律的作息时间表，避免在睡前摄入大量咖啡因和过多的液体，确保睡眠环境安静、舒适和凉爽，选择适合个人喜好的床垫和枕头。此外，放松技巧如深呼吸、冥想或温热浴也有助于缓解压力和促进入眠。通过这些方法，可以提高睡眠效率，确保每晚充足的睡眠时间，从而在白天保持精力充沛和心情愉快。良好的睡眠不仅有助于身体各项功能的恢复和调节，还能提升生活质量，使人更加健康和充实。#;\n" +
            "3. 良好的睡眠是健康生活的重要组成部分，它不仅使我们的身体得到充分的休息和恢复，还对我们的心理健康和日常表现有着深远的影响。在深度睡眠阶段，身体进行细胞修复、肌肉生长和免疫系统增强，这对于维持身体健康至关重要。而在快速眼动（REM）睡眠阶段，大脑则处理和巩固白天的记忆，促进情感平衡和认知功能。为了获得良好的睡眠，建立规律的作息时间非常重要，每天尽量在同一时间上床和起床。此外，营造一个理想的睡眠环境也不可忽视，这包括保持卧室安静、黑暗和凉爽，选择适合的床垫和枕头，以及避免使用电子设备。饮食方面，避免在睡前摄入咖啡因和大量食物，以免影响入睡。适度的运动和放松技巧，如瑜伽和冥想，也能有效提高睡眠质量。通过这些方法，我们能够实现高质量的睡眠，从而在白天保持充沛的精力和积极的心态，提升整体生活质量。确保每晚的睡眠充足和优质，是我们健康生活的重要保证。#;\n" +
            "4. 良好的睡眠对我们的身心健康至关重要。在睡眠过程中，身体进入不同的睡眠阶段，包括深度睡眠和REM睡眠。深度睡眠有助于身体修复和生长，加强免疫系统，同时有利于心血管健康和代谢平衡。REM睡眠则对认知功能和情绪调节至关重要，帮助巩固学习和记忆。为了获得良好的睡眠质量，建议保持规律的睡眠时间表，创造舒适安静的睡眠环境，避免在睡前过度使用电子设备和摄入刺激性食物或饮料。适度的运动和放松技巧如深呼吸和冥想也能帮助放松身心，促进入眠。良好的睡眠不仅有助于恢复体力和提高注意力，还能够提升情绪稳定性和心理健康。因此，通过养成健康的睡眠习惯，我们可以在日常生活中更有效地应对压力和挑战，保持身心的健康和平衡。#;\n" +
            "5. 良好的睡眠是维持身体和心理健康的关键。在睡眠过程中，身体进行细胞修复和新陈代谢调节，这对于恢复肌肉疲劳、促进免疫功能至关重要。同时，睡眠还有助于大脑记忆的巩固和学习能力的提升，通过REM睡眠阶段实现。建立良好的睡眠习惯包括保持规律的作息时间、创造安静舒适的睡眠环境和避免过度使用电子设备。饮食方面，适度控制咖啡因和烈性饮料的摄入，以及避免大餐和高脂食物可帮助促进良好的睡眠。运动和放松技巧如瑜伽或冥想有助于降低身心的紧张感，为入睡创造良好条件。维持健康的睡眠模式不仅有助于提升白天的注意力和精力，还能增强抵抗力和情绪调节能力。因此，关注睡眠质量是每个人日常生活中的重要一环，为全面健康和幸福生活打下坚实基础。";
    private static final String fairComment = "1. 一般睡眠对健康和生活质量至关重要。每晚大约7-9小时的睡眠时间是大多数成年人所需，尽管个体需求会有所不同。这段时间内，身体经历多个睡眠周期，包括深度睡眠和REM睡眠。深度睡眠有助于恢复身体的能量和修复组织，促进肌肉生长和免疫功能的加强。而REM睡眠则支持认知功能和情绪平衡，帮助记忆的巩固和学习能力的提高。维持规律的睡眠模式和健康的睡眠习惯是确保获得充足睡眠的关键，包括创建一个安静、黑暗和舒适的睡眠环境，避免在睡前过度使用电子设备和刺激性饮食。合理的日常运动和放松技巧，如深呼吸和冥想，有助于减少入睡障碍和提升睡眠质量。通过关注和优化我们的睡眠，我们不仅可以提高白天的注意力和精力，还能够增强抵抗力和情绪调节能力，从而更好地迎接日常生活的挑战。#;\n" +
            "2. 一般睡眠是指一个人在自然状态下获得的常规夜间休息时间，其质量和数量直接影响到身体和心理健康。成人一般需要每晚7-9小时的睡眠，以保证身体各系统的正常运作。在睡眠过程中，人体会经历数个90分钟左右的睡眠周期，每个周期包括浅睡、深睡和快速眼动（REM）睡眠阶段。深睡阶段对于身体的修复和生长至关重要，它能帮助肌肉恢复、增强免疫力并促进细胞再生；而REM睡眠则对大脑功能尤为重要，参与情绪调节、记忆巩固和学习能力的提升。为了获取高质量的睡眠，保持规律的作息时间至关重要，这有助于调节体内的生物钟。此外，营造一个安静、舒适、黑暗的睡眠环境亦能显著改善睡眠质量。避免在睡前摄入咖啡因、尼古丁等刺激性物质，以及减少使用电子设备，也有助于更快入睡和维持深度睡眠。适当的日间运动和放松技巧如瑜伽或冥想，可以减轻压力，促进更好的睡眠。总之，良好的睡眠不仅使人精力充沛、注意力集中，还能提高整体生活质量和幸福感。#;\n" +
            "3. 一般睡眠对于每个人的健康和日常功能至关重要。成人每晚通常需要7至9小时的睡眠来恢复体力和促进身体健康。良好的睡眠有助于维持免疫系统的正常功能，促进新陈代谢的平衡，并且有助于心理健康的稳定。睡眠过程中的深度睡眠阶段有助于修复身体组织，促进肌肉生长和修复受损细胞。同时，REM（快速眼动）睡眠阶段则对认知功能至关重要，有助于记忆和学习能力的提升。良好的睡眠习惯包括保持规律的作息时间表，创造一个安静舒适的睡眠环境，避免在睡前过度刺激性活动和饮食，以及采用放松技巧如深呼吸或冥想。这些都有助于提高睡眠的质量和效果，使人在白天保持更高的注意力和精力，更好地应对日常生活的挑战和压力。因此，注重并优化个人的睡眠习惯是保持健康和幸福生活的重要一环。#;\n" +
            "4. 一般睡眠是每个人生活中不可或缺的重要部分，直接影响身心健康和日常表现。成人通常需要每晚7至9小时的充足睡眠，以便身体各系统得以恢复和重建。睡眠分为多个阶段，包括进入深度睡眠以促进身体修复和免疫增强，以及快速眼动（REM）睡眠，有助于记忆巩固和情绪调节。保持规律的睡眠时间表和良好的睡眠环境（如安静、黑暗和舒适）是提高睡眠质量的关键因素。此外，避免在睡前摄入咖啡因和刺激性食物，以及采用放松技巧如深呼吸或冥想，可以帮助缓解压力和促进更快入眠。优质睡眠不仅有助于保持身体健康和精力充沛，还能提升大脑功能和情绪稳定，对整体生活质量起到关键作用。因此，建立良好的睡眠习惯对于个人的健康和幸福感至关重要，应成为每个人日常生活中的重要一环。#;\n" +
            "5. 一般睡眠对于我们的健康和生活质量至关重要。成人每晚需要约7至9小时的睡眠，以确保身体和大脑能够充分恢复和重建。良好的睡眠习惯不仅有助于维持免疫系统的正常功能，还能促进新陈代谢的平衡，有助于身体组织的修复和维护。睡眠过程中的不同阶段包括深度睡眠和REM睡眠，这些阶段分别对于身体修复和认知功能的提升至关重要。保持稳定的睡眠时间表、创造舒适的睡眠环境以及避免在睡前刺激性活动和食物是改善睡眠质量的关键措施。通过这些方法，我们能够在白天保持更好的注意力和精力，从而更有效地应对工作和生活中的各种挑战。因此，养成良好的睡眠习惯不仅有助于身体健康，还能提升整体生活质量，使我们在日常生活中更加健康和愉悦。";
    private static final String poorComment = "1. 差睡眠对我们的身体和心理健康产生广泛而深远的负面影响。当我们无法获得足够的睡眠时，身体各系统的功能将受到影响，包括免疫系统、新陈代谢和神经系统。长期缺乏充足睡眠会导致注意力和记忆力下降，影响学习和工作效率，甚至增加事故和错误发生的风险。身体方面，睡眠不足可能导致体重增加、心血管疾病风险增加，以及情绪不稳定和抑郁的发生率上升。此外，失眠和不规律的睡眠模式还可能加重慢性疾病的症状，如糖尿病和高血压。因此，对于个体和整体社会而言，改善睡眠质量和确保充足的睡眠时间至关重要。通过建立健康的睡眠习惯，如保持规律的睡眠时间表、创造适宜的睡眠环境和避免睡前刺激，我们能够显著提升生活质量，增强身体健康和心理幸福感。#;\n" +
            "2. 差睡眠对身体和心理健康有着深远的负面影响。长期睡眠不足会导致身体的生理机能紊乱，免疫系统削弱，使人更容易患上感冒和其他疾病。此外，睡眠不足严重影响大脑功能，导致注意力不集中、反应迟钝、记忆力减退和决策能力下降。这对于工作和学习效率都是极大的打击，增加了出错和发生意外的风险。情绪方面，睡眠不足与焦虑、抑郁等心理问题密切相关，长时间的睡眠不足会使人情绪易怒、波动剧烈，甚至可能引发精神疾病。身体健康也会因差睡眠受到威胁，例如增加心脏病、高血压和糖尿病的风险，甚至可能导致体重增加和肥胖。此外，差睡眠还会影响皮肤健康，导致皮肤暗沉、加速衰老。要改善睡眠质量，需要从生活习惯入手：保持规律的作息时间，创造舒适的睡眠环境，避免在睡前饮用含咖啡因的饮料或使用电子设备。通过这些方法，可以显著提高睡眠质量，从而提升整体的健康状况和生活质量。#;\n" +
            "3. 差睡眠对身体和心理健康的影响是显而易见的。无论是短期还是长期，睡眠不足都会严重影响个体的日常功能和整体健康。在身体层面，缺乏充足的睡眠会削弱免疫系统，增加患病的风险，并且影响新陈代谢的正常运行，可能导致体重控制问题。此外，长期睡眠不足还与心血管疾病、糖尿病等慢性疾病的发生率增加相关联。在心理方面，睡眠不足会显著降低注意力和集中力，影响学习能力和工作效率，同时还会加重情绪波动，使人更易焦虑、抑郁或易怒。长期处于睡眠不足状态的人群，还可能面临认知功能下降和记忆力减退的风险。因此，保持良好的睡眠习惯不仅关乎个体的身体健康和心理健康，也直接影响到整体生活质量和工作生产力。有效的睡眠管理包括建立规律的睡眠时间表，创造舒适的睡眠环境，避免过度使用电子设备和摄入刺激性食物或饮料，这些都是改善睡眠质量的关键措施。#;\n" +
            "4. 差睡眠是现代生活中普遍存在的问题，对身体和心理健康都带来深远影响。缺乏充足的睡眠会直接影响大脑功能，导致注意力不集中、反应迟钝，甚至影响记忆力和学习能力。身体方面，长期睡眠不足会削弱免疫系统，增加感染疾病的风险，也可能导致代谢紊乱和体重问题。心理健康受到影响的表现包括情绪不稳定、易怒、焦虑和抑郁等。睡眠不足还与多种慢性疾病如心血管疾病、糖尿病等密切相关，对整体健康构成威胁。改善睡眠质量的方法包括建立良好的睡眠习惯，如保持规律的睡眠时间、创造适宜的睡眠环境和避免过度使用电子设备。通过这些措施，可以帮助调节生物钟，提升睡眠质量，从而改善身心健康和生活质量。有效管理睡眠不仅关乎个人健康，也是维持社会生产力和整体社会健康的重要因素。#;\n" +
            "5. 差睡眠对身体和心理健康的影响深远且显而易见。睡眠不足会直接影响大脑功能，导致注意力不集中、反应迟钝，严重时甚至影响决策能力和记忆力。身体方面，长期缺乏充足睡眠会增加心血管疾病、糖尿病和肥胖的风险，因为睡眠是身体修复和新陈代谢的重要时期。此外，免疫系统也受到睡眠不足的影响，使得身体更容易感染疾病。在心理层面，差睡眠常常导致情绪不稳定，易怒、焦虑和抑郁等问题。社交功能和人际关系也可能因为睡眠不足而受到影响，因为精神状态的不稳定会影响与他人的互动和交流。综上所述，保持良好的睡眠习惯对于个人的身体健康和心理健康至关重要，是维持整体生活质量和工作效率的关键因素。";

    public PSQIScale(JSONArray jsonArray, JSONObject resultJson) {
        super(jsonArray, resultJson);
    }

    public  JSONObject scaleCalculate() throws Exception {
        return null;
    }

    public JSONObject scaleCalculateV2() throws Exception {
        //总分
        double score = 0;
        Map<String, String> resultMap0 = new LinkedHashMap<>();
        List<Map<String, String>> resultMapList = new ArrayList<>();
        //新版本数据格式
        Map<String, Object> newResult = new LinkedHashMap<>();
        //返回值以及存数据库格式
        List<NewResultDto> newResultDtos = new ArrayList<>();
        if (jsonArray.size() > 0) {
            score += checkSleepTime(jsonArray) + checkWaitTime(jsonArray) + checkWakeTime(jsonArray) + checkSleepHour(jsonArray) + checkSleepQuality(jsonArray) + checkQuality(jsonArray) + checkEnergy(jsonArray);
            resultMap0.put("总分", String.valueOf(score));
            resultJson.put("总分", String.valueOf(score));
            if (score >= 0 && score <= 12) {
                String excellentStr = RandomSuggestionUtil.getSuggestion(excellentComment);
                newResultDtos.add(new NewResultDto("总分", String.valueOf(score), excellentSleep, excellentStr, "无",
                        "无", "无", "无", "是"));
                resultMap0.put("总分解释", excellentSleep);
                resultMap0.put("总分说明", excellentStr);
                resultMap0.put("总分解读", "无");
                resultMap0.put("总分建议", "无");
                resultJson.put("总分解释", excellentSleep);
                resultJson.put("总分说明", excellentStr);
                resultJson.put("总分解读", "无");
                resultJson.put("总分建议", "无");
            } else if (score >= 13 && score <= 26) {
                String goodStr = RandomSuggestionUtil.getSuggestion(goodComment);
                newResultDtos.add(new NewResultDto("总分", String.valueOf(score), goodSleep, goodStr, "无",
                        "无", "无", "坚持有规律的作息时间，在周末不要睡得太晚，睡前不要暴饮暴食，也不要喝太多的水。", "是"));
                resultMap0.put("总分解释", goodSleep);
                resultMap0.put("总分说明", goodStr);
                resultMap0.put("总分解读", "无");
                resultMap0.put("总分建议", "坚持有规律的作息时间，在周末不要睡得太晚，睡前不要暴饮暴食，也不要喝太多的水。");
                resultJson.put("总分解释", goodSleep);
                resultJson.put("总分说明", goodStr);
                resultJson.put("总分解读", "无");
                resultJson.put("总分建议", "坚持有规律的作息时间，在周末不要睡得太晚，睡前不要暴饮暴食，也不要喝太多的水。");
            } else if (score >= 27 && score <= 40) {
                String fairStr = RandomSuggestionUtil.getSuggestion(fairComment);
                newResultDtos.add(new NewResultDto("总分", String.valueOf(score), fairSleep, fairStr, "无",
                        "无", "无", "舒缓的心情就可以让患者早日睡眠，还有就是患者要积极锻炼，在肌体劳累之时就可以很快入眠。", "是"));
                resultMap0.put("总分解释", fairSleep);
                resultMap0.put("总分说明", fairStr);
                resultMap0.put("总分解读", "无");
                resultMap0.put("总分建议", "舒缓的心情就可以让患者早日睡眠，还有就是患者要积极锻炼，在肌体劳累之时就可以很快入眠。");
                resultJson.put("总分解释", fairSleep);
                resultJson.put("总分说明", fairStr);
                resultJson.put("总分解读", "无");
                resultJson.put("总分建议", "舒缓的心情就可以让患者早日睡眠，还有就是患者要积极锻炼，在肌体劳累之时就可以很快入眠。");
            } else if (score >= 41 && score <= 54) {
                String poorStr = RandomSuggestionUtil.getSuggestion(poorComment);
                newResultDtos.add(new NewResultDto("总分", String.valueOf(score), poorSleep, poorStr, "无",
                        "无", "无", "建议您及时就医了，必要时采用药物治疗。", "是"));
                resultMap0.put("总分解释", "睡眠质量很差");
                resultMap0.put("总分说明", poorStr);
                resultMap0.put("总分解读", "无");
                resultMap0.put("总分建议", "建议您及时就医了，必要时采用药物治疗。");
                resultJson.put("总分解释", "睡眠质量很差");
                resultJson.put("总分说明", poorStr);
                resultJson.put("总分解读", "无");
                resultJson.put("总分建议", "建议您及时就医了，必要时采用药物治疗。");
            }
            resultMapList.add(resultMap0);
        }
        //需要图表展示的
        newResult.put("iconInfo", "");
        newResult.put("result", newResultDtos);
        JSONObject returnJson = new JSONObject(true);
        returnJson.put("resultMapList", resultMapList);
        returnJson.put("resultJson", resultJson);
        returnJson.put(ScaleConstant.ResultEnum.RESULT_NEW_FIELD.getKeyword(), newResult);
        return returnJson;
    }

    /**
     * 获取第一题分数
     * @param jsonArray
     * @return
     */
    private static int checkSleepTime(JSONArray jsonArray){
        //第一题：睡觉时间：22:00前0分，22:00到23:001分；23:00到24:002分；24:00到1:003分
        //获取睡觉时间小时
        Integer hour = Integer.parseInt(jsonArray.getJSONObject(0).getString("checkItems").substring(0, jsonArray.getJSONObject(0).getString("checkItems").indexOf(":")));
        if ((hour > 3) && (hour < 22)){
            return 0;
        } else if ((hour == 22) || (hour == 23)){
            return 1;
        } else if ((hour == 24) || (hour == 1)){
            return 2;
        } else {
            return 3;
        }
    }

    /**
     * 获取第二题分数
     * @param jsonArray
     * @return
     */
    private static int checkWaitTime(JSONArray jsonArray){
        JSONObject jsonObject1 = jsonArray.getJSONObject(1);
        String minute = jsonObject1.getString("checkItems");
        if(minute.equals("16~30min")){
            return 1;
        } else if(minute.equals("31~60min")){
            return 2;
        } else if(minute.equals(">=60min")){
            return 3;
        } else {
            return 0;
        }
    }
    /**
     * 获取第三题分数
     * @param jsonArray
     * @return
     */
    private static int checkWakeTime(JSONArray jsonArray){
        Integer hour = Integer.parseInt(jsonArray.getJSONObject(3).getString("checkItems").substring(0, jsonArray.getJSONObject(0).getString("checkItems").indexOf(":")));
        if (hour < 6){
            return 0;
        } else if ((hour == 6) || (hour == 7)){
            return 1;
        } else if ((hour == 8) || (hour == 9)){
            return 2;
        } else {
            return 3;
        }
    }
    /**
     * 获取第四题分数
     * @param jsonArray
     * @return
     */
    private int checkSleepHour(JSONArray jsonArray) {

        //睡眠时间 根据条⽬ 4 的应答计分， >7 ⼩时计 0 分，6~7 计 1 分，5~6计 2 分，<5 ⼩时计 3 分。
        int scoreHour = 0;
        //JSONObject jsonObject1 = jsonArray.getJSONObject(3);
        String hourSleepString = jsonArray.getJSONObject(3).getString("checkItems");
        int hour =Integer.parseInt(hourSleepString.substring(0,hourSleepString.indexOf(":")));
        if(hour>6&&hour<=7){
            scoreHour = 1;
        }else if (hour>=5&&hour<=6){
            scoreHour = 2 ;
        }else if (hour<5){
            scoreHour = 3 ;
        }
        return scoreHour;
    }
    /**
     * 获取第五-十四题分数/十六-十七题分数
    * @param jsonArray
    * @return
    */
    private static int checkSleepQuality(JSONArray jsonArray){
        //睡眠障碍
        int score = 0;
        for(int i=4;i<14;i++){
            JSONObject jsonObject = jsonArray.getJSONObject(i);
            String checkItems = jsonObject.getString("checkItems").trim();
            if(checkItems.equals("很少出现")){
                score += 1;
            }else if(checkItems.equals("有那么一两次")){
                score += 2;
            }else if(checkItems.equals("太多次了，根本记不清")){
                score += 3;
            }
        }
        for(int i=15;i<17;i++){
            JSONObject jsonObject = jsonArray.getJSONObject(i);
            String checkItems = jsonObject.getString("checkItems").trim();
            if(checkItems.equals("很少出现")){
                score += 1;
            }else if(checkItems.equals("有那么一两次")){
                score += 2;
            }else if(checkItems.equals("太多次了，根本记不清")){
                score += 3;
            }
        }
        return score;
    }
    /**
     * 获取第十五题分数
     * @param jsonArray
     * @return
     */
    private static int checkQuality(JSONArray jsonArray){
        //睡眠质量,第六题，很好0分 较好1分  较差2分 很差3分
        int scoreQuality = 0 ;
        JSONObject jsonObject1 = jsonArray.getJSONObject(14);
        String checkItems = jsonObject1.getString("checkItems");
        if(checkItems.equals("有一点点好")){
            scoreQuality +=1;
        }else if(checkItems.equals("有一点点不好")){
            scoreQuality +=2;
        }else if(checkItems.equals("很不好")){
            scoreQuality +=3;
        }
        return scoreQuality;
    }
    /**
     * 获取第十八题分数
     * @param jsonArray
     * @return
     */
    private static int checkEnergy(JSONArray jsonArray){
        //睡眠质量,第六题，很好0分 较好1分  较差2分 很差3分
        int scoreQuality = 0 ;
        JSONObject jsonObject1 = jsonArray.getJSONObject(17);
        String checkItems = jsonObject1.getString("checkItems");
        if(checkItems.equals("偶尔有一次")){
            scoreQuality +=1;
        }else if(checkItems.equals("有时有")){
            scoreQuality +=2;
        }else if(checkItems.equals("总是这样")){
            scoreQuality +=3;
        }
        return scoreQuality;
    }
    private static int checkTime(JSONArray jsonArray){
        //入睡时间 ，
        // 1、第二题 计分为≤ 15 分计 0 分，16～30 分计 1 分，31~60计 2 分，≥60 分计 3 分
        // 2、 5a⽆计 0 分，<1 周/ 次计 1 分，1~2 周/ 次计 2 分，≥3周/ 次计 3 分3.
        // 累加条⽬ 2 和 5a 的计分，若累加分为 0 计 0 分，1~2计 1 分，3~4分 2 ，5~6 计 3 分
        int scoreTime = 0;
        int scoreTime5a=0;
        int scoreTime2=0;
        JSONObject jsonObject1 = jsonArray.getJSONObject(1);
        String minute = jsonObject1.getString("checkItems");
        if(minute.equals("16~30min")){
            scoreTime2 =1;
        }else if(minute.equals("31~60min")){
            scoreTime2 =2;
        }else if(minute.equals(">=60min")){
            scoreTime2 =3;
        }
        jsonObject1=jsonArray.getJSONObject(4);
        String checkItems = jsonObject1.getString("checkItems").trim();
        if(checkItems.equals("很少出现")){
            scoreTime5a = 1;
        }else if(checkItems.equals("有那么一两次")){
            scoreTime5a = 2;
        }else if(checkItems.equals("太多次了，根本记不清")){
            scoreTime5a=3;
        }
        int scoreTemp = scoreTime2+scoreTime5a;
        if(scoreTemp==0){
            scoreTime = 0;
        }else if(scoreTemp>=1 && scoreTemp<= 2 ){
            scoreTime = 1;
        }else if(scoreTemp>=3 && scoreTemp<= 4 ){
            scoreTime = 2;
        }else if(scoreTemp>=5 && scoreTemp<= 6 ){
            scoreTime = 3;
        }
        return scoreTime;
    }

    private int checkHour(JSONArray jsonArray) {

        //睡眠时间 根据条⽬ 4 的应答计分， >7 ⼩时计 0 分，6~7 计 1 分，5~6计 2 分，<5 ⼩时计 3 分。
        int scoreHour = 0;
        //JSONObject jsonObject1 = jsonArray.getJSONObject(3);
        String hourSleepString = jsonArray.getJSONObject(3).getString("checkItems");
        int hour =Integer.parseInt(hourSleepString.substring(0,hourSleepString.indexOf(":")));
        if(hour>6&&hour<=7){
            scoreHour = 1;
        }else if (hour>=5&&hour<=6){
            scoreHour = 2 ;
        }else if (hour<5){
            scoreHour = 3 ;
        }
        return scoreHour;
    }

    private static int checkEfficiency(JSONArray jsonArray){
//        床上时间 = 条⽬ 3（起床时间） - 条⽬ 1（上床时间）
        String goBad = "2021-01-27 "+jsonArray.getJSONObject(2).getString("checkItems")+"";
        LocalDateTime engDate = LocalDateTime.parse(goBad, DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm"));
        String leaveBad = "2021-01-26 "+jsonArray.getJSONObject(0).getString("checkItems");
        LocalDateTime beginDate = LocalDateTime.parse(leaveBad,DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm"));
        Duration duration = Duration.between(beginDate,engDate);
        //相差的分钟数
        long hourOnBed = duration.toMinutes();
        String hourSleepString = jsonArray.getJSONObject(3).getString("checkItems");
        int hourSleep = Integer.parseInt(hourSleepString.substring(0,hourSleepString.indexOf(":")))*60 + Integer.parseInt(hourSleepString.substring(hourSleepString.indexOf(":")+1));
        double efficiencyTemp  = (double)hourSleep/hourOnBed;
        if(efficiencyTemp>0.85){
            return 0;
        }else if(efficiencyTemp>=0.75&&efficiencyTemp<=0.84){
            return 1;
        }else if(efficiencyTemp>=0.65&&efficiencyTemp<0.74){
            return 2;
        }else{
            return 3;
        }

    }
    private static  int checkObstruct(JSONArray jsonArray){
        //睡眠障碍
        int scoreTemp = 0;
        int score = 0;
        for(int i=5;i<14;i++){
            JSONObject jsonObject = jsonArray.getJSONObject(i);
            String checkItems = jsonObject.getString("checkItems").trim();
            if(checkItems.equals("很少出现")){
                scoreTemp += 1;
            }else if(checkItems.equals("有那么一两次")){
                scoreTemp += 2;
            }else if(checkItems.equals("太多次了，根本记不清")){
                scoreTemp += 3;
            }
            if(scoreTemp==0){
                score = 0;
            }else if(scoreTemp>=1 && scoreTemp<10){
                score = 1;
            }else if(scoreTemp>=10 && scoreTemp<=18){
                score = 2;
            }else if(scoreTemp >=19 && scoreTemp<=27){
                score = 3;
            }
        }
        return score;
    }

    private int checkMedicine(JSONArray jsonArray){
        //催眠药物
        int scoreMedicine = 0 ;
        JSONObject jsonObject = jsonArray.getJSONObject(15);
        String checkItems = jsonObject.getString("checkItems").trim();
        if(checkItems.equals("很少出现")){
            scoreMedicine = 1;
        }else if(checkItems.equals("有那么一两次")){
            scoreMedicine = 2;
        }else if(checkItems.equals("太多次了，根本记不清")){
            scoreMedicine = 3;
        }
        return scoreMedicine;
    }

    private static int checkDay(JSONArray jsonArray){
        //日间功能障碍
        int scoreDay=0;
        JSONObject jsonObject = jsonArray.getJSONObject(16);
        String checkItems = jsonObject.getString("checkItems").trim();
        if(checkItems.equals("很少出现")){
            scoreDay += 1;
        }else if(checkItems.equals("有那么一两次")){
            scoreDay += 2;
        }else if(checkItems.equals("太多次了，根本记不清")){
            scoreDay += 3;
        }

        jsonObject = jsonArray.getJSONObject(17);
        checkItems = jsonObject.getString("checkItems").trim();
        if(checkItems.equals("压根没有")){
            scoreDay += 0;
        }else if(checkItems.equals("偶尔有一次")){
            scoreDay += 1;
        }else if(checkItems.equals("有时有")){
            scoreDay += 2;
        }else if(checkItems.equals("总是这样")){
            scoreDay += 3;
        }
        if(scoreDay == 0){
            scoreDay = 0;
        }else if(scoreDay == 1 || scoreDay == 2){
            scoreDay = 1;
        }else if(scoreDay == 3 || scoreDay == 4){
            scoreDay = 2;
        }else if(scoreDay == 5 || scoreDay == 6){
            scoreDay = 3;
        }
        return scoreDay;
    }

}
