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;

/**
 * @author zsy
 * @description:学习障碍儿童筛查量表
 * @date 2021/7/20 15:55
 */
public class PRSScale extends BaseScale{

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

    public  JSONObject scaleCalculate() throws Exception {

        // 自定义路径使用
        /*ScaleUtil.getScaleDll("PRSSCALE.dll");
        System.out.println("JSONArray:"+jsonArray);
        System.out.println("resultJson:"+resultJson);
        XScale xScale = new XScale(jsonArray,resultJson);
        String result = xScale.PRSScale(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;*/

        //言语型得分
        int score1 = 0;
        //非言语型得分
        int score2 = 0;
        if (jsonArray.getJSONObject(0).getString("checkItems").equals("与同年级儿童比较词汇理解能力非常低劣和不成熟")) {
            score1 += 1;
        } else if (jsonArray.getJSONObject(0).getString("checkItems").equals("掌握简单词汇较困难，与同龄儿童相比，较易弄错词汇意思")) {
            score1 += 2;
        } else if (jsonArray.getJSONObject(0).getString("checkItems").equals("词汇理解能力与其年龄相符")) {
            score1 += 3;
        } else if (jsonArray.getJSONObject(0).getString("checkItems").equals("能理解同年级以上儿童使用的词汇")) {
            score1 += 4;
        } else if (jsonArray.getJSONObject(0).getString("checkItems").equals("词汇理解能力非常出色，能理解较多的抽象词汇")) {
            score1 += 5;
        }
        if (jsonArray.getJSONObject(1).getString("checkItems").equals("不能听从指示或听到指示不知所措")) {
            score1 += 1;
        } else if (jsonArray.getJSONObject(1).getString("checkItems").equals("平时虽能听从指示，但需别人帮助才能执行")) {
            score1 += 2;
        } else if (jsonArray.getJSONObject(1).getString("checkItems").equals("能服从熟悉的和不太复杂的指示")) {
            score1 += 3;
        } else if (jsonArray.getJSONObject(1).getString("checkItems").equals("能理解和服从同时发出的若干指示")) {
            score1 += 4;
        } else if (jsonArray.getJSONObject(1).getString("checkItems").equals("理解和服从指示的能力非常出色")) {
            score1 += 5;
        }
        if (jsonArray.getJSONObject(2).getString("checkItems").equals("对谈话的悟性极差，不理解同学间的交谈（注意力极分散）")) {
            score1 += 1;
        } else if (jsonArray.getJSONObject(2).getString("checkItems").equals("虽然在听，但不能很好地理解，注意力不太集中")) {
            score1 += 2;
        } else if (jsonArray.getJSONObject(2).getString("checkItems").equals("交谈能力与其年龄相符（能参加交谈，作出相应回答）")) {
            score1 += 3;
        } else if (jsonArray.getJSONObject(2).getString("checkItems").equals("能较好地进行交谈，并从谈话中获得知识")) {
            score1 += 4;
        } else if (jsonArray.getJSONObject(2).getString("checkItems").equals("积极参与同学间的交谈，并显示出色的理解能力")) {
            score1 += 5;
        }
        if (jsonArray.getJSONObject(3).getString("checkItems").equals("几乎在任何场合下想不起任何事情（记忆缺乏）")) {
            score1 += 1;
        } else if (jsonArray.getJSONObject(3).getString("checkItems").equals("重复多次的情况下才能记住简单的事情或顺序")) {
            score1 += 2;
        } else if (jsonArray.getJSONObject(3).getString("checkItems").equals("记忆力与其年龄相符（属平均水平，对事物的记忆不存在问题）")) {
            score1 += 3;
        } else if (jsonArray.getJSONObject(3).getString("checkItems").equals("能记住多种信息，过后仍能回忆和再现")) {
            score1 += 4;
        } else if (jsonArray.getJSONObject(3).getString("checkItems").equals("能记忆事物的细节，并能准确地再现")) {
            score1 += 5;
        }
        if (jsonArray.getJSONObject(4).getString("checkItems").equals("与同年级儿童相比，词汇缺乏，常使用幼稚的语言")) {
            score1 += 1;
        } else if (jsonArray.getJSONObject(4).getString("checkItems").equals("使用的词汇局限于单纯的名词，较少用形容词或描述性语言")) {
            score1 += 2;
        } else if (jsonArray.getJSONObject(4).getString("checkItems").equals("掌握的词汇及其运用与其年龄相符（无特殊问题）")) {
            score1 += 3;
        } else if (jsonArray.getJSONObject(4).getString("checkItems").equals("掌握的词汇多于同年级儿童，较常运用正确的语言或描述性语言")) {
            score1 += 4;
        } else if (jsonArray.getJSONObject(4).getString("checkItems").equals("掌握较高水平的词汇，运用语言准确，能表达抽象事物")) {
            score1 += 5;
        }
        if (jsonArray.getJSONObject(5).getString("checkItems").equals("用词语法总是错误或常常使用不完整词句")) {
            score1 += 1;
        } else if (jsonArray.getJSONObject(5).getString("checkItems").equals("谈话中语法错误和不完整句子较多见")) {
            score1 += 2;
        } else if (jsonArray.getJSONObject(5).getString("checkItems").equals("能运用正确的语法交谈（使用形容词、代名词等较少有错）")) {
            score1 += 3;
        } else if (jsonArray.getJSONObject(5).getString("checkItems").equals("能运用同年级以上儿童所使用的词句，很少有语法错误")) {
            score1 += 4;
        } else if (jsonArray.getJSONObject(5).getString("checkItems").equals("能经常运用正确的语法讲话或用词")) {
            score1 += 5;
        }
        if (jsonArray.getJSONObject(6).getString("checkItems").equals("不能说出与场面相适的用词，词汇回忆（提取）极差")) {
            score1 += 1;
        } else if (jsonArray.getJSONObject(6).getString("checkItems").equals("表达想法时常有停顿或语塞表现")) {
            score1 += 2;
        } else if (jsonArray.getJSONObject(6).getString("checkItems").equals("口语能力与其年龄相符，同于同年级水平")) {
            score1 += 3;
        } else if (jsonArray.getJSONObject(6).getString("checkItems").equals("口语中使用的词汇水平高于同年级儿童，较少有停顿或语塞现象")) {
            score1 += 4;
        } else if (jsonArray.getJSONObject(6).getString("checkItems").equals("口语非常流利，几乎无停顿、语塞或转换话题的现象")) {
            score1 += 5;
        }
        if (jsonArray.getJSONObject(7).getString("checkItems").equals("别人难以听懂他（她）讲的话")) {
            score1 += 1;
        } else if (jsonArray.getJSONObject(7).getString("checkItems").equals("较难有条理地表述自己的经验")) {
            score1 += 2;
        } else if (jsonArray.getJSONObject(7).getString("checkItems").equals("表述个人经验的水平与其年龄相符（平均水平）")) {
            score1 += 3;
        } else if (jsonArray.getJSONObject(7).getString("checkItems").equals("表述能力高于同年级水平，能有条理地表述个人经验")) {
            score1 += 4;
        } else if (jsonArray.getJSONObject(7).getString("checkItems").equals("表述能力非常出色，能思路清晰地描述个人经验")) {
            score1 += 5;
        }
        if (jsonArray.getJSONObject(8).getString("checkItems").equals("不能将事物间的关系联系起来讲述，思维不连贯")) {
            score1 += 1;
        } else if (jsonArray.getJSONObject(8).getString("checkItems").equals("较难讲述事物之间的关系，讲述不连贯，思维亦缺乏连贯")) {
            score1 += 2;
        } else if (jsonArray.getJSONObject(8).getString("checkItems").equals("表达思想与其年龄相符，较连贯（平均水平）")) {
            score1 += 3;
        } else if (jsonArray.getJSONObject(8).getString("checkItems").equals("高于平均水平，能将事物与个人想法联系起来表达")) {
            score1 += 4;
        } else if (jsonArray.getJSONObject(8).getString("checkItems").equals("表达思想作常清晰，常能恰当地联系事实表达个人思想")) {
            score1 += 5;
        }
        if (jsonArray.getJSONObject(9).getString("checkItems").equals("不懂时间概念，总是迟到或对时间要求茫然不知所措")) {
            score2 += 1;
        } else if (jsonArray.getJSONObject(9).getString("checkItems").equals("虽有一定时间概念，但常有迟到或磨蹭、拖延时间现象")) {
            score2 += 2;
        } else if (jsonArray.getJSONObject(9).getString("checkItems").equals("时间判断能力与其年龄相符")) {
            score2 += 3;
        } else if (jsonArray.getJSONObject(9).getString("checkItems").equals("对时间判断较同龄儿童敏捷，迟到时有正当理由")) {
            score2 += 4;
        } else if (jsonArray.getJSONObject(9).getString("checkItems").equals("能熟练掌握时间表，并有计划地作出时间安排")) {
            score2 += 5;
        }
        if (jsonArray.getJSONObject(10).getString("checkItems").equals("方向感极差，常在校园、操场或邻近场所迷失方向")) {
            score2 += 1;
        } else if (jsonArray.getJSONObject(10).getString("checkItems").equals("在个人熟悉的场所也时有迷路现象")) {
            score2 += 2;
        } else if (jsonArray.getJSONObject(10).getString("checkItems").equals("方向感与其年龄相符，在熟悉的场所不迷路")) {
            score2 += 3;
        } else if (jsonArray.getJSONObject(10).getString("checkItems").equals("方向感敏于同龄儿童，几乎不迷路或转向")) {
            score2 += 4;
        } else if (jsonArray.getJSONObject(10).getString("checkItems").equals("能很快熟悉新的场所，从不迷路")) {
            score2 += 5;
        }
        if (jsonArray.getJSONObject(11).getString("checkItems").equals("总是作出不正确的判断")) {
            score2 += 1;
        } else if (jsonArray.getJSONObject(11).getString("checkItems").equals("能作出初级判断（对差异明显的对象尚能作出判断）")) {
            score2 += 2;
        } else if (jsonArray.getJSONObject(11).getString("checkItems").equals("能进行与其年龄相符的判断")) {
            score2 += 3;
        } else if (jsonArray.getJSONObject(11).getString("checkItems").equals("能作出正确的判断，但不会用于新的情况")) {
            score2 += 4;
        } else if (jsonArray.getJSONObject(11).getString("checkItems").equals("常能作出正确的判断，并会用于新的情况和场所")) {
            score2 += 5;
        }
        if (jsonArray.getJSONObject(12).getString("checkItems").equals("不懂左右和东西南北，总是转向")) {
            score2 += 1;
        } else if (jsonArray.getJSONObject(12).getString("checkItems").equals("理解左右和东西南北向较差，时有转向")) {
            score2 += 2;
        } else if (jsonArray.getJSONObject(12).getString("checkItems").equals("方向判断与其年龄相符，能理解左右和东西南北向")) {
            score2 += 3;
        } else if (jsonArray.getJSONObject(12).getString("checkItems").equals("方向感良好，很少转向")) {
            score2 += 4;
        } else if (jsonArray.getJSONObject(12).getString("checkItems").equals("方向感出色，能迅速准确判断方向")) {
            score2 += 5;
        }
        if (jsonArray.getJSONObject(13).getString("checkItems").equals("动作非常笨拙，不协调，难以掌握体育课教的运动技巧")) {
            score2 += 1;
        } else if (jsonArray.getJSONObject(13).getString("checkItems").equals("动作水平不如同年级儿童，不灵活，掌握运动技巧较差")) {
            score2 += 2;
        } else if (jsonArray.getJSONObject(13).getString("checkItems").equals("动作水平与其年龄相符（较灵活）")) {
            score2 += 3;
        } else if (jsonArray.getJSONObject(13).getString("checkItems").equals("动作水平高于同年级儿童，动作技能较好")) {
            score2 += 4;
        } else if (jsonArray.getJSONObject(13).getString("checkItems").equals("动作技能非常出色")) {
            score2 += 5;
        }
        if (jsonArray.getJSONObject(14).getString("checkItems").equals("平衡动作非常笨拙，经常跌倒或磕磕绊绊")) {
            score2 += 1;
        } else if (jsonArray.getJSONObject(14).getString("checkItems").equals("平衡动作较同年级儿童差，容易跌倒")) {
            score2 += 2;
        } else if (jsonArray.getJSONObject(14).getString("checkItems").equals("平衡能力与其年龄相符，平衡较灵活")) {
            score2 += 3;
        } else if (jsonArray.getJSONObject(14).getString("checkItems").equals("平衡能力高于同年级儿童，平衡技能较好")) {
            score2 += 4;
        } else if (jsonArray.getJSONObject(14).getString("checkItems").equals("平衡能力非常出色")) {
            score2 += 5;
        }
        if (jsonArray.getJSONObject(15).getString("checkItems").equals("手指动作非常笨拙，不协调")) {
            score2 += 1;
        } else if (jsonArray.getJSONObject(15).getString("checkItems").equals("手指动作较同年级儿童差，不太灵活")) {
            score2 += 2;
        } else if (jsonArray.getJSONObject(15).getString("checkItems").equals("手指灵活性与其年龄相符，操作水平较灵活")) {
            score2 += 3;
        } else if (jsonArray.getJSONObject(15).getString("checkItems").equals("手指灵活性良好，优于同年级儿童")) {
            score2 += 4;
        }
        if (jsonArray.getJSONObject(16).getString("checkItems").equals("常在班级内捣乱，没有耐性，不能控制个人行为或反应")) {
            score2 += 1;
        } else if (jsonArray.getJSONObject(16).getString("checkItems").equals("喜欢出风头和引起别人的注意，缺乏耐性")) {
            score2 += 2;
        } else if (jsonArray.getJSONObject(16).getString("checkItems").equals("协调性与其年龄相符，能控制自己的行为，有耐性")) {
            score2 += 3;
        } else if (jsonArray.getJSONObject(16).getString("checkItems").equals("协调能力优于同年级儿童，自控能力较强")) {
            score2 += 4;
        } else if (jsonArray.getJSONObject(16).getString("checkItems").equals("协调能力非常出色，不用吩咐也能自控和协调周围关系")) {
            score2 += 5;
        }
        if (jsonArray.getJSONObject(17).getString("checkItems").equals("注意力完全不能集中（注意力极散漫）")) {
            score2 += 1;
        } else if (jsonArray.getJSONObject(17).getString("checkItems").equals("注意听讲困难，思想常溜号或走神")) {
            score2 += 2;
        } else if (jsonArray.getJSONObject(17).getString("checkItems").equals("注意力与其年龄相符，有一定的集中注意能力")) {
            score2 += 3;
        } else if (jsonArray.getJSONObject(17).getString("checkItems").equals("注意力较同年级儿童好，能较长时间注意听讲")) {
            score2 += 4;
        }
        if (jsonArray.getJSONObject(18).getString("checkItems").equals("做事无顺序，粗心大意，完全没有计划")) {
            score2 += 1;
        } else if (jsonArray.getJSONObject(18).getString("checkItems").equals("做事的顺序性较差，容易出错，不注意")) {
            score2 += 2;
        } else if (jsonArray.getJSONObject(18).getString("checkItems").equals("调整顺序能力与年龄相符，做事较注意")) {
            score2 += 3;
        } else if (jsonArray.getJSONObject(18).getString("checkItems").equals("较同年级儿童好，能安排做事的顺序")) {
            score2 += 4;
        } else if (jsonArray.getJSONObject(18).getString("checkItems").equals("做事的顺序性极好，按顺序有始有终做到底")) {
            score2 += 5;
        }
        if (jsonArray.getJSONObject(19).getString("checkItems").equals("极容易高度兴奋，不能控制自己或难以适应情况变化")) {
            score2 += 1;
        } else if (jsonArray.getJSONObject(19).getString("checkItems").equals("对新情况往往作出过度反应，造成混乱")) {
            score2 += 2;
        } else if (jsonArray.getJSONObject(19).getString("checkItems").equals("适应性与其年龄相符，没有特殊问题")) {
            score2 += 3;
        } else if (jsonArray.getJSONObject(19).getString("checkItems").equals("较自信，能较快顺利地适应新情况")) {
            score2 += 4;
        } else if (jsonArray.getJSONObject(19).getString("checkItems").equals("有独立性，适应性非常好，主动适应环境")) {
            score2 += 5;
        }
        if (jsonArray.getJSONObject(20).getString("checkItems").equals("别人不愿与他（她）交往，躲避他（她）")) {
            score2 += 1;
        } else if (jsonArray.getJSONObject(20).getString("checkItems").equals("别人偶尔与他（她）交往")) {
            score2 += 2;
        } else if (jsonArray.getJSONObject(20).getString("checkItems").equals("交往能力与其年龄相符")) {
            score2 += 3;
        } else if (jsonArray.getJSONObject(20).getString("checkItems").equals("别人较喜欢与他（她）交往")) {
            score2 += 4;
        } else if (jsonArray.getJSONObject(20).getString("checkItems").equals("深受同学或伙伴的欢迎")) {
            score2 += 5;
        }
        if (jsonArray.getJSONObject(21).getString("checkItems").equals("完全没有责任感，从不履行自己的责任（包括基本生活习惯）")) {
            score2 += 1;
        } else if (jsonArray.getJSONObject(21).getString("checkItems").equals("躲避责任（承担责任的能力有限）")) {
            score2 += 2;
        } else if (jsonArray.getJSONObject(21).getString("checkItems").equals("责任感程度与其年龄相符")) {
            score2 += 3;
        } else if (jsonArray.getJSONObject(21).getString("checkItems").equals("责任感较同年级儿童高，能接受或完成交给的任务")) {
            score2 += 4;
        } else if (jsonArray.getJSONObject(21).getString("checkItems").equals("能积极主动承担任务和责任")) {
            score2 += 5;
        }
        if (jsonArray.getJSONObject(22).getString("checkItems").equals("即使别人帮助也不能完成")) {
            score2 += 1;
        } else if (jsonArray.getJSONObject(22).getString("checkItems").equals("在帮助督促下吃力完成")) {
            score2 += 2;
        } else if (jsonArray.getJSONObject(22).getString("checkItems").equals("与其年龄相符，能较好地完成任务")) {
            score2 += 3;
        } else if (jsonArray.getJSONObject(22).getString("checkItems").equals("较同年级儿童好，无帮助和督促也能自己完成")) {
            score2 += 4;
        } else if (jsonArray.getJSONObject(22).getString("checkItems").equals("无帮助和督促能积极主动去完成")) {
            score2 += 5;
        }
        if (jsonArray.getJSONObject(23).getString("checkItems").equals("行为一向粗野、霸道，无视别人的情绪或反应")) {
            score2 += 1;
        } else if (jsonArray.getJSONObject(23).getString("checkItems").equals("做事无视同学们的情绪，偏于我行我素")) {
            score2 += 2;
        } else if (jsonArray.getJSONObject(23).getString("checkItems").equals("关心他人的程度与其年龄相符，偶有不适当的行为")) {
            score2 += 3;
        } else if (jsonArray.getJSONObject(23).getString("checkItems").equals("比同年级儿童较多关心他人，很少做与社会准则不符的事情")) {
            score2 += 4;
        } else if (jsonArray.getJSONObject(23).getString("checkItems").equals("经常关心他人，从不做与社会准则不符的事情")) {
            score2 += 5;
        }
        //得分列表
        Map<String, String> resultMap = new LinkedHashMap<>();
        resultMap.put("总分", String.valueOf(score1+score2));
        resultJson.put("总分", String.valueOf(score1+score2));
        resultMap.put("言语型得分", String.valueOf(score1));
        resultJson.put("言语型得分", String.valueOf(score1));
        resultMap.put("非言语型得分", String.valueOf(score2));
        resultJson.put("非言语型得分", String.valueOf(score2));
        if ((score1+score2) < 65){
            resultMap.put("结论", "LD可疑儿童");
            resultJson.put("结论", "LD可疑儿童");
        }
        if (score1 < 20){
            resultMap.put("言语型结论", "言语型LD");
            resultJson.put("言语型结论", "言语型LD");
        }
        if ((score1+score2) < 40){
            resultMap.put("非言语型结论", "非言语型LD");
            resultJson.put("非言语型结论", "非言语型LD");
        }

        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_PRS);
        returnJson.put("resultJson",resultJson);

        return returnJson;
    }
}
