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.text.DecimalFormat;
import java.util.ArrayList;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;

/**
 * @author zsy
 * @description:儿童感觉统合能力发展评定量表(使用新模板进行计算)
 * @date 2021/7/20 15:55
 */
public class SITScale extends BaseScale{

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

    public  JSONObject scaleCalculate() throws Exception {

        // 自定义路径使用
        /*ScaleUtil.getScaleDll("SITScale.dll");
        System.out.println("JSONArray:"+jsonArray);
        System.out.println("resultJson:"+resultJson);
        XScale xScale = new XScale(jsonArray,resultJson);
        String result = xScale.SITScale(jsonArray.toString(), resultJson.toString());
        //System.out.println("dllresult:"+result);
        //解决排序问题
        LinkedHashMap<String, Object> jsonMap = JSON.parseObject(result,LinkedHashMap.class, Feature.OrderedField);
        JSONObject jsonObject = new JSONObject(true);
        jsonObject.putAll(jsonMap);
        System.out.println("jsonObject:"+jsonObject);
        return jsonObject;*/

        //前庭失衡得分
        double score1 = 0;
        //触觉过分防御得分
        double score2 = 0;
        //本体感失调得分
        double score3 = 0;
        //学习能力发展不足得分
        double score4 = 0;
        //大年龄的特殊问题得分
        double score5 = 0;

        for (int i = 0; i < jsonArray.size(); i++) {
            JSONObject jsonObject1 = jsonArray.getJSONObject(i);
            if (i < 14) {
                if (jsonObject1.getString("checkItems").equals("从不这样")) {
                    score1 += 1;
                } else if (jsonObject1.getString("checkItems").equals("很少这样")) {
                    score1 += 2;
                } else if (jsonObject1.getString("checkItems").equals("有时候")) {
                    score1 += 3;
                } else if (jsonObject1.getString("checkItems").equals("常常如此")) {
                    score1 += 4;
                } else if (jsonObject1.getString("checkItems").equals("总是如此")) {
                    score1 += 5;
                }
            } else if (i < 35 && i >= 14) {
                if (jsonObject1.getString("checkItems").equals("从不这样")) {
                    score2 += 1;
                } else if (jsonObject1.getString("checkItems").equals("很少这样")) {
                    score2 += 2;
                } else if (jsonObject1.getString("checkItems").equals("有时候")) {
                    score2 += 3;
                } else if (jsonObject1.getString("checkItems").equals("常常如此")) {
                    score2 += 4;
                } else if (jsonObject1.getString("checkItems").equals("总是如此")) {
                    score2 += 5;
                }
            } else if (i < 47 && i >= 35) {
                if (jsonObject1.getString("checkItems").equals("从不这样")) {
                    score3 += 1;
                } else if (jsonObject1.getString("checkItems").equals("很少这样")) {
                    score3 += 2;
                } else if (jsonObject1.getString("checkItems").equals("有时候")) {
                    score3 += 3;
                } else if (jsonObject1.getString("checkItems").equals("常常如此")) {
                    score3 += 4;
                } else if (jsonObject1.getString("checkItems").equals("总是如此")) {
                    score3 += 5;
                }
            } else if (i < 55 && i >= 47) {
                if (jsonObject1.getString("checkItems").equals("从不这样")) {
                    score4 += 1;
                } else if (jsonObject1.getString("checkItems").equals("很少这样")) {
                    score4 += 2;
                } else if (jsonObject1.getString("checkItems").equals("有时候")) {
                    score4 += 3;
                } else if (jsonObject1.getString("checkItems").equals("常常如此")) {
                    score4 += 4;
                } else if (jsonObject1.getString("checkItems").equals("总是如此")) {
                    score4 += 5;
                }
            } else if (i >= 55) {
                if (jsonObject1.getString("checkItems").equals("从不这样")) {
                    score5 += 1;
                } else if (jsonObject1.getString("checkItems").equals("很少这样")) {
                    score5 += 2;
                } else if (jsonObject1.getString("checkItems").equals("有时候")) {
                    score5 += 3;
                } else if (jsonObject1.getString("checkItems").equals("常常如此")) {
                    score5 += 4;
                } else if (jsonObject1.getString("checkItems").equals("总是如此")) {
                    score5 += 5;
                }
            }
        }
        DecimalFormat df   = new DecimalFormat("######0.00");
        score1 = Double.parseDouble(df.format(20+15*(score1-50)/10));
        score2 = Double.parseDouble(df.format(20+15*(score2-50)/10));
        score3 = Double.parseDouble(df.format(20+15*(score3-50)/10));
        score4 = Double.parseDouble(df.format(20+15*(score4-50)/10));
        score5 = Double.parseDouble(df.format(20+15*(score5-50)/10));

        Map<String, String> resultMap1 = new LinkedHashMap<>();
        resultMap1.put("前庭失衡得分", String.valueOf(score1));
        resultJson.put("前庭失衡得分", String.valueOf(score1));
        if (score1 < 20){
            resultMap1.put("前庭失衡解释", "重度失调");
            resultJson.put("前庭失衡解释", "重度失调");
        }else if (score1 >= 20 && score1 < 30){
            resultMap1.put("前庭失衡解释", "中度失调");
            resultJson.put("前庭失衡解释", "中度失调");
        }else if (score1 >= 30 && score1 < 40){
            resultMap1.put("前庭失衡解释", "轻度失调");
            resultJson.put("前庭失衡解释", "轻度失调");
        }else {
            resultMap1.put("前庭失衡解释", "正常");
            resultJson.put("前庭失衡解释", "正常");
        }
        //得分列表
        Map<String, String> resultMap2 = new LinkedHashMap<>();
        resultMap2.put("触觉过分防御得分", String.valueOf(score2));
        resultJson.put("触觉过分防御得分", String.valueOf(score2));
        if (score2 < 20){
            resultMap2.put("触觉过分防御解释", "重度失调");
            resultJson.put("触觉过分防御解释", "重度失调");
        }else if (score2 >= 20 && score2 < 30){
            resultMap2.put("触觉过分防御解释", "中度失调");
            resultJson.put("触觉过分防御解释", "中度失调");
        }else if (score2 >= 30 && score2 < 40){
            resultMap2.put("触觉过分防御解释", "轻度失调");
            resultJson.put("触觉过分防御解释", "轻度失调");
        }else {
            resultMap2.put("触觉过分防御解释", "正常");
            resultJson.put("触觉过分防御解释", "正常");
        }
        //得分列表
        Map<String, String> resultMap3 = new LinkedHashMap<>();
        resultMap3.put("本体感失调得分", String.valueOf(score3));
        resultJson.put("本体感失调得分", String.valueOf(score3));
        if (score3 < 20){
            resultMap3.put("本体感失调解释", "重度失调");
            resultJson.put("本体感失调解释", "重度失调");
        }else if (score3 >= 20 && score3 < 30){
            resultMap3.put("本体感失调解释", "中度失调");
            resultJson.put("本体感失调解释", "中度失调");
        }else if (score3 >= 30 && score3 < 40){
            resultMap3.put("本体感失调解释", "轻度失调");
            resultJson.put("本体感失调解释", "轻度失调");
        }else {
            resultMap3.put("本体感失调解释", "正常");
            resultJson.put("本体感失调解释", "正常");
        }
        Map<String, String> resultMap4 = new LinkedHashMap<>();
        resultMap4.put("学习能力发展不足得分", String.valueOf(score4));
        resultJson.put("学习能力发展不足得分", String.valueOf(score4));
        if (score4 < 20){
            resultMap4.put("学习能力发展不足解释", "重度失调");
            resultJson.put("学习能力发展不足解释", "重度失调");
        }else if (score4 >= 20 && score4 < 30){
            resultMap4.put("学习能力发展不足解释", "中度失调");
            resultJson.put("学习能力发展不足解释", "中度失调");
        }else if (score4 >= 30 && score4 < 40){
            resultMap4.put("学习能力发展不足解释", "轻度失调");
            resultJson.put("学习能力发展不足解释", "轻度失调");
        }else {
            resultMap4.put("学习能力发展不足解释", "正常");
            resultJson.put("学习能力发展不足解释", "正常");
        }
        Map<String, String> resultMap5 = new LinkedHashMap<>();
        resultMap5.put("大年龄的特殊问题得分", String.valueOf(score5));
        resultJson.put("大年龄的特殊问题得分", String.valueOf(score5));
        if (score5 < 20){
            resultMap5.put("大年龄的特殊问题解释", "重度失调");
            resultJson.put("大年龄的特殊问题解释", "重度失调");
        }else if (score5 >= 20 && score5 < 30){
            resultMap5.put("大年龄的特殊问题解释", "中度失调");
            resultJson.put("大年龄的特殊问题解释", "中度失调");
        }else if (score5 >= 30 && score5 < 40){
            resultMap5.put("大年龄的特殊问题解释", "轻度失调");
            resultJson.put("大年龄的特殊问题解释", "轻度失调");
        }else {
            resultMap5.put("大年龄的特殊问题解释", "正常");
            resultJson.put("大年龄的特殊问题解释", "正常");
        }

        List<Map<String,String>> resultMapList = new ArrayList<>();
        resultMapList.add(resultMap1);
        resultMapList.add(resultMap2);
        resultMapList.add(resultMap3);
        resultMapList.add(resultMap4);
        resultMapList.add(resultMap5);

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

        return returnJson;
    }
}
