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

import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.rf.psychological.utils.Constant;

import java.util.ArrayList;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;

/**
 * @description 同学关系测验问卷
 */
public class STURScale extends BaseScale {
    public STURScale(JSONArray jsonArray, JSONObject resultJson) {
        super(jsonArray, resultJson);
    }

    public JSONObject scaleCalculate() throws Exception {
        //A组得分
        int scoreA = 0;
        //B组得分
        int scoreB = 0;
        //C组得分
        int scoreC = 0;
        //D组得分
        int scoreD = 0;
        //总分
        int score = 0;

        for (int i = 0; i < jsonArray.size(); i++) {
            JSONObject jsonObject1 = jsonArray.getJSONObject(i);
            if ((i + 1) % 4 == 1) {
                if (jsonObject1.getString("checkItems").equals("是")) {
                    scoreA += 1;
                } else if (jsonObject1.getString("checkItems").equals("否")) {
                    scoreA += 0;
                }
            } else if ((i + 1) % 4 == 2) {
                if (jsonObject1.getString("checkItems").equals("是")) {
                    scoreB += 1;
                } else if (jsonObject1.getString("checkItems").equals("否")) {
                    scoreB += 0;
                }
            } else if ((i + 1) % 4 == 3) {
                if (jsonObject1.getString("checkItems").equals("是")) {
                    scoreC += 1;
                } else if (jsonObject1.getString("checkItems").equals("否")) {
                    scoreC += 0;
                }
            } else if ((i + 1) % 4 == 0) {
                if (jsonObject1.getString("checkItems").equals("是")) {
                    scoreD += 1;
                } else if (jsonObject1.getString("checkItems").equals("否")) {
                    scoreD += 0;
                }
            }
        }
        score = scoreA + scoreB + scoreC + scoreD;
        //得分列表
        Map<String, String> resultMap = new LinkedHashMap<>();
        resultMap.put("A组得分", String.valueOf(scoreA));
        resultMap.put("B组得分", String.valueOf(scoreB));
        resultMap.put("C组得分", String.valueOf(scoreC));
        resultMap.put("D组得分", String.valueOf(scoreC));
        resultMap.put("总分", String.valueOf(score));

        resultJson.put("A组得分", String.valueOf(scoreA));
        resultJson.put("B组得分", String.valueOf(scoreB));
        resultJson.put("C组得分", String.valueOf(scoreC));
        resultJson.put("D组得分", String.valueOf(scoreC));
        resultJson.put("总分", String.valueOf(score));

        if (score <= 8 && score >= 0) {
            resultMap.put("合计分结论", "说明你与朋友相处的困扰较少。");
            resultJson.put("合计分结论", "说明你与朋友相处的困扰较少。");
        } else if (score <= 14 && score >= 9) {
            resultMap.put("合计分结论", "说明你与朋友相处存在一定程度的困扰。");
            resultJson.put("合计分结论", "说明你与朋友相处存在一定程度的困扰。");
        } else if (score <= 19 && score >= 15) {
            resultMap.put("合计分结论", "说明你与朋友的行为困扰较严重。");
            resultJson.put("合计分结论", "说明你与朋友的行为困扰较严重。");
        } else if (score <= 28 && score >= 20) {
            resultMap.put("合计分结论", "说明你与朋友相处存在严重的行为困扰。");
            resultJson.put("合计分结论", "说明你与朋友相处存在严重的行为困扰。");
        }

        if (scoreA <= 2 && scoreA >= 0) {
            resultMap.put("A结论", "有较高的交谈能力和技巧。");
            resultJson.put("A结论", "有较高的交谈能力和技巧。");
        } else if (scoreA <= 5 && scoreA >= 3) {
            resultMap.put("A结论", "交谈能力一般。");
            resultJson.put("A结论", "交谈能力一般。");
        } else if (scoreA >= 6) {
            resultMap.put("A结论", "不善于交谈。");
            resultJson.put("A结论", "不善于交谈。");
        }

        if (scoreB <= 2 && scoreB >= 0) {
            resultMap.put("B结论", "行为困扰少，为人真诚、热情。");
            resultJson.put("B结论", "行为困扰少，为人真诚、热情。");
        } else if (scoreB <= 5 && scoreB >= 3) {
            resultMap.put("B结论", "交际与交友较波动。");
            resultJson.put("B结论", "交际与交友较波动。");
        } else if (scoreB >= 6) {
            resultMap.put("B结论", "行为困扰较大。");
            resultJson.put("B结论", "行为困扰较大。");
        }

        if (scoreC <= 2 && scoreC >= 0) {
            resultMap.put("C结论", "待人接物能力强。");
            resultJson.put("C结论", "待人接物能力强。");
        } else if (scoreC <= 5 && scoreC >= 3) {
            resultMap.put("C结论", "可能是个多侧面的人。");
            resultJson.put("C结论", "可能是个多侧面的人。");
        } else if (scoreC >= 6) {
            resultMap.put("C结论", "缺乏待人接物的机智与技巧。");
            resultJson.put("C结论", "缺乏待人接物的机智与技巧。");
        }

        if (scoreD <= 2 && scoreD >= 0) {
            resultMap.put("D结论", "较懂得正确处理与异性同学朋友的关系。");
            resultJson.put("D结论", "较懂得正确处理与异性同学朋友的关系。");
        } else if (scoreD <= 4 && scoreD >= 3) {
            resultMap.put("D结论", "行为困扰程度一般。");
            resultJson.put("D结论", "行为困扰程度一般。");
        } else if (scoreD >= 5) {
            resultMap.put("D结论", "存在较严重的困扰。");
            resultJson.put("D结论", "存在较严重的困扰。");
        }


        List<Map<String, String>> resultMapList = new ArrayList<>();
        resultMapList.add(resultMap);

        JSONObject returnJson = new JSONObject(true);
        returnJson.put("resultMapList", resultMapList);
        returnJson.put("scaleName", Constant.SHEET_NAME_STUR);
        returnJson.put("resultJson", resultJson);

        return returnJson;
    }
}
