zzf 1 yıl önce
ebeveyn
işleme
bfaee31494
63 değiştirilmiş dosya ile 10049 ekleme ve 0 silme
  1. BIN
      .local-browser/win64-722234/chrome-win/D3DCompiler_47.dll
  2. BIN
      .local-browser/win64-722234/chrome-win/chrome.dll
  3. BIN
      .local-browser/win64-722234/chrome-win/chrome.exe
  4. BIN
      .local-browser/win64-722234/chrome-win/chrome_100_percent.pak
  5. BIN
      .local-browser/win64-722234/chrome-win/chrome_200_percent.pak
  6. BIN
      .local-browser/win64-722234/chrome-win/chrome_elf.dll
  7. BIN
      .local-browser/win64-722234/chrome-win/chrome_proxy.exe
  8. BIN
      .local-browser/win64-722234/chrome-win/chrome_watcher.dll
  9. BIN
      .local-browser/win64-722234/chrome-win/locales/bg.pak
  10. BIN
      .local-browser/win64-722234/chrome-win/locales/bn.pak
  11. BIN
      .local-browser/win64-722234/chrome-win/locales/ca.pak
  12. BIN
      .local-browser/win64-722234/chrome-win/locales/cs.pak
  13. BIN
      .local-browser/win64-722234/chrome-win/locales/da.pak
  14. 150 0
      build.gradle
  15. 46 0
      src/main/java/com/rf/psychological/config/CorsConfig.java
  16. 25 0
      src/main/java/com/rf/psychological/dao/cognizeModel/BSNTaskEntity.java
  17. 35 0
      src/main/java/com/rf/psychological/dao/model/CategorySubjectEntity.java
  18. 56 0
      src/main/java/com/rf/psychological/dao/model/CattellEntity.java
  19. 70 0
      src/main/java/com/rf/psychological/dao/model/CognitiveTaskEntity.java
  20. 153 0
      src/main/java/com/rf/psychological/dao/repository/CategoryRepository.java
  21. 26 0
      src/main/java/com/rf/psychological/dao/repository/CategorySubjectRepository.java
  22. 12 0
      src/main/java/com/rf/psychological/dao/repository/CattellRepository.java
  23. 30 0
      src/main/java/com/rf/psychological/hospital/bed/dao/model/BedEntity.java
  24. 7 0
      src/main/java/com/rf/psychological/hospital/bed/dao/repository/BedRepository.java
  25. 60 0
      src/main/java/com/rf/psychological/hospital/bed/rest/BedController.java
  26. 12 0
      src/main/java/com/rf/psychological/hospital/bed/service/BedService.java
  27. 62 0
      src/main/java/com/rf/psychological/hospital/bed/service/impl/BedServiceImpl.java
  28. 42 0
      src/main/java/com/rf/psychological/scale/dao/model/CategoryEntity.java
  29. 516 0
      src/main/java/com/rf/psychological/scale/dao/repository/CognitiveTaskRepository.java
  30. 116 0
      src/main/java/com/rf/psychological/scale/rest/CategoryController.java
  31. 3810 0
      src/main/java/com/rf/psychological/scale/rest/CognizeResultController.java
  32. 64 0
      src/main/java/com/rf/psychological/scale/resultBusiness/scaleResult/BEScale.java
  33. 332 0
      src/main/java/com/rf/psychological/scale/resultBusiness/scaleResult/BPRSScale.java
  34. 108 0
      src/main/java/com/rf/psychological/scale/resultBusiness/scaleResult/BRIEFScale.java
  35. 66 0
      src/main/java/com/rf/psychological/scale/resultBusiness/scaleResult/BRMSScale.java
  36. 98 0
      src/main/java/com/rf/psychological/scale/resultBusiness/scaleResult/BRTScale.java
  37. 101 0
      src/main/java/com/rf/psychological/scale/resultBusiness/scaleResult/BYNDSScale.java
  38. 226 0
      src/main/java/com/rf/psychological/scale/resultBusiness/scaleResult/C16PFTScale.java
  39. 51 0
      src/main/java/com/rf/psychological/scale/resultBusiness/scaleResult/CABSScale.java
  40. 66 0
      src/main/java/com/rf/psychological/scale/resultBusiness/scaleResult/CARSScale.java
  41. 79 0
      src/main/java/com/rf/psychological/scale/resultBusiness/scaleResult/CCFScale.java
  42. 70 0
      src/main/java/com/rf/psychological/scale/resultBusiness/scaleResult/CCSAS2Scale.java
  43. 134 0
      src/main/java/com/rf/psychological/scale/resultBusiness/scaleResult/CCSASScale.java
  44. 72 0
      src/main/java/com/rf/psychological/scale/resultBusiness/scaleResult/CESDScale.java
  45. 66 0
      src/main/java/com/rf/psychological/scale/resultBusiness/scaleResult/CFDScale.java
  46. 87 0
      src/main/java/com/rf/psychological/scale/resultBusiness/scaleResult/CMIMScale.java
  47. 87 0
      src/main/java/com/rf/psychological/scale/resultBusiness/scaleResult/CMIWScale.java
  48. 168 0
      src/main/java/com/rf/psychological/scale/resultBusiness/scaleResult/COMMONScale.java
  49. 56 0
      src/main/java/com/rf/psychological/scale/resultBusiness/scaleResult/CRSScale.java
  50. 72 0
      src/main/java/com/rf/psychological/scale/resultBusiness/scaleResult/CSESScale.java
  51. 396 0
      src/main/java/com/rf/psychological/scale/resultBusiness/scaleResult/CSHQScale.java
  52. 176 0
      src/main/java/com/rf/psychological/scale/resultBusiness/scaleResult/CSScale.java
  53. 101 0
      src/main/java/com/rf/psychological/scale/resultBusiness/scaleResult/DACLScale.java
  54. 88 0
      src/main/java/com/rf/psychological/scale/service/CategoryService.java
  55. 26 0
      src/main/java/com/rf/psychological/scale/service/CategorySubjectService.java
  56. 129 0
      src/main/java/com/rf/psychological/scale/service/CognitiveTaskService.java
  57. 130 0
      src/main/java/com/rf/psychological/scale/service/impl/CategoryServiceImpl.java
  58. 43 0
      src/main/java/com/rf/psychological/scale/service/impl/CategorySubjectServiceImpl.java
  59. 119 0
      src/main/java/com/rf/psychological/scale/service/impl/CognitiveTaskServiceImpl.java
  60. 20 0
      src/main/java/com/rf/psychological/service/CattellService.java
  61. 30 0
      src/main/java/com/rf/psychological/service/impl/CattellServiceImpl.java
  62. 48 0
      src/main/java/com/rf/psychological/utils/CPUSerial.java
  63. 1512 0
      src/main/java/com/rf/psychological/utils/Constant.java

BIN
.local-browser/win64-722234/chrome-win/D3DCompiler_47.dll


BIN
.local-browser/win64-722234/chrome-win/chrome.dll


BIN
.local-browser/win64-722234/chrome-win/chrome.exe


BIN
.local-browser/win64-722234/chrome-win/chrome_100_percent.pak


BIN
.local-browser/win64-722234/chrome-win/chrome_200_percent.pak


BIN
.local-browser/win64-722234/chrome-win/chrome_elf.dll


BIN
.local-browser/win64-722234/chrome-win/chrome_proxy.exe


BIN
.local-browser/win64-722234/chrome-win/chrome_watcher.dll


BIN
.local-browser/win64-722234/chrome-win/locales/bg.pak


BIN
.local-browser/win64-722234/chrome-win/locales/bn.pak


BIN
.local-browser/win64-722234/chrome-win/locales/ca.pak


BIN
.local-browser/win64-722234/chrome-win/locales/cs.pak


BIN
.local-browser/win64-722234/chrome-win/locales/da.pak


+ 150 - 0
build.gradle

@@ -0,0 +1,150 @@
+buildscript {
+	ext {
+		queryDslVersion = '4.2.1'
+		lombokVersion = '1.18.12'
+	}
+}
+plugins {
+	id 'org.springframework.boot' version '2.4.2'
+	id 'io.spring.dependency-management' version '1.0.11.RELEASE'
+	id 'java'
+}
+
+group = 'com.rf'
+version = 'v1.1-'+getNewVersion()
+sourceCompatibility = '8'
+
+configurations {
+	compileOnly {
+		extendsFrom annotationProcessor
+	}
+}
+
+repositories {
+	maven {
+		url 'https://maven.aliyun.com/repository/public'
+	}
+	maven {
+		credentials {
+			username '0p07qf'
+			password 'z1XwdFEf4M'
+		}
+		url 'https://repo.rdc.aliyun.com/repository/107260-release-GqdtcU/'
+	}
+	maven {
+		credentials {
+			username '0p07qf'
+			password 'z1XwdFEf4M'
+		}
+		url 'https://repo.rdc.aliyun.com/repository/107260-snapshot-C6ziam/'
+	}
+	maven {
+		url "https://plugins.gradle.org/m2/"
+	}
+	mavenLocal()
+}
+
+dependencies {
+	implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
+	implementation 'org.springframework.boot:spring-boot-starter-web'
+	compileOnly 'org.projectlombok:lombok'
+	annotationProcessor 'org.projectlombok:lombok'
+//	testImplementation 'org.springframework.boot:spring-boot-starter-test'
+////	classpath "gradle.plugin.com.ewerk.gradle.plugins:querydsl-plugin:1.0.10"
+//	// https://mvnrepository.com/artifact/com.querydsl/querydsl-apt
+//	compile group: 'com.querydsl', name: 'querydsl-apt', version: '4.2.1'
+	// https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-validation
+	implementation 'org.springframework.boot:spring-boot-starter-validation:2.6.3'
+
+//	// https://mvnrepository.com/artifact/org.springframework.data/spring-data-commons
+//	compile group: 'org.springframework.data', name: 'spring-data-commons', version: '2.4.1'
+	// https://mvnrepository.com/artifact/mysql/mysql-connector-java
+	implementation 'mysql:mysql-connector-java:8.0.21'
+
+//	compile group: 'com.querydsl', name: 'querydsl-jpa', version: '4.2.1'
+//	compile group: 'com.querydsl', name: 'querydsl-apt', version: '4.2.1'
+	// QueryDSL
+	implementation("com.querydsl:querydsl-core:${queryDslVersion}")
+	implementation("com.querydsl:querydsl-jpa:${queryDslVersion}")
+	//关键地方(记得开启annotationProcessor)
+	annotationProcessor("com.querydsl:querydsl-apt:${queryDslVersion}:jpa",
+			"org.hibernate.javax.persistence:hibernate-jpa-2.1-api:1.0.2.Final",
+			"javax.annotation:javax.annotation-api:1.3.2",
+			"org.projectlombok:lombok")
+
+	// Lombok(记得安装IDEA插件)
+	compileOnly "org.projectlombok:lombok:${lombokVersion}"
+	annotationProcessor "org.projectlombok:lombok:${lombokVersion}"
+	implementation("org.projectlombok:lombok:${lombokVersion}")
+	// https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-test
+	testImplementation 'org.springframework.boot:spring-boot-starter-test:2.6.3'
+
+	// https://mvnrepository.com/artifact/com.alibaba/fastjson
+	implementation 'com.alibaba:fastjson:1.2.83'
+	// https://mvnrepository.com/artifact/org.apache.poi/poi-ooxml
+	implementation 'org.apache.poi:poi-ooxml:3.17'
+
+	// https://mvnrepository.com/artifact/commons-lang/commons-lang
+	implementation 'commons-lang:commons-lang:2.6'
+
+	// https://mvnrepository.com/artifact/io.springfox/springfox-swagger2
+	implementation group: 'io.springfox', name: 'springfox-swagger2', version: '2.9.2'
+	// https://mvnrepository.com/artifact/io.springfox/springfox-swagger-ui
+	implementation group: 'io.springfox', name: 'springfox-swagger-ui', version: '2.9.2'
+	// https://mvnrepository.com/artifact/io.swagger/swagger-annotations
+	implementation group: 'io.swagger', name: 'swagger-annotations', version: '1.5.22'
+	implementation group: 'io.swagger', name: 'swagger-models', version: '1.5.22'
+
+	// https://mvnrepository.com/artifact/commons-fileupload/commons-fileupload
+	implementation group: 'commons-fileupload', name: 'commons-fileupload', version: '1.3.1'
+	// https://mvnrepository.com/artifact/com.github.qcloudsms/qcloudsms
+	implementation group: 'com.github.qcloudsms', name: 'qcloudsms', version: '1.0.6'
+	// https://mvnrepository.com/artifact/cn.keking.project/kk-anti-reptile
+	implementation group: 'cn.keking.project', name: 'kk-anti-reptile', version: '1.0.0-RELEASE'
+	// https://mvnrepository.com/artifact/com.belerweb/pinyin4j
+	implementation group: 'com.belerweb', name: 'pinyin4j', version: '2.5.1'
+	// https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-websocket
+	implementation 'org.springframework.boot:spring-boot-starter-websocket:2.5.5'
+	//https://mvnrepository.com/artifact/org.java-websocket/Java-WebSocket
+	//implementation 'org.java-websocket:Java-WebSocket:1.3.0'
+	// https://mvnrepository.com/artifact/org.java-websocket/Java-WebSocket
+	implementation 'org.java-websocket:Java-WebSocket:1.5.1'
+	//https://github.com/auth0/java-jwt
+	// 添加jwt
+	implementation 'com.auth0:java-jwt:3.18.2'
+	// https://mvnrepository.com/artifact/com.alibaba/druid-spring-boot-starter
+	implementation group: 'com.alibaba', name: 'druid-spring-boot-starter', version: '1.2.9'
+	// https://mvnrepository.com/artifact/junit/junit
+	testImplementation group: 'junit', name: 'junit', version: '4.13.2'
+
+
+	//wxpay
+	// https://mvnrepository.com/artifact/com.github.wxpay/wxpay-sdk
+	//implementation group: 'com.github.wxpay', name: 'wxpay-sdk', version: '0.0.3'
+
+	implementation 'com.github.wechatpay-apiv3:wechatpay-apache-httpclient:0.4.7'
+
+	// https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-configuration-processor
+	implementation group: 'org.springframework.boot', name: 'spring-boot-configuration-processor', version: '2.6.8'
+
+	// https://mvnrepository.com/artifact/com.google.code.gson/gson
+	implementation group: 'com.google.code.gson', name: 'gson', version: '2.8.6'
+
+	// https://mvnrepository.com/artifact/cn.hutool/hutool-all
+	implementation group: 'cn.hutool', name: 'hutool-all', version: '5.7.18'
+
+	//redis
+	// https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-data-redis
+	implementation group: 'org.springframework.boot', name: 'spring-boot-starter-data-redis', version: '2.6.3'
+
+
+
+}
+
+test {
+	useJUnitPlatform()
+}
+
+def getNewVersion(){
+	return new Date().format("yyyyMMddHHmmss",TimeZone.getTimeZone("GMT+08:00"))
+}

+ 46 - 0
src/main/java/com/rf/psychological/config/CorsConfig.java

@@ -0,0 +1,46 @@
+package com.rf.psychological.config;
+
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.web.cors.CorsConfiguration;
+import org.springframework.web.cors.UrlBasedCorsConfigurationSource;
+import org.springframework.web.filter.CorsFilter;
+
+@Configuration
+public class CorsConfig {
+
+    private CorsConfiguration buildConfig() {
+
+        CorsConfiguration corsConfiguration = new CorsConfiguration();
+        corsConfiguration.setAllowCredentials(true);
+        /*corsConfiguration.addAllowedOrigin("http://localhost:8080"); // 允许任何域名使用
+        corsConfiguration.addAllowedOrigin("http://10.113.233.26:8080");
+        corsConfiguration.addAllowedOrigin("http://192.168.42.21:8080");
+        corsConfiguration.addAllowedOrigin("http://cognitive.wistcm.com/");*/
+//        corsConfiguration.addAllowedOrigin("*");
+        corsConfiguration.addAllowedOriginPattern("*");
+        corsConfiguration.addAllowedHeader("*"); // 允许任何头
+        corsConfiguration.addAllowedMethod("*"); // 允许任何方法(post、get等)
+        return corsConfiguration;
+
+        /*CorsConfiguration corsConfiguration = new CorsConfiguration();
+        corsConfiguration.setAllowCredentials(true);
+        // 设置setAllowCredentials = true后就不能设置为*了,要设置具体的
+        corsConfiguration.addAllowedOrigin("http://10.113.233.26:8080");
+        corsConfiguration.addAllowedOrigin("http://localhost:8080");
+        // 允许任何头
+        corsConfiguration.addAllowedHeader("*");
+        // 允许任何方法(post、get等)
+        corsConfiguration.addAllowedMethod("*");
+        return corsConfiguration;*/
+    }
+
+    @Bean
+    public CorsFilter corsFilter() {
+        UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
+        // 对接口配置跨域设置
+        source.registerCorsConfiguration("/**", buildConfig());
+        return new CorsFilter(source);
+    }
+
+}

+ 25 - 0
src/main/java/com/rf/psychological/dao/cognizeModel/BSNTaskEntity.java

@@ -0,0 +1,25 @@
+package com.rf.psychological.dao.cognizeModel;
+
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+/**
+ * @author lpf
+ * @description:
+ * @date 2022/3/31 9:46
+ */
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+public class BSNTaskEntity {
+
+    private String index;
+
+    //选项图片名称
+    private String picName;
+
+    //图片选项:1---正确 2--提示 3---辨认 4---错误
+    private String picChoice;
+
+}

+ 35 - 0
src/main/java/com/rf/psychological/dao/model/CategorySubjectEntity.java

@@ -0,0 +1,35 @@
+package com.rf.psychological.dao.model;
+
+import com.rf.psychological.base.model.BaseEntity;
+import lombok.*;
+
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.Index;
+import javax.persistence.Table;
+
+/**
+ * @author zsy
+ * @description:量表-类别关联表
+ * @date 2021/6/17 15:55
+ */
+@Entity
+@Data
+@Getter
+@Setter
+@NoArgsConstructor
+@AllArgsConstructor
+@Table(name = "t_category_subject" ,indexes ={
+        @Index(columnList = "flag"),
+        @Index(columnList = "ename")
+})
+@org.hibernate.annotations.Table(appliesTo = "t_category_subject", comment = "量表-类别关联表")
+public class CategorySubjectEntity extends BaseEntity {
+
+    @Column(name="flag" ,columnDefinition = "varchar(50) not null comment '量表查询标志'")
+    private String flag ;
+
+    @Column(name = "ename",columnDefinition = "varchar(10) not null comment '类别英文名称'")
+    private String ename;
+
+}

+ 56 - 0
src/main/java/com/rf/psychological/dao/model/CattellEntity.java

@@ -0,0 +1,56 @@
+package com.rf.psychological.dao.model;
+
+import com.rf.psychological.base.model.BaseEntity;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.Table;
+
+/**
+ * @author zzf
+ * @description:卡氏十六种人格因素量表 实体类
+ * @date 2021/2/2 15:01
+ */
+@Entity
+@Data
+@NoArgsConstructor
+@AllArgsConstructor
+@Table(name = "t_cattell_info")
+@org.hibernate.annotations.Table(appliesTo = "t_cattell_info", comment = "卡氏十六种人格因素量表")
+public class CattellEntity extends BaseEntity {
+
+    /**
+     * 编号
+     */
+    @Column(name = "no", columnDefinition = "int (10) comment '编号'")
+    private int no;
+
+    /**
+     * 内容
+     */
+    @Column(name = "content", columnDefinition = "text comment '内容'")
+    private String content;
+
+    /**
+     * 选项
+     */
+    @Column(name = "check_items", columnDefinition = "text comment '选项'")
+    private String checkItems;
+
+    /**
+     * 默认选项
+     */
+    @Column(name = "checked", columnDefinition = "text comment '默认选项'")
+    private String checked;
+
+    /**
+     * 人格因素
+     */
+    @Column(name = "type", columnDefinition = "varchar(2) comment '人格因素'")
+    private String type;
+
+
+}

+ 70 - 0
src/main/java/com/rf/psychological/dao/model/CognitiveTaskEntity.java

@@ -0,0 +1,70 @@
+package com.rf.psychological.dao.model;
+
+import com.rf.psychological.base.model.BaseEntity;
+import lombok.*;
+import org.hibernate.annotations.DynamicUpdate;
+
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.Table;
+
+/**
+ * @author zsy
+ * @description:认知任务列表
+ * @date 2021/5/17 9:25
+ */
+@Entity
+@Data
+@Getter
+@Setter
+@NoArgsConstructor
+@AllArgsConstructor
+@Table(name = "t_cognitive_task")
+@org.hibernate.annotations.Table(appliesTo = "t_cognitive_task", comment = "认知任务列表信息表")
+@DynamicUpdate
+public class CognitiveTaskEntity extends BaseEntity {
+    @Column(name = "task_code", columnDefinition = "varchar(50) comment '查询标志'")
+    private String taskCode;
+    @Column(name = "description", columnDefinition = "text comment '任务说明'")
+    private String description;
+    @Column(name = "name", columnDefinition = "varchar(100) comment '认知任务名称'")
+    private String name;
+    @Column(name = "image_url", columnDefinition = "varchar(255) comment '图片路径'")
+    private String imageUrl;
+    @Column(name = "image_name", columnDefinition = "varchar(100) comment '图片名称'")
+    private String imageName;
+    @Column(name = "test_description", columnDefinition = "text comment '测试任务描述'")
+    private String testDescription;
+    @Column(name = "test_num", columnDefinition = "int(10) comment '测试次数'")
+    private int testNum;
+    @Column(name = "type", columnDefinition = "varchar(10) comment '类型:0-量表;1-认知任务'")
+    private String type;
+    @Column(name = "page_url", columnDefinition = "varchar(200) comment '分页路径'")
+    private String pageUrl;
+    @Column(name = "test_explain", columnDefinition = "text comment '任务解释'")
+    private String testExplain;
+    @Column(name = "status", columnDefinition = "varchar(1) comment '状态:0-可用;9-不可用'")
+    private int status;
+    @Column(name = "scale_limit", columnDefinition = "varchar(10) comment '认知任务权限:private 私密  public 公开'")
+    private String scaleLimit;
+    @Column(name = "no", columnDefinition = "int(10) comment '编号,用于排序'")
+    private int no;
+
+    @Column(name = "mobile_description", columnDefinition = "text default '无' comment '移动端任务说明'")
+    private String mobileDescription;
+
+    @Column(name = "mobile_page_url", columnDefinition = "varchar(200) default '无' comment '移动端前台页面路径'")
+    private String mobilePageUrl;
+
+    @Column(name = "mobile_test_description", columnDefinition = "text default '无' comment '移动端测试任务描述'")
+    private String mobileTestDescription;
+
+    @Column(name = "mobile_status", columnDefinition = "varchar(1) default '0' comment '移动端任务状态:0-不可用;1-可用'")
+    private String mobileStatus;
+
+    @Column(name = "report_version", columnDefinition = "varchar(1) default '1' comment '报告版本:1-老模板报告;2-新模板报告'")
+    private String reportVersion;
+
+    @Column(name = "practice", columnDefinition = "varchar(10) default '2' comment '类型:1-有练习测试;2-无练习测试'")
+    private String practice;
+}

+ 153 - 0
src/main/java/com/rf/psychological/dao/repository/CategoryRepository.java

@@ -0,0 +1,153 @@
+package com.rf.psychological.dao.repository;
+
+import com.rf.psychological.base.repository.BaseRepository;
+import com.rf.psychological.scale.dao.model.CategoryEntity;
+import org.springframework.data.jpa.repository.Query;
+import org.springframework.data.repository.query.Param;
+
+import java.util.List;
+
+/**
+ * @author zsy
+ * @description:Category
+ * @date 2021/6/17 15:55
+ */
+public interface CategoryRepository extends BaseRepository<CategoryEntity, String> {
+
+    /**
+     * 查询  分页
+     *
+     * @param pageNum
+     * @param pageSize
+     * @return
+     */
+    @Query(value = "select id,ename,name,sequence,type from t_category_info order by sequence limit :pageNum ,:pageSize ", nativeQuery = true)
+    List<CategoryEntity> findAll(@Param("pageNum") int pageNum, @Param("pageSize") int pageSize);
+
+    /**
+     * 总条数
+     *
+     * @return
+     */
+    @Query(value = "select count(1) from t_category_info   ", nativeQuery = true)
+    int allNum();
+
+    /**
+     * 根据名称模糊查询  分页
+     *
+     * @param pageNum
+     * @param pageSize
+     * @param searchStr
+     * @return
+     */
+    @Query(value = "select id,ename,name,sequence,type from t_category_info where name like %:searchStr% or ename like %:searchStr% order by sequence limit :pageNum ,:pageSize ", nativeQuery = true)
+    List<CategoryEntity> getSubjectListByName(@Param("pageNum") int pageNum, @Param("pageSize") int pageSize, @Param("searchStr") String searchStr);
+
+    /**
+     * 根据名称模糊查询总条数
+     *
+     * @param searchStr
+     * @return
+     */
+    @Query(value = "select count(1) from t_category_info where name like %:searchStr% or ename like %:searchStr%   ", nativeQuery = true)
+    int allNumByName(@Param("searchStr") String searchStr);
+
+    /**
+     * 效验是否存在
+     *
+     * @param name
+     * @param ename
+     * @param sequence
+     * @return
+     */
+    @Query(value = "select id,ename,name,sequence,type from t_category_info where name = :name or ename = :ename or sequence = :sequence", nativeQuery = true)
+    List<CategoryEntity> getCategoryByName(@Param("name") String name, @Param("ename") String ename, @Param("sequence") String sequence);
+
+    /**
+     * 查询所有类别信息
+     *
+     * @return
+     */
+    @Query(value = "select id,ename,name,sequence,type from t_category_info where type = :type and ename in (SELECT a.ename FROM t_category_subject a GROUP BY a.ename) order by sequence", nativeQuery = true)
+    List<CategoryEntity> findAllOrder(@Param("type") String type);
+
+
+    /**
+     * 查询机构的认知任务类别信息
+     *
+     * @return
+     */
+    @Query(value = "select id, ename, name, sequence, type\n" +
+            "from t_category_info\n" +
+            "where  ename in (select distinct(tcs.ename)\n" +
+            "                from   t_cognitive_task tct\n" +
+            "                         join\n" +
+            "                     t_institution_auth tia\n" +
+            "                         join\n" +
+            "                     t_category_subject tcs\n" +
+            "                     on tcs.flag = tct.task_code\n" +
+            "                         and b_id = tct.id\n" +
+            "                where tia.institution_no = ?1  and status='0'\n" +
+            "        ) or ename='CALL' order by sequence", nativeQuery = true)
+    List<CategoryEntity> findAllCTInstitution(String institutionNo);
+
+    /**
+     * 查询组的认知任务类别信息
+     *
+     * @return
+     */
+    @Query(value = "select id, ename, name, sequence, type\n" +
+            "from t_category_info\n" +
+            "where  ename in (select distinct(tcs.ename)\n" +
+            "                 from   t_cognitive_task tct\n" +
+            "                            join\n" +
+            "                        t_group_auth tga\n" +
+            "                            join\n" +
+            "                        t_category_subject tcs\n" +
+            "                        on tcs.flag = tct.task_code\n" +
+            "                            and b_id = tct.id\n" +
+            "                 where tga.group_id = ?1 and status='0'\n" +
+            ") or ename='CALL'\n" +
+            "order by sequence\n", nativeQuery = true)
+    List<CategoryEntity> findAllCTByGroup(String groupId);
+
+    /**
+     * 查询机构的量表类别信息
+     *
+     * @return
+     */
+    @Query(value = "select id, ename, name, sequence, type\n" +
+            "from t_category_info\n" +
+            "where ename in (select distinct(tcs.ename)\n" +
+            "                from t_subject_info tsi\n" +
+            "                         join\n" +
+            "                     t_institution_auth tia\n" +
+            "                         join\n" +
+            "                     t_category_subject tcs\n" +
+            "                     on tcs.flag = tsi.flag\n" +
+            "                         and b_id = tsi.id\n" +
+            "                where tia.institution_no = ?1 and status='0'\n" +
+            ")\n" +
+            "   or ename = 'ALL'  order by sequence ", nativeQuery = true)
+    List<CategoryEntity> findAllSubjectInstitution(String institutionNO);
+
+    /**
+     * 查询组的量表类别信息
+     *
+     * @return
+     */
+    @Query(value = "select id, ename, name, sequence, type\n" +
+            "from t_category_info\n" +
+            "where ename in (select distinct(tcs.ename)\n" +
+            "                from t_subject_info tsi\n" +
+            "                         join\n" +
+            "                     t_group_auth tga \n" +
+            "                         join\n" +
+            "                     t_category_subject tcs\n" +
+            "                     on tcs.flag = tsi.flag\n" +
+            "                         and b_id = tsi.id\n" +
+            "                where tga.group_id= ?1 and status='0'\n" +
+            ")\n" +
+            "   or ename = 'ALL' order by sequence ", nativeQuery = true)
+    List<CategoryEntity> findAllSubjectGroup(String groupId);
+}

+ 26 - 0
src/main/java/com/rf/psychological/dao/repository/CategorySubjectRepository.java

@@ -0,0 +1,26 @@
+package com.rf.psychological.dao.repository;
+
+import com.rf.psychological.base.repository.BaseRepository;
+import com.rf.psychological.dao.model.CategorySubjectEntity;
+import org.springframework.data.jpa.repository.Modifying;
+import org.springframework.data.jpa.repository.Query;
+import org.springframework.data.repository.query.Param;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.List;
+
+/**
+ * @author zsy
+ * @description:Category
+ * @date 2021/6/17 15:55
+ */
+public interface CategorySubjectRepository extends BaseRepository<CategorySubjectEntity,String> {
+    @Query(value = "select id,ename,flag from t_category_subject where flag=:flag  ", nativeQuery = true)
+    List<CategorySubjectEntity> findByFlag(@Param("flag") String flag);
+
+    @Transactional
+    @Modifying
+    @Query(value = "delete from t_category_subject where flag=:flag  ", nativeQuery = true)
+    void deleteCategorySubjectByFlag(@Param("flag") String flag);
+
+}

+ 12 - 0
src/main/java/com/rf/psychological/dao/repository/CattellRepository.java

@@ -0,0 +1,12 @@
+package com.rf.psychological.dao.repository;
+
+import com.rf.psychological.base.repository.BaseRepository;
+import com.rf.psychological.dao.model.CattellEntity;
+
+/**
+ * @author zzf
+ * @description:卡氏十六种人格因素量表
+ * @date 2021/2/2 15:18
+ */
+public interface CattellRepository extends BaseRepository<CattellEntity,String> {
+}

+ 30 - 0
src/main/java/com/rf/psychological/hospital/bed/dao/model/BedEntity.java

@@ -0,0 +1,30 @@
+package com.rf.psychological.hospital.bed.dao.model;
+
+import com.rf.psychological.base.model.BaseEntity;
+import lombok.*;
+
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.Table;
+
+/**
+ * @Author:zzf
+ * @Date:2023/5/8:17:48
+ * @Description:
+ */
+@Entity
+@Getter
+@Setter
+@ToString
+@RequiredArgsConstructor
+@AllArgsConstructor
+@Table(name = "t_bed_info")
+@org.hibernate.annotations.Table(appliesTo = "t_bed_info", comment = "脉搏设备信息")
+public class BedEntity extends BaseEntity {
+    @Column(name = "bed_no",columnDefinition = "int not null comment '病床编号'")
+    private Integer bedNo;
+
+    @Column(name = "status",columnDefinition = "varchar(2) not null default '0' comment '0:未入住;1:已入住'")
+    private String status;
+
+}

+ 7 - 0
src/main/java/com/rf/psychological/hospital/bed/dao/repository/BedRepository.java

@@ -0,0 +1,7 @@
+package com.rf.psychological.hospital.bed.dao.repository;
+
+import com.rf.psychological.base.repository.BaseRepository;
+import com.rf.psychological.hospital.bed.dao.model.BedEntity;
+
+public interface BedRepository extends BaseRepository<BedEntity,String> {
+}

+ 60 - 0
src/main/java/com/rf/psychological/hospital/bed/rest/BedController.java

@@ -0,0 +1,60 @@
+package com.rf.psychological.hospital.bed.rest;
+
+import com.alibaba.fastjson.JSONObject;
+import com.rf.psychological.base.rest.BaseController;
+import com.rf.psychological.hospital.bed.dao.model.BedEntity;
+import com.rf.psychological.hospital.bed.service.BedService;
+import com.rf.psychological.hospital.patient.dao.model.PatientEntity;
+import com.rf.psychological.hospital.patient.service.PatientService;
+import com.rf.psychological.opLog.annotation.OperationLogAnnotation;
+import com.rf.psychological.security.AesEncryptUtils;
+import com.rf.psychological.security.SafetyProcess;
+import com.rf.psychological.utils.Result;
+import io.swagger.annotations.ApiOperation;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.data.domain.Page;
+import org.springframework.web.bind.annotation.*;
+
+/**
+ * @Author:zzf
+ * @Date:2023/5/8:17:49
+ * @Description:床位
+ */
+@RestController
+@Slf4j
+@RequestMapping("/bed")
+public class BedController extends BaseController {
+
+
+    @Autowired
+    private BedService service;
+
+    @SafetyProcess
+    @OperationLogAnnotation
+    @ApiOperation(value = "保存病例信息",notes = "bedNo:病床编号;status:状态,0未入住;1已入住")
+    @PostMapping("/save")
+    public Result save(@RequestBody String json) throws Exception {
+        String data = AesEncryptUtils.decrypt(JSONObject.parseObject(json).getString("data"));
+        BedEntity bedEntity = JSONObject.parseObject(data,BedEntity.class);
+        this.service.save(bedEntity);
+        return success();
+    }
+
+    @SafetyProcess
+    @DeleteMapping("/delete/{id}")
+    @ApiOperation("删除")
+    @OperationLogAnnotation
+    public Result delete(@PathVariable String id){
+        this.service.deletedById(id);
+        return success();
+    }
+
+    @SafetyProcess
+    @PostMapping("/find")
+    @ApiOperation(value = "查询",notes = "id:主键,bedNo:编号,status:状态;pageNum:可为空,默认1 ;pageSize:可为空,默认10")
+    public Result find(@RequestBody String json ) throws Exception {
+        Page<BedEntity> bedEntityPage = this.service.find(json);
+        return success(bedEntityPage);
+    }
+}

+ 12 - 0
src/main/java/com/rf/psychological/hospital/bed/service/BedService.java

@@ -0,0 +1,12 @@
+package com.rf.psychological.hospital.bed.service;
+
+import com.rf.psychological.hospital.bed.dao.model.BedEntity;
+import org.springframework.data.domain.Page;
+
+public interface BedService {
+    void save(BedEntity bedEntity);
+
+    void deletedById(String id);
+
+    Page<BedEntity> find(String json) throws Exception;
+}

+ 62 - 0
src/main/java/com/rf/psychological/hospital/bed/service/impl/BedServiceImpl.java

@@ -0,0 +1,62 @@
+package com.rf.psychological.hospital.bed.service.impl;
+
+import com.alibaba.fastjson.JSONObject;
+import com.rf.psychological.hospital.bed.dao.model.BedEntity;
+import com.rf.psychological.hospital.bed.dao.repository.BedRepository;
+import com.rf.psychological.hospital.bed.service.BedService;
+import com.rf.psychological.hospital.patient.dao.model.PatientEntity;
+import com.rf.psychological.hospital.patient.dao.repository.PatientRepository;
+import com.rf.psychological.security.AesEncryptUtils;
+import org.apache.commons.lang.StringUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.data.domain.Page;
+import org.springframework.data.domain.PageRequest;
+import org.springframework.data.jpa.domain.Specification;
+import org.springframework.stereotype.Service;
+
+import javax.persistence.criteria.Predicate;
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * @Author:zzf
+ * @Date:2023/5/8:17:52
+ * @Description:
+ */
+@Service
+public class BedServiceImpl implements BedService {
+    @Autowired
+    private BedRepository repository;
+    @Override
+    public void save(BedEntity bedEntity) {
+        this.repository.save(bedEntity);
+    }
+
+    @Override
+    public void deletedById(String id) {
+        this.repository.deleteById(id);
+    }
+
+    @Override
+    public Page<BedEntity> find(String json) throws Exception {
+        JSONObject jsonObject = JSONObject.parseObject(AesEncryptUtils.decrypt(JSONObject.parseObject(json).getString("data")));
+        Specification<PatientEntity> specification = (root, query, criteriaBuilder) -> {
+            List<Predicate> predicateList = new ArrayList<>();
+            if(jsonObject.containsKey("id") && StringUtils.isNotEmpty(jsonObject.getString("id"))){
+                predicateList.add(criteriaBuilder.equal(root.get("id"),jsonObject.getString("id")));
+            }
+            //id:主键,bedNo:编号
+            if(jsonObject.containsKey("bedNo") && jsonObject.getInteger("bedNo") != null){
+                predicateList.add(criteriaBuilder.equal(root.get("bedNo"),jsonObject.getString("bedNo")));
+            }
+            if(jsonObject.containsKey("status") && StringUtils.isNotEmpty(jsonObject.getString("status"))){
+                predicateList.add(criteriaBuilder.equal(root.get("status"),jsonObject.getString("status")));
+            }
+            query.where(criteriaBuilder.and(predicateList.toArray(new Predicate[0])));
+            return query.getRestriction();
+        };
+        int pageNum = (jsonObject.containsKey("pageNum") && jsonObject.getInteger("pageNum") >0)?jsonObject.getIntValue("pageNum"): 1;
+        int pageSize = (jsonObject.containsKey("pageSize") && jsonObject.getInteger("pageSize") >0)?jsonObject.getIntValue("pageSize"): 10;
+        return this.repository.findAll(specification, PageRequest.of(pageNum-1,pageSize));
+    }
+}

+ 42 - 0
src/main/java/com/rf/psychological/scale/dao/model/CategoryEntity.java

@@ -0,0 +1,42 @@
+package com.rf.psychological.scale.dao.model;
+
+import com.rf.psychological.base.model.BaseEntity;
+import lombok.*;
+
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.Index;
+import javax.persistence.Table;
+
+/**
+ * @author zsy
+ * @description:量表类别信息表
+ * @date 2021/6/17 15:55
+ */
+@Entity
+@EqualsAndHashCode(callSuper=false)
+@Data
+@Getter
+@Setter
+@NoArgsConstructor
+@AllArgsConstructor
+@Table(name = "t_category_info",indexes = {
+        @Index(columnList = "ename"),
+        @Index(columnList = "type")
+})
+@org.hibernate.annotations.Table(appliesTo = "t_category_info", comment = "量表类别信息表")
+public class CategoryEntity extends BaseEntity {
+
+    @Column(name = "name", columnDefinition = "varchar(10) not null comment '类别名称(唯一)'")
+    private String name;
+
+    @Column(name = "ename", columnDefinition = "varchar(10) not null comment '英文名称(唯一)'")
+    private String ename;
+
+    @Column(name = "sequence", columnDefinition = "int(5) not null comment '排序(唯一)'")
+    private String sequence;
+
+    @Column(name = "type", columnDefinition = "varchar(10) not null comment '类型:0-量表;1-认知任务'")
+    private String type;
+
+}

+ 516 - 0
src/main/java/com/rf/psychological/scale/dao/repository/CognitiveTaskRepository.java

@@ -0,0 +1,516 @@
+package com.rf.psychological.scale.dao.repository;
+
+import com.rf.psychological.base.repository.BaseRepository;
+import com.rf.psychological.group.dao.dto.GroupAuthConTaskDto;
+import com.rf.psychological.dao.model.CognitiveTaskEntity;
+import org.springframework.data.domain.Page;
+import org.springframework.data.domain.Pageable;
+import org.springframework.data.jpa.repository.Modifying;
+import org.springframework.data.jpa.repository.Query;
+import org.springframework.data.repository.query.Param;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.List;
+
+/**
+ * @author zsy
+ * @description:Category
+ * @date 2021/6/17 15:55
+ */
+public interface CognitiveTaskRepository extends BaseRepository<CognitiveTaskEntity, String> {
+
+    /**
+     * 查询  分页
+     *
+     * @param pageNum
+     * @param pageSize
+     * @return
+     */
+    @Query(value = "select * from t_cognitive_task where status='0' limit :pageNum ,:pageSize  ", nativeQuery = true)
+    List<CognitiveTaskEntity> findAll(@Param("pageNum") int pageNum, @Param("pageSize") int pageSize);
+
+
+    CognitiveTaskEntity findByTaskCode(String taskCode);
+
+    @Query(value = "select * from  t_cognitive_task where task_code in (?1)", nativeQuery = true)
+    List<CognitiveTaskEntity> findAllByTaskCode(List<String> taskCode);
+
+    /**
+     * 总条数
+     *
+     * @return
+     */
+    @Query(value = "select count(1) from t_cognitive_task  where status='0' ", nativeQuery = true)
+    int allNum();
+
+    /**
+     * 根据名称模糊查询  分页
+     *
+     * @param pageNum
+     * @param pageSize
+     * @param searchStr
+     * @return
+     */
+    @Query(value = "select * from t_cognitive_task where name like %:searchStr%  and status='0' limit :pageNum ,:pageSize ", nativeQuery = true)
+    List<CognitiveTaskEntity> getCognizeListByName(@Param("pageNum") int pageNum, @Param("pageSize") int pageSize, @Param("searchStr") String searchStr);
+
+    /**
+     * 根据名称模糊查询总条数
+     *
+     * @param searchStr
+     * @return
+     */
+    @Query(value = "select count(1) from t_cognitive_task where name like %:searchStr% and status='0'", nativeQuery = true)
+    int allNumByName(@Param("searchStr") String searchStr);
+
+    /**
+     * 某类别下所有信息列表
+     *
+     * @return
+     */
+    @Query(value = "select b.* from t_cognitive_task b where b.task_code in (SELECT a.flag FROM t_category_subject a WHERE a.ename = :categoryEname) and status='0' limit :pageNum ,:pageSize    ", nativeQuery = true)
+    List<CognitiveTaskEntity> findAllCategory(@Param("pageNum") int pageNum, @Param("pageSize") int pageSize, @Param("categoryEname") String categoryEname);
+
+    /**
+     * 某类别下查询总条数
+     *
+     * @return
+     */
+    @Query(value = "select count(1) from t_cognitive_task b where b.task_code in (SELECT a.flag FROM t_category_subject a WHERE a.ename = :categoryEname) and status='0'", nativeQuery = true)
+    int allNumCategory(@Param("categoryEname") String categoryEname);
+
+    /**
+     * 某类别下根据名称模糊查询列表
+     *
+     * @return
+     */
+    @Query(value = "select b.* from t_cognitive_task b where b.task_code in (SELECT a.flag FROM t_category_subject a WHERE a.ename = :categoryEname) and b.name like %:scaleName% and status='0' limit :pageNum ,:pageSize    ", nativeQuery = true)
+    List<CognitiveTaskEntity> getCognizeListByNameCategory(@Param("pageNum") int pageNum, @Param("pageSize") int pageSize, @Param("scaleName") String scaleName, @Param("categoryEname") String categoryEname);
+
+    /**
+     * 某类别下根据名称模糊查询总条数
+     *
+     * @param scaleName,categoryEname
+     * @return
+     */
+    @Query(value = "select count(1) from t_cognitive_task b where b.task_code in (SELECT a.flag FROM t_category_subject a WHERE a.ename = :categoryEname) and b.name like %:scaleName% and status='0'", nativeQuery = true)
+    int allNumByNameCategory(@Param("scaleName") String scaleName, @Param("categoryEname") String categoryEname);
+
+    /**
+     * 根据flag记录测试数
+     *
+     * @return
+     */
+    @Transactional
+    @Modifying(clearAutomatically = true)
+    @Query(value = "UPDATE t_cognitive_task SET test_num = test_num+1 WHERE task_code = :taskCode ", nativeQuery = true)
+    void addTestNum(@Param("taskCode") String taskCode);
+
+
+    /**
+     * # 查询组认知任务的权限
+     *
+     * @param groupId
+     * @param pageable
+     * @return
+     */
+    @Query(value = "select  tga.id, b_id bId, group_id groupId, group_name groupName, tgi.institution_no institutionNo , description, image_name imageName, image_url imageUrl, name, page_url pageUrl, scale_limit scaleLimit, status, task_code taskCode, test_description testDescription, " +
+            "test_explain testExplain, test_num testNum, tga.type, no " +
+            "from t_group_info tgi \n" +
+            "    join t_group_auth tga  \n" +
+            "    join t_cognitive_task tct on tgi.id = group_id and b_id = tct.id\n" +
+            "where group_id = ?1 and if(?2 is not null and ?2 !='',name like CONCAT('%',?2,'%') ,1=1) and status='0'",
+            countQuery = "select count(*)  " +
+                    "from t_group_info tgi\n" +
+                    "         join t_cognitive_task tct \n" +
+                    "         join t_group_auth tga on tgi.id = group_id and b_id = tct.id\n" +
+                    "where group_id = ?1 and if(?2 is not null and ?2 !='',name like CONCAT('%',?2,'%') ,1=1) and status='0'",
+            nativeQuery = true)
+    Page<GroupAuthConTaskDto> findGroupAuth(String groupId, String name, Pageable pageable);
+
+
+    /**
+     * 查询认知任务权限
+     *
+     * @param uId
+     * @param scaleName
+     * @param pageable
+     * @return
+     */
+    @Query(value = "select * \n" +
+            "from (\n" +
+            "         select tgi.group_name     groupName,\n" +
+            "                tgi.institution_no institutionNo,\n" +
+            "                tct.id,\n" +
+            "                tct.description,\n" +
+            "                tct.image_name,\n" +
+            "                tct.image_url,\n" +
+            "                tct.name,\n" +
+            "                tct.page_url,\n" +
+            "                tct.scale_limit,\n" +
+            "                tct.status,\n" +
+            "                tct.task_code,\n" +
+            "                tct.test_description,\n" +
+            "                tct.test_explain,\n" +
+            "                tct.test_num,\n" +
+            "                tct.type,\n" +
+            "                tct.no,\n" +
+            "                tga.id   groupAuId,\n" +
+            "                tga.group_id  groupId,tct.mobile_description,tct.mobile_page_url ,tct.mobile_test_description ,tct.mobile_status ,tct.report_version,tct.practice \n" +
+            "         from t_group_info tgi\n" +
+            "                  join t_cognitive_task tct\n" +
+            "                  join t_group_auth tga on tgi.id = group_id and b_id = tct.id\n" +
+            "     ) g_auth\n" +
+            "         join t_user_info tui on tui.g_id = g_auth.groupId\n" +
+            "where tui.id = ?1\n" +
+            "  and if(?2 is not null and ?2 != '', name like CONCAT('%',?2,'%'), 1 = 1) and status='0'",
+            countQuery = "select count(g_auth.id)\n" +
+                    "from (\n" +
+                    "         select tgi.group_name     groupName,\n" +
+                    "                tgi.institution_no institutionNo,\n" +
+                    "                tct.id,\n" +
+                    "                tct.description,\n" +
+                    "                tct.image_name,\n" +
+                    "                tct.image_url,\n" +
+                    "                tct.name,\n" +
+                    "                tct.page_url,\n" +
+                    "                tct.scale_limit,\n" +
+                    "                tct.status,\n" +
+                    "                tct.task_code,\n" +
+                    "                tct.test_description,\n" +
+                    "                tct.test_explain,\n" +
+                    "                tct.test_num,\n" +
+                    "                tct.type,\n" +
+                    "                tct.no,\n" +
+                    "                tga.id             groupAuId,\n" +
+                    "                tga.group_id       groupId\n" +
+                    "         from t_group_info tgi\n" +
+                    "                  join t_cognitive_task tct\n" +
+                    "                  join t_group_auth tga on tgi.id = group_id and b_id = tct.id\n" +
+                    "     ) g_auth\n" +
+                    "         join t_user_info tui on tui.g_id = g_auth.groupId\n" +
+                    "where tui.id = ?1\n" +
+                    "  and if(?2 is not null and ?2 != '', name like %?2%, 1 = 1) and status='0'", nativeQuery = true)
+    Page<CognitiveTaskEntity> findUserTaskAuth(String uId, String scaleName, Pageable pageable);
+
+
+    @Query(value = "select * \n" +
+            "from (\n" +
+            "         select tgi.group_name     groupName,\n" +
+            "                tgi.institution_no institutionNo,\n" +
+            "                tct.id,\n" +
+            "                tct.description,\n" +
+            "                tct.image_name,\n" +
+            "                tct.image_url,\n" +
+            "                tct.name,\n" +
+            "                tct.page_url,\n" +
+            "                tct.scale_limit,\n" +
+            "                tct.status,\n" +
+            "                tct.task_code,\n" +
+            "                tct.test_description,\n" +
+            "                tct.test_explain,\n" +
+            "                tct.test_num,\n" +
+            "                tct.type,\n" +
+            "                tct.no,\n" +
+            "                tga.id   groupAuId,\n" +
+            "                tga.group_id  groupId,tct.mobile_description,tct.mobile_page_url ,tct.mobile_test_description ,tct.mobile_status ,tct.report_version, tct.practice \n" +
+            "         from t_group_info tgi\n" +
+            "                  join t_cognitive_task tct\n" +
+            "                  join t_group_auth tga on tgi.id = group_id and b_id = tct.id\n" +
+            "     ) g_auth\n" +
+            "         join t_user_info tui on tui.g_id = g_auth.groupId\n" +
+            "where tui.id = ?1\n" +
+            "  and if(?2 is not null and ?2 != '', name like CONCAT('%',?2,'%'), 1 = 1) and status='0' and mobile_status=?3",
+            countQuery = "select count(g_auth.id)\n" +
+                    "from (\n" +
+                    "         select tgi.group_name     groupName,\n" +
+                    "                tgi.institution_no institutionNo,\n" +
+                    "                tct.id,\n" +
+                    "                tct.description,\n" +
+                    "                tct.image_name,\n" +
+                    "                tct.image_url,\n" +
+                    "                tct.name,\n" +
+                    "                tct.page_url,\n" +
+                    "                tct.scale_limit,\n" +
+                    "                tct.status,\n" +
+                    "                tct.task_code,\n" +
+                    "                tct.test_description,\n" +
+                    "                tct.test_explain,\n" +
+                    "                tct.test_num,\n" +
+                    "                tct.type,\n" +
+                    "                tct.no,\n" +
+                    "                tga.id             groupAuId,\n" +
+                    "                tga.group_id       groupId,mobile_status\n" +
+                    "         from t_group_info tgi\n" +
+                    "                  join t_cognitive_task tct\n" +
+                    "                  join t_group_auth tga on tgi.id = group_id and b_id = tct.id\n" +
+                    "     ) g_auth\n" +
+                    "         join t_user_info tui on tui.g_id = g_auth.groupId\n" +
+                    "where tui.id = ?1\n" +
+                    "  and if(?2 is not null and ?2 != '', name like %?2%, 1 = 1) and status='0' and mobile_status=?3", nativeQuery = true)
+    Page<CognitiveTaskEntity> pageUserTaskAuthInMobile(String uId, String scaleName, String mobileStatus, Pageable pageable);
+
+    /**
+     * 查询认知任务权限,包含类别
+     *
+     * @param uId
+     * @param scaleName
+     * @param cateEName
+     * @param pageable
+     * @return
+     */
+    @Query(value = "select g_auth.id,\n" +
+            "       description,\n" +
+            "       image_name,\n" +
+            "       image_url,\n" +
+            "       name,\n" +
+            "       page_url,\n" +
+            "       scale_limit,\n" +
+            "       status,\n" +
+            "       task_code,\n" +
+            "       test_description,\n" +
+            "       test_explain,\n" +
+            "       test_num,\n" +
+            "       type,\n" +
+            "       no,mobile_description,mobile_test_description,mobile_page_url,mobile_status,report_version, practice \n" +
+            "from (\n" +
+            "         select tgi.group_name     groupName,\n" +
+            "                tgi.institution_no institutionNo,\n" +
+            "                tct.id,\n" +
+            "                tct.description,\n" +
+            "                tct.image_name,\n" +
+            "                tct.image_url,\n" +
+            "                tct.name,\n" +
+            "                tct.page_url,\n" +
+            "                tct.scale_limit,\n" +
+            "                tct.status,\n" +
+            "                tct.task_code,\n" +
+            "                tct.test_description,\n" +
+            "                tct.test_explain,\n" +
+            "                tct.test_num,\n" +
+            "                tct.type,\n" +
+            "                tct.no,\n" +
+            "                tga.id             groupAuId,\n" +
+            "                tga.group_id       groupId,\n" +
+            "                tcs.flag,\n" +
+            "                tcs.ename,mobile_description,mobile_page_url ,mobile_test_description ,mobile_status ,report_version, practice \n" +
+            "         from t_group_info tgi\n" +
+            "                  join t_cognitive_task tct\n" +
+            "                  join t_group_auth tga join t_category_subject tcs on tcs.flag=tct.task_code and tgi.id = group_id and b_id = tct.id\n" +
+            "     ) g_auth\n" +
+            "         join t_user_info tui on tui.g_id = g_auth.groupId\n" +
+            "where tui.id = ?1\n" +
+            "  and if(?2 is not null and ?2 != '', name like %?2%, 1 = 1) and ename= ?3 and status='0'",
+            countQuery = "select count(g_auth.id) " +
+                    "from (\n" +
+                    "         select tgi.group_name     groupName,\n" +
+                    "                tgi.institution_no institutionNo,\n" +
+                    "                tct.id,\n" +
+                    "                tct.description,\n" +
+                    "                tct.image_name,\n" +
+                    "                tct.image_url,\n" +
+                    "                tct.name,\n" +
+                    "                tct.page_url,\n" +
+                    "                tct.scale_limit,\n" +
+                    "                tct.status,\n" +
+                    "                tct.task_code,\n" +
+                    "                tct.test_description,\n" +
+                    "                tct.test_explain,\n" +
+                    "                tct.test_num,\n" +
+                    "                tct.type,\n" +
+                    "                tct.no,\n" +
+                    "                tga.id             groupAuId,\n" +
+                    "                tga.group_id       groupId,\n" +
+                    "                tcs.flag,\n" +
+                    "                tcs.ename\n" +
+                    "         from t_group_info tgi\n" +
+                    "                  join t_cognitive_task tct\n" +
+                    "                  join t_group_auth tga join t_category_subject tcs on tcs.flag=tct.task_code and tgi.id = group_id and b_id = tct.id\n" +
+                    "     ) g_auth\n" +
+                    "         join t_user_info tui on tui.g_id = g_auth.groupId\n" +
+                    "where tui.id = ?1\n" +
+                    "  and if(?2 is not null and ?2 != '', name like %?2%, 1 = 1) and ename= ?3 and status='0'", nativeQuery = true)
+    Page<CognitiveTaskEntity> findUserTaskAuthAndCateEName(String uId, String scaleName, String cateEName, Pageable pageable);
+
+
+    @Query(value = "select g_auth.id,\n" +
+            "       description,\n" +
+            "       image_name,\n" +
+            "       image_url,\n" +
+            "       name,\n" +
+            "       page_url,\n" +
+            "       scale_limit,\n" +
+            "       status,\n" +
+            "       task_code,\n" +
+            "       test_description,\n" +
+            "       test_explain,\n" +
+            "       test_num,\n" +
+            "       type,\n" +
+            "       no,mobile_description,mobile_test_description,mobile_page_url,mobile_status,report_version, practice \n" +
+            "from (\n" +
+            "         select tgi.group_name     groupName,\n" +
+            "                tgi.institution_no institutionNo,\n" +
+            "                tct.id,\n" +
+            "                tct.description,\n" +
+            "                tct.image_name,\n" +
+            "                tct.image_url,\n" +
+            "                tct.name,\n" +
+            "                tct.page_url,\n" +
+            "                tct.scale_limit,\n" +
+            "                tct.status,\n" +
+            "                tct.task_code,\n" +
+            "                tct.test_description,\n" +
+            "                tct.test_explain,\n" +
+            "                tct.test_num,\n" +
+            "                tct.type,\n" +
+            "                tct.no,\n" +
+            "                tga.id             groupAuId,\n" +
+            "                tga.group_id       groupId,\n" +
+            "                tcs.flag,\n" +
+            "                tcs.ename,mobile_description,mobile_page_url ,mobile_test_description ,mobile_status ,report_version, practice  \n" +
+            "         from t_group_info tgi\n" +
+            "                  join t_cognitive_task tct\n" +
+            "                  join t_group_auth tga join t_category_subject tcs on tcs.flag=tct.task_code and tgi.id = group_id and b_id = tct.id\n" +
+            "     ) g_auth\n" +
+            "         join t_user_info tui on tui.g_id = g_auth.groupId\n" +
+            "where tui.id = ?1\n" +
+            "  and if(?2 is not null and ?2 != '', name like %?2%, 1 = 1) and ename= ?3 and status='0' and mobile_status=?4",
+            countQuery = "select count(g_auth.id) " +
+                    "from (\n" +
+                    "         select tgi.group_name     groupName,\n" +
+                    "                tgi.institution_no institutionNo,\n" +
+                    "                tct.id,\n" +
+                    "                tct.description,\n" +
+                    "                tct.image_name,\n" +
+                    "                tct.image_url,\n" +
+                    "                tct.name,\n" +
+                    "                tct.page_url,\n" +
+                    "                tct.scale_limit,\n" +
+                    "                tct.status,\n" +
+                    "                tct.task_code,\n" +
+                    "                tct.test_description,\n" +
+                    "                tct.test_explain,\n" +
+                    "                tct.test_num,\n" +
+                    "                tct.type,\n" +
+                    "                tct.no,\n" +
+                    "                tga.id             groupAuId,\n" +
+                    "                tga.group_id       groupId,\n" +
+                    "                tcs.flag,\n" +
+                    "                tcs.ename,mobile_status\n" +
+                    "         from t_group_info tgi\n" +
+                    "                  join t_cognitive_task tct\n" +
+                    "                  join t_group_auth tga join t_category_subject tcs on tcs.flag=tct.task_code and tgi.id = group_id and b_id = tct.id\n" +
+                    "     ) g_auth\n" +
+                    "         join t_user_info tui on tui.g_id = g_auth.groupId\n" +
+                    "where tui.id = ?1\n" +
+                    "  and if(?2 is not null and ?2 != '', name like %?2%, 1 = 1) and ename= ?3 and status='0' and mobile_status=?4", nativeQuery = true)
+    Page<CognitiveTaskEntity> pageUserTaskAuthAndCateENameInMobile(String uId, String scaleName, String cateEName, String mobileStatus, Pageable pageable);
+
+    /**
+     * 查询机构认知任务的权限(包含类别)
+     *
+     * @param institutionNo
+     * @param scaleName
+     * @param cateEName
+     * @param pageable
+     * @return
+     */
+    @Query(value = "select tct.id,\n" +
+            "       tct.description,\n" +
+            "       tct.image_name,\n" +
+            "       tct.image_url,\n" +
+            "       tct.name,\n" +
+            "       tct.page_url,\n" +
+            "       tct.scale_limit,\n" +
+            "       tct.status,\n" +
+            "       tct.task_code,\n" +
+            "       tct.test_description,\n" +
+            "       tct.test_explain,\n" +
+            "       tct.test_num,\n" +
+            "       tct.type,\n" +
+            "       tct.no,mobile_description,mobile_page_url ,mobile_test_description ,mobile_status ,report_version, practice \n" +
+            "from t_institution_info tii\n" +
+            "         join t_cognitive_task tct\n" +
+            "         join t_institution_auth tia\n" +
+            "         join t_category_subject tcs\n" +
+            "              on tcs.flag = tct.task_code and tii.institution_no = tia.institution_no and b_id = tct.id\n" +
+            "where tia.institution_no = ?1 \n" +
+            "  and if(?2 is not null and ?2 != '', name like %?2%, 1 = 1)\n" +
+            "  and ename = ?3 and status='0'\n",
+            countQuery = "select count(tct.id)\n" +
+                    "from t_institution_info tii\n" +
+                    "         join t_cognitive_task tct\n" +
+                    "         join t_institution_auth tia\n" +
+                    "         join t_category_subject tcs\n" +
+                    "              on tcs.flag = tct.task_code and tii.institution_no = tia.institution_no and b_id = tct.id\n" +
+                    "where tia.institution_no = ?1 \n" +
+                    "  and if(?2 is not null and ?2 != '', name like %?2%, 1 = 1)\n" +
+                    "  and ename = ?3 and status='0'", nativeQuery = true)
+    Page<CognitiveTaskEntity> findInstitutionTaskAuthAndCateEName(String institutionNo, String scaleName, String cateEName, Pageable pageable);
+
+
+    @Query(value = "select tct.id,\n" +
+            "       tct.description,\n" +
+            "       tct.image_name,\n" +
+            "       tct.image_url,\n" +
+            "       tct.name,\n" +
+            "       tct.page_url,\n" +
+            "       tct.scale_limit,\n" +
+            "       tct.status,\n" +
+            "       tct.task_code,\n" +
+            "       tct.test_description,\n" +
+            "       tct.test_explain,\n" +
+            "       tct.test_num,\n" +
+            "       tct.type,\n" +
+            "       tct.no,mobile_description,mobile_page_url ,mobile_test_description ,mobile_status,report_version, practice \n" +
+            "from t_institution_info tii\n" +
+            "         join t_cognitive_task tct\n" +
+            "         join t_institution_auth tia\n" +
+            "         join t_category_subject tcs\n" +
+            "              on tcs.flag = tct.task_code and tii.institution_no = tia.institution_no and b_id = tct.id\n" +
+            "where tia.institution_no = ?1 \n" +
+            "  and if(?2 is not null and ?2 != '', name like %?2%, 1 = 1)\n" +
+            "  and ename = ?3 and status='0' and mobile_status =?4\n",
+            countQuery = "select count(tct.id)\n" +
+                    "from t_institution_info tii\n" +
+                    "         join t_cognitive_task tct\n" +
+                    "         join t_institution_auth tia\n" +
+                    "         join t_category_subject tcs\n" +
+                    "              on tcs.flag = tct.task_code and tii.institution_no = tia.institution_no and b_id = tct.id\n" +
+                    "where tia.institution_no = ?1 \n" +
+                    "  and if(?2 is not null and ?2 != '', name like %?2%, 1 = 1)\n" +
+                    "  and ename = ?3 and status='0' and mobile_status =?4", nativeQuery = true)
+    Page<CognitiveTaskEntity> pageInstitutionTaskAuthAndCateEName(String institutionNo, String scaleName, String cateEName, String mobileStatus, Pageable pageable);
+
+    /**
+     * 查找机构没有的认知任务权限
+     *
+     * @param institutionNo
+     * @param searchKey
+     * @param pageable
+     * @return
+     */
+    @Query(value = "select id,\n" +
+            "       description,\n" +
+            "       image_name,\n" +
+            "       image_url,\n" +
+            "       name,\n" +
+            "       page_url,\n" +
+            "       scale_limit,\n" +
+            "       status,\n" +
+            "       task_code,\n" +
+            "       test_description,\n" +
+            "       test_explain,\n" +
+            "       test_num,\n" +
+            "       type,\n" +
+            "       no,mobile_description ,mobile_page_url ,mobile_test_description ,mobile_status,report_version,practice \n" +
+            "from t_cognitive_task tct\n" +
+            "where if( ?2 is not null and  ?2 != '', (tct.name like CONCAT('%',  ?2, '%')), 1 = 1)  and " +
+            "id not in (select b_id from t_institution_auth where institution_no = ?1 and t_institution_auth.type = '1') and status='0'",
+            countQuery = "select count(id)\n" +
+                    "    from t_cognitive_task tct\n" +
+                    "where if( ?2 is not null and  ?2 != '', (tct.name like CONCAT('%',  ?2, '%')), 1 = 1)  and " +
+                    "id not in (select b_id from t_institution_auth where institution_no = ?1 and t_institution_auth.type = '1') and status='0'", nativeQuery = true)
+    Page<CognitiveTaskEntity> findInstitutionNoCTAuthList(String institutionNo, String searchKey, Pageable pageable);
+
+}

+ 116 - 0
src/main/java/com/rf/psychological/scale/rest/CategoryController.java

@@ -0,0 +1,116 @@
+package com.rf.psychological.scale.rest;
+
+import com.rf.psychological.base.rest.BaseController;
+import com.rf.psychological.group.dao.model.GroupEntity;
+import com.rf.psychological.group.service.GroupInfoService;
+import com.rf.psychological.security.SafetyProcess;
+import com.rf.psychological.scale.service.CategoryService;
+import com.rf.psychological.utils.Constant;
+import com.rf.psychological.utils.Result;
+import com.rf.psychological.scale.dao.model.CategoryEntity;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.lang.StringUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.List;
+
+
+/**
+ * @author zsy
+ * @description:量表类别信息管理
+ * @date 2021/6/17 15:55
+ */
+
+@Slf4j
+@RestController
+@RequestMapping("/category")
+@Api(tags = "量表类别信息管理")
+public class CategoryController extends BaseController {
+
+    @Autowired
+    private CategoryService categoryService;
+
+    @Autowired
+    private GroupInfoService groupInfoService;
+
+    /**
+     * 添加量表类别信息
+     *
+     * @param categoryEntity
+     * @return
+     */
+    @SafetyProcess
+    @PostMapping("/save")
+    @ApiOperation("添加量表类别信息")
+    public Result saveCategoryInfo(CategoryEntity categoryEntity) {
+
+        if (categoryEntity.getName() == null || categoryEntity.getName().trim().length() == 0) {
+            return failBadRequest(null, "类别名称为空");
+        }
+        if (categoryEntity.getEname() == null || categoryEntity.getEname().trim().length() <= 0) {
+            return failBadRequest(null, "类别英文名为空");
+        }
+        if (categoryEntity.getSequence() == null || categoryEntity.getSequence().trim().length() <= 0) {
+            return failBadRequest(null, "排序为空");
+        }
+        List<CategoryEntity> categoryEntityList = this.categoryService.getCategoryByName(categoryEntity.getName(), categoryEntity.getEname(), categoryEntity.getSequence());
+        if (categoryEntityList.size() > 0) {
+            return failBadRequest(null, "类别已存在");
+        }
+        this.categoryService.save(categoryEntity);
+        return success();
+    }
+
+    /**
+     * 量表查询所有类别信息
+     *
+     * @return
+     */
+    @SafetyProcess
+    @GetMapping("/getCategoryList")
+    @ApiOperation(value = "量表查询所有类别信息")
+    public Result getCategoryList(String institutionNo, String gId) {
+        //游客用户无gid,数据库配置特定用户
+        if (StringUtils.isEmpty(gId)){
+            GroupEntity group = groupInfoService.findGroupByInstitutionNoAndName(institutionNo, Constant.DEFAULT_GROUP_NAME);
+            if (group != null){
+                gId = group.getId();
+            }
+        }
+        return success(this.categoryService.findALLCategorySubject(institutionNo, gId));
+    }
+
+    /**
+     * 认知任务查询所有类别信息
+     *
+     * @return
+     */
+    @SafetyProcess
+    @GetMapping("/getCognizeCategoryList")
+    @ApiOperation(value = "认知任务查询所有类别信息")
+    public Result getCognizeCategoryList(String institutionNo, String gId) {
+        //游客用户无id,数据库配置特定用户
+        if (StringUtils.isEmpty(gId)){
+            GroupEntity group = groupInfoService.findGroupByInstitutionNoAndName(institutionNo, Constant.DEFAULT_GROUP_NAME);
+            if (group != null){
+                gId = group.getId();
+            }
+        }
+        return success(this.categoryService.findAllCT(institutionNo, gId));
+    }
+
+    /**
+     * 全量查询所有类别信息-不加密,后台维护管理使用
+     */
+    @GetMapping("/loadCategory")
+    public Result<List<CategoryEntity>> loadCategory() {
+        List<CategoryEntity> categoryEntities = this.categoryService.findAlls();
+        return success(categoryEntities);
+    }
+}

+ 3810 - 0
src/main/java/com/rf/psychological/scale/rest/CognizeResultController.java

@@ -0,0 +1,3810 @@
+package com.rf.psychological.scale.rest;
+
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
+import com.rf.psychological.base.rest.BaseController;
+import com.rf.psychological.dao.cognizeModel.*;
+import com.rf.psychological.dao.model.*;
+import com.rf.psychological.file.excel.ExcelBean;
+import com.rf.psychological.opLog.annotation.OperationLogAnnotation;
+import com.rf.psychological.plan.dao.model.TestPlanEntity;
+import com.rf.psychological.plan.service.TestPlanContendService;
+import com.rf.psychological.plan.service.TestPlanService;
+import com.rf.psychological.plan.service.TestPlanUserService;
+import com.rf.psychological.rest.ServerController;
+import com.rf.psychological.scale.dao.model.UserRecordEntity;
+import com.rf.psychological.security.AesEncryptUtils;
+import com.rf.psychological.security.SafetyProcess;
+import com.rf.psychological.scale.service.CognitiveTaskService;
+import com.rf.psychological.scale.service.UserRecordService;
+import com.rf.psychological.user.dao.model.UserEntity;
+import com.rf.psychological.user.service.UserService;
+import com.rf.psychological.socket.MyClient;
+import com.rf.psychological.utils.*;
+import com.rf.psychological.file.excel.ExcelClass;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.lang.StringUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+import java.io.File;
+import java.math.BigDecimal;
+import java.math.RoundingMode;
+import java.text.DecimalFormat;
+import java.text.SimpleDateFormat;
+import java.time.LocalDateTime;
+import java.util.*;
+import java.util.stream.Collectors;
+
+/**
+ * @author zzf
+ * @description:接收测试结果--认知任务
+ * @date 2021/1/29 10:30
+ */
+@Slf4j
+@RestController
+@RequestMapping("/cognize")
+@Api(tags = "认知任务测评结果计算")
+public class CognizeResultController extends BaseController {
+
+    @Autowired
+    private UserRecordService userRecordService;
+
+    @Autowired
+    private UserService userService;
+
+    @Autowired
+    private CognitiveTaskService cognitiveTaskService;
+
+    @Autowired
+    private TestPlanContendService testPlanContendService;
+
+    @Autowired
+    private TestPlanUserService testPlanUserService;
+
+    @Autowired
+    private TestPlanService testPlanService;
+
+    @SafetyProcess
+    @OperationLogAnnotation("认知任务测评结果保存")
+    @ApiOperation(value = "type:认知任务标志,jsonObject:测试结果")
+    @PostMapping("/{type}")
+    public Result completeTest(@PathVariable String type, @RequestBody String json) throws Exception {
+        JSONObject jsonObject = JSONObject.parseObject(AesEncryptUtils.decrypt(JSONObject.parseObject(json).getString("data")));
+        String testPlanId = null;
+        UserEntity userEntity = this.userService.getOne(jsonObject.getString("userId"));
+        String userName = userEntity.getPetName();
+        String userBirthday = userEntity.getBirthday();
+        String userSex = userEntity.getGender();
+        String phone = userEntity.getPhone();
+        String institutionNo = userEntity.getInstitutionNo();
+        if (userSex.equals("0")) {
+            userSex = "男";
+        } else {
+            userSex = "女";
+        }
+        if(userEntity == null){
+            return fail("用户不存在");
+        }
+        if (jsonObject.containsKey("testPlanId") && StringUtils.isNotBlank(jsonObject.getString("testPlanId"))) {
+            testPlanId = jsonObject.getString("testPlanId");
+            TestPlanEntity testPlanEntity = this.testPlanService.findById(testPlanId);
+            if(testPlanEntity == null ){
+                return fail("测试计划不存在");
+            }
+            if(testPlanEntity.getStatus() == Constant.TEST_PLAN_STATUS_UNSTART)
+                return fail("测试计划尚未开始");
+            if(testPlanEntity.getStatus() < Constant.TEST_PLAN_STATUS_UNSTART)
+                return fail("测试计划已结束");
+            UserRecordEntity checkTestPlanId = userRecordService.findByPhoneAndTestPlanIdAndInstitution(institutionNo, phone, testPlanId, type);
+            if (checkTestPlanId != null) {
+                return fail("", "该测试已完成");
+            }
+            WebScaleResultController.updateUserPlanStatus(testPlanId,institutionNo,phone,type,userEntity.getInstitutionNo(),testPlanContendService,testPlanUserService);
+        }
+
+
+
+        String testTime = new SimpleDateFormat("yyyy年MM月dd日HH时mm分ss秒").format(new Date());
+        if (jsonObject.containsKey("startTime")) {
+            testTime = new SimpleDateFormat("yyyy年MM月dd日HH时mm分ss秒").format(jsonObject.getDate("startTime"));
+        }
+        String fileName = userName + Constant.SPLIT_CHAR + userBirthday + Constant.SPLIT_CHAR + userSex + Constant.SPLIT_CHAR + testTime;
+        String datas = null;
+        String name;
+        String testResult = "";
+        String b64Img = "";
+        List<Map<String, String>> resultMapList = new ArrayList<>();
+        // 创建返回的json对象
+        JSONObject resultJson = new JSONObject(true);
+        resultJson.put("测试结果指导", "");
+        // 创建入库的json对象
+        JSONObject resultDBJson = new JSONObject(true);
+        resultDBJson.put("测试结果指导", "");
+        //瑞文测试
+        if (Constant.QUEST_TYPE_RIVEN.equals(type)) {
+            JSONArray jsonArray = jsonObject.getJSONArray("data");
+            int score = jsonObject.getInteger("userScore");
+            fileName = fileName + "-" + Constant.SHEET_NAME_RIVEN + ".xlsx";
+            name = Constant.SHEET_NAME_RIVEN;
+            int resultScore = RIVENScore(userBirthday, score);
+
+            resultDBJson.put("versionNo", "2.0.1");
+            resultJson.put("versionNo", "2.0.1");
+            //知觉辨别能力得分
+            int A = 0;
+            //雷同比较能力得分
+            int B = 0;
+            //比较推理能力得分
+            int C = 0;
+            //系列关系能力得分
+            int D = 0;
+            //抽象推理能力得分
+            int E = 0;
+            for (int i = 0; i < jsonArray.size(); i++) {
+                JSONObject jsonObject1 = jsonArray.getJSONObject(i);
+                if (i <= 11){
+                    A += Integer.valueOf(jsonObject1.getInteger("score"));
+                }else if (i >= 12 && i <= 23){
+                    B += Integer.valueOf(jsonObject1.getInteger("score"));
+                }else if (i >= 24&& i <= 35){
+                    C += Integer.valueOf(jsonObject1.getInteger("score"));
+                }else if (i >= 36 && i <= 47){
+                    D += Integer.valueOf(jsonObject1.getInteger("score"));
+                }else {
+                    E += Integer.valueOf(jsonObject1.getInteger("score"));
+                }
+            }
+            //总分模块
+            JSONArray totalScores = new JSONArray();
+            JSONObject totalScoreObject = new JSONObject(true);
+            totalScoreObject.put("totalScore",score);
+            if (resultScore < 5) {
+                totalScoreObject.put("totalScoreDesc","智力水平低下");
+            } else if (resultScore >= 5 && resultScore <= 24) {
+                totalScoreObject.put("totalScoreDesc","智力水平中下");
+            } else if (resultScore >= 25 && resultScore <= 74) {
+                totalScoreObject.put("totalScoreDesc","智力水平中等");
+            } else if (resultScore >= 75 && resultScore <= 94) {
+                totalScoreObject.put("totalScoreDesc","智力水平良好");
+            } else {
+                totalScoreObject.put("totalScoreDesc","智力水平优秀");
+            }
+
+            totalScores.add(totalScoreObject);
+            resultDBJson.put("totalScore", totalScores);
+            resultJson.put("totalScore", totalScores);
+
+            //分数,雷达图及表格数据
+            /*JSONArray scoreMmoduleS = new JSONArray();
+            JSONObject scoreMmoduleObject = new JSONObject(true);
+            JSONArray groupData = new JSONArray();
+            JSONObject groupDataA = new JSONObject(true);
+            groupDataA.put("name","知觉辨别能力");
+            groupDataA.put("value",A);
+            groupData.add(groupDataA);
+            JSONObject groupDataB = new JSONObject(true);
+            groupDataB.put("name","雷同比较能力");
+            groupDataB.put("value",B);
+            groupData.add(groupDataB);
+            JSONObject groupDataC = new JSONObject(true);
+            groupDataC.put("name","比较推理能力");
+            groupDataC.put("value",C);
+            groupData.add(groupDataC);
+            JSONObject groupDataD = new JSONObject(true);
+            groupDataD.put("name","系列关系能力");
+            groupDataD.put("value",D);
+            groupData.add(groupDataD);
+            JSONObject groupDataE = new JSONObject(true);
+            groupDataE.put("name","抽象推理能力");
+            groupDataE.put("value",E);
+            groupData.add(groupDataE);
+            scoreMmoduleObject.put("groupName","第一组");
+            scoreMmoduleObject.put("groupData",groupData);
+            scoreMmoduleS.add(scoreMmoduleObject);
+            resultDBJson.put("score", scoreMmoduleS);
+            resultJson.put("score", scoreMmoduleS);*/
+
+            //维度得分及解读模块
+            JSONArray dimensions = new JSONArray();
+            JSONObject scoreA = new JSONObject(true);
+            scoreA.put("name","知觉辨别能力");
+            scoreA.put("score",A);
+            scoreA.put("Describe","知觉辨认能力是指对外界感官信息做出整体性辨别的能力,比如万花丛中一点绿,在视力水平相等情况下,知觉辨认能力强的人会马上察觉到这点绿,而知觉辨认能力弱的人则不能。\n" +
+                    "在知觉辨认能力维度得分高的受测者对外界环境各种感觉的组织整合能力较强,看待问题更有全局观,往往能耳听八方、眼观六路。\n" +
+                    "而在该维度得分较低的受测者则对外界环境各种感觉信息的组织整合能力较差,看待问题时可能忽略对整体的把控或处理失误。\n" +
+                    "对于在该维度得分较低的受测者,建议可以后续在心灵照相机平台加强感知觉整体性的辨别训练。");
+            scoreA.put("maximum","12");
+            scoreA.put("groupName","第一组");
+            dimensions.add(scoreA);
+            JSONObject scoreB = new JSONObject(true);
+            scoreB.put("name","雷同比较能力");
+            scoreB.put("score",B);
+            scoreB.put("Describe","类同比较能力跟比较推理能力差不多,不同的是类同比较能力只强调个体将同类事物进行比较并从中提取出共同要素即可,而不强调举一反三将其用于其他同类问题的解决。因此简单地说,类同比较能力就相当于找不同。\n" +
+                    "该维度得分高的受测者在同类现象中发觉共同规律的能力较强,归纳总结能力较强。而在该维度得分低的受测者这类能力较差。\n" +
+                    "该维度得分较低的受测者可以后续加强类同比较能力训练。");
+            scoreB.put("maximum","12");
+            scoreB.put("groupName","第一组");
+            dimensions.add(scoreB);
+            JSONObject scoreC = new JSONObject(true);
+            scoreC.put("name","比较推理能力");
+            scoreC.put("score",C);
+            scoreC.put("Describe","比较推理能力是指个体从同类现象或问题中提取出共性因素,举一反三,并应用于其他同类问题的解决中去的能力,比如鲁班根据茅草发明了锯子,人类根据鸟的模型发明了飞机等。\n" +
+                    "在比较推理能力维度得分高的受测者,其举一反三能力更优秀,迁移学习能力更好,且将会获得更好的创造力。\n" +
+                    "而在该维度得分低的受测者,其举一反三的能力较差,迁移学习的能力和解决问题的能力也有待提高\n" +
+                    "对于在该维度得分较低的受测者,建议可以在平台坚持类比迁移能力的训练和创造力训练,且在平时生活实践中要打破常规惯性思维,提高解决实际问题的能力。");
+            scoreC.put("maximum","12");
+            scoreC.put("groupName","第一组");
+            dimensions.add(scoreC);
+            JSONObject scoreD = new JSONObject(true);
+            scoreD.put("name","系列关系能力");
+            scoreD.put("score",D);
+            scoreD.put("Describe","系列关系能力指个体对情景中若干信息之间的联系的觉察能力,该能力高的个体偏向场依存的认知模式,更能觉察到情景中的变化,更关注外界,该能力低的个体偏向场独立的认知模式,更关注内在。但需要注意的是,场依存和场独立的认知模式是中性的,无好坏之分,而系列关系能力作为一种认知能力是有高低好坏之分的,高肯定比低好。\n" +
+                    "因此,该维度得分高的受测者拥有更好的对场景动态的敏感性,换位思考、交际能力更好,更能体会到别人的内心。\n" +
+                    "而该维度得分低的受测者这方面能力较差,不太能够换位思考,更多活在自己的世界,但从另一个角度来讲,这部分受测者内心更加深邃,思维能力更强。\n" +
+                    "低分受测者也可以通过场依存认知训练等来弥补缺陷。");
+            scoreD.put("maximum","12");
+            scoreD.put("groupName","第一组");
+            dimensions.add(scoreD);
+            JSONObject scoreE = new JSONObject(true);
+            scoreE.put("name","抽象推理能力");
+            scoreE.put("score",E);
+            scoreE.put("Describe","抽象推理能力是一种高级思维能力,小孩在7岁左右开始萌芽,12岁左右青春期开始较快发展。\n" +
+                    "抽象推理能力指不仅能把握事物的表面,更能揭露事物的深层本质,即透过现象看本质的能力。该维度得分高的受测者拥有世俗认为的高智商水平,认知灵活性强,其创造力想象力都较高,适合做科学家发明家工作。而得分低的个体则这方面能力较低。作为一种一般能力,抽象推理能力越早培养越好,若受测者年龄较小,可以尽快培养起来。");
+            scoreE.put("maximum","12");
+            scoreE.put("groupName","第一组");
+            dimensions.add(scoreE);
+            resultDBJson.put("dimensions", dimensions);
+            resultJson.put("dimensions", dimensions);
+
+            //注意事项模块
+            /*JSONArray notes = new JSONArray();
+            JSONObject noteObject = new JSONObject(true);
+            noteObject.put("totalScore",score);
+            noteObject.put("scoreDes","通过五个方面得分的结构,一定程度上有助于了解被测者智力结构。 \n" +
+                    "对分数作解释时注意,由于瑞文测验强调推理方面的能力,并非完全的智力,目前仅用于智力方面的筛选。因此不能绝对化。\n" +
+                    "该测验根据斯皮尔曼智力二因素理论编制,所测量的均为一般智力,而不是某方面的特殊技能。\n" +
+                    "本报告不具有临床诊断意义,仅供专业人员参考。\n" +
+                    "智力不是一成不变的,会随着年龄变化和受教育以及环境等因素变化而变化,所以以上维度智力得分低的受测者可以通专业训练提升。");
+            notes.add(noteObject);*/
+            resultDBJson.put("note", "通过五个方面得分的结构,一定程度上有助于了解被测者智力结构。 \n" +
+                    "对分数作解释时注意,由于瑞文测验强调推理方面的能力,并非完全的智力,目前仅用于智力方面的筛选。因此不能绝对化。\n" +
+                    "该测验根据斯皮尔曼智力二因素理论编制,所测量的均为一般智力,而不是某方面的特殊技能。\n" +
+                    "本报告不具有临床诊断意义,仅供专业人员参考。\n" +
+                    "智力不是一成不变的,会随着年龄变化和受教育以及环境等因素变化而变化,所以以上维度智力得分低的受测者可以通专业训练提升。");
+            resultJson.put("note", "通过五个方面得分的结构,一定程度上有助于了解被测者智力结构。 \n" +
+                    "对分数作解释时注意,由于瑞文测验强调推理方面的能力,并非完全的智力,目前仅用于智力方面的筛选。因此不能绝对化。\n" +
+                    "该测验根据斯皮尔曼智力二因素理论编制,所测量的均为一般智力,而不是某方面的特殊技能。\n" +
+                    "本报告不具有临床诊断意义,仅供专业人员参考。\n" +
+                    "智力不是一成不变的,会随着年龄变化和受教育以及环境等因素变化而变化,所以以上维度智力得分低的受测者可以通专业训练提升。");
+            //显示模块
+            JSONObject ifShow = new JSONObject(true);
+            ifShow.put("totalScore",true);
+            ifShow.put("dimensions",true);
+            ifShow.put("note",true);
+            ifShow.put("radar",true);
+            ifShow.put("table",true);
+            resultDBJson.put("ifShow", ifShow);
+            resultJson.put("ifShow", ifShow);
+
+            //第一版计分规则
+            Map<String, String> resultMap = new LinkedHashMap<>();
+            resultMap.put("总分", String.valueOf(score));
+            resultDBJson.put("总分", String.valueOf(score));
+            resultMap.put("解读", "智力水平大于" + resultScore + "%的同龄人");
+            resultJson.put("verdict", "智力水平大于" + resultScore + "%的同龄人");
+            resultDBJson.put("解读", "智力水平大于" + resultScore + "%的同龄人");
+            if (resultScore < 5) {
+                resultMap.put("智力水平", "低下");
+                resultJson.put("brainsLevel", "低下");
+                resultDBJson.put("智力水平", "低下");
+            } else if (resultScore >= 5 && resultScore <= 24) {
+                resultMap.put("智力水平", "中下");
+                resultJson.put("brainsLevel", "中下");
+                resultDBJson.put("智力水平", "中下");
+            } else if (resultScore >= 25 && resultScore <= 74) {
+                resultMap.put("智力水平", "中等");
+                resultJson.put("brainsLevel", "中等");
+                resultDBJson.put("智力水平", "中等");
+            } else if (resultScore >= 75 && resultScore <= 94) {
+                resultMap.put("智力水平", "良好");
+                resultJson.put("brainsLevel", "良好");
+                resultDBJson.put("智力水平", "良好");
+            } else {
+                resultMap.put("智力水平", "优秀");
+                resultJson.put("brainsLevel", "优秀");
+                resultDBJson.put("智力水平", "优秀");
+            }
+            resultMapList.add(resultMap);
+
+            datas = jsonArray.toString();
+            ExcelUtil.createExcelFile(ObjectEntity.class, jsonArray.toJavaList(ObjectEntity.class), resultMapList, new ExcelClass().contentExcel(Constant.QUEST_TYPE_RIVEN), fileName, Constant.SHEET_NAME_RIVEN);
+            //画钟测试
+        } else if (Constant.QUEST_TYPE_CDT.equals(type)) {
+            JSONArray jsonArray = jsonObject.getJSONArray("data");
+            int score = jsonObject.getInteger("Grade");
+            b64Img = jsonObject.getString("Img");
+            fileName = fileName + "-" + Constant.SHEET_NAME_CDT + ".xlsx";
+            name = Constant.SHEET_NAME_CDT;
+            Map<String, String> resultMap = new LinkedHashMap<>();
+            resultMap.put("总分", String.valueOf(score));
+            resultDBJson.put("总分", String.valueOf(score));
+            resultJson.put("Grade", score);
+            resultMapList.add(resultMap);
+            datas = jsonArray.toString();
+            List<ObjectEntity> objectEntities = new ArrayList<>();
+            for (int i = 0; i < jsonArray.size(); i++) {
+                JSONObject object = jsonArray.getJSONObject(i);
+                Iterator<String> iterator = object.keySet().iterator();
+                while (iterator.hasNext()) {
+                    String key = iterator.next();
+                    ObjectEntity objectEntity = new ObjectEntity(key, object.getString(key));
+                    objectEntities.add(objectEntity);
+                }
+            }
+            //ExcelUtil.createExcelFile(ObjectEntity.class, jsonArray.toJavaList(ObjectEntity.class), resultMapList, new ExcelClass().contentExcel(Constant.QUEST_TYPE_CDT), fileName, Constant.SHEET_NAME_CDT);
+            ExcelUtil.createExcelFile(ObjectEntity.class, objectEntities, resultMapList, new ExcelClass().contentExcel(Constant.QUEST_TYPE_CDT), fileName, Constant.SHEET_NAME_CDT);
+            String imgFilePath;
+            if (OSUtil.isLinux()) {
+                File file = new File("./心理检测/检测结果/" + new SimpleDateFormat("yyyy-MM-dd").format(new Date()) + "/" + Constant.SHEET_NAME_CDT);
+                if (!file.exists()) {
+                    //file.createNewFile();
+                    file.mkdirs();
+                }
+                imgFilePath = "./心理检测/检测结果/" + new SimpleDateFormat("yyyy-MM-dd").format(new Date()) + "/" + Constant.SHEET_NAME_CDT + "/" + userName + Constant.SPLIT_CHAR + userBirthday + Constant.SPLIT_CHAR + userSex + Constant.SPLIT_CHAR + testTime + "-" + Constant.SHEET_NAME_CDT + ".jpg";
+            } else {
+                File file = new File("./心理检测/检测结果/" + new SimpleDateFormat("yyyy-MM-dd").format(new Date()) + "/" + Constant.SHEET_NAME_CDT);
+                if (!file.exists()) {
+                    //file.createNewFile();
+                    file.mkdirs();
+                }
+                imgFilePath = "./心理检测/检测结果/" + new SimpleDateFormat("yyyy-MM-dd").format(new Date()) + "/" + Constant.SHEET_NAME_CDT + "/" + userName + Constant.SPLIT_CHAR + userBirthday + Constant.SPLIT_CHAR + userSex + Constant.SPLIT_CHAR + testTime + "-" + Constant.SHEET_NAME_CDT + ".jpg";
+            }
+            Utils.GenerateImage(b64Img.substring(b64Img.indexOf(",")+1), imgFilePath);
+            b64Img = imgFilePath;
+            //蒙特利尔认知测试
+        } else if (Constant.QUEST_TYPE_MOCA.equals(type)) {
+            JSONArray jsonArray = jsonObject.getJSONArray("data");
+            int score = jsonObject.getInteger("valueSum");
+            fileName = fileName + "-" + Constant.SHEET_NAME_MOCA + ".xlsx";
+            name = Constant.SHEET_NAME_MOCA;
+            Map<String, String> resultMap = new LinkedHashMap<>();
+            resultMap.put("总分", String.valueOf(score));
+            resultDBJson.put("总分", String.valueOf(score));
+            resultJson.put("valueSum", score);
+            resultMapList.add(resultMap);
+            datas = jsonArray.toString();
+            ExcelUtil.createExcelFile(ObjectEntity.class, jsonArray.toJavaList(ObjectEntity.class), resultMapList, new ExcelClass().contentExcel(Constant.QUEST_TYPE_MOCA), fileName, Constant.SHEET_NAME_MOCA);
+            //简易精神状态测试
+        } else if (Constant.QUEST_TYPE_MMSE.equals(type)) {
+            JSONArray jsonArray = jsonObject.getJSONArray("data");
+            int score = jsonObject.getInteger("valueSum");
+            fileName = fileName + "-" + Constant.SHEET_NAME_MMSE + ".xlsx";
+            name = Constant.SHEET_NAME_MMSE;
+            Map<String, String> resultMap = new LinkedHashMap<>();
+            resultMap.put("总分", String.valueOf(score));
+            resultDBJson.put("总分", String.valueOf(score));
+            resultJson.put("valueSum", score);
+            resultMapList.add(resultMap);
+            datas = jsonArray.toString();
+            ExcelUtil.createExcelFile(ObjectEntity.class, jsonArray.toJavaList(ObjectEntity.class), resultMapList, new ExcelClass().contentExcel(Constant.QUEST_TYPE_MMSE), fileName, Constant.SHEET_NAME_MMSE);
+            //听觉测试
+        } else if (Constant.QUEST_TYPE_BIC.equals(type)) {
+            float score = jsonObject.getFloat("valueSum");
+            fileName = fileName + "-" + Constant.SHEET_NAME_BIC + ".xlsx";
+            name = Constant.SHEET_NAME_BIC;
+            JSONArray jsonArray = jsonObject.getJSONArray("userResponseRecords");
+            List<SHAPE2Entity> shape2Entities = jsonArray.toJavaList(SHAPE2Entity.class);
+            Map<String, String> resultMap = new LinkedHashMap<>();
+            resultMap.put("总分", String.valueOf(score));
+            resultJson.put("userScore", score);
+            resultDBJson.put("总分", score);
+            resultMapList = new ArrayList<>();
+            resultMapList.add(resultMap);
+            datas = jsonArray.toString();
+            ExcelUtil.createExcelFile(SHAPE2Entity.class, shape2Entities, resultMapList, new ExcelClass().contentExcel(Constant.QUEST_TYPE_BIC), fileName, Constant.SHEET_NAME_BIC);
+            //工作记忆测试(空间)
+        } else if (Constant.QUEST_TYPE_MEMORYT.equals(type)) {
+            String scoreOne = jsonObject.getString("userScoreOne");
+            String scoreTwo = jsonObject.getString("userScoreTwo");
+            fileName = fileName + "-" + Constant.SHEET_NAME_MEMORYT + ".xlsx";
+            name = Constant.SHEET_NAME_MEMORYT;
+            JSONArray jsonArray = jsonObject.getJSONArray("userResponseRecords");
+            List<SHAPE2Entity> shape2Entities = jsonArray.toJavaList(SHAPE2Entity.class);
+
+
+
+            resultJson.put("versionNo",Constant.COGNITION_RESULT_VERSION);
+            List list = new ArrayList();
+            JSONObject dimension1 = new JSONObject(true);
+            dimension1.put("name","1back");
+            dimension1.put("score",scoreOne);
+            String desc = null;
+            double correct = Double.valueOf(scoreOne);
+            DecimalFormat df = new DecimalFormat("######0.00");
+            correct = Double.parseDouble(df.format(correct));
+            //int correct = Integer.parseInt(scoreOne);
+            if (correct>90){
+                desc = "优秀等级:您的视觉空间工作记忆系统容量很大,在同样难度要求的情况下,相比大部分人,您能够记住更多的事物的空间位置信息且记住的时间更长久,但这并不代表您能够过目不忘。\n";
+            }else if(correct>80 && correct<=90){
+                desc = "较优秀等级:您的视觉空间工作记忆系统容量较大,在同样难度要求的情况下,相比一部分人,您能够记住的事物的空间位置信息多一些且记住的时间长一点,但过一段时间(1分钟之后)您也会慢慢忘记。\n";
+            }else if(correct>60 && correct<=80){
+                desc = "一般等级: 您的视觉空间工作记忆系统容量不是很大也不是很小,处于一般水平,在同样难度要求的情况下,您能够记住的事物的空间位置信息不会明显比一般人多也不会明显比一般人少,且过一段时间(1分钟之后)您会慢慢忘记。\n";
+            }else if(correct>50 && correct<=60){
+                desc = "较差等级:您的视觉空间工作记忆系统容量较小,在同样难度要求的情况下,您能够记住的事物的空间位置信息会比其他人少,且遗忘较快。\n";
+            }else if(correct<=50){
+                desc = "极差等级:您的视觉空间工作记忆系统容量很小,在同样难度要求的情况下,您能够记住的事物的空间位置信息多明显比大部分人少,且遗忘地很快。\n";
+            }
+            dimension1.put("Describe",desc);
+            dimension1.put("maximum",100);
+            dimension1.put("groupName","第一组");
+
+            JSONObject dimension2 = new JSONObject(true);
+            dimension2.put("name","2back");
+            dimension2.put("score",scoreTwo);
+            String desc2 = null;
+            double correct2 = Double.valueOf(scoreTwo);
+            correct2 = Double.parseDouble(df.format(correct2));
+            //int correct2 = Integer.parseInt(scoreTwo);
+            if (correct2>90){
+                desc2 = "优秀等级:您的视觉空间工作记忆系统容量很大,在同样难度要求的情况下,相比大部分人,您能够记住更多的事物的空间位置信息且记住的时间更长久,但这并不代表您能够过目不忘。\n";
+            }else if(correct2>80 && correct2<=90){
+                desc2 = "较优秀等级:您的视觉空间工作记忆系统容量较大,在同样难度要求的情况下,相比一部分人,您能够记住的事物的空间位置信息多一些且记住的时间长一点,但过一段时间(1分钟之后)您也会慢慢忘记。\n";
+            }else if(correct2>60 && correct2<=80){
+                desc2 = "一般等级: 您的视觉空间工作记忆系统容量不是很大也不是很小,处于一般水平,在同样难度要求的情况下,您能够记住的事物的空间位置信息不会明显比一般人多也不会明显比一般人少,且过一段时间(1分钟之后)您会慢慢忘记。\n";
+            }else if(correct2>50 && correct2<=60){
+                desc2 = "较差等级:您的视觉空间工作记忆系统容量较小,在同样难度要求的情况下,您能够记住的事物的空间位置信息会比其他人少,且遗忘较快。\n";
+            }else if(correct2<=50){
+                desc2 = "极差等级:您的视觉空间工作记忆系统容量很小,在同样难度要求的情况下,您能够记住的事物的空间位置信息多明显比大部分人少,且遗忘地很快。\n";
+            }
+            dimension2.put("Describe",desc2);
+            dimension2.put("maximum",100);
+            dimension2.put("groupName","第二组");
+            list.add(dimension1);
+            list.add(dimension2);
+            resultJson.put("dimensions",list);
+            JSONObject ifShow = new JSONObject(true);
+            ifShow.put("totalScore",false);
+            ifShow.put("dimensions",true);
+            ifShow.put("note",false);
+            ifShow.put("radar",false);
+            ifShow.put("table",false);
+            resultJson.put("ifShow",ifShow);
+            resultDBJson = resultJson;
+
+
+
+            Map<String, String> resultMap = new LinkedHashMap<>();
+            resultMap.put("1back正确率", scoreOne);
+            resultMap.put("2back正确率", scoreTwo);
+            resultJson.put("1back正确率", scoreOne);
+            resultJson.put("2back正确率", scoreTwo);
+            resultDBJson.put("1back正确率", scoreOne);
+            resultDBJson.put("2back正确率", scoreTwo);
+            resultMapList = new ArrayList<>();
+            resultMapList.add(resultMap);
+            datas = jsonArray.toString();
+            ExcelUtil.createExcelFile(SHAPE2Entity.class, shape2Entities, resultMapList, new ExcelClass().contentExcel(Constant.QUEST_TYPE_MEMORYT), fileName, Constant.SHEET_NAME_MEMORYT);
+            //节奏诊断
+        } else if (Constant.QUEST_TYPE_RHYTHM.equals(type)) {
+            String score = jsonObject.getString("score");
+            String types = jsonObject.getString("type");
+            String subType = jsonObject.getString("subType");
+            String interval = jsonObject.getString("interval");
+            String duration = jsonObject.getString("duration");
+            String questionNo = jsonObject.getString("questionNo");
+
+            fileName = fileName + "-" + Constant.SHEET_NAME_RHYTHM + ".xlsx";
+            name = Constant.SHEET_NAME_RHYTHM;
+
+            resultJson.put("score", score);
+            resultJson.put("type-subType", types + "-" + subType);
+            resultJson.put("interval", interval + "ms");
+            resultJson.put("duration", duration + "s");
+            resultJson.put("questionNo", questionNo);
+
+
+            resultDBJson.put("总分", score);
+            resultDBJson.put("模式类型", types + "-" + subType);
+            resultDBJson.put("节拍间隔", interval + "ms");
+            resultDBJson.put("持续时间", duration + "s");
+            b64Img = questionNo;
+
+            RhythmEntity rhythmEntity = new RhythmEntity();
+            rhythmEntity.setDuration(duration + "s");
+            rhythmEntity.setInterval(interval + "ms");
+            rhythmEntity.setSubType(types + "-" + subType);
+            rhythmEntity.setScore(score);
+            rhythmEntity.setQuestionNo(questionNo);
+            List<RhythmEntity> rhythmEntities = new ArrayList<>();
+            rhythmEntities.add(rhythmEntity);
+            /*String result = "";
+            result += objectEntity.getKey()+":"+objectEntity.getValue();
+            //resultJson.put("测试结果", jsonArray.toJavaList(ObjectEntity.class));
+            resultJson.put("测试结果", result);*/
+            //ExcelUtil.createExcelFile(ObjectEntity.class, null, resultMapList, new ExcelClass().contentExcel(Constant.QUEST_TYPE_MOVEMENT), fileName, Constant.SHEET_NAME_MOVEMENT);
+            datas = jsonObject.toString();
+            ExcelUtil.createExcelFile(RhythmEntity.class, rhythmEntities, null, new ExcelClass().contentExcel(Constant.QUEST_TYPE_RHYTHM), fileName, Constant.SHEET_NAME_RHYTHM);
+
+            //目标追踪测试
+        } else if (Constant.QUEST_TYPE_GTCT.equals(type)) {
+            //用户测试记录
+            JSONArray gtctEntitieList = jsonObject.getJSONArray("userRecords");
+            List<GTCTEntity> gtctEntities = gtctEntitieList.toJavaList(GTCTEntity.class);
+            //用户测试结果
+            JSONArray userResult = jsonObject.getJSONArray("indexList");
+            fileName = fileName + "-" + Constant.SHEET_NAME_GTCT + ".xlsx";
+            name = Constant.SHEET_NAME_GTCT;
+            double score = 0;
+            for (int i = 0; i < userResult.size(); i++) {
+                JSONObject jsonObject1 = userResult.getJSONObject(i);
+                score += Double.valueOf(jsonObject1.getString("raghtRate").replace("%",""));
+
+                Map<String, String> resultMap = new LinkedHashMap<>();
+                resultMap.put("难度等级", String.valueOf(jsonObject1.getInteger("diff")));
+                resultDBJson.put((i + 1) + "难度等级", String.valueOf(jsonObject1.getInteger("diff")));
+                resultJson.put((i + 1) + "难度等级", String.valueOf(jsonObject1.getInteger("diff")));
+                resultMap.put("正确率", String.valueOf(jsonObject1.getString("raghtRate")));
+                resultDBJson.put((i + 1) + "难度等级正确率", String.valueOf(jsonObject1.getString("raghtRate")));
+                resultJson.put((i + 1) + "难度等级正确率", String.valueOf(jsonObject1.getString("raghtRate")));
+                resultMapList.add(resultMap);
+            }
+            DecimalFormat df = new DecimalFormat("######0.00");
+            score = Double.parseDouble(df.format(score/userResult.size()));
+
+            resultJson.put("versionNo",Constant.COGNITION_RESULT_VERSION);
+            JSONArray totalScores = new JSONArray();
+            JSONObject totalScore = new JSONObject(true);
+            String desc = null;
+            totalScore.put("totalScore",score+"%");
+            if (score>90){
+                desc = "优秀等级:您具有很好的注意分配、视觉定向能力、眼动跟随和追踪物体的协调能力、专注力以及阅读能力。比如,您阅读时会很快很准,不会出现漏字或看错字,您在学习或做一件事情时很专注和沉浸其中。";
+            }else if(score>80 && score<=90){
+                desc = "较优秀等级:您具有较好的注意分配、视觉定向能力、眼动跟随和追踪物体的协调能力、专注力以及阅读能力。比如,您能较快较准地阅读,不太会出现漏字或看错字,您在学习或做一件事情时能够较专注和沉浸其中。";
+            }else if(score>65 && score<=80){
+                desc = "一般等级:您具有一般水平的注意分配、视觉定向能力、眼动跟随和追踪物体的协调能力、专注力以及阅读能力。比如,您阅读文字时不会太快太准,但也不会出现太多的漏字或看错字的情况,您学习或做一件事情的专注度和投入程度处于一般水平,能够在一定程度上沉浸在当下所做的事情上。";
+            }else if(score>50 && score<=65){
+                desc = "较差等级:您的注意分配、视觉定向能力、眼动跟随和追踪物体的协调能力、专注力以及阅读能力较差。比如,您在阅读时会较慢,且漏字和看错字情况较多,您不能很好地沉浸在学习或当下所做的事情中。";
+            }else if(score<=50){
+                desc = "极差等级:您的注意分配、视觉定向能力、眼动跟随和追踪物体的协调能力、专注力以及阅读能力很差。比如,您在阅读时会很慢,且漏字和看错字情况很多,您几乎不能专注在学习或当下所做的事情中。";
+            }
+            totalScore.put("totalScoreDesc",desc);
+            totalScores.add(totalScore);
+            resultJson.put("totalScore",totalScores);
+            JSONObject ifShow = new JSONObject(true);
+            ifShow.put("totalScore",true);
+            ifShow.put("dimensions",false);
+            ifShow.put("note",false);
+            ifShow.put("radar",false);
+            ifShow.put("table",false);
+            resultJson.put("ifShow",ifShow);
+            resultDBJson = resultJson;
+
+            datas = gtctEntitieList.toString();
+            ExcelUtil.createExcelFile(GTCTEntity.class, gtctEntities, resultMapList, new ExcelClass().contentExcel(Constant.QUEST_TYPE_GTCT), fileName, Constant.SHEET_NAME_GTCT);
+
+            //ANT测试
+        } else if (Constant.QUEST_TYPE_ANT.equals(type)) {
+            JSONArray jsonArray = jsonObject.getJSONArray("data");
+            //准确率
+            String rightRate = jsonObject.getString("rightRate");
+            //总反应时长
+            String totalResponseTime = jsonObject.getString("totalResponseTime");
+
+            fileName = fileName + "-" + Constant.SHEET_NAME_ANT + ".xlsx";
+            name = Constant.SHEET_NAME_ANT;
+            JSONObject result = jsonObject.getJSONObject("result");
+            //命中率
+            double hitRate = result.getDouble("hitRate");
+            //冲突分数
+            double conflictScore = result.getDouble("conflictScore");
+            //定向分数
+            double directionScore = result.getDouble("directionScore");
+            //警报分数
+            double warnScore = result.getDouble("warnScore");
+
+            resultJson.put("versionNo",Constant.COGNITION_RESULT_VERSION);
+            JSONArray totalScores = new JSONArray();
+            JSONObject totalScore = new JSONObject(true);
+            String desc = null;
+            totalScore.put("totalScore",hitRate);
+
+            if (hitRate>0.8){
+                desc = "优秀等级:您具有很好的注意警觉、定向和执行控制能力,即您能很好地获得并维持对某个信息的警觉状态、能很好且及时有效地从外部信息进行选择、以及能很好地解决反应中的冲突。比如举个例子,上课时您能够全过程跟着老师的思路认真听讲,并能够抓住老师所讲的重点内容,且能够很好地排除课堂上的其他干扰。";
+            }else if(hitRate>0.75 && hitRate<=0.8){
+                desc = "较优秀等级:您具有较好的注意警觉、定向和执行控制能力,即您能较好地获得并维持对某个信息的警觉状态、能较好且较及时有效地从外部信息进行选择、以及能较好地解决反应中的冲突。比如举个例子,上课时您能够一定程度上较认真地跟着老师的思路听讲,并能够一定程度上抓住老师所讲的重点内容,且能够较好地排除课堂上的其他干扰。";
+            }else if(hitRate>0.7 && hitRate<=0.75){
+                desc = "一般等级:您具有一般水平的注意警觉、定向和执行控制能力,即您不能很好但可以较好地获得并维持对某个信息的警觉状态、不能很好很及时有效但能较好较及时有效地从外部信息进行选择、以及不能很好但能较好地解决反应中的冲突。比如,上课听讲时您只能一定程度上跟着老师的思路听讲,抓住老师所讲的部分重点内容,能够排除一部分课堂上的其他干扰。";
+            }else if(hitRate>0.65 && hitRate<=0.7){
+                desc = "较差等级:您的注意警觉、定向和执行控制能力较差,即您不能很好地获得并维持对某个信息的警觉状态、不能很好且及时有效地从外部信息进行选择、以及不能很好地解决反应中的冲突。比如,上课听讲时您不能跟着老师的思路认真听讲,不能抓住老师所讲的重点内容,不能够排除课堂上的其他干扰。";
+            }else if(hitRate<=0.65){
+                desc = "极差等级:您的注意警觉、定向和执行控制能力很差,即您完全不能很好地获得并维持对某个信息的警觉状态、完全不能很好且及时有效地从外部信息进行选择、以及完全不能很好地解决反应中的冲突。比如,上课听讲时您几乎不能跟着老师的思路听讲,几乎不能抓住老师所讲的重点内容,几乎不能够排除课堂上的其他干扰。";
+            }
+            totalScore.put("totalScoreDesc",desc);
+            totalScores.add(totalScore);
+            resultJson.put("totalScore",totalScores);
+            //维度得分及解读模块
+            JSONArray dimensions = new JSONArray();
+            JSONObject scoreA = new JSONObject(true);
+            scoreA.put("name","冲突分数");
+            scoreA.put("score",String.valueOf(conflictScore));
+            String DescribeA = null;
+            if (conflictScore>50000){
+                DescribeA = "极差等级:您的注意执行控制能力很差,您几乎不能够很好地处理对外界信息进行反应时的冲突。比如,当您在写作业或看书时,隔壁房间有人在唱歌,此时您一定会受到噪音干扰,也几乎不能安心学习。";
+            }else if(conflictScore>40000 && conflictScore<=50000){
+                DescribeA = "较差等级:您的注意执行控制能力较差,您不能够很好地处理对外界信息进行反应时的冲突。比如,当您在写作业或看书时,隔壁房间有人在唱歌,此时您会受到噪音干扰,也不能安心学习。";
+            }else if(conflictScore>30000 && conflictScore<=40000){
+                DescribeA = "一般等级:您具有一般水平的注意执行控制能力,您能够较好但不能很好地处理对外界信息进行反应时的冲突。比如,当您在写作业或看书时,隔壁房间有人在唱歌,此时您会一定程度上受噪音干扰,但也能安心学习。";
+            }else if(conflictScore>20000 && conflictScore<=30000){
+                DescribeA = "较优秀等级:您具有较好的注意执行控制能力,您能够较好地处理对外界信息进行反应时的冲突。比如,当您在写作业或看书时,隔壁房间有人在唱歌,此时您能够较好地安心学习,一定程度上不受噪音干扰。";
+            }else if(conflictScore<=20000){
+                DescribeA = "优秀等级:您具有很好的注意执行控制能力,您能够很好地处理对外界信息进行反应时的冲突。比如,当您在写作业或看书时,隔壁房间有人在唱歌,此时您能够很好地安心学习,不受噪音干扰。";
+            }
+            scoreA.put("Describe",DescribeA);
+            scoreA.put("maximum","无");
+            scoreA.put("groupName","第一组");
+            dimensions.add(scoreA);
+            JSONObject scoreB = new JSONObject(true);
+            scoreB.put("name","定向分数");
+            scoreB.put("score",String.valueOf(directionScore));
+            String DescribeB = null;
+            if (conflictScore> -2000){
+                DescribeB = "优秀等级:您具有很好的注意定向能力,能够很好地发觉情景中进入感觉通道的新异刺激并做出反应。比如,在开车时,如果前方出现一条小狗,您能够很快发觉并及时做出刹车反应。";
+            }else if(conflictScore> -3000 && conflictScore<=-2000){
+                DescribeB = "较优秀等级:您具有较好的注意定向能力,能够较好地发觉情景中进入感觉通道的新异刺激并做出反应。比如,在开车时,如果前方出现一条小狗,您能够较快发觉并做出刹车反应。";
+            }else if(conflictScore> -4000 && conflictScore<=-3000){
+                DescribeB = "一般等级:您具有一般水平的注意定向能力,您不能够很好但能较好地发觉情景中进入感觉通道的新异刺激并做出反应。比如,在开车时,如果前方出现一条小狗,您不能够很快但也能发觉并做出刹车反应。";
+            }else if(conflictScore> -5000 && conflictScore<=-4000){
+                DescribeB = "较差等级:您的注意定向能力较差,不能够很好地发觉情景中进入感觉通道的新异刺激并做出反应。比如,在开车时,如果前方出现一条小狗,您不能够很快发觉并做出刹车反应。";
+            }else if(conflictScore<=-5000){
+                DescribeB = "极差等级:您的注意定向能力很差,几乎不能很好地发觉情景中进入感觉通道的新异刺激并做出反应。比如,在开车时,如果前方出现一条小狗,您几乎不能够发觉并做出刹车反应。";
+            }
+            scoreB.put("Describe",DescribeB);
+            scoreB.put("maximum","无");
+            scoreB.put("groupName","第一组");
+            dimensions.add(scoreB);
+            resultJson.put("dimensions", dimensions);
+            JSONObject scoreC = new JSONObject(true);
+            scoreC.put("name","警报分数");
+            scoreC.put("score",String.valueOf(warnScore));
+            String DescribeC = null;
+            if (conflictScore> 4000){
+                DescribeC = "极差等级:您的注意警觉能力很差,您几乎不能保持对某一刺激的警觉投入状态。比如,在上课时,您在上课的40分钟内不能跟着老师的思路听讲,而且中间很容易走神或疲惫。";
+            }else if(conflictScore> 3000 && conflictScore<=4000){
+                DescribeC = "较差等级:您的注意警觉能力较差,您不能够很好地保持对某一刺激的警觉投入状态。比如,在上课时,您在上课的40分钟内并不能很好地跟着老师的思路听讲,而且中间会一定程度地走神或疲惫。";
+            }else if(conflictScore> 2000 && conflictScore<=3000){
+                DescribeC = "一般等级:您具有一般水平的注意警觉能力,您并不能够很好但能较好地保持对某一刺激的警觉投入状态。比如,在上课时,您在上课的40分钟内并不能完全很好地跟着老师的思路听讲但能一定程度上跟着老师的思路投入课堂,而且中间会略微走神或疲惫。";
+            }else if(conflictScore> 1000 && conflictScore<=2000){
+                DescribeC = "较优秀等级:您具有较好的注意警觉能力,您能够较好地保持对某一刺激的警觉投入状态。比如,在上课时,您能在上课的40分钟内较好地跟着老师的思路认真听讲,中间很少走神或疲惫。";
+            }else if(conflictScore<=1000){
+                DescribeC = "优秀等级:您具有很好的注意警觉能力,您能够很好地保持对某一刺激的警觉投入状态。比如,在上课时,您能在上课的40分钟内很好地跟着老师的思路认真听讲,而不会中间走神或疲惫。";
+            }
+            scoreC.put("Describe",DescribeC);
+            scoreC.put("maximum","无");
+            scoreC.put("groupName","第一组");
+            dimensions.add(scoreC);
+            resultJson.put("dimensions", dimensions);
+
+
+            JSONObject ifShow = new JSONObject(true);
+            ifShow.put("totalScore",true);
+            ifShow.put("dimensions",true);
+            ifShow.put("note",false);
+            ifShow.put("radar",false);
+            ifShow.put("table",false);
+            resultJson.put("ifShow",ifShow);
+            resultDBJson = resultJson;
+
+
+
+            Map<String, String> resultMap = new LinkedHashMap<>();
+            resultMap.put("准确率", rightRate);
+            resultDBJson.put("准确率", rightRate);
+            resultJson.put("rightRate", rightRate);
+            resultMap.put("总反应时长", totalResponseTime);
+            resultDBJson.put("总反应时长", totalResponseTime);
+            resultJson.put("totalResponseTime", totalResponseTime);
+            resultMapList.add(resultMap);
+
+            Map<String, String> resultMap1 = new LinkedHashMap<>();
+            resultMap1.put("总命中次数", String.valueOf(result.get("hitsAll")));
+            resultDBJson.put("总命中次数", String.valueOf(result.get("hitsAll")));
+            resultJson.put("总命中次数", String.valueOf(result.get("hitsAll")));
+            resultMap1.put("一致性命中次数", String.valueOf(result.get("hitscongruent")));
+            resultDBJson.put("一致性命中次数", String.valueOf(result.get("hitscongruent")));
+            resultJson.put("一致性命中次数", String.valueOf(result.get("hitscongruent")));
+            resultMap1.put("不一致性命中次数", String.valueOf(result.get("hitsincongruent")));
+            resultDBJson.put("不一致性命中次数", String.valueOf(result.get("hitsincongruent")));
+            resultJson.put("不一致性命中次数", String.valueOf(result.get("hitsincongruent")));
+            resultMap1.put("NoCue命中次数", String.valueOf(result.get("hitsNoCue")));
+            resultDBJson.put("NoCue命中次数", String.valueOf(result.get("hitsNoCue")));
+            resultJson.put("NoCue命中次数", String.valueOf(result.get("hitsNoCue")));
+            resultMap1.put("NeutralCue命中次数", String.valueOf(result.get("hitsNeutralCue")));
+            resultDBJson.put("NeutralCue命中次数", String.valueOf(result.get("hitsNeutralCue")));
+            resultJson.put("NeutralCue命中次数", String.valueOf(result.get("hitsNeutralCue")));
+            resultMap1.put("SpatialCue命中次数", String.valueOf(result.get("hitsSpatialCue")));
+            resultDBJson.put("SpatialCue命中次数", String.valueOf(result.get("hitsSpatialCue")));
+            resultJson.put("SpatialCue命中次数", String.valueOf(result.get("hitsSpatialCue")));
+            resultMap1.put("命中率", String.valueOf(result.get("hitRate")));
+            resultDBJson.put("命中率", String.valueOf(result.get("hitRate")));
+            resultJson.put("命中率", String.valueOf(result.get("hitRate")));
+            resultMap1.put("一致性命中率", String.valueOf(result.get("congruentHitRate")));
+            resultDBJson.put("一致性命中率", String.valueOf(result.get("congruentHitRate")));
+            resultJson.put("一致性命中率", String.valueOf(result.get("congruentHitRate")));
+            resultMap1.put("不一致性命中率", String.valueOf(result.get("incongruentHitRate")));
+            resultDBJson.put("不一致性命中率", String.valueOf(result.get("incongruentHitRate")));
+            resultJson.put("不一致性命中率", String.valueOf(result.get("incongruentHitRate")));
+            resultMap1.put("NoCue命中率", String.valueOf(result.get("noCueHitRate")));
+            resultDBJson.put("NoCue命中率", String.valueOf(result.get("noCueHitRate")));
+            resultJson.put("NoCue命中率", String.valueOf(result.get("noCueHitRate")));
+            resultMap1.put("NeutralCue命中率", String.valueOf(result.get("neutralCueHitRate")));
+            resultDBJson.put("NeutralCue命中率", String.valueOf(result.get("neutralCueHitRate")));
+            resultJson.put("NeutralCue命中率", String.valueOf(result.get("neutralCueHitRate")));
+            resultMap1.put("SpatialCue命中率", String.valueOf(result.get("spatialCueHitRate")));
+            resultDBJson.put("SpatialCue命中率", String.valueOf(result.get("spatialCueHitRate")));
+            resultJson.put("SpatialCue命中率", String.valueOf(result.get("spatialCueHitRate")));
+            resultMap1.put("反应时", String.valueOf(result.get("responseTimeAll")));
+            resultDBJson.put("反应时", String.valueOf(result.get("responseTimeAll")));
+            resultJson.put("反应时", String.valueOf(result.get("responseTimeAll")));
+            resultMap1.put("一致性反应时", String.valueOf(result.get("responseTimeCongruent")));
+            resultDBJson.put("一致性反应时", String.valueOf(result.get("responseTimeCongruent")));
+            resultJson.put("一致性反应时", String.valueOf(result.get("responseTimeCongruent")));
+            resultMap1.put("不一致性反应时", String.valueOf(result.get("responseTimeIncongruent")));
+            resultDBJson.put("不一致性反应时", String.valueOf(result.get("responseTimeIncongruent")));
+            resultJson.put("不一致性反应时", String.valueOf(result.get("responseTimeIncongruent")));
+            resultMap1.put("NoCue反应时", String.valueOf(result.get("responseTimeNoCue")));
+            resultDBJson.put("NoCue反应时", String.valueOf(result.get("responseTimeNoCue")));
+            resultJson.put("NoCue反应时", String.valueOf(result.get("responseTimeNoCue")));
+            resultMap1.put("NeutralCue反应时", String.valueOf(result.get("responseTimeNeutralCue")));
+            resultDBJson.put("NeutralCue反应时", String.valueOf(result.get("responseTimeNeutralCue")));
+            resultJson.put("NeutralCue反应时", String.valueOf(result.get("responseTimeNeutralCue")));
+            resultMap1.put("SpatialCue反应时", String.valueOf(result.get("responseTimeSpatialCue")));
+            resultDBJson.put("SpatialCue反应时", String.valueOf(result.get("responseTimeSpatialCue")));
+            resultJson.put("SpatialCue反应时", String.valueOf(result.get("responseTimeSpatialCue")));
+            resultMap1.put("警报分数", String.valueOf(result.get("warnScore")));
+            resultDBJson.put("警报分数", String.valueOf(result.get("warnScore")));
+            resultJson.put("警报分数", String.valueOf(result.get("warnScore")));
+            resultMap1.put("定向分数", String.valueOf(result.get("directionScore")));
+            resultDBJson.put("定向分数", String.valueOf(result.get("directionScore")));
+            resultJson.put("定向分数", String.valueOf(result.get("directionScore")));
+            resultMap1.put("冲突分数", String.valueOf(result.get("conflictScore")));
+            resultDBJson.put("冲突分数", String.valueOf(result.get("conflictScore")));
+            resultJson.put("冲突分数", String.valueOf(result.get("conflictScore")));
+            resultMapList.add(resultMap1);
+            datas = jsonArray.toString();
+            ExcelUtil.createExcelFile(ANTEntity.class, jsonArray.toJavaList(ANTEntity.class), resultMapList, new ExcelClass().contentExcel(Constant.QUEST_TYPE_ANT), fileName, Constant.SHEET_NAME_ANT);
+
+            //ANT测试(亚太)
+        } else if (Constant.QUEST_TYPE_ANT_YATAI.equals(type)) {
+            JSONArray jsonArray = jsonObject.getJSONArray("data");
+            //准确率
+            String rightRate = jsonObject.getString("rightRate");
+            //总反应时长
+            String totalResponseTime = jsonObject.getString("totalResponseTime");
+
+            fileName = fileName + "-" + Constant.SHEET_NAME_ANT_YATAI + ".xlsx";
+            name = Constant.SHEET_NAME_ANT_YATAI;
+
+            Map<String, String> resultMap = new LinkedHashMap<>();
+            resultMap.put("准确率", rightRate);
+            resultDBJson.put("准确率", rightRate);
+            resultJson.put("rightRate", rightRate);
+            resultMap.put("总反应时长", totalResponseTime);
+            resultDBJson.put("总反应时长", totalResponseTime);
+            resultJson.put("totalResponseTime", totalResponseTime);
+            resultMapList.add(resultMap);
+
+            JSONObject result = jsonObject.getJSONObject("result");
+            Map<String, String> resultMap1 = new LinkedHashMap<>();
+            resultMap1.put("总命中次数", String.valueOf(result.get("hitsAll")));
+            resultDBJson.put("总命中次数", String.valueOf(result.get("hitsAll")));
+            resultJson.put("总命中次数", String.valueOf(result.get("hitsAll")));
+            resultMap1.put("一致性命中次数", String.valueOf(result.get("hitscongruent")));
+            resultDBJson.put("一致性命中次数", String.valueOf(result.get("hitscongruent")));
+            resultJson.put("一致性命中次数", String.valueOf(result.get("hitscongruent")));
+            resultMap1.put("不一致性命中次数", String.valueOf(result.get("hitsincongruent")));
+            resultDBJson.put("不一致性命中次数", String.valueOf(result.get("hitsincongruent")));
+            resultJson.put("不一致性命中次数", String.valueOf(result.get("hitsincongruent")));
+            resultMap1.put("NoCue命中次数", String.valueOf(result.get("hitsNoCue")));
+            resultDBJson.put("NoCue命中次数", String.valueOf(result.get("hitsNoCue")));
+            resultJson.put("NoCue命中次数", String.valueOf(result.get("hitsNoCue")));
+            resultMap1.put("NeutralCue命中次数", String.valueOf(result.get("hitsNeutralCue")));
+            resultDBJson.put("NeutralCue命中次数", String.valueOf(result.get("hitsNeutralCue")));
+            resultJson.put("NeutralCue命中次数", String.valueOf(result.get("hitsNeutralCue")));
+            resultMap1.put("SpatialCue命中次数", String.valueOf(result.get("hitsSpatialCue")));
+            resultDBJson.put("SpatialCue命中次数", String.valueOf(result.get("hitsSpatialCue")));
+            resultJson.put("SpatialCue命中次数", String.valueOf(result.get("hitsSpatialCue")));
+            resultMap1.put("命中率", String.valueOf(result.get("hitRate")));
+            resultDBJson.put("命中率", String.valueOf(result.get("hitRate")));
+            resultJson.put("命中率", String.valueOf(result.get("hitRate")));
+            resultMap1.put("一致性命中率", String.valueOf(result.get("congruentHitRate")));
+            resultDBJson.put("一致性命中率", String.valueOf(result.get("congruentHitRate")));
+            resultJson.put("一致性命中率", String.valueOf(result.get("congruentHitRate")));
+            resultMap1.put("不一致性命中率", String.valueOf(result.get("incongruentHitRate")));
+            resultDBJson.put("不一致性命中率", String.valueOf(result.get("incongruentHitRate")));
+            resultJson.put("不一致性命中率", String.valueOf(result.get("incongruentHitRate")));
+            resultMap1.put("NoCue命中率", String.valueOf(result.get("noCueHitRate")));
+            resultDBJson.put("NoCue命中率", String.valueOf(result.get("noCueHitRate")));
+            resultJson.put("NoCue命中率", String.valueOf(result.get("noCueHitRate")));
+            resultMap1.put("NeutralCue命中率", String.valueOf(result.get("neutralCueHitRate")));
+            resultDBJson.put("NeutralCue命中率", String.valueOf(result.get("neutralCueHitRate")));
+            resultJson.put("NeutralCue命中率", String.valueOf(result.get("neutralCueHitRate")));
+            resultMap1.put("SpatialCue命中率", String.valueOf(result.get("spatialCueHitRate")));
+            resultDBJson.put("SpatialCue命中率", String.valueOf(result.get("spatialCueHitRate")));
+            resultJson.put("SpatialCue命中率", String.valueOf(result.get("spatialCueHitRate")));
+            resultMap1.put("反应时", String.valueOf(result.get("responseTimeAll")));
+            resultDBJson.put("反应时", String.valueOf(result.get("responseTimeAll")));
+            resultJson.put("反应时", String.valueOf(result.get("responseTimeAll")));
+            resultMap1.put("一致性反应时", String.valueOf(result.get("responseTimeCongruent")));
+            resultDBJson.put("一致性反应时", String.valueOf(result.get("responseTimeCongruent")));
+            resultJson.put("一致性反应时", String.valueOf(result.get("responseTimeCongruent")));
+            resultMap1.put("不一致性反应时", String.valueOf(result.get("responseTimeIncongruent")));
+            resultDBJson.put("不一致性反应时", String.valueOf(result.get("responseTimeIncongruent")));
+            resultJson.put("不一致性反应时", String.valueOf(result.get("responseTimeIncongruent")));
+            resultMap1.put("NoCue反应时", String.valueOf(result.get("responseTimeNoCue")));
+            resultDBJson.put("NoCue反应时", String.valueOf(result.get("responseTimeNoCue")));
+            resultJson.put("NoCue反应时", String.valueOf(result.get("responseTimeNoCue")));
+            resultMap1.put("NeutralCue反应时", String.valueOf(result.get("responseTimeNeutralCue")));
+            resultDBJson.put("NeutralCue反应时", String.valueOf(result.get("responseTimeNeutralCue")));
+            resultJson.put("NeutralCue反应时", String.valueOf(result.get("responseTimeNeutralCue")));
+            resultMap1.put("SpatialCue反应时", String.valueOf(result.get("responseTimeSpatialCue")));
+            resultDBJson.put("SpatialCue反应时", String.valueOf(result.get("responseTimeSpatialCue")));
+            resultJson.put("SpatialCue反应时", String.valueOf(result.get("responseTimeSpatialCue")));
+            resultMap1.put("警报分数", String.valueOf(result.get("warnScore")));
+            resultDBJson.put("警报分数", String.valueOf(result.get("warnScore")));
+            resultJson.put("警报分数", String.valueOf(result.get("warnScore")));
+            resultMap1.put("定向分数", String.valueOf(result.get("directionScore")));
+            resultDBJson.put("定向分数", String.valueOf(result.get("directionScore")));
+            resultJson.put("定向分数", String.valueOf(result.get("directionScore")));
+            resultMap1.put("冲突分数", String.valueOf(result.get("conflictScore")));
+            resultDBJson.put("冲突分数", String.valueOf(result.get("conflictScore")));
+            resultJson.put("冲突分数", String.valueOf(result.get("conflictScore")));
+            resultMapList.add(resultMap1);
+            datas = jsonArray.toString();
+            ExcelUtil.createExcelFile(ANTEntity.class, jsonArray.toJavaList(ANTEntity.class), resultMapList, new ExcelClass().contentExcel(Constant.QUEST_TYPE_ANT), fileName, Constant.SHEET_NAME_ANT_YATAI);
+
+            //ANT儿童版
+        } else if (Constant.QUEST_TYPE_ANT_FISH.equals(type)) {
+            JSONArray jsonArray = jsonObject.getJSONArray("data");
+            //准确率
+            String rightRate = jsonObject.getString("rightRate");
+            //总反应时长
+            String totalResponseTime = jsonObject.getString("totalResponseTime");
+
+            fileName = fileName + "-" + Constant.SHEET_NAME_ANT_FISH + ".xlsx";
+            name = Constant.SHEET_NAME_ANT_FISH;
+
+            Map<String, String> resultMap = new LinkedHashMap<>();
+            resultMap.put("准确率", rightRate);
+            resultDBJson.put("准确率", rightRate);
+            resultJson.put("rightRate", rightRate);
+            resultMap.put("总反应时长", totalResponseTime);
+            resultDBJson.put("总反应时长", totalResponseTime);
+            resultJson.put("totalResponseTime", totalResponseTime);
+            resultMapList.add(resultMap);
+
+            JSONObject result = jsonObject.getJSONObject("result");
+            Map<String, String> resultMap1 = new LinkedHashMap<>();
+            resultMap1.put("总命中次数", String.valueOf(result.get("hitsAll")));
+            resultDBJson.put("总命中次数", String.valueOf(result.get("hitsAll")));
+            resultJson.put("总命中次数", String.valueOf(result.get("hitsAll")));
+            resultMap1.put("一致性命中次数", String.valueOf(result.get("hitscongruent")));
+            resultDBJson.put("一致性命中次数", String.valueOf(result.get("hitscongruent")));
+            resultJson.put("一致性命中次数", String.valueOf(result.get("hitscongruent")));
+            resultMap1.put("不一致性命中次数", String.valueOf(result.get("hitsincongruent")));
+            resultDBJson.put("不一致性命中次数", String.valueOf(result.get("hitsincongruent")));
+            resultJson.put("不一致性命中次数", String.valueOf(result.get("hitsincongruent")));
+            resultMap1.put("NoCue命中次数", String.valueOf(result.get("hitsNoCue")));
+            resultDBJson.put("NoCue命中次数", String.valueOf(result.get("hitsNoCue")));
+            resultJson.put("NoCue命中次数", String.valueOf(result.get("hitsNoCue")));
+            resultMap1.put("NeutralCue命中次数", String.valueOf(result.get("hitsNeutralCue")));
+            resultDBJson.put("NeutralCue命中次数", String.valueOf(result.get("hitsNeutralCue")));
+            resultJson.put("NeutralCue命中次数", String.valueOf(result.get("hitsNeutralCue")));
+            resultMap1.put("SpatialCue命中次数", String.valueOf(result.get("hitsSpatialCue")));
+            resultDBJson.put("SpatialCue命中次数", String.valueOf(result.get("hitsSpatialCue")));
+            resultJson.put("SpatialCue命中次数", String.valueOf(result.get("hitsSpatialCue")));
+            resultMap1.put("命中率", String.valueOf(result.get("hitRate")));
+            resultDBJson.put("命中率", String.valueOf(result.get("hitRate")));
+            resultJson.put("命中率", String.valueOf(result.get("hitRate")));
+            resultMap1.put("一致性命中率", String.valueOf(result.get("congruentHitRate")));
+            resultDBJson.put("一致性命中率", String.valueOf(result.get("congruentHitRate")));
+            resultJson.put("一致性命中率", String.valueOf(result.get("congruentHitRate")));
+            resultMap1.put("不一致性命中率", String.valueOf(result.get("incongruentHitRate")));
+            resultDBJson.put("不一致性命中率", String.valueOf(result.get("incongruentHitRate")));
+            resultJson.put("不一致性命中率", String.valueOf(result.get("incongruentHitRate")));
+            resultMap1.put("NoCue命中率", String.valueOf(result.get("noCueHitRate")));
+            resultDBJson.put("NoCue命中率", String.valueOf(result.get("noCueHitRate")));
+            resultJson.put("NoCue命中率", String.valueOf(result.get("noCueHitRate")));
+            resultMap1.put("NeutralCue命中率", String.valueOf(result.get("neutralCueHitRate")));
+            resultDBJson.put("NeutralCue命中率", String.valueOf(result.get("neutralCueHitRate")));
+            resultJson.put("NeutralCue命中率", String.valueOf(result.get("neutralCueHitRate")));
+            resultMap1.put("SpatialCue命中率", String.valueOf(result.get("spatialCueHitRate")));
+            resultDBJson.put("SpatialCue命中率", String.valueOf(result.get("spatialCueHitRate")));
+            resultJson.put("SpatialCue命中率", String.valueOf(result.get("spatialCueHitRate")));
+            resultMap1.put("反应时", String.valueOf(result.get("responseTimeAll")));
+            resultDBJson.put("反应时", String.valueOf(result.get("responseTimeAll")));
+            resultJson.put("反应时", String.valueOf(result.get("responseTimeAll")));
+            resultMap1.put("一致性反应时", String.valueOf(result.get("responseTimeCongruent")));
+            resultDBJson.put("一致性反应时", String.valueOf(result.get("responseTimeCongruent")));
+            resultJson.put("一致性反应时", String.valueOf(result.get("responseTimeCongruent")));
+            resultMap1.put("不一致性反应时", String.valueOf(result.get("responseTimeIncongruent")));
+            resultDBJson.put("不一致性反应时", String.valueOf(result.get("responseTimeIncongruent")));
+            resultJson.put("不一致性反应时", String.valueOf(result.get("responseTimeIncongruent")));
+            resultMap1.put("NoCue反应时", String.valueOf(result.get("responseTimeNoCue")));
+            resultDBJson.put("NoCue反应时", String.valueOf(result.get("responseTimeNoCue")));
+            resultJson.put("NoCue反应时", String.valueOf(result.get("responseTimeNoCue")));
+            resultMap1.put("NeutralCue反应时", String.valueOf(result.get("responseTimeNeutralCue")));
+            resultDBJson.put("NeutralCue反应时", String.valueOf(result.get("responseTimeNeutralCue")));
+            resultJson.put("NeutralCue反应时", String.valueOf(result.get("responseTimeNeutralCue")));
+            resultMap1.put("SpatialCue反应时", String.valueOf(result.get("responseTimeSpatialCue")));
+            resultDBJson.put("SpatialCue反应时", String.valueOf(result.get("responseTimeSpatialCue")));
+            resultJson.put("SpatialCue反应时", String.valueOf(result.get("responseTimeSpatialCue")));
+            resultMap1.put("警报分数", String.valueOf(result.get("warnScore")));
+            resultDBJson.put("警报分数", String.valueOf(result.get("warnScore")));
+            resultJson.put("警报分数", String.valueOf(result.get("warnScore")));
+            resultMap1.put("定向分数", String.valueOf(result.get("directionScore")));
+            resultDBJson.put("定向分数", String.valueOf(result.get("directionScore")));
+            resultJson.put("定向分数", String.valueOf(result.get("directionScore")));
+            resultMap1.put("冲突分数", String.valueOf(result.get("conflictScore")));
+            resultDBJson.put("冲突分数", String.valueOf(result.get("conflictScore")));
+            resultJson.put("冲突分数", String.valueOf(result.get("conflictScore")));
+            resultMapList.add(resultMap1);
+            datas = jsonArray.toString();
+            ExcelUtil.createExcelFile(ANTEntity.class, jsonArray.toJavaList(ANTEntity.class), resultMapList, new ExcelClass().contentExcel(Constant.QUEST_TYPE_ANT), fileName, Constant.SHEET_NAME_ANT_FISH);
+
+            //游戏5
+        } else if (Constant.QUEST_TYPE_ANT_FISH_YATAI.equals(type)) {
+            JSONArray jsonArray = jsonObject.getJSONArray("data");
+            //准确率
+            String rightRate = jsonObject.getString("rightRate");
+            //总反应时长
+            String totalResponseTime = jsonObject.getString("totalResponseTime");
+
+            fileName = fileName + "-" + Constant.SHEET_NAME_ANT_FISH_YATAI + ".xlsx";
+            name = Constant.SHEET_NAME_ANT_FISH_YATAI;
+
+            Map<String, String> resultMap = new LinkedHashMap<>();
+            resultMap.put("准确率", rightRate);
+            resultDBJson.put("准确率", rightRate);
+            resultJson.put("rightRate", rightRate);
+            resultMap.put("总反应时长", totalResponseTime);
+            resultDBJson.put("总反应时长", totalResponseTime);
+            resultJson.put("totalResponseTime", totalResponseTime);
+            resultMapList.add(resultMap);
+
+            JSONObject result = jsonObject.getJSONObject("result");
+            Map<String, String> resultMap1 = new LinkedHashMap<>();
+            resultMap1.put("总命中次数", String.valueOf(result.get("hitsAll")));
+            resultDBJson.put("总命中次数", String.valueOf(result.get("hitsAll")));
+            resultJson.put("总命中次数", String.valueOf(result.get("hitsAll")));
+            resultMap1.put("一致性命中次数", String.valueOf(result.get("hitscongruent")));
+            resultDBJson.put("一致性命中次数", String.valueOf(result.get("hitscongruent")));
+            resultJson.put("一致性命中次数", String.valueOf(result.get("hitscongruent")));
+            resultMap1.put("不一致性命中次数", String.valueOf(result.get("hitsincongruent")));
+            resultDBJson.put("不一致性命中次数", String.valueOf(result.get("hitsincongruent")));
+            resultJson.put("不一致性命中次数", String.valueOf(result.get("hitsincongruent")));
+            resultMap1.put("NoCue命中次数", String.valueOf(result.get("hitsNoCue")));
+            resultDBJson.put("NoCue命中次数", String.valueOf(result.get("hitsNoCue")));
+            resultJson.put("NoCue命中次数", String.valueOf(result.get("hitsNoCue")));
+            resultMap1.put("NeutralCue命中次数", String.valueOf(result.get("hitsNeutralCue")));
+            resultDBJson.put("NeutralCue命中次数", String.valueOf(result.get("hitsNeutralCue")));
+            resultJson.put("NeutralCue命中次数", String.valueOf(result.get("hitsNeutralCue")));
+            resultMap1.put("SpatialCue命中次数", String.valueOf(result.get("hitsSpatialCue")));
+            resultDBJson.put("SpatialCue命中次数", String.valueOf(result.get("hitsSpatialCue")));
+            resultJson.put("SpatialCue命中次数", String.valueOf(result.get("hitsSpatialCue")));
+            resultMap1.put("命中率", String.valueOf(result.get("hitRate")));
+            resultDBJson.put("命中率", String.valueOf(result.get("hitRate")));
+            resultJson.put("命中率", String.valueOf(result.get("hitRate")));
+            resultMap1.put("一致性命中率", String.valueOf(result.get("congruentHitRate")));
+            resultDBJson.put("一致性命中率", String.valueOf(result.get("congruentHitRate")));
+            resultJson.put("一致性命中率", String.valueOf(result.get("congruentHitRate")));
+            resultMap1.put("不一致性命中率", String.valueOf(result.get("incongruentHitRate")));
+            resultDBJson.put("不一致性命中率", String.valueOf(result.get("incongruentHitRate")));
+            resultJson.put("不一致性命中率", String.valueOf(result.get("incongruentHitRate")));
+            resultMap1.put("NoCue命中率", String.valueOf(result.get("noCueHitRate")));
+            resultDBJson.put("NoCue命中率", String.valueOf(result.get("noCueHitRate")));
+            resultJson.put("NoCue命中率", String.valueOf(result.get("noCueHitRate")));
+            resultMap1.put("NeutralCue命中率", String.valueOf(result.get("neutralCueHitRate")));
+            resultDBJson.put("NeutralCue命中率", String.valueOf(result.get("neutralCueHitRate")));
+            resultJson.put("NeutralCue命中率", String.valueOf(result.get("neutralCueHitRate")));
+            resultMap1.put("SpatialCue命中率", String.valueOf(result.get("spatialCueHitRate")));
+            resultDBJson.put("SpatialCue命中率", String.valueOf(result.get("spatialCueHitRate")));
+            resultJson.put("SpatialCue命中率", String.valueOf(result.get("spatialCueHitRate")));
+            resultMap1.put("反应时", String.valueOf(result.get("responseTimeAll")));
+            resultDBJson.put("反应时", String.valueOf(result.get("responseTimeAll")));
+            resultJson.put("反应时", String.valueOf(result.get("responseTimeAll")));
+            resultMap1.put("一致性反应时", String.valueOf(result.get("responseTimeCongruent")));
+            resultDBJson.put("一致性反应时", String.valueOf(result.get("responseTimeCongruent")));
+            resultJson.put("一致性反应时", String.valueOf(result.get("responseTimeCongruent")));
+            resultMap1.put("不一致性反应时", String.valueOf(result.get("responseTimeIncongruent")));
+            resultDBJson.put("不一致性反应时", String.valueOf(result.get("responseTimeIncongruent")));
+            resultJson.put("不一致性反应时", String.valueOf(result.get("responseTimeIncongruent")));
+            resultMap1.put("NoCue反应时", String.valueOf(result.get("responseTimeNoCue")));
+            resultDBJson.put("NoCue反应时", String.valueOf(result.get("responseTimeNoCue")));
+            resultJson.put("NoCue反应时", String.valueOf(result.get("responseTimeNoCue")));
+            resultMap1.put("NeutralCue反应时", String.valueOf(result.get("responseTimeNeutralCue")));
+            resultDBJson.put("NeutralCue反应时", String.valueOf(result.get("responseTimeNeutralCue")));
+            resultJson.put("NeutralCue反应时", String.valueOf(result.get("responseTimeNeutralCue")));
+            resultMap1.put("SpatialCue反应时", String.valueOf(result.get("responseTimeSpatialCue")));
+            resultDBJson.put("SpatialCue反应时", String.valueOf(result.get("responseTimeSpatialCue")));
+            resultJson.put("SpatialCue反应时", String.valueOf(result.get("responseTimeSpatialCue")));
+            resultMap1.put("警报分数", String.valueOf(result.get("warnScore")));
+            resultDBJson.put("警报分数", String.valueOf(result.get("warnScore")));
+            resultJson.put("警报分数", String.valueOf(result.get("warnScore")));
+            resultMap1.put("定向分数", String.valueOf(result.get("directionScore")));
+            resultDBJson.put("定向分数", String.valueOf(result.get("directionScore")));
+            resultJson.put("定向分数", String.valueOf(result.get("directionScore")));
+            resultMap1.put("冲突分数", String.valueOf(result.get("conflictScore")));
+            resultDBJson.put("冲突分数", String.valueOf(result.get("conflictScore")));
+            resultJson.put("冲突分数", String.valueOf(result.get("conflictScore")));
+            resultMapList.add(resultMap1);
+            datas = jsonArray.toString();
+            ExcelUtil.createExcelFile(ANTEntity.class, jsonArray.toJavaList(ANTEntity.class), resultMapList, new ExcelClass().contentExcel(Constant.QUEST_TYPE_ANT), fileName, Constant.SHEET_NAME_ANT_FISH_YATAI);
+
+            //形状知觉测试
+        } else if (Constant.QUEST_TYPE_SHAPE.equals(type)) {
+            String userScore = jsonObject.getString("userScore");
+            JSONArray jsonArray = jsonObject.getJSONArray("userResponseRecords");
+            List<SHAPE2Entity> shape2Entities = jsonArray.toJavaList(SHAPE2Entity.class);
+            fileName = fileName + "-" + Constant.SHEET_NAME_SHAPE + ".xlsx";
+            name = Constant.SHEET_NAME_SHAPE;
+
+            double score = 0;
+            score = Double.valueOf(userScore.replace("%",""));
+            resultJson.put("versionNo",Constant.COGNITION_RESULT_VERSION);
+            JSONArray totalScores = new JSONArray();
+            JSONObject totalScore = new JSONObject(true);
+            String desc = null;
+            totalScore.put("totalScore",score+"%");
+            if (score>90){
+                desc = "优秀等级:在测验中的图片,图片中“鸭蛋”的颜色、明度与邻近的部分都接近相同,您仍然能够以很高的准确率辨认出鸭蛋尖的朝向,说明您的视觉形状辨认能力很强,在生活中辨认物体时,不容易产生视错觉。";
+            }else if(score>80 && score<=90){
+                desc = "较优秀等级:在测验中的图片,图片中“鸭蛋”的颜色、明度与邻近的部分接近相同,您能够以较高准确率辨认出鸭蛋尖的朝向,说明您具有较强的视觉形状辨认能力,在生活中辨认物体时,一般很少产生视错觉。";
+            }else if(score>60 && score<=80){
+                desc = "一般等级:在测验中的图片,图片中“鸭蛋”的颜色、明度与邻近的部分接近相同,您辨认出鸭蛋尖的朝向的准确率不是很高也不是很低,说明您的视觉形状辨认能力处于一般水平,在生活中辨认物体时,会产生一定的视错觉但不会很多。";
+            }else if(score>50 && score<=60){
+                desc = "较差等级:在测验中的图片,图片中“鸭蛋”的颜色、明度与邻近的部分接近相同,您辨认出鸭蛋尖的朝向的正确率较低,说明您的视觉形状辨认能力较差,在生活中辨认物体时,有时会产生视错觉。";
+            }else if(score<=50){
+                desc = "极差等级:在测验中的图片,图片中“鸭蛋”的颜色、明度与邻近的部分接近相同,您辨认出鸭蛋尖的朝向的正确率很低,说明您的视觉形状辨认能力很差,在生活中辨认物体时,可能经常会产生视错觉。";
+            }
+            totalScore.put("totalScoreDesc",desc);
+            totalScores.add(totalScore);
+            resultJson.put("totalScore",totalScores);
+            JSONObject ifShow = new JSONObject(true);
+            ifShow.put("totalScore",true);
+            ifShow.put("dimensions",false);
+            ifShow.put("note",false);
+            ifShow.put("radar",false);
+            ifShow.put("table",false);
+            resultJson.put("ifShow",ifShow);
+            resultDBJson = resultJson;
+
+            Map<String, String> resultMap = new LinkedHashMap<>();
+            resultMap.put("总分", score+"%");
+            resultJson.put("userScore", score+"%");
+            resultDBJson.put("总分", score+"%");
+            resultMapList = new ArrayList<>();
+            resultMapList.add(resultMap);
+
+            /*String score = jsonObject.getString("userScore");
+            JSONArray jsonArray = jsonObject.getJSONArray("data");
+            fileName = fileName + "-" + Constant.SHEET_NAME_SHAPE + ".xlsx";
+            name = Constant.SHEET_NAME_SHAPE;
+            ObjectEntity objectEntity = new ObjectEntity();
+            objectEntity.setValue(score);
+            objectEntity.setKey("总分");
+            List<ObjectEntity> objectEntities = new ArrayList<>();
+            objectEntities.add(objectEntity);
+            String result = "";
+            result += objectEntity.getKey()+":"+objectEntity.getValue();
+            //resultJson.put("测试结果", jsonArray.toJavaList(ObjectEntity.class));
+            resultJson.put("测试结果", result);
+            resultDBJson.put("总分",score);*/
+            datas = jsonArray.toString();
+            ExcelUtil.createExcelFile(SHAPE2Entity.class, shape2Entities, resultMapList, new ExcelClass().contentExcel(Constant.QUEST_TYPE_SHAPE), fileName, Constant.SHEET_NAME_SHAPE);
+            //形状知觉测试(自下而上)(亚太)
+        } else if (Constant.QUEST_TYPE_SHAPE_YATAI.equals(type)) {
+            String score = jsonObject.getString("userScore");
+            JSONArray jsonArray = jsonObject.getJSONArray("userResponseRecords");
+            List<SHAPE2Entity> shape2Entities = jsonArray.toJavaList(SHAPE2Entity.class);
+            fileName = fileName + "-" + Constant.SHEET_NAME_SHAPE_YATAI + ".xlsx";
+            name = Constant.SHEET_NAME_SHAPE_YATAI;
+
+            Map<String, String> resultMap = new LinkedHashMap<>();
+            resultMap.put("总分", score);
+            resultJson.put("userScore", score);
+            resultDBJson.put("总分", score);
+            resultMapList = new ArrayList<>();
+            resultMapList.add(resultMap);
+            JSONArray totalIndexResult = jsonObject.getJSONArray("totalIndexResult");
+            JSONObject resultBack0 = totalIndexResult.getJSONObject(5);
+            Map<String, String> resultMap0 = new LinkedHashMap<>();
+            resultMap0.put("难度等级", String.valueOf(resultBack0.get("diffIndex")));
+            //resultJson.put("一级难度等级1", String.valueOf(resultBack0.get("diffIndex")));
+            resultDBJson.put("一级难度等级", String.valueOf(resultBack0.get("diffIndex")));
+            resultMap0.put("测试总数", String.valueOf(resultBack0.get("totalCount")));
+            resultJson.put("一级难度测试总数", String.valueOf(resultBack0.get("totalCount")));
+            resultDBJson.put("一级难度测试总数", String.valueOf(resultBack0.get("totalCount")));
+            resultMap0.put("正确数", String.valueOf(resultBack0.get("rightCount")));
+            resultJson.put("一级难度正确数", String.valueOf(resultBack0.get("rightCount")));
+            resultDBJson.put("一级难度正确数", String.valueOf(resultBack0.get("rightCount")));
+            resultMap0.put("正确率", String.valueOf(resultBack0.get("rightRate")));
+            resultJson.put("一级难度正确率", String.valueOf(resultBack0.get("rightRate")));
+            resultDBJson.put("一级难度正确率", String.valueOf(resultBack0.get("rightRate")));
+            resultMapList.add(resultMap0);
+            JSONObject resultBack1 = totalIndexResult.getJSONObject(4);
+            Map<String, String> resultMap1 = new LinkedHashMap<>();
+            resultMap1.put("难度等级", String.valueOf(resultBack1.get("diffIndex")));
+            //resultJson.put("难度等级2", String.valueOf(resultBack1.get("diffIndex")));
+            resultDBJson.put("二级难度等级", String.valueOf(resultBack1.get("diffIndex")));
+            resultMap1.put("测试总数", String.valueOf(resultBack1.get("totalCount")));
+            resultJson.put("二级难度测试总数", String.valueOf(resultBack1.get("totalCount")));
+            resultDBJson.put("二级难度测试总数", String.valueOf(resultBack1.get("totalCount")));
+            resultMap1.put("正确数", String.valueOf(resultBack1.get("rightCount")));
+            resultJson.put("二级难度正确数", String.valueOf(resultBack1.get("rightCount")));
+            resultDBJson.put("二级难度正确数", String.valueOf(resultBack1.get("rightCount")));
+            resultMap1.put("正确率", String.valueOf(resultBack1.get("rightRate")));
+            resultJson.put("二级难度正确率", String.valueOf(resultBack1.get("rightRate")));
+            resultDBJson.put("二级难度正确率", String.valueOf(resultBack1.get("rightRate")));
+            resultMapList.add(resultMap1);
+            JSONObject resultBack2 = totalIndexResult.getJSONObject(3);
+            Map<String, String> resultMap2 = new LinkedHashMap<>();
+            resultMap2.put("难度等级", String.valueOf(resultBack2.get("diffIndex")));
+            //resultJson.put("难度等级3", String.valueOf(resultBack2.get("diffIndex")));
+            resultDBJson.put("三级难度等级", String.valueOf(resultBack2.get("diffIndex")));
+            resultMap2.put("测试总数", String.valueOf(resultBack2.get("totalCount")));
+            resultJson.put("三级难度测试总数", String.valueOf(resultBack2.get("totalCount")));
+            resultDBJson.put("三级难度测试总数", String.valueOf(resultBack2.get("totalCount")));
+            resultMap2.put("正确数", String.valueOf(resultBack2.get("rightCount")));
+            resultJson.put("三级难度正确数", String.valueOf(resultBack2.get("rightCount")));
+            resultDBJson.put("三级难度正确数", String.valueOf(resultBack2.get("rightCount")));
+            resultMap2.put("正确率", String.valueOf(resultBack2.get("rightRate")));
+            resultJson.put("三级难度正确率", String.valueOf(resultBack2.get("rightRate")));
+            resultDBJson.put("三级难度正确率", String.valueOf(resultBack2.get("rightRate")));
+            resultMapList.add(resultMap2);
+            JSONObject resultBack3 = totalIndexResult.getJSONObject(2);
+            Map<String, String> resultMap3 = new LinkedHashMap<>();
+            resultMap3.put("难度等级", String.valueOf(resultBack3.get("diffIndex")));
+            //resultJson.put("难度等级4", String.valueOf(resultBack3.get("diffIndex")));
+            resultDBJson.put("四级难度等级", String.valueOf(resultBack3.get("diffIndex")));
+            resultMap3.put("测试总数", String.valueOf(resultBack3.get("totalCount")));
+            resultJson.put("四级难度测试总数", String.valueOf(resultBack3.get("totalCount")));
+            resultDBJson.put("四级难度测试总数", String.valueOf(resultBack3.get("totalCount")));
+            resultMap3.put("正确数", String.valueOf(resultBack3.get("rightCount")));
+            resultJson.put("四级难度正确数", String.valueOf(resultBack3.get("rightCount")));
+            resultDBJson.put("四级难度正确数", String.valueOf(resultBack3.get("rightCount")));
+            resultMap3.put("正确率", String.valueOf(resultBack3.get("rightRate")));
+            resultJson.put("四级难度正确率", String.valueOf(resultBack3.get("rightRate")));
+            resultDBJson.put("四级难度正确率", String.valueOf(resultBack3.get("rightRate")));
+            resultMapList.add(resultMap3);
+            JSONObject resultBack4 = totalIndexResult.getJSONObject(1);
+            Map<String, String> resultMap4 = new LinkedHashMap<>();
+            resultMap4.put("难度等级", String.valueOf(resultBack4.get("diffIndex")));
+            //resultJson.put("难度等级5", String.valueOf(resultBack4.get("diffIndex")));
+            resultDBJson.put("五级难度等级", String.valueOf(resultBack4.get("diffIndex")));
+            resultMap4.put("测试总数", String.valueOf(resultBack4.get("totalCount")));
+            resultJson.put("五级难度测试总数", String.valueOf(resultBack4.get("totalCount")));
+            resultDBJson.put("五级难度测试总数", String.valueOf(resultBack4.get("totalCount")));
+            resultMap4.put("正确数", String.valueOf(resultBack4.get("rightCount")));
+            resultJson.put("五级难度正确数", String.valueOf(resultBack4.get("rightCount")));
+            resultDBJson.put("五级难度正确数", String.valueOf(resultBack4.get("rightCount")));
+            resultMap4.put("正确率", String.valueOf(resultBack4.get("rightRate")));
+            resultJson.put("五级难度正确率", String.valueOf(resultBack4.get("rightRate")));
+            resultDBJson.put("五级难度正确率", String.valueOf(resultBack4.get("rightRate")));
+            resultMapList.add(resultMap4);
+            JSONObject resultBack5 = totalIndexResult.getJSONObject(0);
+            Map<String, String> resultMap5 = new LinkedHashMap<>();
+            resultMap5.put("难度等级", String.valueOf(resultBack5.get("diffIndex")));
+            //resultJson.put("难度等级6", String.valueOf(resultBack5.get("diffIndex")));
+            resultDBJson.put("六级难度等级", String.valueOf(resultBack5.get("diffIndex")));
+            resultMap5.put("测试总数", String.valueOf(resultBack5.get("totalCount")));
+            resultJson.put("六级难度测试总数", String.valueOf(resultBack5.get("totalCount")));
+            resultDBJson.put("六级难度测试总数", String.valueOf(resultBack5.get("totalCount")));
+            resultMap5.put("正确数", String.valueOf(resultBack5.get("rightCount")));
+            resultJson.put("六级难度正确数", String.valueOf(resultBack5.get("rightCount")));
+            resultDBJson.put("六级难度正确数", String.valueOf(resultBack5.get("rightCount")));
+            resultMap5.put("正确率", String.valueOf(resultBack5.get("rightRate")));
+            resultJson.put("六级难度正确率", String.valueOf(resultBack5.get("rightRate")));
+            resultDBJson.put("六级难度正确率", String.valueOf(resultBack5.get("rightRate")));
+            resultMapList.add(resultMap5);
+
+
+            datas = jsonArray.toString();
+            ExcelUtil.createExcelFile(SHAPE2Entity.class, shape2Entities, resultMapList, new ExcelClass().contentExcel(Constant.QUEST_TYPE_SHAPE), fileName, Constant.SHEET_NAME_SHAPE_YATAI);
+            //形状知觉测试2
+        } else if (Constant.QUEST_TYPE_SHAPE2.equals(type)) {
+            String userScore = jsonObject.getString("userScore");
+            JSONArray jsonArray = jsonObject.getJSONArray("userResponseRecords");
+            List<SHAPE2Entity> shape2Entities = jsonArray.toJavaList(SHAPE2Entity.class);
+            fileName = fileName + "-" + Constant.SHEET_NAME_SHAPE2 + ".xlsx";
+            name = Constant.SHEET_NAME_SHAPE2;
+
+            double score = 0;
+            score = Double.valueOf(userScore.replace("%",""));
+            resultJson.put("versionNo",Constant.COGNITION_RESULT_VERSION);
+            JSONArray totalScores = new JSONArray();
+            JSONObject totalScore = new JSONObject(true);
+            String desc = null;
+            totalScore.put("totalScore",score+"%");
+            if (score>90){
+                desc = "优秀等级:在测验中的图片,图片中“鸭蛋”的颜色、明度与邻近的部分都接近相同,您仍然能够以很高的准确率辨认出鸭蛋尖的朝向,说明您的视觉形状辨认能力很强,在生活中辨认物体时,不容易产生视错觉。";
+            }else if(score>80 && score<=90){
+                desc = "较优秀等级:在测验中的图片,图片中“鸭蛋”的颜色、明度与邻近的部分接近相同,您能够以较高准确率辨认出鸭蛋尖的朝向,说明您具有较强的视觉形状辨认能力,在生活中辨认物体时,一般很少产生视错觉。";
+            }else if(score>60 && score<=80){
+                desc = "一般等级:在测验中的图片,图片中“鸭蛋”的颜色、明度与邻近的部分接近相同,您辨认出鸭蛋尖的朝向的准确率不是很高也不是很低,说明您的视觉形状辨认能力处于一般水平,在生活中辨认物体时,会产生一定的视错觉但不会很多。";
+            }else if(score>50 && score<=60){
+                desc = "较差等级:在测验中的图片,图片中“鸭蛋”的颜色、明度与邻近的部分接近相同,您辨认出鸭蛋尖的朝向的正确率较低,说明您的视觉形状辨认能力较差,在生活中辨认物体时,有时会产生视错觉。";
+            }else if(score<=50){
+                desc = "极差等级:在测验中的图片,图片中“鸭蛋”的颜色、明度与邻近的部分接近相同,您辨认出鸭蛋尖的朝向的正确率很低,说明您的视觉形状辨认能力很差,在生活中辨认物体时,可能经常会产生视错觉。";
+            }
+            totalScore.put("totalScoreDesc",desc);
+            totalScores.add(totalScore);
+            resultJson.put("totalScore",totalScores);
+            JSONObject ifShow = new JSONObject(true);
+            ifShow.put("totalScore",true);
+            ifShow.put("dimensions",false);
+            ifShow.put("note",false);
+            ifShow.put("radar",false);
+            ifShow.put("table",false);
+            resultJson.put("ifShow",ifShow);
+            resultDBJson = resultJson;
+
+            Map<String, String> resultMap = new LinkedHashMap<>();
+            resultMap.put("总分", score+"%");
+            resultJson.put("userScore", score+"%");
+            resultDBJson.put("总分", score+"%");
+            resultMapList = new ArrayList<>();
+            resultMapList.add(resultMap);
+            datas = jsonArray.toString();
+            ExcelUtil.createExcelFile(SHAPE2Entity.class, shape2Entities, resultMapList, new ExcelClass().contentExcel(Constant.QUEST_TYPE_SHAPE2), fileName, Constant.SHEET_NAME_SHAPE2);
+
+            //不确定信息决策
+        } else if (Constant.QUEST_TYPE_UNCERTAIN.equals(type)) {
+            String score = jsonObject.getString("userScore");
+            JSONArray jsonArray = jsonObject.getJSONArray("userResponseRecords");
+            List<SHAPE2Entity> shape2Entities = jsonArray.toJavaList(SHAPE2Entity.class);
+            fileName = fileName + "-" + Constant.SHEET_NAME_UNCERTAIN + ".xlsx";
+            name = Constant.SHEET_NAME_UNCERTAIN;
+
+            Map<String, String> resultMap = new LinkedHashMap<>();
+            resultMap.put("总分", score);
+            resultJson.put("userScore", score);
+            resultDBJson.put("总分", score);
+            resultMapList = new ArrayList<>();
+            resultMapList.add(resultMap);
+            datas = jsonArray.toString();
+            ExcelUtil.createExcelFile(SHAPE2Entity.class, shape2Entities, resultMapList, new ExcelClass().contentExcel(Constant.QUEST_TYPE_SHAPE2), fileName, Constant.SHEET_NAME_UNCERTAIN);
+
+            //运动知觉测试
+        } else if (Constant.QUEST_TYPE_MOVEMENT.equals(type)) {
+            String score = jsonObject.getString("userScore");
+            JSONArray userResponseRecords = jsonObject.getJSONArray("userResponseRecords");
+            //JSONArray jsonArray = jsonObject.getJSONArray("data");
+
+            List<MovementEntity> movementEntities = userResponseRecords.toJavaList(MovementEntity.class);
+
+            fileName = fileName + "-" + Constant.SHEET_NAME_MOVEMENT + ".xlsx";
+            name = Constant.SHEET_NAME_MOVEMENT;
+            resultJson.put("versionNo",Constant.COGNITION_RESULT_VERSION);
+            JSONArray totalScores = new JSONArray();
+            JSONObject totalScore = new JSONObject(true);
+            score = score.replace("%","");
+            double correct = Double.valueOf(score);
+            DecimalFormat df = new DecimalFormat("######0.00");
+            correct = Double.parseDouble(df.format(correct));
+            totalScore.put("totalScore",score);
+            String desc = null;
+            //int correct = Integer.parseInt(score);
+            if (correct>90){
+                desc = "优秀等级:您具有很好的运动知觉能力,即您对周围事物的运动变化及其运动方向等的觉察辨识能力很好,比如在进行网球、乒乓球运动时,您能够很好地估计球的运动速度、变化方向。或者在过马路时,您能够很好地辨识出人流、车流的走向和速度。\n";
+            }else if(correct>80 && correct<=90){
+                desc = "较优秀等级:您具有较好的运动知觉能力,对周围事物的运动变化及其运动方向等的觉察辨识能力较好,比如在进行网球、乒乓球运动时,您能够较好地估计球的运动速度、变化方向。或者在过马路时,您也能够较好地辨识出人流、车流的走向和速度。\n";
+            }else if(correct>60 && correct<=80){
+                desc = "一般等级:您具有一般水平的运动知觉能力,对周围事物的运动变化及其运动方向等的觉察辨识能力不是很好也不会很差,比如在过马路时,您能够大概地辨识出人流、车流的走向和速度。\n";
+            }else if(correct>50 && correct<=60){
+                desc = "较差等级:您的运动知觉能力较差,即对周围事物的运动变化及其运动方向等的觉察辨识能力较差,比如在进行网球、乒乓球运动时,您不能很好地估计球的运动速度、变化方向。或者在过马路时,您也不能很好地辨识出人流、车流的走向和速度。";
+            }else if(correct<=50){
+                desc = "极差等级:您运动知觉能力很差,即对周围事物的运动变化及其运动方向等的觉察辨识能力很差,比如在进行网球、乒乓球运动时,您几乎不能够估计球的运动速度、变化方向。或者在过马路时,您也几乎不能够辨识出人流、车流的走向和速度。\n";
+            }
+            totalScore.put("totalScoreDesc",desc);
+            totalScores.add(totalScore);
+            resultJson.put("totalScore",totalScores);
+            JSONObject ifShow = new JSONObject(true);
+            ifShow.put("totalScore",true);
+            ifShow.put("dimensions",false);
+            ifShow.put("note",false);
+            ifShow.put("radar",false);
+            ifShow.put("table",false);
+            resultJson.put("ifShow",ifShow);
+            resultDBJson = resultJson;
+
+
+            Map<String, String> resultMap = new LinkedHashMap<>();
+            resultMap.put("总分", score);
+            resultJson.put("userScore", score);
+            resultDBJson.put("总分", score);
+            resultMapList = new ArrayList<>();
+            resultMapList.add(resultMap);
+
+            datas = userResponseRecords.toString();
+            ExcelUtil.createExcelFile(MovementEntity.class, movementEntities, resultMapList, new ExcelClass().contentExcel(Constant.QUEST_TYPE_MOVEMENT), fileName, Constant.SHEET_NAME_MOVEMENT);
+
+            //Go_No-go反应抑制测试
+        } else if (Constant.QUEST_TYPE_GO_NO_GO.equals(type)) {
+            JSONArray jsonArray = jsonObject.getJSONArray("userResponseRecords");
+            List<GONOGOEntity> dataList = new ArrayList();
+            for (int i = 0; i < jsonArray.size(); i++) {
+                JSONObject jsonObject1 = jsonArray.getJSONObject(i);
+                GONOGOEntity gonogoEntity = new GONOGOEntity();
+                gonogoEntity.setColor(jsonObject1.getString("flag"));
+                gonogoEntity.setRspTime(jsonObject1.getInteger("responseTime"));
+                dataList.add(gonogoEntity);
+            }
+            int go = jsonObject.getInteger("goTotalResponseTime");
+            String nogo = jsonObject.getString("NoGoRightRate");
+            Map<String, String> resultMap = new LinkedHashMap<>();
+            resultMap.put("NO-GO信号响应正确率(%)", nogo);
+            resultJson.put("NoGoRightRate", nogo);
+            resultDBJson.put("NO-GO信号响应正确率(%)", nogo);
+            resultMap.put("GO信号响应时", String.valueOf(go));
+            resultJson.put("goTotalResponseTime", String.valueOf(go));
+            resultDBJson.put("GO信号响应时", String.valueOf(go));
+            resultMapList = new ArrayList<>();
+            resultMapList.add(resultMap);
+            fileName = fileName + "-" + Constant.SHEET_NAME_GO_NO_GO + ".xlsx";
+            name = Constant.SHEET_NAME_GO_NO_GO;
+            datas = jsonArray.toString();
+            ExcelUtil.createExcelFile(GONOGOEntity.class, dataList, resultMapList, new ExcelClass().contentExcel(Constant.QUEST_TYPE_GO_NO_GO), fileName, Constant.SHEET_NAME_GO_NO_GO);
+            //Go-No-go冲动抑制测试(高级版)
+        } else if (Constant.QUEST_TYPE_GO_NO_GO2.equals(type)) {
+            JSONArray jsonArray = jsonObject.getJSONArray("rawData");
+            List<GONOGO2Entity> dataList = new ArrayList();
+            for (int i = 0; i < jsonArray.size(); i++) {
+                JSONObject jsonObject1 = jsonArray.getJSONObject(i);
+                GONOGO2Entity gonogo2Entity = new GONOGO2Entity();
+                if (jsonObject1.getInteger("color") == 0) {
+                    gonogo2Entity.setColor("红色");
+                } else {
+                    gonogo2Entity.setColor("绿色");
+                }
+                if (jsonObject1.getInteger("arrowDirection") == 0) {
+                    gonogo2Entity.setArrowDirection("向左");
+                } else {
+                    gonogo2Entity.setArrowDirection("向右");
+                }
+                if (jsonObject1.getInteger("needResponse") == 0) {
+                    gonogo2Entity.setNeedResponse("无需反应");
+                } else {
+                    gonogo2Entity.setNeedResponse("需反应");
+                }
+                if (!jsonObject1.getString("userDirection").equals("")) {
+                    if (jsonObject1.getInteger("userDirection") == 0) {
+                        gonogo2Entity.setUserDirection("向左");
+                    } else {
+                        gonogo2Entity.setUserDirection("向右");
+                    }
+                }
+                if (jsonObject1.getBoolean("responseTrue")) {
+                    gonogo2Entity.setResponseTrue("正确");
+                } else {
+                    gonogo2Entity.setResponseTrue("错误");
+                }
+                gonogo2Entity.setResponseTime(jsonObject1.getString("responseTime"));
+                dataList.add(gonogo2Entity);
+            }
+            String averageTime = jsonObject.getString("averageTime");
+            String correctPercent = jsonObject.getString("correctPercent");
+
+            correctPercent = correctPercent.replace("%","");
+            double correct = Double.valueOf(correctPercent);
+            DecimalFormat df = new DecimalFormat("######0.00");
+            correct = Double.parseDouble(df.format(correct));
+            //构建返回新的返回结构"
+            resultJson.put("versionNo","2.0.1");
+            JSONArray totalScores = new JSONArray();
+            JSONObject totalScore = new JSONObject(true);
+            totalScore.put("totalScore",correct);
+            String desc = null;
+            if (correct>90){
+                desc = "优秀等级:您的冲动抑制能力很好,您在生活中行事沉稳专注,凡事自我克制,面对问题能够审慎思考,工作学习很有规划,很有耐心,也很自律,更加经得住诱惑。";
+            }else if(correct>80 && correct<=90){
+                desc = "较优秀等级:您的冲动抑制能力比较好,您在生活中行事比较沉稳专注,遇事比较能够自我克制,面对问题一般也能够审慎思考,工作学习有规划,有耐心,也比较自律,一定程度上能经得住诱惑。";
+            }else if(correct>60 && correct<=80){
+                desc = "一般等级: 您的冲动抑制能力处于一般水平,您在生活中行事有时沉稳专注有时也会分心,遇事有时自我克制有时也有些冲动,工作学习能做到一定程度的自律但有时也会不耐烦。";
+            }else if(correct>50 && correct<=60){
+                desc = "较差等级:您的冲动抑制能力较差,您在生活中行事比较冲动不耐烦,遇事不能做到自我克制,面对问题也不能审慎思考,工作学习缺乏规划和耐心,比较难做到自律。";
+            }else if(correct<=50){
+                desc = "极差等级:您的冲动抑制能力很差,您在生活中行事可能经常冲动不耐烦,遇事易受挫、暴躁,工作学习缺乏耐心,无法专注,社会适应能力差,难以抵制诱惑,遇到情绪问题或生活压力很容易陷入烟酒成瘾。建议您后续加强这方面的训练,生活中遇事三思而后行。";
+            }
+            totalScore.put("totalScoreDesc",desc);
+            totalScores.add(totalScore);
+            resultJson.put("totalScore",totalScores);
+            JSONObject ifShow = new JSONObject(true);
+            ifShow.put("totalScore",true);
+            ifShow.put("dimensions",false);
+            ifShow.put("note",false);
+            ifShow.put("radar",false);
+            ifShow.put("table",false);
+            resultJson.put("ifShow",ifShow);
+            resultDBJson = resultJson;
+
+
+
+            Map<String, String> resultMap = new LinkedHashMap<>();
+            resultMap.put("正确率", correctPercent);
+            resultJson.put("正确率", correctPercent);
+            resultDBJson.put("正确率", correctPercent);
+            resultMap.put("平均反应时", averageTime);
+            resultJson.put("平均反应时", averageTime);
+            resultDBJson.put("平均反应时", averageTime);
+            resultMapList = new ArrayList<>();
+            resultMapList.add(resultMap);
+            fileName = fileName + "-" + Constant.SHEET_NAME_GO_NO_GO2 + ".xlsx";
+            name = Constant.SHEET_NAME_GO_NO_GO2;
+            datas = dataList.toString();
+            ExcelUtil.createExcelFile(GONOGO2Entity.class, dataList, resultMapList, new ExcelClass().contentExcel(Constant.QUEST_TYPE_GO_NO_GO2), fileName, Constant.SHEET_NAME_GO_NO_GO2);
+            //工作记忆能力测试
+        } else if (Constant.QUEST_TYPE_MEMORY.equals(type)) {
+            List<WebMemoryEntity> dataList = new ArrayList<>();
+            JSONObject jsonObject0 = jsonObject.getJSONObject("data");
+            int[] rightNum0 = {0, 0, 0, 0, 0, 0};
+            int[] rightTime0 = {0, 0, 0, 0, 0, 0};
+            //int [] countTemp0={0,0,0,0,0,0};
+            int[] rightNum1 = {0, 0, 0, 0, 0, 0};
+            int[] rightTime1 = {0, 0, 0, 0, 0, 0};
+            //int [] countTemp1={0,0,0,0,0,0};
+            int[] rightNum2 = {0, 0, 0, 0, 0, 0};
+            int[] rightTime2 = {0, 0, 0, 0, 0, 0};
+            //int [] countTemp2={0,0,0,0,0,0};
+            JSONArray back0 = jsonObject0.getJSONArray("back0");
+            for (int i = 0; i < back0.size(); i++) {
+                //0back 平均响应时长只计算需要响应的,如果需要响应但为响应,按最长时间间隔计算  正确率计算需要响应和不需要响应的
+                JSONArray back0a = back0.getJSONArray(i);
+                for (int y = 0; y < back0a.size(); y++) {
+                    JSONObject back0b = back0a.getJSONObject(y);
+                    WebMemoryEntity webMemoryEntity = new WebMemoryEntity();
+                    webMemoryEntity = back0b.toJavaObject(WebMemoryEntity.class);
+                    webMemoryEntity.setDiffLevel("0back");
+                    dataList.add(webMemoryEntity);
+                    //需要响应且正确响应,响应正确次数+1 ,响应时间累加
+                    if (back0b.getString("ifNeedClick").equals("true") && back0b.getString("ifUserClick").equals("true")) {
+                        rightNum0[i] += 1;
+                        rightTime0[i] += back0b.getInteger("userResponseTime");
+                    }
+                    // ,字母展示时间+刺激时间=500+1500=2000ms
+                    if (back0b.getString("ifNeedClick").equals("true") && back0b.getString("ifUserClick").equals("false")) {
+                        //rightTime0[i] += 2000;
+                    }
+                    //不需要响应且未响应,响应正确次数+1,但响应时间不累加
+                    if (back0b.getString("ifNeedClick").equals("false") && back0b.getString("ifUserClick").equals("false")) {
+                        rightNum0[i] += 1;
+                    }
+                }
+            }
+            JSONArray back1 = jsonObject0.getJSONArray("back1");
+            for (int i = 0; i < back1.size(); i++) {
+                JSONArray back1a = back1.getJSONArray(i);
+                for (int y = 0; y < back1a.size(); y++) {
+                    JSONObject back1b = back1a.getJSONObject(y);
+                    WebMemoryEntity webMemoryEntity = new WebMemoryEntity();
+                    webMemoryEntity = back1b.toJavaObject(WebMemoryEntity.class);
+                    webMemoryEntity.setDiffLevel("1back");
+                    dataList.add(webMemoryEntity);
+                    //dataList.add(back1b.toJavaObject(WebMemoryEntity.class));
+                    if (back1b.getString("ifNeedClick").equals("true") && back1b.getString("ifUserClick").equals("true")) {
+                        rightNum1[i] += 1;
+                        rightTime1[i] += back1b.getInteger("userResponseTime");
+                    }
+                    if (back1b.getString("ifNeedClick").equals("true") && back1b.getString("ifUserClick").equals("false")) {
+                        //rightTime1[i] += 2000;
+                    }
+                    if (back1b.getString("ifNeedClick").equals("false") && back1b.getString("ifUserClick").equals("false")) {
+                        rightNum1[i] += 1;
+                    }
+                }
+
+            }
+            JSONArray back2 = jsonObject0.getJSONArray("back2");
+            for (int i = 0; i < back2.size(); i++) {
+                JSONArray back2a = back2.getJSONArray(i);
+                for (int y = 0; y < back2a.size(); y++) {
+                    JSONObject back2b = back2a.getJSONObject(y);
+                    WebMemoryEntity webMemoryEntity = new WebMemoryEntity();
+                    webMemoryEntity = back2b.toJavaObject(WebMemoryEntity.class);
+                    webMemoryEntity.setDiffLevel("2back");
+                    dataList.add(webMemoryEntity);
+                    //dataList.add(back2b.toJavaObject(WebMemoryEntity.class));
+                    if (back2b.getString("ifNeedClick").equals("true") && back2b.getString("ifUserClick").equals("true")) {
+                        rightNum2[i] += 1;
+                        rightTime2[i] += back2b.getInteger("userResponseTime");
+                    }
+                    if (back2b.getString("ifNeedClick").equals("true") && back2b.getString("ifUserClick").equals("false")) {
+                        //rightTime2[i] += 2000;
+                    }
+                    if (back2b.getString("ifNeedClick").equals("false") && back2b.getString("ifUserClick").equals("false")) {
+                        rightNum2[i] += 1;
+                    }
+                }
+            }
+
+            /*for(int i=0;i<back0.size();i++){
+                System.out.println("rightNum0"+i+"------"+rightNum0[i]);
+                System.out.println("rightTime0"+i+"-----------------"+rightTime0[i]);
+
+            }
+            System.out.println("----------------------------------------------");
+            for (int i=0;i<back1.size();i++){
+                System.out.println("rightNum1"+i+"------"+rightNum1[i]);
+                System.out.println("rightTime1"+i+"-----------------"+rightTime1[i]);
+            }
+            System.out.println("----------------------------------------------");
+            for(int i=0;i<back2.size();i++){
+                System.out.println("rightNum2"+i+"------"+rightNum2[i]);
+                System.out.println("rightTime2"+i+"-----------------"+rightTime2[i]);
+            }*/
+
+            resultJson.put("versionNo",Constant.COGNITION_RESULT_VERSION);
+            List list = new ArrayList();
+            JSONObject dimension0 = new JSONObject(true);
+            dimension0.put("name","0back");
+
+
+            resultMapList = new ArrayList<>();
+            Map<String, String> resultMap0 = new LinkedHashMap<>();
+            double back0RightTime = 0;
+            double back0Precision = 0;
+            for (int i = 0; i < back0.size(); i++) {
+                //平均响应时长=所有需要响应的响应时间之和/需要响应的次数
+                back0RightTime += rightNum0[i] == 0 ? 0 : new BigDecimal((double) (rightTime0[i]) / (double) (Constant.CHAR_COUNT / 2)).setScale(2, RoundingMode.HALF_UP).doubleValue();
+                //响应正确率=(需要响应且正确响应次数+不需要响应且未响应次数)/所有响应总数
+                back0Precision += new BigDecimal((double) (rightNum0[i] * 100) / (double) (Constant.CHAR_COUNT)).setScale(2, RoundingMode.HALF_UP).doubleValue();
+
+                //平均响应时长=所有需要响应的响应时间之和/需要响应的次数
+                resultMap0.put("0-back第"+(i+1)+"组块平均响应时长(ms)",String.valueOf(rightNum0[i]==0?0:new BigDecimal((double)(rightTime0[i])/(double)(Constant.CHAR_COUNT/2)).setScale(2, RoundingMode.HALF_UP).doubleValue()));
+                resultJson.put("0-back第"+(i+1)+"组块平均响应时长(ms)",String.valueOf(rightNum0[i]==0?0:new BigDecimal((double)(rightTime0[i])/(double)(Constant.CHAR_COUNT/2)).setScale(2, RoundingMode.HALF_UP).doubleValue()));
+                //响应正确率=(需要响应且正确响应次数+不需要响应且未响应次数)/所有响应总数
+                resultMap0.put("0-back第"+(i+1)+"组块响应正确率(%)",String.valueOf(new BigDecimal((double)(rightNum0[i]*100)/(double)(Constant.CHAR_COUNT)).setScale(2, RoundingMode.HALF_UP).doubleValue()));
+                resultJson.put("0-back第"+(i+1)+"组块响应正确率(%)",String.valueOf(new BigDecimal((double)(rightNum0[i]*100)/(double)(Constant.CHAR_COUNT)).setScale(2, RoundingMode.HALF_UP).doubleValue()));
+
+            }
+            DecimalFormat df = new DecimalFormat("######0.00");
+            //0-back平均响应时长(ms)
+            back0RightTime = Double.parseDouble(df.format(back0RightTime / back0.size()));
+            //0-back正确率
+            back0Precision = Double.parseDouble(df.format(back0Precision / back0.size()));
+            resultMap0.put("0-back平均响应时长(ms)", String.valueOf(back0RightTime));
+            resultDBJson.put("0-back平均响应时长(ms)", String.valueOf(back0RightTime));
+            resultJson.put("back0AverageTime", String.valueOf(back0RightTime));
+            resultMap0.put("0-back正确率", back0Precision + "%");
+            resultDBJson.put("0-back正确率", back0Precision + "%");
+            resultJson.put("back0SuccessRate", back0Precision + "%");
+            resultMapList.add(resultMap0);
+
+
+            dimension0.put("score",back0Precision);
+            String desc = null;
+            if(back0Precision>80 ){
+                desc = "优秀等级:您具有很好的工作记忆能力,您的工作记忆系统容量很大,相比旁人,您能够储存和处理很多的即时信息,比如能记住很长的号码串且记住的时间很长,不容易遗忘。但这并不代表您有过目不忘的记忆能力,不能有这个误区,只是比旁人更能记住更复杂的东西且更不容易遗忘。\n";
+            }else if(back0Precision>60 && back0Precision<=80){
+                desc = "一般等级:您具有一般水平的工作记忆能力,您的工作记忆系统容量并不很大但也不很小,您能储存和处理的即时信息不会太多也不会太少,比如记号码串,您只能记住5~9个数字的号码串,且在一分钟左右会忘记。\n";
+            }else if(back0Precision<=60){
+                desc = "较差等级:您具有较差的工作记忆能力,您的工作记忆系统容量较小,相比旁人,您能够储存和处理的即时信息更少,更难记住东西且往往过目就忘,记住相同难度的内容要花费更多的时间和要更多复述。因此鼓励您后续加强记忆训练,增强记忆能力,掌握对记忆材料深度加工的技巧,掌握记忆材料呈现规律,从而更好记住。\n";
+            }
+            dimension0.put("Describe",desc);
+            dimension0.put("maximum",100);
+            dimension0.put("groupName","第一组");
+
+            JSONObject dimension1 = new JSONObject(true);
+            dimension1.put("name","1back");
+
+            Map<String, String> resultMap1 = new LinkedHashMap<>();
+            double back1RightTime = 0;
+            double back1Precision = 0;
+            for (int i = 0; i < back1.size(); i++) {
+                back1RightTime += rightNum1[i] == 0 ? 0 : new BigDecimal((double) (rightTime1[i]) / (double) (Constant.CHAR_COUNT / 2)).setScale(2, RoundingMode.HALF_UP).doubleValue();
+                back1Precision += new BigDecimal((double) (rightNum1[i] * 100) / (double) (Constant.CHAR_COUNT)).setScale(2, RoundingMode.HALF_UP).doubleValue();
+
+            }
+            //1-back平均响应时长(ms)
+            back1RightTime = Double.parseDouble(df.format(back1RightTime / back1.size()));
+            //1-back正确率
+            back1Precision = Double.parseDouble(df.format(back1Precision / back1.size()));
+            resultMap1.put("1-back平均响应时长(ms)", String.valueOf(back1RightTime));
+            resultDBJson.put("1-back平均响应时长(ms)", String.valueOf(back1RightTime));
+            resultJson.put("back1AverageTime", String.valueOf(back1RightTime));
+            resultMap1.put("1-back正确率", back1Precision + "%");
+            resultDBJson.put("1-back正确率", back1Precision + "%");
+            resultJson.put("back1SuccessRate", back1Precision + "%");
+            resultMapList.add(resultMap1);
+
+            dimension1.put("score",back1Precision);
+            String desc2 = null;
+            if(back1Precision>80 ){
+                desc2 = "优秀等级:您具有很好的工作记忆能力,您的工作记忆系统容量很大,相比旁人,您能够储存和处理很多的即时信息,比如能记住很长的号码串且记住的时间很长,不容易遗忘。但这并不代表您有过目不忘的记忆能力,不能有这个误区,只是比旁人更能记住更复杂的东西且更不容易遗忘。\n";
+            }else if(back1Precision>60 && back1Precision<=80){
+                desc2 = "一般等级:您具有一般水平的工作记忆能力,您的工作记忆系统容量并不很大但也不很小,您能储存和处理的即时信息不会太多也不会太少,比如记号码串,您只能记住5~9个数字的号码串,且在一分钟左右会忘记。\n";
+            }else if(back1Precision<=60){
+                desc2 = "较差等级:您具有较差的工作记忆能力,您的工作记忆系统容量较小,相比旁人,您能够储存和处理的即时信息更少,更难记住东西且往往过目就忘,记住相同难度的内容要花费更多的时间和要更多复述。因此鼓励您后续加强记忆训练,增强记忆能力,掌握对记忆材料深度加工的技巧,掌握记忆材料呈现规律,从而更好记住。\n";
+            }
+            dimension1.put("Describe",desc2);
+            dimension1.put("maximum",100);
+            dimension1.put("groupName","第二组");
+
+
+            JSONObject dimension2= new JSONObject(true);
+            dimension2.put("name","2back");
+            Map<String, String> resultMap2 = new LinkedHashMap<>();
+            double back2RightTime = 0;
+            double back2Precision = 0;
+            for (int i = 0; i < back2.size(); i++) {
+                back2RightTime += rightNum2[i] == 0 ? 0 : new BigDecimal((double) (rightTime2[i]) / (double) (Constant.CHAR_COUNT / 2)).setScale(2, RoundingMode.HALF_UP).doubleValue();
+                back2Precision += new BigDecimal((double) (rightNum2[i] * 100) / (double) (Constant.CHAR_COUNT)).setScale(2, RoundingMode.HALF_UP).doubleValue();
+                resultMap2.put("2-back第"+(i+1)+"组块平均响应时长(ms)",String.valueOf(rightNum2[i]==0?0:new BigDecimal((double)(rightTime2[i])/(double)(Constant.CHAR_COUNT/2)).setScale(2, RoundingMode.HALF_UP).doubleValue()));
+                resultJson.put("2-back第"+(i+1)+"组块平均响应时长(ms)",String.valueOf(rightNum2[i]==0?0:new BigDecimal((double)(rightTime2[i])/(double)(Constant.CHAR_COUNT/2)).setScale(2, RoundingMode.HALF_UP).doubleValue()));
+                resultMap2.put("2-back第"+(i+1)+"组块响应正确率(%)",String.valueOf(new BigDecimal((double)(rightNum2[i]*100)/(double)(Constant.CHAR_COUNT)).setScale(2, RoundingMode.HALF_UP).doubleValue()));
+                resultJson.put("2-back第"+(i+1)+"组块响应正确率(%)",String.valueOf(new BigDecimal((double)(rightNum2[i]*100)/(double)(Constant.CHAR_COUNT)).setScale(2, RoundingMode.HALF_UP).doubleValue()));
+
+            }
+
+
+
+
+            //2-back平均响应时长(ms)
+            back2RightTime = Double.parseDouble(df.format(back2RightTime / back2.size()));
+            //2-back正确率
+            back2Precision = Double.parseDouble(df.format(back2Precision / back2.size()));
+
+
+            dimension2.put("score",back2Precision);
+            String desc3 = null;
+            if(back2Precision>80 ){
+                desc3 = "优秀等级:您具有很好的工作记忆能力,您的工作记忆系统容量很大,相比旁人,您能够储存和处理很多的即时信息,比如能记住很长的号码串且记住的时间很长,不容易遗忘。但这并不代表您有过目不忘的记忆能力,不能有这个误区,只是比旁人更能记住更复杂的东西且更不容易遗忘。\n";
+            }else if(back2Precision>60 && back2Precision<=80){
+                desc3 = "一般等级:您具有一般水平的工作记忆能力,您的工作记忆系统容量并不很大但也不很小,您能储存和处理的即时信息不会太多也不会太少,比如记号码串,您只能记住5~9个数字的号码串,且在一分钟左右会忘记。\n";
+            }else if(back2Precision<=60){
+                desc3 = "较差等级:您具有较差的工作记忆能力,您的工作记忆系统容量较小,相比旁人,您能够储存和处理的即时信息更少,更难记住东西且往往过目就忘,记住相同难度的内容要花费更多的时间和要更多复述。因此鼓励您后续加强记忆训练,增强记忆能力,掌握对记忆材料深度加工的技巧,掌握记忆材料呈现规律,从而更好记住。\n";
+            }
+            dimension2.put("Describe",desc3);
+            dimension2.put("maximum",100);
+            dimension2.put("groupName","第三组");
+            list.add(dimension0);
+            list.add(dimension1);
+            list.add(dimension2);
+            resultJson.put("dimensions",list);
+            JSONObject ifShow = new JSONObject(true);
+            ifShow.put("totalScore",false);
+            ifShow.put("dimensions",true);
+            ifShow.put("note",false);
+            ifShow.put("radar",false);
+            ifShow.put("table",false);
+            resultJson.put("ifShow",ifShow);
+            resultDBJson = resultJson;
+            resultMap2.put("2-back平均响应时长(ms)", String.valueOf(back2RightTime));
+            resultDBJson.put("2-back平均响应时长(ms)", String.valueOf(back2RightTime));
+            resultJson.put("back2AverageTime", String.valueOf(back2RightTime));
+            resultMap2.put("2-back正确率", back2Precision + "%");
+            resultDBJson.put("2-back正确率", back2Precision + "%");
+            resultJson.put("back2SuccessRate", back2Precision + "%");
+            resultMapList.add(resultMap2);
+            fileName = fileName + "-" + Constant.SHEET_NAME_MEMORY + ".xlsx";
+            name = Constant.SHEET_NAME_MEMORY;
+            datas = jsonObject0.toString();
+            ExcelUtil.createExcelFile(WebMemoryEntity.class, dataList, resultMapList, new ExcelClass().contentExcel(Constant.QUEST_TYPE_MEMORY), fileName, Constant.SHEET_NAME_MEMORY);
+            //工作记忆能力测试(亚太)
+        } else if (Constant.QUEST_TYPE_MEMORY_YATAI.equals(type)) {
+            List<WebMemoryEntity> dataList = new ArrayList<>();
+            JSONObject jsonObject0 = jsonObject.getJSONObject("data");
+            JSONArray back0 = jsonObject0.getJSONArray("back0");
+            for (int i = 0; i < back0.size(); i++) {
+                JSONArray back0a = back0.getJSONArray(i);
+                for (int y = 0; y < back0a.size(); y++) {
+                    JSONObject back0b = back0a.getJSONObject(y);
+                    WebMemoryEntity webMemoryEntity = new WebMemoryEntity();
+                    webMemoryEntity = back0b.toJavaObject(WebMemoryEntity.class);
+                    webMemoryEntity.setDiffLevel("0back");
+                    dataList.add(webMemoryEntity);
+                }
+            }
+            JSONArray back1 = jsonObject0.getJSONArray("back1");
+            for (int i = 0; i < back1.size(); i++) {
+                JSONArray back1a = back1.getJSONArray(i);
+                for (int y = 0; y < back1a.size(); y++) {
+                    JSONObject back1b = back1a.getJSONObject(y);
+                    WebMemoryEntity webMemoryEntity = new WebMemoryEntity();
+                    webMemoryEntity = back1b.toJavaObject(WebMemoryEntity.class);
+                    webMemoryEntity.setDiffLevel("1back");
+                    dataList.add(webMemoryEntity);
+                }
+            }
+            JSONArray back2 = jsonObject0.getJSONArray("back2");
+            for (int i = 0; i < back2.size(); i++) {
+                JSONArray back2a = back2.getJSONArray(i);
+                for (int y = 0; y < back2a.size(); y++) {
+                    JSONObject back2b = back2a.getJSONObject(y);
+                    WebMemoryEntity webMemoryEntity = new WebMemoryEntity();
+                    webMemoryEntity = back2b.toJavaObject(WebMemoryEntity.class);
+                    webMemoryEntity.setDiffLevel("2back");
+                    dataList.add(webMemoryEntity);
+                }
+            }
+            JSONArray totalIndexResult = jsonObject.getJSONArray("totalIndexResult");
+            JSONObject resultBack0 = totalIndexResult.getJSONObject(0);
+            Map<String, String> resultMap0 = new LinkedHashMap<>();
+            resultMap0.put("0-back难度等级", String.valueOf(resultBack0.get("diffLevel")));
+            resultDBJson.put("0-back难度等级", String.valueOf(resultBack0.get("diffLevel")));
+            resultJson.put("0-back难度等级", String.valueOf(resultBack0.get("diffLevel")));
+            resultMap0.put("0-back总测试数", String.valueOf(resultBack0.get("totalTestCount")));
+            resultDBJson.put("0-back总测试数", String.valueOf(resultBack0.get("totalTestCount")));
+            resultJson.put("0-back总测试数", String.valueOf(resultBack0.get("totalTestCount")));
+            resultMap0.put("0-back正确数", String.valueOf(resultBack0.get("rightCount")));
+            resultDBJson.put("0-back正确数", String.valueOf(resultBack0.get("rightCount")));
+            resultJson.put("0-back正确数", String.valueOf(resultBack0.get("rightCount")));
+            resultMap0.put("0-back正确率", String.valueOf(resultBack0.get("rightRate")));
+            resultDBJson.put("0-back正确率", String.valueOf(resultBack0.get("rightRate")));
+            resultJson.put("0-back正确率", String.valueOf(resultBack0.get("rightRate")));
+            resultMap0.put("0-back平均反应时(ms)", String.valueOf(resultBack0.get("averageResponseTime")));
+            resultDBJson.put("0-back平均反应时(ms)", String.valueOf(resultBack0.get("averageResponseTime")));
+            resultJson.put("0-back平均反应时(ms)", String.valueOf(resultBack0.get("averageResponseTime")));
+            resultMap0.put("0-back测试用时", String.valueOf(resultBack0.get("testTotalTime")));
+            resultDBJson.put("0-back测试用时", String.valueOf(resultBack0.get("testTotalTime")));
+            resultJson.put("0-back测试用时", String.valueOf(resultBack0.get("testTotalTime")));
+            resultMapList.add(resultMap0);
+            JSONObject resultBack1 = totalIndexResult.getJSONObject(1);
+            Map<String, String> resultMap1 = new LinkedHashMap<>();
+            resultMap1.put("1-back难度等级", String.valueOf(resultBack1.get("diffLevel")));
+            resultDBJson.put("1-back难度等级", String.valueOf(resultBack1.get("diffLevel")));
+            resultJson.put("1-back难度等级", String.valueOf(resultBack1.get("diffLevel")));
+            resultMap1.put("1-back总测试数", String.valueOf(resultBack1.get("totalTestCount")));
+            resultDBJson.put("1-back总测试数", String.valueOf(resultBack1.get("totalTestCount")));
+            resultJson.put("1-back总测试数", String.valueOf(resultBack1.get("totalTestCount")));
+            resultMap1.put("1-back正确数", String.valueOf(resultBack1.get("rightCount")));
+            resultDBJson.put("1-back正确数", String.valueOf(resultBack1.get("rightCount")));
+            resultJson.put("1-back正确数", String.valueOf(resultBack1.get("rightCount")));
+            resultMap1.put("1-back正确率", String.valueOf(resultBack1.get("rightRate")));
+            resultDBJson.put("1-back正确率", String.valueOf(resultBack1.get("rightRate")));
+            resultJson.put("1-back正确率", String.valueOf(resultBack1.get("rightRate")));
+            resultMap1.put("1-back平均反应时(ms)", String.valueOf(resultBack1.get("averageResponseTime")));
+            resultDBJson.put("1-back平均反应时(ms)", String.valueOf(resultBack1.get("averageResponseTime")));
+            resultJson.put("1-back平均反应时(ms)", String.valueOf(resultBack1.get("averageResponseTime")));
+            resultMap1.put("1-back测试用时", String.valueOf(resultBack1.get("testTotalTime")));
+            resultDBJson.put("1-back测试用时", String.valueOf(resultBack1.get("testTotalTime")));
+            resultJson.put("1-back测试用时", String.valueOf(resultBack1.get("testTotalTime")));
+            resultMapList.add(resultMap1);
+            JSONObject resultBack2 = totalIndexResult.getJSONObject(2);
+            Map<String, String> resultMap2 = new LinkedHashMap<>();
+            resultMap2.put("2-back难度等级", String.valueOf(resultBack2.get("diffLevel")));
+            resultDBJson.put("2-back难度等级", String.valueOf(resultBack2.get("diffLevel")));
+            resultJson.put("2-back难度等级", String.valueOf(resultBack2.get("diffLevel")));
+            resultMap2.put("2-back总测试数", String.valueOf(resultBack2.get("totalTestCount")));
+            resultDBJson.put("2-back总测试数", String.valueOf(resultBack2.get("totalTestCount")));
+            resultJson.put("2-back总测试数", String.valueOf(resultBack2.get("totalTestCount")));
+            resultMap2.put("2-back正确数", String.valueOf(resultBack2.get("rightCount")));
+            resultDBJson.put("2-back正确数", String.valueOf(resultBack2.get("rightCount")));
+            resultJson.put("2-back正确数", String.valueOf(resultBack2.get("rightCount")));
+            resultMap2.put("2-back正确率", String.valueOf(resultBack2.get("rightRate")));
+            resultDBJson.put("2-back正确率", String.valueOf(resultBack2.get("rightRate")));
+            resultJson.put("2-back正确率", String.valueOf(resultBack2.get("rightRate")));
+            resultMap2.put("2-back平均反应时(ms)", String.valueOf(resultBack2.get("averageResponseTime")));
+            resultDBJson.put("2-back平均反应时(ms)", String.valueOf(resultBack2.get("averageResponseTime")));
+            resultJson.put("2-back平均反应时(ms)", String.valueOf(resultBack2.get("averageResponseTime")));
+            resultMap2.put("2-back测试用时", String.valueOf(resultBack2.get("testTotalTime")));
+            resultDBJson.put("2-back测试用时", String.valueOf(resultBack2.get("testTotalTime")));
+            resultJson.put("2-back测试用时", String.valueOf(resultBack2.get("testTotalTime")));
+            resultMapList.add(resultMap2);
+
+            fileName = fileName + "-" + Constant.SHEET_NAME_MEMORY_YATAI + ".xlsx";
+            name = Constant.SHEET_NAME_MEMORY_YATAI;
+            datas = jsonObject0.toString();
+            ExcelUtil.createExcelFile(WebMemoryEntity.class, dataList, resultMapList, new ExcelClass().contentExcel(Constant.QUEST_TYPE_MEMORY), fileName, Constant.SHEET_NAME_MEMORY_YATAI);
+            //精神运动警觉度测试
+        } else if (Constant.QUEST_TYPE_ALERTNESS.equals(type)) {
+            resultMapList = new ArrayList<>();
+            //总时长
+            int allTime = 0;
+            //500ms- 1000ms 次数
+            int time500 = 0;
+            //1000ms 次数
+            int time1000 = 0;
+            JSONArray jsonArray = jsonObject.getJSONArray("data");
+            List<ObjectEntity> dataList = jsonArray.toJavaList(ObjectEntity.class);
+            for (ObjectEntity roa : dataList) {
+                int temp = Integer.parseInt(roa.getValue());
+                allTime += temp;
+                if (temp > 500 && temp < 1000) {
+                    time500 += 1;
+                } else if (temp >= 1000) {
+                    time1000 += 1;
+                }
+            }
+            Map<String, String> resultMap = new LinkedHashMap<>();
+            resultMap.put("超过0.5秒的比例", String.valueOf(new BigDecimal((double) time500 / (double) dataList.size()).setScale(2, RoundingMode.HALF_UP).doubleValue()));
+            resultDBJson.put("超过0.5秒的比例", String.valueOf(new BigDecimal((double) time500 / (double) dataList.size()).setScale(2, RoundingMode.HALF_UP).doubleValue()));
+            resultJson.put("超过0.5秒的比例", String.valueOf(new BigDecimal((double) time500 / (double) dataList.size()).setScale(2, RoundingMode.HALF_UP).doubleValue()));
+            resultMap.put("超过1秒的比例", String.valueOf(new BigDecimal((double) time1000 / (double) dataList.size()).setScale(2, RoundingMode.HALF_UP).doubleValue()));
+            resultDBJson.put("超过1秒的比例", String.valueOf(new BigDecimal((double) time1000 / (double) dataList.size()).setScale(2, RoundingMode.HALF_UP).doubleValue()));
+            resultJson.put("超过1秒的比例", String.valueOf(new BigDecimal((double) time1000 / (double) dataList.size()).setScale(2, RoundingMode.HALF_UP).doubleValue()));
+            resultMap.put("平均时长(ms)", String.valueOf(new BigDecimal((double) allTime / (double) dataList.size()).setScale(2, RoundingMode.HALF_UP).doubleValue()));
+            resultDBJson.put("平均时长(ms)", String.valueOf(new BigDecimal((double) allTime / (double) dataList.size()).setScale(2, RoundingMode.HALF_UP).doubleValue()));
+            resultJson.put("平均时长(ms)", String.valueOf(new BigDecimal((double) allTime / (double) dataList.size()).setScale(2, RoundingMode.HALF_UP).doubleValue()));
+            resultMapList.add(resultMap);
+            fileName = fileName + "-" + Constant.SHEET_NAME_ALERTNESS + ".xlsx";
+            name = Constant.SHEET_NAME_ALERTNESS;
+            datas = jsonArray.toString();
+            ExcelUtil.createExcelFile(ObjectEntity.class, dataList, resultMapList, new ExcelClass().contentExcel(Constant.QUEST_TYPE_ALERTNESS), fileName, Constant.SHEET_NAME_ALERTNESS);
+            //精神运动警觉度测试(亚太)
+        } else if (Constant.QUEST_TYPE_ALERTNESS_YATAI.equals(type)) {
+            resultMapList = new ArrayList<>();
+            //有效总时长
+            int allTime = 0;
+            //大于600ms次数
+            int time600 = 0;
+            //最快
+            int fast = 0;
+            //最慢
+            int slow = 0;
+            JSONArray jsonArray = jsonObject.getJSONArray("data");
+            List<ObjectEntity> dataList = jsonArray.toJavaList(ObjectEntity.class);
+            List<ObjectEntity> objectEntities = new ArrayList<>();
+            List list = new ArrayList();
+            for (ObjectEntity roa : dataList) {
+                int temp = Integer.parseInt(roa.getValue());
+                if (temp >= 100) {
+                    allTime += temp;
+                    list.add(temp);
+                    //objectEntities.add(roa);
+                    if (temp > 600) {
+                        time600 += 1;
+                    }
+                }
+            }
+            //最快和最慢10%个数
+            int a = Math.round(list.size() / 10);
+            Collections.sort(list);
+            for (int i = 0; i < a; i++) {
+                fast += (int) list.get(i);
+                int y = i + 1;
+                slow += (int) list.get(list.size() - y);
+
+            }
+
+            Map<String, String> resultMap = new LinkedHashMap<>();
+            resultMap.put("平均反应时(ms)", String.valueOf(new BigDecimal((double) allTime / (double) list.size()).setScale(2, RoundingMode.HALF_UP).doubleValue()));
+            resultDBJson.put("平均反应时(ms)", String.valueOf(new BigDecimal((double) allTime / (double) list.size()).setScale(2, RoundingMode.HALF_UP).doubleValue()));
+            resultJson.put("平均反应时(ms)", String.valueOf(new BigDecimal((double) allTime / (double) list.size()).setScale(2, RoundingMode.HALF_UP).doubleValue()));
+            resultMap.put("最快10%反应时(ms)", String.valueOf(new BigDecimal((double) fast / (double) a).setScale(2, RoundingMode.HALF_UP).doubleValue()));
+            resultDBJson.put("最快10%反应时(ms)", String.valueOf(new BigDecimal((double) fast / (double) a).setScale(2, RoundingMode.HALF_UP).doubleValue()));
+            resultJson.put("最快10%反应时(ms)", String.valueOf(new BigDecimal((double) fast / (double) a).setScale(2, RoundingMode.HALF_UP).doubleValue()));
+            resultMap.put("最慢10%反应时(ms)", String.valueOf(new BigDecimal((double) slow / (double) a).setScale(2, RoundingMode.HALF_UP).doubleValue()));
+            resultDBJson.put("最慢10%反应时(ms)", String.valueOf(new BigDecimal((double) slow / (double) a).setScale(2, RoundingMode.HALF_UP).doubleValue()));
+            resultJson.put("最慢10%反应时(ms)", String.valueOf(new BigDecimal((double) slow / (double) a).setScale(2, RoundingMode.HALF_UP).doubleValue()));
+            resultMap.put("忽视频次", String.valueOf(new BigDecimal((double) time600 / (double) list.size()).setScale(2, RoundingMode.HALF_UP).doubleValue()));
+            resultDBJson.put("忽视频次", String.valueOf(new BigDecimal((double) time600 / (double) list.size()).setScale(2, RoundingMode.HALF_UP).doubleValue()));
+            resultJson.put("忽视频次", String.valueOf(new BigDecimal((double) time600 / (double) list.size()).setScale(2, RoundingMode.HALF_UP).doubleValue()));
+            resultMapList.add(resultMap);
+            fileName = fileName + "-" + Constant.SHEET_NAME_ALERTNESS_YATAI + ".xlsx";
+            name = Constant.SHEET_NAME_ALERTNESS_YATAI;
+            datas = jsonArray.toString();
+            ExcelUtil.createExcelFile(ObjectEntity.class, dataList, resultMapList, new ExcelClass().contentExcel(Constant.QUEST_TYPE_ALERTNESS), fileName, Constant.SHEET_NAME_ALERTNESS_YATAI);
+            //连续加法测试
+        } else if (Constant.QUEST_TYPE_ADDITION.equals(type)) {
+            JSONArray jsonArray = jsonObject.getJSONArray("data");
+            //测试者完成的题目总数
+            int totalNum = 0;
+            //总正确数
+            int rightNum = 0;
+            //得分之和
+            int totalScoreTemp = 0;
+            //最终得分
+            String score = "";
+            //double score = 0;
+            if (jsonObject.containsKey("total")) {
+                totalNum = jsonObject.getInteger("total");
+            }
+            if (jsonObject.containsKey("score")) {
+                score = jsonObject.getString("score");
+                //score = jsonObject.getInteger("score");
+            }
+            List<ObjectEntity> dataList = jsonArray.toJavaList(ObjectEntity.class);
+            if (dataList != null && dataList.size() > 0) {
+
+                for (ObjectEntity object : dataList) {
+                    rightNum = Integer.parseInt(object.getValue()) + rightNum;
+                    //totalScoreTemp = totalScoreTemp + Utils.x_n(2,Integer.parseInt(object.getKey())-2) * Integer.parseInt(object.getValue());
+                }
+                //score = Utils.loga_n(2,totalScoreTemp,2);
+            }
+            /*DecimalFormat df   = new DecimalFormat("######0.00");
+            score = Double.parseDouble(df.format(score));*/
+            Map<String, String> resultMap = new LinkedHashMap<>();
+            resultMap.put("总分", score);
+            resultDBJson.put("总分", score);
+            resultJson.put("总分", score);
+            resultMap.put("题目总数", String.valueOf(totalNum));
+            resultDBJson.put("题目总数", String.valueOf(totalNum));
+            resultJson.put("题目总数", String.valueOf(totalNum));
+            resultMap.put("总正确数", String.valueOf(rightNum));
+            resultDBJson.put("总正确数", String.valueOf(rightNum));
+            resultJson.put("总正确数", String.valueOf(rightNum));
+
+            fileName = fileName + "-" + Constant.SHEET_NAME_ADDITION + ".xlsx";
+            name = Constant.SHEET_NAME_ADDITION;
+            //System.out.println(totalScoreTemp);
+            resultMapList = new ArrayList<>();
+            resultMapList.add(resultMap);
+            datas = jsonArray.toString();
+            ExcelUtil.createExcelFile(ObjectEntity.class, dataList, resultMapList, new ExcelClass().contentExcel(Constant.QUEST_TYPE_ADDITION), fileName, Constant.SHEET_NAME_ADDITION);
+            //风险决策测试
+        } else if (Constant.QUEST_TYPE_RDT.equals(type)) {
+            JSONArray jsonArray = jsonObject.getJSONArray("rawData");
+            List<RDTEntity> rdtEntityList = jsonArray.toJavaList(RDTEntity.class);
+            double totalEarned = jsonObject.getDouble("totalEarned");
+            int totalAerated = jsonObject.getInteger("totalAerated");
+            double BART = 0;
+            for (RDTEntity rdtent:rdtEntityList){
+                if (!rdtent.getExplosion()){
+                    BART ++;
+                }
+            }
+            DecimalFormat df = new DecimalFormat("######0.00");
+            if (BART != 0){
+                BART = Double.parseDouble(df.format(10 / BART));
+            }else {
+                BART = 10;
+            }
+
+            resultJson.put("versionNo",Constant.COGNITION_RESULT_VERSION);
+            JSONArray totalScores = new JSONArray();
+            JSONObject totalScore = new JSONObject(true);
+            String desc = null;
+            totalScore.put("totalScore",BART);
+
+            if (BART>4){
+                desc = "风险偏好决策风格:您在决策时比较冒险激进,会更看重失去的部分,因为不愿意失去而甘愿冒更大风险。比如给你两种选择,一种是给你100%的几率拿走50元,另一种是给你两个盲盒,一个盲盒里有500块,一个盲盒里一分钱没有,对于您这种决策风格的人会更倾向选第二种。";
+            }else if(BART>1 && BART<=4){
+                desc = "中性决策风格:您在决策时不会太保守也不会太冒险,做事追求稳中求进,是非常理想的决策风格。";
+            }else if(BART>0 && BART<=1){
+                desc = "风险规避决策风格:您在决策时比较保守谨慎,不会太冒险,更看重能获得的部分,比如在投资时您会更看重确定性的回报而不是不确定的期望收益。";
+            }
+            totalScore.put("totalScoreDesc",desc);
+            totalScores.add(totalScore);
+            resultJson.put("totalScore",totalScores);
+            //维度得分及解读模块
+            JSONArray dimensions = new JSONArray();
+            JSONObject scoreA = new JSONObject(true);
+            scoreA.put("name","得分");
+            scoreA.put("score",String.valueOf(totalEarned));
+            scoreA.put("Describe","无");
+            scoreA.put("maximum","无");
+            scoreA.put("groupName","第一组");
+            dimensions.add(scoreA);
+            JSONObject scoreB = new JSONObject(true);
+            scoreB.put("name","总点击次数");
+            scoreB.put("score",String.valueOf(totalAerated));
+            scoreB.put("Describe","无");
+            scoreB.put("maximum","无");
+            scoreB.put("groupName","第一组");
+            dimensions.add(scoreB);
+            resultJson.put("dimensions", dimensions);
+
+
+            JSONObject ifShow = new JSONObject(true);
+            ifShow.put("totalScore",true);
+            ifShow.put("dimensions",true);
+            ifShow.put("note",false);
+            ifShow.put("radar",false);
+            ifShow.put("table",false);
+            resultJson.put("ifShow",ifShow);
+            resultDBJson = resultJson;
+
+            Map<String, String> resultMap = new LinkedHashMap<>();
+            resultMap.put("总分", String.valueOf(totalEarned));
+            resultJson.put("总分", String.valueOf(totalEarned));
+            resultDBJson.put("总分", String.valueOf(totalEarned));
+            resultMap.put("总点击次数", String.valueOf(totalAerated));
+            resultJson.put("总点击次数", String.valueOf(totalAerated));
+            resultDBJson.put("总点击次数", String.valueOf(totalAerated));
+            resultMapList = new ArrayList<>();
+            resultMapList.add(resultMap);
+            fileName = fileName + "-" + Constant.SHEET_NAME_RDT + ".xlsx";
+            name = Constant.SHEET_NAME_RDT;
+            datas = jsonArray.toString();
+            ExcelUtil.createExcelFile(RDTEntity.class, rdtEntityList, resultMapList, new ExcelClass().contentExcel(Constant.QUEST_TYPE_RDT), fileName, Constant.SHEET_NAME_RDT);
+            //时间知觉能力测试
+        } else if (Constant.QUEST_TYPE_SC.equals(type)) {
+            JSONArray jsonArray = jsonObject.getJSONArray("results");
+            List<SCEntity> scEntityList = jsonArray.toJavaList(SCEntity.class);
+            int num = 0;
+            int errorNum = 0;
+            for (SCEntity scEntity : scEntityList) {
+                if (!scEntity.getError().equals("NULL")) {
+                    num += 1;
+                    if (Integer.valueOf(scEntity.getError()) < 0) {
+                        errorNum -= Integer.valueOf(scEntity.getError());
+                    } else {
+                        errorNum += Integer.valueOf(scEntity.getError());
+                    }
+                }
+            }
+            DecimalFormat df = new DecimalFormat("######0.00");
+            double correct = 0;
+            if (num != 0){
+                correct = Double.parseDouble(df.format(errorNum / num));
+            }
+
+            resultJson.put("versionNo",Constant.COGNITION_RESULT_VERSION);
+            JSONArray totalScores = new JSONArray();
+            JSONObject totalScore = new JSONObject(true);
+            String desc = null;
+            totalScore.put("totalScore",correct);
+
+            if (correct>500){
+                desc = "极差等级:您天生时间知觉敏锐程度很差,几乎不能感知自己的生理时钟,在生活工作中也几乎不能把握时间节奏,比如时间一点点过去您并没有觉察,时间感很差,生活缺乏计划,该睡觉的时候可能在打游戏或者做其他的事,该吃饭的时候也不吃饭。您很需要加强时间感知力训练。\n";
+            }else if(correct>400 && correct<=500){
+                desc = "较差等级:您天生时间知觉敏锐程度较差,不能够很好地感知自己的生理时钟,在生活工作中也不能很好地把握时间节奏,比如有时候时间不知不觉过去很久自己也不知道怎么回事,时间感较差,生活缺乏计划,可能需要加强时间感训练。\n";
+            }else if(correct>200 && correct<=400){
+                desc = "一般等级:您天生时间知觉敏锐程度一般,对自己生理时钟的感知能力也处在一般水平,在生活工作中不能够很好但能够较好地把握时间节奏。比如,每天来回上班地点的行程时间,您内心会大概有个计算。\n";
+            }else if(correct>100 && correct<=200){
+                desc = "较优秀等级:您在一定程度上忠于自己的生理时钟,属于天生时间知觉比较敏锐的人,在生活工作中对时间节奏把握得比较准确。比如,您平常需要吃早餐的时间到了,您可能会感到饿并且要吃点东西。每天来回上班地点的行程时间,您内心也能大概较好地计算。\n";
+            }else if(correct<=100){
+                desc = "优秀等级:您很忠于自己的生理时钟,属于天生时间知觉相当敏锐的人,在生活工作中对时间节奏把握得很好很准确。比如,在您平常需要吃早餐的时间,您就会感到饿。每天来回上班地点的行程时间,您内心也会计算得很好。\n";
+            }
+            totalScore.put("totalScoreDesc",desc);
+            totalScores.add(totalScore);
+            resultJson.put("totalScore",totalScores);
+            JSONObject ifShow = new JSONObject(true);
+            ifShow.put("totalScore",true);
+            ifShow.put("dimensions",false);
+            ifShow.put("note",false);
+            ifShow.put("radar",false);
+            ifShow.put("table",false);
+            resultJson.put("ifShow",ifShow);
+            resultDBJson = resultJson;
+
+
+            Map<String, String> resultMap = new LinkedHashMap<>();
+            resultMap.put("平均反应误差", String.valueOf(correct));
+            resultJson.put("平均反应误差", String.valueOf(correct));
+            resultDBJson.put("平均反应误差", String.valueOf(correct));
+            resultMapList = new ArrayList<>();
+            resultMapList.add(resultMap);
+            fileName = fileName + "-" + Constant.SHEET_NAME_SC + ".xlsx";
+            name = Constant.SHEET_NAME_SC;
+            datas = jsonArray.toString();
+            ExcelUtil.createExcelFile(SCEntity.class, scEntityList, resultMapList, new ExcelClass().contentExcel(Constant.QUEST_TYPE_SC), fileName, Constant.SHEET_NAME_SC);
+            //枪林弹雨
+        } else if (Constant.QUEST_TYPE_GBE.equals(type)) {
+            JSONObject userResponseData = jsonObject.getJSONObject("userResponseData");
+            JSONObject responseTime = userResponseData.getJSONObject("responseTime");
+            String responseTimeDanger1 = responseTime.getString("response1");
+            String responseTimeDanger2 = responseTime.getString("response2");
+            String responseTimeDanger3 = responseTime.getString("response3");
+            String responseTimeDanger4 = responseTime.getString("response4");
+            String level = userResponseData.getString("level");
+            String isPassed = userResponseData.getString("isPassed");
+            String score = userResponseData.getString("score");
+            String errorNum = userResponseData.getString("errorNum");
+            String roadNum = userResponseData.getString("roadNum");
+            String rightRate = userResponseData.getString("rightRate");
+            GBEEntity gbeEntity = new GBEEntity(level, isPassed, responseTimeDanger1, responseTimeDanger2, responseTimeDanger3, responseTimeDanger4, score, errorNum, roadNum, rightRate);
+
+            Map<String, String> resultMap = new LinkedHashMap<>();
+            resultMap.put("关卡", String.valueOf(level));
+            resultJson.put("关卡", String.valueOf(level));
+            resultDBJson.put("关卡", String.valueOf(level));
+            resultMap.put("是否通过", isPassed.equals("true") ? "通过" : "未通过");
+            resultJson.put("是否通过", isPassed.equals("true") ? "通过" : "未通过");
+            resultDBJson.put("是否通过", isPassed.equals("true") ? "通过" : "未通过");
+            resultMap.put("总分", String.valueOf(score));
+            resultJson.put("总分", String.valueOf(score));
+            resultDBJson.put("总分", String.valueOf(score));
+            resultMap.put("错误个数", String.valueOf(errorNum));
+            resultJson.put("错误个数", String.valueOf(errorNum));
+            resultDBJson.put("错误个数", String.valueOf(errorNum));
+            resultMap.put("道路个数", String.valueOf(roadNum));
+            resultJson.put("道路个数", String.valueOf(roadNum));
+            resultDBJson.put("道路个数", String.valueOf(rightRate));
+            resultMap.put("正确率", String.valueOf(rightRate));
+            resultJson.put("正确率", String.valueOf(rightRate));
+            resultDBJson.put("正确率", String.valueOf(roadNum));
+            resultMapList = new ArrayList<>();
+            resultMapList.add(resultMap);
+
+            List<GBEEntity> gbeEntities = new ArrayList<>();
+            gbeEntities.add(gbeEntity);
+            fileName = fileName + "-" + Constant.SHEET_NAME_GBE + ".xlsx";
+            name = Constant.SHEET_NAME_GBE;
+            datas = userResponseData.toString();
+            ExcelUtil.createExcelFile(GBEEntity.class, gbeEntities, resultMapList, new ExcelClass().contentExcel(Constant.QUEST_TYPE_GBE), fileName, Constant.SHEET_NAME_GBE);
+            //空间记忆能力测试
+        } else if (Constant.QUEST_TYPE_REM.equals(type)) {
+
+            String score = jsonObject.getString("userScore");
+            JSONArray jsonArray = jsonObject.getJSONArray("userResponseRecords");
+            List<SHAPE2Entity> shape2Entities = jsonArray.toJavaList(SHAPE2Entity.class);
+            fileName = fileName + "-" + Constant.SHEET_NAME_REM + ".xlsx";
+            name = Constant.SHEET_NAME_REM;
+            int totalTime = 0;
+            for (SHAPE2Entity shape2Entity : shape2Entities) {
+                totalTime += shape2Entity.getResponseTime();
+            }
+
+            double meanTime = 0;
+            DecimalFormat df = new DecimalFormat("######0.00");
+            if (shape2Entities.size() != 0) {
+                meanTime = Double.parseDouble(df.format(totalTime / shape2Entities.size()));
+            }
+            resultJson.put("versionNo",Constant.COGNITION_RESULT_VERSION);
+            JSONArray totalScores = new JSONArray();
+            JSONObject totalScore = new JSONObject(true);
+            score = score.replace("%","");
+            double correct = Double.valueOf(score);
+            correct = Double.parseDouble(df.format(correct));
+            totalScore.put("totalScore",correct);
+            String desc = null;
+            if (correct>90){
+                desc = "优秀等级:您的空间感很强,比如您进入新环境生活,您能够很快记住当地地理位置、方位,哪里有什么商店、医院学校之类。您的方向感很好,在出行时不会迷路,无论是去哪里,您总能找到又好又快的路线。";
+            }else if(correct>80 && correct<=90){
+                desc = "较优秀等级:您的空间感较强,进入新环境生活工作,您能够较快地记住并找到当地商店、医院、学校等地方。您的方向感较好,在出行时一般不会迷路,且能找到较好较快的出行路线。";
+            }else if(correct>60 && correct<=80){
+                desc = "一般等级:您的空间感一般,不是很强也不是很差,在一个新环境,通过一定时间的适应,您也能够较好地记住当地学校、医院、商店等的方位。您的方向感不是很好也不是很差,您在出行时一般也很少迷路,通过一定思索也能选择合适的出行路线。";
+            }else if(correct>50 && correct<=60){
+                desc = "较差等级:您的空间感较差,进入新环境生活工作,您不能够很好地记住当地商店、医院、学校等地方,需要借助一定帮助才能找到。您的方向感较差,在出行有时会迷路,找到合适的出行路线较困难。";
+            }else if(correct<=50){
+                desc = "极差等级:您的空间感极差,进入新环境生活工作,您很难记住当地商店、医院、学校等地方,在很长一段时间内需要借助帮助才能找到。您的方向感极差,在出行时可能经常会迷路,找到合适的出行路线也可能非常困难。";
+            }
+            totalScore.put("totalScoreDesc",desc);
+            totalScores.add(totalScore);
+            resultJson.put("totalScore",totalScores);
+            JSONObject ifShow = new JSONObject(true);
+            ifShow.put("totalScore",true);
+            ifShow.put("dimensions",false);
+            ifShow.put("note",false);
+            ifShow.put("radar",false);
+            ifShow.put("table",false);
+            resultJson.put("ifShow",ifShow);
+            resultDBJson = resultJson;
+
+
+
+            Map<String, String> resultMap = new LinkedHashMap<>();
+            resultMap.put("versionNo",Constant.COGNITION_RESULT_VERSION);
+            resultMap.put("totalScore",totalScore.toString());
+            resultMap.put("总分", score);
+            resultJson.put("userScore", score);
+            resultDBJson.put("总分", score);
+            resultMap.put("平均反应时", String.valueOf(meanTime));
+            resultJson.put("meanTime", String.valueOf(meanTime));
+            resultDBJson.put("平均反应时", String.valueOf(meanTime));
+            resultMapList = new ArrayList<>();
+            resultMapList.add(resultMap);
+
+            datas = jsonArray.toString();
+            ExcelUtil.createExcelFile(SHAPE2Entity.class, shape2Entities, resultMapList, new ExcelClass().contentExcel(Constant.QUEST_TYPE_REM), fileName, Constant.SHEET_NAME_REM);
+            //悬旌万里
+        } else if (Constant.QUEST_TYPE_XJWL.equals(type)) {
+            JSONObject data = jsonObject.getJSONObject("data");
+            XuanJingWanLiEntity xuanJingWanLiEntity = data.toJavaObject(XuanJingWanLiEntity.class);
+
+            fileName = fileName + "-" + Constant.SHEET_NAME_XJWL + ".xlsx";
+            name = Constant.SHEET_NAME_XJWL;
+
+            Map<String, String> resultMap = new LinkedHashMap<>();
+            resultMap.put("总分", xuanJingWanLiEntity.getFenFen());
+            resultMap.put("关卡数", xuanJingWanLiEntity.getNanNan() + "");
+            resultMap.put("正确率", xuanJingWanLiEntity.getZhengQue());
+            resultMap.put("正确个数", xuanJingWanLiEntity.getZhengZheng() + "");
+            resultMap.put("错误个数", xuanJingWanLiEntity.getCuo() + "");
+            resultJson.put("总分", xuanJingWanLiEntity.getFenFen());
+            resultJson.put("关卡数", xuanJingWanLiEntity.getNanNan() + "");
+            resultJson.put("正确率", xuanJingWanLiEntity.getZhengQue());
+            resultJson.put("正确个数", xuanJingWanLiEntity.getZhengZheng() + "");
+            resultJson.put("错误个数", xuanJingWanLiEntity.getCuo() + "");
+            resultDBJson.put("总分", xuanJingWanLiEntity.getFenFen());
+            resultDBJson.put("关卡数", xuanJingWanLiEntity.getNanNan() + "");
+            resultDBJson.put("正确率", xuanJingWanLiEntity.getZhengQue());
+            resultDBJson.put("正确个数", xuanJingWanLiEntity.getZhengZheng() + "");
+            resultDBJson.put("错误个数", xuanJingWanLiEntity.getCuo() + "");
+            resultMapList = new ArrayList<>();
+            resultMapList.add(resultMap);
+
+            datas = data.toString();
+            List<XuanJingWanLiEntity> xuanJingWanLiEntities = new ArrayList<>();
+            xuanJingWanLiEntities.add(xuanJingWanLiEntity);
+            ExcelUtil.createExcelFile(XuanJingWanLiEntity.class, xuanJingWanLiEntities, resultMapList, new ExcelClass().contentExcel(Constant.SHEET_NAME_XJWL), fileName, Constant.SHEET_NAME_XJWL);
+            //坦克洪流   海空激战
+        } else if (Constant.QUEST_TYPE_TKHL.equals(type) || Constant.QUEST_TYPE_HKJZ.equals(type)) {
+            JSONObject userResponseRecords = jsonObject.getJSONObject("userResponseRecords");
+            String levelNum = userResponseRecords.getString("levelNum");
+            String everyReactionTimes = userResponseRecords.getString("everyReactionTimes");
+            String averageSlideTimes = userResponseRecords.getString("averageSlideTimes");
+            String scores = userResponseRecords.getString("scores");
+            String correctRate = userResponseRecords.getString("correctRate");
+            HaiKongJiZhanAndTanKeHongLiuEntity haiKongJiZhanAndTanKeHongLiuEntity = new HaiKongJiZhanAndTanKeHongLiuEntity(levelNum, everyReactionTimes, averageSlideTimes, scores, correctRate);
+
+            Map<String, String> resultMap = new LinkedHashMap<>();
+            resultMap.put("关卡数", String.valueOf(levelNum));
+            resultJson.put("关卡数", String.valueOf(levelNum));
+            resultDBJson.put("关卡数", String.valueOf(levelNum));
+            resultMap.put("得分", String.valueOf(scores));
+            resultJson.put("得分", String.valueOf(scores));
+            resultDBJson.put("得分", String.valueOf(scores));
+            resultMap.put("正确率", String.valueOf(correctRate));
+            resultJson.put("正确率", String.valueOf(correctRate));
+            resultDBJson.put("正确率", String.valueOf(correctRate));
+            resultMapList = new ArrayList<>();
+            resultMapList.add(resultMap);
+
+            ArrayList<HaiKongJiZhanAndTanKeHongLiuEntity> haiKongJiZhanAndTanKeHongLiuEntities = new ArrayList<>();
+            haiKongJiZhanAndTanKeHongLiuEntities.add(haiKongJiZhanAndTanKeHongLiuEntity);
+            if (Constant.QUEST_TYPE_TKHL.equals(type)) {
+                fileName = fileName + "-" + Constant.SHEET_NAMEE_TKHL + ".xlsx";
+                name = Constant.SHEET_NAMEE_TKHL;
+                ExcelUtil.createExcelFile(HaiKongJiZhanAndTanKeHongLiuEntity.class, haiKongJiZhanAndTanKeHongLiuEntities, resultMapList, new ExcelClass().contentExcel(Constant.QUEST_TYPE_TKHL), fileName, Constant.SHEET_NAMEE_TKHL);
+            } else {
+                fileName = fileName + "-" + Constant.SHEET_NAME_HKJZ + ".xlsx";
+                name = Constant.SHEET_NAME_HKJZ;
+                ExcelUtil.createExcelFile(HaiKongJiZhanAndTanKeHongLiuEntity.class, haiKongJiZhanAndTanKeHongLiuEntities, resultMapList, new ExcelClass().contentExcel(Constant.QUEST_TYPE_HKJZ), fileName, Constant.SHEET_NAME_HKJZ);
+            }
+            datas = userResponseRecords.toString();
+            //雄鹰展翅
+        } else if (Constant.QUEST_TYPE_XYZC.equals(type)) {
+            JSONObject userResponseRecords = jsonObject.getJSONObject("userResponseRecords");
+            String levelNum = userResponseRecords.getString("levelNum");
+            String everySlideTimes = userResponseRecords.getString("everySlideTimes");
+            String averageSlideTimes = userResponseRecords.getString("averageSlideTimes");
+            String scores = userResponseRecords.getString("scores");
+            XiongYingZhanChiEntity xiongYingZhanChiEntity = new XiongYingZhanChiEntity(levelNum, everySlideTimes, averageSlideTimes, scores);
+
+            Map<String, String> resultMap = new LinkedHashMap<>();
+            resultMap.put("关卡数", String.valueOf(levelNum));
+            resultJson.put("关卡数", String.valueOf(levelNum));
+            resultDBJson.put("关卡数", String.valueOf(levelNum));
+            resultMap.put("得分", String.valueOf(scores));
+            resultJson.put("得分", String.valueOf(scores));
+            resultDBJson.put("得分", String.valueOf(scores));
+            resultMapList = new ArrayList<>();
+            resultMapList.add(resultMap);
+
+            ArrayList<XiongYingZhanChiEntity> xiongYingZhanChiEntities = new ArrayList<>();
+            xiongYingZhanChiEntities.add(xiongYingZhanChiEntity);
+
+
+            datas = userResponseRecords.toString();
+            fileName = fileName + "-" + Constant.SHEET_NAME_XYZC + ".xlsx";
+            name = Constant.SHEET_NAME_XYZC;
+            ExcelUtil.createExcelFile(XiongYingZhanChiEntity.class, xiongYingZhanChiEntities, resultMapList, new ExcelClass().contentExcel(Constant.QUEST_TYPE_XYZC), fileName, Constant.SHEET_NAME_XYZC);
+            //STTA STTB
+        } else if (Constant.QUEST_TYPE_STTA.equals(type) || Constant.QUEST_TYPE_STTB.equals(type)) {
+            String exerciseTime = jsonObject.getString("exerciseTime");
+            String realTime = jsonObject.getString("realTime");
+            String totalTime = jsonObject.getString("totalTime");
+
+            if ("NULL".equals(exerciseTime) || "NULL".equals(realTime) || "NULL".equals(totalTime)) {
+                exerciseTime = "测试不通过";
+                realTime = "测试不通过";
+                totalTime = "测试不通过";
+            }
+
+            STTEntity sttEntity = new STTEntity(exerciseTime, realTime, totalTime);
+
+            Map<String, String> resultMap = new LinkedHashMap<>();
+            resultMap.put("练习测试时间", String.valueOf(exerciseTime));
+            resultJson.put("练习测试时间", String.valueOf(exerciseTime));
+            resultDBJson.put("练习测试时间", String.valueOf(exerciseTime));
+
+            resultDBJson.put("正式测试时间", String.valueOf(realTime));
+            resultJson.put("正式测试时间", String.valueOf(realTime));
+            resultMap.put("正式测试时间", String.valueOf(realTime));
+
+            resultJson.put("总反应时间", String.valueOf(totalTime));
+            resultMap.put("总反应时间", String.valueOf(totalTime));
+            resultDBJson.put("总反应时间", String.valueOf(totalTime));
+
+            ArrayList<STTEntity> sttEntities = new ArrayList<>();
+            sttEntities.add(sttEntity);
+            if (Constant.QUEST_TYPE_STTA.equals(type)) {
+                fileName = fileName + "-" + Constant.SHEET_NAME_STTA + ".xlsx";
+                name = Constant.SHEET_NAME_STTA;
+                ExcelUtil.createExcelFile(STTEntity.class, sttEntities, resultMapList, new ExcelClass().contentExcel(Constant.QUEST_TYPE_STTA), fileName, Constant.SHEET_NAME_STTA);
+            } else {
+                fileName = fileName + "-" + Constant.SHEET_NAME_STTB + ".xlsx";
+                name = Constant.SHEET_NAME_STTB;
+                ExcelUtil.createExcelFile(STTEntity.class, sttEntities, resultMapList, new ExcelClass().contentExcel(Constant.QUEST_TYPE_STTB), fileName, Constant.SHEET_NAME_STTB);
+            }
+            //数字广度测验
+        } else if (Constant.QUEST_TYPE_DST.equals(type)) {
+            JSONObject result = jsonObject.getJSONObject("result");
+            String aescScore = result.getString("AESCScore");
+            String descScore = result.getString("DESCScore");
+            JSONArray aesc = result.getJSONArray("AESC"); //正序
+            JSONArray desc = result.getJSONArray("DESC"); //倒叙
+
+            ArrayList<DSTEntity> dstEntities = new ArrayList<>();
+            List<DSTEntity> aescEntities = aesc.toJavaList(DSTEntity.class);
+            List<DSTEntity> descEntities = desc.toJavaList(DSTEntity.class);
+            dstEntities.addAll(aescEntities);
+            dstEntities.addAll(descEntities);
+
+            Map<String, String> resultMap = new LinkedHashMap<>();
+            resultMap.put("顺序成绩", String.valueOf(aescScore));
+            resultJson.put("顺序成绩", String.valueOf(aescScore));
+            resultDBJson.put("顺序成绩", String.valueOf(aescScore));
+            resultMap.put("倒序成绩", String.valueOf(descScore));
+            resultJson.put("倒序成绩", String.valueOf(descScore));
+            resultDBJson.put("倒序成绩", String.valueOf(descScore));
+            resultMapList = new ArrayList<>();
+            resultMapList.add(resultMap);
+
+            datas = JSONArray.toJSONString(dstEntities);
+            fileName = fileName + "-" + Constant.SHEET_NAME_DST + ".xlsx";
+            name = Constant.SHEET_NAME_DST;
+            ExcelUtil.createExcelFile(DSTEntity.class, dstEntities, resultMapList, new ExcelClass().contentExcel(Constant.QUEST_TYPE_DST), fileName, Constant.SHEET_NAME_DST);
+
+        } else if (Constant.QUEST_TYPE_BSNTask.equals(type)) {
+            JSONObject result = jsonObject.getJSONObject("result");
+            String rightNum = result.getString("rightNum");
+            String tipNum = result.getString("tipNum");
+            String identifyNum = result.getString("identifyNum");
+            String errorNum = result.getString("errorNum");
+            JSONArray picList = result.getJSONArray("picList");
+
+            List<BSNTaskEntity> bsnTaskEntities = picList.toJavaList(BSNTaskEntity.class);
+
+            Map<String, String> resultMap = new LinkedHashMap<>();
+            resultMap.put("正确个数", String.valueOf(rightNum));
+            resultJson.put("正确个数", String.valueOf(rightNum));
+            resultDBJson.put("正确个数", String.valueOf(rightNum));
+            resultMap.put("提示个数", String.valueOf(tipNum));
+            resultJson.put("提示个数", String.valueOf(tipNum));
+            resultDBJson.put("提示个数", String.valueOf(tipNum));
+            resultMap.put("辨认个数", String.valueOf(identifyNum));
+            resultJson.put("辨认个数", String.valueOf(identifyNum));
+            resultDBJson.put("辨认个数", String.valueOf(identifyNum));
+            resultMap.put("错误个数", String.valueOf(errorNum));
+            resultJson.put("错误个数", String.valueOf(errorNum));
+            resultDBJson.put("错误个数", String.valueOf(errorNum));
+            resultMapList = new ArrayList<>();
+            resultMapList.add(resultMap);
+
+            datas = JSONArray.toJSONString(bsnTaskEntities);
+            fileName = fileName + "-" + Constant.SHEET_NAME_BSNTask + ".xlsx";
+            name = Constant.SHEET_NAME_BSNTask;
+            ExcelUtil.createExcelFile(BSNTaskEntity.class, bsnTaskEntities, resultMapList, new ExcelClass().contentExcel(Constant.QUEST_TYPE_BSNTask), fileName, Constant.SHEET_NAME_BSNTask);
+
+        } else if (Constant.QUEST_TYPE_AMWSTask.equals(type)) {
+            JSONObject result = jsonObject.getJSONObject("result");
+            String num = result.getString("num");
+            ObjectEntity num1 = new ObjectEntity("成绩", num);
+
+            ArrayList<ObjectEntity> objects = new ArrayList<>();
+            objects.add(num1);
+
+            Map<String, String> resultMap = new HashMap<>();
+            resultMap.put("成绩", String.valueOf(num));
+            resultJson.put("成绩", String.valueOf(num));
+            resultDBJson.put("成绩", String.valueOf(num));
+
+            fileName = fileName + "-" + Constant.SHEET_NAME_AMWSTask + ".xlsx";
+            name = Constant.SHEET_NAME_AMWSTask;
+            ExcelUtil.createExcelFile(ObjectEntity.class, objects, resultMapList, new ExcelClass().contentExcel(Constant.QUEST_TYPE_AMWSTask), fileName, Constant.SHEET_NAME_AMWSTask);
+
+        } else if (Constant.QUEST_TYPE_ETB01.equals(type)) {
+            List<ETB01Entity> etb01Entities = jsonObject.getJSONArray("data").toJavaList(ETB01Entity.class);
+            JSONObject result = jsonObject.getJSONObject("result");
+            String totalResult = result.getString("totalResult");
+            JSONObject happy = result.getJSONObject("happy");
+            JSONObject fear = result.getJSONObject("fear");
+            JSONObject angry = result.getJSONObject("angry");
+            JSONObject disgust = result.getJSONObject("disgust");
+            JSONObject sad = result.getJSONObject("sad");
+            JSONObject surprise = result.getJSONObject("surprise");
+
+            Map<String, String> resultMap = new LinkedHashMap<>();
+            resultMap.put("总正确率", totalResult);
+            resultJson.put("总正确率", totalResult);
+            resultDBJson.put("总正确率", totalResult);
+            resultMap.put("开心强度1正确率", String.valueOf(happy.get("level1")));
+            resultMap.put("开心强度2正确率", String.valueOf(happy.get("level2")));
+            resultMap.put("开心强度3正确率", String.valueOf(happy.get("level3")));
+            resultMap.put("开心强度4正确率", String.valueOf(happy.get("level4")));
+
+            resultMap.put("害怕强度1正确率", String.valueOf(fear.get("level1")));
+            resultMap.put("害怕强度2正确率", String.valueOf(fear.get("level2")));
+            resultMap.put("害怕强度3正确率", String.valueOf(fear.get("level3")));
+            resultMap.put("害怕强度4正确率", String.valueOf(fear.get("level4")));
+
+            resultMap.put("生气强度1正确率", String.valueOf(angry.get("level1")));
+            resultMap.put("生气强度2正确率", String.valueOf(angry.get("level2")));
+            resultMap.put("生气强度3正确率", String.valueOf(angry.get("level3")));
+            resultMap.put("生气强度4正确率", String.valueOf(angry.get("level4")));
+
+            resultMap.put("厌恶强度1正确率", String.valueOf(disgust.get("level1")));
+            resultMap.put("厌恶强度2正确率", String.valueOf(disgust.get("level2")));
+            resultMap.put("厌恶强度3正确率", String.valueOf(disgust.get("level3")));
+            resultMap.put("厌恶强度4正确率", String.valueOf(disgust.get("level4")));
+
+            resultMap.put("悲伤强度1正确率", String.valueOf(sad.get("level1")));
+            resultMap.put("悲伤强度2正确率", String.valueOf(sad.get("level2")));
+            resultMap.put("悲伤强度3正确率", String.valueOf(sad.get("level3")));
+            resultMap.put("悲伤强度4正确率", String.valueOf(sad.get("level4")));
+
+            resultMap.put("惊讶强度1正确率", String.valueOf(surprise.get("level1")));
+            resultMap.put("惊讶强度2正确率", String.valueOf(surprise.get("level2")));
+            resultMap.put("惊讶强度3正确率", String.valueOf(surprise.get("level3")));
+            resultMap.put("惊讶强度4正确率", String.valueOf(surprise.get("level4")));
+
+            resultDBJson.put("开心强度1正确率", String.valueOf(happy.get("level1")));
+            resultDBJson.put("开心强度2正确率", String.valueOf(happy.get("level2")));
+            resultDBJson.put("开心强度3正确率", String.valueOf(happy.get("level3")));
+            resultDBJson.put("开心强度4正确率", String.valueOf(happy.get("level4")));
+
+            resultDBJson.put("害怕强度1正确率", String.valueOf(fear.get("level1")));
+            resultDBJson.put("害怕强度2正确率", String.valueOf(fear.get("level2")));
+            resultDBJson.put("害怕强度3正确率", String.valueOf(fear.get("level3")));
+            resultDBJson.put("害怕强度4正确率", String.valueOf(fear.get("level4")));
+
+            resultDBJson.put("生气强度1正确率", String.valueOf(angry.get("level1")));
+            resultDBJson.put("生气强度2正确率", String.valueOf(angry.get("level2")));
+            resultDBJson.put("生气强度3正确率", String.valueOf(angry.get("level3")));
+            resultDBJson.put("生气强度4正确率", String.valueOf(angry.get("level4")));
+
+            resultDBJson.put("厌恶强度1正确率", String.valueOf(disgust.get("level1")));
+            resultDBJson.put("厌恶强度2正确率", String.valueOf(disgust.get("level2")));
+            resultDBJson.put("厌恶强度3正确率", String.valueOf(disgust.get("level3")));
+            resultDBJson.put("厌恶强度4正确率", String.valueOf(disgust.get("level4")));
+
+            resultDBJson.put("悲伤强度1正确率", String.valueOf(sad.get("level1")));
+            resultDBJson.put("悲伤强度2正确率", String.valueOf(sad.get("level2")));
+            resultDBJson.put("悲伤强度3正确率", String.valueOf(sad.get("level3")));
+            resultDBJson.put("悲伤强度4正确率", String.valueOf(sad.get("level4")));
+
+            resultDBJson.put("惊讶强度1正确率", String.valueOf(surprise.get("level1")));
+            resultDBJson.put("惊讶强度2正确率", String.valueOf(surprise.get("level2")));
+            resultDBJson.put("惊讶强度3正确率", String.valueOf(surprise.get("level3")));
+            resultDBJson.put("惊讶强度4正确率", String.valueOf(surprise.get("level4")));
+
+            resultMapList = new ArrayList<>();
+            resultMapList.add(resultMap);
+
+            datas = JSONArray.toJSONString(etb01Entities);
+            fileName = fileName + "-" + Constant.SHEET_NAME_ETB01 + ".xlsx";
+            name = Constant.SHEET_NAME_ETB01;
+            ExcelUtil.createExcelFile(ETB01Entity.class, etb01Entities, resultMapList, new ExcelClass().contentExcel(Constant.QUEST_TYPE_ETB01), fileName, Constant.SHEET_NAME_ETB01);
+        } else if (Constant.QUEST_TYPE_ECAT.equals(type)) {
+            List<ECATEntity> ecatEntities = jsonObject.getJSONArray("data").toJavaList(ECATEntity.class);
+            JSONObject result = jsonObject.getJSONObject("result");
+            String posNum = result.getString("posNum");
+            String negNum = result.getString("negNum");
+            String posAverageTime = result.getString("posAverageTime");
+            String negAverageTime = result.getString("negAverageTime");
+
+
+            Map<String, String> resultMap = new LinkedHashMap<>();
+            resultMap.put("积极词语个数", posNum);
+            resultJson.put("积极词语个数", posNum);
+            resultDBJson.put("积极词语个数", posNum);
+
+            resultMap.put("消极词语个数", negNum);
+            resultJson.put("消极词语个数", negNum);
+            resultDBJson.put("消极词语个数", negNum);
+
+            resultMap.put("积极词语平均反应时", posAverageTime);
+            resultJson.put("积极词语平均反应时", posAverageTime);
+            resultDBJson.put("积极词语平均反应时", posAverageTime);
+
+            resultMap.put("消极词语平均反应时", negAverageTime);
+            resultJson.put("消极词语平均反应时", negAverageTime);
+            resultDBJson.put("消极词语平均反应时", negAverageTime);
+
+            resultMapList = new ArrayList<>();
+            resultMapList.add(resultMap);
+
+            datas = JSONArray.toJSONString(ecatEntities);
+            fileName = fileName + "-" + Constant.SHEET_NAME_ECAT + ".xlsx";
+            name = Constant.SHEET_NAME_ECAT;
+            ExcelUtil.createExcelFile(ECATEntity.class, ecatEntities, resultMapList, new ExcelClass().contentExcel(Constant.QUEST_TYPE_ECAT), fileName, Constant.SHEET_NAME_ECAT);
+        } else if (Constant.QUEST_TYPE_EREC.equals(type)) {
+            JSONObject data = jsonObject.getJSONObject("data");
+            String totalWords = data.getString("totalWords");
+            String positiveWordCount = data.getString("positiveWordCount");
+            String negtiveWordCount = data.getString("negtiveWordCount");
+            JSONObject result = jsonObject.getJSONObject("result");
+            String posCorrectRate = result.getString("posCorrectRate");
+            String negCorrectRate = result.getString("negCorrectRate");
+            String totalCorrectRate = result.getString("totalCorrectRate");
+
+            Map<String, String> resultMap = new LinkedHashMap<>();
+            resultMap.put("总体正确率", totalCorrectRate);
+            resultJson.put("总体正确率", totalCorrectRate);
+            resultDBJson.put("总体正确率", totalCorrectRate);
+            resultMap.put("积极词语的正确率", posCorrectRate);
+            resultJson.put("积极词语的正确率", posCorrectRate);
+            resultDBJson.put("积极词语的正确率", posCorrectRate);
+            resultMap.put("消极词语的正确率", negCorrectRate);
+            resultJson.put("消极词语的正确率", negCorrectRate);
+            resultDBJson.put("消极词语的正确率", negCorrectRate);
+
+            resultMapList = new ArrayList<>();
+            resultMapList.add(resultMap);
+
+            ObjectEntity totalObjectEntity = new ObjectEntity("总词数", totalWords);
+            ObjectEntity posObjectEntity = new ObjectEntity("积极词语个数", positiveWordCount);
+            ObjectEntity negObjectEntity = new ObjectEntity("消极词语个数", negtiveWordCount);
+            ArrayList<ObjectEntity> objects = new ArrayList<>();
+            objects.add(totalObjectEntity);
+            objects.add(posObjectEntity);
+            objects.add(negObjectEntity);
+
+            fileName = fileName + "-" + Constant.SHEET_NAME_EREC + ".xlsx";
+            name = Constant.SHEET_NAME_EREC;
+            ExcelUtil.createExcelFile(ObjectEntity.class, objects, resultMapList, new ExcelClass().contentExcel(Constant.QUEST_TYPE_EREC), fileName, Constant.SHEET_NAME_EREC);
+        } else if (Constant.QUEST_TYPE_EMEM.equals(type)) {
+            List<EMEMEntity> ememEntities = jsonObject.getJSONArray("data").toJavaList(EMEMEntity.class);
+            JSONObject result = jsonObject.getJSONObject("result");
+            String posCorrectRate = result.getString("posCorrectRate");
+            String negCorrectRate = result.getString("negCorrectRate");
+            String totalCorrectRate = result.getString("totalCorrectRate");
+
+            Map<String, String> resultMap = new LinkedHashMap<>();
+            resultMap.put("总体正确率", totalCorrectRate);
+            resultJson.put("总体正确率", totalCorrectRate);
+            resultDBJson.put("总体正确率", totalCorrectRate);
+            resultMap.put("积极词语的正确率", posCorrectRate);
+            resultJson.put("积极词语的正确率", posCorrectRate);
+            resultDBJson.put("积极词语的正确率", posCorrectRate);
+            resultMap.put("消极词语的正确率", negCorrectRate);
+            resultJson.put("消极词语的正确率", negCorrectRate);
+            resultDBJson.put("消极词语的正确率", negCorrectRate);
+
+            resultMapList = new ArrayList<>();
+            resultMapList.add(resultMap);
+
+            fileName = fileName + "-" + Constant.SHEET_NAME_EMEM + ".xlsx";
+            name = Constant.SHEET_NAME_EMEM;
+            ExcelUtil.createExcelFile(EMEMEntity.class, ememEntities, resultMapList, new ExcelClass().contentExcel(Constant.QUEST_TYPE_EMEM), fileName, Constant.SHEET_NAME_EMEM);
+        } else if (Constant.QUEST_TYPE_EALL.equals(type)) {
+            JSONObject ecat = jsonObject.getJSONObject("ECAT");
+            JSONObject erec = jsonObject.getJSONObject("EREC");
+            JSONObject emem = jsonObject.getJSONObject("EMEM");
+            //ECAT计算
+            List<ECATEntity> ecatEntities = ecat.getJSONArray("data").toJavaList(ECATEntity.class);
+            JSONObject ecatResult = ecat.getJSONObject("result");
+            String posNum = ecatResult.getString("posNum");
+            String negNum = ecatResult.getString("negNum");
+            String posAverageTime = ecatResult.getString("posAverageTime");
+            String negAverageTime = ecatResult.getString("negAverageTime");
+
+            JSONObject resultMapJson = new JSONObject(true);
+            HashMap<String, String> ecatReturnResult = new HashMap<>();
+            Map<String, String> ecatResultMap = new LinkedHashMap<>();
+            ecatResultMap.put("ECAT积极词语个数", posNum);
+            resultDBJson.put("ECAT积极词语个数", posNum);
+            ecatReturnResult.put("ECAT积极词语个数", posNum);
+
+            ecatResultMap.put("ECAT消极词语个数", negNum);
+            resultDBJson.put("ECAT消极词语个数", negNum);
+            ecatReturnResult.put("ECAT消极词语个数", negNum);
+
+            ecatResultMap.put("ECAT积极词语平均反应时", posAverageTime);
+            resultDBJson.put("ECAT积极词语平均反应时", posAverageTime);
+            ecatReturnResult.put("ECAT积极词语平均反应时", posAverageTime);
+
+            ecatResultMap.put("ECAT消极词语平均反应时", negAverageTime);
+            resultDBJson.put("ECAT消极词语平均反应时", negAverageTime);
+            ecatReturnResult.put("ECAT消极词语平均反应时", negAverageTime);
+
+            resultJson.put("ECAT", ecatReturnResult);
+            resultMapJson.put("ECAT", ecatResultMap);
+            //EREC
+            JSONObject data = erec.getJSONObject("data");
+            String totalWords = data.getString("totalWords");
+            String positiveWordCount = data.getString("positiveWordCount");
+            String negtiveWordCount = data.getString("negtiveWordCount");
+            JSONObject result = erec.getJSONObject("result");
+            String posCorrectRate = result.getString("posCorrectRate");
+            String negCorrectRate = result.getString("negCorrectRate");
+            String totalCorrectRate = result.getString("totalCorrectRate");
+
+            Map<String, String> erecResultMap = new LinkedHashMap<>();
+            HashMap<String, String> erecReturnResult = new HashMap<>();
+            erecReturnResult.put("EREC总体正确率", totalCorrectRate);
+            resultDBJson.put("EREC总体正确率", totalCorrectRate);
+            erecResultMap.put("EREC积极词语的正确率", posCorrectRate);
+            erecReturnResult.put("EREC积极词语的正确率", posCorrectRate);
+            resultDBJson.put("EREC积极词语的正确率", posCorrectRate);
+            erecResultMap.put("EREC消极词语的正确率", negCorrectRate);
+            erecReturnResult.put("EREC消极词语的正确率", negCorrectRate);
+            resultDBJson.put("EREC消极词语的正确率", negCorrectRate);
+
+            resultJson.put("EREC", erecReturnResult);
+            resultMapJson.put("EREC", erecResultMap);
+
+            ObjectEntity totalObjectEntity = new ObjectEntity("总词数", totalWords);
+            ObjectEntity posObjectEntity = new ObjectEntity("积极词语个数", positiveWordCount);
+            ObjectEntity negObjectEntity = new ObjectEntity("消极词语个数", negtiveWordCount);
+            ArrayList<ObjectEntity> erecObjects = new ArrayList<>();
+            erecObjects.add(totalObjectEntity);
+            erecObjects.add(posObjectEntity);
+            erecObjects.add(negObjectEntity);
+            //EMEM
+            List<EMEMEntity> ememEntities = emem.getJSONArray("data").toJavaList(EMEMEntity.class);
+            JSONObject ememResult = emem.getJSONObject("result");
+            String ememPosCorrectRate = ememResult.getString("posCorrectRate");
+            String ememNegCorrectRate = ememResult.getString("negCorrectRate");
+            String ememTotalCorrectRate = ememResult.getString("totalCorrectRate");
+
+            Map<String, String> ememResultMap = new LinkedHashMap<>();
+            HashMap<String, String> ememReturnResult = new HashMap<>();
+            ememResultMap.put("EMEM总体正确率", ememTotalCorrectRate);
+            ememReturnResult.put("EMEM总体正确率", ememTotalCorrectRate);
+            resultDBJson.put("EMEM总体正确率", ememTotalCorrectRate);
+            ememResultMap.put("EMEM积极词语的正确率", ememPosCorrectRate);
+            ememReturnResult.put("EMEM积极词语的正确率", ememPosCorrectRate);
+            resultDBJson.put("EMEM积极词语的正确率", ememPosCorrectRate);
+            ememResultMap.put("EMEM消极词语的正确率", ememNegCorrectRate);
+            ememReturnResult.put("EMEM消极词语的正确率", ememNegCorrectRate);
+            resultDBJson.put("EMEM消极词语的正确率", ememNegCorrectRate);
+
+            resultJson.put("EMEM", ememReturnResult);
+            resultMapJson.put("EMEM", ememResultMap);
+
+            ArrayList<Class> classes = new ArrayList<>();
+            //实体类
+            classes.add(ECATEntity.class);
+            classes.add(ObjectEntity.class);
+            classes.add(EMEMEntity.class);
+            //答题记录
+            Map<String, List> objs = new HashMap<>();
+            objs.put("ECAT", ecatEntities.stream().sorted(Comparator.comparing(ECATEntity::getIndex, Comparator.comparingInt(Integer::parseInt))).collect(Collectors.toList()));
+            objs.put("EREC", erecObjects);
+            objs.put("EMEM", ememEntities.stream().sorted(Comparator.comparing(EMEMEntity::getIndex, Comparator.comparingInt(Integer::parseInt))).collect(Collectors.toList()));
+            //表头
+            List<Map<Integer, List<ExcelBean>>> tableHeader = new ArrayList<>();
+            tableHeader.add(new ExcelClass().contentExcel(Constant.QUEST_TYPE_ECAT));
+            tableHeader.add(new ExcelClass().contentExcel(Constant.QUEST_TYPE_EREC));
+            tableHeader.add(new ExcelClass().contentExcel(Constant.QUEST_TYPE_EMEM));
+            fileName = fileName + "-" + Constant.SHEET_NAME_EALL + ".xlsx";
+            name = Constant.SHEET_NAME_EALL;
+            ExcelUtil.createEALLExcelFile(classes, objs, resultMapJson, tableHeader, fileName, Constant.SHEET_NAME_EALL);
+        } else if (Constant.QUEST_TYPE_FDOT.equals(type)) {
+            List<FDOTEntity> block = jsonObject.getJSONArray("data").toJavaList(FDOTEntity.class);
+            JSONObject result = jsonObject.getJSONObject("result");
+            JSONObject block1Result = result.getJSONObject("block1");
+            JSONObject block2Result = result.getJSONObject("block2");
+            String block1TotalCorrectRate = block1Result.getString("totalCorrectRate");
+            String block1PosCorrectRate = block1Result.getString("posCorrectRate");
+            String block1PosAverageTime = block1Result.getString("posAverageTime");
+            String block1NegCorrectRate = block1Result.getString("negCorrectRate");
+            String block1NegAverageTime = block1Result.getString("negAverageTime");
+            String block1NeuCorrectRate = block1Result.getString("neuCorrectRate");
+            String block1NeuAverageTime = block1Result.getString("neuAverageTime");
+
+            String block2TotalCorrectRate = block2Result.getString("totalCorrectRate");
+            String block2PosCorrectRate = block2Result.getString("posCorrectRate");
+            String block2PosAverageTime = block2Result.getString("posAverageTime");
+            String block2NegCorrectRate = block2Result.getString("negCorrectRate");
+            String block2NegAverageTime = block2Result.getString("negAverageTime");
+            String block2NeuCorrectRate = block2Result.getString("neuCorrectRate");
+            String block2NeuAverageTime = block2Result.getString("neuAverageTime");
+
+            Map<String, String> resultMap = new LinkedHashMap<>();
+            resultMap.put("block1总体正确率", block1TotalCorrectRate);
+            resultJson.put("block1总体正确率", block1TotalCorrectRate);
+            resultDBJson.put("block1总体正确率", block1TotalCorrectRate);
+
+            resultMap.put("block2总体正确率", block2TotalCorrectRate);
+            resultJson.put("block2总体正确率", block2TotalCorrectRate);
+            resultDBJson.put("block2总体正确率", block2TotalCorrectRate);
+
+            resultMap.put("block1积极正确率", block1PosCorrectRate);
+            resultMap.put("block1积极反应时", block1PosAverageTime);
+            resultMap.put("block1消极正确率", block1NegCorrectRate);
+            resultMap.put("block1消极反应时", block1NegAverageTime);
+            resultMap.put("block1中性正确率", block1NeuCorrectRate);
+            resultMap.put("block1中性反应时", block1NeuAverageTime);
+
+            resultMap.put("block2积极正确率", block2PosCorrectRate);
+            resultMap.put("block2积极反应时", block2PosAverageTime);
+            resultMap.put("block2消极正确率", block2NegCorrectRate);
+            resultMap.put("block2消极反应时", block2NegAverageTime);
+            resultMap.put("block2中性正确率", block2NeuCorrectRate);
+            resultMap.put("block2中性反应时", block2NeuAverageTime);
+
+            resultDBJson.put("block1积极正确率", block1PosCorrectRate);
+            resultDBJson.put("block1积极反应时", block1PosAverageTime);
+            resultDBJson.put("block1消极正确率", block1NegCorrectRate);
+            resultDBJson.put("block1消极反应时", block1NegAverageTime);
+            resultDBJson.put("block1中性正确率", block1NeuCorrectRate);
+            resultDBJson.put("block1中性反应时", block1NeuAverageTime);
+
+            resultDBJson.put("block2积极正确率", block2PosCorrectRate);
+            resultDBJson.put("block2积极反应时", block2PosAverageTime);
+            resultDBJson.put("block2消极正确率", block2NegCorrectRate);
+            resultDBJson.put("block2消极反应时", block2NegAverageTime);
+            resultDBJson.put("block2中性正确率", block2NeuCorrectRate);
+            resultDBJson.put("block2中性反应时", block2NeuAverageTime);
+
+            resultMapList = new ArrayList<>();
+            resultMapList.add(resultMap);
+
+
+            fileName = fileName + "-" + Constant.SHEET_NAME_FDOT + ".xlsx";
+            name = Constant.SHEET_NAME_FDOT;
+            ExcelUtil.createExcelFile(FDOTEntity.class, block, resultMapList, new ExcelClass().contentExcel(Constant.QUEST_TYPE_FDOT), fileName, Constant.SHEET_NAME_FDOT);
+            //zb两个认知任务
+        } else if (Constant.QUEST_TYPE_ZBMHA.equals(type)) {
+            //向前台推送消息,提示任务已结束
+            String url = "ws://127.0.0.1:54378/ws";
+            MyClient myClient = new MyClient(url);
+            log.info("连接消息通道" + LocalDateTime.now());
+            if (!myClient.connectBlocking()) {
+                log.info("连接消息通道失败" + LocalDateTime.now());
+            }
+
+            JSONObject dataJson = new JSONObject(true);
+            dataJson.put("flag", "end");
+            dataJson.put("testDate", testTime);
+            dataJson.put("date", LocalDateTime.now().toString());
+            myClient.send(dataJson.toString());
+            log.info("发送结束指令" + LocalDateTime.now());
+            Thread.sleep(500);
+            log.info("测试结束-关闭客户端" + LocalDateTime.now());
+            myClient.close();
+            JSONObject SHAPE = jsonObject.getJSONObject("SHAPE");
+
+            JSONArray shape2EntitieList = SHAPE.getJSONArray("userResponseRecords");
+            List<SHAPE2Entity> shape2Entities = shape2EntitieList.toJavaList(SHAPE2Entity.class);
+            //精神障碍风险4、5等级个数
+            int x = 0;
+            for (SHAPE2Entity shape2Entity : shape2Entities) {
+                if (shape2Entity.getDiff().equals("360") || shape2Entity.getDiff().equals("180")) {
+                    if (shape2Entity.getRightOrWrong().equals("Right")) {
+                        x++;
+                    }
+                }
+            }
+            DecimalFormat df = new DecimalFormat("######0.00");
+            String SZscore = String.valueOf(Double.parseDouble(df.format(x * 100 / 40)));
+            Map<String, String> resultMap = new LinkedHashMap<>();
+
+            JSONObject ETB01 = jsonObject.getJSONObject("ETB01");
+
+            List<ETB01Entity> etb01Entities = ETB01.getJSONArray("data").toJavaList(ETB01Entity.class);
+            JSONObject result = ETB01.getJSONObject("result");
+            JSONObject happy = result.getJSONObject("happy");
+            double happy1 = Double.parseDouble(happy.getString("level1").replace("%", ""));
+            double happy2 = Double.parseDouble(happy.getString("level2").replace("%", ""));
+            double happy3 = Double.parseDouble(happy.getString("level3").replace("%", ""));
+            double happy4 = Double.parseDouble(happy.getString("level4").replace("%", ""));
+            double happySum = happy1 + happy2 + happy3 + happy4;
+            String D1score = String.valueOf(Double.parseDouble(df.format(happySum / 4)));
+            resultMap.put("抑郁情绪指标1", D1score);
+            resultJson.put("抑郁情绪指标1", D1score);
+            resultDBJson.put("抑郁情绪指标1", D1score);
+
+            JSONObject surprise = result.getJSONObject("surprise");
+            double surprise1 = Double.parseDouble(surprise.getString("level1").replace("%", ""));
+            double surprise2 = Double.parseDouble(surprise.getString("level2").replace("%", ""));
+            double surprise3 = Double.parseDouble(surprise.getString("level3").replace("%", ""));
+            double surprise4 = Double.parseDouble(surprise.getString("level4").replace("%", ""));
+            double surpriseSum = surprise1 + surprise2 + surprise3 + surprise4;
+            String D2score = String.valueOf(Double.parseDouble(df.format(surpriseSum / 4)));
+            resultMap.put("抑郁情绪指标2", D2score);
+            resultJson.put("抑郁情绪指标2", D2score);
+            resultDBJson.put("抑郁情绪指标2", D2score);
+
+            resultMap.put("精神障碍风险", SZscore);
+            resultJson.put("精神障碍风险", SZscore);
+            resultDBJson.put("精神障碍风险", SZscore);
+            if (Double.parseDouble(df.format(x * 100 / 40)) >= 65) {
+                resultMap.put("精神障碍风险结论", "此项得分正常");
+                resultJson.put("精神障碍风险结论", "此项得分正常");
+                resultDBJson.put("精神障碍风险结论", "此项得分正常");
+            } else {
+                resultMap.put("精神障碍风险结论", "此项得分偏低");
+                resultJson.put("精神障碍风险结论", "此项得分偏低");
+                resultDBJson.put("精神障碍风险结论", "此项得分偏低");
+            }
+
+            double sum = Double.parseDouble(df.format((happySum / 4 + surpriseSum / 4) / 2));
+            resultMap.put("抑郁情绪", String.valueOf(sum));
+            resultJson.put("抑郁情绪", String.valueOf(sum));
+            resultDBJson.put("抑郁情绪", String.valueOf(sum));
+            if (sum >= 65) {
+                resultMap.put("抑郁情绪结论", "此项得分正常");
+                resultJson.put("抑郁情绪结论", "此项得分正常");
+                resultDBJson.put("抑郁情绪结论", "此项得分正常");
+
+            } else {
+                resultMap.put("抑郁情绪结论", "此项得分偏低");
+                resultJson.put("抑郁情绪结论", "此项得分偏低");
+                resultDBJson.put("抑郁情绪结论", "此项得分偏低");
+            }
+
+            if (Double.parseDouble(df.format(x * 100 / 40)) >= 65 && Double.parseDouble(df.format(happySum / 4)) >= 65 && Double.parseDouble(df.format(surpriseSum / 4)) >= 65) {
+                resultMap.put("结论", "您的心理健康状态良好,无明显抑郁情绪,精神障碍风险较低,请继续保持。");
+                resultJson.put("结论", "您的心理健康状态良好,无明显抑郁情绪,精神障碍风险较低,请继续保持。");
+                resultDBJson.put("结论", "您的心理健康状态良好,无明显抑郁情绪,精神障碍风险较低,请继续保持。");
+                resultMap.put("是否合格", "合格");
+                resultJson.put("是否合格", "合格");
+                resultDBJson.put("是否合格", "合格");
+            } else {
+                resultMap.put("结论", "测试表明,您有明显抑郁情绪或具有较高精神障碍风险,请您咨询专业人员,并到指定医院复查。");
+                resultJson.put("结论", "测试表明,您有明显抑郁情绪或具有较高精神障碍风险,请您咨询专业人员,并到指定医院复查。");
+                resultDBJson.put("结论", "测试表明,您有明显抑郁情绪或具有较高精神障碍风险,请您咨询专业人员,并到指定医院复查。");
+                resultMap.put("是否合格", "不合格");
+                resultJson.put("是否合格", "不合格");
+                resultDBJson.put("是否合格", "不合格");
+            }
+
+            resultMapList = new ArrayList<>();
+            resultMapList.add(resultMap);
+
+            datas = JSONArray.toJSONString(shape2Entities) + JSONArray.toJSONString(etb01Entities);
+            name = Constant.SHEET_NAME_ZBMHA;
+            ServerController.TASK_STATUS.put(phone, "2");
+            //视觉模拟渴求
+        }else if (Constant.QUEST_TYPE_VAS.equals(type)) {
+            resultMapList = new ArrayList<>();
+            System.out.println(jsonObject);
+            JSONArray jsonArray = jsonObject.getJSONArray("data");
+            List<ObjectEntity> dataList = jsonArray.toJavaList(ObjectEntity.class);
+            Map<String, String> resultMap = new LinkedHashMap<>();
+            resultMap.put("总分", dataList.get(0).getValue());
+            resultDBJson.put("总分", dataList.get(0).getValue());
+            resultJson.put("总分", dataList.get(0).getValue());
+            resultMapList.add(resultMap);
+            fileName = fileName + "-" + Constant.SHEET_NAME_VAS + ".xlsx";
+            name = Constant.SHEET_NAME_VAS;
+            datas = jsonArray.toString();
+            ExcelUtil.createExcelFile(ObjectEntity.class, dataList, resultMapList, new ExcelClass().contentExcel(Constant.QUEST_TYPE_MMSE), fileName, Constant.SHEET_NAME_VAS);
+            //Stroop试验
+        }else if (Constant.QUEST_TYPE_STROOP.equals(type)) {
+            resultMapList = new ArrayList<>();
+            System.out.println(jsonObject);
+            JSONArray jsonArray = jsonObject.getJSONArray("data");
+            List<StroopEntity> stroopEntities = jsonArray.toJavaList(StroopEntity.class);
+            Map<String, String> resultMap = new LinkedHashMap<>();
+            resultMap.put("StroopD完成时间(秒)", stroopEntities.get(0).getFinishTime());
+            resultDBJson.put("StroopD完成时间(秒)", stroopEntities.get(0).getFinishTime());
+            resultJson.put("StroopD完成时间(秒)", stroopEntities.get(0).getFinishTime());
+            resultMap.put("StroopD错误数目", stroopEntities.get(0).getErrorNumber());
+            resultDBJson.put("StroopD错误数目", stroopEntities.get(0).getErrorNumber());
+            resultJson.put("StroopD错误数目", stroopEntities.get(0).getErrorNumber());
+            resultMapList.add(resultMap);
+            Map<String, String> resultMap2 = new LinkedHashMap<>();
+            resultMap2.put("StroopW完成时间(秒)", stroopEntities.get(1).getFinishTime());
+            resultDBJson.put("StroopW完成时间(秒)", stroopEntities.get(1).getFinishTime());
+            resultJson.put("StroopW完成时间(秒)", stroopEntities.get(1).getFinishTime());
+            resultMap2.put("StroopW错误数目", stroopEntities.get(1).getErrorNumber());
+            resultDBJson.put("StroopW错误数目", stroopEntities.get(1).getErrorNumber());
+            resultJson.put("StroopW错误数目", stroopEntities.get(1).getErrorNumber());
+            resultMapList.add(resultMap2);
+            Map<String, String> resultMap3 = new LinkedHashMap<>();
+            resultMap3.put("StroopC完成时间(秒)", stroopEntities.get(2).getFinishTime());
+            resultDBJson.put("StroopC完成时间(秒)", stroopEntities.get(2).getFinishTime());
+            resultJson.put("StroopC完成时间(秒)", stroopEntities.get(2).getFinishTime());
+            resultMap3.put("StroopC错误数目", stroopEntities.get(2).getErrorNumber());
+            resultDBJson.put("StroopC错误数目", stroopEntities.get(2).getErrorNumber());
+            resultJson.put("StroopC错误数目", stroopEntities.get(2).getErrorNumber());
+            resultMapList.add(resultMap3);
+            fileName = fileName + "-" + Constant.SHEET_NAME_STROOP + ".xlsx";
+            name = Constant.SHEET_NAME_STROOP;
+            datas = jsonArray.toString();
+            ExcelUtil.createExcelFile(StroopEntity.class, stroopEntities, resultMapList, new ExcelClass().contentExcel(Constant.QUEST_TYPE_STROOP), fileName, Constant.SHEET_NAME_STROOP);
+            //数字符号转换测验
+        } else if (Constant.QUEST_TYPE_DSST.equals(type)) {
+            String score = jsonObject.getString("score");
+            b64Img = jsonObject.getString("Img");
+            fileName = fileName + "-" + Constant.SHEET_NAME_DSST + ".xlsx";
+            name = Constant.SHEET_NAME_DSST;
+            Map<String, String> resultMap = new LinkedHashMap<>();
+            resultMap.put("总分", score);
+            resultDBJson.put("总分", score);
+            resultJson.put("score", score);
+            resultMapList.add(resultMap);
+            ExcelUtil.createExcelFile(ObjectEntity.class, null, resultMapList, new ExcelClass().contentExcel(Constant.QUEST_TYPE_DSST), fileName, Constant.SHEET_NAME_DSST);
+            String imgFilePath;
+            File file = new File("./心理检测/检测结果/" + new SimpleDateFormat("yyyy-MM-dd").format(new Date()) + "/" + Constant.SHEET_NAME_DSST);
+            if (!file.exists()) {
+                //file.createNewFile();
+                file.mkdirs();
+            }
+            imgFilePath = "./心理检测/检测结果/" + new SimpleDateFormat("yyyy-MM-dd").format(new Date()) + "/" + Constant.SHEET_NAME_DSST + "/" + userName + Constant.SPLIT_CHAR + userBirthday + Constant.SPLIT_CHAR + userSex + Constant.SPLIT_CHAR + testTime + "-" + Constant.SHEET_NAME_DSST + ".jpg";
+            Utils.GenerateImage(b64Img.substring(b64Img.indexOf(",")+1), imgFilePath);
+            b64Img = imgFilePath;
+        } else {
+            return fail("", "该任务不可用,请联系管理员");
+        }
+
+        if (resultDBJson.get("测试结果指导").equals("")) {
+            resultDBJson.remove("测试结果指导");
+        }
+        if (resultJson.containsKey("测试结果指导")) {
+            if ( resultJson.get("测试结果指导").equals("")){
+                resultJson.remove("测试结果指导");
+            }
+        }
+        // 获取JSON第一层所有的key
+        Set<String> keys = resultDBJson.keySet();
+
+        //计算结果
+        JSONArray dbJsonList = new JSONArray();
+        JSONObject dbJson = new JSONObject(true);
+        JSONArray tableContext = new JSONArray();
+        //列名
+        List colNames = new ArrayList();
+        if (Constant.QUEST_TYPE_MEMORY_YATAI.equals(type)) {
+            colNames.add("类型");
+            colNames.add("0-BACK");
+            colNames.add("1-BACK");
+            colNames.add("2-BACK");
+            dbJson.put("colNames", colNames);
+            //列值
+            List colValue1 = new ArrayList();
+            colValue1.add("低");
+            colValue1.add("中");
+            colValue1.add("高");
+            JSONObject row1 = new JSONObject(true);
+            row1.put("name", "难度等级");
+            row1.put("value", colValue1);
+            tableContext.add(row1);
+
+            List colValue2 = new ArrayList();
+            colValue2.add(resultDBJson.get("0-back总测试数"));
+            colValue2.add(resultDBJson.get("1-back总测试数"));
+            colValue2.add(resultDBJson.get("2-back总测试数"));
+            JSONObject row2 = new JSONObject(true);
+            row2.put("name", "总测试数");
+            row2.put("value", colValue2);
+            tableContext.add(row2);
+
+            List colValue3 = new ArrayList();
+            colValue3.add(resultDBJson.get("0-back正确数"));
+            colValue3.add(resultDBJson.get("1-back正确数"));
+            colValue3.add(resultDBJson.get("2-back正确数"));
+            JSONObject row3 = new JSONObject(true);
+            row3.put("name", "正确数");
+            row3.put("value", colValue3);
+            tableContext.add(row3);
+
+            List colValue4 = new ArrayList();
+            colValue4.add(resultDBJson.get("0-back正确率"));
+            colValue4.add(resultDBJson.get("1-back正确率"));
+            colValue4.add(resultDBJson.get("2-back正确率"));
+            JSONObject row4 = new JSONObject(true);
+            row4.put("name", "正确率");
+            row4.put("value", colValue4);
+            tableContext.add(row4);
+
+            List colValue5 = new ArrayList();
+            colValue5.add(resultDBJson.get("0-back平均反应时(ms)"));
+            colValue5.add(resultDBJson.get("1-back平均反应时(ms)"));
+            colValue5.add(resultDBJson.get("2-back平均反应时(ms)"));
+            JSONObject row5 = new JSONObject(true);
+            row5.put("name", "平均反应时(ms)");
+            row5.put("value", colValue5);
+            tableContext.add(row5);
+
+            List colValue6 = new ArrayList();
+            colValue6.add(resultDBJson.get("0-back测试用时"));
+            colValue6.add(resultDBJson.get("1-back测试用时"));
+            colValue6.add(resultDBJson.get("2-back测试用时"));
+            JSONObject row6 = new JSONObject(true);
+            row6.put("name", "测试用时");
+            row6.put("value", colValue6);
+            tableContext.add(row6);
+
+        } else if (Constant.QUEST_TYPE_ALERTNESS_YATAI.equals(type)) {
+            colNames.add("任务指标");
+            colNames.add("结果");
+            dbJson.put("colNames", colNames);
+            // 获取第一层每个key对应的值 的类型
+            for (String key : keys) {
+                //列值
+                List colValue = new ArrayList();
+                colValue.add(resultDBJson.get(key));
+                JSONObject row = new JSONObject(true);
+                row.put("name", key);
+                row.put("value", colValue);
+                tableContext.add(row);
+            }
+        } else if (Constant.QUEST_TYPE_SHAPE_YATAI.equals(type)) {
+            colNames.add("难度等级");
+            colNames.add("总次数");
+            colNames.add("正确次数");
+            colNames.add("正确率");
+            dbJson.put("colNames", colNames);
+            //列值
+            List colValue1 = new ArrayList();
+            colValue1.add(resultDBJson.get("一级难度测试总数"));
+            colValue1.add(resultDBJson.get("一级难度正确数"));
+            colValue1.add(resultDBJson.get("一级难度正确率"));
+            JSONObject row1 = new JSONObject(true);
+            row1.put("name", "1");
+            row1.put("value", colValue1);
+            tableContext.add(row1);
+
+            List colValue2 = new ArrayList();
+            colValue2.add(resultDBJson.get("二级难度测试总数"));
+            colValue2.add(resultDBJson.get("二级难度正确数"));
+            colValue2.add(resultDBJson.get("二级难度正确率"));
+            JSONObject row2 = new JSONObject(true);
+            row2.put("name", "2");
+            row2.put("value", colValue2);
+            tableContext.add(row2);
+
+            List colValue3 = new ArrayList();
+            colValue3.add(resultDBJson.get("三级难度测试总数"));
+            colValue3.add(resultDBJson.get("三级难度正确数"));
+            colValue3.add(resultDBJson.get("三级难度正确率"));
+            JSONObject row3 = new JSONObject(true);
+            row3.put("name", "3");
+            row3.put("value", colValue3);
+            tableContext.add(row3);
+
+            List colValue4 = new ArrayList();
+            colValue4.add(resultDBJson.get("四级难度测试总数"));
+            colValue4.add(resultDBJson.get("四级难度正确数"));
+            colValue4.add(resultDBJson.get("四级难度正确率"));
+            JSONObject row4 = new JSONObject(true);
+            row4.put("name", "4");
+            row4.put("value", colValue4);
+            tableContext.add(row4);
+
+            List colValue5 = new ArrayList();
+            colValue5.add(resultDBJson.get("五级难度测试总数"));
+            colValue5.add(resultDBJson.get("五级难度正确数"));
+            colValue5.add(resultDBJson.get("五级难度正确率"));
+            JSONObject row5 = new JSONObject(true);
+            row5.put("name", "5");
+            row5.put("value", colValue5);
+            tableContext.add(row5);
+
+            List colValue6 = new ArrayList();
+            colValue6.add(resultDBJson.get("六级难度测试总数"));
+            colValue6.add(resultDBJson.get("六级难度正确数"));
+            colValue6.add(resultDBJson.get("六级难度正确率"));
+            JSONObject row6 = new JSONObject(true);
+            row6.put("name", "6");
+            row6.put("value", colValue6);
+            tableContext.add(row6);
+        } else if (Constant.QUEST_TYPE_ANT_YATAI.equals(type) || Constant.QUEST_TYPE_ANT_FISH.equals(type) || Constant.QUEST_TYPE_ANT_FISH_YATAI.equals(type)) {
+            colNames.add("测试条件");
+            colNames.add("命中率");
+            colNames.add("反应时(ms)");
+            dbJson.put("colNames", colNames);
+            //列值
+            List colValue1 = new ArrayList();
+            colValue1.add(resultDBJson.get("命中率"));
+            colValue1.add(resultDBJson.get("反应时"));
+            JSONObject row1 = new JSONObject(true);
+            row1.put("name", "整体实验");
+            row1.put("value", colValue1);
+            tableContext.add(row1);
+
+            List colValue2 = new ArrayList();
+            colValue2.add(resultDBJson.get("一致性命中率"));
+            colValue2.add(resultDBJson.get("一致性反应时"));
+            JSONObject row2 = new JSONObject(true);
+            row2.put("name", "一致条件");
+            row2.put("value", colValue2);
+            tableContext.add(row2);
+
+            List colValue3 = new ArrayList();
+            colValue3.add(resultDBJson.get("不一致性命中率"));
+            colValue3.add(resultDBJson.get("不一致性反应时"));
+            JSONObject row3 = new JSONObject(true);
+            row3.put("name", "不一致条件");
+            row3.put("value", colValue3);
+            tableContext.add(row3);
+
+            List colValue4 = new ArrayList();
+            colValue4.add(resultDBJson.get("NoCue命中率"));
+            colValue4.add(resultDBJson.get("NoCue反应时"));
+            JSONObject row4 = new JSONObject(true);
+            row4.put("name", "无线索");
+            row4.put("value", colValue4);
+            tableContext.add(row4);
+
+            List colValue5 = new ArrayList();
+            colValue5.add(resultDBJson.get("NeutralCue命中率"));
+            colValue5.add(resultDBJson.get("NeutralCue反应时"));
+            JSONObject row5 = new JSONObject(true);
+            row5.put("name", "中立线索");
+            row5.put("value", colValue5);
+            tableContext.add(row5);
+
+            List colValue6 = new ArrayList();
+            colValue6.add(resultDBJson.get("SpatialCue命中率"));
+            colValue6.add(resultDBJson.get("SpatialCue反应时"));
+            JSONObject row6 = new JSONObject(true);
+            row6.put("name", "空间线索");
+            row6.put("value", colValue6);
+            tableContext.add(row6);
+
+            JSONObject dbJson2 = new JSONObject(true);
+            JSONArray tableContext2 = new JSONArray();
+            List colNames2 = new ArrayList();
+            colNames2.add("警报分数");
+            colNames2.add("定向分数");
+            colNames2.add("冲突分数");
+            dbJson2.put("colNames", colNames2);
+            List colValue7 = new ArrayList();
+            colValue7.add(resultDBJson.get("定向分数"));
+            colValue7.add(resultDBJson.get("冲突分数"));
+            JSONObject row7 = new JSONObject(true);
+            row7.put("name", resultDBJson.get("警报分数"));
+            row7.put("value", colValue7);
+            tableContext2.add(row7);
+            dbJson2.put("tableContext", tableContext2);
+            dbJsonList.add(dbJson2);
+        } else if (Constant.QUEST_TYPE_GTCT.equals(type)) {
+            colNames.add("难度等级");
+            colNames.add("正确率");
+            dbJson.put("colNames", colNames);
+
+            // 获取第一层每个key对应的值 的类型
+            for (int i = 0; i < keys.size(); i++) {
+
+            }
+            int y = 1;
+            for (String key : keys) {
+                if (!key.equals(y + "难度等级")) {
+                    //列值
+                    List colValue = new ArrayList();
+                    colValue.add(resultDBJson.get(key));
+                    JSONObject row = new JSONObject(true);
+                    row.put("name", y);
+                    row.put("value", colValue);
+                    tableContext.add(row);
+                    y++;
+                }
+            }
+        } else if (Constant.QUEST_TYPE_STROOP.equals(type)) {
+            colNames.add("试验");
+            colNames.add("完成时间/秒");
+            colNames.add("错误数目");
+            dbJson.put("colNames", colNames);
+            //列值
+            List colValue1 = new ArrayList();
+            colValue1.add(resultDBJson.get("StroopD完成时间(秒)"));
+            colValue1.add(resultDBJson.get("StroopD错误数目"));
+            JSONObject row1 = new JSONObject(true);
+            row1.put("name", "StroopD");
+            row1.put("value", colValue1);
+            tableContext.add(row1);
+
+            List colValue2 = new ArrayList();
+            colValue2.add(resultDBJson.get("StroopW完成时间(秒)"));
+            colValue2.add(resultDBJson.get("StroopW错误数目"));
+            JSONObject row2 = new JSONObject(true);
+            row2.put("name", "StroopW");
+            row2.put("value", colValue2);
+            tableContext.add(row2);
+
+            List colValue3 = new ArrayList();
+            colValue3.add(resultDBJson.get("StroopC完成时间(秒)"));
+            colValue3.add(resultDBJson.get("StroopC错误数目"));
+            JSONObject row3 = new JSONObject(true);
+            row3.put("name", "StroopC");
+            row3.put("value", colValue3);
+            tableContext.add(row3);
+
+        } else {
+            colNames.add("项目");
+            colNames.add("内容");
+            dbJson.put("colNames", colNames);
+
+            // 获取第一层每个key对应的值 的类型
+            for (String key : keys) {
+                //列值
+                List colValue = new ArrayList();
+                colValue.add(resultDBJson.get(key));
+                JSONObject row = new JSONObject(true);
+                row.put("name", key);
+                row.put("value", colValue);
+                tableContext.add(row);
+            }
+        }
+
+        dbJson.put("tableContext", tableContext);
+        dbJsonList.add(dbJson);
+
+
+        /*//计算结果
+        JSONObject dbJson = new JSONObject(true);
+        dbJson.put("row",keys.size());
+        dbJson.put("col",2);
+        //列名
+        List colNames = new ArrayList();
+        colNames.add("项目");
+        colNames.add("内容");
+        dbJson.put("colNames",colNames);
+        //行名
+        List rowNames = new ArrayList();
+        //rowNames.add("项目");
+        JSONObject mapping = new JSONObject(true);
+
+        // 获取第一层每个key对应的值 的类型
+        for (String key : keys) {
+            //String colValue = key;
+            //列值
+            List colValue = new ArrayList();
+            rowNames.add(key);
+            colValue.add(resultJson.get(key));
+            dbJson.put(key,colValue);
+            mapping.put(key,key);
+        }
+
+        dbJson.put("rowNames",rowNames);
+        dbJson.put("mapping",mapping);*/
+
+
+        int i = 1;
+        // 获取第一层每个key对应的值 的类型
+        for (String key : keys) {
+            if (i == keys.size()) {
+                testResult += key + ":" + resultDBJson.get(key);
+            } else {
+                testResult += key + ":" + resultDBJson.get(key) + ";";
+            }
+            i++;
+        }
+        //测试记录
+        UserRecordEntity userRecordEntity ;
+        String filePath = null;
+        filePath = "./心理检测/检测结果/" + new SimpleDateFormat("yyyy-MM-dd").format(new Date()) + "/" + name + "/" + fileName;
+        if (Constant.QUEST_TYPE_RIVEN.equals(type) || Constant.QUEST_TYPE_GO_NO_GO2.equals(type) || Constant.QUEST_TYPE_SC.equals(type)
+                ||Constant.QUEST_TYPE_REM.equals(type) || Constant.QUEST_TYPE_MOVEMENT.equals(type) || Constant.QUEST_TYPE_MEMORY.equals(type)
+                || Constant.QUEST_TYPE_MEMORYT.equals(type)  || Constant.QUEST_TYPE_RDT.equals(type) || Constant.QUEST_TYPE_GTCT.equals(type)
+                || Constant.QUEST_TYPE_SHAPE.equals(type) || Constant.QUEST_TYPE_ANT.equals(type) || Constant.QUEST_TYPE_SHAPE2.equals(type)){
+            userRecordEntity = testRecord(type, phone, institutionNo, testTime, filePath, resultDBJson.toString(), name, b64Img, datas, testResult, testPlanId);
+        }else {
+            userRecordEntity = testRecord(type, phone, institutionNo, testTime, filePath, dbJsonList.toString(), name, b64Img, datas, testResult, testPlanId);
+        }
+        System.out.println("resultJson:" + resultJson);
+        return success(userRecordEntity.getId(), "完成");
+
+    }
+
+    //瑞文根据年龄分值转换
+    private int RIVENScore(String userBirthday, int score) throws Exception {
+        int resultScore = 0;
+        double age = AgeUtil.getAge(userBirthday);
+        if (age <= 5.5) {
+            if (score >= 9 && score < 12) {
+                resultScore = 5;
+            } else if (score >= 12 && score < 13) {
+                resultScore = 10;
+            } else if (score >= 13 && score < 16) {
+                resultScore = 25;
+            } else if (score >= 16 && score < 25) {
+                resultScore = 50;
+            } else if (score >= 25 && score < 29) {
+                resultScore = 75;
+            } else if (score >= 29 && score < 34) {
+                resultScore = 90;
+            } else if (score >= 34) {
+                resultScore = 95;
+            }
+        } else if (age == 6) {
+            if (score >= 9 && score < 12) {
+                resultScore = 5;
+            } else if (score >= 12 && score < 13) {
+                resultScore = 10;
+            } else if (score >= 13 && score < 17) {
+                resultScore = 25;
+            } else if (score >= 17 && score < 25) {
+                resultScore = 50;
+            } else if (score >= 25 && score < 31) {
+                resultScore = 75;
+            } else if (score >= 31 && score < 36) {
+                resultScore = 90;
+            } else if (score >= 36) {
+                resultScore = 95;
+            }
+        } else if (age == 6.5) {
+            if (score >= 10 && score < 12) {
+                resultScore = 5;
+            } else if (score >= 12 && score < 13) {
+                resultScore = 10;
+            } else if (score >= 13 && score < 18) {
+                resultScore = 25;
+            } else if (score >= 18 && score < 25) {
+                resultScore = 50;
+            } else if (score >= 25 && score < 31) {
+                resultScore = 75;
+            } else if (score >= 31 && score < 37) {
+                resultScore = 90;
+            } else if (score >= 37) {
+                resultScore = 95;
+            }
+        } else if (age == 7) {
+            if (score >= 10 && score < 12) {
+                resultScore = 5;
+            } else if (score >= 12 && score < 13) {
+                resultScore = 10;
+            } else if (score >= 13 && score < 19) {
+                resultScore = 25;
+            } else if (score >= 19 && score < 25) {
+                resultScore = 50;
+            } else if (score >= 25 && score < 36) {
+                resultScore = 75;
+            } else if (score >= 36 && score < 43) {
+                resultScore = 90;
+            } else if (score >= 43) {
+                resultScore = 95;
+            }
+        } else if (age == 7.5) {
+            if (score >= 10 && score < 12) {
+                resultScore = 5;
+            } else if (score >= 12 && score < 13) {
+                resultScore = 10;
+            } else if (score >= 13 && score < 21) {
+                resultScore = 25;
+            } else if (score >= 21 && score < 31) {
+                resultScore = 50;
+            } else if (score >= 31 && score < 38) {
+                resultScore = 75;
+            } else if (score >= 38 && score < 44) {
+                resultScore = 90;
+            } else if (score >= 44) {
+                resultScore = 95;
+            }
+        } else if (age == 8) {
+            if (score >= 10 && score < 13) {
+                resultScore = 5;
+            } else if (score >= 13 && score < 15) {
+                resultScore = 10;
+            } else if (score >= 15 && score < 23) {
+                resultScore = 25;
+            } else if (score >= 23 && score < 31) {
+                resultScore = 50;
+            } else if (score >= 31 && score < 39) {
+                resultScore = 75;
+            } else if (score >= 39 && score < 44) {
+                resultScore = 90;
+            } else if (score >= 44) {
+                resultScore = 95;
+            }
+        } else if (age == 8.5) {
+            if (score >= 12 && score < 14) {
+                resultScore = 5;
+            } else if (score >= 14 && score < 20) {
+                resultScore = 10;
+            } else if (score >= 20 && score < 29) {
+                resultScore = 25;
+            } else if (score >= 29 && score < 33) {
+                resultScore = 50;
+            } else if (score >= 33 && score < 40) {
+                resultScore = 75;
+            } else if (score >= 40 && score < 45) {
+                resultScore = 90;
+            } else if (score >= 45) {
+                resultScore = 95;
+            }
+
+        } else if (age == 9) {
+            if (score >= 12 && score < 14) {
+                resultScore = 5;
+            } else if (score >= 14 && score < 25) {
+                resultScore = 10;
+            } else if (score >= 25 && score < 33) {
+                resultScore = 25;
+            } else if (score >= 33 && score < 37) {
+                resultScore = 50;
+            } else if (score >= 37 && score < 43) {
+                resultScore = 75;
+            } else if (score >= 43 && score < 47) {
+                resultScore = 90;
+            } else if (score >= 47) {
+                resultScore = 95;
+            }
+
+        } else if (age == 9.5) {
+            if (score >= 13 && score < 17) {
+                resultScore = 5;
+            } else if (score >= 17 && score < 27) {
+                resultScore = 10;
+            } else if (score >= 27 && score < 35) {
+                resultScore = 25;
+            } else if (score >= 35 && score < 39) {
+                resultScore = 50;
+            } else if (score >= 39 && score < 47) {
+                resultScore = 75;
+            } else if (score >= 47 && score < 50) {
+                resultScore = 90;
+            } else if (score >= 50) {
+                resultScore = 95;
+            }
+
+        } else if (age == 10) {
+            if (score >= 13 && score < 17) {
+                resultScore = 5;
+            } else if (score >= 17 && score < 27) {
+                resultScore = 10;
+            } else if (score >= 27 && score < 35) {
+                resultScore = 25;
+            } else if (score >= 35 && score < 42) {
+                resultScore = 50;
+            } else if (score >= 42 && score < 48) {
+                resultScore = 75;
+            } else if (score >= 48 && score < 50) {
+                resultScore = 90;
+            } else if (score >= 50) {
+                resultScore = 95;
+            }
+
+        } else if (age == 10.5) {
+            if (score >= 18 && score < 25) {
+                resultScore = 5;
+            } else if (score >= 25 && score < 32) {
+                resultScore = 10;
+            } else if (score >= 32 && score < 39) {
+                resultScore = 25;
+            } else if (score >= 39 && score < 42) {
+                resultScore = 50;
+            } else if (score >= 42 && score < 49) {
+                resultScore = 75;
+            } else if (score >= 49 && score < 50) {
+                resultScore = 90;
+            } else if (score >= 50) {
+                resultScore = 95;
+            }
+
+        } else if (age == 11) {
+            if (score >= 19 && score < 25) {
+                resultScore = 5;
+            } else if (score >= 25 && score < 33) {
+                resultScore = 10;
+            } else if (score >= 33 && score < 39) {
+                resultScore = 25;
+            } else if (score >= 39 && score < 43) {
+                resultScore = 50;
+            } else if (score >= 43 && score < 50) {
+                resultScore = 75;
+            } else if (score >= 50 && score < 52) {
+                resultScore = 90;
+            } else if (score >= 52) {
+                resultScore = 95;
+            }
+
+        } else if (age == 11.5) {
+            if (score >= 19 && score < 25) {
+                resultScore = 5;
+            } else if (score >= 25 && score < 35) {
+                resultScore = 10;
+            } else if (score >= 35 && score < 42) {
+                resultScore = 25;
+            } else if (score >= 42 && score < 45) {
+                resultScore = 50;
+            } else if (score >= 45 && score < 50) {
+                resultScore = 75;
+            } else if (score >= 50 && score < 53) {
+                resultScore = 90;
+            } else if (score >= 53) {
+                resultScore = 95;
+            }
+
+        } else if (age == 12) {
+            if (score >= 21 && score < 27) {
+                resultScore = 5;
+            } else if (score >= 27 && score < 37) {
+                resultScore = 10;
+            } else if (score >= 37 && score < 42) {
+                resultScore = 25;
+            } else if (score >= 42 && score < 46) {
+                resultScore = 50;
+            } else if (score >= 46 && score < 50) {
+                resultScore = 75;
+            } else if (score >= 50 && score < 53) {
+                resultScore = 90;
+            } else if (score >= 53) {
+                resultScore = 95;
+            }
+
+        } else if (age == 12.5) {
+            if (score >= 28 && score < 33) {
+                resultScore = 5;
+            } else if (score >= 33 && score < 40) {
+                resultScore = 10;
+            } else if (score >= 40 && score < 45) {
+                resultScore = 25;
+            } else if (score >= 45 && score < 50) {
+                resultScore = 50;
+            } else if (score >= 50 && score < 52) {
+                resultScore = 75;
+            } else if (score >= 52 && score < 53) {
+                resultScore = 90;
+            } else if (score >= 53) {
+                resultScore = 95;
+            }
+
+        } else if (age == 13) {
+            if (score >= 30 && score < 35) {
+                resultScore = 5;
+            } else if (score >= 35 && score < 40) {
+                resultScore = 10;
+            } else if (score >= 40 && score < 45) {
+                resultScore = 25;
+            } else if (score >= 45 && score < 50) {
+                resultScore = 50;
+            } else if (score >= 50 && score < 52) {
+                resultScore = 75;
+            } else if (score >= 52 && score < 53) {
+                resultScore = 90;
+            } else if (score >= 53) {
+                resultScore = 95;
+            }
+
+        } else if (age == 13.5) {
+            if (score >= 32 && score < 35) {
+                resultScore = 5;
+            } else if (score >= 35 && score < 42) {
+                resultScore = 10;
+            } else if (score >= 42 && score < 46) {
+                resultScore = 25;
+            } else if (score >= 46 && score < 50) {
+                resultScore = 50;
+            } else if (score >= 50 && score < 52) {
+                resultScore = 75;
+            } else if (score >= 52 && score < 54) {
+                resultScore = 90;
+            } else if (score >= 54) {
+                resultScore = 95;
+            }
+
+        } else if (age == 14) {
+            if (score >= 34 && score < 36) {
+                resultScore = 5;
+            } else if (score >= 36 && score < 43) {
+                resultScore = 10;
+            } else if (score >= 43 && score < 48) {
+                resultScore = 25;
+            } else if (score >= 48 && score < 50) {
+                resultScore = 50;
+            } else if (score >= 50 && score < 52) {
+                resultScore = 75;
+            } else if (score >= 52 && score < 55) {
+                resultScore = 90;
+            } else if (score >= 55) {
+                resultScore = 95;
+            }
+
+        } else if (age == 14.5) {
+            if (score >= 34 && score < 36) {
+                resultScore = 5;
+            } else if (score >= 36 && score < 43) {
+                resultScore = 10;
+            } else if (score >= 43 && score < 48) {
+                resultScore = 25;
+            } else if (score >= 48 && score < 51) {
+                resultScore = 50;
+            } else if (score >= 51 && score < 53) {
+                resultScore = 75;
+            } else if (score >= 53 && score < 55) {
+                resultScore = 90;
+            } else if (score >= 55) {
+                resultScore = 95;
+            }
+
+        } else if (age == 15) {
+            if (score >= 34 && score < 36) {
+                resultScore = 5;
+            } else if (score >= 36 && score < 43) {
+                resultScore = 10;
+            } else if (score >= 43 && score < 48) {
+                resultScore = 25;
+            } else if (score >= 48 && score < 51) {
+                resultScore = 50;
+            } else if (score >= 51 && score < 54) {
+                resultScore = 75;
+            } else if (score >= 54 && score < 57) {
+                resultScore = 90;
+            } else if (score >= 57) {
+                resultScore = 95;
+            }
+
+        } else if (age == 15.5) {
+            if (score >= 34 && score < 41) {
+                resultScore = 5;
+            } else if (score >= 41 && score < 43) {
+                resultScore = 10;
+            } else if (score >= 43 && score < 49) {
+                resultScore = 25;
+            } else if (score >= 49 && score < 52) {
+                resultScore = 50;
+            } else if (score >= 52 && score < 55) {
+                resultScore = 75;
+            } else if (score >= 55 && score < 57) {
+                resultScore = 90;
+            } else if (score >= 57) {
+                resultScore = 95;
+            }
+
+        } else if (age == 16) {
+            if (score >= 36 && score < 41) {
+                resultScore = 5;
+            } else if (score >= 41 && score < 44) {
+                resultScore = 10;
+            } else if (score >= 44 && score < 49) {
+                resultScore = 25;
+            } else if (score >= 49 && score < 53) {
+                resultScore = 50;
+            } else if (score >= 53 && score < 56) {
+                resultScore = 75;
+            } else if (score >= 56 && score < 57) {
+                resultScore = 90;
+            } else if (score >= 57) {
+                resultScore = 95;
+            }
+
+        } else if (age == 16.5) {
+            if (score >= 37 && score < 41) {
+                resultScore = 5;
+            } else if (score >= 41 && score < 45) {
+                resultScore = 10;
+            } else if (score >= 45 && score < 49) {
+                resultScore = 25;
+            } else if (score >= 49 && score < 53) {
+                resultScore = 50;
+            } else if (score >= 53 && score < 56) {
+                resultScore = 75;
+            } else if (score >= 56 && score < 57) {
+                resultScore = 90;
+            } else if (score >= 57) {
+                resultScore = 95;
+            }
+
+        } else if (age == 17) {
+            if (score >= 37 && score < 40) {
+                resultScore = 5;
+            } else if (score >= 40 && score < 47) {
+                resultScore = 10;
+            } else if (score >= 47 && score < 52) {
+                resultScore = 25;
+            } else if (score >= 52 && score < 55) {
+                resultScore = 50;
+            } else if (score >= 55 && score < 57) {
+                resultScore = 75;
+            } else if (score >= 57 && score < 58) {
+                resultScore = 90;
+            } else if (score >= 58) {
+                resultScore = 95;
+            }
+
+        } else if (age > 17 && age <= 24.5) {//20
+            if (score >= 33 && score < 38) {
+                resultScore = 5;
+            } else if (score >= 38 && score < 44) {
+                resultScore = 10;
+            } else if (score >= 44 && score < 50) {
+                resultScore = 25;
+            } else if (score >= 50 && score < 54) {
+                resultScore = 50;
+            } else if (score >= 54 && score < 56) {
+                resultScore = 75;
+            } else if (score >= 56 && score < 57) {
+                resultScore = 90;
+            } else if (score >= 57) {
+                resultScore = 95;
+            }
+
+        } else if (age >= 25 && age <= 34.5) {//30
+            if (score >= 28 && score < 37) {
+                resultScore = 5;
+            } else if (score >= 37 && score < 43) {
+                resultScore = 10;
+            } else if (score >= 43 && score < 48) {
+                resultScore = 25;
+            } else if (score >= 48 && score < 52) {
+                resultScore = 50;
+            } else if (score >= 52 && score < 55) {
+                resultScore = 75;
+            } else if (score >= 55 && score < 57) {
+                resultScore = 90;
+            } else if (score >= 57) {
+                resultScore = 95;
+            }
+
+        } else if (age >= 35 && age <= 44.5) {//40
+            if (score >= 28 && score < 31) {
+                resultScore = 5;
+            } else if (score >= 31 && score < 41) {
+                resultScore = 10;
+            } else if (score >= 41 && score < 47) {
+                resultScore = 25;
+            } else if (score >= 47 && score < 50) {
+                resultScore = 50;
+            } else if (score >= 50 && score < 54) {
+                resultScore = 75;
+            } else if (score >= 54 && score < 57) {
+                resultScore = 90;
+            } else if (score >= 57) {
+                resultScore = 95;
+            }
+
+        } else if (age >= 45 && age <= 54.5) {//50
+            if (score >= 21 && score < 24) {
+                resultScore = 5;
+            } else if (score >= 24 && score < 34) {
+                resultScore = 10;
+            } else if (score >= 34 && score < 42) {
+                resultScore = 25;
+            } else if (score >= 42 && score < 48) {
+                resultScore = 50;
+            } else if (score >= 48 && score < 52) {
+                resultScore = 75;
+            } else if (score >= 52 && score < 54) {
+                resultScore = 90;
+            } else if (score >= 54) {
+                resultScore = 95;
+            }
+
+        } else if (age >= 55 && age <= 64.5) {//60
+            if (score >= 19 && score < 22) {
+                resultScore = 5;
+            } else if (score >= 22 && score < 30) {
+                resultScore = 10;
+            } else if (score >= 30 && score < 37) {
+                resultScore = 25;
+            } else if (score >= 37 && score < 46) {
+                resultScore = 50;
+            } else if (score >= 46 && score < 52) {
+                resultScore = 75;
+            } else if (score >= 52 && score < 54) {
+                resultScore = 90;
+            } else if (score >= 54) {
+                resultScore = 95;
+            }
+
+        } else {//70
+            if (score >= 17 && score < 18) {
+                resultScore = 5;
+            } else if (score >= 18 && score < 26) {
+                resultScore = 10;
+            } else if (score >= 26 && score < 33) {
+                resultScore = 25;
+            } else if (score >= 33 && score < 44) {
+                resultScore = 50;
+            } else if (score >= 44 && score < 49) {
+                resultScore = 75;
+            } else if (score >= 49 && score < 52) {
+                resultScore = 90;
+            } else if (score >= 52) {
+                resultScore = 95;
+            }
+        }
+
+        return resultScore;
+    }
+
+    private UserRecordEntity testRecord(String taskCode, String phone, String institutionNo, String testTime, String fileName, String testResult, String name, String b64Img, String datas, String testResults, String testPlanId) {
+        //根据taskCode记录测试数
+        this.cognitiveTaskService.addTestNum(taskCode);
+        //添加用户测试记录
+        UserRecordEntity userRecordEntity = new UserRecordEntity();
+        userRecordEntity.setFlag(taskCode);
+        userRecordEntity.setPhone(phone);
+        userRecordEntity.setInstitutionNo(institutionNo);
+        userRecordEntity.setTestDate(testTime);
+        userRecordEntity.setTestResult(testResult);
+        userRecordEntity.setType("1");
+        userRecordEntity.setFileName(fileName);
+        userRecordEntity.setName(name);
+        userRecordEntity.setImg(b64Img);
+        userRecordEntity.setTestRecord(datas);
+        userRecordEntity.setTestResults(testResults);
+        if (testPlanId == null || testPlanId.equals("")) {
+            userRecordEntity.setTestPlanId("0");
+        } else {
+            userRecordEntity.setTestPlanId(testPlanId);
+        }
+        this.userRecordService.save(userRecordEntity);
+        return userRecordEntity;
+    }
+
+
+}

+ 64 - 0
src/main/java/com/rf/psychological/scale/resultBusiness/scaleResult/BEScale.java

@@ -0,0 +1,64 @@
+package com.rf.psychological.scale.resultBusiness.scaleResult;
+
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
+import com.rf.psychological.dao.model.AnswerEntity;
+import com.rf.psychological.dao.model.DimensionEntity;
+import com.rf.psychological.scale.dao.model.ScaleMarksEntity;
+
+import java.text.DecimalFormat;
+import java.util.ArrayList;
+import java.util.LinkedHashMap;
+import java.util.List;
+import java.util.Map;
+/**
+ * @author xbw
+ * @description:身体自尊量表
+ * @date 2021/11/4 9:00
+ */
+public class BEScale extends BaseScale{
+    public BEScale(JSONArray jsonArray, JSONObject resultJson) { super(jsonArray, resultJson); }
+
+    public  JSONObject scaleCalculate() throws Exception {
+
+        //总分
+        double score = 0;
+        Map<String, String> resultMap0 = new LinkedHashMap<>();
+        List<Map<String,String>> resultMapList = new ArrayList<>();
+
+        //获取答案列表
+        List<AnswerEntity> answerEntities = (List<AnswerEntity>) resultJson.get("answerEntities");
+        //获取评分规则列表
+        List<ScaleMarksEntity> scaleMarksEntities = (List<ScaleMarksEntity>) resultJson.get("scaleMarksEntities");
+        //获取维度信息列表
+        List<DimensionEntity> dimensionEntities = (List<DimensionEntity>) resultJson.get("dimensionEntities");
+        double sum = 0;
+        if (jsonArray.size() > 0){
+            //计算总分
+            for (int i = 0; i < jsonArray.size(); i++) {
+                JSONObject jsonObject1 = jsonArray.getJSONObject(i);
+                for(AnswerEntity answerEntity:answerEntities){
+                    if (answerEntity.getQuestionNo().equals(String.valueOf(i+1)) && answerEntity.getName().equals(jsonObject1.getString("checkItems"))){
+                        score += Double.valueOf(answerEntity.getScore());
+                        sum = sum +1;
+                    }
+                }
+            }
+
+            double PSQindex = 0;
+            PSQindex = score / sum;
+            DecimalFormat df = new DecimalFormat("######0.00");
+            PSQindex = Double.parseDouble(df.format(PSQindex));
+            resultMap0.put("BE均分", String.valueOf(PSQindex));
+            resultJson.put("BE均分", String.valueOf(PSQindex));
+            resultMapList.add(resultMap0);
+        }
+
+        JSONObject returnJson = new JSONObject(true);
+        returnJson.put("resultMapList",resultMapList);
+        //returnJson.put("scaleName",resultJson.getString("scaleName"));
+        returnJson.put("resultJson",resultJson);
+
+        return returnJson;
+    }
+}

+ 332 - 0
src/main/java/com/rf/psychological/scale/resultBusiness/scaleResult/BPRSScale.java

@@ -0,0 +1,332 @@
+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 BPRSScale extends BaseScale{
+
+    public BPRSScale(JSONArray jsonArray, JSONObject resultJson) {
+        super(jsonArray, resultJson);
+    }
+
+    public  JSONObject scaleCalculate() throws Exception {
+        //得分
+        int score = 0;
+        //焦虑忧郁得分
+        int ANDPscore = 0;
+        //缺乏活力得分
+        int ANEGscore = 0;
+        //思维障碍得分
+        int thoughtScore = 0;
+        //激活性得分
+        int ACTVscore = 0;
+        //敌对猜疑得分
+        int suspicionScore = 0;
+        for (int i = 0; i < jsonArray.size(); i++) {
+            JSONObject jsonObject1 = jsonArray.getJSONObject(i);
+            if (jsonObject1.getString("scoreDirection").equals("1")) {
+                if (i == 0 || i == 1 || i == 4 || i == 8){
+                    if (jsonObject1.getString("checkItems").equals("无症状")) {
+                        score += 1;
+                        ANDPscore += 1;
+                    } else if (jsonObject1.getString("checkItems").equals("可疑或很轻")) {
+                        score += 2;
+                        ANDPscore += 2;
+                    } else if (jsonObject1.getString("checkItems").equals("轻度")) {
+                        score += 3;
+                        ANDPscore += 3;
+                    } else if (jsonObject1.getString("checkItems").equals("中度")) {
+                        score += 4;
+                        ANDPscore += 4;
+                    } else if (jsonObject1.getString("checkItems").equals("偏重")) {
+                        score += 5;
+                        ANDPscore += 5;
+                    } else if (jsonObject1.getString("checkItems").equals("重度")) {
+                        score += 6;
+                        ANDPscore += 6;
+                    } else if (jsonObject1.getString("checkItems").equals("极重")) {
+                        score += 7;
+                        ANDPscore += 7;
+                    }
+                }else if (i == 2 || i == 12 || i == 15 || i == 17){
+                    if (jsonObject1.getString("checkItems").equals("无症状")) {
+                        score += 1;
+                        ANEGscore += 1;
+                    } else if (jsonObject1.getString("checkItems").equals("可疑或很轻")) {
+                        score += 2;
+                        ANEGscore += 2;
+                    } else if (jsonObject1.getString("checkItems").equals("轻度")) {
+                        score += 3;
+                        ANEGscore += 3;
+                    } else if (jsonObject1.getString("checkItems").equals("中度")) {
+                        score += 4;
+                        ANEGscore += 4;
+                    } else if (jsonObject1.getString("checkItems").equals("偏重")) {
+                        score += 5;
+                        ANEGscore += 5;
+                    } else if (jsonObject1.getString("checkItems").equals("重度")) {
+                        score += 6;
+                        ANEGscore += 6;
+                    } else if (jsonObject1.getString("checkItems").equals("极重")) {
+                        score += 7;
+                        ANEGscore += 7;
+                    }
+                }else if (i == 3 || i == 7 || i == 11 || i == 14){
+                    if (jsonObject1.getString("checkItems").equals("无症状")) {
+                        score += 1;
+                        thoughtScore += 1;
+                    } else if (jsonObject1.getString("checkItems").equals("可疑或很轻")) {
+                        score += 2;
+                        thoughtScore += 2;
+                    } else if (jsonObject1.getString("checkItems").equals("轻度")) {
+                        score += 3;
+                        thoughtScore += 3;
+                    } else if (jsonObject1.getString("checkItems").equals("中度")) {
+                        score += 4;
+                        thoughtScore += 4;
+                    } else if (jsonObject1.getString("checkItems").equals("偏重")) {
+                        score += 5;
+                        thoughtScore += 5;
+                    } else if (jsonObject1.getString("checkItems").equals("重度")) {
+                        score += 6;
+                        thoughtScore += 6;
+                    } else if (jsonObject1.getString("checkItems").equals("极重")) {
+                        score += 7;
+                        thoughtScore += 7;
+                    }
+                }else if (i == 5 || i == 6 || i == 16){
+                    if (jsonObject1.getString("checkItems").equals("无症状")) {
+                        score += 1;
+                        ACTVscore += 1;
+                    } else if (jsonObject1.getString("checkItems").equals("可疑或很轻")) {
+                        score += 2;
+                        ACTVscore += 2;
+                    } else if (jsonObject1.getString("checkItems").equals("轻度")) {
+                        score += 3;
+                        ACTVscore += 3;
+                    } else if (jsonObject1.getString("checkItems").equals("中度")) {
+                        score += 4;
+                        ACTVscore += 4;
+                    } else if (jsonObject1.getString("checkItems").equals("偏重")) {
+                        score += 5;
+                        ACTVscore += 5;
+                    } else if (jsonObject1.getString("checkItems").equals("重度")) {
+                        score += 6;
+                        ACTVscore += 6;
+                    } else if (jsonObject1.getString("checkItems").equals("极重")) {
+                        score += 7;
+                        ACTVscore += 7;
+                    }
+                }else if (i == 9 || i == 10 || i == 15){
+                    if (jsonObject1.getString("checkItems").equals("无症状")) {
+                        score += 1;
+                        suspicionScore += 1;
+                    } else if (jsonObject1.getString("checkItems").equals("可疑或很轻")) {
+                        score += 2;
+                        suspicionScore += 2;
+                    } else if (jsonObject1.getString("checkItems").equals("轻度")) {
+                        score += 3;
+                        suspicionScore += 3;
+                    } else if (jsonObject1.getString("checkItems").equals("中度")) {
+                        score += 4;
+                        suspicionScore += 4;
+                    } else if (jsonObject1.getString("checkItems").equals("偏重")) {
+                        score += 5;
+                        suspicionScore += 5;
+                    } else if (jsonObject1.getString("checkItems").equals("重度")) {
+                        score += 6;
+                        suspicionScore += 6;
+                    } else if (jsonObject1.getString("checkItems").equals("极重")) {
+                        score += 7;
+                        suspicionScore += 7;
+                    }
+                }else {
+                    if (jsonObject1.getString("checkItems").equals("无症状")) {
+                        score += 1;
+                    } else if (jsonObject1.getString("checkItems").equals("可疑或很轻")) {
+                        score += 2;
+                    } else if (jsonObject1.getString("checkItems").equals("轻度")) {
+                        score += 3;
+                    } else if (jsonObject1.getString("checkItems").equals("中度")) {
+                        score += 4;
+                    } else if (jsonObject1.getString("checkItems").equals("偏重")) {
+                        score += 5;
+                    } else if (jsonObject1.getString("checkItems").equals("重度")) {
+                        score += 6;
+                    } else if (jsonObject1.getString("checkItems").equals("极重")) {
+                        score += 7;
+                    }
+                }
+            } else if (jsonObject1.getString("scoreDirection").equals("0")){
+                if (i == 0 || i == 1 || i == 4 || i == 8){
+                    if (jsonObject1.getString("checkItems").equals("无症状")) {
+                        score += 7;
+                        ANDPscore += 7;
+                    } else if (jsonObject1.getString("checkItems").equals("可疑或很轻")) {
+                        score += 6;
+                        ANDPscore += 6;
+                    } else if (jsonObject1.getString("checkItems").equals("轻度")) {
+                        score += 5;
+                        ANDPscore += 5;
+                    } else if (jsonObject1.getString("checkItems").equals("中度")) {
+                        score += 4;
+                        ANDPscore += 4;
+                    } else if (jsonObject1.getString("checkItems").equals("偏重")) {
+                        score += 3;
+                        ANDPscore += 3;
+                    } else if (jsonObject1.getString("checkItems").equals("重度")) {
+                        score += 2;
+                        ANDPscore += 2;
+                    } else if (jsonObject1.getString("checkItems").equals("极重")) {
+                        score += 1;
+                        ANDPscore += 1;
+                    }
+                }else if (i == 2 || i == 12 || i == 15 || i == 17){
+                    if (jsonObject1.getString("checkItems").equals("无症状")) {
+                        score += 7;
+                        ANEGscore += 7;
+                    } else if (jsonObject1.getString("checkItems").equals("可疑或很轻")) {
+                        score += 6;
+                        ANEGscore += 6;
+                    } else if (jsonObject1.getString("checkItems").equals("轻度")) {
+                        score += 5;
+                        ANEGscore += 5;
+                    } else if (jsonObject1.getString("checkItems").equals("中度")) {
+                        score += 4;
+                        ANEGscore += 4;
+                    } else if (jsonObject1.getString("checkItems").equals("偏重")) {
+                        score += 3;
+                        ANEGscore += 3;
+                    } else if (jsonObject1.getString("checkItems").equals("重度")) {
+                        score += 2;
+                        ANEGscore += 2;
+                    } else if (jsonObject1.getString("checkItems").equals("极重")) {
+                        score += 1;
+                        ANEGscore += 1;
+                    }
+                }else if (i == 3 || i == 7 || i == 11 || i == 14){
+                    if (jsonObject1.getString("checkItems").equals("无症状")) {
+                        score += 7;
+                        thoughtScore += 7;
+                    } else if (jsonObject1.getString("checkItems").equals("可疑或很轻")) {
+                        score += 6;
+                        thoughtScore += 6;
+                    } else if (jsonObject1.getString("checkItems").equals("轻度")) {
+                        score += 5;
+                        thoughtScore += 5;
+                    } else if (jsonObject1.getString("checkItems").equals("中度")) {
+                        score += 4;
+                        thoughtScore += 4;
+                    } else if (jsonObject1.getString("checkItems").equals("偏重")) {
+                        score += 3;
+                        thoughtScore += 3;
+                    } else if (jsonObject1.getString("checkItems").equals("重度")) {
+                        score += 2;
+                        thoughtScore += 2;
+                    } else if (jsonObject1.getString("checkItems").equals("极重")) {
+                        score += 1;
+                        thoughtScore += 1;
+                    }
+                }else if (i == 5 || i == 6 || i == 16){
+                    if (jsonObject1.getString("checkItems").equals("无症状")) {
+                        score += 7;
+                        ACTVscore += 7;
+                    } else if (jsonObject1.getString("checkItems").equals("可疑或很轻")) {
+                        score += 6;
+                        ACTVscore += 6;
+                    } else if (jsonObject1.getString("checkItems").equals("轻度")) {
+                        score += 5;
+                        ACTVscore += 5;
+                    } else if (jsonObject1.getString("checkItems").equals("中度")) {
+                        score += 4;
+                        ACTVscore += 4;
+                    } else if (jsonObject1.getString("checkItems").equals("偏重")) {
+                        score += 3;
+                        ACTVscore += 3;
+                    } else if (jsonObject1.getString("checkItems").equals("重度")) {
+                        score += 2;
+                        ACTVscore += 2;
+                    } else if (jsonObject1.getString("checkItems").equals("极重")) {
+                        score += 1;
+                        ACTVscore += 1;
+                    }
+                }else if (i == 9 || i == 10 || i == 15){
+                    if (jsonObject1.getString("checkItems").equals("无症状")) {
+                        score += 7;
+                        suspicionScore += 7;
+                    } else if (jsonObject1.getString("checkItems").equals("可疑或很轻")) {
+                        score += 6;
+                        suspicionScore += 6;
+                    } else if (jsonObject1.getString("checkItems").equals("轻度")) {
+                        score += 5;
+                        suspicionScore += 5;
+                    } else if (jsonObject1.getString("checkItems").equals("中度")) {
+                        score += 4;
+                        suspicionScore += 4;
+                    } else if (jsonObject1.getString("checkItems").equals("偏重")) {
+                        score += 3;
+                        suspicionScore += 3;
+                    } else if (jsonObject1.getString("checkItems").equals("重度")) {
+                        score += 2;
+                        suspicionScore += 2;
+                    } else if (jsonObject1.getString("checkItems").equals("极重")) {
+                        score += 1;
+                        suspicionScore += 1;
+                    }
+                }else {
+                    if (jsonObject1.getString("checkItems").equals("无症状")) {
+                        score += 7;
+                    } else if (jsonObject1.getString("checkItems").equals("可疑或很轻")) {
+                        score += 6;
+                    } else if (jsonObject1.getString("checkItems").equals("轻度")) {
+                        score += 5;
+                    } else if (jsonObject1.getString("checkItems").equals("中度")) {
+                        score += 4;
+                    } else if (jsonObject1.getString("checkItems").equals("偏重")) {
+                        score += 3;
+                    } else if (jsonObject1.getString("checkItems").equals("重度")) {
+                        score += 2;
+                    } else if (jsonObject1.getString("checkItems").equals("极重")) {
+                        score += 1;
+                    }
+                }
+
+            }
+        }
+        //得分列表
+        Map<String, String> resultMap = new LinkedHashMap<>();
+        resultMap.put("总分", String.valueOf(score));
+        resultJson.put("总分", String.valueOf(score));
+        resultMap.put("焦虑忧郁得分", String.valueOf(ANDPscore));
+        resultJson.put("焦虑忧郁得分", String.valueOf(ANDPscore));
+        resultMap.put("缺乏活力得分", String.valueOf(ANEGscore));
+        resultJson.put("缺乏活力得分", String.valueOf(ANEGscore));
+        resultMap.put("思维障碍得分", String.valueOf(thoughtScore));
+        resultJson.put("思维障碍得分", String.valueOf(thoughtScore));
+        resultMap.put("激活性得分", String.valueOf(ACTVscore));
+        resultJson.put("激活性得分", String.valueOf(ACTVscore));
+        resultMap.put("敌对猜疑得分", String.valueOf(suspicionScore));
+        resultJson.put("敌对猜疑得分", String.valueOf(suspicionScore));
+        System.out.println("得分:" + score);
+        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_BPRS);
+        returnJson.put("resultJson",resultJson);
+
+        return returnJson;
+    }
+}

+ 108 - 0
src/main/java/com/rf/psychological/scale/resultBusiness/scaleResult/BRIEFScale.java

@@ -0,0 +1,108 @@
+package com.rf.psychological.scale.resultBusiness.scaleResult;
+
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
+import com.rf.psychological.dao.model.AnswerEntity;
+import com.rf.psychological.dao.model.DimensionEntity;
+import com.rf.psychological.scale.dao.model.ScaleMarksEntity;
+
+import java.text.DecimalFormat;
+import java.util.ArrayList;
+import java.util.LinkedHashMap;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * @author zsy
+ * @description:BRIEF量表
+ * @date 2021/7/20 15:55
+ */
+
+public class BRIEFScale extends BaseScale{
+    public BRIEFScale(JSONArray jsonArray, JSONObject resultJson) {
+        super(jsonArray, resultJson);
+    }
+
+    public  JSONObject scaleCalculate() throws Exception {
+
+        //总分
+        double score = 0;
+        Map<String, String> resultMap0 = new LinkedHashMap<>();
+        List<Map<String,String>> resultMapList = new ArrayList<>();
+
+        //获取答案列表
+        List<AnswerEntity> answerEntities = (List<AnswerEntity>) resultJson.get("answerEntities");
+        //获取评分规则列表
+        List<ScaleMarksEntity> scaleMarksEntities = (List<ScaleMarksEntity>) resultJson.get("scaleMarksEntities");
+        //获取维度信息列表
+        List<DimensionEntity> dimensionEntities = (List<DimensionEntity>) resultJson.get("dimensionEntities");
+        //计算每个维度得分
+        double[] dimensionScore = new double[dimensionEntities.size()];
+        for (int i = 0; i < jsonArray.size(); i++) {
+            JSONObject jsonObject1 = jsonArray.getJSONObject(i);
+            for (int y = 0; y < dimensionEntities.size(); y++) {
+                //for (DimensionEntity dimensionEntity:dimensionEntities){
+                DimensionEntity dimensionEntity = dimensionEntities.get(y);
+                String questionNos = dimensionEntity.getQuestionNo();
+                String[] questionNo = questionNos.split(";");
+                for (String question:questionNo){
+                    if (question.equals(jsonObject1.getString("questionNo"))){
+                        for (AnswerEntity answerEntity:answerEntities){
+                            if (answerEntity.getQuestionNo().equals(question) && answerEntity.getName().equals(jsonObject1.getString("checkItems"))){
+                                dimensionScore[y] += Double.valueOf(answerEntity.getScore());
+                            }
+                        }
+                        break;
+                    }
+                }
+            }
+        }
+
+        score += dimensionScore[8] + dimensionScore[9];
+        DecimalFormat df = new DecimalFormat("######0.00");
+        resultMap0.put("总均分", String.valueOf(Double.parseDouble(df.format(score/72))));
+        resultJson.put("总均分", String.valueOf(Double.parseDouble(df.format(score/72))));
+        for (int y = 0; y < dimensionEntities.size(); y++) {
+            DimensionEntity dimensionEntity = dimensionEntities.get(y);
+            if (dimensionEntity.getName().equals("抑制")){
+                resultMap0.put(dimensionEntity.getName() + "均分", String.valueOf(Double.parseDouble(df.format(dimensionScore[y]/10))));
+                resultJson.put(dimensionEntity.getName() + "均分", String.valueOf(Double.parseDouble(df.format(dimensionScore[y]/10))));
+            }else if (dimensionEntity.getName().equals("转换")){
+                resultMap0.put(dimensionEntity.getName() + "均分", String.valueOf(Double.parseDouble(df.format(dimensionScore[y]/8))));
+                resultJson.put(dimensionEntity.getName() + "均分", String.valueOf(Double.parseDouble(df.format(dimensionScore[y]/8))));
+            }else if (dimensionEntity.getName().equals("情感控制")){
+                resultMap0.put(dimensionEntity.getName() + "均分", String.valueOf(Double.parseDouble(df.format(dimensionScore[y]/10))));
+                resultJson.put(dimensionEntity.getName() + "均分", String.valueOf(Double.parseDouble(df.format(dimensionScore[y]/10))));
+            }else if (dimensionEntity.getName().equals("启动")){
+                resultMap0.put(dimensionEntity.getName() + "均分", String.valueOf(Double.parseDouble(df.format(dimensionScore[y]/8))));
+                resultJson.put(dimensionEntity.getName() + "均分", String.valueOf(Double.parseDouble(df.format(dimensionScore[y]/8))));
+            }else if (dimensionEntity.getName().equals("工作记忆")){
+                resultMap0.put(dimensionEntity.getName() + "均分", String.valueOf(Double.parseDouble(df.format(dimensionScore[y]/10))));
+                resultJson.put(dimensionEntity.getName() + "均分", String.valueOf(Double.parseDouble(df.format(dimensionScore[y]/10))));
+            }else if (dimensionEntity.getName().equals("计划")){
+                resultMap0.put(dimensionEntity.getName() + "均分", String.valueOf(Double.parseDouble(df.format(dimensionScore[y]/12))));
+                resultJson.put(dimensionEntity.getName() + "均分", String.valueOf(Double.parseDouble(df.format(dimensionScore[y]/12))));
+            }else if (dimensionEntity.getName().equals("组织")){
+                resultMap0.put(dimensionEntity.getName() + "均分", String.valueOf(Double.parseDouble(df.format(dimensionScore[y]/6))));
+                resultJson.put(dimensionEntity.getName() + "均分", String.valueOf(Double.parseDouble(df.format(dimensionScore[y]/6))));
+            }else if (dimensionEntity.getName().equals("监控")){
+                resultMap0.put(dimensionEntity.getName() + "均分", String.valueOf(Double.parseDouble(df.format(dimensionScore[y]/8))));
+                resultJson.put(dimensionEntity.getName() + "均分", String.valueOf(Double.parseDouble(df.format(dimensionScore[y]/8))));
+            }else if (dimensionEntity.getName().equals("行为管理指数")){
+                resultMap0.put(dimensionEntity.getName() + "均分", String.valueOf(Double.parseDouble(df.format(dimensionScore[y]/28))));
+                resultJson.put(dimensionEntity.getName() + "均分", String.valueOf(Double.parseDouble(df.format(dimensionScore[y]/28))));
+            }else {
+                resultMap0.put(dimensionEntity.getName() + "均分", String.valueOf(Double.parseDouble(df.format(dimensionScore[y]/44))));
+                resultJson.put(dimensionEntity.getName() + "均分", String.valueOf(Double.parseDouble(df.format(dimensionScore[y]/44))));
+            }
+        }
+        resultMapList.add(resultMap0);
+
+        JSONObject returnJson = new JSONObject(true);
+        returnJson.put("resultMapList",resultMapList);
+        //returnJson.put("scaleName",resultJson.getString("scaleName"));
+        returnJson.put("resultJson",resultJson);
+
+        return returnJson;
+    }
+}

+ 66 - 0
src/main/java/com/rf/psychological/scale/resultBusiness/scaleResult/BRMSScale.java

@@ -0,0 +1,66 @@
+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 BRMSScale extends BaseScale{
+
+    public BRMSScale(JSONArray jsonArray, JSONObject resultJson) {
+        super(jsonArray, resultJson);
+    }
+
+    public  JSONObject scaleCalculate() throws Exception {
+        //得分
+        int score = 0;
+        for (int i = 0; i < jsonArray.size(); i++) {
+            JSONObject jsonObject1 = jsonArray.getJSONObject(i);
+            if (jsonObject1.getString("checkItems").equals("无该项症状或与患者正常时的水平相仿")) {
+                score += 4;
+            } else if (jsonObject1.getString("checkItems").equals("症状轻微")) {
+                score += 3;
+            } else if (jsonObject1.getString("checkItems").equals("中度症状")) {
+                score += 2;
+            } else if (jsonObject1.getString("checkItems").equals("症状较重")) {
+                score += 1;
+            }
+        }
+        //得分列表
+        Map<String, String> resultMap = new LinkedHashMap<>();
+        resultMap.put("总分", String.valueOf(score));
+        resultJson.put("总分", String.valueOf(score));
+        if (score <= 5){
+            resultMap.put("解读", "无明显躁狂症状");
+            resultJson.put("解读", "无明显躁狂症状");
+        }else if (score >= 6 && score <= 10){
+            resultMap.put("解读", "有肯定躁狂症状");
+            resultJson.put("解读", "有肯定躁狂症状");
+        }else if (score >= 11 && score <= 22) {
+            resultMap.put("解读", "中度躁狂症状");
+            resultJson.put("解读", "中度躁狂症状");
+        }else {
+            resultMap.put("解读", "严重躁狂症状");
+            resultJson.put("解读", "严重躁狂症状");
+        }
+
+        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_BRMS);
+        returnJson.put("resultJson",resultJson);
+
+        return returnJson;
+    }
+}

+ 98 - 0
src/main/java/com/rf/psychological/scale/resultBusiness/scaleResult/BRTScale.java

@@ -0,0 +1,98 @@
+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 lpf
+ * @description:巴瑞特冲动性人格问卷
+ * @date 2021/3/10 17:17
+ */
+public class BRTScale extends BaseScale {
+
+    public BRTScale(JSONArray jsonArray, JSONObject resultJson) {
+        super(jsonArray, resultJson);
+    }
+
+    public JSONObject scaleCalculate() throws Exception {
+        //总得分
+        int score = 0;
+        //运动冲动性得分
+        int score1 = 0;
+        //认知冲动型得分
+        int score2 = 0;
+        //无计划冲动型得分
+        int score3 = 0;
+        for (int i = 0; i < jsonArray.size(); i++) {
+            JSONObject jsonObject1 = jsonArray.getJSONObject(i);
+            if (jsonObject1.getString("scoreDirection").equals("1")) {
+                if ((i + 1) == 2 || (i + 1) == 5 || (i + 1) == 8 || (i + 1) == 11 || (i + 1) == 14 || (i + 1) == 17 || (i + 1) == 20 || (i + 1) == 23 || (i + 1) == 26 || (i + 1) == 29) {
+                    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 + 1) == 3 || (i + 1) == 6 || (i + 1) == 9 || (i + 1) == 12 || (i + 1) == 15 || (i + 1) == 18 || (i + 1) == 21 || (i + 1) == 24 || (i + 1) == 27 || (i + 1) == 30) {
+                    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 (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;
+                    }
+                }
+            }
+        }
+        score1 = ((score1 - 10) / 40) * 100;
+        score2 = ((score2 - 10) / 40) * 100;
+        score3 = ((score3 - 10) / 40) * 100;
+        score = (score1 + score2 + score3) / 3;
+        //得分列表
+        Map<String, String> resultMap = new LinkedHashMap<>();
+        resultMap.put("总分", String.valueOf(score));
+        resultJson.put("总分", String.valueOf(score));
+        resultMap.put("运动冲动性得分", String.valueOf(score1));
+        resultJson.put("运动冲动性得分", String.valueOf(score1));
+        resultMap.put("认知冲动性得分", String.valueOf(score2));
+        resultJson.put("认知冲动性得分", String.valueOf(score2));
+        resultMap.put("无计划冲动性得分", String.valueOf(score3));
+        resultJson.put("无计划冲动性得分", String.valueOf(score3));
+
+        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_BRT);
+        returnJson.put("resultJson", resultJson);
+
+        return returnJson;
+    }
+}

+ 101 - 0
src/main/java/com/rf/psychological/scale/resultBusiness/scaleResult/BYNDSScale.java

@@ -0,0 +1,101 @@
+package com.rf.psychological.scale.resultBusiness.scaleResult;
+
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
+import com.rf.psychological.dao.model.AnswerEntity;
+import com.rf.psychological.dao.model.DimensionEntity;
+import com.rf.psychological.scale.dao.model.ScaleMarksEntity;
+
+import java.text.DecimalFormat;
+import java.util.ArrayList;
+import java.util.LinkedHashMap;
+import java.util.List;
+import java.util.Map;
+/***
+ * @author lhl
+ * @description:年轻新手驾驶行为量表
+ * @date 2021/11/02 15:55
+ */
+public class BYNDSScale extends BaseScale{
+    public BYNDSScale(JSONArray jsonArray, JSONObject resultJson) {
+        super(jsonArray, resultJson);
+    }
+    public JSONObject scaleCalculate() throws Exception{
+        //总分
+        double score = 0;
+        Map<String, String> resultMap0 = new LinkedHashMap<>();
+        List<Map<String,String>> resultMapList = new ArrayList<>();
+        //获取答案列表
+        List<AnswerEntity> answerEntities = (List<AnswerEntity>) resultJson.get("answerEntities");
+        //获取评分规则列表
+        List<ScaleMarksEntity> scaleMarksEntities = (List<ScaleMarksEntity>) resultJson.get("scaleMarksEntities");
+        //获取维度信息列表
+        List<DimensionEntity> dimensionEntities = (List<DimensionEntity>) resultJson.get("dimensionEntities");
+        if (dimensionEntities.size() > 0){
+            //计算每个维度得分
+            double[] dimensionScore = new double[dimensionEntities.size()];
+            for (int i = 0; i < jsonArray.size(); i++) {
+                JSONObject jsonObject1 = jsonArray.getJSONObject(i);
+                for (int y = 0; y < dimensionEntities.size(); y++) {
+                    //for (DimensionEntity dimensionEntity:dimensionEntities){
+                    DimensionEntity dimensionEntity = dimensionEntities.get(y);
+                    String questionNos = dimensionEntity.getQuestionNo();
+                    String[] questionNo = questionNos.split(";");
+                    for (String question:questionNo){
+                        if (question.equals(jsonObject1.getString("questionNo"))){
+                            for (AnswerEntity answerEntity:answerEntities){
+                                ///只用比较选项内容,进而判定该题目的分数值
+                                if (answerEntity.getQuestionNo().equals(question) &&answerEntity.getName().equals(jsonObject1.getString("checkItems"))){
+                                    dimensionScore[y] += Double.valueOf(answerEntity.getScore());
+                                }
+                            }
+                            break;
+                        }
+                    }
+                }
+
+                //计算总分
+                /*for (AnswerEntity answerEntity:answerEntities){
+                    if (answerEntity.getQuestionNo().equals(String.valueOf(i+1))){
+                        if (answerEntity.getName().equals(jsonObject1.getString("checkItems"))){
+                            score += Integer.valueOf(answerEntity.getScore());
+                        }
+                    }
+                }*/
+            }
+
+          /*  resultMap0.put("DBS总分", String.valueOf(score));
+            resultJson.put("DBS总分", String.valueOf(score));*/
+            //计算每个维度的平均分
+            DecimalFormat df = new DecimalFormat("######0.00");
+            double[] Mdscore = new double[dimensionScore.length];
+            Mdscore[0]= Double.parseDouble(df.format(dimensionScore[0]/9.0));
+            Mdscore[1]= Double.parseDouble(df.format(dimensionScore[1]/7.0));
+            Mdscore[2]= Double.parseDouble(df.format(dimensionScore[2]/6.0));
+            Mdscore[3]= Double.parseDouble(df.format(dimensionScore[3]/7.0));
+            Mdscore[4]= Double.parseDouble(df.format(dimensionScore[4]/3.0));
+            resultMap0.put("短暂行为违规维度", String.valueOf(Mdscore[0]));
+            resultMap0.put("固定行为违规维度", String.valueOf(Mdscore[1]));
+            resultMap0.put("行为误判维度", String.valueOf(Mdscore[2]));
+            resultMap0.put("危险暴露度维度", String.valueOf(Mdscore[3]));
+            resultMap0.put("驾驶心情维度", String.valueOf(Mdscore[4]));
+
+            resultJson.put("短暂行为违规维度", String.valueOf(Mdscore[0]));
+            resultJson.put("固定行为违规维度", String.valueOf(Mdscore[1]));
+            resultJson.put("行为误判维度", String.valueOf(Mdscore[2]));
+            resultJson.put("危险暴露度维度", String.valueOf(Mdscore[3]));
+            resultJson.put("驾驶心情维度", String.valueOf(Mdscore[4]));
+
+
+            resultMapList.add(resultMap0);
+        }
+
+        JSONObject returnJson = new JSONObject(true);
+        returnJson.put("resultMapList",resultMapList);
+        returnJson.put("scaleName",resultJson.getString("scaleName"));
+        returnJson.put("resultJson",resultJson);
+
+        return returnJson;
+
+    }
+}

+ 226 - 0
src/main/java/com/rf/psychological/scale/resultBusiness/scaleResult/C16PFTScale.java

@@ -0,0 +1,226 @@
+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 org.springframework.beans.BeanUtils;
+
+import java.math.BigDecimal;
+import java.text.DecimalFormat;
+import java.util.*;
+import java.util.stream.Collectors;
+
+/**
+ * @Author: GaoYiXuan
+ * @Description:
+ * @DateTime: 2022/7/18 23:01
+ * @Params:
+ * @Return
+ */
+
+public class C16PFTScale extends BaseScale {
+    public C16PFTScale(JSONArray jsonArray, JSONObject resultJson) {
+        super(jsonArray, resultJson);
+    }
+
+    public  JSONObject scaleCalculate() throws Exception {
+        //总分
+        double score = 0;
+        DecimalFormat df = new DecimalFormat("######0.00");
+        //结果列表
+        Map<String, String> resultMap0 = new LinkedHashMap<>();
+        List<Map<String, String>> resultMapList = new ArrayList<>();
+        //新版本数据格式
+        Map<String, Object> newResult = new LinkedHashMap<>();
+
+        //获取答案列表
+        List<AnswerEntity> answerEntities = (List<AnswerEntity>) resultJson.get("answerEntities");
+        //获取评分规则列表
+        List<ScaleMarksEntity> scaleMarksEntities = (List<ScaleMarksEntity>) resultJson.get("scaleMarksEntities");
+        //获取维度信息列表
+        List<DimensionEntity> dimensionEntities = (List<DimensionEntity>) resultJson.get("dimensionEntities");
+        //获取特殊维度信息:这些维度需要根据已有维度进行计算
+        dimensionEntities.add(new DimensionEntity("心理健康者的人格因素", "", "20211020112514", "1"));
+        dimensionEntities.add(new DimensionEntity("从事专业而有成就者的人格因素", "", "20211020112514", "1"));
+        dimensionEntities.add(new DimensionEntity("创造力强者的人格因素", "", "20211020112514", "1"));
+        dimensionEntities.add(new DimensionEntity("在新的环境中有成长能力的人格因素", "", "20211020112514", "1"));
+        dimensionEntities.add(new DimensionEntity("适应与焦虑性", "", "20211020112514", "1"));
+        dimensionEntities.add(new DimensionEntity("内向与外向性", "", "20211020112514", "1"));
+        dimensionEntities.add(new DimensionEntity("感情用事与安祥机警性", "", "20211020112514", "1"));
+        dimensionEntities.add(new DimensionEntity("怯懦与果断性", "", "20211020112514", "1"));
+        //计算每个维度得分dimensionEntities
+        double[] dimensionScore = new double[dimensionEntities.size()];
+        //jsonArray:用户自己选择的题目选项
+        for (int i = 0; i < jsonArray.size(); i++) {
+            JSONObject jsonObject1 = jsonArray.getJSONObject(i);
+            //计算总分
+            for (AnswerEntity answerEntity : answerEntities) {
+                if (answerEntity.getQuestionNo().equals(jsonObject1.getString("questionNo"))) {
+                    if (answerEntity.getName().equals(jsonObject1.getString("checkItems"))) {
+                        score += Double.parseDouble(answerEntity.getScore());
+                        break;
+                    }
+                }
+            }
+
+            //计算维度分数
+            for (int y = 0; y < dimensionEntities.size(); y++) {
+                //获取维度信息
+                DimensionEntity dimensionEntity = dimensionEntities.get(y);
+                //获取该维度下有哪些选项
+                String questionNos = dimensionEntity.getQuestionNo();
+                //得到选择题号
+                String[] questionNo = questionNos.split(";");
+                //处理特殊的维度分数
+                if ("心理健康者的人格因素".equals(dimensionEntity.getName())){
+                    dimensionScore[y] = dimensionScore[2] + dimensionScore[4] + (11 - dimensionScore[11]) + (11 - dimensionScore[15]);
+                } else if ("从事专业而有成就者的人格因素".equals(dimensionEntity.getName())){
+                    dimensionScore[y] = 2 * dimensionScore[14] + 2 * dimensionScore[5] + 2 * dimensionScore[2] + dimensionScore[3] + dimensionScore[10] + dimensionScore[13] + dimensionScore[12];
+                } else if ("创造力强者的人格因素".equals(dimensionEntity.getName())){
+                    dimensionScore[y] = 2 * (11 - dimensionScore[0]) + 2 * dimensionScore[1] + dimensionScore[3] + 2 * (11 - dimensionScore[4]) + dimensionScore[6] + 2 * dimensionScore[7] + dimensionScore[9] + (11 - dimensionScore[10]) + dimensionScore[12] + 2 * dimensionScore[13];
+                } else if ("在新的环境中有成长能力的人格因素".equals(dimensionEntity.getName())){
+                    dimensionScore[y] = dimensionScore[1] + dimensionScore[5] + dimensionScore[14] + (11 - dimensionScore[4]);
+                } else if ("适应与焦虑性".equals(dimensionEntity.getName())){
+                    dimensionScore[y] =((38 + 2 * dimensionScore[8] + 3 * dimensionScore[11] + 4 * dimensionScore[15]) - (2 * dimensionScore[2] + 2 * dimensionScore[6] + 2 * dimensionScore[14])) / 10;
+                } else if ("内向与外向性".equals(dimensionEntity.getName())){
+                    dimensionScore[y] =((2 * dimensionScore[0] + 3 * dimensionScore[3] + 4 * dimensionScore[4] + 5 * dimensionScore[6]) - (2 * dimensionScore[13] + 11)) / 10;
+                } else if ("感情用事与安祥机警性".equals(dimensionEntity.getName())){
+                    dimensionScore[y] =((77 + 2 * dimensionScore[2] + 2 * dimensionScore[3] + 2 * dimensionScore[4] + 2 * dimensionScore[10]) - (4 * dimensionScore[0] + 6*dimensionScore[7] + 2 * dimensionScore[9])) / 10;
+                } else if ("怯懦与果断性".equals(dimensionEntity.getName())){
+                    dimensionScore[y] = ((4 * dimensionScore[3] + 3 * dimensionScore[9] + 4 * dimensionScore[12] + 4 * dimensionScore[13]) - (3 * dimensionScore[0] + 2 * dimensionScore[5])) / 10;
+                }
+                //计算每道题的得分
+                for (String question : questionNo) {
+                    if (question.equals(jsonObject1.getString("questionNo"))) {
+                        //获取所有答案中本道题目的答案list数组
+                        List<AnswerEntity> nowQuestionAnswerList = answerEntities.stream().filter(answerEntity -> answerEntity.getQuestionNo().equals(question)).collect(Collectors.toList());
+                        //本题目的正确答案与自己的选项进行对比,正确的话相应分数进行相加
+                        for (AnswerEntity answerEntity : nowQuestionAnswerList) {
+                            if (answerEntity.getName().equals(jsonObject1.getString("checkItems"))) {
+                                dimensionScore[y] += Double.parseDouble(answerEntity.getScore());
+                                break;
+                            }
+                        }
+                    }
+                }
+            }
+        }
+        //将量表总维度根据维度名称进行分组
+        Map<String, List<ScaleMarksEntity>> scaleMarksMap = scaleMarksEntities.stream().collect(Collectors.groupingBy(ScaleMarksEntity::getName));
+        //返回值以及存数据库格式
+        List<NewResultDto> newResultDtos = new ArrayList<>();
+        resultMap0.put("总分", df.format(score));
+        resultJson.put("总分", df.format(score));
+        BigDecimal scoreDecimal = new BigDecimal(df.format(score));
+        //如果没有总分这一栏,需要手动赋值返回
+        List<ScaleMarksEntity> totalScore = scaleMarksMap.get("总分");
+        if (totalScore == null) {
+            newResultDtos.add(new NewResultDto("总分", df.format(score), "无", "无",
+                    "无", "无", "无", "无", "是"));
+        } else {
+            for (ScaleMarksEntity tempTotalScore : totalScore) {
+                BigDecimal scoreStart = new BigDecimal(tempTotalScore.getScoreStart());
+                BigDecimal scoreEnd = new BigDecimal(tempTotalScore.getScoreEnd());
+                if (scoreDecimal.compareTo(scoreEnd) <= 0 && scoreDecimal.compareTo(scoreStart) >= 0) {
+                    newResultDtos.add(new NewResultDto("总分", df.format(score), tempTotalScore.getSymptom(), tempTotalScore.getImprovementSuggestions(),
+                            tempTotalScore.getFlag(), tempTotalScore.getReference(), tempTotalScore.getNameExplain(), tempTotalScore.getSuggestion(), tempTotalScore.getIsTotalScoreExplain()));
+                }
+            }
+        }
+
+
+        JSONObject iconInfo = new JSONObject();
+        //雷达图需要的维度以及最大值
+        List<Map<String, Object>> indicator = new LinkedList<>();
+        //雷达图所需要的常模参考值
+        LinkedList<String> reference = new LinkedList<>();
+        //雷达图需要的分数
+        LinkedList<String> scoreList = new LinkedList<>();
+        for (int y = 0; y < dimensionEntities.size(); y++) {
+            Map<String, Object> indicatorMap = new HashMap<>();
+            DimensionEntity dimensionEntity = dimensionEntities.get(y);
+            NewResultDto newResultDto1 = new NewResultDto();
+            //存放该维度总分
+            resultMap0.put(dimensionEntity.getName() + "得分", df.format(dimensionScore[y]));
+            resultJson.put(dimensionEntity.getName() + "得分", df.format(dimensionScore[y]));
+            newResultDto1.setScore(df.format(dimensionScore[y]));
+            newResultDtos.add(newResultDto1);
+            BigDecimal dimensionScoreDecimal = new BigDecimal(df.format(dimensionScore[y]));
+            //获取当前维度的评分规则
+            List<ScaleMarksEntity> scaleMarksEntities1 = scaleMarksMap.get(dimensionEntity.getName());
+            if (scaleMarksEntities1 != null) {
+                //循环遍历判断得分在哪个区间
+                for (ScaleMarksEntity scaleMarksEntity : scaleMarksEntities1) {
+                    BigDecimal decimalScoreEnd = new BigDecimal(scaleMarksEntity.getScoreEnd());
+                    BigDecimal decimalScoreStart = new BigDecimal(scaleMarksEntity.getScoreStart());
+                    if (dimensionScoreDecimal.compareTo(decimalScoreEnd) <= 0 && dimensionScoreDecimal.compareTo(decimalScoreStart) >= 0) {
+                        putDimResult(resultMap0, resultJson, dimensionEntity, newResultDto1, scaleMarksEntity);
+                        //需要进行图表展示的维度放入map
+                        if ("1".equals(dimensionEntity.getIsIconFlag())) {
+                            indicatorMap.put("text", dimensionEntity.getName());
+                            //将当前维度按照分数的结尾值来进行排序scaleMarksEntities1
+                            List<ScaleMarksEntity> collect = scaleMarksEntities1.stream().sorted(Comparator.comparing(ScaleMarksEntity::getScoreEnd, Comparator.comparingInt(Integer::parseInt))
+                                    .reversed()).collect(Collectors.toList());
+                            //排序完成后第一个的scoreEnd最大,也就是该维度最大的
+                            indicatorMap.put("max", collect.get(0).getScoreEnd());
+                            indicator.add(indicatorMap);
+                            if ("无".equals(scaleMarksEntity.getReference()) || "无".equals(scaleMarksEntity.getStandardDeviation())) {
+                                //常模参考值设为0
+                                reference.add("0");
+                            } else {
+                                reference.add(scaleMarksEntity.getReference());
+                            }
+                            scoreList.add(String.valueOf(dimensionScore[y]));
+                        }
+                    }
+                }
+            } else {
+                //如果分数规则表中无维度,而维度表中有相应维度,则只显示维度分数
+                newResultDto1.setFlag("无");
+                newResultDto1.setImprovementSuggestions("无");
+                newResultDto1.setName(dimensionEntity.getName());
+                newResultDto1.setReference("无");
+                newResultDto1.setNameExplain("无");
+                newResultDto1.setSuggestion("无");
+                newResultDto1.setIsTotalScoreExplain("否");
+                newResultDto1.setSymptom("无");
+            }
+        }
+        //需要图表展示的
+        iconInfo.put("indicator", indicator);
+        //判断是否有常模参考值,即reference的内容如果全为0,则不进行返回
+        if (!reference.stream().allMatch("0"::equals)) {
+            iconInfo.put("reference", reference);
+        }
+        iconInfo.put("scoreList", scoreList);
+        if (indicator.size() == 0 && reference.size() == 0) {
+            newResult.put("iconInfo", "");
+        } else {
+            newResult.put("iconInfo", iconInfo);
+        }
+        newResult.put("result", newResultDtos);
+        resultMapList.add(resultMap0);
+
+        JSONObject returnJson = new JSONObject(true);
+        returnJson.put("resultMapList", resultMapList);
+        returnJson.put("resultJson", resultJson);
+        returnJson.put(ScaleConstant.ResultEnum.RESULT_NEW_FIELD.getKeyword(), newResult);
+
+        return returnJson;
+    }
+
+    private static void putDimResult(Map<String, String> resultMap0, JSONObject resultJson, DimensionEntity dimensionEntity, NewResultDto newResultDto1, ScaleMarksEntity scaleMarksEntity) {
+        resultMap0.put(dimensionEntity.getName() + "常模参考值", scaleMarksEntity.getReference());
+        resultMap0.put(dimensionEntity.getName() + "症状", scaleMarksEntity.getSymptom());
+        resultJson.put(dimensionEntity.getName() + "解读", scaleMarksEntity.getSymptom());
+        resultMap0.put(dimensionEntity.getName() + "因子解释", scaleMarksEntity.getNameExplain());
+        resultMap0.put(dimensionEntity.getName() + "指导语", scaleMarksEntity.getImprovementSuggestions());
+        resultJson.put(dimensionEntity.getName() + "指导语", scaleMarksEntity.getImprovementSuggestions());
+        resultMap0.put(dimensionEntity.getName() + "建议", scaleMarksEntity.getSuggestion());
+        BeanUtils.copyProperties(scaleMarksEntity, newResultDto1);
+    }
+}

+ 51 - 0
src/main/java/com/rf/psychological/scale/resultBusiness/scaleResult/CABSScale.java

@@ -0,0 +1,51 @@
+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 CABSScale extends BaseScale {
+    public CABSScale(JSONArray jsonArray, JSONObject resultJson) {
+        super(jsonArray, resultJson);
+    }
+
+    public JSONObject scaleCalculate() throws Exception {
+        //总分
+        int score = 0;
+
+        for (int i = 0; i < jsonArray.size(); i++) {
+            JSONObject jsonObject1 = jsonArray.getJSONObject(i);
+            if (jsonObject1.getString("checkItems").equals("从不")) {
+                score += 0;
+            } else if (jsonObject1.getString("checkItems").equals("偶尔")) {
+                score += 1;
+            } else if (jsonObject1.getString("checkItems").equals("经常")) {
+                score += 2;
+            }
+        }
+
+
+        //得分列表
+        Map<String, String> resultMap = new LinkedHashMap<>();
+        resultMap.put("总分", String.valueOf(score));
+        resultJson.put("总分", String.valueOf(score));
+
+        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_CABS);
+        returnJson.put("resultJson", resultJson);
+
+        return returnJson;
+    }
+}

+ 66 - 0
src/main/java/com/rf/psychological/scale/resultBusiness/scaleResult/CARSScale.java

@@ -0,0 +1,66 @@
+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 CARSScale extends BaseScale {
+    public CARSScale(JSONArray jsonArray, JSONObject resultJson) {
+        super(jsonArray, resultJson);
+    }
+
+    public JSONObject scaleCalculate() throws Exception {
+        //总分
+        int score = 0;
+
+        for (int i = 0; i < jsonArray.size(); i++) {
+            JSONObject jsonObject1 = jsonArray.getJSONObject(i);
+            if (jsonObject1.getString("checkItems").equals("正常")) {
+                score += 1;
+            } else if (jsonObject1.getString("checkItems").equals("轻微不正常")) {
+                score += 2;
+            } else if (jsonObject1.getString("checkItems").equals("很不正常")) {
+                score += 3;
+            } else if (jsonObject1.getString("checkItems").equals("极不正常")) {
+                score += 4;
+            }
+        }
+
+
+        //得分列表
+        Map<String, String> resultMap = new LinkedHashMap<>();
+        resultMap.put("总分", String.valueOf(score));
+        resultJson.put("总分", String.valueOf(score));
+
+
+        if (score <= 30) {
+            resultMap.put("总分解读", "非自闭症");
+            resultJson.put("总分解读", "非自闭症");
+        } else if (score <= 36) {
+            resultMap.put("总分解读", "有自闭症倾向");
+            resultJson.put("总分解读", "有自闭症倾向");
+        } else {
+            resultMap.put("总分解读", "确实为自闭症");
+            resultJson.put("总分解读", "确实为自闭症");
+        }
+
+
+        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_CARS);
+        returnJson.put("resultJson", resultJson);
+
+        return returnJson;
+    }
+}

+ 79 - 0
src/main/java/com/rf/psychological/scale/resultBusiness/scaleResult/CCFScale.java

@@ -0,0 +1,79 @@
+package com.rf.psychological.scale.resultBusiness.scaleResult;
+
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
+import com.rf.psychological.dao.model.AnswerEntity;
+import com.rf.psychological.dao.model.DimensionEntity;
+import com.rf.psychological.scale.dao.model.ScaleMarksEntity;
+
+import java.text.DecimalFormat;
+import java.util.ArrayList;
+import java.util.LinkedHashMap;
+import java.util.List;
+import java.util.Map;
+/**
+ * @author xbw
+ * @description:竞赛失败应对量表
+ * @date 2021/11/2 16:00
+ */
+public class CCFScale extends BaseScale{
+    public CCFScale(JSONArray jsonArray, JSONObject resultJson) {
+        super(jsonArray, resultJson);
+    }
+
+    public  JSONObject scaleCalculate() throws Exception {
+
+        //总分
+        double score = 0;
+        Map<String, String> resultMap0 = new LinkedHashMap<>();
+        List<Map<String,String>> resultMapList = new ArrayList<>();
+
+        //获取答案列表
+        List<AnswerEntity> answerEntities = (List<AnswerEntity>) resultJson.get("answerEntities");
+        //获取评分规则列表
+        List<ScaleMarksEntity> scaleMarksEntities = (List<ScaleMarksEntity>) resultJson.get("scaleMarksEntities");
+        //获取维度信息列表
+        List<DimensionEntity> dimensionEntities = (List<DimensionEntity>) resultJson.get("dimensionEntities");
+        double sum = 0;
+        if (dimensionEntities.size() > 0){
+            //计算每个维度得分
+            double[] dimensionScore = new double[dimensionEntities.size()];
+            for (int y = 0; y < dimensionEntities.size(); y++) {
+                DimensionEntity dimensionEntity = dimensionEntities.get(y);
+                sum = 0;
+                String questionNos = dimensionEntity.getQuestionNo();
+                String[] questionNo = questionNos.split(";");
+                for (String question:questionNo){
+                    JSONObject jsonObject1 = jsonArray.getJSONObject(Integer.valueOf(question)-1);
+                    if (question.equals(jsonObject1.getString("questionNo"))){
+                        for (AnswerEntity answerEntity:answerEntities){
+                            if (answerEntity.getQuestionNo().equals(question) && answerEntity.getName().equals(jsonObject1.getString("checkItems"))){
+                                dimensionScore[y] += Double.valueOf(answerEntity.getScore());
+                                sum = sum + 1;
+                                break;
+                            }
+                        }
+                    }
+                }
+                if (sum < questionNo.length){
+                    dimensionScore[y]  = dimensionScore[y] + (questionNo.length-sum)*(dimensionScore[y]/sum);
+                    DecimalFormat df = new DecimalFormat("######0.00");
+                    dimensionScore[y] = Double.parseDouble(df.format(dimensionScore[y]));
+                }
+
+                String dimensionSName = dimensionEntity.getName().concat("维度分");
+                resultMap0.put(dimensionSName, String.valueOf(dimensionScore[y]));
+                resultJson.put(dimensionSName, String.valueOf(dimensionScore[y]));
+            }
+
+            resultMapList.add(resultMap0);
+        }
+
+        JSONObject returnJson = new JSONObject(true);
+        returnJson.put("resultMapList",resultMapList);
+        //returnJson.put("scaleName",resultJson.getString("scaleName"));
+        returnJson.put("resultJson",resultJson);
+
+        return returnJson;
+    }
+}

+ 70 - 0
src/main/java/com/rf/psychological/scale/resultBusiness/scaleResult/CCSAS2Scale.java

@@ -0,0 +1,70 @@
+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 CCSAS2Scale extends BaseScale {
+    public CCSAS2Scale(JSONArray jsonArray, JSONObject resultJson) {
+        super(jsonArray, resultJson);
+    }
+
+    public JSONObject scaleCalculate() throws Exception {
+        //总分
+        int score = 0;
+
+        for (int i = 0; i < jsonArray.size(); i++) {
+            JSONObject jsonObject1 = jsonArray.getJSONObject(i);
+            if (jsonObject1.getString("scoreDirection").equals("1")) {
+                if (jsonObject1.getString("checkItems").equals("不同意")) {
+                    score += 1;
+                } else if (jsonObject1.getString("checkItems").equals("不太同意")) {
+                    score += 2;
+                } else if (jsonObject1.getString("checkItems").equals("不确定")) {
+                    score += 3;
+                } else if (jsonObject1.getString("checkItems").equals("比较同意")) {
+                    score += 4;
+                } else if (jsonObject1.getString("checkItems").equals("同意")) {
+                    score += 5;
+                }
+            }else {
+                if (jsonObject1.getString("checkItems").equals("不同意")) {
+                    score += 5;
+                } else if (jsonObject1.getString("checkItems").equals("不太同意")) {
+                    score += 4;
+                } else if (jsonObject1.getString("checkItems").equals("不确定")) {
+                    score += 3;
+                } else if (jsonObject1.getString("checkItems").equals("比较同意")) {
+                    score += 2;
+                } else if (jsonObject1.getString("checkItems").equals("同意")) {
+                    score += 1;
+                }
+            }
+        }
+
+        //得分列表
+        Map<String, String> resultMap = new LinkedHashMap<>();
+        resultMap.put("总分", String.valueOf(score));
+        resultJson.put("总分", String.valueOf(score));
+
+
+
+        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_CCSAS2);
+        returnJson.put("resultJson", resultJson);
+
+        return returnJson;
+    }
+}

+ 134 - 0
src/main/java/com/rf/psychological/scale/resultBusiness/scaleResult/CCSASScale.java

@@ -0,0 +1,134 @@
+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;
+
+/**
+ * @description 儿童行为问卷(父母用)
+ */
+public class CCSASScale extends BaseScale {
+    public CCSASScale(JSONArray jsonArray, JSONObject resultJson) {
+        super(jsonArray, resultJson);
+    }
+
+    public JSONObject scaleCalculate() throws Exception {
+        //品行行为总分
+        int score1 = 0;
+        //学习问题总分
+        int score2 = 0;
+        //心神障碍总分
+        int score3 = 0;
+        //冲动-多动总分
+        int score4 = 0;
+        //焦虑总分
+        int score5 = 0;
+
+        //品行行为均分
+        double score1A = 0;
+        //学习问题均分
+        double score2A = 0;
+        //心神障碍均分
+        double score3A = 0;
+        //冲动-多动均分
+        double score4A = 0;
+        //焦虑均分
+        double score5A = 0;
+
+
+        for (int i = 0; i < jsonArray.size(); i++) {
+            JSONObject jsonObject1 = jsonArray.getJSONObject(i);
+            if ((i + 1) == 2 || (i + 1) == 8 || (i + 1) == 14 || (i + 1) == 19 || (i + 1) == 20 || (i + 1) == 21 || (i + 1) == 22 || (i + 1) == 23 || (i + 1) == 27 || (i + 1) == 33 || (i + 1) == 34 || (i + 1) == 39) {
+                if (jsonObject1.getString("checkItems").equals("无")) {
+                    score1 += 0;
+                } else 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 ((i + 1) == 10 || (i + 1) == 25 || (i + 1) == 31 || (i + 1) == 37) {
+                if (jsonObject1.getString("checkItems").equals("无")) {
+                    score2 += 0;
+                } else 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 ((i + 1) == 32 || (i + 1) == 41 || (i + 1) == 43 || (i + 1) == 44 || (i + 1) == 48) {
+                if (jsonObject1.getString("checkItems").equals("无")) {
+                    score3 += 0;
+                } else 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 ((i + 1) == 4 || (i + 1) == 5 || (i + 1) == 1 || (i + 1) == 13) {
+                if (jsonObject1.getString("checkItems").equals("无")) {
+                    score4 += 0;
+                } else 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 ((i + 1) == 12 || (i + 1) == 16 || (i + 1) == 24 || (i + 1) == 47) {
+                if (jsonObject1.getString("checkItems").equals("无")) {
+                    score5 += 0;
+                } else if (jsonObject1.getString("checkItems").equals("稍有")) {
+                    score5 += 1;
+                } else if (jsonObject1.getString("checkItems").equals("相当多")) {
+                    score5 += 2;
+                } else if (jsonObject1.getString("checkItems").equals("很多")) {
+                    score5 += 3;
+                }
+            }
+        }
+
+        DecimalFormat df = new DecimalFormat("######0.00");
+
+        score1A = Double.parseDouble(df.format(score1 / 12.0));
+        score2A = Double.parseDouble(df.format(score2 / 4.0));
+        score3A = Double.parseDouble(df.format(score3 / 5.0));
+        score4A = Double.parseDouble(df.format(score4 / 4.0));
+        score5A = Double.parseDouble(df.format(score5 / 5.0));
+
+
+        //得分列表
+        Map<String, String> resultMap = new LinkedHashMap<>();
+        resultMap.put("品行行为均分", String.valueOf(score1A));
+        resultMap.put("学习问题均分", String.valueOf(score2A));
+        resultMap.put("心神障碍均分", String.valueOf(score3A));
+        resultMap.put("冲动-多动均分", String.valueOf(score4A));
+        resultMap.put("焦虑均分", String.valueOf(score5A));
+
+        resultJson.put("品行行为均分", String.valueOf(score1A));
+        resultJson.put("学习问题均分", String.valueOf(score2A));
+        resultJson.put("心神障碍均分", String.valueOf(score3A));
+        resultJson.put("冲动-多动均分", String.valueOf(score4A));
+        resultJson.put("焦虑均分", String.valueOf(score5A));
+
+
+        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_CCSAS);
+        returnJson.put("resultJson", resultJson);
+
+        return returnJson;
+    }
+}

+ 72 - 0
src/main/java/com/rf/psychological/scale/resultBusiness/scaleResult/CESDScale.java

@@ -0,0 +1,72 @@
+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 CESDScale extends BaseScale{
+
+    public CESDScale(JSONArray jsonArray, JSONObject resultJson) {
+        super(jsonArray, resultJson);
+    }
+
+    public  JSONObject scaleCalculate() throws Exception {
+        //得分
+        int score = 0;
+        for (int i = 0; i < jsonArray.size(); i++) {
+            JSONObject jsonObject1 = jsonArray.getJSONObject(i);
+            if (jsonObject1.getString("scoreDirection").equals("1")) {
+                if (jsonObject1.getString("checkItems").equals("偶尔或无(少于一天)")) {
+                    score += 1;
+                } else if (jsonObject1.getString("checkItems").equals("有时(1一2天)")) {
+                    score += 2;
+                } else if (jsonObject1.getString("checkItems").equals("时常或一半时间(3一4天)")) {
+                    score += 3;
+                } else if (jsonObject1.getString("checkItems").equals("多数时间或持续(5一7天)")) {
+                    score += 4;
+                }
+            } else {
+                if (jsonObject1.getString("checkItems").equals("偶尔或无(少于一天)")) {
+                    score += 4;
+                } else if (jsonObject1.getString("checkItems").equals("有时(1一2天)")) {
+                    score += 3;
+                } else if (jsonObject1.getString("checkItems").equals("时常或一半时间(3一4天)")) {
+                    score += 2;
+                } else if (jsonObject1.getString("checkItems").equals("多数时间或持续(5一7天)")) {
+                    score += 1;
+                }
+            }
+        }
+        //得分列表
+        Map<String, String> resultMap = new LinkedHashMap<>();
+        resultMap.put("总分", String.valueOf(score));
+        resultJson.put("总分", String.valueOf(score));
+        if (score >= 17){
+            resultMap.put("解读", "处于抑郁危险");
+            resultJson.put("解读", "处于抑郁危险");
+        }else if (score <17){
+            resultMap.put("解读", "无抑郁");
+            resultJson.put("解读", "无抑郁");
+        }
+
+        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_CES_D);
+        returnJson.put("resultJson",resultJson);
+
+        return returnJson;
+    }
+}

+ 66 - 0
src/main/java/com/rf/psychological/scale/resultBusiness/scaleResult/CFDScale.java

@@ -0,0 +1,66 @@
+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 CFDScale extends BaseScale {
+    public CFDScale(JSONArray jsonArray, JSONObject resultJson) {
+        super(jsonArray, resultJson);
+    }
+
+    public JSONObject scaleCalculate() throws Exception {
+        //得分
+        int score = 0;
+
+        for (int i = 0; i < jsonArray.size(); i++) {
+            JSONObject jsonObject1 = jsonArray.getJSONObject(i);
+            if (jsonObject1.getString("scoreDirection").equals("1")) {
+                if (jsonObject1.getString("checkItems").equals("是")) {
+                    score += 1;
+                } else if (jsonObject1.getString("checkItems").equals("否")) {
+                    score += 0;
+                }
+            }else {
+                if (jsonObject1.getString("checkItems").equals("是")) {
+                    score += 0;
+                } else if (jsonObject1.getString("checkItems").equals("否")) {
+                    score += 1;
+                }
+            }
+        }
+        //得分列表
+        Map<String, String> resultMap = new LinkedHashMap<>();
+        resultMap.put("总分", String.valueOf(score));
+        resultJson.put("总分", String.valueOf(score));
+
+        if (score <= 40 && score >= 25) {
+            resultMap.put("解读", "说明你对自己自信心十足,明白自己的优点,同时也清楚自己的缺点。不过,在此警告你一声:如果你得分将近40的话,别人可能会认为你很自大狂傲,甚至气焰太胜。你不妨在别人面前谦虚一点,这样人缘才会好。");
+            resultJson.put("解读", "说明你对自己自信心十足,明白自己的优点,同时也清楚自己的缺点。不过,在此警告你一声:如果你得分将近40的话,别人可能会认为你很自大狂傲,甚至气焰太胜。你不妨在别人面前谦虚一点,这样人缘才会好。");
+        } else if (score <= 24 && score >= 12) {
+            resultMap.put("解读", "说明你对自己颇有自信,但是你仍或多或少缺乏安全感,对自己产生怀疑。你不妨提醒自己,在优点和长处各方面并不输入,特别强调自己的才能和成就。");
+            resultJson.put("解读", "说明你对自己颇有自信,但是你仍或多或少缺乏安全感,对自己产生怀疑。你不妨提醒自己,在优点和长处各方面并不输入,特别强调自己的才能和成就。");
+        } else if (score <= 11) {
+            resultMap.put("解读", "说明你对自己显然不太有信心。你过于谦虚和自我压抑,因此经常受人支配。从现在起,尽管不要去想自己的弱点,多往好的一面去衡量;先学会看重自己,别人才会真正看重你。");
+            resultJson.put("解读", "说明你对自己显然不太有信心。你过于谦虚和自我压抑,因此经常受人支配。从现在起,尽管不要去想自己的弱点,多往好的一面去衡量;先学会看重自己,别人才会真正看重你。");
+        }
+
+        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_CFD);
+        returnJson.put("resultJson", resultJson);
+
+        return returnJson;
+    }
+}

+ 87 - 0
src/main/java/com/rf/psychological/scale/resultBusiness/scaleResult/CMIMScale.java

@@ -0,0 +1,87 @@
+package com.rf.psychological.scale.resultBusiness.scaleResult;
+
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
+import com.rf.psychological.dao.model.AnswerEntity;
+import com.rf.psychological.dao.model.DimensionEntity;
+import com.rf.psychological.scale.dao.model.ScaleMarksEntity;
+
+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 CMIMScale extends BaseScale{
+
+    public CMIMScale(JSONArray jsonArray, JSONObject resultJson) {
+        super(jsonArray, resultJson);
+    }
+
+    public  JSONObject scaleCalculate() throws Exception {
+
+        //总分
+        double score = 0;
+        Map<String, String> resultMap0 = new LinkedHashMap<>();
+        List<Map<String,String>> resultMapList = new ArrayList<>();
+
+        //获取答案列表
+        List<AnswerEntity> answerEntities = (List<AnswerEntity>) resultJson.get("answerEntities");
+        //获取评分规则列表
+        List<ScaleMarksEntity> scaleMarksEntities = (List<ScaleMarksEntity>) resultJson.get("scaleMarksEntities");
+        //获取维度信息列表
+        List<DimensionEntity> dimensionEntities = (List<DimensionEntity>) resultJson.get("dimensionEntities");
+        if (dimensionEntities.size() > 0){
+            //计算每个维度得分
+            double[] dimensionScore = new double[dimensionEntities.size()];
+            for (int i = 0; i < jsonArray.size(); i++) {
+                JSONObject jsonObject1 = jsonArray.getJSONObject(i);
+                for (int y = 0; y < dimensionEntities.size(); y++) {
+                    //for (DimensionEntity dimensionEntity:dimensionEntities){
+                    DimensionEntity dimensionEntity = dimensionEntities.get(y);
+                    String questionNos = dimensionEntity.getQuestionNo();
+                    String[] questionNo = questionNos.split(";");
+                    for (String question:questionNo){
+                        if (question.equals(jsonObject1.getString("questionNo"))){
+                            for (AnswerEntity answerEntity:answerEntities){
+                                if (answerEntity.getQuestionNo().equals(question) && answerEntity.getName().equals(jsonObject1.getString("checkItems"))){
+                                    dimensionScore[y] += Double.valueOf(answerEntity.getScore());
+                                }
+                            }
+                            break;
+                        }
+                    }
+                }
+                //计算总分
+                for (AnswerEntity answerEntity:answerEntities){
+                    if (answerEntity.getQuestionNo().equals(String.valueOf(i+1))){
+                        if (answerEntity.getName().equals(jsonObject1.getString("checkItems"))){
+                            score += Integer.valueOf(answerEntity.getScore());
+                        }
+                    }
+                }
+            }
+
+            resultMap0.put("CMI总分", String.valueOf(score));
+            resultJson.put("CMI总分", String.valueOf(score));
+            double MRscore = 0;
+            for (int y = 12; y < dimensionEntities.size(); y++) {
+                MRscore += dimensionScore[y];
+            }
+            resultMap0.put("M-R分", String.valueOf(MRscore));
+            resultJson.put("M-R分", String.valueOf(MRscore));
+            resultMapList.add(resultMap0);
+        }
+
+        JSONObject returnJson = new JSONObject(true);
+        returnJson.put("resultMapList",resultMapList);
+        //returnJson.put("scaleName",resultJson.getString("scaleName"));
+        returnJson.put("resultJson",resultJson);
+
+        return returnJson;
+    }
+}

+ 87 - 0
src/main/java/com/rf/psychological/scale/resultBusiness/scaleResult/CMIWScale.java

@@ -0,0 +1,87 @@
+package com.rf.psychological.scale.resultBusiness.scaleResult;
+
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
+import com.rf.psychological.dao.model.AnswerEntity;
+import com.rf.psychological.dao.model.DimensionEntity;
+import com.rf.psychological.scale.dao.model.ScaleMarksEntity;
+
+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 CMIWScale extends BaseScale{
+
+    public CMIWScale(JSONArray jsonArray, JSONObject resultJson) {
+        super(jsonArray, resultJson);
+    }
+
+    public  JSONObject scaleCalculate() throws Exception {
+
+        //总分
+        double score = 0;
+        Map<String, String> resultMap0 = new LinkedHashMap<>();
+        List<Map<String,String>> resultMapList = new ArrayList<>();
+
+        //获取答案列表
+        List<AnswerEntity> answerEntities = (List<AnswerEntity>) resultJson.get("answerEntities");
+        //获取评分规则列表
+        List<ScaleMarksEntity> scaleMarksEntities = (List<ScaleMarksEntity>) resultJson.get("scaleMarksEntities");
+        //获取维度信息列表
+        List<DimensionEntity> dimensionEntities = (List<DimensionEntity>) resultJson.get("dimensionEntities");
+        if (dimensionEntities.size() > 0){
+            //计算每个维度得分
+            double[] dimensionScore = new double[dimensionEntities.size()];
+            for (int i = 0; i < jsonArray.size(); i++) {
+                JSONObject jsonObject1 = jsonArray.getJSONObject(i);
+                for (int y = 0; y < dimensionEntities.size(); y++) {
+                    //for (DimensionEntity dimensionEntity:dimensionEntities){
+                    DimensionEntity dimensionEntity = dimensionEntities.get(y);
+                    String questionNos = dimensionEntity.getQuestionNo();
+                    String[] questionNo = questionNos.split(";");
+                    for (String question:questionNo){
+                        if (question.equals(jsonObject1.getString("questionNo"))){
+                            for (AnswerEntity answerEntity:answerEntities){
+                                if (answerEntity.getQuestionNo().equals(question) && answerEntity.getName().equals(jsonObject1.getString("checkItems"))){
+                                    dimensionScore[y] += Double.valueOf(answerEntity.getScore());
+                                }
+                            }
+                            break;
+                        }
+                    }
+                }
+                //计算总分
+                for (AnswerEntity answerEntity:answerEntities){
+                    if (answerEntity.getQuestionNo().equals(String.valueOf(i+1))){
+                        if (answerEntity.getName().equals(jsonObject1.getString("checkItems"))){
+                            score += Integer.valueOf(answerEntity.getScore());
+                        }
+                    }
+                }
+            }
+
+            resultMap0.put("CMI总分", String.valueOf(score));
+            resultJson.put("CMI总分", String.valueOf(score));
+            double MRscore = 0;
+            for (int y = 12; y < dimensionEntities.size(); y++) {
+                MRscore += dimensionScore[y];
+            }
+            resultMap0.put("M-R分", String.valueOf(MRscore));
+            resultJson.put("M-R分", String.valueOf(MRscore));
+            resultMapList.add(resultMap0);
+        }
+
+        JSONObject returnJson = new JSONObject(true);
+        returnJson.put("resultMapList",resultMapList);
+        //returnJson.put("scaleName",resultJson.getString("scaleName"));
+        returnJson.put("resultJson",resultJson);
+
+        return returnJson;
+    }
+}

+ 168 - 0
src/main/java/com/rf/psychological/scale/resultBusiness/scaleResult/COMMONScale.java

@@ -0,0 +1,168 @@
+package com.rf.psychological.scale.resultBusiness.scaleResult;
+
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
+import com.rf.psychological.dao.model.AnswerEntity;
+import com.rf.psychological.dao.model.DimensionEntity;
+import com.rf.psychological.scale.dao.model.ScaleMarksEntity;
+
+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 COMMONScale extends BaseScale{
+
+    public COMMONScale(JSONArray jsonArray, JSONObject resultJson) {
+        super(jsonArray, resultJson);
+    }
+
+    public  JSONObject scaleCalculate() throws Exception {
+
+        // 自定义路径使用
+        /*ScaleUtil.getScaleDll("FESCVSCALE.dll");
+        System.out.println("JSONArray:"+jsonArray);
+        System.out.println("JSONObject:"+resultJson);
+        ScalesJNI scalesJNI = new ScalesJNI(jsonArray,resultJson);
+        String result = scalesJNI.commonScale(jsonArray.toString(), resultJson.toString());
+        JSONObject jsonObjectc =JSONObject.parseObject(result);
+        System.out.println("jsonObjectc:"+jsonObjectc);
+        return jsonObjectc;*/
+
+        //总分
+        double score = 0;
+        Map<String, String> resultMap0 = new LinkedHashMap<>();
+        List<Map<String,String>> resultMapList = new ArrayList<>();
+
+        //获取答案列表
+        List<AnswerEntity> answerEntities = (List<AnswerEntity>) resultJson.get("answerEntities");
+        //获取评分规则列表
+        List<ScaleMarksEntity> scaleMarksEntities = (List<ScaleMarksEntity>) resultJson.get("scaleMarksEntities");
+        //获取维度信息列表
+        List<DimensionEntity> dimensionEntities = (List<DimensionEntity>) resultJson.get("dimensionEntities");
+        if (dimensionEntities.size() > 0){
+            //计算每个维度得分
+            double[] dimensionScore = new double[dimensionEntities.size()];
+            for (int i = 0; i < jsonArray.size(); i++) {
+                JSONObject jsonObject1 = jsonArray.getJSONObject(i);
+                for (int y = 0; y < dimensionEntities.size(); y++) {
+                    //for (DimensionEntity dimensionEntity:dimensionEntities){
+                    DimensionEntity dimensionEntity = dimensionEntities.get(y);
+                    String questionNos = dimensionEntity.getQuestionNo();
+                    String[] questionNo = questionNos.split(";");
+                    for (String question:questionNo){
+                        if (question.equals(jsonObject1.getString("questionNo"))){
+                            for (AnswerEntity answerEntity:answerEntities){
+                                if (answerEntity.getQuestionNo().equals(question) && answerEntity.getName().equals(jsonObject1.getString("checkItems"))){
+                                    dimensionScore[y] += Double.valueOf(answerEntity.getScore());
+                                }
+                            }
+                            break;
+                        }
+                    }
+                }
+                //计算总分
+                for (AnswerEntity answerEntity:answerEntities){
+                    if (answerEntity.getQuestionNo().equals(String.valueOf(i+1))){
+                        if (answerEntity.getName().equals(jsonObject1.getString("checkItems"))){
+                            score += Integer.valueOf(answerEntity.getScore());
+                        }
+                    }
+                }
+            }
+
+            resultMap0.put("总分", String.valueOf(score));
+            resultJson.put("总分", String.valueOf(score));
+            if (scaleMarksEntities.size() > 0){
+                for (ScaleMarksEntity scaleMarksEntity:scaleMarksEntities){
+                    if (scaleMarksEntity.getName() != null && scaleMarksEntity.getName().equals("无")){
+                        if (score <= Integer.valueOf(scaleMarksEntity.getScoreEnd()) && score >= Integer.valueOf(scaleMarksEntity.getScoreStart())){
+                            if (!scaleMarksEntity.getSymptom().equals("无")){
+                                resultMap0.put("解读", scaleMarksEntity.getSymptom());
+                                resultJson.put("解读", scaleMarksEntity.getSymptom());
+                            }
+                            if (scaleMarksEntity.getImprovementSuggestions() != null && !scaleMarksEntity.getImprovementSuggestions().equals("无")){
+                                resultMap0.put("建议", scaleMarksEntity.getImprovementSuggestions());
+                                resultJson.put("建议", scaleMarksEntity.getImprovementSuggestions());
+                            }
+                        }
+                    }
+                }
+            }
+            if (scaleMarksEntities.size() > 0){
+                for (int y = 0; y < dimensionEntities.size(); y++) {
+                    DimensionEntity dimensionEntity = dimensionEntities.get(y);
+                    DecimalFormat df   = new DecimalFormat("######0.00");
+                    resultMap0.put(dimensionEntity.getName()+"得分", String.valueOf(Double.parseDouble(df.format(dimensionScore[y]))));
+                    resultJson.put(dimensionEntity.getName()+"得分", String.valueOf(Double.parseDouble(df.format(dimensionScore[y]))));
+                    for (ScaleMarksEntity scaleMarksEntity:scaleMarksEntities){
+                        if (scaleMarksEntity.getName() != null && scaleMarksEntity.getName().equals(dimensionEntity.getName())){
+                            if (dimensionScore[y] <= Integer.valueOf(scaleMarksEntity.getScoreEnd()) && dimensionScore[y] >= Integer.valueOf(scaleMarksEntity.getScoreStart())){
+                                if (!scaleMarksEntity.getSymptom().equals("无")){
+                                    resultMap0.put(dimensionEntity.getName()+"解读", scaleMarksEntity.getSymptom());
+                                    resultJson.put(dimensionEntity.getName()+"解读", scaleMarksEntity.getSymptom());
+                                }
+                                if (scaleMarksEntity.getImprovementSuggestions() != null && !scaleMarksEntity.getImprovementSuggestions().equals("无")){
+                                    resultMap0.put(dimensionEntity.getName()+"建议", scaleMarksEntity.getImprovementSuggestions());
+                                    resultJson.put(dimensionEntity.getName()+"建议", scaleMarksEntity.getImprovementSuggestions());
+                                }
+                            }
+                        }
+                    }
+                }
+                resultMapList.add(resultMap0);
+            }else {
+                for (int y = 0; y < dimensionEntities.size(); y++) {
+                    DimensionEntity dimensionEntity = dimensionEntities.get(y);
+                    DecimalFormat df = new DecimalFormat("######0.00");
+                    resultMap0.put(dimensionEntity.getName() + "得分", String.valueOf(Double.parseDouble(df.format(dimensionScore[y]))));
+                    resultJson.put(dimensionEntity.getName() + "得分", String.valueOf(Double.parseDouble(df.format(dimensionScore[y]))));
+                }
+                resultMapList.add(resultMap0);
+            }
+
+        }else {
+            for (int i = 0; i < jsonArray.size(); i++) {
+                JSONObject jsonObject1 = jsonArray.getJSONObject(i);
+                for (AnswerEntity answerEntity:answerEntities){
+                    if (answerEntity.getQuestionNo().equals(String.valueOf(i+1))){
+                        if (answerEntity.getName().equals(jsonObject1.getString("checkItems"))){
+                            score += Integer.valueOf(answerEntity.getScore());
+                        }
+                    }
+                }
+            }
+
+            resultMap0.put("总分", String.valueOf(score));
+            resultJson.put("总分", String.valueOf(score));
+            if (scaleMarksEntities.size() > 0){
+                for (ScaleMarksEntity scaleMarksEntity:scaleMarksEntities){
+                    if (score <= Integer.valueOf(scaleMarksEntity.getScoreEnd()) && score >= Integer.valueOf(scaleMarksEntity.getScoreStart())){
+                        if (!scaleMarksEntity.getSymptom().equals("无")){
+                            resultMap0.put("解读", scaleMarksEntity.getSymptom());
+                            resultJson.put("解读", scaleMarksEntity.getSymptom());
+                        }
+                        if (scaleMarksEntity.getImprovementSuggestions() != null && !scaleMarksEntity.getImprovementSuggestions().equals("无")){
+                            resultMap0.put("建议", scaleMarksEntity.getImprovementSuggestions());
+                            resultJson.put("建议", scaleMarksEntity.getImprovementSuggestions());
+                        }
+                    }
+                }
+            }
+            resultMapList.add(resultMap0);
+        }
+
+        JSONObject returnJson = new JSONObject(true);
+        returnJson.put("resultMapList",resultMapList);
+        //returnJson.put("scaleName",resultJson.getString("scaleName"));
+        returnJson.put("resultJson",resultJson);
+
+        return returnJson;
+    }
+}

+ 56 - 0
src/main/java/com/rf/psychological/scale/resultBusiness/scaleResult/CRSScale.java

@@ -0,0 +1,56 @@
+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:Carroll抑郁量表
+ * @date 2021/7/20 15:55
+ */
+public class CRSScale extends BaseScale{
+
+    public CRSScale(JSONArray jsonArray, JSONObject resultJson) {
+        super(jsonArray, resultJson);
+    }
+
+    public  JSONObject scaleCalculate() throws Exception {
+        //得分
+        int score = 0;
+        for (int i = 0; i < jsonArray.size(); i++) {
+            JSONObject jsonObject1 = jsonArray.getJSONObject(i);
+            if (jsonObject1.getString("scoreDirection").equals("1")) {
+                if (jsonObject1.getString("checkItems").equals("是")) {
+                    score += 1;
+                }
+            } else if (jsonObject1.getString("scoreDirection").equals("0")){
+                if (jsonObject1.getString("checkItems").equals("否")) {
+                    score += 1;
+                }
+            }
+        }
+        Map<String, String> resultMap0 = new LinkedHashMap<>();
+        resultMap0.put("总分", String.valueOf(score));
+        resultJson.put("总分", String.valueOf(score));
+        if (score >= 10){
+            resultMap0.put("解读", "存在抑郁");
+            resultJson.put("解读", "存在抑郁");
+        }
+
+        List<Map<String,String>> resultMapList = new ArrayList<>();
+        resultMapList.add(resultMap0);
+
+        JSONObject returnJson = new JSONObject(true);
+        returnJson.put("resultMapList",resultMapList);
+        returnJson.put("scaleName",Constant.SHEET_NAME_CRS);
+        returnJson.put("resultJson",resultJson);
+
+        return returnJson;
+    }
+}

+ 72 - 0
src/main/java/com/rf/psychological/scale/resultBusiness/scaleResult/CSESScale.java

@@ -0,0 +1,72 @@
+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 CSESScale extends BaseScale{
+
+    public CSESScale(JSONArray jsonArray, JSONObject resultJson) {
+        super(jsonArray, resultJson);
+    }
+
+    public  JSONObject scaleCalculate() throws Exception {
+        //得分
+        int score = 0;
+        for (int i = 0; i < jsonArray.size(); i++) {
+            JSONObject jsonObject1 = jsonArray.getJSONObject(i);
+            if (jsonObject1.getString("scoreDirection").equals("1")) {
+                if (jsonObject1.getString("checkItems").equals("完全不同意")) {
+                    score += 1;
+                } else if (jsonObject1.getString("checkItems").equals("不同意")) {
+                    score += 2;
+                } else if (jsonObject1.getString("checkItems").equals("不能确定")) {
+                    score += 3;
+                } else if (jsonObject1.getString("checkItems").equals("同意")) {
+                    score += 4;
+                }
+            } else {
+                if (jsonObject1.getString("checkItems").equals("完全不同意")) {
+                    score += 5;
+                } else if (jsonObject1.getString("checkItems").equals("不同意")) {
+                    score += 4;
+                } else if (jsonObject1.getString("checkItems").equals("不能确定")) {
+                    score += 3;
+                } else if (jsonObject1.getString("checkItems").equals("同意")) {
+                    score += 2;
+                }
+            }
+        }
+        //得分列表
+        Map<String, String> resultMap = new LinkedHashMap<>();
+        resultMap.put("总分", String.valueOf(score));
+        resultJson.put("总分", String.valueOf(score));
+        if (score >= 17){
+            resultMap.put("解读", "处于抑郁危险");
+            resultJson.put("解读", "处于抑郁危险");
+        }else if (score <17){
+            resultMap.put("解读", "无抑郁");
+            resultJson.put("解读", "无抑郁");
+        }
+
+        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_CSES);
+        returnJson.put("resultJson",resultJson);
+
+        return returnJson;
+    }
+}

+ 396 - 0
src/main/java/com/rf/psychological/scale/resultBusiness/scaleResult/CSHQScale.java

@@ -0,0 +1,396 @@
+package com.rf.psychological.scale.resultBusiness.scaleResult;
+
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
+import com.rf.psychological.scale.dao.model.ScaleEntity;
+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 CSHQScale extends BaseScale {
+
+    public CSHQScale(JSONArray jsonArray, JSONObject resultJson) {
+        super(jsonArray, resultJson);
+    }
+
+    public JSONObject scaleCalculate() throws Exception {
+        //就寝习惯(睡眠阻抗)得分
+        int score1 = 0;
+        //睡眠延迟得分
+        int score2 = 0;
+        //睡眠持续时间得分
+        int score3 = 0;
+        //睡眠焦虑得分
+        int score4 = 0;
+        //夜醒得分
+        int score5 = 0;
+        //异态睡眠得分
+        int score6 = 0;
+        //睡眠呼吸障碍得分
+        int score7 = 0;
+        //白天嗜睡得分
+        int score8 = 0;
+        //总分
+        int score = 0;
+
+        List<ScaleEntity> scaleEntities = (List<ScaleEntity>) resultJson.get("scaleEntities");
+
+        for (int i = 0; i < jsonArray.size(); i++) {
+            JSONObject jsonObject1 = jsonArray.getJSONObject(i);
+            if (jsonObject1.getString("scoreDirection").equals("1")) {
+                String[] split = scaleEntities.get(i).getCheckItems().split(";");
+                if (i == 0 || i == 2 || i == 3 || i == 4 || i == 5 || i == 7) {
+                    for (int y = 0; y < split.length; y++) {
+                        if (jsonObject1.getString("checkItems").equals(split[y])) {
+                            switch (y) {
+                                case 0: {
+                                    score1 += 3;
+                                    break;
+                                }
+                                case 1: {
+                                    score1 += 2;
+                                    break;
+                                }
+                                case 2: {
+                                    score1 += 1;
+                                    break;
+                                }
+                            }
+                        }
+                    }
+                } else if (i == 1) {
+                    for (int y = 0; y < split.length; y++) {
+                        if (jsonObject1.getString("checkItems").equals(split[y])) {
+                            switch (y) {
+                                case 0: {
+                                    score2 += 3;
+                                    break;
+                                }
+                                case 1: {
+                                    score2 += 2;
+                                    break;
+                                }
+                                case 2: {
+                                    score2 += 1;
+                                    break;
+                                }
+                            }
+                        }
+                    }
+                    //todo 题号20的分类有问题
+                } else if (i == 6 || i == 20) {
+                    for (int y = 0; y < split.length; y++) {
+                        if (jsonObject1.getString("checkItems").equals(split[y])) {
+                            switch (y) {
+                                case 0: {
+                                    score4 += 3;
+                                    break;
+                                }
+                                case 1: {
+                                    score4 += 2;
+                                    break;
+                                }
+                                case 2: {
+                                    score4 += 1;
+                                    break;
+                                }
+                            }
+                        }
+                    }
+                } else if (i == 8 || i == 9 || i == 10) {
+                    for (int y = 0; y < split.length; y++) {
+                        if (jsonObject1.getString("checkItems").equals(split[y])) {
+                            switch (y) {
+                                case 0: {
+                                    score3 += 3;
+                                    break;
+                                }
+                                case 1: {
+                                    score3 += 2;
+                                    break;
+                                }
+                                case 2: {
+                                    score3 += 1;
+                                    break;
+                                }
+                            }
+                        }
+                    }
+                } else if (i == 15 || i == 23 || i == 14) {
+                    for (int y = 0; y < split.length; y++) {
+                        if (jsonObject1.getString("checkItems").equals(split[y])) {
+                            switch (y) {
+                                case 0: {
+                                    score5 += 3;
+                                    break;
+                                }
+                                case 1: {
+                                    score5 += 2;
+                                    break;
+                                }
+                                case 2: {
+                                    score5 += 1;
+                                    break;
+                                }
+                            }
+                        }
+                    }
+                } else if (i == 17 || i == 18 || i == 19) {
+                    for (int y = 0; y < split.length; y++) {
+                        if (jsonObject1.getString("checkItems").equals(split[y])) {
+                            switch (y) {
+                                case 0: {
+                                    score7 += 3;
+                                    break;
+                                }
+                                case 1: {
+                                    score7 += 2;
+                                    break;
+                                }
+                                case 2: {
+                                    score7 += 1;
+                                    break;
+                                }
+                            }
+                        }
+                    }
+                } else if (i == 28 || i == 29 || i == 30 || i == 31 || i == 32) {
+                    for (int y = 0; y < split.length; y++) {
+                        if (jsonObject1.getString("checkItems").equals(split[y])) {
+                            switch (y) {
+                                case 0: {
+                                    score8 += 3;
+                                    break;
+                                }
+                                case 1: {
+                                    score8 += 2;
+                                    break;
+                                }
+                                case 2: {
+                                    score8 += 1;
+                                    break;
+                                }
+                            }
+                        }
+                    }
+                } else {
+                    for (int y = 0; y < split.length; y++) {
+                        if (jsonObject1.getString("checkItems").equals(split[y])) {
+                            switch (y) {
+                                case 0: {
+                                    score6 += 3;
+                                    break;
+                                }
+                                case 1: {
+                                    score6 += 2;
+                                    break;
+                                }
+                                case 2: {
+                                    score6 += 1;
+                                    break;
+                                }
+                            }
+                        }
+                    }
+                }
+            } else if (jsonObject1.getString("scoreDirection").equals("0")) {
+                String[] split = scaleEntities.get(i).getCheckItems().split(";");
+                if (i == 0 || i == 2 || i == 3 || i == 4 || i == 5 || i == 7) {
+                    for (int y = 0; y < split.length; y++) {
+                        if (jsonObject1.getString("checkItems").equals(split[y])) {
+                            switch (y) {
+                                case 0: {
+                                    score1 += 1;
+                                    break;
+                                }
+                                case 1: {
+                                    score1 += 2;
+                                    break;
+                                }
+                                case 2: {
+                                    score1 += 3;
+                                    break;
+                                }
+                            }
+                        }
+                    }
+                } else if (i == 1) {
+                    for (int y = 0; y < split.length; y++) {
+                        if (jsonObject1.getString("checkItems").equals(split[y])) {
+                            switch (y) {
+                                case 0: {
+                                    score2 += 1;
+                                    break;
+                                }
+                                case 1: {
+                                    score2 += 2;
+                                    break;
+                                }
+                                case 2: {
+                                    score2 += 3;
+                                    break;
+                                }
+                            }
+                        }
+                    }
+                } else if (i == 6 || i == 19) {
+                    for (int y = 0; y < split.length; y++) {
+                        if (jsonObject1.getString("checkItems").equals(split[y])) {
+                            switch (y) {
+                                case 0: {
+                                    score4 += 1;
+                                    break;
+                                }
+                                case 1: {
+                                    score4 += 2;
+                                    break;
+                                }
+                                case 2: {
+                                    score4 += 3;
+                                    break;
+                                }
+                            }
+                        }
+                    }
+                } else if (i == 8 || i == 9 || i == 10) {
+                    for (int y = 0; y < split.length; y++) {
+                        if (jsonObject1.getString("checkItems").equals(split[y])) {
+                            switch (y) {
+                                case 0: {
+                                    score3 += 1;
+                                    break;
+                                }
+                                case 1: {
+                                    score3 += 2;
+                                    break;
+                                }
+                                case 2: {
+                                    score3 += 3;
+                                    break;
+                                }
+                            }
+                        }
+                    }
+                } else if (i == 15 || i == 23 || i == 14) {
+                    for (int y = 0; y < split.length; y++) {
+                        if (jsonObject1.getString("checkItems").equals(split[y])) {
+                            switch (y) {
+                                case 0: {
+                                    score5 += 1;
+                                    break;
+                                }
+                                case 1: {
+                                    score5 += 2;
+                                    break;
+                                }
+                                case 2: {
+                                    score5 += 3;
+                                    break;
+                                }
+                            }
+                        }
+                    }
+                } else if (i == 17 || i == 18 || i == 19) {
+                    for (int y = 0; y < split.length; y++) {
+                        if (jsonObject1.getString("checkItems").equals(split[y])) {
+                            switch (y) {
+                                case 0: {
+                                    score7 += 1;
+                                    break;
+                                }
+                                case 1: {
+                                    score7 += 2;
+                                    break;
+                                }
+                                case 2: {
+                                    score7 += 3;
+                                    break;
+                                }
+                            }
+                        }
+                    }
+                } else if (i == 28 || i == 29 || i == 30 || i == 31 || i == 32) {
+                    for (int y = 0; y < split.length; y++) {
+                        if (jsonObject1.getString("checkItems").equals(split[y])) {
+                            switch (y) {
+                                case 0: {
+                                    score8 += 1;
+                                    break;
+                                }
+                                case 1: {
+                                    score8 += 2;
+                                    break;
+                                }
+                                case 2: {
+                                    score8 += 3;
+                                    break;
+                                }
+                            }
+                        }
+                    }
+                } else {
+                    for (int y = 0; y < split.length; y++) {
+                        if (jsonObject1.getString("checkItems").equals(split[y])) {
+                            switch (y) {
+                                case 0: {
+                                    score6 += 1;
+                                    break;
+                                }
+                                case 1: {
+                                    score6 += 2;
+                                    break;
+                                }
+                                case 2: {
+                                    score6 += 3;
+                                    break;
+                                }
+                            }
+                        }
+                    }
+                }
+            }
+        }
+
+        score = score1 + score2 + score3 + score4 + score5 + score6 + score7 + score8;
+
+
+        //得分列表
+        Map<String, String> resultMap = new LinkedHashMap<>();
+        resultMap.put("总分", String.valueOf(score));
+        resultMap.put("就寝习惯(睡眠阻抗)总分", String.valueOf(score1));
+        resultMap.put("睡眠延迟总分", String.valueOf(score2));
+        resultMap.put("睡眠持续时间总分", String.valueOf(score3));
+        resultMap.put("睡眠焦虑总分", String.valueOf(score4));
+        resultMap.put("夜醒总分", String.valueOf(score5));
+        resultMap.put("异态睡眠总分", String.valueOf(score6));
+        resultMap.put("睡眠呼吸障碍总分", String.valueOf(score7));
+        resultMap.put("白天嗜睡总分", String.valueOf(score8));
+
+        resultJson.put("总分", String.valueOf(score));
+        resultJson.put("就寝习惯(睡眠阻抗)总分", String.valueOf(score1));
+        resultJson.put("睡眠延迟总分", String.valueOf(score2));
+        resultJson.put("睡眠持续时间总分", String.valueOf(score3));
+        resultJson.put("睡眠焦虑总分", String.valueOf(score4));
+        resultJson.put("夜醒总分", String.valueOf(score5));
+        resultJson.put("异态睡眠总分", String.valueOf(score6));
+        resultJson.put("睡眠呼吸障碍总分", String.valueOf(score7));
+        resultJson.put("白天嗜睡总分", String.valueOf(score8));
+
+
+        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_CSHQ);
+        returnJson.put("resultJson", resultJson);
+
+        return returnJson;
+    }
+}

+ 176 - 0
src/main/java/com/rf/psychological/scale/resultBusiness/scaleResult/CSScale.java

@@ -0,0 +1,176 @@
+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 lhh
+ * @description:哥本哈根卒中量表
+ * @date 2021/11/05 15:55
+ */
+public class CSScale extends BaseScale {
+    public CSScale(JSONArray jsonArray, JSONObject resultJson) {
+        super(jsonArray, resultJson);
+    }
+    public JSONObject scaleCalculate() throws Exception {
+        //总分
+        int score = 0,j=0,k=0;//j=1代表不能唤醒2题跳过,3,4题直接4分;k代表k=1右侧偏瘫,k=2左侧偏瘫,k=0无偏瘫,k=3双侧偏瘫
+
+        for (int i = 0; i < jsonArray.size(); i++) {
+            JSONObject jsonObject1 = jsonArray.getJSONObject(i);
+            System.out.println("题号为:"+i+"   用户选择选项:"+jsonObject1.getString("checkItems"));
+            if(i==0){
+                if (jsonObject1.getString("checkItems").equals("唤醒困难")||jsonObject1.getString("checkItems").equals("合作差")) {
+                     score+=11;
+                     j=1;
+                }else if(jsonObject1.getString("checkItems").equals("不能唤醒")){
+                    score+=12;
+                    j=1;
+                }else if(jsonObject1.getString("checkItems").equals("完全清楚")){
+                    score+=1;
+                }else if(jsonObject1.getString("checkItems").equals("嗜睡但能被言语唤醒并充分合作")){
+                    score+=2;
+                }
+            }else if(i==1&&j!=1){
+                  if(jsonObject1.getString("checkItems").equals("无")){
+                     k=0;
+                  }else if(jsonObject1.getString("checkItems").equals("左侧偏瘫")){
+                      k=2;
+                  }else if(jsonObject1.getString("checkItems").equals("右侧偏瘫")){
+                      k=1;
+                  }else if(jsonObject1.getString("checkItems").equals("双侧偏瘫")){
+                      k=3;
+                  }
+            }else if(i==2&&k==1){
+            if(jsonObject1.getString("checkItems").equals("正常言语和理解")){
+                score+=1;
+            }else if(jsonObject1.getString("checkItems").equals("轻度的言语和/或理解异常")){
+                score+=2;
+            }else if(jsonObject1.getString("checkItems").equals("言语和/或理解差")){
+                score+=3;
+            }else if(jsonObject1.getString("checkItems").equals("言语不知所云或缺乏和/或严重的理解困难")){
+                score+=4;
+            }
+           }else if(i==3&&k==2){
+                if(jsonObject1.getString("checkItems").equals("无忽视")){
+                    score+=1;
+                }else if(jsonObject1.getString("checkItems").equals("可能存在忽视")){
+                    score+=2;
+                }else if(jsonObject1.getString("checkItems").equals("明确的忽视,没有偏瘫主诉,心态平和,对患肢毫不关注")){
+                    score+=3;
+                }else if(jsonObject1.getString("checkItems").equals("否认偏瘫(疾病失认)")){
+                    score+=4;
+                }
+            }else if(i==4){
+                if(jsonObject1.getString("checkItems").equals("无")){
+                    score+=1;
+                }else if(jsonObject1.getString("checkItems").equals("可能有")){
+                    score+=2;
+                }else if(jsonObject1.getString("checkItems").equals("肯定有(向一点看)")){
+                    score+=3;
+                }else if(jsonObject1.getString("checkItems").equals("明显、持续凝视伴头向一侧扭转")){
+                    score+=4;
+                }
+            }else if(i==5){
+                if(jsonObject1.getString("checkItems").equals("无")){
+                    score+=1;
+                }else if(jsonObject1.getString("checkItems").equals("轻度")){
+                    score+=2;
+                }else if(jsonObject1.getString("checkItems").equals("明显的")){
+                    score+=3;
+                }else if(jsonObject1.getString("checkItems").equals("完全的")){
+                    score+=4;
+                }
+            }else if(i==6){
+                if(jsonObject1.getString("checkItems").equals("无")){
+                    score+=1;
+                }else if(jsonObject1.getString("checkItems").equals("可能")){
+                    score+=2;
+                }else if(jsonObject1.getString("checkItems").equals("同向限盲")){
+                    score+=3;
+                }else if(jsonObject1.getString("checkItems").equals("完全同向偏盲")){
+                    score+=4;
+                }
+            }else if(i==7){
+                if(jsonObject1.getString("checkItems").equals("正常肌力")){
+                    score+=1;
+                }else if(jsonObject1.getString("checkItems").equals("能抗阻力但力量减弱")){
+                    score+=2;
+                }else if(jsonObject1.getString("checkItems").equals("抗重力但不抗阻力")){
+                    score+=3;
+                }else if(jsonObject1.getString("checkItems").equals("不能")){
+                    score+=4;
+                }
+            }else if(i==8){
+                if(jsonObject1.getString("checkItems").equals("正常")){
+                    score+=1;
+                }else if(jsonObject1.getString("checkItems").equals("减弱的良好手指运动")){
+                    score+=2;
+                }else if(jsonObject1.getString("checkItems").equals("手指伸展和/屈曲的显著麻痹")){
+                    score+=3;
+                }else if(jsonObject1.getString("checkItems").equals("手指不能伸展或屈曲")){
+                    score+=4;
+                }
+            }else if(i==9){
+                if(jsonObject1.getString("checkItems").equals("正常肌力")){
+                    score+=1;
+                }else if(jsonObject1.getString("checkItems").equals("能抗阻力但力量减弱")){
+                    score+=2;
+                }else if(jsonObject1.getString("checkItems").equals("抗重力,但不能抗阻力")){
+                    score+=3;
+                }else if(jsonObject1.getString("checkItems").equals("不能")){
+                    score+=4;
+                }
+            }else if(i==10){
+                if(jsonObject1.getString("checkItems").equals("正常")){
+                    score+=1;
+                }else if(jsonObject1.getString("checkItems").equals("使用装置(拐杖,助步器等)")){
+                    score+=2;
+                }else if(jsonObject1.getString("checkItems").equals("需要1或2人的扶持")){
+                    score+=3;
+                }else if(jsonObject1.getString("checkItems").equals("不能")){
+                    score+=4;
+                }
+            }
+
+        }
+        //得分列表
+        DecimalFormat df = new DecimalFormat("######0.00");
+        Map<String, String> resultMap = new LinkedHashMap<>();
+        System.out.println(score+">>>>>>>>>>>>>>>>>>>>>>>>");
+        double score1=0.0;//最大评分百分比=[(总分)-(项目数)]/[(最大评分)-(项目数)]×100%
+        if(k==0){
+            score1= Double.parseDouble(df.format((score-8.0)/(32.0-8.0)));
+        }else if(k==1||k==2){
+            score1= Double.parseDouble(df.format((score-9.0)/(36.0-9.0)));
+        }else {
+            score1= Double.parseDouble(df.format((score-10.0)/(40.0-10.0)));
+        }
+
+        resultMap.put("卒中评分", String.valueOf(score));
+        resultMap.put("卒中评分百分比", String.valueOf(score1));
+
+        resultJson.put("卒中评分", String.valueOf(score));
+        resultJson.put("卒中评分百分比", String.valueOf(score1));
+
+        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_DDI);
+        returnJson.put("resultJson", resultJson);
+
+        return returnJson;
+
+
+
+    }
+}

+ 101 - 0
src/main/java/com/rf/psychological/scale/resultBusiness/scaleResult/DACLScale.java

@@ -0,0 +1,101 @@
+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 DACLScale extends BaseScale {
+    public DACLScale(JSONArray jsonArray, JSONObject resultJson) {
+        super(jsonArray, resultJson);
+    }
+
+    public JSONObject scaleCalculate() throws Exception {
+        //总分
+        int score = 0;
+        //分表E总分
+        int scoreE = 0;
+        //分表F总分
+        int scoreF = 0;
+        //分表G总分
+        int scoreG = 0;
+
+        for (int i = 0; i < jsonArray.size(); i++) {
+            JSONObject jsonObject1 = jsonArray.getJSONObject(i);
+            if (i <= 33) {
+                if (jsonObject1.getString("scoreDirection").equals("1")) {
+                    if (jsonObject1.getString("checkItems").equals("符合描写")) {
+                        scoreE += 1;
+                    } else if (jsonObject1.getString("checkItems").equals("不符合描写")) {
+                        scoreE += 0;
+                    }
+                } else if (jsonObject1.getString("scoreDirection").equals("0")) {
+                    if (jsonObject1.getString("checkItems").equals("符合描写")) {
+                        scoreE += 0;
+                    } else if (jsonObject1.getString("checkItems").equals("不符合描写")) {
+                        scoreE += 1;
+                    }
+
+                }
+            } else if (i <= 67) {
+                if (jsonObject1.getString("scoreDirection").equals("1")) {
+                    if (jsonObject1.getString("checkItems").equals("符合描写")) {
+                        scoreF += 1;
+                    } else if (jsonObject1.getString("checkItems").equals("不符合描写")) {
+                        scoreF += 0;
+                    }
+                } else if (jsonObject1.getString("scoreDirection").equals("0")) {
+                    if (jsonObject1.getString("checkItems").equals("符合描写")) {
+                        scoreF += 0;
+                    } else if (jsonObject1.getString("checkItems").equals("不符合描写")) {
+                        scoreF += 1;
+                    }
+
+                }
+            } else if (i <= 101) {
+                if (jsonObject1.getString("scoreDirection").equals("1")) {
+                    if (jsonObject1.getString("checkItems").equals("符合描写")) {
+                        scoreG += 1;
+                    } else if (jsonObject1.getString("checkItems").equals("不符合描写")) {
+                        scoreG += 0;
+                    }
+                } else if (jsonObject1.getString("scoreDirection").equals("0")) {
+                    if (jsonObject1.getString("checkItems").equals("符合描写")) {
+                        scoreG += 0;
+                    } else if (jsonObject1.getString("checkItems").equals("不符合描写")) {
+                        scoreG += 1;
+                    }
+                }
+            }
+        }
+        score = scoreE + scoreE + scoreG;
+
+        //得分列表
+        Map<String, String> resultMap = new LinkedHashMap<>();
+        resultMap.put("总分", String.valueOf(score));
+        resultJson.put("总分", String.valueOf(score));
+        resultMap.put("E总分", String.valueOf(scoreE));
+        resultJson.put("E总分", String.valueOf(scoreE));
+        resultMap.put("F总分", String.valueOf(scoreF));
+        resultJson.put("F总分", String.valueOf(scoreF));
+        resultMap.put("G总分", String.valueOf(scoreG));
+        resultJson.put("G总分", String.valueOf(scoreG));
+
+        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_DACL);
+        returnJson.put("resultJson", resultJson);
+
+        return returnJson;
+    }
+}

+ 88 - 0
src/main/java/com/rf/psychological/scale/service/CategoryService.java

@@ -0,0 +1,88 @@
+package com.rf.psychological.scale.service;
+
+
+import com.rf.psychological.scale.dao.model.CategoryEntity;
+
+import java.util.List;
+
+/**
+ * @author zsy
+ * @description:量表类别信息管理
+ * @date 2021/6/17 15:55
+ */
+public interface CategoryService {
+
+    /**
+     * 保存
+     *
+     * @param categoryEntity
+     */
+    void save(CategoryEntity categoryEntity);
+
+    /**
+     * 获取量表类别列表
+     * @return
+     */
+    //List<CategoryEntity> findAll(int pageNum, int pageSize);
+
+    /**
+     * 总条数
+     * @return
+     */
+    //int allNum();
+
+    /**
+     * 根据名称模糊查询列表
+     * @return
+     */
+    //List<CategoryEntity> getSubjectListByName(int pageNum, int pageSize, String searchStr);
+
+    /**
+     * 根据名称模糊查询总条数
+     * @return
+     */
+    //int allNumByName(String searchStr);
+
+    /**
+     * 效验是否存在
+     *
+     * @return
+     */
+    List<CategoryEntity> getCategoryByName(String name, String ename, String sequence);
+
+    /**
+     * 查询所有类别信息
+     *
+     * @return
+     */
+    List<CategoryEntity> findAll(String type);
+
+    /**
+     * 查询所有类别信息
+     * @return
+     */
+    List<CategoryEntity> findAlls();
+
+    /**
+     * 查询机构和组的认知任务类别
+     *
+     * @param institutionNo
+     * @return
+     */
+    List<CategoryEntity> findAllCT(String institutionNo, String groupId);
+
+    /**
+     * 查询机构和组的量表类别
+     *
+     * @param institutionNo
+     * @param groupId
+     * @return
+     */
+    List<CategoryEntity> findALLCategorySubject(String institutionNo, String groupId);
+
+    /**
+     * 根据id查询类别详细信息
+     * @return
+     */
+    //CategoryEntity getone(String id);
+}

+ 26 - 0
src/main/java/com/rf/psychological/scale/service/CategorySubjectService.java

@@ -0,0 +1,26 @@
+package com.rf.psychological.scale.service;
+
+
+import com.rf.psychological.dao.model.CategorySubjectEntity;
+
+import java.util.List;
+
+/**
+ * @author zsy
+ * @description:量表-类别关联信息管理
+ * @date 2021/6/17 15:55
+ */
+public interface CategorySubjectService {
+
+    /**
+     * 保存
+     * @param categorySubjectEntity
+     */
+    void save(CategorySubjectEntity categorySubjectEntity);
+
+    List<CategorySubjectEntity> findByFlag(String flag);
+
+    void deleteCategorySubjectByFlag(String flag);
+
+
+}

+ 129 - 0
src/main/java/com/rf/psychological/scale/service/CognitiveTaskService.java

@@ -0,0 +1,129 @@
+package com.rf.psychological.scale.service;
+
+
+import com.rf.psychological.dao.model.CognitiveTaskEntity;
+import org.springframework.data.domain.Page;
+
+import java.util.List;
+import java.util.Optional;
+
+/**
+ * @author zsy
+ * @description:认知任务信息管理
+ * @date 2021/6/17 15:55
+ */
+public interface CognitiveTaskService {
+
+    /**
+     * 保存
+     *
+     * @param cognitiveTaskEntity
+     */
+    void save(CognitiveTaskEntity cognitiveTaskEntity);
+
+    /**
+     * 获取认知任务列表
+     *
+     * @return
+     */
+    List<CognitiveTaskEntity> findAll(int pageNum, int pageSize);
+
+    /**
+     * 总条数
+     *
+     * @return
+     */
+    int allNum();
+
+    /**
+     * 根据名称模糊查询列表
+     *
+     * @return
+     */
+    List<CognitiveTaskEntity> getCognizeListByName(int pageNum, int pageSize, String searchStr);
+
+    /**
+     * 根据名称模糊查询总条数
+     *
+     * @return
+     */
+    int allNumByName(String searchStr);
+
+    /**
+     * 某类别下所有信息列表
+     *
+     * @return
+     */
+    List<CognitiveTaskEntity> findAllCategory(int pageNum, int pageSize, String categoryEname);
+
+    /**
+     * 某类别下总条数
+     *
+     * @return
+     */
+    int allNumCategory(String categoryEname);
+
+    /**
+     * 某类别下根据名称模糊查询列表
+     *
+     * @return
+     */
+    List<CognitiveTaskEntity> getCognizeListByNameCategory(int pageNum, int pageSize, String scaleName, String categoryEname);
+
+    /**
+     * 根据id查找认知任务
+     *
+     * @param id
+     * @return
+     */
+    Optional<CognitiveTaskEntity> getAllById(String id);
+
+    /**
+     * 某类别下模糊查询总条数
+     *
+     * @return
+     */
+    int allNumByNameCategory(String scaleName, String categoryEname);
+
+    /**
+     * 根据taskCode记录测试数
+     *
+     * @return
+     */
+    void addTestNum(String taskCode);
+
+    /**
+     * 查询用户认知任务权限
+     *
+     * @param uId
+     * @param scaleName
+     * @return
+     */
+    Page<CognitiveTaskEntity> findUserTaskAuth(String uId, String scaleName, int beginNum, int pageSize, Boolean mobile);
+
+    /**
+     * 查询用户认知任务权限,通过类别
+     *
+     * @param uId
+     * @param scaleName
+     * @param cateEName
+     * @param beginNum
+     * @param pageSize
+     * @return
+     */
+    Page<CognitiveTaskEntity> findUserTaskAuthAndCateEName(String uId, String scaleName, String cateEName, int beginNum, int pageSize, Boolean mobile);
+
+    /**
+     * 查询机构认知任务权限,包含类别
+     *
+     * @param institutionNo
+     * @param scaleName
+     * @param cateEName
+     * @param beginNum
+     * @param pageSize
+     * @return
+     */
+    Page<CognitiveTaskEntity> findInstitutionTaskAuthAndCateEName(String institutionNo, String scaleName, String cateEName, int beginNum, int pageSize, Boolean mobile);
+
+    Page<CognitiveTaskEntity> findInstitutionNoCTAuthList(String institutionNo, String searchKey, int beginNum, int pageSize);
+}

+ 130 - 0
src/main/java/com/rf/psychological/scale/service/impl/CategoryServiceImpl.java

@@ -0,0 +1,130 @@
+package com.rf.psychological.scale.service.impl;
+
+
+import com.rf.psychological.scale.dao.model.CategoryEntity;
+import com.rf.psychological.dao.repository.CategoryRepository;
+import com.rf.psychological.scale.service.CategoryService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+
+/**
+ * @author zsy
+ * @description:量表类别信息管理
+ * @date 2021/6/17 15:55
+ */
+@Service
+public class CategoryServiceImpl implements CategoryService {
+
+    @Autowired
+    private CategoryRepository categoryRepository;
+
+
+    /**
+     * 保存
+     *
+     * @param categoryEntity
+     */
+    @Override
+    public void save(CategoryEntity categoryEntity) {
+        this.categoryRepository.save(categoryEntity);
+    }
+
+    /**
+     * 获取量表类别列表
+     * @return
+     *//*
+    @Override
+    public List<CategoryEntity> findAll(int pageNum, int pageSize) {
+        int beginIndex = (pageNum-1)*pageSize;
+        return this.categoryRepository.findAll( beginIndex,  pageSize);
+    }
+
+    *//**
+     * 总条数
+     * @return
+     *//*
+    @Override
+    public int allNum() {
+        return this.categoryRepository.allNum();
+    }
+
+    *//**
+     * 根据名称模糊查询列表
+     * @return
+     *//*
+    @Override
+    public List<CategoryEntity> getSubjectListByName(int pageNum, int pageSize, String searchStr) {
+        int beginIndex = (pageNum-1)*pageSize;
+        return this.categoryRepository.getSubjectListByName( beginIndex,  pageSize, searchStr);
+    }
+
+    *//**
+     * 根据名称模糊查询总条数
+     * @return
+     *//*
+    @Override
+    public int allNumByName(String searchStr) {
+        return this.categoryRepository.allNumByName(searchStr);
+    }*/
+
+    /**
+     * 效验是否存在
+     *
+     * @return
+     */
+    @Override
+    public List<CategoryEntity> getCategoryByName(String name, String ename, String sequence) {
+        return this.categoryRepository.getCategoryByName(name, ename, sequence);
+    }
+
+    /**
+     * 查询所有类别信息
+     *
+     * @return
+     */
+    @Override
+    public List<CategoryEntity> findAll(String type) {
+        return this.categoryRepository.findAllOrder(type);
+    }
+
+    /**
+     * 查询所有类别信息
+     * @return
+     */
+    @Override
+    public List<CategoryEntity> findAlls() {
+
+        return this.categoryRepository.findAll();
+    }
+
+    @Override
+    public List<CategoryEntity> findAllCT(String institutionNo, String groupId) {
+        if (groupId.equals("") || groupId.equals("0")) {
+            return this.categoryRepository.findAllCTInstitution(institutionNo);
+        } else {
+            return this.categoryRepository.findAllCTByGroup(groupId);
+        }
+    }
+
+
+
+    @Override
+    public List<CategoryEntity> findALLCategorySubject(String institutionNo, String groupId) {
+        if (groupId.equals("") || groupId.equals("0")) {
+            return this.categoryRepository.findAllSubjectInstitution(institutionNo);
+        } else {
+            return this.categoryRepository.findAllSubjectGroup(groupId);
+        }
+    }
+
+    /**
+     * 根据id查询类别详细信息
+     * @return
+     */
+    /*@Override
+    public CategoryEntity getone(String id) {
+        return this.categoryRepository.getOne(id);
+    }*/
+}

+ 43 - 0
src/main/java/com/rf/psychological/scale/service/impl/CategorySubjectServiceImpl.java

@@ -0,0 +1,43 @@
+package com.rf.psychological.scale.service.impl;
+
+
+import com.rf.psychological.dao.model.CategorySubjectEntity;
+import com.rf.psychological.dao.repository.CategorySubjectRepository;
+import com.rf.psychological.scale.service.CategorySubjectService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+
+/**
+ * @author zsy
+ * @description:量表类别关联信息管理
+ * @date 2021/6/17 15:55
+ */
+@Service
+public class CategorySubjectServiceImpl implements CategorySubjectService {
+
+    @Autowired
+    private CategorySubjectRepository categorySubjectRepository;
+
+
+    /**
+     * 保存
+     * @param categorySubjectEntity
+     */
+    @Override
+    public void save(CategorySubjectEntity categorySubjectEntity) {
+        this.categorySubjectRepository.save(categorySubjectEntity);
+    }
+
+    @Override
+    public List<CategorySubjectEntity> findByFlag(String flag) {
+        return this.categorySubjectRepository.findByFlag(flag);
+    }
+
+    @Override
+    public void deleteCategorySubjectByFlag(String flag) {
+        this.categorySubjectRepository.deleteCategorySubjectByFlag(flag);
+    }
+
+}

+ 119 - 0
src/main/java/com/rf/psychological/scale/service/impl/CognitiveTaskServiceImpl.java

@@ -0,0 +1,119 @@
+package com.rf.psychological.scale.service.impl;
+
+
+import com.rf.psychological.dao.model.CognitiveTaskEntity;
+import com.rf.psychological.scale.dao.repository.CognitiveTaskRepository;
+import com.rf.psychological.scale.service.CognitiveTaskService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.data.domain.Page;
+import org.springframework.data.domain.PageRequest;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+import java.util.Optional;
+
+/**
+ * @author zsy
+ * @description:认知任务信息管理
+ * @date 2021/6/17 15:55
+ */
+@Service
+public class CognitiveTaskServiceImpl implements CognitiveTaskService {
+
+    @Autowired
+    private CognitiveTaskRepository cognitiveTaskRepository;
+
+
+    /**
+     * 保存
+     *
+     * @param cognitiveTaskEntity
+     */
+    @Override
+    public void save(CognitiveTaskEntity cognitiveTaskEntity) {
+        this.cognitiveTaskRepository.save(cognitiveTaskEntity);
+    }
+
+    @Override
+    public List<CognitiveTaskEntity> findAll(int pageNum, int pageSize) {
+        int beginIndex = (pageNum - 1) * pageSize;
+        return this.cognitiveTaskRepository.findAll(beginIndex, pageSize);
+    }
+
+    @Override
+    public int allNum() {
+        return this.cognitiveTaskRepository.allNum();
+    }
+
+    @Override
+    public List<CognitiveTaskEntity> getCognizeListByName(int pageNum, int pageSize, String searchStr) {
+        int beginIndex = (pageNum - 1) * pageSize;
+        return this.cognitiveTaskRepository.getCognizeListByName(beginIndex, pageSize, searchStr);
+    }
+
+    @Override
+    public int allNumByName(String searchStr) {
+        return this.cognitiveTaskRepository.allNumByName(searchStr);
+    }
+
+    @Override
+    public List<CognitiveTaskEntity> findAllCategory(int pageNum, int pageSize, String categoryEname) {
+        int beginIndex = (pageNum - 1) * pageSize;
+        return this.cognitiveTaskRepository.findAllCategory(beginIndex, pageSize, categoryEname);
+    }
+
+    @Override
+    public int allNumCategory(String categoryEname) {
+        return this.cognitiveTaskRepository.allNumCategory(categoryEname);
+    }
+
+    @Override
+    public Optional<CognitiveTaskEntity> getAllById(String id) {
+        return cognitiveTaskRepository.findById(id);
+    }
+
+    @Override
+    public List<CognitiveTaskEntity> getCognizeListByNameCategory(int pageNum, int pageSize, String scaleName, String categoryEname) {
+        int beginIndex = (pageNum - 1) * pageSize;
+        return this.cognitiveTaskRepository.getCognizeListByNameCategory(beginIndex, pageSize, scaleName, categoryEname);
+    }
+
+    @Override
+    public int allNumByNameCategory(String scaleName, String categoryEname) {
+        return this.cognitiveTaskRepository.allNumByNameCategory(scaleName, categoryEname);
+    }
+
+    @Override
+    public void addTestNum(String taskCode) {
+        this.cognitiveTaskRepository.addTestNum(taskCode);
+    }
+
+    @Override
+    public Page<CognitiveTaskEntity> findUserTaskAuth(String uId, String scaleName, int beginNum, int pageSize, Boolean mobile) {
+        if (mobile) {
+            return cognitiveTaskRepository.pageUserTaskAuthInMobile(uId, scaleName, "1", PageRequest.of(beginNum - 1, pageSize));
+        }
+        return this.cognitiveTaskRepository.findUserTaskAuth(uId, scaleName, PageRequest.of(beginNum - 1, pageSize));
+    }
+
+    @Override
+    public Page<CognitiveTaskEntity> findUserTaskAuthAndCateEName(String uId, String scaleName, String cateEName, int beginNum, int pageSize, Boolean mobile) {
+        if (mobile) {
+            return cognitiveTaskRepository.pageUserTaskAuthAndCateENameInMobile(uId, scaleName, cateEName, "1", PageRequest.of(beginNum - 1, pageSize));
+        }
+        return this.cognitiveTaskRepository.findUserTaskAuthAndCateEName(uId, scaleName, cateEName, PageRequest.of(beginNum - 1, pageSize));
+    }
+
+    @Override
+    public Page<CognitiveTaskEntity> findInstitutionTaskAuthAndCateEName(String institutionNo, String scaleName, String cateEName, int beginNum, int pageSize, Boolean mobile) {
+        if (mobile) {
+            return cognitiveTaskRepository.pageInstitutionTaskAuthAndCateEName(institutionNo, scaleName, cateEName, "1", PageRequest.of(beginNum - 1, pageSize));
+        }
+        return cognitiveTaskRepository.findInstitutionTaskAuthAndCateEName(institutionNo, scaleName, cateEName, PageRequest.of(beginNum - 1, pageSize));
+    }
+
+    @Override
+    public Page<CognitiveTaskEntity> findInstitutionNoCTAuthList(String institutionNo, String searchKey, int beginNum, int pageSize) {
+        return this.cognitiveTaskRepository.findInstitutionNoCTAuthList(institutionNo, searchKey, PageRequest.of(beginNum - 1, pageSize));
+    }
+}

+ 20 - 0
src/main/java/com/rf/psychological/service/CattellService.java

@@ -0,0 +1,20 @@
+package com.rf.psychological.service;
+
+import com.rf.psychological.dao.model.CattellEntity;
+
+import java.util.List;
+
+/**
+ * @author zzf
+ * @description:卡氏十六种人格因素量表
+ * @date 2021/2/2 15:19
+ */
+public interface CattellService {
+
+
+    /**
+     * 查询量表
+     * @return
+     */
+    List<CattellEntity> findAll();
+}

+ 30 - 0
src/main/java/com/rf/psychological/service/impl/CattellServiceImpl.java

@@ -0,0 +1,30 @@
+package com.rf.psychological.service.impl;
+
+import com.rf.psychological.dao.model.CattellEntity;
+import com.rf.psychological.dao.repository.CattellRepository;
+import com.rf.psychological.service.CattellService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.data.domain.Sort;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+
+/**
+ * @author zzf
+ * @description:卡氏十六种人格因素量表
+ * @date 2021/2/2 15:19
+ */
+@Service
+public class CattellServiceImpl implements CattellService {
+    @Autowired
+    private CattellRepository cattellRepository;
+    /**
+     * 查询量表
+     *
+     * @return
+     */
+    @Override
+    public List<CattellEntity> findAll() {
+        return cattellRepository.findAll(Sort.by("no"));
+    }
+}

+ 48 - 0
src/main/java/com/rf/psychological/utils/CPUSerial.java

@@ -0,0 +1,48 @@
+package com.rf.psychological.utils;
+
+import java.io.BufferedReader;
+import java.io.File;
+import java.io.FileWriter;
+import java.io.InputStreamReader;
+
+public class CPUSerial {
+
+    /**获取本机CPU信息
+     */
+    public static String getCPUSerial() {
+        String result = "";
+        try {
+            File file = File.createTempFile("tmp", ".vbs");//创建临时文件,路径为C:\Documents and Settings\Administrator\Local Settings\Temp
+            file.deleteOnExit();
+            FileWriter fw = new java.io.FileWriter(file);
+            //是有vbs脚本语言,获取CPU唯一ID
+            //表示程序出现运行时错误时,会继续运行,不中断
+            StringBuilder sb = new StringBuilder("On Error Resume Next \r\n\r\n");
+            //表示本机
+            sb.append("strComputer = \".\"  \r\n");
+            //使用GetObject函数获取本机信息赋值给objWMIService
+            sb.append("Set objWMIService = GetObject(\"winmgmts:\" _ \r\n");
+            sb.append("    & \"{impersonationLevel=impersonate}!\\\\\" & strComputer & \"\\root\\cimv2\") \r\n");
+            sb.append("Set colItems = objWMIService.ExecQuery(\"Select * from Win32_Processor\")  \r\n ");
+            //使用for循环取出CPU信息
+            sb.append("For Each objItem in colItems\r\n " + "    Wscript.Echo objItem.ProcessorId  \r\n ");
+            sb.append("    exit for  ' do the first cpu only! \r\n");
+            sb.append("Next");
+
+            fw.write(sb.toString());
+            fw.close();
+            Process p = Runtime.getRuntime().exec("cscript //NoLogo //T:10 " + file.getPath());
+            BufferedReader input = new BufferedReader(new InputStreamReader(p.getInputStream()));
+            String line;
+            while ((line = input.readLine()) != null) {
+                result += line;
+            }
+            input.close();
+            file.delete();
+        } catch (Exception e) {
+            e.fillInStackTrace();
+        }
+        return result;
+    }
+
+}

+ 1512 - 0
src/main/java/com/rf/psychological/utils/Constant.java

@@ -0,0 +1,1512 @@
+package com.rf.psychological.utils;
+
+import java.util.List;
+
+/**
+ * @author zzf
+ * @description:静态类
+ * @date 2021/1/19 16:45
+ */
+public class Constant {
+
+
+    /**
+     *系统版本
+     */
+    public static final String SYSTEM_VERSION ="1.1";
+
+    /**
+     * 认知任务返回版本报告
+     */
+    public static final String COGNITION_RESULT_VERSION ="2.0.1";
+
+    /**
+     * 公网版机构编号
+     */
+    public static final String WEB_INSTITUTION_CODE ="PUB001";
+
+    /**
+     * 公网版机构名称
+     */
+    public static final String WEB_INSTITUTION_NAME ="公网版机构";
+
+    /**
+     * 局域网版机构编号
+     */
+    public static final String LAN_INSTITUTION_CODE ="LAN001";
+
+    /**
+     * 局域网版机构名称
+     */
+    public static final String LAN_INSTITUTION_NAME ="局域网版机构";
+
+    /**
+     * 部分字段默认值
+     */
+    public static final String DEFAULT_VALUE_ZERO ="0";
+
+    /**
+     * 公网版配置文件名称
+     */
+    public static final String PROFILE_PUBLIC = "public";
+
+
+    /**
+     * 游客固定用户id
+     */
+    public static final String PUBLIC_VISITOR_ID = "pub001-visitor";
+
+
+    /**
+     * 安装包名称
+     **/
+    public static final String APK_NAME = "app-release.apk";
+
+    /**
+     * 测试计划状态  测试状态:0--已关闭,1---手动关闭,2----未开始,3---进行中
+     */
+    public static final int TEST_PLAN_STATUS_END = 0;
+    public static final int TEST_PLAN_STATUS_STOP = 1;
+    public static final int TEST_PLAN_STATUS_UNSTART = 2;
+    public static final int TEST_PLAN_STATUS_RUNNING = 3;
+
+    /**
+     * 生理信号内容
+     * 类型:1为脉搏;2为心电;3为脑电
+     */
+    public static final String PLUSE = "1";
+    public static final String ECG = "2";
+    public static final String EEG = "3";
+
+    /**
+     * 测试计划--用户状态
+     */
+    public static final String TEST_PLAN_USER_STATUS_UNCOMPLETE = "0";
+    public static final String TEST_PLAN_USER_STATUS_COMPLETED = "9";
+
+    /**
+     * 用户状态 1-待审核 2-审核通过 3--密码被重置需要重新登录
+     */
+    public static final String USER_STATUS_NORMAL = "2";
+
+    /**
+     * 短信相关
+     */
+    public static int appId = 1400555402;
+    public static String appKey = "197596018c4565ad023c2b145f4069a1";
+    public static String smsSign = "北京决明科技";
+    /** 默认分组的名称  **/
+    public static final String DEFAULT_GROUP_NAME = "默认分组";
+
+    /**
+     * 默认密码
+     */
+    public static final String DEFAULT_PASSWORD = "123456";
+/**测试类型 匹茨堡睡眠质量指数**/
+//public static final String QUEST_TYPE_PSQI="PSQI";
+/**测试类型 心境状态量表POMS**/
+//public static final String QUEST_TYPE_POMS = "POMS";
+    /**
+     * 测试类型症状自评量表(SCL-90)
+     **/
+    public static final String QUEST_TYPE_SCL = "SCL";
+    /**
+     * 艾森克人格量表
+     **/
+    public static final String QUEST_TYPE_ASK = "ASK";
+    /**
+     * 汉化版美国航空航天局任务负荷指数量表
+     **/
+    public static final String QUEST_TYPE_AVAI = "AVIA";
+    /**
+     * 社会支持评定量表
+     **/
+    public static final String QUEST_TYPE_SUPP = "SUPP";
+    /**
+     * 抑郁焦虑压力量表
+     **/
+    public static final String QUEST_TYPE_DEPR = "DEPR";
+    /**
+     * 正性负性情绪量表
+     **/
+    public static final String QUEST_TYPE_MOOD = "MOOD";
+    /**
+     * 状态-特质焦虑量表
+     **/
+    public static final String QUEST_TYPE_STATUS = "STATUS";
+    /**
+     * 生活事件量表
+     **/
+    public static final String QUEST_TYPE_LIFE = "LIFE";
+    /**
+     * 瑞文智力测试
+     **/
+    public static final String QUEST_TYPE_RIVEN = "RIVEN";
+    /**
+     * GO-NO-GO反应抑制测试
+     **/
+    public static final String QUEST_TYPE_GO_NO_GO = "GO_NO-GO";
+    /**
+     * 工作记忆能力测试(字母记忆)
+     **/
+    public static final String QUEST_TYPE_MEMORY = "MEMORY";
+    /**
+     * 游戏3
+     **/
+    public static final String QUEST_TYPE_MEMORY_YATAI = "MEMORY_YATAI";
+    /**
+     * 精神运动警觉度测试
+     **/
+    public static final String QUEST_TYPE_ALERTNESS = "ALERTNESS";
+    /**
+     * 游戏4
+     **/
+    public static final String QUEST_TYPE_ALERTNESS_YATAI = "ALERTNESS_YATAI";
+    /**
+     * 连续加法测试
+     **/
+    public static final String QUEST_TYPE_ADDITION = "ADDITION";
+    /**
+     * 节奏诊断
+     **/
+    public static final String QUEST_TYPE_RHYTHM = "RHYTHM";
+    /**
+     * 形状知觉测试(自上而下)
+     **/
+    public static final String QUEST_TYPE_SHAPE = "SHAPE";
+
+    /**
+     * 形状知觉测试(自伤而下)儿童版
+     */
+    public static final String QUEST_TYPE_SHARP_CHILD = "SHARP_CHILD";
+    /**
+     * 游戏2
+     **/
+    public static final String QUEST_TYPE_SHAPE_YATAI = "SHAPE_YATAI";
+    /**
+     * 形状知觉测试(自下而上)
+     **/
+    public static final String QUEST_TYPE_SHAPE2 = "SHAPE2";
+    /**
+     * 不确定信息决策
+     **/
+    public static final String QUEST_TYPE_UNCERTAIN = "UNCERTAIN";
+    /**
+     * 运动知觉测试
+     **/
+    public static final String QUEST_TYPE_MOVEMENT = "MOVEMENT";
+    /**
+     * 注意力网络测试
+     **/
+    public static final String QUEST_TYPE_ANT = "ANT";
+    /**
+     * 游戏1
+     **/
+    public static final String QUEST_TYPE_ANT_YATAI = "ANT_YATAI";
+    /**
+     * 游戏5
+     **/
+    public static final String QUEST_TYPE_ANT_FISH_YATAI = "ANTFISH_YATAI";
+    /**
+     * 注意力网络测试(儿童版)
+     **/
+    public static final String QUEST_TYPE_ANT_FISH = "ANTFISH";
+    /**
+     * 画钟测试
+     **/
+    public static final String QUEST_TYPE_CDT = "CDT";
+    /**
+     * 蒙特利尔认知测试
+     **/
+    public static final String QUEST_TYPE_MOCA = "MOCA";
+    /**
+     * 简易精神状态测试
+     **/
+    public static final String QUEST_TYPE_MMSE = "MMSE";
+    /**
+     * 听觉测试
+     **/
+    public static final String QUEST_TYPE_BIC = "BIC";
+    /**
+     * 综合记忆能力测试
+     **/
+    public static final String QUEST_TYPE_RTC = "RTC";
+    /**
+     * 工作记忆能力测试(空间记忆)
+     **/
+    public static final String QUEST_TYPE_MEMORYT = "MemoryTest";
+    /**
+     * 目标追踪测试
+     **/
+    public static final String QUEST_TYPE_GTCT = "GTCT";
+
+    /**
+     * 目标追踪测试
+     */
+    public static final String QUEST_TYPEGTCT_CHILD = "CHILD";
+
+    /**
+     * Go-No-go冲动抑制测试(高级版)
+     **/
+    public static final String QUEST_TYPE_GO_NO_GO2 = "GO_NO-GO2";
+    /**
+     * 风险决策能力测试
+     **/
+    public static final String QUEST_TYPE_RDT = "RDT";
+    /**
+     * 时间知觉能力测试
+     **/
+    public static final String QUEST_TYPE_SC = "speedCognitive";
+    /**
+     * 空间记忆能力测试
+     **/
+    public static final String QUEST_TYPE_REM = "REM";
+    /**
+     * 悬旌万里
+     **/
+    public static final String QUEST_TYPE_XJWL = "xuanjingwanli";
+
+    /**
+     *
+     **/
+    public static final String QUEST_TYPE_CATTELL = "CATTELL";
+    /**
+     * 枪林弹雨
+     **/
+    public static final String QUEST_TYPE_GBE = "GUNSBULLETS";
+    /**
+     * 坦克洪流
+     **/
+    public static final String QUEST_TYPE_TKHL = "tanKeHongLiu";
+    /**
+     * 海空激战
+     **/
+    public static final String QUEST_TYPE_HKJZ = "haiKongJiZhan";
+    /**
+     * 雄鹰展翅
+     **/
+    public static final String QUEST_TYPE_XYZC = "xiongYingZhanChi";
+    /**
+     * 形状连线测试A
+     **/
+    public static final String QUEST_TYPE_STTA = "STTA";
+    /**
+     * 形状连线测试B
+     **/
+    public static final String QUEST_TYPE_STTB = "STTB";
+    /**
+     * 数字广度测验(DST)
+     **/
+    public static final String QUEST_TYPE_DST = "DST";
+    /**
+     * 华山版听觉词语学习
+     **/
+    public static final String QUEST_TYPE_MTH = "MTH";
+    /**
+     * Boston命名测验
+     **/
+    public static final String QUEST_TYPE_BSNTask = "BSNTask";
+    /**
+     * 动物词语流畅性测试
+     **/
+    public static final String QUEST_TYPE_AMWSTask = "AMWSTask";
+    /**
+     * etb1:面部表情识别任务
+     **/
+    public static final String QUEST_TYPE_ETB01 = "ETB01";
+    /**
+     * ECAT::情绪分类任务
+     **/
+    public static final String QUEST_TYPE_ECAT = "ECAT";
+    /**
+     * EREC
+     **/
+    public static final String QUEST_TYPE_EREC = "EREC";
+    /**
+     * EMEM情绪识别记忆任务
+     **/
+    public static final String QUEST_TYPE_EMEM = "EMEM";
+    /**
+     * 情绪测试3:词汇测试-词汇分类
+     * 情绪测试3:词汇测试-词汇回忆
+     * 情绪测试3:词汇测试-词汇识别
+     * 三个总和
+     **/
+    public static final String QUEST_TYPE_EALL = "EALL";
+    /**
+     * Faces Dot Probe Task (FDOT)
+     **/
+    public static final String QUEST_TYPE_FDOT = "FDOT";
+    /**
+     * 征冰心理健康测评
+     **/
+    public static final String QUEST_TYPE_ZBMHA = "ZBMHA";
+
+    /**
+     * 视觉模拟渴求
+     **/
+    public static final String QUEST_TYPE_VAS= "VAS";
+
+    /**
+     * Stroop试验
+     **/
+    public static final String QUEST_TYPE_STROOP= "STROOP";
+
+    /**
+     * 数字符号转换测验
+     **/
+    public static final String QUEST_TYPE_DSST= "DSST";
+
+
+    /**
+     * 量表类型
+     **/
+    public static final String SCALE_TYPE_E = "E";
+    public static final String SCALE_TYPE_N = "N";
+    public static final String SCALE_TYPE_P = "P";
+    public static final String SCALE_TYPE_L = "L";
+
+    public static final String NO = "no";
+    public static final String YES = "yes";
+
+
+    public static final String SPLIT_CHAR = "-";
+
+    /**
+     * 量表测试文件SHEET名
+     **/
+    public static final String SHEET_NAME_ASK = "艾森克人格量表";
+    //public static final String SHEET_NAME_PSQI = "匹兹堡睡眠质量指数";
+//public static final String SHEET_NAME_POMS = "心境状态量表";
+    public static final String SHEET_NAME_SCL = "症状自评量表(SCL-90)";
+    public static final String SHEET_NAME_AVAI = "汉化版美国航空航天局任务负荷指数量表";
+    public static final String SHEET_NAME_SUPP = "社会支持评定量表";
+    public static final String SHEET_NAME_DEPR = "抑郁焦虑压力表";
+    public static final String SHEET_NAME_MOOD = "正性负性情绪量表";
+    public static final String SHEET_NAME_STATUS = "状态-特质焦虑量表";
+    /**
+     * 认知任务测试
+     **/
+    public static final String SHEET_NAME_RIVEN = "瑞文智力测试";
+    public static final String SHEET_NAME_GO_NO_GO = "GO-NO-GO反应抑制测试";
+    public static final String SHEET_NAME_LIFE = "生活事件量表";
+    public static final String SHEET_NAME_ALERTNESS = "精神运动警觉度测试";
+    public static final String SHEET_NAME_ALERTNESS_YATAI = "游戏4";
+    public static final String SHEET_NAME_ADDITION = "连续加法测试";
+    public static final String SHEET_NAME_CATTELL = "卡氏十六种人格因素量表";
+    public static final String SHEET_NAME_MEMORY = "工作记忆能力测试(字母记忆)";
+    public static final String SHEET_NAME_MEMORY_YATAI = "游戏3";
+    public static final String SHEET_NAME_RHYTHM = "节奏诊断";
+    public static final String SHEET_NAME_SHAPE = "形状知觉测试(自上而下)";
+    public static final String SHEET_NAME_SHAPE_YATAI = "游戏2";
+    public static final String SHEET_NAME_SHAPE2 = "形状知觉测试(自下而上)";
+    public static final String SHEET_NAME_UNCERTAIN = "不确定信息决策";
+    public static final String SHEET_NAME_MOVEMENT = "运动知觉测试";
+    public static final String SHEET_NAME_ANT = "注意力网络测试";
+    public static final String SHEET_NAME_ANT_YATAI = "游戏1";
+    public static final String SHEET_NAME_ANT_FISH_YATAI = "游戏5";
+    public static final String SHEET_NAME_ANT_FISH = "注意力网络测试(儿童版)";
+    public static final String SHEET_NAME_CDT = "画钟测试";
+    public static final String SHEET_NAME_MOCA = "蒙特利尔认知测试";
+    public static final String SHEET_NAME_MMSE = "简易精神状态测试";
+    public static final String SHEET_NAME_BIC = "听觉测试";
+    public static final String SHEET_NAME_RTC = "综合记忆能力测试";
+    public static final String SHEET_NAME_MEMORYT = "工作记忆能力测试(空间记忆)";
+    public static final String SHEET_NAME_GTCT = "目标追踪测试";
+    public static final String SHEET_NAME_GO_NO_GO2 = "Go-No-go冲动抑制测试(高级版)";
+    public static final String SHEET_NAME_RDT = "风险决策能力测试";
+    public static final String SHEET_NAME_SC = "时间知觉能力测试";
+    public static final String SHEET_NAME_GBE = "枪林弹雨";
+    public static final String SHEET_NAME_REM = "空间记忆能力测试";
+    public static final String SHEET_NAME_XJWL = "悬旌万里";
+    public static final String SHEET_NAMEE_TKHL = "坦克洪流";
+    public static final String SHEET_NAME_HKJZ = "海空激战";
+    public static final String SHEET_NAME_XYZC = "雄鹰展翅";
+    public static final String SHEET_NAME_STTA = "形状连线测试A";
+    public static final String SHEET_NAME_STTB = "形状连线测试B";
+    public static final String SHEET_NAME_DST = "数字广度测验";
+    public static final String SHEET_NAME_MTH = "华山版听觉词语学习";
+    public static final String SHEET_NAME_BSNTask = "Boston命名测验";
+    public static final String SHEET_NAME_AMWSTask = "动物词语流畅性测试";
+    public static final String SHEET_NAME_ETB01 = "人脸表情识别任务";
+    public static final String SHEET_NAME_ECAT = "情绪分类任务";
+    public static final String SHEET_NAME_EREC = "EREC";
+    public static final String SHEET_NAME_EMEM = "情绪识别记忆任务";
+    public static final String SHEET_NAME_EALL = "情绪测试3-词汇测试";
+    public static final String SHEET_NAME_FDOT = "FDOT";
+    public static final String SHEET_NAME_ZBMHA = "征冰心理健康测评";
+    public static final String SHEET_NAME_VAS= "视觉模拟渴求";
+    public static final String SHEET_NAME_STROOP= "Stroop试验";
+    public static final String SHEET_NAME_DSST= "数字符号转换测验";
+
+
+/** 基础常量 工作记忆能力测试 **/
+    /**
+     * 每种任务的组块数
+     **/
+    public static int GROUP_COUNT = 6;
+    /**
+     * 每个组块的字母个数
+     **/
+    public static int CHAR_COUNT = 18;
+
+
+    /**
+     * 魔法数
+     **/
+
+    /*public static String MAGIC_NUM_0 = "0";
+    public static String MAGIC_NUM_1 = "1";
+    public static String MAGIC_NUM_2 = "2";
+    public static String MAGIC_NUM_MINUS_1 = "-1";*/
+    /**
+     * 题目类型:单选题
+     */
+    public static final String MAGIC_NUM_0 = "0";
+    /**
+     * 题目类型:多选题
+     * 计分方向:正向
+     */
+    public static final String MAGIC_NUM_1 = "1";
+    /**
+     * 题目类型:填空题
+     */
+    public static final String MAGIC_NUM_2 = "2";
+    /**
+     * 题目类型:复杂类型  单选,填空
+     */
+    public static final String MAGIC_NUM_02 = "02";
+    /**
+     * 题目类型:复杂类型:多选,填空
+     */
+    public static final String MAGIC_NUM_12 = "12";
+    /**
+     * 计分方向:反向
+     */
+    public static String MAGIC_NUM_MINUS_1 = "-1";
+
+
+    /**
+     * Aitken拖延问卷
+     **/
+    public static final String QUEST_FLAG_API = "20210617113742";
+    /**
+     * 社交焦虑量表
+     **/
+    public static final String QUEST_FLAG_LSAS = "20210622215032";
+    /**
+     * 简明精神病量表
+     **/
+    public static final String QUEST_FLAG_BPRS = "20210616235331";
+    /**
+     * 汉密顿焦虑量表
+     **/
+    public static final String QUEST_FLAG_HAMA = "20210617000138";
+    /**
+     * 孤独量表
+     **/
+    public static final String QUEST_FLAG_UCLA = "20210617000232";
+    /**
+     * 焦虑自评量表
+     **/
+    public static final String QUEST_FLAG_SAS = "20210617000853";
+    /**
+     * 密歇根酒精依赖调查表
+     **/
+    public static final String QUEST_FLAG_MAST = "20210628131017";
+    /**
+     * Beck自杀意念量表
+     **/
+    public static final String QUEST_FLAG_BSSI = "20210617013827";
+/** 儿童行为问卷 **/
+//public static final String QUEST_FLAG_CBQ = "20210617014033";
+    /**
+     * 人际信任量表
+     **/
+    public static final String QUEST_FLAG_ITS = "20210617014152";
+    /**
+     * 舒适状况量表
+     **/
+    public static final String QUEST_FLAG_GCQ = "20210617015856";
+    /**
+     * 抑郁自评量表
+     **/
+    public static final String QUEST_FLAG_SDS = "20210617020516";
+    /**
+     * 多伦多述情障碍量表
+     **/
+    public static final String QUEST_FLAG_TAS_26 = "20210617020857";
+    /**
+     * 社会期望量表
+     **/
+    public static final String QUEST_FLAG_MCSD = "20210617100627";
+    /**
+     * 儿童自我意识量表
+     **/
+    public static final String QUEST_FLAG_PHCSS = "20210617101541";
+    /**
+     * 爱德华社会期望量表
+     **/
+    public static final String QUEST_FLAG_SD = "20210617103114";
+    /**
+     * 社交回避及苦恼量表
+     **/
+    public static final String QUEST_FLAG_SAD = "20210617114158";
+    /**
+     * 安全感量表
+     **/
+    public static final String QUEST_FLAG_SQ = "20210617121023";
+    /**
+     * 贝克抑郁自评量表
+     **/
+    public static final String QUEST_FLAG_BDI = "20210617121646";
+    /**
+     * 广泛性焦虑障碍量表
+     **/
+    public static final String QUEST_FLAG_GAD_7 = "20210617122012";
+    /**
+     * 流调中心用抑郁量表
+     **/
+    public static final String QUEST_FLAG_CES_D = "20210617122312";
+    /**
+     * 纽芬兰纪念大学幸福度量表
+     **/
+    public static final String QUEST_FLAG_MUNSH = "20210617122707";
+    /**
+     * 压力知觉量表
+     **/
+    public static final String QUEST_FLAG_PSS = "20210617123132";
+    /**
+     * 医院焦虑抑郁量表
+     **/
+    public static final String QUEST_FLAG_HADS = "20210617123608";
+    /**
+     * 抑郁症筛查量表
+     **/
+    public static final String QUEST_FLAG_PHQ_9 = "20210617124011";
+    /**
+     * 自杀态度问卷
+     **/
+    public static final String QUEST_FLAG_QSA = "20210617124840";
+    /**
+     * 自尊量表
+     **/
+    public static final String QUEST_FLAG_SES = "20210617125947";
+    /**
+     * 明尼苏达多相人格测验矫正量表
+     **/
+    public static final String QUEST_FLAG_MMPI_K = "20210617130956";
+    /**
+     * 明尼苏达多相人格测验说谎L量表
+     **/
+    public static final String QUEST_FLAG_MMPI_L = "20210617131351";
+    /**
+     * 3-7岁儿童气质问卷
+     **/
+    public static final String QUEST_FLAG_NYLS = "20210617132159";
+    /**
+     * 多维度健康状况心理控制源量表(表A)
+     **/
+    public static final String QUEST_FLAG_MHLC_A = "20210617132612";
+    /**
+     * 多维度健康状况心理控制源量表(表B)
+     **/
+    public static final String QUEST_FLAG_MHLC_B = "20210617133012";
+    /**
+     * 儿童感觉统合能力发展评定量表
+     **/
+    public static final String QUEST_FLAG_SIT = "20210617133625";
+    /**
+     * 核心自我评价量表
+     **/
+    public static final String QUEST_FLAG_CSES = "20210617133919";
+    /**
+     * 精神卫生心理控制源量表
+     **/
+    public static final String QUEST_FLAG_MHLC = "20210617134847";
+    /**
+     * 酒精依赖疾患识别测验
+     **/
+    public static final String QUEST_FLAG_AUDIT = "20210617135231";
+    /**
+     * 态度与意见调查中的期望性作答
+     **/
+    public static final String QUEST_FLAG_RD = "20210617135635";
+    /**
+     * 症状自评量表(SCL-90)
+     **/
+    public static final String QUEST_FLAG_SCL_90 = "20210617140713";
+    /**
+     * 简易应对方式问卷
+     **/
+    public static final String QUEST_FLAG_SCSQ = "20210619124953";
+    /**
+     * 交流恐惧自陈量表
+     **/
+    public static final String QUEST_FLAG_PRCA_24 = "20210619130014";
+    /**
+     * 交往焦虑量表
+     **/
+    public static final String QUEST_FLAG_IAS = "20210619131525";
+    /**
+     * 领悟社会支持量表
+     **/
+    public static final String QUEST_FLAG_PSSS = "20210619131920";
+    /**
+     * 青少年病理性互联网使用量表
+     **/
+    public static final String QUEST_FLAG_APIUS = "20210619132131";
+    /**
+     * 羞怯量表
+     **/
+    public static final String QUEST_FLAG_SS = "20210619132538";
+    /**
+     * 自我和谐量表
+     **/
+    public static final String QUEST_FLAG_SCCS = "20210619132917";
+    /**
+     * 情感量表
+     **/
+    public static final String QUEST_FLAG_AS = "20210621125418";
+    /**
+     * 自动思维量表
+     **/
+    public static final String QUEST_FLAG_ATO = "20210621220908";
+    /**
+     * 儿童少年生活质量量表
+     **/
+    public static final String QUEST_FLAG_QLSCA = "20210621221508";
+    /**
+     * 老年抑郁量表
+     **/
+    public static final String QUEST_FLAG_GDS = "20210621221807";
+    /**
+     * Carroll抑郁量表
+     **/
+    public static final String QUEST_FLAG_CRS = "20210622213958";
+    /**
+     * 家庭功能评定
+     **/
+    public static final String QUEST_FLAG_FAD = "20210622214416";
+    /**
+     * 家庭环境量表中文版
+     **/
+    public static final String QUEST_FLAG_FES_CV = "20210622214546";
+    /**
+     * 青少年学生疏离感量表
+     **/
+    public static final String QUEST_FLAG_ASAS = "20210622214744";
+    /**
+     * 情绪-社交孤独问卷
+     **/
+    public static final String QUEST_FLAG_ESLI = "20210622214903";
+    /**
+     * 贝克-拉范森躁狂量表
+     **/
+    public static final String QUEST_FLAG_BRMS = "20210622215152";
+    /**
+     * 多维完美主义问卷
+     **/
+    public static final String QUEST_FLAG_MPS = "20210625181538";
+    /**
+     * 费城老年中心(PGC)信心量表
+     **/
+    public static final String QUEST_FLAG_PGC = "20210625182311";
+    /**
+     * 生活满意度指数A
+     **/
+    public static final String QUEST_FLAG_LSIA = "20210625183328";
+    /**
+     * 思维风格量表
+     **/
+    public static final String QUEST_FLAG_TSI = "20210625183509";
+    /**
+     * 特定人际信任量表
+     **/
+    public static final String QUEST_FLAG_SITS = "20210625183706";
+    /**
+     * 信赖他人量表
+     **/
+    public static final String QUEST_FLAG_FPS = "20210625183826";
+    /**
+     * 信任他人量表
+     **/
+    public static final String QUEST_FLAG_TIP = "20210625183923";
+    /**
+     * 信任量表
+     **/
+    public static final String QUEST_FLAG_TS = "20210625184248";
+    /**
+     * 学龄前儿童活动调查表
+     **/
+    public static final String QUEST_FLAG_PSAI = "20210625184726";
+    /**
+     * 学习障碍儿童筛查量表
+     **/
+    public static final String QUEST_FLAG_PRS = "20210625184948";
+    /**
+     * 抑郁状态问卷
+     **/
+    public static final String QUEST_FLAG_DSI = "20210625191902";
+    /**
+     * 抑郁-焦虑-压力量表
+     **/
+    public static final String QUEST_FLAG_DASS_42 = "20210713155333";
+    /**
+     * 阿森斯失眠量表
+     **/
+    public static final String QUEST_FLAG_AIS = "20210628213837";
+    /**
+     * 爱丁堡利手量表
+     **/
+    public static final String QUEST_FLAG_EHS = "20210628214239";
+    /**
+     * 爱泼沃斯嗜睡量表
+     **/
+    public static final String QUEST_FLAG_ESS = "20210628214628";
+    /**
+     * 气质类型测试
+     **/
+    public static final String QUEST_FLAG_TTT = "20210628214712";
+    /**
+     * 儿童依赖性评估测试(女生版)
+     **/
+    public static final String QUEST_FLAG_CDA = "20210804102135";
+
+    /**
+     * 在婚姻里,你有安全感吗?
+     **/
+    public static final String QUEST_FLAG_MRA_SAFE = "20210714220600";
+    /**
+     * 职业心理年龄测试
+     **/
+    public static final String QUEST_FLAG_OCC_AGE = "20210714221054";
+    /**
+     * 状态一特质焦虑问卷
+     **/
+    public static final String QUEST_FLAG_STAI = "20210714222004";
+    /**
+     * 子女教育心理控制源量表
+     **/
+    public static final String QUEST_FLAG_PLOC = "20210714222726";
+    /**
+     * 自测健康评定量表
+     **/
+    public static final String QUEST_FLAG_SRHMS = "20210714223333";
+    /**
+     * 自信心测试
+     **/
+    public static final String QUEST_FLAG_CFD = "20210714224230";
+    /**
+     * 自尊调查表
+     **/
+    public static final String QUEST_FLAG_SEI = "20210714224910";
+    /**
+     * 总体幸福感量表
+     **/
+    public static final String QUEST_FLAG_GWB = "20210723163240";
+    /**
+     * 舒伯职业价值观量表
+     **/
+    public static final String QUEST_FLAG_WVI = "20210717225226";
+    /**
+     * 双方性调节量表
+     **/
+    public static final String QUEST_FLAG_DSR = "20210717225706";
+    /**
+     * 双相情感障碍自评量表
+     **/
+    public static final String QUEST_FLAG_BDQ = "20210717230329";
+    /**
+     * 特质应对方式问卷
+     **/
+    public static final String QUEST_FLAG_TCSQ = "20210717230742";
+    /**
+     * 同学关系测验问卷
+     **/
+    public static final String QUEST_FLAG_STUR = "20210717231632";
+    /**
+     * 威廉斯创造力倾向测评量表
+     **/
+    public static final String QUEST_FLAG_WILL = "20210717232552";
+    /**
+     * 演说者信心自评量表
+     **/
+    public static final String QUEST_FLAG_PRCS = "20210718162607";
+    /**
+     * 医学应对问卷
+     **/
+    public static final String QUEST_FLAG_MCMQ = "20210718163433";
+    /**
+     * 抑郁形容词检查表
+     **/
+    public static final String QUEST_FLAG_DACL = "20210718164422";
+    /**
+     * 性向测试问卷
+     **/
+    public static final String QUEST_FLAG_PER = "20210718165237";
+    /**
+     * 艾森克人格量表
+     **/
+    public static final String QUEST_FLAG_EPQ = "20210721224753";
+    /**
+     * Sarason考试焦虑量表
+     **/
+    public static final String QUEST_FLAG_TAS = "20210722101531";
+    /**
+     * 人际关系综合诊断量表
+     **/
+    public static final String QUEST_FLAG_PRT = "20210722102600";
+    /**
+     * 人性的哲学修订量表
+     **/
+    public static final String QUEST_FLAG_PLP = "20210722103456";
+    /**
+     * 容纳他人量表
+     **/
+    public static final String QUEST_FLAG_AOO = "20210722103940";
+    /**
+     * 社会适应能力诊断量表
+     **/
+    public static final String QUEST_FLAG_SADS = "20210722105045";
+    /**
+     * 生活满意度指数B
+     **/
+    public static final String QUEST_FLAG_LSIB = "20210722111253";
+    /**
+     * 癫痫抑郁量表
+     **/
+    public static final String QUEST_FLAG_NDDI_E = "20210723164206";
+    /**
+     * 癫痫患者自我管理量表
+     **/
+    public static final String QUEST_FLAG_ESM = "20210723164426";
+    /**
+     * 儿童睡眠习惯问卷
+     **/
+    public static final String QUEST_FLAG_CSHQ = "20210725090145";
+    /**
+     * 马斯洛安全感-不安全感问卷
+     **/
+    public static final String QUEST_FLAG_MSIQ = "20210725091021";
+    /**
+     * 内控性、有势力的他人及机遇量表
+     **/
+    public static final String QUEST_FLAG_IPC = "20210725091833";
+    /**
+     * 内在—外在心理控制源量表
+     **/
+    public static final String QUEST_FLAG_IELCS = "20210725092332";
+    /**
+     * 你到底“几斤几两”——测测你的自我价值
+     **/
+    public static final String QUEST_FLAG_YSV = "20210725093159";
+    /**
+     * 你对另一半满意吗?
+     **/
+    public static final String QUEST_FLAG_YSP = "20210725093549";
+    /**
+     * 你给人的第一印象如何?
+     **/
+    public static final String QUEST_FLAG_YFI = "20210725094150";
+    /**
+     * 你拖延到什么程度了?
+     **/
+    public static final String QUEST_FLAG_WHD = "20210725094642";
+    /**
+     * 亲子关系问卷量表
+     **/
+    public static final String QUEST_FLAG_PCR = "20210725095324";
+    /**
+     * 情绪一社交孤独问卷
+     **/
+    public static final String QUEST_FLAG_ESLIS = "20210725100021";
+    /**
+     * DISC性格测试题
+     **/
+    public static final String QUEST_FLAG_DISC = "20210727214334";
+    /**
+     * 成人依恋量表
+     **/
+    public static final String QUEST_FLAG_AAS = "20210727214911";
+    /**
+     * 儿童行为问卷(父母用)
+     **/
+    public static final String QUEST_FLAG_CCSAS = "20210727215449";
+    /**
+     * 亲密关系经历量表
+     **/
+    public static final String QUEST_FLAG_ECR = "20210727221159";
+    /**
+     * 中国大学生适应量表
+     **/
+    public static final String QUEST_FLAG_CCSAS2 = "20210727224129";
+    /**
+     * 青少年癫痫患者生活质量评定量表(QOLIE-AD-48) 青少年(6-18岁)
+     **/
+    public static final String QUEST_FLAG_QOLIE = "20210730164451";
+    /**
+     * A型、B型性格测试
+     **/
+    public static final String QUEST_FLAG_ABT = "20210802210827";
+    /**
+     * 儿童自闭症评量量表
+     **/
+    public static final String QUEST_FLAG_CARS = "20210802215306";
+    /**
+     * 孤独症儿童行为量表
+     **/
+    public static final String QUEST_FLAG_ABC = "20210802223536";
+    /**
+     * 克氏行为量表
+     **/
+    public static final String QUEST_FLAG_CABS = "20210802223845";
+    /**
+     * 青少年忧郁情绪自我检视表
+     **/
+    public static final String QUEST_FLAG_ADSC = "20210802224305";
+    /**
+     * 痛苦表露指数
+     **/
+    public static final String QUEST_FLAG_DDI = "20210802224543";
+    /**
+     * 心理测试:你应对职场动荡的能力
+     **/
+    public static final String QUEST_FLAG_DWTA = "20210802224734";
+    /**
+     * Toronto医院警觉测试
+     **/
+    public static final String QUEST_FLAG_THAT = "20210807095612";
+    /**
+     * Zung氏焦虑自评量表
+     **/
+    public static final String QUEST_FLAG_ZAS = "20210807100155";
+    /**
+     * 心理压力测一测
+     **/
+    public static final String QUEST_FLAG_PST = "20210802225051";
+    /**
+     * 性格和压力测试
+     **/
+    public static final String QUEST_FLAG_PAST = "20210802225320";
+    /**
+     * CAGE问卷
+     **/
+    public static final String QUEST_FLAG_CAGE = "20210812131145";
+    /**
+     * STOP-Bang量表
+     **/
+    public static final String QUEST_FLAG_STOPB = "20210812131502";
+    /**
+     * Tayside儿童睡眠问卷
+     **/
+    public static final String QUEST_FLAG_TCSQT = "20210812131710";
+    /**
+     * 爱丁堡产后抑郁量表
+     **/
+    public static final String QUEST_FLAG_EPDS = "20210812132236";
+    /**
+     * 儿科日间嗜睡量表
+     **/
+    public static final String QUEST_FLAG_PDSS = "20210812132654";
+    /**
+     * 流调中心儿童抑郁量表
+     **/
+    public static final String QUEST_FLAG_CESDC = "20210812133437";
+    /**
+     * 蒙哥马利抑郁评定量表
+     **/
+    public static final String QUEST_FLAG_MADRS = "20210812135049";
+    /**
+     * 疲劳严重度量表
+     **/
+    public static final String QUEST_FLAG_FSS = "20210807100904";
+    /**
+     * 青少年睡眠-觉醒量表
+     **/
+    public static final String QUEST_FLAG_ASWS = "20210812140140";
+    /**
+     * 耶鲁布朗强迫症状量表
+     **/
+    public static final String QUEST_FLAG_YBOCS = "20210812140722";
+    /**
+     * 阳性与阴性症状量表
+     **/
+    public static final String QUEST_FLAG_PANSS = "20210718163045";
+    /**
+     * 心理适应性量表
+     **/
+    public static final String QUEST_FLAG_MFS = "20210717233329";
+    /**
+     * 儿科睡眠问卷:睡眠相关呼吸障碍分量表
+     **/
+    public static final String QUEST_FLAG_SRBD = "20210807100654";
+    /**
+     * 托兰斯创造性人格自陈量表
+     **/
+    public static final String QUEST_FLAG_TCPSS = "20210717232009";
+    /**
+     * Epworth嗜睡量表
+     **/
+    public static final String QUEST_FLAG_TESS = "20210807094852";
+    /**
+     * 测试:你的心理调节能力过关吗
+     **/
+    public static final String QUEST_FLAG_MAA = "20210802214831";
+    /**
+     * 幸福感指数、总体情感指数
+     **/
+    public static final String QUEST_FLAG_IWBIGA = "20210718164832";
+    /**
+     * 多元认知能力自评量表
+     **/
+    public static final String QUEST_FLAG_MASQ = "20210723170946";
+    /**
+     * 匹兹堡睡眠质量指数
+     **/
+    public static final String QUEST_TYPE_PSQI = "20210725100704";
+    /**
+     * 康奈尔健康问卷(男性用)
+     **/
+    public static final String QUEST_TYPE_CMIM = "20210908122014";
+    /**
+     * 康奈尔健康问卷(女性用)
+     **/
+    public static final String QUEST_TYPE_CMIW = "20210908122321";
+    /**
+     * 心境状态量表
+     **/
+    public static final String QUEST_TYPE_POMS = "20211020113719";
+    /**
+     * 职业性格测试
+     **/
+    public static final String QUEST_TYPE_MBTI = "20211020113914";
+
+
+    /**
+     * 量表测试文件SHEET名
+     **/
+    public static final String SHEET_NAME_API = "Aitken拖延问卷";
+    public static final String SHEET_NAME_LSAS = "社交焦虑量表";
+    public static final String SHEET_NAME_BPRS = "简明精神病量表";
+    public static final String SHEET_NAME_HAMA = "汉密顿焦虑量表";
+    public static final String SHEET_NAME_UCLA = "孤独量表";
+    public static final String SHEET_NAME_SAS = "焦虑自评量表";
+    public static final String SHEET_NAME_MAST = "密歇根酒精依赖调查表";
+    public static final String SHEET_NAME_BSSI = "Beck自杀意念量表";
+    //public static final String SHEET_NAME_CBQ = "儿童行为问卷";
+    public static final String SHEET_NAME_ITS = "人际信任量表";
+    public static final String SHEET_NAME_GCQ = "舒适状况量表";
+    public static final String SHEET_NAME_SDS = "抑郁自评量表";
+    public static final String SHEET_NAME_TAS_26 = "多伦多述情障碍量表";
+    public static final String SHEET_NAME_MCSD = "社会期望量表";
+    public static final String SHEET_NAME_PHCSS = "儿童自我意识量表";
+    public static final String SHEET_NAME_SD = "爱德华社会期望量表";
+    public static final String SHEET_NAME_SAD = "社交回避及苦恼量表";
+    public static final String SHEET_NAME_SQ = "安全感量表";
+    public static final String SHEET_NAME_BDI = "贝克抑郁自评量表";
+    public static final String SHEET_NAME_GAD_7 = "广泛性焦虑障碍量表";
+    public static final String SHEET_NAME_CES_D = "流调中心用抑郁量表";
+    public static final String SHEET_NAME_MUNSH = "纽芬兰纪念大学幸福度量表";
+    public static final String SHEET_NAME_PSS = "压力知觉量表";
+    public static final String SHEET_NAME_HADS = "医院焦虑抑郁量表";
+    public static final String SHEET_NAME_PHQ_9 = "抑郁症筛查量表";
+    public static final String SHEET_NAME_QSA = "自杀态度问卷";
+    public static final String SHEET_NAME_SES = "自尊量表";
+    public static final String SHEET_NAME_MMPI_K = "明尼苏达多相人格测验矫正量表";//开始在数据库添加计分原则
+    public static final String SHEET_NAME_MMPI_L = "明尼苏达多相人格测验说谎L量表";
+    public static final String SHEET_NAME_NYLS = "3-7岁儿童气质问卷";
+    public static final String SHEET_NAME_MHLC_A = "多维度健康状况心理控制源量表(表A)";
+    public static final String SHEET_NAME_MHLC_B = "多维度健康状况心理控制源量表(表B)";
+    public static final String SHEET_NAME_SIT = "儿童感觉统合能力发展评定量表";
+    public static final String SHEET_NAME_CSES = "核心自我评价量表";
+    public static final String SHEET_NAME_MHLC = "精神卫生心理控制源量表";
+    public static final String SHEET_NAME_AUDIT = "酒精依赖疾患识别测验";
+    public static final String SHEET_NAME_RD = "态度与意见调查中的期望性作答";
+    public static final String SHEET_NAME_SCL_90 = "症状自评量表(SCL-90)";
+    public static final String SHEET_NAME_SCSQ = "简易应对方式问卷";
+    public static final String SHEET_NAME_PRCA_24 = "交流恐惧自陈量表";
+    public static final String SHEET_NAME_IAS = "交往焦虑量表";
+    public static final String SHEET_NAME_PSSS = "领悟社会支持量表";
+    public static final String SHEET_NAME_APIUS = "青少年病理性互联网使用量表";
+    public static final String SHEET_NAME_SS = "羞怯量表";
+    public static final String SHEET_NAME_SCCS = "自我和谐量表";
+    public static final String SHEET_NAME_AS = "情感量表";
+    public static final String SHEET_NAME_ATO = "自动思维量表";
+    public static final String SHEET_NAME_QLSCA = "儿童少年生活质量量表";
+    public static final String SHEET_NAME_GDS = "老年抑郁量表";
+    public static final String SHEET_NAME_CRS = "Carroll抑郁量表";
+    public static final String SHEET_NAME_FAD = "家庭功能评定";
+    public static final String SHEET_NAME_FES_CV = "家庭环境量表中文版";
+    public static final String SHEET_NAME_ASAS = "青少年学生疏离感量表";
+    public static final String SHEET_NAME_ESLI = "情绪-社交孤独问卷";
+    public static final String SHEET_NAME_BRMS = "贝克-拉范森躁狂量表";
+    public static final String SHEET_NAME_MPS = "多维完美主义问卷";
+    public static final String SHEET_NAME_PGC = "费城老年中心(PGC)信心量表";
+    public static final String SHEET_NAME_LSIA = "生活满意度指数A";
+    public static final String SHEET_NAME_TSI = "思维风格量表";
+    public static final String SHEET_NAME_SITS = "特定人际信任量表";
+    public static final String SHEET_NAME_FPS = "信赖他人量表";
+    public static final String SHEET_NAME_TIP = "信任他人量表";
+    public static final String SHEET_NAME_TS = "信任量表";
+    public static final String SHEET_NAME_PSAI = "学龄前儿童活动调查表";
+    public static final String SHEET_NAME_PRS = "学习障碍儿童筛查量表";
+    public static final String SHEET_NAME_DSI = "抑郁状态问卷";
+    public static final String SHEET_NAME_DASS_42 = "抑郁-焦虑-压力量表";
+    public static final String SHEET_NAME_AIS = "阿森斯失眠量表";
+    public static final String SHEET_NAME_EHS = "爱丁堡利手量表";
+    public static final String SHEET_NAME_ESS = "爱泼沃斯嗜睡量表";
+    public static final String SHEET_NAME_TTT = "气质类型测试";
+    public static final String SHEET_NAME_CDA = " 儿童依赖性评估测试(女生版)";
+
+    public static final String SHEET_NAME_MRA_SAFE = "在婚姻里,你有安全感吗?";
+    public static final String SHEET_NAME_OCC_AGE = "职业心理年龄测试";
+    public static final String SHEET_NAME_STAI = "状态一特质焦虑问卷";
+    public static final String SHEET_NAME_PLOC = "子女教育心理控制源量表";
+    public static final String SHEET_NAME_SRHMS = "自测健康评定量表";
+    public static final String SHEET_NAME_CFD = "自信心测试";
+    public static final String SHEET_NAME_SEI = "自尊调查表";
+    public static final String SHEET_NAME_GWB = "总体幸福感量表";
+    public static final String SHEET_NAME_WVI = "舒伯职业价值观量表";
+    public static final String SHEET_NAME_DSR = "双方性调节量表";
+    public static final String SHEET_NAME_BDQ = "双相情感障碍自评量表";
+    public static final String SHEET_NAME_TCSQ = "特质应对方式问卷";
+    public static final String SHEET_NAME_STUR = "同学关系测验问卷";
+    public static final String SHEET_NAME_WILL = "威廉斯创造力倾向测评量表";
+    public static final String SHEET_NAME_PRCS = "演说者信心自评量表";
+    public static final String SHEET_NAME_MCMQ = "医学应对问卷";
+    public static final String SHEET_NAME_DACL = "抑郁形容词检查表";
+    public static final String SHEET_NAME_PER = "性向测试问卷";
+    public static final String SHEET_NAME_EPQ = "艾森克人格量表";
+    public static final String SHEET_NAME_TAS = "Sarason考试焦虑量表";
+    public static final String SHEET_NAME_PRT = "人际关系综合诊断量表";
+    public static final String SHEET_NAME_PLP = "人性的哲学修订量表";
+    public static final String SHEET_NAME_AOO = "容纳他人量表";
+    public static final String SHEET_NAME_SADS = "社会适应能力诊断量表";
+    public static final String SHEET_NAME_LSIB = "生活满意度指数B";
+    public static final String SHEET_NAME_NDDI_E = "癫痫抑郁量表";
+    public static final String SHEET_NAME_ESM = "癫痫患者自我管理量表";
+    public static final String SHEET_NAME_CSHQ = "儿童睡眠习惯问卷";
+    public static final String SHEET_NAME_MSIQ = "马斯洛安全感-不安全感问卷";
+    public static final String SHEET_NAME_IPC = "内控性、有势力的他人及机遇量表";
+    public static final String SHEET_NAME_IELCS = "内在—外在心理控制源量表";
+    public static final String SHEET_NAME_YSV = "你到底“几斤几两”——测测你的自我价值";
+    public static final String SHEET_NAME_YSP = "你对另一半满意吗?";
+    public static final String SHEET_NAME_YFI = "你给人的第一印象如何?";
+    public static final String SHEET_NAME_WHD = "你拖延到什么程度了?";
+    public static final String SHEET_NAME_PCR = "亲子关系问卷量表";
+    public static final String SHEET_NAME_ESLIS = "情绪一社交孤独问卷";
+    public static final String SHEET_NAME_DISC = "DISC性格测试题";
+    public static final String SHEET_NAME_AAS = "成人依恋量表";
+    public static final String SHEET_NAME_CCSAS = "儿童行为问卷(父母用)";
+    public static final String SHEET_NAME_ECR = "亲密关系经历量表";
+    public static final String SHEET_NAME_CCSAS2 = "中国大学生适应量表";
+    public static final String SHEET_NAME_QOLIE = "青少年癫痫患者生活质量评定量表(QOLIE-AD-48) 青少年(6-18岁)";
+    public static final String SHEET_NAME_ABT = "A型、B型性格测试";
+    public static final String SHEET_NAME_CARS = "儿童自闭症评量量表";
+    public static final String SHEET_NAME_ABC = "孤独症儿童行为量表";
+    public static final String SHEET_NAME_CABS = "克氏行为量表";
+    public static final String SHEET_NAME_ADSC = "青少年忧郁情绪自我检视表";
+    public static final String SHEET_NAME_DDI = "痛苦表露指数";
+    public static final String SHEET_NAME_DWTA = "心理测试:你应对职场动荡的能力";
+    public static final String SHEET_NAME_THAT = "Toronto医院警觉测试";
+    public static final String SHEET_NAME_ZAS = "Zung氏焦虑自评量表";
+    public static final String SHEET_NAME_PST = "心理压力测一测";
+    public static final String SHEET_NAME_PAST = "性格和压力测试";
+    public static final String SHEET_NAME_CAGE = "CAGE问卷";
+    public static final String SHEET_NAME_STOPB = "STOP-Bang量表";
+    public static final String SHEET_NAME_TCSQT = "Tayside儿童睡眠问卷";
+    public static final String SHEET_NAME_EPDS = "爱丁堡产后抑郁量表";
+    public static final String SHEET_NAME_PDSS = "儿科日间嗜睡量表";
+    public static final String SHEET_NAME_CESDC = "流调中心儿童抑郁量表";
+    public static final String SHEET_NAME_MADRS = "蒙哥马利抑郁评定量表";
+    public static final String SHEET_NAME_FSS = "疲劳严重度量表";
+    public static final String SHEET_NAME_ASWS = "青少年睡眠-觉醒量表";
+    public static final String SHEET_NAME_YBOCS = "耶鲁布朗强迫症状量表";
+    public static final String SHEET_NAME_PANSS = "阳性与阴性症状量表";
+    public static final String SHEET_NAME_MFS = "心理适应性量表";
+    public static final String SHEET_NAME_SRBD = "儿科睡眠问卷:睡眠相关呼吸障碍分量表";
+    public static final String SHEET_NAME_TCPSS = "托兰斯创造性人格自陈量表";
+    public static final String SHEET_NAME_TESS = "Epworth嗜睡量表";
+    public static final String SHEET_NAME_MAA = "测试:你的心理调节能力过关吗";
+    public static final String SHEET_NAME_IWBIGA = "幸福感指数、总体情感指数";
+    public static final String SHEET_NAME_MASQ = "多元认知能力自评量表";
+    public static final String SHEET_NAME_PSQI = "匹兹堡睡眠质量指数";
+    public static final String SHEET_NAME_CMIM = "康奈尔健康问卷(男性用)";
+    public static final String SHEET_NAME_CMIW = "康奈尔健康问卷(女性用)";
+    public static final String SHEET_NAME_POMS = "心境状态量表";
+    public static final String SHEET_NAME_MBTI = "职业性格测试";
+
+
+/** 许博文 **/
+    /**
+     * 知觉压力问卷
+     **/
+    public static final String QUEST_TYPE_PSQ = "20210913093250";
+    public static final String SHEET_NAME_PSQ = "知觉压力问卷";
+    /**
+     * 儿童注意多动缺陷筛查量表
+     **/
+    public static final String QUEST_TYPE_AHDSC = "20210901113320";
+    public static final String SHEET_NAME_AHDSC = "儿童注意多动缺陷筛查量表";
+    /**
+     * 魁北克睡眠问卷
+     **/
+    public static final String QUEST_TYPE_QSQ = "20210913091839";
+    public static final String SHEET_NAME_QSQ = "魁北克睡眠问卷";
+    /**
+     * 总体睡眠障碍量表
+     **/
+    public static final String QUEST_TYPE_GSDS = "20210913093446";
+    public static final String SHEET_NAME_GSDS = "总体睡眠障碍量表";
+    /**
+     * 防御方式问卷
+     **/
+    public static final String QUEST_TYPE_DSQ = "20210916104937";
+    public static final String SHEET_NAME_DSQ = "防御方式问卷";
+    /**
+     * Zung抑郁自我评价量表
+     **/
+    public static final String QUEST_TYPE_ZungDP = "20210918160544";
+    public static final String SHEET_NAME_ZungDP = "Zung抑郁自我评价量表";
+    /**
+     * 成就倾同个体差异问卷
+     **/
+    public static final String QUEST_TYPE_IDIAT = "20210918160745";
+    public static final String SHEET_NAME_IDIAT = "成就倾同个体差异问卷";
+    /**
+     * 国立医院癫痫发作严重程度量表
+     **/
+    public static final String QUEST_TYPE_NHS3 = "20210922130731";
+    public static final String SHEET_NAME_NHS3 = "国立医院癫痫发作严重程度量表";
+    /**
+     * 老年人认知功能减退知情者问卷
+     **/
+    public static final String QUEST_TYPE_IQCODE = "20210922131640";
+    public static final String SHEET_NAME_IQCODE = "老年人认知功能减退知情者问卷";
+    /**
+     * 运动竞赛焦虑测验
+     **/
+    public static final String QUEST_TYPE_SCAT = "20210922222436";
+    public static final String SHEET_NAME_SCAT = "运动竞赛焦虑测验";
+    /**
+     * 驾驶技能自我评估量表
+     **/
+    public static final String QUEST_TYPE_SACDS = "20210923220801";
+    public static final String SHEET_NAME_SACDS = "驾驶技能自我评估量表";
+    /**
+     * 驾驶能力量表
+     **/
+    public static final String QUEST_TYPE_PPDC = "20210923221314";
+    public static final String SHEET_NAME_PPDC = "驾驶能力量表";
+    /**
+     * 竞赛失败应对量表
+     **/
+    public static final String QUEST_TYPE_CCF = "20210923221436";
+    public static final String SHEET_NAME_CCF = "竞赛失败应对量表";
+    /**
+     * 身体自尊量表
+     **/
+    public static final String QUEST_TYPE_BE = "20210923223630";
+    public static final String SHEET_NAME_BE = "身体自尊量表";
+    /**
+     * 优秀运动员意志品质评价量表
+     **/
+    public static final String QUEST_TYPE_EVQEA = "20210922222157";
+    public static final String SHEET_NAME_EVQEA = "优秀运动员意志品质评价量表";
+    /**
+     * 少年儿童身体自尊量表
+     **/
+    public static final String QUEST_TYPE_ABE = "20210923223500";
+    public static final String SHEET_NAME_ABE = "少年儿童身体自尊量表";
+/** 许博文 **/
+
+    /**
+     * 交通安全文化量表
+     **/
+    public static final String QUEST_TYPE_TSCS = "20211003094821";
+    /**
+     * 驾驶行为量表
+     **/
+    public static final String QUEST_TYPE_DBS = "20211003094602";
+    /**
+     * 训练比赛满意感量表
+     **/
+    public static final String QUEST_TYPE_TCS = "20210923230509";
+    /**
+     * 一般决策风格量表
+     **/
+    public static final String QUEST_TYPE_GDMS = "20210923230703";
+    /**
+     * 危险知觉能力自我评估量表
+     **/
+    public static final String QUEST_TYPE_SRHP = "20210924090818";
+    /**
+     * Ross面神经分级系统
+     **/
+    public static final String QUEST_TYPE_RFNGS = "20210929221501";
+    /**
+     * 哥本哈根卒中量表
+     **/
+    public static final String QUEST_TYPE_CS = "20210929222226";
+    /**
+     * SNAP-IV父母及教师评定量表(18项)
+     **/
+    public static final String QUEST_TYPE_SNAPIV = "20211002195132";
+    /**
+     * SNAP-IV父母及教师评定量表(26项)
+     **/
+    public static final String QUEST_TYPE_SNAPIV2 = "20211002195229";
+    /**
+     * Weiss 功能缺陷量表(父母版)
+     **/
+    public static final String QUEST_TYPE_WFIRS = "20211002195607";
+    /**
+     * 道路安全的家庭氛围量表
+     **/
+    public static final String QUEST_TYPE_FCRSS = "20211002213330";
+    /**
+     * 多维度驾驶风格量表
+     **/
+    public static final String QUEST_TYPE_MDSIC = "20211002213446";
+    /**
+     * 多维度交通心理控制源量表
+     **/
+    public static final String QUEST_TYPE_TLOC = "20211002213556";
+    /**
+     * 驾驶安全态度量表
+     **/
+    public static final String QUEST_TYPE_DSA = "20211002214206";
+    /**
+     * 驾驶成本与收益问卷
+     **/
+    public static final String QUEST_TYPE_DCBQ = "20211002214330";
+    /**
+     * 驾驶愤怒量表
+     **/
+    public static final String QUEST_TYPE_DAS = "20211002214527";
+    /**
+     * 教师的压力评估
+     **/
+    public static final String QUEST_TYPE_TSA = "20211003095159";
+    /**
+     * 年轻新手驾驶行为量表
+     **/
+    public static final String QUEST_TYPE_BYNDS = "20211003095446";
+    /**
+     * 亲社会和攻击性驾驶行为量表
+     **/
+    public static final String QUEST_TYPE_PADIC = "20211003095601";
+    /**
+     * 情绪状态量表
+     **/
+    public static final String QUEST_TYPE_DPOMS = "20211003095944";
+    /**
+     * 事故风险问卷
+     **/
+    public static final String QUEST_TYPE_ARQ = "20211003100036";
+    /**
+     * 突发性公共卫生事件心理问卷
+     **/
+    public static final String QUEST_TYPE_PQEEPH = "20211003100227";
+    /**
+     * 危险驾驶行为量表
+     **/
+    public static final String QUEST_TYPE_DDBS = "20211003100421";
+    /**
+     * 危险行为态度量表
+     **/
+    public static final String QUEST_TYPE_SRBA = "20211003100745";
+    /**
+     * 学龄前儿童饮食行为量表
+     **/
+    public static final String QUEST_TYPE_PEBS = "20211003100909";
+    /**
+     * 中学生龋齿简易风险自评问卷
+     **/
+    public static final String QUEST_TYPE_SCRSQ = "20211003101405";
+    /**
+     * 驾驶危险行为量表
+     **/
+    public static final String QUEST_TYPE_DDBS2 = "20211003100636";
+
+    public static final String SHEET_NAME_DDBS = "危险驾驶行为量表";
+    public static final String SHEET_NAME_PQEEPH = "突发性公共卫生事件心理问卷";
+    public static final String SHEET_NAME_ARQ = "事故风险问卷";
+    public static final String SHEET_NAME_DPOMS = "情绪状态量表";
+    public static final String SHEET_NAME_PADIC = "亲社会和攻击性驾驶行为量表";
+    public static final String SHEET_NAME_BYNDS = "年轻新手驾驶行为量表";
+    public static final String SHEET_NAME_TSA = "教师的压力评估";
+    public static final String SHEET_NAME_DAS = "驾驶愤怒量表";
+    public static final String SHEET_NAME_DCBQ = "驾驶成本与收益问卷";
+    public static final String SHEET_NAME_DSA = "驾驶安全态度量表";
+    public static final String SHEET_NAME_TLOC = "多维度交通心理控制源量表";
+    public static final String SHEET_NAME_MDSIC = "多维度驾驶风格量表";
+    public static final String SHEET_NAME_FCRSS = "道路安全的家庭氛围量表";
+    public static final String SHEET_NAME_WFIRS = "Weiss 功能缺陷量表(父母版)";
+    public static final String SHEET_NAME_SNAPIV2 = "SNAP-IV父母及教师评定量表(26项)";
+    public static final String SHEET_NAME_SNAPIV = "SNAP-IV父母及教师评定量表(18项)";
+    public static final String SHEET_NAME_CS = "哥本哈根卒中量表";
+    public static final String SHEET_NAME_RFNGS = "Ross面神经分级系统";
+    public static final String SHEET_NAME_SRHP = "危险知觉能力自我评估量表";
+    public static final String SHEET_NAME_GDMS = "一般决策风格量表";
+    public static final String SHEET_NAME_TCS = "训练比赛满意感量表";
+    public static final String SHEET_NAME_DBS = "驾驶行为量表";
+    public static final String SHEET_NAME_TSCS = "交通安全文化量表";
+    public static final String SHEET_NAME_DDBS2 = "危险驾驶行为量表";
+    public static final String SHEET_NAME_SCRSQ = "中学生龋齿简易风险自评问卷";
+    public static final String SHEET_NAME_PEBS = "学龄前儿童饮食行为量表";
+    public static final String SHEET_NAME_SRBA = "危险行为态度量表";
+
+/** 20220310 lpf **/
+    /**
+     * 巴瑞特冲动性人格问卷
+     **/
+    public static final String QUEST_TYPE_BRT = "20220227165514";
+    public static final String SHEET_NAME_BRT = "巴瑞特冲动性人格问卷";
+    /**
+     * 大学生恋爱心理压力源量表
+     **/
+    public static final String QUEST_TYPE_DXSLA = "20220126170829";
+    public static final String SHEET_NAME_DXSLA = "大学生恋爱心理压力源量表";
+    /**
+     * 霍兰德职业兴趣测试
+     **/
+    public static final String QUEST_TYPE_HLD = "20220218094735";
+    public static final String SHEET_NAME_HLD = "霍兰德职业兴趣测试";
+    /**
+     * 军人心理应激自评问卷
+     **/
+    public static final String QUEST_TYPE_JRXLYJ = "20220302195619";
+    public static final String SHEET_NAME_JRXLYJ = "军人心理应激自评问卷";
+    /**
+     * 中国中学生心理健康量表
+     **/
+    public static final String QUEST_TYPE_STUHEA = "20220228164442";
+    public static final String SHEET_NAME_STUHEA = "中国中学生心理健康量表";
+    /**
+     * 中学生自我导向学习倾向性量表 SDLRS
+     **/
+    public static final String QUEST_TYPE_SDLRS = "20220126171621";
+    public static final String SHEET_NAME_SDLRS = "中学生自我导向学习倾向性量表 SDLRS";
+    /**
+     * Russell吸烟原因问卷
+     **/
+    public static final String QUEST_TYPE_Russell = "20220307104830";
+    public static final String SHEET_NAME_Russell = "Russell吸烟原因问卷";
+    /**
+     * 运动认知特质焦虑量表
+     **/
+    public static final String QUEST_TYPE_YDRZ = "20220307110757";
+    public static final String SHEET_NAME_YDRZ = "运动认知特质焦虑量表";
+/** END **/
+
+    /** 日期转换标志:start转换为当天0时0分0秒  end转换为第二天0时0分0秒 **/
+    public static final String DATE_TRANS_FLAG_START = "start";
+    public static final String DATE_TRANS_FLAG_END = "end";
+    /** 用户测试计划完成状态  0:未完成  9 已完成 **/
+    public static final String USER_PLAN_STATUS_UNCOMPLETED = "0";
+    public static final String USER_PLAN_STATUS_COMPLETED = "9";
+
+    public static final String EXCLUDE_PACKAGE_NAME = "wxpay";
+}